diff --git a/Source/missiles.cpp b/Source/missiles.cpp index a8d5f6d93..98b0fa5dc 100644 --- a/Source/missiles.cpp +++ b/Source/missiles.cpp @@ -3819,69 +3819,35 @@ void __fastcall MI_Lightning(int i) void __fastcall MI_Town(int i) { - int v1; // esi - int v2; // eax - int *v3; // edi - int v4; // ecx - int ExpLight[17]; // [esp+8h] [ebp-4Ch] - int ia; // [esp+4Ch] [ebp-8h] - int arglist; // [esp+50h] [ebp-4h] + int ExpLight[17] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 15, 15 }; + int p; - v1 = i; - ExpLight[14] = 15; - ExpLight[15] = 15; - ExpLight[16] = 15; - v2 = missile[i]._mirange; - ia = i; - ExpLight[0] = 1; - ExpLight[1] = 2; - ExpLight[2] = 3; - ExpLight[3] = 4; - ExpLight[4] = 5; - ExpLight[5] = 6; - ExpLight[6] = 7; - ExpLight[7] = 8; - ExpLight[8] = 9; - ExpLight[9] = 10; - ExpLight[10] = 11; - ExpLight[11] = 12; - ExpLight[12] = 13; - ExpLight[13] = 14; - if (v2 > 1) - missile[v1]._mirange = v2 - 1; - if (missile[v1]._mirange == missile[v1]._miVar1) + if (missile[i]._mirange > 1) + missile[i]._mirange--; + if (missile[i]._mirange == missile[i]._miVar1) SetMissDir(i, 1); - if (currlevel && missile[v1]._mimfnum != 1 && missile[v1]._mirange) { - if (!missile[v1]._miVar2) - missile[v1]._mlid = AddLight(missile[v1]._mix, missile[v1]._miy, 1); - ChangeLight(missile[v1]._mlid, missile[v1]._mix, missile[v1]._miy, ExpLight[missile[v1]._miVar2]); - ++missile[v1]._miVar2; - } - arglist = 0; - v3 = &plr[0].plrlevel; - do { - if (*((_BYTE *)v3 - 23)) { - if (currlevel == *v3 - && !*((_BYTE *)v3 + 267) - && !*(v3 - 13) - && v3[1] == missile[v1]._mix - && v3[2] == missile[v1]._miy) { - ClrPlrPath(arglist); - if (arglist == myplr) { - NetSendCmdParam1(TRUE, CMD_WARP, missile[v1]._misource); - *(v3 - 13) = 10; - } + if (currlevel && missile[i]._mimfnum != 1 && missile[i]._mirange) { + if (!missile[i]._miVar2) + missile[i]._mlid = AddLight(missile[i]._mix, missile[i]._miy, 1); + ChangeLight(missile[i]._mlid, missile[i]._mix, missile[i]._miy, ExpLight[missile[i]._miVar2]); + missile[i]._miVar2++; + } + + for (p = 0; p < 4; p++) { + if (plr[p].plractive && currlevel == plr[p].plrlevel && !plr[p]._pLvlChanging && !plr[p]._pmode && plr[p].WorldX == missile[i]._mix && plr[p].WorldY == missile[i]._miy) { + ClrPlrPath(p); + if (p == myplr) { + NetSendCmdParam1(TRUE, CMD_WARP, missile[i]._misource); + plr[p]._pmode = 10; } } - ++arglist; - v3 += 5430; - } while ((signed int)v3 < (signed int)&plr[4].plrlevel); - if (!missile[v1]._mirange) { - v4 = missile[v1]._mlid; - missile[v1]._miDelFlag = TRUE; - AddUnLight(v4); } - PutMissile(ia); + + if (!missile[i]._mirange) { + missile[i]._miDelFlag = TRUE; + AddUnLight(missile[i]._mlid); + } + PutMissile(i); } void __fastcall MI_Flash(int i)