diff --git a/OpenRA.Game/Traits/BaseBuilding.cs b/OpenRA.Game/Traits/BaseBuilding.cs index aab7fee07f..d77d59d957 100755 --- a/OpenRA.Game/Traits/BaseBuilding.cs +++ b/OpenRA.Game/Traits/BaseBuilding.cs @@ -11,6 +11,6 @@ namespace OpenRA.Traits { /* tag trait for "bases": mcv/fact */ - class BaseBuildingInfo : TraitInfo { } - class BaseBuilding { } + public class BaseBuildingInfo : TraitInfo { } + public class BaseBuilding { } } diff --git a/OpenRA.Mods.RA/Crates/GiveMcvCrateAction.cs b/OpenRA.Mods.RA/Crates/GiveMcvCrateAction.cs new file mode 100644 index 0000000000..56869ba7ff --- /dev/null +++ b/OpenRA.Mods.RA/Crates/GiveMcvCrateAction.cs @@ -0,0 +1,32 @@ +#region Copyright & License Information +/* + * Copyright 2007-2010 The OpenRA Developers (see AUTHORS) + * This file is part of OpenRA, which is free software. It is made + * available to you under the terms of the GNU General Public License + * as published by the Free Software Foundation. For more information, + * see LICENSE. + */ +#endregion + +using System.Linq; +using OpenRA.Traits; + +namespace OpenRA.Mods.RA.Crates +{ + class GiveMcvCrateActionInfo : GiveUnitCrateActionInfo + { + public override object Create(ActorInitializer init) { return new GiveMcvCrateAction(init.self, this); } + } + + class GiveMcvCrateAction : GiveUnitCrateAction + { + public GiveMcvCrateAction(Actor self, GiveMcvCrateActionInfo info) + : base(self, info) { } + + public override int GetSelectionShares(Actor collector) + { + var hasBase = self.World.Queries.OwnedBy[collector.Owner].WithTrait().Any(); + return hasBase ? 0 : base.GetSelectionShares(collector); + } + } +} diff --git a/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj b/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj index 20bc76ad7a..1149dfb147 100644 --- a/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj +++ b/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj @@ -78,6 +78,7 @@ + diff --git a/mods/ra/system.yaml b/mods/ra/system.yaml index ff4f2d084b..d78fdb67f7 100644 --- a/mods/ra/system.yaml +++ b/mods/ra/system.yaml @@ -242,6 +242,31 @@ CRATE: Power: AirstrikePower SelectionShares: 5 Effect: parabombs + GiveMcvCrateAction: + SelectionShares: 1000 + Unit: mcv + GiveUnitCrateAction@jeep: + SelectionShares: 5 + Unit: jeep + GiveUnitCrateAction@arty: + SelectionShares: 5 + Unit: arty + GiveUnitCrateAction@v2rl: + SelectionShares: 5 + Unit: v2rl + GiveUnitCrateAction@1tnk: + SelectionShares: 5 + Unit: 1tnk + GiveUnitCrateAction@2tnk: + SelectionShares: 5 + Unit: 2tnk + GiveUnitCrateAction@3tnk: + SelectionShares: 5 + Unit: 3tnk + GiveUnitCrateAction@4tnk: + SelectionShares: 5 + Unit: 4tnk + Unit: RenderUnit: BelowUnits: