diff --git a/OpenRa.Game/Traits/Activities/HeliReturn.cs b/OpenRa.Game/Traits/Activities/HeliReturn.cs index dcaf9f7f3b..83dd9cac75 100644 --- a/OpenRa.Game/Traits/Activities/HeliReturn.cs +++ b/OpenRa.Game/Traits/Activities/HeliReturn.cs @@ -14,7 +14,7 @@ namespace OpenRa.Game.Traits.Activities static Actor ChooseHelipad(Actor self) { return Game.world.Actors.FirstOrDefault( - a => a.LegacyInfo == Rules.UnitInfo["HPAD"] && + a => a.Info == Rules.NewUnitInfo["HPAD"] && a.Owner == self.Owner && !Reservable.IsReserved(a)); } diff --git a/OpenRa.Game/Traits/Activities/Sell.cs b/OpenRa.Game/Traits/Activities/Sell.cs index 330e69692b..87d2a0425c 100644 --- a/OpenRa.Game/Traits/Activities/Sell.cs +++ b/OpenRa.Game/Traits/Activities/Sell.cs @@ -13,8 +13,9 @@ namespace OpenRa.Game.Traits.Activities void DoSell(Actor self) { - var refund = Rules.General.RefundPercent - * self.Health * self.LegacyInfo.Cost / self.LegacyInfo.Strength; + var cost = self.Info.Traits.Get().Cost; + var hp = self.Info.Traits.WithInterface().First().HP; + var refund = Rules.General.RefundPercent * self.Health * cost / hp; self.Owner.GiveCash((int)refund); self.Health = 0; diff --git a/OpenRa.Game/Traits/AttackBase.cs b/OpenRa.Game/Traits/AttackBase.cs index 2e38d3dc15..1c7b0c9139 100644 --- a/OpenRa.Game/Traits/AttackBase.cs +++ b/OpenRa.Game/Traits/AttackBase.cs @@ -8,6 +8,15 @@ namespace OpenRa.Game.Traits { class AttackBaseInfo : ITraitInfo { + public readonly string PrimaryWeapon = null; + public readonly string SecondaryWeapon = null; + public readonly int Recoil = 0; + public readonly int[] PrimaryLocalOffset = { }; + public readonly int[] SecondaryLocalOffset = { }; + public readonly int[] PrimaryOffset = { 0, 0 }; + public readonly int[] SecondaryOffset = null; + public readonly bool MuzzleFlash = false; + public virtual object Create(Actor self) { return new AttackBase(self); } } diff --git a/OpenRa.Game/Traits/Building.cs b/OpenRa.Game/Traits/Building.cs index 934f2c8156..a626b65a9e 100644 --- a/OpenRa.Game/Traits/Building.cs +++ b/OpenRa.Game/Traits/Building.cs @@ -9,8 +9,28 @@ using OpenRa.Game.Graphics; namespace OpenRa.Game.Traits { - class BuildingInfo : ITraitInfo + class OwnedActorInfo { + public readonly int HP = 0; + public readonly ArmorType Armor = ArmorType.none; + public readonly bool Crewed = false; // replace with trait? + public readonly int InitialFacing = 128; + } + + class BuildingInfo : OwnedActorInfo, ITraitInfo + { + public readonly int Power = 0; + public readonly bool RequiresPower = false; + public readonly bool BaseNormal = true; + public readonly int Adjacent = 1; + public readonly bool Bib = false; + public readonly bool Capturable = false; + public readonly bool Repairable = true; + public readonly string Footprint = "x"; + public readonly string[] Produces = { }; // does this go somewhere else? + public readonly int2 Dimensions = new int2(1, 1); + public readonly bool WaterBound = false; + public object Create(Actor self) { return new Building(self); } } diff --git a/OpenRa.Game/Traits/Cargo.cs b/OpenRa.Game/Traits/Cargo.cs index 87bcb94e65..72d774eb61 100644 --- a/OpenRa.Game/Traits/Cargo.cs +++ b/OpenRa.Game/Traits/Cargo.cs @@ -10,6 +10,7 @@ namespace OpenRa.Game.Traits class CargoInfo : ITraitInfo { public readonly UnitMovementType[] PassengerTypes = { }; + public readonly int UnloadFacing = 0; public object Create(Actor self) { return new Cargo(self); } } diff --git a/OpenRa.Game/Traits/StoresOre.cs b/OpenRa.Game/Traits/StoresOre.cs index 67aa4af48d..f3591580c3 100644 --- a/OpenRa.Game/Traits/StoresOre.cs +++ b/OpenRa.Game/Traits/StoresOre.cs @@ -14,7 +14,7 @@ namespace OpenRa.Game.Traits public void OnSteal(Actor self, Actor thief) { // Steal half the ore the building holds - var toSteal = (self.LegacyInfo as LegacyBuildingInfo).Storage/2; + var toSteal = self.Info.Traits.Get().Capacity / 2; self.Owner.TakeCash(toSteal); thief.Owner.GiveCash(toSteal); @@ -28,15 +28,12 @@ namespace OpenRa.Game.Traits public IEnumerable GetPips(Actor self) { - for (int i = 0; i < self.LegacyInfo.OrePips; i++) - { - if (Game.LocalPlayer.GetSiloFullness() > i * 1.0f / self.LegacyInfo.OrePips) - { - yield return PipType.Yellow; - continue; - } - yield return PipType.Transparent; - } + var numPips = self.Info.Traits.Get().Pips; + + return Graphics.Util.MakeArray( numPips, + i => (Game.LocalPlayer.GetSiloFullness() > i * 1.0f / numPips) + ? PipType.Yellow : PipType.Transparent ); + } } } diff --git a/OpenRa.Game/Traits/Unit.cs b/OpenRa.Game/Traits/Unit.cs index c3de5d2dfe..9b44ae78b2 100755 --- a/OpenRa.Game/Traits/Unit.cs +++ b/OpenRa.Game/Traits/Unit.cs @@ -2,12 +2,8 @@ namespace OpenRa.Game.Traits { - class UnitInfo : ITraitInfo + class UnitInfo : OwnedActorInfo, ITraitInfo { - public readonly int HP = 0; - public readonly ArmorType Armor = ArmorType.none; - public readonly bool Crewed = false; // replace with trait? - public object Create(Actor self) { return new Unit(self); } } diff --git a/RulesConverter/Program.cs b/RulesConverter/Program.cs index 358a3871d4..0ff9208a33 100644 --- a/RulesConverter/Program.cs +++ b/RulesConverter/Program.cs @@ -39,7 +39,8 @@ namespace RulesConverter { "Unit", new PL { { "HP", "Strength" }, { "Armor", "Armor" }, - { "Crewed", "Crewed" } } + { "Crewed", "Crewed" }, + { "InitialFacing", "InitialFacing" } } }, { "Selectable", new PL { @@ -102,7 +103,8 @@ namespace RulesConverter { "HP", "Strength" }, { "Armor", "Armor" }, { "Crewed", "Crewed" }, - { "WaterBound", "WaterBound" } } + { "WaterBound", "WaterBound" }, + { "InitialFacing", "InitialFacing" } } }, { "StoresOre", new PL { diff --git a/ra.yaml b/ra.yaml index 419bad4e12..086b7975eb 100644 --- a/ra.yaml +++ b/ra.yaml @@ -1,23 +1,3 @@ -# -# Red Alert rules -# - -DefaultVehicle: -# Unit: -# HP: 1 -# Armor: none -# Crewed: yes -# Voice: VehicleVoice -# Mobile: -# Sight: 1 -# ROT: 5 -# Speed: 1 -# UMT: Wheel -# Repairable: -# Chronoshiftable: -# Passenger: -# IronCurtainable: - V2RL: Inherits: DefaultVehicle Buildable: @@ -39,6 +19,7 @@ V2RL: ROT: 5 Speed: 7 AttackBase: + PrimaryWeapon: SCUD RenderUnitReload: AutoTarget: Repairable: @@ -68,6 +49,8 @@ V2RL: Speed: 9 Turreted: AttackTurreted: + PrimaryWeapon: 75mm + Recoil: 2 RenderUnitTurreted: AutoTarget: Repairable: @@ -97,6 +80,8 @@ V2RL: Speed: 8 Turreted: AttackTurreted: + PrimaryWeapon: 90mm + Recoil: 3 RenderUnitTurreted: AutoTarget: Repairable: @@ -126,6 +111,8 @@ V2RL: Speed: 7 Turreted: AttackTurreted: + PrimaryWeapon: 105mm + Recoil: 3 RenderUnitTurreted: AutoTarget: Repairable: @@ -155,6 +142,10 @@ V2RL: Speed: 4 Turreted: AttackTurreted: + PrimaryWeapon: 120mm + PrimaryLocalOffset: -4,-5,0,4,-5,0 + SecondaryLocalOffset: -7,2,25,7,2,-25 + Recoil: 4 RenderUnitTurreted: AutoTarget: Repairable: @@ -237,6 +228,7 @@ ARTY: ROT: 2 Speed: 6 AttackBase: + PrimaryWeapon: 155mm RenderUnit: Explodes: AutoTarget: @@ -323,6 +315,9 @@ JEEP: Speed: 10 Turreted: AttackTurreted: + PrimaryWeapon: M60mg + PrimaryOffset: 0,0,0,-2 + MuzzleFlash: yes RenderUnitTurreted: AutoTarget: Repairable: @@ -350,12 +345,16 @@ APC: ROT: 5 Speed: 10 AttackBase: + PrimaryWeapon: M60mg + PrimaryOffset: 0,0,0,-4 + MuzzleFlash: yes RenderUnitMuzzleFlash: AutoTarget: Repairable: Chronoshiftable: Cargo: PassengerTypes: Foot + UnloadFacing: 220 Passenger: IronCurtainable: @@ -444,6 +443,7 @@ SS: RenderUnit: Submarine: AttackBase: + PrimaryWeapon: TorpTube Chronoshiftable: IronCurtainable: @@ -467,6 +467,8 @@ DD: Speed: 6 Turreted: AttackTurreted: + PrimaryWeapon: Stinger + PrimaryOffset: 0,-8,0,-3 RenderUnitTurreted: AutoTarget: Chronoshiftable: @@ -492,6 +494,10 @@ CA: Speed: 4 Turreted: AttackTurreted: + PrimaryWeapon: 8Inch + PrimaryOffset: 0,17,0,-2 + SecondaryOffset: 0,-17,0,-2 + Recoil: 3 RenderUnitTurreted: AutoTarget: Chronoshiftable: @@ -539,6 +545,8 @@ PT: Speed: 9 Turreted: AttackTurreted: + PrimaryWeapon: 2Inch + PrimaryOffset: 0,-6,0,-1 RenderUnitTurreted: AutoTarget: Chronoshiftable: @@ -558,7 +566,9 @@ MIG: Unit: HP: 50 Armor: light + InitialFacing: 192 AttackPlane: + PrimaryWeapon: Maverick Plane: ROT: 5 Speed: 20 @@ -583,7 +593,9 @@ YAK: HP: 60 Armor: light Crewed: yes + InitialFacing: 192 AttackPlane: + PrimaryWeapon: ChainGun Plane: ROT: 5 Speed: 16 @@ -607,6 +619,7 @@ TRAN: Unit: HP: 90 Armor: light + InitialFacing: 20 Helicopter: ROT: 5 Speed: 12 @@ -631,7 +644,11 @@ HELI: HP: 225 Armor: heavy Crewed: yes + InitialFacing: 20 AttackHeli: + PrimaryWeapon: Hellfire + PrimaryOffset: -5,0,0,2 + SecondaryOffset: 5,0,0,2 Helicopter: ROT: 4 Speed: 16 @@ -656,7 +673,11 @@ HIND: HP: 225 Armor: heavy Crewed: yes + InitialFacing: 20 AttackHeli: + PrimaryWeapon: ChainGun + PrimaryOffset: -5,0,0,2 + SecondaryOffset: 5,0,0,2 Helicopter: ROT: 4 Speed: 12 @@ -679,6 +700,14 @@ IRON: Selectable: Priority: 3 Building: + Power: -200 + RequiresPower: true + Footprint: xx xx + Dimensions: 2,2 + Capturable: true + HP: 400 + Armor: wood + Crewed: yes RenderBuilding: IronCurtainable: IronCurtain: @@ -696,6 +725,14 @@ PDOX: Selectable: Priority: 3 Building: + Power: -200 + RequiresPower: true + Footprint: xx xx + Dimensions: 2,2 + Capturable: true + HP: 400 + Armor: wood + Crewed: yes RenderBuilding: Chronosphere: IronCurtainable: @@ -713,9 +750,16 @@ PBOX: Selectable: Priority: 3 Building: + Power: -15 + Footprint: x + Dimensions: 1,1 + HP: 400 + Armor: wood + Crewed: yes Turreted: RenderBuilding: AttackTurreted: + PrimaryWeapon: Vulcan AutoTarget: IronCurtainable: @@ -732,9 +776,16 @@ HBOX: Selectable: Priority: 3 Building: + Power: -15 + Footprint: x + Dimensions: 1,1 + HP: 600 + Armor: wood + Crewed: yes Turreted: RenderBuilding: AttackTurreted: + PrimaryWeapon: Vulcan AutoTarget: IronCurtainable: @@ -751,9 +802,17 @@ TSLA: Selectable: Priority: 3 Building: + Power: -150 + RequiresPower: true + Footprint: _ x + Dimensions: 1,2 + HP: 400 + Armor: heavy + Crewed: yes Turreted: RenderBuildingCharge: AttackTurreted: + PrimaryWeapon: TeslaZap AutoTarget: IronCurtainable: @@ -770,9 +829,17 @@ GUN: Selectable: Priority: 3 Building: + Power: -40 + Footprint: x + Dimensions: 1,1 + HP: 400 + Armor: heavy + Crewed: yes + InitialFacing: 50 Turreted: RenderBuildingTurreted: AttackTurreted: + PrimaryWeapon: TurretGun AutoTarget: IronCurtainable: @@ -789,9 +856,18 @@ AGUN: Selectable: Priority: 3 Building: + Power: -50 + RequiresPower: true + Footprint: _ x + Dimensions: 1,2 + HP: 400 + Armor: heavy + Crewed: yes + InitialFacing: 224 Turreted: RenderBuildingTurreted: AttackTurreted: + PrimaryWeapon: ZSU-23 AutoTarget: IronCurtainable: @@ -809,8 +885,15 @@ FTUR: Priority: 3 Turreted: Building: + Power: -20 + Footprint: x + Dimensions: 1,1 + HP: 400 + Armor: heavy + Crewed: yes RenderBuilding: AttackTurreted: + PrimaryWeapon: FireballLauncher AutoTarget: IronCurtainable: @@ -827,6 +910,14 @@ GAP: Selectable: Priority: 3 Building: + Power: -60 + RequiresPower: true + Footprint: _ x + Dimensions: 1,2 + Capturable: true + HP: 1000 + Armor: wood + Crewed: yes RenderBuilding: IronCurtainable: @@ -843,9 +934,16 @@ SAM: Selectable: Priority: 3 Building: + Power: -20 + Footprint: xx + Dimensions: 2,1 + HP: 400 + Armor: heavy + Crewed: yes Turreted: RenderBuildingTurreted: AttackTurreted: + PrimaryWeapon: Nike AutoTarget: IronCurtainable: @@ -862,6 +960,12 @@ MSLO: Selectable: Priority: 3 Building: + Power: -100 + Footprint: xx + Dimensions: 2,1 + HP: 400 + Armor: heavy + Crewed: yes RenderBuilding: IronCurtainable: @@ -878,6 +982,14 @@ ATEK: Selectable: Priority: 3 Building: + Power: -200 + Footprint: xx xx + Dimensions: 2,2 + Capturable: true + Bib: yes + HP: 400 + Armor: wood + Crewed: yes RenderBuilding: IronCurtainable: GpsLaunchSite: @@ -895,6 +1007,14 @@ WEAP: Selectable: Priority: 3 Building: + Power: -30 + Footprint: xxx xxx + Dimensions: 3,2 + Capturable: true + Bib: yes + HP: 1000 + Armor: light + Crewed: yes RenderWarFactory: RenderBuilding: RallyPoint: @@ -914,6 +1034,15 @@ SYRD: Selectable: Priority: 3 Building: + Power: -30 + Footprint: xxx xxx xxx + Dimensions: 3,3 + Capturable: true + BaseNormal: no + Adjacent: 8 + HP: 1000 + Armor: light + WaterBound: yes RenderBuilding: ProductionSurround: IronCurtainable: @@ -931,6 +1060,15 @@ SPEN: Selectable: Priority: 3 Building: + Power: -30 + Footprint: xxx xxx xxx + Dimensions: 3,3 + Capturable: true + BaseNormal: no + Adjacent: 8 + HP: 1000 + Armor: light + WaterBound: yes RenderBuilding: ProductionSurround: IronCurtainable: @@ -940,6 +1078,14 @@ FACT: Selectable: Priority: 3 Building: + Power: 0 + Footprint: xxx xxx xxx + Dimensions: 3,3 + Capturable: true + Bib: yes + HP: 1000 + Armor: heavy + Crewed: yes RenderBuilding: ConstructionYard: IronCurtainable: @@ -957,9 +1103,19 @@ PROC: Selectable: Priority: 3 Building: + Power: -30 + Footprint: _x_ xxx x== + Dimensions: 3,3 + Capturable: true + Bib: yes + HP: 900 + Armor: wood + Crewed: yes RenderBuilding: AcceptsOre: StoresOre: + Pips: 17 + Capacity: 2000 IronCurtainable: SILO: @@ -975,8 +1131,16 @@ SILO: Selectable: Priority: 3 Building: + Power: -10 + Footprint: x + Dimensions: 1,1 + Capturable: true + HP: 300 + Armor: wood RenderBuildingOre: StoresOre: + Pips: 5 + Capacity: 1500 IronCurtainable: HPAD: @@ -992,6 +1156,14 @@ HPAD: Selectable: Priority: 3 Building: + Power: -10 + Footprint: xx xx + Dimensions: 2,2 + Capturable: true + Bib: yes + HP: 800 + Armor: wood + Crewed: yes RenderBuilding: Production: BelowUnits: @@ -1011,6 +1183,15 @@ DOME: Selectable: Priority: 3 Building: + Power: -40 + RequiresPower: true + Footprint: xx xx + Dimensions: 2,2 + Capturable: true + Bib: yes + HP: 1000 + Armor: wood + Crewed: yes RenderBuilding: ProvidesRadar: IronCurtainable: @@ -1028,6 +1209,13 @@ AFLD: Selectable: Priority: 3 Building: + Power: -30 + Footprint: xxx xxx + Dimensions: 3,2 + Capturable: true + HP: 1000 + Armor: heavy + Crewed: yes RenderBuilding: Production: BelowUnits: @@ -1047,6 +1235,14 @@ POWR: Selectable: Priority: 3 Building: + Power: 100 + Footprint: xx xx + Dimensions: 2,2 + Capturable: true + Bib: yes + HP: 400 + Armor: wood + Crewed: yes RenderBuilding: IronCurtainable: @@ -1063,6 +1259,14 @@ APWR: Selectable: Priority: 3 Building: + Power: 200 + Footprint: ___ xxx xxx + Dimensions: 3,3 + Capturable: true + Bib: yes + HP: 700 + Armor: wood + Crewed: yes RenderBuilding: IronCurtainable: @@ -1079,6 +1283,14 @@ STEK: Selectable: Priority: 3 Building: + Power: -100 + Footprint: xxx xxx + Dimensions: 3,2 + Capturable: true + Bib: yes + HP: 600 + Armor: wood + Crewed: yes RenderBuilding: IronCurtainable: @@ -1095,6 +1307,14 @@ BARR: Selectable: Priority: 3 Building: + Power: -20 + Footprint: xx xx + Dimensions: 2,2 + Capturable: true + Bib: yes + HP: 800 + Armor: wood + Crewed: yes RenderBuilding: RallyPoint: Production: @@ -1113,6 +1333,14 @@ TENT: Selectable: Priority: 3 Building: + Power: -20 + Footprint: xx xx + Dimensions: 2,2 + Capturable: true + Bib: yes + HP: 800 + Armor: wood + Crewed: yes RenderBuilding: RallyPoint: Production: @@ -1131,6 +1359,11 @@ KENN: Selectable: Priority: 3 Building: + Power: -10 + Footprint: x + Dimensions: 1,1 + HP: 400 + Armor: wood RenderBuilding: RallyPoint: Production: @@ -1149,6 +1382,13 @@ FIX: Selectable: Priority: 3 Building: + Power: -30 + Footprint: _x_ xxx _x_ + Dimensions: 3,3 + Capturable: true + HP: 800 + Armor: wood + Crewed: yes RenderBuilding: BelowUnits: Reservable: @@ -1166,6 +1406,13 @@ FACF: Selectable: Priority: 3 Building: + Power: -2 + Footprint: xxx xxx xxx + Dimensions: 3,3 + Capturable: true + BaseNormal: no + Bib: yes + HP: 30 RenderBuilding: Image: FACT Fake: @@ -1184,6 +1431,13 @@ WEAF: Selectable: Priority: 3 Building: + Power: -2 + Footprint: xxx xxx + Dimensions: 3,2 + Capturable: true + BaseNormal: no + Bib: yes + HP: 30 RenderWarFactory: RenderBuilding: Image: WEAP @@ -1203,6 +1457,14 @@ SYRF: Selectable: Priority: 3 Building: + Power: -2 + Footprint: xxx xxx xxx + Dimensions: 3,3 + Capturable: true + BaseNormal: no + Adjacent: 8 + HP: 30 + WaterBound: yes RenderBuilding: Image: SYRD Fake: @@ -1212,6 +1474,14 @@ SPEF: Selectable: Priority: 3 Building: + Power: -2 + Footprint: xxx xxx xxx + Dimensions: 3,3 + Capturable: true + BaseNormal: no + Adjacent: 8 + HP: 30 + WaterBound: yes RenderBuilding: Image: SPEN Fake: @@ -1229,6 +1499,13 @@ DOMF: Selectable: Priority: 3 Building: + Power: -2 + Footprint: xx xx + Dimensions: 2,2 + Capturable: true + BaseNormal: no + Bib: yes + HP: 30 RenderBuilding: Image: DOME Fake: @@ -1251,6 +1528,154 @@ MINV: BelowUnits: InvisibleToOthers: +T01: + Inherits: DefaultBuilding + Building: + Footprint: x_ x_ + Dimensions: 2,2 + RenderBuilding: + +T02: + Inherits: DefaultBuilding + Building: + Footprint: x_ x_ + Dimensions: 2,2 + RenderBuilding: + +T03: + Inherits: DefaultBuilding + Building: + Footprint: x_ x_ + Dimensions: 2,2 + RenderBuilding: + +T05: + Inherits: DefaultBuilding + Building: + Footprint: x_ x_ + Dimensions: 2,2 + RenderBuilding: + +T06: + Inherits: DefaultBuilding + Building: + Footprint: x_ x_ + Dimensions: 2,2 + RenderBuilding: + +T07: + Inherits: DefaultBuilding + Building: + Footprint: x_ x_ + Dimensions: 2,2 + RenderBuilding: + +T08: + Inherits: DefaultBuilding + Building: + Footprint: x_ + Dimensions: 2,1 + RenderBuilding: + +T10: + Inherits: DefaultBuilding + Building: + Footprint: xx xx + Dimensions: 2,2 + RenderBuilding: + +T11: + Inherits: DefaultBuilding + Building: + Footprint: xx xx + Dimensions: 2,2 + RenderBuilding: + +T12: + Inherits: DefaultBuilding + Building: + Footprint: xx xx + Dimensions: 2,2 + RenderBuilding: + +T13: + Inherits: DefaultBuilding + Building: + Footprint: xx xx + Dimensions: 2,2 + RenderBuilding: + +T14: + Inherits: DefaultBuilding + Building: + Footprint: xx xx + Dimensions: 2,2 + RenderBuilding: + +T15: + Inherits: DefaultBuilding + Building: + Footprint: xx xx + Dimensions: 2,2 + RenderBuilding: + +T16: + Inherits: DefaultBuilding + Building: + Footprint: x_ x_ + Dimensions: 2,2 + RenderBuilding: + +T17: + Inherits: DefaultBuilding + Building: + Footprint: x_ x_ + Dimensions: 2,2 + RenderBuilding: + +TC01: + Inherits: DefaultBuilding + Building: + Footprint: xx_ xx_ + Dimensions: 3,2 + RenderBuilding: + +TC02: + Inherits: DefaultBuilding + Building: + Footprint: xx_ xx_ + Dimensions: 3,2 + RenderBuilding: + +TC03: + Inherits: DefaultBuilding + Building: + Footprint: xx_ xx_ + Dimensions: 3,2 + RenderBuilding: + +TC04: + Inherits: DefaultBuilding + Building: + Footprint: xxx_ xxx_ xxx_ + Dimensions: 4,3 + RenderBuilding: + +TC05: + Inherits: DefaultBuilding + Building: + Footprint: xxx_ xxx_ xxx_ + Dimensions: 4,3 + RenderBuilding: + +MINE: + Inherits: DefaultBuilding + Building: + Footprint: x + Dimensions: 1,1 + RenderBuilding: + SeedsOre: + DOG: Inherits: DefaultInfantry Buildable: @@ -1292,6 +1717,7 @@ E1: Speed: 4 RenderInfantry: AttackBase: + PrimaryWeapon: M1Carbine TakeCover: SquishByTank: AutoTarget: @@ -1316,6 +1742,8 @@ E2: Speed: 5 RenderInfantry: AttackBase: + PrimaryWeapon: Grenade + PrimaryOffset: 0,0,0,-13 TakeCover: SquishByTank: AutoTarget: @@ -1340,6 +1768,8 @@ E3: Speed: 3 RenderInfantry: AttackBase: + PrimaryWeapon: RedEye + PrimaryOffset: 0,0,0,-13 TakeCover: SquishByTank: AutoTarget: @@ -1365,6 +1795,8 @@ E4: Speed: 3 RenderInfantry: AttackBase: + PrimaryWeapon: Flamer + PrimaryOffset: 0,0,0,-7 TakeCover: SquishByTank: AutoTarget: @@ -1465,6 +1897,7 @@ E7: RenderInfantry: C4Demolition: AttackBase: + PrimaryWeapon: Colt45 TakeCover: SquishByTank: AutoTarget: @@ -1491,53 +1924,8 @@ MEDI: RenderInfantry: AutoHeal: AttackBase: + PrimaryWeapon: Heal TakeCover: SquishByTank: Passenger: - - - -T01 - Inherits: DefaultTree -T02 - Inherits: DefaultTree -T03 - Inherits: DefaultTree -T05 - Inherits: DefaultTree -T06 - Inherits: DefaultTree -T07 - Inherits: DefaultTree -T08 - Inherits: DefaultTree -T10 - Inherits: DefaultTree -T11 - Inherits: DefaultTree -T12 - Inherits: DefaultTree -T13 - Inherits: DefaultTree -T14 - Inherits: DefaultTree -T15 - Inherits: DefaultTree -T16 - Inherits: DefaultTree -T17 - Inherits: DefaultTree -TC01 - Inherits: DefaultTree -TC02 - Inherits: DefaultTree -TC03 - Inherits: DefaultTree -TC04 - Inherits: DefaultTree -TC05 - Inherits: DefaultTree -MINE - Inherits: DefaultTree -