diff --git a/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj b/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj index 188bd7823e..4b4d9f2794 100644 --- a/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj +++ b/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj @@ -319,7 +319,6 @@ - diff --git a/OpenRA.Mods.RA/Render/RenderDisguise.cs b/OpenRA.Mods.RA/Render/RenderDisguise.cs index 26277cf12e..7e61373b86 100644 --- a/OpenRA.Mods.RA/Render/RenderDisguise.cs +++ b/OpenRA.Mods.RA/Render/RenderDisguise.cs @@ -12,12 +12,12 @@ using OpenRA.Traits; namespace OpenRA.Mods.RA.Render { - class RenderDisguiseInfo : RenderInfantryProneInfo, Requires + class RenderDisguiseInfo : RenderInfantryInfo, Requires { public override object Create(ActorInitializer init) { return new RenderDisguise(init.self, this); } } - class RenderDisguise : RenderInfantryProne + class RenderDisguise : RenderInfantry { RenderDisguiseInfo info; string intendedSprite; diff --git a/OpenRA.Mods.RA/Render/RenderInfantry.cs b/OpenRA.Mods.RA/Render/RenderInfantry.cs index 7399fcec9b..bee15913f6 100644 --- a/OpenRA.Mods.RA/Render/RenderInfantry.cs +++ b/OpenRA.Mods.RA/Render/RenderInfantry.cs @@ -50,48 +50,47 @@ namespace OpenRA.Mods.RA.Render public class RenderInfantry : RenderSimple, INotifyAttack, INotifyKilled, INotifyIdle { - public enum AnimationState - { - Idle, - Attacking, - Moving, - Waiting, - IdleAnimating - } - - IMove move; - RenderInfantryInfo info; - public bool IsMoving { get; set; } - protected bool dirty = false; + readonly RenderInfantryInfo info; + readonly IMove move; + bool dirty = false; string idleSequence; int idleDelay; + AnimationState state; - protected virtual string NormalizeInfantrySequence(Actor self, string baseSequence) - { - return baseSequence; - } - - protected virtual bool AllowIdleAnimation(Actor self) - { - return info.IdleAnimations.Length > 0; - } - - public AnimationState State { get; private set; } + IRenderInfantrySequenceModifier rsm; + bool isModifyingSequence { get { return rsm != null && rsm.IsModifyingSequence; } } + bool wasModifying; public RenderInfantry(Actor self, RenderInfantryInfo info) : base(self, MakeFacingFunc(self)) { this.info = info; DefaultAnimation.PlayFetchIndex(NormalizeInfantrySequence(self, info.StandAnimations.Random(Game.CosmeticRandom)), () => 0); - State = AnimationState.Waiting; + state = AnimationState.Waiting; move = self.Trait(); + rsm = self.TraitOrDefault(); + } + + protected virtual string NormalizeInfantrySequence(Actor self, string baseSequence) + { + var prefix = isModifyingSequence ? rsm.SequencePrefix : ""; + + if (DefaultAnimation.HasSequence(prefix + baseSequence)) + return prefix + baseSequence; + else + return baseSequence; + } + + protected virtual bool AllowIdleAnimation(Actor self) + { + return info.IdleAnimations.Length > 0 && !isModifyingSequence; } public void Attacking(Actor self, Target target) { - State = AnimationState.Attacking; + state = AnimationState.Attacking; if (DefaultAnimation.HasSequence(NormalizeInfantrySequence(self, info.AttackAnimation))) - DefaultAnimation.PlayThen(NormalizeInfantrySequence(self, info.AttackAnimation), () => State = AnimationState.Idle); + DefaultAnimation.PlayThen(NormalizeInfantrySequence(self, info.AttackAnimation), () => state = AnimationState.Idle); } public void Attacking(Actor self, Target target, Armament a, Barrel barrel) @@ -103,14 +102,22 @@ namespace OpenRA.Mods.RA.Render { base.Tick(self); - if ((State == AnimationState.Moving || dirty) && !move.IsMoving) + if (rsm != null) { - State = AnimationState.Waiting; + if (wasModifying != rsm.IsModifyingSequence) + dirty = true; + + wasModifying = rsm.IsModifyingSequence; + } + + if ((state == AnimationState.Moving || dirty) && !move.IsMoving) + { + state = AnimationState.Waiting; DefaultAnimation.PlayFetchIndex(NormalizeInfantrySequence(self, info.StandAnimations.Random(Game.CosmeticRandom)), () => 0); } - else if ((State != AnimationState.Moving || dirty) && move.IsMoving) + else if ((state != AnimationState.Moving || dirty) && move.IsMoving) { - State = AnimationState.Moving; + state = AnimationState.Moving; DefaultAnimation.PlayRepeating(NormalizeInfantrySequence(self, info.MoveAnimation)); } @@ -119,10 +126,10 @@ namespace OpenRA.Mods.RA.Render public void TickIdle(Actor self) { - if (State != AnimationState.Idle && State != AnimationState.IdleAnimating) + if (state != AnimationState.Idle && state != AnimationState.IdleAnimating) { DefaultAnimation.PlayFetchIndex(NormalizeInfantrySequence(self, info.StandAnimations.Random(Game.CosmeticRandom)), () => 0); - State = AnimationState.Idle; + state = AnimationState.Idle; if (info.IdleAnimations.Length > 0) { @@ -134,11 +141,11 @@ namespace OpenRA.Mods.RA.Render { if (DefaultAnimation.HasSequence(idleSequence)) { - State = AnimationState.IdleAnimating; + state = AnimationState.IdleAnimating; DefaultAnimation.PlayThen(idleSequence, () => { DefaultAnimation.PlayRepeating(NormalizeInfantrySequence(self, info.StandAnimations.Random(Game.CosmeticRandom))); - State = AnimationState.Waiting; + state = AnimationState.Waiting; }); } } @@ -166,5 +173,14 @@ namespace OpenRA.Mods.RA.Render sequence, info.PlayerPalette + self.Owner.InternalName)); }); } + + enum AnimationState + { + Idle, + Attacking, + Moving, + Waiting, + IdleAnimating + } } } diff --git a/OpenRA.Mods.RA/Render/RenderInfantryPanic.cs b/OpenRA.Mods.RA/Render/RenderInfantryPanic.cs deleted file mode 100644 index a5e1004656..0000000000 --- a/OpenRA.Mods.RA/Render/RenderInfantryPanic.cs +++ /dev/null @@ -1,56 +0,0 @@ -#region Copyright & License Information -/* - * Copyright 2007-2014 The OpenRA Developers (see AUTHORS) - * This file is part of OpenRA, which is free software. It is made - * available to you under the terms of the GNU General Public License - * as published by the Free Software Foundation. For more information, - * see COPYING. - */ -#endregion - -using OpenRA.Traits; - -namespace OpenRA.Mods.RA.Render -{ - class RenderInfantryPanicInfo : RenderInfantryInfo, Requires - { - public override object Create(ActorInitializer init) { return new RenderInfantryPanic(init.self, this); } - } - - class RenderInfantryPanic : RenderInfantry - { - readonly ScaredyCat sc; - bool wasPanic; - - public RenderInfantryPanic(Actor self, RenderInfantryPanicInfo info) - : base(self, info) - { - sc = self.Trait(); - } - - protected override string NormalizeInfantrySequence(Actor self, string baseSequence) - { - var prefix = sc != null && sc.Panicking ? "panic-" : ""; - - if (DefaultAnimation.HasSequence(prefix + baseSequence)) - return prefix + baseSequence; - else - return baseSequence; - } - - protected override bool AllowIdleAnimation(Actor self) - { - return base.AllowIdleAnimation(self) && !sc.Panicking; - } - - public override void Tick (Actor self) - { - if (wasPanic != sc.Panicking) - dirty = true; - - wasPanic = sc.Panicking; - base.Tick(self); - } - } -} - diff --git a/OpenRA.Mods.RA/ScaredyCat.cs b/OpenRA.Mods.RA/ScaredyCat.cs index 0e5a526818..45c86c3b90 100644 --- a/OpenRA.Mods.RA/ScaredyCat.cs +++ b/OpenRA.Mods.RA/ScaredyCat.cs @@ -16,48 +16,58 @@ namespace OpenRA.Mods.RA [Desc("Makes the unit automatically run around when taking damage.")] class ScaredyCatInfo : ITraitInfo { + [Desc("How long (in ticks) the actor should panic for.")] public readonly int PanicLength = 25 * 10; + + [Desc("Panic movement speed as a precentage of the normal speed.")] public readonly int PanicSpeedModifier = 200; + + [Desc("Chance (out of 100) the unit has to enter panic mode when attacked.")] public readonly int AttackPanicChance = 20; public object Create(ActorInitializer init) { return new ScaredyCat(init.self, this); } } - class ScaredyCat : ITick, INotifyIdle, INotifyDamage, INotifyAttack, ISpeedModifier, ISync + class ScaredyCat : ITick, INotifyIdle, INotifyDamage, INotifyAttack, ISpeedModifier, ISync, IRenderInfantrySequenceModifier { - readonly ScaredyCatInfo Info; - [Sync] readonly Actor Self; + readonly ScaredyCatInfo info; + [Sync] readonly Actor self; + [Sync] int panicStartedTick; + bool panicking { get { return panicStartedTick > 0; } } - [Sync] public int PanicStartedTick; - [Sync] public bool Panicking { get { return PanicStartedTick > 0; } } + public bool IsModifyingSequence { get { return panicking; } } + public string SequencePrefix { get { return "panic-"; } } public ScaredyCat(Actor self, ScaredyCatInfo info) { - Self = self; - Info = info; + this.self = self; + this.info = info; } public void Panic() { - if (!Panicking) - Self.CancelActivity(); - PanicStartedTick = Self.World.WorldTick; + if (!panicking) + self.CancelActivity(); + + panicStartedTick = self.World.WorldTick; } public void Tick(Actor self) { - if (!Panicking) return; + if (!panicking) + return; - if (self.World.WorldTick >= PanicStartedTick + Info.PanicLength) + if (self.World.WorldTick >= panicStartedTick + info.PanicLength) { self.CancelActivity(); - PanicStartedTick = 0; + panicStartedTick = 0; } } public void TickIdle(Actor self) { - if (!Panicking) return; + if (!panicking) + return; self.Trait().Nudge(self, self, true); } @@ -70,13 +80,13 @@ namespace OpenRA.Mods.RA public void Attacking(Actor self, Target target, Armament a, Barrel barrel) { - if (self.World.SharedRandom.Next(100 / Info.AttackPanicChance) == 0) + if (self.World.SharedRandom.Next(100 / info.AttackPanicChance) == 0) Panic(); } public int GetSpeedModifier() { - return Panicking ? Info.PanicSpeedModifier : 100; + return panicking ? info.PanicSpeedModifier : 100; } } } diff --git a/OpenRA.Mods.RA/TakeCover.cs b/OpenRA.Mods.RA/TakeCover.cs index cc122e6b32..0b33983b5b 100644 --- a/OpenRA.Mods.RA/TakeCover.cs +++ b/OpenRA.Mods.RA/TakeCover.cs @@ -9,16 +9,14 @@ #endregion using OpenRA.GameRules; -using OpenRA.Mods.RA.Render; using OpenRA.Traits; namespace OpenRA.Mods.RA { - [Desc("This actor goes prone in an attempt to reduce damage.")] + [Desc("Make the unit go prone when under attack, in an attempt to reduce damage.")] public class TakeCoverInfo : TurretedInfo { - [Desc("How long should we remain in the prone position?" + - "Measured in game ticks. Default is 4 seconds.")] + [Desc("How long (in ticks) the actor remains prone.")] public readonly int ProneTime = 100; [Desc("Prone movement speed as a percentage of the normal speed.")] @@ -29,87 +27,48 @@ namespace OpenRA.Mods.RA public override object Create(ActorInitializer init) { return new TakeCover(init, this); } } - // Infantry prone behavior - public class TakeCover : Turreted, ITick, INotifyDamage, IDamageModifier, ISpeedModifier, ISync + public class TakeCover : Turreted, INotifyDamage, IDamageModifier, ISpeedModifier, ISync, IRenderInfantrySequenceModifier { - TakeCoverInfo Info; + readonly TakeCoverInfo info; [Sync] int remainingProneTime = 0; + bool isProne { get { return remainingProneTime > 0; } } + + public bool IsModifyingSequence { get { return isProne; } } + public string SequencePrefix { get { return "prone-"; } } public TakeCover(ActorInitializer init, TakeCoverInfo info) : base(init, info) { - Info = info; + this.info = info; } - public bool IsProne { get { return remainingProneTime > 0; } } - public void Damaged(Actor self, AttackInfo e) { if (e.Damage > 0 && (e.Warhead == null || !e.Warhead.PreventProne)) /* Don't go prone when healed */ { - if (!IsProne) - LocalOffset = Info.ProneOffset; + if (!isProne) + LocalOffset = info.ProneOffset; - remainingProneTime = Info.ProneTime; + remainingProneTime = info.ProneTime; } } public override void Tick(Actor self) { base.Tick(self); - if (IsProne && --remainingProneTime == 0) + + if (isProne && --remainingProneTime == 0) LocalOffset = WVec.Zero; } public int GetDamageModifier(Actor attacker, DamageWarhead warhead) { - return IsProne && warhead != null ? warhead.ProneModifier : 100; + return isProne && warhead != null ? warhead.ProneModifier : 100; } public int GetSpeedModifier() { - return IsProne ? Info.SpeedModifier : 100; - } - } - - class RenderInfantryProneInfo : RenderInfantryInfo, Requires - { - public override object Create(ActorInitializer init) { return new RenderInfantryProne(init.self, this); } - } - - class RenderInfantryProne : RenderInfantry - { - readonly TakeCover tc; - bool wasProne; - - public RenderInfantryProne(Actor self, RenderInfantryProneInfo info) - : base(self, info) - { - tc = self.Trait(); - } - - protected override string NormalizeInfantrySequence(Actor self, string baseSequence) - { - var prefix = tc != null && tc.IsProne ? "prone-" : ""; - - if (DefaultAnimation.HasSequence(prefix + baseSequence)) - return prefix + baseSequence; - else - return baseSequence; - } - - protected override bool AllowIdleAnimation(Actor self) - { - return base.AllowIdleAnimation(self) && !tc.IsProne; - } - - public override void Tick(Actor self) - { - if (wasProne != tc.IsProne) - dirty = true; - - wasProne = tc.IsProne; - base.Tick(self); + return isProne ? info.SpeedModifier : 100; } } } diff --git a/mods/cnc/rules/defaults.yaml b/mods/cnc/rules/defaults.yaml index 3205f64673..6e248c0888 100644 --- a/mods/cnc/rules/defaults.yaml +++ b/mods/cnc/rules/defaults.yaml @@ -152,7 +152,7 @@ TargetTypes: Ground, Infantry TakeCover: SpeedModifier: 60 - RenderInfantryProne: + RenderInfantry: AttackMove: Passenger: CargoType: Infantry @@ -196,7 +196,7 @@ Inherits: ^Infantry -AutoTarget: -TakeCover: - -RenderInfantryProne: + RenderInfantry: AppearsOnRadar: SelectionDecorations: Selectable: @@ -219,7 +219,6 @@ Notification: CivilianKilled NotifyAll: true ScaredyCat: - RenderInfantryPanic: CrushableInfantry: ^DINO: diff --git a/mods/cnc/rules/infantry.yaml b/mods/cnc/rules/infantry.yaml index 7a3ec38cfd..76fd38fcb6 100644 --- a/mods/cnc/rules/infantry.yaml +++ b/mods/cnc/rules/infantry.yaml @@ -17,7 +17,7 @@ E1: Armament: Weapon: M16 AttackFrontal: - RenderInfantryProne: + RenderInfantry: IdleAnimations: idle1,idle2,idle3,idle4 StandAnimations: stand, stand2 @@ -43,7 +43,7 @@ E2: LocalOffset: 0,0,427 FireDelay: 15 AttackFrontal: - RenderInfantryProne: + RenderInfantry: IdleAnimations: idle1,idle2 StandAnimations: stand, stand2 Explodes: @@ -74,7 +74,7 @@ E3: LocalOffset: 256,43,341 FireDelay: 5 AttackFrontal: - RenderInfantryProne: + RenderInfantry: IdleAnimations: idle1,idle2 StandAnimations: stand, stand2 @@ -104,7 +104,7 @@ E4: AttackFrontal: WithMuzzleFlash: SplitFacings: true - RenderInfantryProne: + RenderInfantry: IdleAnimations: idle1,idle2 StandAnimations: stand, stand2 @@ -140,7 +140,7 @@ E5: WithMuzzleFlash: SplitFacings: true -PoisonedByTiberium: - RenderInfantryProne: + RenderInfantry: IdleAnimations: idle1,idle2 StandAnimations: stand, stand2 @@ -167,7 +167,7 @@ E6: Captures: CaptureTypes: building, husk -AutoTarget: - RenderInfantryProne: + RenderInfantry: IdleAnimations: idle1,idle2 StandAnimations: stand, stand2 -GainsExperience: @@ -201,7 +201,7 @@ RMBO: Armament: Weapon: Sniper AttackFrontal: - RenderInfantryProne: + RenderInfantry: IdleAnimations: idle1,idle2,idle3 StandAnimations: stand, stand2 AnnounceOnBuild: diff --git a/mods/d2k/rules/atreides.yaml b/mods/d2k/rules/atreides.yaml index ce9f3ae77e..73d7847662 100644 --- a/mods/d2k/rules/atreides.yaml +++ b/mods/d2k/rules/atreides.yaml @@ -226,9 +226,8 @@ FREMEN: Armament@SECONDARY: Weapon: Slung AttackFrontal: - RenderInfantryProne: + RenderInfantry: IdleAnimations: stand,stand2 - -RenderInfantry: TakeCover: Cloak: InitialDelay: 250 @@ -260,8 +259,7 @@ GRENADIER: FireDelay: 15 AttackFrontal: TakeCover: - -RenderInfantry: - RenderInfantryProne: + RenderInfantry: IdleAnimations: stand,stand2 Explodes: Weapon: UnitExplodeSmall diff --git a/mods/d2k/rules/harkonnen.yaml b/mods/d2k/rules/harkonnen.yaml index a919c07789..aeb8ae7512 100644 --- a/mods/d2k/rules/harkonnen.yaml +++ b/mods/d2k/rules/harkonnen.yaml @@ -228,8 +228,7 @@ SARDAUKAR: RevealsShroud: Range: 6c0 TakeCover: - -RenderInfantry: - RenderInfantryProne: + RenderInfantry: IdleAnimations: stand,stand2 Armament@PRIMARY: Weapon: Vulcan diff --git a/mods/d2k/rules/infantry.yaml b/mods/d2k/rules/infantry.yaml index 220492d28d..924fa51366 100644 --- a/mods/d2k/rules/infantry.yaml +++ b/mods/d2k/rules/infantry.yaml @@ -19,8 +19,7 @@ RIFLE: Weapon: LMG AttackFrontal: TakeCover: - -RenderInfantry: - RenderInfantryProne: + RenderInfantry: IdleAnimations: stand,stand2 ENGINEER: @@ -74,8 +73,7 @@ BAZOOKA: LocalOffset: 0,0,555 AttackFrontal: TakeCover: - -RenderInfantry: - RenderInfantryProne: + RenderInfantry: IdleAnimations: stand,stand2 MEDIC: diff --git a/mods/ra/rules/civilian.yaml b/mods/ra/rules/civilian.yaml index 148769491b..29caa4118a 100644 --- a/mods/ra/rules/civilian.yaml +++ b/mods/ra/rules/civilian.yaml @@ -13,43 +13,43 @@ C4: Inherits: ^CivInfantry Selectable: Voice: CivilianFemaleVoice - RenderInfantryPanic: + RenderInfantry: Image: C2 C5: Inherits: ^CivInfantry - RenderInfantryPanic: + RenderInfantry: Image: C1 C6: Inherits: ^CivInfantry Selectable: Voice: CivilianFemaleVoice - RenderInfantryPanic: + RenderInfantry: Image: C2 C7: Inherits: ^CivInfantry - RenderInfantryPanic: + RenderInfantry: Image: C1 C8: Inherits: ^CivInfantry Selectable: Voice: CivilianFemaleVoice - RenderInfantryPanic: + RenderInfantry: Image: C2 C9: Inherits: ^CivInfantry - RenderInfantryPanic: + RenderInfantry: Image: C1 C10: Inherits: ^CivInfantry Selectable: Voice: CivilianFemaleVoice - RenderInfantryPanic: + RenderInfantry: Image: C2 FCOM: diff --git a/mods/ra/rules/defaults.yaml b/mods/ra/rules/defaults.yaml index 9e91d32f1b..f8e25bc348 100644 --- a/mods/ra/rules/defaults.yaml +++ b/mods/ra/rules/defaults.yaml @@ -411,8 +411,7 @@ AttackFrontal: ProximityCaptor: Types: CivilianInfantry - -RenderInfantry: - RenderInfantryPanic: + RenderInfantry: ScaredyCat: ^CivBuilding: diff --git a/mods/ra/rules/infantry.yaml b/mods/ra/rules/infantry.yaml index 656d9592f8..4b199dd07c 100644 --- a/mods/ra/rules/infantry.yaml +++ b/mods/ra/rules/infantry.yaml @@ -54,8 +54,7 @@ E1: MuzzleSequence: garrison-muzzle AttackFrontal: TakeCover: - -RenderInfantry: - RenderInfantryProne: + RenderInfantry: IdleAnimations: idle1,idle2 StandAnimations: stand,stand2 @@ -87,8 +86,7 @@ E2: FireDelay: 15 AttackFrontal: TakeCover: - -RenderInfantry: - RenderInfantryProne: + RenderInfantry: IdleAnimations: idle1,idle2 StandAnimations: stand,stand2 Explodes: @@ -124,8 +122,7 @@ E3: Weapon: Dragon AttackFrontal: TakeCover: - -RenderInfantry: - RenderInfantryProne: + RenderInfantry: IdleAnimations: idle1,idle2 StandAnimations: stand,stand2 @@ -156,8 +153,7 @@ E4: Weapon: Flamer AttackFrontal: TakeCover: - -RenderInfantry: - RenderInfantryProne: + RenderInfantry: IdleAnimations: idle1,idle2 StandAnimations: stand,stand2 @@ -188,8 +184,7 @@ E6: Type: building TakeCover: -AutoTarget: - -RenderInfantry: - RenderInfantryProne: + RenderInfantry: IdleAnimations: idle1,idle2 StandAnimations: stand,stand2 @@ -265,8 +260,7 @@ E7: MuzzleSequence: garrison-muzzle AttackFrontal: TakeCover: - -RenderInfantry: - RenderInfantryProne: + RenderInfantry: IdleAnimations: idle1,idle2 MEDI: @@ -300,8 +294,7 @@ MEDI: OutsideRangeCursor: heal TakeCover: -AutoTarget: - -RenderInfantry: - RenderInfantryProne: + RenderInfantry: IdleAnimations: idle1,idle2 AttackAnimation: heal @@ -338,8 +331,7 @@ MECH: CaptureTypes: husk TakeCover: -AutoTarget: - -RenderInfantry: - RenderInfantryProne: + RenderInfantry: IdleAnimations: idle1,idle2 AttackAnimation: heal @@ -361,8 +353,7 @@ EINSTEIN: -AutoTarget: ProximityCaptor: Types: CivilianInfantry - -RenderInfantry: - RenderInfantryPanic: + RenderInfantry: ScaredyCat: DELPHI: @@ -383,8 +374,7 @@ DELPHI: -AutoTarget: ProximityCaptor: Types: CivilianInfantry - -RenderInfantry: - RenderInfantryPanic: + RenderInfantry: ScaredyCat: CHAN: @@ -478,8 +468,7 @@ SHOK: Weapon: PortaTesla AttackFrontal: TakeCover: - -RenderInfantry: - RenderInfantryProne: + RenderInfantry: IdleAnimations: idle1,idle2 StandAnimations: stand,stand2 @@ -515,8 +504,7 @@ SNIPER: MuzzleSequence: garrison-muzzle AttackFrontal: TakeCover: - -RenderInfantry: - RenderInfantryProne: + RenderInfantry: IdleAnimations: idle1,idle2 StandAnimations: stand,stand2 Cloak: diff --git a/mods/ts/rules/defaults.yaml b/mods/ts/rules/defaults.yaml index 97b24be64f..afdb3e48f8 100644 --- a/mods/ts/rules/defaults.yaml +++ b/mods/ts/rules/defaults.yaml @@ -173,8 +173,7 @@ AttackFrontal: ProximityCaptor: Types: CivilianInfantry - -RenderInfantry: - RenderInfantryPanic: + RenderInfantry: ScaredyCat: ^Vehicle: diff --git a/mods/ts/rules/infantry.yaml b/mods/ts/rules/infantry.yaml index d971726c41..577bb2e9e7 100644 --- a/mods/ts/rules/infantry.yaml +++ b/mods/ts/rules/infantry.yaml @@ -19,8 +19,7 @@ E1: Weapon: Minigun AttackFrontal: TakeCover: - -RenderInfantry: - RenderInfantryProne: + RenderInfantry: IdleAnimations: idle1,idle2 E2: @@ -46,8 +45,7 @@ E2: FireDelay: 5 AttackFrontal: TakeCover: - -RenderInfantry: - RenderInfantryProne: + RenderInfantry: IdleAnimations: idle1,idle2 E3: @@ -73,8 +71,7 @@ E3: LocalOffset: 128,0,640 AttackFrontal: TakeCover: - -RenderInfantry: - RenderInfantryProne: + RenderInfantry: IdleAnimations: idle1,idle2 WEEDGUY: @@ -102,8 +99,7 @@ WEEDGUY: Weapon: FireballLauncher LocalOffset: 85,0,384 AttackFrontal: - -RenderInfantry: - RenderInfantryProne: + RenderInfantry: TakeCover: MEDIC: @@ -130,8 +126,7 @@ MEDIC: Weapon: Heal AttackFrontal: TakeCover: - -RenderInfantry: - RenderInfantryProne: + RenderInfantry: IdleAnimations: idle1,idle2 AttackAnimation: heal SelfHealing: @@ -163,8 +158,7 @@ ENGINEER: Captures: CaptureTypes: building -AutoTarget: - -RenderInfantry: - RenderInfantryProne: + RenderInfantry: IdleAnimations: idle1,idle2 TakeCover: -GainsExperience: @@ -196,8 +190,7 @@ UMAGON: Weapon: Sniper AttackFrontal: TakeCover: - -RenderInfantry: - RenderInfantryProne: + RenderInfantry: IdleAnimations: idle1,idle2 GHOST: @@ -233,8 +226,7 @@ GHOST: C4Demolition: C4Delay: 45 TakeCover: - -RenderInfantry: - RenderInfantryProne: + RenderInfantry: IdleAnimations: idle1,idle2 JUMPJET: @@ -328,8 +320,7 @@ CYBORG: Weapon: Vulcan3 AttackFrontal: TakeCover: - -RenderInfantry: - RenderInfantryProne: + RenderInfantry: IdleAnimations: idle1,idle2 CYC2: @@ -364,8 +355,7 @@ CYC2: LocalOffset: 170,85,683 AttackFrontal: TakeCover: - -RenderInfantry: - RenderInfantryProne: + RenderInfantry: IdleAnimations: idle1,idle2 MUTANT: @@ -394,8 +384,7 @@ MUTANT: Weapon: Vulcan AttackFrontal: TakeCover: - -RenderInfantry: - RenderInfantryProne: + RenderInfantry: IdleAnimations: idle1,idle2 MWMN: @@ -424,8 +413,7 @@ MWMN: Weapon: Vulcan AttackFrontal: TakeCover: - -RenderInfantry: - RenderInfantryProne: + RenderInfantry: IdleAnimations: idle1,idle2 MUTANT3: @@ -454,8 +442,7 @@ MUTANT3: Weapon: Vulcan AttackFrontal: TakeCover: - -RenderInfantry: - RenderInfantryProne: + RenderInfantry: IdleAnimations: idle1,idle2 MHIJACK: @@ -482,8 +469,7 @@ MHIJACK: Range: 6c0 -AutoTarget: TakeCover: - -RenderInfantry: - RenderInfantryProne: + RenderInfantry: IdleAnimations: idle1,idle2 TRATOS: @@ -509,8 +495,7 @@ TRATOS: Range: 4c0 TakeCover: -AutoTarget: - -RenderInfantry: - RenderInfantryProne: + RenderInfantry: IdleAnimations: idle1,idle2 OXANNA: @@ -534,8 +519,7 @@ OXANNA: Range: 4c0 TakeCover: -AutoTarget: - -RenderInfantry: - RenderInfantryProne: + RenderInfantry: IdleAnimations: idle1,idle2 SLAV: @@ -559,8 +543,7 @@ SLAV: Range: 4c0 TakeCover: -AutoTarget: - -RenderInfantry: - RenderInfantryProne: + RenderInfantry: IdleAnimations: idle1,idle2 DOGGIE: