Merge pull request #7805 from penev92/bleed_prerequisites

Make buildings explicitly provide their names as prerequisites
This commit is contained in:
Paul Chote
2015-05-08 17:29:22 +01:00
20 changed files with 227 additions and 159 deletions

View File

@@ -19,14 +19,9 @@ namespace OpenRA.Mods.Common.Lint
{
public void Run(Action<string> emitError, Action<string> emitWarning, Map map)
{
// Buildings provide their actor names as a prerequisite
var buildingPrereqs = map.Rules.Actors.Where(a => a.Value.Traits.Contains<BuildingInfo>())
.Select(a => a.Key);
// ProvidesCustomPrerequisite allows arbitrary prereq definitions
// ProvidesPrerequisite allows arbitrary prereq definitions
var customPrereqs = map.Rules.Actors.SelectMany(a => a.Value.Traits
.WithInterface<ProvidesCustomPrerequisiteInfo>())
.Select(p => p.Prerequisite);
.WithInterface<ProvidesPrerequisiteInfo>().Select(p => p.Prerequisite ?? a.Value.Name));
// ProvidesTechPrerequisite allows arbitrary prereq definitions
// (but only one group at a time during gameplay)
@@ -34,7 +29,7 @@ namespace OpenRA.Mods.Common.Lint
.WithInterface<ProvidesTechPrerequisiteInfo>())
.SelectMany(p => p.Prerequisites);
var providedPrereqs = buildingPrereqs.Concat(customPrereqs).Concat(techPrereqs);
var providedPrereqs = customPrereqs.Concat(techPrereqs);
// TODO: this check is case insensitive while the real check in-game is not
foreach (var i in map.Rules.Actors)

View File

@@ -350,7 +350,7 @@
<Compile Include="Traits\Player\PlaceBuilding.cs" />
<Compile Include="Traits\Player\PlayerStatistics.cs" />
<Compile Include="Traits\Player\ProductionQueue.cs" />
<Compile Include="Traits\Player\ProvidesCustomPrerequisite.cs" />
<Compile Include="Traits\Player\ProvidesPrerequisite.cs" />
<Compile Include="Traits\Player\ProvidesTechPrerequisite.cs" />
<Compile Include="Traits\Player\StrategicVictoryConditions.cs" />
<Compile Include="Traits\Player\TechTree.cs" />

View File

@@ -17,8 +17,7 @@ namespace OpenRA.Mods.Common.Traits
[Desc("The prerequisite names that must be available before this can be built.",
"This can be prefixed with ! to invert the prerequisite (disabling production if the prerequisite is available)",
"and/or ~ to hide the actor from the production palette if the prerequisite is not available.",
"Prerequisites are granted by actors with the Building trait (with a prerequisite string given by the lower case actor name)",
"and by the ProvidesCustomPrerequisite trait.")]
"Prerequisites are granted by actors with the ProvidesPrerequisite trait.")]
public readonly string[] Prerequisites = { };
[Desc("Production queue(s) that can produce this.")]

View File

@@ -106,7 +106,7 @@ namespace OpenRA.Mods.Common.Traits
}
}
public class Building : IOccupySpace, INotifySold, INotifyTransform, ISync, ITechTreePrerequisite, INotifyCreated, INotifyAddedToWorld, INotifyRemovedFromWorld
public class Building : IOccupySpace, INotifySold, INotifyTransform, ISync, INotifyCreated, INotifyAddedToWorld, INotifyRemovedFromWorld
{
public readonly BuildingInfo Info;
public bool BuildComplete { get; private set; }
@@ -131,8 +131,6 @@ namespace OpenRA.Mods.Common.Traits
public CPos TopLeft { get { return topLeft; } }
public WPos CenterPosition { get; private set; }
public IEnumerable<string> ProvidesPrerequisites { get { yield return self.Info.Name; } }
public Building(ActorInitializer init, BuildingInfo info)
{
this.self = init.Self;

View File

@@ -10,36 +10,40 @@
using System.Collections.Generic;
using System.Linq;
using OpenRA.Primitives;
using OpenRA.Traits;
namespace OpenRA.Mods.Common.Traits
{
public class ProvidesCustomPrerequisiteInfo : ITraitInfo
public class ProvidesPrerequisiteInfo : ITraitInfo
{
[Desc("The prerequisite type that this provides")]
[Desc("The prerequisite type that this provides. If left empty it defaults to the actor's name.")]
public readonly string Prerequisite = null;
[Desc("Only grant this prerequisite when you have these prerequisites")]
[Desc("Only grant this prerequisite when you have these prerequisites.")]
public readonly string[] RequiresPrerequisites = { };
[Desc("Only grant this prerequisite for certain factions")]
[Desc("Only grant this prerequisite for certain factions.")]
public readonly string[] Race = { };
[Desc("Should it recheck everything when it is captured?")]
public readonly bool ResetOnOwnerChange = false;
public object Create(ActorInitializer init) { return new ProvidesCustomPrerequisite(init, this); }
public object Create(ActorInitializer init) { return new ProvidesPrerequisite(init, this); }
}
public class ProvidesCustomPrerequisite : ITechTreePrerequisite, INotifyOwnerChanged
public class ProvidesPrerequisite : ITechTreePrerequisite, INotifyOwnerChanged
{
readonly ProvidesCustomPrerequisiteInfo info;
readonly ProvidesPrerequisiteInfo info;
readonly string prerequisite;
bool enabled = true;
public ProvidesCustomPrerequisite(ActorInitializer init, ProvidesCustomPrerequisiteInfo info)
public ProvidesPrerequisite(ActorInitializer init, ProvidesPrerequisiteInfo info)
{
this.info = info;
prerequisite = info.Prerequisite;
if (string.IsNullOrEmpty(prerequisite))
prerequisite = init.Self.Info.Name;
var race = init.Contains<RaceInit>() ? init.Get<RaceInit, string>() : init.Self.Owner.Country.Race;
@@ -53,7 +57,7 @@ namespace OpenRA.Mods.Common.Traits
if (!enabled)
yield break;
yield return info.Prerequisite;
yield return prerequisite;
}
}

View File

@@ -931,6 +931,18 @@ namespace OpenRA.Mods.Common.UtilityCommands
}
}
if (engineVersion < 20150504)
{
// Made buildings grant prerequisites explicitly.
if (depth == 0 && node.Value.Nodes.Exists(n => n.Key == "Inherits" &&
(n.Value.Value == "^Building" || n.Value.Value == "^BaseBuilding")))
node.Value.Nodes.Add(new MiniYamlNode("ProvidesCustomPrerequisite@buildingname", ""));
// Rename the ProvidesCustomPrerequisite trait.
if (node.Key.StartsWith("ProvidesCustomPrerequisite"))
node.Key = node.Key.Replace("ProvidesCustomPrerequisite", "ProvidesPrerequisite");
}
UpgradeActorRules(engineVersion, ref node.Value.Nodes, node, depth + 1);
}
}

