Browse Source

AddArrow/AddLArrow bin exact (#613)

pull/36/head
qndel 7 years ago committed by Robin Eklind
parent
commit
14aca31184
  1. 95
      Source/missiles.cpp

95
Source/missiles.cpp

@ -1722,81 +1722,50 @@ void __cdecl InitMissiles()
void __fastcall AddLArrow(int mi, int sx, int sy, int dx, int dy, int midir, int mienemy, int id, int dam)
{
int v9; // esi
int v10; // ebx
int v11; // edi
int v12; // eax
int v14; // eax
int v15; // esi
int v16; // [esp-4h] [ebp-14h]
int mia; // [esp+Ch] [ebp-4h]
v9 = dx;
v10 = sx;
v11 = dy;
mia = mi;
if (sx == dx && sy == dy) {
v9 = XDirAdd[midir] + dx;
v11 = YDirAdd[midir] + dy;
dx += XDirAdd[midir];
dy += YDirAdd[midir];
}
if ((_BYTE)mienemy) {
GetMissileVel(mi, v10, sy, v9, v11, 32);
}
v12 = id;
if (plr[id]._pClass == PC_ROGUE) {
v16 = (plr[v12]._pLevel >> 2) + 31;
GetMissileVel(mi, v10, sy, v9, v11, v16);
} else if (plr[id]._pClass == PC_SORCERER)
GetMissileVel(mi, v10, sy, v9, v11, 32);
else
GetMissileVel(mi, v10, sy, v9, v11, (plr[v12]._pLevel >> 3) + 31);
v14 = GetDirection16(v10, sy, v9, v11);
SetMissDir(mia, v14);
v15 = mia;
missile[v15]._mirange = 256;
missile[v15]._miVar1 = v10;
missile[v15]._miVar2 = sy;
missile[v15]._mlid = AddLight(v10, sy, 5);
if (!(_BYTE)mienemy) {
if (plr[id]._pClass == PC_ROGUE)
GetMissileVel(mi, sx, sy, dx, dy, (plr[id]._pLevel >> 2) + 31);
else if (plr[id]._pClass == PC_WARRIOR)
GetMissileVel(mi, sx, sy, dx, dy, (plr[id]._pLevel >> 3) + 31);
else
GetMissileVel(mi, sx, sy, dx, dy, 32);
} else
GetMissileVel(mi, sx, sy, dx, dy, 32);
SetMissDir(mi, GetDirection16(sx, sy, dx, dy));
missile[mi]._mirange = 256;
missile[mi]._miVar1 = sx;
missile[mi]._miVar2 = sy;
missile[mi]._mlid = AddLight(sx, sy, 5);
}
void __fastcall AddArrow(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 v14; // esi
int v15; // eax
int x1; // [esp+8h] [ebp-8h]
int i; // [esp+Ch] [ebp-4h]
int av;
v9 = dy;
v10 = dx;
x1 = sx;
i = mi;
if (sx == dx && sy == dy) {
v10 = XDirAdd[midir] + dx;
v9 = YDirAdd[midir] + dy;
dx += XDirAdd[midir];
dy += YDirAdd[midir];
}
if ((_BYTE)mienemy) {
GetMissileVel(mi, sx, sy, v10, v9, 32);
} else {
v11 = id;
v12 = 32;
if (!(_BYTE)mienemy) {
av = 32;
if (plr[id]._pIFlags & 4) {
v12 = random(64, 32) + 16;
av = random(64, 32) + 16;
}
if (plr[v11]._pClass == PC_ROGUE)
v12 += (plr[v11]._pLevel - 1) >> 2;
if (plr[v11]._pClass == PC_WARRIOR)
v12 += (plr[v11]._pLevel - 1) >> 3;
GetMissileVel(i, x1, sy, v10, v9, v12);
}
v14 = i;
v15 = GetDirection16(x1, sy, dx, v9);
missile[v14]._mirange = 256;
missile[v14]._miAnimFrame = v15 + 1;
if (plr[id]._pClass == PC_ROGUE)
av += (plr[id]._pLevel - 1) >> 2;
if (plr[id]._pClass == PC_WARRIOR)
av += (plr[id]._pLevel - 1) >> 3;
GetMissileVel(mi, sx, sy, dx, dy, av);
} else {
GetMissileVel(mi, sx, sy, dx, dy, 32);
}
missile[mi]._miAnimFrame = GetDirection16(sx, sy, dx, dy) + 1;
missile[mi]._mirange = 256;
}
void __fastcall GetVileMissPos(int mi, int dx, int dy)

Loading…
Cancel
Save