diff --git a/OpenRA.Mods.RA/Crate.cs b/OpenRA.Mods.RA/Crate.cs index ac4404930a..03ede79c5f 100644 --- a/OpenRA.Mods.RA/Crate.cs +++ b/OpenRA.Mods.RA/Crate.cs @@ -59,7 +59,7 @@ namespace OpenRA.Mods.RA public void OnCrush(Actor crusher) { var shares = self.TraitsImplementing().Select( - a => Pair.New(a, a.GetSelectionSharesOuter(crusher))); + a => Pair.New(a, a.GetSelectionShares(crusher))); var totalShares = shares.Sum(a => a.Second); var n = self.World.SharedRandom.Next(totalShares); diff --git a/OpenRA.Mods.RA/CrateAction.cs b/OpenRA.Mods.RA/CrateAction.cs index 1d25298997..42fa1e2fa8 100644 --- a/OpenRA.Mods.RA/CrateAction.cs +++ b/OpenRA.Mods.RA/CrateAction.cs @@ -19,7 +19,6 @@ namespace OpenRA.Mods.RA public int SelectionShares = 10; public string Effect = null; public string Notification = null; - public string[] ExcludedActorTypes = { }; public virtual object Create(ActorInitializer init) { return new CrateAction(init.self, this); } } @@ -35,14 +34,6 @@ namespace OpenRA.Mods.RA this.info = info; } - public int GetSelectionSharesOuter(Actor collector) - { - if (info.ExcludedActorTypes.Contains(collector.Info.Name)) - return 0; - - return GetSelectionShares(collector); - } - public virtual int GetSelectionShares(Actor collector) { return info.SelectionShares; diff --git a/OpenRA.Mods.RA/Crates/CloakCrateAction.cs b/OpenRA.Mods.RA/Crates/CloakCrateAction.cs index 2b92dd3127..0254f23845 100644 --- a/OpenRA.Mods.RA/Crates/CloakCrateAction.cs +++ b/OpenRA.Mods.RA/Crates/CloakCrateAction.cs @@ -32,8 +32,8 @@ namespace OpenRA.Mods.RA.Crates public override int GetSelectionShares(Actor collector) { - return collector.HasTrait() - ? 0 : base.GetSelectionShares(collector); + return collector.HasTrait() && !collector.HasTrait() + ? base.GetSelectionShares(collector) : 0; } public override void Activate(Actor collector) @@ -61,4 +61,7 @@ namespace OpenRA.Mods.RA.Crates base.Activate(collector); } } + + public class AcceptsCloakCrateInfo : TraitInfo {} + public class AcceptsCloakCrate {} } diff --git a/mods/cnc/rules/defaults.yaml b/mods/cnc/rules/defaults.yaml index ef093279b2..69cafae728 100644 --- a/mods/cnc/rules/defaults.yaml +++ b/mods/cnc/rules/defaults.yaml @@ -28,6 +28,7 @@ ActorLostNotification: Notification: unitlost.aud AttackMove: + AcceptsCloakCrate: ^Tank: AppearsOnRadar: @@ -59,6 +60,7 @@ ActorLostNotification: Notification: unitlost.aud AttackMove: + AcceptsCloakCrate: ^Helicopter: AppearsOnRadar: diff --git a/mods/cnc/rules/system.yaml b/mods/cnc/rules/system.yaml index 7e3ff222d8..e48944124e 100644 --- a/mods/cnc/rules/system.yaml +++ b/mods/cnc/rules/system.yaml @@ -184,7 +184,6 @@ CRATE: CloakSound: appear1.aud UncloakSound: appear1.aud Effect: stealth - ExcludedActorTypes: e1,e2,e3,e4,e5,e6,rmbo,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10 GiveMcvCrateAction: SelectionShares: 2 NoBaseSelectionShares: 9001 diff --git a/mods/cnc/rules/vehicles.yaml b/mods/cnc/rules/vehicles.yaml index f30af2c9b8..786f4f44d8 100644 --- a/mods/cnc/rules/vehicles.yaml +++ b/mods/cnc/rules/vehicles.yaml @@ -34,6 +34,7 @@ MCV: LeavesHusk: HuskActor: MCV.Husk -GainsExperience: + -AcceptsCloakCrate: HARV: Inherits: ^Tank