move ROT, InitialFacing and Speed to Mobile and Aircraft.

This commit is contained in:
alzeih
2010-07-31 02:05:54 +12:00
parent dd7008d7ee
commit 33b6f590e9
21 changed files with 144 additions and 82 deletions

View File

@@ -8,6 +8,8 @@
*/
#endregion
using System.Linq;
namespace OpenRA.Traits.Activities
{
public class Turn : IActivity
@@ -24,11 +26,13 @@ namespace OpenRA.Traits.Activities
public IActivity Tick( Actor self )
{
var unit = self.traits.Get<Unit>();
var ROT = self.traits.WithInterface<IMove>().FirstOrDefault().ROT(self);
if( desiredFacing == unit.Facing )
return NextActivity;
Util.TickFacing( ref unit.Facing, desiredFacing, self.Info.Traits.Get<UnitInfo>().ROT );
Util.TickFacing(ref unit.Facing, desiredFacing, ROT);
return this;
}

View File

@@ -24,6 +24,9 @@ namespace OpenRA.Traits
public readonly string[] Crushes;
public readonly int WaitAverage = 60;
public readonly int WaitSpread = 20;
public readonly int InitialFacing = 128;
public readonly int ROT = 255;
public readonly int Speed = 1;
public virtual object Create(ActorInitializer init) { return new Mobile(init, this); }
}
@@ -59,7 +62,6 @@ namespace OpenRA.Traits
Shroud shroud;
UnitInfluence uim;
UnitInfo unitInfo;
BuildingInfluence bim;
bool canShareCell;
@@ -72,7 +74,6 @@ namespace OpenRA.Traits
shroud = self.World.WorldActor.traits.Get<Shroud>();
uim = self.World.WorldActor.traits.Get<UnitInfluence>();
bim = self.World.WorldActor.traits.Get<BuildingInfluence>();
unitInfo = self.Info.Traits.GetOrDefault<UnitInfo>();
canShareCell = self.traits.Contains<SharesCell>();
AddInfluence();
@@ -89,6 +90,10 @@ namespace OpenRA.Traits
TerrainSpeed.Add(info.TerrainTypes[i], info.TerrainSpeeds[i]);
}
}
public int ROT(Actor self){ return Info.ROT; }
public int InitialFacing(Actor self){ return Info.InitialFacing; }
public void SetPosition(Actor self, int2 cell)
{
@@ -236,17 +241,14 @@ namespace OpenRA.Traits
}
public virtual float MovementSpeedForCell(Actor self, int2 cell)
{
if( unitInfo == null )
return 0f;
{
var type = self.World.GetTerrainType(cell);
var modifier = self.traits
.WithInterface<ISpeedModifier>()
.Select(t => t.GetSpeedModifier())
.Product();
return unitInfo.Speed * TerrainSpeed[type] * modifier;
return Info.Speed * TerrainSpeed[type] * modifier;
}
public IEnumerable<float2> GetCurrentPath(Actor self)

View File

@@ -46,7 +46,7 @@ namespace OpenRA.Traits
public virtual int CreationFacing( Actor self, Actor newUnit )
{
return newUnit.Info.Traits.GetOrDefault<UnitInfo>().InitialFacing;
return newUnit.traits.Get<IMove>().InitialFacing(newUnit);
}
public virtual bool Produce( Actor self, ActorInfo producee )

View File

@@ -110,6 +110,8 @@ namespace OpenRA.Traits
float MovementCostForCell(Actor self, int2 cell);
float MovementSpeedForCell(Actor self, int2 cell);
IEnumerable<float2> GetCurrentPath(Actor self);
int ROT(Actor self);
int InitialFacing(Actor self);
}
public interface IOffsetCenterLocation { float2 CenterOffset { get; } }

View File

