Merge pull request #6189 from UberWaffe/6066_CratePrerequisites

6066 Crate Prerequisites
This commit is contained in:
Curtis Shmyr
2014-08-08 23:14:58 -06:00
4 changed files with 35 additions and 9 deletions

View File

@@ -30,6 +30,9 @@ namespace OpenRA.Mods.RA
[Desc("The earliest time (in ticks) that this crate action can occur on.")]
public readonly int TimeDelay = 0;
[Desc("Only allow this crate action when the collector has these prerequisites")]
public readonly string[] Prerequisites = { };
[Desc("Actor types that this crate action will not occur for.")]
[ActorReference] public string[] ExcludedActorTypes = { };
@@ -52,10 +55,13 @@ namespace OpenRA.Mods.RA
{
if (self.World.WorldTick < info.TimeDelay)
return 0;
if (info.ExcludedActorTypes.Contains(collector.Info.Name))
return 0;
if (info.Prerequisites.Any() && !collector.Owner.PlayerActor.Trait<TechTree>().HasPrerequisites(info.Prerequisites))
return 0;
return GetSelectionShares(collector);
}

View File

@@ -38,7 +38,12 @@ namespace OpenRA.Mods.RA.Crates
readonly List<CPos> usedCells = new List<CPos>();
public GiveUnitCrateAction(Actor self, GiveUnitCrateActionInfo info)
: base(self, info) { Info = info; }
: base(self, info)
{
Info = info;
if (!Info.Units.Any())
throw new YamlException("A GiveUnitCrateAction does not specify any units to give. This might be because the yaml is referring to 'Unit' rather than 'Units'.");
}
public bool CanGiveTo(Actor collector)
{

View File

@@ -21,59 +21,74 @@ CRATE:
GiveUnitCrateAction@Trike:
SelectionShares: 20
Units: trike
Prerequisites: techlevel.low, Light
GiveUnitCrateAction@Raider:
SelectionShares: 15
Units: raider
ValidRaces: ordos
Prerequisites: techlevel.low, Light
GiveUnitCrateAction@Quad:
SelectionShares: 40
Units: quad
Prerequisites: techlevel.medium, Light, Outpost
GiveUnitCrateAction@CombatA:
SelectionShares: 10
Units: combata
ValidRaces: atreides
Prerequisites: techlevel.low, Heavy
GiveUnitCrateAction@CombatH:
SelectionShares: 10
Units: combath
ValidRaces: harkonnen
Prerequisites: techlevel.low, Heavy
GiveUnitCrateAction@CombatO:
SelectionShares: 10
Units: combato
ValidRaces: ordos
Prerequisites: techlevel.low, Heavy
GiveUnitCrateAction@SiegeTank:
SelectionShares: 10
Units: siegetank
Prerequisites: techlevel.medium, Heavy, Outpost
GiveUnitCrateAction@MissileTank:
SelectionShares: 10
Units: missiletank
Prerequisites: techlevel.high, Hitech
GiveUnitCrateAction@StealthRaider:
SelectionShares: 7
Units: stealthraider
ValidRaces: ordos
Prerequisites: techlevel.medium, Hitech
GiveUnitCrateAction@Fremen:
SelectionShares: 5
Units: fremen,fremen
ValidRaces: atreides
Prerequisites: techlevel.high, Palace
GiveUnitCrateAction@Sardaukar:
SelectionShares: 8
Units: sardaukar,sardaukar
ValidRaces: harkonnen
Prerequisites: techlevel.high, Palace
GiveUnitCrateAction@Saboteur:
SelectionShares: 3
Units: saboteur,saboteur
ValidRaces: ordos
Prerequisites: techlevel.high, Palace
GiveUnitCrateAction@SonicTank:
SelectionShares: 5
Units: sonictank
ValidRaces: atreides
Prerequisites: techlevel.high, Research
GiveUnitCrateAction@Devast:
SelectionShares: 2
Units: devast
ValidRaces: harkonnen
Prerequisites: techlevel.high, Research
GiveUnitCrateAction@DeviatorTank:
SelectionShares: 5
Units: deviatortank
ValidRaces: ordos
Prerequisites: techlevel.high, Research
GiveMcvCrateAction@Atreides:
SelectionShares: 0
NoBaseSelectionShares: 9001

View File

@@ -102,37 +102,37 @@ CRATE:
SelectionShares: 7
Units: jeep
ValidRaces: allies
TimeDelay: 3000
Prerequisites: techlevel.low
GiveUnitCrateAction@arty:
SelectionShares: 6
Units: arty
ValidRaces: allies
TimeDelay: 4500
Prerequisites: techlevel.medium, dome
GiveUnitCrateAction@v2rl:
SelectionShares: 6
Units: v2rl
ValidRaces: soviet
TimeDelay: 4500
Prerequisites: techlevel.medium, dome
GiveUnitCrateAction@1tnk:
SelectionShares: 5
Units: 1tnk
ValidRaces: allies
TimeDelay: 3000
Prerequisites: techlevel.low
GiveUnitCrateAction@2tnk:
SelectionShares: 4
Units: 2tnk
ValidRaces: allies
TimeDelay: 4500
Prerequisites: techlevel.medium, fix
GiveUnitCrateAction@3tnk:
SelectionShares: 4
Units: 3tnk
ValidRaces: soviet
TimeDelay: 4500
Prerequisites: techlevel.medium, fix
GiveUnitCrateAction@4tnk:
SelectionShares: 3
Units: 4tnk
ValidRaces: soviet
TimeDelay: 9000
Prerequisites: techlevel.unrestricted, fix, techcenter
GiveUnitCrateAction@squadlight:
SelectionShares: 7
Units: e1,e1,e1,e3,e3