So this is kind of a discussion of some of the random stuff that I've had going in my mind. I know this will be fairly long post because the more I've thought about, the more the ideas grow in scope. I'll structure the post by first discussing what problems I'm trying to resolve and after that I'll go into what solution ideas I've come up with.
The problems:
------------------------------------------------------
1. Monster range of detection is bizarre: i.e. All monsters have ESP. @ is a monsters range of detection if she is within a certain radius monster. No distinction is made between a separation of walls, permanent walls, closed doors or open squares.
2. Monsters don't wake up when expected
A) Monsters don't wake up other monsters: Imagine you're a troll sleeping in a room with your buddies. You feel an arrow hit you, and you know what direction it came from. Instead of waking up your 20 sleeping buddies, you decide to rumble off in complete silence towards the arrow firer.
B) Combat doesn't wake up monsters: I can't think of anything more noisy than a couple heavily armored combatants fighting to the death. Yet, this doesn't seem to affect sleeping monsters. But creeping by them does?
C) Waking up by light is inconsistent: Why does magically lighting a room have a very high chance of waking up a monster but jabbing a lantern in their face does not?
3. Monsters never go back to sleep: Why is it that monsters are always asleep to begin with, but as soon as @ wakes them they are doomed to wander around for eternity in a tortured sleepless state even though @ left the level never to return many ages ago? Poor monsters.
4. Stealth is not modifiable by motion: We all know that if we don't want to wake up someone we move around them slowly and quietly. How come @ hasn't learned this trick, despite having both int and wis of 18?
5. @ doesn't know basic anatomy: If you gave me a dagger and told me to go kill a sleeping wraith, I'd probably be in trouble. However, if instead you told me to kill a sleeping elf. I might have a good chance at success, despite being weak and clumsy. However, @ does just as much damage to a prone elf as she does to an awake and fighting one.
6. @ is deaf: There are 30 hounds rounding the corner up ahead, but @ has no idea about the approaching danger.
------------------------------------------------------------------------------
OK, now for some ideas. Before I get started, many of the ideas presented will require modifications that vary across monsters. I suggest variation by symbol, since this will not require complicating the edit file for monsters. (although it might require a new edit file altogether.) I also fully realize that these changes are *large* in scope and might not even be possible to implement. Certainly not by someone with pitiful coding abilities like me.
1. Range of Detection: Every action has a noise associated with it. Let's call this NOISE. Every monster (class) has two values of importance. A waking value and a hearing value. Call these WAKE and HEAR. For each player move an ambient noise value is calculated for each square in the vicinity of the player. Call this AMBIENT. For simplicity, despite not being physically correct, let's make noise reduction linear. Let's also give the current player action a noise value of 50. Now we need to decide how noise gets reduced. Let's say an open square reduces noise by 1. A closed door/rubble pile by 10 and a wall by 15. Then the AMBIENT value at any point is NOISE - MAX(SUM[features]) where SUM[features] represents the sum of features through all possible paths to the player. Let's give an example.
<pre>
########
#...T..#
########
#...@..#
########
</pre>
In this case the AMBIENT value at T is 34. Open square (that Z is on) is 1 and the wall between is 15. Whereas:
<pre>
########
#...T..#
#.######
#....@..#
########
</pre>
Has an AMBIENT value at T of 43. Traveling 7 open squares from Z to @.
Now let's give T a WAKE value of 30 and a HEAR value of 10.
we roll a 1dAMBIENT. If the result is greater than WAKE then T will wake up. If T is already awake and the result is greater than HEAR then T will head toward the noise source. In the first case, the noise comes through the wall, so T can't really head towards @, but in the second case the noise comes through the open square, so T knows where to head. T will always head towards a square of higher AMBIENT value. The dreaded Zs will have WAKE and HEAR values of 0 each. Note: there is little functional difference between an asleep monster and a non-sleeping monster if WAKE and HEAR are the same. And having a HEAR value higher than WAKE makes little sense.
As it works now all monsters have ESP. In the above formulation, none do. However, it's reasonable to assume certain monsters, Morgoth, Greater Undead, mind flayers, etc. actually have ESP. These monsters should have an ESP flag and should default to the previous detection methods.
2A: Any monster motion adjacent to another monster wakes it up. This will screw over stealth based characters but can be balanced by 5.
2B: Combat has a very high noise value. something like 100. Excepting the case in part 5.
2C: Well, monsters need separate values wake noise and a wake light. You could imagine a Troll being more sensitive to light than to noise and a worm mass being more sensitive to noise, but completely insensitive to light. The calculation for light is much more simple than for noise. If you are in a players light radius you roll for 'wake light.' If the room gets magically lit (except by enlightenment) you roll for 'wake light' (only once, on the transition).
Being in light radius does not matter if the square is already perma-lit.
This will make sneaking up on monsters insanely hard. So in that vein I think we need an added 'sheath light' option in which @ can hide her light source. @ can now see things on all adjacent squares, but does not light up any of them. Alternatively. all magical sources of light (everything besides lanterns and torches) can be considered 'dark' light, in that they do not wake up other monsters.
An awake monster becomes aware of the player anytime any lit section of the players radius comes into line of sight.
3. @ wanted to sneak up on our unsuspecting T. However, she tripped over a rock and T woke up. @ can't handle T if the troll is awake so she teleports away. T has a finite awake time. Every turn that T is not aware of @, T's INTEREST decreases. If T becomes aware of @ again, the INTEREST value goes back to full. Let's say monster INTEREST starts at 10000, and decreased by 1d10 every game turn. After roughly 200 unhasted player turns T will fall asleep again. We can make this monster dependent also. So certain monsters fall asleep differently.
What does T do in the intervening time. Well first T heads to the last place that they heard or saw @. Then T random walks around there, heading towards another monster of like kind if one is nearby.
4. S for search mode should actually be Stealth mode. This should be settable by the player, allowing them to take N turns for each 1 accounting for a reduction in noise, up to some minimum. The amount of noise @ makes upon movement should be a direct function of their armor and their stealth setting.
Example: Naked @ makes noise of 50. Each extra turn in motion decreases noise by 5 up to a maximum of 20 off (this can be dex dependent). (each stealth value also decreases noise by 5). Naked @ now has a noise value of 30 meaning that she can sneak up on the T provided she shields her light, since T has a WAKE value of 30 as well. However, what if @ was wearing chain mail, iron shod boots, a metal helm, and some gauntlets. Reasonable guesses would increase her noise by 10 for the mail and the boots and 5 for the helm and gauntlets, leaving her Noise at 80 and giving her no way of sneaking up on T.
Furthermore, items in @s bag should also make noise as if they were being worn. metal items (excluding rings and amulets) should make lots of noise if you were carrying them around. Obviously all this stuff would need to be balanced, and probably (sadly) is years off from implementation. My numbers are just invented.
5. Ok so monsters are waking up pretty much anytime @ does anything unless she takes off her armor and blinds herself. But then, unless she can kill something in one blow, she's dead in the water after her first hit. But, she's hitting a prone monster! how in the world can she not do a lot of damage with this hit. @s first attack on a sleeping monster should be 4-5 times more damage than it would be if the monster was awake. Essentially this is like an assassination attempt. Assassination damage should be dependent on stealth, dex and class. And if the monster dies on the first blow it does not wake up the monsters next to it. However, if it does wake, @'s next blow is like a normal combat blow, and pretty much everything will hear it. Assassination can only be made with melee, not with ranged attacks or spells.
6. Monsters also have a default NOISE value. If @ hears something she should be warned and should direction of where the noise comes from. Resting @ (should also regain HP,SP much quicker) but is less likely to hear noise perhaps.
So there's a lot here, and I'd be surprised if anyone read this far. The net result for these changes would be that monsters wake up less if @ is skulking but once one wakes, pretty much everything is awake. However, @ can run away out of the Range of Hearing, shut some doors and wait a while and then try again. Hounds are still a major pain, but can now be avoided with enough detection, since you can now detect them before they hear you. Once they start yapping though, they'll wake up everything in the vicinity.
No changes need to be made on aggravation or monsters that call for help, like shriekers. These are magical effects and are reasonable if they work in a radius type effect.
The problems:
------------------------------------------------------
1. Monster range of detection is bizarre: i.e. All monsters have ESP. @ is a monsters range of detection if she is within a certain radius monster. No distinction is made between a separation of walls, permanent walls, closed doors or open squares.
2. Monsters don't wake up when expected
A) Monsters don't wake up other monsters: Imagine you're a troll sleeping in a room with your buddies. You feel an arrow hit you, and you know what direction it came from. Instead of waking up your 20 sleeping buddies, you decide to rumble off in complete silence towards the arrow firer.
B) Combat doesn't wake up monsters: I can't think of anything more noisy than a couple heavily armored combatants fighting to the death. Yet, this doesn't seem to affect sleeping monsters. But creeping by them does?
C) Waking up by light is inconsistent: Why does magically lighting a room have a very high chance of waking up a monster but jabbing a lantern in their face does not?
3. Monsters never go back to sleep: Why is it that monsters are always asleep to begin with, but as soon as @ wakes them they are doomed to wander around for eternity in a tortured sleepless state even though @ left the level never to return many ages ago? Poor monsters.
4. Stealth is not modifiable by motion: We all know that if we don't want to wake up someone we move around them slowly and quietly. How come @ hasn't learned this trick, despite having both int and wis of 18?
5. @ doesn't know basic anatomy: If you gave me a dagger and told me to go kill a sleeping wraith, I'd probably be in trouble. However, if instead you told me to kill a sleeping elf. I might have a good chance at success, despite being weak and clumsy. However, @ does just as much damage to a prone elf as she does to an awake and fighting one.
6. @ is deaf: There are 30 hounds rounding the corner up ahead, but @ has no idea about the approaching danger.
------------------------------------------------------------------------------
OK, now for some ideas. Before I get started, many of the ideas presented will require modifications that vary across monsters. I suggest variation by symbol, since this will not require complicating the edit file for monsters. (although it might require a new edit file altogether.) I also fully realize that these changes are *large* in scope and might not even be possible to implement. Certainly not by someone with pitiful coding abilities like me.
1. Range of Detection: Every action has a noise associated with it. Let's call this NOISE. Every monster (class) has two values of importance. A waking value and a hearing value. Call these WAKE and HEAR. For each player move an ambient noise value is calculated for each square in the vicinity of the player. Call this AMBIENT. For simplicity, despite not being physically correct, let's make noise reduction linear. Let's also give the current player action a noise value of 50. Now we need to decide how noise gets reduced. Let's say an open square reduces noise by 1. A closed door/rubble pile by 10 and a wall by 15. Then the AMBIENT value at any point is NOISE - MAX(SUM[features]) where SUM[features] represents the sum of features through all possible paths to the player. Let's give an example.
<pre>
########
#...T..#
########
#...@..#
########
</pre>
In this case the AMBIENT value at T is 34. Open square (that Z is on) is 1 and the wall between is 15. Whereas:
<pre>
########
#...T..#
#.######
#....@..#
########
</pre>
Has an AMBIENT value at T of 43. Traveling 7 open squares from Z to @.
Now let's give T a WAKE value of 30 and a HEAR value of 10.
we roll a 1dAMBIENT. If the result is greater than WAKE then T will wake up. If T is already awake and the result is greater than HEAR then T will head toward the noise source. In the first case, the noise comes through the wall, so T can't really head towards @, but in the second case the noise comes through the open square, so T knows where to head. T will always head towards a square of higher AMBIENT value. The dreaded Zs will have WAKE and HEAR values of 0 each. Note: there is little functional difference between an asleep monster and a non-sleeping monster if WAKE and HEAR are the same. And having a HEAR value higher than WAKE makes little sense.
As it works now all monsters have ESP. In the above formulation, none do. However, it's reasonable to assume certain monsters, Morgoth, Greater Undead, mind flayers, etc. actually have ESP. These monsters should have an ESP flag and should default to the previous detection methods.
2A: Any monster motion adjacent to another monster wakes it up. This will screw over stealth based characters but can be balanced by 5.
2B: Combat has a very high noise value. something like 100. Excepting the case in part 5.
2C: Well, monsters need separate values wake noise and a wake light. You could imagine a Troll being more sensitive to light than to noise and a worm mass being more sensitive to noise, but completely insensitive to light. The calculation for light is much more simple than for noise. If you are in a players light radius you roll for 'wake light.' If the room gets magically lit (except by enlightenment) you roll for 'wake light' (only once, on the transition).
Being in light radius does not matter if the square is already perma-lit.
This will make sneaking up on monsters insanely hard. So in that vein I think we need an added 'sheath light' option in which @ can hide her light source. @ can now see things on all adjacent squares, but does not light up any of them. Alternatively. all magical sources of light (everything besides lanterns and torches) can be considered 'dark' light, in that they do not wake up other monsters.
An awake monster becomes aware of the player anytime any lit section of the players radius comes into line of sight.
3. @ wanted to sneak up on our unsuspecting T. However, she tripped over a rock and T woke up. @ can't handle T if the troll is awake so she teleports away. T has a finite awake time. Every turn that T is not aware of @, T's INTEREST decreases. If T becomes aware of @ again, the INTEREST value goes back to full. Let's say monster INTEREST starts at 10000, and decreased by 1d10 every game turn. After roughly 200 unhasted player turns T will fall asleep again. We can make this monster dependent also. So certain monsters fall asleep differently.
What does T do in the intervening time. Well first T heads to the last place that they heard or saw @. Then T random walks around there, heading towards another monster of like kind if one is nearby.
4. S for search mode should actually be Stealth mode. This should be settable by the player, allowing them to take N turns for each 1 accounting for a reduction in noise, up to some minimum. The amount of noise @ makes upon movement should be a direct function of their armor and their stealth setting.
Example: Naked @ makes noise of 50. Each extra turn in motion decreases noise by 5 up to a maximum of 20 off (this can be dex dependent). (each stealth value also decreases noise by 5). Naked @ now has a noise value of 30 meaning that she can sneak up on the T provided she shields her light, since T has a WAKE value of 30 as well. However, what if @ was wearing chain mail, iron shod boots, a metal helm, and some gauntlets. Reasonable guesses would increase her noise by 10 for the mail and the boots and 5 for the helm and gauntlets, leaving her Noise at 80 and giving her no way of sneaking up on T.
Furthermore, items in @s bag should also make noise as if they were being worn. metal items (excluding rings and amulets) should make lots of noise if you were carrying them around. Obviously all this stuff would need to be balanced, and probably (sadly) is years off from implementation. My numbers are just invented.
5. Ok so monsters are waking up pretty much anytime @ does anything unless she takes off her armor and blinds herself. But then, unless she can kill something in one blow, she's dead in the water after her first hit. But, she's hitting a prone monster! how in the world can she not do a lot of damage with this hit. @s first attack on a sleeping monster should be 4-5 times more damage than it would be if the monster was awake. Essentially this is like an assassination attempt. Assassination damage should be dependent on stealth, dex and class. And if the monster dies on the first blow it does not wake up the monsters next to it. However, if it does wake, @'s next blow is like a normal combat blow, and pretty much everything will hear it. Assassination can only be made with melee, not with ranged attacks or spells.
6. Monsters also have a default NOISE value. If @ hears something she should be warned and should direction of where the noise comes from. Resting @ (should also regain HP,SP much quicker) but is less likely to hear noise perhaps.
So there's a lot here, and I'd be surprised if anyone read this far. The net result for these changes would be that monsters wake up less if @ is skulking but once one wakes, pretty much everything is awake. However, @ can run away out of the Range of Hearing, shut some doors and wait a while and then try again. Hounds are still a major pain, but can now be avoided with enough detection, since you can now detect them before they hear you. Once they start yapping though, they'll wake up everything in the vicinity.
No changes need to be made on aggravation or monsters that call for help, like shriekers. These are magical effects and are reasonable if they work in a radius type effect.
Comment