BlackSheep wrote:Thank you to whoever moved this over here
Yeah, I did.
BlackSheep wrote:The stealth check looked kind of clunky to me.
Yeah, it's terrible. The fact that it checks the stealth skill instead of the actual player stealth is not even the worst thing. For example, foe_memory is decremented by 1 each time the monster move. And it's initialised by a random value between 50 and 149 each time the monster sees you (assuming normal intelligence).
So assuming a stealth skill < 3, you need to stay away of the monster's sight for at least 50 turns to loose it. On the other hand, if you have decent stealth, it will quickly fail a check and go back to wandering.
Also, if the monster fails the check, it goes back to wandering. And if it succeeds, it knows your exact location, no matter where you are. It's all or nothing, there's no middle ground.
I thought about changing it, but never got around to it. Here is my idea:
* When the monster lose sight of you, it goes to the last position it saw you. If it doesn't see you, its next target is a random cell in a circle around you. The circle's radius depends on your stealth and your distance to the monster. If you're close and noisy, it's likely to come in your direction. If you're stealthy and far away, it will probably wander in your general direction, but unlikely to find you.
* Regarding monster's foe_memory, I'm not sure what to do. Maybe it should be reduced by you.time_taken instead of by 1. Numbers need adjustment too. Or player's stealth and distance could also affect the rate of foe_memory's reduction.
It could be an implementable. The coding is quite simple, most of the work is about figuring out good formulae, testing and balancing.
<+Grunt> You dereference an invalid pointer! Ouch! That really hurt! The game dies...