Move Power out of Building and into its own trait

Conflicts:
	mods/ts/rules/structures.yaml
This commit is contained in:
ScottNZ
2014-08-02 01:38:14 +12:00
parent 9527d7c2f4
commit 692e3a9c88
23 changed files with 383 additions and 211 deletions

View File

@@ -499,10 +499,10 @@ namespace OpenRA.Mods.D2k.Widgets
* ((lowpower) ? CurrentQueue.Info.LowPowerSlowdown : 1);
DrawRightAligned(WidgetUtils.FormatTime(time), pos + new int2(-5, 35), lowpower ? Color.Red : Color.White);
var bi = info.Traits.GetOrDefault<BuildingInfo>();
if (bi != null)
DrawRightAligned("{1}{0}".F(bi.Power, bi.Power > 0 ? "+" : ""), pos + new int2(-5, 20),
((power.PowerProvided - power.PowerDrained) >= -bi.Power || bi.Power > 0) ? Color.White : Color.Red);
var pi = info.Traits.GetOrDefault<PowerInfo>();
if (pi != null)
DrawRightAligned("{1}{0}".F(pi.Amount, pi.Amount > 0 ? "+" : ""), pos + new int2(-5, 20),
((power.PowerProvided - power.PowerDrained) >= -pi.Amount || pi.Amount > 0) ? Color.White : Color.Red);
p += new int2(5, 35);
if (!canBuildThis)

View File

