This page contains a list of things that need to be done to Pyrel.
Search for the "\todo" tag in the code and you should see plenty of areas where we might not be doing things the right way. No larger list of these items will be maintained (aside from the Doxygen documentation, which automatically collects them), but they're easy enough to find.
Major feature work
Each of these is likely to first require some thinking-out of how to solve the problem. Remember, diving in and coding is the easiest way to write yourself into a corner!
- Melee combat: should be good to go. You may want to change how creature blows are handled (currently each creature just has a list of lists describing each blow (e.g. ["HIT", "FIRE", "6d8"]). The player's HP is not currently scaled with level, which you may also want to change. Monsters will path to the player right now, though once they reach melee range they'll settle for just yelling "Boo!" instead of attacking.
- Character generation: basic character generation is done, but there's no UI for it (the player is generated by a debugging function that hardcodes their race, class, and level). If you want to implement a proper birth UI, that'd be through a series of prompts that are automatically engaged on program start.
- Proper spellcasting: books should be containers for "spell" items (spellscrolls?) that can be cast.
- Affix system: should be doable now (Magnate is currently working on this).
- More detailed level generation: doable now (fizzix is working on this).
- Enemy AI: enemies can path, but that's about it for their AI at this point. Fundamental AI like interacting with terrain can be done now. More complicated stuff mostly relies on spellcasting, which needs the spells to be ported over -- that's mostly a lot of Effects and Animation work, all of which is doable now.
- Porting in all the different effects currently in Angband: most are doable at this point, but e.g. identification can't be done yet because limited player knowledge with respect to items isn't implemented.
- On that note, knowledge control. We need to track the player's knowledge as distinct from the game state. At the moment this is limited to the player not knowing the state of the entire map.
- And of course, eventually we'll need a system to save and load the game, which means we need to be able to (de)serialize every Thing and Container (since the Containers hold the Thing relationships).
Just a bunch of little things that we'll need eventually.
- Modify the display to show important player stats.
- Kill the player when their HP run out (and, ideally, start a new game)
- Add the "jump to nearest interesting thing" capability to the 'l'ook command instead of having to manually scroll over each tile.