I was travelling and wasn’t able to hack code as much as I would liked to (and on top of that, I wanted to play some computer games too). But I did manage to push next feature forward just a little bit and write some BDD specifications for it. It’s a bit odd to write BDD specs for a single person project, but I view doing that as a good training and a nice favour to my future self.
After releasing 0.10 last week, I have been fixing up little things that bothered me. I updated Hy to latest version (0.9.12) and fixed some annoying AI bugs in the process. Rats and firebeetles are finally able to attack and damage the player.
Previously it was possible that a level generator placed a monster directly where stairs are located. This of course prevented player from ever entering the level. Now it is possible for the player to enter, if any of eight tiles surrounding the stairs is empty.
Monsters have learned to shuffle past each other. This is very helpful when two creatures meet in a narrow corridor. Previously they would just stand there and wait until the passage was clear, which of course never happened. Now they happily shuffle past each other and continue their journey.
I started working on a new feature: pits. These will be first traps that the game will have. There is a new room generator that can generate rooms with large pits in the middle and narrow corridor going around. Pits themselves don’t do anything yet, player and monsters can walk over them without any effects. But they look nice nevertheless.
Whole trap system is still pretty much in thinking stage. I might try my hand at logic programming, because it could be such a nice tool for this. Some traps are triggered when a character steps on them, while some are triggered for flying creatures too. Having to keep track of movement modes, special effects and magical items might be a bit too convoluted, but expressing them as facts and queries could make it easier to tackle. That remains to be seen though.
Finally, command line got couple changes. First, Qt interface is now the default instead of the curses. Curses one hasn’t been receiving much of love lately and has fallen a bit behind in terms of features. The bigger change is that starting level can now be specified on command line. That helps testing new stuff, because I don’t have to play through all the levels just to see that new room was not generated this time.