Game Discussion > Early Dev
The Red Prison - roguelike based on 5th edition D&D
Skeletor:
Well done and very ambitious project, heaps of content in D&D 5th Edition.
pat:
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.
pat:
* Reversed display order of weapon name and to-hit bonus. It occurred to me that it was back to front.
* Reduced rest counter from 100 to 50.
* Started work on level 2 wizard spells - darkness, flaming sphere, hold person, invisibility, magic weapon, misty step, shatter, web.
* Started work on level 2 cleric spells - aid, lesser restoration, prayer of healing, silence, spiritual weapon, warding bond.
* Finished darkness spell. Allows caster to target a tile and darkness effect applied to that tile and every tile within 3 steps of that spot. Overrides all illumination effects and creates an artificial dark pool. Required changes to the Effect class to allow for invisible effects and dark effects and also changes to the light calculation routuine to look for these new dark objects.
* Added changes to the general effect system. Previously it was only used for the torches seen on walls. They weren't items in the usual sense but rather an abstract effect which had the illumination tag attached. Darkness was the first effect which wasn't permanent so that meant that different issues came up with durations, effects taking turns to count down duration and finally, removal of spent effects. All these issues sorted which opens the door to a pretty useful system for things like flames, clouds, gases, caltrops, oil on the ground etc.
* Added darkness spell to all characters with the preset Human Wizard start for testing purposes. Otherwise 2nd level spells don't appear in-game yet because spellbooks are on the to-do list.
* Finished flaming sphere spell. Like for darkness, current version has it added as a spell for the preset Human Wizard for testing purposes. Creates an immobile object on the map with the illumination property. Added a special case for the Effect class take_turn function which searches for all creatures adjacent. They make a saving throw against the caster's spell power (saved in the flaming sphere object as a special variable). On a successful save, they take 1d6 damage. On a failed save, they take 2d6 damage. Fire immune creatures are not affected.
pat:
Pretty solid development week with a lot of work being done on new spells - I finished the basic set of level 2 spells for wizards and clerics!
Hopefully this means that the gameplay for casters is a bit more nuanced now with a few more tools at your disposal. Spellbooks aren't in yet, so if you want to try out these spells use the premade Human Wizard template to start with them all.
This week that will change though because I've built the foundations for magic items, so hopefully by this time next week I'll have spellbooks done alongside a few other items.
* Fixed bug in companion AI. An error in the code made NPC's jump around rather than walking tile by tile when trying to heal. Should now be working properly.
* Finished hold person spell. On a failed wisdom save, replaces the AI with a held person AI for 20 turns or until they make a successful wisdom save. Available for all clerics and as for testing purposes on premade Human Wizards.
* Fixed bug where I forgot to make flaming sphere cause damage.
* Fixed bug where player can kill themselves with a spell area of effect, and double their XP as a result.
* Fixed bug in companion AI where still tried to path to player after they were dead.
* Finished invisibility spell. Applies a condition to caster or another creature within touching distance which lasts 100 turns and prevents all other creatures from seeing them. Creatures with the blindsight trait can still sense them. Gives advantage to an attacker who attacks whilst invisible against an unaware creature. Changed attack function to remove invisibility condition upon any attack. Changed spell function to remove condition upon casting as well. Doesn't take into account magical detection abilities but they don't exist in-game yet.
* Updated opportunity attack function to make invisible creatures not take these. It cancels invisibility automatically and that's probably not something that I want people to have unwittingly happen.
* Updated UI to show whether proficient or not in equipped armour and shields.
* Fixed bug where creatures were taking opportunity attacks against unseen actors.
* Updated display functions to take into account hidden and invisible monsters.
* Added the ability for items to have temporary conditions applied to them. Added a check for every turn to loop through all items on map and all items in all actor's inventories to make those conditions take a turn. A fair bit of extra complexity but necessary for temporary effects such as the magic weapon spell.
* Changed message system for expiring conditions to allow messages to be given to player for effects on items in player's inventory. It also works for items in sight on the ground.
* Updated UI to reflect changes to items with temporary conditions. Updated combat routines to deal with items with temporary conditions.
* Updated UI to show whether proficient or not with armour and shields equipped. This wasn't clear before because the only outcome was disadvantage when attacking, so now it's clear.
* Reworked torches and their illumination quality. It was previously a trait but that was a bad fit, and instead it's not a permanent condition like other enchantments and effects on items.
* Finished magic weapon spell. Lets player choose an item in inventory. Creates a new effect which adds +1 to hit bonus and +1 damage for 100 turns before expiring. Doesn't work on anything which isn't a weapon.
* Finished misty step spell. Allows caster to teleport to any square within 6 tiles.
* Finished shatter spell. Area of effect damage 3d8 to anyone with 2 squares of target tile. Successful constitution save halves the damage.
* Finished web spell. Creates a new effect on each square within 2 squares of target. Web effect checks each turn for an actor on its location. If so, they must make a dexterity save. On fail, they are now 'stuck'. Stuck is handled by attaching a new condition to that actor which makes them make a successful strength saving throw before they are able to move. The duration of this condition is the same as the original effect, so they should both expire at the same time otherwise. Added checks to all move functions to account for this.
* Added check for unconscious status to remove if hp ever goes above 0 for any reason. This will hopefully catch any odd instances where hp's are added somehow in a weird way.
* Finished aid spell. 2nd level cleric spell which lets you pick 3 creatures and boost their hp and max_hp by 5 for 8 hours. There seems to be some conjecture about what happens when the spell expires and you need those 5 hp to stay alive, so I've gone with the view that you get to keep the current hp but not the max_hp. This avoids any of those weird scenarios.
* Finished lesser restoration spell (for now). Touch effect to remove a range of harmful conditions. The only one that exists in game right now is being poisoned, so it just cures that. Will need to revisit for deafness, blindness, and paralysation.
* Finished prayer of healing. 2nd level cleric spell which heals up to 6 creatures in sight of 2d8 plus wisdom bonus of HP.
* Finished spiritual weapon. 2nd level cleric spell which creates a new object on the map of the caster's faction which fights alongside the caster. The rules as written call for a high level of control over the weapon, but that didn't seem like fun so I gave it autonomy. It's effectively a flying sword with 100 HP (making it practically indestructible for our purposes) and with a to-hit bonus and damage bonus of the caster's wisdom ability modifier.
* Created a new 'summoned' condition to apply to creatures which makes them disappear after a certain duration and made this apply to spiritual weapons. Can easily be extended to any kind of summoned creature imaginable.
* Adjusted pathfinding to make allies slightly prefer going through doors rather than switching places with allied creatures.
pat:
After receiving a fair few requests in a row for a graphical version, I decided to start fiddling around with the concept and it snowballed into some furious programming over the last few days.
I ended up ignoring my previous plans for the week and threw myself headfirst into implementing this new mode. After playing around with the libtcod graphical tile options, I decided that it was too limiting and brought bearlibterminal into the mix for the UI with libtcod for behind-the-scenes stuff.
This of course meant that I spent about two days completely rewriting the game's UI. At some points I regretted this immensely and it felt like I'd broken things irretrievably, but it eventually came together and I've grown to really like bearlibterminal. The next two days were spent doing the grunt work to get tiles into place and into the game.
Here's the current version:
I'm not sure if I'm completely happy with the resolution of the main map, but I'll leave it for a while to see if it grows on me. It's definitely harder to parse than ascii, but that was always going to be an issue and I think the masses don't care about that as much as I do.
Navigation
[0] Message Index
[#] Next page
[*] Previous page
Go to full version