This week’s activities were all over the map.
- New Abilities
- Kill Touch and Charm Animals. Kill Touch instantly kills an adjacent target. I need to put some limits on this, such as resistance for stronger enemies. Charm Animals charms all animals in a 5×5 square
- Warding Glyph. Places a glyph on the ground, visible only to the caster, that harms the first actor to walk on it.
- Destroy Undead. Destroys all undead enemies in a 5×5 square.
- Cure. Cures poison.
- New Item: Poison Arrow. Poison Arrows inflict poison on their target.
- New Map Element: Poisoned Fountain. The water in this fountain is poisoned, giving it a green hue. Drinking from the fountain causes a Poisoned status effect. The fountain will have additional future uses (when the functionality is built): pouring a Cure Poison potion into the fountain purifies the fountain, an empty vial can be dipped into the fountain to create a Poison Potion, and a weapon can be dipped into the fountain to give it a temporary Poison effect.
- New sound effects. Cauldron bubbling, fountain trickling, egg cracking and hatching
- Particle effect for conjuration. It’s a slightly modified version of one of the particle effects from the Pixel Arsenal particle effects package.
- Enemies can open doors. Gone are the days in which the player could flee from enemies simply by passing through a doorway. Enemies can now open doors to continue their pursuit. Whether a particular enemy can open a door is governed by the actions it can perform. Some enemies, such as giant rats, are too unintelligent and/or physically incapable of opening doors.
- Combat balancing. Several hours went into fine-tuning the damage formula and damage progression in a spreadsheet. My naive original damage formula was [Damage caused by the attacker] – [Damage reduced by the defender]. I liked the simplicity and intuitiveness of this calculation but it didn’t work in practice. I did a bit of research on damage formulas used in RPG’s (in hindsight, something I should have done before any spreadsheet work or coding, because designers have already figured this stuff out) and found some alternative formulas. A common formula is [Damage] = [Attack] * C / ([Defense] + C), where Attack is the damage caused by an attack before applying damage reduction, Defense is a C is a Constant, usually 100, and Damage is the resulting damage after damage is applied.
- Assumptions and constraints:
- Max HP never changes.
- Max HP only slightly varies between different classes.
- Each class fits into one of the following armor categories: none, light, medium, heavy.
- Each armor category has a target number of hits before dying (none:2, light:3, medium:7, heavy: 12). The damage formula and item stats are all designed around these numbers.
- Tooltips for stats. Tooltips are now displayed when hovering over player stats.
- New automated tests. Cell area utilities.
- Fixed AI bugs.
- Actors don’t track the player’s last seen location in some scenarios
- Actors sometimes choose to respond to the wrong observation because observation weighting isn’t taking player regard (friendly or hostile) into consideration
- Player allies sometimes follow the player instead of attacking enemies of the player
- Fixed other bugs.
- Inanimate objects, such as stairs, barrels, and doors, are subject to charming. It doesn’t make sense for entities without brains (and some with brains) to be charmed, so they’re now excluded. That said, this bug may inspire a future spell where inanimate objects are brought to life.
- The Run ability allows the player to run past an enemy.
- Changing levels and saving/loading working again. The reinstantiation of a previously visited level breaks more often than any other functionality in the game. So many changes break it. Most recently, adding theme-specific sprites for certain objects caused it to fail.
With the last quarter of 2022 starting this weekend, I’m putting together a plan to get the first playable version done by year-end. Next week’s goals will be determined by that plan.
Leave a Reply