View File

@@ -68,6 +68,7 @@ FACT:
WithBuildingPlacedAnimation:
Power:
Amount: 0
ProvidesPrerequisite@buildingname:
FACT.GDI:
Inherits: FACT
@@ -100,7 +101,7 @@ NUKE:
Tooltip:
Name: Power Plant
Description: Generates power
ProvidesCustomPrerequisite:
ProvidesPrerequisite:
Prerequisite: anypower
Buildable:
BuildPaletteOrder: 10
@@ -125,7 +126,7 @@ NUK2:
Tooltip:
Name: Advanced Power Plant
Description: Provides more power, cheaper than the \nstandard Power Plant
ProvidesCustomPrerequisite:
ProvidesPrerequisite:
Prerequisite: anypower
Buildable:
BuildPaletteOrder: 30
@@ -185,6 +186,7 @@ PROC:
WithResources:
Power:
Amount: -50
ProvidesPrerequisite@buildingname:
SILO:
Inherits: ^BaseBuilding
@@ -228,7 +230,7 @@ PYLE:
Tooltip:
Name: Barracks
Description: Trains infantry
ProvidesCustomPrerequisite:
ProvidesPrerequisite:
Prerequisite: barracks
Buildable:
BuildPaletteOrder: 40
@@ -260,6 +262,7 @@ PYLE:
ProductionBar:
Power:
Amount: -20
ProvidesPrerequisite@buildingname:
HAND:
Inherits: ^BaseBuilding
@@ -268,7 +271,7 @@ HAND:
Tooltip:
Name: Hand of Nod
Description: Trains infantry
ProvidesCustomPrerequisite:
ProvidesPrerequisite:
Prerequisite: barracks
Buildable:
BuildPaletteOrder: 40
@@ -297,6 +300,7 @@ HAND:
ProductionBar:
Power:
Amount: -20
ProvidesPrerequisite@buildingname:
AFLD:
Inherits: ^BaseBuilding
@@ -305,7 +309,7 @@ AFLD:
Tooltip:
Name: Airstrip
Description: Provides a dropzone\nfor vehicle reinforcements
ProvidesCustomPrerequisite:
ProvidesPrerequisite:
Prerequisite: vehicleproduction
Buildable:
BuildPaletteOrder: 50
@@ -337,6 +341,7 @@ AFLD:
ProductionBar:
Power:
Amount: -30
ProvidesPrerequisite@buildingname:
WEAP:
Inherits: ^BaseBuilding
@@ -345,7 +350,7 @@ WEAP:
Tooltip:
Name: Weapons Factory
Description: Produces vehicles
ProvidesCustomPrerequisite:
ProvidesPrerequisite:
Prerequisite: vehicleproduction
Buildable:
BuildPaletteOrder: 50
@@ -378,6 +383,7 @@ WEAP:
ProductionBar:
Power:
Amount: -30
ProvidesPrerequisite@buildingname:
HPAD:
Inherits: ^BaseBuilding
@@ -423,6 +429,7 @@ HPAD:
ProductionType: Aircraft.Nod
Power:
Amount: -10
ProvidesPrerequisite@buildingname:
HQ:
Inherits: ^BaseBuilding
@@ -431,7 +438,7 @@ HQ:
Tooltip:
Name: Communications Center
Description: Provides radar & Air Strike support power. \nUnlocks higher-tech units & buildings. \nRequires power to operate.
ProvidesCustomPrerequisite:
ProvidesPrerequisite:
Prerequisite: anyhq
Buildable:
BuildPaletteOrder: 70
@@ -502,6 +509,7 @@ FIX:
WithRepairAnimation:
Power:
Amount: -30
ProvidesPrerequisite@buildingname:
EYE:
Inherits: ^BaseBuilding
@@ -510,7 +518,7 @@ EYE:
Tooltip:
Name: Advanced Communications Center
Description: Provides radar & Orbital Ion Cannon support power. \nUnlocks Mammoth Tank & Commando. \nRequires power to operate.
ProvidesCustomPrerequisite:
ProvidesPrerequisite:
Prerequisite: anyhq
Buildable:
BuildPaletteOrder: 100
@@ -549,6 +557,7 @@ EYE:
SupportPowerChargeBar:
Power:
Amount: -200
ProvidesPrerequisite@buildingname:
TMPL:
Inherits: ^BaseBuilding
@@ -557,7 +566,7 @@ TMPL:
Tooltip:
Name: Temple of Nod
Description: Provides Nuclear Strike support power. \nUnlocks Stealth Tank, Chem. Warrior & Obelisk of Light. \nRequires power to operate.
ProvidesCustomPrerequisite:
ProvidesPrerequisite:
Prerequisite: anyhq
Buildable:
BuildPaletteOrder: 100
@@ -595,6 +604,7 @@ TMPL:
SupportPowerChargeBar:
Power:
Amount: -150
ProvidesPrerequisite@buildingname:
GUN:
Inherits: ^BaseBuilding

