|
|
|
|
@ -10,6 +10,9 @@
|
|
|
|
|
#include "control.h" |
|
|
|
|
#include "cursor.h" |
|
|
|
|
#include "dead.h" |
|
|
|
|
#ifdef _DEBUG |
|
|
|
|
#include "debug.h" |
|
|
|
|
#endif |
|
|
|
|
#include "engine/cel_header.hpp" |
|
|
|
|
#include "engine/load_file.hpp" |
|
|
|
|
#include "engine/random.hpp" |
|
|
|
|
@ -265,13 +268,12 @@ bool MonsterMHit(int pnum, int m, int mindam, int maxdam, int dist, int t, bool
|
|
|
|
|
if (CheckMonsterHit(monster, &ret)) |
|
|
|
|
return ret; |
|
|
|
|
|
|
|
|
|
if (hit >= hper) { |
|
|
|
|
#ifdef _DEBUG |
|
|
|
|
if (hit >= hper && !debug_mode_key_inverted_v && !debug_mode_dollar_sign) |
|
|
|
|
return false; |
|
|
|
|
#else |
|
|
|
|
if (hit >= hper) |
|
|
|
|
return false; |
|
|
|
|
if (!DebugGodMode) |
|
|
|
|
#endif |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
int dam; |
|
|
|
|
if (t == MIS_BONESPIRIT) { |
|
|
|
|
@ -994,44 +996,44 @@ bool MonsterTrapHit(int m, int mindam, int maxdam, int dist, int t, bool shift)
|
|
|
|
|
if (CheckMonsterHit(monster, &ret)) { |
|
|
|
|
return ret; |
|
|
|
|
} |
|
|
|
|
if (hit >= hper && monster._mmode != MM_STONE) { |
|
|
|
|
#ifdef _DEBUG |
|
|
|
|
if (hit < hper || debug_mode_dollar_sign || debug_mode_key_inverted_v || monster._mmode == MM_STONE) { |
|
|
|
|
#else |
|
|
|
|
if (hit < hper || monster._mmode == MM_STONE) { |
|
|
|
|
if (!DebugGodMode) |
|
|
|
|
#endif |
|
|
|
|
int dam = mindam + GenerateRnd(maxdam - mindam + 1); |
|
|
|
|
if (!shift) |
|
|
|
|
dam <<= 6; |
|
|
|
|
if (resist) |
|
|
|
|
monster._mhitpoints -= dam / 4; |
|
|
|
|
else |
|
|
|
|
monster._mhitpoints -= dam; |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
int dam = mindam + GenerateRnd(maxdam - mindam + 1); |
|
|
|
|
if (!shift) |
|
|
|
|
dam <<= 6; |
|
|
|
|
if (resist) |
|
|
|
|
monster._mhitpoints -= dam / 4; |
|
|
|
|
else |
|
|
|
|
monster._mhitpoints -= dam; |
|
|
|
|
#ifdef _DEBUG |
|
|
|
|
if (debug_mode_dollar_sign || debug_mode_key_inverted_v) |
|
|
|
|
monster._mhitpoints = 0; |
|
|
|
|
if (DebugGodMode) |
|
|
|
|
monster._mhitpoints = 0; |
|
|
|
|
#endif |
|
|
|
|
if (monster._mhitpoints >> 6 <= 0) { |
|
|
|
|
if (monster._mmode == MM_STONE) { |
|
|
|
|
M_StartKill(m, -1); |
|
|
|
|
monster.Petrify(); |
|
|
|
|
} else { |
|
|
|
|
M_StartKill(m, -1); |
|
|
|
|
} |
|
|
|
|
if (monster._mhitpoints >> 6 <= 0) { |
|
|
|
|
if (monster._mmode == MM_STONE) { |
|
|
|
|
M_StartKill(m, -1); |
|
|
|
|
monster.Petrify(); |
|
|
|
|
} else { |
|
|
|
|
if (resist) { |
|
|
|
|
PlayEffect(monster, 1); |
|
|
|
|
} else if (monster._mmode == MM_STONE) { |
|
|
|
|
if (m > MAX_PLRS - 1) |
|
|
|
|
M_StartHit(m, -1, dam); |
|
|
|
|
monster.Petrify(); |
|
|
|
|
} else { |
|
|
|
|
if (m > MAX_PLRS - 1) |
|
|
|
|
M_StartHit(m, -1, dam); |
|
|
|
|
} |
|
|
|
|
M_StartKill(m, -1); |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
if (resist) { |
|
|
|
|
PlayEffect(monster, 1); |
|
|
|
|
} else if (monster._mmode == MM_STONE) { |
|
|
|
|
if (m > MAX_PLRS - 1) |
|
|
|
|
M_StartHit(m, -1, dam); |
|
|
|
|
monster.Petrify(); |
|
|
|
|
} else { |
|
|
|
|
if (m > MAX_PLRS - 1) |
|
|
|
|
M_StartHit(m, -1, dam); |
|
|
|
|
} |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
return false; |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
bool PlayerMHit(int pnum, MonsterStruct *monster, int dist, int mind, int maxd, int mtype, bool shift, int earflag, bool *blocked) |
|
|
|
|
@ -1054,7 +1056,7 @@ bool PlayerMHit(int pnum, MonsterStruct *monster, int dist, int mind, int maxd,
|
|
|
|
|
|
|
|
|
|
int hit = GenerateRnd(100); |
|
|
|
|
#ifdef _DEBUG |
|
|
|
|
if (debug_mode_dollar_sign || debug_mode_key_inverted_v) |
|
|
|
|
if (DebugGodMode) |
|
|
|
|
hit = 1000; |
|
|
|
|
#endif |
|
|
|
|
int hper = 40; |
|
|
|
|
|