There's been plenty of progress over the last week and as always, I've uploaded the latest dev build for download at:
https://patjw.itch.io/theredprison* To resolve issues with content in the SRD under the OGL, the Stout race has been removed and has been replaced by the Stoutheart race based on the original work of Julian Mensch in the game Incursion based on OGL 3.5e d20 - Stouthearts are a hardy race of halflings although implemented but not finished in the final version published by Julian, they were enabled once the source was released.
* Wood elves and mountain dwarves have been removed and replaced by versions inspired by wood elves and mountain dwarves published under the OGL as part of the 3.5e D&D SRD.
* Added extra attack per turn to veteran.
* Created new NPCS: archmage (spells unfinished), assassin (assassinate ability unfinished), bandit captain, cult fanatic, gladiator, scout and spy.
* Fixed bug with missing challenge rating data for new NPC's.
* Implemented opportunity attacks. Now on every move, a check is done of adjacent creatures and compared to adjacent creatures after you have moved. If this results in a creature not being adjacent to the second tile, it is assumed that you have moved away and they get an opportunity attack on you. Amended the attack function to allow for this to enforce only a single attack on this reaction and to show the text (OA) when it takes place.
* Added 3 new vault templates for the map generator.
* Made poisonous monsters poison upon a successful attack.
* New monsters: lion, lizard, lizardfolk, mammoth, manticore, mastiff, medusa, merfolk, minotaur, mule, mummy, nothic, ochre jelly, octopus, ogre.
* Fixed bug with being able to give orders to and recruit unconscious NPC's. You could knock them out, then ask them to join you before reviving them, which has now been removed.
* Fixed bug with ordering allies to light and put out torch. Sloppy coding led to me assuming that all allies had the same torch status, while now it properly checks each one.
* Tweaked colours for lit and dark floors to make it easier for stealthy players to stay in the dark.
* Blindsight wasn't doing anything at all so now it actually works and it's practically much the same as darkvision for now. A lot more monsters will be able to see you in the dark.
* Any key press now interrupts autoexplore. Previously it just kept going until it ran into an enemy, ran out of areas to explore or experienced an error for some reason.
* Much like the only OGL martial archetype was champion for fighters, the only domain for clerics is life. So all cleric's are now life domain and get the preserve life channel divinity power at level 2 along with being able to turn undead (both of which are works in progress).
* Implemented new ability menu accessible by pressing 'a'. Updated help screen to reflect this.
* Changed talking to monsters by making it able to target any creature in sight. I don't see why you can't yell out at an NPC to ask them to join you or die rather than having to stand next to them. Same with giving orders - it should work at a distance and it now does and this is consistent with how group ordering works as well.
* Realised that there was a bug where you could ask ANY monster whatsoever to join your party and not just NPC's. Fixed by adding an NPC flag to all monsters to check against. Updated various messages to reflect this new possibility.
* Implemented second wind ability for fighters. Can heal 1d10 + character level hp, but need to rest before can use it again.
* Part of implementing abilities was this involved needing to deal with removing effects on creatures after a long rest was taken. This was done in a general sense by the creation of an instance of Condition which can have a wide range of effects and basically deals with all buffs, maluses and misc effects on creatures. I added a new flag for this 'remove_on_rest' and went through and removed all those conditions from all creatures on a long rest.
* Added action surge ability for fighters. Grants an extra turn on the next move but can't be used again until another rest has been taken.
* Tidied up bugs to do with action surge and it works properly now. It doesn't take a turn to activate and allows the player to effectively make a free move once at a time of their choosing - ie. two attacks or two moves or a combination of that or other actions.
* Implemented turn undead. Cleric can channel divinity to turn undead once per rest (twice after level 6, thrice after level 18). Created new AI type for scared creatures which means that they move away from the cleric on every turn if possible upon a failed wisdom saving throw. Undead are now scared for 20 turns upon successful turn undead - the rules as written say this expires when damage is inflicted, but I think it's more fun to be able to herd monsters into a corner and slaughter them while scared. Effects all creatures in sight with the 'undead' trait. Implemented temporary conditions to record the use of channel divinity because the number of uses per rest is also used for the purposes of the yet-to-be-implemented preserve life ability.
* Changed giant weasel colour because it was too similar to giant rat and shared the same character.
* Implemented preserve life. Also uses the same channel divinity system as turn undead. Allows the user to select as many targets in sight as they like (excluding undead and constructs, but not excluding enemies otherwise). It then goes through them removing duplicates, before healing them in order. Total healing power limited to 3 x user level and can only heal up to half of the max HP of the target creature.
* Made healing word not take a turn to use, although it is restricted to one use per turn. It is meant to be a bonus action in the rules as written but this concept doesn't exist neatly in game, but that workaround seems to be good enough.
* Fixed bug where incapacitated creatures would take opportunity attacks.
* Made it so that any source of healing is enough to wake up an unconscious creature and give them 1HP before applying the healing effect.
* Fixed bug with poison spray cantrip - somehow an error snuck in where it caused a crash.
* Changed colour of title screen to red to fit the name of the game.
* Fixed bugs with recently added game state variables not being initialised upon loading games. It caused a crash when games were loaded previously but should be working now.
* Fixed bug with autoexplore where target wasn't reset upon changing levels.
* Changed colour of bugbear because it looked like black bears.
* Fixed bug where protection applied to allies even when defender was unconscious.
* Changed 'guard location' order to allies to a more general 'move to location'. Amended the function which allows selection of an unexplored and out-of-sight target as a destination. It can be in walls and a blocked square and the allies will still try and get to it. They deliberately don't pathfind to the target because that'll ruin dungeon exploration a bit, but they'll try to dumb-path their way there, so it can be used to send allies into unexplored rooms and the like which is helpful if you're a non-combat build.