From b455cbc688378a9213f22d158909ff9730b27f1b Mon Sep 17 00:00:00 2001 From: Anders Jenbo Date: Thu, 14 Jan 2021 23:55:51 +0100 Subject: [PATCH] [hellfire] MAI_Golum --- Source/monster.cpp | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/Source/monster.cpp b/Source/monster.cpp index 91c921667..585d89d5e 100644 --- a/Source/monster.cpp +++ b/Source/monster.cpp @@ -4685,7 +4685,11 @@ void MAI_Golum(int i) BOOL have_enemy, ok; if ((DWORD)i >= MAXMONSTERS) +#ifdef HELLFIRE + return; +#else app_fatal("MAI_Golum: Invalid monster %d", i); +#endif Monst = &monster[i]; if (Monst->_mx == 1 && Monst->_my == 0) { @@ -4715,10 +4719,7 @@ void MAI_Golum(int i) _mey = my - monster[_menemy]._mfuty; md = GetDirection(mx, my, monster[_menemy]._mx, monster[_menemy]._my); monster[i]._mdir = md; - if (abs(_mex) >= 2 || abs(_mey) >= 2) { - if (have_enemy && MAI_Path(i)) - return; - } else if (have_enemy) { + if (abs(_mex) < 2 && abs(_mey) < 2 && have_enemy) { _menemy = monster[i]._menemy; monster[i]._menemyx = monster[_menemy]._mx; monster[i]._menemyy = monster[_menemy]._my; @@ -4738,22 +4739,24 @@ void MAI_Golum(int i) return; } + if (have_enemy && MAI_Path(i)) + return; + monster[i]._pathcount++; if (monster[i]._pathcount > 8) monster[i]._pathcount = 5; ok = M_CallWalk(i, plr[i]._pdir); - if (!ok) { - md = (md - 1) & 7; - for (j = 0; j < 8 && !ok; j++) { - md = (md + 1) & 7; - ok = DirOK(i, md); - } - if (!ok) { - return; - } - M_WalkDir(i, md); + if (ok) + return; + + md = (md - 1) & 7; + for (j = 0; j < 8 && !ok; j++) { + md = (md + 1) & 7; + ok = DirOK(i, md); } + if (ok) + M_WalkDir(i, md); } void MAI_SkelKing(int i)