V36: The "Oops! All Achievements" hotfix

Sternly Worded Adventures

Sternly Worded Adventures is a roguelite word puzzle RPG inspired by Bookworm Adventures where you travel through a forested peninsula with Yorkshire-sounding place names fighting monsters with the power of words to uncover whatever dark secrets may be lurking beyond.

[h3]What happened?[/h3] Okay, so the story: while V35 was briefly available on Steam, there was a bug where the game would immediately give you all but one achievements then crash. The why is kinda interesting, or at least I think it is; first what happened is the achievement sync function went through each achievement asked Steam if you already had it, the return value for which gives you two boolean values, one for "hello, yes you have reached API, and that is a real achievement", and a second for "yes, you have that achievement", due to a miscommunication between me and the documentation, I missed the memo that there were two return values, and interpreted "yes that is real" with "yes you have that", consequently having it try and give you all achievements. Try. Hence the all-but-one-then-crash. The second part of this was that the progress tracker function for the last achievement wasn't set up for being authoritatively told "give this achievement"; the function expected to be given an index number and to decide for itself if it should award it or not, but was instead given `true`, used that as a key in its data tracking table, and finally when the serializer came to save that, it crashed because something other than a number or string was used as a key. I could have said serializer gracefully handle that situation, but if that situation ever comes up then something has gone wrong and it really should throw an exception. Hence "Oops! All Achievements" followed by a crash. Why didn't this come up in testing? Because the achievements hadn't been published at that time, so the return value on the get was a single false for "that's not a real thing". I was holding off on publishing them because I'd added them to the demo thinking I was in the main game, and I both wasn't sure if I could delete them after publishing, since not all of them are achievable on the demo, although you can get them on the main game then have it sync them back on the demo, and I didn't want to delete any before publishing because I wanted to see if there was an easy way to copy them to the main game. There wasn't. [h3]Anyway, the actual changes:[/h3] [b]Achievements:[/b] [list][*] Fixed a crash on the Steam version because the progress tracking function for the 'all quit quotes' achievement couldn't handle being told what to do. [*] Fixed accidentally giving the player all achievements except the one for 'all quit quotes' on Steam. [*] Added achievement backdating.[/list] [b]Items & crafting:[/b] [list][*] Added grab/drop/gain sound effects to some leathery items. [*] Added grab/drop/gain sound effects to the heavy tile bag items. [*] Added character sprites for halfling, adventurer, woodsman, warrior, demonkin, assassin, and paladin wearing boots. [*] Potion craft amounts now also show if only 1 non-full item is in the craft bar, instead of waiting for a valid craft of 2 or more items. [*] Potion craft data is now part of item data rather than hard coded in the crafting UI. [*] Split the items list document into multiple dynamically loaded documents.[/list] [i]Those last two are basically only important for modding support.[/i] [b]Minesweeper:[/b] This has no real business being a part of the game, since I made it because I was bored and to torture test the button object code, but: [list][*] Minesweeper now guarantees a 0 on first press. [*] Improved the numbering visibility and icons on minesweeper. [*] Added the ability to click numbers to select each adjacent unflagged tile.[/list] [b]Misc:[/b] [list][*] Fixed the anomaly cutscene buzz sound effects potentially starting from an arbitrary pitch in the cycle. [*] Fixed spell colour not actually getting applied to spell particle effects. [*] Updated the bronze tile colour on the logo on the credits. [*] Platform specific options are now greyed out when inappropriate. [*] Added vapour and related words to the fire words dictionary, to match vapor.[/list]