Mucking around with confusion and monster status effects

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • fizzix
    Prophet
    • Aug 2009
    • 3025

    Mucking around with confusion and monster status effects

    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

    Code:
    resist_chance = mon->race->level + 40 - (timer / 2);
    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?
  • Derakon
    Prophet
    • Dec 2009
    • 9022

    #2
    My first-glance thought is that rather than take away the monster's roll on a near-success, couldn't you just slightly penalize the monster roll globally? Then they're only confused for a single turn, which is very much like losing their turn but doesn't require special logic to handle it.

    I'm also not a huge fan of rolling 1dX where X is large. 1d20+bonus or even 3d6+bonus has a more pleasant distribution IMO. 1dX tends to lead to situations where you succeed (or fail!) by comically huge margins.

    And of course, the bottom line (as I emphasized in the thread you referred to) is: is this something the player is going to prefer to do over simply attacking the monster?

    Comment

    • fizzix
      Prophet
      • Aug 2009
      • 3025

      #3
      Originally posted by Derakon
      And of course, the bottom line (as I emphasized in the thread you referred to) is: is this something the player is going to prefer to do over simply attacking the monster?
      Yeah, I think this is sort of where I'm headed to.

      Sleep, scare: These are early level escapes good until about dlevel 30 or so. They allow a weaker character to neutralize a threat, but not eliminate it, allowing them to get to the stairs or another safe place.

      Slow, confuse: These are expensive but useful ways to defeat tougher monsters. They start coming online around dlevel 15 and extend to about dlevel 50, topping out on stuff like Ancient Dragons. I think, in my ideal world, confuse and melee kill is the predominant way for a rogue to beat midgame uniques. Slow would be the ideal way for a non-existent druid class to do the same.

      Stun: I see this as mainly a combat thing, which isn't implemented yet. I think this is pretty much where we should be going with heavy weapons. A good blow with a heavy weapon comes with a disabling effect. This is down the road.


      The saving through is something that I didn't spend much time thinking about. There are probably better formulas to use. Do you have any suggestions?

      Comment

      • Derakon
        Prophet
        • Dec 2009
        • 9022

        #4
        Originally posted by fizzix
        The saving through is something that I didn't spend much time thinking about. There are probably better formulas to use. Do you have any suggestions?
        No, I don't, since I expect this is something that's going to require some playtesting.

        Something to consider re: sleep is its potential as a group disabler early on. What if the only available version of Sleep Monster tried to affect everything in LOS? Then young characters could plausibly use it to break up orc groups into more manageable fights, or try to keep a unique's escorts at bay while they fight the unique.

        Comment

        • fizzix
          Prophet
          • Aug 2009
          • 3025

          #5
          Originally posted by Derakon
          No, I don't, since I expect this is something that's going to require some playtesting.
          Well I think we can do better at the start by finding out what effects we want and how long they should last, and then we can come up with a formula that fits that result. Then playtesting makes sense of course.

          for now let's just consider the 2x2 matrix:

          char level 15 (earliest a rogue can cast confuse) and 40

          monster level 15 and 40.

          four those 4 combinations what should the chance of success be, and how long should the duration be?

          Then we can come up with a formula that fits those 4 points somewhat well, and we can extrapolate to all other values to see how well it does across the whole spectrum.

          Comment

          • Derakon
            Prophet
            • Dec 2009
            • 9022

            #6
            Originally posted by fizzix
            four those 4 combinations what should the chance of success be, and how long should the duration be?
            Okay...

            rogue 15 / orc 15: rogues are bad at casting (in particular, most rogues do not have good INT stats at this level), so even if this is a comparatively easy spell, I wouldn't expect them to be very good at it. So this combination should have a high chance of success.

            rogue 40 / orc 15: maximum success rate. Personally I say that means 100%, but I know some people prefer to always have some minute chance of failure. Even then I wouldn't put it lower than 98%.

            rogue 15 / orc 40: what are you doing rogue. Please stop. If you're in this situation, you've already done many things wrong, and I'm not convinced you should reasonably be able to lean on Confuse to save you. In particular, this pair sets the floor for the next pair. Call it 5%?

            rogue 40 / orc 40: At this point, most significant fights are one-on-one with single nasty enemies, and the rogue can afford to cast Confuse more or less indefinitely. Making the spell reliably effective would probably make it overpowered given its debilitating effect on monsters. I wouldn't put it higher than 33%.

            Comment

            • wobbly
              Prophet
              • May 2012
              • 2629

              #7
              From my perspective a mechanic like confusion becomes more interesting if it's not a straight level calculation. For instance if a troll is tough but easy to confuse/sleep you can bring them in sooner as the warrior can tank them & the rogue/mage can confuse/sleep them. The priest needs an answer (though maybe detect evil & light wands is enough?). While there's probably too many enemies to give them all will values something like an easy_confuse flag on big, tough, dumb creatures? Anyways, just an idea.

              Comment

              • Nick
                Vanilla maintainer
                • Apr 2007
                • 9634

                #8
                This is an awesome thread. Without getting into the detail, here are a couple of things that spring to mind:
                • Given monster status effects are close to useless currently, improvements are going to give more power to the player. That's fine, but we need to keep in mind that we've done that and give the monsters something in return (and I have plenty of ideas for that )
                • wobbly's idea makes me think monsters need more personality. Currently we have smart or dumb monsters, and a bunch of bans on status effects; variants like O also have a spell power which is independent of monster level. I'd like to redo that as having personality attributes, which combine to affect things like cleverness and power of spellcasting, resistance to status effects, etc.
                One for the Dark Lord on his dark throne
                In the Land of Mordor where the Shadows lie.

                Comment

                • Nomad
                  Knight
                  • Sep 2010
                  • 958

                  #9
                  Originally posted by wobbly
                  While there's probably too many enemies to give them all will values something like an easy_confuse flag on big, tough, dumb creatures? Anyways, just an idea.
                  You could give the monster types in monster_base vulnerability (and resistance?) flags for the various different status effects - EASY_CONF, EASY_SLEEP, EASY_SCARE, etc. Could add a bit of an interesting tactical element if individual status effects reliably work on specific groups of monsters. Maybe hounds are easily scared, trolls are easily confused, giants are easily slowed, dragons are easily put to sleep, etc.

                  Comment

                  • Estie
                    Veteran
                    • Apr 2008
                    • 2347

                    #10
                    Another use for status effect not mentioned is to reduce the amount of monsters acting against you. For example, sleep a room full of orcs and fight one at a time.

                    In Angband, this isnt a very powerfull ability since monsters start out sleeping and if many are awake, you leave the level rather than put them to sleep again. Also, fighting in bottlenecks makes maintaining a 1v1 situation easy.

                    I dont really see great potential for confusion, unless maybe for a mage or other ranged attacker. The random movement is going to make any melee combat awkward and long, certainly not something that should become the default mode of fighting ? Slow seems like a much preferred debuff for the melee fighter.

                    The problem with all this is that the premise is wrong: there is very little incentive to kill tough monsters. Inventing elaborate ways for fighting previously unkillable monsters is fine, but there also has to be a good reason to bother.

                    For example, take Ithangast. Typically my encounters with him proceed as follows:

                    The first times I see/detect him his breath would 1-hit me and I stay away as much as possible. When my hit points catch up, he still is fast and while I could suvive a round or two, it would be foolish to fight him yet. Later, assuming I am fast and have fire resistance, I could kill him, but would use many potions and lose half of my consumables to his fire, so I dont.
                    If I happen to have a source of double fire resist, this might change.

                    But note that I do not devote 2 slots for stacks of resist fire/cold potions, because inventory space is too precious. While this is a buff and not a debuff, it is still an indicator of how little worth the ability to fight tougher monsters has.

                    Eventually, when he has become a walkover fight, I kill him and profit from increased quality of his drop due to lower dungeon level.

                    So if you want to introduce more powerfull debuffs, it seems to me you first need to shift the reward away from depth more towards monster drops.

                    Lastly, there is one debuff which isnt in the game but would be very usefull: an effect that reduces damage, either all damage or at least breath damage, to get out of 1-hit land more easily. Maybe call it "debilitation" and have the afflicted creatures damage reduced by 1/3, with a short but fixed duration if it works - no randomness here as that would make the effect basically useless. Of course, the monsters are also entitled to use it on @.

                    Comment

                    • fizzix
                      Prophet
                      • Aug 2009
                      • 3025

                      #11
                      Originally posted by Estie
                      Another use for status effect not mentioned is to reduce the amount of monsters acting against you. For example, sleep a room full of orcs and fight one at a time.

                      In Angband, this isnt a very powerfull ability since monsters start out sleeping and if many are awake, you leave the level rather than put them to sleep again. Also, fighting in bottlenecks makes maintaining a 1v1 situation easy.

                      I dont really see great potential for confusion, unless maybe for a mage or other ranged attacker. The random movement is going to make any melee combat awkward and long, certainly not something that should become the default mode of fighting ? Slow seems like a much preferred debuff for the melee fighter.
                      Maybe confuse should be the way to go for ranged fighters then.

                      Originally posted by Estie
                      The problem with all this is that the premise is wrong: there is very little incentive to kill tough monsters. Inventing elaborate ways for fighting previously unkillable monsters is fine, but there also has to be a good reason to bother.

                      For example, take Ithangast. Typically my encounters with him proceed as follows:

                      The first times I see/detect him his breath would 1-hit me and I stay away as much as possible. When my hit points catch up, he still is fast and while I could suvive a round or two, it would be foolish to fight him yet. Later, assuming I am fast and have fire resistance, I could kill him, but would use many potions and lose half of my consumables to his fire, so I dont.
                      If I happen to have a source of double fire resist, this might change.
                      The problem is not that there's no incentive to kill powerful monsters. The incentive is there, especially for uniques since they have a significantly increased chance of dropping artifacts. The problem is that uniques are incredibly overstatted. And furthermore, in a game like Angband, you can always "wait until later". It's a tough problem and it makes balancing stuff like this very difficult. My thoughts usually are to try to balance around a "visit each level once" and if players want to take it slower they can.

                      We do give an extra "wait until later" incentive by improving drops at later depths. This makes sense for normal monsters, but maybe we don't want to do that for uniques.

                      Originally posted by Estie
                      Lastly, there is one debuff which isnt in the game but would be very usefull: an effect that reduces damage, either all damage or at least breath damage, to get out of 1-hit land more easily. Maybe call it "debilitation" and have the afflicted creatures damage reduced by 1/3, with a short but fixed duration if it works - no randomness here as that would make the effect basically useless. Of course, the monsters are also entitled to use it on @.
                      It exists from the player side, and is stun. I agree that this is how stun should work.

                      Comment

                      • fizzix
                        Prophet
                        • Aug 2009
                        • 3025

                        #12
                        I figure I should also answer my own question to how successful confuse should be, because I differ a bit from Derakon in one key case.

                        Clevel 15, monster 15: I think the success here should be very high, something around 80%. The reason is there's already a huge opportunity cost on the spell in that the mana pool is very limited at this point, and the spell will have a significant fail chance. We take advantage of the fact that clevel ~= dlevel up to about 20, after which it starts lagging. I think duration of about 10-15 turns is reasonable. Failure should cost a monster a turn, which means something like a 20% slop on monster succeeds but loses a turn.

                        Clevel 40, monster 15: I agree with 100%, and in fact I think you should be near 100% at clevel >= mlevel + 5. If you're using the spell in this scenario it's to provide defensive cover, since you likely can just straight up kill the monster anyway. Duration can be very long as well, 20 turns or so.

                        Clevel 15, monster 40: This situation comes up if you have a crazy OoD monster, say from a vault or something. I think success should actually be reasonable here, something like 33%. This is a last ditch effort to get away, because your teleport staff got destroyed, or Nick implemented something that nerfs the instantaneous and cheap escapes we've become so fond of. Duration should be around 10 turns, enough to hopefully get out of LoS, initiate recall or whatever. Failure may cost the monster a turn, but there's a good chance it's moving at double speed anyway.

                        Clevel 40, monster 40: 80% is fine for this as well. Clevel 40 characters are near endgame usually, while monsters at level 40 are midgame, so there's a power imbalance here. This is nice because it means whatever formula you use for clevel 15, dlevel 15 can also be used for any other clevel = dlevel value. In other words, difference in level can be the scaling factor. Duration should be longer here, 20 turns.

                        Now I can start thinking what my formula should look like. The scaling factor is the difference between character level and monster level. Duration should be based entirely on character level. At about clevel = mlevel - 15, the success should drop to around 50%, At clevel = mlevel - 30 it should be low, this is the scenario of a late midgame character (level 35) and an ancient wyrm (level ~65). Confuse should lose its utility by this point.

                        And to deal a bit with Estie's critique, I'm not at this point too worried about using it to defeat tough monsters (uniques). I'm thinking more of using it as a way to defeat at depth monsters, perhaps in a more accelerated fashion than in the past.

                        Comment

                        • Estie
                          Veteran
                          • Apr 2008
                          • 2347

                          #13
                          Well I know that I avoid erratic monsters, so I suspect that I wouldnt want to use a spell to change their movement to erratic, not if the alternative was to have them lined up in a hallway.

                          Maybe I am wrong here and it actually becomes a worthwhile debuff; if not, here is another idea:

                          Confusion disables spell casting, which is nice but niche. How about extending the disable to special attacks, so for example an Algorth´s bite wouldnt poison, a ghosts touch not drain etc while they are confused.

                          Comment

                          • fizzix
                            Prophet
                            • Aug 2009
                            • 3025

                            #14
                            @Estie: I think we should certainly discuss what exactly the effects of confusion are. You could also have it greatly lower AC, or allow a character to more likely get a critical. Confused monsters that bump into another monster can attack it. etc.

                            Anyway, I went and made a simple formula that fit the criteria I outlined above, and put it on a spreadsheet here. There's a template there in case anyone wants to play with their own formula.

                            I used about as simple a formula as I could make. It's linear with chance of success being:
                            Code:
                            ((clevel - mlevel)*2 + 80)%
                            with chance to at least lose a turn:
                            Code:
                            ((clevel - mlevel)*2 + 100)%
                            and duration given by:
                            Code:
                            ((clevel)*2/3 turns

                            Comment

                            • takkaria
                              Veteran
                              • Apr 2007
                              • 1951

                              #15
                              Originally posted by fizzix
                              and duration given by:
                              Code:
                              ((clevel)*2/3 turns
                              Is the idea still that the duration gets reduced by some factor?
                              takkaria whispers something about options. -more-

                              Comment

                              Working...
                              😀
                              😂
                              🥰
                              😘
                              🤢
                              😎
                              😞
                              😡
                              👍
                              👎