After a few weeks delay, a new version is finally up for download. The delay was because I embarked on a bit of a complicated arc of development and the build was too unstable in various ways to release because of these big additions to the codebase.
I've been spending the last couple of weeks playtesting and ironing out bugs and hopefully (!!!) the version that I've released is as bug-free as I can hope for an playable!
Here is a rundown of the big changes:
* Druids - new character class has been added. The big feature of this class is the level 2 ability to use wildshape! There is also a powerful selection of spells available from both the cleric and wizard lists and there'll be more custom spells coming over the next few months.
* Dynamic quests - I've begun the work on making dynamic quests which appear randomly in the dungeon and assign you different and often competing goals. The first step of this rollout is on some dungeon levels, there is a chance that two rival NPC groups will spawn. They are often very, very tough although their makeup is random. Both will task you with killing the other. It is planned that you'll get a big reward for doing so, but that hasn't been implemented yet. It's a bit experimental still although it seems to be working well apart from a hard-to-reproduce weird behaviour where the quest dialogue doesn't work randomly. I'm looking into it though.
* Map generation - with the addition of quests came the need to rework the map generator to set out special areas where these quests would spawn. I also took the opportunity to add special entry and exit vaults for levels so that stairs would spawn in more logical places rather than just randomly in some narrow corridor. So the dungeon generation should seem a fair bit different and more complex with a lot more variety hopefully.
Full change list:
* Fixed bug where casting bless caused a crash due to an error in the stats display code.
* Changed the way that druids get spells so they are now like clerics and instantly know all spells at a level they can cast.
* Updated stats display to properly display the damage type being used when in wild shape.
* Started work on dynamic quest system. Implemented quest object and start of work on generating quest givers and target throughout maps.
* Changed AI to not attack neutrals automatically.
* Made it so that neutrals don't provoke opportunity attacks.
* Built upon dynamic quest system. Added new long message function so that there are popup dialogue boxes to convey the quest instructions. Added quests object into saving and loading games. Ensured that quest objects are removed from general pool of actors when loading and saving and tracked through the quest system instead. Ironed out bugs with finishing kill quests.
* Made it so that quests and their goals spawn on the same floor to prevent what would be an excessive amount of backtracking. Dummy quest currently has two NPCs asking for the death of the other.
* Enlarged map size to accomodate quests on the same map but with targets at opposite ends.
* Added proper_noun flag to deal with oddities arising from wild shape and the name display.
* Added check for player to have blindsight to deal with scenario where player wild shapes into a bat.
* Added checks to make sure that wild shaped creatures can't pick up or drop items as well as not being able to cast, fire or open and close doors.
* Changed autoexplore algorithm to deal with wild shapes being unable to open doors.
* Fixed bug where followers weren't switching loyalty to new wild shape object (and back again) after transformation.
* Implemented preserving intelligence, wisdom and charisma and XP gains across form changes.
* Fixed display issues with wild shape, now it hides the player's true name, race and role and just displays the monster shape with no gaps in spacing.
* Changed map generation to make the complete map 4x3 vaults which is probably a better size and helps with generating times.
* Added new UI option to confirm whether player is sure they want to do an action. Linked this to attacking neutrals.
* Added make_hostile function which recursively works through monster list to check to see what other allied monsters need to be made hostile when player attacks.
* Created basic MagicMonster and RangedMonster AI's to use for non-companion creatures because that hadn't been implemented yet.
* Created new vault type for quests designed so that a tough NPC and followers can spawn there.
* Tidied up quests by removing references to different levels so that all quests occur within a single level.
* Changed sidebar display colours so that allies are green, quests are purple, neutrals are white and hostile are red.
* Added mobs of allies for quest NPC's. Made it so that allies of NPC's can't be convinced to follow player.
* Reworked dungeon generation algorithm so the game distinguishes between normal, stair and quest vaults and implemented all three with basic options.
* Reduced number of quest NPC allies to 1-3 rather than 2-5. It was too cluttered.
* Added a bunch of new stair and quest vaults.
* Added two new dialogue options for each stage of each quest.
* Added more complexity to the way in which names are printed to take into account whether there are proper nouns as names or not and whether a 'the' should be used or not.
* Reworked all messages to take advantage of new naming system.
* Reworked spell messages so that they aren't shown when a caster is out of sight of the player.
* Simplified AI when it comes to healing and reviving because it seems a bit buggy.
* Reduced ally chat by about half because it was happening too much.
* Hopefully fixed a bug causing hangs to do with quest NPC's AI.
* Fixed bug where crash would occur when more than 26 items picked up.
* Hopefully fixed bug where sometimes quest NPC's wouldn't talk.
* Made sure that arrow keys worked as input across the board rather than just some of the time.
* Updated display to show max HP for enemies and neutrals but not current HP.