@@ -16,10 +16,6 @@ namespace OpenRA.Traits
{
public class UnitInfo : ITraitInfo
{
public readonly int InitialFacing = 128;
public readonly int ROT = 255;
public readonly int Speed = 1;
public object Create( ActorInitializer init ) { return new Unit(); }
}

View File

@@ -59,15 +59,11 @@ namespace OpenRA.Traits
public override float MovementSpeedForCell(Actor self, int2 cell)
{
var unitInfo = self.Info.Traits.GetOrDefault<UnitInfo>();
if( unitInfo == null )
return 0f;
var modifier = self.traits
.WithInterface<ISpeedModifier>()
.Select(t => t.GetSpeedModifier())
.Product();
return unitInfo.Speed * modifier;
return Info.Speed * modifier;
}
public override IEnumerable<int2> OccupiedCells()

View File

@@ -39,7 +39,7 @@ namespace OpenRA.Mods.RA.Activities
var desiredFacing = Util.GetFacing(d, unit.Facing);
if (unit.Altitude == cruiseAltitude)
Util.TickFacing(ref unit.Facing, desiredFacing,
self.Info.Traits.Get<UnitInfo>().ROT);
self.Info.Traits.Get<AircraftInfo>().ROT);
if (unit.Altitude < cruiseAltitude)
++unit.Altitude;

View File

@@ -44,7 +44,7 @@ namespace OpenRA.Mods.RA.Activities
var dist = target.CenterLocation - self.CenterLocation;
var desiredFacing = Util.GetFacing(dist, unit.Facing);
Util.TickFacing(ref unit.Facing, desiredFacing, self.Info.Traits.Get<UnitInfo>().ROT);
Util.TickFacing(ref unit.Facing, desiredFacing, self.Info.Traits.Get<AircraftInfo>().ROT);
var mobile = self.traits.WithInterface<IMove>().FirstOrDefault();
var rawSpeed = .2f * mobile.MovementSpeedForCell(self, self.Location);

View File

@@ -50,7 +50,7 @@ namespace OpenRA.Mods.RA.Activities
var desiredFacing = Util.GetFacing(dist, unit.Facing);
Util.TickFacing(ref unit.Facing, desiredFacing,
self.Info.Traits.Get<UnitInfo>().ROT);
self.Info.Traits.Get<AircraftInfo>().ROT);
var mobile = self.traits.WithInterface<IMove>().FirstOrDefault();
var rawSpeed = .2f * mobile.MovementSpeedForCell(self, self.Location);

View File