View File

@@ -36,6 +36,7 @@ HOSP:
HuskActor: HOSP.Husk
Bib:
HasMinibib: Yes
ProvidesPrerequisite@buildingname:
HOSP.Husk:
Inherits: ^CivBuildingHusk
@@ -70,6 +71,7 @@ BIO:
RallyPoint: -1,-1
LeavesHusk:
HuskActor: BIO.Husk
ProvidesPrerequisite@buildingname:
BIO.Husk:
Inherits: ^CivBuildingHusk
@@ -96,4 +98,5 @@ MISS:
Bib:
HasMinibib: Yes
WithMakeAnimation:
ProvidesPrerequisite@buildingname:

View File

@@ -74,4 +74,6 @@ sietch:
-ExternalCapturable:
-ExternalCapturableBar:
Power:
Amount: 0
Amount: 0
ProvidesPrerequisite@buildingname:

View File

@@ -105,6 +105,7 @@ power:
Power:
Amount: 100
ScalePowerWithHealth:
ProvidesPrerequisite@buildingname:
barracks:
Inherits: ^Building
@@ -141,16 +142,16 @@ barracks:
Produces: Infantry
PrimaryBuilding:
ProductionBar:
ProvidesCustomPrerequisite@atreides:
ProvidesPrerequisite@atreides:
Prerequisite: barracks.atreides
Race: atreides
ProvidesCustomPrerequisite@ordos:
ProvidesPrerequisite@ordos:
Prerequisite: barracks.ordos
Race: ordos
ProvidesCustomPrerequisite@harkonnen:
ProvidesPrerequisite@harkonnen:
Prerequisite: barracks.harkonnen
Race: harkonnen
ProvidesCustomPrerequisite@medics:
ProvidesPrerequisite@medics:
Prerequisite: barracks.medics
Race: atreides, ordos
Power:
@@ -160,6 +161,7 @@ barracks:
RaceImages:
atreides: barracks.atreides
ordos: barracks.ordos
ProvidesPrerequisite@buildingname:
refinery:
Inherits: ^Building
@@ -211,6 +213,7 @@ refinery:
Amount: -30
WithIdleOverlay@TOP:
Sequence: idle-top
ProvidesPrerequisite@buildingname:
silo:
Inherits: ^Building
@@ -287,16 +290,16 @@ light:
Produces: Vehicle
PrimaryBuilding:
ProductionBar:
ProvidesCustomPrerequisite@atreides:
ProvidesPrerequisite@atreides:
Prerequisite: light.atreides
Race: atreides
ProvidesCustomPrerequisite@ordos:
ProvidesPrerequisite@ordos:
Prerequisite: light.ordos
Race: ordos
ProvidesCustomPrerequisite@harkonnen:
ProvidesPrerequisite@harkonnen:
Prerequisite: light.harkonnen
Race: harkonnen
ProvidesCustomPrerequisite@TRIKES:
ProvidesPrerequisite@TRIKES:
Prerequisite: light.regulartrikes
Race: atreides, harkonnen
WithProductionOverlay@WELDING:
@@ -338,13 +341,13 @@ heavy:
Produces: Armor
PrimaryBuilding:
ProductionBar:
ProvidesCustomPrerequisite@atreides:
ProvidesPrerequisite@atreides:
Prerequisite: heavy.atreides
Race: atreides
ProvidesCustomPrerequisite@ordos:
ProvidesPrerequisite@ordos:
Prerequisite: heavy.ordos
Race: ordos
ProvidesCustomPrerequisite@harkonnen:
ProvidesPrerequisite@harkonnen:
Prerequisite: heavy.harkonnen
Race: harkonnen
RenderBuilding:
@@ -359,6 +362,7 @@ heavy:
Sequence: idle-top
Power:
Amount: -30
ProvidesPrerequisite@buildingname:
radar:
Inherits: ^Building
@@ -400,6 +404,7 @@ radar:
PauseOnLowPower: yes
Power:
Amount: -40
ProvidesPrerequisite@buildingname:
starport:
Inherits: ^Building
@@ -447,17 +452,18 @@ starport:
RequiresPower:
CanPowerDown:
DisabledOverlay:
ProvidesCustomPrerequisite@atreides:
ProvidesPrerequisite@atreides:
Prerequisite: starport.atreides
Race: atreides
ProvidesCustomPrerequisite@ordos:
ProvidesPrerequisite@ordos:
Prerequisite: starport.ordos
Race: ordos
ProvidesCustomPrerequisite@harkonnen:
ProvidesPrerequisite@harkonnen:
Prerequisite: starport.harkonnen
Race: harkonnen
Power:
Amount: -40
ProvidesPrerequisite@buildingname:
wall:
Buildable:
@@ -653,6 +659,7 @@ repair:
Palette: repairlights
Power:
Amount: -10
ProvidesPrerequisite@buildingname:
hightech:
Inherits: ^Building
@@ -691,6 +698,7 @@ hightech:
Sequence: production-welding
Power:
Amount: -40
ProvidesPrerequisite@buildingname:
research:
Inherits: ^Building
@@ -735,6 +743,7 @@ research:
Sequence: idle-lights
Power:
Amount: -40
ProvidesPrerequisite@buildingname:
palace:
Inherits: ^Building
@@ -771,10 +780,10 @@ palace:
Range: 4
Power:
Amount: -50
ProvidesCustomPrerequisite@airstrike:
ProvidesPrerequisite@airstrike:
Prerequisite: palace.airstrike
Race: atreides, ordos
ProvidesCustomPrerequisite@nuke:
ProvidesPrerequisite@nuke:
Prerequisite: palace.nuke
Race: harkonnen
AirstrikePower:
@@ -808,6 +817,7 @@ palace:
DisabledOverlay:
RequiresPower:
SupportPowerChargeBar:
ProvidesPrerequisite@buildingname:
conyard.atreides:
Inherits: conyard

