 |
|
Senior Member
|

06-05-2004
, 14:04
Problem found/fixed (Evasion skill)
|
#9
|
Ok, I managed to track down the error. I wrote a new frontend function for set_user_health() as follows:
set_user_health(id, damage, bLog, sDesc)
If bLog is true it logs the health state of id before the call to set_user_health() and then again after, and then I changed all calls to use the new function.
Using this method it didn't take long to track the error down to the Evasion skill, there appears to be some holes in the logic that allow a -1024 healthadjustment via set_user_health() which end up causing the death() event to fire with id==enemy and weapon==world, so no "Player killed Player" death message (gmsgDeathMesg) appears.
Also of note (and I also have reported this on the 4HM FT forums and Pimp has fixed them in his version), in the original code healthadjustment is an unitialized integer and there are cases in the Evasion logic where this unitialized value is used, allowing the benefactor to have an unintended godmode until the next round. In my Linux compiler the random address accessed tends to give the player 17000+ health from this assignment and no adjustments will bring it back down to size.
If you want more info let me know and I'll post some cases I have found that cause the trouble. These are fixed in the copy of Ultimate Warcraft3 I am developing ...
Mugwump
|
|
|
|