diff --git a/OpenRA.Mods.Cnc/Effects/IonCannon.cs b/OpenRA.Mods.Cnc/Effects/IonCannon.cs index 1fcefdc9b0..c8e8e18e7d 100644 --- a/OpenRA.Mods.Cnc/Effects/IonCannon.cs +++ b/OpenRA.Mods.Cnc/Effects/IonCannon.cs @@ -40,7 +40,7 @@ namespace OpenRA.Mods.Cnc.Effects void Finish(World world) { world.AddFrameEndTask(w => w.Remove(this)); - Combat.DoExplosion(firedBy, "IonCannon", target.CenterLocation, 0); + Combat.DoExplosion(firedBy, "IonCannon", target.CenterPosition); } } } diff --git a/OpenRA.Mods.RA/Air/FallsToEarth.cs b/OpenRA.Mods.RA/Air/FallsToEarth.cs index 678b367874..9f62efcc01 100755 --- a/OpenRA.Mods.RA/Air/FallsToEarth.cs +++ b/OpenRA.Mods.RA/Air/FallsToEarth.cs @@ -50,7 +50,7 @@ namespace OpenRA.Mods.RA.Air if (aircraft.Altitude <= 0) { if (info.Explosion != null) - Combat.DoExplosion(self, info.Explosion, self.CenterLocation, 0); + Combat.DoExplosion(self, info.Explosion, self.CenterPosition); self.Destroy(); return null; diff --git a/OpenRA.Mods.RA/Combat.cs b/OpenRA.Mods.RA/Combat.cs index e912a7cbc4..82190f8310 100755 --- a/OpenRA.Mods.RA/Combat.cs +++ b/OpenRA.Mods.RA/Combat.cs @@ -139,22 +139,24 @@ namespace OpenRA.Mods.RA } } - public static void DoExplosion(Actor attacker, string weapontype, PPos pos, int altitude) + public static void DoExplosion(Actor attacker, string weapontype, WPos pos) { + var pxPos = PPos.FromWPos(pos); + var altitude = pos.Z * Game.CellSize / 1024; var args = new ProjectileArgs { - src = pos, - dest = pos, + src = pxPos, + dest = pxPos, srcAltitude = altitude, destAltitude = altitude, firedBy = attacker, - target = Target.FromPos(pos), + target = Target.FromPos(pxPos), weapon = Rules.Weapons[weapontype.ToLowerInvariant()], facing = 0 }; if (args.weapon.Report != null && args.weapon.Report.Any()) - Sound.Play(args.weapon.Report.Random(attacker.World.SharedRandom), pos); + Sound.Play(args.weapon.Report.Random(attacker.World.SharedRandom), pxPos); DoImpacts(args); } diff --git a/OpenRA.Mods.RA/Crates/ExplodeCrateAction.cs b/OpenRA.Mods.RA/Crates/ExplodeCrateAction.cs index 6924c85f8c..2826a21eb9 100644 --- a/OpenRA.Mods.RA/Crates/ExplodeCrateAction.cs +++ b/OpenRA.Mods.RA/Crates/ExplodeCrateAction.cs @@ -27,7 +27,7 @@ namespace OpenRA.Mods.RA public override void Activate(Actor collector) { - Combat.DoExplosion(self, (info as ExplodeCrateActionInfo).Weapon, collector.CenterLocation, 0); + Combat.DoExplosion(self, (info as ExplodeCrateActionInfo).Weapon, collector.CenterPosition); base.Activate(collector); } } diff --git a/OpenRA.Mods.RA/Effects/NukeLaunch.cs b/OpenRA.Mods.RA/Effects/NukeLaunch.cs index e0c9657f8f..c228048335 100755 --- a/OpenRA.Mods.RA/Effects/NukeLaunch.cs +++ b/OpenRA.Mods.RA/Effects/NukeLaunch.cs @@ -66,7 +66,7 @@ namespace OpenRA.Mods.RA.Effects void Explode(World world) { world.AddFrameEndTask(w => w.Remove(this)); - Combat.DoExplosion(firedBy.PlayerActor, weapon, PPos.FromWPos(pos), pos.Z * Game.CellSize / 1024); + Combat.DoExplosion(firedBy.PlayerActor, weapon, pos); world.WorldActor.Trait().AddEffect(20, PPos.FromWPos(pos).ToFloat2(), 5); foreach (var a in world.ActorsWithTrait()) diff --git a/OpenRA.Mods.RA/Explodes.cs b/OpenRA.Mods.RA/Explodes.cs index 8d23da8c3f..96b2bd1b0a 100644 --- a/OpenRA.Mods.RA/Explodes.cs +++ b/OpenRA.Mods.RA/Explodes.cs @@ -42,11 +42,7 @@ namespace OpenRA.Mods.RA var weapon = ChooseWeaponForExplosion(self); if (weapon != null) - { - var move = self.TraitOrDefault(); - var altitude = move != null ? move.Altitude : 0; - Combat.DoExplosion(e.Attacker, weapon, self.CenterLocation, altitude); - } + Combat.DoExplosion(e.Attacker, weapon, self.CenterPosition); } string ChooseWeaponForExplosion(Actor self) diff --git a/OpenRA.Mods.RA/Missions/Soviet01ClassicScript.cs b/OpenRA.Mods.RA/Missions/Soviet01ClassicScript.cs index 121aebb274..0d1caddd12 100644 --- a/OpenRA.Mods.RA/Missions/Soviet01ClassicScript.cs +++ b/OpenRA.Mods.RA/Missions/Soviet01ClassicScript.cs @@ -128,7 +128,7 @@ namespace OpenRA.Mods.RA.Missions .Where(a => a.HasTrait() && !a.IsDead()) .OrderBy(a => (startJeep.CenterLocation - a.CenterLocation).LengthSquared) .First(); - Combat.DoExplosion(bridge, "Demolish", bridge.CenterLocation, 0); + Combat.DoExplosion(bridge, "Demolish", bridge.CenterPosition); world.WorldActor.Trait().AddEffect(15, bridge.CenterLocation.ToFloat2(), 6); bridge.Kill(bridge); }));