diff --git a/OpenRa.Game/Effects/Missile.cs b/OpenRa.Game/Effects/Missile.cs index ee5d2ce88a..dcf32c7716 100644 --- a/OpenRa.Game/Effects/Missile.cs +++ b/OpenRa.Game/Effects/Missile.cs @@ -21,7 +21,7 @@ namespace OpenRa.Game.Effects int Altitude; public Missile(string weapon, Player owner, Actor firedBy, - int2 src, Actor target, int altitude) + int2 src, Actor target, int altitude, int facing) { Weapon = Rules.WeaponInfo[weapon]; Projectile = Rules.ProjectileInfo[Weapon.Projectile]; @@ -31,9 +31,7 @@ namespace OpenRa.Game.Effects Target = target; Pos = src.ToFloat2(); Altitude = altitude; - - /* todo: initial facing should be turret facing, or unit facing if we're not turreted */ - Facing = Traits.Util.GetFacing( Target.CenterLocation - src.ToFloat2(), 0 ); + Facing = facing; if (Projectile.Image != null && Projectile.Image != "none") { diff --git a/OpenRa.Game/Traits/AttackBase.cs b/OpenRa.Game/Traits/AttackBase.cs index d3b713aa66..d7b0328c58 100644 --- a/OpenRa.Game/Traits/AttackBase.cs +++ b/OpenRa.Game/Traits/AttackBase.cs @@ -118,12 +118,15 @@ namespace OpenRa.Game.Traits var srcAltitude = unit != null ? unit.Altitude : 0; var destAltitude = destUnit != null ? destUnit.Altitude : 0; + var fireFacing = self.traits.Contains() + ? self.traits.Get().turretFacing : unit.Facing; + if( weapon.RenderAsTesla ) Game.world.Add( new TeslaZap( firePos, thisTarget.CenterLocation.ToInt2() ) ); if( Rules.ProjectileInfo[ weapon.Projectile ].ROT != 0 ) Game.world.Add(new Missile(weaponName, self.Owner, self, - firePos, thisTarget, srcAltitude)); + firePos, thisTarget, srcAltitude, fireFacing)); else Game.world.Add(new Bullet(weaponName, self.Owner, self, firePos, thisTarget.CenterLocation.ToInt2(), srcAltitude, destAltitude));