diff --git a/Source/missiles.cpp b/Source/missiles.cpp index a8d5f6d93..3566fff46 100644 --- a/Source/missiles.cpp +++ b/Source/missiles.cpp @@ -3245,130 +3245,84 @@ void __fastcall MI_SetManashield(int i) void __fastcall MI_LArrow(int i) { - int v1; // esi - char v2; // al - int v3; // ebx - int v4; // eax - int v6; // edi - int v7; // ecx - int v8; // eax - int v9; // ecx - int v10; // edx - int v11; // ST0C_4 - unsigned char *v12; // eax - unsigned char v13; // bl - int v14; // eax - int v15; // edx - int v16; // ecx - int v17; // ST10_4 - int v18; // ecx - int v19; // edi - int v20; // eax - int v21; // eax - int v22; // ecx - int v23; // ST0C_4 - int v24; // edi - int v25; // eax - int v26; // eax - int v27; // ecx - int v28; // ST10_4 - int v29; // ecx - unsigned char v32; // [esp+Ch] [ebp-8h] - int ia; // [esp+10h] [ebp-4h] + int p, mind, maxd, rst; - v1 = i; - ia = i; - v2 = missile[i]._miAnimType; - --missile[v1]._mirange; - v3 = missile[i]._misource; - if (v2 == MFILE_MINILTNG || v2 == MFILE_MAGBLOS) { - ChangeLight(missile[v1]._mlid, missile[v1]._mix, missile[v1]._miy, missile[v1]._miAnimFrame + 5); - v18 = missiledata[missile[v1]._mitype].mResist; - v32 = missiledata[missile[v1]._mitype].mResist; - if (missile[v1]._mitype == MIS_LARROW) { - if (v3 == -1) { - v21 = random(68, 10); - v22 = currlevel; - v19 = v21 + currlevel + 1; - v20 = random(68, 10) + 2 * currlevel + 1; + missile[i]._mirange--; + p = missile[i]._misource; + if (missile[i]._miAnimType == MFILE_MINILTNG || missile[i]._miAnimType == MFILE_MAGBLOS) { + ChangeLight(missile[i]._mlid, missile[i]._mix, missile[i]._miy, missile[i]._miAnimFrame + 5); + rst = missiledata[missile[i]._mitype].mResist; + if (missile[i]._mitype == MIS_LARROW) { + if (p != -1) { + mind = plr[p]._pILMinDam; + maxd = plr[p]._pILMaxDam; } else { - v19 = plr[v3]._pILMinDam; - v20 = plr[v3]._pILMaxDam; + mind = random(68, 10) + currlevel + 1; + maxd = random(68, 10) + 2 * currlevel + 1; } - v23 = missile[v1]._miy; missiledata[MIS_LARROW].mResist = MISR_LIGHTNING; - CheckMissileCol(ia, v19, v20, 0, missile[v1]._mix, v23, 1); + CheckMissileCol(i, mind, maxd, 0, missile[i]._mix, missile[i]._miy, 1); } - if (missile[v1]._mitype == MIS_FARROW) { - if (v3 == -1) { - v26 = random(68, 10); - v27 = currlevel; - v24 = v26 + currlevel + 1; - v25 = random(68, 10) + 2 * currlevel + 1; + if (missile[i]._mitype == MIS_FARROW) { + if (p != -1) { + mind = plr[p]._pIFMinDam; + maxd = plr[p]._pIFMaxDam; } else { - v24 = plr[v3]._pIFMinDam; - v25 = plr[v3]._pIFMaxDam; + mind = random(68, 10) + currlevel + 1; + maxd = random(68, 10) + 2 * currlevel + 1; } - v28 = missile[v1]._miy; missiledata[MIS_FARROW].mResist = MISR_FIRE; - CheckMissileCol(ia, v24, v25, 0, missile[v1]._mix, v28, 1); + CheckMissileCol(i, mind, maxd, 0, missile[i]._mix, missile[i]._miy, 1); } - missiledata[missile[v1]._mitype].mResist = v32; + missiledata[missile[i]._mitype].mResist = rst; } else { - v4 = missile[v1]._mixvel; - ++missile[v1]._midist; - missile[v1]._mitxoff += v4; - missile[v1]._mityoff += missile[v1]._miyvel; + missile[i]._midist++; + missile[i]._mitxoff += missile[i]._mixvel; + missile[i]._mityoff += missile[i]._miyvel; GetMissilePos(i); - if (v3 == -1) { - v8 = random(68, 10); - v9 = currlevel; - v6 = v8 + currlevel + 1; - v7 = random(68, 10) + 2 * currlevel + 1; - } else if (missile[v1]._micaster) { - v6 = (unsigned char)monster[v3].mMinDamage; - v7 = (unsigned char)monster[v3].mMaxDamage; + + if (p != -1) { + if (!missile[i]._micaster) { + mind = plr[p]._pIMinDam; + maxd = plr[p]._pIMaxDam; + } else { + mind = (unsigned char)monster[p].mMinDamage; + maxd = (unsigned char)monster[p].mMaxDamage; + } } else { - v6 = plr[v3]._pIMinDam; - v7 = plr[v3]._pIMaxDam; + mind = random(68, 10) + currlevel + 1; + maxd = random(68, 10) + 2 * currlevel + 1; } - v10 = missile[v1]._mix; - if (v10 != missile[v1]._misx || missile[v1]._miy != missile[v1]._misy) { - v11 = missile[v1]._miy; - v12 = &missiledata[missile[v1]._mitype].mResist; - v13 = *v12; - *v12 = 0; - CheckMissileCol(ia, v6, v7, 0, v10, v11, 0); - missiledata[missile[v1]._mitype].mResist = v13; + + if (missile[i]._mix != missile[i]._misx || missile[i]._miy != missile[i]._misy) { + rst = missiledata[missile[i]._mitype].mResist; + missiledata[missile[i]._mitype].mResist = 0; + CheckMissileCol(i, mind, maxd, 0, missile[i]._mix, missile[i]._miy, 0); + missiledata[missile[i]._mitype].mResist = rst; } - if (missile[v1]._mirange) { - v15 = missile[v1]._mix; - if (v15 != missile[v1]._miVar1 || missile[v1]._miy != missile[v1]._miVar2) { - v16 = missile[v1]._mlid; - missile[v1]._miVar1 = v15; - v17 = missile[v1]._miy; - missile[v1]._miVar2 = v17; - ChangeLight(v16, v15, v17, 5); - } - } else { - missile[v1]._mitxoff -= missile[v1]._mixvel; - v14 = missile[v1]._miyvel; - missile[v1]._mimfnum = 0; - missile[v1]._mityoff -= v14; - GetMissilePos(ia); - if (missile[v1]._mitype == MIS_LARROW) - SetMissAnim(ia, MFILE_MINILTNG); + if (!missile[i]._mirange) { + missile[i]._mimfnum = 0; + missile[i]._mitxoff -= missile[i]._mixvel; + missile[i]._mityoff -= missile[i]._miyvel; + GetMissilePos(i); + if (missile[i]._mitype == MIS_LARROW) + SetMissAnim(i, MFILE_MINILTNG); else - SetMissAnim(ia, MFILE_MAGBLOS); - missile[v1]._mirange = missile[v1]._miAnimLen - 1; + SetMissAnim(i, MFILE_MAGBLOS); + missile[i]._mirange = missile[i]._miAnimLen - 1; + } else { + if (missile[i]._mix != missile[i]._miVar1 || missile[i]._miy != missile[i]._miVar2) { + missile[i]._miVar1 = missile[i]._mix; + missile[i]._miVar2 = missile[i]._miy; + ChangeLight(missile[i]._mlid, missile[i]._mix, missile[i]._miy, 5); + } } } - if (!missile[v1]._mirange) { - v29 = missile[v1]._mlid; - missile[v1]._miDelFlag = TRUE; - AddUnLight(v29); + if (!missile[i]._mirange) { + missile[i]._miDelFlag = TRUE; + AddUnLight(missile[i]._mlid); } - PutMissile(ia); + PutMissile(i); } void __fastcall MI_Arrow(int i)