This has bothered me for a long time, and it's bothered other people too. (see discussion here for example).
So I started playing around a bit with confusion at first just to get a feel for how this works, and then maybe start thinking about how to improve it. I wized up a character and had him cast repeatedly on a hill orc and output various game variables so I could see what was going on.
How does confusion work in Angband
When you attempt a confusion spell on a monster, the first thing that happens is there is a calculation of damage which is essentially the amount of turns the effect should last. (This is different for sleep but it shouldn't be because we should distinguish between magical sleep and natural sleep, but I digress.)
The difficulty of the saving throw is given by
where "timer" is the damage. If a monster rolls lower than the resist_chance it successfully resists. Uniques get two attempts.
This leads to the following behavior.
1) The chance for a monster to resist a status effect is at its lowest around 40%
2) The chance to resist is only very weakly dependent on device skill and caster level, the difference between a 38th level rogue casting confuse monster on a hill orc and a 16th level rogue is on average about 6% difference in chance to resist.
3) Device skill has negligible effect. I didn't crunch the numbers explicitly, but it's about a 1-2% difference between device skills of 49 and 81.
Now let's say the effect sticks, great, how long does it last. The issue here is that the timer decreases faster depending on what level the monster is. If it's a hill orc, you get your full turns, but if it's a higher level monster, it decays faster. The exact amount is a random number between 1 and the monster level divided by 10 + 1. So for our hill orc (level 8), it's always 1. For a 20th level monster it will knock on average 1.5 off each turn, and for a 30th level monster, it will be on average 2 turns.
This decrease comes on the monster turns, so fast monsters will have their status effect wear off twice as fast.
What are the problems with this behavior
The problems are confusion (and other status effects) are currently never worth their casting cost. They rarely stick. However, the effects are strong. If you can confuse a monster for 5 turns, you can probably kill it. To date the standard operating procedure has been to keep status effects underpowered, so that they don't stick often, and when they do, they wear off quickly. In other words, they're kind of useless. This really limits us when it comes to interesting tactical combat. Status effects are interesting, and we should make it so.
Purposes of status effects
There are two purposes of imposing a status effect on a monster, the first is to incapacitate it enough that you can defeat it in combat. The second is to disable a dangerous monster so you can escape. The first one is powerful, the second is less so. Confusion is pretty powerful, a confused monster cannot cast anything, and just winds up randomly moving around. Sometimes it attacks you. (It never causes it to attack other monsters though.) Sleep is less powerful, it really only allows a character to escape, or to gain space between the monster and itself, something that could be done with phase door.
Some proposed changes
It's worth reading Derakon's proposed changes above, but I have some of my own.
I think it's ok that confusion is completely debilitating, it just means it needs to be a more limited resource. That's easy to do, just remove the wands from the store. It's already a hard spell to cast, but I'd make it easier for rogues. I think it should be one of the primary ways for rogues to fight in the midgame.
Change the time decrease to global turns not monster turns. So let's say your confusion hits for 10, then each global turn (about 1/100 of a game turn at normal speed) it should drop by 1/100 of a turn. So in other words, set it to 1000, and drop it by one on a global turn. This way fast monsters (who are the most dangerous anyway) don't get a leg up on exiting status effects.
Increase device skill effects. Device skill is such a weak multiplier it's sad. This goes for damaging wands/rods also.
Reformulate how saving throws are calculated. Instead of calculating a binary save value, have the saving through reduce the number of turns on the spell. If it reduces it to zero then the monster has saved. Something like opposing roles are good for this. Here's a first stab. For spells the players roll is level + 10, the monster is monster level, The amount of turns for confusion is the difference between the two, with some maximum (10 turns is reasonable I think). For wands it's the same thing, except instead of level it's device skill. (There may be many better options, like the opposing 1d20 + bonus that's used in Sil)
Let's see how this works against our hill orc. Our level 16 rogue, rolls 1d26 against the 1d8 of the hill orc, and has roughly a 82% chance of success. Against an Uruk (level 16) about a 67% chance. Against an OoD young red dragon (level 31) you would have only a 38% chance.
Close rolls cause the monster to lose its turn to avoid the effect. One of the biggest problems with status effects is that you give up a turn. There is actually double the risk here because you have a significant chance of failing the spell or using the device correctly. So I would say that if a monster passes the save by less than 10 it does not get the effect, but loses its next turn, as it spends it recovering. This takes some of the sting out of failed attempts.
Remove faster recovery for higher level monsters. Instead, they get a better die roll.
Uniques save at 10 levels higher. I like this better than giving them an extra roll.
Differentiate between magical sleep and normal sleep. This also gets rid of some of the special casing hacks for sleep in mon-timed. But the idea here is that magical sleep decreases in the same way, regardless of how alert the monster is. Then sleep can become a first level mage spell, and a good way for mages to escape combat situations early. Scare monster should be the priest version of this although we have to be careful with overpowering this in the midgame. An easy way to make this more of an escape and less of an offensive spell is to give a scared monster another saving through whenever they take damage.
I like Derakon's ideas for slow, provided it can stack. I also like changing monster stunning, which can hopefully be used in the new combat system whenever that comes online.
Thoughts?
So I started playing around a bit with confusion at first just to get a feel for how this works, and then maybe start thinking about how to improve it. I wized up a character and had him cast repeatedly on a hill orc and output various game variables so I could see what was going on.
How does confusion work in Angband
When you attempt a confusion spell on a monster, the first thing that happens is there is a calculation of damage which is essentially the amount of turns the effect should last. (This is different for sleep but it shouldn't be because we should distinguish between magical sleep and natural sleep, but I digress.)
The difficulty of the saving throw is given by
Code:
resist_chance = mon->race->level + 40 - (timer / 2);
This leads to the following behavior.
1) The chance for a monster to resist a status effect is at its lowest around 40%
2) The chance to resist is only very weakly dependent on device skill and caster level, the difference between a 38th level rogue casting confuse monster on a hill orc and a 16th level rogue is on average about 6% difference in chance to resist.
3) Device skill has negligible effect. I didn't crunch the numbers explicitly, but it's about a 1-2% difference between device skills of 49 and 81.
Now let's say the effect sticks, great, how long does it last. The issue here is that the timer decreases faster depending on what level the monster is. If it's a hill orc, you get your full turns, but if it's a higher level monster, it decays faster. The exact amount is a random number between 1 and the monster level divided by 10 + 1. So for our hill orc (level 8), it's always 1. For a 20th level monster it will knock on average 1.5 off each turn, and for a 30th level monster, it will be on average 2 turns.
This decrease comes on the monster turns, so fast monsters will have their status effect wear off twice as fast.
What are the problems with this behavior
The problems are confusion (and other status effects) are currently never worth their casting cost. They rarely stick. However, the effects are strong. If you can confuse a monster for 5 turns, you can probably kill it. To date the standard operating procedure has been to keep status effects underpowered, so that they don't stick often, and when they do, they wear off quickly. In other words, they're kind of useless. This really limits us when it comes to interesting tactical combat. Status effects are interesting, and we should make it so.
Purposes of status effects
There are two purposes of imposing a status effect on a monster, the first is to incapacitate it enough that you can defeat it in combat. The second is to disable a dangerous monster so you can escape. The first one is powerful, the second is less so. Confusion is pretty powerful, a confused monster cannot cast anything, and just winds up randomly moving around. Sometimes it attacks you. (It never causes it to attack other monsters though.) Sleep is less powerful, it really only allows a character to escape, or to gain space between the monster and itself, something that could be done with phase door.
Some proposed changes
It's worth reading Derakon's proposed changes above, but I have some of my own.
I think it's ok that confusion is completely debilitating, it just means it needs to be a more limited resource. That's easy to do, just remove the wands from the store. It's already a hard spell to cast, but I'd make it easier for rogues. I think it should be one of the primary ways for rogues to fight in the midgame.
Change the time decrease to global turns not monster turns. So let's say your confusion hits for 10, then each global turn (about 1/100 of a game turn at normal speed) it should drop by 1/100 of a turn. So in other words, set it to 1000, and drop it by one on a global turn. This way fast monsters (who are the most dangerous anyway) don't get a leg up on exiting status effects.
Increase device skill effects. Device skill is such a weak multiplier it's sad. This goes for damaging wands/rods also.
Reformulate how saving throws are calculated. Instead of calculating a binary save value, have the saving through reduce the number of turns on the spell. If it reduces it to zero then the monster has saved. Something like opposing roles are good for this. Here's a first stab. For spells the players roll is level + 10, the monster is monster level, The amount of turns for confusion is the difference between the two, with some maximum (10 turns is reasonable I think). For wands it's the same thing, except instead of level it's device skill. (There may be many better options, like the opposing 1d20 + bonus that's used in Sil)
Let's see how this works against our hill orc. Our level 16 rogue, rolls 1d26 against the 1d8 of the hill orc, and has roughly a 82% chance of success. Against an Uruk (level 16) about a 67% chance. Against an OoD young red dragon (level 31) you would have only a 38% chance.
Close rolls cause the monster to lose its turn to avoid the effect. One of the biggest problems with status effects is that you give up a turn. There is actually double the risk here because you have a significant chance of failing the spell or using the device correctly. So I would say that if a monster passes the save by less than 10 it does not get the effect, but loses its next turn, as it spends it recovering. This takes some of the sting out of failed attempts.
Remove faster recovery for higher level monsters. Instead, they get a better die roll.
Uniques save at 10 levels higher. I like this better than giving them an extra roll.
Differentiate between magical sleep and normal sleep. This also gets rid of some of the special casing hacks for sleep in mon-timed. But the idea here is that magical sleep decreases in the same way, regardless of how alert the monster is. Then sleep can become a first level mage spell, and a good way for mages to escape combat situations early. Scare monster should be the priest version of this although we have to be careful with overpowering this in the midgame. An easy way to make this more of an escape and less of an offensive spell is to give a scared monster another saving through whenever they take damage.
I like Derakon's ideas for slow, provided it can stack. I also like changing monster stunning, which can hopefully be used in the new combat system whenever that comes online.
Thoughts?
Comment