diff --git a/OpenRa.Game/Effects/Bullet.cs b/OpenRa.Game/Effects/Bullet.cs index 5104585dd3..15b6e80fc8 100755 --- a/OpenRa.Game/Effects/Bullet.cs +++ b/OpenRa.Game/Effects/Bullet.cs @@ -23,8 +23,12 @@ namespace OpenRa.Game.Effects const int BaseBulletSpeed = 100; /* pixels / 40ms frame */ + public Bullet(string weapon, Player owner, Actor firedBy, + int2 src, int2 dest, int srcAltitude, int destAltitude) + : this(Rules.WeaponInfo[weapon], owner, firedBy, src, dest, srcAltitude, destAltitude) { } + /* src, dest are *pixel* coords */ - public Bullet(string weapon, Player owner, Actor firedBy, + public Bullet(WeaponInfo weapon, Player owner, Actor firedBy, int2 src, int2 dest, int srcAltitude, int destAltitude) { Owner = owner; @@ -36,7 +40,7 @@ namespace OpenRa.Game.Effects VisualDest = Dest + new int2( Game.CosmeticRandom.Next(-10, 10), Game.CosmeticRandom.Next(-10, 10)); - Weapon = Rules.WeaponInfo[weapon]; + Weapon = weapon; Projectile = Rules.ProjectileInfo[Weapon.Projectile]; Warhead = Rules.WarheadInfo[Weapon.Warhead]; diff --git a/OpenRa.Game/Effects/Missile.cs b/OpenRa.Game/Effects/Missile.cs index c0247567d1..bf71137b03 100755 --- a/OpenRa.Game/Effects/Missile.cs +++ b/OpenRa.Game/Effects/Missile.cs @@ -20,10 +20,10 @@ namespace OpenRa.Game.Effects int t; int Altitude; - public Missile(string weapon, Player owner, Actor firedBy, + public Missile(WeaponInfo weapon, Player owner, Actor firedBy, int2 src, Actor target, int altitude, int facing) { - Weapon = Rules.WeaponInfo[weapon]; + Weapon = weapon; Projectile = Rules.ProjectileInfo[Weapon.Projectile]; Warhead = Rules.WarheadInfo[Weapon.Warhead]; FiredBy = firedBy; diff --git a/OpenRa.Game/Traits/AttackBase.cs b/OpenRa.Game/Traits/AttackBase.cs index 725ef2f753..366d3902c6 100644 --- a/OpenRa.Game/Traits/AttackBase.cs +++ b/OpenRa.Game/Traits/AttackBase.cs @@ -157,11 +157,11 @@ namespace OpenRa.Game.Traits var fireFacing = thisLocalOffset.ElementAtOrDefault(2) + (self.traits.Contains() ? self.traits.Get().turretFacing : unit.Facing); - Game.world.Add(new Missile(weaponName, self.Owner, self, + Game.world.Add(new Missile(weapon, self.Owner, self, firePos, thisTarget, srcAltitude, fireFacing)); } else - Game.world.Add(new Bullet(weaponName, self.Owner, self, + Game.world.Add(new Bullet(weapon, self.Owner, self, firePos, thisTarget.CenterLocation.ToInt2(), srcAltitude, destAltitude)); if (!string.IsNullOrEmpty(weapon.Report))