Haven’t been putting much work into this lately; mainly distracted by some other toys and things as of late so I haven’t been able to get any good ideas going in my head. In terms of taking what I’ve got now, and making it functional, Graff is relatively close in that regard. The “fun” part of “functional” is definitely not there yet, but in terms of “allow the player to enter a dungeon, kill things, grab loot, and exit back out”, the pieces are there, but not put together or fleshed out. In terms of what could go in, here’s a list of ideas off the top of my head:
-Random element to combat
-Monster variety; new monster behaviors
-Line of sight pathing
-Discrete turn system
-Field of View
-More GUI elements
-More map algorithms
-More transparent or player-affecting item/stat system
-More discrete map transitions than “press W or E”
With combat, out of the above list monster behaviors and combat abilities have the most potential to make things interesting. With abilities, I was thinking of having some sort of system where the player can press a key or hit a button that, for example does a “sweeping” move that hits all adjacent targets, or if the player moves in a direction for 2 squares and then collides with an entity, a “lance” ability is triggered that causes a knockback effect, for example.
Monster behavior is simply new AI patterns. There could be “squads” of entities that all follow a leader until that leader is within range of a target, then the squad begins to follow the target to attack. Likewise ranged attackers could mix things up, as well as trap layers, and so on.
Randomness to combat shouldn’t be that difficult; simply instead of returning (attacker.atk – target.def), return random range(attacker.atk – target.def) within some tolerance.
Though the first issue I should probably tackle is the managing of AI behavior. Currently it’s all hardcoded, and I’d like to get some portion of the entities into a separate file that’s loaded at the start of the game. Perhaps something as simple as the creature’s stats, name, and default AI package, as well as any status effects/resists, and that way adding a new creature is just a matter of writing a new entry into a config file, instead of jamming it into Entity.py somehow.