From 4dc0666b12786d1f08e115e56ab5e8293935608b Mon Sep 17 00:00:00 2001 From: obligaron Date: Fri, 12 Aug 2022 21:36:49 +0200 Subject: [PATCH] Resurrect SyncPositionWithParent --- Source/missiles.cpp | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/Source/missiles.cpp b/Source/missiles.cpp index 315089167..529d677bd 100644 --- a/Source/missiles.cpp +++ b/Source/missiles.cpp @@ -626,6 +626,17 @@ bool GrowWall(int playerId, Point position, Point target, missile_id type, int s return true; } +/** @brief Sync missile position with parent missile */ +void SyncPositionWithParent(Missile &missile, const AddMissileParameter ¶meter) +{ + const Missile *parent = parameter.pParent; + if (parent == nullptr) + return; + + missile.position.offset = parent->position.offset; + missile.position.traveled = parent->position.traveled; +} + void SpawnLightning(Missile &missile, int dam) { missile._mirange--; @@ -658,7 +669,8 @@ void SpawnLightning(Missile &missile, int dam) missile._micaster, missile._misource, dam, - missile._mispllvl); + missile._mispllvl, + &missile); missile.var1 = position.x; missile.var2 = position.y; } @@ -1796,6 +1808,8 @@ void AddLightning(Missile &missile, const AddMissileParameter ¶meter) { missile.position.start = parameter.dst; + SyncPositionWithParent(missile, parameter); + missile._miAnimFrame = GenerateRnd(8) + 1; if (missile._micaster == TARGET_PLAYERS || missile.IsTrap()) { @@ -2447,6 +2461,8 @@ void AddFlame(Missile &missile, const AddMissileParameter ¶meter) missile.var2 = 5 * missile._midam; missile.position.start = parameter.dst; + SyncPositionWithParent(missile, parameter); + missile._mirange = missile.var2 + 20; missile._mlid = AddLight(missile.position.start, 1); if (missile._micaster == TARGET_MONSTERS) { @@ -3783,7 +3799,8 @@ void MI_Flamec(Missile &missile) missile._micaster, missile._misource, missile.var3, - missile._mispllvl); + missile._mispllvl, + &missile); } else { missile._mirange = 0; }