diff --git a/Source/monster.cpp b/Source/monster.cpp index 5a87c474f..97bcf4062 100644 --- a/Source/monster.cpp +++ b/Source/monster.cpp @@ -1352,7 +1352,7 @@ void M_Enemy(int i) int mi, pnum; int dist, best_dist; int _menemy; - BOOL sameroom, bestsameroom; + DIABOOL sameroom, bestsameroom; MonsterStruct *Monst; BYTE enemyx, enemyy; @@ -1360,14 +1360,28 @@ void M_Enemy(int i) best_dist = -1; bestsameroom = 0; Monst = &monster[i]; - if (!(Monst->_mFlags & MFLAG_GOLEM)) { + if ( +#ifdef HELLFIRE + Monst->_mFlags & MFLAG_BERSERK || +#endif + !(Monst->_mFlags & MFLAG_GOLEM)) { for (pnum = 0; pnum < MAX_PLRS; pnum++) { - if (!plr[pnum].plractive || currlevel != plr[pnum].plrlevel || plr[pnum]._pLvlChanging || (plr[pnum]._pHitPoints == 0 && gbMaxPlayers != 1)) + if (!plr[pnum].plractive || currlevel != plr[pnum].plrlevel || plr[pnum]._pLvlChanging +#ifdef HELLFIRE + || ((plr[pnum]._pHitPoints >> 6) == 0) +#else + || (plr[pnum]._pHitPoints == 0 && gbMaxPlayers != 1) +#endif + ) continue; +#ifdef HELLFIRE + sameroom = (dTransVal[Monst->_mx][Monst->_my] == dTransVal[plr[pnum]._px][plr[pnum]._py]); +#else if (dTransVal[Monst->_mx][Monst->_my] == dTransVal[plr[pnum]._px][plr[pnum]._py]) sameroom = TRUE; else sameroom = FALSE; +#endif if (abs(Monst->_mx - plr[pnum]._px) > abs(Monst->_my - plr[pnum]._py)) dist = Monst->_mx - plr[pnum]._px; else @@ -1389,13 +1403,25 @@ void M_Enemy(int i) mi = monstactive[j]; if (mi == i) continue; +#ifdef HELLFIRE + if (!((monster[mi]._mhitpoints >> 6) > 0)) + continue; +#endif if (monster[mi]._mx == 1 && monster[mi]._my == 0) continue; if (M_Talker(mi) && monster[mi].mtalkmsg) continue; - if (!(Monst->_mFlags & MFLAG_GOLEM) - && ((abs(monster[mi]._mx - Monst->_mx) >= 2 || abs(monster[mi]._my - Monst->_my) >= 2) && !M_Ranged(i) - || (!(Monst->_mFlags & MFLAG_GOLEM) && !(monster[mi]._mFlags & MFLAG_GOLEM)))) { + if ((!(Monst->_mFlags & MFLAG_GOLEM) +#ifdef HELLFIRE + && !(Monst->_mFlags & MFLAG_BERSERK) +#endif + && (abs(monster[mi]._mx - Monst->_mx) >= 2 || abs(monster[mi]._my - Monst->_my) >= 2) + && !M_Ranged(i)) + || (!(Monst->_mFlags & MFLAG_GOLEM) +#ifdef HELLFIRE + && !(Monst->_mFlags & MFLAG_BERSERK) +#endif + && !(monster[mi]._mFlags & MFLAG_GOLEM))) { continue; } sameroom = dTransVal[Monst->_mx][Monst->_my] == dTransVal[monster[mi]._mx][monster[mi]._my];