Drop Item functionality has now been implemented. I was originally going to include all the suggestions mentioned in the comments to my
previous post on the subject, but due to a slight limitation with the Delphi VCL (for some reason TPanel components, despite inheriting from TWinControl, don't have the corresponding OnKeyDown events, and I'm not interested in
creating my own TPanel descendant that can respond to said key events) I've only implemented drag-and-drop item functionality.
And now, onto monsters! This is a very exciting bit of development, as I have lots of ideas for their AI. As ever, the reference posts on AI in Roguelikes seem to be over at
ASCII Dreams. Eventually, I'd like to adopt many of the ideas mentioned there, but for now, the priority is to get the monster data entered into the SQL-Lite backend and then from there a monster generation algorithm written.
A while back, before development was put on hiatus, I had written up a fragment of a top-level design document dealing with this. Here's an extract dealing with one particular set of levels:
The Fortress
Built from rooms and corridors
Filled with martial creatures
Level 1 to 5 Monsters
Level | Monster | Symbol | Colour | Class Template | Frequency | Faction |
1 | Goblin | ‘g’ | Light Grey | Class + 1 | Common | 1 |
1 | Kobold | ‘K’ | Brown | Class + 1 | Standard | 2 |
1 | Xvart | ‘g’ | Purple | None | Rare | 2 |
2 | Hobgoblin | ‘g’ | Brown | Class + 1 | Standard | 1 |
2 | Gnoll | ‘g’ | Yellow | Class + 2 | Common | 2 |
2 | Quokka | ‘r’ | Light Grey | None | Rare | 2 |
3 | Quaggoth | ‘g’ | Orange | Class + 1 | Standard | 3 |
3 | Warg | ‘w’ | Light Grey | None | Standard | 2 |
3 | Trogg | ‘T’ | Brown | None | Rare | 3 |
4 | Ogre | ‘O’ | Brown | Class + 2 | Stsndard | 1 |
4 | Ogre Mage | ‘O’ | Magenta | None | Rare | 1 |
4 | Hill Giant | ‘C’ | Light Grey | None | Standard | 4 |
5 | Cyclops | ‘C’ | Brown | None | Rare | 4 |
5 | Ettin | ‘C’ | Brown | None | Rare | 4 |
5 | Minotaur | ‘m’ | Light Red | Class + 3 | Rare | 5 |
Although this document didn't go into detail on the individual monster statistics, there are a few things here which are of interest at the moment. The 'Class Template' column refers to an idea I had, of, like Crawl, a slightly tougher version of the monster appearing with a class template bolted onto it, e.g. instead of a standard goblin, occasionally a "Goblin Fighter" might appear.
The 'Faction' column referred to an idea I had of improving AI by introducing the concept of Factions and a variable called 'Hate', which would eventually allow monsters to fight each other if necessary (the player would always be Faction 0). I don't know if I'll ever get that implemented though.
(Edit: Reformatted Post to remove the big gap. Thanks to
Robotics For You!! for how to do this.