From cb4e4d7bd9603d2d6098ae448d4f5bb25d39d4a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20Mail=C3=A4nder?= Date: Tue, 13 Aug 2013 16:14:13 +0200 Subject: [PATCH 01/11] added idle render overlays for d2k and ts buildings --- OpenRA.Mods.RA/OpenRA.Mods.RA.csproj | 1 + OpenRA.Mods.RA/Render/WithIdleOverlay.cs | 50 ++++++++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 OpenRA.Mods.RA/Render/WithIdleOverlay.cs diff --git a/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj b/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj index 6f78829aae..1657810019 100644 --- a/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj +++ b/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj @@ -465,6 +465,7 @@ + diff --git a/OpenRA.Mods.RA/Render/WithIdleOverlay.cs b/OpenRA.Mods.RA/Render/WithIdleOverlay.cs new file mode 100644 index 0000000000..db9e79b741 --- /dev/null +++ b/OpenRA.Mods.RA/Render/WithIdleOverlay.cs @@ -0,0 +1,50 @@ +#region Copyright & License Information +/* + * Copyright 2007-2013 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.FileFormats; +using OpenRA.Graphics; +using OpenRA.Traits; + +namespace OpenRA.Mods.RA.Render +{ + public class WithIdleOverlayInfo : ITraitInfo, Requires + { + [Desc("Sequence name to use")] + public readonly string Sequence = "idle-overlay"; + + [Desc("Position relative to body")] + public readonly WVec Offset = WVec.Zero; + + public object Create(ActorInitializer init) { return new WithIdleOverlay(init.self, this); } + } + + public class WithIdleOverlay : INotifyDamageStateChanged + { + Animation overlay; + + public WithIdleOverlay(Actor self, WithIdleOverlayInfo info) + { + var rs = self.Trait(); + var body = self.Trait(); + + overlay = new Animation(rs.GetImage(self)); + overlay.PlayRepeating(info.Sequence); + rs.anims.Add("idle_overlay_{0}".F(info.Sequence), + new AnimationWithOffset(overlay, + () => body.LocalToWorld(info.Offset.Rotate(body.QuantizeOrientation(self, self.Orientation))), + null, p => WithTurret.ZOffsetFromCenter(self, p, 1))); + } + + public void DamageStateChanged(Actor self, AttackInfo e) + { + overlay.ReplaceAnim(RenderSprites.NormalizeSequence(overlay, e.DamageState, overlay.CurrentSequence.Name)); + } + } +} \ No newline at end of file From ec83c342812e610cfaeac542f3b511e1a93ad4ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20Mail=C3=A4nder?= Date: Tue, 13 Aug 2013 16:15:17 +0200 Subject: [PATCH 02/11] developer cheats by default in Tiberian Sun as long it is in development --- mods/ts/mod.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ts/mod.yaml b/mods/ts/mod.yaml index cd6028d999..9c893483c1 100644 --- a/mods/ts/mod.yaml +++ b/mods/ts/mod.yaml @@ -144,7 +144,7 @@ ServerTraits: MasterServerPinger LobbyDefaults: - AllowCheats: false + AllowCheats: true Crates: true StartingUnitsClass: none FragileAlliances: false From 6b5747f017399519dc1ed53ec7152f52068e2d9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20Mail=C3=A4nder?= Date: Tue, 13 Aug 2013 16:15:59 +0200 Subject: [PATCH 03/11] light and fans animation for the construction yard --- mods/ts/rules/structures.yaml | 6 ++++++ mods/ts/sequences/structures.yaml | 17 ++++++++++------- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/mods/ts/rules/structures.yaml b/mods/ts/rules/structures.yaml index c446623d7e..4b1c18f454 100644 --- a/mods/ts/rules/structures.yaml +++ b/mods/ts/rules/structures.yaml @@ -31,6 +31,12 @@ GACNST: Facing: 96 ProductionBar: -Sellable: + WithIdleOverlay@TOP: + Sequence: idle-top + WithIdleOverlay@SIDE: + Sequence: idle-side + WithIdleOverlay@FRONT: + Sequence: idle-front GAPOWR: Inherits: ^Building diff --git a/mods/ts/sequences/structures.yaml b/mods/ts/sequences/structures.yaml index 34ed469bb4..e2c58a8857 100644 --- a/mods/ts/sequences/structures.yaml +++ b/mods/ts/sequences/structures.yaml @@ -1,21 +1,21 @@ -gacnst: # TODO: write a render trait for the overlays +gacnst: idle: gtcnst Start: 0 ShadowStart: 3 - medium-damaged-idle: gtcnst + damaged-idle: gtcnst Start: 1 ShadowStart: 4 - damaged-idle: gtcnst + critical-idle: gtcnst Start: 2 ShadowStart: 5 make: gtcnstmk Start: 0 Length: 24 ShadowStart: 24 - build-front: gtcnst_d + build-front: gtcnst_d # TODO: needs a render overlay trait Start: 0 Length: 20 - damaged-build-front: gtcnst_d + damaged-build-front: gtcnst_d # TODO: needs a render overlay trait Start: 0 Length: 20 idle-top: gtcnst_c @@ -26,7 +26,7 @@ gacnst: # TODO: write a render trait for the overlays Start: 15 Length: 15 Tick: 200 - heavy-damaged-idle-top: gtcnst_c + critical-idle-top: gtcnst_c Start: 30 idle-side: gtcnst_a Start: 0 @@ -34,7 +34,7 @@ gacnst: # TODO: write a render trait for the overlays damaged-idle-side: gtcnst_a Start: 10 Length: 10 - heavy-damaged-idle-side: gtcnst_a + critical-idle-side: gtcnst_a Start: 20 Length: 10 idle-front: gtcnst_b @@ -43,6 +43,9 @@ gacnst: # TODO: write a render trait for the overlays damaged-idle-front: gtcnst_b Start: 0 Length: 10 + critical-idle-front: gtcnst_b + Start: 0 + Length: 10 gapowr: # TODO: shadow, plugs idle: gtpowr From d7b7c18489f3e92509f52ac69189d4083c084c5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20Mail=C3=A4nder?= Date: Tue, 13 Aug 2013 16:16:18 +0200 Subject: [PATCH 04/11] lights and plugs for the power plant --- mods/ts/rules/structures.yaml | 4 ++++ mods/ts/sequences/structures.yaml | 38 +++++++++++++++++++++++++------ 2 files changed, 35 insertions(+), 7 deletions(-) diff --git a/mods/ts/rules/structures.yaml b/mods/ts/rules/structures.yaml index 4b1c18f454..8c1a98caf7 100644 --- a/mods/ts/rules/structures.yaml +++ b/mods/ts/rules/structures.yaml @@ -63,6 +63,10 @@ GAPOWR: Type: Wood RevealsShroud: Range: 4 + WithIdleOverlay@LIGHTS: + Sequence: idle-lights + WithIdleOverlay@PLUG: + Sequence: idle-plug GAPILE: Inherits: ^Building diff --git a/mods/ts/sequences/structures.yaml b/mods/ts/sequences/structures.yaml index e2c58a8857..ca63a43901 100644 --- a/mods/ts/sequences/structures.yaml +++ b/mods/ts/sequences/structures.yaml @@ -47,20 +47,44 @@ gacnst: Start: 0 Length: 10 -gapowr: # TODO: shadow, plugs +gapowr: idle: gtpowr Start: 0 ShadowStart: 3 + damaged-idle: gtpowr + Start: 1 + ShadowStart: 4 + critical-idle: gtpowr + Start: 2 + ShadowStart: 5 + idle-lights: gtpowr_a + Start: 0 + Length: 12 + Tick: 200 + damaged-idle-lights: gtpowr_a + Start: 12 + Length: 12 + Tick: 200 + critical-idle-lights: gtpowr_a + Start: 24 + Length: 12 + Tick: 200 + idle-plug: gtpowr_b + Start: 0 + Length: 12 + Tick: 200 + damaged-idle-plug: gtpowr_b + Start: 0 + Length: 12 + Tick: 200 + critical-idle-plug: gtpowr_b + Start: 0 + Length: 12 + Tick: 200 make: gtpowrmk Start: 0 Length: 20 ShadowStart: 20 - damaged-idle: gtpowr - Start: 1 - ShadowStart: 4 - dead: gtpowr - Start: 2 - ShadowStart: 5 gapile: idle: gtpile From 6cfca021bc168cc9b3f92ad6cae9977984a2b0e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20Mail=C3=A4nder?= Date: Tue, 13 Aug 2013 16:16:37 +0200 Subject: [PATCH 05/11] lights and flags for the GDI barracks --- mods/ts/rules/structures.yaml | 6 +++++ mods/ts/sequences/structures.yaml | 40 +++++++++++++++++++++---------- 2 files changed, 34 insertions(+), 12 deletions(-) diff --git a/mods/ts/rules/structures.yaml b/mods/ts/rules/structures.yaml index 8c1a98caf7..a00d530433 100644 --- a/mods/ts/rules/structures.yaml +++ b/mods/ts/rules/structures.yaml @@ -101,6 +101,12 @@ GAPILE: PrimaryBuilding: IronCurtainable: ProductionBar: + WithIdleOverlay@LIGHTS: + Sequence: idle-lights + WithIdleOverlay@LIGHT: + Sequence: idle-light + WithIdleOverlay@FLAG: + Sequence: idle-flag GAWEAP: Inherits: ^Building diff --git a/mods/ts/sequences/structures.yaml b/mods/ts/sequences/structures.yaml index ca63a43901..cdc431aed3 100644 --- a/mods/ts/sequences/structures.yaml +++ b/mods/ts/sequences/structures.yaml @@ -90,22 +90,38 @@ gapile: idle: gtpile Start: 0 ShadowStart: 3 -# TODO: lights: gtpile_a -# Start: 0 -# TODO: light: gtpile_b -# Start: 0 -# TODO: flag: gtpile_c -# Start:0 + damaged-idle: gtpile + Start: 1 + ShadowStart: 4 + critical-idle: gtpile + Start: 2 + ShadowStart: 5 + idle-lights: gtpile_a + Start: 0 + Length: 7 + Tick: 200 + damaged-idle-lights: gtpile_a + Start:7 + Length: 7 + Tick: 200 + idle-light: gtpile_b + Start: 0 + Length: 7 + Tick: 200 + damaged-idle-light: gtpile_b + Start:7 + Length: 7 + Tick: 200 + idle-flag: gtpile_c + Start:0 + Length: 7 + damaged-idle-flag: gtpile_c + Start:7 + Length: 7 make: gtpilemk Start: 0 Length: 20 ShadowStart: 20 - damaged-idle: gtpile - Start: 1 - ShadowStart: 4 - dead: gtpile - Start: 2 - ShadowStart: 5 gaweap: idle: gtweap From 9dbbd32686af52ce319712efdd382235199ee2cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20Mail=C3=A4nder?= Date: Tue, 13 Aug 2013 16:40:56 +0200 Subject: [PATCH 06/11] set up the GDI helipad better with overlays --- mods/ts/rules/structures.yaml | 6 +++-- mods/ts/sequences/structures.yaml | 43 +++++++++++++++++++++---------- 2 files changed, 33 insertions(+), 16 deletions(-) diff --git a/mods/ts/rules/structures.yaml b/mods/ts/rules/structures.yaml index a00d530433..16f1fd055b 100644 --- a/mods/ts/rules/structures.yaml +++ b/mods/ts/rules/structures.yaml @@ -348,8 +348,10 @@ GAHPAD: RepairsUnits: # RallyPoint: ProductionBar: - -RenderBuilding: - RenderBuildingWarFactory: # TODO: workaround + WithIdleOverlay@PLATFORM: + Sequence: idle-platform + WithIdleOverlay@LIGHTS: + Sequence: idle-lights # custom prerequisites: ANYPOWER: diff --git a/mods/ts/sequences/structures.yaml b/mods/ts/sequences/structures.yaml index cdc431aed3..f010c5bc99 100644 --- a/mods/ts/sequences/structures.yaml +++ b/mods/ts/sequences/structures.yaml @@ -230,26 +230,41 @@ gaspot: # TODO: 1 more damage state, GASPOT_A active animation Length: 14 ShadowStart: 14 -gahpad: # TODO: 1 more damage state +gahpad: idle: Start: 0 ShadowStart: 3 damaged-idle: Start: 1 ShadowStart: 4 + critical-idle: + Start: 2 + ShadowStart: 5 + idle-platform: gthpadbb + Start: 0 + ShadowStart: 3 + damaged-idle-platform: gthpadbb + Start: 1 + ShadowStart: 4 + critical-idle-platform: gthpadbb + Start: 2 + ShadowStart: 5 + idle-lights: gahpad_a + Start: 0 + Length: 8 + Offset: 2,-12 + Tick: 200 + damaged-idle-lights: gthpad_a + Start: 8 + Length: 8 + Offset: 16,-16 + Tick: 200 + critical-idle-lights: gthpad_a + Start: 16 + Length: 8 + Offset: 24,-24 + Tick: 200 make: gahpadmk Start: 0 Length: 18 - ShadowStart: 18 - build-top: gahpad_a - Start: 8 - Length: 8 - damaged-build-top: gahpad_a - Start: 0 - Length: 8 - idle-top: gahpadbb - Start: 0 - ShadowStart: 3 - damaged-idle-top: gahpadbb - Start: 1 - ShadowStart: 4 \ No newline at end of file + ShadowStart: 18 \ No newline at end of file From 004d3669c2d54cfeea3b0c80f48076b28ffa086d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20Mail=C3=A4nder?= Date: Tue, 13 Aug 2013 16:45:09 +0200 Subject: [PATCH 07/11] complete the spotlight tower sequences --- mods/ts/rules/structures.yaml | 2 ++ mods/ts/sequences/structures.yaml | 17 ++++++++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/mods/ts/rules/structures.yaml b/mods/ts/rules/structures.yaml index 16f1fd055b..89afd5b241 100644 --- a/mods/ts/rules/structures.yaml +++ b/mods/ts/rules/structures.yaml @@ -317,6 +317,8 @@ GASPOT: # TODO: has moving spotlights RenderDetectionCircle: DetectCloaked: Range: 3 + WithIdleOverlay@LIGHTS: + Sequence: idle-lights GAHPAD: Inherits: ^Building diff --git a/mods/ts/sequences/structures.yaml b/mods/ts/sequences/structures.yaml index f010c5bc99..f5fef7e830 100644 --- a/mods/ts/sequences/structures.yaml +++ b/mods/ts/sequences/structures.yaml @@ -218,13 +218,28 @@ gaarty: Length: 16 ShadowStart: 16 -gaspot: # TODO: 1 more damage state, GASPOT_A active animation +gaspot: idle: Start: 0 ShadowStart: 3 damaged-idle: Start: 1 ShadowStart: 4 + critical-idle: + Start: 2 + ShadowStart: 5 + idle-lights: gaspot_a + Start: 0 + Length: 8 + Tick: 200 + damaged-idle-lights: gaspot_a + Start: 8 + Length: 8 + Tick: 200 + critical-idle-lights: gaspot_a + Start: 16 + Length: 8 + Tick: 200 make: gaspotmk Start: 0 Length: 14 From c0be16cde3d3d377ecd5d0c0694e8368bb585db9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20Mail=C3=A4nder?= Date: Tue, 13 Aug 2013 17:00:59 +0200 Subject: [PATCH 08/11] don't display the overlay before the building is completed --- OpenRA.Mods.RA/Render/WithIdleOverlay.cs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/OpenRA.Mods.RA/Render/WithIdleOverlay.cs b/OpenRA.Mods.RA/Render/WithIdleOverlay.cs index db9e79b741..f9bc619df4 100644 --- a/OpenRA.Mods.RA/Render/WithIdleOverlay.cs +++ b/OpenRA.Mods.RA/Render/WithIdleOverlay.cs @@ -25,9 +25,10 @@ namespace OpenRA.Mods.RA.Render public object Create(ActorInitializer init) { return new WithIdleOverlay(init.self, this); } } - public class WithIdleOverlay : INotifyDamageStateChanged + public class WithIdleOverlay : INotifyDamageStateChanged, INotifyBuildComplete { Animation overlay; + bool buildComplete; public WithIdleOverlay(Actor self, WithIdleOverlayInfo info) { @@ -39,7 +40,12 @@ namespace OpenRA.Mods.RA.Render rs.anims.Add("idle_overlay_{0}".F(info.Sequence), new AnimationWithOffset(overlay, () => body.LocalToWorld(info.Offset.Rotate(body.QuantizeOrientation(self, self.Orientation))), - null, p => WithTurret.ZOffsetFromCenter(self, p, 1))); + () => !buildComplete, p => WithTurret.ZOffsetFromCenter(self, p, 1))); + } + + public void BuildingComplete(Actor self) + { + buildComplete = true; } public void DamageStateChanged(Actor self, AttackInfo e) From aaf1904257c1140a79fbd226d976997055d82b1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20Mail=C3=A4nder?= Date: Tue, 13 Aug 2013 18:50:36 +0200 Subject: [PATCH 09/11] fix Could not load type 'System.Action' by changing .NET target framework from default 4.0 to 3.5 --- OpenRA.Mods.TS/OpenRA.Mods.TS.csproj | 1 + 1 file changed, 1 insertion(+) diff --git a/OpenRA.Mods.TS/OpenRA.Mods.TS.csproj b/OpenRA.Mods.TS/OpenRA.Mods.TS.csproj index ac5fbd4237..3ee58da491 100644 --- a/OpenRA.Mods.TS/OpenRA.Mods.TS.csproj +++ b/OpenRA.Mods.TS/OpenRA.Mods.TS.csproj @@ -9,6 +9,7 @@ Library OpenRA.Mods.TS OpenRA.Mods.TS + v3.5 true From 94c3090528dd37858dd67a65e6e19114454637c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20Mail=C3=A4nder?= Date: Tue, 13 Aug 2013 23:51:31 +0200 Subject: [PATCH 10/11] require body orientation for idle overlays and don't wait for BuildingComplete to generalize for units --- OpenRA.Mods.RA/Render/WithIdleOverlay.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/OpenRA.Mods.RA/Render/WithIdleOverlay.cs b/OpenRA.Mods.RA/Render/WithIdleOverlay.cs index f9bc619df4..f93c14df91 100644 --- a/OpenRA.Mods.RA/Render/WithIdleOverlay.cs +++ b/OpenRA.Mods.RA/Render/WithIdleOverlay.cs @@ -11,10 +11,11 @@ using OpenRA.FileFormats; using OpenRA.Graphics; using OpenRA.Traits; +using OpenRA.Mods.RA.Buildings; namespace OpenRA.Mods.RA.Render { - public class WithIdleOverlayInfo : ITraitInfo, Requires + public class WithIdleOverlayInfo : ITraitInfo, Requires, Requires { [Desc("Sequence name to use")] public readonly string Sequence = "idle-overlay"; @@ -35,6 +36,7 @@ namespace OpenRA.Mods.RA.Render var rs = self.Trait(); var body = self.Trait(); + buildComplete = !self.HasTrait(); // always render instantly for units overlay = new Animation(rs.GetImage(self)); overlay.PlayRepeating(info.Sequence); rs.anims.Add("idle_overlay_{0}".F(info.Sequence), From d3edaaae4df4e4d883aaa4cb7b9282400936a3d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20Mail=C3=A4nder?= Date: Wed, 14 Aug 2013 00:05:24 +0200 Subject: [PATCH 11/11] =?UTF-8?q?replace=20WithSpinner=20=E2=86=92=20WithI?= =?UTF-8?q?dleOverlay?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- OpenRA.Mods.RA/OpenRA.Mods.RA.csproj | 1 - OpenRA.Mods.RA/Render/WithSpinner.cs | 42 ---------------------------- mods/cnc/rules/vehicles.yaml | 3 +- mods/ra/rules/vehicles.yaml | 9 ++++-- 4 files changed, 8 insertions(+), 47 deletions(-) delete mode 100755 OpenRA.Mods.RA/Render/WithSpinner.cs diff --git a/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj b/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj index 1657810019..d188a035c1 100644 --- a/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj +++ b/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj @@ -432,7 +432,6 @@ - diff --git a/OpenRA.Mods.RA/Render/WithSpinner.cs b/OpenRA.Mods.RA/Render/WithSpinner.cs deleted file mode 100755 index 68e003d42b..0000000000 --- a/OpenRA.Mods.RA/Render/WithSpinner.cs +++ /dev/null @@ -1,42 +0,0 @@ -#region Copyright & License Information -/* - * Copyright 2007-2011 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.FileFormats; -using OpenRA.Graphics; -using OpenRA.Traits; - -namespace OpenRA.Mods.RA.Render -{ - class WithSpinnerInfo : ITraitInfo, Requires, Requires - { - [Desc("Sequence name to use")] - public readonly string Sequence = "spinner"; - - [Desc("Position relative to body")] - public readonly WVec Offset = WVec.Zero; - - public object Create(ActorInitializer init) { return new WithSpinner(init.self, this); } - } - - class WithSpinner - { - public WithSpinner(Actor self, WithSpinnerInfo info) - { - var rs = self.Trait(); - var body = self.Trait(); - - var spinner = new Animation(rs.GetImage(self)); - spinner.PlayRepeating(info.Sequence); - rs.anims.Add("spinner_{0}".F(info.Sequence), new AnimationWithOffset(spinner, - () => body.LocalToWorld(info.Offset.Rotate(body.QuantizeOrientation(self, self.Orientation))), - null, p => WithTurret.ZOffsetFromCenter(self, p, 1))); - } - } -} diff --git a/mods/cnc/rules/vehicles.yaml b/mods/cnc/rules/vehicles.yaml index cb8acc2594..fa5a5f5b0e 100644 --- a/mods/cnc/rules/vehicles.yaml +++ b/mods/cnc/rules/vehicles.yaml @@ -565,7 +565,8 @@ MHQ: RevealsShroud: Range: 6 RenderUnit: - WithSpinner: + WithIdleOverlay@SPINNER: + Sequence: spinner Offset: -256,0,256 AttackMove: JustMove: yes diff --git a/mods/ra/rules/vehicles.yaml b/mods/ra/rules/vehicles.yaml index 89f8e773b7..c5dec0452a 100644 --- a/mods/ra/rules/vehicles.yaml +++ b/mods/ra/rules/vehicles.yaml @@ -509,8 +509,9 @@ MGG: RevealsShroud: Range: 6 RenderUnit: - WithSpinner: + WithIdleOverlay@SPINNER: Offset: -299,0,171 + Sequence: spinner AttackMove: JustMove: yes CreatesShroud: @@ -554,7 +555,8 @@ MRJ: RevealsShroud: Range: 6 RenderUnit: - WithSpinner: + WithIdleOverlay@SPINNER: + Sequence: spinner Offset: -256,0,256 AttackMove: JustMove: yes @@ -651,7 +653,8 @@ TTNK: LocalOffset: 0,0,213 AttackFrontal: RenderUnit: - WithSpinner: + WithIdleOverlay@SPINNER: + Sequence: spinner Selectable: Bounds: 28,28,0,0 AutoTarget: