diff --git a/Source/missiles.cpp b/Source/missiles.cpp index a7df84cbd..08f4931c3 100644 --- a/Source/missiles.cpp +++ b/Source/missiles.cpp @@ -2975,7 +2975,8 @@ void ProcessAcidPuddle(Missile &missile) void ProcessFireWall(Missile &missile) { - constexpr int ExpLight[14] = { 2, 3, 4, 5, 5, 6, 7, 8, 9, 10, 11, 12, 12 }; + constexpr int ExpLightLen = 12; + constexpr int ExpLight[ExpLightLen] = { 2, 3, 4, 5, 5, 6, 7, 8, 9, 10, 11, 12 }; missile.duration--; if (missile.duration == missile.var1) { @@ -2992,10 +2993,12 @@ void ProcessFireWall(Missile &missile) missile._miDelFlag = true; AddUnLight(missile._mlid); } - if (missile._mimfnum != 0 && missile.duration != 0 && missile._miAnimAdd != -1 && missile.var2 < 12) { + constexpr int MaxExpLightIndex = ExpLightLen - 1; + if (missile._mimfnum == 0 && missile.duration != 0 && missile.var2 <= MaxExpLightIndex * 2) { if (missile.var2 == 0) missile._mlid = AddLight(missile.position.tile, ExpLight[0]); - ChangeLight(missile._mlid, missile.position.tile, ExpLight[missile.var2]); + int expLightIndex = MaxExpLightIndex - std::abs(missile.var2 - MaxExpLightIndex); + ChangeLight(missile._mlid, missile.position.tile, ExpLight[expLightIndex]); missile.var2++; } PutMissile(missile);