@@ -138,8 +138,8 @@ namespace OpenRA.Mods.RA.AI
// First priority is to get out of a low power situation
if (playerPower.ExcessPower < 0)
{
var power = GetProducibleBuilding("Power", buildableThings, a => a.Traits.Get<BuildingInfo>().Power);
if (power != null && power.Traits.Get<BuildingInfo>().Power > 0)
var power = GetProducibleBuilding("Power", buildableThings, a => a.Traits.Get<PowerInfo>().Amount);
if (power != null && power.Traits.Get<PowerInfo>().Amount > 0)
{
HackyAI.BotDebug("AI: {0} decided to build {1}: Priority override (low power)", queue.Actor.Owner, power.Name);
return power;
@@ -198,12 +198,12 @@ namespace OpenRA.Mods.RA.AI
// Will this put us into low power?
var actor = world.Map.Rules.Actors[frac.Key];
var bi = actor.Traits.Get<BuildingInfo>();
if (playerPower.ExcessPower < 0 || playerPower.ExcessPower < bi.Power)
var pi = actor.Traits.GetOrDefault<PowerInfo>();
if (playerPower.ExcessPower < 0 || (pi != null && playerPower.ExcessPower < pi.Amount))
{
// Try building a power plant instead
var power = GetProducibleBuilding("Power", buildableThings, a => a.Traits.Get<BuildingInfo>().Power);
if (power != null && power.Traits.Get<BuildingInfo>().Power > 0)
var power = GetProducibleBuilding("Power", buildableThings, a => a.Traits.Get<PowerInfo>().Amount);
if (power != null && power.Traits.Get<PowerInfo>().Amount > 0)
{
HackyAI.BotDebug("{0} decided to build {1}: Priority override (would be low power)", queue.Actor.Owner, power.Name);
return power;

View File

@@ -23,8 +23,6 @@ namespace OpenRA.Mods.RA.Buildings
public class BuildingInfo : ITraitInfo, IOccupySpaceInfo, UsesInit<LocationInit>
{
[Desc("If negative, it will drain power, if positive, it will provide power.")]
public readonly int Power = 0;
[Desc("Where you are allowed to place the building (Water, Clear, ...)")]
public readonly string[] TerrainTypes = {};
[Desc("The range to the next building it can be constructed. Set it higher for walls.")]
@@ -101,7 +99,7 @@ namespace OpenRA.Mods.RA.Buildings
}
}
public class Building : INotifyDamage, IOccupySpace, INotifyCapture, INotifySold, INotifyTransform, ISync, ITechTreePrerequisite, INotifyCreated, INotifyAddedToWorld, INotifyRemovedFromWorld
public class Building : IOccupySpace, INotifySold, INotifyTransform, ISync, ITechTreePrerequisite, INotifyCreated, INotifyAddedToWorld, INotifyRemovedFromWorld
{
public readonly BuildingInfo Info;
public bool BuildComplete { get; private set; }
@@ -109,8 +107,6 @@ namespace OpenRA.Mods.RA.Buildings
readonly Actor self;
public readonly bool SkipMakeAnimation;
PowerManager PlayerPower;
/* shared activity lock: undeploy, sell, capture, etc */
[Sync] public bool Locked = true;
@@ -135,7 +131,6 @@ namespace OpenRA.Mods.RA.Buildings
this.self = init.self;
this.topLeft = init.Get<LocationInit, CPos>();
this.Info = info;
this.PlayerPower = init.self.Owner.PlayerActor.Trait<PowerManager>();
occupiedCells = FootprintUtils.UnpathableTiles( self.Info.Name, Info, TopLeft )
.Select(c => Pair.New(c, SubCell.FullCell)).ToArray();
@@ -144,30 +139,9 @@ namespace OpenRA.Mods.RA.Buildings
SkipMakeAnimation = init.Contains<SkipMakeAnimsInit>();
}
public int GetPowerUsage()
{
if (Info.Power <= 0)
return Info.Power;
var health = self.TraitOrDefault<Health>();
return health != null ? (Info.Power * health.HP / health.MaxHP) : Info.Power;
}
public void Damaged(Actor self, AttackInfo e)
{
// Power plants lose power with damage
if (Info.Power > 0)
PlayerPower.UpdateActor(self, GetPowerUsage());
}
Pair<CPos, SubCell>[] occupiedCells;
public IEnumerable<Pair<CPos, SubCell>> OccupiedCells() { return occupiedCells; }
public void OnCapture(Actor self, Actor captor, Player oldOwner, Player newOwner)
{
PlayerPower = newOwner.PlayerActor.Trait<PowerManager>();
}
public void Created(Actor self)
{
if (SkipMakeAnimation || !self.HasTrait<WithMakeAnimation>())

View File

@@ -21,11 +21,11 @@ namespace OpenRA.Mods.RA.Buildings
public class PowerManager : ITick, ISync
{
PowerManagerInfo Info;
Player Player;
DeveloperMode devMode;
readonly PowerManagerInfo info;
readonly Player player;
readonly DeveloperMode devMode;
Dictionary<Actor, int> PowerDrain = new Dictionary<Actor, int>();
readonly Dictionary<Actor, int> powerDrain = new Dictionary<Actor, int>();
[Sync] int totalProvided;
public int PowerProvided { get { return totalProvided; } }
@@ -36,8 +36,8 @@ namespace OpenRA.Mods.RA.Buildings
public PowerManager(ActorInitializer init, PowerManagerInfo info)
{
Info = info;
Player = init.self.Owner;
this.info = info;
player = init.self.Owner;
init.world.ActorAdded += ActorAdded;
init.world.ActorRemoved += ActorRemoved;
@@ -48,17 +48,22 @@ namespace OpenRA.Mods.RA.Buildings
void ActorAdded(Actor a)
{
if (a.Owner != Player || !a.HasTrait<Building>())
if (a.Owner != player)
return;
PowerDrain.Add(a, a.Trait<Building>().GetPowerUsage());
var power = a.TraitOrDefault<Power>();
if (power == null)
return;
powerDrain.Add(a, power.CurrentPower);
UpdateTotals();
}
void ActorRemoved(Actor a)
{
if (a.Owner != Player || !a.HasTrait<Building>())
if (a.Owner != player || !a.HasTrait<Power>())
return;
PowerDrain.Remove(a);
powerDrain.Remove(a);
UpdateTotals();
}
@@ -66,7 +71,7 @@ namespace OpenRA.Mods.RA.Buildings
{
totalProvided = 0;
totalDrained = 0;
foreach (var kv in PowerDrain)
foreach (var kv in powerDrain)
{
var p = kv.Value;
if (p > 0)
@@ -81,10 +86,10 @@ namespace OpenRA.Mods.RA.Buildings
public void UpdateActor(Actor a, int newPower)
{
if (a.Owner != Player || !a.HasTrait<Building>())
if (a.Owner != player || !a.HasTrait<Power>())
return;
PowerDrain[a] = newPower;
powerDrain[a] = newPower;
UpdateTotals();
}
@@ -109,7 +114,7 @@ namespace OpenRA.Mods.RA.Buildings
{
if (lowPower)
Sound.PlayNotification(self.World.Map.Rules, self.Owner, "Speech", "LowPower", self.Owner.Country.Race);
nextPowerAdviceTime = Info.AdviceInterval;
nextPowerAdviceTime = info.AdviceInterval;
}
}

View File

@@ -14,7 +14,7 @@ using OpenRA.Traits;
namespace OpenRA.Mods.RA.Buildings
{
[Desc("The player can disable the power individually on this actor.")]
public class CanPowerDownInfo : ITraitInfo
public class CanPowerDownInfo : ITraitInfo, Requires<PowerInfo>
{
public object Create(ActorInitializer init) { return new CanPowerDown(init); }
}
@@ -28,7 +28,7 @@ namespace OpenRA.Mods.RA.Buildings
public CanPowerDown(ActorInitializer init)
{
PowerManager = init.self.Owner.PlayerActor.Trait<PowerManager>();
normalPower = init.self.Info.Traits.Get<BuildingInfo>().Power;
normalPower = init.self.Info.Traits.Get<PowerInfo>().Amount;
}
public bool Disabled { get { return disabled; } }

View File

@@ -118,6 +118,7 @@
<Compile Include="Air\AttackHeli.cs" />
<Compile Include="Air\AttackPlane.cs" />
<Compile Include="Crates\DuplicateUnitCrateAction.cs" />
<Compile Include="Power.cs" />
<Compile Include="Effects\Beacon.cs" />
<Compile Include="Player\PlaceBeacon.cs" />
<Compile Include="MenuPaletteEffect.cs" />
@@ -164,7 +165,7 @@
<Compile Include="CaptureNotification.cs" />
<Compile Include="Buildings\Building.cs" />
<Compile Include="Buildings\BuildingInfluence.cs" />
<Compile Include="Buildings\CanPowerDown.cs" />
<Compile Include="CanPowerDown.cs" />
<Compile Include="Buildings\CustomSellValue.cs" />
<Compile Include="Buildings\CustomBuildTimeValue.cs" />
<Compile Include="Buildings\DeadBuildingState.cs" />
@@ -588,7 +589,5 @@ cd "$(SolutionDir)thirdparty/"
copy "FuzzyLogicLibrary.dll" "$(SolutionDir)"
cd "$(SolutionDir)"</PostBuildEvent>
</PropertyGroup>
<ItemGroup>
<Folder Include="Widgets\Logic\Ingame\" />
</ItemGroup>
<ItemGroup />
</Project>

63
OpenRA.Mods.RA/Power.cs Normal file
View File

@@ -0,0 +1,63 @@
#region Copyright & License Information
/*
* Copyright 2007-2014 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 COPYING.
*/
#endregion
using System;
using OpenRA.Mods.RA.Buildings;
using OpenRA.Traits;
namespace OpenRA.Mods.RA
{
public class PowerInfo : ITraitInfo
{
[Desc("If negative, it will drain power. If positive, it will provide power.")]
public readonly int Amount = 0;
[Desc("Scale power amount with the current health.")]
public readonly bool ScaleWithHealth = false;
public object Create(ActorInitializer init) { return new Power(init.self, this); }
}
public class Power : INotifyDamage, INotifyCapture
{
readonly PowerInfo info;
readonly Lazy<Health> health;
PowerManager playerPower;
public int CurrentPower
{
get
{
if (info.Amount <= 0 || health == null || !info.ScaleWithHealth)
return info.Amount;
return info.Amount * health.Value.HP / health.Value.MaxHP;
}
}
public Power(Actor self, PowerInfo info)
{
this.info = info;
health = Exts.Lazy(self.TraitOrDefault<Health>);
playerPower = self.Owner.PlayerActor.Trait<PowerManager>();
}
public void Damaged(Actor self, AttackInfo e)
{
if (info.ScaleWithHealth)
playerPower.UpdateActor(self, CurrentPower);
}
public void OnCapture(Actor self, Actor captor, Player oldOwner, Player newOwner)
{
playerPower = newOwner.PlayerActor.Trait<PowerManager>();
}
}
}

View File

@@ -56,7 +56,7 @@ namespace OpenRA.Mods.RA.Widgets.Logic
var tooltip = info.Traits.Get<TooltipInfo>();
var buildable = info.Traits.Get<BuildableInfo>();
var cost = info.Traits.Get<ValuedInfo>().Cost;
var bi = info.Traits.GetOrDefault<BuildingInfo>();
var pi = info.Traits.GetOrDefault<PowerInfo>();
nameLabel.GetText = () => tooltip.Name;
@@ -72,7 +72,7 @@ namespace OpenRA.Mods.RA.Widgets.Logic
var requiresString = prereqs.Any() ? requiresLabel.Text.F(prereqs.JoinWith(", ")) : "";
requiresLabel.GetText = () => requiresString;
var power = bi != null ? bi.Power : 0;
var power = pi != null ? pi.Amount : 0;
var powerString = power.ToString();
powerLabel.GetText = () => powerString;
powerLabel.GetColor = () => ((pm.PowerProvided - pm.PowerDrained) >= -power || power > 0)

View File

@@ -328,6 +328,32 @@ namespace OpenRA.Utility
node.Key = "Units";
}
// Power from Building was moved out into its own trait
if (engineVersion < 20140802)
{
if (depth == 0)
{
var actorTraits = node.Value.Nodes;
var building = actorTraits.FirstOrDefault(t => t.Key == "Building");
if (building != null)
{
var buildingFields = building.Value.Nodes;
var power = buildingFields.FirstOrDefault(n => n.Key == "Power");
if (power != null)
{
buildingFields.Remove(power);
var powerFields = new List<MiniYamlNode> { new MiniYamlNode("Amount", power.Value) };
if (FieldLoader.GetValue<int>("Power", power.Value.Value) > 0)
powerFields.Add(new MiniYamlNode("ScaleWithHealth", "True"));
actorTraits.Add(new MiniYamlNode("Power", new MiniYaml("", powerFields)));
}
}
}
}
UpgradeActorRules(engineVersion, ref node.Value.Nodes, node, depth + 1);
}
}

View File

@@ -947,7 +947,8 @@ Rules:
Buildable:
Prerequisites: ~disabled
Building:
Power: -10
Power:
Amount: -10
HQ:
Buildable:
Prerequisites: ~disabled
@@ -967,7 +968,6 @@ Rules:
Prerequisites: proc
Queue: Building.GDI
Building:
Power: -40
Footprint: x_ xx
Dimensions: 2,2
Health:
@@ -978,6 +978,8 @@ Rules:
ProvidesRadar:
RenderBuilding:
Image: hq
Power:
Amount: -40
PowerProxy.AirSupport:
AirstrikePower:
Icon: airstrike

View File

@@ -642,7 +642,6 @@ Rules:
Prerequisites: proc
Queue: Building.GDI, Building.Nod
Building:
Power: -40
Footprint: x_ xx
Dimensions: 2,2
Health:
@@ -656,6 +655,8 @@ Rules:
Range: 8
RenderBuilding:
Image: hq
Power:
Amount: -40
Sequences:

View File

@@ -711,7 +711,6 @@ Rules:
Prerequisites: proc
Queue: Building.GDI, Building.Nod
Building:
Power: -40
Footprint: x_ xx
Dimensions: 2,2
Health:
@@ -725,6 +724,8 @@ Rules:
Range: 8
RenderBuilding:
Image: hq
Power:
Amount: -40
Sequences:

View File

@@ -10,7 +10,6 @@ FACT:
Name: Construction Yard
Description: Builds structures
Building:
Power: 0
Footprint: xxx xxx
Dimensions: 3,2
Health:
@@ -75,6 +74,8 @@ FACT:
Cooldown: 75
Range: 14
WithBuildingPlacedAnimation:
Power:
Amount: 0
NUKE:
Inherits: ^BaseBuilding
@@ -90,7 +91,6 @@ NUKE:
Prerequisites: fact
Queue: Building.GDI, Building.Nod
Building:
Power: 100
Footprint: x_ xx
Dimensions: 2,2
Health:
@@ -98,6 +98,9 @@ NUKE:
RevealsShroud:
Range: 4c0
Bib:
Power:
Amount: 100
ScaleWithHealth: True
NUK2:
Inherits: ^BaseBuilding
@@ -113,7 +116,6 @@ NUK2:
Prerequisites: anyhq, ~techlevel.medium
Queue: Building.GDI, Building.Nod
Building:
Power: 200
Footprint: xx xx
Dimensions: 2,2
Health:
@@ -121,6 +123,9 @@ NUK2:
RevealsShroud:
Range: 4c0
Bib:
Power:
Amount: 200
ScaleWithHealth: True
PROC:
Inherits: ^BaseBuilding
@@ -134,7 +139,6 @@ PROC:
Prerequisites: anypower
Queue: Building.GDI, Building.Nod
Building:
Power: -50
Footprint: _x_ xxx ===
Dimensions: 3,3
Health:
@@ -159,6 +163,8 @@ PROC:
SpawnOffset: 1,2
Facing: 64
WithResources:
Power:
Amount: -50
SILO:
Inherits: ^BaseBuilding
@@ -172,7 +178,6 @@ SILO:
Prerequisites: proc
Queue: Defence.GDI, Defence.Nod
Building:
Power: -10
Footprint: xx
Dimensions: 2,1
-GivesBuildableArea:
@@ -191,6 +196,8 @@ SILO:
Bounds: 49,30
-RenderBuilding:
-EmitInfantryOnSell:
Power:
Amount: -10
PYLE:
Inherits: ^BaseBuilding
@@ -206,7 +213,6 @@ PYLE:
Prerequisites: anypower
Queue: Building.GDI
Building:
Power: -20
Footprint: xx xx
Dimensions: 2,2
Health:
@@ -230,6 +236,8 @@ PYLE:
BuildSpeed: .4
LowPowerSlowdown: 3
ProductionBar:
Power:
Amount: -20
HAND:
Inherits: ^BaseBuilding
@@ -245,7 +253,6 @@ HAND:
Prerequisites: anypower
Queue: Building.Nod
Building:
Power: -20
Footprint: __ xx xx
Dimensions: 2,3
Health:
@@ -266,6 +273,8 @@ HAND:
BuildSpeed: .4
LowPowerSlowdown: 3
ProductionBar:
Power:
Amount: -20
AFLD:
Inherits: ^BaseBuilding
@@ -281,7 +290,6 @@ AFLD:
Prerequisites: proc
Queue: Building.Nod
Building:
Power: -30
Footprint: xxxx xxxx
Dimensions: 4,2
Health:
@@ -305,6 +313,8 @@ AFLD:
LowPowerSlowdown: 3
ReadyAudio:
ProductionBar:
Power:
Amount: -30
WEAP:
Inherits: ^BaseBuilding
@@ -320,7 +330,6 @@ WEAP:
Prerequisites: proc
Queue: Building.GDI
Building:
Power: -30
Footprint: ___ xxx ===
Dimensions: 3,3
Health:
@@ -344,6 +353,8 @@ WEAP:
BuildSpeed: .4
LowPowerSlowdown: 3
ProductionBar:
Power:
Amount: -30
HPAD:
Inherits: ^BaseBuilding
@@ -357,7 +368,6 @@ HPAD:
Prerequisites: proc
Queue: Building.GDI, Building.Nod
Building:
Power: -10
Footprint: xx xx
Dimensions: 2,2
Health:
@@ -390,6 +400,8 @@ HPAD:
ProductionType: Aircraft.GDI
ProductionBar@Nod:
ProductionType: Aircraft.Nod
Power:
Amount: -10
HQ:
Inherits: ^BaseBuilding
@@ -405,7 +417,6 @@ HQ:
Prerequisites: proc, ~techlevel.medium
Queue: Building.GDI, Building.Nod
Building:
Power: -40
Footprint: x_ xx
Dimensions: 2,2
RequiresPower:
@@ -440,6 +451,8 @@ HQ:
DisplayRadarPing: True
CameraActor: camera
SupportPowerChargeBar:
Power:
Amount: -40
FIX:
Inherits: ^BaseBuilding
@@ -453,7 +466,6 @@ FIX:
Prerequisites: vehicleproduction
Queue: Building.GDI, Building.Nod
Building:
Power: -30
Footprint: _x_ xxx _x_
Dimensions: 3,3
Health:
@@ -466,6 +478,8 @@ FIX:
RepairsUnits:
RallyPoint:
WithRepairAnimation:
Power:
Amount: -30
EYE:
Inherits: ^BaseBuilding
@@ -481,7 +495,6 @@ EYE:
Prerequisites: anyhq, ~techlevel.high
Queue: Building.GDI
Building:
Power: -200
Footprint: x_ xx
Dimensions: 2,2
RequiresPower:
@@ -512,6 +525,8 @@ EYE:
DisplayRadarPing: True
CameraActor: camera.small
SupportPowerChargeBar:
Power:
Amount: -200
TMPL:
Inherits: ^BaseBuilding
@@ -527,7 +542,6 @@ TMPL:
Prerequisites: anyhq, ~techlevel.high
Queue: Building.Nod
Building:
Power: -150
Footprint: ___ xxx xxx
Dimensions: 3,3
RequiresPower:
@@ -556,6 +570,8 @@ TMPL:
DisplayRadarPing: True
CameraActor: camera
SupportPowerChargeBar:
Power:
Amount: -150
GUN:
Inherits: ^BaseBuilding
@@ -571,7 +587,6 @@ GUN:
Prerequisites: barracks
Queue: Defence.GDI, Defence.Nod
Building:
Power: -20
-GivesBuildableArea:
Health:
HP: 400
@@ -598,6 +613,8 @@ GUN:
RenderDetectionCircle:
DetectCloaked:
Range: 3
Power:
Amount: -20
SAM:
Inherits: ^BaseBuilding
@@ -613,7 +630,6 @@ SAM:
Prerequisites: hand
Queue: Defence.Nod
Building:
Power: -20
Footprint: xx
Dimensions: 2,1
RequiresPower:
@@ -637,6 +653,8 @@ SAM:
AutoTarget:
-RenderBuilding:
RenderRangeCircle:
Power:
Amount: -20
OBLI:
Inherits: ^BaseBuilding
@@ -652,7 +670,6 @@ OBLI:
Prerequisites: tmpl, ~techlevel.high
Queue: Defence.Nod
Building:
Power: -150
Footprint: _ x
Dimensions: 1,2
RequiresPower:
@@ -682,6 +699,8 @@ OBLI:
RenderDetectionCircle:
DetectCloaked:
Range: 5
Power:
Amount: -150
GTWR:
Inherits: ^BaseBuilding
@@ -697,7 +716,6 @@ GTWR:
Prerequisites: barracks
Queue: Defence.GDI, Defence.Nod
Building:
Power: -10
-GivesBuildableArea:
Health:
HP: 400
@@ -720,6 +738,8 @@ GTWR:
WithMuzzleFlash:
Turreted:
ROT: 255
Power:
Amount: -10
ATWR:
Inherits: ^BaseBuilding
@@ -735,7 +755,6 @@ ATWR:
Prerequisites: anyhq, ~techlevel.medium
Queue: Defence.GDI
Building:
Power: -40
Footprint: _ x
Dimensions: 1,2
RequiresPower:
@@ -768,6 +787,8 @@ ATWR:
DetectCloaked:
Range: 5
RenderRangeCircle:
Power:
Amount: -40
SBAG:
Inherits: ^Wall

View File

@@ -41,7 +41,6 @@ CONCRETEB:
^CONYARD:
Inherits: ^Building
Building:
Power: 20
Footprint: xxx xxx
Dimensions: 3,2
Adjacent: 4
@@ -75,6 +74,8 @@ CONCRETEB:
Prerequisite: Conyard
WithBuildingPlacedOverlay:
Palette: d2k
Power:
Amount: 20
^POWER:
Inherits: ^Building
@@ -91,7 +92,6 @@ CONCRETEB:
Name: Windtrap
Description: Provides power for other structures
Building:
Power: 100
Footprint: xx xx
Dimensions: 2,2
Bib:
@@ -105,6 +105,9 @@ CONCRETEB:
Prerequisite: Power
WithIdleOverlay@ZAPS:
Sequence: idle-zaps
Power:
Amount: 100
ScaleWithHealth: True
^BARRACKS:
Inherits: ^Building
@@ -121,7 +124,6 @@ CONCRETEB:
Name: Barracks
Description: Trains infantry
Building:
Power: -20
Footprint: =x xx
Dimensions: 2,2
Bib:
@@ -147,6 +149,8 @@ CONCRETEB:
ValuePercentage: 0
ProvidesCustomPrerequisite:
Prerequisite: Barracks
Power:
Amount: -20
^REFINERY:
Inherits: ^Building
@@ -163,7 +167,6 @@ CONCRETEB:
Name: Spice Refinery
Description: Harvesters unload Spice here for processing
Building:
Power: -30
Footprint: =xx xx=
Dimensions: 3,2
Bib:
@@ -193,6 +196,8 @@ CONCRETEB:
Prerequisite: Refinery
WithDockingOverlay@SMOKE:
Sequence: smoke
Power:
Amount: -30
^SILO:
Inherits: ^Building
@@ -209,7 +214,6 @@ CONCRETEB:
Name: Silo
Description: Stores excess harvested Spice
Building:
Power: -5
Adjacent: 4
-GivesBuildableArea:
Health:
@@ -225,6 +229,8 @@ CONCRETEB:
PipCount: 5
Capacity: 2000
-EmitInfantryOnSell:
Power:
Amount: -5
^LIGHT:
Inherits: ^Building
@@ -241,7 +247,6 @@ CONCRETEB:
Name: Light Factory
Description: Produces light vehicles
Building:
Power: -20
Footprint: xxx xx=
Dimensions: 3,2
Bib:
@@ -265,6 +270,8 @@ CONCRETEB:
Prerequisite: Light
WithProductionOverlay@WELDING:
Sequence: production-welding
Power:
Amount: -20
^HEAVY:
Inherits: ^Building
@@ -281,7 +288,6 @@ CONCRETEB:
Name: Heavy Factory
Description: Produces heavy vehicles
Building:
Power: -30
Footprint: _x_ xxx =xx
Dimensions: 3,3
Bib:
@@ -305,6 +311,8 @@ CONCRETEB:
Prerequisite: Heavy
WithProductionOverlay@WELDING:
Sequence: production-welding
Power:
Amount: -30
^RADAR:
Inherits: ^Building
@@ -324,7 +332,6 @@ CONCRETEB:
Name: Outpost
Description: Provides a radar map of the battlefield\n Requires power to operate
Building:
Power: -40
Footprint: xxx xxx
Dimensions: 3,2
Bib:
@@ -343,6 +350,8 @@ CONCRETEB:
WithIdleOverlay@DISH:
Sequence: idle-dish
PauseOnLowPower: yes
Power:
Amount: -40
^STARPORT:
Inherits: ^Building
@@ -357,7 +366,6 @@ CONCRETEB:
BuildPaletteOrder: 80
Hotkey: c
Building:
Power: -40
Footprint: xxx x=x =x=
Dimensions: 3,3
Selectable:
@@ -389,6 +397,8 @@ CONCRETEB:
DisabledOverlay:
ProvidesCustomPrerequisite:
Prerequisite: Starport
Power:
Amount: -40
^WALL:
Buildable:
@@ -458,7 +468,6 @@ WALL:
Name: Gun Tower
Description: Defensive structure\n Strong vs Tanks\n Weak vs Infantry, Aircraft
Building:
Power: -20
Adjacent: 4
BuildSounds: CHUNG.WAV
SellSounds: CHUNG.WAV
@@ -496,6 +505,8 @@ WALL:
-WithMakeAnimation:
LineBuildNode:
Types: turret
Power:
Amount: -20
^ROCKETTOWER:
Inherits: ^Building
@@ -510,7 +521,6 @@ WALL:
Name: Rocket Tower
Description: Defensive structure\n Strong vs Infantry, Aircraft\n Weak vs Tanks\n\n Requires power to operate
Building:
Power: -30
Adjacent: 4
BuildSounds: CHUNG.WAV
SellSounds: CHUNG.WAV
@@ -548,6 +558,8 @@ WALL:
-WithMakeAnimation:
LineBuildNode:
Types: turret
Power:
Amount: -30
^REPAIR:
Inherits: ^Building
@@ -562,7 +574,6 @@ WALL:
Name: Repair Pad
Description: Repairs vehicles\n Allows construction of MCVs
Building:
Power: -10
Footprint: =x= =x= ===
Dimensions: 3,3
Health:
@@ -581,6 +592,8 @@ WALL:
Prerequisite: Repair
WithRepairOverlay:
Palette: repairlights
Power:
Amount: -10
^HIGHTECH:
Inherits: ^Building
@@ -597,7 +610,6 @@ WALL:
Name: High Tech Facility
Description: Unlocks advanced technology
Building:
Power: -40
Footprint: _x_ xxx xxx
Dimensions: 3,3
Bib:
@@ -611,6 +623,8 @@ WALL:
Prerequisite: Hitech
# WithProductionOverlay@WELDING:
# Sequence: production-welding
Power:
Amount: -40
^RESEARCH:
Inherits: ^Building
@@ -638,7 +652,6 @@ WALL:
SelectTargetSound:
FlareType:
Building:
Power: -40
Footprint: _x_ xxx xxx
Dimensions: 3,3
Bib:
@@ -652,6 +665,8 @@ WALL:
Prerequisite: Research
WithIdleOverlay@LIGHTS:
Sequence: idle-lights
Power:
Amount: -40
^PALACE:
Inherits: ^Building
@@ -668,7 +683,6 @@ WALL:
Name: Palace
Description: Unlocks elite infantry\n Special Ability: Ornithopter Strike
Building:
Power: -50
Footprint: xx= xxx
Dimensions: 3,2
Bib:
@@ -683,13 +697,14 @@ WALL:
Range: 4
ProvidesCustomPrerequisite:
Prerequisite: Palace
Power:
Amount: -50
SIETCH:
Inherits: ^Building
Tooltip:
Name: Fremen Sietch
Building:
Power: 0
Footprint: xx xx
Dimensions: 2,2
TerrainTypes: Cliff
@@ -703,6 +718,8 @@ SIETCH:
-Sellable:
-ExternalCapturable:
-ExternalCapturableBar:
Power:
Amount: 0
STARPORTC:
Inherits: ^STARPORT

View File

@@ -848,8 +848,6 @@ Rules:
Offset: 0,0
Facing: 96
MustBeDestroyed:
Building:
Power: 0
CashTrickler:
Period: 150
Amount: 30
@@ -874,6 +872,8 @@ Rules:
BeginChargeSound: ironchg1.aud
EndChargeSound: ironrdy1.aud
Range: 1
Power:
Amount: 0
MINVV:
Building:
Adjacent: 99

View File

@@ -543,8 +543,6 @@ Rules:
BARR:
Buildable:
Owner: allies,soviet
Building:
Power: 0
Health:
HP: 1000
Production:
@@ -552,14 +550,14 @@ Rules:
-Sellable:
BaseProvider:
Range: 12
Power:
Amount: 0
FTUR:
Building:
Power: 0
Valued:
Cost: 400
Power:
Amount: 0
PBOX:
Building:
Power: 0
Buildable:
Prerequisites: barr,oilb
Valued:
@@ -568,9 +566,11 @@ Rules:
HP: 200
Armor:
Type: Heavy
Power:
Amount: 0
HBOX:
Building:
Power: 0
Power:
Amount: 0
GUN:
Buildable:
Prerequisites: ~disabled

View File

@@ -38,10 +38,10 @@ Players:
Race: allies
PlayerReference@Civilians:
Name: Civilians
NonCombatant: True
Race: allies
ColorRamp: 0,0,0
Allies: Allies
NonCombatant: True
PlayerReference@Allies:
Name: Allies
Playable: True
@@ -2259,13 +2259,13 @@ Rules:
Valued:
Cost: 1500
SAM:
Building:
Power: -5
RevealsShroud:
Range: 7c0
Power:
Amount: -5
TSLA:
Building:
Power: -50
Power:
Amount: -50
^Vehicles:
MustBeDestroyed:
^Tank:

View File

@@ -2094,12 +2094,12 @@ Rules:
Value: 1000
Buildable:
BuildLimit: 1
Building:
Power: -100
NukePower:
ChargeTime: 600
Description: Atom Bomb
AllowMultiple: yes
Power:
Amount: -100
MISS:
ProximityCapturable:
MustBeClear: true

View File

@@ -965,12 +965,12 @@ Rules:
Value: 1000
Buildable:
BuildLimit: 1
Building:
Power: -100
NukePower:
ChargeTime: 600
Description: Atom Bomb
AllowMultiple: yes
Power:
Amount: -100
Sequences:

View File

@@ -825,26 +825,26 @@ Rules:
BARR:
Buildable:
Owner: allies
Building:
Power: 0
Health:
HP: 5000
Production:
Produces: Building,Infantry
BaseProvider:
Range: 16
Power:
Amount: 0
WEAP:
Buildable:
Owner: allies
Building:
Power: 0
Health:
HP: 10000
Valued:
Cost: 2000
Power:
Amount: 0
FTUR:
Building:
Power: 0
Power:
Amount: 0
SPEN:
Buildable:
Owner: allies
@@ -900,13 +900,13 @@ Rules:
Valued:
Cost: 200
HPAD:
Building:
Power: 0
Buildable:
Owner: soviet
Prerequisites: barr
Valued:
Cost: 200
Power:
Power: 0
FENC:
Buildable:
Queue: Building
@@ -915,13 +915,13 @@ Rules:
Valued:
Cost: 10
AFLD:
Building:
Power: 0
Buildable:
Owner: soviet
Prerequisites: barr
Valued:
Cost: 200
Power:
Power: 0
DOG:
Buildable:
Owner: soviet

View File

@@ -55,7 +55,6 @@ C10:
FCOM:
Inherits: ^TechBuilding
Building:
Power: -200
Footprint: xx xx
Dimensions: 2,2
Valued:
@@ -69,6 +68,8 @@ FCOM:
RevealsShroud:
Range: 10c0
Bib:
Power:
Amount: -200
HOSP:
Inherits: ^TechBuilding

View File

@@ -12,7 +12,6 @@ MSLO:
BuildLimit: 1
Hotkey: m
Building:
Power: -100
Footprint: xx
Dimensions: 2,1
Health:
@@ -44,6 +43,8 @@ MSLO:
RequiresPower:
DisabledOverlay:
SupportPowerChargeBar:
Power:
Amount: -100
GAP:
Inherits: ^Building
@@ -58,7 +59,6 @@ GAP:
Prerequisites: atek, ~structures.allies, ~techlevel.unrestricted
Hotkey: g
Building:
Power: -60
Footprint: _ x
Dimensions: 1,2
RequiresPower:
@@ -78,6 +78,8 @@ GAP:
Range: 6c0
IronCurtainable:
RenderShroudCircle:
Power:
Amount: -60
SPEN:
Inherits: ^Building
@@ -96,7 +98,6 @@ SPEN:
TargetableBuilding:
TargetTypes: Ground, Water, C4, DetonateAttack, SpyInfiltrate
Building:
Power: -30
Footprint: xxx xxx xxx
Dimensions: 3,3
Adjacent: 8
@@ -132,6 +133,8 @@ SPEN:
RepairsUnits:
RallyPoint:
ProductionBar:
Power:
Amount: -30
SYRD:
Inherits: ^Building
@@ -150,7 +153,6 @@ SYRD:
TargetableBuilding:
TargetTypes: Ground, Water, C4, DetonateAttack, SpyInfiltrate
Building:
Power: -30
Footprint: xxx xxx xxx
Dimensions: 3,3
Adjacent: 8
@@ -186,6 +188,8 @@ SYRD:
RepairsUnits:
RallyPoint:
ProductionBar:
Power:
Amount: -30
IRON:
Inherits: ^Building
@@ -201,7 +205,6 @@ IRON:
Name: Iron Curtain
Description: Makes a group of units invulnerable\nfor a short time.\n Special Ability: Invulnerability\n\nMaximum 1 can be built
Building:
Power: -200
Footprint: xx
Dimensions: 2,1
RequiresPower:
@@ -230,6 +233,8 @@ IRON:
EndChargeSound: ironrdy1.aud
DisplayRadarPing: True
SupportPowerChargeBar:
Power:
Amount: -200
PDOX:
Inherits: ^Building
@@ -245,7 +250,6 @@ PDOX:
Name: Chronosphere
Description: Teleports a group of units across the\nmap for a short time.\n Special Ability: Chronoshift\n\nMaximum 1 can be built
Building:
Power: -200
Footprint: xx xx
Dimensions: 2,2
RequiresPower:
@@ -274,6 +278,8 @@ PDOX:
DisplayRadarPing: True
SupportPowerChargeBar:
-AcceptsSupplies:
Power:
Amount: -200
TSLA:
Inherits: ^Building
@@ -288,7 +294,6 @@ TSLA:
Name: Tesla Coil
Description: Advanced base defense. Requires power\nto operate.\n Strong vs Tanks, Infantry\n Weak vs Aircraft
Building:
Power: -150
Footprint: _ x
Dimensions: 1,2
RequiresPower:
@@ -317,6 +322,8 @@ TSLA:
RenderRangeCircle:
-AcceptsSupplies:
DrawLineToTarget:
Power:
Amount: -150
AGUN:
Inherits: ^Building
@@ -331,7 +338,6 @@ AGUN:
Name: AA Gun
Description: Anti-Air base defense. Requires power\nto operate.\n Strong vs Aircraft\n Weak vs Infantry, Tanks
Building:
Power: -50
Footprint: _ x
Dimensions: 1,2
RequiresPower:
@@ -363,6 +369,8 @@ AGUN:
RangeCircleType: aa
-AcceptsSupplies:
DrawLineToTarget:
Power:
Amount: -50
DOME:
Inherits: ^Building
@@ -377,7 +385,6 @@ DOME:
Name: Radar Dome
Description: Provides an overview of the battlefield.\nCan detect cloaked units.\n Requires power to operate.
Building:
Power: -40
Footprint: xx xx
Dimensions: 2,2
TargetableBuilding:
@@ -398,6 +405,8 @@ DOME:
DetectCloaked:
Range: 10
RenderDetectionCircle:
Power:
Amount: -40
PBOX:
Inherits: ^Building
@@ -405,7 +414,6 @@ PBOX:
Name: Pillbox
Description: Static defense with a fireport for a\ngarrisoned soldier.
Building:
Power: -15
Buildable:
Queue: Defense
BuildPaletteOrder: 40
@@ -443,6 +451,8 @@ PBOX:
RenderRangeCircle:
FallbackRange: 6c0
AutoTarget:
Power:
Amount: -15
HBOX:
Inherits: ^Building
@@ -450,7 +460,6 @@ HBOX:
Name: Camo Pillbox
Description: Camouflaged static defense with a fireport\nfor a garrisoned soldier.
Building:
Power: -15
Buildable:
Queue: Defense
BuildPaletteOrder: 50
@@ -491,6 +500,8 @@ HBOX:
PortOffsets: 384,0,128, 224,-341,128, -224,-341,128, -384,0,128, -224,341,128, 224,341,128
PortYaws: 0, 176, 341, 512, 682, 853
PortCones: 86, 86, 86, 86, 86, 86
Power:
Amount: -15
GUN:
Inherits: ^Building
@@ -505,7 +516,6 @@ GUN:
Name: Turret
Description: Anti-Armor base defense.\n Strong vs Tanks\n Weak vs Infantry, Aircraft
Building:
Power: -40
-GivesBuildableArea:
Health:
HP: 400
@@ -531,6 +541,8 @@ GUN:
RenderRangeCircle:
-AcceptsSupplies:
DrawLineToTarget:
Power:
Amount: -40
FTUR:
Inherits: ^Building
@@ -545,7 +557,6 @@ FTUR:
Name: Flame Tower
Description: Anti-Infantry base defense.\n Strong vs Infantry\n Weak vs Aircraft
Building:
Power: -20
-GivesBuildableArea:
Health:
HP: 400
@@ -569,6 +580,8 @@ FTUR:
RenderRangeCircle:
-AcceptsSupplies:
DrawLineToTarget:
Power:
Amount: -20
SAM:
Inherits: ^Building
@@ -583,7 +596,6 @@ SAM:
Name: SAM Site
Description: Anti-Air base defense. Requires power\nto operate.\n Strong vs Aircraft\n Weak vs Infantry, Tanks
Building:
Power: -40
Footprint: xx
Dimensions: 2,1
RequiresPower:
@@ -614,6 +626,8 @@ SAM:
RangeCircleType: aa
-AcceptsSupplies:
DrawLineToTarget:
Power:
Amount: -40
ATEK:
Inherits: ^Building
@@ -630,7 +644,6 @@ ATEK:
ProvidesCustomPrerequisite:
Prerequisite: techcenter
Building:
Power: -200
Footprint: xx xx
Dimensions: 2,2
Health:
@@ -653,6 +666,8 @@ ATEK:
SupportPowerChargeBar:
RequiresPower:
DisabledOverlay:
Power:
Amount: -200
WEAP:
Inherits: ^Building
@@ -667,7 +682,6 @@ WEAP:
Name: War Factory
Description: Produces vehicles.
Building:
Power: -30
Footprint: xxx xxx
Dimensions: 3,2
Health:
@@ -700,11 +714,12 @@ WEAP:
PrimaryBuilding:
IronCurtainable:
ProductionBar:
Power:
Amount: -30
FACT:
Inherits: ^Building
Building:
Power: 0
Footprint: xxx xxx xxx
Dimensions: 3,3
Buildable:
@@ -747,6 +762,8 @@ FACT:
BaseProvider:
Range: 16
WithBuildingPlacedAnimation:
Power:
Amount: 0
PROC:
Inherits: ^Building
@@ -761,7 +778,6 @@ PROC:
Name: Ore Refinery
Description: Refines Ore and Gems into credits.
Building:
Power: -30
Footprint: _x_ xxx x==
Dimensions: 3,3
TargetableBuilding:
@@ -793,6 +809,8 @@ PROC:
DeadBuildingState:
WithIdleOverlay@TOP:
Sequence: idle-top
Power:
Amount: -30
SILO:
Inherits: ^Building
@@ -807,7 +825,6 @@ SILO:
Name: Silo
Description: Stores excess refined Ore and gems.
Building:
Power: -10
-GivesBuildableArea:
Health:
HP: 300
@@ -824,6 +841,8 @@ SILO:
IronCurtainable:
-RenderBuilding:
-EmitInfantryOnSell:
Power:
Amount: -10
HPAD:
Inherits: ^Building
@@ -838,7 +857,6 @@ HPAD:
Name: Helipad
Description: Produces and reloads helicopters.
Building:
Power: -10
Footprint: xx xx
Dimensions: 2,2
Health:
@@ -859,6 +877,8 @@ HPAD:
IronCurtainable:
ProductionBar:
PrimaryBuilding:
Power:
Amount: -10
AFLD:
Inherits: ^Building
@@ -873,7 +893,6 @@ AFLD:
Name: Airfield
Description: Produces and reloads aircraft.\n Special Ability: Paratroopers\n Special Ability: Spy Plane
Building:
Power: -20
Footprint: xxx xxx
Dimensions: 3,2
Health:
@@ -920,6 +939,8 @@ AFLD:
ProductionBar:
SupportPowerChargeBar:
PrimaryBuilding:
Power:
Amount: -20
POWR:
Inherits: ^Building
@@ -936,7 +957,6 @@ POWR:
ProvidesCustomPrerequisite:
Prerequisite: anypower
Building:
Power: 100
Footprint: xx xx
Dimensions: 2,2
Health:
@@ -948,6 +968,9 @@ POWR:
Bib:
IronCurtainable:
DeadBuildingState:
Power:
Amount: 100
ScaleWithHealth: True
APWR:
Inherits: ^Building
@@ -964,7 +987,6 @@ APWR:
ProvidesCustomPrerequisite:
Prerequisite: anypower
Building:
Power: 200
Footprint: ___ xxx xxx
Dimensions: 3,3
Health:
@@ -976,6 +998,9 @@ APWR:
Bib:
IronCurtainable:
DeadBuildingState:
Power:
Amount: 200
ScaleWithHealth: True
STEK:
Inherits: ^Building
@@ -992,7 +1017,6 @@ STEK:
ProvidesCustomPrerequisite:
Prerequisite: techcenter
Building:
Power: -100
Footprint: xxx xxx
Dimensions: 3,2
Health:
@@ -1003,6 +1027,8 @@ STEK:
Range: 4c0
Bib:
IronCurtainable:
Power:
Amount: -100
BARR:
Inherits: ^Building
@@ -1017,7 +1043,6 @@ BARR:
Name: Soviet Barracks
Description: Trains infantry.
Building:
Power: -20
Footprint: xx xx
Dimensions: 2,2
Health:
@@ -1041,6 +1066,8 @@ BARR:
ProductionBar:
ProvidesCustomPrerequisite:
Prerequisite: barracks
Power:
Amount: -20
KENN:
Inherits: ^Building
@@ -1055,7 +1082,6 @@ KENN:
Name: Kennel
Description: Trains Attack Dogs.
Building:
Power: -10
-GivesBuildableArea:
Health:
HP: 300
@@ -1076,6 +1102,8 @@ KENN:
IronCurtainable:
ProductionBar:
-EmitInfantryOnSell:
Power:
Amount: -10
TENT:
Inherits: ^Building
@@ -1090,7 +1118,6 @@ TENT:
Name: Allied Barracks
Description: Trains infantry.
Building:
Power: -20
Footprint: xx xx
Dimensions: 2,2
Health:
@@ -1114,6 +1141,8 @@ TENT:
ProductionBar:
ProvidesCustomPrerequisite:
Prerequisite: barracks
Power:
Amount: -20
FIX:
Inherits: ^Building
@@ -1128,7 +1157,6 @@ FIX:
Name: Service Depot
Description: Repairs vehicles for credits.
Building:
Power: -30
Footprint: _x_ xxx _x_
Dimensions: 3,3
Health:
@@ -1145,6 +1173,8 @@ FIX:
RepairsUnits:
Interval: 10
WithRepairAnimation:
Power:
Amount: -30
FACF:
Inherits: ^Building
@@ -1159,7 +1189,6 @@ FACF:
Name: Fake Construction Yard
Description: Looks like a Construction Yard.
Building:
Power: -2
Footprint: xxx xxx xxx
Dimensions: 3,3
-GivesBuildableArea:
@@ -1173,6 +1202,8 @@ FACF:
Fake:
IronCurtainable:
-EmitInfantryOnSell:
Power:
Amount: -2
WEAF:
Inherits: ^Building
@@ -1187,7 +1218,6 @@ WEAF:
Name: Fake War Factory
Description: Looks like a War Factory.
Building:
Power: -2
Footprint: xxx xxx
Dimensions: 3,2
-GivesBuildableArea:
@@ -1202,6 +1232,8 @@ WEAF:
Fake:
IronCurtainable:
-EmitInfantryOnSell:
Power:
Amount: -2
SYRF:
Inherits: ^Building
@@ -1218,7 +1250,6 @@ SYRF:
TargetableBuilding:
TargetTypes: Ground, Water
Building:
Power: -2
Footprint: xxx xxx xxx
Dimensions: 3,3
Adjacent: 8
@@ -1232,6 +1263,8 @@ SYRF:
Image: SYRD
Fake:
-EmitInfantryOnSell:
Power:
Amount: -2
SPEF:
Inherits: ^Building
@@ -1248,7 +1281,6 @@ SPEF:
Name: Fake Sub Pen
Description: Looks like a Sub Pen.
Building:
Power: -2
Footprint: xxx xxx xxx
Dimensions: 3,3
Adjacent: 8
@@ -1262,6 +1294,8 @@ SPEF:
Image: SPEN
Fake:
-EmitInfantryOnSell:
Power:
Amount: -2
DOMF:
Inherits: ^Building
@@ -1276,7 +1310,6 @@ DOMF:
Queue: Defense
Prerequisites: ~disabled
Building:
Power: -2
Footprint: xx xx
Dimensions: 2,2
-GivesBuildableArea:
@@ -1289,6 +1322,8 @@ DOMF:
Image: DOME
Fake:
-EmitInfantryOnSell:
Power:
Amount: -2
SBAG:
Inherits: ^Wall

View File

@@ -1,7 +1,6 @@
GACNST:
Inherits: ^Building
Building:
Power: 0
Footprint: xxx xxx xxx
BuildSounds: facbld1.aud
Dimensions: 3,3
@@ -41,6 +40,8 @@ GACNST:
WithIdleOverlay@FRONT:
Sequence: idle-front
WithBuildingPlacedOverlay:
Power:
Amount: 0
GAPOWR:
Inherits: ^Building
@@ -57,7 +58,6 @@ GAPOWR:
ProvidesCustomPrerequisite:
Prerequisite: anypower
Building:
Power: 100
Footprint: xx xx
Dimensions: 2,2
Health:
@@ -70,6 +70,9 @@ GAPOWR:
Sequence: idle-lights
WithIdleOverlay@PLUG:
Sequence: idle-plug
Power:
Amount: 100
ScaleWithHealth: True
GAPILE:
Inherits: ^Building
@@ -87,7 +90,6 @@ GAPILE:
ProvidesCustomPrerequisite:
Prerequisite: barracks
Building:
Power: -20
Footprint: xx xx
Dimensions: 2,2
Health:
@@ -110,6 +112,8 @@ GAPILE:
Sequence: idle-light
WithIdleOverlay@FLAG:
Sequence: idle-flag
Power:
Amount: -20
PROC:
Inherits: ^Building
@@ -125,7 +129,6 @@ PROC:
Owner: gdi,nod
Hotkey: r
Building:
Power: -30
Footprint: xxx xxx x==
Dimensions: 3,3
Health:
@@ -149,6 +152,8 @@ PROC:
Sequence: idle-redlights
WithIdleOverlay@BIB:
Sequence: bib
Power:
Amount: -30
GAWEAP:
Inherits: ^Building
@@ -165,7 +170,6 @@ GAWEAP:
Owner: gdi
Hotkey: w
Building:
Power: -30
Footprint: ___ xxx ===
Dimensions: 3,3
Health:
@@ -191,6 +195,8 @@ GAWEAP:
Sequence: idle-turbines
WithIdleOverlay@BIB:
Sequence: bib
Power:
Amount: -30
NAPOWR:
Inherits: ^Building
@@ -207,7 +213,6 @@ NAPOWR:
ProvidesCustomPrerequisite:
Prerequisite: anypower
Building:
Power: 100
Footprint: xx xx
Dimensions: 2,2
Health:
@@ -218,6 +223,9 @@ NAPOWR:
Range: 4c0
WithIdleOverlay@LIGHTS:
Sequence: idle-lights
Power:
Amount: 100
ScaleWithHealth: True
NAAPWR:
Inherits: ^Building
@@ -235,7 +243,6 @@ NAAPWR:
ProvidesCustomPrerequisite:
Prerequisite: anypower
Building:
Power: 200
Footprint: xxx xxx
Dimensions: 2,3
Health:
@@ -246,6 +253,9 @@ NAAPWR:
Range: 4c0
WithIdleOverlay@LIGHTS:
Sequence: idle-lights
Power:
Amount: 200
ScaleWithHealth: True
NAHAND:
Inherits: ^Building
@@ -263,7 +273,6 @@ NAHAND:
ProvidesCustomPrerequisite:
Prerequisite: barracks
Building:
Power: -20
Footprint: xxx xxx
Dimensions: 3,2
Health:
@@ -284,6 +293,8 @@ NAHAND:
Sequence: idle-lights
WithProductionOverlay@LIGHT:
Sequence: production-light
Power:
Amount: -20
NAWEAP:
Inherits: ^Building
@@ -300,7 +311,6 @@ NAWEAP:
Owner: nod
Hotkey: f
Building:
Power: -30
Footprint: ___ xxx ===
Dimensions: 3,3
Health:
@@ -322,6 +332,8 @@ NAWEAP:
Sequence: production-lights
WithIdleOverlay@BIB:
Sequence: bib
Power:
Amount: -30
GASAND:
Inherits: ^Wall
@@ -555,7 +567,6 @@ GASPOT:
Tooltip:
Name: Light Tower
Building:
Power: -10
Footprint: x
Dimensions: 1,1
Health:
@@ -569,6 +580,8 @@ GASPOT:
Range: 3
WithIdleOverlay@LIGHTS:
Sequence: idle-lights
Power:
Amount: -10
GALITE:
Inherits: ^Building
@@ -582,7 +595,6 @@ GALITE:
Tooltip:
Name: Light Post
Building:
Power: 0
Footprint: x
Dimensions: 1,1
RenderBuilding:
@@ -594,6 +606,8 @@ GALITE:
Type: Wood
RevealsShroud:
Range: 0c0
Power:
Amount: 0
# WithIdleOverlay@LIGHTING:
# Sequence: lighting
@@ -613,7 +627,6 @@ GARADR:
ProvidesCustomPrerequisite:
Prerequisite: radar
Building:
Power: -50
Footprint: ___ xxx xxx
Dimensions: 3,3
Health:
@@ -634,6 +647,8 @@ GARADR:
PauseOnLowPower: yes
TargetableBuilding:
TargetTypes: Ground, C4, SpyInfiltrate
Power:
Amount: -50
NARADR:
Inherits: ^Building
@@ -651,7 +666,6 @@ NARADR:
ProvidesCustomPrerequisite:
Prerequisite: radar
Building:
Power: -50
Footprint: xx xx
Dimensions: 2,2
Health:
@@ -672,6 +686,8 @@ NARADR:
PauseOnLowPower: yes
TargetableBuilding:
TargetTypes: Ground, C4, SpyInfiltrate
Power:
Amount: -50
GATECH:
Inherits: ^Building
@@ -689,7 +705,6 @@ GATECH:
ProvidesCustomPrerequisite:
Prerequisite: tech
Building:
Power: -150
Footprint: xxx xxx xxx
Dimensions: 3,3
Health:
@@ -700,6 +715,8 @@ GATECH:
Range: 4c0
WithIdleOverlay@LIGHTS:
Sequence: idle-lights
Power:
Amount: -150
NATECH:
Inherits: ^Building
@@ -717,7 +734,6 @@ NATECH:
ProvidesCustomPrerequisite:
Prerequisite: tech
Building:
Power: -150
Footprint: xx xx
Dimensions: 2,2
Health:
@@ -728,6 +744,8 @@ NATECH:
Range: 4c0
WithIdleOverlay@LIGHTS:
Sequence: idle-lights
Power:
Amount: -150
GAHPAD:
Inherits: ^Building
@@ -742,7 +760,6 @@ GAHPAD:
Queue: Building
Hotkey: i
Building:
Power: -10
Footprint: xx xx
Dimensions: 2,2
Health:
@@ -762,6 +779,8 @@ GAHPAD:
Sequence: idle-platform
WithIdleOverlay@LIGHTS:
Sequence: idle-lights
Power:
Amount: -10
NAHPAD:
Inherits: ^Building
@@ -776,7 +795,6 @@ NAHPAD:
Queue: Building
Hotkey: j
Building:
Power: -10
Footprint: xx xx
Dimensions: 2,2
Health:
@@ -796,6 +814,8 @@ NAHPAD:
Sequence: idle-platform
WithIdleOverlay@LIGHTS:
Sequence: idle-lights
Power:
Amount: -10
GADEPT:
Inherits: ^Building
@@ -811,7 +831,6 @@ GADEPT:
Queue: Building
Hotkey: v
Building:
Power: -30
Footprint: _x_ xxx _x_
Dimensions: 3,3
Health:
@@ -831,6 +850,8 @@ GADEPT:
Sequence: crane
WithRepairOverlay@PLATFORM:
Sequence: platform
Power:
Amount: -30
#TODO: Placeholder, replace with Component Tower + Vulcan Upgrade
GAVULC:
@@ -846,7 +867,6 @@ GAVULC:
Owner: gdi
Hotkey: v
Building:
Power: -20
DisabledOverlay:
-GivesBuildableArea:
Health:
@@ -889,6 +909,8 @@ GAVULC:
-RenderBuilding:
RenderBuildingWall:
Type: wall
Power:
Amount: -20
#TODO: Placeholder, replace with Component Tower + RPG Upgrade
GAROCK:
@@ -904,7 +926,6 @@ GAROCK:
Owner: gdi
Hotkey: r
Building:
Power: -50
RequiresPower:
DisabledOverlay:
-GivesBuildableArea:
@@ -938,6 +959,8 @@ GAROCK:
-RenderBuilding:
RenderBuildingWall:
Type: wall
Power:
Amount: -50
#TODO: Placeholder, replace with Component Tower + SAM Upgrade
GACSAM:
@@ -953,7 +976,6 @@ GACSAM:
Owner: gdi
Hotkey: a
Building:
Power: -30
RequiresPower:
DisabledOverlay:
-GivesBuildableArea:
@@ -987,6 +1009,8 @@ GACSAM:
-RenderBuilding:
RenderBuildingWall:
Type: wall
Power:
Amount: -30
NASAM:
Inherits: ^Building
@@ -1001,7 +1025,6 @@ NASAM:
Owner: nod
Hotkey: s
Building:
Power: -30
RequiresPower:
DisabledOverlay:
-GivesBuildableArea:
@@ -1028,6 +1051,8 @@ NASAM:
Weapon: SAMTower
LocalOffset: 512,0,512
Recoil: 0
Power:
Amount: -30
NALASR:
Inherits: ^Building
@@ -1042,7 +1067,6 @@ NALASR:
Owner: nod
Hotkey: l
Building:
Power: -40
RequiresPower:
DisabledOverlay:
-GivesBuildableArea:
@@ -1066,6 +1090,8 @@ NALASR:
RenderVoxels:
WithVoxelTurret:
AutoTarget:
Power:
Amount: -40
NAOBEL:
Inherits: ^Building
@@ -1081,7 +1107,6 @@ NAOBEL:
Owner: nod
Hotkey: o
Building:
Power: -150
Footprint: xx xx
Dimensions: 2,2
RequiresPower:
@@ -1109,6 +1134,8 @@ NAOBEL:
Range: 5
WithIdleOverlay@LIGHTS:
Sequence: idle-lights
Power:
Amount: -150
ANYPOWER:
Tooltip: