Posted: Wed Feb 11, 2004 3:58 pm
It seems my guesses about the cause of this were only partially correct. After fixing the stuff mentioned above it still didin't work. There's another problem. This is what I found with a little debugging:
AActor::DoSpecialDamage returns -1 if the player has the invulnerability powerup or MF2_INVULNERABLE. This is wrong if not in Hexen. In Doom and Heretic an invulnerable player gets the full thrust from the damage application. The damage itself is not applied but the code responsible for this check is still there in P_DamageMobj. For players in Doom and Heretic this function must always return 'damage'.
AActor::DoSpecialDamage returns -1 if the player has the invulnerability powerup or MF2_INVULNERABLE. This is wrong if not in Hexen. In Doom and Heretic an invulnerable player gets the full thrust from the damage application. The damage itself is not applied but the code responsible for this check is still there in P_DamageMobj. For players in Doom and Heretic this function must always return 'damage'.