diff --git a/Source/missiles.cpp b/Source/missiles.cpp index 4df1b51fe..ea1426c48 100644 --- a/Source/missiles.cpp +++ b/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)