diff --git a/OpenRA.Mods.Cnc/Traits/Infiltration/InfiltrateForTransform.cs b/OpenRA.Mods.Cnc/Traits/Infiltration/InfiltrateForTransform.cs index bf26d20278..1d23aab997 100644 --- a/OpenRA.Mods.Cnc/Traits/Infiltration/InfiltrateForTransform.cs +++ b/OpenRA.Mods.Cnc/Traits/Infiltration/InfiltrateForTransform.cs @@ -18,11 +18,14 @@ using OpenRA.Traits; namespace OpenRA.Mods.Cnc.Traits { - [Desc("This structure can be infiltrated causing funds to be stolen.")] + [Desc("Transform into a different actor type.")] class InfiltrateForTransformInfo : ITraitInfo { - [ActorReference, FieldLoader.Require] public readonly string IntoActor = null; + [ActorReference, FieldLoader.Require] + public readonly string IntoActor = null; + public readonly int ForceHealthPercentage = 0; + public readonly bool SkipMakeAnims = true; public readonly BitSet Types = default(BitSet); @@ -46,10 +49,17 @@ namespace OpenRA.Mods.Cnc.Traits if (!info.Types.Overlaps(types)) return; + var transform = new Transform(self, info.IntoActor) + { + ForceHealthPercentage = info.ForceHealthPercentage, + Faction = faction, + SkipMakeAnims = info.SkipMakeAnims + }; + var facing = self.TraitOrDefault(); - var transform = new Transform(self, info.IntoActor) { ForceHealthPercentage = info.ForceHealthPercentage, Faction = faction }; - if (facing != null) transform.Facing = facing.Facing; - transform.SkipMakeAnims = info.SkipMakeAnims; + if (facing != null) + transform.Facing = facing.Facing; + self.CancelActivity(); self.QueueActivity(transform); } diff --git a/mods/ra/maps/monster-tank-madness/rules.yaml b/mods/ra/maps/monster-tank-madness/rules.yaml index eabf6124dc..297e4e7e50 100644 --- a/mods/ra/maps/monster-tank-madness/rules.yaml +++ b/mods/ra/maps/monster-tank-madness/rules.yaml @@ -185,6 +185,7 @@ PBOX: Image: 4TNK -Capturable: -TransformOnCapture: + -InfiltrateForTransform: DOME.NoInfiltrate: Inherits: DOME diff --git a/mods/ra/rules/defaults.yaml b/mods/ra/rules/defaults.yaml index fb9b6b73b1..57e86c8672 100644 --- a/mods/ra/rules/defaults.yaml +++ b/mods/ra/rules/defaults.yaml @@ -961,9 +961,12 @@ CaptureManager: Capturable: Types: husk - ValidStances: Enemy, Neutral, Ally + ValidStances: Enemy, Neutral TransformOnCapture: ForceHealthPercentage: 25 + InfiltrateForTransform: + Types: Husk + ForceHealthPercentage: 25 WithColoredOverlay@IDISABLE: Palette: disabled Targetable: diff --git a/mods/ra/rules/husks.yaml b/mods/ra/rules/husks.yaml index e5208ae685..5f599da43e 100644 --- a/mods/ra/rules/husks.yaml +++ b/mods/ra/rules/husks.yaml @@ -6,6 +6,8 @@ Anim: turret TransformOnCapture: IntoActor: 1tnk + InfiltrateForTransform: + IntoActor: 1tnk RenderSprites: Image: 1tnk.destroyed @@ -17,6 +19,8 @@ Anim: turret TransformOnCapture: IntoActor: 2tnk + InfiltrateForTransform: + IntoActor: 2tnk RenderSprites: Image: 2tnk.destroyed @@ -28,6 +32,8 @@ Anim: turret TransformOnCapture: IntoActor: 3tnk + InfiltrateForTransform: + IntoActor: 3tnk RenderSprites: Image: 3tnk.destroyed @@ -39,6 +45,8 @@ Anim: turret TransformOnCapture: IntoActor: 4tnk + InfiltrateForTransform: + IntoActor: 4tnk RenderSprites: Image: 4tnk.destroyed @@ -48,6 +56,8 @@ HARV.FullHusk: Name: Husk (Ore Truck) TransformOnCapture: IntoActor: harv + InfiltrateForTransform: + IntoActor: harv RenderSprites: Image: hhusk @@ -57,6 +67,8 @@ HARV.EmptyHusk: Name: Husk (Ore Truck) TransformOnCapture: IntoActor: harv + InfiltrateForTransform: + IntoActor: harv RenderSprites: Image: hhusk2 @@ -66,6 +78,8 @@ MCV.Husk: Name: Husk (Mobile Construction Vehicle) TransformOnCapture: IntoActor: mcv + InfiltrateForTransform: + IntoActor: mcv RenderSprites: Image: mcvhusk @@ -78,6 +92,8 @@ MGG.Husk: Offset: -299,0,171 TransformOnCapture: IntoActor: mgg + InfiltrateForTransform: + IntoActor: mgg RenderSprites: Image: mgg.destroyed @@ -112,6 +128,7 @@ TRAN.Husk1: Image: tran1husk -Capturable: -TransformOnCapture: + -InfiltrateForTransform: TRAN.Husk2: Inherits: ^Husk @@ -121,6 +138,7 @@ TRAN.Husk2: Image: tran2husk -Capturable: -TransformOnCapture: + -InfiltrateForTransform: BADR.Husk: Inherits: ^PlaneHusk diff --git a/mods/ra/rules/infantry.yaml b/mods/ra/rules/infantry.yaml index 7191108412..7a04017a9f 100644 --- a/mods/ra/rules/infantry.yaml +++ b/mods/ra/rules/infantry.yaml @@ -450,6 +450,11 @@ MECH: Captures: CaptureTypes: husk PlayerExperience: 25 + Infiltrates: + Types: Husk + ValidStances: Ally + EnterCursor: goldwrench + PlayerExperience: 25 WithInfantryBody: IdleSequences: idle DefaultAttackSequence: repair