From 7525193a9f94bd68ea27939200d6815ec2d32821 Mon Sep 17 00:00:00 2001 From: "Stephen C. Wills" Date: Sat, 8 Jan 2022 19:54:05 -0500 Subject: [PATCH] Calculate Fireball missile damage in collision logic Co-authored-by: Andrew James Co-authored-by: Anders Jenbo --- Source/missiles.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/Source/missiles.cpp b/Source/missiles.cpp index a9cdbd1c4..a4f11bea7 100644 --- a/Source/missiles.cpp +++ b/Source/missiles.cpp @@ -3093,9 +3093,15 @@ void MI_Fireball(Missile &missile) AddUnLight(missile._mlid); } } else { - auto &monster = Monsters[id]; - int dam = (missile._micaster == TARGET_MONSTERS) ? missile._midam : monster.mMinDamage + GenerateRnd(monster.mMaxDamage - monster.mMinDamage + 1); - MoveMissileAndCheckMissileCol(missile, dam, dam, true, false); + int minDam = missile._midam; + int maxDam = missile._midam; + + if (missile._micaster != TARGET_MONSTERS) { + auto &monster = Monsters[id]; + minDam = monster.mMinDamage; + maxDam = monster.mMaxDamage; + } + MoveMissileAndCheckMissileCol(missile, minDam, maxDam, true, false); if (missile._mirange == 0) { Point m = missile.position.tile; ChangeLight(missile._mlid, missile.position.tile, missile._miAnimFrame); @@ -3103,7 +3109,7 @@ void MI_Fireball(Missile &missile) constexpr Displacement Pattern[] = { { 0, 0 }, { 0, 1 }, { 0, -1 }, { 1, 0 }, { 1, -1 }, { 1, 1 }, { -1, 0 }, { -1, 1 }, { -1, -1 } }; for (auto shift : Pattern) { if (!CheckBlock(p, m + shift)) - CheckMissileCol(missile, dam, dam, false, m + shift, true); + CheckMissileCol(missile, minDam, maxDam, false, m + shift, true); } if (!TransList[dTransVal[m.x][m.y]]