diff --git a/RulesConverter/Program.cs b/RulesConverter/Program.cs index 08b6050598..7cbb7f228d 100644 --- a/RulesConverter/Program.cs +++ b/RulesConverter/Program.cs @@ -5,10 +5,11 @@ using System.Text; using OpenRa.FileFormats; using System.IO; using IjwFramework.Types; -using Yaml; namespace RulesConverter { + using PL = Dictionary; + class Program { static void Main(string[] args) @@ -21,7 +22,7 @@ namespace RulesConverter var rules = new IniFile(ruleStreams); - var outputFile = args.Single(a => a.EndsWith(".yaml")); + var outputFile = args.Single(a => a.EndsWith(".rul")); var categoryMap = new Dictionary> { @@ -33,15 +34,129 @@ namespace RulesConverter { "InfantryTypes", Pair.New( "DefaultInfantry", "Infantry" ) }, }; + var traitMap = new Dictionary + { + { "Unit", new PL { + { "HP", "Strength" }, + { "Armor", "Armor" }, + { "Crewed", "Crewed" } } + }, + + { "Selectable", new PL { + { "Priority", "SelectionPriority" }, + { "Voice", "Voice" }, + { "@Bounds", "SelectionSize" } } + }, + + { "Mobile", new PL { + { "Sight", "Sight" }, + { "ROT", "ROT" }, + { "Speed", "Speed" } } + //{ "MovementType", ... }, + }, + + { "Plane", new PL { + { "ROT", "ROT" }, + { "Speed", "Speed" } } + }, + + { "Helicopter", new PL { + { "ROT", "ROT" }, + { "Speed", "Speed" } } + }, + + { "RenderBuilding", new PL { + { "Image", "Image" } } + }, + + { "RenderUnit", new PL { + { "Image", "Image" } } + }, + + { "RenderBuildingCharge", new PL { + { "Image", "Image" } } + }, + + { "RenderBuildingOre", new PL { + { "Image", "Image" } } + }, + + { "RenderBuildingTurreted", new PL { + { "Image", "Image" } } + }, + + { "RenderInfantry", new PL { + { "Image", "Image" } } + }, + + { "RenderUnitMuzzleFlash", new PL { + { "Image", "Image" } } + }, + + { "RenderUnitReload", new PL { + { "Image", "Image" } } + }, + + { "RenderUnitRotor", new PL { + { "Image", "Image" } } + }, + + { "RenderUnitSpinner", new PL { + { "Image", "Image" } } + }, + + { "RenderUnitTurreted", new PL { + { "Image", "Image" } } + }, + }; + using (var writer = File.CreateText(outputFile)) { foreach (var cat in categoryMap) foreach (var item in rules.GetSection(cat.Key).Select(a => a.Key)) { var iniSection = rules.GetSection(item); - var yamlSection = new MappingNode(new Yaml.String(item), new Yaml.Null()); - var doc = new Yaml.Mapping(new[] { yamlSection }); - writer.Write(doc.Write()); + writer.WriteLine("{0}:", item); + writer.WriteLine("\tInherits: {0}", cat.Value.First); + + var techLevel = iniSection.GetValue("TechLevel", "-1"); + if (techLevel != "-1") + { + writer.WriteLine("\tBuildable:"); + writer.WriteLine("\t\tTechLevel: {0}", techLevel); + writer.WriteLine("\t\tDescription: \"{0}\"", iniSection.GetValue("Description", "")); + writer.WriteLine("\t\tTab: \"{0}\"", cat.Value.Second); + writer.WriteLine("\t\tPrerequisites: [{0}]", iniSection.GetValue("Prerequisite", "")); + writer.WriteLine("\t\tOwner: {0}", iniSection.GetValue("Owner", "")); + writer.WriteLine("\t\tLongDesc: \"{0}\"", iniSection.GetValue("LongDesc", "")); + writer.WriteLine("\t\tCost: {0}", iniSection.GetValue("Cost", "")); + if (iniSection.Contains( "Icon" )) + writer.WriteLine("\t\tIcon: {0}", iniSection.GetValue("Icon", "")); + } + + var traits = iniSection.GetValue("Traits", "") + .Split(new char[] { ',', ' ' }, StringSplitOptions.RemoveEmptyEntries).ToList(); + + if (iniSection.GetValue("Selectable", "yes") == "yes") + traits.Add("Selectable"); + + foreach (var t in traits) + { + writer.WriteLine("\t{0}:", t); + if (traitMap.ContainsKey(t)) + foreach (var kv in traitMap[t]) + { + var v = iniSection.GetValue(kv.Value, ""); + var fmt = "\t\t{0}: {1}"; + var k = kv.Key; + if (k.StartsWith("@")) { k = k.Substring(1); fmt = "\t\t{0}: [{1}]"; } + if (k.StartsWith("$")) { k = k.Substring(1); fmt = "\t\t{0}: \"{1}\""; } + + if (!string.IsNullOrEmpty(v)) writer.WriteLine(fmt, k, v); + } + } + + writer.WriteLine(); } } } diff --git a/out.rul b/out.rul new file mode 100644 index 0000000000..a9658f9e4f --- /dev/null +++ b/out.rul @@ -0,0 +1,1475 @@ +V2RL: + Inherits: DefaultVehicle + Buildable: + TechLevel: 4 + Description: "V2 Rocket" + Tab: "Vehicle" + Prerequisites: [weap,dome] + Owner: soviet + LongDesc: "Long-range rocket artillery.\n Strong vs Infantry, Buildings\n Weak vs Tanks, Aircraft" + Cost: 700 + Unit: + HP: 150 + Armor: light + Crewed: yes + Mobile: + Sight: 5 + ROT: 5 + Speed: 7 + AttackBase: + RenderUnitReload: + AutoTarget: + Repairable: + Chronoshiftable: + Passenger: + IronCurtainable: + Selectable: + Voice: VehicleVoice + +1TNK: + Inherits: DefaultVehicle + Buildable: + TechLevel: 4 + Description: "Light Tank" + Tab: "Vehicle" + Prerequisites: [weap] + Owner: allies + LongDesc: "Light Tank, good for scouting.\n Strong vs Light Vehicles\n Weak vs Tanks, Aircraft" + Cost: 700 + Unit: + HP: 300 + Armor: heavy + Crewed: yes + Mobile: + Sight: 4 + ROT: 5 + Speed: 9 + Turreted: + AttackTurreted: + RenderUnitTurreted: + AutoTarget: + Repairable: + Chronoshiftable: + Passenger: + IronCurtainable: + Selectable: + Voice: VehicleVoice + +2TNK: + Inherits: DefaultVehicle + Buildable: + TechLevel: 6 + Description: "Medium Tank" + Tab: "Vehicle" + Prerequisites: [weap] + Owner: allies + LongDesc: "Allied Main Battle Tank.\n Strong vs Tanks, Light Vehicles\n Weak vs Infantry, Aircraft" + Cost: 800 + Unit: + HP: 400 + Armor: heavy + Crewed: yes + Mobile: + Sight: 5 + ROT: 5 + Speed: 8 + Turreted: + AttackTurreted: + RenderUnitTurreted: + AutoTarget: + Repairable: + Chronoshiftable: + Passenger: + IronCurtainable: + Selectable: + Voice: VehicleVoice + +3TNK: + Inherits: DefaultVehicle + Buildable: + TechLevel: 4 + Description: "Heavy Tank" + Tab: "Vehicle" + Prerequisites: [weap] + Owner: soviet + LongDesc: "Soviet Main Battle Tank, with dual cannons\n Strong vs Tanks, Light Vehicles\n Weak vs Infantry, Aircraft" + Cost: 950 + Unit: + HP: 400 + Armor: heavy + Crewed: yes + Mobile: + Sight: 5 + ROT: 5 + Speed: 7 + Turreted: + AttackTurreted: + RenderUnitTurreted: + AutoTarget: + Repairable: + Chronoshiftable: + Passenger: + IronCurtainable: + Selectable: + Voice: VehicleVoice + +4TNK: + Inherits: DefaultVehicle + Buildable: + TechLevel: 10 + Description: "Mammoth Tank" + Tab: "Vehicle" + Prerequisites: [weap,stek] + Owner: soviet + LongDesc: "Big and slow tank, with anti-air capability.\n Strong vs Tanks, Aircraft\n Weak vs Infantry" + Cost: 1700 + Unit: + HP: 600 + Armor: heavy + Crewed: yes + Mobile: + Sight: 6 + ROT: 5 + Speed: 4 + Turreted: + AttackTurreted: + RenderUnitTurreted: + AutoTarget: + Repairable: + Chronoshiftable: + Passenger: + IronCurtainable: + Selectable: + Voice: VehicleVoice + +MRJ: + Inherits: DefaultVehicle + Buildable: + TechLevel: 12 + Description: "Radar Jammer" + Tab: "Vehicle" + Prerequisites: [weap,dome] + Owner: allies + LongDesc: "Hides nearby units on the enemy's minimap.\n Unarmed" + Cost: 600 + Unit: + HP: 110 + Armor: light + Crewed: yes + Mobile: + Sight: 7 + ROT: 5 + Speed: 9 + RenderUnitSpinner: + Repairable: + Chronoshiftable: + Passenger: + IronCurtainable: + Selectable: + Priority: 3 + Voice: VehicleVoice + +MGG: + Inherits: DefaultVehicle + Buildable: + TechLevel: 11 + Description: "Mobile Gap Generator" + Tab: "Vehicle" + Prerequisites: [weap,atek] + Owner: allies + LongDesc: "Regenerates Fog of War in a small area \naround the unit.\n Unarmed" + Cost: 600 + Unit: + HP: 110 + Armor: light + Crewed: yes + Mobile: + Sight: 4 + ROT: 5 + Speed: 9 + RenderUnitSpinner: + Repairable: + Chronoshiftable: + Passenger: + IronCurtainable: + Selectable: + Priority: 3 + Voice: VehicleVoice + +ARTY: + Inherits: DefaultVehicle + Buildable: + TechLevel: 8 + Description: "Artillery" + Tab: "Vehicle" + Prerequisites: [weap] + Owner: allies + LongDesc: "Long-range artillery.\n Strong vs Infantry, Buildings\n Weak vs Tanks, Aircraft" + Cost: 600 + Unit: + HP: 75 + Armor: light + Crewed: yes + Mobile: + Sight: 5 + ROT: 2 + Speed: 6 + AttackBase: + RenderUnit: + Explodes: + AutoTarget: + Repairable: + Chronoshiftable: + Passenger: + IronCurtainable: + Selectable: + Voice: VehicleVoice + +HARV: + Inherits: DefaultVehicle + Buildable: + TechLevel: 1 + Description: "Ore Truck" + Tab: "Vehicle" + Prerequisites: [weap,proc] + Owner: allies,soviet + LongDesc: "Collects Ore and Gems for processing.\n Unarmed" + Cost: 1400 + Harvester: + Unit: + HP: 600 + Armor: heavy + Crewed: yes + Mobile: + Sight: 4 + ROT: 5 + Speed: 6 + RenderUnit: + Repairable: + Chronoshiftable: + Passenger: + IronCurtainable: + Selectable: + Priority: 7 + Voice: VehicleVoice + +MCV: + Inherits: DefaultVehicle + Buildable: + TechLevel: 11 + Description: "Mobile Construction Vehicle" + Tab: "Vehicle" + Prerequisites: [weap,fix] + Owner: allies,soviet + LongDesc: "Deploys into another Construction Yard.\n Unarmed" + Cost: 2500 + Unit: + HP: 600 + Armor: light + Crewed: yes + Mobile: + Sight: 4 + ROT: 5 + Speed: 6 + McvDeploy: + RenderUnit: + Repairable: + Chronoshiftable: + Passenger: + IronCurtainable: + Selectable: + Priority: 3 + Voice: VehicleVoice + +JEEP: + Inherits: DefaultVehicle + Buildable: + TechLevel: 3 + Description: "Ranger" + Tab: "Vehicle" + Prerequisites: [weap] + Owner: allies + LongDesc: "Fast scout & anti-infantry vehicle.\n Strong vs Infantry\n Weak vs Tanks, Aircraft" + Cost: 600 + Unit: + HP: 150 + Armor: light + Crewed: yes + Mobile: + Sight: 6 + ROT: 10 + Speed: 10 + Turreted: + AttackTurreted: + RenderUnitTurreted: + AutoTarget: + Repairable: + Chronoshiftable: + Passenger: + IronCurtainable: + Selectable: + Voice: VehicleVoice + +APC: + Inherits: DefaultVehicle + Buildable: + TechLevel: 5 + Description: "Armored Personnel Carrier" + Tab: "Vehicle" + Prerequisites: [weap,tent] + Owner: allies + LongDesc: "Tough infantry transport.\n Strong vs Infantry, Light Vehicles\n Weak vs Tanks, Aircraft" + Cost: 800 + Unit: + HP: 200 + Armor: heavy + Mobile: + Sight: 5 + ROT: 5 + Speed: 10 + AttackBase: + RenderUnitMuzzleFlash: + AutoTarget: + Repairable: + Chronoshiftable: + Cargo: + Passenger: + IronCurtainable: + Selectable: + Voice: VehicleVoice + +MNLY.AP: + Inherits: DefaultVehicle + Buildable: + TechLevel: 3 + Description: "Minelayer (Anti-Personnel)" + Tab: "Vehicle" + Prerequisites: [weap,fix] + Owner: soviet + LongDesc: "Lays mines to destroy unwary enemy units.\n Unarmed" + Cost: 800 + Icon: MNLYICON + Unit: + HP: 100 + Armor: heavy + Crewed: yes + Mobile: + Sight: 5 + ROT: 5 + Speed: 9 + RenderUnit: + Image: MNLY + Minelayer: + MineImmune: + Repairable: + LimitedAmmo: + Chronoshiftable: + Passenger: + IronCurtainable: + Selectable: + Voice: VehicleVoice + +MNLY.AT: + Inherits: DefaultVehicle + Buildable: + TechLevel: 3 + Description: "Minelayer (Anti-Tank)" + Tab: "Vehicle" + Prerequisites: [weap,fix] + Owner: allies + LongDesc: "Lays mines to destroy unwary enemy units.\n Unarmed" + Cost: 800 + Icon: MNLYICON + Unit: + HP: 100 + Armor: heavy + Crewed: yes + Mobile: + Sight: 5 + ROT: 5 + Speed: 9 + RenderUnit: + Image: MNLY + Minelayer: + MineImmune: + Repairable: + LimitedAmmo: + Chronoshiftable: + Passenger: + IronCurtainable: + Selectable: + Voice: VehicleVoice + +SS: + Inherits: DefaultShip + Buildable: + TechLevel: 5 + Description: "Submarine" + Tab: "Ship" + Prerequisites: [spen] + Owner: soviet + LongDesc: "Submerged anti-ship unit armed with \ntorpedoes.\n Strong vs Ships\n Weak vs Everything\n Special Ability: Submerge" + Cost: 950 + Unit: + HP: 120 + Armor: light + Mobile: + Sight: 6 + ROT: 7 + Speed: 6 + RenderUnit: + Submarine: + AttackBase: + Chronoshiftable: + IronCurtainable: + Selectable: + +DD: + Inherits: DefaultShip + Buildable: + TechLevel: 7 + Description: "Destroyer" + Tab: "Ship" + Prerequisites: [syrd] + Owner: allies + LongDesc: "Fast multi-role ship. \n Strong vs Submarines, Aircraft\n Weak vs Infantry, Tanks" + Cost: 1000 + Unit: + HP: 400 + Armor: heavy + Mobile: + Sight: 6 + ROT: 7 + Speed: 6 + Turreted: + AttackTurreted: + RenderUnitTurreted: + AutoTarget: + Chronoshiftable: + IronCurtainable: + Selectable: + +CA: + Inherits: DefaultShip + Buildable: + TechLevel: 10 + Description: "Cruiser" + Tab: "Ship" + Prerequisites: [syrd,atek] + Owner: allies + LongDesc: "Very slow long-range ship. \n Strong vs Buildings\n Weak vs Ships, Submarines" + Cost: 2000 + Unit: + HP: 700 + Armor: heavy + Mobile: + Sight: 7 + ROT: 5 + Speed: 4 + Turreted: + AttackTurreted: + RenderUnitTurreted: + AutoTarget: + Chronoshiftable: + IronCurtainable: + Selectable: + +LST: + Inherits: DefaultShip + Buildable: + TechLevel: 3 + Description: "Transport" + Tab: "Ship" + Prerequisites: [] + Owner: allies,soviet + LongDesc: "General-purpose naval transport.\nCan carry infantry and tanks.\n Unarmed" + Cost: 700 + Unit: + HP: 350 + Armor: heavy + Mobile: + Sight: 6 + ROT: 10 + Speed: 14 + RenderUnit: + Cargo: + IronCurtainable: + Selectable: + +PT: + Inherits: DefaultShip + Buildable: + TechLevel: 5 + Description: "Gunboat" + Tab: "Ship" + Prerequisites: [syrd] + Owner: allies + LongDesc: "Light scout & support ship. \n Strong vs Ships, Submarines\n Weak vs Aircraft" + Cost: 500 + Unit: + HP: 200 + Armor: heavy + Mobile: + Sight: 7 + ROT: 7 + Speed: 9 + Turreted: + AttackTurreted: + RenderUnitTurreted: + AutoTarget: + Chronoshiftable: + IronCurtainable: + Selectable: + +MIG: + Inherits: DefaultPlane + Buildable: + TechLevel: 10 + Description: "Mig Attack Plane" + Tab: "Plane" + Prerequisites: [afld] + Owner: soviet + LongDesc: "Fast Ground-Attack Plane.\n Strong vs Buildings\n Weak vs Infantry, Light Vehicles" + Cost: 1200 + Unit: + HP: 50 + Armor: light + AttackPlane: + Plane: + ROT: 5 + Speed: 20 + RenderUnit: + WithShadow: + LimitedAmmo: + IronCurtainable: + Selectable: + +YAK: + Inherits: DefaultPlane + Buildable: + TechLevel: 5 + Description: "Yak Attack Plane" + Tab: "Plane" + Prerequisites: [afld] + Owner: soviet + LongDesc: "Anti-Tanks & Anti-Infantry Plane.\n Strong vs Infantry, Tanks\n Weak vs Buildings" + Cost: 800 + Unit: + HP: 60 + Armor: light + Crewed: yes + AttackPlane: + Plane: + ROT: 5 + Speed: 16 + RenderUnit: + WithShadow: + LimitedAmmo: + IronCurtainable: + Selectable: + +TRAN: + Inherits: DefaultPlane + Buildable: + TechLevel: 11 + Description: "Transport Helicopter" + Tab: "Plane" + Prerequisites: [hpad] + Owner: allies + LongDesc: "Fast Infantry Transport Helicopter.\n Unarmed" + Cost: 1200 + Unit: + HP: 90 + Armor: light + Helicopter: + ROT: 5 + Speed: 12 + RenderUnitRotor: + WithShadow: + Cargo: + IronCurtainable: + Selectable: + +HELI: + Inherits: DefaultPlane + Buildable: + TechLevel: 9 + Description: "Longbow" + Tab: "Plane" + Prerequisites: [hpad] + Owner: allies + LongDesc: "Helicopter Gunship with AG Missiles.\n Strong vs Buildings, Tanks\n Weak vs Infantry" + Cost: 1200 + Unit: + HP: 225 + Armor: heavy + Crewed: yes + AttackHeli: + Helicopter: + ROT: 4 + Speed: 16 + RenderUnitRotor: + WithShadow: + LimitedAmmo: + IronCurtainable: + Selectable: + +HIND: + Inherits: DefaultPlane + Buildable: + TechLevel: 9 + Description: "Hind" + Tab: "Plane" + Prerequisites: [hpad] + Owner: allies + LongDesc: "Helicopter Gunship with Chainguns.\n Strong vs Infantry, Light Vehicles.\n Weak vs Tanks" + Cost: 1200 + Unit: + HP: 225 + Armor: heavy + Crewed: yes + AttackHeli: + Helicopter: + ROT: 4 + Speed: 12 + RenderUnitRotor: + WithShadow: + LimitedAmmo: + IronCurtainable: + Selectable: + +IRON: + Inherits: DefaultDefense + Buildable: + TechLevel: 12 + Description: "Iron Curtain" + Tab: "Defense" + Prerequisites: [stek] + Owner: soviet + LongDesc: "Makes a group of units invulnerable for a \nshort time.\n Special Ability: Invulnerability" + Cost: 2800 + Building: + RenderBuilding: + IronCurtainable: + IronCurtain: + Selectable: + Priority: 3 + +PDOX: + Inherits: DefaultDefense + Buildable: + TechLevel: 12 + Description: "Chronosphere" + Tab: "Defense" + Prerequisites: [atek] + Owner: allies + LongDesc: "Teleports a unit from one place \nto another, for a limited time.\n Special Ability: Chronoshift" + Cost: 2800 + Building: + RenderBuilding: + Chronosphere: + IronCurtainable: + Selectable: + Priority: 3 + +PBOX: + Inherits: DefaultDefense + Buildable: + TechLevel: 2 + Description: "Pillbox" + Tab: "Defense" + Prerequisites: [tent] + Owner: allies + LongDesc: "Basic defensive structure.\n Strong vs Infantry, Light Vehicles\n Weak vs Tanks, Aircraft" + Cost: 400 + Building: + Turreted: + RenderBuilding: + AttackTurreted: + AutoTarget: + IronCurtainable: + Selectable: + Priority: 3 + +HBOX: + Inherits: DefaultDefense + Buildable: + TechLevel: 3 + Description: "Camo Pillbox" + Tab: "Defense" + Prerequisites: [tent] + Owner: allies + LongDesc: "Hidden defensive structure.\n Strong vs Infantry, Light Vehicles\n Weak vs Tanks, Aircraft" + Cost: 600 + Building: + Turreted: + RenderBuilding: + AttackTurreted: + AutoTarget: + IronCurtainable: + Selectable: + Priority: 3 + +TSLA: + Inherits: DefaultDefense + Buildable: + TechLevel: 7 + Description: "Tesla Coil" + Tab: "Defense" + Prerequisites: [weap] + Owner: soviet + LongDesc: "Advanced base defense. Requires power\nto operate.\n Strong vs Tanks, Infantry\n Weak vs Aircraft" + Cost: 1500 + Building: + Turreted: + RenderBuildingCharge: + AttackTurreted: + AutoTarget: + IronCurtainable: + Selectable: + Priority: 3 + +GUN: + Inherits: DefaultDefense + Buildable: + TechLevel: 4 + Description: "Turret" + Tab: "Defense" + Prerequisites: [tent] + Owner: allies + LongDesc: "Anti-Armor base defense.\n Strong vs Tanks\n Weak vs Infantry, Aircraft" + Cost: 600 + Building: + Turreted: + RenderBuildingTurreted: + AttackTurreted: + AutoTarget: + IronCurtainable: + Selectable: + Priority: 3 + +AGUN: + Inherits: DefaultDefense + Buildable: + TechLevel: 5 + Description: "AA Gun" + Tab: "Defense" + Prerequisites: [dome] + Owner: allies + LongDesc: "Anti-Air base defense.\n Strong vs Aircraft\n Weak vs Infantry, Tanks" + Cost: 600 + Building: + Turreted: + RenderBuildingTurreted: + AttackTurreted: + AutoTarget: + IronCurtainable: + Selectable: + Priority: 3 + +FTUR: + Inherits: DefaultDefense + Buildable: + TechLevel: 2 + Description: "Flame Turret" + Tab: "Defense" + Prerequisites: [barr] + Owner: soviet + LongDesc: "Anti-Infantry base defense.\n Strong vs Infantry\n Weak vs Aircraft" + Cost: 600 + Turreted: + Building: + RenderBuilding: + AttackTurreted: + AutoTarget: + IronCurtainable: + Selectable: + Priority: 3 + +GAP: + Inherits: DefaultDefense + Buildable: + TechLevel: 10 + Description: "Gap Generator" + Tab: "Defense" + Prerequisites: [atek] + Owner: allies + LongDesc: "Regenerates the Fog of War nearby, \nobscuring the area.\n Unarmed" + Cost: 500 + Building: + RenderBuilding: + IronCurtainable: + Selectable: + Priority: 3 + +SAM: + Inherits: DefaultDefense + Buildable: + TechLevel: 9 + Description: "SAM Site" + Tab: "Defense" + Prerequisites: [dome] + Owner: soviet + LongDesc: "Anti-Air base defense.\n Strong vs Aircraft\n Weak vs Infantry, Tanks" + Cost: 750 + Building: + Turreted: + RenderBuildingTurreted: + AttackTurreted: + AutoTarget: + IronCurtainable: + Selectable: + Priority: 3 + +MSLO: + Inherits: DefaultDefense + Buildable: + TechLevel: 13 + Description: "Missile Silo" + Tab: "Defense" + Prerequisites: [stek,atek] + Owner: soviet,allies + LongDesc: "Launches a devastating nuclear strike.\n Strong vs Infantry, Buildings\n Weak vs Tanks\n Special Ability: Nuclear Missile" + Cost: 2500 + Building: + RenderBuilding: + IronCurtainable: + Selectable: + Priority: 3 + +ATEK: + Inherits: DefaultBuilding + Buildable: + TechLevel: 10 + Description: "Allied Tech Center" + Tab: "Building" + Prerequisites: [weap,dome] + Owner: allies + LongDesc: "Provides Allied advanced technologies.\n Special Ability: GPS Satellite" + Cost: 1500 + Building: + RenderBuilding: + IronCurtainable: + GpsLaunchSite: + Selectable: + Priority: 3 + +WEAP: + Inherits: DefaultBuilding + Buildable: + TechLevel: 3 + Description: "War Factory" + Tab: "Building" + Prerequisites: [proc] + Owner: soviet,allies + LongDesc: "Produces tanks & light vehicles." + Cost: 2000 + Building: + RenderWarFactory: + RenderBuilding: + RallyPoint: + Production: + IronCurtainable: + Selectable: + Priority: 3 + +SYRD: + Inherits: DefaultBuilding + Buildable: + TechLevel: 3 + Description: "Shipyard" + Tab: "Building" + Prerequisites: [powr] + Owner: allies + LongDesc: "Produces and repairs ships" + Cost: 650 + Building: + RenderBuilding: + ProductionSurround: + IronCurtainable: + Selectable: + Priority: 3 + +SPEN: + Inherits: DefaultBuilding + Buildable: + TechLevel: 3 + Description: "Sub Pen" + Tab: "Building" + Prerequisites: [powr] + Owner: soviet + LongDesc: "Produces and repairs submarines and \ntransports" + Cost: 650 + Building: + RenderBuilding: + ProductionSurround: + IronCurtainable: + Selectable: + Priority: 3 + +FACT: + Inherits: DefaultBuilding + Building: + RenderBuilding: + ConstructionYard: + IronCurtainable: + Selectable: + Priority: 3 + +PROC: + Inherits: DefaultBuilding + Buildable: + TechLevel: 1 + Description: "Ore Refinery" + Tab: "Building" + Prerequisites: [powr] + Owner: allies,soviet + LongDesc: "Converts Ore and Gems into money" + Cost: 2000 + Building: + RenderBuilding: + AcceptsOre: + StoresOre: + IronCurtainable: + Selectable: + Priority: 3 + +SILO: + Inherits: DefaultBuilding + Buildable: + TechLevel: 1 + Description: "Silo" + Tab: "Building" + Prerequisites: [proc] + Owner: allies,soviet + LongDesc: "Stores excess harvested Ore" + Cost: 150 + Building: + RenderBuildingOre: + StoresOre: + IronCurtainable: + Selectable: + Priority: 3 + +HPAD: + Inherits: DefaultBuilding + Buildable: + TechLevel: 9 + Description: "Helipad" + Tab: "Building" + Prerequisites: [dome] + Owner: allies + LongDesc: "Produces and reloads helicopters" + Cost: 1500 + Building: + RenderBuilding: + Production: + BelowUnits: + Reservable: + IronCurtainable: + Selectable: + Priority: 3 + +DOME: + Inherits: DefaultBuilding + Buildable: + TechLevel: 3 + Description: "Radar Dome" + Tab: "Building" + Prerequisites: [proc] + Owner: allies,soviet + LongDesc: "Provides an overview of the battlefield.\n Requires power to operate." + Cost: 1000 + Building: + RenderBuilding: + ProvidesRadar: + IronCurtainable: + Selectable: + Priority: 3 + +AFLD: + Inherits: DefaultBuilding + Buildable: + TechLevel: 5 + Description: "Airstrip" + Tab: "Building" + Prerequisites: [dome] + Owner: soviet + LongDesc: "Produces and reloads planes\n Special Ability: Paratroopers\n Special Ability: Spy Plane" + Cost: 600 + Building: + RenderBuilding: + Production: + BelowUnits: + Reservable: + IronCurtainable: + Selectable: + Priority: 3 + +POWR: + Inherits: DefaultBuilding + Buildable: + TechLevel: 1 + Description: "Power Plant" + Tab: "Building" + Prerequisites: [fact] + Owner: allies,soviet + LongDesc: "Provides power for other structures" + Cost: 300 + Building: + RenderBuilding: + IronCurtainable: + Selectable: + Priority: 3 + +APWR: + Inherits: DefaultBuilding + Buildable: + TechLevel: 8 + Description: "Advanced Power Plant" + Tab: "Building" + Prerequisites: [powr] + Owner: allies,soviet + LongDesc: "Provides more power, cheaper than the \nstandard Power Plant" + Cost: 500 + Building: + RenderBuilding: + IronCurtainable: + Selectable: + Priority: 3 + +STEK: + Inherits: DefaultBuilding + Buildable: + TechLevel: 6 + Description: "Soviet Tech Center" + Tab: "Building" + Prerequisites: [weap,dome] + Owner: soviet + LongDesc: "Provides Soviet advanced technologies" + Cost: 1500 + Building: + RenderBuilding: + IronCurtainable: + Selectable: + Priority: 3 + +BARR: + Inherits: DefaultBuilding + Buildable: + TechLevel: 1 + Description: "Soviet Barracks" + Tab: "Building" + Prerequisites: [powr] + Owner: soviet + LongDesc: "Produces infantry" + Cost: 300 + Building: + RenderBuilding: + RallyPoint: + Production: + IronCurtainable: + Selectable: + Priority: 3 + +TENT: + Inherits: DefaultBuilding + Buildable: + TechLevel: 1 + Description: "Allied Barracks" + Tab: "Building" + Prerequisites: [powr] + Owner: allies + LongDesc: "Produces infantry" + Cost: 300 + Building: + RenderBuilding: + RallyPoint: + Production: + IronCurtainable: + Selectable: + Priority: 3 + +KENN: + Inherits: DefaultBuilding + Buildable: + TechLevel: 3 + Description: "Kennel" + Tab: "Building" + Prerequisites: [barr] + Owner: soviet + LongDesc: "Produces attack dogs" + Cost: 200 + Building: + RenderBuilding: + RallyPoint: + Production: + IronCurtainable: + Selectable: + Priority: 3 + +FIX: + Inherits: DefaultBuilding + Buildable: + TechLevel: 3 + Description: "Service Depot" + Tab: "Building" + Prerequisites: [weap] + Owner: allies,soviet + LongDesc: "Repairs vehicles, reloads minelayers, and \nallows the construction of additional bases." + Cost: 1200 + Building: + RenderBuilding: + BelowUnits: + Reservable: + IronCurtainable: + Selectable: + Priority: 3 + +FACF: + Inherits: DefaultBuilding + Buildable: + TechLevel: 1 + Description: "Fake Construction Yard" + Tab: "Building" + Prerequisites: [] + Owner: allies + LongDesc: "Looks like a Construction Yard." + Cost: 50 + Building: + RenderBuilding: + Image: FACT + Fake: + IronCurtainable: + Selectable: + Priority: 3 + +WEAF: + Inherits: DefaultBuilding + Buildable: + TechLevel: 3 + Description: "Fake War Factory" + Tab: "Building" + Prerequisites: [proc] + Owner: allies + LongDesc: "Looks like a War Factory." + Cost: 50 + Building: + RenderWarFactory: + RenderBuilding: + Image: WEAP + Fake: + IronCurtainable: + Selectable: + Priority: 3 + +SYRF: + Inherits: DefaultBuilding + Buildable: + TechLevel: 3 + Description: "Fake Shipyard" + Tab: "Building" + Prerequisites: [powr] + Owner: allies + LongDesc: "Looks like a Shipyard" + Cost: 50 + Building: + RenderBuilding: + Image: SYRD + Fake: + Selectable: + Priority: 3 + +SPEF: + Inherits: DefaultBuilding + Building: + RenderBuilding: + Image: SPEN + Fake: + Selectable: + Priority: 3 + +DOMF: + Inherits: DefaultBuilding + Buildable: + TechLevel: 3 + Description: "Fake Radar Dome" + Tab: "Building" + Prerequisites: [proc] + Owner: allies + LongDesc: "Looks like a Radar Dome" + Cost: 50 + Building: + RenderBuilding: + Image: DOME + Fake: + Selectable: + Priority: 3 + +MINP: + Inherits: DefaultBuilding + Unit: + HP: 1 + RenderUnit: + APMine: + BelowUnits: + InvisibleToOthers: + +MINV: + Inherits: DefaultBuilding + Unit: + HP: 1 + RenderUnit: + ATMine: + BelowUnits: + InvisibleToOthers: + +DOG: + Inherits: DefaultInfantry + Buildable: + TechLevel: 3 + Description: "Attack Dog" + Tab: "Infantry" + Prerequisites: [kenn] + Owner: soviet + LongDesc: "Anti-infantry unit. Not fooled by the \nSpy's disguise.\n Strong vs Infantry\n Weak vs Vehicles" + Cost: 200 + Unit: + HP: 12 + Armor: none + Mobile: + Sight: 5 + Speed: 4 + RenderInfantry: + Passenger: + Selectable: + Voice: DogVoice + Bounds: [12,17,-1,-4] + +E1: + Inherits: DefaultInfantry + Buildable: + TechLevel: 1 + Description: "Rifle Infantry" + Tab: "Infantry" + Prerequisites: [] + Owner: allies,soviet + LongDesc: "General-purpose infantry. Strong vs Infantry\n Weak vs Vehicles" + Cost: 100 + Unit: + HP: 50 + Armor: none + Mobile: + Sight: 4 + Speed: 4 + RenderInfantry: + AttackBase: + TakeCover: + SquishByTank: + AutoTarget: + Passenger: + Selectable: + Bounds: [12,17,0,-9] + +E2: + Inherits: DefaultInfantry + Buildable: + TechLevel: 1 + Description: "Grenadier" + Tab: "Infantry" + Prerequisites: [] + Owner: soviet + LongDesc: "Infantry armed with grenades. \n Strong vs Buildings, Infantry\n Weak vs Vehicles" + Cost: 160 + Unit: + HP: 50 + Armor: none + Mobile: + Sight: 4 + Speed: 5 + RenderInfantry: + AttackBase: + TakeCover: + SquishByTank: + AutoTarget: + Passenger: + Selectable: + Bounds: [12,17,0,-9] + +E3: + Inherits: DefaultInfantry + Buildable: + TechLevel: 2 + Description: "Rocket Soldier" + Tab: "Infantry" + Prerequisites: [] + Owner: allies,soviet + LongDesc: "Anti-tank/Anti-aircraft infantry.\n Strong vs Tanks, Aircraft\n Weak vs Infantry" + Cost: 300 + Unit: + HP: 45 + Armor: none + Mobile: + Sight: 4 + Speed: 3 + RenderInfantry: + AttackBase: + TakeCover: + SquishByTank: + AutoTarget: + Passenger: + Selectable: + Bounds: [12,17,0,-9] + +E4: + Inherits: DefaultInfantry + Buildable: + TechLevel: 6 + Description: "Flamethrower" + Tab: "Infantry" + Prerequisites: [stek] + Owner: soviet + LongDesc: "Advanced Anti-infantry unit.\n Strong vs Infantry, Buildings\n Weak vs Vehicles" + Cost: 300 + Unit: + HP: 40 + Armor: none + Mobile: + Sight: 4 + Speed: 3 + RenderInfantry: + AttackBase: + TakeCover: + SquishByTank: + AutoTarget: + Passenger: + Selectable: + Bounds: [12,17,0,-9] + +E6: + Inherits: DefaultInfantry + Buildable: + TechLevel: 5 + Description: "Engineer" + Tab: "Infantry" + Prerequisites: [] + Owner: soviet,allies + LongDesc: "Infiltrates and captures enemy structures.\n Strong vs Nothing\n Weak vs Everything" + Cost: 500 + Unit: + HP: 25 + Armor: none + Mobile: + Sight: 4 + Speed: 4 + EngineerCapture: + RenderInfantry: + TakeCover: + SquishByTank: + Passenger: + Selectable: + Voice: EngineerVoice + Bounds: [12,17,0,-9] + +SPY: + Inherits: DefaultInfantry + Buildable: + TechLevel: 6 + Description: "Spy" + Tab: "Infantry" + Prerequisites: [dome] + Owner: allies + LongDesc: "Infiltrates enemy structures to gather \nintelligence. Exact effect depends on the \nbuilding infiltrated.\n Strong vs Nothing\n Weak vs Everything\n Special Ability: Disguised" + Cost: 500 + Unit: + HP: 25 + Armor: none + Mobile: + Sight: 5 + Speed: 4 + RenderInfantry: + TakeCover: + SquishByTank: + Passenger: + Selectable: + Voice: SpyVoice + Bounds: [12,17,0,-9] + +THF: + Inherits: DefaultInfantry + Buildable: + TechLevel: 11 + Description: "Thief" + Tab: "Infantry" + Prerequisites: [atek] + Owner: allies + LongDesc: "Infiltrates enemy refineries & \nsilos, and steals money stored there.\n Unarmed" + Cost: 500 + Unit: + HP: 25 + Armor: none + Mobile: + Sight: 5 + Speed: 4 + RenderInfantry: + TakeCover: + SquishByTank: + Passenger: + Thief: + Selectable: + Voice: ThiefVoice + Bounds: [12,17,0,-9] + +E7: + Inherits: DefaultInfantry + Buildable: + TechLevel: 11 + Description: "Tanya" + Tab: "Infantry" + Prerequisites: [atek,stek] + Owner: allies,soviet + LongDesc: "Elite commando infantry, armed with \ndual pistols and C4.\n Strong vs Infantry, Buildings\n Weak vs Vehicles\n Special Ability: Destroy Building with C4" + Cost: 1200 + Unit: + HP: 100 + Armor: none + Mobile: + Sight: 6 + Speed: 5 + RenderInfantry: + C4Demolition: + AttackBase: + TakeCover: + SquishByTank: + AutoTarget: + Passenger: + Selectable: + Voice: TanyaVoice + Bounds: [12,17,0,-9] + +MEDI: + Inherits: DefaultInfantry + Buildable: + TechLevel: 2 + Description: "Medic" + Tab: "Infantry" + Prerequisites: [] + Owner: allies + LongDesc: "Heals nearby infantry.\n Strong vs Nothing\n Weak vs Everything" + Cost: 800 + Unit: + HP: 80 + Armor: none + Mobile: + Sight: 3 + Speed: 4 + RenderInfantry: + AutoHeal: + AttackBase: + TakeCover: + SquishByTank: + Passenger: + Selectable: + Voice: MedicVoice + Bounds: [12,17,0,-9] +