I just killed a Black Wraith (which moves "quickly"). I was at speed +11. After my first shot of firebolt, the wraith took *two* steps towards me in one turn. WTF?! I remember reading about small variations in speed given to monsters, is that what this is? I died in the last game from a wraith double moving me when I was supposedly hasted enough to be on par with it, each time taking a full strength curse attack.
Monster speed variations?
Collapse
X
-
Normal monsters can get +/- 1 speed, fast monsters +/-2, very fast monsters +/-3. Uniques move at regular speed without variation. -
Comment
-
There was also a bug in the code that got fixed very recently. Monsters with more energy were not acting first, so they could get a double move, even if their speed was lower.PWMAngband variant maintainer - check https://github.com/draconisPW/PWMAngband (or http://www.mangband.org/forum/viewforum.php?f=9) to learn more about this new variant!Comment
-
The wraith was asleep when I attacked it. In response to my attack it took two steps towards me.
It was not hasted from a shrieker -- I had just arrived on the level, and have Legendary stealth.
It is possible that it had +12 speed then. I had +11 speed. I presume that means that a monster will once every (10 <= x <= 20?) turns get a double move. Does that extra-energy bug include sleeping monsters?Comment
-
That bug is fixed in 4.0.3.
In addition, this bug had no effect when the monster energy/turn is a divider of 100; that means, it had no effect for monsters with speed +0 and +10.
Against monsters with speed +20 it didn't happen if the player has speed +24 or more.
So it mainly happened in the final fight against Morgoth.Comment
-
That bug is fixed in 4.0.3.
In addition, this bug had no effect when the monster energy/turn is a divider of 100; that means, it had no effect for monsters with speed +0 and +10.
Against monsters with speed +20 it didn't happen if the player has speed +24 or more.
So it mainly happened in the final fight against Morgoth.
The interesting take-away is that one must be several speed points higher than "normal", "quickly", "very quickly" (+0/+10/+20) monsters to make sure that monsters with a max attack of >= HP/2 can't wipe you out with a double move.Comment
-
Starting as soon as you enter the level. Sleeping monsters still get turns, they just don't do anything with them except wake up a little.Comment
-
Comment
-
I still don't quite get how energy and turns and speed all work. Does a sleeping monster who is just a few speed points faster than me "build up" energy and spend it on double moves right when I attack it? Or is its energy cycling around in a modular loop and I have say a 5% chance (for 1 point of speed difference, say +11 vs. +12) in any given turn for the double-move to occur, and I just happened to "be lucky" and experienced it in on the wraith's first awake turn?Comment
-
I still don't quite get how energy and turns and speed all work. Does a sleeping monster who is just a few speed points faster than me "build up" energy and spend it on double moves right when I attack it? Or is its energy cycling around in a modular loop and I have say a 5% chance (for 1 point of speed difference, say +11 vs. +12) in any given turn for the double-move to occur, and I just happened to "be lucky" and experienced it in on the wraith's first awake turn?
Code:If monster is asleep: monster becomes a bit more awake, based on distance from player and player's stealth otherwise: monster takes an action (move, cast a spell, etc.) monster's energy is reduced by 100
Monsters and the player do not have independent loops; they're both slaves to the game clock. Each game turn, the game assigns energy to every actor based on that actor's speed rating. Then, if the player has at least 100 energy, they get a turn; then all monsters that have at least 100 energy get turns. In order for a monster to get a double turn, then, they must have 100 energy, get a turn, and then return to 100 energy before you do.
In short, you just got lucky. Congratulations!Comment
-
Sleeping or awake, monsters gain energy based on their speed, same as the player. When they reach 100 energy, they get a turn. Every time the monster gets a turn, this happens:
Code:If monster is asleep: monster becomes a bit more awake, based on distance from player and player's stealth otherwise: monster takes an action (move, cast a spell, etc.) monster's energy is reduced by 100
Monsters and the player do not have independent loops; they're both slaves to the game clock. Each game turn, the game assigns energy to every actor based on that actor's speed rating. Then, if the player has at least 100 energy, they get a turn; then all monsters that have at least 100 energy get turns. In order for a monster to get a double turn, then, they must have 100 energy, get a turn, and then return to 100 energy before you do.
In short, you just got lucky. Congratulations!Comment
-
Monsters I believe are given randomized amounts of energy when they are created, to avoid excessive clumping of monster turns. I admit I haven't looked at this code in a very long time though, and certainly not since 4.0 went through and rewrote everything.Comment
-
It wasn't guaranteed in older versions. Only thing that was guaranteed was that monsters with FORCE_SLEEP flag can't use their distance attacks until player had his first turn. I once nearly died by descending next to death mold. It got at least two, maybe three turns before I could do anything.Comment
Comment