@@ -32,7 +32,7 @@ namespace OpenRA.Mods.RA.Activities
if (isCanceled) return NextActivity;
var dest = ChooseHelipad(self);
var initialFacing = self.Info.Traits.Get<UnitInfo>().InitialFacing;
var initialFacing = self.Info.Traits.Get<AircraftInfo>().InitialFacing;
if (dest == null)
return Util.SequenceActivities(

View File

@@ -46,7 +46,7 @@ namespace OpenRA.Mods.RA.Activities
--unit.Altitude;
var desiredFacing = Util.GetFacing(d, unit.Facing);
Util.TickFacing(ref unit.Facing, desiredFacing, self.Info.Traits.Get<UnitInfo>().ROT);
Util.TickFacing(ref unit.Facing, desiredFacing, self.Info.Traits.Get<AircraftInfo>().ROT);
var mobile = self.traits.WithInterface<IMove>().FirstOrDefault();
var speed = .2f * mobile.MovementSpeedForCell(self, self.Location);
var angle = unit.Facing / 128f * Math.PI;

View File

@@ -46,7 +46,7 @@ namespace OpenRA.Mods.RA.Activities
var speed = .2f * mobile.MovementSpeedForCell(self, self.Location);
var approachStart = landPos - new float2(unit.Altitude * speed, 0);
var turnRadius = (128f / self.Info.Traits.Get<UnitInfo>().ROT) * speed / (float)Math.PI;
var turnRadius = (128f / self.Info.Traits.Get<AircraftInfo>().ROT) * speed / (float)Math.PI;
/* work out the center points */
var fwd = -float2.FromAngle(unit.Facing / 128f * (float)Math.PI);

View File

@@ -21,24 +21,33 @@ namespace OpenRA.Mods.RA
public readonly string[] RepairBuildings = { "fix" };
[ActorReference]
public readonly string[] RearmBuildings = { "hpad", "afld" };
public readonly int InitialFacing = 128;
public readonly int ROT = 255;
public readonly int Speed = 1;
public virtual object Create( ActorInitializer init ) { return new Aircraft( init ); }
public virtual object Create( ActorInitializer init ) { return new Aircraft( init , this ); }
}
public class Aircraft : IMove, IOccupySpace
{
[Sync]
public int2 Location;
AircraftInfo Info;
public Aircraft( ActorInitializer init )
public Aircraft( ActorInitializer init , AircraftInfo info)
{
this.Location = init.location;
Info = info;
}
public int2 TopLeft
{
get { return Location; }
}
public int ROT(Actor self){ return Info.ROT; }
public int InitialFacing(Actor self){ return Info.InitialFacing; }
public void SetPosition(Actor self, int2 cell)
{
@@ -48,9 +57,8 @@ namespace OpenRA.Mods.RA
public bool AircraftCanEnter(Actor self, Actor a)
{
var aircraft = self.Info.Traits.Get<AircraftInfo>();
return aircraft.RearmBuildings.Contains( a.Info.Name )
|| aircraft.RepairBuildings.Contains( a.Info.Name );
return Info.RearmBuildings.Contains( a.Info.Name )
|| Info.RepairBuildings.Contains( a.Info.Name );
}
public virtual IEnumerable<float2> GetCurrentPath(Actor self)
@@ -67,15 +75,11 @@ namespace OpenRA.Mods.RA
public float MovementSpeedForCell(Actor self, int2 cell)
{
var unitInfo = self.Info.Traits.GetOrDefault<UnitInfo>();
if( unitInfo == null)
return 0f;
var modifier = self.traits
.WithInterface<ISpeedModifier>()
.Select(t => t.GetSpeedModifier())
.Product();
return unitInfo.Speed * modifier;
return Info.Speed * modifier;
}
int2[] noCells = new int2[] { };

View File

@@ -26,14 +26,18 @@ namespace OpenRA.Mods.RA
public readonly int IdealSeparation = 40;
public readonly bool LandWhenIdle = true;
public override object Create( ActorInitializer init ) { return new Helicopter( init ); }
public override object Create( ActorInitializer init ) { return new Helicopter( init, this); }
}
class Helicopter : Aircraft, ITick, IIssueOrder, IResolveOrder, IOrderCursor, IOrderVoice
{
public IDisposable reservation;
HelicopterInfo Info;
public Helicopter( ActorInitializer init ) : base( init ) { }
public Helicopter( ActorInitializer init, HelicopterInfo info) : base( init, info )
{
Info = info;
}
public Order IssueOrder(Actor self, int2 xy, MouseInput mi, Actor underCursor)
{
@@ -86,9 +90,9 @@ namespace OpenRA.Mods.RA
self.CancelActivity();
self.QueueActivity(new HeliFly(Util.CenterOfCell(order.TargetLocation)));
if (self.Info.Traits.Get<HelicopterInfo>().LandWhenIdle)
if (Info.LandWhenIdle)
{
self.QueueActivity(new Turn(self.Info.Traits.GetOrDefault<UnitInfo>().InitialFacing));
self.QueueActivity(new Turn(Info.InitialFacing));
self.QueueActivity(new HeliLand(true));
}
}
@@ -115,9 +119,9 @@ namespace OpenRA.Mods.RA
self.CancelActivity();
self.QueueActivity(new HeliFly(order.TargetActor.CenterLocation + offsetVec));
self.QueueActivity(new Turn(self.Info.Traits.GetOrDefault<UnitInfo>().InitialFacing));
self.QueueActivity(new Turn(Info.InitialFacing));
self.QueueActivity(new HeliLand(false));
self.QueueActivity(self.Info.Traits.Get<HelicopterInfo>().RearmBuildings.Contains(order.TargetActor.Info.Name)
self.QueueActivity(Info.RearmBuildings.Contains(order.TargetActor.Info.Name)
? (IActivity)new Rearm() : new Repair(order.TargetActor));
}
}
@@ -129,7 +133,6 @@ namespace OpenRA.Mods.RA
if (unit.Altitude <= 0)
return;
var Info = self.Info.Traits.Get<HelicopterInfo>();
var mobile = self.traits.WithInterface<IMove>().FirstOrDefault();
var rawSpeed = .2f * mobile.MovementSpeedForCell(self, self.Location);
var otherHelis = self.World.FindUnitsInCircle(self.CenterLocation, Info.IdealSeparation)
@@ -158,7 +161,7 @@ namespace OpenRA.Mods.RA
return float2.Zero;
var d = self.CenterLocation - h.CenterLocation;
if (d.Length > self.Info.Traits.Get<HelicopterInfo>().IdealSeparation)
if (d.Length > Info.IdealSeparation)
return float2.Zero;
if (d.LengthSquared < Epsilon)

View File

@@ -19,14 +19,14 @@ namespace OpenRA.Mods.RA
{
public class PlaneInfo : AircraftInfo
{
public override object Create( ActorInitializer init ) { return new Plane( init ); }
public override object Create( ActorInitializer init ) { return new Plane( init, this ); }
}
public class Plane : Aircraft, IIssueOrder, IResolveOrder, IOrderCursor, IOrderVoice, ITick
{
public IDisposable reservation;
public Plane( ActorInitializer init ) : base( init ) { }
public Plane( ActorInitializer init, PlaneInfo info ) : base( init, info ) { }
bool firstTick = true;
public void Tick(Actor self)

View File

@@ -1,11 +1,11 @@
^Vehicle:
Category: Vehicle
Unit:
ROT: 5
Mobile:
Crushes: crate
TerrainTypes: Clear, Rough, Road, Tree, Water, Rock, Wall, Ore, Beach, River
TerrainSpeeds: 60%, 40%, 100%, 0%, 0%, 0%, 0%, 50%, 40%, 0%
ROT: 5
Selectable:
Voice: VehicleVoice
Targetable:
@@ -22,11 +22,11 @@
^Tank:
Category: Vehicle
Unit:
ROT: 5
Mobile:
Crushes: wall, crate
TerrainTypes: Clear, Rough, Road, Tree, Water, Rock, Wall, Ore, Beach, River
TerrainSpeeds: 80%, 70%, 100%, 0%, 0%, 0%, 0%, 70%, 70%, 0%
ROT: 5
Selectable:
Voice: VehicleVoice
Targetable:
@@ -192,6 +192,7 @@
^Husk:
Category: Vehicle
Unit:
Mobile:
ROT: 0
Speed: 0
Health:

View File

@@ -10,6 +10,7 @@ E1:
Selectable:
Bounds: 12,17,0,-6
Unit:
Mobile:
Speed: 4
Health:
HP: 50
@@ -30,6 +31,7 @@ E2:
Selectable:
Bounds: 12,17,0,-6
Unit:
Mobile:
Speed: 4
Health:
HP: 50
@@ -51,6 +53,7 @@ E3:
Selectable:
Bounds: 12,17,0,-6
Unit:
Mobile:
Speed: 3
Health:
HP: 45
@@ -73,6 +76,7 @@ E4:
Selectable:
Bounds: 12,17,0,-6
Unit:
Mobile:
Speed: 4
Health:
HP: 90
@@ -98,6 +102,7 @@ E5:
Selectable:
Bounds: 12,17,0,-6
Unit:
Mobile:
Speed: 4
Health:
HP: 90
@@ -123,6 +128,7 @@ E6:
Selectable:
Bounds: 12,17,0,-6
Unit:
Mobile:
Speed: 4
Health:
HP: 25
@@ -147,6 +153,7 @@ RMBO:
Bounds: 12,17,0,-6
Voice: CommandoVoice
Unit:
Mobile:
Speed: 5
Health:
HP: 200
@@ -167,6 +174,7 @@ C1:
Cost: 70
Description: Technician
Unit:
Mobile:
Speed: 4
Health:
HP: 20
@@ -184,6 +192,7 @@ C2:
Cost: 70
Description: Technician
Unit:
Mobile:
Speed: 4
Health:
HP: 20
@@ -201,6 +210,7 @@ C3:
Cost: 70
Description: Technician
Unit:
Mobile:
Speed: 4
Health:
HP: 20
@@ -218,6 +228,7 @@ C4:
Cost: 70
Description: Technician
Unit:
Mobile:
Speed: 4
Health:
HP: 20
@@ -235,6 +246,7 @@ C5:
Cost: 70
Description: Technician
Unit:
Mobile:
Speed: 4
Health:
HP: 20
@@ -252,6 +264,7 @@ C6:
Cost: 70
Description: Technician
Unit:
Mobile:
Speed: 4
Health:
HP: 20
@@ -269,6 +282,7 @@ C7:
Cost: 70
Description: Technician
Unit:
Mobile:
Speed: 4
Health:
HP: 20
@@ -285,6 +299,7 @@ C8:
Cost: 70
Description: Technician
Unit:
Mobile:
Speed: 4
Health:
HP: 20
@@ -302,6 +317,7 @@ C9:
Cost: 70
Description: Technician
Unit:
Mobile:
Speed: 4
Health:
HP: 20
@@ -319,6 +335,7 @@ C10:
Cost: 70
Description: Technician
Unit:
Mobile:
Speed: 4
Health:
HP: 20

View File

@@ -11,6 +11,7 @@ MCV:
Selectable:
Priority: 3
Unit:
Mobile:
Speed: 6
Health:
HP: 600
@@ -44,6 +45,7 @@ HARV:
PipColor: Green
Capacity: 28
Unit:
Mobile:
Speed: 6
Health:
HP: 600
@@ -63,6 +65,7 @@ APC:
Description: Armored Personnel Carrier
LongDesc: Tough infantry transport.\n Strong vs Infantry, Light Vehicles\n Weak vs Tanks, Aircraft
Unit:
Mobile:
ROT: 5
Speed: 15
Health:
@@ -93,6 +96,7 @@ ARTY:
Description: Artillery
LongDesc: Long-range artillery.\n Strong vs Infantry, Buildings\n Weak vs Tanks, Aircraft
Unit:
Mobile:
ROT: 2
Speed: 6
Health:
@@ -117,6 +121,7 @@ FTNK:
Description: Flame Tank
LongDesc: Heavily armored flame-throwing vehicle.\n Strong vs Infantry, Buildings\n Weak vs Aircraft
Unit:
Mobile:
ROT: 5
Speed: 9
Health:
@@ -142,6 +147,7 @@ BGGY:
Description: Nod Buggy
LongDesc: Fast scout & anti-infantry vehicle.\n Strong vs Infantry\n Weak vs Tanks, Aircraft
Unit:
Mobile:
ROT: 10
Speed: 18
Health:
@@ -169,6 +175,7 @@ BIKE:
Description: Recon Bike
LongDesc: Fast scout vehicle, armed with \nrockets.\n Strong vs Vehicles, Aircraft\n Weak vs Infantry
Unit:
Mobile:
ROT: 10
Speed: 20
Health:
@@ -197,6 +204,7 @@ JEEP:
Description: Hum-Vee
LongDesc: Fast scout & anti-infantry vehicle.\n Strong vs Infantry\n Weak vs Tanks, Aircraft
Unit:
Mobile:
ROT: 10
Speed: 15
Health:
@@ -224,6 +232,7 @@ LTNK:
Description: Light Tank
LongDesc: Light Tank, good for scouting.\n Strong vs Light Vehicles\n Weak vs Tanks, Aircraft
Unit:
Mobile:
Speed: 9
Health:
HP: 300
@@ -254,6 +263,7 @@ MTNK:
Description: Medium Tank
LongDesc: General-Purpose GDI Tank.\n Strong vs Tanks, Light Vehicles\n Weak vs Infantry, Aircraft
Unit:
Mobile:
Speed: 9
Health:
HP: 400
@@ -284,6 +294,8 @@ HTNK:
Description: Mammoth Tank
LongDesc: Heavily armored GDI Tank.\n Strong vs Everything
Unit:
Mobile:
Crushes: wall, heavywall
Speed: 3
Health:
HP: 600
@@ -306,8 +318,6 @@ HTNK:
Explodes:
Weapon: UnitExplodeSmall
EmptyWeapon: UnitExplodeSmall
Mobile:
Crushes: wall, heavywall
MSAM:
Inherits: ^Tank
@@ -320,6 +330,7 @@ MSAM:
Description: Rocket Launcher
LongDesc: Long range artillery.\n Strong vs Infantry, Buildings\n Weak vs Tanks, Aircraft
Unit:
Mobile:
Speed: 6
Health:
HP: 120
@@ -349,6 +360,7 @@ MLRS:
Description: SSM Launcher
LongDesc: Long range artillery.\n Strong vs Infantry, Aircraft\n Weak vs Tanks, Aircraft
Unit:
Mobile:
Speed: 6
Health:
HP: 120
@@ -374,6 +386,7 @@ STNK:
Description: Stealth Tank
LongDesc: Missile tank that can bend light around \nitself to become invisible\n Strong vs Infantry, Aircraft\n Weak vs Tanks
Unit:
Mobile:
Speed: 15
Health:
HP: 110
@@ -402,6 +415,7 @@ TRAN:
Description: Chinook Transport
LongDesc: Fast Infantry Transport Helicopter.\n Unarmed
Unit:
MobileAir:
InitialFacing: 20
ROT: 5
Speed: 15
@@ -430,6 +444,7 @@ HELI:
Description: Apache Longbow
LongDesc: Helicopter Gunship with AG Missiles.\n Strong vs Buildings, Tanks\n Weak vs Infantry
Unit:
MobileAir:
InitialFacing: 20
ROT: 4
Speed: 20
@@ -459,6 +474,7 @@ ORCA:
Description: Orca
LongDesc: Helicopter Gunship with AG Missiles.\n Strong vs Buildings, Tanks\n Weak vs Infantry
Unit:
MobileAir:
InitialFacing: 20
ROT: 4
Speed: 20
@@ -480,6 +496,7 @@ C17:
LZRange: 1
Inherits: ^Plane
Unit:
Plane:
ROT: 5
Speed: 25
Health:
@@ -498,6 +515,7 @@ C17:
A10:
Inherits: ^Plane
Unit:
Plane:
ROT: 4
Speed: 25
Health:

View File

@@ -1,11 +1,11 @@
^Vehicle:
Category: Vehicle
Unit:
ROT: 5
Unit:
Mobile:
Crushes: atmine, crate
TerrainTypes: Clear, Rough, Road, Tree, Water, Rock, Wall, Ore, Beach, River
TerrainSpeeds: 60%, 40%, 100%, 0%, 0%, 0%, 0%, 90%, 40%, 0%
ROT: 5
Selectable:
Voice: VehicleVoice
Targetable:
@@ -21,12 +21,12 @@
^Tank:
Category: Vehicle
Unit:
ROT: 5
Unit:
Mobile:
Crushes: wall, atmine, crate
TerrainTypes: Clear, Rough, Road, Tree, Water, Rock, Wall, Ore, Beach, River
TerrainSpeeds: 80%, 70%, 100%, 0%, 0%, 0%, 0%, 90%, 70%, 0%
ROT: 5
Selectable:
Voice: VehicleVoice
Targetable:
@@ -42,6 +42,7 @@
^Infantry:
Category: Infantry
Unit:
Health:
Armor: none
RevealsShroud:
@@ -163,8 +164,6 @@
^Husk:
Category: Vehicle
Unit:
ROT: 0
Speed: 0
Health:
HP: 140
Armor: Heavy

View File

@@ -13,7 +13,7 @@ DOG:
Bounds: 12,17,-1,-4
Health:
HP: 12
Unit:
Mobile:
Speed: 7
RevealsShroud:
Range: 5
@@ -35,7 +35,7 @@ E1:
Bounds: 12,17,0,-9
Health:
HP: 50
Unit:
Mobile:
Speed: 4
AttackBase:
PrimaryWeapon: M1Carbine
@@ -55,7 +55,7 @@ E2:
Bounds: 12,17,0,-9
Health:
HP: 50
Unit:
Mobile:
Speed: 5
AttackBase:
PrimaryWeapon: Grenade
@@ -77,7 +77,7 @@ E3:
Bounds: 12,17,0,-9
Health:
HP: 45
Unit:
Mobile:
Speed: 3
AttackBase:
PrimaryWeapon: RedEye
@@ -99,7 +99,7 @@ E4:
Bounds: 12,17,0,-9
Health:
HP: 40
Unit:
Mobile:
Speed: 3
AttackBase:
PrimaryWeapon: Flamer
@@ -122,7 +122,7 @@ E6:
Bounds: 12,17,0,-9
Health:
HP: 25
Unit:
Mobile:
Speed: 4
Passenger:
ColorOfCargoPip: Yellow
@@ -146,7 +146,7 @@ SPY:
Bounds: 12,17,0,-9
Health:
HP: 25
Unit:
Mobile:
Speed: 4
RevealsShroud:
Range: 5
@@ -173,7 +173,7 @@ E7:
Bounds: 12,17,0,-9
Health:
HP: 100
Unit:
Mobile:
Speed: 5
RevealsShroud:
Range: 6
@@ -199,7 +199,7 @@ MEDI:
Bounds: 12,17,0,-9
Health:
HP: 80
Unit:
Mobile:
Speed: 4
RevealsShroud:
Range: 3
@@ -221,7 +221,7 @@ C1:
Description: Technician
Health:
HP: 20
Unit:
Mobile:
Speed: 4
RevealsShroud:
Range: 2
@@ -238,7 +238,7 @@ C2:
Description: Technician
Health:
HP: 20
Unit:
Mobile:
Speed: 4
RevealsShroud:
Range: 2

View File

@@ -6,9 +6,9 @@ BADR:
HP: 60
Armor: light
Unit:
Plane:
ROT: 5
Speed: 16
Plane:
RenderUnit:
WithShadow:
IronCurtainable:
@@ -26,9 +26,9 @@ BADR.bomber:
HP: 60
Armor: light
Unit:
Plane:
ROT: 5
Speed: 16
Plane:
LimitedAmmo:
Ammo: 7
RenderUnit:
@@ -51,6 +51,7 @@ V2RL:
HP: 150
Armor: light
Unit:
Mobile:
Speed: 7
RevealsShroud:
Range: 5
@@ -75,6 +76,7 @@ V2RL:
HP: 300
Armor: heavy
Unit:
Mobile:
Speed: 9
RevealsShroud:
Range: 4
@@ -104,6 +106,7 @@ V2RL:
HP: 400
Armor: heavy
Unit:
Mobile:
Speed: 8
RevealsShroud:
Range: 5
@@ -133,6 +136,7 @@ V2RL:
HP: 550
Armor: heavy
Unit:
Mobile:
Speed: 6
RevealsShroud:
Range: 5
@@ -162,6 +166,7 @@ V2RL:
HP: 750
Armor: heavy
Unit:
Mobile:
Speed: 3
RevealsShroud:
Range: 6
@@ -198,6 +203,7 @@ ARTY:
HP: 75
Armor: light
Unit:
Mobile:
ROT: 2
Speed: 6
RevealsShroud:
@@ -226,6 +232,7 @@ HARV:
HP: 600
Armor: heavy
Unit:
Mobile:
Speed: 6
RevealsShroud:
Range: 4
@@ -246,6 +253,7 @@ MCV:
HP: 600
Armor: light
Unit:
Mobile:
Speed: 6
RevealsShroud:
Range: 4
@@ -272,6 +280,7 @@ JEEP:
HP: 150
Armor: light
Unit:
Mobile:
ROT: 10
Speed: 12
RevealsShroud:
@@ -298,6 +307,7 @@ APC:
HP: 200
Armor: heavy
Unit:
Mobile:
Speed: 10
RevealsShroud:
Range: 5
@@ -327,6 +337,7 @@ MNLY.AP:
HP: 100
Armor: heavy
Unit:
Mobile:
Speed: 9
RevealsShroud:
Range: 5
@@ -352,6 +363,7 @@ MNLY.AT:
HP: 100
Armor: heavy
Unit:
Mobile:
Speed: 9
RevealsShroud:
Range: 5
@@ -369,6 +381,7 @@ TRUK:
HP: 110
Armor: light
Unit:
Mobile:
Speed: 10
RevealsShroud:
Range: 3
@@ -388,6 +401,7 @@ SS:
HP: 120
Armor: light
Unit:
Mobile:
ROT: 4
Speed: 5
RevealsShroud:
@@ -420,6 +434,7 @@ MSUB:
HP: 200
Armor: light
Unit:
Mobile:
ROT: 3
Speed: 3
RevealsShroud:
@@ -451,6 +466,7 @@ DD:
HP: 400
Armor: heavy
Unit:
Mobile:
ROT: 7
Speed: 6
RevealsShroud:
@@ -481,6 +497,7 @@ CA:
HP: 800
Armor: heavy
Unit:
Mobile:
ROT: 2
Speed: 2
RevealsShroud:
@@ -513,6 +530,7 @@ LST:
HP: 350
Armor: heavy
Unit:
Mobile:
ROT: 10
Speed: 14
RevealsShroud:
@@ -538,6 +556,7 @@ PT:
HP: 200
Armor: heavy
Unit:
Mobile:
ROT: 7
Speed: 9
RevealsShroud:
@@ -568,9 +587,6 @@ MIG:
HP: 70
Armor: light
Unit:
InitialFacing: 192
ROT: 5
Speed: 20
RevealsShroud:
Range: 12
AttackPlane:
@@ -579,6 +595,9 @@ MIG:
PrimaryLocalOffset: -15,0,-10,-12,0,6
SecondaryLocalOffset: 15,0,10,12,0,6
Plane:
InitialFacing: 192
ROT: 5
Speed: 20
RearmBuildings: afld
RenderUnit:
WithShadow:
@@ -601,9 +620,6 @@ YAK:
HP: 60
Armor: light
Unit:
InitialFacing: 192
ROT: 5
Speed: 16
RevealsShroud:
Range: 10
AttackPlane:
@@ -611,6 +627,9 @@ YAK:
SecondaryWeapon: ChainGun
Plane:
RearmBuildings: afld
InitialFacing: 192
ROT: 5
Speed: 16
RenderUnit:
WithShadow:
LimitedAmmo:
@@ -633,13 +652,13 @@ TRAN:
HP: 90
Armor: light
Unit:
InitialFacing: 20
ROT: 5
Speed: 12
RevealsShroud:
Range: 12
Helicopter:
RearmBuildings: hpad
InitialFacing: 20
ROT: 5
Speed: 12
RenderUnitRotor:
PrimaryOffset: 0,14,0,-4
SecondaryOffset: 0,-14,0,-2
@@ -663,9 +682,6 @@ HELI:
HP: 120
Armor: light
Unit:
InitialFacing: 20
ROT: 4
Speed: 16
RevealsShroud:
Range: 12
AttackHeli:
@@ -675,6 +691,9 @@ HELI:
SecondaryOffset: 5,0,0,2
Helicopter:
RearmBuildings: hpad
InitialFacing: 20
ROT: 4
Speed: 16
RenderUnitRotor:
PrimaryOffset: 0,0,0,-2
WithShadow:
@@ -696,9 +715,6 @@ HIND:
HP: 120
Armor: light
Unit:
InitialFacing: 20
ROT: 4
Speed: 12
RevealsShroud:
Range: 12
AttackHeli:
@@ -707,6 +723,9 @@ HIND:
SecondaryOffset: 5,0,0,2
Helicopter:
RearmBuildings: hpad
InitialFacing: 20
ROT: 4
Speed: 12
RenderUnitRotor:
WithShadow:
LimitedAmmo:
@@ -719,6 +738,7 @@ U2:
HP: 2000
Armor: heavy
Unit:
Mobile:
ROT: 7
Speed: 40
Plane: