07-17-2003, 12:33 PM
>There has been speculation over the years about the effect of fire bow damage on monster
>HP regeneration.
Hmm, I thought my Guide covered it, so I checked but could not find it. On the other hand I no longer remember everything in the guide, and even more less where in the guide things are mentioned (which makes it hopelessly complicated to update it and get it correct in all places). Did I miss it? Does anyone know where? I admit I looked in 1.61 only.
> Practically all agree that fire bow damage is âbuggyâ and erratic, and many concur that one
>hit from a fire bow will stop monster HP regeneration entirely.
Correct (as your tests verify too).
>There were SEVERAL unusual facts that turned up in the course of the tests. They are
>summarized at the very end of this report, for those who do not wish to read through all the
>verbiage. Some of them may amaze you! I know they surprised us!
All of them have easy to explain reasons though. Let me try to explain it (I doubt I manage to make easy explanations though).
>1. Fire bows do indeed stop monster hit point regeneration. Fire based spells do not. Fire
>melee weapons do not. Immolator does not. Magic based spells do not. Lightning bows do
>not. Lightning melee weapons do not. Lightning based spells do not. Sparking Mail does
>not. But fire bows do stop monster HP regeneration dead in its tracks with just one shot.
As already discussed further in this thread, the reason for the stopping is a mix-up of flags (and no, it is as far as I would say far from a feature but a big mess up, although possibly hard to understand how, at least if they used good programming practises, I would thing they simply coded direct access for a flag bit and someone screwed up instead of having some good name defined or function written to access the flags). The error (and I forgot which flag the no generation one gets mixed up with, but can check my notes) occurs in the function for the fire âmissileâ. As should be possible to find in my guide, a fire arrow (as well as lightning arrow and so on) will after dealing the physical damage set of a special effect that makes the fire attacks. It is, if I recall correctly with no code at hand, the function that handle this effect that do the mess up and sets the wrong flag. Basically we have multiple flags in work here. The attack/item has a set of flags telling it do fire damage. This flag is tested for and sets another flag on the target (but here the wrong flag is set and as I said, not sure what the actual flag to set should be). The flag set is the one for no regeneration and as pointed out, I donât think it should normally be possible to set it since the effect that do is not active. Since it supposedly tests for something else, it is no wonder it sets for fire immune monsters too and so on.
The flag for no regeneration is tested for in the regeneration routine that runs each frame. This regeneration routine handle all regeneration, including the increased one by Gargoyles and Scavengers so if skipped, that extra fast healing is skipped too. I have to check the exact nature of the code to tell why the Gargoyle wonât enter stone state though. I think it is due to never starting to heal in the fast way since that might be where it has the flag set for it, but I canât tell from reading my Guide.
Finally note that Hidden monsters do NOT regenerate any extra while running away (or after having run away). It is just a simply running away for a while and then continuing normally after that. Nothing extra occurs during this.
> (Note: Stone Curse does not stop HP regeneration in monsters that have not sustained
>Fire-Bow damage.)
Yes, Stone Cursed monsters continue to heal. Perhaps I should add a note on it in the Guide if it is not there.
>After many minutes and nearly all my pots had passed, I exited the level via my TP to buy
>some more pots. When I returned to the level, the Spitterâs HPs began to regenerate
>immediately and rapidly, shooting up to 215 in the time it took me to get off the first
>screenie.
Yes, this is natural if one knows how the game store away inactive levels. See more below.
>3. Hidden of all types, including Illusion Weavers, when damaged take off running and
>disappear to "heal".
Thus not completely correct, they just run a way and continue to heal normally, unless stopped by a fire arrow of course.
>The same may be true of Gargoyles, when they land and sit down to speed regeneration. It
>seems probable that, having sustained fire-bow damage, they would not regenerate after
>sitting to heal, but once fire-bow damage is sustained by Gargoyles and HP regeneration
>stops, they NO LONGER SIT DOWN TO HEAL.
I suspect (but as I said, canât remember and have to check the code), that they actually donât sit down to heal, but rather when starting to heal, they turn into stone and sit down. That would explain this. For Scavengers it might be the other way around. It would be an issue of how their AI is coded and it differs quite a bit on those two cases I think.
>4. When there are two players on the same level and one player damages a foe with a fire-
>bow and then leaves the level, the HPS seen by the player remaining on the level stay the
>same as when the last fire-bow shot was loosed. When the player who damaged the foe
>with the fire-bow returns to the level, the damaged monster will begin regenerating its hit
>points on the returning playerâs screen, but ONLY FOR the player who did the damage,
>then left and re-entered the level. The damaged monsterâs HPs stayed the same for the
>player who remained on the level the entire time.
Yes, this has to do with how the game is actually run separately on each playerâs computer and how it doesnât synch much data in-between them. In addition, it has to do with how the game store inactive levels (which happens individually for each player as they leave and enter levels, that is, each players computer only has the level that player is on as active. Again, see more below.
By the way, differing HP should exist for monsters NOT affected by the no regeneration bug too. I donât think the game synch HP (as is evident by your test), and hence similar result is possible for any monster. Normally this is not noticeable though since most monsters would be at either full HP or dead.
>Finally, we added a THIRD party to the equation. This was Attikaâs clvl 50 mage, Esau,
>armed with Dreamflange.
Something you do not mention and perhaps did not think about or remember, is, who of the first two players where in the first slot and hence the âholderâ of the game? I believe that when someone joins a game, the data is sort of synched with that playerâs info. It might be that the HP is not synched and only if monsters are dead and their position are (seems plausible since that is what is saved in inactive levels and probably what is sent). Then newly arrived players would always act as if they went for town. Hmm, interesting thing to check for.
>As an aside, I fire-bow shot a foe down to sub-10 hit points remaining, then left the level &
>returned. Next Tris ONE SHOT KILLED the foe and got the ENTIRE experience due to the
>kill, while I got NO experience, even though I did the lion's share of the work! Thereâs no
>justice!
This should be mentioned in my guide and should give a clue to why the thing with regeneration messes up even though the technicalities of it is not explained.
When the game turns a level inactive, it stores away only some variable data of it. The programmers obviously forgot some of that data, namely the flag register. It holds among other things what players should get exp for a monster and various states of monsters, like the no regeneration and also the âstateâ such as in stone mode if I recall correctly (that is why all gargoyles in a level you return to is up flying ant not in stone state, the flag indicating that was not saved!!). This is obviously a bug that should be relatively easy to fix in my opinion although it requires changes of data structures and thus not easily done in a mod but not to hard by Blizzard. It explains all the strange things you have seen as well as many others (the bug is similar to the one that caused the famous Bone Wall bug in Diablo II, that also had a flag go âpoffâ when storing away an inactive area of the dungeon).
>5. The fire-bow does not do the buggy fire-damage to fire immune monsters, just to fire
>resistant or no resistance monsters. We tested this by firing a standard Hunters Bow and
>Flamedart at multiple Advocate opponents in Hell difficulty.
Yeah, the effect otherwise works properly. It is when in the end testing for the flags it messes up. Now that I think more about it, I think I remember. It SHOULD have tested for the flag indicating the âno healingâ on the item/player attacking (as that is what is done for the lighting arrow for example) and then set the no generation flag. Instead it goofed and checked for a flag indicating it is a fire attack. Oh well.
>Elemental fire bows are the only weapons that stop monster hit point regeneration. They will
>do this even for monsters that flee from battle to "regenerate" points (Hidden, Gargoyles
>and Scavengers were tested.)
See above for Hidden. And yes, those special regenerations are just a boosted variant of the normal handled by the same code. It is all either skipped or not.
>Fire-elemental bows stop monster hit point regeneration in ALL monsters, including FIRE
>IMMUNE monsters, Diablo, and presumably all BOSSES though we are unable to fully
>verify this in Bosses. I suppose the one hit kill rule would prove this point, if it were possible
>to recreate the same boss over and over to measure the number of shots it took each
>player to kill the creature once fire-bow damage had been dealt. Hmmm ⦠Maybe the
>Butcher â¦
Should work for bosses *IF* they were meant to be able to get the no heal effect. It might be that the game doesnât allow that. Diablo could thus be flagged as non boss although I really donât remember if that was so in D1 or something for D2 where such thing as bosses not flagged as bosses is more common.
>And there you have it! My first ever real strategy post, and probably my last.
Well, it was a good one, so you really should do more of them :) I will see if I can find anything that is unclear or not mentioned in my Guide that might need updating.
>HP regeneration.
Hmm, I thought my Guide covered it, so I checked but could not find it. On the other hand I no longer remember everything in the guide, and even more less where in the guide things are mentioned (which makes it hopelessly complicated to update it and get it correct in all places). Did I miss it? Does anyone know where? I admit I looked in 1.61 only.
> Practically all agree that fire bow damage is âbuggyâ and erratic, and many concur that one
>hit from a fire bow will stop monster HP regeneration entirely.
Correct (as your tests verify too).
>There were SEVERAL unusual facts that turned up in the course of the tests. They are
>summarized at the very end of this report, for those who do not wish to read through all the
>verbiage. Some of them may amaze you! I know they surprised us!
All of them have easy to explain reasons though. Let me try to explain it (I doubt I manage to make easy explanations though).
>1. Fire bows do indeed stop monster hit point regeneration. Fire based spells do not. Fire
>melee weapons do not. Immolator does not. Magic based spells do not. Lightning bows do
>not. Lightning melee weapons do not. Lightning based spells do not. Sparking Mail does
>not. But fire bows do stop monster HP regeneration dead in its tracks with just one shot.
As already discussed further in this thread, the reason for the stopping is a mix-up of flags (and no, it is as far as I would say far from a feature but a big mess up, although possibly hard to understand how, at least if they used good programming practises, I would thing they simply coded direct access for a flag bit and someone screwed up instead of having some good name defined or function written to access the flags). The error (and I forgot which flag the no generation one gets mixed up with, but can check my notes) occurs in the function for the fire âmissileâ. As should be possible to find in my guide, a fire arrow (as well as lightning arrow and so on) will after dealing the physical damage set of a special effect that makes the fire attacks. It is, if I recall correctly with no code at hand, the function that handle this effect that do the mess up and sets the wrong flag. Basically we have multiple flags in work here. The attack/item has a set of flags telling it do fire damage. This flag is tested for and sets another flag on the target (but here the wrong flag is set and as I said, not sure what the actual flag to set should be). The flag set is the one for no regeneration and as pointed out, I donât think it should normally be possible to set it since the effect that do is not active. Since it supposedly tests for something else, it is no wonder it sets for fire immune monsters too and so on.
The flag for no regeneration is tested for in the regeneration routine that runs each frame. This regeneration routine handle all regeneration, including the increased one by Gargoyles and Scavengers so if skipped, that extra fast healing is skipped too. I have to check the exact nature of the code to tell why the Gargoyle wonât enter stone state though. I think it is due to never starting to heal in the fast way since that might be where it has the flag set for it, but I canât tell from reading my Guide.
Finally note that Hidden monsters do NOT regenerate any extra while running away (or after having run away). It is just a simply running away for a while and then continuing normally after that. Nothing extra occurs during this.
> (Note: Stone Curse does not stop HP regeneration in monsters that have not sustained
>Fire-Bow damage.)
Yes, Stone Cursed monsters continue to heal. Perhaps I should add a note on it in the Guide if it is not there.
>After many minutes and nearly all my pots had passed, I exited the level via my TP to buy
>some more pots. When I returned to the level, the Spitterâs HPs began to regenerate
>immediately and rapidly, shooting up to 215 in the time it took me to get off the first
>screenie.
Yes, this is natural if one knows how the game store away inactive levels. See more below.
>3. Hidden of all types, including Illusion Weavers, when damaged take off running and
>disappear to "heal".
Thus not completely correct, they just run a way and continue to heal normally, unless stopped by a fire arrow of course.
>The same may be true of Gargoyles, when they land and sit down to speed regeneration. It
>seems probable that, having sustained fire-bow damage, they would not regenerate after
>sitting to heal, but once fire-bow damage is sustained by Gargoyles and HP regeneration
>stops, they NO LONGER SIT DOWN TO HEAL.
I suspect (but as I said, canât remember and have to check the code), that they actually donât sit down to heal, but rather when starting to heal, they turn into stone and sit down. That would explain this. For Scavengers it might be the other way around. It would be an issue of how their AI is coded and it differs quite a bit on those two cases I think.
>4. When there are two players on the same level and one player damages a foe with a fire-
>bow and then leaves the level, the HPS seen by the player remaining on the level stay the
>same as when the last fire-bow shot was loosed. When the player who damaged the foe
>with the fire-bow returns to the level, the damaged monster will begin regenerating its hit
>points on the returning playerâs screen, but ONLY FOR the player who did the damage,
>then left and re-entered the level. The damaged monsterâs HPs stayed the same for the
>player who remained on the level the entire time.
Yes, this has to do with how the game is actually run separately on each playerâs computer and how it doesnât synch much data in-between them. In addition, it has to do with how the game store inactive levels (which happens individually for each player as they leave and enter levels, that is, each players computer only has the level that player is on as active. Again, see more below.
By the way, differing HP should exist for monsters NOT affected by the no regeneration bug too. I donât think the game synch HP (as is evident by your test), and hence similar result is possible for any monster. Normally this is not noticeable though since most monsters would be at either full HP or dead.
>Finally, we added a THIRD party to the equation. This was Attikaâs clvl 50 mage, Esau,
>armed with Dreamflange.
Something you do not mention and perhaps did not think about or remember, is, who of the first two players where in the first slot and hence the âholderâ of the game? I believe that when someone joins a game, the data is sort of synched with that playerâs info. It might be that the HP is not synched and only if monsters are dead and their position are (seems plausible since that is what is saved in inactive levels and probably what is sent). Then newly arrived players would always act as if they went for town. Hmm, interesting thing to check for.
>As an aside, I fire-bow shot a foe down to sub-10 hit points remaining, then left the level &
>returned. Next Tris ONE SHOT KILLED the foe and got the ENTIRE experience due to the
>kill, while I got NO experience, even though I did the lion's share of the work! Thereâs no
>justice!
This should be mentioned in my guide and should give a clue to why the thing with regeneration messes up even though the technicalities of it is not explained.
When the game turns a level inactive, it stores away only some variable data of it. The programmers obviously forgot some of that data, namely the flag register. It holds among other things what players should get exp for a monster and various states of monsters, like the no regeneration and also the âstateâ such as in stone mode if I recall correctly (that is why all gargoyles in a level you return to is up flying ant not in stone state, the flag indicating that was not saved!!). This is obviously a bug that should be relatively easy to fix in my opinion although it requires changes of data structures and thus not easily done in a mod but not to hard by Blizzard. It explains all the strange things you have seen as well as many others (the bug is similar to the one that caused the famous Bone Wall bug in Diablo II, that also had a flag go âpoffâ when storing away an inactive area of the dungeon).
>5. The fire-bow does not do the buggy fire-damage to fire immune monsters, just to fire
>resistant or no resistance monsters. We tested this by firing a standard Hunters Bow and
>Flamedart at multiple Advocate opponents in Hell difficulty.
Yeah, the effect otherwise works properly. It is when in the end testing for the flags it messes up. Now that I think more about it, I think I remember. It SHOULD have tested for the flag indicating the âno healingâ on the item/player attacking (as that is what is done for the lighting arrow for example) and then set the no generation flag. Instead it goofed and checked for a flag indicating it is a fire attack. Oh well.
>Elemental fire bows are the only weapons that stop monster hit point regeneration. They will
>do this even for monsters that flee from battle to "regenerate" points (Hidden, Gargoyles
>and Scavengers were tested.)
See above for Hidden. And yes, those special regenerations are just a boosted variant of the normal handled by the same code. It is all either skipped or not.
>Fire-elemental bows stop monster hit point regeneration in ALL monsters, including FIRE
>IMMUNE monsters, Diablo, and presumably all BOSSES though we are unable to fully
>verify this in Bosses. I suppose the one hit kill rule would prove this point, if it were possible
>to recreate the same boss over and over to measure the number of shots it took each
>player to kill the creature once fire-bow damage had been dealt. Hmmm ⦠Maybe the
>Butcher â¦
Should work for bosses *IF* they were meant to be able to get the no heal effect. It might be that the game doesnât allow that. Diablo could thus be flagged as non boss although I really donât remember if that was so in D1 or something for D2 where such thing as bosses not flagged as bosses is more common.
>And there you have it! My first ever real strategy post, and probably my last.
Well, it was a good one, so you really should do more of them :) I will see if I can find anything that is unclear or not mentioned in my Guide that might need updating.
There are three types of people in the world. Those who can count and those who can't.