diff --git a/Source/monster.cpp b/Source/monster.cpp index 97bcf4062..0b58db43c 100644 --- a/Source/monster.cpp +++ b/Source/monster.cpp @@ -1917,18 +1917,30 @@ void SpawnLoot(int i, BOOL sendmsg) void M2MStartHit(int mid, int i, int dam) { if ((DWORD)mid >= MAXMONSTERS) { +#ifdef HELLFIRE + return; +#else app_fatal("Invalid monster %d getting hit by monster", mid); +#endif } if (monster[mid].MType == NULL) { +#ifdef HELLFIRE + return; +#else app_fatal("Monster %d \"%s\" getting hit by monster: MType NULL", mid, monster[mid].mName); +#endif } if (i >= 0) monster[i].mWhoHit |= 1 << i; delta_monster_hp(mid, monster[mid]._mhitpoints, currlevel); +#ifdef HELLFIRE + NetSendCmdMonDmg(FALSE, mid, dam); +#else NetSendCmdParam2(FALSE, CMD_MONSTDAMAGE, mid, dam); +#endif PlayEffect(mid, 1); if (monster[mid].MType->mtype >= MT_SNEAK && monster[mid].MType->mtype <= MT_ILLWEAV || dam >> 6 >= monster[mid].mLevel + 3) { @@ -1937,8 +1949,16 @@ void M2MStartHit(int mid, int i, int dam) if (monster[mid].MType->mtype == MT_BLINK) { M_Teleport(mid); - } else if (monster[mid].MType->mtype >= MT_NSCAV && monster[mid].MType->mtype <= MT_YSCAV) { + } else if (monster[mid].MType->mtype >= MT_NSCAV && monster[mid].MType->mtype <= MT_YSCAV +#ifdef HELLFIRE + || monster[mid].MType->mtype == MT_GRAVEDIG +#endif + ) { monster[mid]._mgoal = MGOAL_NORMAL; +#ifdef HELLFIRE + monster[mid]._mgoalvar1 = 0; + monster[mid]._mgoalvar2 = 0; +#endif } if (monster[mid]._mmode != MM_STONE) { @@ -1953,6 +1973,8 @@ void M2MStartHit(int mid, int i, int dam) monster[mid]._my = monster[mid]._moldy; monster[mid]._mfutx = monster[mid]._moldx; monster[mid]._mfuty = monster[mid]._moldy; + monster[mid]._moldx = monster[mid]._mx; + monster[mid]._moldy = monster[mid]._my; M_CheckEFlag(mid); M_ClearSquares(mid); dMonster[monster[mid]._mx][monster[mid]._my] = mid + 1;