Browse Source

AddStone bin exact (#736)

pull/78/head
qndel 7 years ago committed by Anders Jenbo
parent
commit
8e4998a828
  1. 108
      Source/missiles.cpp

108
Source/missiles.cpp

@ -2296,85 +2296,49 @@ void __fastcall AddAcidpud(int mi, int sx, int sy, int dx, int dy, int midir, in
void __fastcall AddStone(int mi, int sx, int sy, int dx, int dy, int midir, int mienemy, int id, int dam)
{
int v9; // eax
int v10; // edx
int v11; // esi
int v12; // edi
int v13; // ecx
char *v14; // ecx
int v15; // ebx
int v16; // ebx
int v17; // edi
int *v18; // edi
int v19; // ecx
int v20; // edx
int v21; // ecx
int v22; // edx
int *v23; // eax
int CrawlNum[6]; // [esp+Ch] [ebp-20h]
int v25; // [esp+24h] [ebp-8h]
int v26; // [esp+28h] [ebp-4h]
int i, j, k, l, tx, ty, mid;
int CrawlNum[6] = { 0, 3, 12, 45, 94, 159 };
v9 = mi;
CrawlNum[0] = 0;
v26 = 0;
v10 = id;
v11 = id;
CrawlNum[1] = 3;
CrawlNum[2] = 12;
CrawlNum[3] = 45;
CrawlNum[4] = 94;
CrawlNum[5] = 159;
missile[mi]._misource = id;
do {
v12 = CrawlNum[v26];
v13 = (unsigned char)CrawlTable[v12];
v25 = (unsigned char)CrawlTable[v12];
if (v13 > 0) {
v14 = &CrawlTable[v12 + 2];
while (1) {
v10 = dx + (char)*(v14 - 1);
v11 = dy + (char)*v14;
if (v10 > 0 && v10 < MAXDUNX && v11 > 0 && v11 < MAXDUNY) {
v15 = dMonster[v10][v11];
v16 = v15 <= 0 ? -1 - v15 : v15 - 1;
if (v16 > 3 && monster[v16]._mAi != AI_DIABLO) {
v17 = monster[v16]._mmode;
if (v17 != MM_FADEIN && v17 != MM_FADEOUT && v17 != MM_CHARGE)
break;
for (i = 0; i < 6; i++) {
k = CrawlNum[i];
l = k + 2;
for (j = (unsigned char)CrawlTable[k]; j > 0; j--) {
tx = dx + CrawlTable[l - 1];
ty = dy + CrawlTable[l];
if (tx > 0 && tx < MAXDUNX && ty > 0 && ty < MAXDUNY) {
mid = dMonster[tx][ty];
mid = mid > 0 ? mid - 1 : -1 - mid;
if (mid > 3 && monster[mid]._mAi != AI_DIABLO) {
if (monster[mid]._mmode != MM_FADEIN && monster[mid]._mmode != MM_FADEOUT && monster[mid]._mmode != MM_CHARGE) {
j = -99;
i = 6;
missile[mi]._miVar1 = monster[mid]._mmode;
missile[mi]._miVar2 = mid;
monster[mid]._mmode = MM_STONE;
break;
}
}
v14 += 2;
if (--v25 <= 0)
goto LABEL_19;
}
v25 = -99;
v26 = 6;
missile[v9]._miVar2 = v16;
v18 = (int *)&monster[v16]._mmode;
v19 = *v18;
*v18 = MM_STONE;
missile[v9]._miVar1 = v19;
l += 2;
}
LABEL_19:
++v26;
} while (v26 < 6);
if (v25 == -99) {
missile[v9]._mix = v10;
missile[v9]._misx = v10;
v20 = missile[v9]._mispllvl + 6;
v21 = v20 * plr[id]._pISplDur >> 7;
missile[v9]._miy = v11;
missile[v9]._misy = v11;
v22 = v21 + v20;
v23 = &missile[v9]._mirange;
*v23 = v22;
if (v22 > 15)
*v23 = 15;
*v23 *= 16;
UseMana(id, 8);
}
if (j != -99) {
missile[mi]._miDelFlag = TRUE;
} else {
missile[v9]._miDelFlag = TRUE;
missile[mi]._mix = tx;
missile[mi]._miy = ty;
missile[mi]._misx = tx;
missile[mi]._misy = ty;
missile[mi]._mirange = 6;
missile[mi]._mirange += missile[mi]._mispllvl;
missile[mi]._mirange += (missile[mi]._mirange * plr[id]._pISplDur) >> 7;
if (missile[mi]._mirange > 15)
missile[mi]._mirange = 15;
missile[mi]._mirange <<= 4;
UseMana(id, 8);
}
}

Loading…
Cancel
Save