diff --git a/OpenRA.Mods.Common/Traits/AutoTarget.cs b/OpenRA.Mods.Common/Traits/AutoTarget.cs index 559eff04dc..7a511e8340 100644 --- a/OpenRA.Mods.Common/Traits/AutoTarget.cs +++ b/OpenRA.Mods.Common/Traits/AutoTarget.cs @@ -24,8 +24,12 @@ namespace OpenRA.Mods.Common.Traits [Desc("Set to a value >1 to override weapons maximum range for this.")] public readonly int ScanRadius = -1; - [Desc("Possible values are HoldFire, ReturnFire, Defend and AttackAnything.")] - public readonly UnitStance InitialStance = UnitStance.AttackAnything; + [Desc("Possible values are HoldFire, ReturnFire, Defend and AttackAnything.", + "Used for computer-controlled players, both Lua-scripted and regular Skirmish AI alike.")] + public readonly UnitStance InitialStanceAI = UnitStance.AttackAnything; + + [Desc("Possible values are HoldFire, ReturnFire, Defend and AttackAnything. Used for human players.")] + public readonly UnitStance InitialStance = UnitStance.Defend; [Desc("Allow the player to change the unit stance.")] public readonly bool EnableStances = true; @@ -63,7 +67,7 @@ namespace OpenRA.Mods.Common.Traits { this.info = info; attack = self.Trait(); - Stance = info.InitialStance; + Stance = self.Owner.IsBot || !self.Owner.Playable ? info.InitialStanceAI : info.InitialStance; PredictedStance = Stance; at = self.TraitOrDefault(); } diff --git a/OpenRA.Mods.Common/UtilityCommands/UpgradeRules.cs b/OpenRA.Mods.Common/UtilityCommands/UpgradeRules.cs index 6db88ddb75..a9ca53425b 100644 --- a/OpenRA.Mods.Common/UtilityCommands/UpgradeRules.cs +++ b/OpenRA.Mods.Common/UtilityCommands/UpgradeRules.cs @@ -2266,6 +2266,17 @@ namespace OpenRA.Mods.Common.UtilityCommands } } + // Add InitialStance for bots + if (engineVersion < 20151025) + { + if (depth == 1 && node.Key == "AutoTarget") + { + var stance = node.Value.Nodes.FirstOrDefault(n => n.Key == "InitialStance"); + if (stance != null) + node.Value.Nodes.Add(new MiniYamlNode("InitialStanceAI", stance.Value.Value)); + } + } + UpgradeActorRules(engineVersion, ref node.Value.Nodes, node, depth + 1); } } diff --git a/mods/cnc/rules/vehicles.yaml b/mods/cnc/rules/vehicles.yaml index c03cc58cc4..36375bbd0e 100644 --- a/mods/cnc/rules/vehicles.yaml +++ b/mods/cnc/rules/vehicles.yaml @@ -150,7 +150,7 @@ ARTY: AttackFrontal: WithMuzzleOverlay: AutoTarget: - InitialStance: Defend + InitialStanceAI: Defend SpawnActorOnDeath: Actor: ARTY.Husk Explodes: @@ -488,7 +488,7 @@ MLRS: WithReloadingTurret: AmmoPoolName: primary AutoTarget: - InitialStance: Defend + InitialStanceAI: Defend RenderRangeCircle: SpawnActorOnDeath: Actor: MLRS.Husk @@ -526,6 +526,7 @@ STNK: AttackFrontal: AutoTarget: InitialStance: HoldFire + InitialStanceAI: ReturnFire Targetable: SpawnActorOnDeath: Actor: STNK.Husk diff --git a/mods/d2k/rules/infantry.yaml b/mods/d2k/rules/infantry.yaml index 430fb76c1d..150ba32b31 100644 --- a/mods/d2k/rules/infantry.yaml +++ b/mods/d2k/rules/infantry.yaml @@ -126,6 +126,8 @@ fremen: Range: 4c768 AutoTarget: ScanRadius: 7 + InitialStance: HoldFire + InitialStanceAI: ReturnFire Armament@PRIMARY: Weapon: Fremen_S Armament@SECONDARY: diff --git a/mods/d2k/rules/vehicles.yaml b/mods/d2k/rules/vehicles.yaml index cf6fccfa4a..cd532a4bcc 100644 --- a/mods/d2k/rules/vehicles.yaml +++ b/mods/d2k/rules/vehicles.yaml @@ -210,7 +210,7 @@ siege_tank: Weapon: UnitExplodeMed EmptyWeapon: UnitExplodeMed AutoTarget: - InitialStance: Defend + InitialStanceAI: Defend Selectable: Class: siegetank SpawnActorOnDeath: @@ -245,7 +245,7 @@ missile_tank: LocalOffset: -128,128,171, -128,-128,171 AttackFrontal: AutoTarget: - InitialStance: Defend + InitialStanceAI: Defend Explodes: Weapon: UnitExplodeMed EmptyWeapon: UnitExplodeMed @@ -394,6 +394,7 @@ stealth_raider: IsPlayerPalette: true AutoTarget: InitialStance: HoldFire + InitialStanceAI: ReturnFire -MustBeDestroyed: deviator: @@ -423,7 +424,7 @@ deviator: LocalOffset: -299,0,85 AttackFrontal: AutoTarget: - InitialStance: Defend + InitialStanceAI: Defend Explodes: Weapon: UnitExplodeLarge EmptyWeapon: UnitExplodeLarge diff --git a/mods/ra/maps/fort-lonestar/map.yaml b/mods/ra/maps/fort-lonestar/map.yaml index f0d4933d17..580b096529 100644 --- a/mods/ra/maps/fort-lonestar/map.yaml +++ b/mods/ra/maps/fort-lonestar/map.yaml @@ -654,7 +654,7 @@ Rules: Health: HP: 200 AutoTarget: - InitialStance: Defend + InitialStanceAI: Defend SNIPER.soviets: Inherits: SNIPER Buildable: diff --git a/mods/ra/rules/aircraft.yaml b/mods/ra/rules/aircraft.yaml index 6c9ded5379..028152b3d9 100644 --- a/mods/ra/rules/aircraft.yaml +++ b/mods/ra/rules/aircraft.yaml @@ -273,6 +273,7 @@ HELI: CanHover: True AutoTarget: InitialStance: HoldFire + InitialStanceAI: HoldFire WithSpriteRotorOverlay: Offset: 0,0,85 AmmoPool: @@ -326,6 +327,7 @@ HIND: CanHover: True AutoTarget: InitialStance: HoldFire + InitialStanceAI: HoldFire WithSpriteRotorOverlay: AmmoPool: Ammo: 24 diff --git a/mods/ra/rules/infantry.yaml b/mods/ra/rules/infantry.yaml index f8c243bf11..8779868f27 100644 --- a/mods/ra/rules/infantry.yaml +++ b/mods/ra/rules/infantry.yaml @@ -32,6 +32,8 @@ DOG: Voice: Attack AttackMove: Voice: Move + AutoTarget: + InitialStance: AttackAnything Targetable: TargetTypes: Ground, Infantry WithInfantryBody: @@ -517,7 +519,8 @@ SNIPER: RevealsShroud: Range: 6c0 AutoTarget: - InitialStance: ReturnFire + InitialStance: HoldFire + InitialStanceAI: ReturnFire Armament@PRIMARY: Weapon: Sniper Armament@GARRISONED: diff --git a/mods/ra/rules/ships.yaml b/mods/ra/rules/ships.yaml index a157bc9a18..38dcb2af36 100644 --- a/mods/ra/rules/ships.yaml +++ b/mods/ra/rules/ships.yaml @@ -43,7 +43,8 @@ SS: SelectionDecorations: VisualBounds: 38,38 AutoTarget: - InitialStance: ReturnFire + InitialStance: HoldFire + InitialStanceAI: ReturnFire DetectCloaked: CloakTypes: Underwater Range: 4c0 @@ -98,7 +99,8 @@ MSUB: SelectionDecorations: VisualBounds: 44,44 AutoTarget: - InitialStance: ReturnFire + InitialStance: HoldFire + InitialStanceAI: ReturnFire DetectCloaked: CloakTypes: Underwater Range: 4c0 diff --git a/mods/ra/rules/vehicles.yaml b/mods/ra/rules/vehicles.yaml index d1a24af220..62574ff50a 100644 --- a/mods/ra/rules/vehicles.yaml +++ b/mods/ra/rules/vehicles.yaml @@ -723,7 +723,8 @@ STNK: RevealsShroud: Range: 6c0 AutoTarget: - InitialStance: ReturnFire + InitialStance: HoldFire + InitialStanceAI: ReturnFire Armament: Weapon: APTusk LocalOffset: 400,0,0 diff --git a/mods/ts/rules/nod-vehicles.yaml b/mods/ts/rules/nod-vehicles.yaml index ab46e39122..e53c8bd106 100644 --- a/mods/ts/rules/nod-vehicles.yaml +++ b/mods/ts/rules/nod-vehicles.yaml @@ -272,5 +272,6 @@ STNK: Voice: Attack AutoTarget: InitialStance: HoldFire + InitialStanceAI: ReturnFire -MustBeDestroyed: