diff --git a/OpenRA.Game/Traits/Activities/Turn.cs b/OpenRA.Game/Traits/Activities/Turn.cs index eb290b6ade..ea16305caf 100755 --- a/OpenRA.Game/Traits/Activities/Turn.cs +++ b/OpenRA.Game/Traits/Activities/Turn.cs @@ -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(); + var ROT = self.traits.WithInterface().FirstOrDefault().ROT(self); if( desiredFacing == unit.Facing ) return NextActivity; - Util.TickFacing( ref unit.Facing, desiredFacing, self.Info.Traits.Get().ROT ); + Util.TickFacing(ref unit.Facing, desiredFacing, ROT); + return this; } diff --git a/OpenRA.Game/Traits/Mobile.cs b/OpenRA.Game/Traits/Mobile.cs index 6e1202128a..f2c92e18c3 100644 --- a/OpenRA.Game/Traits/Mobile.cs +++ b/OpenRA.Game/Traits/Mobile.cs @@ -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(); uim = self.World.WorldActor.traits.Get(); bim = self.World.WorldActor.traits.Get(); - unitInfo = self.Info.Traits.GetOrDefault(); canShareCell = self.traits.Contains(); 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() .Select(t => t.GetSpeedModifier()) .Product(); - return unitInfo.Speed * TerrainSpeed[type] * modifier; + return Info.Speed * TerrainSpeed[type] * modifier; } public IEnumerable GetCurrentPath(Actor self) diff --git a/OpenRA.Game/Traits/Production.cs b/OpenRA.Game/Traits/Production.cs index 62ebcb57f4..2eb49510e3 100755 --- a/OpenRA.Game/Traits/Production.cs +++ b/OpenRA.Game/Traits/Production.cs @@ -46,7 +46,7 @@ namespace OpenRA.Traits public virtual int CreationFacing( Actor self, Actor newUnit ) { - return newUnit.Info.Traits.GetOrDefault().InitialFacing; + return newUnit.traits.Get().InitialFacing(newUnit); } public virtual bool Produce( Actor self, ActorInfo producee ) diff --git a/OpenRA.Game/Traits/TraitsInterfaces.cs b/OpenRA.Game/Traits/TraitsInterfaces.cs index eb4b06fda9..0d1372120b 100644 --- a/OpenRA.Game/Traits/TraitsInterfaces.cs +++ b/OpenRA.Game/Traits/TraitsInterfaces.cs @@ -110,6 +110,8 @@ namespace OpenRA.Traits float MovementCostForCell(Actor self, int2 cell); float MovementSpeedForCell(Actor self, int2 cell); IEnumerable GetCurrentPath(Actor self); + int ROT(Actor self); + int InitialFacing(Actor self); } public interface IOffsetCenterLocation { float2 CenterOffset { get; } } diff --git a/OpenRA.Game/Traits/Unit.cs b/OpenRA.Game/Traits/Unit.cs index d2b9c57e7b..640c78dee2 100755 --- a/OpenRA.Game/Traits/Unit.cs +++ b/OpenRA.Game/Traits/Unit.cs @@ -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(); } } diff --git a/OpenRA.Mods.Cnc/MobileAir.cs b/OpenRA.Mods.Cnc/MobileAir.cs index 4deaa521d1..ecb02a9f12 100644 --- a/OpenRA.Mods.Cnc/MobileAir.cs +++ b/OpenRA.Mods.Cnc/MobileAir.cs @@ -59,15 +59,11 @@ namespace OpenRA.Traits public override float MovementSpeedForCell(Actor self, int2 cell) { - var unitInfo = self.Info.Traits.GetOrDefault(); - if( unitInfo == null ) - return 0f; - var modifier = self.traits .WithInterface() .Select(t => t.GetSpeedModifier()) .Product(); - return unitInfo.Speed * modifier; + return Info.Speed * modifier; } public override IEnumerable OccupiedCells() diff --git a/OpenRA.Mods.RA/Activities/Fly.cs b/OpenRA.Mods.RA/Activities/Fly.cs index d33f33342c..a76e987f5b 100644 --- a/OpenRA.Mods.RA/Activities/Fly.cs +++ b/OpenRA.Mods.RA/Activities/Fly.cs @@ -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().ROT); + self.Info.Traits.Get().ROT); if (unit.Altitude < cruiseAltitude) ++unit.Altitude; diff --git a/OpenRA.Mods.RA/Activities/HeliAttack.cs b/OpenRA.Mods.RA/Activities/HeliAttack.cs index e13ff1a5d9..ce5de18142 100644 --- a/OpenRA.Mods.RA/Activities/HeliAttack.cs +++ b/OpenRA.Mods.RA/Activities/HeliAttack.cs @@ -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().ROT); + Util.TickFacing(ref unit.Facing, desiredFacing, self.Info.Traits.Get().ROT); var mobile = self.traits.WithInterface().FirstOrDefault(); var rawSpeed = .2f * mobile.MovementSpeedForCell(self, self.Location); diff --git a/OpenRA.Mods.RA/Activities/HeliFly.cs b/OpenRA.Mods.RA/Activities/HeliFly.cs index 444a87236f..be4db31496 100644 --- a/OpenRA.Mods.RA/Activities/HeliFly.cs +++ b/OpenRA.Mods.RA/Activities/HeliFly.cs @@ -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().ROT); + self.Info.Traits.Get().ROT); var mobile = self.traits.WithInterface().FirstOrDefault(); var rawSpeed = .2f * mobile.MovementSpeedForCell(self, self.Location); diff --git a/OpenRA.Mods.RA/Activities/HeliReturn.cs b/OpenRA.Mods.RA/Activities/HeliReturn.cs index aa4573b293..28676a46b4 100644 --- a/OpenRA.Mods.RA/Activities/HeliReturn.cs +++ b/OpenRA.Mods.RA/Activities/HeliReturn.cs @@ -32,7 +32,7 @@ namespace OpenRA.Mods.RA.Activities if (isCanceled) return NextActivity; var dest = ChooseHelipad(self); - var initialFacing = self.Info.Traits.Get().InitialFacing; + var initialFacing = self.Info.Traits.Get().InitialFacing; if (dest == null) return Util.SequenceActivities( diff --git a/OpenRA.Mods.RA/Activities/Land.cs b/OpenRA.Mods.RA/Activities/Land.cs index 28d6e56d2f..abade04f2b 100644 --- a/OpenRA.Mods.RA/Activities/Land.cs +++ b/OpenRA.Mods.RA/Activities/Land.cs @@ -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().ROT); + Util.TickFacing(ref unit.Facing, desiredFacing, self.Info.Traits.Get().ROT); var mobile = self.traits.WithInterface().FirstOrDefault(); var speed = .2f * mobile.MovementSpeedForCell(self, self.Location); var angle = unit.Facing / 128f * Math.PI; diff --git a/OpenRA.Mods.RA/Activities/ReturnToBase.cs b/OpenRA.Mods.RA/Activities/ReturnToBase.cs index f272d2d9ea..0d2a3d60e8 100644 --- a/OpenRA.Mods.RA/Activities/ReturnToBase.cs +++ b/OpenRA.Mods.RA/Activities/ReturnToBase.cs @@ -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().ROT) * speed / (float)Math.PI; + var turnRadius = (128f / self.Info.Traits.Get().ROT) * speed / (float)Math.PI; /* work out the center points */ var fwd = -float2.FromAngle(unit.Facing / 128f * (float)Math.PI); diff --git a/OpenRA.Mods.RA/Aircraft.cs b/OpenRA.Mods.RA/Aircraft.cs index 3245851b3e..5c82621abf 100755 --- a/OpenRA.Mods.RA/Aircraft.cs +++ b/OpenRA.Mods.RA/Aircraft.cs @@ -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(); - 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 GetCurrentPath(Actor self) @@ -67,15 +75,11 @@ namespace OpenRA.Mods.RA public float MovementSpeedForCell(Actor self, int2 cell) { - var unitInfo = self.Info.Traits.GetOrDefault(); - if( unitInfo == null) - return 0f; - var modifier = self.traits .WithInterface() .Select(t => t.GetSpeedModifier()) .Product(); - return unitInfo.Speed * modifier; + return Info.Speed * modifier; } int2[] noCells = new int2[] { }; diff --git a/OpenRA.Mods.RA/Helicopter.cs b/OpenRA.Mods.RA/Helicopter.cs index e11d40f0bd..9ef9f7863e 100644 --- a/OpenRA.Mods.RA/Helicopter.cs +++ b/OpenRA.Mods.RA/Helicopter.cs @@ -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().LandWhenIdle) + if (Info.LandWhenIdle) { - self.QueueActivity(new Turn(self.Info.Traits.GetOrDefault().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().InitialFacing)); + self.QueueActivity(new Turn(Info.InitialFacing)); self.QueueActivity(new HeliLand(false)); - self.QueueActivity(self.Info.Traits.Get().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(); var mobile = self.traits.WithInterface().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().IdealSeparation) + if (d.Length > Info.IdealSeparation) return float2.Zero; if (d.LengthSquared < Epsilon) diff --git a/OpenRA.Mods.RA/Plane.cs b/OpenRA.Mods.RA/Plane.cs index 7b5500c3bd..00def236a9 100644 --- a/OpenRA.Mods.RA/Plane.cs +++ b/OpenRA.Mods.RA/Plane.cs @@ -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) diff --git a/mods/cnc/defaults.yaml b/mods/cnc/defaults.yaml index 232b65ba2c..8fe7c66312 100644 --- a/mods/cnc/defaults.yaml +++ b/mods/cnc/defaults.yaml @@ -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: diff --git a/mods/cnc/infantry.yaml b/mods/cnc/infantry.yaml index db38369770..470d2d38c9 100644 --- a/mods/cnc/infantry.yaml +++ b/mods/cnc/infantry.yaml @@ -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 diff --git a/mods/cnc/vehicles.yaml b/mods/cnc/vehicles.yaml index ffb967ef19..8bc0476d8c 100644 --- a/mods/cnc/vehicles.yaml +++ b/mods/cnc/vehicles.yaml @@ -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: diff --git a/mods/ra/defaults.yaml b/mods/ra/defaults.yaml index 382b2922de..6d6ee7bda5 100644 --- a/mods/ra/defaults.yaml +++ b/mods/ra/defaults.yaml @@ -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 diff --git a/mods/ra/infantry.yaml b/mods/ra/infantry.yaml index 965e460761..02d8800e66 100644 --- a/mods/ra/infantry.yaml +++ b/mods/ra/infantry.yaml @@ -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 diff --git a/mods/ra/vehicles.yaml b/mods/ra/vehicles.yaml index 2a1d65fad7..2371d2ba67 100644 --- a/mods/ra/vehicles.yaml +++ b/mods/ra/vehicles.yaml @@ -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: