From 943f6cc26cd4869b47a1960f4f9ca2acdbc3f5d9 Mon Sep 17 00:00:00 2001 From: itsspin Date: Sun, 9 Aug 2026 13:15:28 -0500 Subject: [PATCH 1/2] Use native attack outline on player frames --- README.md | 2 +- spinui_glass/AttackIndicator.tga | Bin 131090 -> 16402 bytes spinui_glass/EQUI_PlayerWindow.xml | 563 +----------------------- spinui_glass/EQUI_PlayerWindow1.xml | 577 ++----------------------- spinui_glass/EQUI_PlayerWindow2.xml | 563 +----------------------- spinui_glass/EQUI_PlayerWindow3.xml | 563 +----------------------- spinui_glass/EQUI_PlayerWindow4.xml | 563 +----------------------- spinui_glass/EQUI_PlayerWindow5.xml | 563 +----------------------- spinui_glass/EQUI_PlayerWindow6.xml | 563 +----------------------- spinui_reloaded/AttackIndicator.tga | Bin 131090 -> 16402 bytes spinui_reloaded/EQUI_PlayerWindow.xml | 563 +----------------------- spinui_reloaded/EQUI_PlayerWindow1.xml | 577 ++----------------------- spinui_reloaded/EQUI_PlayerWindow2.xml | 563 +----------------------- spinui_reloaded/EQUI_PlayerWindow3.xml | 563 +----------------------- spinui_reloaded/EQUI_PlayerWindow4.xml | 563 +----------------------- spinui_reloaded/EQUI_PlayerWindow5.xml | 563 +----------------------- spinui_reloaded/EQUI_PlayerWindow6.xml | 563 +----------------------- tools/audit_combat_ui.py | 223 ++-------- tools/paint_attack_indicator.py | 43 +- tools/restyle_combat.py | 207 +++------ 20 files changed, 393 insertions(+), 7992 deletions(-) diff --git a/README.md b/README.md index 725a04a..349eaba 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 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. +- **Attack state is unmistakable.** Both themes place a thick, outline-only pure-red rail directly around the normal player command frame. EverQuest's native auto-attack state controls its flashing, the interior remains completely untouched, and every PlayerWindow display type retains the full working bar. - **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 c08529a8882425ff77e4b724e15e5a5b1de07e29..daa67167f60c2f61d6871cf9363c318c9576d4da 100644 GIT binary patch delta 67 pcmbQ#z%i+TQHX(oi2(*07!(*3IJV1uWBkIoUGE#?6TIXM764&b7B~O^ 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 diff --git a/spinui_glass/EQUI_PlayerWindow.xml b/spinui_glass/EQUI_PlayerWindow.xml index 0f7d8c1..7affc04 100644 --- a/spinui_glass/EQUI_PlayerWindow.xml +++ b/spinui_glass/EQUI_PlayerWindow.xml @@ -6,12 +6,12 @@ 128 - 256 + 32 - true + false AttackIndicator.tga @@ -22,96 +22,11 @@ 128 32 - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 128 - 32 - - 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 + false AttackIndicator.tga @@ -120,98 +35,13 @@ 128 - 4 - - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 128 - 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 + 5 - 70 - - - AttackIndicator.tga - - 0 - 192 - - - 128 - 4 - - 70 - - - AttackIndicator.tga - - 0 - 224 - - - 128 - 4 - - 70 - true + false AttackIndicator.tga @@ -220,98 +50,13 @@ 128 - 4 - - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 128 - 4 - - 70 - - - AttackIndicator.tga - - 0 - 64 - - - 128 - 4 - - 70 - - - AttackIndicator.tga - - 0 - 96 - - - 128 - 4 + 5 - 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 - true + false AttackIndicator.tga @@ -319,99 +64,14 @@ 0 - 4 - 32 - - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 4 + 5 32 - 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 - true + false AttackIndicator.tga @@ -419,99 +79,14 @@ 0 - 4 - 32 - - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 4 - 32 - - 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 + 5 32 - 70 - true + false AttackIndicator.tga @@ -522,91 +97,6 @@ 128 32 - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 128 - 32 - - 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 @@ -616,7 +106,7 @@ false true 70 - 74 + 75 0 0 true @@ -630,7 +120,7 @@ A_AttackIndicatorBottom false true - 6 + 7 2 0 0 @@ -648,7 +138,7 @@ 70 2 0 - 4 + 5 true false true @@ -662,7 +152,7 @@ true 70 2 - 4 + 5 0 true false @@ -670,21 +160,8 @@ false - + A_AttackIndicatorAnimFill - A_AttackIndicatorFill - true - false - true - 0 - true - 70 - 0 - 2 - true - false - true - false @@ -1876,15 +1353,15 @@ -9 Screen:PlayerSubWindow + DragBox:PW_DragBox + DragBox:PW_DragBox2 + DragBox:PWDragBox3 + PW_BuffWindow A_AttackIndicatorAnimTop A_AttackIndicatorAnimBottom A_AttackIndicatorAnimLeft A_AttackIndicatorAnimRight A_AttackIndicatorAnimFill - DragBox:PW_DragBox - DragBox:PW_DragBox2 - DragBox:PWDragBox3 - PW_BuffWindow diff --git a/spinui_glass/EQUI_PlayerWindow1.xml b/spinui_glass/EQUI_PlayerWindow1.xml index 54e209c..86e728c 100644 --- a/spinui_glass/EQUI_PlayerWindow1.xml +++ b/spinui_glass/EQUI_PlayerWindow1.xml @@ -2,18 +2,18 @@ - + 128 - 256 + 32 - true + false AttackIndicator.tga @@ -24,96 +24,11 @@ 128 32 - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 128 - 32 - - 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 + false AttackIndicator.tga @@ -124,96 +39,11 @@ 128 5 - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 128 - 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 - - 70 - - - AttackIndicator.tga - - 0 - 192 - - - 128 - 5 - - 70 - - - AttackIndicator.tga - - 0 - 224 - - - 128 - 5 - - 70 - true + false AttackIndicator.tga @@ -224,96 +54,11 @@ 128 5 - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 128 - 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 - - 70 - - - AttackIndicator.tga - - 0 - 192 - - - 128 - 5 - - 70 - - - AttackIndicator.tga - - 0 - 224 - - - 128 - 5 - - 70 - true + false AttackIndicator.tga @@ -324,96 +69,11 @@ 5 32 - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 5 - 32 - - 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 + false AttackIndicator.tga @@ -424,96 +84,11 @@ 5 32 - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 5 - 32 - - 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 + false AttackIndicator.tga @@ -524,91 +99,6 @@ 128 32 - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 128 - 32 - - 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 @@ -617,8 +107,8 @@ A_AttackIndicatorTop false true - 51 - 56 + 70 + 75 0 0 true @@ -647,7 +137,7 @@ A_AttackIndicatorLeft false true - 51 + 70 2 0 5 @@ -662,7 +152,7 @@ A_AttackIndicatorRight false true - 51 + 70 2 5 0 @@ -672,21 +162,8 @@ false - + A_AttackIndicatorAnimFill - A_AttackIndicatorFill - true - false - true - 0 - true - 51 - 0 - 2 - true - false - true - false @@ -1687,7 +1164,7 @@ false 2 2 - 53 + 72 2 false false @@ -1710,10 +1187,10 @@ true true true - 53 + 72 0 105 - 73 + 92 255 0 @@ -1729,10 +1206,10 @@ true false true - 91 + 110 0 0 - 181 + 200 255 0 @@ -1748,10 +1225,10 @@ true false true - 53 + 72 138 20 - 73 + 92 255 0 @@ -1800,7 +1277,7 @@ true false false - 51 + 70 2 -1 -1 @@ -1849,18 +1326,16 @@ false - High-Visibility Attack Frame 3 0 360 - 174 + 193 280 174 - 174 false false WDT_RoundedTransparentNoArrow @@ -1879,15 +1354,15 @@ -9 Screen:PlayerSubWindow + DragBox:PW_DragBox + DragBox:PW_DragBox2 + DragBox:PWDragBox3 + PW_BuffWindow A_AttackIndicatorAnimTop A_AttackIndicatorAnimBottom A_AttackIndicatorAnimLeft A_AttackIndicatorAnimRight A_AttackIndicatorAnimFill - DragBox:PW_DragBox - DragBox:PW_DragBox2 - DragBox:PWDragBox3 - PW_BuffWindow diff --git a/spinui_glass/EQUI_PlayerWindow2.xml b/spinui_glass/EQUI_PlayerWindow2.xml index 2012242..86e728c 100644 --- a/spinui_glass/EQUI_PlayerWindow2.xml +++ b/spinui_glass/EQUI_PlayerWindow2.xml @@ -8,12 +8,12 @@ 128 - 256 + 32 - true + false AttackIndicator.tga @@ -24,96 +24,11 @@ 128 32 - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 128 - 32 - - 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 + false AttackIndicator.tga @@ -122,98 +37,13 @@ 128 - 4 - - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 128 - 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 + 5 - 70 - - - AttackIndicator.tga - - 0 - 192 - - - 128 - 4 - - 70 - - - AttackIndicator.tga - - 0 - 224 - - - 128 - 4 - - 70 - true + false AttackIndicator.tga @@ -222,98 +52,13 @@ 128 - 4 - - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 128 - 4 - - 70 - - - AttackIndicator.tga - - 0 - 64 - - - 128 - 4 - - 70 - - - AttackIndicator.tga - - 0 - 96 - - - 128 - 4 + 5 - 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 - true + false AttackIndicator.tga @@ -321,99 +66,14 @@ 0 - 4 - 32 - - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 4 + 5 32 - 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 - true + false AttackIndicator.tga @@ -421,99 +81,14 @@ 0 - 4 - 32 - - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 4 - 32 - - 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 + 5 32 - 70 - true + false AttackIndicator.tga @@ -524,91 +99,6 @@ 128 32 - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 128 - 32 - - 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 @@ -618,7 +108,7 @@ false true 70 - 74 + 75 0 0 true @@ -632,7 +122,7 @@ A_AttackIndicatorBottom false true - 6 + 7 2 0 0 @@ -650,7 +140,7 @@ 70 2 0 - 4 + 5 true false true @@ -664,7 +154,7 @@ true 70 2 - 4 + 5 0 true false @@ -672,21 +162,8 @@ false - + A_AttackIndicatorAnimFill - A_AttackIndicatorFill - true - false - true - 0 - true - 70 - 0 - 2 - true - false - true - false @@ -1877,15 +1354,15 @@ -9 Screen:PlayerSubWindow + DragBox:PW_DragBox + DragBox:PW_DragBox2 + DragBox:PWDragBox3 + PW_BuffWindow A_AttackIndicatorAnimTop A_AttackIndicatorAnimBottom A_AttackIndicatorAnimLeft A_AttackIndicatorAnimRight A_AttackIndicatorAnimFill - DragBox:PW_DragBox - DragBox:PW_DragBox2 - DragBox:PWDragBox3 - PW_BuffWindow diff --git a/spinui_glass/EQUI_PlayerWindow3.xml b/spinui_glass/EQUI_PlayerWindow3.xml index 2012242..86e728c 100644 --- a/spinui_glass/EQUI_PlayerWindow3.xml +++ b/spinui_glass/EQUI_PlayerWindow3.xml @@ -8,12 +8,12 @@ 128 - 256 + 32 - true + false AttackIndicator.tga @@ -24,96 +24,11 @@ 128 32 - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 128 - 32 - - 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 + false AttackIndicator.tga @@ -122,98 +37,13 @@ 128 - 4 - - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 128 - 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 + 5 - 70 - - - AttackIndicator.tga - - 0 - 192 - - - 128 - 4 - - 70 - - - AttackIndicator.tga - - 0 - 224 - - - 128 - 4 - - 70 - true + false AttackIndicator.tga @@ -222,98 +52,13 @@ 128 - 4 - - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 128 - 4 - - 70 - - - AttackIndicator.tga - - 0 - 64 - - - 128 - 4 - - 70 - - - AttackIndicator.tga - - 0 - 96 - - - 128 - 4 + 5 - 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 - true + false AttackIndicator.tga @@ -321,99 +66,14 @@ 0 - 4 - 32 - - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 4 + 5 32 - 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 - true + false AttackIndicator.tga @@ -421,99 +81,14 @@ 0 - 4 - 32 - - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 4 - 32 - - 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 + 5 32 - 70 - true + false AttackIndicator.tga @@ -524,91 +99,6 @@ 128 32 - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 128 - 32 - - 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 @@ -618,7 +108,7 @@ false true 70 - 74 + 75 0 0 true @@ -632,7 +122,7 @@ A_AttackIndicatorBottom false true - 6 + 7 2 0 0 @@ -650,7 +140,7 @@ 70 2 0 - 4 + 5 true false true @@ -664,7 +154,7 @@ true 70 2 - 4 + 5 0 true false @@ -672,21 +162,8 @@ false - + A_AttackIndicatorAnimFill - A_AttackIndicatorFill - true - false - true - 0 - true - 70 - 0 - 2 - true - false - true - false @@ -1877,15 +1354,15 @@ -9 Screen:PlayerSubWindow + DragBox:PW_DragBox + DragBox:PW_DragBox2 + DragBox:PWDragBox3 + PW_BuffWindow A_AttackIndicatorAnimTop A_AttackIndicatorAnimBottom A_AttackIndicatorAnimLeft A_AttackIndicatorAnimRight A_AttackIndicatorAnimFill - DragBox:PW_DragBox - DragBox:PW_DragBox2 - DragBox:PWDragBox3 - PW_BuffWindow diff --git a/spinui_glass/EQUI_PlayerWindow4.xml b/spinui_glass/EQUI_PlayerWindow4.xml index 2012242..86e728c 100644 --- a/spinui_glass/EQUI_PlayerWindow4.xml +++ b/spinui_glass/EQUI_PlayerWindow4.xml @@ -8,12 +8,12 @@ 128 - 256 + 32 - true + false AttackIndicator.tga @@ -24,96 +24,11 @@ 128 32 - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 128 - 32 - - 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 + false AttackIndicator.tga @@ -122,98 +37,13 @@ 128 - 4 - - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 128 - 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 + 5 - 70 - - - AttackIndicator.tga - - 0 - 192 - - - 128 - 4 - - 70 - - - AttackIndicator.tga - - 0 - 224 - - - 128 - 4 - - 70 - true + false AttackIndicator.tga @@ -222,98 +52,13 @@ 128 - 4 - - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 128 - 4 - - 70 - - - AttackIndicator.tga - - 0 - 64 - - - 128 - 4 - - 70 - - - AttackIndicator.tga - - 0 - 96 - - - 128 - 4 + 5 - 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 - true + false AttackIndicator.tga @@ -321,99 +66,14 @@ 0 - 4 - 32 - - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 4 + 5 32 - 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 - true + false AttackIndicator.tga @@ -421,99 +81,14 @@ 0 - 4 - 32 - - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 4 - 32 - - 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 + 5 32 - 70 - true + false AttackIndicator.tga @@ -524,91 +99,6 @@ 128 32 - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 128 - 32 - - 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 @@ -618,7 +108,7 @@ false true 70 - 74 + 75 0 0 true @@ -632,7 +122,7 @@ A_AttackIndicatorBottom false true - 6 + 7 2 0 0 @@ -650,7 +140,7 @@ 70 2 0 - 4 + 5 true false true @@ -664,7 +154,7 @@ true 70 2 - 4 + 5 0 true false @@ -672,21 +162,8 @@ false - + A_AttackIndicatorAnimFill - A_AttackIndicatorFill - true - false - true - 0 - true - 70 - 0 - 2 - true - false - true - false @@ -1877,15 +1354,15 @@ -9 Screen:PlayerSubWindow + DragBox:PW_DragBox + DragBox:PW_DragBox2 + DragBox:PWDragBox3 + PW_BuffWindow A_AttackIndicatorAnimTop A_AttackIndicatorAnimBottom A_AttackIndicatorAnimLeft A_AttackIndicatorAnimRight A_AttackIndicatorAnimFill - DragBox:PW_DragBox - DragBox:PW_DragBox2 - DragBox:PWDragBox3 - PW_BuffWindow diff --git a/spinui_glass/EQUI_PlayerWindow5.xml b/spinui_glass/EQUI_PlayerWindow5.xml index 2012242..86e728c 100644 --- a/spinui_glass/EQUI_PlayerWindow5.xml +++ b/spinui_glass/EQUI_PlayerWindow5.xml @@ -8,12 +8,12 @@ 128 - 256 + 32 - true + false AttackIndicator.tga @@ -24,96 +24,11 @@ 128 32 - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 128 - 32 - - 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 + false AttackIndicator.tga @@ -122,98 +37,13 @@ 128 - 4 - - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 128 - 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 + 5 - 70 - - - AttackIndicator.tga - - 0 - 192 - - - 128 - 4 - - 70 - - - AttackIndicator.tga - - 0 - 224 - - - 128 - 4 - - 70 - true + false AttackIndicator.tga @@ -222,98 +52,13 @@ 128 - 4 - - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 128 - 4 - - 70 - - - AttackIndicator.tga - - 0 - 64 - - - 128 - 4 - - 70 - - - AttackIndicator.tga - - 0 - 96 - - - 128 - 4 + 5 - 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 - true + false AttackIndicator.tga @@ -321,99 +66,14 @@ 0 - 4 - 32 - - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 4 + 5 32 - 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 - true + false AttackIndicator.tga @@ -421,99 +81,14 @@ 0 - 4 - 32 - - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 4 - 32 - - 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 + 5 32 - 70 - true + false AttackIndicator.tga @@ -524,91 +99,6 @@ 128 32 - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 128 - 32 - - 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 @@ -618,7 +108,7 @@ false true 70 - 74 + 75 0 0 true @@ -632,7 +122,7 @@ A_AttackIndicatorBottom false true - 6 + 7 2 0 0 @@ -650,7 +140,7 @@ 70 2 0 - 4 + 5 true false true @@ -664,7 +154,7 @@ true 70 2 - 4 + 5 0 true false @@ -672,21 +162,8 @@ false - + A_AttackIndicatorAnimFill - A_AttackIndicatorFill - true - false - true - 0 - true - 70 - 0 - 2 - true - false - true - false @@ -1877,15 +1354,15 @@ -9 Screen:PlayerSubWindow + DragBox:PW_DragBox + DragBox:PW_DragBox2 + DragBox:PWDragBox3 + PW_BuffWindow A_AttackIndicatorAnimTop A_AttackIndicatorAnimBottom A_AttackIndicatorAnimLeft A_AttackIndicatorAnimRight A_AttackIndicatorAnimFill - DragBox:PW_DragBox - DragBox:PW_DragBox2 - DragBox:PWDragBox3 - PW_BuffWindow diff --git a/spinui_glass/EQUI_PlayerWindow6.xml b/spinui_glass/EQUI_PlayerWindow6.xml index 2012242..86e728c 100644 --- a/spinui_glass/EQUI_PlayerWindow6.xml +++ b/spinui_glass/EQUI_PlayerWindow6.xml @@ -8,12 +8,12 @@ 128 - 256 + 32 - true + false AttackIndicator.tga @@ -24,96 +24,11 @@ 128 32 - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 128 - 32 - - 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 + false AttackIndicator.tga @@ -122,98 +37,13 @@ 128 - 4 - - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 128 - 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 + 5 - 70 - - - AttackIndicator.tga - - 0 - 192 - - - 128 - 4 - - 70 - - - AttackIndicator.tga - - 0 - 224 - - - 128 - 4 - - 70 - true + false AttackIndicator.tga @@ -222,98 +52,13 @@ 128 - 4 - - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 128 - 4 - - 70 - - - AttackIndicator.tga - - 0 - 64 - - - 128 - 4 - - 70 - - - AttackIndicator.tga - - 0 - 96 - - - 128 - 4 + 5 - 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 - true + false AttackIndicator.tga @@ -321,99 +66,14 @@ 0 - 4 - 32 - - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 4 + 5 32 - 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 - true + false AttackIndicator.tga @@ -421,99 +81,14 @@ 0 - 4 - 32 - - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 4 - 32 - - 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 + 5 32 - 70 - true + false AttackIndicator.tga @@ -524,91 +99,6 @@ 128 32 - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 128 - 32 - - 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 @@ -618,7 +108,7 @@ false true 70 - 74 + 75 0 0 true @@ -632,7 +122,7 @@ A_AttackIndicatorBottom false true - 6 + 7 2 0 0 @@ -650,7 +140,7 @@ 70 2 0 - 4 + 5 true false true @@ -664,7 +154,7 @@ true 70 2 - 4 + 5 0 true false @@ -672,21 +162,8 @@ false - + A_AttackIndicatorAnimFill - A_AttackIndicatorFill - true - false - true - 0 - true - 70 - 0 - 2 - true - false - true - false @@ -1877,15 +1354,15 @@ -9 Screen:PlayerSubWindow + DragBox:PW_DragBox + DragBox:PW_DragBox2 + DragBox:PWDragBox3 + PW_BuffWindow A_AttackIndicatorAnimTop A_AttackIndicatorAnimBottom A_AttackIndicatorAnimLeft A_AttackIndicatorAnimRight A_AttackIndicatorAnimFill - DragBox:PW_DragBox - DragBox:PW_DragBox2 - DragBox:PWDragBox3 - PW_BuffWindow diff --git a/spinui_reloaded/AttackIndicator.tga b/spinui_reloaded/AttackIndicator.tga index c08529a8882425ff77e4b724e15e5a5b1de07e29..daa67167f60c2f61d6871cf9363c318c9576d4da 100644 GIT binary patch delta 67 pcmbQ#z%i+TQHX(oi2(*07!(*3IJV1uWBkIoUGE#?6TIXM764&b7B~O^ 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 diff --git a/spinui_reloaded/EQUI_PlayerWindow.xml b/spinui_reloaded/EQUI_PlayerWindow.xml index 0fcbe72..117f02c 100644 --- a/spinui_reloaded/EQUI_PlayerWindow.xml +++ b/spinui_reloaded/EQUI_PlayerWindow.xml @@ -6,12 +6,12 @@ 128 - 256 + 32 - true + false AttackIndicator.tga @@ -22,96 +22,11 @@ 128 32 - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 128 - 32 - - 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 + false AttackIndicator.tga @@ -120,98 +35,13 @@ 128 - 4 - - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 128 - 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 + 5 - 70 - - - AttackIndicator.tga - - 0 - 192 - - - 128 - 4 - - 70 - - - AttackIndicator.tga - - 0 - 224 - - - 128 - 4 - - 70 - true + false AttackIndicator.tga @@ -220,98 +50,13 @@ 128 - 4 - - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 128 - 4 - - 70 - - - AttackIndicator.tga - - 0 - 64 - - - 128 - 4 - - 70 - - - AttackIndicator.tga - - 0 - 96 - - - 128 - 4 + 5 - 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 - true + false AttackIndicator.tga @@ -319,99 +64,14 @@ 0 - 4 - 32 - - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 4 + 5 32 - 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 - true + false AttackIndicator.tga @@ -419,99 +79,14 @@ 0 - 4 - 32 - - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 4 - 32 - - 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 + 5 32 - 70 - true + false AttackIndicator.tga @@ -522,91 +97,6 @@ 128 32 - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 128 - 32 - - 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 @@ -616,7 +106,7 @@ false true 70 - 74 + 75 0 0 true @@ -630,7 +120,7 @@ A_AttackIndicatorBottom false true - 6 + 7 2 0 0 @@ -648,7 +138,7 @@ 70 2 0 - 4 + 5 true false true @@ -662,7 +152,7 @@ true 70 2 - 4 + 5 0 true false @@ -670,21 +160,8 @@ false - + A_AttackIndicatorAnimFill - A_AttackIndicatorFill - true - false - true - 0 - true - 70 - 0 - 2 - true - false - true - false @@ -1876,15 +1353,15 @@ -9 Screen:PlayerSubWindow + DragBox:PW_DragBox + DragBox:PW_DragBox2 + DragBox:PWDragBox3 + PW_BuffWindow A_AttackIndicatorAnimTop A_AttackIndicatorAnimBottom A_AttackIndicatorAnimLeft A_AttackIndicatorAnimRight A_AttackIndicatorAnimFill - DragBox:PW_DragBox - DragBox:PW_DragBox2 - DragBox:PWDragBox3 - PW_BuffWindow diff --git a/spinui_reloaded/EQUI_PlayerWindow1.xml b/spinui_reloaded/EQUI_PlayerWindow1.xml index c62bc76..118db15 100644 --- a/spinui_reloaded/EQUI_PlayerWindow1.xml +++ b/spinui_reloaded/EQUI_PlayerWindow1.xml @@ -2,18 +2,18 @@ - + 128 - 256 + 32 - true + false AttackIndicator.tga @@ -24,96 +24,11 @@ 128 32 - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 128 - 32 - - 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 + false AttackIndicator.tga @@ -124,96 +39,11 @@ 128 5 - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 128 - 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 - - 70 - - - AttackIndicator.tga - - 0 - 192 - - - 128 - 5 - - 70 - - - AttackIndicator.tga - - 0 - 224 - - - 128 - 5 - - 70 - true + false AttackIndicator.tga @@ -224,96 +54,11 @@ 128 5 - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 128 - 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 - - 70 - - - AttackIndicator.tga - - 0 - 192 - - - 128 - 5 - - 70 - - - AttackIndicator.tga - - 0 - 224 - - - 128 - 5 - - 70 - true + false AttackIndicator.tga @@ -324,96 +69,11 @@ 5 32 - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 5 - 32 - - 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 + false AttackIndicator.tga @@ -424,96 +84,11 @@ 5 32 - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 5 - 32 - - 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 + false AttackIndicator.tga @@ -524,91 +99,6 @@ 128 32 - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 128 - 32 - - 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 @@ -617,8 +107,8 @@ A_AttackIndicatorTop false true - 51 - 56 + 70 + 75 0 0 true @@ -647,7 +137,7 @@ A_AttackIndicatorLeft false true - 51 + 70 2 0 5 @@ -662,7 +152,7 @@ A_AttackIndicatorRight false true - 51 + 70 2 5 0 @@ -672,21 +162,8 @@ false - + A_AttackIndicatorAnimFill - A_AttackIndicatorFill - true - false - true - 0 - true - 51 - 0 - 2 - true - false - true - false @@ -1687,7 +1164,7 @@ false 2 2 - 53 + 72 2 false false @@ -1710,10 +1187,10 @@ true true true - 53 + 72 0 105 - 73 + 92 255 0 @@ -1729,10 +1206,10 @@ true false true - 91 + 110 0 0 - 181 + 200 255 0 @@ -1748,10 +1225,10 @@ true false true - 53 + 72 138 20 - 73 + 92 255 0 @@ -1800,7 +1277,7 @@ true false false - 51 + 70 2 -1 -1 @@ -1849,18 +1326,16 @@ false - High-Visibility Attack Frame 3 0 360 - 174 + 193 280 174 - 174 false false WDT_RoundedTransparentNoArrow @@ -1879,15 +1354,15 @@ -9 Screen:PlayerSubWindow + DragBox:PW_DragBox + DragBox:PW_DragBox2 + DragBox:PWDragBox3 + PW_BuffWindow A_AttackIndicatorAnimTop A_AttackIndicatorAnimBottom A_AttackIndicatorAnimLeft A_AttackIndicatorAnimRight A_AttackIndicatorAnimFill - DragBox:PW_DragBox - DragBox:PW_DragBox2 - DragBox:PWDragBox3 - PW_BuffWindow diff --git a/spinui_reloaded/EQUI_PlayerWindow2.xml b/spinui_reloaded/EQUI_PlayerWindow2.xml index 72afab1..118db15 100644 --- a/spinui_reloaded/EQUI_PlayerWindow2.xml +++ b/spinui_reloaded/EQUI_PlayerWindow2.xml @@ -8,12 +8,12 @@ 128 - 256 + 32 - true + false AttackIndicator.tga @@ -24,96 +24,11 @@ 128 32 - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 128 - 32 - - 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 + false AttackIndicator.tga @@ -122,98 +37,13 @@ 128 - 4 - - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 128 - 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 + 5 - 70 - - - AttackIndicator.tga - - 0 - 192 - - - 128 - 4 - - 70 - - - AttackIndicator.tga - - 0 - 224 - - - 128 - 4 - - 70 - true + false AttackIndicator.tga @@ -222,98 +52,13 @@ 128 - 4 - - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 128 - 4 - - 70 - - - AttackIndicator.tga - - 0 - 64 - - - 128 - 4 - - 70 - - - AttackIndicator.tga - - 0 - 96 - - - 128 - 4 + 5 - 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 - true + false AttackIndicator.tga @@ -321,99 +66,14 @@ 0 - 4 - 32 - - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 4 + 5 32 - 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 - true + false AttackIndicator.tga @@ -421,99 +81,14 @@ 0 - 4 - 32 - - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 4 - 32 - - 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 + 5 32 - 70 - true + false AttackIndicator.tga @@ -524,91 +99,6 @@ 128 32 - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 128 - 32 - - 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 @@ -618,7 +108,7 @@ false true 70 - 74 + 75 0 0 true @@ -632,7 +122,7 @@ A_AttackIndicatorBottom false true - 6 + 7 2 0 0 @@ -650,7 +140,7 @@ 70 2 0 - 4 + 5 true false true @@ -664,7 +154,7 @@ true 70 2 - 4 + 5 0 true false @@ -672,21 +162,8 @@ false - + A_AttackIndicatorAnimFill - A_AttackIndicatorFill - true - false - true - 0 - true - 70 - 0 - 2 - true - false - true - false @@ -1877,15 +1354,15 @@ -9 Screen:PlayerSubWindow + DragBox:PW_DragBox + DragBox:PW_DragBox2 + DragBox:PWDragBox3 + PW_BuffWindow A_AttackIndicatorAnimTop A_AttackIndicatorAnimBottom A_AttackIndicatorAnimLeft A_AttackIndicatorAnimRight A_AttackIndicatorAnimFill - DragBox:PW_DragBox - DragBox:PW_DragBox2 - DragBox:PWDragBox3 - PW_BuffWindow diff --git a/spinui_reloaded/EQUI_PlayerWindow3.xml b/spinui_reloaded/EQUI_PlayerWindow3.xml index 72afab1..118db15 100644 --- a/spinui_reloaded/EQUI_PlayerWindow3.xml +++ b/spinui_reloaded/EQUI_PlayerWindow3.xml @@ -8,12 +8,12 @@ 128 - 256 + 32 - true + false AttackIndicator.tga @@ -24,96 +24,11 @@ 128 32 - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 128 - 32 - - 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 + false AttackIndicator.tga @@ -122,98 +37,13 @@ 128 - 4 - - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 128 - 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 + 5 - 70 - - - AttackIndicator.tga - - 0 - 192 - - - 128 - 4 - - 70 - - - AttackIndicator.tga - - 0 - 224 - - - 128 - 4 - - 70 - true + false AttackIndicator.tga @@ -222,98 +52,13 @@ 128 - 4 - - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 128 - 4 - - 70 - - - AttackIndicator.tga - - 0 - 64 - - - 128 - 4 - - 70 - - - AttackIndicator.tga - - 0 - 96 - - - 128 - 4 + 5 - 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 - true + false AttackIndicator.tga @@ -321,99 +66,14 @@ 0 - 4 - 32 - - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 4 + 5 32 - 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 - true + false AttackIndicator.tga @@ -421,99 +81,14 @@ 0 - 4 - 32 - - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 4 - 32 - - 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 + 5 32 - 70 - true + false AttackIndicator.tga @@ -524,91 +99,6 @@ 128 32 - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 128 - 32 - - 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 @@ -618,7 +108,7 @@ false true 70 - 74 + 75 0 0 true @@ -632,7 +122,7 @@ A_AttackIndicatorBottom false true - 6 + 7 2 0 0 @@ -650,7 +140,7 @@ 70 2 0 - 4 + 5 true false true @@ -664,7 +154,7 @@ true 70 2 - 4 + 5 0 true false @@ -672,21 +162,8 @@ false - + A_AttackIndicatorAnimFill - A_AttackIndicatorFill - true - false - true - 0 - true - 70 - 0 - 2 - true - false - true - false @@ -1877,15 +1354,15 @@ -9 Screen:PlayerSubWindow + DragBox:PW_DragBox + DragBox:PW_DragBox2 + DragBox:PWDragBox3 + PW_BuffWindow A_AttackIndicatorAnimTop A_AttackIndicatorAnimBottom A_AttackIndicatorAnimLeft A_AttackIndicatorAnimRight A_AttackIndicatorAnimFill - DragBox:PW_DragBox - DragBox:PW_DragBox2 - DragBox:PWDragBox3 - PW_BuffWindow diff --git a/spinui_reloaded/EQUI_PlayerWindow4.xml b/spinui_reloaded/EQUI_PlayerWindow4.xml index 72afab1..118db15 100644 --- a/spinui_reloaded/EQUI_PlayerWindow4.xml +++ b/spinui_reloaded/EQUI_PlayerWindow4.xml @@ -8,12 +8,12 @@ 128 - 256 + 32 - true + false AttackIndicator.tga @@ -24,96 +24,11 @@ 128 32 - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 128 - 32 - - 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 + false AttackIndicator.tga @@ -122,98 +37,13 @@ 128 - 4 - - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 128 - 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 + 5 - 70 - - - AttackIndicator.tga - - 0 - 192 - - - 128 - 4 - - 70 - - - AttackIndicator.tga - - 0 - 224 - - - 128 - 4 - - 70 - true + false AttackIndicator.tga @@ -222,98 +52,13 @@ 128 - 4 - - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 128 - 4 - - 70 - - - AttackIndicator.tga - - 0 - 64 - - - 128 - 4 - - 70 - - - AttackIndicator.tga - - 0 - 96 - - - 128 - 4 + 5 - 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 - true + false AttackIndicator.tga @@ -321,99 +66,14 @@ 0 - 4 - 32 - - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 4 + 5 32 - 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 - true + false AttackIndicator.tga @@ -421,99 +81,14 @@ 0 - 4 - 32 - - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 4 - 32 - - 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 + 5 32 - 70 - true + false AttackIndicator.tga @@ -524,91 +99,6 @@ 128 32 - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 128 - 32 - - 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 @@ -618,7 +108,7 @@ false true 70 - 74 + 75 0 0 true @@ -632,7 +122,7 @@ A_AttackIndicatorBottom false true - 6 + 7 2 0 0 @@ -650,7 +140,7 @@ 70 2 0 - 4 + 5 true false true @@ -664,7 +154,7 @@ true 70 2 - 4 + 5 0 true false @@ -672,21 +162,8 @@ false - + A_AttackIndicatorAnimFill - A_AttackIndicatorFill - true - false - true - 0 - true - 70 - 0 - 2 - true - false - true - false @@ -1877,15 +1354,15 @@ -9 Screen:PlayerSubWindow + DragBox:PW_DragBox + DragBox:PW_DragBox2 + DragBox:PWDragBox3 + PW_BuffWindow A_AttackIndicatorAnimTop A_AttackIndicatorAnimBottom A_AttackIndicatorAnimLeft A_AttackIndicatorAnimRight A_AttackIndicatorAnimFill - DragBox:PW_DragBox - DragBox:PW_DragBox2 - DragBox:PWDragBox3 - PW_BuffWindow diff --git a/spinui_reloaded/EQUI_PlayerWindow5.xml b/spinui_reloaded/EQUI_PlayerWindow5.xml index 72afab1..118db15 100644 --- a/spinui_reloaded/EQUI_PlayerWindow5.xml +++ b/spinui_reloaded/EQUI_PlayerWindow5.xml @@ -8,12 +8,12 @@ 128 - 256 + 32 - true + false AttackIndicator.tga @@ -24,96 +24,11 @@ 128 32 - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 128 - 32 - - 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 + false AttackIndicator.tga @@ -122,98 +37,13 @@ 128 - 4 - - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 128 - 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 + 5 - 70 - - - AttackIndicator.tga - - 0 - 192 - - - 128 - 4 - - 70 - - - AttackIndicator.tga - - 0 - 224 - - - 128 - 4 - - 70 - true + false AttackIndicator.tga @@ -222,98 +52,13 @@ 128 - 4 - - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 128 - 4 - - 70 - - - AttackIndicator.tga - - 0 - 64 - - - 128 - 4 - - 70 - - - AttackIndicator.tga - - 0 - 96 - - - 128 - 4 + 5 - 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 - true + false AttackIndicator.tga @@ -321,99 +66,14 @@ 0 - 4 - 32 - - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 4 + 5 32 - 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 - true + false AttackIndicator.tga @@ -421,99 +81,14 @@ 0 - 4 - 32 - - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 4 - 32 - - 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 + 5 32 - 70 - true + false AttackIndicator.tga @@ -524,91 +99,6 @@ 128 32 - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 128 - 32 - - 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 @@ -618,7 +108,7 @@ false true 70 - 74 + 75 0 0 true @@ -632,7 +122,7 @@ A_AttackIndicatorBottom false true - 6 + 7 2 0 0 @@ -650,7 +140,7 @@ 70 2 0 - 4 + 5 true false true @@ -664,7 +154,7 @@ true 70 2 - 4 + 5 0 true false @@ -672,21 +162,8 @@ false - + A_AttackIndicatorAnimFill - A_AttackIndicatorFill - true - false - true - 0 - true - 70 - 0 - 2 - true - false - true - false @@ -1877,15 +1354,15 @@ -9 Screen:PlayerSubWindow + DragBox:PW_DragBox + DragBox:PW_DragBox2 + DragBox:PWDragBox3 + PW_BuffWindow A_AttackIndicatorAnimTop A_AttackIndicatorAnimBottom A_AttackIndicatorAnimLeft A_AttackIndicatorAnimRight A_AttackIndicatorAnimFill - DragBox:PW_DragBox - DragBox:PW_DragBox2 - DragBox:PWDragBox3 - PW_BuffWindow diff --git a/spinui_reloaded/EQUI_PlayerWindow6.xml b/spinui_reloaded/EQUI_PlayerWindow6.xml index 72afab1..118db15 100644 --- a/spinui_reloaded/EQUI_PlayerWindow6.xml +++ b/spinui_reloaded/EQUI_PlayerWindow6.xml @@ -8,12 +8,12 @@ 128 - 256 + 32 - true + false AttackIndicator.tga @@ -24,96 +24,11 @@ 128 32 - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 128 - 32 - - 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 + false AttackIndicator.tga @@ -122,98 +37,13 @@ 128 - 4 - - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 128 - 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 + 5 - 70 - - - AttackIndicator.tga - - 0 - 192 - - - 128 - 4 - - 70 - - - AttackIndicator.tga - - 0 - 224 - - - 128 - 4 - - 70 - true + false AttackIndicator.tga @@ -222,98 +52,13 @@ 128 - 4 - - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 128 - 4 - - 70 - - - AttackIndicator.tga - - 0 - 64 - - - 128 - 4 - - 70 - - - AttackIndicator.tga - - 0 - 96 - - - 128 - 4 + 5 - 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 - true + false AttackIndicator.tga @@ -321,99 +66,14 @@ 0 - 4 - 32 - - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 4 + 5 32 - 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 - true + false AttackIndicator.tga @@ -421,99 +81,14 @@ 0 - 4 - 32 - - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 4 - 32 - - 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 + 5 32 - 70 - true + false AttackIndicator.tga @@ -524,91 +99,6 @@ 128 32 - 70 - - - AttackIndicator.tga - - 0 - 32 - - - 128 - 32 - - 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 @@ -618,7 +108,7 @@ false true 70 - 74 + 75 0 0 true @@ -632,7 +122,7 @@ A_AttackIndicatorBottom false true - 6 + 7 2 0 0 @@ -650,7 +140,7 @@ 70 2 0 - 4 + 5 true false true @@ -664,7 +154,7 @@ true 70 2 - 4 + 5 0 true false @@ -672,21 +162,8 @@ false - + A_AttackIndicatorAnimFill - A_AttackIndicatorFill - true - false - true - 0 - true - 70 - 0 - 2 - true - false - true - false @@ -1877,15 +1354,15 @@ -9 Screen:PlayerSubWindow + DragBox:PW_DragBox + DragBox:PW_DragBox2 + DragBox:PWDragBox3 + PW_BuffWindow A_AttackIndicatorAnimTop A_AttackIndicatorAnimBottom A_AttackIndicatorAnimLeft A_AttackIndicatorAnimRight A_AttackIndicatorAnimFill - DragBox:PW_DragBox - DragBox:PW_DragBox2 - DragBox:PWDragBox3 - PW_BuffWindow diff --git a/tools/audit_combat_ui.py b/tools/audit_combat_ui.py index f7a5975..524722f 100644 --- a/tools/audit_combat_ui.py +++ b/tools/audit_combat_ui.py @@ -13,13 +13,10 @@ # 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 (EDGE_WIDTH as ATTACK_EDGE_WIDTH, +from paint_attack_indicator import (COLOR as ATTACK_INDICATOR_COLOR, + EDGE_WIDTH as ATTACK_EDGE_WIDTH, FRAME_SIZE as ATTACK_FRAME_SIZE, - FRAME_DURATION_MS, FRAME_ORIGINS, - FRAME_RAILS, - HIGH_EDGE_WIDTH, - SIZE as ATTACK_INDICATOR_SIZE, - TRANSPARENT) + SIZE as ATTACK_INDICATOR_SIZE) from restyle_combat import (EFFECT_CHIP, EFFECT_ICON, EFFECT_NAME_WIDTH, EFFECT_NAME_X, EFFECT_PLATE_BLEED, EFFECT_ROW_WIDTH, EFFECT_TIMER_FONT, @@ -30,12 +27,6 @@ EXTENDED_TARGET_ROW_SIZE, EXTENDED_TARGET_TILE, EXTENDED_TARGET_WINDOW_SIZE, - 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_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, @@ -74,7 +65,7 @@ ) CANONICAL_VARIANTS = { - "EQUI_PlayerWindow.xml": tuple(f"EQUI_PlayerWindow{i}.xml" for i in range(2, 7)), + "EQUI_PlayerWindow.xml": tuple(f"EQUI_PlayerWindow{i}.xml" for i in range(1, 7)), "EQUI_TargetWindow.xml": tuple(f"EQUI_TargetWindow{i}.xml" for i in range(1, 7)), "EQUI_TargetOfTargetWindow.xml": ("EQUI_TargetOfTargetWindow1.xml",), "EQUI_BuffWindow.xml": tuple(f"EQUI_BuffWindow{i}.xml" for i in range(1, 18)), @@ -154,29 +145,14 @@ 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() - 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") + colors = attack_texture.getcolors(maxcolors=ATTACK_INDICATOR_SIZE[0] + * ATTACK_INDICATOR_SIZE[1]) + expected_colors = [( + ATTACK_INDICATOR_SIZE[0] * ATTACK_INDICATOR_SIZE[1], + ATTACK_INDICATOR_COLOR, + )] + if colors != expected_colors: + fail("AttackIndicator.tga is no longer a solid opaque pure-red rail") for name, expected in ( ("A_AttackIndicator", ATTACK_FRAME_SIZE), @@ -187,14 +163,16 @@ def audit_player_and_target() -> None: ("A_AttackIndicatorFill", ATTACK_FRAME_SIZE)): animation = item(player, "Ui2DAnimation", name) frames = animation.findall("Frames") - sizes = [dimensions_at(frame, "Size") for frame in frames] - 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] * 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") + if len(frames) != 1: + fail(f"{name} must use the client's single native attack frame") + frame = frames[0] + if (child_text(animation, "Cycle") != "false" + or child_text(frame, "Texture") != "AttackIndicator.tga" + or dimensions_at(frame, "Size") != expected + or (child_int(frame, "Location/X"), + child_int(frame, "Location/Y")) != (0, 0) + or frame.find("Duration") is not None): + fail(f"{name} no longer matches the client-native attack contract") attack_geometry = { "A_AttackIndicatorAnimTop": (70, 70 + ATTACK_EDGE_WIDTH, 0, 0), "A_AttackIndicatorAnimBottom": (2 + ATTACK_EDGE_WIDTH, 2, 0, 0), @@ -210,10 +188,20 @@ def audit_player_and_target() -> None: if actual != expected or child_text(node, "AutoDraw") != "false": fail(f"{name} no longer follows the native auto-attack state: {actual}") attack_fill = item(player, "StaticAnimation", "A_AttackIndicatorAnimFill") - if (child_text(attack_fill, "Animation") != "A_AttackIndicatorFill" or - child_text(attack_fill, "AutoDraw") != "false" or - child_text(attack_fill, "Style_Transparent") != "true"): - fail("native auto-attack fill wash is missing or always visible") + if (child_text(attack_fill, "ScreenID") != "A_AttackIndicatorAnimFill" + or attack_fill.find("Animation") is not None + or attack_fill.find("AutoDraw") is not None): + fail("native auto-attack fill must remain an unbound placeholder") + + player_window = item(player, "Screen", "PlayerWindow") + piece_names = [(piece.text or "").strip() + for piece in player_window.findall("Pieces")] + attack_pieces = [ + f"A_AttackIndicatorAnim{edge}" + for edge in ("Top", "Bottom", "Left", "Right", "Fill") + ] + if piece_names[-len(attack_pieces):] != attack_pieces: + fail("native attack rails are not the topmost PlayerWindow pieces") require_binding(player, "Gauge", "Player_HP", "PlayerHP", 1) require_binding(player, "Gauge", "Player_Mana", "PlayerMana", 2) @@ -1048,140 +1036,6 @@ def ledger_pixel(x: int, y: int) -> tuple[int, int, int, int]: fail("spell ledger lost its compact SpinUI frame") -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 { - key: value for key, value in binding_map(path).items() - if value != ("", "") - } - - canonical_bindings = gameplay_bindings(SKIN / "EQUI_PlayerWindow.xml") - variant_path = SKIN / PLAYER_HIGH_VISIBILITY_VARIANT - if gameplay_bindings(variant_path) != canonical_bindings: - fail("high-visibility player variant changed gameplay bindings") - - root = root_for(PLAYER_HIGH_VISIBILITY_VARIANT) - 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) != 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: - fail("high-visibility attack TextureInfo size changed") - texture = Image.open(SKIN / ATTACK_HIGH_TEXTURE).convert("RGBA") - if texture.size != ATTACK_INDICATOR_SIZE: - fail("high-visibility attack texture size changed") - pixels = texture.load() - 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, - "A_AttackIndicatorTop": ( - ATTACK_FRAME_SIZE[0], ATTACK_HIGH_EDGE_WIDTH), - "A_AttackIndicatorBottom": ( - ATTACK_FRAME_SIZE[0], ATTACK_HIGH_EDGE_WIDTH), - "A_AttackIndicatorLeft": ( - ATTACK_HIGH_EDGE_WIDTH, ATTACK_FRAME_SIZE[1]), - "A_AttackIndicatorRight": ( - ATTACK_HIGH_EDGE_WIDTH, ATTACK_FRAME_SIZE[1]), - "A_AttackIndicatorFill": ATTACK_FRAME_SIZE, - } - for name, expected in animation_sizes.items(): - animation = item(root, "Ui2DAnimation", name) - frames = animation.findall("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] * ATTACK_PULSE_FRAME_COUNT: - fail(f"high-visibility {name} geometry changed") - 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_FRAME_COUNT: - fail(f"high-visibility {name} pulse timing changed") - - geometry = { - "A_AttackIndicatorAnimTop": ( - 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": ( - PLAYER_HIGH_VISIBILITY_SUBWINDOW_TOP, - 2, 0, ATTACK_HIGH_EDGE_WIDTH), - "A_AttackIndicatorAnimRight": ( - PLAYER_HIGH_VISIBILITY_SUBWINDOW_TOP, - 2, ATTACK_HIGH_EDGE_WIDTH, 0), - } - for name, expected in geometry.items(): - node = item(root, "StaticAnimation", name) - actual = tuple(child_int(node, tag) for tag in ( - "TopAnchorOffset", "BottomAnchorOffset", - "LeftAnchorOffset", "RightAnchorOffset", - )) - if actual != expected or child_text(node, "AutoDraw") != "false": - 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" 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: """Ensure old INI variant selections cannot restore stale bindings.""" checked = 0 @@ -1226,9 +1080,6 @@ def semantic_signature(node: ET.Element): fail(f"compatibility variant visual drift: {variant_name}") checked += 1 - audit_high_visibility_player_variant() - checked += 1 - # Stance keeps two genuinely useful text-position alternatives. They must # remain current-schema, accessible, and compact. stance_expected = binding_map(SKIN / "EQUI_StanceWnd.xml") @@ -1261,7 +1112,7 @@ def main() -> int: print("Combat Command Center audit: ALL PASS") print(" Player/Target/ToT | Group 1..11 | XTarget 0..22 | Raid groups 1..12") print(" buffs 30 | songs 15 | spell gems 14 | hotbars 11 x 12 | stance + invocation") - print(" 51 compatibility aliases + high-visibility attack frame + spell ledger") + print(" 52 compatibility aliases + native bright attack rail + spell ledger") print(" contrast AAA/AA | July stock parity " + ("PASS" if stock_checked else "not available")) return 0 diff --git a/tools/paint_attack_indicator.py b/tools/paint_attack_indicator.py index 000644b..d4055c8 100644 --- a/tools/paint_attack_indicator.py +++ b/tools/paint_attack_indicator.py @@ -1,16 +1,11 @@ #!/usr/bin/env python3 -"""Paint SpinUI's native auto-attack outline. +"""Paint SpinUI's client-native auto-attack indicator texture. -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 indicator follows the client state directly and -does not need log parsing or combat heuristics. - -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. +EverQuest owns the visibility and flashing cadence of the four +``A_AttackIndicatorAnim*`` edge widgets in ``EQUI_PlayerWindow.xml``. The +texture therefore remains a single, fully opaque pure-red frame just like the +working Modern UI contract. Only narrow edge slices are drawn by the XML; the +fill widget is intentionally unbound so player information is never tinted. Run from the repository root: python tools/paint_attack_indicator.py @@ -26,35 +21,21 @@ REPO = Path(__file__).resolve().parent.parent OUTPUT = REPO / "spinui_reloaded" / "AttackIndicator.tga" FRAME_SIZE = (128, 32) -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) +SIZE = FRAME_SIZE +EDGE_WIDTH = 5 +COLOR = (255, 0, 0, 255) def render() -> Image.Image: - image = Image.new("RGBA", SIZE, TRANSPARENT) - pixels = image.load() - width, frame_height = FRAME_SIZE - for origin_y, rail in zip(FRAME_ORIGINS, FRAME_RAILS): - for y in range(frame_height): - for x in range(width): - if min(x, y) < HIGH_EDGE_WIDTH: - pixels[x, origin_y + y] = rail - return image + return Image.new("RGBA", SIZE, COLOR) def main() -> int: OUTPUT.parent.mkdir(parents=True, exist_ok=True) save_tga(render(), OUTPUT) print( - "AttackIndicator.tga: eight-frame pure-red outline pulse painted | " - "transparent interior | 560 ms cycle" + "AttackIndicator.tga: native pure-red attack rail painted | " + "EverQuest-controlled flash | no fill wash" ) return 0 diff --git a/tools/restyle_combat.py b/tools/restyle_combat.py index 3e006c7..ce034e0 100644 --- a/tools/restyle_combat.py +++ b/tools/restyle_combat.py @@ -64,29 +64,18 @@ # so users may resize them without clipping the command rows. PLAYER_MIN_SIZE = (280, 174) TARGET_MIN_SIZE = (260, 174) -ATTACK_EDGE_WIDTH = 4 +ATTACK_EDGE_WIDTH = 5 ATTACK_FRAME_SIZE = (128, 32) -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 +ATTACK_TEXTURE_SIZE = ATTACK_FRAME_SIZE # 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 # saved layout still selects them. Keep the filenames as compatibility aliases # (so existing INIs continue to load), but make every alias use the canonical, -# current-schema command frame. PlayerWindow1 is the deliberate high-visibility -# auto-attack option; CastSpellWnd3 is the named-and-numbered spell ledger. The -# canonical player frame and icon-only spell deck remain the untouched defaults. +# current-schema command frame. Every PlayerWindow display type therefore +# keeps the complete, visible main bar and the same client-native attack rail. +# CastSpellWnd3 remains the named-and-numbered spell ledger; the canonical +# player frame and icon-only spell deck remain the defaults. SPELL_LEDGER_VARIANT = "EQUI_CastSpellWnd3.xml" SPELL_LEDGER_MENU_NAME = "SpinUI Spell Ledger" SPELL_LEDGER_EQTYPES = ( @@ -113,7 +102,7 @@ EXTENDED_TARGET_BLOCK_END = "SPIN-XTAR-RESPONSIVE:END" CANONICAL_VARIANTS = { - "EQUI_PlayerWindow.xml": tuple(f"EQUI_PlayerWindow{i}.xml" for i in range(2, 7)), + "EQUI_PlayerWindow.xml": tuple(f"EQUI_PlayerWindow{i}.xml" for i in range(1, 7)), "EQUI_TargetWindow.xml": tuple(f"EQUI_TargetWindow{i}.xml" for i in range(1, 7)), "EQUI_TargetOfTargetWindow.xml": ("EQUI_TargetOfTargetWindow1.xml",), "EQUI_BuffWindow.xml": tuple(f"EQUI_BuffWindow{i}.xml" for i in range(1, 18)), @@ -463,32 +452,30 @@ def invocation_rail(block: str) -> str: } def attack_animation(block: str, size: tuple[int, int]) -> str: - block = set_value(block, "Cycle", "true") + # Match the working Modern UI contract exactly: EverQuest toggles and + # flashes these stock-named widgets itself. A custom Cycle can look + # correct in static audits while never advancing in the live client. + block = set_value(block, "Cycle", "false") block = re.sub(r"\n\t\t.*?", "", block, flags=re.DOTALL) - - def frame(origin_y: int) -> str: - return ( - "\n\t\t\n" - "\t\t\tAttackIndicator.tga\n" - "\t\t\t\n" - "\t\t\t\t0\n" - f"\t\t\t\t{origin_y}\n" - "\t\t\t\n" - "\t\t\t\n" - f"\t\t\t\t{size[0]}\n" - f"\t\t\t\t{size[1]}\n" - "\t\t\t\n" - f"\t\t\t{ATTACK_PULSE_MS}\n" - "\t\t" - ) - cycle_marker = "" cycle_end = block.find(cycle_marker) if cycle_end < 0: fail("attack animation has no Cycle element") cycle_end += len(cycle_marker) - frames = "".join(frame(origin) for origin in ATTACK_FRAME_ORIGINS) + frames = ( + "\n\t\t\n" + "\t\t\tAttackIndicator.tga\n" + "\t\t\t\n" + "\t\t\t\t0\n" + "\t\t\t\t0\n" + "\t\t\t\n" + "\t\t\t\n" + f"\t\t\t\t{size[0]}\n" + f"\t\t\t\t{size[1]}\n" + "\t\t\t\n" + "\t\t" + ) return block[:cycle_end] + frames + block[cycle_end:] for name, size in attack_animations.items(): @@ -514,23 +501,14 @@ def attack_edge(block: str, values=offsets) -> str: return block text = change_item(text, "StaticAnimation", name, attack_edge) - def attack_fill(block: str) -> str: - for tag, value in ( - ("Animation", "A_AttackIndicatorFill"), - ("RelativePosition", "true"), - ("AutoDraw", "false"), - ("AutoStretch", "true"), - ("LeftAnchorOffset", 0), - ("TopAnchorOffset", 70), - ("RightAnchorOffset", 0), - ("BottomAnchorOffset", 2), - ("TopAnchorToTop", "true"), - ("BottomAnchorToTop", "false"), - ("LeftAnchorToLeft", "true"), - ("RightAnchorToLeft", "false"), - ("Style_Transparent", "true")): - block = set_value(block, tag, value) - return block + def attack_fill(_block: str) -> str: + # Keep the stock symbol because the client expects it, but leave it + # deliberately unbound. Only the four edge widgets may be drawn. + return ( + '\t\n' + '\t\tA_AttackIndicatorAnimFill\n' + '\t' + ) text = change_item( text, "StaticAnimation", "A_AttackIndicatorAnimFill", attack_fill, @@ -550,6 +528,25 @@ def root_style(block: str) -> str: # live client; the compact PlayerSubWindow remains the visible frame. block = set_value(block, "Style_Border", "false") block = set_value(block, "Style_Sizable", "true") + # Draw the native rails last so the buff canvas and drag surfaces + # cannot cover the top edge at their shared y=70 boundary. + attack_pieces = tuple( + f"A_AttackIndicatorAnim{edge}" + for edge in ("Top", "Bottom", "Left", "Right", "Fill") + ) + for piece in attack_pieces: + block = re.sub( + rf"\n[ \t]*{piece}", "", block, + ) + pieces = "".join( + f"\n\t\t{piece}" for piece in attack_pieces + ) + block, count = re.subn( + r"\n\t$", pieces + "\n\t", block, + count=1, + ) + if count != 1: + fail("PlayerWindow root has no closing Screen tag") return block text = change_item(text, "Screen", "PlayerWindow", root_style) @@ -1309,107 +1306,6 @@ def sync_canonical_variants() -> None: write_ascii(SKIN / variant_name, source) -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, count = re.subn( - r"(]*/>)", - (r"\g<1>\n\n\t"), - source, - count=1, - ) - if count != 1: - fail("missing Schema declaration in high-visibility player variant") - - def animation_size(block: str, size: tuple[int, int]) -> str: - pattern = re.compile( - r"(\s*)\d+(\s*)\d+(\s*)" - ) - return pattern.sub( - lambda match: ( - match.group(1) + str(size[0]) + match.group(2) - + str(size[1]) + match.group(3) - ), - block, - ) - - for name, size in ( - ("A_AttackIndicatorTop", (ATTACK_FRAME_SIZE[0], ATTACK_HIGH_EDGE_WIDTH)), - ("A_AttackIndicatorBottom", (ATTACK_FRAME_SIZE[0], ATTACK_HIGH_EDGE_WIDTH)), - ("A_AttackIndicatorLeft", (ATTACK_HIGH_EDGE_WIDTH, ATTACK_FRAME_SIZE[1])), - ("A_AttackIndicatorRight", (ATTACK_HIGH_EDGE_WIDTH, ATTACK_FRAME_SIZE[1]))): - source = change_item( - source, "Ui2DAnimation", name, - lambda block, wanted=size: animation_size(block, wanted), - ) - - geometry = { - "A_AttackIndicatorAnimTop": ( - 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": ( - PLAYER_HIGH_VISIBILITY_SUBWINDOW_TOP, - 2, 0, ATTACK_HIGH_EDGE_WIDTH), - "A_AttackIndicatorAnimRight": ( - PLAYER_HIGH_VISIBILITY_SUBWINDOW_TOP, - 2, ATTACK_HIGH_EDGE_WIDTH, 0), - } - for name, offsets in geometry.items(): - def high_edge(block: str, values=offsets) -> str: - for tag, value in zip(( - "TopAnchorOffset", "BottomAnchorOffset", - "LeftAnchorOffset", "RightAnchorOffset"), values): - block = set_value(block, tag, value) - return block - source = change_item(source, "StaticAnimation", name, high_edge) - - source = change_item( - source, "StaticAnimation", "A_AttackIndicatorAnimFill", - lambda block: set_value( - block, "TopAnchorOffset", PLAYER_HIGH_VISIBILITY_SUBWINDOW_TOP), - ) - source = change_item( - source, "Screen", "PlayerSubWindow", - lambda block: set_value( - block, "TopAnchorOffset", PLAYER_HIGH_VISIBILITY_SUBWINDOW_TOP), - ) - source = change_item( - source, "Screen", "PW_BuffWindow", - lambda block: set_value( - block, "BottomAnchorOffset", - PLAYER_HIGH_VISIBILITY_SUBWINDOW_TOP + 2), - ) - for name, top, bottom in ( - ("PW_DragBox", 53, 73), - ("PW_DragBox2", 91, 181), - ("PWDragBox3", 53, 73)): - def compact_drag(block: str, wanted_top=top, - wanted_bottom=bottom) -> str: - block = set_value(block, "TopAnchorOffset", wanted_top) - return set_value(block, "BottomAnchorOffset", wanted_bottom) - source = change_item(source, "DragBox", name, compact_drag) - - def compact_root(block: str) -> str: - block = set_value( - block, "MenuName", PLAYER_HIGH_VISIBILITY_MENU_NAME) - block = set_container( - block, "Size", CX=PLAYER_HIGH_VISIBILITY_SIZE[0], - CY=PLAYER_HIGH_VISIBILITY_SIZE[1]) - block = set_value(block, "MinVSize", PLAYER_HIGH_VISIBILITY_SIZE[1]) - return set_or_add_value( - block, "MaxVSize", PLAYER_HIGH_VISIBILITY_SIZE[1], - after="MinVSize") - - source = change_item( - source, "Screen", "PlayerWindow", compact_root, - ) - write_ascii(SKIN / PLAYER_HIGH_VISIBILITY_VARIANT, source) - - def style_experience_gauges() -> None: """One color identity per progression bar, everywhere it appears. @@ -1471,7 +1367,6 @@ def main() -> int: style_experience_gauges() style_raid() sync_canonical_variants() - style_high_visibility_player_variant() register_spell_ledger_assets() style_spell_ledger_variant() print("Combat Command Center restyle: complete") From 7a39465e2d3a64ccbc7e395912f3dfed911d2640 Mon Sep 17 00:00:00 2001 From: itsspin Date: Mon, 10 Aug 2026 19:20:15 -0500 Subject: [PATCH 2/2] Fix Loremaster settings toggle blanking --- loremaster-desktop/src/styles.css | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/loremaster-desktop/src/styles.css b/loremaster-desktop/src/styles.css index 895dd02..61c1c20 100644 --- a/loremaster-desktop/src/styles.css +++ b/loremaster-desktop/src/styles.css @@ -359,12 +359,17 @@ body.control-window { background: transparent; } .settings-panel button:disabled { opacity: .55; cursor: wait; } .settings-card.update-card .update-ready { color: #08110f; border-color: #45e3a1; background: #45e3a1; } -.settings-toggle { display: flex; align-items: center; gap: 12px; min-height: 39px; border-top: 1px solid rgba(91,123,151,.13); cursor: pointer; } +.settings-toggle { position: relative; display: flex; align-items: center; gap: 12px; min-height: 39px; border-top: 1px solid rgba(91,123,151,.13); cursor: pointer; } .settings-toggle > span { min-width: 0; display: grid; gap: 2px; } .settings-toggle > span b { color: #dce9f1; font: 600 10px "Segoe UI", sans-serif; letter-spacing: 0; } .settings-toggle > span small { color: var(--dim); font: 400 8px "Segoe UI", sans-serif; letter-spacing: 0; } -.settings-toggle input { position: absolute; opacity: 0; pointer-events: none; } +.settings-toggle input { + position: absolute; top: 0; left: 0; width: 1px; height: 1px; + margin: 0; padding: 0; border: 0; overflow: hidden; white-space: nowrap; + clip-path: inset(50%); +} .settings-toggle > i { width: 31px; height: 17px; flex: 0 0 auto; margin-left: auto; position: relative; border: 1px solid var(--line); border-radius: 12px; background: #0a0e14; transition: 150ms ease; } +.settings-toggle input:focus-visible + i { outline: 2px solid var(--cyan); outline-offset: 2px; } .settings-toggle > i::after { content: ""; position: absolute; width: 11px; height: 11px; left: 2px; top: 2px; border-radius: 50%; background: var(--dim); transition: 150ms ease; } .settings-toggle input:checked + i { border-color: rgba(69,227,161,.65); background: rgba(29,94,72,.44); } .settings-toggle input:checked + i::after { transform: translateX(14px); background: #45e3a1; box-shadow: 0 0 7px rgba(69,227,161,.55); }