diff --git a/OpenRA.Game/Combat.cs b/OpenRA.Game/Combat.cs index b786e671c6..0430f7ee1b 100644 --- a/OpenRA.Game/Combat.cs +++ b/OpenRA.Game/Combat.cs @@ -109,15 +109,15 @@ namespace OpenRA public static bool WeaponValidForTarget(WeaponInfo weapon, Actor target) { - var unit = target.traits.GetOrDefault(); + var ownedInfo = target.Info.Traits.GetOrDefault(); - if (!weapon.ValidTargets.Contains(target.Info.Category)) + if (!weapon.ValidTargets.Contains(ownedInfo.TargetType)) return false; - if (weapon.Warheads.All( w => w.EffectivenessAgainst(target.Info.Traits.Get().Armor) <= 0)) + if (weapon.Warheads.All( w => w.EffectivenessAgainst(ownedInfo.Armor) <= 0)) return false; - if (weapon.Underwater && !target.Info.Traits.Get().WaterBound) + if (weapon.Underwater && !ownedInfo.WaterBound) return false; return true; diff --git a/OpenRA.Game/Traits/Building.cs b/OpenRA.Game/Traits/Building.cs index 257a985f1e..011b23ff79 100644 --- a/OpenRA.Game/Traits/Building.cs +++ b/OpenRA.Game/Traits/Building.cs @@ -34,6 +34,7 @@ namespace OpenRA.Traits public readonly bool Crewed = false; // replace with trait? public readonly int Sight = 0; public readonly bool WaterBound = false; + public readonly string TargetType = "Ground"; } public class BuildingInfo : OwnedActorInfo, ITraitInfo diff --git a/OpenRA.Game/Traits/Explodes.cs b/OpenRA.Game/Traits/Explodes.cs index 9243389881..847f917261 100644 --- a/OpenRA.Game/Traits/Explodes.cs +++ b/OpenRA.Game/Traits/Explodes.cs @@ -32,12 +32,7 @@ namespace OpenRA.Traits { var unit = self.traits.GetOrDefault(); var altitude = unit != null ? unit.Altitude : 0; - -// self.World.AddFrameEndTask( -// w => w.Add(new Bullet( -// "UnitExplode", e.Attacker.Owner, e.Attacker, -// self.CenterLocation.ToInt2(), self.CenterLocation.ToInt2(), -// altitude, altitude))); + Combat.DoExplosion(e.Attacker, "UnitExplode", self.CenterLocation.ToInt2(), altitude); } } } diff --git a/mods/ra/defaults.yaml b/mods/ra/defaults.yaml index 60dfe4458a..eef0389781 100644 --- a/mods/ra/defaults.yaml +++ b/mods/ra/defaults.yaml @@ -34,6 +34,7 @@ ^Plane: Category: Plane Unit: + TargetType: Air Selectable: ^Building: diff --git a/mods/ra/rules.yaml b/mods/ra/rules.yaml index 4e33e0b5a4..00652c3171 100755 --- a/mods/ra/rules.yaml +++ b/mods/ra/rules.yaml @@ -1012,6 +1012,7 @@ SS: Sight: 6 Speed: 6 WaterBound: yes + TargetType: Sub RenderUnit: Submarine: AttackBase: diff --git a/mods/ra/weapons.yaml b/mods/ra/weapons.yaml index 707b1a692e..b6bef2dd79 100644 --- a/mods/ra/weapons.yaml +++ b/mods/ra/weapons.yaml @@ -15,7 +15,7 @@ ZSU-23: ROF: 10 Range: 6 Report: AACANON3 - ValidTargets: Plane + ValidTargets: Air Bullet: Speed: 100 Warhead: @@ -41,7 +41,7 @@ Maverick: ROF: 3 Range: 6 Report: MISSILE7 - ValidTargets: Vehicle, Infantry, Plane, Building, Defense, Ship + ValidTargets: Ground, Air Missile: Speed: 30 Arm: 2 @@ -140,7 +140,7 @@ Dragon: ROF: 50 Range: 5 Report: MISSILE6 - ValidTargets: Vehicle, Infantry, Plane, Building, Defense, Ship + ValidTargets: Ground, Air Missile: Speed: 25 Arm: 2 @@ -166,7 +166,7 @@ Hellfire: ROF: 60 Range: 4 Report: MISSILE6 - ValidTargets: Vehicle, Infantry, Plane, Building, Defense, Ship + ValidTargets: Ground, Air Missile: Speed: 30 Arm: 2 @@ -298,7 +298,7 @@ MammothTusk: Range: 5 Report: MISSILE6 Burst: 2 - ValidTargets: Vehicle, Infantry, Plane, Building, Defense, Ship + ValidTargets: Ground, Air Missile: Speed: 30 Arm: 2 @@ -409,7 +409,7 @@ Nike: ROF: 20 Range: 7.5 Report: MISSILE1 - ValidTargets: Plane + ValidTargets: Air Missile: Arm: 3 High: true @@ -433,7 +433,7 @@ RedEye: ROF: 50 Range: 7.5 Report: MISSILE1 - ValidTargets: Plane + ValidTargets: Air Missile: Arm: 3 High: true @@ -477,7 +477,7 @@ Stinger: ROF: 60 Range: 9 Report: MISSILE6 - ValidTargets: Vehicle, Infantry, Plane, Building, Defense, Ship + ValidTargets: Ground, Air Missile: Arm: 3 High: true @@ -503,7 +503,7 @@ TorpTube: ROF: 60 Range: 9 Report: TORPEDO1 - ValidTargets: Ship, Building + ValidTargets: Ground, Sub Underwater: yes Bullet: Image: MISSILE @@ -538,7 +538,7 @@ TorpTube: DepthCharge: ROF: 60 Range: 5 - ValidTargets: Ship + ValidTargets: Sub Bullet: Speed: 5 Image: BOMB diff --git a/openra-data.sln b/openra-data.sln index c8dcfe480c..524a7575da 100644 --- a/openra-data.sln +++ b/openra-data.sln @@ -11,6 +11,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ra", "ra", "{59F0734D-2F86- mods\ra\rules.ini = mods\ra\rules.ini mods\ra\rules.yaml = mods\ra\rules.yaml mods\ra\sequences.xml = mods\ra\sequences.xml + mods\ra\voices.yaml = mods\ra\voices.yaml + mods\ra\weapons.yaml = mods\ra\weapons.yaml EndProjectSection EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "aftermath", "aftermath", "{8DA16338-FA8F-4CCD-8731-CBFCF5E31A78}"