Browse Source

AddTown bin exact (#635)

* AddTown bin exact

* Update Source/missiles.cpp

AddTown bin exact suggestion commit

Co-Authored-By: qndel <stefan551@o2.pl>

* Update Source/missiles.cpp

AddTown bin exact suggestion commit2

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

133
Source/missiles.cpp

@ -2178,7 +2178,7 @@ void __fastcall AddWeapexp(int mi, int sx, int sy, int dx, int dy, int midir, in
missile[v9]._mirange = missile[v9]._miAnimLen - 1;
}
BOOLEAN __fastcall CheckIfTrig(int x, int y)
BOOL __fastcall CheckIfTrig(int x, int y)
{
int v2; // edi
int v3; // ebx
@ -2208,105 +2208,56 @@ BOOLEAN __fastcall CheckIfTrig(int x, int y)
void __fastcall AddTown(int mi, int sx, int sy, int dx, int dy, int midir, int mienemy, int id, int dam)
{
int v9; // ebx
int v10; // esi
int v11; // edi
int v12; // eax
int v13; // ecx
char *v14; // eax
int v15; // eax
//int v16; // eax
int v17; // ecx
int v18; // eax
int v19; // eax
int v20; // ecx
int v21; // eax
int v22; // ST0C_4
int CrawlNum[6]; // [esp+Ch] [ebp-28h]
int i; // [esp+24h] [ebp-10h]
char *v25; // [esp+28h] [ebp-Ch]
int v26; // [esp+2Ch] [ebp-8h]
int v27; // [esp+30h] [ebp-4h]
int x; // [esp+40h] [ebp+Ch]
int i, j, k, mx, tx, ty;
int CrawlNum[6] = { 0, 3, 12, 45, 94, 159 };
_LOBYTE(v9) = dx;
i = mi;
v10 = mi;
CrawlNum[0] = 0;
CrawlNum[1] = 3;
CrawlNum[2] = 12;
CrawlNum[3] = 45;
CrawlNum[4] = 94;
CrawlNum[5] = 159;
tx = dx;
if (currlevel) {
_LOBYTE(v11) = dx;
missile[v10]._miDelFlag = TRUE;
v26 = 0;
do {
v12 = CrawlNum[v26];
v13 = (unsigned char)CrawlTable[v12];
v27 = (unsigned char)CrawlTable[v12];
if (v13 > 0) {
v14 = &CrawlTable[v12 + 2];
v25 = v14;
while (1) {
v9 = dx + (char)*(v14 - 1);
v11 = dy + (char)*v14;
if (v9 > 0 && v9 < MAXDUNX && v11 > 0 && v11 < MAXDUNY) {
v15 = v11 + 112 * v9;
if (!(dObject[0][v15] | dPlayer[0][v15] | dMissile[0][v15] | nSolidTable[dPiece[0][v15]] | (unsigned char)nMissileTable[dPiece[0][v15]])) {
//_LOBYTE(v16) = CheckIfTrig(v9, v11);
if (!CheckIfTrig(v9, v11))
break;
missile[mi]._miDelFlag = TRUE;
for (j = 0; j < 6; j++) {
k = CrawlNum[j] + 2;
for (i = 0; i < (unsigned char)CrawlTable[CrawlNum[j]]; i++) {
tx = dx + CrawlTable[k - 1];
ty = dy + CrawlTable[k];
if (tx > 0 && tx < MAXDUNX && ty > 0 && ty < MAXDUNY) {
if (!(dObject[tx][ty] | dPlayer[tx][ty] | dMissile[tx][ty] | nSolidTable[dPiece[tx][ty]] | (unsigned char)nMissileTable[dPiece[tx][ty]])) {
if (!CheckIfTrig(tx, ty)) {
missile[mi]._miDelFlag = FALSE;
missile[mi]._mix = tx;
missile[mi]._miy = ty;
missile[mi]._misx = tx;
missile[mi]._misy = ty;
j = 6;
break;
}
}
v14 = v25 + 2;
--v27;
v25 += 2;
if (v27 <= 0)
goto LABEL_14;
}
missile[v10]._miDelFlag = FALSE;
missile[v10]._mix = v9;
missile[v10]._miy = v11;
missile[v10]._misx = v9;
missile[v10]._misy = v11;
v26 = 6;
k += 2;
}
LABEL_14:
++v26;
} while (v26 < 6);
}
} else {
_LOBYTE(v11) = dy;
missile[v10]._mix = dx;
missile[v10]._miy = dy;
missile[v10]._misx = dx;
missile[v10]._misy = dy;
missile[v10]._miDelFlag = FALSE;
}
v17 = nummissiles;
missile[v10]._miVar2 = 0;
v27 = 0;
missile[v10]._mirange = 100;
for (missile[v10]._miVar1 = 100 - missile[v10]._miAnimLen; v27 < v17; ++v27) {
v18 = missileactive[v27];
x = v18;
v19 = v18;
if (missile[v19]._mitype == MIS_TOWN && x != i && missile[v19]._misource == id)
missile[v19]._mirange = 0;
ty = dy;
missile[mi]._mix = tx;
missile[mi]._miy = ty;
missile[mi]._misx = tx;
missile[mi]._misy = ty;
missile[mi]._miDelFlag = FALSE;
}
missile[mi]._mirange = 100;
missile[mi]._miVar1 = 100 - missile[mi]._miAnimLen;
missile[mi]._miVar2 = 0;
for (i = 0; i < nummissiles; i++) {
mx = missileactive[i];
if (missile[mx]._mitype == MIS_TOWN && mx != mi && missile[mx]._misource == id)
missile[mx]._mirange = 0;
}
PutMissile(i);
_HIWORD(v21) = _HIWORD(id);
if (id == myplr && !missile[v10]._miDelFlag && currlevel) {
if (setlevel) {
_LOWORD(v21) = leveltype;
v22 = v21;
_LOWORD(v21) = setlvlnum;
NetSendCmdLocParam3(TRUE, CMD_ACTIVATEPORTAL, v9, v11, v21, v22, 1);
PutMissile(mi);
if (id == myplr && !missile[mi]._miDelFlag && currlevel) {
if (!setlevel) {
NetSendCmdLocParam3(TRUE, CMD_ACTIVATEPORTAL, tx, ty, currlevel, leveltype, 0);
} else {
_LOWORD(v20) = leveltype;
_LOWORD(v21) = currlevel;
NetSendCmdLocParam3(TRUE, CMD_ACTIVATEPORTAL, v9, v11, v21, v20, 0);
NetSendCmdLocParam3(TRUE, CMD_ACTIVATEPORTAL, tx, ty, setlvlnum, leveltype, 1);
}
}
}

2
Source/missiles.h

@ -50,7 +50,7 @@ void __fastcall AddLightctrl(int mi, int sx, int sy, int dx, int dy, int midir,
void __fastcall AddLightning(int mi, int sx, int sy, int dx, int dy, int midir, int mienemy, int id, int dam);
void __fastcall AddMisexp(int mi, int sx, int sy, int dx, int dy, int midir, int mienemy, int id, int dam);
void __fastcall AddWeapexp(int mi, int sx, int sy, int dx, int dy, int midir, int mienemy, int id, int dam);
BOOLEAN __fastcall CheckIfTrig(int x, int y);
BOOL __fastcall CheckIfTrig(int x, int y);
void __fastcall AddTown(int mi, int sx, int sy, int dx, int dy, int midir, int mienemy, int id, int dam);
void __fastcall AddFlash(int mi, int sx, int sy, int dx, int dy, int midir, int mienemy, int id, int dam);
void __fastcall AddFlash2(int mi, int sx, int sy, int dx, int dy, int midir, int mienemy, int id, int dam);

Loading…
Cancel
Save