From 5cc5661676173f2b20382c70f1f3bf5909b06df3 Mon Sep 17 00:00:00 2001 From: Anders Jenbo Date: Sun, 25 Nov 2018 00:24:58 +0100 Subject: [PATCH] Clean up MAI_SkelBow --- Source/monster.cpp | 82 +++++++++++++++++----------------------------- 1 file changed, 30 insertions(+), 52 deletions(-) diff --git a/Source/monster.cpp b/Source/monster.cpp index b1a82a175..7748bf88a 100644 --- a/Source/monster.cpp +++ b/Source/monster.cpp @@ -3887,65 +3887,43 @@ void __fastcall MAI_Bat(int i) void __fastcall MAI_SkelBow(int i) { - int v1; // esi - MonsterStruct *v2; // esi - int v3; // edi - int v4; // ebx - int v5; // eax - int v7; // eax - //int v8; // ST04_4 - int v9; // ecx - int v10; // eax - //int v11; // ST04_4 - int v12; // eax - //int v13; // eax - int v14; // edi - int v15; // ebx - //int v16; // eax - int v17; // [esp+4h] [ebp-10h] - bool v18; // [esp+8h] [ebp-Ch] - int v19; // [esp+Ch] [ebp-8h] - int arglist; // [esp+10h] [ebp-4h] + MonsterStruct *Monst; + int mx, my, md, v; + BOOL walking; - v18 = 0; - v1 = i; - arglist = i; + walking = FALSE; if ((DWORD)i >= MAXMONSTERS) TermMsg("MAI_SkelBow: Invalid monster %d", i); - v2 = &monster[v1]; - if (v2->_mmode == MM_STAND && v2->_msquelch) { - v3 = v2->_mx - (unsigned char)v2->_menemyx; - v4 = v2->_my - (unsigned char)v2->_menemyy; - v5 = M_GetDir(arglist); - v17 = v5; - v2->_mdir = v5; - v19 = random(110, 100); - v7 = abs(v3); - //v9 = v8; - if (v7 < 4) { - v10 = abs(v4); - //v9 = v11; - if (v10 < 4) { - if ((v9 = v2->_mVar2, v9 > 20) && v19 < 2 * (unsigned char)v2->_mint + 13 - || ((v12 = v2->_mVar1, v12 == 1) || v12 == 2 || v12 == 3) - && !v9 - && v19 < 2 * (unsigned char)v2->_mint + 63) { - //_LOBYTE(v13) = M_DumbWalk(arglist, opposite[v17]); - v18 = M_DumbWalk(arglist, opposite[v17]); - } + + Monst = &monster[i]; + if (Monst->_mmode == MM_STAND && Monst->_msquelch) { + mx = Monst->_mx - Monst->_menemyx; + my = Monst->_my - Monst->_menemyy; + + md = M_GetDir(i); + Monst->_mdir = md; + v = random(110, 100); + + if (abs(mx) < 4 && abs(my) < 4) { + if (Monst->_mVar2 > 20 && v < 2 * Monst->_mint + 13 + || (Monst->_mVar1 == 1 || Monst->_mVar1 == 2 || Monst->_mVar1 == 3) + && !Monst->_mVar2 + && v < 2 * Monst->_mint + 63) { + walking = M_DumbWalk(i, opposite[md]); } } - v14 = (unsigned char)v2->_menemyx; - v15 = (unsigned char)v2->_menemyy; - if (!v18) { - if (random(110, 100) < 2 * (unsigned char)v2->_mint + 3) { - //_LOBYTE(v16) = LineClear(v2->_mx, v2->_my, v14, v15); - if (LineClear(v2->_mx, v2->_my, v14, v15)) - M_StartRAttack(arglist, MIS_ARROW, 4); + + mx = Monst->_menemyx; + my = Monst->_menemyy; + if (!walking) { + if (random(110, 100) < 2 * Monst->_mint + 3) { + if (LineClear(Monst->_mx, Monst->_my, mx, my)) + M_StartRAttack(i, MIS_ARROW, 4); } } - if (v2->_mmode == MM_STAND) - v2->_mAnimData = v2->MType->Anims[MA_STAND].Data[v17]; + + if (Monst->_mmode == MM_STAND) + Monst->_mAnimData = Monst->MType->Anims[MA_STAND].Data[md]; } }