Add first version of Soviet 01 classic

This commit is contained in:
Scott_NZ
2012-12-31 14:47:34 +13:00
parent 411aedafa0
commit 9581f07242
5 changed files with 1088 additions and 2 deletions

View File

@@ -1,4 +1,4 @@
#region Copyright & License Information #region Copyright & License Information
/* /*
* Copyright 2007-2011 The OpenRA Developers (see AUTHORS) * Copyright 2007-2011 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made * This file is part of OpenRA, which is free software. It is made
@@ -41,10 +41,16 @@ namespace OpenRA.Mods.RA
++ammo; ++ammo;
return true; return true;
} }
public bool TakeAmmo()
{
if (ammo <= 0) return false;
--ammo;
return true;
}
public int ReloadTimePerAmmo() { return Info.ReloadTicks; } public int ReloadTimePerAmmo() { return Info.ReloadTicks; }
public void Attacking(Actor self, Target target) { --ammo; } public void Attacking(Actor self, Target target) { TakeAmmo(); }
public IEnumerable<PipType> GetPips(Actor self) public IEnumerable<PipType> GetPips(Actor self)
{ {

View File

@@ -0,0 +1,159 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using OpenRA.Traits;
using System.Drawing;
using OpenRA.Mods.RA.Move;
using OpenRA.Mods.RA.Buildings;
using OpenRA.Network;
using OpenRA.Scripting;
using OpenRA.FileFormats;
using OpenRA.Mods.RA.Air;
using OpenRA.Mods.RA.Activities;
namespace OpenRA.Mods.RA.Missions
{
class Soviet01ClassicScriptInfo : TraitInfo<Soviet01ClassicScript>, Requires<SpawnMapActorsInfo> { }
class Soviet01ClassicScript : IHasObjectives, IWorldLoaded, ITick
{
public event ObjectivesUpdatedEventHandler OnObjectivesUpdated = notify => { };
public IEnumerable<Objective> Objectives { get { return objectives.Values; } }
Dictionary<int, Objective> objectives = new Dictionary<int, Objective>
{
{ DestroyID, new Objective(ObjectiveType.Primary, Destroy, ObjectiveStatus.InProgress) }
};
const int DestroyID = 0;
const string Destroy = "A pitiful excuse for resistance has blockaded itself in this village. Stalin has decided to make an example of them. Kill them all and destroy their homes. You will have Yak aircraft to use in teaching these rebels a lesson.";
World world;
Player ussr;
Player france;
Actor startJeep;
Actor startJeepMovePoint;
Actor airfield1;
Actor airfield2;
Actor airfield3;
Actor[] airfields;
void MissionFailed()
{
if (ussr.WinState != WinState.Undefined)
{
return;
}
ussr.WinState = WinState.Lost;
foreach (var actor in world.Actors.Where(a => a.IsInWorld && a.Owner == ussr && !a.IsDead()))
{
actor.Kill(actor);
}
Sound.Play("misnlst1.aud");
}
void MissionAccomplished()
{
if (ussr.WinState != WinState.Undefined)
{
return;
}
ussr.WinState = WinState.Won;
Sound.Play("misnwon1.aud");
}
public void Tick(Actor self)
{
var unitsAndBuildings = world.Actors.Where(a => !a.IsDead() && a.IsInWorld && (a.HasTrait<Mobile>() || (a.HasTrait<Building>() && !a.HasTrait<Wall>())));
if (!unitsAndBuildings.Any(a => a.Owner == france))
{
objectives[DestroyID].Status = ObjectiveStatus.Completed;
MissionAccomplished();
}
else if (!unitsAndBuildings.Any(a => a.Owner == ussr))
{
objectives[DestroyID].Status = ObjectiveStatus.Failed;
MissionFailed();
}
}
void LandYaks()
{
foreach (var airfield in airfields)
{
var entry = airfield.Location - new CVec(10, 0);
var yak = world.CreateActor("yak", new TypeDictionary
{
new OwnerInit(ussr),
new LocationInit(entry),
new FacingInit(Util.GetFacing(airfield.Location - entry, 0)),
new AltitudeInit(Rules.Info["yak"].Traits.Get<PlaneInfo>().CruiseAltitude)
});
while (yak.Trait<LimitedAmmo>().TakeAmmo()) { }
yak.QueueActivity(new ReturnToBase(yak, airfield));
yak.QueueActivity(new ResupplyAircraft());
}
}
void MoveJeep()
{
startJeep.QueueActivity(new MoveAdjacentTo(Target.FromActor(startJeepMovePoint)));
startJeep.QueueActivity(new CallFunc(() =>
{
var bridge = world.Actors
.Where(a => a.HasTrait<Bridge>() && !a.IsDead())
.OrderBy(a => (startJeep.CenterLocation - a.CenterLocation).LengthSquared)
.First();
Combat.DoExplosion(bridge, "Demolish", bridge.CenterLocation, 0);
world.WorldActor.Trait<ScreenShaker>().AddEffect(15, bridge.CenterLocation.ToFloat2(), 6);
bridge.Kill(bridge);
}));
}
public void WorldLoaded(World w)
{
world = w;
ussr = w.Players.Single(p => p.InternalName == "USSR");
france = w.Players.Single(p => p.InternalName == "France");
var actors = w.WorldActor.Trait<SpawnMapActors>().Actors;
startJeep = actors["StartJeep"];
startJeepMovePoint = actors["StartJeepMovePoint"];
airfield1 = actors["Airfield1"];
airfield2 = actors["Airfield2"];
airfield3 = actors["Airfield3"];
airfields = new[] { airfield1, airfield2, airfield3 };
Game.MoveViewport(startJeep.Location.ToFloat2());
Game.ConnectionStateChanged += StopMusic;
Media.PlayFMVFullscreen(w, "soviet1.vqa", () =>
{
PlayMusic();
LandYaks();
MoveJeep();
});
}
void PlayMusic()
{
if (!Rules.InstalledMusic.Any())
{
return;
}
var track = Rules.InstalledMusic.Random(Game.CosmeticRandom);
Sound.PlayMusicThen(track.Value, PlayMusic);
}
void StopMusic(OrderManager orderManager)
{
if (!orderManager.GameStarted)
{
Sound.StopMusic();
Game.ConnectionStateChanged -= StopMusic;
}
}
}
}

View File

@@ -247,6 +247,7 @@
<Compile Include="Missions\MissionUtils.cs" /> <Compile Include="Missions\MissionUtils.cs" />
<Compile Include="Missions\MissionWidgets.cs" /> <Compile Include="Missions\MissionWidgets.cs" />
<Compile Include="Missions\Objective.cs" /> <Compile Include="Missions\Objective.cs" />
<Compile Include="Missions\Soviet01ClassicScript.cs" />
<Compile Include="Modifiers\FrozenUnderFog.cs" /> <Compile Include="Modifiers\FrozenUnderFog.cs" />
<Compile Include="Modifiers\HiddenUnderFog.cs" /> <Compile Include="Modifiers\HiddenUnderFog.cs" />
<Compile Include="Move\Drag.cs" /> <Compile Include="Move\Drag.cs" />

Binary file not shown.

View File

@@ -0,0 +1,920 @@
Selectable: True
MapFormat: 5
RequiresMod: ra
Title: Soviet 01 (Classic)
Description: Lesson in Blood
Author: Westwood Studios
Tileset: SNOW
MapSize: 128,128
Bounds: 32,47,32,38
UseAsShellmap: False
Type: Campaign
Players:
PlayerReference@GoodGuy:
Name: GoodGuy
Race: allies
ColorRamp: 161,134,236,30
Allies: France,Germany,Turkey
Enemies: USSR
PlayerReference@France:
Name: France
Race: allies
ColorRamp: 115,115,143,16
Allies: GoodGuy,Germany,Turkey
Enemies: USSR
PlayerReference@Germany:
Name: Germany
Race: allies
ColorRamp: 0,0,80,5
Allies: GoodGuy,France,Turkey
Enemies: USSR
PlayerReference@USSR:
Name: USSR
Playable: True
AllowBots: False
LockRace: True
Race: soviet
LockColor: True
ColorRamp: 3,255,127,28
LockSpawn: True
LockTeam: True
Enemies: GoodGuy,France,Germany,Turkey
PlayerReference@Turkey:
Name: Turkey
Race: allies
ColorRamp: 14,123,167,28
Allies: GoodGuy,France,Germany
Enemies: USSR
PlayerReference@Neutral:
Name: Neutral
OwnsWorld: True
NonCombatant: True
Race: allies
PlayerReference@Creeps:
Name: Creeps
NonCombatant: True
Race: allies
Actors:
Actor0: wood
Location: 44,50
Owner: Neutral
Actor1: wood
Location: 44,51
Owner: Neutral
Actor2: wood
Location: 44,52
Owner: Neutral
Actor3: wood
Location: 44,53
Owner: Neutral
Actor4: wood
Location: 45,53
Owner: Neutral
Actor5: wood
Location: 56,65
Owner: Neutral
Actor6: v14
Location: 54,66
Owner: Neutral
Actor7: v14
Location: 55,66
Owner: Neutral
Actor8: wood
Location: 56,66
Owner: Neutral
Actor9: wood
Location: 53,67
Owner: Neutral
Actor10: wood
Location: 55,67
Owner: Neutral
Actor11: wood
Location: 56,67
Owner: Neutral
Actor12: wood
Location: 45,69
Owner: Neutral
Actor13: wood
Location: 46,69
Owner: Neutral
Actor14: wood
Location: 47,69
Owner: Neutral
Actor15: wood
Location: 45,70
Owner: Neutral
Actor16: wood
Location: 51,70
Owner: Neutral
Actor17: wood
Location: 53,71
Owner: Neutral
Actor18: wood
Location: 52,72
Owner: Neutral
Actor19: wood
Location: 53,72
Owner: Neutral
Actor20: t16
Location: 53,52
Owner: Neutral
Actor21: tc03
Location: 60,61
Owner: Neutral
Actor22: tc01
Location: 48,47
Owner: Neutral
Actor23: t06
Location: 73,59
Owner: Neutral
Actor24: t01
Location: 49,74
Owner: Neutral
Actor25: t14
Location: 60,69
Owner: Neutral
Actor26: t16
Location: 59,72
Owner: Neutral
Actor27: t14
Location: 60,72
Owner: Neutral
Actor28: t07
Location: 62,72
Owner: Neutral
Actor29: t10
Location: 54,74
Owner: Neutral
Actor30: tc02
Location: 46,49
Owner: Neutral
Actor31: t01
Location: 53,57
Owner: Neutral
Actor32: tc05
Location: 41,51
Owner: Neutral
Actor33: t06
Location: 44,53
Owner: Neutral
Actor34: t01
Location: 44,70
Owner: Neutral
Actor35: t16
Location: 52,72
Owner: Neutral
Actor36: tc02
Location: 32,51
Owner: Neutral
Actor37: tc04
Location: 32,55
Owner: Neutral
Actor38: tc05
Location: 32,60
Owner: Neutral
Actor39: tc02
Location: 42,57
Owner: Neutral
Actor40: tc02
Location: 43,68
Owner: Neutral
Actor41: tc01
Location: 42,67
Owner: Neutral
Actor42: tc04
Location: 32,72
Owner: Neutral
Actor43: tc03
Location: 51,77
Owner: Neutral
Actor44: tc01
Location: 39,72
Owner: Neutral
Actor45: t17
Location: 35,76
Owner: Neutral
Actor46: t15
Location: 59,75
Owner: Neutral
Actor47: tc03
Location: 35,65
Owner: Neutral
Actor48: t01
Location: 35,56
Owner: Neutral
Actor49: t10
Location: 47,59
Owner: Neutral
Actor50: t08
Location: 48,64
Owner: Neutral
Actor51: barl
Location: 33,54
Owner: GoodGuy
Health: 1
Facing: 0
Actor52: brl3
Location: 57,53
Owner: GoodGuy
Health: 1
Facing: 0
Actor53: v08
Location: 41,54
Owner: France
Health: 0.5195313
Facing: 0
Actor54: v07
Location: 54,65
Owner: France
Health: 0.4375
Facing: 0
Actor55: v07
Location: 38,52
Owner: France
Health: 0.4375
Facing: 0
Actor56: v06
Location: 46,51
Owner: France
Health: 0.9921875
Facing: 0
Actor57: v05
Location: 36,55
Owner: France
Health: 0.5
Facing: 0
Actor58: v04
Location: 35,51
Owner: France
Health: 0.3515625
Facing: 0
Actor59: v02
Location: 36,57
Owner: France
Health: 0.5625
Facing: 0
Actor60: brl3
Location: 34,52
Owner: GoodGuy
Health: 1
Facing: 0
Actor61: barl
Location: 57,54
Owner: GoodGuy
Health: 1
Facing: 0
Actor62: barl
Location: 55,54
Owner: GoodGuy
Health: 1
Facing: 0
Actor63: brl3
Location: 51,72
Owner: Germany
Health: 1
Facing: 0
Actor64: brl3
Location: 51,71
Owner: Germany
Health: 1
Facing: 0
Actor65: brl3
Location: 47,71
Owner: Germany
Health: 1
Facing: 0
Actor66: barl
Location: 46,71
Owner: Germany
Health: 1
Facing: 0
Actor67: barl
Location: 47,70
Owner: Germany
Health: 1
Facing: 0
Actor68: brl3
Location: 43,50
Owner: GoodGuy
Health: 1
Facing: 0
Actor69: brl3
Location: 45,52
Owner: GoodGuy
Health: 1
Facing: 0
Actor70: barl
Location: 41,51
Owner: France
Health: 1
Facing: 0
Actor71: barl
Location: 50,72
Owner: Germany
Health: 1
Facing: 0
Actor72: barl
Location: 42,50
Owner: GoodGuy
Health: 1
Facing: 0
Airfield1: afld.noproduction
Location: 35,81
Owner: USSR
Health: 1
Facing: 0
Actor74: powr
Location: 43,82
Owner: USSR
Health: 1
Facing: 0
Actor75: barl
Location: 56,53
Owner: GoodGuy
Health: 1
Facing: 0
Actor76: barl
Location: 58,53
Owner: GoodGuy
Health: 1
Facing: 0
Actor77: brl3
Location: 59,53
Owner: GoodGuy
Health: 1
Facing: 0
Actor78: brl3
Location: 54,53
Owner: GoodGuy
Health: 1
Facing: 0
Actor79: barl
Location: 59,56
Owner: GoodGuy
Health: 1
Facing: 0
Actor80: brl3
Location: 48,66
Owner: GoodGuy
Health: 1
Facing: 0
Actor81: barl
Location: 45,65
Owner: GoodGuy
Health: 1
Facing: 0
Actor82: barl
Location: 34,57
Owner: GoodGuy
Health: 1
Facing: 0
Actor83: brl3
Location: 35,58
Owner: GoodGuy
Health: 1
Facing: 0
Actor84: barl
Location: 46,67
Owner: GoodGuy
Health: 1
Facing: 0
Actor85: barl
Location: 48,67
Owner: GoodGuy
Health: 1
Facing: 0
Actor86: brl3
Location: 38,65
Owner: GoodGuy
Health: 1
Facing: 0
Actor87: barl
Location: 40,52
Owner: GoodGuy
Health: 0.09765625
Facing: 0
Actor88: barl
Location: 39,64
Owner: GoodGuy
Health: 1
Facing: 0
Actor89: brl3
Location: 41,53
Owner: GoodGuy
Health: 1
Facing: 0
Actor90: brl3
Location: 46,66
Owner: GoodGuy
Health: 1
Facing: 0
Airfield2: afld.noproduction
Location: 39,77
Owner: USSR
Health: 1
Facing: 0
Actor92: powr
Location: 45,82
Owner: USSR
Health: 1
Facing: 0
Airfield3: afld.noproduction
Location: 37,79
Owner: USSR
Health: 1
Facing: 0
Actor94: barl
Location: 35,56
Owner: GoodGuy
Health: 1
Facing: 0
Actor95: brl3
Location: 38,64
Owner: GoodGuy
Health: 1
Facing: 0
Actor96: brl3
Location: 34,55
Owner: GoodGuy
Health: 1
Facing: 0
Actor97: barl
Location: 35,55
Owner: GoodGuy
Health: 1
Facing: 0
Actor98: barl
Location: 45,50
Owner: GoodGuy
Health: 1
Facing: 0
Actor99: v04
Location: 58,54
Owner: France
Health: 0.4140625
Facing: 0
Actor100: v02
Location: 56,54
Owner: France
Health: 0.7070313
Facing: 0
Actor101: dome
Location: 45,79
Owner: USSR
Health: 1
Facing: 0
Actor102: barl
Location: 46,61
Owner: GoodGuy
Health: 1
Facing: 0
Actor103: brl3
Location: 43,66
Owner: GoodGuy
Health: 1
Facing: 0
Actor104: barl
Location: 43,67
Owner: GoodGuy
Health: 1
Facing: 0
Actor105: brl3
Location: 59,57
Owner: GoodGuy
Health: 1
Facing: 0
Actor106: barl
Location: 57,58
Owner: GoodGuy
Health: 1
Facing: 0
Actor107: barl
Location: 58,58
Owner: GoodGuy
Health: 1
Facing: 0
Actor108: brl3
Location: 59,58
Owner: GoodGuy
Health: 1
Facing: 0
Actor109: brl3
Location: 56,58
Owner: GoodGuy
Health: 1
Facing: 0
Actor110: barl
Location: 56,59
Owner: GoodGuy
Health: 1
Facing: 0
Actor111: barl
Location: 56,60
Owner: GoodGuy
Health: 1
Facing: 0
Actor112: barl
Location: 41,68
Owner: GoodGuy
Health: 1
Facing: 0
Actor113: barl
Location: 42,67
Owner: GoodGuy
Health: 1
Facing: 0
Actor114: brl3
Location: 49,55
Owner: GoodGuy
Health: 1
Facing: 0
Actor115: barl
Location: 48,55
Owner: GoodGuy
Health: 1
Facing: 0
Actor116: barl
Location: 47,56
Owner: GoodGuy
Health: 1
Facing: 0
Actor117: brl3
Location: 46,56
Owner: GoodGuy
Health: 1
Facing: 0
Actor118: pbox
Location: 46,55
Owner: France
Health: 1
Facing: 0
Actor119: pbox
Location: 48,54
Owner: France
Health: 1
Facing: 0
Actor120: barl
Location: 34,51
Owner: GoodGuy
Health: 1
Facing: 0
Actor121: v05
Location: 48,62
Owner: France
Health: 0.4140625
Facing: 0
Actor122: v01
Location: 40,63
Owner: France
Health: 0.5390625
Facing: 0
Actor123: jeep
Location: 46,52
Owner: France
Health: 0.6640625
Facing: 96
StartJeep: jeep
Location: 44,76
Owner: France
Health: 0.5195313
Facing: 32
Actor125: jeep
Location: 55,57
Owner: France
Health: 1
Facing: 160
Actor126: jeep
Location: 39,65
Owner: France
Health: 0.625
Facing: 64
Actor127: c9
Location: 50,64
Owner: France
Health: 1
Facing: 192
SubCell: 1
Actor128: c8
Location: 47,61
Owner: France
Health: 1
Facing: 0
SubCell: 3
Actor129: c8
Location: 41,50
Owner: Turkey
Health: 1
Facing: 224
SubCell: 3
Actor130: c6
Location: 46,61
Owner: France
Health: 1
Facing: 128
SubCell: 2
Actor131: c5
Location: 46,61
Owner: France
Health: 1
Facing: 0
SubCell: 1
Actor132: c4
Location: 44,67
Owner: France
Health: 1
Facing: 96
SubCell: 1
Actor133: c2
Location: 40,54
Owner: France
Health: 1
Facing: 160
SubCell: 2
Actor134: c2
Location: 45,61
Owner: France
Health: 1
Facing: 64
SubCell: 4
Actor135: e1
Location: 54,60
Owner: France
Health: 1
Facing: 160
SubCell: 4
Actor136: e1
Location: 49,60
Owner: France
Health: 1
Facing: 128
SubCell: 2
Actor137: c5
Location: 45,51
Owner: France
Health: 1
Facing: 224
SubCell: 0
Actor138: e1
Location: 34,58
Owner: France
Health: 1
Facing: 96
SubCell: 0
Actor139: e1
Location: 53,54
Owner: France
Health: 1
Facing: 128
SubCell: 2
Actor140: e1
Location: 58,56
Owner: France
Health: 1
Facing: 128
SubCell: 1
Actor141: e1
Location: 58,52
Owner: France
Health: 1
Facing: 160
SubCell: 0
Actor142: e1
Location: 54,64
Owner: France
Health: 1
Facing: 160
SubCell: 3
Actor143: c7
Location: 56,54
Owner: France
Health: 1
Facing: 0
SubCell: 3
Actor144: e1
Location: 40,51
Owner: France
Health: 1
Facing: 160
SubCell: 0
Actor145: e1
Location: 35,53
Owner: France
Health: 1
Facing: 96
SubCell: 1
Actor146: e1
Location: 35,54
Owner: France
Health: 1
Facing: 0
SubCell: 4
Actor147: e1
Location: 43,64
Owner: France
Health: 1
Facing: 96
SubCell: 0
Actor148: e1
Location: 56,63
Owner: France
Health: 1
Facing: 192
SubCell: 2
Actor149: e1
Location: 40,67
Owner: France
Health: 1
Facing: 32
SubCell: 4
Actor150: e1
Location: 42,81
Owner: USSR
Health: 0.1367188
Facing: 0
SubCell: 2
waypoint3: waypoint
Location: 47,51
Owner: Neutral
waypoint6: waypoint
Location: 58,55
Owner: Neutral
waypoint10: waypoint
Location: 48,62
Owner: Neutral
waypoint14: waypoint
Location: 66,47
Owner: Neutral
waypoint15: waypoint
Location: 58,54
Owner: Neutral
waypoint16: waypoint
Location: 47,66
Owner: Neutral
StartJeepMovePoint: waypoint
Location: 49,68
Owner: Neutral
waypoint18: waypoint
Location: 54,64
Owner: Neutral
waypoint19: waypoint
Location: 55,64
Owner: Neutral
waypoint20: waypoint
Location: 67,65
Owner: Neutral
waypoint21: waypoint
Location: 58,57
Owner: Neutral
waypoint22: waypoint
Location: 66,73
Owner: Neutral
waypoint23: waypoint
Location: 49,51
Owner: Neutral
waypoint24: waypoint
Location: 54,60
Owner: Neutral
waypoint25: waypoint
Location: 35,59
Owner: Neutral
waypoint37: waypoint
Location: 61,68
Owner: Neutral
waypoint44: waypoint
Location: 34,47
Owner: Neutral
waypoint57: waypoint
Location: 38,57
Owner: Neutral
waypoint67: waypoint
Location: 39,59
Owner: Neutral
waypoint72: waypoint
Location: 47,70
Owner: Neutral
waypoint78: waypoint
Location: 39,67
Owner: Neutral
waypoint79: waypoint
Location: 52,60
Owner: Neutral
waypoint81: waypoint
Location: 42,82
Owner: Neutral
waypoint82: waypoint
Location: 44,77
Owner: Neutral
waypoint84: waypoint
Location: 32,70
Owner: Neutral
waypoint94: waypoint
Location: 47,65
Owner: Neutral
waypoint95: waypoint
Location: 47,67
Owner: Neutral
waypoint96: waypoint
Location: 37,58
Owner: Neutral
waypoint98: waypoint
Location: 44,79
Owner: Neutral
Smudges:
Rules:
Player:
-ConquestVictoryConditions:
PlayerResources:
InitialCash: 0
World:
-CrateDrop:
-SpawnMPUnits:
-MPStartLocations:
Soviet01ClassicScript:
MissionObjectivesPanel:
ObjectivesPanel: MISSION_OBJECTIVES
V01:
ContainsCrate:
CRATE:
GiveCashCrateAction:
SelectionShares: 0
LevelUpCrateAction:
SelectionShares: 0
ExplodeCrateAction@fire:
SelectionShares: 0
ExplodeCrateAction@boom:
SelectionShares: 0
ExplodeCrateAction@nuke:
SelectionShares: 0
HideMapCrateAction:
SelectionShares: 0
HealUnitsCrateAction:
SelectionShares: 10000
RevealMapCrateAction:
SelectionShares: 0
SupportPowerCrateAction@parabombs:
SelectionShares: 0
GiveMcvCrateAction:
SelectionShares: 0
GiveUnitCrateAction@jeep:
SelectionShares: 0
GiveUnitCrateAction@arty:
SelectionShares: 0
GiveUnitCrateAction@v2rl:
SelectionShares: 0
GiveUnitCrateAction@1tnk:
SelectionShares: 0
GiveUnitCrateAction@2tnk:
SelectionShares: 0
GiveUnitCrateAction@3tnk:
SelectionShares: 0
GiveUnitCrateAction@4tnk:
SelectionShares: 0
AFLD.NoProduction:
Inherits: ^Building
Valued:
Cost: 500
Tooltip:
Name: Airfield
Building:
Power: -20
Footprint: xxx xxx
Dimensions: 3,2
Health:
HP: 1000
Armor:
Type: Wood
RevealsShroud:
Range: 7
Exit@1:
SpawnOffset: 0,4
ExitCell: 1,1
Facing: 192
RenderBuilding:
Image: AFLD
BelowUnits:
Reservable:
YAK:
Plane:
RearmBuildings: afld.noproduction
Sequences:
Weapons:
Voices:
Notifications: