Browse Source

Calculate Fireball missile damage in collision logic

Co-authored-by: Andrew James <ephphatha@thelettereph.com>
Co-authored-by: Anders Jenbo <anders@jenbo.dk>
pull/3952/head
Stephen C. Wills 4 years ago committed by Anders Jenbo
parent
commit
7525193a9f
  1. 14
      Source/missiles.cpp

14
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]]

Loading…
Cancel
Save