View File

@@ -880,7 +880,7 @@ Rules:
Building:
Adjacent: 99
TerrainTypes: Clear,Road
ProvidesCustomPrerequisite:
ProvidesPrerequisite:
Prerequisite: MNLYVV
Buildable:
Queue: Building

View File

@@ -2254,15 +2254,15 @@ Rules:
WEAP:
Buildable:
Prerequisites: proc, ~techlevel.low, mainland
ProvidesCustomPrerequisite:
ProvidesPrerequisite:
Prerequisite: givefix
MAINLAND:
Tooltip:
Name: Reach the mainland
ProvidesCustomPrerequisite:
ProvidesPrerequisite:
Prerequisite: mainland
HPAD:
ProvidesCustomPrerequisite:
ProvidesPrerequisite:
Prerequisite: givefix
FIX:
Buildable:

View File

@@ -77,6 +77,7 @@ FCOM:
Bib:
Power:
Amount: -200
ProvidesPrerequisite@buildingname:
HOSP:
Inherits: ^TechBuilding
@@ -101,6 +102,7 @@ HOSP:
UseDeathTypeSuffix: false
WithBuildingExplosion:
Delay: 1
ProvidesPrerequisite@buildingname:
V01:
Inherits: ^CivBuilding
@@ -310,6 +312,7 @@ MISS:
UseDeathTypeSuffix: false
WithBuildingExplosion:
Delay: 1
ProvidesPrerequisite@buildingname:
BIO:
Inherits: ^TechBuilding
@@ -326,6 +329,7 @@ BIO:
UseDeathTypeSuffix: false
WithBuildingExplosion:
Delay: 1
ProvidesPrerequisite@buildingname:
OILB:
Inherits: ^TechBuilding

View File

@@ -134,30 +134,31 @@ SPEN:
ProductionBar:
Power:
Amount: -30
ProvidesCustomPrerequisite@soviet:
ProvidesPrerequisite@soviet:
Race: soviet, russia, ukraine
Prerequisite: ships.soviet
ProvidesCustomPrerequisite@sovietvanilla:
ProvidesPrerequisite@sovietvanilla:
Race: soviet
Prerequisite: ships.sovietvanilla
ProvidesCustomPrerequisite@russia:
ProvidesPrerequisite@russia:
Race: russia
Prerequisite: ships.russia
ProvidesCustomPrerequisite@ukraine:
ProvidesPrerequisite@ukraine:
Race: ukraine
Prerequisite: ships.ukraine
ProvidesCustomPrerequisite@sovietstructure:
ProvidesPrerequisite@sovietstructure:
RequiresPrerequisites: structures.soviet
Prerequisite: ships.soviet
ProvidesCustomPrerequisite@sovietvanillastructure:
ProvidesPrerequisite@sovietvanillastructure:
RequiresPrerequisites: structures.sovietvanilla
Prerequisite: ships.sovietvanilla
ProvidesCustomPrerequisite@russianstructure:
ProvidesPrerequisite@russianstructure:
RequiresPrerequisites: structures.russia
Prerequisite: ships.russia
ProvidesCustomPrerequisite@ukrainianstructure:
ProvidesPrerequisite@ukrainianstructure:
RequiresPrerequisites: structures.ukraine
Prerequisite: ships.ukraine
ProvidesPrerequisite@buildingname:
SYRD:
Inherits: ^Building
@@ -212,36 +213,37 @@ SYRD:
ProductionBar:
Power:
Amount: -30
ProvidesCustomPrerequisite@allies:
ProvidesPrerequisite@allies:
Race: allies, england, france, germany
Prerequisite: ships.allies
ProvidesCustomPrerequisite@alliesvanilla:
ProvidesPrerequisite@alliesvanilla:
Race: allies
Prerequisite: ships.alliesvanilla
ProvidesCustomPrerequisite@england:
ProvidesPrerequisite@england:
Race: england
Prerequisite: ships.england
ProvidesCustomPrerequisite@france:
ProvidesPrerequisite@france:
Race: france
Prerequisite: ships.france
ProvidesCustomPrerequisite@germany:
ProvidesPrerequisite@germany:
Race: germany
Prerequisite: ships.germany
ProvidesCustomPrerequisite@alliedstructure:
ProvidesPrerequisite@alliedstructure:
RequiresPrerequisites: structures.allies
Prerequisite: ships.allies
ProvidesCustomPrerequisite@alliedvanillastructure:
ProvidesPrerequisite@alliedvanillastructure:
RequiresPrerequisites: structures.alliesvanilla
Prerequisite: ships.alliesvanilla
ProvidesCustomPrerequisite@englishstructure:
ProvidesPrerequisite@englishstructure:
RequiresPrerequisites: structures.england
Prerequisite: ships.england
ProvidesCustomPrerequisite@frenchstructure:
ProvidesPrerequisite@frenchstructure:
RequiresPrerequisites: structures.france
Prerequisite: ships.france
ProvidesCustomPrerequisite@germanstructure:
ProvidesPrerequisite@germanstructure:
RequiresPrerequisites: structures.germany
Prerequisite: ships.germany
ProvidesPrerequisite@buildingname:
IRON:
Inherits: ^Building
@@ -315,10 +317,10 @@ PDOX:
Range: 10c0
Bib:
HasMinibib: Yes
ProvidesCustomPrerequisite@germany:
ProvidesPrerequisite@germany:
Race: germany
Prerequisite: pdox.germany
ProvidesCustomPrerequisite@germanstructure:
ProvidesPrerequisite@germanstructure:
RequiresPrerequisites: structures.germany
Prerequisite: pdox.germany
ChronoshiftPower@chronoshift:
@@ -356,6 +358,7 @@ PDOX:
Amount: -200
MustBeDestroyed:
RequiredForShortGame: false
ProvidesPrerequisite@buildingname:
TSLA:
Inherits: ^Defense
@@ -400,6 +403,7 @@ TSLA:
Amount: -100
DetectCloaked:
Range: 8
ProvidesPrerequisite@buildingname:
AGUN:
Inherits: ^Defense
@@ -481,6 +485,7 @@ DOME:
RenderDetectionCircle:
Power:
Amount: -40
ProvidesPrerequisite@buildingname:
PBOX:
Inherits: ^Defense
@@ -655,6 +660,7 @@ FTUR:
Amount: -20
DetectCloaked:
Range: 6
ProvidesPrerequisite@buildingname:
SAM:
Inherits: ^Defense
@@ -713,7 +719,7 @@ ATEK:
Tooltip:
Name: Allied Tech Center
Description: Provides Allied advanced technologies.\n Special Ability: GPS Satellite
ProvidesCustomPrerequisite:
ProvidesPrerequisite:
Prerequisite: techcenter
Building:
Footprint: xx xx
@@ -739,6 +745,7 @@ ATEK:
DisabledOverlay:
Power:
Amount: -200
ProvidesPrerequisite@buildingname:
WEAP:
Inherits: ^Building
@@ -769,64 +776,65 @@ WEAP:
ExitCell: 1,2
Production:
Produces: Vehicle
ProvidesCustomPrerequisite@allies:
ProvidesPrerequisite@allies:
Race: allies, england, france, germany
Prerequisite: vehicles.allies
ProvidesCustomPrerequisite@alliesvanilla:
ProvidesPrerequisite@alliesvanilla:
Race: allies
Prerequisite: vehicles.alliesvanilla
ProvidesCustomPrerequisite@england:
ProvidesPrerequisite@england:
Race: england
Prerequisite: vehicles.england
ProvidesCustomPrerequisite@france:
ProvidesPrerequisite@france:
Race: france
Prerequisite: vehicles.france
ProvidesCustomPrerequisite@germany:
ProvidesPrerequisite@germany:
Race: germany
Prerequisite: vehicles.germany
ProvidesCustomPrerequisite@soviet:
ProvidesPrerequisite@soviet:
Race: soviet, russia, ukraine
Prerequisite: vehicles.soviet
ProvidesCustomPrerequisite@sovietvanilla:
ProvidesPrerequisite@sovietvanilla:
Race: soviet
Prerequisite: vehicles.sovietvanilla
ProvidesCustomPrerequisite@russia:
ProvidesPrerequisite@russia:
Race: russia
Prerequisite: vehicles.russia
ProvidesCustomPrerequisite@ukraine:
ProvidesPrerequisite@ukraine:
Race: ukraine
Prerequisite: vehicles.ukraine
ProvidesCustomPrerequisite@alliedstructure:
ProvidesPrerequisite@alliedstructure:
RequiresPrerequisites: structures.allies
Prerequisite: vehicles.allies
ProvidesCustomPrerequisite@alliedvanillastructure:
ProvidesPrerequisite@alliedvanillastructure:
RequiresPrerequisites: structures.alliesvanilla
Prerequisite: vehicles.alliesvanilla
ProvidesCustomPrerequisite@englishstructure:
ProvidesPrerequisite@englishstructure:
RequiresPrerequisites: structures.england
Prerequisite: vehicles.england
ProvidesCustomPrerequisite@frenchstructure:
ProvidesPrerequisite@frenchstructure:
RequiresPrerequisites: structures.france
Prerequisite: vehicles.france
ProvidesCustomPrerequisite@germanstructure:
ProvidesPrerequisite@germanstructure:
RequiresPrerequisites: structures.germany
Prerequisite: vehicles.germany
ProvidesCustomPrerequisite@sovietstructure:
ProvidesPrerequisite@sovietstructure:
RequiresPrerequisites: structures.soviet
Prerequisite: vehicles.soviet
ProvidesCustomPrerequisite@sovietvanillastructure:
ProvidesPrerequisite@sovietvanillastructure:
RequiresPrerequisites: structures.sovietvanilla
Prerequisite: vehicles.sovietvanilla
ProvidesCustomPrerequisite@russianstructure:
ProvidesPrerequisite@russianstructure:
RequiresPrerequisites: structures.russia
Prerequisite: vehicles.russia
ProvidesCustomPrerequisite@ukrainianstructure:
ProvidesPrerequisite@ukrainianstructure:
RequiresPrerequisites: structures.ukraine
Prerequisite: vehicles.ukraine
PrimaryBuilding:
ProductionBar:
Power:
Amount: -30
ProvidesPrerequisite@buildingname:
FACT:
Inherits: ^Building
@@ -837,31 +845,31 @@ FACT:
Queue: Building
BuildPaletteOrder: 1000
Prerequisites: ~disabled
ProvidesCustomPrerequisite@allies:
ProvidesPrerequisite@allies:
Race: allies, england, france, germany
Prerequisite: structures.allies
ProvidesCustomPrerequisite@alliesvanilla:
ProvidesPrerequisite@alliesvanilla:
Race: allies
Prerequisite: structures.alliesvanilla
ProvidesCustomPrerequisite@england:
ProvidesPrerequisite@england:
Race: england
Prerequisite: structures.england
ProvidesCustomPrerequisite@france:
ProvidesPrerequisite@france:
Race: france
Prerequisite: structures.france
ProvidesCustomPrerequisite@germany:
ProvidesPrerequisite@germany:
Race: germany
Prerequisite: structures.germany
ProvidesCustomPrerequisite@soviet:
ProvidesPrerequisite@soviet:
Race: soviet, russia, ukraine
Prerequisite: structures.soviet
ProvidesCustomPrerequisite@sovietvanilla:
ProvidesPrerequisite@sovietvanilla:
Race: soviet
Prerequisite: structures.sovietvanilla
ProvidesCustomPrerequisite@russia:
ProvidesPrerequisite@russia:
Race: russia
Prerequisite: structures.russia
ProvidesCustomPrerequisite@ukraine:
ProvidesPrerequisite@ukraine:
Race: ukraine
Prerequisite: structures.ukraine
Health:
@@ -900,6 +908,7 @@ FACT:
UseDeathTypeSuffix: false
WithBuildingExplosion:
Delay: 1
ProvidesPrerequisite@buildingname:
PROC:
Inherits: ^Building
@@ -951,6 +960,7 @@ PROC:
UseDeathTypeSuffix: false
WithBuildingExplosion:
Delay: 1
ProvidesPrerequisite@buildingname:
SILO:
Inherits: ^Building
@@ -1015,36 +1025,37 @@ HPAD:
PrimaryBuilding:
Power:
Amount: -10
ProvidesCustomPrerequisite@allies:
ProvidesPrerequisite@allies:
Race: allies, england, france, germany
Prerequisite: aircraft.allies
ProvidesCustomPrerequisite@alliesvanilla:
ProvidesPrerequisite@alliesvanilla:
Race: allies
Prerequisite: aircraft.alliesvanilla
ProvidesCustomPrerequisite@england:
ProvidesPrerequisite@england:
Race: england
Prerequisite: aircraft.england
ProvidesCustomPrerequisite@france:
ProvidesPrerequisite@france:
Race: france
Prerequisite: aircraft.france
ProvidesCustomPrerequisite@germany:
ProvidesPrerequisite@germany:
Race: germany
Prerequisite: aircraft.germany
ProvidesCustomPrerequisite@alliedstructure:
ProvidesPrerequisite@alliedstructure:
RequiresPrerequisites: structures.allies
Prerequisite: aircraft.allies
ProvidesCustomPrerequisite@alliedvanillastructure:
ProvidesPrerequisite@alliedvanillastructure:
RequiresPrerequisites: structures.alliesvanilla
Prerequisite: aircraft.alliesvanilla
ProvidesCustomPrerequisite@englishstructure:
ProvidesPrerequisite@englishstructure:
RequiresPrerequisites: structures.england
Prerequisite: aircraft.england
ProvidesCustomPrerequisite@frenchstructure:
ProvidesPrerequisite@frenchstructure:
RequiresPrerequisites: structures.france
Prerequisite: aircraft.france
ProvidesCustomPrerequisite@germanstructure:
ProvidesPrerequisite@germanstructure:
RequiresPrerequisites: structures.germany
Prerequisite: aircraft.germany
ProvidesPrerequisite@buildingname:
AFLD:
Inherits: ^Building
@@ -1075,28 +1086,28 @@ AFLD:
Production:
Produces: Aircraft, Plane
Reservable:
ProvidesCustomPrerequisite@soviet:
ProvidesPrerequisite@soviet:
Race: soviet, russia, ukraine
Prerequisite: aircraft.soviet
ProvidesCustomPrerequisite@sovietvanilla:
ProvidesPrerequisite@sovietvanilla:
Race: soviet
Prerequisite: aircraft.sovietvanilla
ProvidesCustomPrerequisite@russia:
ProvidesPrerequisite@russia:
Race: russia
Prerequisite: aircraft.russia
ProvidesCustomPrerequisite@ukraine:
ProvidesPrerequisite@ukraine:
Race: ukraine
Prerequisite: aircraft.ukraine
ProvidesCustomPrerequisite@sovietstructure:
ProvidesPrerequisite@sovietstructure:
RequiresPrerequisites: structures.soviet
Prerequisite: aircraft.soviet
ProvidesCustomPrerequisite@sovietvanillastructure:
ProvidesPrerequisite@sovietvanillastructure:
RequiresPrerequisites: structures.sovietvanilla
Prerequisite: aircraft.sovietvanilla
ProvidesCustomPrerequisite@russianstructure:
ProvidesPrerequisite@russianstructure:
RequiresPrerequisites: structures.russia
Prerequisite: aircraft.russia
ProvidesCustomPrerequisite@ukrainianstructure:
ProvidesPrerequisite@ukrainianstructure:
RequiresPrerequisites: structures.ukraine
Prerequisite: aircraft.ukraine
AirstrikePower@spyplane:
@@ -1149,6 +1160,7 @@ AFLD:
PrimaryBuilding:
Power:
Amount: -20
ProvidesPrerequisite@buildingname:
POWR:
Inherits: ^Building
@@ -1161,7 +1173,7 @@ POWR:
Tooltip:
Name: Power Plant
Description: Provides power for other structures.
ProvidesCustomPrerequisite:
ProvidesPrerequisite:
Prerequisite: anypower
Building:
Footprint: xx xx
@@ -1198,7 +1210,7 @@ APWR:
Tooltip:
Name: Advanced Power Plant
Description: Provides double the power of a\nstandard Power Plant.
ProvidesCustomPrerequisite:
ProvidesPrerequisite:
Prerequisite: anypower
Building:
Footprint: ___ xxx xxx
@@ -1235,7 +1247,7 @@ STEK:
Tooltip:
Name: Soviet Tech Center
Description: Provides Soviet advanced technologies.
ProvidesCustomPrerequisite:
ProvidesPrerequisite:
Prerequisite: techcenter
Building:
Footprint: xxx xxx
@@ -1249,6 +1261,7 @@ STEK:
Bib:
Power:
Amount: -100
ProvidesPrerequisite@buildingname:
BARR:
Inherits: ^Building
@@ -1282,34 +1295,35 @@ BARR:
Produces: Infantry, Soldier
PrimaryBuilding:
ProductionBar:
ProvidesCustomPrerequisite:
ProvidesPrerequisite:
Prerequisite: barracks
ProvidesCustomPrerequisite@soviet:
ProvidesPrerequisite@soviet:
Race: soviet, russia, ukraine
Prerequisite: infantry.soviet
ProvidesCustomPrerequisite@sovietvanilla:
ProvidesPrerequisite@sovietvanilla:
Race: soviet
Prerequisite: infantry.sovietvanilla
ProvidesCustomPrerequisite@russia:
ProvidesPrerequisite@russia:
Race: russia
Prerequisite: infantry.russia
ProvidesCustomPrerequisite@ukraine:
ProvidesPrerequisite@ukraine:
Race: ukraine
Prerequisite: infantry.ukraine
ProvidesCustomPrerequisite@sovietstructure:
ProvidesPrerequisite@sovietstructure:
RequiresPrerequisites: structures.soviet
Prerequisite: infantry.soviet
ProvidesCustomPrerequisite@sovietvanillastructure:
ProvidesPrerequisite@sovietvanillastructure:
RequiresPrerequisites: structures.sovietvanilla
Prerequisite: infantry.sovietvanilla
ProvidesCustomPrerequisite@russianstructure:
ProvidesPrerequisite@russianstructure:
RequiresPrerequisites: structures.russia
Prerequisite: infantry.russia
ProvidesCustomPrerequisite@ukrainianstructure:
ProvidesPrerequisite@ukrainianstructure:
RequiresPrerequisites: structures.ukraine
Prerequisite: infantry.ukraine
Power:
Amount: -20
ProvidesPrerequisite@buildingname:
KENN:
Inherits: ^Building
@@ -1344,6 +1358,7 @@ KENN:
-EmitInfantryOnSell:
Power:
Amount: -10
ProvidesPrerequisite@buildingname:
TENT:
Inherits: ^Building
@@ -1377,40 +1392,41 @@ TENT:
Produces: Infantry, Soldier
PrimaryBuilding:
ProductionBar:
ProvidesCustomPrerequisite@barracks:
ProvidesPrerequisite@barracks:
Prerequisite: barracks
ProvidesCustomPrerequisite@allies:
ProvidesPrerequisite@allies:
Race: allies, england, france, germany
Prerequisite: infantry.allies
ProvidesCustomPrerequisite@alliesvanilla:
ProvidesPrerequisite@alliesvanilla:
Race: allies
Prerequisite: infantry.alliesvanilla
ProvidesCustomPrerequisite@england:
ProvidesPrerequisite@england:
Race: england
Prerequisite: infantry.england
ProvidesCustomPrerequisite@france:
ProvidesPrerequisite@france:
Race: france
Prerequisite: infantry.france
ProvidesCustomPrerequisite@germany:
ProvidesPrerequisite@germany:
Race: germany
Prerequisite: infantry.germany
ProvidesCustomPrerequisite@alliedstructure:
ProvidesPrerequisite@alliedstructure:
RequiresPrerequisites: structures.allies
Prerequisite: infantry.allies
ProvidesCustomPrerequisite@alliedvanillastructure:
ProvidesPrerequisite@alliedvanillastructure:
RequiresPrerequisites: structures.alliesvanilla
Prerequisite: infantry.alliesvanilla
ProvidesCustomPrerequisite@englishstructure:
ProvidesPrerequisite@englishstructure:
RequiresPrerequisites: structures.england
Prerequisite: infantry.england
ProvidesCustomPrerequisite@frenchstructure:
ProvidesPrerequisite@frenchstructure:
RequiresPrerequisites: structures.france
Prerequisite: infantry.france
ProvidesCustomPrerequisite@germanstructure:
ProvidesPrerequisite@germanstructure:
RequiresPrerequisites: structures.germany
Prerequisite: infantry.germany
Power:
Amount: -20
ProvidesPrerequisite@buildingname:
FIX:
Inherits: ^Building
@@ -1442,6 +1458,7 @@ FIX:
WithRepairAnimation:
Power:
Amount: -30
ProvidesPrerequisite@buildingname:
SBAG:
Inherits: ^Wall

