diff --git a/Source/missiles.cpp b/Source/missiles.cpp index 022c951d0..990f5ab17 100644 --- a/Source/missiles.cpp +++ b/Source/missiles.cpp @@ -1338,13 +1338,13 @@ void AddSpecArrow(Missile &missile, const AddMissileParameter ¶meter) void AddWarp(Missile &missile, const AddMissileParameter & /*parameter*/) { - Player &player = Players[missile._misource]; - int minDistanceSq = std::numeric_limits::max(); Point src = missile.position.start; Point tile = src; - if (missile._misource >= 0) { - tile = player.position.tile; + + MissileSource missileSource = missile.sourceType(); + if (missileSource == MissileSource::Player) { + tile = missile.sourcePlayer()->position.tile; } for (int i = 0; i < numtrigs && i < MAXTRIGGERS; i++) { @@ -1366,8 +1366,9 @@ void AddWarp(Missile &missile, const AddMissileParameter & /*parameter*/) } missile._mirange = 2; missile.position.tile = tile; - if (missile._micaster == TARGET_MONSTERS) - UseMana(player, SPL_WARP); + if (missileSource == MissileSource::Player) { + UseMana(*missile.sourcePlayer(), SPL_WARP); + } } void AddLightningWall(Missile &missile, const AddMissileParameter ¶meter)