You're right; I think we should add the hounds-hang-in-rooms dynamic for some critters, but I think packing behavior is even more important.
Creatures with pack_in=true would do better at surrounding the player. Assuming they are melee, if a move which lessens distance to the player is unavailable, they would choose any unoccupied spot adjacent to the player and try to path there, even if they have to go a ways around. That would include hounds, probably melee orcs, things like that.
I think this could be part and parcel of adding better AI about when a monster is forming an obstacle to packing in. It's a pretty simple situation to check.
(1) Monster X is adjacent to @. (2) There is a monster Y which is adjacent to X, but which has no path to @. (3) X has pack_in=true. (4) X has a square adjacent to it and also adjacent to @ which is unoccupied. (5) X moves to this square. There might be some additional fiddling needed, but I think 1-2-3-4-5 would take care of 95% of all available situations.
Ideally, things like hounds and melee orcs should be trying to surround @ to cut his mobility down to zero.
Packers have one goal: take an extra hit to pack the player, increasing attack exposure and cutting down escape.
This would require much more active management by @ to create bottleneck situations and managing escape routes, and would avoid than this ridiculous situation, which makes a mockery of basic AI:
Code: Select all
#.......#
#...@...#
####h####
####h####
####h####
####h####