View File

@@ -1087,7 +1087,7 @@ CTDAM:
Type: heavy
Health:
HP: 1000
ProvidesCustomPrerequisite:
ProvidesPrerequisite:
Prerequisite: anypower
CTVEGA:

View File

@@ -9,7 +9,7 @@ GAPOWR:
Tooltip:
Name: GDI Power Plant
Description: Provides power for other structures.
ProvidesCustomPrerequisite:
ProvidesPrerequisite:
Prerequisite: anypower
Building:
Footprint: xx xx
@@ -58,6 +58,7 @@ GAPOWR:
UpgradeTypes: powrup.b
UpgradeMinEnabledLevel: 1
Amount: 50
ProvidesPrerequisite@buildingname:
GAPILE:
Inherits: ^Building
@@ -70,7 +71,7 @@ GAPILE:
Tooltip:
Name: GDI Barracks
Description: Produces infantry.
ProvidesCustomPrerequisite:
ProvidesPrerequisite:
Prerequisite: barracks
Building:
Footprint: xx xx
@@ -100,6 +101,7 @@ GAPILE:
Sequence: idle-flag
Power:
Amount: -20
ProvidesPrerequisite@buildingname:
GAWEAP:
Inherits: ^Building
@@ -108,7 +110,7 @@ GAWEAP:
Tooltip:
Name: GDI War Factory
Description: Produces vehicles.
ProvidesCustomPrerequisite:
ProvidesPrerequisite:
Prerequisite: factory
Buildable:
Queue: Building
@@ -146,6 +148,7 @@ GAWEAP:
Sequence: bib
Power:
Amount: -30
ProvidesPrerequisite@buildingname:
GAHPAD:
Inherits: ^Building
@@ -185,6 +188,7 @@ GAHPAD:
Amount: -10
Selectable:
Bounds: 88, 66, 0, -5
ProvidesPrerequisite@buildingname:
GADEPT:
Inherits: ^Building
@@ -224,6 +228,7 @@ GADEPT:
UseDeathTypeSuffix: false
Power:
Amount: -30
ProvidesPrerequisite@buildingname:
GARADR:
Inherits: ^Building
@@ -236,7 +241,7 @@ GARADR:
Tooltip:
Name: GDI Radar
Description: Provides an overview of the battlefield.\nCan detect cloaked units.\nRequires power to operate.
ProvidesCustomPrerequisite:
ProvidesPrerequisite:
Prerequisite: radar
Building:
Footprint: xx xx
@@ -264,6 +269,7 @@ GARADR:
TargetTypes: Ground, C4, SpyInfiltrate
Power:
Amount: -50
ProvidesPrerequisite@buildingname:
GATECH:
Inherits: ^Building
@@ -276,7 +282,7 @@ GATECH:
Tooltip:
Name: GDI Tech Center
Description: Provides access to advanced GDI technologies.
ProvidesCustomPrerequisite:
ProvidesPrerequisite:
Prerequisite: tech
Building:
Footprint: xxx xxx
@@ -293,6 +299,7 @@ GATECH:
Sequence: idle-lights
Power:
Amount: -150
ProvidesPrerequisite@buildingname:
GAPLUG:
Inherits: ^Building
@@ -365,3 +372,4 @@ GAPLUG:
UpgradeTypes: plug.ioncannonb
UpgradeMinEnabledLevel: 1
Sequence: idle-ioncannonb
ProvidesPrerequisite@buildingname:

