Browse Source

Clean up MAI_Fireman (#517)

pull/25/head
Anders Jenbo 7 years ago committed by Robin Eklind
parent
commit
db801ea4fd
  1. 137
      Source/monster.cpp

137
Source/monster.cpp

@ -4047,109 +4047,62 @@ void __fastcall MAI_Sneak(int i)
void __fastcall MAI_Fireman(int i) void __fastcall MAI_Fireman(int i)
{ {
int esi1; // esi int xd, yd;
int esi3; // esi int md, pnum;
int v3; // ecx int fx, fy;
int v4; // eax MonsterStruct *Monst;
int v5; // ebx
int v6; // edi
int v7; // edx
char v9; // al
//int v10; // eax
//int v11; // eax
int v13; // eax
//int v14; // eax
int v15; // edx
//int v16; // eax
int v17; // eax
int micaster; // [esp+Ch] [ebp-14h]
int v1; // [esp+10h] [ebp-10h]
int v2; // [esp+14h] [ebp-Ch]
int midir; // [esp+18h] [ebp-8h]
int arglist; // [esp+1Ch] [ebp-4h]
esi1 = i;
arglist = i;
if ((DWORD)i >= MAXMONSTERS) if ((DWORD)i >= MAXMONSTERS)
TermMsg("MAI_Fireman: Invalid monster %d", i); TermMsg("MAI_Fireman: Invalid monster %d", i);
esi3 = esi1;
if (monster[esi3]._mmode || !monster[esi3]._msquelch) Monst = &monster[i];
if (monster[i]._mmode != MM_STAND || !Monst->_msquelch)
return; return;
v3 = (unsigned char)monster[esi3]._menemyy;
micaster = monster[esi3]._menemy; pnum = monster[i]._menemy;
v4 = (unsigned char)monster[esi3]._menemyx; fx = monster[i]._menemyx;
v2 = v3; fy = monster[i]._menemyy;
v5 = monster[esi3]._my - v3; xd = monster[i]._mx - fx;
v1 = v4; yd = monster[i]._my - fy;
v6 = monster[esi3]._mx - v4;
v7 = M_GetDir(arglist); md = M_GetDir(i);
v9 = monster[esi3]._mgoal; if (Monst->_mgoal == MGOAL_NORMAL) {
midir = v7; if (LineClear(Monst->_mx, Monst->_my, fx, fy)
switch (v9) { && AddMissile(Monst->_mx, Monst->_my, fx, fy, md, MIS_FIREMAN, pnum, i, 0, 0) != -1) {
case MGOAL_NORMAL: Monst->_mmode = MM_CHARGE;
//_LOBYTE(v10) = LineClear(monster[esi3]._mx, monster[esi3]._my, v1, v2); Monst->_mgoal = MGOAL_SHOOT;
if (!LineClear(monster[esi3]._mx, monster[esi3]._my, v1, v2) Monst->_mgoalvar1 = 0;
|| AddMissile(monster[esi3]._mx, monster[esi3]._my, v1, v2, midir, MIS_FIREMAN, micaster, arglist, 0, 0) == -1) {
break;
} }
monster[esi3]._mgoalvar1 = 0; } else if (Monst->_mgoal == MGOAL_SHOOT) {
monster[esi3]._mmode = MM_CHARGE; if (Monst->_mgoalvar1 == 3) {
goto LABEL_18; Monst->_mgoal = MGOAL_NORMAL;
case MGOAL_SHOOT: M_StartFadeout(i, md, TRUE);
if (monster[esi3]._mgoalvar1 == 3) { } else if (LineClear(Monst->_mx, Monst->_my, fx, fy)) {
_LOBYTE(monster[esi3]._mgoal) = MGOAL_NORMAL; M_StartRAttack(i, MIS_KRULL, 4);
M_StartFadeout(arglist, v7, TRUE); Monst->_mgoalvar1++;
} else { } else {
//_LOBYTE(v11) = LineClear(monster[esi3]._mx, monster[esi3]._my, v1, v2); M_StartDelay(i, random(112, 10) + 5);
if (LineClear(monster[esi3]._mx, monster[esi3]._my, v1, v2)) { Monst->_mgoalvar1++;
M_StartRAttack(arglist, MIS_KRULL, 4);
} else {
//_LOBYTE(v11) = LineClear(monster[esi3]._mx, monster[esi3]._my, v1, v2);
if (LineClear(monster[esi3]._mx, monster[esi3]._my, v1, v2)) {
M_StartRAttack(arglist, MIS_KRULL, 4);
} else {
v13 = random(112, 10);
M_StartDelay(arglist, v13 + 5);
}
++monster[esi3]._mgoalvar1;
}
++monster[esi3]._mgoalvar1;
} }
break; } else if (Monst->_mgoal == MGOAL_RETREAT) {
case MGOAL_RETREAT: M_StartFadein(i, md, FALSE);
M_StartFadein(arglist, v7, FALSE); Monst->_mgoal = MGOAL_SHOOT;
LABEL_18:
_LOBYTE(monster[esi3]._mgoal) = MGOAL_SHOOT;
break;
} }
monster[esi3]._mdir = midir; Monst->_mdir = md;
random(112, 100); random(112, 100);
if (monster[esi3]._mmode == MM_STAND) if (Monst->_mmode != MM_STAND)
return; return;
if (abs(v6) < 2 && abs(v5) < 2 && _LOBYTE(monster[esi3]._mgoal) == MGOAL_NORMAL) {
M_TryH2HHit( if (abs(xd) < 2 && abs(yd) < 2 && Monst->_mgoal == MGOAL_NORMAL) {
arglist, M_TryH2HHit(i, monster[i]._menemy, monster[i].mHit, monster[i].mMinDamage, monster[i].mMaxDamage);
monster[esi3]._menemy, Monst->_mgoal = MGOAL_RETREAT;
(unsigned char)monster[esi3].mHit, if (!M_CallWalk(i, opposite[md])) {
(unsigned char)monster[esi3].mMinDamage, M_StartFadein(i, md, FALSE);
(unsigned char)monster[esi3].mMaxDamage); Monst->_mgoal = MGOAL_SHOOT;
_LOBYTE(monster[esi3]._mgoal) = MGOAL_RETREAT;
//_LOBYTE(v14) = M_CallWalk(arglist, opposite[midir]);
if (M_CallWalk(arglist, opposite[midir]))
return;
v15 = midir;
goto LABEL_29;
}
//_LOBYTE(v16) = M_CallWalk(arglist, midir);
if (!M_CallWalk(arglist, midir)) {
v17 = _LOBYTE(monster[esi3]._mgoal);
if ((_BYTE)v17 == MGOAL_NORMAL || (_BYTE)v17 == MGOAL_RETREAT) {
v15 = midir;
LABEL_29:
M_StartFadein(arglist, v15, FALSE);
_LOBYTE(monster[esi3]._mgoal) = MGOAL_SHOOT;
return;
} }
} else if (!M_CallWalk(i, md) && (Monst->_mgoal == MGOAL_NORMAL || Monst->_mgoal == MGOAL_RETREAT)) {
M_StartFadein(i, md, FALSE);
Monst->_mgoal = MGOAL_SHOOT;
} }
} }

Loading…
Cancel
Save