Browse Source

MI_Golem bin exact (#641)

* MI_Golem bin exact

* Update Source/missiles.cpp - MI_Golem suggestion1

Co-Authored-By: qndel <stefan551@o2.pl>
pull/35/head
qndel 7 years ago committed by Robin Eklind
parent
commit
d1288a0f80
  1. 95
      Source/missiles.cpp

95
Source/missiles.cpp

@ -3395,79 +3395,32 @@ void __fastcall MI_Dummy(int i)
void __fastcall MI_Golem(int i)
{
int v1; // esi
int v2; // eax
int v3; // eax
BOOLEAN v4; // zf
int v5; // eax
int v6; // ecx
char *v7; // eax
int v8; // ebx
int v9; // edi
int v10; // edx
int v11; // ecx
int CrawlNum[6]; // [esp+4h] [ebp-38h]
int arglist; // [esp+1Ch] [ebp-20h]
int mi; // [esp+20h] [ebp-1Ch]
unsigned int v16; // [esp+24h] [ebp-18h]
int v17; // [esp+28h] [ebp-14h]
int v18; // [esp+2Ch] [ebp-10h]
char *v19; // [esp+30h] [ebp-Ch]
int v20; // [esp+34h] [ebp-8h]
int v21; // [esp+38h] [ebp-4h]
mi = i;
v1 = i;
v2 = missile[i]._misource;
arglist = v2;
v3 = v2;
v4 = monster[v3]._mx == 1;
CrawlNum[0] = 0;
CrawlNum[1] = 3;
CrawlNum[2] = 12;
CrawlNum[3] = 45;
CrawlNum[4] = 94;
CrawlNum[5] = 159;
if (!v4 || monster[v3]._my)
goto LABEL_17;
v21 = 0;
do {
v5 = CrawlNum[v21];
v6 = (unsigned char)CrawlTable[v5];
v20 = (unsigned char)CrawlTable[v5];
if (v6 <= 0)
goto LABEL_16;
v7 = &CrawlTable[v5 + 2];
v19 = v7;
while (1) {
v8 = missile[v1]._miVar4 + (char)*(v7 - 1);
v9 = missile[v1]._miVar5 + (char)*v7;
if (v8 <= 0 || v8 >= MAXDUNX || v9 <= 0 || v9 >= MAXDUNY)
goto LABEL_13;
v10 = missile[v1]._miVar2;
v11 = missile[v1]._miVar1;
v18 = v9 + 112 * v8;
v16 = 4 * v18;
v17 = dPiece[0][v18];
if (LineClear(v11, v10, v8, v9)) {
if (!(dMonster[0][v16 / 4] | nSolidTable[v17] | dObject[0][v18]))
break;
int CrawlNum[6] = { 0, 3, 12, 45, 94, 159 };
int tx, ty, dp, l,m, src, k, tid;
src = missile[i]._misource;
if (monster[src]._mx == 1 && !monster[src]._my) {
for (l = 0; l < 6; l++) {
k = CrawlNum[l];
tid = k + 2;
for (m = (unsigned char)CrawlTable[k];m > 0; m--){
tx = missile[i]._miVar4 + CrawlTable[tid - 1];
ty = missile[i]._miVar5 + CrawlTable[tid];
if (0 < tx && tx < MAXDUNX && 0 < ty && ty < MAXDUNY) {
dp = dPiece[tx][ty];
if (LineClear(missile[i]._miVar1, missile[i]._miVar2, tx, ty)) {
if (!(dMonster[tx][ty] | nSolidTable[dp] | dObject[tx][ty])) {
l = 6;
SpawnGolum(src, tx, ty, i);
break;
}
}
}
tid += 2;
}
v7 = v19;
LABEL_13:
v7 += 2;
--v20;
v19 = v7;
if (v20 <= 0)
goto LABEL_16;
}
v21 = 6;
SpawnGolum(arglist, v8, v9, mi);
LABEL_16:
++v21;
} while (v21 < 6);
LABEL_17:
missile[v1]._miDelFlag = TRUE;
}
missile[i]._miDelFlag = TRUE;
}
void __fastcall MI_SetManashield(int i)

Loading…
Cancel
Save