View File

@@ -23,7 +23,6 @@ GAWALL:
LineBuild:
NodeTypes: wall, turret
GACTWR:
Inherits: ^Building
Valued:
@@ -128,6 +127,7 @@ GACTWR:
tower.vulcan: tower, tower.vulcan
tower.rocket: tower, tower.rocket
tower.sam: tower, tower.sam
ProvidesPrerequisite@buildingname:
GAVULC:
Inherits: ^BuildingPlug

View File

@@ -9,7 +9,7 @@ NAPOWR:
Tooltip:
Name: Nod Power Plant
Description: Provides power for other structures.
ProvidesCustomPrerequisite:
ProvidesPrerequisite:
Prerequisite: anypower
Building:
Footprint: xx xx
@@ -44,7 +44,7 @@ NAAPWR:
Tooltip:
Name: Advanced Power Plant
Description: Provides twice as much power as\nthe normal Power Plant.
ProvidesCustomPrerequisite:
ProvidesPrerequisite:
Prerequisite: anypower
Building:
Footprint: xxx xxx
@@ -79,7 +79,7 @@ NAHAND:
Tooltip:
Name: Hand of Nod
Description: Produces infantry.
ProvidesCustomPrerequisite:
ProvidesPrerequisite:
Prerequisite: barracks
Building:
Footprint: xxx xxx
@@ -107,6 +107,7 @@ NAHAND:
Sequence: production-light
Power:
Amount: -20
ProvidesPrerequisite@buildingname:
NAWEAP:
Inherits: ^Building
@@ -115,7 +116,7 @@ NAWEAP:
Tooltip:
Name: Nod War Factory
Description: Produces vehicles.
ProvidesCustomPrerequisite:
ProvidesPrerequisite:
Prerequisite: factory
Buildable:
Queue: Building
@@ -149,6 +150,7 @@ NAWEAP:
Sequence: bib
Power:
Amount: -30
ProvidesPrerequisite@buildingname:
NAHPAD:
Inherits: ^Building
@@ -188,6 +190,7 @@ NAHPAD:
Amount: -10
Selectable:
Bounds: 78, 54, 0, -8
ProvidesPrerequisite@buildingname:
NARADR:
Inherits: ^Building
@@ -200,7 +203,7 @@ NARADR:
Tooltip:
Name: Nod Radar
Description: Provides an overview of the battlefield.\nCan detect cloaked units.\nRequires power to operate.
ProvidesCustomPrerequisite:
ProvidesPrerequisite:
Prerequisite: radar
Building:
Footprint: xx xx
@@ -228,6 +231,7 @@ NARADR:
TargetTypes: Ground, C4, SpyInfiltrate
Power:
Amount: -50
ProvidesPrerequisite@buildingname:
NATECH:
Inherits: ^Building
@@ -240,7 +244,7 @@ NATECH:
Tooltip:
Name: Nod Tech Center
Description: Provides access to advanced Nod technologies.
ProvidesCustomPrerequisite:
ProvidesPrerequisite:
Prerequisite: tech
Building:
Footprint: xx xx
@@ -257,6 +261,7 @@ NATECH:
Sequence: idle-lights
Power:
Amount: -150
ProvidesPrerequisite@buildingname:
NASTLH:
Inherits: ^Building

View File

@@ -255,7 +255,7 @@ NAMISL:
Tooltip:
Name: Nod Missile Silo
Description: Launches a devastating missile\nat a target location.\nRequires power to operate.
ProvidesCustomPrerequisite:
ProvidesPrerequisite:
Prerequisite: tech
Building:
Footprint: xx xx

View File

@@ -43,10 +43,10 @@ GACNST:
Amount: 0
Selectable:
Bounds: 144, 80, 0, -12
ProvidesCustomPrerequisite@gdi:
ProvidesPrerequisite@gdi:
Race: gdi
Prerequisite: structures.gdi
ProvidesCustomPrerequisite@nod:
ProvidesPrerequisite@nod:
Race: nod
Prerequisite: structures.nod
@@ -93,6 +93,7 @@ PROC:
Palette: effect
Power:
Amount: -30
ProvidesPrerequisite@buildingname:
GASILO:
Inherits: ^Building