From 236a0b24472e913ad5cf45419e4c1d849dc1931d Mon Sep 17 00:00:00 2001 From: itsspin Date: Sun, 9 Aug 2026 12:34:44 -0500 Subject: [PATCH] Add flashing attack outlines to player frames --- README.md | 2 +- spinui_glass/AttackIndicator.tga | Bin 32786 -> 131090 bytes spinui_glass/AttackIndicatorHigh.tga | Bin 32786 -> 0 bytes spinui_glass/EQUI_PlayerWindow.xml | 482 +++++++++++++++++++-- spinui_glass/EQUI_PlayerWindow1.xml | 535 +++++++++++++++++++++--- spinui_glass/EQUI_PlayerWindow2.xml | 482 +++++++++++++++++++-- spinui_glass/EQUI_PlayerWindow3.xml | 482 +++++++++++++++++++-- spinui_glass/EQUI_PlayerWindow4.xml | 482 +++++++++++++++++++-- spinui_glass/EQUI_PlayerWindow5.xml | 482 +++++++++++++++++++-- spinui_glass/EQUI_PlayerWindow6.xml | 482 +++++++++++++++++++-- spinui_reloaded/AttackIndicator.tga | Bin 32786 -> 131090 bytes spinui_reloaded/AttackIndicatorHigh.tga | Bin 32786 -> 0 bytes spinui_reloaded/EQUI_PlayerWindow.xml | 482 +++++++++++++++++++-- spinui_reloaded/EQUI_PlayerWindow1.xml | 535 +++++++++++++++++++++--- spinui_reloaded/EQUI_PlayerWindow2.xml | 482 +++++++++++++++++++-- spinui_reloaded/EQUI_PlayerWindow3.xml | 482 +++++++++++++++++++-- spinui_reloaded/EQUI_PlayerWindow4.xml | 482 +++++++++++++++++++-- spinui_reloaded/EQUI_PlayerWindow5.xml | 482 +++++++++++++++++++-- spinui_reloaded/EQUI_PlayerWindow6.xml | 482 +++++++++++++++++++-- tools/audit_combat_ui.py | 162 ++++--- tools/paint_attack_indicator.py | 123 +----- tools/restyle_combat.py | 71 +++- 22 files changed, 6632 insertions(+), 580 deletions(-) delete mode 100644 spinui_glass/AttackIndicatorHigh.tga delete mode 100644 spinui_reloaded/AttackIndicatorHigh.tga diff --git a/README.md b/README.md index f5d4459..725a04a 100644 --- a/README.md +++ b/README.md @@ -74,7 +74,7 @@ Both skins ship together. Use `/loadskin spinui_glass 1` for Midnight Frost or ` - **One centered eye-line.** Player, target, casting, stance, spell gems, and actions share a bottom-anchored combat band instead of competing with the center of the world. - **Information has a color grammar.** HP is red, mana is blue, endurance and XP are brass gold, and AA is spirit blue. XP and AA keep persistent tick marks while their fills remain correctly scaled to the displayed percentage. - **Native controls stay native.** Hotbuttons, spell gems, pet commands, drag/drop, tooltips, loadouts, and client-driven usable/unusable states retain their original bindings. -- **Attack state can be unmistakable.** The default PlayerWindow keeps its restrained native combat pulse; choose **Display Types -> High-Visibility Attack Frame** (Alternate 1) for a solid pure-red nine-pixel perimeter and pulsing red wash driven directly by EverQuest's auto-attack state. +- **Attack state is unmistakable.** Both themes use a fast, outline-only pure-red pulse driven directly by EverQuest's auto-attack state, with a fully transparent interior. Choose **Display Types -> High-Visibility Attack Frame** (Alternate 1) for a slightly thicker five-pixel rail in the same compact player-frame footprint. - **The spell deck adapts to the player.** Its default remains the compact icon-only deck; choose **Display Types -> SpinUI Spell Ledger** for a resizable alternate with every icon, live spell name, and memorized slot number. - **Extended targets use the space you give them.** XTAR keeps its familiar single-column default, then flows all 23 Legends targets into additional complete columns as the window is widened—without losing role, aggro, cast, HP, mana, or endurance data. - **Effects read through the artwork.** Spell, song, and pet-effect durations sit directly on their icons in shadowed ember gold instead of growing into opaque timer slabs. diff --git a/spinui_glass/AttackIndicator.tga b/spinui_glass/AttackIndicator.tga index f4e589a86711984cfebdcab6f848a899f197b0e8..c08529a8882425ff77e4b724e15e5a5b1de07e29 100644 GIT binary patch literal 131090 zcmeI*v5^!}5CqWy2{SMUvoHXg&YW}Om=R9-lhFor=0Z#*^3e_Ch%v;6lPPYv^**4h6o|NX{O!~Cap_CF*4 zviEP|+N4dofo`B1=mxrhZeYy~eB74Dd;hoI8h$Tu+CQIrc^1guV@*x-r&T;z{vK;; znm?`L$@2GDQ`7uu6;GDG$C{evPpf#c{5{sxG=EyfljZNRrl$GRDxNHVk2N*TpH}f? z`FpIXY5uf|C(GYsO-=KsRXkb#9&2ivKds`)^7mL%)BI@_PnN&OnwsWMt9Y{fJ=WBe z{L9|IiEEQK=?1!iZlD|J2D*VYH}LPaJl^y@v25o8r~UJ}muG?eJ=WATe_F+pVe@_gGWY{Am?W zmcPfEn&wZdc(VLG*3>kATE&y)@3E$)`O_+%EPszRHO-$^@nrdXtf^`Kw2CLo-(yWp z$-nIVo47Vq&&SX0ydX%$bFzsH)I=1;45viv>P)HHuu#gpalv8JZ^(<+`Ue~&da&7W5B zWchonscHVSiYLq8V@*x-r&T;z{vK;;nm?`L$@2GDQ`7uu6;GDG$C{evPpf#c{5{sx zl>E!yzlm#;Ht7bsfo`B1=mxrhH8*hofA8nNWkBB(%XThs+CQIrc^1guV@*x-r&T;z z{vK;;nm?`L$@2GDQ`7uu6;GDG$C{evPpf#c{5{sxG=EyfljZNRrl$GRDxNHVk2N*T zpH}f?`FpIXY5uf|C(GYsO-=KsRXkb#9&2ivKds`)^7mL%)BI@_PnN&OnwsWMt9Y{f zJ=WBe{L9|IiEEQK=?1!iZlD|J2D*VYH}G*=9&h@dShjP4)BgF~%dVe@_gGWY{Am?WmcPfEn&wZdc(VLG*3>kATE&y) z@3E$)UY-T=_gGWY{Am?W zmcPfEn&wZdc(VLG*3>kATE&y)@3E$)`O_+%EPszRHO-$^@nrdXtf^`Kw2CLo-(yWp z^QTojS^getYMMW-;>q&&SX0ydX%$bFzsH)I=1;45viv>P)HHuu#gpalv8JZ^(<+`U ze~&daCI7PbZ{pgdO}c?@pd080x`A$B%?*6rmdBgECzkD8;Iw}}_wp=|zsH)I=1;45 zviv>P)HHuu#gpalv8JZ^(<+`Ue~&da&7W5BWchonscHVSiYLq8V@*x-r&T;z{vK;; znm?`L$@2GDQ`7uu6;GDG$C{evPpf#c{5{sxG=EyfljZNRrl$GRDxNHVk2N*TpH}f? f`FpIXDfySZe-qaxZPE>N1KmJ3&<%70J8s}V0xCaj literal 32786 zcmeI(u?YfU42I!gWpRawh**g;SXf#)z*UwG;0)prPT~wsVQFn8RyL6o2ZwMIyswZ2 z@_fm~;*S_b_q)U{R^!b!a}m#+#VsdsemBuRnmFt&Mi2C7I1kOU{`$NBxfyW&x%Tx< z&|iP|KQ{x;KiA&<&$icJfA>E-1N!Ul{m;#S^Ut;S{$tzgufO}BodNyz_x|T*!1?Fe zd;hWR_1EA1&(47U`g{L#GvNGl?Y;ll_QU@52FxP#;D7(u8$gTGgT8;g0kv2?==|$H zfW_-U`CHr`e7>3OF>^i6T*fQsaeq(ada@Wj(4XNvG|&3$@BZgz!1?Fe*Ed0b{oViE z3^@N>d-p%vUVr`F|LhFtufO*{Hv`T;*WUY&ZLh!n?tgX$^w;0}pPK>apKI^^$F|pB zfA>E-1N!Ul{m;#S^Ut;S{$tw@`PUmTi_wGs{ak7P8zMfm%V@9+X>d& z+FcvJm-f^i?pr&bOQ+M%wXeUrKD$1;-n(AA9%x^MKmO)_wg>RXU;fYafd0>AFaKq; z#~*+5KidPh@UM5kY0ny5<6mb0Xx|$A$G^^i(B3upi+`N~qWx=d#J|pfQAQ0`{@?q~ z-!-TPb^ep`YM{@}IUeAF#RKy<0N(n4&$Mj~j&dIUIiANqhxO4M#~=UI1Ll8@Csy{g z#~=Uk4KVqCZ!hToz4;zxzWE;h_^%%D{Lk^k%D(pa<1hbZctHPWaGo>Yyv85@)dQaY zIi6VA*B*cT<-ZIM=>H7PbLN}Z_~XBN!1F)H6D#}L 128 - 64 + 256 @@ -22,7 +22,7 @@ 128 32 - 420 + 70 AttackIndicator.tga @@ -34,7 +34,79 @@ 128 32 - 420 + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 128 + 32 + + 70 @@ -48,9 +120,9 @@ 128 - 5 + 4 - 420 + 70 AttackIndicator.tga @@ -60,9 +132,81 @@ 128 - 5 + 4 - 420 + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 128 + 4 + + 70 @@ -76,9 +220,9 @@ 128 - 5 + 4 - 420 + 70 AttackIndicator.tga @@ -88,9 +232,81 @@ 128 - 5 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 128 + 4 - 420 + 70 @@ -103,10 +319,10 @@ 0 - 5 + 4 32 - 420 + 70 AttackIndicator.tga @@ -115,10 +331,82 @@ 32 - 5 + 4 32 - 420 + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 4 + 32 + + 70 @@ -131,10 +419,10 @@ 0 - 5 + 4 32 - 420 + 70 AttackIndicator.tga @@ -143,10 +431,82 @@ 32 - 5 + 4 32 - 420 + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 4 + 32 + + 70 @@ -162,7 +522,7 @@ 128 32 - 420 + 70 AttackIndicator.tga @@ -174,7 +534,79 @@ 128 32 - 420 + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 128 + 32 + + 70 @@ -184,7 +616,7 @@ false true 70 - 75 + 74 0 0 true @@ -198,7 +630,7 @@ A_AttackIndicatorBottom false true - 7 + 6 2 0 0 @@ -216,7 +648,7 @@ 70 2 0 - 5 + 4 true false true @@ -230,7 +662,7 @@ true 70 2 - 5 + 4 0 true false diff --git a/spinui_glass/EQUI_PlayerWindow1.xml b/spinui_glass/EQUI_PlayerWindow1.xml index b813e4c..54e209c 100644 --- a/spinui_glass/EQUI_PlayerWindow1.xml +++ b/spinui_glass/EQUI_PlayerWindow1.xml @@ -5,17 +5,17 @@ - + 128 - 64 + 256 true - AttackIndicatorHigh.tga + AttackIndicator.tga 0 0 @@ -24,10 +24,10 @@ 128 32 - 420 + 70 - AttackIndicatorHigh.tga + AttackIndicator.tga 0 32 @@ -36,126 +36,486 @@ 128 32 - 420 + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 128 + 32 + + 70 true - AttackIndicatorHigh.tga + AttackIndicator.tga 0 0 128 - 9 + 5 - 420 + 70 - AttackIndicatorHigh.tga + AttackIndicator.tga 0 32 128 - 9 + 5 + + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 128 + 5 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 128 + 5 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 128 + 5 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 128 + 5 - 420 + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 128 + 5 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 128 + 5 + + 70 true - AttackIndicatorHigh.tga + AttackIndicator.tga 0 0 128 - 9 + 5 - 420 + 70 - AttackIndicatorHigh.tga + AttackIndicator.tga 0 32 128 - 9 + 5 + + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 128 + 5 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 128 + 5 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 128 + 5 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 128 + 5 - 420 + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 128 + 5 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 128 + 5 + + 70 true - AttackIndicatorHigh.tga + AttackIndicator.tga 0 0 - 9 + 5 32 - 420 + 70 - AttackIndicatorHigh.tga + AttackIndicator.tga 0 32 - 9 + 5 32 - 420 + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 5 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 5 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 5 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 5 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 5 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 5 + 32 + + 70 true - AttackIndicatorHigh.tga + AttackIndicator.tga 0 0 - 9 + 5 32 - 420 + 70 - AttackIndicatorHigh.tga + AttackIndicator.tga 0 32 - 9 + 5 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 5 32 - 420 + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 5 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 5 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 5 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 5 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 5 + 32 + + 70 true - AttackIndicatorHigh.tga + AttackIndicator.tga 0 0 @@ -164,10 +524,10 @@ 128 32 - 420 + 70 - AttackIndicatorHigh.tga + AttackIndicator.tga 0 32 @@ -176,7 +536,79 @@ 128 32 - 420 + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 128 + 32 + + 70 @@ -185,8 +617,8 @@ A_AttackIndicatorTop false true - 70 - 79 + 51 + 56 0 0 true @@ -200,7 +632,7 @@ A_AttackIndicatorBottom false true - 11 + 7 2 0 0 @@ -215,10 +647,10 @@ A_AttackIndicatorLeft false true - 70 + 51 2 0 - 9 + 5 true false true @@ -230,9 +662,9 @@ A_AttackIndicatorRight false true - 70 + 51 2 - 9 + 5 0 true false @@ -248,7 +680,7 @@ true 0 true - 70 + 51 0 2 true @@ -1255,7 +1687,7 @@ false 2 2 - 72 + 53 2 false false @@ -1278,10 +1710,10 @@ true true true - 72 + 53 0 105 - 92 + 73 255 0 @@ -1297,10 +1729,10 @@ true false true - 110 + 91 0 0 - 200 + 181 255 0 @@ -1316,10 +1748,10 @@ true false true - 72 + 53 138 20 - 92 + 73 255 0 @@ -1368,7 +1800,7 @@ true false false - 70 + 51 2 -1 -1 @@ -1424,10 +1856,11 @@ 360 - 193 + 174 280 174 + 174 false false WDT_RoundedTransparentNoArrow diff --git a/spinui_glass/EQUI_PlayerWindow2.xml b/spinui_glass/EQUI_PlayerWindow2.xml index b9417c0..2012242 100644 --- a/spinui_glass/EQUI_PlayerWindow2.xml +++ b/spinui_glass/EQUI_PlayerWindow2.xml @@ -8,7 +8,7 @@ 128 - 64 + 256 @@ -24,7 +24,7 @@ 128 32 - 420 + 70 AttackIndicator.tga @@ -36,7 +36,79 @@ 128 32 - 420 + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 128 + 32 + + 70 @@ -50,9 +122,9 @@ 128 - 5 + 4 - 420 + 70 AttackIndicator.tga @@ -62,9 +134,81 @@ 128 - 5 + 4 - 420 + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 128 + 4 + + 70 @@ -78,9 +222,9 @@ 128 - 5 + 4 - 420 + 70 AttackIndicator.tga @@ -90,9 +234,81 @@ 128 - 5 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 128 + 4 - 420 + 70 @@ -105,10 +321,10 @@ 0 - 5 + 4 32 - 420 + 70 AttackIndicator.tga @@ -117,10 +333,82 @@ 32 - 5 + 4 32 - 420 + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 4 + 32 + + 70 @@ -133,10 +421,10 @@ 0 - 5 + 4 32 - 420 + 70 AttackIndicator.tga @@ -145,10 +433,82 @@ 32 - 5 + 4 32 - 420 + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 4 + 32 + + 70 @@ -164,7 +524,7 @@ 128 32 - 420 + 70 AttackIndicator.tga @@ -176,7 +536,79 @@ 128 32 - 420 + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 128 + 32 + + 70 @@ -186,7 +618,7 @@ false true 70 - 75 + 74 0 0 true @@ -200,7 +632,7 @@ A_AttackIndicatorBottom false true - 7 + 6 2 0 0 @@ -218,7 +650,7 @@ 70 2 0 - 5 + 4 true false true @@ -232,7 +664,7 @@ true 70 2 - 5 + 4 0 true false diff --git a/spinui_glass/EQUI_PlayerWindow3.xml b/spinui_glass/EQUI_PlayerWindow3.xml index b9417c0..2012242 100644 --- a/spinui_glass/EQUI_PlayerWindow3.xml +++ b/spinui_glass/EQUI_PlayerWindow3.xml @@ -8,7 +8,7 @@ 128 - 64 + 256 @@ -24,7 +24,7 @@ 128 32 - 420 + 70 AttackIndicator.tga @@ -36,7 +36,79 @@ 128 32 - 420 + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 128 + 32 + + 70 @@ -50,9 +122,9 @@ 128 - 5 + 4 - 420 + 70 AttackIndicator.tga @@ -62,9 +134,81 @@ 128 - 5 + 4 - 420 + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 128 + 4 + + 70 @@ -78,9 +222,9 @@ 128 - 5 + 4 - 420 + 70 AttackIndicator.tga @@ -90,9 +234,81 @@ 128 - 5 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 128 + 4 - 420 + 70 @@ -105,10 +321,10 @@ 0 - 5 + 4 32 - 420 + 70 AttackIndicator.tga @@ -117,10 +333,82 @@ 32 - 5 + 4 32 - 420 + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 4 + 32 + + 70 @@ -133,10 +421,10 @@ 0 - 5 + 4 32 - 420 + 70 AttackIndicator.tga @@ -145,10 +433,82 @@ 32 - 5 + 4 32 - 420 + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 4 + 32 + + 70 @@ -164,7 +524,7 @@ 128 32 - 420 + 70 AttackIndicator.tga @@ -176,7 +536,79 @@ 128 32 - 420 + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 128 + 32 + + 70 @@ -186,7 +618,7 @@ false true 70 - 75 + 74 0 0 true @@ -200,7 +632,7 @@ A_AttackIndicatorBottom false true - 7 + 6 2 0 0 @@ -218,7 +650,7 @@ 70 2 0 - 5 + 4 true false true @@ -232,7 +664,7 @@ true 70 2 - 5 + 4 0 true false diff --git a/spinui_glass/EQUI_PlayerWindow4.xml b/spinui_glass/EQUI_PlayerWindow4.xml index b9417c0..2012242 100644 --- a/spinui_glass/EQUI_PlayerWindow4.xml +++ b/spinui_glass/EQUI_PlayerWindow4.xml @@ -8,7 +8,7 @@ 128 - 64 + 256 @@ -24,7 +24,7 @@ 128 32 - 420 + 70 AttackIndicator.tga @@ -36,7 +36,79 @@ 128 32 - 420 + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 128 + 32 + + 70 @@ -50,9 +122,9 @@ 128 - 5 + 4 - 420 + 70 AttackIndicator.tga @@ -62,9 +134,81 @@ 128 - 5 + 4 - 420 + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 128 + 4 + + 70 @@ -78,9 +222,9 @@ 128 - 5 + 4 - 420 + 70 AttackIndicator.tga @@ -90,9 +234,81 @@ 128 - 5 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 128 + 4 - 420 + 70 @@ -105,10 +321,10 @@ 0 - 5 + 4 32 - 420 + 70 AttackIndicator.tga @@ -117,10 +333,82 @@ 32 - 5 + 4 32 - 420 + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 4 + 32 + + 70 @@ -133,10 +421,10 @@ 0 - 5 + 4 32 - 420 + 70 AttackIndicator.tga @@ -145,10 +433,82 @@ 32 - 5 + 4 32 - 420 + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 4 + 32 + + 70 @@ -164,7 +524,7 @@ 128 32 - 420 + 70 AttackIndicator.tga @@ -176,7 +536,79 @@ 128 32 - 420 + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 128 + 32 + + 70 @@ -186,7 +618,7 @@ false true 70 - 75 + 74 0 0 true @@ -200,7 +632,7 @@ A_AttackIndicatorBottom false true - 7 + 6 2 0 0 @@ -218,7 +650,7 @@ 70 2 0 - 5 + 4 true false true @@ -232,7 +664,7 @@ true 70 2 - 5 + 4 0 true false diff --git a/spinui_glass/EQUI_PlayerWindow5.xml b/spinui_glass/EQUI_PlayerWindow5.xml index b9417c0..2012242 100644 --- a/spinui_glass/EQUI_PlayerWindow5.xml +++ b/spinui_glass/EQUI_PlayerWindow5.xml @@ -8,7 +8,7 @@ 128 - 64 + 256 @@ -24,7 +24,7 @@ 128 32 - 420 + 70 AttackIndicator.tga @@ -36,7 +36,79 @@ 128 32 - 420 + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 128 + 32 + + 70 @@ -50,9 +122,9 @@ 128 - 5 + 4 - 420 + 70 AttackIndicator.tga @@ -62,9 +134,81 @@ 128 - 5 + 4 - 420 + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 128 + 4 + + 70 @@ -78,9 +222,9 @@ 128 - 5 + 4 - 420 + 70 AttackIndicator.tga @@ -90,9 +234,81 @@ 128 - 5 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 128 + 4 - 420 + 70 @@ -105,10 +321,10 @@ 0 - 5 + 4 32 - 420 + 70 AttackIndicator.tga @@ -117,10 +333,82 @@ 32 - 5 + 4 32 - 420 + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 4 + 32 + + 70 @@ -133,10 +421,10 @@ 0 - 5 + 4 32 - 420 + 70 AttackIndicator.tga @@ -145,10 +433,82 @@ 32 - 5 + 4 32 - 420 + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 4 + 32 + + 70 @@ -164,7 +524,7 @@ 128 32 - 420 + 70 AttackIndicator.tga @@ -176,7 +536,79 @@ 128 32 - 420 + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 128 + 32 + + 70 @@ -186,7 +618,7 @@ false true 70 - 75 + 74 0 0 true @@ -200,7 +632,7 @@ A_AttackIndicatorBottom false true - 7 + 6 2 0 0 @@ -218,7 +650,7 @@ 70 2 0 - 5 + 4 true false true @@ -232,7 +664,7 @@ true 70 2 - 5 + 4 0 true false diff --git a/spinui_glass/EQUI_PlayerWindow6.xml b/spinui_glass/EQUI_PlayerWindow6.xml index b9417c0..2012242 100644 --- a/spinui_glass/EQUI_PlayerWindow6.xml +++ b/spinui_glass/EQUI_PlayerWindow6.xml @@ -8,7 +8,7 @@ 128 - 64 + 256 @@ -24,7 +24,7 @@ 128 32 - 420 + 70 AttackIndicator.tga @@ -36,7 +36,79 @@ 128 32 - 420 + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 128 + 32 + + 70 @@ -50,9 +122,9 @@ 128 - 5 + 4 - 420 + 70 AttackIndicator.tga @@ -62,9 +134,81 @@ 128 - 5 + 4 - 420 + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 128 + 4 + + 70 @@ -78,9 +222,9 @@ 128 - 5 + 4 - 420 + 70 AttackIndicator.tga @@ -90,9 +234,81 @@ 128 - 5 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 128 + 4 - 420 + 70 @@ -105,10 +321,10 @@ 0 - 5 + 4 32 - 420 + 70 AttackIndicator.tga @@ -117,10 +333,82 @@ 32 - 5 + 4 32 - 420 + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 4 + 32 + + 70 @@ -133,10 +421,10 @@ 0 - 5 + 4 32 - 420 + 70 AttackIndicator.tga @@ -145,10 +433,82 @@ 32 - 5 + 4 32 - 420 + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 4 + 32 + + 70 @@ -164,7 +524,7 @@ 128 32 - 420 + 70 AttackIndicator.tga @@ -176,7 +536,79 @@ 128 32 - 420 + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 128 + 32 + + 70 @@ -186,7 +618,7 @@ false true 70 - 75 + 74 0 0 true @@ -200,7 +632,7 @@ A_AttackIndicatorBottom false true - 7 + 6 2 0 0 @@ -218,7 +650,7 @@ 70 2 0 - 5 + 4 true false true @@ -232,7 +664,7 @@ true 70 2 - 5 + 4 0 true false diff --git a/spinui_reloaded/AttackIndicator.tga b/spinui_reloaded/AttackIndicator.tga index f4e589a86711984cfebdcab6f848a899f197b0e8..c08529a8882425ff77e4b724e15e5a5b1de07e29 100644 GIT binary patch literal 131090 zcmeI*v5^!}5CqWy2{SMUvoHXg&YW}Om=R9-lhFor=0Z#*^3e_Ch%v;6lPPYv^**4h6o|NX{O!~Cap_CF*4 zviEP|+N4dofo`B1=mxrhZeYy~eB74Dd;hoI8h$Tu+CQIrc^1guV@*x-r&T;z{vK;; znm?`L$@2GDQ`7uu6;GDG$C{evPpf#c{5{sxG=EyfljZNRrl$GRDxNHVk2N*TpH}f? z`FpIXY5uf|C(GYsO-=KsRXkb#9&2ivKds`)^7mL%)BI@_PnN&OnwsWMt9Y{fJ=WBe z{L9|IiEEQK=?1!iZlD|J2D*VYH}LPaJl^y@v25o8r~UJ}muG?eJ=WATe_F+pVe@_gGWY{Am?W zmcPfEn&wZdc(VLG*3>kATE&y)@3E$)`O_+%EPszRHO-$^@nrdXtf^`Kw2CLo-(yWp z$-nIVo47Vq&&SX0ydX%$bFzsH)I=1;45viv>P)HHuu#gpalv8JZ^(<+`Ue~&da&7W5B zWchonscHVSiYLq8V@*x-r&T;z{vK;;nm?`L$@2GDQ`7uu6;GDG$C{evPpf#c{5{sx zl>E!yzlm#;Ht7bsfo`B1=mxrhH8*hofA8nNWkBB(%XThs+CQIrc^1guV@*x-r&T;z z{vK;;nm?`L$@2GDQ`7uu6;GDG$C{evPpf#c{5{sxG=EyfljZNRrl$GRDxNHVk2N*T zpH}f?`FpIXY5uf|C(GYsO-=KsRXkb#9&2ivKds`)^7mL%)BI@_PnN&OnwsWMt9Y{f zJ=WBe{L9|IiEEQK=?1!iZlD|J2D*VYH}G*=9&h@dShjP4)BgF~%dVe@_gGWY{Am?WmcPfEn&wZdc(VLG*3>kATE&y) z@3E$)UY-T=_gGWY{Am?W zmcPfEn&wZdc(VLG*3>kATE&y)@3E$)`O_+%EPszRHO-$^@nrdXtf^`Kw2CLo-(yWp z^QTojS^getYMMW-;>q&&SX0ydX%$bFzsH)I=1;45viv>P)HHuu#gpalv8JZ^(<+`U ze~&daCI7PbZ{pgdO}c?@pd080x`A$B%?*6rmdBgECzkD8;Iw}}_wp=|zsH)I=1;45 zviv>P)HHuu#gpalv8JZ^(<+`Ue~&da&7W5BWchonscHVSiYLq8V@*x-r&T;z{vK;; znm?`L$@2GDQ`7uu6;GDG$C{evPpf#c{5{sxG=EyfljZNRrl$GRDxNHVk2N*TpH}f? f`FpIXDfySZe-qaxZPE>N1KmJ3&<%70J8s}V0xCaj literal 32786 zcmeI(u?YfU42I!gWpRawh**g;SXf#)z*UwG;0)prPT~wsVQFn8RyL6o2ZwMIyswZ2 z@_fm~;*S_b_q)U{R^!b!a}m#+#VsdsemBuRnmFt&Mi2C7I1kOU{`$NBxfyW&x%Tx< z&|iP|KQ{x;KiA&<&$icJfA>E-1N!Ul{m;#S^Ut;S{$tzgufO}BodNyz_x|T*!1?Fe zd;hWR_1EA1&(47U`g{L#GvNGl?Y;ll_QU@52FxP#;D7(u8$gTGgT8;g0kv2?==|$H zfW_-U`CHr`e7>3OF>^i6T*fQsaeq(ada@Wj(4XNvG|&3$@BZgz!1?Fe*Ed0b{oViE z3^@N>d-p%vUVr`F|LhFtufO*{Hv`T;*WUY&ZLh!n?tgX$^w;0}pPK>apKI^^$F|pB zfA>E-1N!Ul{m;#S^Ut;S{$tw@`PUmTi_wGs{ak7P8zMfm%V@9+X>d& z+FcvJm-f^i?pr&bOQ+M%wXeUrKD$1;-n(AA9%x^MKmO)_wg>RXU;fYafd0>AFaKq; z#~*+5KidPh@UM5kY0ny5<6mb0Xx|$A$G^^i(B3upi+`N~qWx=d#J|pfQAQ0`{@?q~ z-!-TPb^ep`YM{@}IUeAF#RKy<0N(n4&$Mj~j&dIUIiANqhxO4M#~=UI1Ll8@Csy{g z#~=Uk4KVqCZ!hToz4;zxzWE;h_^%%D{Lk^k%D(pa<1hbZctHPWaGo>Yyv85@)dQaY zIi6VA*B*cT<-ZIM=>H7PbLN}Z_~XBN!1F)H6D#}L 128 - 64 + 256 @@ -22,7 +22,7 @@ 128 32 - 420 + 70 AttackIndicator.tga @@ -34,7 +34,79 @@ 128 32 - 420 + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 128 + 32 + + 70 @@ -48,9 +120,9 @@ 128 - 5 + 4 - 420 + 70 AttackIndicator.tga @@ -60,9 +132,81 @@ 128 - 5 + 4 - 420 + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 128 + 4 + + 70 @@ -76,9 +220,9 @@ 128 - 5 + 4 - 420 + 70 AttackIndicator.tga @@ -88,9 +232,81 @@ 128 - 5 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 128 + 4 - 420 + 70 @@ -103,10 +319,10 @@ 0 - 5 + 4 32 - 420 + 70 AttackIndicator.tga @@ -115,10 +331,82 @@ 32 - 5 + 4 32 - 420 + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 4 + 32 + + 70 @@ -131,10 +419,10 @@ 0 - 5 + 4 32 - 420 + 70 AttackIndicator.tga @@ -143,10 +431,82 @@ 32 - 5 + 4 32 - 420 + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 4 + 32 + + 70 @@ -162,7 +522,7 @@ 128 32 - 420 + 70 AttackIndicator.tga @@ -174,7 +534,79 @@ 128 32 - 420 + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 128 + 32 + + 70 @@ -184,7 +616,7 @@ false true 70 - 75 + 74 0 0 true @@ -198,7 +630,7 @@ A_AttackIndicatorBottom false true - 7 + 6 2 0 0 @@ -216,7 +648,7 @@ 70 2 0 - 5 + 4 true false true @@ -230,7 +662,7 @@ true 70 2 - 5 + 4 0 true false diff --git a/spinui_reloaded/EQUI_PlayerWindow1.xml b/spinui_reloaded/EQUI_PlayerWindow1.xml index 62b99f7..c62bc76 100644 --- a/spinui_reloaded/EQUI_PlayerWindow1.xml +++ b/spinui_reloaded/EQUI_PlayerWindow1.xml @@ -5,17 +5,17 @@ - + 128 - 64 + 256 true - AttackIndicatorHigh.tga + AttackIndicator.tga 0 0 @@ -24,10 +24,10 @@ 128 32 - 420 + 70 - AttackIndicatorHigh.tga + AttackIndicator.tga 0 32 @@ -36,126 +36,486 @@ 128 32 - 420 + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 128 + 32 + + 70 true - AttackIndicatorHigh.tga + AttackIndicator.tga 0 0 128 - 9 + 5 - 420 + 70 - AttackIndicatorHigh.tga + AttackIndicator.tga 0 32 128 - 9 + 5 + + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 128 + 5 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 128 + 5 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 128 + 5 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 128 + 5 - 420 + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 128 + 5 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 128 + 5 + + 70 true - AttackIndicatorHigh.tga + AttackIndicator.tga 0 0 128 - 9 + 5 - 420 + 70 - AttackIndicatorHigh.tga + AttackIndicator.tga 0 32 128 - 9 + 5 + + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 128 + 5 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 128 + 5 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 128 + 5 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 128 + 5 - 420 + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 128 + 5 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 128 + 5 + + 70 true - AttackIndicatorHigh.tga + AttackIndicator.tga 0 0 - 9 + 5 32 - 420 + 70 - AttackIndicatorHigh.tga + AttackIndicator.tga 0 32 - 9 + 5 32 - 420 + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 5 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 5 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 5 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 5 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 5 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 5 + 32 + + 70 true - AttackIndicatorHigh.tga + AttackIndicator.tga 0 0 - 9 + 5 32 - 420 + 70 - AttackIndicatorHigh.tga + AttackIndicator.tga 0 32 - 9 + 5 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 5 32 - 420 + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 5 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 5 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 5 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 5 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 5 + 32 + + 70 true - AttackIndicatorHigh.tga + AttackIndicator.tga 0 0 @@ -164,10 +524,10 @@ 128 32 - 420 + 70 - AttackIndicatorHigh.tga + AttackIndicator.tga 0 32 @@ -176,7 +536,79 @@ 128 32 - 420 + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 128 + 32 + + 70 @@ -185,8 +617,8 @@ A_AttackIndicatorTop false true - 70 - 79 + 51 + 56 0 0 true @@ -200,7 +632,7 @@ A_AttackIndicatorBottom false true - 11 + 7 2 0 0 @@ -215,10 +647,10 @@ A_AttackIndicatorLeft false true - 70 + 51 2 0 - 9 + 5 true false true @@ -230,9 +662,9 @@ A_AttackIndicatorRight false true - 70 + 51 2 - 9 + 5 0 true false @@ -248,7 +680,7 @@ true 0 true - 70 + 51 0 2 true @@ -1255,7 +1687,7 @@ false 2 2 - 72 + 53 2 false false @@ -1278,10 +1710,10 @@ true true true - 72 + 53 0 105 - 92 + 73 255 0 @@ -1297,10 +1729,10 @@ true false true - 110 + 91 0 0 - 200 + 181 255 0 @@ -1316,10 +1748,10 @@ true false true - 72 + 53 138 20 - 92 + 73 255 0 @@ -1368,7 +1800,7 @@ true false false - 70 + 51 2 -1 -1 @@ -1424,10 +1856,11 @@ 360 - 193 + 174 280 174 + 174 false false WDT_RoundedTransparentNoArrow diff --git a/spinui_reloaded/EQUI_PlayerWindow2.xml b/spinui_reloaded/EQUI_PlayerWindow2.xml index 7703497..72afab1 100644 --- a/spinui_reloaded/EQUI_PlayerWindow2.xml +++ b/spinui_reloaded/EQUI_PlayerWindow2.xml @@ -8,7 +8,7 @@ 128 - 64 + 256 @@ -24,7 +24,7 @@ 128 32 - 420 + 70 AttackIndicator.tga @@ -36,7 +36,79 @@ 128 32 - 420 + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 128 + 32 + + 70 @@ -50,9 +122,9 @@ 128 - 5 + 4 - 420 + 70 AttackIndicator.tga @@ -62,9 +134,81 @@ 128 - 5 + 4 - 420 + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 128 + 4 + + 70 @@ -78,9 +222,9 @@ 128 - 5 + 4 - 420 + 70 AttackIndicator.tga @@ -90,9 +234,81 @@ 128 - 5 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 128 + 4 - 420 + 70 @@ -105,10 +321,10 @@ 0 - 5 + 4 32 - 420 + 70 AttackIndicator.tga @@ -117,10 +333,82 @@ 32 - 5 + 4 32 - 420 + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 4 + 32 + + 70 @@ -133,10 +421,10 @@ 0 - 5 + 4 32 - 420 + 70 AttackIndicator.tga @@ -145,10 +433,82 @@ 32 - 5 + 4 32 - 420 + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 4 + 32 + + 70 @@ -164,7 +524,7 @@ 128 32 - 420 + 70 AttackIndicator.tga @@ -176,7 +536,79 @@ 128 32 - 420 + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 128 + 32 + + 70 @@ -186,7 +618,7 @@ false true 70 - 75 + 74 0 0 true @@ -200,7 +632,7 @@ A_AttackIndicatorBottom false true - 7 + 6 2 0 0 @@ -218,7 +650,7 @@ 70 2 0 - 5 + 4 true false true @@ -232,7 +664,7 @@ true 70 2 - 5 + 4 0 true false diff --git a/spinui_reloaded/EQUI_PlayerWindow3.xml b/spinui_reloaded/EQUI_PlayerWindow3.xml index 7703497..72afab1 100644 --- a/spinui_reloaded/EQUI_PlayerWindow3.xml +++ b/spinui_reloaded/EQUI_PlayerWindow3.xml @@ -8,7 +8,7 @@ 128 - 64 + 256 @@ -24,7 +24,7 @@ 128 32 - 420 + 70 AttackIndicator.tga @@ -36,7 +36,79 @@ 128 32 - 420 + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 128 + 32 + + 70 @@ -50,9 +122,9 @@ 128 - 5 + 4 - 420 + 70 AttackIndicator.tga @@ -62,9 +134,81 @@ 128 - 5 + 4 - 420 + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 128 + 4 + + 70 @@ -78,9 +222,9 @@ 128 - 5 + 4 - 420 + 70 AttackIndicator.tga @@ -90,9 +234,81 @@ 128 - 5 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 128 + 4 - 420 + 70 @@ -105,10 +321,10 @@ 0 - 5 + 4 32 - 420 + 70 AttackIndicator.tga @@ -117,10 +333,82 @@ 32 - 5 + 4 32 - 420 + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 4 + 32 + + 70 @@ -133,10 +421,10 @@ 0 - 5 + 4 32 - 420 + 70 AttackIndicator.tga @@ -145,10 +433,82 @@ 32 - 5 + 4 32 - 420 + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 4 + 32 + + 70 @@ -164,7 +524,7 @@ 128 32 - 420 + 70 AttackIndicator.tga @@ -176,7 +536,79 @@ 128 32 - 420 + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 128 + 32 + + 70 @@ -186,7 +618,7 @@ false true 70 - 75 + 74 0 0 true @@ -200,7 +632,7 @@ A_AttackIndicatorBottom false true - 7 + 6 2 0 0 @@ -218,7 +650,7 @@ 70 2 0 - 5 + 4 true false true @@ -232,7 +664,7 @@ true 70 2 - 5 + 4 0 true false diff --git a/spinui_reloaded/EQUI_PlayerWindow4.xml b/spinui_reloaded/EQUI_PlayerWindow4.xml index 7703497..72afab1 100644 --- a/spinui_reloaded/EQUI_PlayerWindow4.xml +++ b/spinui_reloaded/EQUI_PlayerWindow4.xml @@ -8,7 +8,7 @@ 128 - 64 + 256 @@ -24,7 +24,7 @@ 128 32 - 420 + 70 AttackIndicator.tga @@ -36,7 +36,79 @@ 128 32 - 420 + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 128 + 32 + + 70 @@ -50,9 +122,9 @@ 128 - 5 + 4 - 420 + 70 AttackIndicator.tga @@ -62,9 +134,81 @@ 128 - 5 + 4 - 420 + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 128 + 4 + + 70 @@ -78,9 +222,9 @@ 128 - 5 + 4 - 420 + 70 AttackIndicator.tga @@ -90,9 +234,81 @@ 128 - 5 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 128 + 4 - 420 + 70 @@ -105,10 +321,10 @@ 0 - 5 + 4 32 - 420 + 70 AttackIndicator.tga @@ -117,10 +333,82 @@ 32 - 5 + 4 32 - 420 + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 4 + 32 + + 70 @@ -133,10 +421,10 @@ 0 - 5 + 4 32 - 420 + 70 AttackIndicator.tga @@ -145,10 +433,82 @@ 32 - 5 + 4 32 - 420 + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 4 + 32 + + 70 @@ -164,7 +524,7 @@ 128 32 - 420 + 70 AttackIndicator.tga @@ -176,7 +536,79 @@ 128 32 - 420 + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 128 + 32 + + 70 @@ -186,7 +618,7 @@ false true 70 - 75 + 74 0 0 true @@ -200,7 +632,7 @@ A_AttackIndicatorBottom false true - 7 + 6 2 0 0 @@ -218,7 +650,7 @@ 70 2 0 - 5 + 4 true false true @@ -232,7 +664,7 @@ true 70 2 - 5 + 4 0 true false diff --git a/spinui_reloaded/EQUI_PlayerWindow5.xml b/spinui_reloaded/EQUI_PlayerWindow5.xml index 7703497..72afab1 100644 --- a/spinui_reloaded/EQUI_PlayerWindow5.xml +++ b/spinui_reloaded/EQUI_PlayerWindow5.xml @@ -8,7 +8,7 @@ 128 - 64 + 256 @@ -24,7 +24,7 @@ 128 32 - 420 + 70 AttackIndicator.tga @@ -36,7 +36,79 @@ 128 32 - 420 + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 128 + 32 + + 70 @@ -50,9 +122,9 @@ 128 - 5 + 4 - 420 + 70 AttackIndicator.tga @@ -62,9 +134,81 @@ 128 - 5 + 4 - 420 + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 128 + 4 + + 70 @@ -78,9 +222,9 @@ 128 - 5 + 4 - 420 + 70 AttackIndicator.tga @@ -90,9 +234,81 @@ 128 - 5 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 128 + 4 - 420 + 70 @@ -105,10 +321,10 @@ 0 - 5 + 4 32 - 420 + 70 AttackIndicator.tga @@ -117,10 +333,82 @@ 32 - 5 + 4 32 - 420 + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 4 + 32 + + 70 @@ -133,10 +421,10 @@ 0 - 5 + 4 32 - 420 + 70 AttackIndicator.tga @@ -145,10 +433,82 @@ 32 - 5 + 4 32 - 420 + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 4 + 32 + + 70 @@ -164,7 +524,7 @@ 128 32 - 420 + 70 AttackIndicator.tga @@ -176,7 +536,79 @@ 128 32 - 420 + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 128 + 32 + + 70 @@ -186,7 +618,7 @@ false true 70 - 75 + 74 0 0 true @@ -200,7 +632,7 @@ A_AttackIndicatorBottom false true - 7 + 6 2 0 0 @@ -218,7 +650,7 @@ 70 2 0 - 5 + 4 true false true @@ -232,7 +664,7 @@ true 70 2 - 5 + 4 0 true false diff --git a/spinui_reloaded/EQUI_PlayerWindow6.xml b/spinui_reloaded/EQUI_PlayerWindow6.xml index 7703497..72afab1 100644 --- a/spinui_reloaded/EQUI_PlayerWindow6.xml +++ b/spinui_reloaded/EQUI_PlayerWindow6.xml @@ -8,7 +8,7 @@ 128 - 64 + 256 @@ -24,7 +24,7 @@ 128 32 - 420 + 70 AttackIndicator.tga @@ -36,7 +36,79 @@ 128 32 - 420 + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 128 + 32 + + 70 @@ -50,9 +122,9 @@ 128 - 5 + 4 - 420 + 70 AttackIndicator.tga @@ -62,9 +134,81 @@ 128 - 5 + 4 - 420 + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 128 + 4 + + 70 @@ -78,9 +222,9 @@ 128 - 5 + 4 - 420 + 70 AttackIndicator.tga @@ -90,9 +234,81 @@ 128 - 5 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 128 + 4 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 128 + 4 - 420 + 70 @@ -105,10 +321,10 @@ 0 - 5 + 4 32 - 420 + 70 AttackIndicator.tga @@ -117,10 +333,82 @@ 32 - 5 + 4 32 - 420 + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 4 + 32 + + 70 @@ -133,10 +421,10 @@ 0 - 5 + 4 32 - 420 + 70 AttackIndicator.tga @@ -145,10 +433,82 @@ 32 - 5 + 4 32 - 420 + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 4 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 4 + 32 + + 70 @@ -164,7 +524,7 @@ 128 32 - 420 + 70 AttackIndicator.tga @@ -176,7 +536,79 @@ 128 32 - 420 + 70 + + + AttackIndicator.tga + + 0 + 64 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 96 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 128 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 160 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 192 + + + 128 + 32 + + 70 + + + AttackIndicator.tga + + 0 + 224 + + + 128 + 32 + + 70 @@ -186,7 +618,7 @@ false true 70 - 75 + 74 0 0 true @@ -200,7 +632,7 @@ A_AttackIndicatorBottom false true - 7 + 6 2 0 0 @@ -218,7 +650,7 @@ 70 2 0 - 5 + 4 true false true @@ -232,7 +664,7 @@ true 70 2 - 5 + 4 0 true false diff --git a/tools/audit_combat_ui.py b/tools/audit_combat_ui.py index 2aed521..f7a5975 100644 --- a/tools/audit_combat_ui.py +++ b/tools/audit_combat_ui.py @@ -13,16 +13,13 @@ # The effects-row grid is authored once in tools/restyle_combat.py; the audit # imports it so a geometry change can never pass by editing only one side. -from paint_attack_indicator import (ATTACK_BED, ATTACK_EDGE, ATTACK_FADE, - ATTACK_HALO, ATTACK_INNER, ATTACK_SOFT, - EDGE_WIDTH as ATTACK_EDGE_WIDTH, +from paint_attack_indicator import (EDGE_WIDTH as ATTACK_EDGE_WIDTH, FRAME_SIZE as ATTACK_FRAME_SIZE, - HIGH_ATTACK_BED, HIGH_ATTACK_RAIL, + FRAME_DURATION_MS, FRAME_ORIGINS, + FRAME_RAILS, HIGH_EDGE_WIDTH, - HIGH_PULSE_BED, HIGH_PULSE_RAIL, - PULSE_BED, PULSE_EDGE, PULSE_FADE, - PULSE_HALO, PULSE_INNER, PULSE_SOFT, - SIZE as ATTACK_INDICATOR_SIZE) + SIZE as ATTACK_INDICATOR_SIZE, + TRANSPARENT) from restyle_combat import (EFFECT_CHIP, EFFECT_ICON, EFFECT_NAME_WIDTH, EFFECT_NAME_X, EFFECT_PLATE_BLEED, EFFECT_ROW_WIDTH, EFFECT_TIMER_FONT, @@ -33,10 +30,13 @@ EXTENDED_TARGET_ROW_SIZE, EXTENDED_TARGET_TILE, EXTENDED_TARGET_WINDOW_SIZE, - ATTACK_HIGH_EDGE_WIDTH, ATTACK_HIGH_TEXTURE, + ATTACK_FRAME_ORIGINS, ATTACK_HIGH_EDGE_WIDTH, + ATTACK_HIGH_TEXTURE, ATTACK_PULSE_FRAME_COUNT, ATTACK_PULSE_MS, PLAYER_HIGH_VISIBILITY_MENU_NAME, - PLAYER_HIGH_VISIBILITY_VARIANT, PLAYER_MIN_SIZE, - TARGET_MIN_SIZE, + PLAYER_HIGH_VISIBILITY_SIZE, + PLAYER_HIGH_VISIBILITY_SUBWINDOW_TOP, + PLAYER_HIGH_VISIBILITY_VARIANT, + PLAYER_MIN_SIZE, TARGET_MIN_SIZE, SPELL_LEDGER_EQTYPES, SPELL_LEDGER_ICON_SIZE, SPELL_LEDGER_MENU_NAME, SPELL_LEDGER_ROW_SIZE, SPELL_LEDGER_VARIANT, SPELL_LEDGER_WINDOW_BOUNDS, @@ -154,30 +154,29 @@ def audit_player_and_target() -> None: "AttackIndicator.tga size changed: " f"{attack_texture.size} != {ATTACK_INDICATOR_SIZE}" ) + if (ATTACK_FRAME_ORIGINS != FRAME_ORIGINS or + ATTACK_PULSE_FRAME_COUNT != len(FRAME_RAILS) or + ATTACK_PULSE_MS != FRAME_DURATION_MS): + fail("attack texture and XML pulse definitions disagree") attack_pixels = attack_texture.load() - attack_samples = { - "horizontal outer edge": (64, 0, ATTACK_EDGE), - "horizontal inner glow": (64, 1, ATTACK_INNER), - "horizontal soft halo": (64, 2, ATTACK_HALO), - "horizontal deep glow": (64, 3, ATTACK_SOFT), - "horizontal fade": (64, 4, ATTACK_FADE), - "vertical outer edge": (0, 16, ATTACK_EDGE), - "vertical inner glow": (1, 16, ATTACK_INNER), - "vertical soft halo": (2, 16, ATTACK_HALO), - "vertical deep glow": (3, 16, ATTACK_SOFT), - "vertical fade": (4, 16, ATTACK_FADE), - "hot combat wash": (64, 16, ATTACK_BED), - "pulse outer edge": (64, 32, PULSE_EDGE), - "pulse inner glow": (64, 33, PULSE_INNER), - "pulse soft halo": (64, 34, PULSE_HALO), - "pulse deep glow": (64, 35, PULSE_SOFT), - "pulse fade": (64, 36, PULSE_FADE), - "pulse combat wash": (64, 48, PULSE_BED), - } - for label, (x, y, expected) in attack_samples.items(): - actual = attack_pixels[x, y] - if actual != expected: - fail(f"auto-attack {label} changed: {actual} != {expected}") + for index, (origin, rail) in enumerate(zip(FRAME_ORIGINS, FRAME_RAILS)): + samples = { + "horizontal outer rail": (64, origin), + "horizontal inner rail": ( + 64, origin + ATTACK_EDGE_WIDTH - 1), + "vertical outer rail": (0, origin + 16), + "vertical inner rail": ( + ATTACK_EDGE_WIDTH - 1, origin + 16), + } + for label, (x, y) in samples.items(): + actual = attack_pixels[x, y] + if actual != rail: + fail( + f"auto-attack frame {index} {label} changed: " + f"{actual} != {rail}" + ) + if attack_pixels[64, origin + 16] != TRANSPARENT: + fail(f"auto-attack frame {index} paints over player information") for name, expected in ( ("A_AttackIndicator", ATTACK_FRAME_SIZE), @@ -192,10 +191,10 @@ def audit_player_and_target() -> None: origins = [child_int(frame, "Location/Y") for frame in frames] durations = [child_int(frame, "Duration") for frame in frames] if (child_text(animation, "Cycle") != "true" - or sizes != [expected, expected] - or origins != [0, ATTACK_FRAME_SIZE[1]] - or durations != [ATTACK_PULSE_MS, ATTACK_PULSE_MS]): - fail(f"{name} lost its visible five-layer combat glow") + or sizes != [expected] * ATTACK_PULSE_FRAME_COUNT + or origins != list(ATTACK_FRAME_ORIGINS) + or durations != [ATTACK_PULSE_MS] * ATTACK_PULSE_FRAME_COUNT): + fail(f"{name} lost its smooth outline-only combat pulse") attack_geometry = { "A_AttackIndicatorAnimTop": (70, 70 + ATTACK_EDGE_WIDTH, 0, 0), "A_AttackIndicatorAnimBottom": (2 + ATTACK_EDGE_WIDTH, 2, 0, 0), @@ -1053,6 +1052,11 @@ def audit_high_visibility_player_variant() -> None: """Prove Alternate 1 is opt-in, vivid, and binding-identical.""" if ATTACK_HIGH_EDGE_WIDTH != HIGH_EDGE_WIDTH: fail("high-visibility texture and XML edge widths disagree") + if ATTACK_HIGH_TEXTURE != "AttackIndicator.tga": + fail("high-visibility frame must use the client's stock texture name") + retired_texture = SKIN / "AttackIndicatorHigh.tga" + if retired_texture.exists(): + fail("retired secondary attack texture is still shipped") def gameplay_bindings(path: Path): return { @@ -1069,8 +1073,11 @@ def gameplay_bindings(path: Path): window = item(root, "Screen", "PlayerWindow") if child_text(window, "MenuName") != PLAYER_HIGH_VISIBILITY_MENU_NAME: fail("high-visibility player variant is not named in Display Types") - if dimensions(window) != (360, 193): + if dimensions(window) != PLAYER_HIGH_VISIBILITY_SIZE: fail("high-visibility player variant changed the compact footprint") + if (child_int(window, "MinVSize") != PLAYER_HIGH_VISIBILITY_SIZE[1] or + child_int(window, "MaxVSize") != PLAYER_HIGH_VISIBILITY_SIZE[1]): + fail("high-visibility player variant can reopen at the tall size") texture_info = item(root, "TextureInfo", ATTACK_HIGH_TEXTURE) if dimensions(texture_info) != ATTACK_INDICATOR_SIZE: @@ -1079,20 +1086,18 @@ def gameplay_bindings(path: Path): if texture.size != ATTACK_INDICATOR_SIZE: fail("high-visibility attack texture size changed") pixels = texture.load() - samples = { - "hot horizontal outer rail": (64, 0, HIGH_ATTACK_RAIL[0]), - "hot horizontal inner rail": (64, 8, HIGH_ATTACK_RAIL[8]), - "hot vertical outer rail": (0, 16, HIGH_ATTACK_RAIL[0]), - "hot vertical inner rail": (8, 16, HIGH_ATTACK_RAIL[8]), - "hot red wash": (64, 16, HIGH_ATTACK_BED), - "pulse horizontal outer rail": (64, 32, HIGH_PULSE_RAIL[0]), - "pulse horizontal inner rail": (64, 40, HIGH_PULSE_RAIL[8]), - "pulse red wash": (64, 48, HIGH_PULSE_BED), - } - for label, (x, y, expected) in samples.items(): - actual = pixels[x, y] - if actual != expected: - fail(f"high-visibility {label} changed: {actual} != {expected}") + for index, (origin, rail) in enumerate(zip(FRAME_ORIGINS, FRAME_RAILS)): + samples = ( + (64, origin), + (64, origin + ATTACK_HIGH_EDGE_WIDTH - 1), + (0, origin + 16), + (ATTACK_HIGH_EDGE_WIDTH - 1, origin + 16), + ) + for x, y in samples: + if pixels[x, y] != rail: + fail(f"high-visibility frame {index} pure-red rail changed") + if pixels[64, origin + 16] != TRANSPARENT: + fail(f"high-visibility frame {index} is no longer outline-only") animation_sizes = { "A_AttackIndicator": ATTACK_FRAME_SIZE, @@ -1109,30 +1114,37 @@ def gameplay_bindings(path: Path): for name, expected in animation_sizes.items(): animation = item(root, "Ui2DAnimation", name) frames = animation.findall("Frames") - if len(frames) != 2: - fail(f"high-visibility {name} must retain two pulse frames") + if len(frames) != ATTACK_PULSE_FRAME_COUNT: + fail( + f"high-visibility {name} must retain " + f"{ATTACK_PULSE_FRAME_COUNT} pulse frames" + ) if any(child_text(frame, "Texture") != ATTACK_HIGH_TEXTURE for frame in frames): fail(f"high-visibility {name} does not use the pure-red texture") if [dimensions_at(frame, "Size") for frame in frames] != [ - expected, expected]: + expected] * ATTACK_PULSE_FRAME_COUNT: fail(f"high-visibility {name} geometry changed") - if [child_int(frame, "Location/Y") for frame in frames] != [ - 0, ATTACK_FRAME_SIZE[1]]: + if [child_int(frame, "Location/Y") for frame in frames] != list( + ATTACK_FRAME_ORIGINS): fail(f"high-visibility {name} pulse origins changed") if [child_int(frame, "Duration") for frame in frames] != [ - ATTACK_PULSE_MS, ATTACK_PULSE_MS]: + ATTACK_PULSE_MS] * ATTACK_PULSE_FRAME_COUNT: fail(f"high-visibility {name} pulse timing changed") geometry = { "A_AttackIndicatorAnimTop": ( - 70, 70 + ATTACK_HIGH_EDGE_WIDTH, 0, 0), + PLAYER_HIGH_VISIBILITY_SUBWINDOW_TOP, + PLAYER_HIGH_VISIBILITY_SUBWINDOW_TOP + ATTACK_HIGH_EDGE_WIDTH, + 0, 0), "A_AttackIndicatorAnimBottom": ( 2 + ATTACK_HIGH_EDGE_WIDTH, 2, 0, 0), "A_AttackIndicatorAnimLeft": ( - 70, 2, 0, ATTACK_HIGH_EDGE_WIDTH), + PLAYER_HIGH_VISIBILITY_SUBWINDOW_TOP, + 2, 0, ATTACK_HIGH_EDGE_WIDTH), "A_AttackIndicatorAnimRight": ( - 70, 2, ATTACK_HIGH_EDGE_WIDTH, 0), + PLAYER_HIGH_VISIBILITY_SUBWINDOW_TOP, + 2, ATTACK_HIGH_EDGE_WIDTH, 0), } for name, expected in geometry.items(): node = item(root, "StaticAnimation", name) @@ -1144,8 +1156,30 @@ def gameplay_bindings(path: Path): fail(f"high-visibility {name} lost native attack-state control") fill = item(root, "StaticAnimation", "A_AttackIndicatorAnimFill") if (child_text(fill, "AutoDraw") != "false" or - child_text(fill, "Animation") != "A_AttackIndicatorFill"): - fail("high-visibility red wash lost native attack-state control") + child_text(fill, "Animation") != "A_AttackIndicatorFill" or + child_int(fill, "TopAnchorOffset") != + PLAYER_HIGH_VISIBILITY_SUBWINDOW_TOP): + fail("high-visibility outline overlay lost native attack-state control") + + subwindow = item(root, "Screen", "PlayerSubWindow") + buffs = item(root, "Screen", "PW_BuffWindow") + if child_int(subwindow, "TopAnchorOffset") != \ + PLAYER_HIGH_VISIBILITY_SUBWINDOW_TOP: + fail("high-visibility command frame did not retain its content height") + if child_int(buffs, "BottomAnchorOffset") != \ + PLAYER_HIGH_VISIBILITY_SUBWINDOW_TOP + 2: + fail("high-visibility compact buff lane overlaps the command frame") + for name, expected in ( + ("PW_DragBox", (53, 73)), + ("PW_DragBox2", (91, 181)), + ("PWDragBox3", (53, 73))): + drag = item(root, "DragBox", name) + actual = ( + child_int(drag, "TopAnchorOffset"), + child_int(drag, "BottomAnchorOffset"), + ) + if actual != expected: + fail(f"high-visibility {name} drag geometry changed: {actual}") def audit_variant_safety() -> None: diff --git a/tools/paint_attack_indicator.py b/tools/paint_attack_indicator.py index 26af2be..000644b 100644 --- a/tools/paint_attack_indicator.py +++ b/tools/paint_attack_indicator.py @@ -1,22 +1,16 @@ #!/usr/bin/env python3 -"""Paint SpinUI's native auto-attack indicators. +"""Paint SpinUI's native auto-attack outline. EverQuest owns the visibility of the four ``A_AttackIndicatorAnim*`` pieces -in ``EQUI_PlayerWindow.xml``. They are hidden while auto-attack is off and -shown while it is on, so the texture is a reliable client-state indicator and +in ``EQUI_PlayerWindow.xml``. They are hidden while auto-attack is off and +shown while it is on, so the indicator follows the client state directly and does not need log parsing or combat heuristics. -The texture contains two stacked 128x32 states. EverQuest cycles between a -white-hot scarlet rail and a deep crimson rail, giving the complete command -frame a deliberate pulse that remains obvious over both Reloaded's brown -chrome and Glass's midnight chrome. The remaining texture provides a pulsing -translucent wash without obscuring health, mana, endurance, experience, or AA -information. - -``AttackIndicatorHigh.tga`` is the opt-in Alternate 1 treatment. It retains -the same native visibility hook but uses a solid, nine-pixel pure-red perimeter -and a stronger red wash. This is intentionally unmistakable for players who -prefer certainty over subtlety; the canonical default remains unchanged. +The stock-named ``AttackIndicator.tga`` contains eight stacked 128x32 frames. +Each frame has a pure-red outline and a completely transparent interior. The +alpha sequence produces the quick, smooth flash used by modern unit frames: +bright -> dim -> bright in 560 ms. The canonical player frame samples four +pixels of the rail; the High-Visibility alternate samples five. Run from the repository root: python tools/paint_attack_indicator.py @@ -31,107 +25,36 @@ REPO = Path(__file__).resolve().parent.parent OUTPUT = REPO / "spinui_reloaded" / "AttackIndicator.tga" -HIGH_OUTPUT = REPO / "spinui_reloaded" / "AttackIndicatorHigh.tga" FRAME_SIZE = (128, 32) -SIZE = (128, 64) -EDGE_WIDTH = 5 -HIGH_EDGE_WIDTH = 9 - -ATTACK_EDGE = (255, 250, 244, 255) -ATTACK_INNER = (255, 96, 82, 255) -ATTACK_HALO = (255, 8, 34, 255) -ATTACK_SOFT = (236, 0, 26, 255) -ATTACK_FADE = (196, 0, 22, 242) -ATTACK_BED = (148, 0, 18, 108) -ATTACK_RAIL = ( - ATTACK_EDGE, - ATTACK_INNER, - ATTACK_HALO, - ATTACK_SOFT, - ATTACK_FADE, -) -PULSE_EDGE = (255, 56, 52, 255) -PULSE_INNER = (226, 0, 24, 255) -PULSE_HALO = (178, 0, 20, 255) -PULSE_SOFT = (126, 0, 16, 242) -PULSE_FADE = (82, 0, 12, 218) -PULSE_BED = (88, 0, 12, 70) -PULSE_RAIL = ( - PULSE_EDGE, - PULSE_INNER, - PULSE_HALO, - PULSE_SOFT, - PULSE_FADE, -) - -HIGH_ATTACK_RED = (255, 0, 0, 255) -HIGH_ATTACK_RAIL = ( - HIGH_ATTACK_RED, - HIGH_ATTACK_RED, - HIGH_ATTACK_RED, - HIGH_ATTACK_RED, - HIGH_ATTACK_RED, - (255, 0, 0, 245), - (255, 0, 0, 225), - (255, 0, 0, 200), - (255, 0, 0, 170), -) -HIGH_PULSE_RAIL = ( - HIGH_ATTACK_RED, - HIGH_ATTACK_RED, - (255, 28, 28, 255), - HIGH_ATTACK_RED, - (255, 0, 0, 245), - (255, 0, 0, 225), - (255, 0, 0, 200), - (255, 0, 0, 175), - (255, 0, 0, 145), -) -HIGH_ATTACK_BED = (255, 0, 0, 112) -HIGH_PULSE_BED = (255, 0, 0, 54) +FRAME_ALPHAS = (255, 230, 190, 140, 72, 140, 190, 230) +FRAME_ORIGINS = tuple(index * FRAME_SIZE[1] + for index in range(len(FRAME_ALPHAS))) +FRAME_DURATION_MS = 70 +SIZE = (FRAME_SIZE[0], FRAME_SIZE[1] * len(FRAME_ALPHAS)) +EDGE_WIDTH = 4 +HIGH_EDGE_WIDTH = 5 +TRANSPARENT = (0, 0, 0, 0) +FRAME_RAILS = tuple((255, 0, 0, alpha) for alpha in FRAME_ALPHAS) def render() -> Image.Image: - image = Image.new("RGBA", SIZE, (0, 0, 0, 0)) - pixels = image.load() - width, frame_height = FRAME_SIZE - for frame, (rail, bed) in enumerate(( - (ATTACK_RAIL, ATTACK_BED), - (PULSE_RAIL, PULSE_BED))): - origin_y = frame * frame_height - for y in range(frame_height): - for x in range(width): - distance = min(x, y) - pixels[x, origin_y + y] = ( - rail[distance] if distance < EDGE_WIDTH else bed - ) - return image - - -def render_high_visibility() -> Image.Image: - image = Image.new("RGBA", SIZE, (0, 0, 0, 0)) + image = Image.new("RGBA", SIZE, TRANSPARENT) pixels = image.load() width, frame_height = FRAME_SIZE - for frame, (rail, bed) in enumerate(( - (HIGH_ATTACK_RAIL, HIGH_ATTACK_BED), - (HIGH_PULSE_RAIL, HIGH_PULSE_BED))): - origin_y = frame * frame_height + for origin_y, rail in zip(FRAME_ORIGINS, FRAME_RAILS): for y in range(frame_height): for x in range(width): - distance = min(x, y) - pixels[x, origin_y + y] = ( - rail[distance] if distance < HIGH_EDGE_WIDTH else bed - ) + if min(x, y) < HIGH_EDGE_WIDTH: + pixels[x, origin_y + y] = rail return image def main() -> int: OUTPUT.parent.mkdir(parents=True, exist_ok=True) save_tga(render(), OUTPUT) - save_tga(render_high_visibility(), HIGH_OUTPUT) print( - "Native auto-attack indicators painted: subtle five-layer default + " - "opt-in nine-pixel pure-red high-visibility alternate" + "AttackIndicator.tga: eight-frame pure-red outline pulse painted | " + "transparent interior | 560 ms cycle" ) return 0 diff --git a/tools/restyle_combat.py b/tools/restyle_combat.py index 3ce27c5..3e006c7 100644 --- a/tools/restyle_combat.py +++ b/tools/restyle_combat.py @@ -64,14 +64,21 @@ # so users may resize them without clipping the command rows. PLAYER_MIN_SIZE = (280, 174) TARGET_MIN_SIZE = (260, 174) -ATTACK_EDGE_WIDTH = 5 +ATTACK_EDGE_WIDTH = 4 ATTACK_FRAME_SIZE = (128, 32) -ATTACK_TEXTURE_SIZE = (128, 64) -ATTACK_PULSE_MS = 420 -ATTACK_HIGH_EDGE_WIDTH = 9 -ATTACK_HIGH_TEXTURE = "AttackIndicatorHigh.tga" +ATTACK_PULSE_FRAME_COUNT = 8 +ATTACK_FRAME_ORIGINS = tuple( + index * ATTACK_FRAME_SIZE[1] for index in range(ATTACK_PULSE_FRAME_COUNT) +) +ATTACK_TEXTURE_SIZE = ( + ATTACK_FRAME_SIZE[0], ATTACK_FRAME_SIZE[1] * ATTACK_PULSE_FRAME_COUNT) +ATTACK_PULSE_MS = 70 +ATTACK_HIGH_EDGE_WIDTH = 5 +ATTACK_HIGH_TEXTURE = "AttackIndicator.tga" PLAYER_HIGH_VISIBILITY_VARIANT = "EQUI_PlayerWindow1.xml" PLAYER_HIGH_VISIBILITY_MENU_NAME = "High-Visibility Attack Frame" +PLAYER_HIGH_VISIBILITY_SIZE = (360, 174) +PLAYER_HIGH_VISIBILITY_SUBWINDOW_TOP = 51 # Older SpinUI releases exposed a large collection of visual variants. Most of # those files predate the July Legends schema and can lose live controls when a @@ -481,8 +488,8 @@ def frame(origin_y: int) -> str: if cycle_end < 0: fail("attack animation has no Cycle element") cycle_end += len(cycle_marker) - return (block[:cycle_end] + frame(0) + frame(ATTACK_FRAME_SIZE[1]) - + block[cycle_end:]) + frames = "".join(frame(origin) for origin in ATTACK_FRAME_ORIGINS) + return block[:cycle_end] + frames + block[cycle_end:] for name, size in attack_animations.items(): text = change_item( @@ -1305,7 +1312,6 @@ def sync_canonical_variants() -> None: def style_high_visibility_player_variant() -> None: """Expose Alternate 1 as a binding-safe, unmistakable attack frame.""" source = (SKIN / "EQUI_PlayerWindow.xml").read_text(encoding="ascii") - source = source.replace("AttackIndicator.tga", ATTACK_HIGH_TEXTURE) source, count = re.subn( r"(]*/>)", (r"\g<1>\n\n\t