From 727f469e93032aad61998a08bd1f1a65652a6dcd Mon Sep 17 00:00:00 2001 From: Shu-Ying <1754798088@qq.com> Date: Fri, 23 Oct 2026 00:38:05 +0800 Subject: [PATCH] =?UTF-8?q?fixed=20#=20=E6=9B=B4=E6=94=B9=E4=B8=AA?= =?UTF-8?q?=E4=BA=BAHUD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 3 + mengsan/assets/cards/README.md | 2 +- mengsan/assets/relics/manifest.json | 2 +- mengsan/assets/status/aggression_power.png | Bin 0 -> 4524 bytes mengsan/assets/status/artifact_power.png | Bin 0 -> 5717 bytes mengsan/assets/status/automation_power.png | Bin 0 -> 4452 bytes mengsan/assets/status/barricade_power.png | Bin 0 -> 2828 bytes .../assets/status/beacon_of_hope_power.png | Bin 0 -> 5248 bytes .../assets/status/block_next_turn_power.png | Bin 0 -> 4275 bytes mengsan/assets/status/calamity_power.png | Bin 0 -> 5331 bytes mengsan/assets/status/colossus_power.png | Bin 0 -> 3875 bytes mengsan/assets/status/constrict_power.png | Bin 0 -> 4543 bytes mengsan/assets/status/corruption_power.png | Bin 0 -> 4822 bytes .../assets/status/crimson_mantle_power.png | Bin 0 -> 4706 bytes mengsan/assets/status/curious_power.png | Bin 0 -> 4106 bytes mengsan/assets/status/dark_embrace_power.png | Bin 0 -> 5545 bytes mengsan/assets/status/demesne_power.png | Bin 0 -> 5817 bytes mengsan/assets/status/demon_form_power.png | Bin 0 -> 4728 bytes mengsan/assets/status/dexterity_power.png | Bin 0 -> 3073 bytes .../status/draw_cards_next_turn_power.png | Bin 0 -> 3178 bytes .../assets/status/energy_next_turn_power.png | Bin 0 -> 2896 bytes mengsan/assets/status/entropy_power.png | Bin 0 -> 4849 bytes mengsan/assets/status/fasten_power.png | Bin 0 -> 4680 bytes mengsan/assets/status/feel_no_pain_power.png | Bin 0 -> 4244 bytes mengsan/assets/status/flame_barrier_power.png | Bin 0 -> 4786 bytes mengsan/assets/status/frail_power.png | Bin 0 -> 3945 bytes mengsan/assets/status/free_attack_power.png | Bin 0 -> 4223 bytes mengsan/assets/status/hellraiser_power.png | Bin 0 -> 4296 bytes mengsan/assets/status/inferno_power.png | Bin 0 -> 5996 bytes mengsan/assets/status/infested_power.png | Bin 0 -> 3554 bytes mengsan/assets/status/intangible_power.png | Bin 0 -> 4398 bytes mengsan/assets/status/juggernaut_power.png | Bin 0 -> 5096 bytes mengsan/assets/status/juggling_power.png | Bin 0 -> 4512 bytes mengsan/assets/status/manifest.json | 427 ++++++++++++++++++ mengsan/assets/status/mayhem_power.png | Bin 0 -> 5287 bytes mengsan/assets/status/no_block_power.png | Bin 0 -> 4592 bytes mengsan/assets/status/no_draw_power.png | Bin 0 -> 4335 bytes .../assets/status/no_energy_gain_power.png | Bin 0 -> 6746 bytes mengsan/assets/status/nostalgia_power.png | Bin 0 -> 3856 bytes mengsan/assets/status/one_two_punch_power.png | Bin 0 -> 3986 bytes mengsan/assets/status/panache_power.png | Bin 0 -> 3489 bytes mengsan/assets/status/plating_power.png | Bin 0 -> 5036 bytes mengsan/assets/status/plow_power.png | Bin 0 -> 5865 bytes mengsan/assets/status/prep_time_power.png | Bin 0 -> 6445 bytes mengsan/assets/status/rage_power.png | Bin 0 -> 4937 bytes mengsan/assets/status/retain_hand_power.png | Bin 0 -> 4225 bytes mengsan/assets/status/ringing_power.png | Bin 0 -> 5038 bytes .../assets/status/rolling_boulder_power.png | Bin 0 -> 4422 bytes mengsan/assets/status/rupture_power.png | Bin 0 -> 3897 bytes mengsan/assets/status/shrink_power.png | Bin 0 -> 4258 bytes mengsan/assets/status/slippery_power.png | Bin 0 -> 4722 bytes mengsan/assets/status/slow_power.png | Bin 0 -> 5762 bytes mengsan/assets/status/stampede_power.png | Bin 0 -> 3357 bytes mengsan/assets/status/strength_power.png | Bin 0 -> 3435 bytes mengsan/assets/status/tangled_power.png | Bin 0 -> 5754 bytes mengsan/assets/status/tank_power.png | Bin 0 -> 3191 bytes mengsan/assets/status/territorial_power.png | Bin 0 -> 3829 bytes mengsan/assets/status/the_bomb_power.png | Bin 0 -> 4421 bytes mengsan/assets/status/the_gambit_power.png | Bin 0 -> 3051 bytes mengsan/assets/status/unmovable_power.png | Bin 0 -> 4784 bytes mengsan/assets/status/vicious_power.png | Bin 0 -> 3247 bytes mengsan/assets/status/vigor_power.png | Bin 0 -> 5912 bytes mengsan/assets/status/vulnerable_power.png | Bin 0 -> 3725 bytes mengsan/assets/status/weak_power.png | Bin 0 -> 4738 bytes mengsan/battle/status-sources.js | 26 ++ mengsan/cards/packs/README.md | 2 +- mengsan/cards/packs/liubei/advanced.js | 7 +- mengsan/cards/packs/liubei/data.js | 2 +- mengsan/cards/packs/liubei/runtime.js | 10 +- mengsan/cards/packs/shared/runtime.js | 2 + mengsan/docs/unified-battle-hud-20261021.md | 98 ++++ mengsan/mode.js | 12 +- mengsan/relics/ASSETS.md | 2 +- mengsan/relics/IMPLEMENTATION-20261006.md | 30 +- mengsan/relics/battle.js | 1 + mengsan/relics/catalog.js | 18 +- mengsan/relics/definitions.js | 4 +- mengsan/tools/import-status-icons.cjs | 24 + mengsan/tools/import-sts2-relics.py | 10 +- mengsan/tools/test-battle-hud.cjs | 336 ++++++++++++++ mengsan/tools/test-hud-status.cjs | 58 +++ mengsan/ui/hand/index.js | 23 +- mengsan/ui/hand/input.js | 2 +- mengsan/ui/hud/index.js | 279 ++++++++++++ mengsan/ui/hud/overlays.js | 100 ++++ mengsan/ui/hud/status-model.js | 119 +++++ mengsan/ui/hud/style.css | 128 ++++++ mengsan/ui/relics.js | 4 +- mengsan/ui/style.css | 20 +- 89 files changed, 1692 insertions(+), 59 deletions(-) create mode 100644 mengsan/assets/status/aggression_power.png create mode 100644 mengsan/assets/status/artifact_power.png create mode 100644 mengsan/assets/status/automation_power.png create mode 100644 mengsan/assets/status/barricade_power.png create mode 100644 mengsan/assets/status/beacon_of_hope_power.png create mode 100644 mengsan/assets/status/block_next_turn_power.png create mode 100644 mengsan/assets/status/calamity_power.png create mode 100644 mengsan/assets/status/colossus_power.png create mode 100644 mengsan/assets/status/constrict_power.png create mode 100644 mengsan/assets/status/corruption_power.png create mode 100644 mengsan/assets/status/crimson_mantle_power.png create mode 100644 mengsan/assets/status/curious_power.png create mode 100644 mengsan/assets/status/dark_embrace_power.png create mode 100644 mengsan/assets/status/demesne_power.png create mode 100644 mengsan/assets/status/demon_form_power.png create mode 100644 mengsan/assets/status/dexterity_power.png create mode 100644 mengsan/assets/status/draw_cards_next_turn_power.png create mode 100644 mengsan/assets/status/energy_next_turn_power.png create mode 100644 mengsan/assets/status/entropy_power.png create mode 100644 mengsan/assets/status/fasten_power.png create mode 100644 mengsan/assets/status/feel_no_pain_power.png create mode 100644 mengsan/assets/status/flame_barrier_power.png create mode 100644 mengsan/assets/status/frail_power.png create mode 100644 mengsan/assets/status/free_attack_power.png create mode 100644 mengsan/assets/status/hellraiser_power.png create mode 100644 mengsan/assets/status/inferno_power.png create mode 100644 mengsan/assets/status/infested_power.png create mode 100644 mengsan/assets/status/intangible_power.png create mode 100644 mengsan/assets/status/juggernaut_power.png create mode 100644 mengsan/assets/status/juggling_power.png create mode 100644 mengsan/assets/status/manifest.json create mode 100644 mengsan/assets/status/mayhem_power.png create mode 100644 mengsan/assets/status/no_block_power.png create mode 100644 mengsan/assets/status/no_draw_power.png create mode 100644 mengsan/assets/status/no_energy_gain_power.png create mode 100644 mengsan/assets/status/nostalgia_power.png create mode 100644 mengsan/assets/status/one_two_punch_power.png create mode 100644 mengsan/assets/status/panache_power.png create mode 100644 mengsan/assets/status/plating_power.png create mode 100644 mengsan/assets/status/plow_power.png create mode 100644 mengsan/assets/status/prep_time_power.png create mode 100644 mengsan/assets/status/rage_power.png create mode 100644 mengsan/assets/status/retain_hand_power.png create mode 100644 mengsan/assets/status/ringing_power.png create mode 100644 mengsan/assets/status/rolling_boulder_power.png create mode 100644 mengsan/assets/status/rupture_power.png create mode 100644 mengsan/assets/status/shrink_power.png create mode 100644 mengsan/assets/status/slippery_power.png create mode 100644 mengsan/assets/status/slow_power.png create mode 100644 mengsan/assets/status/stampede_power.png create mode 100644 mengsan/assets/status/strength_power.png create mode 100644 mengsan/assets/status/tangled_power.png create mode 100644 mengsan/assets/status/tank_power.png create mode 100644 mengsan/assets/status/territorial_power.png create mode 100644 mengsan/assets/status/the_bomb_power.png create mode 100644 mengsan/assets/status/the_gambit_power.png create mode 100644 mengsan/assets/status/unmovable_power.png create mode 100644 mengsan/assets/status/vicious_power.png create mode 100644 mengsan/assets/status/vigor_power.png create mode 100644 mengsan/assets/status/vulnerable_power.png create mode 100644 mengsan/assets/status/weak_power.png create mode 100644 mengsan/battle/status-sources.js create mode 100644 mengsan/docs/unified-battle-hud-20261021.md create mode 100644 mengsan/tools/import-status-icons.cjs create mode 100644 mengsan/tools/test-battle-hud.cjs create mode 100644 mengsan/tools/test-hud-status.cjs create mode 100644 mengsan/ui/hud/index.js create mode 100644 mengsan/ui/hud/overlays.js create mode 100644 mengsan/ui/hud/status-model.js create mode 100644 mengsan/ui/hud/style.css diff --git a/.gitignore b/.gitignore index 94cb61c..a1706ce 100644 --- a/.gitignore +++ b/.gitignore @@ -16,6 +16,9 @@ tools/*.mjs *.mjs *.cjs +!/mengsan/tools/test-hud-status.cjs +!/mengsan/tools/test-battle-hud.cjs +!/mengsan/tools/import-status-icons.cjs /.update_tmp/ /.planning/ diff --git a/mengsan/assets/cards/README.md b/mengsan/assets/cards/README.md index b9a0e61..03b5d48 100644 --- a/mengsan/assets/cards/README.md +++ b/mengsan/assets/cards/README.md @@ -1,6 +1,6 @@ # 梦三卡牌立绘规范 -2026-10-03:铁甲战士94张已全部接入:新增67、沿用27、暂缓0;另有衍生巨石。68张新增完整5:7水墨立绘使用 `mengsan_ic_*.png`。刘备专属牌组与空无色牌组已分目录和牌组类,详情见 [制作清单](../../../../../sts2-card-capture-20261003/generation/铁甲战士制作清单.md)、[全部立绘预览](../../../../../sts2-card-capture-20261003/generation/铁甲战士立绘预览.md) 及 [牌组结构](../../cards/packs/README.md)。尚未进行实机验收。 +2026-10-03:刘备94张已全部接入:新增67、沿用27、暂缓0;另有衍生巨石。68张新增完整5:7水墨立绘使用 `mengsan_ic_*.png`。刘备专属牌组与空无色牌组已分目录和牌组类,详情见 [制作清单](../../../../../sts2-card-capture-20261003/generation/刘备制作清单.md)、[全部立绘预览](../../../../../sts2-card-capture-20261003/generation/刘备立绘预览.md) 及 [牌组结构](../../cards/packs/README.md)。尚未进行实机验收。 用户于 2026-10-02 指定以截图 `C:\Users\Diuse\Downloads\Ai\49.png` 中“防御”为同系列基准。 diff --git a/mengsan/assets/relics/manifest.json b/mengsan/assets/relics/manifest.json index 7313e11..1cf05a3 100644 --- a/mengsan/assets/relics/manifest.json +++ b/mengsan/assets/relics/manifest.json @@ -3284,7 +3284,7 @@ } ], "notes": [ - "美味饼干使用铁甲战士版本;四个其他角色版本仍保留在来源图集中。", + "美味饼干使用刘备版本;四个其他角色版本仍保留在来源图集中。", "遗忘之魂映射 lost_soul.png;布质果实映射 looming_fruit_2.png。", "图标是用户提供的原游戏拆包图片,逐字节复制,未重绘。" ] diff --git a/mengsan/assets/status/aggression_power.png b/mengsan/assets/status/aggression_power.png new file mode 100644 index 0000000000000000000000000000000000000000..07fc1fcac348527543e5d4e21129ef0c5b1e2470 GIT binary patch literal 4524 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 KMNUMnLSTXs4N-9b literal 0 HcmV?d00001 diff --git a/mengsan/assets/status/artifact_power.png b/mengsan/assets/status/artifact_power.png new file mode 100644 index 0000000000000000000000000000000000000000..70a8b0d6e36b62ec02c3ac31012b6281df9d3817 GIT binary patch literal 5717 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 H-=zNoG^Y6e literal 0 HcmV?d00001 diff --git a/mengsan/assets/status/calamity_power.png b/mengsan/assets/status/calamity_power.png new file mode 100644 index 0000000000000000000000000000000000000000..e716d14f10d872cdfb7b8d157b8f8d62233f3b54 GIT binary patch literal 5331 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 literal 0 HcmV?d00001 diff --git a/mengsan/assets/status/colossus_power.png b/mengsan/assets/status/colossus_power.png new file mode 100644 index 0000000000000000000000000000000000000000..fc19ba7885e8bb0d20659611bbe9c1f416873fd0 GIT binary patch literal 3875 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 literal 0 HcmV?d00001 diff --git a/mengsan/assets/status/constrict_power.png b/mengsan/assets/status/constrict_power.png new file mode 100644 index 0000000000000000000000000000000000000000..9b1f4a48a924ef9012c0512b33049c084d9c6030 GIT binary patch literal 4543 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 literal 0 HcmV?d00001 diff --git a/mengsan/assets/status/crimson_mantle_power.png b/mengsan/assets/status/crimson_mantle_power.png new file mode 100644 index 0000000000000000000000000000000000000000..c294e7b4caa09aa2523e372d18ee87d6b6e9f155 GIT binary patch literal 4706 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 literal 0 HcmV?d00001 diff --git a/mengsan/assets/status/curious_power.png b/mengsan/assets/status/curious_power.png new file mode 100644 index 0000000000000000000000000000000000000000..4b7a060397d77f2fbd80c4caf8ec707bbe24a0b6 GIT binary patch literal 4106 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 IM6N<$g5XoYivR!s literal 0 HcmV?d00001 diff --git a/mengsan/assets/status/dark_embrace_power.png b/mengsan/assets/status/dark_embrace_power.png new file mode 100644 index 0000000000000000000000000000000000000000..ff8dd8bb0816352b9cd4c5cce05cbe97c44d51e4 GIT binary patch literal 5545 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

e1S;u zA=2%uz&rgm?Lf3;O;C8Mskwwh!RDlxiZD`(A&5piSI&3i2`dYsw&TW%oGSe|9F>yOtvgt6 z|40vQrsxvn8NENj2MvRR39Um3CB6Mw!U6ls`bl*i~-zaIBoKuBTq2bWC!-_2jxpZ*bJYh0H< zzMCarP9fbP@5{^YDLcEdzTkCPMo6ftb{48jdM z4h=Or-IacLWG5ZTgWvx}1p37j+4j3^tGS8ZspFP$1<(bDO^!VHlE{B%H1GvjvF zaIaDzrx*LU^5>El*KemA+W~ADS#m3(OL;EQC8C8$a+%1ood8ruIKIn@mL^UT+z1B5 z6n7m|021EVO@@}QK3n77Cp8|^hxZuO_%a~T0>)qFIoqvOkowLPxrnY^#ydh* zHJ%Um4INg>Xtm@u|4R^)RF)t9>T$SlPcA&5c@Hi6*+Hb@^X~HpqsbO9BsC2A@=1c7 zX^6KUB?U^UShOnsNQxVWmuvdninh%W;nqjJapb%%-u)_{PEAITguZ8*cejR*0{g0U zZ7-YUqv)g(o}OA1excqJ-PQK|FpeoGx-Kvz4%=m9Ed^+j_W8bl?(Dxlei1o&%6ehT zN!{EUywcz;R(DE-l|TDtKXIZ00F|qfkt3GtCa zk}_aBxt4<{&^$M9y=tF9&7lixJ5nT{KR&#W%$hZI?mRXzSdO8~p?h_&PWnrZF`r`6 z;z8kQaP6&juV3*Z%=TaLEVf?~^f(I5$+c>B8epKLw0D=;B*U6RSx(_PJJ{n^e_ZxW zJ<05<_riz%6>7j(m@_~WRcpNY90zb)YlQEdErJdha+3rE-5+3ppqTHfqj^Xs_6YgS z>ObCz`fOQ5J3VvVy2KK(GKP`d4zR*uzt}ePHwd|kYT8R@;Su))j!C*cS$k?q4MBFR zyeP5Bh9mV-)(U>x_uuMgM3HAkEoVW|XS^4MDRYHF50(7F@DwW8mxe>{Y7dU>C3!2v zk9D&G@~&QKX9@Ev6`B$zwsDMt@1*aC$*uoI_WK(n%9SdGg$dN+2?7Itutj^iZSx0~ zE{^qppeArGw}KDcF)mkOm>5d$$K$|j9}(nIZrpgreUk7A>y@|1ySOuk^RSkA z{Z~KUL9sJ?JM5Ui)Ut#haNpf9SP&)lvI)xCJD)2{3OoC3gQ5qKL?JrTdqROB<5vB& zru*2v-y1RVU@vO$h1FH0L+$cPcQSq_;gkPpl@DUO&M}F#Z%z~Kzx-+vy`(tc%a>~V TOUXiPuL2#-dm7bhw&DK+;aB}q literal 0 HcmV?d00001 diff --git a/mengsan/assets/status/demesne_power.png b/mengsan/assets/status/demesne_power.png new file mode 100644 index 0000000000000000000000000000000000000000..c0f5440489ef4ed5b5e4c5bf8a0ed40179a2a02e GIT binary patch literal 5817 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 D-vI*K literal 0 HcmV?d00001 diff --git a/mengsan/assets/status/demon_form_power.png b/mengsan/assets/status/demon_form_power.png new file mode 100644 index 0000000000000000000000000000000000000000..63c627e8db253981ff6fbfd891eda46f9a793969 GIT binary patch literal 4728 zcmV-;5{K=HP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D5)Da2K~#8N-J1(= zT-ABUzk9W^*T%M1+K1PYEbFn7^;ijct%oJ8RxdxKm1IlCC76k6X)J%$B5Fi3f zV+a`_*aR2S7;u9fU>ax}(qQUzg5$cxO+8IwJ3ty|LNhivl-jba$LajfJ?HA|(cP7V zMKbL-^Y>lvYVSS&-}%nto_m&P>XBv=(R7p;1{sDW(=_>!q)d|^@xGKA`gx}#LsR0J zry1g;b4;RKgQ(IVDuhg;Y?CNUzqnIK2&n)#1bI}b^QLaz68<-} zNRuy2qU8qBr-*1P5q(MMZdE4HEhbT$Nt7XMIJ%i;@N-y*XgLvml8EjU8c<~t-C+`a z&LnCFBw?IGP|ZtCCEP-P?6xkjBP-oCP@6ITu?>rS&-N|yezV=@d1AR|-XmGFT!65d zh#nMLp`R>OOhPJ$h_-vuUH1~v9XN)rn)6U+AagJDv26d-(X0hu^Q5}~Vuw8HWze!{ zvTO1H@m(+v?XE2T(aE;jvm-sRF|IB;c(Tm);lmUL`4WhpQgj{jnq}SAI#{ez7$4z*afj zX;#hi3lEg$e~88qC}G~oh+z0pDFKyCSPXn#%VkL7#N^}*miB6@&`R^sF?BGY9Z zCxo7kCQ-iZPuTkQ51=z`E6zfD!zD){SuwVHP|k6Utc{Jm(ol7Zh_-psc^?(it}zY( z0sz#yq^_FBQ8j<6qxS5^+`zN*T&^!lNpSs(eEXn0w;Sf6Dx6#$mh{j87(`wPU_(ye zMf5GQFH(gJJy;h$kqiK|yQ=s{fIvi#5K)=DMjD@#C=k+#uE$Ab%Bkj60DG#6k9g8u zcPT^A$AmZlMKFJZVro3~w9o;FK<3C%1(N6Ohjb9h06;s-3SJ{3R1(A^0f0$VEKfF` zQsd?a;|(J)e}7rQAtKr$0KjxbVws83($Y#@E>~36yo?V408uDF;HXECh+0L>e)hWT zz|+Y9Kpg=O{tf_mQ{Vvb4`dL1(rub|JWyVESl0AtZ!?32dZME^zTU9xG!el#6hm7U zhKw|AwkFPLe=c9+JNE2K3tpha;QyE3QP0iKFTym8P`Y8<<0iW6xk&is!FW4^hI^X1 zhT_pt*4N6Os|){|$RK2`heOASOv6AgefPrIv+h0L)p#)(fHtq^Nn!ru{JU10w%hfD z0xF-u05ll@DdlZ+oF=Zt%jy6?KnMc>G#GFHjQ}vFKo~<-qj?JewKf358msT#m=pLL zwWE^&pto1nol|PxDzH`ac3L}SfHW-rR+>=_%GXA^Vc2p(;)BUDK!%&>(;^Gr007jy zngswLvH$=!sQ_*Ufahz=Pv`(-?Z4Vk`7^cl)q>fztkfXnB7$%o4ob@aeti)fg8qGg zlE5SY`58ayL;$^NGf)BWY!H2$(s^T~;jw+moY{Z*KWn1rFZZ@EsnOmRHrU-fjN?<) zC9fNXahGWrH>ib>F4V%=047E#EiJ9XFpN(?MD%$gx=|j})6zE1HjEm`P2{ohh|mq| z*A&yTMOm@+p8307M0cbS72%|d03ha_zehE%19-eD^aBClS`~l{ zy)Y7hVHmwcbgNLp-J33#%k@Q7M6{8JFq$m>kO0P<0DLxo(ccOHtr)Uu0AN$DZ$GB6 zmwQ`Aod75q;0OQ=l*0H7qV@A!uAQp7f}VZ%ROG*QIJWF96z~_TYR(;Nt3D%-FVuxk zK$~*>2Rvdzrphpkdc!d0r~p(54gef8;PI;BqX6I{+C(mw3pF$;fahz< z_Y9)ATrYs>YjXSt&UCH#0Me(fa*kooIJM9B*MyI6F3NkUE^`6y?zWpmJ58cH1&FC+ zz+?bEB>@an(_$}w553Q-~Vb= z{qNL~WT?AoY^b|w6dLZ~={a`UN>hFuQZ(8VV`KeoW6(%%bmWDa@bUg&;8BqcIIdEg zgTz`aOe%mzG1uPG;rBdovZMAaW?pg> zK@W`AYGIr-+S8mM7>CAZqwQ>eBz#OlFbrdj;(rMdeFXpp;|;$B00B2O0MQ2w^ydWj zjrF%V0+3noVr}_x0RZh25Ttpe=r+{4I`x#srF6r(oB*gzM9%Oe1e541hG9ft-n5$C z*8ZUP8JLIk^Gg6jl!K1JL^j2|z+HiMGMG&^Fb4Dgbg6Fo`y5FY?id^CiA?~&*0&Es8*>6*cU#aRd~BU%7=J$7Fb0mrmi;Oj z07wFW-tUSIK2}wHgQ@%Fe1SG3-#eM0>Djt*$n{F45JDF zTD%#L{$B>5f9?ceV@}{D0ifTSyjaR4qT8XJSl-o_y1MuJPfz#mdWQz*}+-sS{h za-_^KOF00!Na-TF4geml2p{?X2mlKrm}V;g#PoGsMF0?*>wjqK0PvnF{qv7TL)}fx z>hV)wQ=0$pt|ksZxyQhoA^?~w00eIa|4^uVbg% z>-cM2+v)mh?Vnw};ysub0Pw(tFV)Ehg?M0%_d3Lbj9r8AhV%MFM6YpNTor0YFT_mh zcbFjcwX*+Mxq{_nWw9OQh5WjgP#$Z>njm%JbZs#3q?j=Al^}>ac6eHfC&0VP2-5tMHDPYN(Cg(Y4+Pjds~h<> zbpV6$#t{MF9XHW^kV#Z2%{u{*8GztT!R2z@_Iz#mze@m@yT=QK*SPR~;SdXYJY3P> z%tMgozpj`^2IMCPFb4Bz_o{g}(I2ViZ2;;DG+s%W)=Dv+#(d^refTH*`CL58RH0yh zQ5s_2j0{%p_p@w|hgAgv>}MUdR-vu{f;D+*!kPfv6Dem|3l^{t%nKD{WwEf&$Ih;< z4CT76#O3_uc69!-4)&*y&K5q)0=aDP=P2T<(uu@aw; z2%DDp4(I^(E)UxPke(6(^mJW08|!OTj7@Fc0Q0!pQ_ZUYN<}C5xnisHmACIO z-yaO%!N;cs04(;{p{GB0u5L=w+lUhA7$0m8`u<7>@XswZY@x?v1CS7KMB%?$UBV$? zu5R@UsR0ZM^Di}4C74$MpbrRSX0pT4Y8wEuKmdSoD4b{^r9VW%gHldMnI!Rhh0t7j zNCkkI7&@Wl0Urx!ZPc!*1)1!|qQ$(Be9Z1{vTMxI{Ms0AK8rIwtVo;(N2pi`wSR3v zE*o9jVn6i2>vvW~&toALoi~=`l_yeSx^LKW44shEEb(+}^qd4B=K{Bs6mS4AoD4!| zZjk+QwKYOW2&(zZSman6V{fmjXG?u(Ib@FpmeVJW}-dYD@_LPbI=CD$#BILGKeh10(M2z%}`~>^qHD^V*jguy=Vms|otJaR`|Z%MP$xN($MDjyg8H zHf95`r2x1tn{RvofEMXtCIQF{u$#gDNXeV5zim7VdZHYFgdp|vmG$iPmI!+_TFnl} zBJ3@U1nXM3BmfEFgLosq&xd}qW(7B`Dj5K*X3sVZtn%3DkC2m{NdP1dxqS{&W{mZC zC{l1$`T&c!GgY!fLk~X?4zYuERS7V-aO;W@fR6%-x|{fC00Ci+A-{8>C(3SFTErpZ z|8f|WQ{Vnz;9(+q*hREnnpTw(fRQ8v5Yo7m64(YiurV0;h7$l7Sf7{8%(-*f?d2hM z5w+LX%HHi3=4J0MLD(>?TUj|o;yZ_8%UPvAz~;^KBmjWKy#MFeAtnIKL#FBgQU(Ad z+d7^CKo$VFiMGEG3BRraki+7cH4QA=lfl)scoBP}wPt+ilLpt}hNqd0^Q<3elXkgY>V84ha!385KRquxz~-J5`L5&#C{jWz_d zSu_C&0s3;dl&3krOYDiVSDPYib7_cutFDS&=(K7aI@(stR^|q|d1!53E^h`%dzt?D zJDK_-1N3>z%m8ruOm2U36ScXCc0xaGU-pjva1=H9rErK(U5k8P=9%YV{Y!HBd#%|) zzJ7pV4ys+~XE&APvu))?EH5jI3yUl(7A<6NV^vq#h%I)cKaYp9F6&O!CyJJ^S8>v5 zFJdwPdI+lg21D$UxKTnl8e8^j6@cvB|1^}xAyoLiEa=Iw$9DW55Q@B+ToQ(y3jn~O zmKttYg&@p-Aojg-o(}f7joe>CQ|%Pa9xbwPi$VA&nmJ! zY|nDbyxc5xD7x$-lvyJ06GUL^41TY(BQ$T$ zPHCP?n>b+>$;W;`5Gz5y=(ILJNC0;h=f5m>qzLmRYI&|WrV9X}1CY%^32b8r1imW! z=+z}ZZ~|aYh=f%0-)oNiw9Uh}x6AD~*DJmK%*BTRfRF&xG1nomD9Irp8=j3+9@7D! z_GKnW^P89EA9TCj>Ml}!SK3U5?B1pyDJC51cwAu;-D(ouD}RvjKsf)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D3zkVlK~#8N<(mso zRM#1R|9f}s+_tvG#8;~6U^W`@F^TmN(_m6Vd=Rx6tyQrm3d^dj8nvb>>@FZ8d08|X z5+6v67GsQn5=Co@$uu*yZCVAE_^8B3m`*w)qScN&DaoGBf9^SV&po>ftSm&5-}&4X zfw|xRpL_0kEkHYjMNtf_stPJcQ4o9!stVl{i}H}FLJtMMj$Z_zf5~A{6h#ETN#u?Q zLsB9{!~?);feG?AP%A|TlhYhuYsj(^^3@sQgC-6;!rs3M08Rj~>Ax@_9!g%dhD>P3 zMF`1IVDKO54gm83ARmQiY)(D$8Y#KyJmS7-OB~GQ@pVG8@)krj(IF8+E*w;vp|NUb zAid-I<)bi)XPqygEV_`}WJ?@;$VfmJaDW2+1bG@*@lf&>i^U*n!3D5);@|~@kTn4S zD2zM=0O_DY29mIF@`3GF%Y1J)9U(ie9w1qty+P*u<9V{MHk&NDm`BFF@#{~z_U)Pn z04oIWcbLM|`{}Tx=l~{x)2a{!8AdiEm&Xgvq2d7P_l+D-kbdl?y5g_iCn&%DN*USp z-$PVBr7DBUJ5G5>vNxv*8Jax$sFVN)0QBaU8j-wo{gklLygW8Nu}O0@MN#fk6lF31 zJjcaHOpV{=+>>z#iHCT%Hw6X zO1{Mi2q_j8iiLhbuKagYi`rkcs?%AIoz3CWMZO9j!lhd)kK&jBo`kq*!%Bb9Cx#~g z$pi%)imJq8BJi?J@)%}$97sr_tqo1%*g(_90l-QTRaG-=BOfSudey9>>;76$zsq-s zyiMLGI~q%Lu9uqFeyxnWb)%eQf3}6pt6oh~Ycolz*JF_4%_J!`9+Gk@gDg0kP0~JH zOXmJ%)r}|fr~loSIQUKNN8eqmD2j^%0IL9C1^|p?Pn9;uT>vlu07g?`Owt)h$ z@_R8|vxX!L+cq=LejJ7Oe0j{zLAkA0OGx4M1C&tmyIPX>W)g?jLmV|8;;7C10>LC8 zbN=+3hKXBd*AAKU@WGgV-SN?h@**=CgBi4Sv?eC8do}=<*0c?yk`l_Fd&g7#yK_6Q z{Qk>heguUJ8_I4OFzM#xTdF)2=P-Frs@LONba@>?@O{F@qzefflPY7!4=!Z#=Iak6 zg(pECc+tR0Vl=dDSyY2fuV_pUT#Lhf*c{)N0bPf-r_^@e@>@6XcgoF3* z?k|o|5p2%Lj%#IP2NesJYY8sD=5j$u`AD%>yZrVlm!H0#c9De_*7}|Gd4A{Rb^b;F zdcmJ`EUlikfaRuAt5(xvfyzJOoJ{2lKi@~$+E_xiHI_=%6bTk=j;PCfT_XOJYPUbR z%H^MTGQ;mUo82~fxf$Q#@+8IU@pI;%Tk|cIuXg+ApN~*J(LQN^k?%0!$QR#MqAeec z+mG05-2MgUvPn|8E^oD3mwbEVt6lyD|6CJZUh3`p<2S{QA658Gkx#4336|Fv2ZH2r zRF@MQ*KhqdK|ZA_!|%M5OX62g_z1l$7E7Yu+>N=4X}}+Yv#6dnt)S3XPB`+#w-qk$ zZZ~-kvDdii+`w7?0*UubInFw~u~w^9pO=Q2=&S(Ha`S4-8#}W+!sQ1}AF;2s@^+M8 zR-RGU+2vEK-6ZYOIzwJjl%Xd15Et-h(nXnb~u9Xeg82`4`Y<%f(L zyE9n+_C|Cv9VNfu)3s#Eo|HN!zKl0*zWgSOBRx>Qr%lT@6|kOBV|uA>{+1xsbftiUum*h!-7Qd3w)Ze6`)>2hRBEUMBx=kUV{3F;MZ9 zt>!$pbWcWIvF|Y1-nidibiI^tWSK~j<>iZSEB4a?e%L>*fG&Dkpa)=mjrB~0$>WNw zj>`7IsQjp@j~+$&tquF4F5j;AJQM%bA3TkqK`xW0;wE|80R$?qu*yHc!`d1rng3(0svOF`GE34O<$IYl%QtcPV$51#vNtykD2B1o@esXb`Kx* z;L`8vMTIL)6_ZM`6_=wKvP`7t@`s7%(k3#mW>pmA-6ovpvzm}@_xH%88yu?Am!FJa z0ENqo_dS#U8Ol#gn^NAH&=VA{Kd-+iCP0>nly;VMsVcy5??3KhYWF5uxg_%ni@M zv6dZ59z&2f&+@FUUbZnt^<|kzX)k%K`V;G?eQc^ahHy)Vm8ZwN#OA@#U@?-m`}wnl z*GihUHy&Vt@3t>RIle2r`Lmh@kAF6X>n^>4^ci`gpk+o6%8H$4K^bv zFN)tO^0;07^Sq}|D2no109a}gYmGccn95s)>Q~^PN36aq*Ah{cufb(%z3MUjy1&Te z168L|w=0iFU3Gb*`mfjTy}9#N#T`-kC zNd^_%3G*kH=%+F8U_xn&hY@4~^0zm!u~&P1oV1JU$n3+5t^mM`41Rb~4V+Gng1oA# zcY{hhlaGzZ|n0<+nBL?{Ik(pI+{)R}=*g z8tKiQ2VSBme>;JL99C@uw#CtW@y_Q`>p0ALA##RXvL##bbTB{==CMO&MDP;hy= zCSa1s9AgVG5-@kek`JOS9}uVVhPW)xI^=c;Hd2xveOz8lfLly}cv=%Xz)0k0R(cu% z0L8hyCW`CwfdsT~gnsUeeE=qa_5nNrC@r4C4w9GdaZx;`UvC^y3gY49@qGt`yt6BO z!cQMh13U--cr<-gLfVu)#lFKnku5jhAxKu;CbFz5kJzi+w?vj-dAaH7x8`~^jqaNyPNF9x#xI*v6M!uM6M$78JbTmu{@FXMHW$Z0d2<3f@E&hD!dkOaPqby= zbl3qZt!R4en1O}K$I|P^dZvCToSC7A2!x7S=%5Av$@{l1`k?EM594Vd_6aJC=AX9{ zKxwS@U3hYW?HUCP`OoqMbcUew0y;1<$@9QZPNy;Yqco2Y+h+35MkW3a9n=vvSUsq8 P00000NkvXXu0mjfpaA4~ literal 0 HcmV?d00001 diff --git a/mengsan/assets/status/draw_cards_next_turn_power.png b/mengsan/assets/status/draw_cards_next_turn_power.png new file mode 100644 index 0000000000000000000000000000000000000000..86ac4ae3707bf8a6d39f97463c0e5c752c56ff3e GIT binary patch literal 3178 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 X(qG~w%3E=R00000NkvXXu0mjf9*p^b literal 0 HcmV?d00001 diff --git a/mengsan/assets/status/fasten_power.png b/mengsan/assets/status/fasten_power.png new file mode 100644 index 0000000000000000000000000000000000000000..3114d6b06efa7cddfeaf160e14974542c4010b04 GIT binary patch literal 4680 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 KMNUMnLSTaKLV||? literal 0 HcmV?d00001 diff --git a/mengsan/assets/status/feel_no_pain_power.png b/mengsan/assets/status/feel_no_pain_power.png new file mode 100644 index 0000000000000000000000000000000000000000..3163e9503c766290280431704fa80c235dc65b5a GIT binary patch literal 4244 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 z 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 literal 0 HcmV?d00001 diff --git a/mengsan/assets/status/inferno_power.png b/mengsan/assets/status/inferno_power.png new file mode 100644 index 0000000000000000000000000000000000000000..b499cf3030f8155d7b8f0898df3eaf4726c74117 GIT binary patch literal 5996 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 cA-nHzW@LL07*qoM6N<$g0SF(&j0`b literal 0 HcmV?d00001 diff --git a/mengsan/assets/status/intangible_power.png b/mengsan/assets/status/intangible_power.png new file mode 100644 index 0000000000000000000000000000000000000000..47fce037d36948bac7d31521dcc999f757cee17c GIT binary patch literal 4398 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%0A-$_l^D{ULt5^WuDj07PtmZZ0>9iIc2SbLciyc z$KDQ>7<(o^GHW6Hc+j*++MMUmxvY1?h(s*qw>PI6lE_05f1F)d)3Z#`Az^SY@hJzDXB zV1=i4VP79O&YyP{Cq(F&iKT{*Z(?fyy2sci48E+py{30pty5RGCb~4 zNUu^9>0ZBV^tU>731TV$w@j31G#VKaEK2VL+2LQf(ZS6%(aBfLURerkC$P0Nitx)7 ztga-!xt3<78p%az)yOC|Q+rNX_~reDqBz$)M!0wmDJqPrlOdr-nTfsfjzJY2``etC6RXR7ExZ^b7E7rx3^bpe{f#_guFb- zmlm+%em0-T@ThvN+>Ar^^e;|Ord{U2NKG!h_0zniG!;VE0bxxJVr{Izmak%%ksnPw zkcn&HG9qms;RS$;mo91W11^NjDJM=aN(bwAV&rLB=BNg&-2yyD-wOVOzd{#UfCRkFCZEGU zSW}Q&*pT_Lw=gj^=62Iranzy-{+nGMf{4{x*ffODZQTqmrWh_N{u(ZwpZCUC|9-+^ z@MWJo)z{@+_2OJQTlD_mot!R{0DteU;~)OI*=*m&%ZCb4470riP!013v3CtGZr#r9 z=7s|FduirZZ$s_!_?P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D6MacUK~!i%wVMlc z6jhpl|ElglnFMS?9u0&fokx>Sx|8mv2}#Hs2(O?#f-I=)&d%&Oz8|PC10E4Zz{kpn zySh3%I}T4JBPxhIMs!`!VV6BBWJuEK5R8FkFbXQWM9q+Y&wuOQ%I)e-i0J(1e5XQJ z_pSTYf9ux0w+evo8LDdjL=RPg8UUDL{+vQl7>e}KWR50%CcejxA+T6<=<_Ru`2JN# zv$XL~I zq8yZ(n->69&n&k8Ti1>mJ-Hd$;{fn;+D9jXpA5lr;-lxQyQ&Hk{}li>0KinE4pELV z5LX>nA-Ng=?tT6~-v=g1k4bU_31*Ipd*Z8Ib-kOHk3S9oKjWfV?AR*An2y0(f|>6f zlB7yv6#Yn2Gh>33#m*fwdIl@mxqaFt60NUy?vh2#G7>81hmoWT(PbnuNnurCgjI#n zB&I5mr7Ccps$WlrU=&G>cQ`^ao+Pi0i&;g@l|&mFW_Qb?R;zl0#iHa|EJ}*SqNJ)S z*i;oPrY!zIn!vi^d;qwWNEjBglHip$So34|Zag>-JGReYG`>*XCGC%P>sUzH-?^%& zvFE_tp3be)E`9Y{UGFou7aY-ssJ{RJI)*`94BSn`SYSQ?6iek?IR?6ykX%d*EYvhu zE##bI;x-iL+BQ{rlb$Em{Jr}Rhc;G+WI_7-saxFdbHSUbENWuBH)c&uNZwpCW`~dz zqR0NFrfc0#Jnv5SC;v9!9Pun|Z5li-0{{;Iz*uvgBZ3avpCk#AoM7X<-b2Anb?15x zEb7sjYjAPbbv;6mIP`R7D;K27c&I$-)*-SoM*{Vk992yA=>~%ExTKcwp|uJ~)bTMK$dhlY)^4P zmPHD2EFR)oT1b)vWlt78|JwBivZUbtMb4d3M8mF8F4-5-zR>`%Mp2Yy%Wulti-#5= z@%5YYdb{_`?Y+2rPVX15UDx~NtF!QvEw$Z(Q`@F8W)!7tqLX8>C=aMA3^h6m(=AE* z{8s9?Y?`)u^8ad7E@0i&u^Z6@v_`kcZ$8X-8hnM%)WAFQmd!Ku7!V&7gZ1F=@ zu}(0o7uE+6{Yg>>v!=c}Z41d=*jwLCkmOgdU*FrYbsB!MZ8{1`+7i#+Q}6+AqO1k* z-cXi_E~$d10^CcIvZz_IbK4C3^NyKJv}f;pJb$465{WLmId3nCQW;m06lrEzBuGq_ zqzspNiG@_12=0LJT7?rAKZt{k_2T`ND8u3 zhdn{9K~R1Lzkg`dF_s+{=XOZrAT#&A18u^vf1!x*>M$MWq39XN&Vi%6;s7M zsr%qOy!?j+`0c)W?Ac$>wx9jJ4o`2JjvZU3;TNyX#;q$#jsd_e0Bpt)F|D#%t%(+k zh3;ppcOGt09~J<>g8(pB{(hLWVsw1B{q6zZN7Q^fx71?iwp#4iIvxLS_gwtuKt1E@ zz4P(gw-)r4<|q7y|0a`{r{Ai0uWI2vYZ(d7tr+uLlKlG3`Mo4abnlthd+y~~O!Cy` zTD-XXI=p+n^VR+Y`Dg6fB*FSo!yC5ejBb5C(|&B0Eq*f>6$1q(8zr;s1kEeAZ!sjd z>ylr-e!U?{b;I`;B< z?nn|eOBV1sBweFSZgYNG(}glOp7v+=3J&L|cTG*O{Z1Y+QTC!qY8w2UNp9COd9Gm= z>tUr#_VylLgu7N3H*!h3-n8^B9o%I(w63pY@$3p*|tf@ z31ms4vDkZ&5V9)3W2yoRnXCf0i{@%%a;q-MviMyj`HX_iFsxSV0;|>f(30BphVHi) z&@JQgH~Z^*1$1xf-a8Mw8fIbV=32b4b2e`O`GnTQcs>9E%)P@sv^c#pQAZ@n8up7z-5QWw=OGu zzk{wrV#_qvk}mC;gO?91z%TaK8&Gror`vsh1c0?-g+X|Mh1Nk-P-$zmTHUhbH~Z#C zND9#lug+$YLiDEU)ZMqG+4qs0pqYt;ONQKIF*v2zkQ9*U-fCCR9Zvg>>7#5ro(VV_ zNsNt$xg@nBA@~xctd1tBa7l`X6639FN%Gr+3wmWyAxYpnH{i2tv+?D- z#xdTiccCmu=ptSWRgTAyF9$<~89Kg943)aWBngrX&Gs>HaY@hCWrcWX!z3n3keCoO zOA@{;8wnB_Bx&3=xFlICTyg#($bDGmW(+8qm&UTlB=bgN zsI(xeq|BNnSxAs9Ns{2V`{qYTQWiHapGY$vqp5O9eXK10(5+dFRTSkhMNuAn>*<S!jq+@XM zL=2V{Vz4|MaZ-X6g{;ih@Ll}aTwG&a@sTv?xIC8MFEd+($}e^ zS%{7iGe~sAu%RoD{$^UI5GBEno+)F34fCDYQS8M~c_9 zz?+G|+);QU*N)BZu}qM*R3_WUzjwCA*Hf2lqe1vO09a(maj4$mqNddlA!(td5RMcq zlLscaj4U3Q;L@9*dn~pU=i}KLKUD(Hl)ITE$p&-neUe4F81!cvl8nGOUBo>WPgQ#H z%#`9V*a@H$$bUnUJewp**^H2sMWcpEQfN|hePp67?paxopk_*P?-b?XI%gWL8<&kQ zcyjS@Ng;MkDZ(~iHU=|nc(T}yt>f$%^k(46>_jF?Er0|_u8WuP>wE`3=}cqn59DHJ zO%bCxZ!`uyX-rbirUf8NmeemhoqofjC}HrRY0J~Uay#B&XE!?$+x=PWOurp)Va15y z2mlexPD;Z6DD_}Rc>y-3C17WbAKN_X*gigoLDFYyi|~W8LY$Lmi}*cJop3F_J<-EN zLz&6gUgBk}a%BDyz`6neYQyT!R~!ZmNlcF0xMa)66ZIxag8yEWkFl1%3Rx6FVTjMH z0JzzggC7^WFqoCXmKC&pP+sSN%1q73>yL82c|aAA8%CX;-}m-!i&q?Put z=&zL;5haThOtPuQ*AsG$LJ~by;m4fVYgk2ws*xEWhA4_rNy;dRo=A;nbXNFrr{5Lv z8#ChfS=S6@mqvR@f|1R1%}Pt2Y-L`AXto1Jl;%oLmu{;~wlPV{A_;EtdC z|7w!7wAgPZhp2;>Bo2vNdPc1**U2I8%sTy89S66 zd@$LJ;V0vfM2%tI9}UW~5X{i5Y#D_FNtAGCAS5H|KVV3ba{L`FHXro4IzxqNNSvDN z$M=eJF*jBV>m1A#6)1e0WKkIA{ry2@X2%Z2_ewn&@;dNHNyhoJHC{YY;ythF4}IB! zm53;Hj|}>P7`d}Kryho6XSEkwa#QeRQ4SMrFZbf3*{PTuV~r{)6($eE0-xpr*vW@Aff z0iLS#;it7lZ2MouxwtYbAwo=K^WmH^_}?^ws`Rsy)HbOATV49Jt<{r;AzB0@;WC<( zd$GMnXGyAUHvp`N0Vs|E0D(2~L33o#nHa3(iLwG|%H+hLJCz9=1f2NkWIyilIr^2{ zKi-L7R(Y|t(1Fc4$xJTf&%(B<@eE_7fiI`@NoMpbdBtpsn<-~NNg_yVH*Aqgmkm|; zF*K=w35HywndDk$5)+aK?&5FCWP6zhPh{Azz0}ip(x^;H&MdjgnL#V%v?@>=Ugs-F zngnG@djD-DE#sfA@<*5CFhLTXm}f{Xb?DQmXp(ni*jXl9^2V?x%O=TEdHqSgSeQXC zU6ADbDE01Nly;bUR|*;o+(|DUG&!{HcJ>UT5QAkNeQTDa1+A*_dS~Hv;MtlYtcx;N z6a)L2b~{^5XmTcDQ#q}uhfA5uzu8)spXG_!B3 z^x;W%y^w79nGcnDm?T>g2{`fNssOs<^(mQ*!X@*E56AYZK}wc+Wl5X~Krdg=6Eu2M zXn0(WBxUi=UnR$!AjxBifQ_lwV2eAIWs_Y$6@AT&WwO%8)^<*n72?qnPuQf`kmTD~ ziv^EP;*zxRRYA*;lB8J8qt(Bv0F&GANM@|E#Zi-`Od8pYQvbd%@8lH9StO3zV~|7% z`kU5XTIo8hDZd;QJ`K{NY`eAtvX3Y!91x{Q#dj;F%M2u>Ks=AuGS z;ErLLG_uJb>kKR@#Yg~HO1v-vTAJ*D#PO7H8WU9flU>6W*BJHyr=w;9wgqx9m_LU7 zy(up%LP}ua+fBYKJnu=xCZ7XC;zZGwdTYNEn=(e=u_XP(ih2k(+MrnjxSx~AJ=o-8 zFp@N0UAs6IcFKjCC6CzwkI|O0n*vO(*_q5lJ8MgEeb(3rIkV(?*I4}An~oT(W*ZNn<&^FPP-Y;c!?k^k_0%KAr--hNOVYewd&#LODs; zRZ)OD6FUqaAvPKiQ#I<^wyR%mEv8u8M<0n*L4!En?9N zQa|Nykx>jLfkrS<-nPeB02Yy?jb7WNw%$_8VB(ateO;X6M zf_)=dcef_g#s{DrI!(Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D5j9CfK~#8N)te1i zRaLsj*V^ZpM>*(8L{ZF<9>K4pfu9^e2ptwXUuUi3I-3K6!nON8&%aG@&R+Zf z+wWc<@7fa50YRy=6yhvGh+ZS7(0*Q==l@M8ic0_M`V0YJk5%`ZR1J|<#14%a!lGfYUX-ijMc!^aov5ls zNldnLiMAWLF?E03IN?fK{NUpQ`?;?rga}1w+Z7=oKeBM7xWZCY3t%xbZy@O~UUw|E z-gYj*2EnwoFhRX@JdUZpaQa<95Gu=!w!Rwg_qhaNAt9ufXcxxi$Lx^=?!5GzGXN3@ zhxtQqjx80&1q7Iv1pu5`+X{-g+w53dwiB zwE&O>;^^1Q4FI5-Xq!@^JW>EW?H!V$KRU2p27UU!?VR+ztvJE<-$!HXt%dPwTXgr7 zT@3}(epX8o)kCYtT_c3N#btJCk==|A9wN{H#PZJR_e}t-gx;I)|0iJ{N3Fs8NdRy_ zD4GTcf8qczTsp-g1HjW>v>pQUmcbsoVOo~f;Qb^6fB*oB5B1LB5CY`uXdXcOJQ`Ht zK`E8zC-y(yYvVZp$V;_c>L>tG7QF0e)egYvn(QGDO6?!osq6qZH@9V8216z~y~fk= z>fORP+ug!A9Ge(ytJJeIm~I`LcE{)OE^iY;Rue*grM;-;>6M(jz=$|{>UdGZ0CjWPrm09^d4rJ$6~RTO32=IjHtIme4_ zLLVJFt?tVGjOo37IkyISciTvavSRy^F<;sKm}t9mJg!k|;$d|AWZX}X`uPksd(r5B zC4?-6<}Y1Qo}E|FubPXXS_4)b9XATw=S)s6BKa+1X8rSLd`b526 zZ^Q(St=70)hARM+(&37ttQiwD{$pYOg;!oXpYXy{S3g8w2Vs}z$y*^UJwj`%c*lS0Hy&z^72)s0)WpzzYmZR zFb)7?fcm?F9gjleqf>z1?xQ0pJM<0B&h2^i0%LmIXP-i&bO+ z2N1x0u^F@0qa$4Wk)^+)D4Fl<{9P@~FI)R|nOO04bu(u4?$Z|?(Mp&`hbbV;kMzlF zF97IJ0pQiCe(dfOLMF-PIRGrgQb&v$lPUlp3pjv8kpWtdP9UT|iiZSq?bUw6hV9vZ z4A1>3+k}Xy-}8ScOM$aY}mWfupC@tX=zR-Hh(Y7Cf3TFRSUJAOR4+ zWdNdQ&O9Rk4D$~_g8;xn!vSE&r}_Wm2hjQ6H(f@QfDj+r{{&21OJ+Ji zG@O{G{(Lgdp}QyJ8}FWoZ~TePAEw)297=g^XrW?%k{`IbIMl=Ed_X|{o9T5Bnn6{i;AO4;7)J!X+mL#Z+=ccQ+ zV!Im8&9K=@5>@q!nJgQAzc%E;n87`^!#oGzR2rB3PsD^s2H-n**meORIzI8FoB>jB z06O`!jt~GayridOW|pB-N#C-o#@*c=#fUlbhsC%mPAa!TDfQOr*wmDDoWuIN@6JdX zQuw>q$NsH4C%R6kBs07WT06^J{Pb|oy|`#fX$C){$CuCR_*qeu*A+!s`O?CrU+?%d zzu~!;=a)oGjXUyT{xKUAJ~=X9QIzF;`94V0FT{CtIthSepiKY}(sx}!=pxExLMDSD zQW$(MW?`WYaBmhjGHRmh`fR!Sa@Hheh zJBbqj7mok~5IbvDF#v4(Fz25D(7AKx*LjM|-)RYeJoQ4=7%*^dfRu&bK?9omK7QnF zu}~Cc4j@cRntck!kp++d0HwY2Zj~i8{G_O1AREMuW~bKa>dQcY5~h`2h!D zl+DW*$d69p_&_V8x$nCGY(@qcjos2j7H9!Lc|~8UOIN=I2*`l@0uT*iD=K5ikRiJc z78I$_#K`C)*x;m;I!#7^K$Zxw(TG=(*;mkxL%6wmg^BG1wvRvV<1%O!S?(UwkDSQ7-07!Z3opKJ~MfnPv10X_c zz}4amSD{zz(tchmxot}6XaMl)>zxJjkT8#9_~a>=yb1HH|B|xEB>?%luoaboI}ZSJ z7c9bz3;@Jp1oZ+#GXR`U)K&oae@OZsyEGR75Ev~|UR#k?iY$QnH_|s;?%k*F20m=F zJAbb&7WPM00B9!g7+_N}t#==9OoG@RKc#dDrSw&CB!tW+gd|cz!l-k(TBP@VLzstz zc`k=>MIoIPg>{laSOro_XHZIK3jkw7LJtB!!tA-l(wqevAh#v;B{-?etCMT~uXWe! zQD?(&vK&A6H$0X#%&p7T;O^bBar7}59B{ZW{~oM8X>*}Xajp228zp(RlIQ^?f4 z(*{wHfx2}^dCoDUCh@A4Q)t_F6)=v8gQ)#44>OsvHx3;5Rk6Q+Rk_8|@ShB(zm_J!(v8b}a`vHK;0t0VDlY8{QE>4P$5Im0#2rv%eN*n<0y=j7D7o9?0fqA_` zRtn=n7s?~*Tax@)fS{DF<{HWY-0Prq&P3P(s1v0r@A~?luNyyJg}x68YOD?pR$D3C zkHNvJ&~H2*-z^p^eA%i;|05dI-Ve-9QQC%lo-}3_6oplNe`~7x?-dd1-^(Yf7p_iG zFIgDT^wx|fNy#{;X26A+WY$mJ$z;;}gJn_UyVIFc}vPH=N zDlLIONdTq;fIJSeRCivKjf45_rpMld`Kp`Gs^46R;KqfTn$`edx>z1*yL>%T{k9^~ zDnmefLNWk$_d`vlJ+k?S1pwvw`(KbCh&Mb~8VUehJ#;$u%r0BM@u{z1{$fRBgWXu$ z0SE{H07(EwxB|fLeo;U`S$hLeCrwfl`tu2&Fn!4Dmi9U(2M`SayZ!vW0Dv29>-6p`0Dz`? zdLHBe%q{@@3g#`AUb|)U?G0ev26Hh7fZC-a7=UVvAM?tLvt97=SZhgjI3?m|3!Tj1cmQNPi|5CLTrtz|rBu%Qyhc;k5uTLafTk z3Axmf836hDxM6b#YZw+?^?H5sq@F!<{uvUYRzogKJdADzk8gzjGK%#Bc!>dvCr5Aq zvy6KEy5izV)t9TI)C(06>P1|<3qx&}z4OFeqT03h&U(T*Imxx8V*1oa=m!M1+{2jj@3HPlwsO|UTSGyDAw6CIsq6yVo@ zip{#Ltbjjb6!?#dD2JLFYMV+cBI}{6wK2AmzyA8BUaxFcbTmmWVFADr0iY@>NEZI-BhL1$X#K-kzf z0t10rqDugkQLJnxo6pJ$kYBH13!s(&uwUsY9nnQm)^<^px~%^{V632M0pz(UVtbm39n(sYwR$D z@vpy`cq=zIunfjc1_Q2xmE|cV!SY?_5Sj(x6vzg?!{XR%7+^4LktN;_6ynDFNT+Gi zRLeVZO#-`2j(r9%PeWRO*|aSp+$$Ff546kdXWHV~!;m7GkH^lC*1QaX;MFR83Th$5 zKZQl<48o?VEbIW`#Rt5b>*~$1_6mSNTj*0{Xm?CrO y#D>1mFDNj96Jl?zAS8qAg%XV)wjV0?ME@6EvE4{&Vwiyd0000Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D6g){pK~#8N)td`= zRmHi6XJ!Xj$i-CQ=&3irh!+r(AV_L!4QdrcP7Dc<5JEIwK&Ti9C<;<8A&~6c_YNf4 zxsVV7NaU7;Tnrcx5N);A9!`C#&?=|26-sRi0dx8K{If1uYwaB%nD+F{^L(rwvR3x` z-udUBnKiQ*yUHSj;}Q}iF0^v_^S!R6ON{Hazh(T+m;QCd$CumXqbQmJHHF$V#w36H z#q^zK*}so-Zs?y_=#T57`|!RI9{@%$#-=gGq8Vc=yP-Ln9%qaVV?y+`0g!>^3xLDn zFn@m!6=|wV0Op%fIOq3krVT^>{x_zO9(*`#2Px{AB?rxVYWnPYU3UeJ%U2X-rCCCV z1TI7b6XF(I1jz3;1CUXmt0xMzOM|`%fYwI!wn@f+$QXN#G4?aY*pgv)jBq_ZY1+;? z2`fL$E5= z$_xEbyR_nG(w&U4rMiN~K3p+(q4R&zi}t})epo8Aq!t;Ty-3fmQB|+KjoTpT=I1fS=%%Fc*H(E>=5BhggG>{Ewd-r-k<3dK>8h8?+Sn+SUG|<-W=Rv$ ziuNPDpcZL))rN9Q4|M2y{--N{MF4aW2p>7Zrf%j1yJ5SuS|{W4Mg@iB=*CHD`L*ZC zv{{+OwQ3X;sZo&P-i74M?S`E0ZE)uAg0r{|&Milbnx`nBXdvSh1v&(3M$gY*^QoRA z7-P$r5Vu|mz!gUVooqL3(*F+;i_54MvKX-ZRLCPwuwkV^Z49QvB z@p8iZh>gC0DgX6ngik(&$fv(SRAd|CrnO;OOb3>S9RWrO;64G26u>RNmlItqoe=ON9#9jnU^OXcS6M~0_PHjV7!Mif?lf?3bKdXO=eq-g@T72W(50wDPW zAkC9jtgZixZr%vJK|zg&6?4U8By(406``Nt7;Dv z_;!Rq^Du$KLH^kG>`ZCiS$Q0J6-Olm9YlHMM|gFq%YeW+w?nx6IKey&<+dm=o6jzK zyV-1B2jE;^g?Wj)Fg5&ZX`X66F6N><5&(;)+ae&aQyqb-d6Ev}+Q6G5n*RA zGwMr|aa~pbUJ=j*09_Y?drN&Y!hvH$8Fqy|iqyP45`t@ElLTOfz&T&6LAXN$;LvlJ z?zIzu)3iD z^1~QCHq?M%H+~raLI*&DoOx04iF?iF^$18+`&dLr5>EM~0^XnMLnlRoZS$4L^aI zQM&P~(RT%4N}Qt|_K;Mw@&h@Pq^yzbQcKM8==T@r-Sgx4$pNUO3cPig>2IshZ; zeE{GI1mN|g!jonI?(!xqeC-IrCpX*7|9b#v86j{ea1gSxw#u3}M?vU>hzfHQ2;mT2 z01#t2=d13%cTACPp5!WfSJr;?^gl{@8|tol7C@T@;V%IK+v8?hB7l_Se(RJu3N-UF z3M2q6>ruV4b)ojSyPZ9t^oXi06g-?-BTcUsfkTd`^ zzUk)+fDHfmxo>=|1JIAp#sBXAMFi*&{uIDaIPVoN0D3bJLJTzkQ1MgCqCtZOrRNsy zYsoHo2kD+VtgqOQ6=}N=75S~4#$H{<_f~W?FfkfDi+kz&$;EHcgb4bIz%&mqk*r10eG{fQ3sNF>MM>ZF>qpn*=~I0F3TI z06`pW_w~Yw;2V*XwMjzI0nA^L@r4E;(hlHm0`TL|NjnKZT3#(Oi|QqSIj zv$4SB$)Dr4+n&PBefuKF-yh{eXr|Xg0OYK(H_qOvV8ffq762>Lx171A-+*M!`Mk>l zpl0AIYed|0zrc)XZ9M=$Ge7ZTD2f8cm_@JN&>0DKL*11Qz%zHQ1ppoYABL`6ddQOo4-S%sqobqI z)YODovt}6(YVXi8`F#u>ft|7&yp-sC0&pRKqvXZs;oN)#IYkXfFRDTA<|7CQ7+Ivv zb*{T402=zHuHS=ck;lCZbys9OHnt6uCVeE04j(=o<}z;F59I$(@K*tt&36|7Ne567 z7kw!J-@hz?b?#k=4F8>%q3((R#Km32Ll1eRQL1$+&CSj7IAzLI`Ts%){C0#uM=+ON zqb|F_%Si{YZRV8k4q)n(6JCb8D?5OpLxUT?Gq`B?-B!7Oj%W&qTT&JI_H#K~m`kyG4gXjs6=0?zpo&iVD1 z1wct~+O%IGW_m|Adx1{#G=9(lytna(7%|kl2QVvWa39t5aPgf1Y@RveN&v{=;1B{3 zG&a-#pmu}%5fl3%q9WA=jqU)@&z~F)tX*7>KkgWTmctD7DV+cu4hJ~r76ASGGyKxs z3m3xs84wVBbpSkx%Pas=+`C%_UV9xqE}w512bchC)B&gip@Wz`uMtzjTe~$9q;m;c z%#736k+B$PRHTmYxm6w`LplMN%?qI(kEZ#d{g8s@1=mRkxQENUa3ugpG$$Ycxhpa) z0G6*SJJYLIpB0?*7cBs^q3}=r{Q9q1ll%5rdIChs+uDf4rPXp>PX*AX$!_|bMd9H< z;_RQ}RK+l$L7=0G8$vzD?>7td?<-`|Bk2HoIn-!KieqR!$Z@fe<4mC+zI~*x8V!Md zn(RYo(*u$qfzu-#ayf0as~njnjpm{7Z?*6bC-3?^klO*|ljwAJ>JI=9Ck9o5`W`)&^G7sz?R8-PQo0Ky(r0sMWZ zkPzDI{LuW88Vv-Xb&R8H0Ko#y0UR|?{t#(JwNg5O$0x_s5&$8@1IBESo`Y)uo+JP> zURd&rysd|jx}gdLf)w}6$B2rgB`$9OYFk%p{pA-<;ggMz$XdTp-OrF20O_y0g@o{v zU=@Hvt9hXT7%`OLe2tI*=tuzQ{N|j2Xbb6s_5jv31P#EZ7v>_nj5b_!0=WC$F@+j{ zn|uKnP5|z^KXeNLpa{q+re<&m3trzLS9&{}0hw1be9ZKAS?lfUmZDmJ z@tH4iupnI4dV4iPJGJv_c1g9@FtqPtXm4W3dqo`pnMDv>3mI|~6f6v9_@;(iMAz+F zEzmwr!HS#x|;!!hz^%V_xX~7+B zfXshV#4%wUZ$GhBjewJt98U!L$z$8ferO5uN6S!#x>?c4DL*J{pUe{oQ|*)d>`lM` zK*iy3yhQDUx(ppcRtb#>8t}@JD!l&EL8I2myaZq}-z@;7-D+)aOzdn51Yoc~!ymRO za`05Oj(6NNn72~|5DYq>%)b%kke>-u$JW01VDfmmTCCSTg+Fb$GS|KaK-Rtiz$V&z zmk~7jp$wO&v4xaTP>bC1gGhE&Vt>Iyz+Qoil$7=gRX$91N9SwQfl~N*tvlpg>S#7c z?oZX8;joLLd0%f_JlqGdKM@GLT}`CTRejJ>&2VPNHE`t?!c}t6SkR%x9a`bi*E;nD zAj{gI4*)bam`xDk=Pds<0Z>PV4HCkeIs5Th@%5eNdjPpKDHGMis8 zm0{pDs_~07KB(#=&F{^A7_PhuF95X4MXO!vs@G)zm_|pp695tc$S!FFMFAa2Sy^c~ zQRd&H0KVPrkWtX+R1D+S_vbjholD~cfXq`gd{*dh)IRCJhB0!NDQ&cL73`D%$o!1w z79G`UKf%2I=>kQy8b$>$=z%0GNrAyWPWw#*3B4v-SXL5~Qdw%iDBU>Znqa+V~*VaNj=a z(Z4^#agT!LcR8>_NHuPF6v^uwkWpA?QSRn_E%%3nmTQSGO!Fl-RqN6o1E|IN3(J<$ z>ltHf7*iITA&~j((sz+w^p1q^amlD21JJsMp{>3T{=9`7=4mi=y2_!NuT=22x30xb z*V9dU^cG- zu4n2ZMOH1`lBnhJXx?MfGFdK+CM z=}&L>!ii1yV!QiAc(Rtjncsk{BGr64P2ElA6-7xjo3{^qyggb9{en)Q6IJQErnKD^ zskAXUetyykb56)C-fJi+YYX;fKZTzc-j6do2FO18+uCa^0+}nITy)x+s&w21B@Xl&?S)As!vwR^T~dbDhh^Ifa}OydH*=n$5~ z&rjOt3jk?V!TU(f-;MIzmr?B+kK>*jajJX}zS(gt&Q}cps(b^Wncl_i0;kFueo-_M zn{!@4UgjDkx$EF8=zPz>2HB&s0D-R{EMR?m4i^jZA9LNvB`vpPx$a6Q|FSr8-@`JG}Hwxvh zg>dF2vmx zaUBHp#Uuitihia(nt(K6P3}9gR&~+O$?M;hN-g-nUc-iQcj-P9ZapMxeRRkp9z{_W zX#k$E-{5yHor49haX3UM_SBsmF(*!v*JH@I=@l6=9%{Nj%GJh}-ySV$LhRDKR^*GJLpwpR zWuzN#8nTRF#LxTLua~Ekoz?-^Uz5{cpCj`GVaY1b$>?Vij|Pu@xMJ`PH>aDM8)Ga& z2+`NvMD+^NfA+q=9xmR0Tz@lG2O-xQB?L`x_PwV6n!z{RlzHcf;F8f}A1xpA;7=;X zg-+N;3LF<&O1kNmA=&=^{we0y@H9m*#%P)@zrbwX3_yqAeSbYvj0uG0Em8_ODSBIx zwq2QTV35P%2;`hk)?S58&Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D5rs)aK~#8N&6^8U z6jz$ZZ&kN!$8lYfh#{l05Rl+oGDc_`T0~<=29!r*4C9H(!P%22$!4N6&N^A0Oz_P^ zc}P%ZvNJ{#K#WEaHS6r2S7BxRGev{q6a_s#|@lx>~`<#_yc} zDIQhT_50uNKI=AP_aJ2J025i6Y_XuMc+>)a#=pr{iLRBcB>csw`#K0PfD94E7^_p| zQvZf0X(9t;izbG;AHxW0BJs&n8Dp)%VNrl$jG@p39lQvx!QW3NNEVAuX3(nmC1nU3 zJHrKe`&vn{x%u3HHpbZF0=&)u1>7n~R`mZF7K?>s1UJCT99q>F##kcegB+2J|;1U?5s-7|C9yBBr@;2^*&Fui| zKL=RX7h&f6XJB^Y70B7u2E!B5fiW8jvtYKa8b}sNlppx5pQn$Z0*mS=d?bfP zIbXF<8@apsXslO2b zUSg7D32<|S-XKCR|F>3m`Dt(~rLBPD&j_Enql@5C9NuR_84MnwHHh_+B)cTZ@}L1; z$qWTvGKIh0P{AcxrY06YMEOv$ zByNHvNvIx4lDA8e{4%pxhSRfP@RDatc}{#@(TuwgVpo*I7~9AgJEfKkjGdkVb5>Tt z+lQ_|23>4tYaQw-ryT^%lFPR#o@`?$ORvs>cidrO}Pul_&&8l{8-`6*u1+{$?f5;kgic=GHbk zq7l4WJYC*MRb!aLwsx_OG$a<4PdOp zMtCfB4&E2|!lO6(RPv;{4uZy#M~U!USq(jIRNT@nq=>AAFf=X|el#qSXU72pGX_l? ztZMw+YPG^IcQo~G>HtsW8LyWgOHX*9=rc@dH>td<7uKEZhM$%G39<^xVZo-4p!|3* zX;pK(AFvUA%`MVCv#v|0oLxQOTv848g@ts?c>f&a9t7oB-vcx2+F@4xd2sEy46_@1 zm9ay^H>5{@G9BTuK{lNy`N5Z+@OlfIJb)@Xs(=@_C_*E03#%d8ks{PN2F~1<$rOY) zYv^tl{<+305RsCl`>f!ISQweUkib!ybsdm}*VVR@aO}VbP~p?(_7A@Nf4p9VE@}39 zQ3#DCj_EzGcq;_s126^~qod&qyB$iRqv@gSxeLhvtkZ!EFoVy;2N#8Zuj!;TkC^r| zx;K7Ci||=wLTn1bBe*C&c)Bh4idKJkEd7d;9vBicmcS9ZHzh?oiUw47U|;T2f8jZJ z^vney%QD>?KZEPE-44HvQ04Xh}Aar6pJP{NG?vxZblaN4aPe_38r%r_pF){Q&)91eqRh=FvYVIcC^<3*)JPLe0 zHfFpv_bH?1EY;_TtVMLM>QSTMT5>XU*zIs3Apy?D$CCm0cPs>K2hb?IPN_m@CRUja za5a1fVNR+t2yYs941eC?AOrAkXaJU0#;*!A1NsV&0CNs{VAM;i2z+H^B!O~pJoY3d z!6}D>z=!_b5J-FHFl6uSre2|6@ahm&*VQ3>anqQ1B!t!+A7770-Z|LqqADe<-V?xqRW_E+{{71y&uq z4zqV&fV7%U64r71Z>qKX84X1Pu1uW@=^-IXo3f%F=Ip;F)N_4TnYFzGvUYSs*4E?j zH_9~yMs_p!6LIM;xZgPkp2DN%@MORd&>1ktXn>jl*a$waKJcr5Xw(c4;pa7e1Td%Z=+0>f`;zV2th zKZb?*3=ke14S4FIhv=MN)*d1QmVJ6v15Yj5Pyb7Q@IivaQWmermOfX_pp-@B%E(R! zZUSGcv;|XE@1*M(lhSlO9Zt*5;D<$zcbBwyy&OCcJgTV4O9r@py+UVzvE;r>PSy-~ zv*8F$c|~yN;K3R=hsS#$_=^Vc><^6Kf#G8pDFwrrC0?1rs0y$OyulV6?0);uMJWBk z14YMfkc{xUD$sO;8nkEgm(mCQIy{^n`T{moTn-2HOql`+K|xA`w!afzeD^=-e8<3n za49j7T5`;qzd9V$&|&)L4IfVDOkS`KazAzltm8&y;i#{^2O^*OxdLyog!(OgNfNF~ z=~95YyH~dyg343gKEabd>(UwUR#cSE0D?+NA_E??S|Rwy;iNEGhKo)o!Ed&g-Cf!nE2(bcc)qXj+ebXTH~V%Q|ibKcnKXTHo388axlh0Hv!_yE`6R zLPw8*iqG3L`N0NIG4>G00Je7ZLP91@C}3-BEJ1bRfJN0;iHW3+gaqhzIN)Sl9Gz1- zawJ_dI`>yXs^hTLKehGnzCle!Z3i`WaZ9&x_{Y@+SKq2Lhc}7Wn9T-n?m5tJcy7S@ zV_q^~l%0l_P&0O{&VVk5gM{E{fC&D0#w!N!e!|zBCHP^EOuQey0KxS3EpPKxU9sc^ zJ&Ex1ODk^+9)<8_pL?LZsZGm(h6xkka#9k(BQyv9*6B2Wjs#XyC$z4}PDT z?)rBPJWSvjv)S5Wf0}+r@VxXneEr0U0pa(KA5UGN248y)GU{-$(sy_cj&pk<<>}p@ zuD%C?7Zx*ja(DUBOmf1;^u;cDv4in2da#0Y+G(jPMbuFZk-a0 zt7hOjH_U#sjNpr!+FUneDL22`l4 zK{^AB-B|#5Za{G4c)Ul20PkPw0Sw^qyGJLcDkZO*+nbAnXDoh82Yyn8K8tI8PAB}= zq)A|945Dl{=uS)|A-HHjQIul9gn7Ru1Mtnwt>6(lXZJT=XTi=JYRdmqgU3-Uf5&JH z12|88eA5BHX*dq$t-cqHsFG$h!zY~KVdIvwyqF$(*<+7sb8;NOw8X{H{BQmFCkQX4`%Vl`PEsl0HQIDdsQh23@c$9qpOJuRU^|>UduHR(jai!@_jncoe~dqhjdgMoNKl{`BBr z_;$(^odJAC_eNM4os+n@N@u{$;0J|<1Cyl9x>V=zW?_={JZL*far3vzdvyamf}=4U z9OvDb>IlKXFDEAIz&CvU9jrZi73S@~4EA3rnUWR~0zFQrW&mEt4VbG=X_J?|uNe>s ze!~2fbS{(S2|9RW3IvZ403P4aLhh<}>4k;1!Jx$l{@S~{b>L?c6Ey$?Z?oHV;2i$h z`W~GDxEh2RAi{G4TtkNF4fx=kDLj=rV|#Vr{e_n-xD!MXW9-vMBBP+VrBxHw@v`>s z;TP5W=%Hpl^pKM3YX8j_B~Zf|gP@^9VcmarL3yhOikm#Jy6HM(-~y()aEX%`(ZEi- z9lEg!sKURc1P9YODFqGmK5o_r=OBCMS9HXQ%!K)Cl~TvOeaa>#+$H7Pz;v?+1TR^v z)A6SBO3F0&(l4(;LBnzSuqh8bK&z^}E5q5D2rdsEOyCu#6!6mHK6vpZ1vdcOjB8V- z=nTMni3U7X`tLdegy}2p=|gZ?w|DPW@E8H$vGo5{EPW9iA4&wrIlBn{yFZ`Oz;W3c zCBmb!KWKyJ4_t%Dr{~dq@x=#Cgj56g5;iwrP>>CrZ`TnxnxHFn4B3i%UGEHDwg!R5NZI z8QhkTK*EKPPbW{N|BZI#L*8EihR3Jk?_MTbqD(g_n)U60!USHlu6N{<&fYCu0JiWb zGC+h!@E}>%gBwT<`Nutt5cs1Sk>C^l!!kZYdji9$Rg6pMxG611b`M+=Q1Me?9&CPM$eb?9Y z<^`(&0>=y-2q6OokPuu=cT`M3_&W*Rmj!$#JfKb&q3}pA>6Pja;jM$6)T$R9z2Z0N zxfQ%oGHlE2e1mb}maq60W(Bm>qQZofD1 zs?z_|DuSc*@7s;=cQZ`d0KP6p2E@cqC+O0X*Y8@|bKxk?0R9)_^W9^3?Ebj4ObAks zb7+TVVk&M!Eu(!L(Oe<%6d2IxmoDJb=80jV2ov{dve{& z_qDn=wt7G`;CA5+C2j()#?9vIcO(41Dkd19o}wAB?Bg>~d0HIg;GR51=7SucaHPk< zqcgPc;E3QqOay=zPay*a5B)Kq0ld#wHYDB}epXF8WbL?M1m7fnzz-Vw4A7Y|Kt1B} z7xlxhY_4-xclmErriqQPxma9=LPezHa&X)=&6lF&dz#vPjR5eP0qV{!`u4?7(p-Ip zk6ZEwz*l7|I4+>7AE>@`xYu>NuMq&A3=mGE@7#op90Log4`}eKKJ~%78ZHy~FlVL$ zZliBkVfOgKxEQJ5LHff)0C?kRPcxgX8No)Uq{H(4ZLr~#hoDiD7FTg-R3)?7{J$q+ zT$8(Bf&=TmWTfOqRz93y!#|;+v1(kKjCv z->yV>ArrLMMUrfZvRDS-iVKIvuY=^90*cep`xRUazQIYX0%(Q_94?8Yl<@z*9{wJT a-2M*{l9z?_S{g?H0000Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D5QIrYK~!i%&6|5r zRY#u3`y6f(VhD>7BPucY0z}>~;UbrZXpEu)Di4)p5;f6LM%PD-MosV;AK<72MgdV2 zj7E8A0F9GmXJ%_^|Ja)OCpA-f+Um?nf6qe0%2=cO8k zu|){6&!!F`M60G#Lr|>{;+Q|VT&`NXgb)Wc?XW3NFZ7U-VHgVy!`LrD0ry)W1WEO4 zQr8D7{r`ue-v}XYNGaG7z5D|uZj**#%#e`#P1F1x3KyS}M$fLUqAj~#r(Fk+_1lGO z{WS_o08!wi%r*dYIG zn&vkEZ0mW~QtOp>`t7p+HW;<{zBeSb^}LH`SZcc5b8G$fUAJt&%B7VX>z%0AgqlHH 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 literal 0 HcmV?d00001 diff --git a/mengsan/assets/status/no_energy_gain_power.png b/mengsan/assets/status/no_energy_gain_power.png new file mode 100644 index 0000000000000000000000000000000000000000..e3e68f2fd2ed8aa6155a04ccb7a811ef5acfa7df GIT binary patch literal 6746 zcmW+*c|26z8^3qVFhdwaL)O8d>|~i3jHL+K3E7uySwhGZX1}9RTXm8U8rJsB?s$j#U5vFm?YYV6Sh53jkc$zOJQi z7Gl?w&tPWS`>t06Im9E@WZcOm6&)jh#o`6jQ7BUy$^u&zJV)rT@k1>yFB+y&LBz9_ za+fAMNHAV(97Z$PRhivlROK>b+j^mKOQJB$x_{sJN>%v_r>WqGe3j|X3YK9LtzlL3 z$z710zk`YmZbSOWW1igDZlrz0{+RRf%F2sBGd3ef0c#<1p_>vT-#?}Bn2Tn&R8=v8 z3Cw)A?fd)sjEo)mho;6YT&{#do9uBz-`N*Ljz^<L_pg~vYNmjICyYT5x8jc4_avO;6p-GWhK5t*`w)c>8vpr8xet z?@bE}bl>OCi!Ah(??UQ~hpH8nh+N}&B3a$X=K;)X)wWil?66Y|o~IUd z)^)VICJ4+i^YC(<4qWcS8Aja;w9(?>;n4t{Fd`xeuKOEfyvD}Hqs8Gu9Bb+4Q+Bg# zY?+%Y#wL6?&c#NImdV7~wMQ0BI5@aR4sV`#RIdjzBQOi&3`%8&&JLmM?s>{|%QX70 zlR?h6_`gDd{3SMpcOLhDS{=~O8O&EKdF3ge0(F+#c;c4vZ?86X;2?j(h{6v-5RHHW z4#B7B*hRM{|CEm(7tMG>5J~Q5keURFJwWUqH8pem)>_vn1Pd3USsfUd!VsC52_X*H zo~}g04{;D2B2A05{5ea}DOFJ;1U}~_y+;!mB0wsmKSx_8fujVO5=hyyt!)ysv!|Df z2BuGDI*CLv9?lzTm!dKV2_0cJS0?9QI1#y0_;HTuCPy%YuOWaq^Ke+0&zhZK`Ycl&K0Z>HXO^ae z?JIkPvEi2B>R|t2SG4Y|8L*f{jB2}pgD*x;I6ECb^gj|pl45>`B6^&4goYPE5xfb< z)IkhM?&r^+awcx60e>;*no<1WOj-cv;NWJcie`f%KAd>1+~Tc6od11nrq;8Oyu8e( zO0O&5g*t84ITsU73ss7FhtxWl_#1f>WmCUJY?sbsMk`%@J>QGa`SDlFb@YKxTs#w` zd~CxmDybCeSb$pJpbz0sE$+-nc(2Uxhilkfu4__rqAy$QIhG*W8A21s%%}K8-#P>b z*75Q_$HWB@+?ij=DGKp-PR>lae?%evz3}j&kol60c`~7IRL4v(@0y{lrz2ZgG!DQVk&)l4wq*qfg zU=4`zi>LCVict8O+1^ZYv02D_2=Q?#7Oe~L*~Q$AtxeBb5EKL;7^30Hd=>8bTB39`kgNW zY&6qveXhn$pioBN>tS+rr9-(@IfYJ2W&^XV^bX{?>o6K=i+!L|PvMv`&Zyb0#xVY7 z(YNW7?>DM~hy*PgM#TDr4)!G~PFLUmh(60EZA135v7L`3^OKJ%!o*A@-D0%evtPpS z7BuJaYiayqvc)tr)h!x!oSZ%)pY|x=BeR&81@SzE=vu+SB{mHTW4j$+&BW$NJR{fb z0Mz&>>W61b#mEdTNU*(q8_EK7f*~{ELf8RT_(FGn|K(fjWDW2yUKLAhJiAjB zAQxA@zP0t(Qz%n5#)$MZFHc#xHJlG_$;!&Ap0EbXc#yo*n_j}30?R8UxGR&JEKYW- zsL0!Up*hOJql9+dF$Ae2fs0MbT`t1Tz~ECMNA8%&P)MEXeOkN9UArWiK0525(0iH` z`?O07szbY@*IOAaQjW?#b3lihuUe!`HN1QYYiex7DJUp(VI)?0--|fM?L;?l4oV!K z&d74m4tdGF?Rm&yEUkg<6TWPvarjbCzz)c8kb_)Ds&=~LLxPV3Rq=_$;pOz`xJ4)u zfg!OjWpld*hPdBXYBK^xs~zb5QA6q>Su*ZV#+>5G0vUu~CN7KAoPmMPWrgnjc%}i8 zJQd#>suRM)!}Y_%|BxX+#to%8>2yK>7jeJ49vBEQ-K?^|8v*2Ow4Gc+xCT;+GY^~8 zEy2Le00?&y5VF$MFd+BD?yjHTKf3njBYv(<6!^u=Z^)Nojt$hC>$-(SqP-n+wIotF%Qw7v_*i!$E*57rvJg;De9te zRtE_0AS{GR0P5oE`iUw@(VByUnh+pQf5zqJa@yNN z#*oW}yu28ot3fV*@IxcCn8>HGuV2IexV211dcw`?$yxg8lM^?#HfS*bXMzNI`+1#D z`E9>Cn9r^)bsquCSon{ulxJjQ+hEBqPoy4-6r5mdLV zFvqYVz2ur>h~HDsnclrd+t)Y1#_#Lv+a+dncC+c*dkt`_z+t8(J1|5Sc$9HWN0;zW zp8iv=2B@X6{ndyIA-(@{`y_BP7FwxfRWx>4R+e(U(zm01fL3G}LbPlDV2>$chkoRI zsOR+Xnp{B7IhHqLS#B@(X_HDbebifiw!b#H*LkR`r?+x+bOa|pOgud~EGa7!mPtsy zwPDA_B~x}_p#dLd=(j>z8_Ia=bPcM-*Q02y9rcas@wk^xp;i6ALjJi{qXDnlXp&^O zUOZ{v6^5LdahbY%w~nE&U(fsiy1cxMTU}mG+=3H)WT&iC zjbsppQ0m6oh%|f=aYl}g{76O!6XhgIk71$j`FX$=qoVT6?jnz2f}02q0-lzKN996) zK&luSei4N78f7y&RS!^sO0!h!*EcmZ%%u|{Vs`fSTw;4a^`Pt^V4&gx)F#@;Pe5et zlVVEBeGr5f|J(e^wC1$yVFCH6L{^hV$6T{>Zv(IwQ2~^Uz&~D5QmTG_LFrxcQCIr9 z^3Un0zoq^eGfP$muk%jI%?8p_7;5y6zp9fkYO)xQo~Pkjn+opfEu zJe;+;cIR#&cU_^hLCmghip7Imbd`qe#BXumw%@c5)v>6m8dFha$Im1Vtee!2`69kDIAwL88&L;@_b&rxGCd8{$XYT14r7bXaeAF{DD&XiA5oG7Dk} z?hpx@minQ!90kiys$vBC62m;xaO&icx4**H2D z{r6ArPi_nm;TE*YOJUf>!!#=KE!xhje-5BHJsGCm!6#3o3E$}9T$jr>k{~ZiN{p$I zzF&GWqGa^+9M=WKbMXn}jilj(LbBZW%$A3@&utODWpu^pdX8Y+IAF5gQInKfFlA)Q z_V1Y6sk0h5=VG7Ys}{YrMc$2b#Ae7u7b?)y;^_ByjQ1KCUasVK5a8K){fgRDDQVmb z{OV7U?xf*={9adBSwlF;@8;&$^=i!}S2s7q`IfsSaOy=j#vK58`1ut*z`LQRSF8z| znly-^%Qlw~dUyyNwwnI~C&Udb9yr#;(0l=tVrL%!XQF{0)MEc8{jP$RKQ zNT{N^IR`L&)5@iSH&AIJ3YwOMdl{0N8M(Tey(dXI90=yWU;6rxugA`u;xbxZypRk0 zHE=!P3PN1q(b92Z#)$dVORQC>}jew;20X7m5Vwo1WG#U#V+JjBEx$ zSN|(-E-yzNOu6x%9QP}6 z_#3O(`i6;=zW%qn15b8eRFvIT)brfXWw}$PAfJ8XBgYyfX=Ld@*6lR!y+}4QalSx= zV^80gEZ3}jj(f-LcwqNEzOHnJRnH`Mv(2fuPze_@^b7z zEg1%Klm)oE6Bd~Z8QW8_t#z%x5DXgi<8kw=Se$>hXD&s&WYrsD^*k0N3 zV`5bhbdN}czT8x@ZMF8)YFh%kgf0U_!UftcM=0vnz!I{EkI??z$@yHq0a=~GW?mC*f6#Nk%Qt5;j~wqW-l>!h}a0YC>Y z!akO=tq&t42ud<55&=O=SYw^oFW?$YQd2;G-B|G;3o$l(rDUxu z0fK^pYuB#rOt13%{3+lt@r8abSKb58n*-op(`-pt3=rToDGxIgWPZK_E%%CUM*rha zp;?HNQo|hxzv8ozcRzjr@=ga6DoS0Z>Ju|v`;i$rIp~Tp&n3r<*N^)7ZZ+pR%wRil z@6WoK$M*Rm6X&X4)m?!p1mQqZ=_A3n-OSx-GE_z${i|A%MFQZkcKNhPZ2y$}mlo`5 zR|_=+u)~I#hA7guGR90p&)uD99`;ymVye}Ea#phuc#295_J@=nK#TmU6kyPBPL4^z zKQJLXyS0S`>aHXcL?@f?iShAHwp~j1zNf3fHhWC;V|k4BORppzwrU#Pi2OgTM0Iy> z52ISf?U}2j!vDTs-q|Iev48lpv-3czBNebCDQ~xRn^;+0fI|dc{;RtvwV<0Q-{QS# zArHqadVr)j1S@eYa8vC%K=n;0L27Cozrf9H^nX@q4T%%^4>Z2cxqp3!?m%9izmblK zC*bRoLHFB6MmcQ7Z=R^D&uW0J*PIPGG%f(nb-1iP#AS|*)_PPnx>}IL^6o~!xi4eO z?$g83bkn^nbmb9r9+|AH%o)2{pOccLx-`Vvw=v;rE-|}T{m9;jZiUg^H?3R@X(%pV zxM_8E4$fv+izVnEIKA|X&1SZL@5U@v^yQ8M5xAtW4gZUI`@#wQZ}A?N;9vzji;Xb+wqlLZ4m(-}-PI@P0lI)8}mh*UKLv27ne%k)y;6|;B=Y=hEu+LcPzW*Dvx z94UK52&PIB{sIf{Hdc<1(xeE zn(A{b7O*!h1sqo?O|Qs=6sWv*ITlZTzbr2+3uzu`h(0(7%GFF@N+MQPistn7>2l;D z)LpulBJAg-7X9{vi;H9bmP}lRE_$2B{GLXo2Hc?SPJZ`JDZhu-GiW=~258#YybdKb z<0ObWKNuMr9xaH4Nzy^N#mx%=a0YcjipZok=DQc9gdY(5Qg9_UG0ykHQM~;uKWbxh z(;Nf*LShz0V!@bQ)DQA2*(rYb5F*b(mV=j-WGC<_k@4?U?Sw>Cu5(n5-6hlNjR2mTqXGUS#Y9YUPb|c`6HFBZzI|qTH{@lNPz1GQEfJC(Q9HghMX!P{R1L_hM z!W~-@jQmht?L*(Fiey0_>`^}ffne>qA?J^IVNmQ|B7_7<${;u&L#&sRYTow%k&)!^ zq8lO9X43D)=;UO2O6sFn0x55DauS!MRc|*5t02b?^I*c0a@h++Yz_-7@379D#zS({>J1_WQ;B-`zmAj{Mwe^Ey(XHeWH0E1{ zUZTQAZAUt@QrPObq3C$pf@hBw8EOcImX?jsw55Q&^T`UhS}>t;(pfo1)qX%C2#|jD zy0TKk+}u3PC1Ah(n{|i_dazKQ;oIy%<3$!i*Wdk`C|8(KiL6fTl^kI$xF`!)*>t}%I93ma zuywLA52mx_>B9DsscntPJ#e{MFQFVp5CYz>>`38d=5`7!3mAu~aZU@uGgl4xKjN#L zZP13Yc~5oitd3W~ad*GR<<9hrWk0qlV#}?|;th4)^PVpGNhE8UOfbgNk)%e;F9S!% z-tCd(uxG!DYty@vnR;(}roPRR^pNJ59JRO6Q_euwDCB!nY}u)2fAeu}1LU7qCat;b z-x@twPg;xjIC5hZAafQC>TwVZ+u%MwLb~`q9Nyup4M5f4i(qhYFm7Ld&_TMkcTP!3 zi9+qL98`;(2g61d!DCAazm2b#CLPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D4y8#%K~#8N-J1(= zRMj2E&%L{;D>CiMSV~8%Xd-Gs3lgWbPPGuUt6&NtL}LxL;DmGr6`zq;YY};tXNHKx z7mPw-Nf@Alfj|feAVGy1Mogk2ViIFWQV3+T&(rzNJ!kjq$=%H^BxwC+zS*1m{{PPZ zJnp?Gg!F(kP3vS`*YOMK;%`Y7LP#&}%h(Ewg;=dtW{bsQ(RCeGkNf^f4IDPn07A&` zxhE1ro>H8}eLEqd2zsi0Sj|-ayD<Z*RwMM@L6TTU%S(mMvSV z;E59_ZtT~up9&&)E7CH%ZjVAxgN_D3g23uKA>=j$4m%u!nCIMj1oH-?O7Fey;B<}0+tLu7yUDq#H+oBK{(KbYBH2DA|Xi0rFO`9Q{ zo}T{B;>C-1Ii1cAckSAB93DAx#AF{VA=&DCaDlHc!T8>_3UzafOY zAbGlCdE0N~n}_5Ki6|9-i%YPUl2Us5^y#ySiHQplpxthNF(oDCbyTx?^XBcvufyTkm6Vhu zLwG=rO|BjhCD$n__~C?*IS3ws3wLyMs1OjWzoew3=J4UeUl~Ef(D3o#{jRgLVQDIZ zV5|-uie;bA=SfLPDag*wE(8p@E8&oEKi<5&yj>i?TtdjBA~sz|jWFpE)W$>x!1ZK8 zLc*NN%F2^6fZ*MQ!~jT+O#x$9*Qp~60PJr1+}I>R0D$7+;^X**BLRSGYiqsNU3VP- zz$_E^Gl>iU3n8m%Z?oAjz`*!@T2@xpJGcqA+udbgF_pS3KkMyiTlpKbZox=qEJFdl zjqPSMr0m?$8dbO3%?@g9Z9Pc{d5QZbDd^Y%@bsUyaN)w8IH^2H=~e~&wCT-kTDRmr z=5JqnlzMq%7~mOVEE@x-t^^3Jt*vy;nl;~ ze)%7nPtCiFo~d|~ZIiPgR-sA&04x9yLVhG-Gy}l;28+e=6N|-iHz8yKA>=RIJp+K3 zEK0heU;-<70RXOBK8Cs*tNE_+Ll6K`Q&TaD1c1wU0f)V)2#OFgSgJEGU3uk|FT@7KGKl*X;a%UHdyUonQ(FH1EH0E_-Wo7O)aIwo!iMw{qxq`gH5nPIV5 zuI5!B*dNNeQv{x#p8mGe>HMOmrltv_Ibrqm7c8m$I#c#K3%+6b*ii7?$bh94QZDqqVv*OF9KkCrTc{n*xv^ zAQQYzC!}-v!m`L*odDc!2B4Q1-paxE2mmM$pyxl?LmSuRgascFfCQl-FO9Yxc$-pp zyL>`vS(OpWlqqT3IDo5z0MHOv4UMr{t+Oz;XNP#bcvx4@6o(=l>-W*t(gIq)dICMQ z=w9af$kN`Xf0C@3$ zons!m$19(kHaVx$x)o_Gc>Kl%0A4c! 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 Hu0mjfJibF* literal 0 HcmV?d00001 diff --git a/mengsan/assets/status/rage_power.png b/mengsan/assets/status/rage_power.png new file mode 100644 index 0000000000000000000000000000000000000000..aece28dfe618e749f31595418387d1f92118c652 GIT binary patch literal 4937 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 Hu0mjfbe06! literal 0 HcmV?d00001 diff --git a/mengsan/assets/status/retain_hand_power.png b/mengsan/assets/status/retain_hand_power.png new file mode 100644 index 0000000000000000000000000000000000000000..cc1ca120ac1c4bfb86f8b1f4da887e3671213439 GIT binary patch literal 4225 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 literal 0 HcmV?d00001 diff --git a/mengsan/assets/status/rolling_boulder_power.png b/mengsan/assets/status/rolling_boulder_power.png new file mode 100644 index 0000000000000000000000000000000000000000..cdb1d944cf85f1cc3468e6b577d8b4d126a1afd7 GIT binary patch literal 4422 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 AjsO4v literal 0 HcmV?d00001 diff --git a/mengsan/assets/status/slow_power.png b/mengsan/assets/status/slow_power.png new file mode 100644 index 0000000000000000000000000000000000000000..19515a3900b22fbbc2777323fb348b42b89a6f0c GIT binary patch literal 5762 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 A_5c6? literal 0 HcmV?d00001 diff --git a/mengsan/assets/status/stampede_power.png b/mengsan/assets/status/stampede_power.png new file mode 100644 index 0000000000000000000000000000000000000000..f457b6ed26f94e3dfc86e1ba8712d0a60460adfd GIT binary patch literal 3357 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 literal 0 HcmV?d00001 diff --git a/mengsan/assets/status/strength_power.png b/mengsan/assets/status/strength_power.png new file mode 100644 index 0000000000000000000000000000000000000000..6280c84b7d7b13441fedc013482e30b9d0a98639 GIT binary patch literal 3435 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 N002ovPDHLkV1mNAgKhu- literal 0 HcmV?d00001 diff --git a/mengsan/assets/status/tangled_power.png b/mengsan/assets/status/tangled_power.png new file mode 100644 index 0000000000000000000000000000000000000000..dd016a3dcd358d7eae1463f67653464139cfe001 GIT binary patch literal 5754 zcmV-=7KQ1FP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D77s~8K~#8N&6^2O zR9C*n&%F(AT7?No)UgD&BqCh-h4+QIZ&U6UB|Vuk4ErG>Fh(v#1C}abFQ+ z7Zf#WDyhnQZ%oFj(N|OTG|8(xW2#>2Nv6nfUwx;~|8nl7QIe@ty;JphTe|z+^Zm~M z?57#yNioTozFFq)nBF&k-zanL_0&hmnDC`;0_gapc-a4!q^eKN z%P_{+29pBxce?-(#2EXKF}4^tkj%TTRB}&$aF`j>8azv&(1I0A@Wa;WOsYm%d9k z7-_XyZP1eCv+5hK7qvsdua7EYjHNNg#*3TDw`Ri`V@@yco|(JtYrlf<8h;b-iSPWf z%vvmpuHP7dB7J`u%uk*gdPrpyUn!!qc7fd%H1D_ryn*F~+h0pz%g=n+#xoS=`qGzzT6Qz12et znK;DX&sp7+_e7SzzaJt15O@@rGcG5K#nQ=;48R4!@czFjit>`8C}E1C%w~+OWQ=X= zLdbNus;Yw&MS7_%vg5=wca2v`9C z#pSUN8m<+!U#!pLYP`N*27t!UswhSPM)OYv(2p@TQ<&B@W^BOW$aV8>Y~Hc>^TIy5Sa{&s6#MGGK$maq*JP1#Qp2@E zgKC-!+MtlIKn_7wSt=kX3Y&%3U6npGAtdCa0PylN0aP{aIwiw0s$ZhD0LVYiYX~~J~A7JN{=}oTdh8* z|8c6STFn43@JTHwiGNUgwNQh37XU|leM>=mM$X2+GRAg6iUoC`L*n~#@=+9JtcQmO zOaofn?75*AkDRhSLJ7l6WxeC?Br|}@hJBhW`8|BUvN2CrT}zSn-h#q#in?5_sxgm?V1-W!Y_eLp`FG^Zb^_3F?EoIi0aP{a(*OV(I&2_%gI$WMEPM)p zS7DsYPYeq@UU(?xA%!1?-N`Tc1QlZqA2kkf}(6iG>~z~-`}r@jFZeE zOjRIZ_o_dS4<2#Y+q-9qqA1ZMb1%UdZ`otKyn3X}o*Pgv0rUVFK$SFhitL(jkH zoiR3e_{T9xAAV8Yl=l;_r}eo%k;phySQ7j7%sCS)`uq0D7LyW$WTGsz(k7XKY+bN? z+P_s^b!bpkqeH7~$kA$=3$@bY30i`ERa^0igtq$Ih5V|jYLcp|c2!lU!>)pMTZ|^n z{WLGhO*wydu}x4|cwk}k ztpdFfq=vA%$!Sn!LtZO{1_!d+SKl2mV#oneUlYs#o_nrW`t(^7&L1d?|HjoQ9-!*= zGjyqGpC-%vyv7^Owo@09+ibQ)Z3X)`v{g6d%Msd+3DD@^0E`mRehe1AECc`(Ha*Ga zrG#Z99YX%WT@R@%bO!*Y0U$Yj?UzC0hGW5j8Y|w2$>tH}N6(}_rqaGx&wB@b%mKkP z>N3gvJOF@T-V6Zu0)S;}=3u@c1K?`~1VD%2rV4ln5rjgN;>0%sPbTb+yn`q>eR0nd zWCYi|qMZ*{N4;~+cR*i<=pN%`^8{ebxZ#J<1IWfnlyMROG+fKqhsyM2-OiTOw_Q{33IvO@^ zTmqnf9>deH@G+;zIO@7=o&dlE#vizzsml6s&%Q19*KB(K=F~Y8FN_%*aLjK&p8|_T zNrmJt5dh?IOLqWtCm}2lGF)Oc25SMB4nw>VBhk>8GDA3mP=OXN>I-!a@hhhAuLF@5aC29(3=D zx}1LiK;(vZuL?-PzX|}EmjI9q07BmgJh6W3lFy*B6ZRjVw5-)_q?+dJHkhw$z^pQl zU&%NiM6R9J;^pOGmnBR`dU{%3_w=+3QxxTSMN#-V1QI4&1VF6#=;Quh3_#VV0*1sR zKoS|}Vb|ZcPtMAg?2Mj7u6orrMAdAHk z05Qg1L?%2vEnH+=0>C3+&b-hHn1yLGfZ*`aJgr<{{bq*-Lxc3yPy3dVBZW4fEnU$3se#i7o&0OzHxF z-U}F#su-4%&FK{}JdPVWY+#}DK=i}9tA$$K)grC3K2KNuRR>q`;b<)(rDduQV{*{RrcVyE zU#!o4a_Mr8CadIl{I`rTR3+ES@6%SY0YDlA@jr>T$ovMFKX)m+73Oi3&C38_9uQ>n z1c1y#`G-FG*)_^5(f~mKfCzvdu5#W~Ree!a)f50IDvf*S4gdyjQJderEd!A6*Chb) zAUPVi`H-+t`LcOjW%GyzVgAnI<K-j|5$@GCHn`2SjBnh$;Ff4;_{4@H zL~bC_;?wvbHYxJYRgKOz^ZoFQz5BLcy`B%A6h(PaZuLY~c_aMh>98AOL)50>C#=yn1`t@oaf!3c)x4Y}&r)Cf`9)*b3b| z7v}xl1Mo7Iy8HtM6(Un4Luq|dXg1FQ#HXyfBLg4^0|xfnCj$tb6m$aja0j6Lbn5qB zUOm&qa@#AyKO&NwPqIhd6-#XL^xRPTUS2)onaT$IDgcV2yp6HET>3HqWIQcx{T(vy z;o*TyE<^a29!q&d0I2j6Q&)dwu~?EBV;_jk5#E2NrLDg!L!js2nOk-)`Ap0yq6B~_ zm`CVS)ssvAd`$yGp{nc+0U1}jw|CDZTH&pzb3CDv z6xW}J4jaIi-${c9_j8i@$_7WL4G&D7tX5`&7-N4F4W2&mp#pZBBmje8e)xzX2Y4eR z%*z1ccSn9HN@tt6`2hTX^3?ICVa5z#;nEq{hXa6Dq)1z-D9X--OQ+YG0U)&T?DrSH zSqtO6ym}ydcBN-+ya)4G8@P12Gl0-ZBTowR3*d>G4s*BHkq6qQcdZGkGJtvWCslU^ zATTJP42D%zeN6!H$N%4&8+y?lfY9(UC)@z=1pqk;q|$H4>X7rmjt5lw8@IlHTQ+Y7 zuzAOt&xLu2Cjvkb&|LuY0bpn1vVV04p!8VMBQNisXq*6`hYVo;qN%(zp90`TQ(LnW z3JV`oE~3D&^j>#$pB5N2tQb|{+@;JXFpbbR11LN0eC*@ng}pu=`W;5~ffEgE_`F8^ zSt0Y(!&2*jfrHIijP3Ex^Xu)qmVYK5^j62FC_mVcIDgT!dTgkYF4Q<$8?NowLMM$m zA%OWwnWB7RVI%d>k>m#eez87JSL5}AT9z~FZ`TU5&%X^TjMVvl!uRa`Jg)h znU2l(MWead4FHVOc@!Kwlm1^a1OR}Jp0#lRX*uh3^Z1;}e8-tTBZv{ATf`x+3`whg z6##b;04a*H;f3BlnHUBW0GKCj0Gj=X;ifIix%FPBRo3f8?FENo&@%I7FjZw% zsX<$Ug^j|JSiS}B+TV9-5HcJcvlNpPT3yCUvuJZW8eX4%Ry%fgNb=$ameUS=9Q_Dd zzH(NJ*eErZJT2E@-4gHdImOB~bFX0;9}_2NZ{C*wz+{Rswp{} z*vuIF-7f~P$Fb=i04R!*jQ(6ez;HNrSiqnHcL1RCHQ9iG2p|YNqrtC_Jc3ai%qQ6+ zI{~1jGyurS-~8|uf4_Vw0%Y-V!0VwSPsSuJ`+|(qP8Lm@A-@5CpiyQg0GM>xMvfl( zv0McpG1=e{aMVRnlpO*Bj|2dKl2X^)0R(pd1O$qN*ljV(K8JY-rU8JWK$N@$VXrP* z=9+seR?NIHb$0N1toz{#(^ZXGKa%8KEOP{iDqx5J#o}pU7EcRSVz*m;toG7lj>k34 z7;v}*2sku_`gpNE_aC8?#vC&pXyBu^q5cD$*r>d8*{PkX%+ShCBx=q>TQ$35g|5i; zlfNh~PyP;z7nO}UTv#M2DUZ=?nXAQuiL+gnJXfF%6i9xJb4|3fRN0uX$vR(?-3IN5 zTaL3t#xp{uRvE`+>}gpm?wbL~5bCZKY8kF&?R*&k6cRT2C`>2Xm+B((Whby)maWyb z;ADr(JOO|J03f;mppO*YN#0xR3IH|YilPiL01y!XO#pxiA%Q2|0U!wHYO-4afk43Y z=rO~J5dqNl_;RR@5024w+ z@djL|BbflWs)5xbO|Ay!2f(-t0bwr-RX~<({%HWBHbz`WJ7lpau|eYkO3qg8c>(}Z zDR;_?Nrozbs!?2?^2lV~ct*(0;pTZ(t2H-#%J{09<^mi_Y^}ZQ&}7LC)Wv#z5tI*{ z=y0R46~}8iqiE#N*kLi#1t=qXtriwO@{*5_6$2;Uw)pz>&B6{6tp$+eRvoHoF2G4J zUDOy(oe{)Og)*EZbseE4^Bwix4FDeifD&wLz65{^RT*6Z=$?!v)nU9)J9ROWnH-w%GtcVGDQ z@n;th_`>Uuu)yk&ut1zh!2(LMWF9~H(SK*)Hgy32T1ODFv)A7P1Oj00 zr@IouA9IP?D^76;I#)Yck*XU{%2>>=WSk^#okJ_4B5s%lK8EdiGR_!V!x)<*ek;`J zhZb&=3qZ$Wg=@ipgTQt)e!O6J{q$tq89JJB`R0DDqQTMHmC(n_au#oGTeE)NSGYo% zj*qy?&m?o9rIx!b(ME81c#Y$CYu3MW9a~~TSdn^(WU*LYVvJ$alqck$)&;v-9y25p z07En=iZY#kd_*7$OJg3wC_uOq8Bb1+d>9rUSmEX6WhVgyOgG;u&}HtosgWcQmoDeE z0>aqwuYN2543zU|IP)V$x3Y0r^c_Qb8UXQOEH`1nk=HF8S?%xFXK!fum}8Mq^I9UK z=G{n2Tm2P;*DxIx9=MM&24R3i^^t$y*RRj+joaS8N+8@sK)X8tQWT)%kvE+DvJe1* zAVq*%xlPXiK#4%`v%8WEKY5WyhWw{E9d!|P6Cn7xVggZIp7JgA+kk;J$m%9ncZn;V zLX{$5s02Va|11E{OiwYc*CpwFpN@LSCa5Z#EEMKi1y-I{Rn?O|FK0rm3`b%@1)%{O z73g2OJaSG`cER?0G)W>A9*TP~b9Ts4T0v4(wWm3+vfLc_=zelzUZ%)bSvx<_{0kDp z`&1?Ieg0aCHh`GN7+Wf}Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D3=By`K~#8N-J1_^ z6xAKaf4jG_Ya#ShI$|4BLQ=wA4*wK!pwbEwOQOh>Op-!7?dVJ$2h31ZERBf&KyYp} z6=EDaoe{!lFiBymfY<;Al0Xn>q#|RIOR?jiu|SCwljU-9+xhOjclY+?j$Crd5&E6^ z&R&we-1~ms+xOnRw@XAsYMfRij})n@+Q*8bz$%XTIWDQBNG5WKRus$0mK=_|zjK&! zi0Bv0_Yu+6wl|I}+1nUuFZ>r)lTiX%lK;m3j_}V3ewm2wu)Q%6sfyhwud1S;D7<`j zL=KfmQ*o}{F#uRU2mln7NxTx}@QR}RjEG9%>gwvFFcCdTM7iR71|>~Zm|2h^01!Ff z1|afVT+pHLatpA|k;4C!h*tCPfj}ToP*Cs&5v{cYz=b^k$u-uW`;&Y=LW+{lXBtmL zvtUJ0Zj{c~iD(KDc@e&{va+qKt1D1hS-F#le&=vFR;a3aZ3I@F0PwG^+U1TCHk$jB ze7+cl1)57lk1*pkw1!(zl+_{xF?>~3RSUv*b#=8NJQ2O3s%obFQi%hA!x0mJA_q`a zN>db?t|)XDOhhvzTQwJ{LAp&5Om6vDdh-QQ&aN~G5o=U2mi&x zL)qEcFDi=if~u;yyv9>fQf#$95CCHM`*{;DoRwN$`+VBx;edxcK|tW{ZE%^Qdm3_j zMT;QL?soNTcq;9PrfDm=7cE-!R}NtJ?%h6wedwWwwjv;J0hyVZ-qzOEe`BcQ;fsrl z-_$hi2}MyB%gtVNA7T8CB7Wus@%pZOI;~NzVYvmw3jpD9JY6^GJpA*S&Nl#{w6yd+ z4gf|?qvm-Fz|TB92T)pCx)b4Hq3PR_@6T*9SomRLr$CMqf^_(#dc+9W& zx`Ob92A3JKd+^@pHvNqeKmS|j`<;94@|mV-e$#Uj2Xo1iB{i+BtzQO%!C+HUQwOed zyyn`pY13hT895w|Nv!O)u`X)OL*bz=GKPyakKx68?@z{TL~!m%@F4)uUOk^!KDWB?vy;k}(ZTwTcqaO%LXEePk@)?X69^5x5S5YaMS z*GmBaEr9vkJfbbIC~+ni0v48=h*rQK*Q8t5e0ROe^rN86a)6<>zwxG!_lz_BpYLE0 zz6l*K`c2a`%#IG@OioT=nXYRqh-A}aL^RQsN|p>ja0$Zy@zL~VUgKi;qyT8h33=~C z)4zY388A-UAOHY2K2Gd_HT0LTdes82V0zra_7r~oWiRaO0+0a!^y z-{o230f6Se1kL}%77Tgz0>}j%Zp)v~0T{=Ae@Or^YY710iez>4T?JyDo;7LGG;M~a zX=@(5Z}e8PIW*TF%85>*Hk$GxwgA|N!IqX5pV#Z%lbf5nfi1SYNJL}pi6un?@Y>_o ze=yY=8gsjk_``-g#Q(tSthXXjWVZzBP06@6*B>-5g!5296XK~BAFk}Ed z`$i~$zh#-m(UQ|*^Uuk_93Tt;;Rgi3>H;}{mdXqZfU(yVG#Xqcw_KoPJ8-}i_QHFd zTS`h6Y~vlE&sTd!*Yy%z*UNQX&(n3CuQEsP{Uu#-01m8A?;z4wdFge*C!+~WPgM@F;9=&pBPykJd$xce3=xsG(m zJ^Qc_>oN1DjoHZ8Er@6_jtbEN#1*gqm;kU->rhFxc5F4x0|39tzowP}2#!<$7@`4S zXIVOy$2ov&U@LsQ0K};<2QYTDwgv#~;YSt#7y#g`v@sY0S2&1n!+1Uz0G6>O#R1?l zFh9UDnAi&B0wvqg0q|Df2>BX*OApT#F95!9i0{#>9{Z*9UGwl{^W0wd1@68Dy1W(_ zYo@zKV+Z&Nar!G(ZcGU)!ThxE0l>uclvM~VLXZn^xh(?Nyn4b%3;=9tpa4WI0)+C% zZ)mmJ1th-aGhiAr*CJUyb9KhC0RvzY zAVdM)@^W@`SI|0jhaU%J}^ZCfYzYvmKSpfoo`R<5+TS19By*}+t;Oc z2ms~~QKnq}gv9y*Mc62L7z>QLPUTx)%J2aKEH7Hh1s-Y(6Q2&;2&pJ^C!57`^Q(FA z;+-IRPHC^u0w6+2_Qpvx0H`PdKw=WZM*(oHu2TtvPyz_SBex`V<0KXU?t}qA;_OKR z!21LX!bk)lR$fAqgTw6m1(sFviKx7Dhbv$>Pj(Ksv$MiROOn)OY&fDiU4S26Rd>bA&2e7u} z`X&HSRhnrZ28Wmce;`6rNx_lbkH54qH?_`evDW1Vv~kkCe^S_|c4eFA>m~(62M)`= zrH^Z07=KKU+-!{qCnh6CtG z6aYNVNi_(rr_eO^vAD$G$;@~>Ml@PraulOOS>_z=Soz6YS*LrOtO<~9DjcsddBRk> z=WArxWkh){#=%@elg@D06syQ3tR;NnQ2$8J@sC8ccK6=i>zAn z{bLLO?&ZrG@;BZ(&&a#4;V=6fS+(d<%r(Kr z6Z`}AIZ2KczfiCOi~@rBGkx4xP9KOd^ua~Z?&#?IFn7e4OZ?UoZa!=c*7E-o)HgJL dqFr>N`X9g+TH5gYiiiLJ002ovPDHLkV1mAl^YZ`z literal 0 HcmV?d00001 diff --git a/mengsan/assets/status/territorial_power.png b/mengsan/assets/status/territorial_power.png new file mode 100644 index 0000000000000000000000000000000000000000..3d071638ce9d0e1c9278fcbafd31d21f4ee9cf32 GIT binary patch literal 3829 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 literal 0 HcmV?d00001 diff --git a/mengsan/assets/status/the_bomb_power.png b/mengsan/assets/status/the_bomb_power.png new file mode 100644 index 0000000000000000000000000000000000000000..f9ecdfa060b38d31b58e044b4a4e4b13c8224218 GIT binary patch literal 4421 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 LNkvXXu0mjf(p5Aj literal 0 HcmV?d00001 diff --git a/mengsan/assets/status/the_gambit_power.png b/mengsan/assets/status/the_gambit_power.png new file mode 100644 index 0000000000000000000000000000000000000000..7b286bfa8a8877dbf537d689f3daea44a33eef5a GIT binary patch literal 3051 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 literal 0 HcmV?d00001 diff --git a/mengsan/assets/status/unmovable_power.png b/mengsan/assets/status/unmovable_power.png new file mode 100644 index 0000000000000000000000000000000000000000..52142568dcb33cd42c5613fae10c0603dea6cf6c GIT binary patch literal 4784 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 literal 0 HcmV?d00001 diff --git a/mengsan/assets/status/vulnerable_power.png b/mengsan/assets/status/vulnerable_power.png new file mode 100644 index 0000000000000000000000000000000000000000..42790a2cf611ba703655895c7e93e54c5c626a03 GIT binary patch literal 3725 zcmV;84s!8{P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D4kAfJK~#8N-J1(= zRMi>Bzq9wQ*~msNY;p-hh`W%iY~09h8(=rPn~+#qI|YP_R&2)(K5DCWP$*)6@DOM5J?RELG~YveJe1fA}7kPE3(n4oi{7)yl|xA&kjV4cLen zq!HP4E{&y%U(=#-5fT6f>BMZQvdR?YG8KRdtc6H_fm-1-07ONS|KCCept8y9Glg|s z!hEYTK!8yJh)fW5Pa8I?N~xjVKvkM>a}9+wO}kV`*YzR?5y@&xFvffiq7Y;!8U+#2 zAg)}llu+v{0Kiv^AqZ!Jz+(UrjV7WRBDyP+97J;+MB^Mp?$!W+X-(6{=(=7DspS#T zWJSLqq6@|M)%wcWnGu4VViE+o|2h~^l$%Z}WEd-;$%Ta*p;}2*hOvSJ5E@5BebjqP z@l!_vnxzpvdp=d;cE2oZjA?EfW15dZ9KZ}o6*eN53_$h++0{ED)IP?Aer^@Qh<-ps zGr4MFhOxZX?cVruAh4@G8jWYt`{8iiy z5982!zyHI-q0niV7L|igkxWA6gizT>e7<)%1W1Gj<{`Q4R+Mi6mdigD4)2x#Ow@^b zWCUQDP1E`?@6@!r(E2bg)W!;?0DvR_Ka&7d!~6n|XRF-$?J56QIBaQ*%Vj~(iKeDN z;N~?MK(f^n7g#M1^G;1mG2a;gzMqqW^ap^x5&*09w+DlVJ6gT~ARtfzz!?bKd;&oF zK7X6X;kY~CbT0ZR6gr81hJL5sxV1VOi!}&6;q$%67@NfyyGgpApNQs+bh*}`(g!+l zFX&KWOlmk9jmD2gqm83Y6A&hHImNudngXh6&xnS@JOuNfN284$F%QWAs(SQz8~|*L zT`U2(2>@1ly?Z+gfDEC&x;idF7$wZ71K`3Vq`R)yyc!7Xg?UK5L0cuvZwdzYX^hn} z#>R_#+8FCEw?3qPzpWAg1OxzBz{Xe%0LJC#KP}96CV)|Sc~1d= zjj=(}JuwiX_5aot03ZP1S+EfRbfVE>Kuin-XPyu@5YfC1rKP)0R8%AjP;bzZlnOM~ zMWgkQG_@6BV&JYhQA=Bb(IXfTF~%ippfPKv3-d)VUu78c zWb+*buowL~8m%8=nrk_LDFfVf|rE(t^@#88M#mJ^#o>}DF86loj1qh*<#JC zItM_b_5EnH-l^+zIRGp3cucS!ePv~zpDh4$Jp;CI06!4`@R3aaw}ZjD&dLC^etktn z{PB{K9UQ=w5&%5<=3il&kICk{8UXJG0FdYgc!A&`%6Aam=^%QzzPkFfY`#4Jj>Tdr z%4Te#gRz-5#!NhE0fEDq^i)a7j$^S{gRHt}6j_s$I?++@*P>F(JAFyFZnKF9a$9dq z1c0kd(*m%+yu8x@EG;hH3iIbNHWubN06)6J7}H#Z)!o?wfCbbyRaNn8P4f>Nz))-X z%ip*Fz{bu7FgPdYK>*Mg8;}kFGGL|8w_|fKxNrNQL5DvMhfkui$Cc%8X8|}>Ss7pG z@w|Cf06bq>`e7DhwdXN*gD}qlATS_Kf*4~{A;WH;-7h-vql zu9rzF(sjL3*Y#^4{xtYG*90+NaB^vkO@3wIzTHz1y-Z)5z!PP8r$gr z4wjcU!u<24r5`ZHCPKoHB&+3xH~f^^B5B_dLKq-F4u|XUxum#w ztIpUY2m_>zu?r2m9q$WjHV1?IaZP6}k0Cr!ZpqJok%*?@4YB}Wjmns<0f212y#O*v zJS6}j*KVIV2jEEy;EPxc#v8jDzzw~7 zud_3TQT}R}$EVKN^vm<|R?Bk<_4{p=4B${Ca=gF8Apq#sT0k0f=3?HC`McZ=)B-yq z(FHaKg9l(9;;A1*CP1QlbT$CA{xd$`PHr9pu8xfZvDMVXQbDi8RPk3v8>J z3}WGM{cx9S2@yeFzQ1Q}bJc~zdr(m{Kzk=*s*Z*6qBNl!^Uc2yQLUY5khM7??e!tX z1H$Wp!2YfT@UYkWFCw~y3#&uR{KH=Frn+z#=KtG~nW!pZ{+(d-NI!?Zm;>mU4nP$E z{4zg(ZC3$!fAHYryyYR7zYOMwyIhaJJf!s5CgrtN0>A=K$rd7gs-5VX?7>uT2)+kS$jz%I4vefcg(x=gAiuQ!Vr|90Xze&mKS1-O)~8E>HV{_ z=YKCJXX(h?+*P*~6uhu$;K02Afc1r1ZYHS!e(Z9=I0W!G<6ylARJwnYxK(t8(^XX% znVa0GwE}>ZKHv7m#l>&V@OWMxYno3(XnhFA0RRFFp^gH;w6~_P5Yt{O^~EWjW&wx| zL*75|Y{o%`DJ#9+zsnnrZOsTQM7|z6^o%Mi<6l))#!tjzjsK~rh`$gF?jxdwM06by zjmTnb24;z^?E-3ju%Lt1`2GLp#^>?@*9t5En*b2zv2!X02u3uJLzpN-P;aPKNEKg= zH3(rgc#toQP9*?r=W_u7n4D*~&--Y|kdqw&Ael$%hh?wAd=fx%tC)v8O0vW$4on`B z5YQdk0YFwG1OUi}DIU)T`OwoWxBHE@41#i9FpE^oqu-~5Fwb8FB*Ho^!9xbXM@k%w zN5a!Y6pGmCsW%ErArZq`_5prrs0K~N+ z9AH8vA1x_)SM2ve>Qq;)psJ&i4ur$s^v}+ohj)i~efFf!_s^Er0!O0JMp@$E#$#UZ zKlsVDdl=C$;Xys**&={686d)ffTiUxA z*%Mi09ov)5%K&5u&4y||&Bev?3r=K1djO#2@p+%uyA9?6;f-K$9|w?Z{gwbMDk{S9 zyX3h-jVPejUj~qN`m2UofEv24J9S;ZT0j`st=povg26)q0Q$CC>E;0Zrca;e0pR-H zz5fLBkZfKCfLWygu&u1@@KD28VI#T&#<9Q=&v~`}Z89%Hd|4hBxRQqs8L}a<$+(n= zZeHT`{`LKE__Tbu0#XghEjTzQ=K&m;+7$|&`Yal4w4}U}Q_H*8?Z(E2I5t~jBN`|f z#`)}&uH0txBGQ;oo}`ffPDDQv5Ps-#Eq$k~>~L!U>3uU|-2z=skIOcZOb)4{kc^uZZ0$NfjHRWaVA_FAzlWjzKa_izADgZ(KtcUo0fiT}pMJx!FhOs;o0L%a} z4VKO0mARVU;$COH)td`ZF}Wr9TUVR(>kMp0PPtw=gb95iX{Ot~0h1eB;)f4;{JSZM zg?psQwr@AoRFr;|A?legAS^8^+L{i)bAJEM?z%qFmKg9Z5@oCLt)_fSk@9ntrV${b zdmT30^zCJ3M`QqdL!pyFr*nQkhXVs1mfz=YWB`D;3;>2)aKS?|fa~(}*T6iVO#Oca z@2}!lDHtxS7p^P){`JSItK+K%4A>@CbGV)ls(7R($Ch(8l*bl+2#UbDWNYtXq-m~~ z%v--CPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D5*JBCK~#8N&6^8! z6h*qnYmy99(le8qSEnZ#LdHa{D6%38EGweOiUjqZyGL+=74K2pyMlOyBZxraBO-EO z0YO3J5g_OC2#^VROhR4*AwaG~U@<_1U{KKO@o``g!T^&@-SbttIyFs5P%!2@=XYul zO#1)p>Z-2l9)xb8A|fK%AX25}&+QfeH<6K%9RdZdq9{m?ml=sEi738jJW>){h;u85 zIIPG-%nW1qZYWynhKxodF&d3YgpgrIqj4HS=q*K2hQiPKO-dgwA~M1dh9FdSE6AA; zX8@GMc-G3Yi~x_v!&)Ut34;)VB}uvuFdB{H5khG?-U4EsWT^hwev>i?6=RAqL`%_# zqZdFNq)h?N9?m3tf_)fK$a4sx3=uQ2%>BdgKdzfN^Y10u2XeoD=FN$I5RiCxQr8kd zY~(rt(NZ)E--duYJs!{FvMf))7-xtOg)DgL`7yb`%Dl|u)#nafJ{md|;&1_7st3d+ z#I+@WeO3kZR1)JKBo6XdNs^|DXBa|1@W=z}UU};ke^zN$eSPq3P=p8PBD$P_xE^sx zPLLVIPLP?HMS5FomboYbrEyHeGH<}cgEObRHPxTBYfD4*`9p!zw1IN!=xKVa`3qVb ztfxntPSMXpU()?o4$*Dri)k6HrsL;KEJ6s)Hd`%2^vBZaC7C5AK$IYacbbVg9YXgR z(09duy*{~Qec7h^n)9`R&qH5^ICT)Z`BbPbc(NJVjflXo(7Cd3iLGXW5uoq0}c_}X9{3!i`4f1QBe zya&i`SrZ^i00C}~do+aa-LLmDF?^c>!os%-fbazucd_tYPJq+xWW-ovm;??;NlfVp z2Q~-TS-&fIoHo$frut@RZw5XF6gBRqxs7Es@3NnfbD^ZUgjUm06GwSLu9Bqm(;ru- zlvS~60s!61kSZ z{YE+qiM19oRP4!0vJ))Ct$Dk>@+sQ&(w3v51bs&9rtO&?YdAM`%Ca){<$DyMmk z6=Cd9@%~gwLBNnFhiro1lhP+8MSqOHYHM34k*X;SXJ_ zZ8LnA764#E%wqVu!0CV(zC8gv{6CxOZWzAH3s4kg0vt^0=qENpc!q9X*9RBFA8k5u zU0^+2K<>q|-&TNKu``75gAqdWQu?GUK25)+oD=k`F!bTI8=dBQTHd&qdUZjs7f{Xs z0mXD5?KAxTEQHW&a*`6SKgM6R;@oizLBNw-z;n}HC;+lbH=n#20X%#zjPOGEE++ss zG~j_flC4Kb6qZU`?=hzkaI_LUYZ8$ogZyEfr&um;f#zu~)bR zQ2@ZhyAoYMe-MB%UelI4D@uT{gpVkSg?=(k?(WH%Ea zN&o?Z1SgiHK}41T8^g{n1ug(SKMfN8ecYcbKtOg)-q{ysP1>3CZ=OXFQ4zECW5(Fo z6H3|@5FQ@3(LlgGw_SkJLtz5otcwyb!Cb=KnBcd=_VXlZDzTFnF~)y!CAvnq5?xk| zu|w?zAYl!J7Kx3E>*H{{qo9p4nbJqT@Pzk90&*^tHtWJ?m9A-a zcJi_-(e)6qlUV32@Uzv+CmH^J;NySXToA0J9ABU!jA^T8)$s5{QT`C?j5PpeyV;=6 z@rw$=b3_4Lf*AgT?2rGc-_fZ!x%d0r14U=<{e9n+AVKjc$sj@TC^q)lPS~XZtxkXq zOH#V$-sF`x5-@4W%avkyq7dYacQOHhK1*0B9)%HqhdT_#(~4DT4bKq;C>{^o>}cU( zn_4g6ROss_;GK`&`$QEmlK*aij}2S^gy+2rOVUe@c;}KWKNell3sA$qDTe0)fd2ja zw=KXblQ7y6V6od7Aixf5d_e%8-qi5Wy|wV|34ope0!oNZ z`n}aBHlKs=AVL@ZO)-3j0xVVwvN~;Hh-ZUiwOKX99}cip9>%b_u|P>u7Hm1-{Sty6 z3x3fAt^UqVyy>}j(COuz z^MrYS^YalugQdd5ZCoHhgyhYbxJIDnxQU#I{!*%2l{y&l^P4@iU!bQ)s# znv1m;#qb>ocy<2FN;vRnlW8m`Dk^G*2*&t*pzqNBAYl{;_^@W(*ARZ<{K-{fc-U;Q z$JrxQ2|q)Coj`bl)oF_m1l$P&Q`p%jgb5HNz@DBK9uUKKBw*Wt{ImLb-jU*745UsP zT>y-k`COhV0eXTa0K&s(F}x}O0bIg$0$}de3$V$K2vq{~fI(Qo?0FoPaE8@py^Dv3 z)`*QDz$THFXLe$E-UDt{003PWc&B*b$rXn)zby(>Q;|72|M*NV;Ql`i%z_pW!vnD2 zC`xem>=7;i7A-c}rU5rD0*}F+6EOIWgyqm;j6c8_r@-I@z=Qz<9WY{aYUaVf@vC+8 zEIrzEvKdxx`oMbl`W|+6e2tZ~l>RTRpr5j~m{!rEE0wgMaTncwuC%Fw?x&NNPh$@^ zt%`jpfDl>+_X9?Z(}|+=#xXGn;DaUKedZgnP}d3I*kqeQ4W5h%o{R}z3ZZ9gpMT1G zzJd<^+kfoD7*7!-z^;lGz9mp=_?s2*>D41NztK;7 zB{0PBfEd0b0r2_A5X9(&;leGh0;0GH4` zy1SU2RhR&q;@}vdC4_hgA@hNa-}-(i_^E<&mes7MX};C;A2qpj@c2aOTY=jOf28RI-Fdl^=3FYJd5!*dcXT*#Nx%lkLt`G@iZPy@+_%?#$$fjFq~0DR zD|QVb52M4<{SO9pw`L*;n7;na17ID(Lz{VGD-*!U2^^;<>6cpg_5|?ohvBJhqo3wB zma|q2|8oRjj1?G!C98$emVlcooqz~cfYuAd9`e{b~hxTR#usywNduVdsUdzG+bTexFqSAL6Vb6~Bf>$@rt>L`@fbP!)z~?$zf5U73 zm@p<(s?Y7X0M5+_fU^%R^nlwgKzvvUsOxdyPPnmg-Tm-lU!aO|mK@$pUn^ck=ajFZ zvr1RfeHV_ji~+h=Q#i+(PtelKd$qw%A5Oo6lN0cV;iLOChK(Ch%I-xZ{0c0XfavH} z+J7~(ow|Vl_ytoDMsqR>-#N(ztZm5E1VFpv%$^$xIIP~>KzIoIO9iBP=bsujZp23z zyBN1sfUx)(1Ooa${_uJ(VAFR#7M=@O`sw!Tf&*~9LtvQWdH7!< zAk90!lm*9_2_Q0&!&axaDnNW&1JEyhL4eo`U@&@j-v-wGK|)%^T3QpR3kwggr9p5W zxV?EkOu(h`5D&igwEx23QNz{<;h%){FYldt0TBLY3vehzdqKe&?_|h{a+HXYk~jt- zw6NdEAq#Wp@u2T&C0%+Xn@;zAOw%ed>8rjEsqfqUw1GCz&zkFKS)hu|?|hKc2Nq=j zh1Yh6L`s8I!SrqK)FRyS5~PV(W-5vCcR5_L0T9*2 z>Xh;Ome=oO0=9g&lZAi1WHl4;@n?DT^H4qY1@^P>e2QyJfL?+aKKuK^%MXrycq%{KdZO^ zLP(@40R)Uh2rYr|kBon06P$G(9(cEM1NC00U=lWbRmj3~79Px^*%wNv?`nl6K_8rj zSKr)(!bUF z#m$xU-Rl3LGk30`=@skP$Pf1d1%X|RtTTDqfH-sKYWmjh^>oA80_wZEi-q+D{9*V4 z6#>qgqgeq@pI$2vLh!)kZ6ezrvb*dEaJU>QEdt_txETBk61Sx^0kNi@d<)8zlAMuI zytFo>cxe#GxmZR42oDnY^q2W%o+e@4>6Uwg*=1|!oU*laX7OtJ;qmS53YfIyGMZv+yskm{HAx z1FqzR-;3cz0j&~Rg7eY`xTP`}3^Pzf#2YUyf3*e%HNbnZjJ0ort@T~o-MsFr{N{IduMf>GS{0gAx+=&4(ds(@ zv$TQENg|1pwd~I(t2vBcwG0MBy6es!@AL2gpPxZO!PQ-KWxbb9FI*YQs9GNa0UOWn zXTd=PFlOenrL(ubdz6I_?xWlPRn`m=p#AXZwlD!ty)g-PboBxZngAxj!RVCY0=9nd z3+M%C60Z2^lFzb3AYs9$8$%#~OX!>W;5I{KWIFKNdz1I@9suEYG*&PX8_pEc1vS}p zMo}hf?|PtrCJ4}`J3EQgp8MGevN$^_JQTkK-mhNuOr9#u!0^60(tP( zr2yRBaWe83(|(T(-l~4(WEqj|&v%dRZZKP8dz-DX?0b1pCeysM+y!+opaR>^6$gr& zt0(}Ummk|kQ(qoiiZGrAM4MueNT-(5?Sx&G$si%ayXbQe;5}c|rhtt6#d}=IZg|!{ zo5*(HJ{Ywf@iGWtIO65eAOINpOsW?I@ZelRPGCO;30y!o+|AStcSD>`tw>`eJl%N= z1aJv(&=4F%uxT-{pFZ*8=sntt2D1HmBHI-{ZE*q60z@GLFu@Br%WBqq!zBP9KRD&FlHHH$=WQ`OLw%fWa+sb20g=YYH~)L(j2hkp z(h8Sq;St7t;9;dmr9cv*WHBGzF=7CS*s_=>9v|8g@7XmY#^4=~>VhL1}v$?z_!!xDyxTtJM)6eht6ubtdLKvcIV5D=vT-}9XS;rWg(2!J*HZzbUW0evs3x4X4q QO8@`>07*qoM6N<$g3-XV8UO$Q literal 0 HcmV?d00001 diff --git a/mengsan/battle/status-sources.js b/mengsan/battle/status-sources.js new file mode 100644 index 0000000..54b9a4a --- /dev/null +++ b/mengsan/battle/status-sources.js @@ -0,0 +1,26 @@ +// Display-only readers. Entries belong to a battle session, never to the run/save. +const sources = new WeakMap(); + +export function bindCombatStatusSource(player, session, id, read) { + if (!player || !session?.active || typeof read !== 'function') return; + let group = sources.get(player); + if (!group) sources.set(player, group = new Map()); + const entry = { session, read }; + group.set(id, entry); + session.ownResource(entry, () => { + if (group.get(id) !== entry) return; + group.delete(id); + if (!group.size && sources.get(player) === group) sources.delete(player); + }); +} + +export function readCombatStatusSources(player, session) { + if (!session?.active) return []; + const result = []; + for (const [id, entry] of sources.get(player) || []) { + if (entry.session !== session) continue; + const state = entry.read(); + if (state) result.push({ id, state }); + } + return result; +} diff --git a/mengsan/cards/packs/README.md b/mengsan/cards/packs/README.md index 896be5d..1195514 100644 --- a/mengsan/cards/packs/README.md +++ b/mengsan/cards/packs/README.md @@ -1,6 +1,6 @@ # 角色牌组 -当前铁甲战士主表 94 张:新增 67 张、沿用 27 张;另有衍生牌【巨石】。专属牌归刘备,基础打击/痛击分别沿用杀/重杀。所有正常获得入口沿用 `canAcquireCard` 的角色检查。杀、重杀保留原有通用牌归属,并纳入刘备的随机生成牌池。旧存档的独立打击/痛击转换为杀/重杀,保留实例ID、强化和词缀;待结算候选保留原ID以避免冲突。 +当前刘备主表 94 张:新增 67 张、沿用 27 张;另有衍生牌【巨石】。专属牌归刘备,基础打击/痛击分别沿用杀/重杀。所有正常获得入口沿用 `canAcquireCard` 的角色检查。杀、重杀保留原有通用牌归属,并纳入刘备的随机生成牌池。旧存档的独立打击/痛击转换为杀/重杀,保留实例ID、强化和词缀;待结算候选保留原ID以避免冲突。 | 目录/文件 | 职责 | | --- | --- | diff --git a/mengsan/cards/packs/liubei/advanced.js b/mengsan/cards/packs/liubei/advanced.js index 10aec3e..648b5ad 100644 --- a/mengsan/cards/packs/liubei/advanced.js +++ b/mengsan/cards/packs/liubei/advanced.js @@ -36,6 +36,8 @@ const originalOf = event => { return use?.mengsanIcRepeatOriginal_shuying || use?.cards?.find(c=>c.name===use.card?.name) || event.card; }; +import { bindCombatStatusSource } from "../../../battle/status-sources.js"; + export function createAdvancedIronclad({game,get,lib,status,getBattle,battleEnergy,random}) { const states=new WeakMap(), uses=new WeakMap(), hits=new WeakMap(), growth=new WeakMap(); const seenUses=new WeakSet(), seenBlocks=new WeakSet(), seenDraws=new WeakSet(); @@ -78,6 +80,7 @@ export function createAdvancedIronclad({game,get,lib,status,getBattle,battleEner s={player,token,powers:Object.create(null),turn:Object.create(null),queue:[],flushing:false, autoQueue:[],autoBusy:false,freeCards:new WeakSet(),negativeStrength:0,autoCount:0}; states.set(player,s); player.addSkill(MARK); + bindCombatStatusSource(player,token.session,"ironclad-advanced",()=>stateOf(player)); token.session.ownResource(s,()=>{if(states.get(player)===s){states.delete(player);player.removeSkill(MARK);s.queue.length=0;s.autoQueue.length=0;}}); bindIroncladHooks(player,token.session,{ valid:()=>valid(player,token), @@ -444,7 +447,7 @@ export function createAdvancedIronclad({game,get,lib,status,getBattle,battleEner if(r.attackDiscount)parts.push("本回合每打出一张攻击牌,费用减少1。"); if(r.draw)parts.push(`抽${r.draw}张牌。`); if(r.stopDraw)parts.push("本回合不能再抽牌。"); - if(r.generateAttack)parts.push("随机生成一张铁甲战士攻击牌至手牌,本回合费用为0。"); + if(r.generateAttack)parts.push("随机生成一张刘备攻击牌至手牌,本回合费用为0。"); if(r.exhaustEnergy)parts.push(`被消耗时获得${r.exhaustEnergy}费用。`); if(r.energyPerAttack)parts.push("每张攻击手牌获得1费用。"); if(r.stopEnergy)parts.push("本回合不能再获得费用。"); @@ -461,7 +464,7 @@ export function createAdvancedIronclad({game,get,lib,status,getBattle,battleEner if(r.topPlays)parts.push(`免费打出抽牌堆顶的X${r.xBonus?"+1":""}张牌。`); if(r.transformAttacks)parts.push(`所有攻击手牌变为巨石${r.boulderUpgrade?"+":""},仅本场战斗。`); if(r.doubleTap)parts.push(`本回合接下来的${r.doubleTap}张攻击牌额外打出一次。`); - if(r.stoke)parts.push(`消耗所有手牌,每张随机生成一张${r.generatedUpgrade?"已强化":""}铁甲战士或无色牌至手牌。`); + if(r.stoke)parts.push(`消耗所有手牌,每张随机生成一张${r.generatedUpgrade?"已强化":""}刘备或无色牌至手牌。`); if(r.retrieveAttack)parts.push("自身回合开始,从弃牌堆随机获得一张攻击牌并强化。"); if(r.bodyguard)parts.push("你承受敌人双倍伤害,敌人对其他友方的伤害减半。"); if(r.autoStrike)parts.push("抽到【杀】或名称含“打击”的攻击牌时,免费向随机敌人打出。"); diff --git a/mengsan/cards/packs/liubei/data.js b/mengsan/cards/packs/liubei/data.js index 668ef54..209010c 100644 --- a/mengsan/cards/packs/liubei/data.js +++ b/mengsan/cards/packs/liubei/data.js @@ -1,4 +1,4 @@ -// 2026-10-03 灰机Wiki铁甲战士详情页主表;所有值均为当前状态。 +// 2026-10-03 灰机Wiki卡牌详情页主表;本作品中归刘备专属牌组。 // 纯数据模块可被费用、升级、注册表及运行时共同导入,不依赖引擎。 import { ironcladAdvancedEntries } from "./advanced-data.js"; import { liubeiCardTraits } from "./traits.js"; diff --git a/mengsan/cards/packs/liubei/runtime.js b/mengsan/cards/packs/liubei/runtime.js index c5d56c9..2de49ab 100644 --- a/mengsan/cards/packs/liubei/runtime.js +++ b/mengsan/cards/packs/liubei/runtime.js @@ -4,6 +4,7 @@ import { canPayCard, cardCost, isActiveCardUse } from "../../../battle/combat-ru import { isAttackCard } from "../../../monsters/vine-tangled.js"; import { applyMengsanDebuff } from "../../../monsters/artifact-status.js"; import { createAdvancedIronclad } from "./advanced.js"; +import { bindCombatStatusSource } from "../../../battle/status-sources.js"; const POWER_SKILL = "mengsan_ic_powers_shuying"; const belongsTo = (event, root) => { @@ -42,12 +43,13 @@ export function createIroncladRuntime({ game, get, lib, status, getBattle, handE player.removeSkill(POWER_SKILL); }); states.set(player, s); + bindCombatStatusSource(player, token.session, "ironclad", () => stateOf(player)); player.addSkill(POWER_SKILL); return s; }; const add = (object, key, n) => { const next = (object[key] || 0) + n; - if (!Number.isFinite(next) || next < 0 || next > Number.MAX_SAFE_INTEGER) throw new RangeError("铁甲战士效果数值越界"); + if (!Number.isFinite(next) || next < 0 || next > Number.MAX_SAFE_INTEGER) throw new RangeError("刘备效果数值越界"); object[key] = next; }; const strength = (player, n, token) => { @@ -77,7 +79,7 @@ export function createIroncladRuntime({ game, get, lib, status, getBattle, handE }; const exhaustHands = async (player, event, token, filter = () => true, afterEach = null) => { const pile = pileOf(player, token); - if (typeof pile?.exhaustFromHand !== "function") throw new Error("铁甲战士缺少个人消耗接口"); + if (typeof pile?.exhaustFromHand !== "function") throw new Error("刘备缺少个人消耗接口"); const playing = new Set(event.cards || []); const cards = player.getCards("h").filter(c => !playing.has(c) && filter(c)); let count = 0; @@ -191,7 +193,7 @@ export function createIroncladRuntime({ game, get, lib, status, getBattle, handE if (r.hitsPerExhaust) hits = await exhaustHands(player, event, token); else if (r.vulnerableHits && target.storage?.mengsanVulnerable_shuying > 0) hits = r.vulnerableHits; const amount = (r.damage || 0) + (r.perExhaust ? r.perExhaust * exhaustCount(player, token) : 0); - if (!positive(amount) || !positive(hits)) throw new RangeError("铁甲战士攻击数值越界"); + if (!positive(amount) || !positive(hits)) throw new RangeError("刘备攻击数值越界"); if (amount > 0) for (let i = 0; i < hits && valid(player, token); i++) { const targets = r.all ? [...token.battle.players].filter(p => p !== player && p.isAlive() && player.isEnemyOf(p)) : [target]; for (const t of targets) { @@ -260,7 +262,7 @@ export function createIroncladRuntime({ game, get, lib, status, getBattle, handE mark: true, marktext: "战", intro: { content(storage, player) { const s = stateOf(player); - if (!s) return "本场战斗的铁甲战士效果"; + if (!s) return "本场战斗的刘备效果"; const names = { turnStrength: "每回合力量", turnEnergy: "每回合费用", turnBlock: "每回合格挡", turnLoseHp: "披风每回合失血", infernoLoseHp: "狱火每回合失血", lossDamage: "失血全体伤害", lossStrength: "失血获得力量", vulnerableBonus: "易伤倍率加成", attackBlock: "攻击获得格挡", retaliation: "反击伤害", colossus: "巨像减伤" }; return Object.entries({ ...s.powers, ...s.turn, ...s.defense }).map(([k, v]) => `${names[k] || k}:${v === true ? "50%" : k === "vulnerableBonus" ? `${v * 100}%` : v}`).join("
"); } }, diff --git a/mengsan/cards/packs/shared/runtime.js b/mengsan/cards/packs/shared/runtime.js index 6889913..525dece 100644 --- a/mengsan/cards/packs/shared/runtime.js +++ b/mengsan/cards/packs/shared/runtime.js @@ -13,6 +13,7 @@ import { applyMengsanDebuff, consumeArtifact } from "../../../monsters/artifact- import { isStunned } from "../../../battle/stun-intent.js"; import { canPayCard, isActiveCardUse, authorizeFreeCardUse, takeXCardUse, cardCost } from "../../../battle/combat-rules.js"; import { grantGold } from "../../../relics/progression.js"; +import { bindCombatStatusSource } from "../../../battle/status-sources.js"; const BRIDGE="mengsan_shared_bridge_shuying", RULES="mengsan_shared_rules_shuying", END="mengsan_shared_end_shuying", LIMIT="mengsan_shared_limit_shuying", AFTER="mengsan_shared_after_shuying"; const safe=n=>Number.isSafeInteger(n) && n>=0; @@ -51,6 +52,7 @@ export function createSharedCardRuntime({game,get,lib,status,getBattle,battleEne s={player,token,powers:Object.create(null),turn:Object.create(null),freeTurn:new WeakSet(),freeBattle:new WeakSet(), nextTurn:[],bombs:[],negativeStrength:0,autoCount:0,drawCount:0,returns:[],maulBonus:0,vigor:0,queuedAllyEnergy:0}; states.set(player,s);player.addSkill(RULES); + bindCombatStatusSource(player,token.session,"shared",()=>stateOf(player)); token.session.ownResource(s,()=>{if(states.get(player)===s){states.delete(player);player.removeSkill(RULES);s.nextTurn.length=0;s.returns.length=0;}}); return s; } diff --git a/mengsan/docs/unified-battle-hud-20261021.md b/mengsan/docs/unified-battle-hud-20261021.md new file mode 100644 index 0000000..7f451b0 --- /dev/null +++ b/mengsan/docs/unified-battle-hud-20261021.md @@ -0,0 +1,98 @@ +# 梦三统一战斗 HUD + +> 当前范围以末尾“77.png/78.png”一节为准:仅替换玩家下方 HUD,采用完全透明布局;怪物、助战和战场出牌副本保持原生呈现。 + +用户已确认统一下方 HUD,并要求支持鼠标/触屏拖牌、多个敌人;不依赖十周年 UI,但兼容十周年 UI。本轮直接修改实际文件,保留其他已有修改,不创建修复副本、不提交或发布。 + +## 目标与边界 + +- 左侧真实玩家头像与生命/格挡/费用,中央状态条和原有真实手牌,右侧原生技能、确认、取消与结束控件。 +- 保持卡牌父容器、角色节点、控件回调及原生事件结算;不创建另一套技能执行或出牌结算。 +- 敌人与助战按现有席位身份动态布局;意图在上方,状态在下方,保留最多八席的原有校验。 +- 读取现有效果;不启用 Wiki 尚未实现的状态,不改变触发优先级、存档或数值。 +- 独立实例(炸弹、未来回合效果)分别显示,强度、回合、次数与阈值分别说明。 +- 十周年未启用时必须完整工作;启用时只适配其当前真实节点,不导入其接口或资源。 + +## 实施计划 + +1. [x] 建立会话隔离的只读状态来源;接入刘备基础/进阶、通用牌及遗物状态。先验证负值、独立实例及旧会话清理。 +2. [x] 新增 HUD 模块、样式、状态资源;保留原生手牌/控件父级,管理会话挂载与恢复。 +3. [x] 接入战斗入口与召唤刷新,适配原生和十周年控件、拖牌遮罩及多角色布局。 +4. [x] 用浏览器隔离场景检查原生/十周年样式、动态控件、拖牌、七个敌人、状态变化与重复卸载;结合源码核对并修复触屏误选、缓慢层数及遗物条裁切问题。 + +## 检查重点 + +技能进入/退出时控件重建;拖牌期间原生确认隐藏;触屏 click/touch 双触发;目标死亡/召唤后的真实命中区域;保存后换战的监听与样式清理。 + +静态、模块与浏览器隔离检查不等同于实际游戏验收。最终须在原生 UI 和实际十周年风格下分别验证完整对局。 + +## 进度 + +已检查既有修改;按本会话已确认方案直接实施。采用当前工作区,不另建工作树;不执行自动提交。 + +新增 `battle/status-sources.js` 管理会话级只读来源,`ui/hud/` 负责显示和布局。刘备基础/进阶与通用牌模块只增加显示读取注册;遗物控制器只增加状态快照,不更改结算。图标从本机 v0.111.0 切片复制60张,共270585字节,尺寸/字节/哈希见 `assets/status/manifest.json`。 + +原生 UI 与十周年三种实际 CSS 的隔离场景已覆盖1280×720、812×375、540×900、七个敌人、原节点父级保持、鼠标拖牌、触屏 PointerEvent 拖牌、十周年独立技能控件回调、状态详情和重复卸载。上述均为隔离检查,未运行完整游戏和真实安卓客户端。 + +检查结果:4项状态模型测试、270项浏览器隔离断言、13个模块语法检查通过;60张图标清单与本机切片一致。拖拽继续使用原有单目标/无目标出牌适配,复杂技能、多次选牌和特殊目标流程沿用原生选择控件。 + +显示顺序目前是稳定的状态定义/来源顺序,不宣称等同于原版的施加/触发顺序。未知原生标记继续保留;只有已由HUD展示的对应标记才隐藏。 + +## 70.png 反馈修正(2026-10-22) + +截图暴露了上一版隔离场景未覆盖的实际结构:十周年将 `ui.control.id` 改为 `dui-controls`,人物姓名/生命位于 `camp-wrap`、`hp-wrap` 内,人物尺寸及手机 `stayleft` 操作组还有高优先级规则。原来的直接子节点选择器未覆盖这些结构,造成皮肤边框、重复数值与操作按钮错位。 + +- 下方改为通透渐隐背景,仅左侧人物信息使用紧凑墨蓝面板;人物真实头像保持原节点,移除由 HUD 替代的姓名、生命和身份装饰显示,保留未知标记及装备交互。 +- 真实操作容器按引用定位,不依赖容器 ID;原生操作组和可选技能/全局技能列分别安排空间。覆盖手机 `stayleft` 横移与旧布局过渡,恢复手杀透明渐变字体的可见性,并保留技能选中/不可用提示。 +- 遗物条按内容收缩;无状态时隐藏空标题和敌人空状态框;真实手牌上移,减少桌面底边裁切。敌人按数量在可用战场空间内排布,独立显示姓名、生命与格挡。 +- 检查扩充为原生与三种十周年风格、四组尺寸(含1234×920),使用实际人物 CSS、嵌套人物结构、重命名按钮容器及手机样式,覆盖可选全局技能和技能文字可见性。 + +本次508项浏览器隔离断言、4项状态模型测试及修改模块语法/差异检查通过。已查看渲染截图;仍未在实际游戏进程或真实安卓客户端验收。游戏需重启以加载修改后的模块。 + +## 71.png 与原方案对照(2026-10-22) + +用户明确仍要求之前确认的统一下方HUD。上一轮实际做成浮动人物卡、手牌和操作列,虽修正了部分皮肤冲突,却偏离原示意中共用底座的视觉关系。本轮对照原 `mengsan-hud-options.html` 第一节恢复统一底座、三栏分隔、固定状态行与完整手牌,保留真实节点及事件;单个敌人使用更大尺寸,多敌人继续动态分行。 + +十周年 `playerDamagepop` 将字符串通知放在 `player.offsetTop + 80`,缩小后的头像会让“回合开始”等通知覆盖底部信息。本轮只为当前HUD中的原生 `.damage.skill-popup` 加显示类并把位置限制在底座上方,保留文字动画与原有自动移除,退出时恢复。 + +新增检查覆盖空状态行稳定占位、旋转手牌底边、单敌人尺寸、通知位置及卸载恢复;仍属浏览器隔离验证。最终视觉需以重新启动后的实际游戏截图确认,不以检查数量作为美观验收。 + +只读评审发现长遗物条会与首排意图相交,新增十遗物场景先复现失败,再为战场顶部独立预留空间。多单位布局将意图、头像、状态作为整体分配高度;短屏按每单位至少64像素确定列数,头像与标签都受单元格限宽。补查667×375/七名敌人和375×500/三名敌人边界,复核确认原遮挡及头像重叠问题已消除。最终871项浏览器隔离断言、修改模块语法与差异检查通过;仍未进行实机验收。 + +## 72.png 细节与遗物位置(2026-10-22) + +用户要求保留统一底座,修正头像被装备覆盖的问题,并将遗物移到屏幕中上方以避开左上回合数。装备原节点保持父级、回调和选取机制,移到头像下方的24像素紧凑横滚行;玩家装备放在底座底部,敌人装备与状态分别预留空间。额外适配十周年把同一装备根节点置于独立 `ui.equipSolts` 包装内的情况,不重建或搬移卡牌。遗物条改上方居中、限制最大宽度,过多时横向滚动。 + +测试加入真实装备CSS、五件装备首尾点击、装备与头像/状态互不遮挡、独立装备包装和卸载恢复,以及遗物居中和避开回合区域。先复现装备遮头像;独立包装的旧 `justify-content:flex-end` 使首件装备溢出且不可滚回,已显式改为起始排列。最终1087项浏览器隔离断言及修改模块语法/差异检查通过,未在实际游戏或安卓客户端验收。 + +## 73.png 现代风格、透明度与阵亡拥挤(2026-10-22) + +按用户要求使用 UI/UX 技能评审后,保留统一下方HUD,改为内缩8像素、24像素圆角、76%背景不透明度与10像素轻度模糊的底座。文字不整体降透明度;头像、状态、按钮、遗物条与详情面板采用一致的圆角层级,弱化分隔线和装备滚动条,扩大桌面栏间留白。原生控件按真实引用清除十周年高优先级的15像素侧边距,并包含按钮内边距/边框,修正右侧圆角裁切。 + +阵亡角色保留真实节点和引擎登记,只隐藏其战场呈现;复活时恢复,避免存留尸体覆盖重排后的角色。普通出牌副本在空间足够时缩成最近两张,独立放在战场下沿;小屏或空间不足时隐藏重复副本。新增 `ui/hud/played-cards.js` 仅修改可恢复的独立translate/scale,不覆盖原生transform、不移除卡牌、不更改结算或原生过渡完成回调;判定/比拼与固定、可选、抽牌/获得牌副本沿用原生呈现。 + +只读评审指出固定预留128像素会压缩812×600七角色的第二排信息,新增场景先复现,再改为优先保障角色及标注空间,余量足够时才显示最近出牌区。最终原生与十周年三种风格、七组尺寸共28组场景、1556项浏览器隔离断言通过,覆盖透明度、圆角、按钮边界、阵亡/复活、判定恢复、原生transform过渡完成、拖牌及退出恢复。已检查桌面阵亡与短屏渲染截图;模块语法及差异检查通过。上述不等于实际游戏或安卓客户端验收,需重启游戏确认最终效果。 + +## 标注图、75.png/76.png(2026-10-22) + +用户明确取消深蓝底框,要求完全透明;左下仅玩家立绘,不存在双武将,立绘需略大以容纳标记、装备。按标注将生命、格挡和费用移到立绘右侧竖排,状态移到立绘上方左侧矩阵;提示语放在手牌上方,确认、取消、托管和结束等原生控件在其下横排,原生技能与十周年可选技能控件在最右侧竖排。桌面玩家立绘由80×116放大为144×196,装备仍在原节点的下方横滚行;窄屏采用竖排人物信息。底座无背景色、边框、阴影或模糊,文字保持不透明并用文字阴影辅助辨识。 + +75.png 的右键说明被手牌遮住。新增 `ui/hud/overlays.js` 仅调整已有简单提示和原生 `.dialog.popped` 的位置,说明放到手牌和操作提示上方,并限制窗口内边界、允许长内容滚动。保留原有右键入口、内容节点、关闭遮罩和回调;不重建说明,不干预含卡牌/按钮的原生复杂选择框。针对原生绝对定位的内容包装增加局部流式布局,避免自动高度塌缩。 + +用户后续收窄范围:怪物界面沿用原版,只替换玩家下方 HUD。已去除本 HUD 的多单位布局、姓名/生命/装备/状态代理、死亡隐藏及最近出牌副本模块;敌人与助战不添加 HUD 类、不改内联位置、不替换节点,也不隐藏它们的原生标记。 + +76.png 奖励界面后方恢复旧布局,原因是 `requestBattleFinish` 立即卸载 HUD 和手牌适配。改为先冻结呈现、停交互和监听,保留玩家及扇形手牌外观;最终仍由原会话在奖励完成后统一释放,不改变战斗停止、结算、存档或奖励选择顺序。 + +本轮浏览器隔离检查使用实际玩家 HUD、手牌模块和原生/十周年三种风格 CSS,覆盖七组尺寸、状态矩阵溢出、玩家装备回调、怪物节点保持、原生技能独立竖排、鼠标与触屏拖牌、右键说明位置/内容/关闭、提示语与横排操作分离,以及停止后保留外观并最终恢复。最终28组场景、1455项浏览器隔离断言、4项状态模型测试以及修改模块语法和差异检查通过,已复核右键说明与透明底座的渲染截图;此类检查仍不等于实际游戏与安卓客户端验收。 + +## 77.png/78.png(2026-10-23) + +玩家信息列与立绘的横向间距缩至 8~16px;常规/横屏立绘下边距由 66px 改为 24px,数值列同步下移。装备使用原节点,在立绘下半部竖向叠放,窄尺寸可滚动;兼容十周年独立装备容器,不迁移节点或替换回调。 + +移除“当前状态/暂无状态”和“选择行动/等待行动”占位文字,无状态时隐藏状态区,有状态时自动显示。左侧状态矩阵贴近立绘上方;遗物移至右侧技能区上方,与状态区对应。窄竖屏遗物改为单行横向滚动,并作 16px 对齐补偿以避开原有怪物意图。技能区高度限于遗物下方。 + +后续按用户要求移除“技能与装备”按钮及其详情代理分支,删除自制操作按钮的纹理、字体、边框、颜色和禁用态覆盖,并移除已无引用的两张复制纹理。确定/回合结束使用当前已启用的十周年或官方原版控件和样式,保留真实节点、内容、点击回调及原有内边距;HUD 仅安排容器位置,允许原生尺寸向上撑开。信息列改为相对立绘顶部定位,避免移除按钮后数值列下沉。右侧技能区仍按原有 HUD 轨道适配,底部布局保持透明。 + +78.png 的原生标记说明层级低于立绘,原生打开函数也不拒绝重复点击。玩家标记捕获阶段仅阻止尚未完成打开或已有说明时的重复打开;由原生事件生成内容,随后将说明移到手牌操作区上方。说明与遮罩分别置于 90/89 层,取消位置和层级过渡,避免短暂遮挡。关闭仍走原生回调,关闭后可重新打开;不改怪物标记。 + +已通过原生及十周年三种风格、七种尺寸的 28 组浏览器隔离场景,共 1847 项断言;另有前一轮 4 项状态模型测试、当前修改模块语法检查和差异检查通过。检查覆盖装备在立绘内、信息间距、移除技能装备代理按钮、操作按钮原始节点/内容/外观/字体/内边距保持、原生确认和结束回调、按钮在手牌上方、遗物溢出访问、标记连续点击/层级/位置/关闭后重开。已复核透明布局与原生按钮、标记说明截图;拖牌在原生目标可见区域验证。尚未完成真实游戏或安卓客户端验收。 diff --git a/mengsan/mode.js b/mengsan/mode.js index 7eeed85..49bf1f1 100644 --- a/mengsan/mode.js +++ b/mengsan/mode.js @@ -73,6 +73,7 @@ import { isFogmog, isToothedEye, isFogmogActor, isEncounterEnemy, recordFogmogAction } from "./monsters/fogmog-intent.js"; import { mountEnergy } from "./ui/energy-display.js"; import { mountHandUI } from "./ui/hand/index.js"; +import { mountBattleHUD } from "./ui/hud/index.js"; import { finishDeathBlow, hasPendingDeathBlow, @@ -715,7 +716,12 @@ const prepareBattle = async (run, node, encounter, session, resources) => { } } activeBattle.pilesUI = mountBattlePiles(session, _status.mengsanBattle_shuying); - currentBattle.relicUI = mountRelics(session, run, currentBattle.relics); + currentBattle.owner = me; + currentBattle.hud = mountBattleHUD(me, currentBattle, { + game, ui, get, lib, _status, document, window, assetBase: STYLE_PATH, + log: message => game.log(message), + }); + currentBattle.relicUI = mountRelics(session, run, currentBattle.relics, { stripRoot: ui.arena }); activeBattle.gmUI = mountGMManager(session, me, activeBattle.personalPiles, _status.mengsanBattle_shuying, resources, game); for (let index = 0; index < plan.units.length; index++) await equipBattleUnit(participants[index], plan.units[index], resources); game.syncState(); @@ -841,7 +847,8 @@ const requestBattleFinish = outcome => { current.pilesUI?.dispose(); current.gmUI?.dispose(); current.relicUI?.dispose(); - current.handUI?.dispose(); + current.handUI?.freeze(); + current.hud?.freeze(); stopBattleTurn(current.session, _status.eventManager); if (_status.mengsanBattle_shuying) _status.mengsanBattle_shuying.resolving = true; current.finished(); @@ -920,6 +927,7 @@ const playBattle = async (run, node, encounter) => { if (current.engineFailed) { reportFlowError(current.engineError); session.requestStop(); + current.hud?.dispose(); current.handUI?.dispose(); document.body.classList.remove("mengsan-battle-ui-shuying"); const reason = current.engineError?.message || String(current.engineError); diff --git a/mengsan/relics/ASSETS.md b/mengsan/relics/ASSETS.md index 52e920b..a295867 100644 --- a/mengsan/relics/ASSETS.md +++ b/mengsan/relics/ASSETS.md @@ -13,7 +13,7 @@ | 遗忘之魂 | lost_soul.png | forgotten_soul.png | | 布质果实 | looming_fruit_2.png | looming_fruit.png | -美味饼干的另外四种角色图仍保留在源图集;当前梦三默认只映射刘备/铁甲战士。 +美味饼干的另外四种角色图仍保留在源图集;当前梦三默认只接入刘备对应版本。 束带是既有梦三道具,不属于Wiki的298件遗物,无对应图集图片,继续文字展示。 战斗遗物栏、背包、选遗物、商店、战利品清单使用这些图片;加载错误保留名称和描述。 diff --git a/mengsan/relics/IMPLEMENTATION-20261006.md b/mengsan/relics/IMPLEMENTATION-20261006.md index 2d0c17e..861a00a 100644 --- a/mengsan/relics/IMPLEMENTATION-20261006.md +++ b/mengsan/relics/IMPLEMENTATION-20261006.md @@ -10,7 +10,7 @@ - [遗物查找页](https://sts2.huijiwiki.com/wiki/模板:查找/遗物);[结构化数据页](https://sts2.huijiwiki.com/wiki/Data:Relic.tabx),快照修订号 `28579`。 - `relics/catalog.js` 保存池、原始稀有度、先古归属、图鉴顺序、中文名、可读描述、原始描述/原始 Wiki 标记、风味文字、前代及来源链接。 - 298 个唯一 Wiki ID;图鉴顺序完整覆盖 1—298。头环原始稀有度仍为“遗物”;先古归属与稀有度分别保存。 -- 遗物池:铁甲战士 9;静默猎手 9;储君 9;亡灵契约师 9;故障机器人 9;通用 253。 +- 遗物池:刘备 9;静默猎手 9;储君 9;亡灵契约师 9;故障机器人 9;通用 253。 - 稀有度:初始 10;普通 30;罕见 40;稀有 50;商店 30;先古之民 102;事件 35;遗物 1。 - 先古归属:无 196;涅奥 30;欧洛巴斯 10;佩尔 10;特兹卡塔拉 10;诺奴佩普 10;坦克斯 10;瓦库 10;达弗 12。 @@ -19,7 +19,7 @@ 来源为用户提供的 `assets/sts2/Godot_Atlas_Sprites_v0.111.0/images/atlases/relic_atlas.sprites/` 拆分 PNG 目录。运行时使用 `assets/relics/.png`,逐字节复制,不拉伸、不重新绘图。所有图片都在 480×672、300 KiB 以内。 298 张图片合计 **2,173,564 字节**。每张的源文件名、尺寸、透明通道、体积、SHA-256 见 [资源清单](../assets/relics/manifest.json)。 -特殊映射:美味饼干使用 `yummy_cookie_ironclad.png`;遗忘之魂使用 `lost_soul.png`;布质果实使用 `looming_fruit_2.png`。美味饼干的其他角色图仍在原图集,当前仅接入铁甲战士图。原梦三束带没有对应 STS2 原图,继续显示文字。 +特殊映射:美味饼干使用 `yummy_cookie_ironclad.png`;遗忘之魂使用 `lost_soul.png`;布质果实使用 `looming_fruit_2.png`。美味饼干的其他角色图仍在原图集,当前仅接入刘备图。原梦三束带没有对应 STS2 原图,继续显示文字。 战斗遗物栏、地图背包、遗物选择、商店和战利品清单已经接入图片;池/稀有度/先古归属可从遗物栏与背包查看。 ## 效果与获取接线 @@ -34,7 +34,7 @@ - 商店保留【杀】与回复生命,新增3个遗物货位、折扣与信使补货。遗物基价暂设120金币;不是 Wiki 公布的商品价格。购买后完成所有遗物选牌,再提交房间结果。 - 普通/罕见/稀有遗物池登记 **81** 项;可售遗物池登记 **91** 项,均在实际获取时继续过滤重复与角色池。 - 原有精英固定遗物奖励、第一章宝箱和初次剧情遗物选择自动使用扩展后的可用池。Boss 极品卡牌池保留原有专属稀有卡约定。 -- 新建刘备征程自动持有燃烧之血,符合铁甲战士初始池;既有存档不追补、不重复发放初始遗物。其他武将暂不指定初始遗物。 +- 新建刘备征程自动持有燃烧之血,符合刘备初始池;既有存档不追补、不重复发放初始遗物。其他武将暂不指定初始遗物。 - 先古/事件/初始遗物已提供独立奖励池;**尚未创建对应先古会面和事件剧情**,不会把这些条目混入普通掉落。后续节点可以引用下表池名或调用已有 `grantRelic`。 - 拾取操作在可序列化副本上计算,成功后替换运行状态;尚未实现的遗物/重复获取不会改金币、随机数或牌组。战后效果在现有结算候选里只计算一次,存档失败重试不重新发奖。 @@ -57,7 +57,7 @@ 1. **烹饪数值与流程**:网页只说明能够烹饪,目前采用最大生命+5。确定原作具体数值后可替换适配值。 2. **非战斗生命归零流程**:危险剪刀/芬芳蘑菇当前扣血保留至少1生命。需要明确是否允许地图中直接死亡,以及对应失败弹窗/存档规则。 3. **先古会面及事件入口**:请确定梦三在哪些章节、节点或剧情中接入各先古和事件遗物。已有数据分类、效果、专用奖励池,但尚无原作的完整会面事件。 -4. **角色池映射**:当前只把刘备映射为铁甲战士,其他四个 STS2 角色未绑定梦三武将;不擅自指定。 +4. **角色池映射**:当前仅接入刘备专属角色池,其他四个 STS2 角色未绑定梦三武将;不擅自指定。 5. **原作机制**:辉星、充能球、集中、奥斯提、灾厄、仆从、铸造、可使用药水,以及 Wiki 指定附魔,需要对应玩法接口;完整逐件缺口见下表。现有词缀不会冒充原作附魔。 6. **先古牌与击杀口径**:尘封魔典当前抽取现有先古事件牌;石之剑按精英战胜利次数计数,需要完整原作候选表及精英单位身份口径。 7. **实机验收**:需要用户回来在实际梦三运行以下场景;此次不在正在进行的征程上自动操纵或替换存档。 @@ -95,7 +95,7 @@ - **微型帐篷**:每个休息选项可各选择一次,直至选择离开;不允许无限重复同一选项。 - **切肉刀**:网页没有烹饪细则;暂定每次烹饪最大生命+5,待用户确认。 - **大蘑菇**:沿用梦三初始手牌4张,扣减2张;未改成STS2的基础手牌数量。 -- **长蛇戒指**:刘备仅映射铁甲战士池;其他角色池需配置player.relicPool才可获取。效果按前三个自身回合各摸2张接入。 +- **长蛇戒指**:刘备默认使用专属遗物池;其他角色池需配置player.relicPool才可获取。效果按前三个自身回合各摸2张接入。 - **符文金字塔**:梦三原本按手牌上限弃牌;这里让全部手牌不计入弃牌上限。虚无牌照常消耗。 - **松动羊毛剪**:选牌后扣除16点生命;当前地图流程保留至少1点生命,待补充非战斗死亡结算。 - **芳香蘑菇**:随机强化2张并扣除15点生命;当前地图流程保留至少1点生命,待补充非战斗死亡结算。 @@ -111,13 +111,13 @@ | 序号 | 遗物 / Wiki ID | 池 | 稀有度 | 先古归属 | 原文效果 | 状态 | 执行 / 缺口 | 来源图片 | | --- | --- | --- | --- | --- | --- | --- | --- | --- | -| 1 | [燃烧之血](https://sts2.huijiwiki.com/wiki/%E7%87%83%E7%83%A7%E4%B9%8B%E8%A1%80)
`burning_blood` | 铁甲战士 | 初始 | — | 在战斗结束时,回复6点生命。 | 已接入,待实机 | battleHeal=6 | `burning_blood.png`
71×81;6202 B | +| 1 | [燃烧之血](https://sts2.huijiwiki.com/wiki/%E7%87%83%E7%83%A7%E4%B9%8B%E8%A1%80)
`burning_blood` | 刘备 | 初始 | — | 在战斗结束时,回复6点生命。 | 已接入,待实机 | battleHeal=6 | `burning_blood.png`
71×81;6202 B | | 2 | [蛇之戒指](https://sts2.huijiwiki.com/wiki/%E8%9B%87%E4%B9%8B%E6%88%92%E6%8C%87)
`ring_of_the_snake` | 静默猎手 | 初始 | — | 在每场战斗开始时,额外抽2张牌。 | 已接入,待实机 | openingDraw=2 | `ring_of_the_snake.png`
81×81;9868 B | | 3 | [天赋君权](https://sts2.huijiwiki.com/wiki/%E5%A4%A9%E8%B5%8B%E5%90%9B%E6%9D%83)
`divine_right` | 储君 | 初始 | — | 在每场战斗开始时,获得[辉星][辉星][辉星]。 | 待补充,禁入奖励 | 辉星系统 | `divine_right.png`
71×81;8739 B | | 4 | [缚魂命匣](https://sts2.huijiwiki.com/wiki/%E7%BC%9A%E9%AD%82%E5%91%BD%E5%8C%A3)
`bound_phylactery` | 亡灵契约师 | 初始 | — | 在你的回合开始时,召唤1 | 待补充,禁入奖励 | 奥斯提召唤系统 | `bound_phylactery.png`
77×82;8874 B | | 5 | [破损核心](https://sts2.huijiwiki.com/wiki/%E7%A0%B4%E6%8D%9F%E6%A0%B8%E5%BF%83)
`cracked_core` | 故障机器人 | 初始 | — | 在每场战斗开始时,生成1个闪电充能球。 | 待补充,禁入奖励 | 充能球系统 | `cracked_core.png`
79×78;8536 B | -| 6 | [黑暗之血](https://sts2.huijiwiki.com/wiki/%E9%BB%91%E6%9A%97%E4%B9%8B%E8%A1%80)
`black_blood` | 铁甲战士 | 初始 | — | 在战斗结束时,回复12点生命。 | 已接入,待实机 | battleHeal=12;replaces="burning_blood" | `black_blood.png`
66×79;6334 B | -| 7 | [长蛇戒指](https://sts2.huijiwiki.com/wiki/%E9%95%BF%E8%9B%87%E6%88%92%E6%8C%87)
`ring_of_the_drake` | 静默猎手 | 初始 | — | 在战斗开始时的前3个回合,你额外抽2张牌。 | 梦三适配,待实机 | 刘备仅映射铁甲战士池;其他角色池需配置player.relicPool才可获取。效果按前三个自身回合各摸2张接入。 | `ring_of_the_drake.png`
78×80;7525 B | +| 6 | [黑暗之血](https://sts2.huijiwiki.com/wiki/%E9%BB%91%E6%9A%97%E4%B9%8B%E8%A1%80)
`black_blood` | 刘备 | 初始 | — | 在战斗结束时,回复12点生命。 | 已接入,待实机 | battleHeal=12;replaces="burning_blood" | `black_blood.png`
66×79;6334 B | +| 7 | [长蛇戒指](https://sts2.huijiwiki.com/wiki/%E9%95%BF%E8%9B%87%E6%88%92%E6%8C%87)
`ring_of_the_drake` | 静默猎手 | 初始 | — | 在战斗开始时的前3个回合,你额外抽2张牌。 | 梦三适配,待实机 | 刘备默认使用专属遗物池;其他角色池需配置player.relicPool才可获取。效果按前三个自身回合各摸2张接入。 | `ring_of_the_drake.png`
78×80;7525 B | | 8 | [天命所归](https://sts2.huijiwiki.com/wiki/%E5%A4%A9%E5%91%BD%E6%89%80%E5%BD%92)
`divine_destiny` | 储君 | 初始 | — | 在每场战斗开始时,获得[辉星][辉星][辉星][辉星][辉星][辉星]。 | 待补充,禁入奖励 | 辉星系统 | `divine_destiny.png`
71×81;8401 B | | 9 | [无界命匣](https://sts2.huijiwiki.com/wiki/%E6%97%A0%E7%95%8C%E5%91%BD%E5%8C%A3)
`phylactery_unbound` | 亡灵契约师 | 初始 | — | 在每场战斗开始时,召唤5。在你的回合开始时,召唤2。 | 待补充,禁入奖励 | 奥斯提召唤系统 | `phylactery_unbound.png`
76×80;9269 B | | 10 | [注能核心](https://sts2.huijiwiki.com/wiki/%E6%B3%A8%E8%83%BD%E6%A0%B8%E5%BF%83)
`infused_core` | 故障机器人 | 初始 | — | 在每场战斗开始时,生成3个闪电充能球。闪电充能球额外造成1点伤害。 | 待补充,禁入奖励 | 充能球系统 | `infused_core.png`
80×78;10310 B | @@ -146,7 +146,7 @@ | 33 | [战纹涂料](https://sts2.huijiwiki.com/wiki/%E6%88%98%E7%BA%B9%E6%B6%82%E6%96%99)
`war_paint` | 通用 | 普通 | — | 拾起时,随机升级2张技能牌。 | 已接入,待实机 | gainUpgrade=2;upgradeType="skill" | `war_paint.png`
80×53;7563 B | | 34 | [准备背包](https://sts2.huijiwiki.com/wiki/%E5%87%86%E5%A4%87%E8%83%8C%E5%8C%85)
`bag_of_preparation` | 通用 | 普通 | — | 在每场战斗开始时,额外抽2张牌。 | 已接入,待实机 | openingDraw=2 | `bag_of_preparation.png`
81×74;8988 B | | 35 | [紫水晶茄子](https://sts2.huijiwiki.com/wiki/%E7%B4%AB%E6%B0%B4%E6%99%B6%E8%8C%84%E5%AD%90)
`amethyst_aubergine` | 通用 | 普通 | — | 敌人额外掉落15金币。 | 已接入,待实机 | battleGold=15 | `amethyst_aubergine.png`
81×77;7960 B | -| 36 | [红头骨](https://sts2.huijiwiki.com/wiki/%E7%BA%A2%E5%A4%B4%E9%AA%A8)
`red_skull` | 铁甲战士 | 普通 | — | 当你的生命值低于或等于50%时,你额外获得3点力量 | 已接入,待实机 | lowHpStrength=3 | `red_skull.png`
76×81;8046 B | +| 36 | [红头骨](https://sts2.huijiwiki.com/wiki/%E7%BA%A2%E5%A4%B4%E9%AA%A8)
`red_skull` | 刘备 | 普通 | — | 当你的生命值低于或等于50%时,你额外获得3点力量 | 已接入,待实机 | lowHpStrength=3 | `red_skull.png`
76×81;8046 B | | 37 | [异蛇头骨](https://sts2.huijiwiki.com/wiki/%E5%BC%82%E8%9B%87%E5%A4%B4%E9%AA%A8)
`snecko_skull` | 静默猎手 | 普通 | — | 每当你给予敌人中毒时,所给予的中毒层数增加1层。 | 待补充,禁入奖励 | 玩家中毒牌与中毒系统 | `snecko_skull.png`
80×73;6524 B | | 38 | [击剑指南](https://sts2.huijiwiki.com/wiki/%E5%87%BB%E5%89%91%E6%8C%87%E5%8D%97)
`fencing_manual` | 储君 | 普通 | — | 在每场战斗开始时,铸造10。 | 待补充,禁入奖励 | 铸造系统 | `fencing_manual.png`
59×80;6554 B | | 39 | [骨笛](https://sts2.huijiwiki.com/wiki/%E9%AA%A8%E7%AC%9B)
`bone_flute` | 亡灵契约师 | 普通 | — | 每当奥斯提攻击时,获得2点格挡。 | 待补充,禁入奖励 | 奥斯提攻击系统 | `bone_flute.png`
81×78;5418 B | @@ -181,8 +181,8 @@ | 68 | [招财异鱼](https://sts2.huijiwiki.com/wiki/%E6%8B%9B%E8%B4%A2%E5%BC%82%E9%B1%BC)
`lucky_fysh` | 通用 | 罕见 | — | 每当你将一张卡牌加入你的牌组时,获得15金币。 | 已接入,待实机 | deckAddGold=15 | `lucky_fysh.png`
81×83;9458 B | | 69 | [招架盾](https://sts2.huijiwiki.com/wiki/%E6%8B%9B%E6%9E%B6%E7%9B%BE)
`parrying_shield` | 通用 | 罕见 | — | 如果你在回合结束时拥有至少10点格挡,则对随机敌人造成6点伤害。 | 已接入,待实机 | endBlockThreshold=10;endBlockDamage=6 | `parrying_shield.png`
81×81;8633 B | | 70 | [烛台](https://sts2.huijiwiki.com/wiki/%E7%83%9B%E5%8F%B0)
`candelabra` | 通用 | 罕见 | — | 在你的第2回合开始时,获得[能量][能量]。 | 已接入,待实机 | nthTurn=2;nthTurnEnergy=2 | `candelabra.png`
81×81;5701 B | -| 71 | [纸蛙](https://sts2.huijiwiki.com/wiki/%E7%BA%B8%E8%9B%99)
`paper_phrog` | 铁甲战士 | 罕见 | — | 有易伤状态的敌人受到的伤害增加75%而非50%。 | 梦三适配,待实机 | 依梦三易伤口径向上取整;作用于玩家发起的攻击,保留既有卡牌的额外易伤增幅。 | `paper_phrog.png`
81×69;5557 B | -| 72 | [自成型黏土](https://sts2.huijiwiki.com/wiki/%E8%87%AA%E6%88%90%E5%9E%8B%E9%BB%8F%E5%9C%9F)
`self_forming_clay` | 铁甲战士 | 罕见 | — | 每当你在战斗中失去生命,就在下回合获得3点格挡。 | 已接入,待实机 | hpLossNextBlock=3 | `self_forming_clay.png`
81×80;7786 B | +| 71 | [纸蛙](https://sts2.huijiwiki.com/wiki/%E7%BA%B8%E8%9B%99)
`paper_phrog` | 刘备 | 罕见 | — | 有易伤状态的敌人受到的伤害增加75%而非50%。 | 梦三适配,待实机 | 依梦三易伤口径向上取整;作用于玩家发起的攻击,保留既有卡牌的额外易伤增幅。 | `paper_phrog.png`
81×69;5557 B | +| 72 | [自成型黏土](https://sts2.huijiwiki.com/wiki/%E8%87%AA%E6%88%90%E5%9E%8B%E9%BB%8F%E5%9C%9F)
`self_forming_clay` | 刘备 | 罕见 | — | 每当你在战斗中失去生命,就在下回合获得3点格挡。 | 已接入,待实机 | hpLossNextBlock=3 | `self_forming_clay.png`
81×80;7786 B | | 73 | [铜钹](https://sts2.huijiwiki.com/wiki/%E9%93%9C%E9%92%B9)
`tingsha` | 静默猎手 | 罕见 | — | 你每在你的回合丢弃一张牌,就对一名随机敌人造成3点伤害。 | 待补充,禁入奖励 | 尚缺效果接口:discardDamage | `tingsha.png`
77×72;6163 B | | 74 | [扭曲漏斗](https://sts2.huijiwiki.com/wiki/%E6%89%AD%E6%9B%B2%E6%BC%8F%E6%96%97)
`twisted_funnel` | 静默猎手 | 罕见 | — | 在每场战斗开始时,给予所有敌人4层中毒。 | 待补充,禁入奖励 | 中毒系统 | `twisted_funnel.png`
80×71;6585 B | | 75 | [星系尘埃](https://sts2.huijiwiki.com/wiki/%E6%98%9F%E7%B3%BB%E5%B0%98%E5%9F%83)
`galactic_dust` | 储君 | 罕见 | — | 每消耗10点[辉星],就获得10格挡。 | 待补充,禁入奖励 | 辉星消费系统 | `galactic_dust.png`
80×82;7036 B | @@ -226,9 +226,9 @@ | 113 | [钨合金棍](https://sts2.huijiwiki.com/wiki/%E9%92%A8%E5%90%88%E9%87%91%E6%A3%8D)
`tungsten_rod` | 通用 | 稀有 | — | 你每次失去生命时,减少失去的生命值1点。 | 已接入,待实机 | reduceHpLoss=1 | `tungsten_rod.png`
80×75;5669 B | | 114 | [蜥蜴尾巴](https://sts2.huijiwiki.com/wiki/%E8%9C%A5%E8%9C%B4%E5%B0%BE%E5%B7%B4)
`lizard_tail` | 通用 | 稀有 | — | 当你的生命值将要降低至0或以下时,回复到最大生命值的50%(仅能起效一次)。 | 已接入,待实机 | deathHealFraction=0.5 | `lizard_tail.png`
82×81;7566 B | | 115 | [转经轮](https://sts2.huijiwiki.com/wiki/%E8%BD%AC%E7%BB%8F%E8%BD%AE)
`prayer_wheel` | 通用 | 稀有 | — | 普通敌人额外掉落一次卡牌奖励。 | 待补充,禁入奖励 | 独立的额外卡牌奖励组 | `prayer_wheel.png`
57×81;6409 B | -| 116 | [卡戎之灰](https://sts2.huijiwiki.com/wiki/%E5%8D%A1%E6%88%8E%E4%B9%8B%E7%81%B0)
`charons_ashes` | 铁甲战士 | 稀有 | — | 每当你消耗一张牌,对所有敌人造成3点伤害。 | 已接入,待实机 | exhaustDamage=3 | `charons_ashes.png`
80×79;7056 B | -| 117 | [恶魔之舌](https://sts2.huijiwiki.com/wiki/%E6%81%B6%E9%AD%94%E4%B9%8B%E8%88%8C)
`demon_tongue` | 铁甲战士 | 稀有 | — | 每回合第一次在回合内失去生命值时,回复等量的生命值。 | 待补充,禁入奖励 | 尚缺效果接口:firstTurnLossHeal | `demon_tongue.png`
79×79;5413 B | -| 118 | [损毁头盔](https://sts2.huijiwiki.com/wiki/%E6%8D%9F%E6%AF%81%E5%A4%B4%E7%9B%94)
`ruined_helmet` | 铁甲战士 | 稀有 | — | 你在每场战斗中第一次获得的力量值翻倍。 | 待补充,禁入奖励 | 尚缺效果接口:firstStrengthDouble | `ruined_helmet.png`
67×78;6839 B | +| 116 | [卡戎之灰](https://sts2.huijiwiki.com/wiki/%E5%8D%A1%E6%88%8E%E4%B9%8B%E7%81%B0)
`charons_ashes` | 刘备 | 稀有 | — | 每当你消耗一张牌,对所有敌人造成3点伤害。 | 已接入,待实机 | exhaustDamage=3 | `charons_ashes.png`
80×79;7056 B | +| 117 | [恶魔之舌](https://sts2.huijiwiki.com/wiki/%E6%81%B6%E9%AD%94%E4%B9%8B%E8%88%8C)
`demon_tongue` | 刘备 | 稀有 | — | 每回合第一次在回合内失去生命值时,回复等量的生命值。 | 待补充,禁入奖励 | 尚缺效果接口:firstTurnLossHeal | `demon_tongue.png`
79×79;5413 B | +| 118 | [损毁头盔](https://sts2.huijiwiki.com/wiki/%E6%8D%9F%E6%AF%81%E5%A4%B4%E7%9B%94)
`ruined_helmet` | 刘备 | 稀有 | — | 你在每场战斗中第一次获得的力量值翻倍。 | 待补充,禁入奖励 | 尚缺效果接口:firstStrengthDouble | `ruined_helmet.png`
67×78;6839 B | | 119 | [螺线飞镖](https://sts2.huijiwiki.com/wiki/%E8%9E%BA%E7%BA%BF%E9%A3%9E%E9%95%96)
`helical_dart` | 静默猎手 | 稀有 | — | 你每打出一张小刀,就在本回合获得1点敏捷。 | 待补充,禁入奖励 | 小刀牌与静默猎手牌组 | `helical_dart.png`
79×80;6241 B | | 120 | [纸鹤](https://sts2.huijiwiki.com/wiki/%E7%BA%B8%E9%B9%A4)
`paper_krane` | 静默猎手 | 稀有 | — | 有虚弱状态的敌人造成的伤害降低40%而非25%。 | 梦三适配,待实机 | 依梦三虚弱口径向下取整,敌人攻击倍率0.6。 | `paper_krane.png`
76×78;5861 B | | 121 | [结实绷带](https://sts2.huijiwiki.com/wiki/%E7%BB%93%E5%AE%9E%E7%BB%B7%E5%B8%A6)
`tough_bandages` | 静默猎手 | 稀有 | — | 你每在你的回合丢弃一张牌,就获得3点格挡。 | 待补充,禁入奖励 | 尚缺效果接口:discardBlock | `tough_bandages.png`
80×78;7351 B | @@ -266,7 +266,7 @@ | 153 | [勇气投石索](https://sts2.huijiwiki.com/wiki/%E5%8B%87%E6%B0%94%E6%8A%95%E7%9F%B3%E7%B4%A2)
`sling_of_courage` | 通用 | 商店 | — | 在与精英敌人战斗时,获得2点力量。 | 已接入,待实机 | eliteOpeningStrength=2 | `sling_of_courage.png`
81×77;6202 B | | 154 | [幽灵种子](https://sts2.huijiwiki.com/wiki/%E5%B9%BD%E7%81%B5%E7%A7%8D%E5%AD%90)
`ghost_seed` | 通用 | 商店 | — | 打击和防御获得虚无。 | 待补充,禁入奖励 | 尚缺效果接口:starterVoid | `ghost_seed.png`
71×78;7167 B | | 155 | [羽翼护符](https://sts2.huijiwiki.com/wiki/%E7%BE%BD%E7%BF%BC%E6%8A%A4%E7%AC%A6)
`wing_charm` | 通用 | 商店 | — | 每次卡牌奖励中,都会有随机一张牌被附魔:迅捷1。 | 待补充,禁入奖励 | 迅捷附魔 | `wing_charm.png`
76×76;7790 B | -| 156 | [硫磺](https://sts2.huijiwiki.com/wiki/%E7%A1%AB%E7%A3%BA)
`brimstone` | 铁甲战士 | 商店 | — | 在你的每个回合开始时,你获得2点力量,所有敌人获得1点力量。 | 待补充,禁入奖励 | 尚缺效果接口:turnStrength、enemyTurnStrength | `brimstone.png`
79×72;7533 B | +| 156 | [硫磺](https://sts2.huijiwiki.com/wiki/%E7%A1%AB%E7%A3%BA)
`brimstone` | 刘备 | 商店 | — | 在你的每个回合开始时,你获得2点力量,所有敌人获得1点力量。 | 待补充,禁入奖励 | 尚缺效果接口:turnStrength、enemyTurnStrength | `brimstone.png`
79×72;7533 B | | 157 | [忍术卷轴](https://sts2.huijiwiki.com/wiki/%E5%BF%8D%E6%9C%AF%E5%8D%B7%E8%BD%B4)
`ninja_scroll` | 静默猎手 | 商店 | — | 每场战斗开始时,将3张小刀加入你的手牌。 | 待补充,禁入奖励 | 小刀牌与静默猎手牌组 | `ninja_scroll.png`
78×79;8733 B | | 158 | [维特鲁威仆从](https://sts2.huijiwiki.com/wiki/%E7%BB%B4%E7%89%B9%E9%B2%81%E5%A8%81%E4%BB%86%E4%BB%8E)
`vitruvian_minion` | 储君 | 商店 | — | 名字中有“仆从”的卡牌造成双倍的伤害与格挡。 | 待补充,禁入奖励 | 仆从牌与储君牌组 | `vitruvian_minion.png`
81×81;9816 B | | 159 | [不死符文](https://sts2.huijiwiki.com/wiki/%E4%B8%8D%E6%AD%BB%E7%AC%A6%E6%96%87)
`undying_sigil` | 亡灵契约师 | 商店 | — | 当敌人的灾厄层数大于等于其生命值时,它造成的伤害降低50%。 | 待补充,禁入奖励 | 灾厄系统 | `undying_sigil.png`
78×75;9913 B | diff --git a/mengsan/relics/battle.js b/mengsan/relics/battle.js index 13fedaa..88a1616 100644 --- a/mengsan/relics/battle.js +++ b/mengsan/relics/battle.js @@ -34,6 +34,7 @@ export function createRelicBattle(run,{active,draw,log,effect,owner,node={},enco const drawMore=async (relic,amount)=>{ if(!usable() || !(amount>0))return; if(!turns)openingHandBonus+=amount; log(relic,`摸${amount}张牌`); await draw(amount); }; const controller={ has, + displayState(){return {dexterity,plating,nextEnergy,nextBlock};}, retainsHand(){return has("runic_pyramid") || has("ringing_triangle") && turns===1;}, get openingHandBonus(){return openingHandBonus;}, get turns(){return turns;}, diff --git a/mengsan/relics/catalog.js b/mengsan/relics/catalog.js index 36ecf05..5b382a9 100644 --- a/mengsan/relics/catalog.js +++ b/mengsan/relics/catalog.js @@ -5,7 +5,7 @@ export const relicCatalog = Object.freeze([ "wikiId": "burning_blood", "name": "燃烧之血", "description": "在战斗结束时,回复6点生命。", - "pool": "铁甲战士", + "pool": "刘备", "tier": "初始", "ancient": null, "order": 1, @@ -90,7 +90,7 @@ export const relicCatalog = Object.freeze([ "wikiId": "black_blood", "name": "黑暗之血", "description": "在战斗结束时,回复12点生命。", - "pool": "铁甲战士", + "pool": "刘备", "tier": "初始", "ancient": null, "order": 6, @@ -600,7 +600,7 @@ export const relicCatalog = Object.freeze([ "wikiId": "red_skull", "name": "红头骨", "description": "当你的生命值低于或等于50%时,你额外获得3点力量", - "pool": "铁甲战士", + "pool": "刘备", "tier": "普通", "ancient": null, "order": 36, @@ -1195,7 +1195,7 @@ export const relicCatalog = Object.freeze([ "wikiId": "paper_phrog", "name": "纸蛙", "description": "有易伤状态的敌人受到的伤害增加75%而非50%。", - "pool": "铁甲战士", + "pool": "刘备", "tier": "罕见", "ancient": null, "order": 71, @@ -1212,7 +1212,7 @@ export const relicCatalog = Object.freeze([ "wikiId": "self_forming_clay", "name": "自成型黏土", "description": "每当你在战斗中失去生命,就在下回合获得3点格挡。", - "pool": "铁甲战士", + "pool": "刘备", "tier": "罕见", "ancient": null, "order": 72, @@ -1960,7 +1960,7 @@ export const relicCatalog = Object.freeze([ "wikiId": "charons_ashes", "name": "卡戎之灰", "description": "每当你消耗一张牌,对所有敌人造成3点伤害。", - "pool": "铁甲战士", + "pool": "刘备", "tier": "稀有", "ancient": null, "order": 116, @@ -1977,7 +1977,7 @@ export const relicCatalog = Object.freeze([ "wikiId": "demon_tongue", "name": "恶魔之舌", "description": "每回合第一次在回合内失去生命值时,回复等量的生命值。", - "pool": "铁甲战士", + "pool": "刘备", "tier": "稀有", "ancient": null, "order": 117, @@ -1994,7 +1994,7 @@ export const relicCatalog = Object.freeze([ "wikiId": "ruined_helmet", "name": "损毁头盔", "description": "你在每场战斗中第一次获得的力量值翻倍。", - "pool": "铁甲战士", + "pool": "刘备", "tier": "稀有", "ancient": null, "order": 118, @@ -2640,7 +2640,7 @@ export const relicCatalog = Object.freeze([ "wikiId": "brimstone", "name": "硫磺", "description": "在你的每个回合开始时,你获得2点力量,所有敌人获得1点力量。", - "pool": "铁甲战士", + "pool": "刘备", "tier": "商店", "ancient": null, "order": 156, diff --git a/mengsan/relics/definitions.js b/mengsan/relics/definitions.js index a4323dd..7272a2d 100644 --- a/mengsan/relics/definitions.js +++ b/mengsan/relics/definitions.js @@ -7,7 +7,7 @@ export const relicAdaptations = Object.freeze({ miniature_tent:"每个休息选项可各选择一次,直至选择离开;不允许无限重复同一选项。", meat_cleaver:"网页没有烹饪细则;暂定每次烹饪最大生命+5,待用户确认。", big_mushroom:"沿用梦三初始手牌4张,扣减2张;未改成STS2的基础手牌数量。", - ring_of_the_drake:"刘备仅映射铁甲战士池;其他角色池需配置player.relicPool才可获取。效果按前三个自身回合各摸2张接入。", + ring_of_the_drake:"刘备默认使用专属遗物池;其他角色池需配置player.relicPool才可获取。效果按前三个自身回合各摸2张接入。", runic_pyramid:"梦三原本按手牌上限弃牌;这里让全部手牌不计入弃牌上限。虚无牌照常消耗。", precarious_shears:"选牌后扣除16点生命;当前地图流程保留至少1点生命,待补充非战斗死亡结算。", fragrant_mushroom:"随机强化2张并扣除15点生命;当前地图流程保留至少1点生命,待补充非战斗死亡结算。", @@ -34,7 +34,7 @@ export const relicDefinitions = Object.freeze(Object.fromEntries(entries.map(ent const aliases = Object.freeze(Object.fromEntries(entries.flatMap(entry => [[entry.id, entry.id], [entry.wikiId, entry.id], [`mengsan_${entry.wikiId}_shuying`, entry.id]]))); export const getRelic = id => Object.hasOwn(aliases, id) ? relicDefinitions[aliases[id]] : null; export const heldRelics = run => [...new Set((run?.player?.items || []).map(id => getRelic(id)?.id).filter(Boolean))].map(getRelic); -export const relicPoolFor = run => run?.player?.relicPool || (run?.player?.character === "mengsan_liubei_shuying" ? "铁甲战士" : null); +export const relicPoolFor = run => run?.player?.relicPool || (run?.player?.character === "mengsan_liubei_shuying" ? "刘备" : null); export function canAcquireRelic(run, id, { allowPending = false } = {}) { const relic = getRelic(id); if (!run?.player || !relic || !allowPending && relic.implementation === "pending") return false; diff --git a/mengsan/tools/import-status-icons.cjs b/mengsan/tools/import-status-icons.cjs new file mode 100644 index 0000000..1126c33 --- /dev/null +++ b/mengsan/tools/import-status-icons.cjs @@ -0,0 +1,24 @@ +const fs = require('node:fs'); +const path = require('node:path'); +const crypto = require('node:crypto'); +const { pathToFileURL } = require('node:url'); +(async () => { + const root = path.resolve(__dirname, '..'); + const { statusIconNames } = await import(pathToFileURL(path.join(root, 'ui/hud/status-model.js')).href); + const source = path.join(root, 'assets/sts2/Godot_Atlas_Sprites_v0.111.0/images/atlases/power_atlas.sprites'); + const output = path.join(root, 'assets/status'); + fs.mkdirSync(output, {recursive:true}); + const entries = [], missing = []; + for (const name of statusIconNames) { + if (!/^[a-z0-9_]+\.png$/.test(name)) throw new Error('Invalid icon name'); + if (!fs.existsSync(path.join(source,name))) { missing.push(name);continue; } + const bytes = fs.readFileSync(path.join(source,name)); + if (bytes.subarray(0,8).toString('hex')!=='89504e470d0a1a0a') throw new Error('Invalid PNG: '+name); + const target=path.join(output,name); + if(fs.existsSync(target)&&!fs.readFileSync(target).equals(bytes))throw new Error('Existing icon differs: '+name); + fs.writeFileSync(target,bytes); + entries.push({name,bytes:bytes.length,width:bytes.readUInt32BE(16),height:bytes.readUInt32BE(20),sha256:crypto.createHash('sha256').update(bytes).digest('hex')}); + } + fs.writeFileSync(path.join(output,'manifest.json'),JSON.stringify({sourceVersion:'v0.111.0',source:'images/atlases/power_atlas.sprites',entries,missing},null,2)+'\n'); + console.log(JSON.stringify({icons:entries.length,missing,bytes:entries.reduce((n,e)=>n+e.bytes,0)})); +})().catch(error=>{console.error(error);process.exitCode=1;}); diff --git a/mengsan/tools/import-sts2-relics.py b/mengsan/tools/import-sts2-relics.py index b894afc..7388552 100644 --- a/mengsan/tools/import-sts2-relics.py +++ b/mengsan/tools/import-sts2-relics.py @@ -17,6 +17,11 @@ IMAGE_ALIASES = { "forgotten_soul": "lost_soul.png", "looming_fruit": "looming_fruit_2.png", } +# Stable Wiki IDs keep the project's character name when importing raw snapshots. +LIUBEI_RELICS = frozenset({ + "burning_blood", "black_blood", "red_skull", "paper_phrog", + "self_forming_clay", "charons_ashes", "demon_tongue", "ruined_helmet", "brimstone", +}) def main(): @@ -43,7 +48,8 @@ def main(): entries.append({ "id": ALIASES.get(wiki_id, f"mengsan_{wiki_id}_shuying"), "wikiId": wiki_id, "name": row["name"], - "description": row["rendered_description"], "pool": row["pool"], + "description": row["rendered_description"], + "pool": "刘备" if wiki_id in LIUBEI_RELICS else row["pool"], "tier": row["tier"], "ancient": row["ancient"] or None, "order": int(row["compendium_order"]), "image": f"extension/术樱包/mengsan/assets/relics/{wiki_id}.png", @@ -63,7 +69,7 @@ def main(): "snapshot_date": "2026-10-04", "atlas_version": "v0.111.0", "data_source": source["data_source_url"], "data_revision": source["source_revision"], "assets": assets, - "notes": ["美味饼干使用铁甲战士版本;四个其他角色版本仍保留在来源图集中。", + "notes": ["美味饼干使用刘备版本;四个其他角色版本仍保留在来源图集中。", "遗忘之魂映射 lost_soul.png;布质果实映射 looming_fruit_2.png。", "图标是用户提供的原游戏拆包图片,逐字节复制,未重绘。"] }, ensure_ascii=False, indent=2), encoding="utf-8") diff --git a/mengsan/tools/test-battle-hud.cjs b/mengsan/tools/test-battle-hud.cjs new file mode 100644 index 0000000..6163b67 --- /dev/null +++ b/mengsan/tools/test-battle-hud.cjs @@ -0,0 +1,336 @@ +// Real browser DOM/CSS with engine services isolated; this is not a full-game test. +const assert = require('node:assert/strict'); +const http = require('node:http'); +const fs = require('node:fs'); +const path = require('node:path'); +const app = path.resolve(__dirname, '../../../..'); +const packages = process.env.CODEX_NODE_MODULES || 'C:/Users/Diuse/.cache/codex-runtimes/codex-primary-runtime/dependencies/node/node_modules'; +const { chromium } = require(path.join(packages, 'playwright')); +const prefix = '/extension/' + encodeURIComponent('术樱包') + '/mengsan'; +// Native themes use different button sizes. Drag onto an exposed point on the +// original player, rather than assuming its center is clear in the dense fixture. +const exposedTarget = (page,index) => page.evaluate(index => { + const player=game.players[index],rect=player.getBoundingClientRect(); + for(const y of [.5,.15,.85,.05,.95])for(const x of [.5,.15,.85]) { + const px=rect.left+rect.width*x,py=rect.top+rect.height*y; + if(document.elementFromPoint(px,py)?.closest('.player')===player)return {x:px,y:py,width:0,height:0}; + } + throw new Error('Native target has no exposed drag point: '+index); +},index); +const fixture = `

测试技能
结束出牌
`; +const server = http.createServer((req, res) => { + if (req.url === '/fixture') { res.setHeader('Content-Type','text/html;charset=utf-8');res.end(fixture);return; } + if(req.url==='/noname.js'){res.setHeader('Content-Type','text/javascript');res.end('export const _status={};');return;} + if(decodeURIComponent(new URL(req.url,'http://localhost').pathname)==='/extension/术樱包/diagnostics/index.js') { + res.setHeader('Content-Type','text/javascript');res.end('export const getDiagnostics=()=>({status:()=>({enabled:false}),scope:()=>({info(){},error(){}})});');return; + } + const target = path.resolve(app, '.' + decodeURIComponent(new URL(req.url, 'http://localhost').pathname)); + if (!target.startsWith(app + path.sep)) { res.writeHead(403);res.end();return; } + const types = { '.js':'text/javascript', '.css':'text/css', '.png':'image/png' }; + fs.readFile(target, (error, bytes) => { if(error){res.writeHead(404);res.end();return;}res.setHeader('Content-Type',types[path.extname(target)]||'text/plain');res.end(bytes); }); +}); +(async () => { + await new Promise(resolve => server.listen(0,'127.0.0.1',resolve)); + const origin = 'http://127.0.0.1:' + server.address().port; + const browser = await chromium.launch({channel:'msedge',headless:true}); + let checks = 0; + try { + for (const skin of process.env.HUD_TEST_SKIN?[process.env.HUD_TEST_SKIN]:['native','shousha','shizhounian','xinsha']) { + for (const viewport of [{width:1280,height:720},{width:1234,height:920},{width:812,height:600},{width:812,height:375},{width:667,height:375},{width:375,height:500},{width:540,height:900}]) { + const page = await browser.newPage({viewport,hasTouch:true}); + await page.goto(origin+'/fixture'); + await page.addStyleTag({content:'body{background:#161e29 url("/image/background/lanting_bg.jpg") center/cover no-repeat}'}); + await page.addStyleTag({url:origin+prefix+'/ui/style.css'}); + if(skin!=='native') { + for(const css of ['/extension/'+encodeURIComponent('十周年UI')+'/src/styles/layout.css','/extension/'+encodeURIComponent('十周年UI')+'/ui/styles/base.css','/extension/'+encodeURIComponent('十周年UI')+'/ui/styles/skill/'+skin+'.css','/extension/'+encodeURIComponent('十周年UI')+'/ui/styles/lbtn/'+skin+'.css'])await page.addStyleTag({url:origin+css}); + await page.addStyleTag({url:origin+'/extension/'+encodeURIComponent('十周年UI')+'/src/styles/player'+({shousha:2,shizhounian:1,xinsha:3}[skin])+'.css'}); + await page.addStyleTag({url:origin+'/extension/'+encodeURIComponent('十周年UI')+'/src/styles/equip.css'}); + } + await page.addStyleTag({url:origin+prefix+'/ui/hand/style.css'}); + const initial = await page.evaluate(async ({prefix,skin}) => { + const mod = await import(prefix+'/ui/hud/index.js').catch(error=>({error:String(error)})); + if(typeof mod.mountBattleHUD!=='function')return {module:false,error:mod.error}; + const releases=[];window.session={id:'hud-test',active:true,ownResource:(_,f)=>releases.push(f)}; + window.releaseAll=()=>releases.reverse().forEach(f=>f()); + const arena=document.getElementById('arena'), hand=document.getElementById('me'), control=document.getElementById('control'); + if(skin!=='native') { + // Match create.js and player-element.js, including the renamed container and nested wraps. + control.id='dui-controls';hand.classList.add('hand-wrap');arena.classList.add('decadeUI'); + arena.dataset.mode='identity';arena.dataset.outcropSkin='shizhounian';arena.dataset.playerHeight='default'; + if(window.innerHeight<=500||window.innerWidth<=600)arena.classList.add('dui-mobile'); + control.firstElementChild.classList.add('stayleft'); + } + document.body.classList.add('mengsan-hand-ui-shuying');control.firstElementChild.style.opacity='1'; + [...control.firstElementChild.children].forEach((node,index)=>{ + node.classList.add(index?'primary2':'primary'); + const label=index?'回合结束':'确定'; + if(skin==='native')node.textContent=label;else {const span=document.createElement('span');span.textContent=label;node.replaceChildren(span);} + node.addEventListener('click',()=>{window.nativeActionClicks=(window.nativeActionClicks||0)+1;}); + }); + const players=[]; + for(let i=0;i<8;i++) { + const player=document.createElement('div');player.className='player';player.dataset.position=String(i);player.playerid=String(i);player.name=i?'enemy'+i:'liubei';player.hp=40;player.maxHp=60;player.hujia=8; + player.storage={mengsanCamp_shuying:i?'enemy':'ally',mengsanStrength_shuying:i===1?3:0,mengsanVulnerable_shuying:i===2?2:0,mengsanEnergy_shuying:3,mengsanMaxEnergy_shuying:3}; + player.innerHTML=skin==='native' ? '
'+(i?'敌人'+i:'刘备')+'
40/60
' : '
回合开始
汉
'+(i?'敌人'+i:'刘备')+'
40/60
8
'; + if(i)player.insertAdjacentHTML('beforeend','
攻击 8×2
'); + player.node={avatar:player.querySelector('.avatar,.primary-avatar'),hp:player.querySelector('.hp'),hpWrap:player.querySelector('.hp-wrap'),campWrap:player.querySelector('.camp-wrap'),name:player.querySelector('.name,.avatar-name'),identity:player.querySelector('.identity'),framebg:player.querySelector('.framebg'),count:player.querySelector('.card-count'),marks:player.querySelector('.marks,.dui-marks')}; + player.node.avatar.style.backgroundImage='url("/image/character/'+(i?'caocao':'liubei')+'.jpg")'; + if(i){player.style.cssText=`left:${(i-1)%4*21+5}%;top:${68+Math.floor((i-1)/4)*96}px;width:68px;height:82px;transform:none`;} + const equips=document.createElement('div');equips.className='equips';player.node.equips=equips;player.appendChild(equips); + if(i===0||i===1)for(let j=0;j<(i===0?5:2);j++){ + const equip=document.createElement('div');equip.className='card equip'+(j+1);equip.innerHTML='
♠2 '+(['八卦阵','的卢','青釭剑','赤兔','木牛'][j])+'
'; + equip.addEventListener('click',e=>{e.stopPropagation();window.equipClicks=(window.equipClicks||0)+1;});equips.appendChild(equip); + } + player.getCards=zone=>zone==='e'?[...equips.children]:[]; + player.marks={};player.hasSkill=()=>false;player.getSkills=()=>[];player.isAlive=()=>player.hp>0;arena.appendChild(player);players.push(player); + } + const me=players[0];window.game={me,players,dead:[]};window.battle={session,players:new Set(players),owner:me}; + const nativeMark=document.createElement('div');nativeMark.className='mark';nativeMark.textContent='义';me.node.marks.appendChild(nativeMark);window.testNativeMark=nativeMark; + nativeMark.addEventListener('click',event=>{ + event.stopPropagation();window.markIntroOpens=(window.markIntroOpens||0)+1; + const box=me.getBoundingClientRect(),tip=document.createElement('div');tip.className='dialog popped static'; + tip.style.cssText=`position:absolute;left:${box.right-20}px;top:${box.top-30}px;width:236px;height:160px;padding:16px;z-index:21`; + tip.innerHTML='
桃园羁绊
先天结识关羽、张飞。保留原生标记说明内容与关闭回调。
'; + const layer=document.createElement('div');layer.className='poplayer';layer.style.cssText='position:absolute;inset:0'; + const close=()=>{tip.remove();layer.remove();window.markIntroClosed=true;};layer.addEventListener('click',close);tip._close=close; + ui.window.append(tip,layer);window.testMarkIntro=tip; + }); + window.hudEventState={currentPhase:me,event:{name:'chooseToUse',player:me,isMine:()=>true}}; + window.ui={arena,me:hand,mebg:document.getElementById('mebg'),control,window:document.getElementById('window'),handcards1Container:document.getElementById('handcards1'),handcards2Container:document.getElementById('handcards2'),selected:{cards:[],targets:[],buttons:[]},click:{}}; + if(skin==='xinsha') { + const host=document.createElement('div');host.className='equips-wrap';host.style.cssText='position:absolute;left:150px;top:0;width:130px;height:100%'; + host.innerHTML='
装备槽
';arena.insertBefore(host,hand);host.appendChild(me.node.equips);ui.equipSolts=host; + } + window.originalEquipParent=me.node.equips.parentNode; + me.node.handcards1=ui.handcards1Container.firstElementChild;me.node.handcards2=ui.handcards2Container.firstElementChild; + const get={translation:value=>value==='liubei'?'刘备':String(value).replace(/^enemy/,'敌人'),select:value=>value}; + const card=document.createElement('div');card.className='card selectable';card.textContent='杀';card.name='sha';me.node.handcards1.appendChild(card);window.card=card; + card.addEventListener('contextmenu',event=>{ + event.preventDefault();window.introOpens=(window.introOpens||0)+1; + const tip=document.createElement('div');tip.className='dialog popped static'; + const rect=card.getBoundingClientRect();tip.style.cssText=`position:absolute;left:${rect.left}px;top:${rect.top-30}px;width:236px;height:160px;z-index:21;padding:16px`; + tip.innerHTML='
杀 · 卡牌说明
对选定敌人造成伤害。说明保留原生内容与关闭操作。
'; + const layer=document.createElement('div');layer.className='poplayer';layer.style.cssText='position:absolute;inset:0'; + layer.addEventListener('click',()=>{tip.remove();layer.remove();window.nativeIntroClosed=true;}); + ui.window.append(tip,layer);window.testIntro=tip; + }); + window.oldParents={hand:hand.parentNode,control:control.parentNode,card:card.parentNode}; + window.nativeActionGroup=control.firstElementChild;window.nativeActionButtons=[...nativeActionGroup.children]; + window.actionPaint=node=>{const s=getComputedStyle(node);return Object.fromEntries(['backgroundImage','backgroundColor','borderImageSource','borderTopColor','borderTopStyle','borderTopWidth','borderTopLeftRadius','color','fontFamily','fontSize','fontWeight','textShadow','boxShadow','filter','paddingTop','paddingRight','paddingBottom','paddingLeft'].map(key=>[key,s[key]]));}; + // Decade animates the initial class/theme change; compare settled native styles. + await new Promise(resolve=>setTimeout(resolve,650)); + window.originalActionPaint=[nativeActionGroup,...nativeActionButtons].map(actionPaint); + window.originalActionHTML=nativeActionGroup.innerHTML; + window.originalEnemyPresentation=players.slice(1).map(p=>({style:p.style.cssText,classes:p.className,html:p.innerHTML})); + window.hud=mod.mountBattleHUD(me,battle,{ui,game,get,lib:{skill:{},translate:{}},_status:hudEventState,document,window,assetBase:prefix}); + const {mountRelicStrip}=await import(prefix+'/ui/relic-strip.js'); + window.testRelics=[];window.testStrip=mountRelicStrip(arena,()=>testRelics,relic=>{window.lastRelicOpened=relic.id;},()=>{ + const icon=document.createElement('img');icon.src=prefix+'/assets/status/strength_power.png';return icon; + },document,window);releases.push(()=>testStrip.dispose()); + let submitted=0;game.check=()=>ui.selected.cards.length===1&&ui.selected.targets.length===1;game.uncheck=()=>{ui.selected.cards=[];ui.selected.targets=[];}; + ui.click.card=function(){ui.selected.cards=[this];players.slice(1).forEach(p=>p.classList.add('selectable'));};ui.click.target=function(){ui.selected.targets=[this];};ui.click.ok=()=>{submitted++;game.uncheck();}; + game.isSubmitted=()=>submitted;const event=hudEventState.event;event.selectTarget=[1,1];event.selectCard=[1,1]; + const {mountHandUI}=await import(prefix+'/ui/hand/index.js'); + window.testHandUI=await mountHandUI(me,session,{ui,game,get,lib:{card:{},translate:{}},_status:hudEventState,document,window,isActiveCardUse:()=>true,canPayCard:()=>true,cardCost:()=>1,styleURL:prefix+'/ui/hand/style.css'}); + window.testInput={owns:()=>false};hud.refresh();window.testFan={sync:()=>testHandUI.refresh()}; + return {module:true,parentKept:hand.parentNode===oldParents.hand&&control.parentNode===oldParents.control&&card.parentNode===oldParents.card,skin}; + },{prefix,skin}); + assert.equal(initial.module,true,initial.error||'HUD mount module must exist');checks++; + assert.equal(initial.parentKept,true);checks++; + await page.waitForTimeout(70); + await page.evaluate(()=>testFan.sync(true)); + const corners=await page.evaluate(()=>({portrait:parseFloat(getComputedStyle(game.me.node.avatar).borderTopLeftRadius)})); + assert.ok(corners.portrait>=12,'portrait retains rounded edges: '+JSON.stringify(corners));checks++; + const glass=await page.locator('.mengsan-hud-shuying').evaluate(n=>{const s=getComputedStyle(n);return {background:s.backgroundColor,opacity:s.opacity,blur:s.backdropFilter};}); + assert.equal(glass.background,'rgba(0, 0, 0, 0)','footer is completely transparent');checks++; + assert.equal(glass.blur,'none','footer has no background blur');checks++; + assert.equal(glass.opacity,'1','text and buttons retain full opacity');checks++; + const equipLayout=await page.evaluate(()=>{ + const p=game.me.getBoundingClientRect(),e=game.me.node.equips.getBoundingClientRect(),enemy=game.players[1],p2=enemy.getBoundingClientRect(),e2=enemy.node.equips.getBoundingClientRect(); + return {self:p.toJSON(),selfEquips:e.toJSON(),enemy:p2.toJSON(),enemyEquips:e2.toJSON()}; + }); + assert.ok(equipLayout.selfEquips.top>=equipLayout.self.top&&equipLayout.selfEquips.bottom<=equipLayout.self.bottom&&equipLayout.selfEquips.left>=equipLayout.self.left&&equipLayout.selfEquips.right<=equipLayout.self.right,'equipment overlays the enlarged portrait: '+JSON.stringify(equipLayout));checks++; + assert.ok(equipLayout.selfEquips.bottom<=viewport.height-8,'equipment stays inside the player portrait');checks++; + assert.equal(await page.evaluate(()=>getComputedStyle(game.me.node.equips).flexDirection),'column','equipment is stacked vertically over the portrait');checks++; + try { await page.locator('.mengsan-hud-self-equips-shuying>.card').first().click({timeout:3000}); } + catch(error) { console.log(await page.evaluate(()=>[game.me.node.equips.firstElementChild,game.me.node.equips,game.me.node.equips.parentNode,ui.arena].map(n=>({cls:n.className,rect:n.getBoundingClientRect().toJSON(),style:n.style.cssText,overflow:getComputedStyle(n).overflow,scroll:[n.scrollLeft,n.scrollTop]}))));throw error; } + assert.equal(await page.evaluate(()=>window.equipClicks),1,'real equipment callback is preserved');checks++; + assert.equal(await page.evaluate(()=>game.me.node.equips.parentNode===originalEquipParent),true,'optional separate equipment wrapper keeps its real parent');checks++; + await page.evaluate(()=>{const cards=game.me.node.equips.children;cards[4].classList.add('selectable');cards[4].scrollIntoView({block:'nearest',inline:'nearest'});}); + await page.locator('.mengsan-hud-self-equips-shuying>.card').last().click(); + assert.equal(await page.evaluate(()=>window.equipClicks),2,'last of five equipped cards remains reachable');checks++; + const layout=await page.evaluate(()=>{ + const rect=n=>{const r=n.getBoundingClientRect();return {x:r.x,y:r.y,right:r.right,bottom:r.bottom,width:r.width,height:r.height};}; + return {hud:rect(document.querySelector('.mengsan-hud-shuying')),hand:rect(ui.me),control:rect(ui.control),players:game.players.slice(1).map(rect),statusCount:document.querySelectorAll('.mengsan-unit-status-shuying').length, + statusRow:rect(document.querySelector('.mengsan-hud-statuses-shuying'))}; + }); + assert.equal(layout.statusCount,0,'enemy information is not replaced by the player HUD');checks++; + assert.ok(layout.control.bottom<=layout.hand.y-7,'horizontal actions sit above the hand area');checks++; + assert.equal(await page.evaluate(()=>game.players.slice(1).every((p,i)=>p.style.cssText===originalEnemyPresentation[i].style&&p.innerHTML===originalEnemyPresentation[i].html&&p.className===originalEnemyPresentation[i].classes)),true,'enemy and ally DOM, inline positions and classes stay native');checks++; + assert.equal(await page.evaluate(()=>{const p=game.me.getBoundingClientRect(),s=document.querySelector('.mengsan-hud-info-shuying').getBoundingClientRect();return p.right<=s.left||p.bottom<=s.top||p.left>=s.right||p.top>=s.bottom;}),true,'enlarged portrait clears the vertical statistics');checks++; + assert.equal(await page.evaluate(()=>{const p=game.me.getBoundingClientRect(),s=document.querySelector('.mengsan-hud-info-shuying').getBoundingClientRect();return ui.arena.dataset.mengsanHudLayout==='narrow'?p.bottom<=s.top&&s.top-p.bottom<32:s.left-p.right>=0&&s.left-p.right<=16;}),true,'statistics stay close to the portrait');checks++; + assert.equal(await page.locator('.mengsan-hud-center-shuying').isVisible(),false,'empty status area is hidden');checks++; + assert.equal(await page.locator('.mengsan-hud-shuying').innerText().then(t=>/当前状态|暂无状态|选择行动|等待行动/.test(t)),false,'status headings and action filler text are absent');checks++; + assert.deepEqual(await page.evaluate(()=>[nativeActionGroup,...nativeActionButtons].map(actionPaint)),await page.evaluate(()=>originalActionPaint),'native action group and button paint, typography and padding stay unchanged');checks++; + assert.equal(await page.evaluate(()=>ui.control.firstElementChild===nativeActionGroup&&nativeActionGroup.innerHTML===originalActionHTML&&nativeActionButtons.every((node,i)=>nativeActionGroup.children[i]===node)),true,'real native action nodes and contents are retained');checks++; + assert.equal(await page.locator('.mengsan-hud-inspect-shuying').count(),0,'skills and equipment proxy button is removed');checks++; + await page.locator('.mengsan-hud-controls-shuying>.control>div').first().click(); + await page.locator('.mengsan-hud-controls-shuying>.control>div').nth(1).click(); + assert.equal(await page.evaluate(()=>nativeActionClicks),2,'both real native confirm and end-turn callbacks remain usable');checks++; + assert.equal(await page.evaluate(()=>nativeActionButtons.every(n=>n.getBoundingClientRect().bottom<=ui.me.getBoundingClientRect().top-4)),true,'native button dimensions remain fully above the hand');checks++; + await page.evaluate(()=>{for(let i=0;i<6;i++)testNativeMark.dispatchEvent(new MouseEvent('click',{bubbles:true,cancelable:true}));}); + await page.waitForTimeout(60); + await page.evaluate(()=>{for(let i=0;i<3;i++)testNativeMark.dispatchEvent(new MouseEvent('click',{bubbles:true,cancelable:true}));}); + const markIntro=await page.evaluate(()=>({opens:markIntroOpens,count:ui.window.querySelectorAll('.dialog.popped').length,layers:ui.window.querySelectorAll('.poplayer').length,layerClass:ui.window.querySelector('.poplayer').className,layerStyle:ui.window.querySelector('.poplayer').style.cssText,box:testMarkIntro.getBoundingClientRect().toJSON(),portrait:game.me.getBoundingClientRect().toJSON(),info:document.querySelector('.mengsan-hud-info-shuying').getBoundingClientRect().toJSON(),z:getComputedStyle(testMarkIntro).zIndex,layerZ:getComputedStyle(ui.window.querySelector('.poplayer')).zIndex})); + assert.ok(markIntro.opens===1&&markIntro.count===1&&markIntro.layers===1,'rapid mark clicks keep one native popup and one backdrop: '+JSON.stringify(markIntro));checks++; + assert.ok(markIntro.box.bottom<=Math.min(markIntro.portrait.top,markIntro.info.top)&&markIntro.box.x>=8&&markIntro.box.right<=viewport.width-8,'mark details clear the player portrait and statistics: '+JSON.stringify(markIntro));checks++; + assert.ok(Number(markIntro.z)>Number(markIntro.layerZ)&&Number(markIntro.layerZ)>31,'native mark popup and backdrop draw above player and skills: '+JSON.stringify(markIntro));checks++; + if(viewport.width===1234){await page.waitForTimeout(350);await page.screenshot({path:path.join(process.env.HUD_ARTIFACTS||__dirname,'hud-mark-description-'+skin+'.png')});} + await page.locator('.poplayer').click({position:{x:4,y:4}}); + assert.equal(await page.evaluate(()=>markIntroClosed),true,'native mark close callback is preserved');checks++; + await page.evaluate(()=>testNativeMark.dispatchEvent(new MouseEvent('click',{bubbles:true,cancelable:true}))); + await page.waitForTimeout(30); + assert.equal(await page.evaluate(()=>markIntroOpens),2,'mark details can reopen after closing');checks++; + await page.locator('.poplayer').click({position:{x:4,y:4}}); + assert.equal(await page.locator('.mengsan-hand-relics-shuying').isVisible(),false,'empty relic strip stays hidden');checks++; + const nativeSkills=await page.evaluate(()=>{ + const skills=document.createElement('div');skills.className='control';skills.innerHTML='
原生技能甲
原生技能乙
'; + ui.control.appendChild(skills);ui.skills=skills;window.testNativeSkills=skills; + skills.firstElementChild.addEventListener('click',()=>window.nativeSkillUsed=true);hud.refresh(); + const boxes=[...skills.children].map(n=>n.getBoundingClientRect()); + const rail=skills.getBoundingClientRect();return {vertical:boxes[0].bottom<=boxes[1].top,right:rail.left>=ui.me.getBoundingClientRect().right,contained:boxes.every(r=>r.left>=rail.left-1&&r.right<=rail.right+1)}; + }); + assert.ok(nativeSkills.vertical&&nativeSkills.right&&nativeSkills.contained,'native skill references stay vertically on the right without moving their parent or clipping buttons: '+JSON.stringify(nativeSkills));checks++; + await page.getByText('原生技能甲',{exact:true}).click(); + assert.equal(await page.evaluate(()=>window.nativeSkillUsed),true,'native skill callbacks survive the separate rail');checks++; + await page.evaluate(()=>{testNativeSkills.remove();delete ui.skills;hud.refresh();}); + const relicGeometry=await page.evaluate(()=>{ + testRelics=[{id:'test',name:'遗物'}];testStrip.refresh(); + const strip=document.querySelector('.mengsan-hand-relics-shuying').getBoundingClientRect(),icon=document.querySelector('.mengsan-hand-relics-shuying button').getBoundingClientRect(); + return {strip:strip.toJSON(),icon:icon.toJSON()}; + }); + assert.ok(relicGeometry.icon.y>=relicGeometry.strip.y&&relicGeometry.icon.bottom<=relicGeometry.strip.bottom,'top relic icon fits without clipping');checks++; + assert.ok(relicGeometry.strip.width<=142,'relic area stays compact above the right skill rail');checks++; + assert.ok(relicGeometry.strip.x>=viewport.width-166,'relic area is on the right');checks++; + assert.ok(Math.abs(relicGeometry.strip.bottom-(viewport.height-Number.parseFloat(await page.locator('#arena').evaluate(n=>n.style.getPropertyValue('--mengsan-relic-dock-bottom')))))<2,'relic area aligns with the side dock, with a compact narrow-screen offset');checks++; + await page.evaluate(()=>{testRelics=Array.from({length:10},(_,i)=>({id:'r'+i,name:'遗物'+i}));testStrip.refresh();hud.refresh();}); + const battlefieldClear=await page.evaluate(()=>{ + const strip=document.querySelector('.mengsan-hand-relics-shuying').getBoundingClientRect(); + const intersects=(a,b)=>a.leftb.left&&a.topb.top; + return {clear:[...document.querySelectorAll('.player>.mengsan-intent-shuying')].every(n=>!intersects(n.getBoundingClientRect(),strip)),strip:strip.toJSON(),intents:[...document.querySelectorAll('.player>.mengsan-intent-shuying')].map(n=>n.getBoundingClientRect().toJSON())}; + }); + assert.equal(battlefieldClear.clear,true,'a full relic strip must not cover enemy intent: '+JSON.stringify(battlefieldClear));checks++; + await page.locator('.mengsan-hand-relics-shuying button').last().focus(); + await page.locator('.mengsan-hand-relics-shuying button').last().press('Enter'); + assert.equal(await page.evaluate(()=>lastRelicOpened),'r9','overflow relics retain keyboard access to details');checks++; + await page.evaluate(()=>{testRelics=[{id:'test',name:'遗物'}];testStrip.refresh();}); + const start=await page.locator('.handcards>.card').boundingBox(),target=await exposedTarget(page,3); + await page.mouse.move(start.x+start.width/2,start.y+30);await page.mouse.down(); + await page.mouse.move(target.x+target.width/2,target.y+target.height/2,{steps:8});await page.mouse.up(); + assert.equal(await page.evaluate(()=>game.isSubmitted()),1,'single target drag submits once');checks++; + if(skin!=='native') { + await page.evaluate(()=>{ + const skills=document.createElement('div');skills.className='skill-control';skills.innerHTML='
主动技能
';ui.arena.appendChild(skills);ui.skillControl=skills; + skills.querySelector('.skillitem').addEventListener('click',()=>{hudEventState.event.skill='test-skill';});hud.refresh(); + }); + await page.locator('.skillitem').click(); + assert.equal(await page.evaluate(()=>hudEventState.event.skill),'test-skill');checks++; + assert.notEqual(await page.locator('.skillitem').evaluate(n=>getComputedStyle(n).webkitTextFillColor),'rgba(0, 0, 0, 0)','skin gradient text remains readable after reskinning');checks++; + assert.equal(await page.evaluate(()=>ui.skillControl.getBoundingClientRect().left>=ui.me.getBoundingClientRect().right),true,'vertical skills stay to the right of the hand');checks++; + await page.evaluate(()=>{ + const globalSkills=document.createElement('div');globalSkills.className='gskill-control';globalSkills.innerHTML='
仁德
'; + ui.arena.appendChild(globalSkills);ui.gskillControl=globalSkills;hud.refresh(); + }); + const rails=await page.evaluate(()=>({skills:ui.skillControl.getBoundingClientRect().toJSON(),global:ui.gskillControl.getBoundingClientRect().toJSON(),native:ui.control.getBoundingClientRect().toJSON(),hud:document.querySelector('.mengsan-hud-shuying').getBoundingClientRect().toJSON()})); + assert.ok(rails.global.bottom<=rails.skills.top-4&&rails.global.top>=rails.hud.top,'optional global skill controls stay inside the HUD without overlap: '+JSON.stringify(rails));checks++; + await page.evaluate(()=>{delete hudEventState.event.skill;}); + assert.equal(await page.evaluate(()=>ui.arena.scrollLeft===0&&ui.arena.scrollTop===0),true,'skill controls must not scroll the arena');checks++; + } + const beforeTouch = await page.evaluate(()=>game.isSubmitted()); + const touchCard = await page.locator('.handcards>.card').boundingBox(); + await page.evaluate(({start,target})=>{ + const send=(host,type,x,y)=>host.dispatchEvent(new PointerEvent(type,{bubbles:true,cancelable:true,pointerId:17,pointerType:'touch',isPrimary:true,button:0,clientX:x,clientY:y})); + const x=start.x+start.width/2,y=start.y+25,tx=target.x+target.width/2,ty=target.y+target.height/2; + send(card,'pointerdown',x,y);send(window,'pointermove',tx,ty);send(window,'pointerup',tx,ty); + },{start:touchCard,target:await exposedTarget(page,2)}); + const afterTouch=await page.evaluate(()=>({submitted:game.isSubmitted(),selected:ui.selected.cards.length,targets:ui.selected.targets.length,eventSkill:hudEventState.event.skill,classes:card.className,owns:testInput.owns(),hand:ui.me.getBoundingClientRect().toJSON(),card:card.getBoundingClientRect().toJSON()})); + if(afterTouch.submitted!==beforeTouch+1){afterTouch.geometry=await page.evaluate(()=>['window','arena','me','control'].map(id=>{const n=id==='control'?ui.control:document.getElementById(id),s=getComputedStyle(n);return {id,rect:n.getBoundingClientRect().toJSON(),css:{transform:s.transform,zoom:s.zoom,left:s.left,top:s.top,width:s.width,height:s.height,translate:s.translate},inline:n.style.cssText};}));await page.screenshot({path:path.join(process.env.HUD_ARTIFACTS||__dirname,'hud-failure.png')});} + assert.equal(afterTouch.submitted,beforeTouch+1,'touch pointer drag submits once: '+JSON.stringify(afterTouch));checks++; + await page.evaluate(()=>{ + const group=document.createElement('div');group.className='control';group.style.opacity='1'; + const button=document.createElement('div');button.textContent='动态技能';button.addEventListener('click',()=>{window.dynamicSkillUsed=true;});group.appendChild(button);ui.control.replaceChildren(group);hud.refresh(); + }); + await page.getByText('动态技能',{exact:true}).click(); + assert.equal(await page.evaluate(()=>window.dynamicSkillUsed),true,'new native controls retain their callbacks');checks++; + await page.evaluate(()=>{game.players[7].hp=0;hud.refresh();}); + assert.equal(await page.evaluate(()=>game.players[7].style.cssText===originalEnemyPresentation[6].style&&!game.players[7].classList.contains('mengsan-hud-defeated-shuying')),true,'death keeps the original battlefield presentation');checks++; + await page.evaluate(()=>{game.players[7].hp=40;game.me.storage.mengsanVulnerable_shuying=3;hud.refresh();}); + assert.match(await page.locator('.mengsan-hud-statuses-shuying').innerText(),/3/);checks++; + await page.evaluate(()=>{for(const key of ['Weak','Frail','Artifact','Constrict','Tangled','Shrink','Plow','Slippery'])game.me.storage['mengsan'+key+'_shuying']=2;hud.refresh();}); + assert.equal(await page.evaluate(()=>{const row=document.querySelector('.mengsan-hud-statuses-shuying').getBoundingClientRect();return [...document.querySelectorAll('.mengsan-hud-statuses-shuying button')].every(n=>{const r=n.getBoundingClientRect();return r.bottom<=row.bottom+1&&r.right<=row.right+1;});}),true,'matrix overflow keeps the visible statuses and more button inside the grid');checks++; + await page.getByRole('button',{name:'查看全部状态',exact:true}).click(); + assert.ok(await page.getByRole('dialog').isVisible(),'overflow states remain available in the details');checks++; + await page.getByRole('button',{name:'关闭',exact:true}).click(); + assert.equal(await page.evaluate(()=>{const s=document.querySelector('.mengsan-hud-center-shuying').getBoundingClientRect(),p=game.me.getBoundingClientRect();return s.bottom<=p.top&&p.top-s.bottom<=13;}),true,'status chips automatically appear just above the portrait');checks++; + await page.locator('.mengsan-hud-statuses-shuying button').first().click(); + assert.ok(await page.locator('dialog.mengsan-hud-dialog-shuying').isVisible());checks++; + await page.getByRole('button',{name:'关闭',exact:true}).click(); + await page.locator('.mengsan-hud-statuses-shuying button').first().tap(); + assert.ok(await page.locator('dialog.mengsan-hud-dialog-shuying').isVisible(),'touch opens the player status details');checks++; + await page.getByRole('button',{name:'关闭',exact:true}).click(); + await page.evaluate(()=>game.uncheck()); + const prompt=await page.evaluate(()=>{ + const n=document.createElement('div');n.className='dialog';n.innerHTML='
请弃置两张手牌
';ui.arena.appendChild(n);ui.dialog=n;hudEventState.event.dialog=n;window.testPrompt=n;hud.refresh(); + return {r:n.getBoundingClientRect().toJSON(),control:ui.control.getBoundingClientRect().toJSON()}; + }); + assert.ok(prompt.r.bottom<=prompt.control.top-5,'native selection prompt stays above the horizontal action row');checks++; + await page.locator('.handcards>.card').first().click({button:'right'}); + await page.waitForTimeout(80); + const intro=await page.evaluate(()=>({opened:introOpens,box:testIntro.getBoundingClientRect().toJSON(),content:testIntro.querySelector('.content').getBoundingClientRect().toJSON(),hand:ui.me.getBoundingClientRect().toJSON(),prompt:testPrompt.getBoundingClientRect().toJSON(),z:Number(getComputedStyle(testIntro).zIndex),scroll:getComputedStyle(testIntro).overflowY})); + assert.equal(intro.opened,1,'right click still invokes the original card introduction');checks++; + assert.ok(intro.box.height>=40,'native absolute content wrapper does not collapse the description');checks++; + assert.ok(intro.content.height>20&&intro.content.top>=intro.box.top&&intro.content.top=8&&intro.box.right<=viewport.width-8,'description stays above hand and prompt, inside the viewport: '+JSON.stringify(intro));checks++; + assert.ok(intro.z>24&&intro.scroll==='auto','description draws above cards and scrolls when height is limited');checks++; + if(viewport.width===1234){await page.waitForTimeout(350);await page.screenshot({path:path.join(process.env.HUD_ARTIFACTS||__dirname,'hud-card-description-'+skin+'.png')});} + await page.locator('.poplayer').click({position:{x:4,y:4}}); + assert.equal(await page.evaluate(()=>window.nativeIntroClosed),true,'original popup backdrop still closes the description');checks++; + await page.evaluate(()=>{testPrompt.remove();delete ui.dialog;delete hudEventState.event.dialog;hud.refresh();}); + if(viewport.width===1234||skin==='native'&&viewport.width===812) { + await page.evaluate(()=>{ + for(let i=0;i<6;i++) { + const c=i===0?card:card.cloneNode(true);c.textContent=['杀','八卦阵','杀','桃','杀','无懈可击'][i];c.style.background='#e9dfc9 url("/image/card/'+(['sha','bagua','sha','tao','sha','wuxie'][i])+'.png") center/100% 100%'; + if(i)game.me.node.handcards1.appendChild(c); + } + if(ui.arena.clientWidth>1000){game.players.slice(4).forEach(p=>{p.hp=0;p.remove();battle.players.delete(p);});delete game.me.storage.mengsanVulnerable_shuying;} + testFan.sync(true);hud.refresh(); + }); + await page.waitForTimeout(180); + const fullCards=await page.locator('.handcards>.card').evaluateAll(nodes=>nodes.map(n=>n.getBoundingClientRect().toJSON())); + assert.ok(fullCards.every(r=>r.bottom<=viewport.height-8),'rotated hand cards remain fully above the bottom edge: '+JSON.stringify(fullCards));checks++; + await page.screenshot({path:path.join(process.env.HUD_ARTIFACTS||__dirname,'hud-transparent-'+skin+'-'+viewport.width+'x'+viewport.height+'.png')}); + } + const popup=await page.evaluate(()=>{ + const n=document.createElement('div');n.className='damage skill-popup';n.style.cssText=`position:absolute;left:${game.me.offsetLeft}px;top:${game.me.offsetTop+80}px;width:${game.me.offsetWidth}px;z-index:9999`; + for(const char of '回合开始'){const s=document.createElement('span');s.textContent=char;n.appendChild(s);}window.testPopup=n;window.testPopupTop=n.style.top;ui.arena.appendChild(n);hud.refresh(); + const rect=n.getBoundingClientRect(),footer=document.querySelector('.mengsan-hud-shuying').getBoundingClientRect(); + return {bottom:rect.bottom,footer:footer.top}; + }); + assert.ok(popup.bottom<=popup.footer-4,'skin notification stays above the command footer: '+JSON.stringify(popup));checks++; + await page.evaluate(()=>{testHandUI.freeze();hud.freeze();session.active=false;testHandUI.refresh();hud.refresh();}); + await page.waitForTimeout(240); + assert.equal(await page.evaluate(()=>document.querySelector('.mengsan-hud-shuying')!==null&&game.me.classList.contains('mengsan-hud-self-shuying')&&game.me.node.handcards1.classList.contains('mengsan-hand-layout-shuying')),true,'stopped battle retains player HUD and fan until reward cleanup');checks++; + await page.evaluate(()=>{hud.dispose();hud.dispose();}); + assert.equal(await page.evaluate(()=>game.me.node.equips.parentNode===originalEquipParent&&!game.me.node.equips.classList.contains('mengsan-hud-equips-shuying')&&!game.me.node.equips.style.getPropertyValue('top')),true,'equipment ownership and styles restore');checks++; + assert.equal(await page.evaluate(()=>!testPopup.classList.contains('mengsan-hud-notification-shuying')&&testPopup.style.top===testPopupTop),true,'notification placement is restored when HUD ends');checks++; + assert.equal(await page.locator('.mengsan-hud-shuying').count(),0);checks++; + assert.equal(await page.evaluate(()=>ui.me.parentNode===oldParents.hand&&ui.control.parentNode===oldParents.control&&!document.body.classList.contains('mengsan-hud-active-shuying')),true);checks++; + assert.equal(await page.evaluate(()=>game.players.slice(1).every((p,i)=>p.style.cssText===originalEnemyPresentation[i].style)),true,'native actor styles survive final cleanup');checks++; + await page.evaluate(()=>releaseAll()); + console.log(skin+' '+viewport.width+'x'+viewport.height+' passed'); + await page.close(); + } + } + console.log('HUD browser checks: '+checks); + } finally {await browser.close();await new Promise(resolve=>server.close(resolve));} +})().catch(error=>{console.error(error);server.close();process.exitCode=1;}); diff --git a/mengsan/tools/test-hud-status.cjs b/mengsan/tools/test-hud-status.cjs new file mode 100644 index 0000000..aacd2c6 --- /dev/null +++ b/mengsan/tools/test-hud-status.cjs @@ -0,0 +1,58 @@ +const { test } = require('node:test'); +const assert = require('node:assert/strict'); +const { pathToFileURL } = require('node:url'); +const path = require('node:path'); +const moduleAt = name => import(pathToFileURL(path.join(__dirname, '..', name)).href) + .catch(error => { if (error.code === 'ERR_MODULE_NOT_FOUND') return {}; throw error; }); + +test('HUD reads strength, duration and charges without changing combat storage', async () => { + const { collectCombatStatuses } = await moduleAt('ui/hud/status-model.js'); + assert.equal(typeof collectCombatStatuses, 'function'); + const player = { storage: { mengsanStrength_shuying: 3, mengsanSetupStrength_shuying: 2, + mengsanVulnerable_shuying: 2, mengsanArtifact_shuying: 1, mengsanRinging_shuying: true, mengsanRingingUsed_shuying: 1 } }; + const before = structuredClone(player.storage); + const statuses = collectCombatStatuses(player, { session: { active: true } }); + assert.equal(statuses.find(s => s.id === 'strength').value, 5); + assert.equal(statuses.find(s => s.id === 'vulnerable').unit, '回合'); + assert.equal(statuses.find(s => s.id === 'artifact').unit, '次'); + assert.match(statuses.find(s => s.id === 'ringing').detail, /响应/); + assert.deepEqual(player.storage, before); +}); + +test('private effect snapshots show signed strength and separate countdown instances', async () => { + const { collectCombatStatuses } = await moduleAt('ui/hud/status-model.js'); + const { bindCombatStatusSource } = await moduleAt('battle/status-sources.js'); + assert.equal(typeof bindCombatStatusSource, 'function'); + const releases = [], session = { active: true, ownResource: (_, release) => releases.push(release) }; + const player = { storage: { mengsanStrength_shuying: 2 } }; + const state = { powers: { barricade: true, vulnerableDraw: 2 }, negativeStrength: 5, + bombs: [{ turns: 1, damage: 40 }, { turns: 3, damage: 50 }] }; + bindCombatStatusSource(player, session, 'shared', () => state); + const result = collectCombatStatuses(player, { session }); + assert.equal(result.find(s => s.id === 'strength').value, -3); + assert.equal(result.find(s => s.name === '凶恶').value, 2); + assert.deepEqual(result.filter(s => s.name === '炸弹').map(s => s.value), [1, 3]); + result.find(s => s.id === 'strength').value = 99; + assert.equal(player.storage.mengsanStrength_shuying, 2); + releases.forEach(release => release()); + assert.equal(collectCombatStatuses(player, { session }).filter(s => s.name === '炸弹').length, 0); +}); + +test('old session release does not remove a new battle status source', async () => { + const { bindCombatStatusSource, readCombatStatusSources } = await moduleAt('battle/status-sources.js'); + assert.equal(typeof bindCombatStatusSource, 'function'); + let releaseOld; + const old = { active: true, ownResource: (_, release) => { releaseOld = release; } }; + const next = { active: true, ownResource() {} }, player = {}; + bindCombatStatusSource(player, old, 'cards', () => ({ vigor: 2 })); + bindCombatStatusSource(player, next, 'cards', () => ({ vigor: 7 })); + releaseOld(); + assert.equal(readCombatStatusSources(player, next)[0].state.vigor, 7); + assert.equal(readCombatStatusSources(player, old).length, 0); +}); + +test('slow display uses layers as well as the current card counter', async () => { + const { collectCombatStatuses } = await moduleAt('ui/hud/status-model.js'); + const player={storage:{mengsanSlow_shuying:3,mengsanSlowCards_shuying:2},hasSkill:id=>id==='mengsan_slow_shuying'}; + assert.equal(collectCombatStatuses(player,{session:{active:true}}).find(s=>s.id==='slow').value,60); +}); diff --git a/mengsan/ui/hand/index.js b/mengsan/ui/hand/index.js index 27c050f..2810637 100644 --- a/mengsan/ui/hand/index.js +++ b/mengsan/ui/hand/index.js @@ -17,7 +17,7 @@ export async function mountHandUI(player, session, env) { const style = document.createElement("link"); style.rel = "stylesheet"; style.href = styleURL; - let disposed = false; + let disposed = false, frozen = false; let observer, resizeObserver, pointer = null, nativeInput = false; let finishStyleLoad = null, refreshTimer = null; let refreshFrame = null; @@ -58,7 +58,7 @@ export async function mountHandUI(player, session, env) { if (!enabled) nativeLayout(); } function refresh() { - if (disposed) return; + if (disposed || frozen) return; if (!session.active || !adapter.zones.some(zone => zone.isConnected)) { dispose(); return; @@ -74,7 +74,7 @@ export async function mountHandUI(player, session, env) { overlays.sync(adapter.cards()); } function scheduleRefresh() { - if (disposed || document.hidden || refreshFrame !== null) return; + if (disposed || frozen || document.hidden || refreshFrame !== null) return; const draw = () => { refreshFrame = null; if (!document.hidden) refresh(); @@ -98,6 +98,7 @@ export async function mountHandUI(player, session, env) { env.canPayCard?.(player, card) === false); } function beginInput(event) { + if(frozen)return; if (input?.owns()) return; const card = event.target.closest?.(".card"); if (event.button !== 0 || pointer || @@ -164,6 +165,18 @@ export async function mountHandUI(player, session, env) { } container.classList.add("scrollh"); } + function freeze() { + if(disposed || frozen)return; + frozen=true;window.clearTimeout(refreshTimer); + if(refreshFrame!==null){ + if(typeof window.requestAnimationFrame==='function')window.cancelAnimationFrame(refreshFrame); + else window.clearTimeout(refreshFrame); + refreshFrame=null; + } + observer?.disconnect();resizeObserver?.disconnect();restoreTouchScroll(); + input?.dispose();pointer=null;nativeInput=false; + fan.sync(layoutEnabled); + } function dispose() { if (disposed) return; disposed = true; @@ -204,7 +217,7 @@ export async function mountHandUI(player, session, env) { style.onerror = () => finish(new Error("梦三手牌样式加载失败")); document.head.appendChild(style); }); - if (!session.active || disposed) { dispose(); return { refresh, dispose }; } + if (!session.active || disposed) { dispose(); return { refresh, freeze, dispose }; } ownClass(adapter.root, "mengsan-hand-root-shuying"); ownClass(document.body, "mengsan-hand-ui-shuying"); for (const zone of adapter.zones) { @@ -244,7 +257,7 @@ export async function mountHandUI(player, session, env) { listen(document, "visibilitychange", scheduleRefresh); refresh(); diagnose(`已挂载手牌 UI,独立排列=${layoutEnabled}`); - return { refresh, dispose }; + return { refresh, freeze, dispose }; } catch (error) { log("必需模块挂载失败,停止进入战斗", error); dispose(); diff --git a/mengsan/ui/hand/input.js b/mengsan/ui/hand/input.js index 8c56373..c942dd4 100644 --- a/mengsan/ui/hand/input.js +++ b/mengsan/ui/hand/input.js @@ -5,7 +5,7 @@ export function createHandInput(player, session, adapter, fan, env, refresh, log const maskedControls = new Set(), submittedControls = new Set(); const maskClass = "mengsan-hand-controls-hidden-shuying"; function maskControls(hidden) { - const wanted = hidden ? new Set([ui.control, ui.confirm, gesture?.event.endButton]) : new Set(); + const wanted = hidden ? new Set([ui.control, ui.confirm, ui.skillControl, gesture?.event.endButton]) : new Set(); for (const node of maskedControls) { if (wanted.has(node)) continue; node.classList.remove(maskClass); maskedControls.delete(node); diff --git a/mengsan/ui/hud/index.js b/mengsan/ui/hud/index.js new file mode 100644 index 0000000..a0e8590 --- /dev/null +++ b/mengsan/ui/hud/index.js @@ -0,0 +1,279 @@ +import { collectCombatStatuses } from './status-model.js'; +import { createOverlayLayout } from './overlays.js'; + +// Native cards, players and controls stay under their original parents. +export function mountBattleHUD(player, battle, env) { + const { ui, get, _status, document, window, assetBase } = env; + const arena = ui.arena; + if (!arena || !ui.me || !ui.control || !battle.session.active) throw new Error('梦三 HUD 缺少原生界面容器'); + const handRoot = ui.me, controlRoot = ui.control; + const overlays = createOverlayLayout(arena, handRoot, ui, player); + const restores = [], styled = new WeakMap(), hiddenMarks = new Set(); + let disposed = false, frozen = false, frame = null, dialog = null, previousFocus = null, resize, observer; + const ownClass = (node, name) => { + if (!node || node.classList.contains(name)) return; + node.classList.add(name); restores.push(() => node.classList.remove(name)); + }; + const style = (node, key, value) => { + let values = styled.get(node); + if (!values) styled.set(node, values = new Map()); + if (!values.has(key)) { + const old = node.style.getPropertyValue(key), priority = node.style.getPropertyPriority(key); + const record = { last: null }; values.set(key, record); + restores.push(() => { + if (node.style.getPropertyValue(key) !== record.last) return; + if (old) node.style.setProperty(key, old, priority); else node.style.removeProperty(key); + }); + } + const record = values.get(key); + if (record.requested !== value || node.style.getPropertyValue(key) !== record.last) { + node.style.setProperty(key, value, 'important'); + record.requested = value; + // CSSOM rounds long decimal pixel values; compare the actual stored value on release. + record.last = node.style.getPropertyValue(key); + } + }; + const text = (node, value) => { if (node.textContent !== String(value)) node.textContent = String(value); }; + const create = (tag, className, parent, label) => { + const node = document.createElement(tag); node.className = className; + if (label != null) node.textContent = label; + if (tag === 'button') node.type = 'button'; + parent?.appendChild(node); return node; + }; + const plain = value => String(value || '').replace(/<[^>]*>/g, ''); + const nameOf = target => plain(get.translation(target.name || target.playerid || '角色')); + const root = create('section', 'mengsan-hud-shuying', arena); + root.setAttribute('aria-label', '梦三战斗操作区'); + const info = create('div', 'mengsan-hud-info-shuying', root); + const name = create('strong', 'mengsan-hud-name-shuying', info, nameOf(player)); + const hp = create('span', 'mengsan-hud-hp-shuying', info); + const healthTrack = create('div', 'mengsan-hud-health-track-shuying', info); + healthTrack.setAttribute('aria-hidden', 'true'); + const healthFill = create('span', '', healthTrack); + const block = create('span', 'mengsan-hud-block-shuying', info), energy = create('strong', 'mengsan-hud-energy-shuying', info); + const center = create('div', 'mengsan-hud-center-shuying', root); + const statuses = create('div', 'mengsan-hud-statuses-shuying', center); + statuses.setAttribute('aria-label', '玩家当前状态'); + const link = create('link', '', null); link.rel = 'stylesheet'; link.href = `${assetBase}/ui/hud/style.css`; + const closeDialog = () => { + if (!dialog) return; + const current = dialog; dialog = null; + if (current.open) current.close(); current.remove(); + if (previousFocus?.isConnected) previousFocus.focus(); + }; + const openDetails = target => { + if (disposed || !battle.session.active) return; + closeDialog(); previousFocus = document.activeElement; + dialog = create('dialog', 'mengsan-hud-dialog-shuying', document.body); + const current = dialog; + create('h2', '', dialog, `${nameOf(target)} · 当前状态`); + const close = create('button', 'mengsan-hud-dialog-close-shuying', dialog, '关闭'); close.addEventListener('click', closeDialog); + const entries = collectCombatStatuses(target, battle); + for (const entry of entries) { + const row = create('section', 'mengsan-hud-detail-row-shuying', dialog); + create('strong', '', row, `${entry.name}${entry.value == null ? '' : ` ${entry.value}${entry.unit ? ` ${entry.unit}` : ''}`}`); + create('p', '', row, entry.detail); + } + if (!entries.length) create('p', '', dialog, '暂无已登记状态。'); + // Unknown/native marks retain their engine intro and are never hidden by the HUD. + dialog.addEventListener('cancel', event => { event.preventDefault(); closeDialog(); }); + dialog.addEventListener('close', () => { if (dialog === current) closeDialog(); }); + for (const type of ['pointerdown', 'pointerup', 'click', 'touchstart', 'touchend', 'keydown']) dialog.addEventListener(type, event => event.stopPropagation()); + dialog.showModal(); close.focus(); + }; + let statusSignature = null; + function renderStatuses() { + const entries = collectCombatStatuses(player, battle); + const columns = layout === 'narrow' ? 1 : 2; + const rows = Math.max(1, Math.floor((statuses.clientHeight || 80) / 38)); + const maximum = Math.max(0, columns * rows - (entries.length > columns * rows ? 1 : 0)); + const signature = JSON.stringify([maximum, entries]); + if (signature !== statusSignature) { + statusSignature = signature; statuses.replaceChildren(); + center.hidden = entries.length === 0; + for (const entry of entries.slice(0, maximum)) { + const button = create('button', 'mengsan-hud-status-shuying', statuses); + button.setAttribute('aria-label', `${entry.name} ${entry.value ?? ''} ${entry.unit},查看状态详情`); + if (entry.icon) { + const image = create('img', '', button); image.src = `${assetBase}/assets/status/${entry.icon}`; image.alt = ''; + image.addEventListener('error', () => image.remove(), { once: true }); + } + create('span', '', button, entry.name); + if (entry.value != null) create('b', '', button, entry.value); + button.addEventListener('click', () => openDetails(player)); + } + if (entries.length > maximum) { + const more = create('button', 'mengsan-hud-status-shuying', statuses, `+${entries.length - maximum}`); + more.setAttribute('aria-label', '查看全部状态'); more.addEventListener('click', () => openDetails(player)); + } + } + const wanted = new Set(); + for (const target of [player]) { + for (const entry of collectCombatStatuses(target, battle)) { + for (const skill of entry.markSkills) { + const mark = target.marks?.[skill]; if (mark?.classList) wanted.add(mark); + } + } + } + for (const mark of hiddenMarks) if (!wanted.has(mark)) { mark.classList.remove('mengsan-hud-represented-mark-shuying'); hiddenMarks.delete(mark); } + for (const mark of wanted) if (!mark.classList.contains('mengsan-hud-represented-mark-shuying')) { mark.classList.add('mengsan-hud-represented-mark-shuying'); hiddenMarks.add(mark); } + } + let layout = null; + const hudHeightFor = () => layout === 'short' ? 188 : layout === 'narrow' ? 288 : 274; + const oldLayout = arena.getAttribute('data-mengsan-hud-layout'); + restores.push(() => { + if (arena.getAttribute('data-mengsan-hud-layout') !== layout) return; + if (oldLayout === null) arena.removeAttribute('data-mengsan-hud-layout'); else arena.setAttribute('data-mengsan-hud-layout', oldLayout); + }); + function skinActor(target) { + // Decade nests these in camp/hp wraps; direct-child .hp/.name selectors miss them. + for (const key of ['campWrap', 'hpWrap', 'hp', 'identity', 'framebg', 'count', 'name', 'name2', 'nameol']) { + ownClass(target.node?.[key], 'mengsan-hud-replaced-node-shuying'); + } + ownClass(target.node?.avatar, 'mengsan-hud-portrait-shuying'); + ownClass(target.node?.equips, 'mengsan-hud-equips-shuying'); + if (target === player) ownClass(target.node?.equips, 'mengsan-hud-self-equips-shuying'); + } + function syncActors() { + const width = arena.clientWidth, height = arena.clientHeight; + const narrow = width <= 600 && height >= 480; + const short = height <= 500 && !narrow; + layout = short ? 'short' : narrow ? 'narrow' : 'wide'; + if (arena.getAttribute('data-mengsan-hud-layout') !== layout) arena.setAttribute('data-mengsan-hud-layout', layout); + const hudHeight = hudHeightFor(); + style(arena, '--mengsan-hud-height', `${hudHeight}px`); + const large = width >= 1000; + style(arena, '--mengsan-hud-left', short ? '216px' : narrow ? '116px' : large ? '352px' : '292px'); + style(arena, '--mengsan-hud-right', short ? '132px' : narrow ? '116px' : '184px'); + style(arena, '--mengsan-profile-info-left', short ? '108px' : narrow ? '22px' : large ? '200px' : '160px'); + style(arena, '--mengsan-profile-width', short ? '172px' : narrow ? '76px' : large ? '200px' : '130px'); + skinActor(player); + // Inline important dimensions also beat skins with #arena > .player !important rules. + const selfBottom = narrow ? 180 : 24; + const selfHeight = short || narrow ? 104 : large ? 196 : 148; + const infoTop = narrow ? hudHeight - selfBottom + 16 : hudHeight - selfBottom - selfHeight + (short ? 0 : 20); + style(arena, '--mengsan-profile-info-top', `${infoTop}px`); + for (const [key, value] of Object.entries({left: short ? '24px' : narrow ? '22px' : '40px', right:'auto', top:'auto', + bottom:`${selfBottom}px`, width:short ? '76px' : narrow ? '76px' : large ? '144px' : '104px', + height:`${selfHeight}px`, transform:'none'})) style(player, key, value); + style(arena, '--mengsan-side-dock-bottom', `${selfBottom + selfHeight + 12}px`); + style(arena, '--mengsan-relic-dock-bottom', `${selfBottom + selfHeight + (narrow ? -4 : 12)}px`); + style(arena, '--mengsan-skill-ceiling', `${Math.min(hudHeight - 36, selfBottom + selfHeight)}px`); + style(arena, '--mengsan-status-height', short ? '52px' : narrow ? '84px' : '160px'); + } + function syncExternalEquipment() { + const equips = player.node?.equips; + if (!equips?.isConnected || equips.parentNode === player) return; + // An optional skin can keep the same real equipment nodes in a separate arena wrapper. + ownClass(ui.equipSolts, 'mengsan-hud-equip-host-shuying'); + const host = equips.offsetParent || arena, h = host.getBoundingClientRect(), a = arena.getBoundingClientRect(), p = player.getBoundingClientRect(); + const sx = h.width / host.offsetWidth || 1, sy = h.height / host.offsetHeight || sx; + const arenaScale = a.width / arena.clientWidth || 1; + const width = Math.max(0, p.width - 12 * arenaScale); + const equipHeight = Math.min(100 * arenaScale, p.height * .58); + for (const [key, value] of Object.entries({position:'absolute',left:`${(p.left + 6 * arenaScale - h.left) / sx}px`,right:'auto',bottom:'auto', + top:`${(p.bottom - 6 * arenaScale - equipHeight - h.top) / sy}px`,width:`${width / sx}px`,height:`${equipHeight / sy}px`,'max-height':`${equipHeight / sy}px`})) style(equips, key, value); + } + function placeControl(node, bottom, maxHeight) { + ownClass(node, 'mengsan-hud-external-control-shuying'); + const host = node.offsetParent || arena, a = arena.getBoundingClientRect(), h = host.getBoundingClientRect(); + const scale = h.width / host.offsetWidth || 1, arenaScale = a.width / arena.clientWidth || 1; + const rail = layout === 'wide' ? 142 : layout === 'short' ? 112 : 96; + for (const [key, value] of Object.entries({position:'absolute',left:'auto',top:'auto',transform:'none', + right:`${(h.right - a.right + (layout === 'wide' ? 24 : 16) * arenaScale) / scale}px`, bottom:`${(h.bottom - a.bottom + bottom * arenaScale) / scale}px`, + width:`${rail * arenaScale / scale}px`, 'max-height':`${maxHeight * arenaScale / scale}px`})) style(node, key, value); + } + function syncControls() { + // The actual action controls stay horizontal above the hand; skill references get their own rail. + const candidates = [...new Set([ui.skills, ui.skills2, ui.skills3, ui.skillControl, ui.gskillControl])] + .filter(node => node?.isConnected && node !== ui.control); + const external = candidates.filter(node => !candidates.some(other => other !== node && other.contains(node))); + const hudHeight = hudHeightFor(); + const rail = layout === 'wide' ? 142 : layout === 'short' ? 112 : 96; + const actionBottom = layout === 'narrow' ? hudHeight - 48 : hudHeight + 8; + const compactActions = arena.clientWidth < 1000; + for (const [key,value] of Object.entries({position:'absolute',left:compactActions?'16px':'var(--mengsan-hud-left)',right:compactActions?'16px':'var(--mengsan-hud-right)',top:'auto',bottom:`${actionBottom}px`,width:'auto','max-height':'none',transform:'none'})) style(ui.control,key,value); + for (const group of ui.control.children) if (group.classList.contains('control')) { + if (external.includes(group)) { + ownClass(group,'mengsan-hud-native-skills-shuying'); + for (const button of group.children) if (button.tagName === 'DIV') style(button, 'margin', '0px'); + continue; + } + for (const [key, value] of Object.entries({position:'relative',left:'auto',right:'auto',top:'auto',bottom:'auto',transform:'none'})) style(group, key, value); + } + let bottom = 20; + const ceiling = parseFloat(arena.style.getPropertyValue('--mengsan-skill-ceiling')); + external.forEach((node, index) => { + if (node === ui.skillControl || node === ui.gskillControl) ownClass(node, 'mengsan-hud-skin-skills-shuying'); + placeControl(node, bottom, Math.max(24, (ceiling - bottom - 6 * (external.length - index - 1)) / (external.length - index))); + bottom += node.offsetHeight + 6; + }); + for (const node of [ui.confirm,_status.event?.endButton]) { + if (!node?.isConnected || ui.control.contains(node)) continue; + ownClass(node,'mengsan-hud-external-action-shuying'); + const host=node.offsetParent||arena,a=arena.getBoundingClientRect(),h=host.getBoundingClientRect(); + const scale=h.width/host.offsetWidth||1,zoom=a.width/arena.clientWidth||1; + const center=(parseFloat(arena.style.getPropertyValue('--mengsan-hud-left'))+arena.clientWidth-parseFloat(arena.style.getPropertyValue('--mengsan-hud-right')))/2; + const side=node===ui.confirm?-1:1; + for(const [key,value] of Object.entries({position:'absolute',left:`${(a.left+center*zoom-h.left)/scale+side*80}px`,right:'auto',top:'auto',bottom:`${(h.bottom-a.bottom+actionBottom*zoom)/scale}px`,width:`${Math.min(rail,140)}px`,transform:'translateX(-50%)'}))style(node,key,value); + } + } + function syncNotifications() { + const maxTop = arena.clientHeight - hudHeightFor() - 48; + // Decade positions string popups at player.top + 80, which now intersects our footer. + for (const popup of arena.querySelectorAll(':scope > .damage.skill-popup')) { + if(!popup.classList.contains('mengsan-hud-notification-shuying') && + (Math.abs(popup.offsetLeft-player.offsetLeft)>1 || Math.abs(popup.offsetTop-player.offsetTop-80)>1))continue; + ownClass(popup, 'mengsan-hud-notification-shuying'); + if (popup.offsetTop > maxTop) style(popup, 'top', `${Math.max(0, maxTop)}px`); + const maxLeft = Math.max(0, arena.clientWidth - 160); + style(popup, 'left', `${Math.max(12, Math.min(maxLeft, popup.offsetLeft))}px`); + } + } + function refresh() { + if (disposed || frozen) return; + if (!battle.session.active || !arena.isConnected || !handRoot.isConnected || ui.me !== handRoot || ui.control !== controlRoot) { dispose(); return; } + text(name, nameOf(player)); text(hp, `生命 ${player.hp} / ${player.maxHp}`); text(block, `格挡 ${player.hujia || 0}`); + healthFill.style.width = `${Math.max(0, Math.min(100, player.maxHp > 0 ? player.hp / player.maxHp * 100 : 0))}%`; + text(energy, `费用 ${player.storage.mengsanEnergy_shuying ?? 0} / ${player.storage.mengsanMaxEnergy_shuying ?? 0}`); + syncActors(); syncExternalEquipment(); renderStatuses(); syncControls(); syncNotifications(); + overlays.refresh({ footerHeight:hudHeightFor(), status:_status }); + } + function schedule() { + if (disposed || frozen || document.hidden || frame !== null) return; + frame = window.requestAnimationFrame(() => { frame = null; refresh(); }); + } + const timer = window.setInterval(schedule, 200); + function freeze() { + if(disposed || frozen)return; + frozen=true;window.clearInterval(timer); + if(frame!==null){window.cancelAnimationFrame(frame);frame=null;} + observer?.disconnect();resize?.disconnect();closeDialog();overlays.dispose(); + ownClass(arena,'mengsan-hud-frozen-shuying'); + } + function dispose() { + if (disposed) return; disposed = true; + window.clearInterval(timer); if (frame !== null) window.cancelAnimationFrame(frame); + observer?.disconnect(); resize?.disconnect(); window.removeEventListener('resize', schedule); + document.removeEventListener('visibilitychange', schedule); + overlays.dispose(); + closeDialog(); + for (const mark of hiddenMarks) mark.classList.remove('mengsan-hud-represented-mark-shuying'); hiddenMarks.clear(); + for (const restore of restores.reverse()) restore(); + root.remove(); link.remove(); + } + ownClass(document.body, 'mengsan-hud-active-shuying'); ownClass(arena, 'mengsan-hud-arena-shuying'); + ownClass(ui.me, 'mengsan-hud-hand-shuying'); ownClass(ui.control, 'mengsan-hud-controls-shuying'); + ownClass(ui.mebg, 'mengsan-hud-mebg-shuying'); ownClass(player, 'mengsan-hud-self-shuying'); + // Panel events must not reach native selection/drag handlers. + for (const type of ['pointerdown', 'pointerup', 'click', 'touchstart', 'touchend', 'contextmenu']) root.addEventListener(type, event => event.stopPropagation()); + link.addEventListener('load', schedule); + link.addEventListener('error', () => { env.log?.('梦三 HUD 样式加载失败,保留原生布局'); dispose(); }); + document.head.appendChild(link); + observer = new window.MutationObserver(schedule); observer.observe(ui.control, { childList: true, subtree: true }); + observer.observe(arena, { childList: true }); + if(ui.window && ui.window!==arena) observer.observe(ui.window,{childList:true}); + if (window.ResizeObserver) { resize = new window.ResizeObserver(schedule); resize.observe(arena); } + window.addEventListener('resize', schedule); document.addEventListener('visibilitychange', schedule); + const api = { refresh, freeze, dispose }; battle.session.ownResource(api, dispose); refresh(); return api; +} diff --git a/mengsan/ui/hud/overlays.js b/mengsan/ui/hud/overlays.js new file mode 100644 index 0000000..4b62426 --- /dev/null +++ b/mengsan/ui/hud/overlays.js @@ -0,0 +1,100 @@ +// Position existing native prompts and popped descriptions; never recreate their content or handlers. +export function createOverlayLayout(arena, hand, ui, player) { + const records = new Map(); + const roots = new Set([ui.window, arena].filter(Boolean)); + const popped = () => new Set([...roots].flatMap(root => [...root.querySelectorAll(':scope > .dialog.popped')])); + const markPopups = new WeakSet(); + let activeMarkPopup = null, openingMark = false, disposed = false, options = null; + // Native mark intros do not reject repeated clicks themselves. Observe their real + // popup after the native handler, and block duplicate opens without replacing it. + const guardMark = event => { + const target = event.target.closest?.('.mark'); + if (!target || !player.contains(target)) return; + if (openingMark || activeMarkPopup?.isConnected) { + event.preventDefault(); event.stopImmediatePropagation(); return; + } + const before = popped(); + openingMark = true; + arena.ownerDocument.defaultView.queueMicrotask(() => { + openingMark = false; + if (disposed) return; + activeMarkPopup = [...popped()].find(node => !before.has(node)) || null; + if (activeMarkPopup) { markPopups.add(activeMarkPopup); if (options) api.refresh(options); } + }); + }; + const markEvents = ['click', 'touchend', 'contextmenu']; + for (const type of markEvents) player.addEventListener(type, guardMark, true); + function release(node, record) { + for (const [key, field] of record.styles) { + if (node.style.getPropertyValue(key) !== field.last) continue; + if (field.before) node.style.setProperty(key,field.before,field.priority); else node.style.removeProperty(key); + } + for (const [name, had] of record.classes) if (!had) node.classList.remove(name); + records.delete(node); + } + function mark(node, name) { + let record=records.get(node); + if(!record) {record={styles:new Map(),classes:new Map()};records.set(node,record);} + if(!record.classes.has(name))record.classes.set(name,node.classList.contains(name)); + node.classList.add(name);return record; + } + function style(node,key,value) { + const record=records.get(node); + if(!record.styles.has(key))record.styles.set(key,{before:node.style.getPropertyValue(key),priority:node.style.getPropertyPriority(key)}); + const field=record.styles.get(key); + if(field.requested!==value||node.style.getPropertyValue(key)!==field.last)node.style.setProperty(key,value,'important'); + field.requested=value;field.last=node.style.getPropertyValue(key); + } + function position(node,x,y,width,maxHeight) { + for(const [key,value] of Object.entries({position:'absolute',right:'auto',bottom:'auto',transform:'none',margin:'0px',width:`${width}px`,'max-height':`${maxHeight}px`}))style(node,key,value); + const host=node.offsetParent||arena.ownerDocument.documentElement,h=host.getBoundingClientRect(); + const sx=h.width/host.offsetWidth||1,sy=h.height/host.offsetHeight||sx; + style(node,'left',`${(x-h.left)/sx-host.clientLeft+host.scrollLeft}px`); + style(node,'top',`${(y-h.top)/sy-host.clientTop+host.scrollTop}px`); + } + const api = { + refresh(nextOptions) { + options = nextOptions; + const {footerHeight,status} = nextOptions; + const used=new Set(),a=arena.getBoundingClientRect(),zoom=a.width/arena.clientWidth||1; + const left=parseFloat(arena.style.getPropertyValue('--mengsan-hud-left'))||0; + const right=parseFloat(arena.style.getPropertyValue('--mengsan-hud-right'))||0; + const x=a.left+left*zoom,width=Math.max(100,arena.clientWidth-left-right); + const controlTop=ui.control.getBoundingClientRect().top; + const prompts=new Set(arena.querySelectorAll(':scope > .hand-tip,:scope > .hand-tip-info')); + const dialog=ui.dialog; + if(dialog?.isConnected && !dialog.classList.contains('popped') && !dialog.classList.contains('fullheight') && !dialog.forcebutton && !dialog.buttons?.length && !dialog.querySelector('.button,.card,.player,input,textarea,select') && status.event?.player===player)prompts.add(dialog); + // The event owns simple native prompt dialogs too, without a global game dependency. + const eventDialog=status.event?.dialog; + if(eventDialog?.isConnected && eventDialog===dialog && !eventDialog.buttons?.length && !eventDialog.forcebutton && !eventDialog.querySelector('.button,.card,.player,input,textarea,select'))prompts.add(eventDialog); + let promptBottom=Math.min(controlTop-10*zoom,a.bottom-(footerHeight+54)*zoom); + for(const node of prompts) { + if(node.hidden || node.style.display==='none')continue; + mark(node,'mengsan-hud-prompt-shuying');used.add(node); + position(node,x,0,width,arena.clientHeight<=500?34:64); + const height=node.getBoundingClientRect().height; + position(node,x,Math.max(a.top+50*zoom,promptBottom-height),width,arena.clientHeight<=500?34:64); + promptBottom=node.getBoundingClientRect().top-6*zoom; + } + const handBox=hand.getBoundingClientRect(); + const handTop=Math.min(handBox.top,...[...hand.querySelectorAll('.handcards>.card')].map(node=>node.getBoundingClientRect().top)); + const popups=popped(); + let hasPopup=false; + for(const node of popups) { + const rect=node.getBoundingClientRect(); + if(!markPopups.has(node) && !records.has(node) && !(rect.bottom>handTop && rect.lefthandBox.left))continue; + mark(node,'mengsan-hud-card-intro-shuying');used.add(node);hasPopup=true; + const popupWidth=Math.min(320,Math.max(180,rect.width/zoom),arena.clientWidth-24); + const maxHeight=Math.max(64,(promptBottom-a.top)/zoom-12); + const center=Math.max(a.left+12*zoom,Math.min(a.right-(popupWidth+12)*zoom,markPopups.has(node)?x:rect.left)); + position(node,center,a.top+12*zoom,popupWidth,maxHeight); + const height=node.getBoundingClientRect().height; + position(node,center,Math.max(a.top+12*zoom,promptBottom-height-8*zoom),popupWidth,maxHeight); + } + if(hasPopup)for(const root of roots)for(const node of root.querySelectorAll(':scope > .poplayer')) {mark(node,'mengsan-hud-intro-layer-shuying');style(node,'z-index','89');used.add(node);} + for(const [node,record] of records)if(!node.isConnected||!used.has(node))release(node,record); + }, + dispose(){disposed=true;for(const type of markEvents)player.removeEventListener(type,guardMark,true);for(const [node,record]of records)release(node,record);}, + }; + return api; +} diff --git a/mengsan/ui/hud/status-model.js b/mengsan/ui/hud/status-model.js new file mode 100644 index 0000000..370282a --- /dev/null +++ b/mengsan/ui/hud/status-model.js @@ -0,0 +1,119 @@ +import { readCombatStatusSources } from '../../battle/status-sources.js'; +import { slowPercent } from '../../monsters/effigy-slow.js'; + +// The descriptions describe Mengsan's current rules, not an imported Wiki engine. +const storageStatuses = [ + ['vulnerable', '易伤', 'mengsanVulnerable_shuying', '回合', '受到攻击伤害增加;剩余自身回合数,倍率按攻击来源及当前效果结算。', 'mengsan_vulnerable_shuying'], + ['weak', '虚弱', 'mengsanWeak_shuying', '回合', '攻击伤害减少25%;纸鹤对敌人采用40%减伤。自身回合结束减少。', 'mengsan_weak_shuying'], + ['frail', '脆弱', 'mengsanFrail_shuying', '回合', '获得格挡减少25%,向下取整;自身回合结束减少。', 'mengsan_frail_shuying'], + ['artifact', '人工制品', 'mengsanArtifact_shuying', '次', '每次抵消一次符合规则的负面状态施加,不抵消伤害。', 'mengsan_artifact_shuying'], + ['constrict', '紧缠', 'mengsanConstrict_shuying', '伤害', '自身回合结束受到等量非攻击伤害;来源死亡解除。', 'mengsan_constrict_shuying'], + ['tangled', '缠结', 'mengsanTangled_shuying', '回合', '攻击牌费用增加1,持续时间可叠加,加费不叠加。', 'mengsan_tangled_shuying'], + ['shrink', '缩小', 'mengsanShrink_shuying', '', '攻击伤害减少30%,不重复叠加;来源死亡解除。', 'mengsan_shrink_shuying'], + ['plow', '横冲直撞', 'mengsanPlow_shuying', '生命阈值', '受到伤害后生命不高于该阈值时击晕,清零力量并进入第二阶段。', 'mengsan_plow_shuying'], + ['slippery', '滑溜', 'mengsanSlippery_shuying', '次', '下一次实际生命损失限制为1,完全格挡不消耗。', 'mengsan_slippery_shuying'], + ['territorial', '领地意识', 'mengsanTerritorial_shuying', '力量', '自身回合结束获得等量力量。', 'mengsan_territorial_shuying'], + ['infested', '寄生物', 'mengsanInfested_shuying', '召唤数', '死亡后立即召唤扭动虫,必须消灭召唤单位才能获胜。', 'mengsan_infested_shuying'], +]; +// [display name, icon, value meaning, description]; only actual effect fields are read. +const effects = { + turnStrength: ['恶魔形态', 'demon_form', '力量', '自身回合开始获得力量。'], + turnEnergy: ['每回合费用', 'demesne', '费用', '自身回合开始额外获得费用。'], + turnBlock: ['绯红披风', 'crimson_mantle', '格挡', '自身回合开始获得格挡;失血部分另列。'], + turnLoseHp: ['披风失血', 'crimson_mantle', '生命', '自身回合开始失去生命。'], + infernoLoseHp: ['狱火失血', 'inferno', '生命', '自身回合开始失去生命。'], + lossDamage: ['狱火', 'inferno', '伤害', '自身回合失去生命时,对所有敌人造成伤害。'], + lossStrength: ['撕裂', 'rupture', '力量', '自身回合失去生命时获得力量。'], + vulnerableBonus: ['易伤增幅', 'vicious', '倍率加成', '对易伤敌人的伤害倍率额外加成。'], + attackBlock: ['狂怒', 'rage', '格挡', '本回合每打出一张攻击牌获得格挡。'], + retaliation: ['火焰屏障', 'flame_barrier', '伤害', '本回合受到攻击后反击。'], + colossus: ['巨像', 'colossus', '', '本回合受到易伤敌人的攻击伤害减少50%。'], + freeAttack: ['免费攻击', 'free_attack', '', '下一张符合规则的攻击牌免费。'], + noDraw: ['不可抽牌', 'no_draw', '', '本回合不能继续抽牌。'], + noEnergy: ['无法获得费用', 'no_energy_gain', '', '本回合不能再获得费用。'], + doubleTap: ['连环拳', 'one_two_punch', '张', '本回合接下来的攻击牌额外打出一次。'], + plating: ['覆甲', 'plating', '格挡', '回合末获得等量格挡;自身回合开始减少1层。'], + exhaustBlock: ['无惧疼痛', 'feel_no_pain', '格挡', '卡牌消耗后获得格挡。'], + exhaustDraw: ['黑暗之拥', 'dark_embrace', '张', '卡牌消耗后抽牌。'], + vulnerableDraw: ['凶恶', 'vicious', '张', '每次成功施加易伤后抽牌。'], + juggle: ['杂耍', 'juggling', '', '自身回合第三张攻击牌复制至手牌。'], + endAttack: ['惊逃', 'stampede', '张', '回合结束随机免费打出攻击手牌。'], + retrieveAttack: ['好勇斗狠', 'aggression', '张', '自身回合开始从弃牌堆获得攻击牌并强化。'], + bodyguard: ['肉盾', 'tank', '', '自身承受敌人双倍伤害,其他友方受到敌人的伤害减半。'], + autoStrike: ['地狱狂徒', 'hellraiser', '', '抽到杀或名称含打击的攻击牌时自动打出。'], + firstBlock: ['不动', 'unmovable', '张', '每个自身回合首批获得格挡的卡牌,格挡翻倍。'], + blockDamage: ['势不可当', 'juggernaut', '伤害', '获得格挡时对随机敌人造成伤害。'], + barricade: ['壁垒', 'barricade', '', '自身回合开始保留格挡。'], + corruption: ['腐化', 'corruption', '', '技能牌费用变为0,打出后消耗。'], + dexterity: ['敏捷', 'dexterity', '格挡', '影响从卡牌中获得的格挡。'], + noCardBlock: ['不可格挡', 'no_block', '回合', '无法从卡牌中获得格挡。'], + intangible: ['无实体', 'intangible', '回合', '按当前规则限制伤害和生命损失。'], + gambit: ['孤注一掷', 'the_gambit', '', '受到未被格挡的攻击伤害时死亡。'], + retain: ['保留手牌', 'retain_hand', '', '本回合保留手牌。'], + panache: ['神气制胜', 'panache', '伤害', '自身回合每打出5张牌,对所有敌人造成伤害。'], + defendBonus: ['勒紧', 'fasten', '格挡', '防御牌额外获得格挡。'], + turnVigor: ['准备时间', 'prep_time', '活力', '自身回合开始获得活力。'], + automation: ['自动化', 'automation', '费用', '抽牌达到计数要求后获得费用。'], + powerDiscount: ['好奇', 'curious', '费用', '能力牌费用降低。'], + boulder: ['滚石', 'rolling_boulder', '伤害', '回合开始对所有敌人造成伤害,随后伤害增加5。'], + nostalgia: ['怀旧', 'nostalgia', '', '每回合首张攻击或技能牌放回抽牌堆顶。'], + entropy: ['熵', 'entropy', '', '自身回合开始变化手牌。'], + beacon_of_hope: ['希望灯塔', 'beacon_of_hope', '', '获得格挡时向其他友方提供格挡。'], + mayhem: ['乱战', 'mayhem', '', '自身回合开始自动打出抽牌堆顶的牌。'], + calamity: ['劫难', 'calamity', '', '打出攻击牌时生成随机攻击牌。'], +}; +const activeValue = value => value === true || typeof value === 'number' && Number.isFinite(value) && value !== 0; +const number = value => typeof value === 'number' && Number.isFinite(value) ? value : 0; +const make = (id, name, icon, value, unit, detail, markSkills = []) => ({ id, name, + icon: icon ? `${icon}_power.png` : null, value: value === true ? null : value, unit, detail, markSkills }); + +export const statusIconNames = [...new Set(['strength', 'ringing', 'slow', 'the_bomb', 'vigor', 'draw_cards_next_turn', 'energy_next_turn', 'block_next_turn', + ...storageStatuses.map(row => row[0]), ...Object.values(effects).map(row => row[1])])].map(id => `${id}_power.png`); + +export function collectCombatStatuses(player, battle) { + if (!battle?.session?.active) return []; + const storage = player.storage || {}, result = [], sources = readCombatStatusSources(player, battle.session); + const penalty = sources.reduce((n, entry) => n + number(entry.state.negativeStrength), 0); + const permanent = number(storage.mengsanStrength_shuying), temporary = number(storage.mengsanSetupStrength_shuying); + if (permanent || temporary || penalty) result.push(make('strength', '力量', 'strength', permanent + temporary - penalty, '伤害', + `常驻力量 ${permanent};临时力量 ${temporary};本回合减益 ${penalty}。不同临时来源按各自原规则到期。`, + ['mengsan_raider_strength_shuying', 'mengsan_setup_strength_shuying'])); + for (const [id, name, key, unit, detail, skill] of storageStatuses) { + if (activeValue(storage[key])) result.push(make(id, name, id, storage[key], unit, detail, [skill])); + } + if (storage.mengsanRinging_shuying || player.hasSkill?.('mengsan_ringing_shuying')) result.push(make('ringing', '昏眩', 'ringing', + `${Math.min(1, number(storage.mengsanRingingUsed_shuying))}/1`, '主动出牌', '本次自身回合至多主动使用1张牌,不限制响应;回合结束解除。', ['mengsan_ringing_shuying'])); + if (player.hasSkill?.('mengsan_slow_shuying')) result.push(make('slow', '缓慢', 'slow', slowPercent(player), '%', + `缓慢 ${number(storage.mengsanSlow_shuying)} 层;友方回合每打出一张牌,受到的攻击牌伤害增加层数×10%;换回合计数重置。`, ['mengsan_slow_shuying'])); + for (const { id, state } of sources) { + for (const zone of ['powers', 'turn', 'defense']) { + for (const [key, value] of Object.entries(state[zone] || {})) { + const definition = effects[key]; + if (!definition || !activeValue(value)) continue; + const [name, icon, unit, detail] = definition; + result.push(make(`${id}:${zone}:${key}`, name, icon, key === 'vulnerableBonus' ? `${Math.round(value * 100)}%` : value, unit, detail, + id === 'ironclad' ? ['mengsan_ic_powers_shuying'] : [])); + } + } + if (activeValue(state.vigor)) result.push(make(`${id}:vigor`, '活力', 'vigor', state.vigor, '伤害', '下一张攻击牌获得额外伤害。')); + (state.bombs || []).forEach((bomb, index) => result.push(make(`${id}:bomb:${index}`, '炸弹', 'the_bomb', bomb.turns, '回合', + `此实例倒计时结束后对所有敌人造成${bomb.damage}点伤害;各炸弹独立结算。`))); + (state.nextTurn || []).forEach((next, index) => { + for (const [key, name, icon, unit] of [['draw', '下回合抽牌', 'draw_cards_next_turn', '张'], ['energy', '下回合费用', 'energy_next_turn', '费用'], ['block', '下回合格挡', 'block_next_turn', '格挡']]) { + if (activeValue(next[key])) result.push(make(`${id}:next:${index}:${key}`, name, icon, next[key], unit, + `自身回合开始获得;${next.remaining ? `剩余${next.remaining}次。` : '此实例结算一次。'}`)); + } + }); + } + if (battle.relics?.displayState && battle.owner === player) { + const relic = battle.relics.displayState(); + for (const [key, name, icon, unit, detail] of [ + ['dexterity', '遗物敏捷', 'dexterity', '格挡', '遗物提供的卡牌格挡修正。'], + ['plating', '遗物覆甲', 'plating', '格挡', '遗物提供的回合末格挡。'], + ['nextEnergy', '下回合费用', 'energy_next_turn', '费用', '遗物将在下个自身回合提供费用。'], + ['nextBlock', '下回合格挡', 'block_next_turn', '格挡', '遗物将在下个自身回合提供格挡。']]) { + if (activeValue(relic[key])) result.push(make(`relic:${key}`, name, icon, relic[key], unit, detail)); + } + } + return result; +} diff --git a/mengsan/ui/hud/style.css b/mengsan/ui/hud/style.css new file mode 100644 index 0000000..b5d1048 --- /dev/null +++ b/mengsan/ui/hud/style.css @@ -0,0 +1,128 @@ +/* Presentation only: native players, cards and controls keep their handlers. */ +.mengsan-hud-arena-shuying { --mengsan-hud-paper:#edf2f7;--mengsan-hud-gold:#dcc18e;--mengsan-hud-raised:transparent;--mengsan-hud-stroke:rgba(240,240,240,.35);overflow:clip!important; } +.mengsan-hud-hand-shuying,.mengsan-hud-controls-shuying,.mengsan-hud-external-control-shuying,.mengsan-hud-self-shuying,.mengsan-hud-actor-shuying { transition:none!important; } +.mengsan-hud-native-skills-shuying,.mengsan-hud-native-skills-shuying>div,.mengsan-hud-skin-skills-shuying>.enable,.mengsan-hud-skin-skills-shuying>.trigger,.mengsan-hud-skin-skills-shuying .skillitem { transition:none!important; } +.mengsan-hud-shuying { position:absolute;left:0;right:0;bottom:0;height:var(--mengsan-hud-height,274px);z-index:20;box-sizing:border-box;pointer-events:none;color:var(--mengsan-hud-paper);background:transparent;border:0;border-radius:0;backdrop-filter:none;box-shadow:none;text-shadow:0 1px 3px #000,0 0 6px #000c;font:13px/1.4 "Microsoft YaHei",sans-serif; } +/* Transparent layout only: no footer slab, tint, outline or blur. */ +.mengsan-hud-shuying::before,.mengsan-hud-shuying::after { display:none; } +.mengsan-hud-shuying *,.mengsan-hud-dialog-shuying * { box-sizing:border-box; } +.mengsan-hud-shuying div,.mengsan-hud-shuying span,.mengsan-hud-shuying strong,.mengsan-hud-shuying button,.mengsan-hud-dialog-shuying section,.mengsan-hud-dialog-shuying p { position:relative;display:block;float:none; } +.mengsan-hud-shuying [hidden],.mengsan-unit-status-shuying[hidden] { display:none!important; } +.mengsan-hud-shuying .mengsan-hud-info-shuying,.mengsan-hud-shuying .mengsan-hud-center-shuying { position:absolute; } +.mengsan-hud-shuying button,.mengsan-unit-status-shuying,.mengsan-hud-dialog-shuying button { color:var(--mengsan-hud-paper,#edf2f7);background:var(--mengsan-hud-raised,#28374ad6);border:1px solid var(--mengsan-hud-stroke,#dce8f42e);border-radius:12px;font:inherit;cursor:pointer;touch-action:manipulation;pointer-events:auto; } +.mengsan-hud-shuying button:hover,.mengsan-unit-status-shuying:hover { border-color:#dcc18e;background:#ffffff12; } +.mengsan-hud-shuying button:focus-visible,.mengsan-unit-status-shuying:focus-visible,.mengsan-hud-dialog-shuying button:focus-visible { outline:2px solid #f4d894;outline-offset:2px; } +.mengsan-hud-shuying .mengsan-hud-info-shuying { left:var(--mengsan-profile-info-left);top:var(--mengsan-profile-info-top);bottom:auto;width:100px;display:flex;flex-direction:column;gap:12px; } +.mengsan-hud-name-shuying { font:600 18px/1.2 "Microsoft YaHei",sans-serif;letter-spacing:.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap; } +.mengsan-hud-hp-shuying,.mengsan-hud-block-shuying { font-size:12px;color:#e2dfd4;font-variant-numeric:tabular-nums;white-space:nowrap; } +.mengsan-hud-health-track-shuying { width:100%;height:4px;margin:0 0 2px;background:#ffffff1a;border-radius:4px;overflow:hidden; } +.mengsan-hud-health-track-shuying>span { height:100%;background:#9bb78d; } +.mengsan-hud-energy-shuying { color:#eacb87;font-size:16px;font-variant-numeric:tabular-nums;white-space:nowrap; } +.mengsan-hud-center-shuying { left:40px;right:auto;top:auto;bottom:var(--mengsan-side-dock-bottom);width:var(--mengsan-profile-width);height:var(--mengsan-status-height); } +.mengsan-hud-shuying .mengsan-hud-statuses-shuying { display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:32px;align-content:end;gap:6px;overflow:hidden;white-space:nowrap;height:100%; } +.mengsan-hud-shuying .mengsan-hud-status-shuying { display:flex;align-items:center;gap:4px;max-width:100%;min-width:0;min-height:32px;padding:3px 6px;background:transparent;border-radius:10px; } +.mengsan-hud-status-shuying span { overflow:hidden;text-overflow:ellipsis;font-size:12px; } +.mengsan-hud-status-shuying b { font-variant-numeric:tabular-nums;font-size:13px; } +.mengsan-hud-status-shuying img { width:22px;height:22px;object-fit:contain; } +.mengsan-hud-hand-shuying { position:absolute!important;left:var(--mengsan-hud-left)!important;right:var(--mengsan-hud-right)!important;bottom:68px!important;top:auto!important;width:calc(100% - var(--mengsan-hud-left) - var(--mengsan-hud-right))!important;height:calc(var(--mengsan-hud-height,274px) - 126px)!important;z-index:24!important;background:none!important;border:0!important;transform:none!important;pointer-events:none; } +.mengsan-hud-hand-shuying .handcards>.card { pointer-events:auto; } +.mengsan-hud-mebg-shuying,.mengsan-hud-hand-shuying>.fakeme.avatar { display:none!important; } +/* These explicit references cover Decade's nested camp-wrap and hp-wrap as well. */ +.mengsan-hud-active-shuying .mengsan-hud-replaced-node-shuying { display:none!important; } +#arena.mengsan-hud-arena-shuying>.player.mengsan-hud-self-shuying { box-sizing:border-box!important;background:#172131!important;border:1px solid #dce8f44d!important;border-radius:16px!important;box-shadow:0 6px 20px #0005!important;min-width:0!important;min-height:0!important;max-width:none!important;max-height:none!important; } +#arena.mengsan-hud-arena-shuying>.player.mengsan-hud-self-shuying { z-index:25!important; } +#arena.mengsan-hud-arena-shuying>.player.mengsan-hud-self-shuying::before,#arena.mengsan-hud-arena-shuying>.player.mengsan-hud-self-shuying::after { display:none!important; } +#arena.mengsan-hud-arena-shuying>.player.selectable.mengsan-hud-self-shuying { outline:2px solid #e8d198;outline-offset:3px; } +#arena.mengsan-hud-arena-shuying>.player.selected.mengsan-hud-self-shuying,#arena.mengsan-hud-arena-shuying>.player.target.mengsan-hud-self-shuying { outline:3px solid #f29b73;outline-offset:3px; } +#arena.mengsan-hud-arena-shuying .player>.mengsan-hud-portrait-shuying,#arena.mengsan-hud-arena-shuying .player.mengsan-hud-self-shuying>.dynamic-wrap { position:absolute!important;inset:0!important;width:100%!important;height:100%!important;transform:none!important;clip-path:inset(0 round 14px)!important;-webkit-clip-path:inset(0 round 14px)!important;border-radius:14px!important;background-size:cover!important;background-position:center 15%!important; } +.mengsan-hud-portrait-shuying>.action { display:none!important; } +.mengsan-hud-self-shuying>.mengsan-energy-shuying,.mengsan-hud-actor-shuying>.mengsan-energy-shuying { display:none!important; } +.mengsan-hud-represented-mark-shuying { display:none!important; } +/* Container IDs and combo-control differ. Bind to owned classes and keep all callbacks. */ +/* Only arrange the real native control groups; their theme owns all button paint. */ +body.mengsan-hud-active-shuying #arena>.mengsan-hud-controls-shuying { height:auto!important;display:flex!important;flex-direction:row!important;flex-wrap:wrap!important;align-items:center!important;align-content:flex-end!important;justify-content:center!important;gap:8px;overflow:visible!important;margin:0!important;padding:0!important;z-index:30!important;pointer-events:none; } +body.mengsan-hud-active-shuying #arena>.mengsan-hud-controls-shuying>.control { position:relative!important;left:auto!important;right:auto!important;top:auto!important;bottom:auto!important;transform:none!important;display:flex!important;flex-direction:row!important;flex-wrap:wrap!important;flex:none!important;align-items:center!important;justify-content:center!important;width:auto!important;max-width:100%!important;min-width:0!important;height:auto!important;margin:0!important;overflow:visible!important;pointer-events:none; } +body.mengsan-hud-active-shuying #arena>.mengsan-hud-controls-shuying>.control>div { pointer-events:auto; } +.mengsan-hud-external-control-shuying { z-index:31!important;overflow:auto!important;box-sizing:border-box; } +.mengsan-hud-skin-skills-shuying { height:auto!important;max-width:none!important;display:flex!important;flex-direction:column!important;gap:4px; } +.mengsan-hud-skin-skills-shuying>.enable,.mengsan-hud-skin-skills-shuying>.trigger { position:relative!important;display:flex!important;flex-wrap:nowrap!important;flex-direction:column!important;align-items:stretch!important;justify-content:center!important;gap:8px;width:100%!important;height:auto!important;margin:0!important;padding:0!important; } +.mengsan-hud-skin-skills-shuying .skillitem { position:relative!important;float:none!important;box-sizing:border-box!important;width:auto!important;min-width:40px!important;max-width:100%!important;height:auto!important;min-height:28px!important;margin:0!important;padding:4px 8px!important;background-size:100% 100%!important;border:0!important;border-radius:10px!important;font:13px/20px "Microsoft YaHei",sans-serif!important;white-space:normal!important; } +.mengsan-hud-skin-skills-shuying>.enable>.skillitem { width:100%!important;min-height:34px!important;text-align:center; } +.mengsan-hud-skin-skills-shuying .skillitem { -webkit-text-fill-color:currentColor!important;-webkit-text-stroke:0!important;background-clip:border-box!important;-webkit-background-clip:border-box!important; } +.mengsan-hud-skin-skills-shuying .skillitem::before,.mengsan-hud-skin-skills-shuying .skillitem-child { display:none!important; } +.mengsan-hud-skin-skills-shuying .skillitem:is(.select,.selected) { outline:1px solid #e6cb93;outline-offset:-2px; } +.mengsan-hud-skin-skills-shuying>.enable>.skillitem:not(.usable):not(.select),.mengsan-hud-skin-skills-shuying .skillitem.shixiao { opacity:.55; } +.mengsan-hud-skin-skills-shuying>.trigger>.skillitem { color:#c2c7c8!important;font-size:12px!important; } +.mengsan-hud-active-shuying .mengsan-hand-relics-shuying { position:absolute!important;left:auto!important;right:24px!important;transform:none!important;top:auto!important;bottom:var(--mengsan-relic-dock-bottom)!important;width:128px!important;max-width:128px!important;height:auto;max-height:var(--mengsan-status-height);padding:2px;box-sizing:border-box;display:flex;flex-direction:row;flex-wrap:wrap;justify-content:flex-end;gap:6px;overflow-x:hidden;overflow-y:auto;z-index:22;touch-action:pan-y;background:transparent!important;border:0;border-radius:14px;scrollbar-width:thin;scrollbar-color:#dce8f440 transparent; } +.mengsan-hud-active-shuying .mengsan-hand-relics-shuying[hidden] { display:none!important; } +.mengsan-hud-active-shuying .mengsan-hand-relics-shuying>button { flex:none;width:32px;min-height:32px;height:32px;border-color:var(--mengsan-hud-stroke);border-radius:10px;background:transparent; } +.mengsan-hud-active-shuying .mengsan-hand-relics-shuying img { width:28px;height:28px; } +.mengsan-hud-active-shuying .mengsan-hud-hand-shuying .mengsan-hand-scroll-shuying { left:0!important;width:100%!important; } +.mengsan-hud-dialog-shuying { position:fixed;inset:0;margin:auto;width:min(620px,calc(100vw - 24px));max-height:82vh;padding:24px;color:#edf2f7;background:#172131ed;border:1px solid #dce8f42e;border-radius:20px;backdrop-filter:blur(10px);overflow:auto;z-index:150;font:15px/1.6 "Microsoft YaHei",sans-serif; } +.mengsan-hud-dialog-shuying::backdrop { background:#0009; } +.mengsan-hud-dialog-shuying h2 { margin:0 70px 14px 0;font-size:19px; } +.mengsan-hud-dialog-close-shuying { position:absolute;right:14px;top:14px;padding:5px 10px;min-height:36px; } +.mengsan-hud-detail-row-shuying { border-top:1px solid #cbb58a40;padding:10px 0; } +.mengsan-hud-detail-row-shuying p { margin:4px 0; } +[data-mengsan-hud-layout="short"] .mengsan-hud-shuying .mengsan-hud-info-shuying { left:108px;width:90px;gap:4px; } +[data-mengsan-hud-layout="short"] .mengsan-hud-hp-shuying,[data-mengsan-hud-layout="short"] .mengsan-hud-block-shuying { font-size:11px; } +[data-mengsan-hud-layout="short"] .mengsan-hud-name-shuying { font-size:15px; } +[data-mengsan-hud-layout="short"] .mengsan-hud-energy-shuying { font-size:14px; } +[data-mengsan-hud-layout="short"] .mengsan-hud-hand-shuying { bottom:64px!important;height:calc(var(--mengsan-hud-height) - 122px)!important; } +[data-mengsan-hud-layout="short"] .mengsan-hud-center-shuying { top:auto;left:24px; } +[data-mengsan-hud-layout="short"] .mengsan-hud-shuying .mengsan-hud-status-shuying { min-height:26px;padding:2px 4px; } +[data-mengsan-hud-layout="short"] .mengsan-hud-status-shuying img { width:18px;height:18px; } +[data-mengsan-hud-layout="narrow"] .mengsan-hud-shuying .mengsan-hud-info-shuying { left:22px;width:76px;font-size:12px;gap:5px; } +[data-mengsan-hud-layout="narrow"] .mengsan-hud-hand-shuying { bottom:68px!important; } +[data-mengsan-hud-layout="narrow"] .mengsan-hud-name-shuying { font-size:16px; } +[data-mengsan-hud-layout="narrow"] .mengsan-hud-status-shuying span { display:none; } +#arena.mengsan-hud-arena-shuying>.mengsan-hud-notification-shuying { width:148px!important;max-width:148px!important;min-height:30px;height:30px!important;transition:none!important;font:600 16px/30px "Microsoft YaHei",sans-serif!important;white-space:nowrap; } +#arena.mengsan-hud-arena-shuying>.mengsan-hud-notification-shuying>span { font-size:16px!important; } +/* Stack real equipment nodes over the lower portrait, like Decade's player equips. */ +body.mengsan-hud-active-shuying #arena .mengsan-hud-equips-shuying { + position:absolute!important;left:6px!important;right:auto!important;top:auto!important;bottom:6px!important; + width:calc(100% - 12px)!important;min-width:0!important;height:auto!important;max-height:min(100px,58%)!important;box-sizing:border-box!important; + display:flex!important;flex-direction:column!important;align-items:stretch!important;justify-content:flex-start!important;gap:2px;overflow-x:hidden!important;overflow-y:auto!important; + padding:0!important;margin:0!important;transform:none!important;transition:none!important;background:none!important;border:0!important;box-shadow:none!important; + pointer-events:auto!important;touch-action:pan-y;scrollbar-width:thin;scrollbar-color:#dce8f440 transparent;z-index:72!important; +} +body.mengsan-hud-active-shuying #arena .mengsan-hud-equips-shuying:empty { display:none!important; } +body.mengsan-hud-active-shuying #arena .mengsan-hud-equip-host-shuying { opacity:1!important;visibility:visible!important;overflow:visible!important;pointer-events:none!important;z-index:26!important; } +body.mengsan-hud-active-shuying #arena .mengsan-hud-equip-host-shuying>.equips-back { display:none!important; } +body.mengsan-hud-active-shuying #arena .mengsan-hud-equips-shuying>.card { + position:relative!important;inset:auto!important;display:flex!important;flex:none!important;align-items:center!important;justify-content:center!important; + width:100%!important;min-width:0!important;max-width:100%!important;height:18px!important;margin:0!important;padding:0 2px!important;box-sizing:border-box!important; + transform:none!important;transition:none!important;overflow:hidden!important;border:1px solid #5f372d!important;border-radius:3px!important; + background:rgba(228,207,166,.88)!important;box-shadow:none!important;color:#181818!important;pointer-events:auto!important; +} +body.mengsan-hud-active-shuying #arena .mengsan-hud-equips-shuying>.card>.name2 { + position:relative!important;inset:auto!important;display:block!important;max-width:100%!important;width:auto!important;height:auto!important; + overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important;color:#181818!important;font:11px/16px "Microsoft YaHei",sans-serif!important; + text-shadow:none!important;pointer-events:none!important; +} +body.mengsan-hud-active-shuying #arena .mengsan-hud-equips-shuying>.card>.name2>span { position:static!important;display:inline!important;font:inherit!important; } +body.mengsan-hud-active-shuying #arena .mengsan-hud-equips-shuying>.card>:not(.name2) { display:none!important; } +body.mengsan-hud-active-shuying #arena .mengsan-hud-equips-shuying>.card.selectable { border-color:#e4c98e!important;box-shadow:inset 0 0 0 1px #e4c98e!important; } +body.mengsan-hud-active-shuying #arena .mengsan-hud-equips-shuying>.card.selected { background:#49624b!important;border-color:#e4c98e!important; } + +body.mengsan-hud-active-shuying #arena .mengsan-hud-equips-shuying>.card:is([data-suit="heart"],[data-suit="diamond"])>.name2 { color:#8b0000!important; } +body.mengsan-hud-active-shuying #arena .mengsan-hud-equips-shuying::-webkit-scrollbar { width:3px; } +body.mengsan-hud-active-shuying #arena .mengsan-hud-equips-shuying::-webkit-scrollbar-thumb { background:#dce8f440;border-radius:3px; } +[data-mengsan-hud-layout="short"] .mengsan-hand-relics-shuying { right:16px!important;width:112px!important;max-width:112px!important; } +[data-mengsan-hud-layout="narrow"] .mengsan-hand-relics-shuying { right:16px!important;width:96px!important;max-width:96px!important;max-height:36px;flex-wrap:nowrap;justify-content:flex-start;overflow-x:auto;overflow-y:hidden;touch-action:pan-x; } +body.mengsan-hud-active-shuying #arena>.mengsan-hud-controls-shuying>.mengsan-hud-native-skills-shuying { flex-direction:column!important;flex-wrap:nowrap!important;align-items:stretch!important;max-width:none!important;overflow:auto!important; } +body.mengsan-hud-active-shuying #arena .mengsan-hud-native-skills-shuying>div { width:100%!important;min-width:0!important;box-sizing:border-box!important;padding:8px 10px!important;min-height:40px!important;font:14px/20px "Microsoft YaHei",sans-serif!important;white-space:normal!important; } +[data-mengsan-hud-layout="narrow"] .mengsan-hud-center-shuying { left:22px; } +[data-mengsan-hud-layout="short"] .mengsan-hud-shuying .mengsan-hud-statuses-shuying { height:100%; } +[data-mengsan-hud-layout="narrow"] .mengsan-hud-shuying .mengsan-hud-statuses-shuying { grid-template-columns:1fr; } +.mengsan-hud-prompt-shuying { box-sizing:border-box!important;height:auto!important;min-height:0!important;overflow:auto!important;padding:2px 6px!important;background:none!important;border:0!important;box-shadow:none!important;text-align:center!important;z-index:32!important;color:#f6edcb!important;text-shadow:0 1px 3px #000,0 0 6px #000!important; } +body.mengsan-hud-active-shuying .mengsan-hud-card-intro-shuying { box-sizing:border-box!important;z-index:90!important;height:auto!important;min-height:0!important;overflow:auto!important;border-radius:14px!important;background:#202020f5!important;box-shadow:0 8px 24px #0007!important;color:#f4f4f4!important;transition:none!important; } +body.mengsan-hud-active-shuying #window>.mengsan-hud-card-intro-shuying { z-index:90!important; } +body.mengsan-hud-active-shuying #window>.mengsan-hud-intro-layer-shuying { z-index:89!important; } +.mengsan-hud-card-intro-shuying>.content-container,.mengsan-hud-prompt-shuying>.content-container { position:relative!important;inset:auto!important;height:auto!important;max-height:none!important;overflow:visible!important; } +.mengsan-hud-card-intro-shuying>.content-container>.content,.mengsan-hud-prompt-shuying>.content-container>.content { position:relative!important;inset:auto!important;height:auto!important; } +.mengsan-hud-card-intro-shuying .content>div,.mengsan-hud-prompt-shuying .content>div { position:relative!important; } +body.mengsan-hud-active-shuying .mengsan-hud-intro-layer-shuying { z-index:89!important;transition:none!important; } +.mengsan-hud-frozen-shuying .mengsan-hud-hand-shuying,.mengsan-hud-frozen-shuying .mengsan-hud-self-shuying,.mengsan-hud-frozen-shuying .mengsan-hud-shuying { pointer-events:none!important; } +.mengsan-hud-frozen-shuying .mengsan-hud-hand-shuying *,.mengsan-hud-frozen-shuying .mengsan-hud-self-shuying *,.mengsan-hud-frozen-shuying .mengsan-hud-shuying * { pointer-events:none!important; } +.mengsan-hud-frozen-shuying .mengsan-hud-controls-shuying,.mengsan-hud-frozen-shuying .mengsan-hud-external-control-shuying,.mengsan-hud-frozen-shuying .hand-tip,.mengsan-hud-frozen-shuying .hand-tip-info { visibility:hidden!important; } diff --git a/mengsan/ui/relics.js b/mengsan/ui/relics.js index 68b865f..2b03663 100644 --- a/mengsan/ui/relics.js +++ b/mengsan/ui/relics.js @@ -3,7 +3,7 @@ import { heldRelics } from "../relics/definitions.js"; import { createRelicIcon } from "./relic-icon.js"; import { mountRelicStrip } from "./relic-strip.js"; -export function mountRelics(session, run, battleRelics) { +export function mountRelics(session, run, battleRelics, { stripRoot = ui.me } = {}) { let dialog = null, list = null, previousFocus = null, disposed = false; let relics = heldRelics(run), selected = null, strip = null; const button = document.createElement("button"); @@ -80,7 +80,7 @@ export function mountRelics(session, run, battleRelics) { catch (error) { close(); throw error; } }; button.addEventListener("click", () => open()); - if (ui.me) strip = mountRelicStrip(ui.me, () => heldRelics(run), + if (stripRoot) strip = mountRelicStrip(stripRoot, () => heldRelics(run), open, createRelicIcon, document, window); const dispose = () => { if (disposed) return; diff --git a/mengsan/ui/style.css b/mengsan/ui/style.css index 992ae61..13f37dd 100644 --- a/mengsan/ui/style.css +++ b/mengsan/ui/style.css @@ -1031,15 +1031,15 @@ dialog.mengsan-victory-dialog-shuying::backdrop, dialog.mengsan-card-choice-dial .mengsan-victory-intro-shuying p { max-width: 17em; margin: 0; color: var(--reward-muted); font-size: 15px; line-height: 1.8; } .mengsan-victory-options-shuying { position: relative !important; grid-column: 2; grid-row: 1; display: flex !important; flex-direction: column !important; - gap: 12px; max-height: min(66dvh,560px); padding: 24px; overflow-y: auto; + gap: 8px; max-height: min(66dvh,560px); padding: 16px; overflow-y: auto; border: 1px solid rgba(199,164,119,.65); border-radius: 7px; background: linear-gradient(145deg,#1e3435,#111f24 68%); box-shadow: inset 0 0 0 5px rgba(9,19,22,.8),0 22px 50px #0008; } .mengsan-victory-eyebrow-shuying { color: var(--reward-bronze); font: 700 13px/1.4 "Microsoft YaHei",sans-serif; letter-spacing: .16em; margin: 0 0 5px; } button.mengsan-victory-option-shuying { - position: relative !important; display: flex !important; align-items: center; gap: 18px; - width: 100%; min-height: 94px; padding: 17px 18px; border: 1px solid #60857a; + position: relative !important; display: flex !important; align-items: center; gap: 12px; flex-shrink: 0; + width: 100%; min-height: 64px; padding: 9px 12px; border: 1px solid #60857a; border-left: 4px solid var(--reward-bronze); border-radius: 3px; color: var(--reward-paper); background: linear-gradient(110deg,#254b49,#1a3238); text-align: left; cursor: pointer; transition: background .18s ease, border-color .18s ease, box-shadow .18s ease; @@ -1053,11 +1053,11 @@ button.mengsan-card-choice-tile-shuying:focus-visible, button.mengsan-card-choic outline: 3px solid #d9e9bb; outline-offset: 4px; } button.mengsan-victory-option-shuying:disabled { opacity: .6; cursor: wait; } -.mengsan-victory-option-index-shuying { flex: 0 0 44px; color: var(--reward-bronze); font: 700 24px/1 "KaiTi",serif; } -.mengsan-victory-option-copy-shuying { display: flex !important; flex: 1; min-width: 0; flex-direction: column; gap: 4px; } -.mengsan-victory-option-copy-shuying strong { color: #fff1d5; font: 700 23px/1.2 "KaiTi",serif; } -.mengsan-victory-option-copy-shuying small { color: #d3e0d4; font: 14px/1.5 "Microsoft YaHei",sans-serif; } -.mengsan-victory-option-arrow-shuying { flex: 0 0 28px; color: var(--reward-bronze); font: 34px/1 "KaiTi",serif; text-align: center; } +.mengsan-victory-option-index-shuying { flex: 0 0 32px; color: var(--reward-bronze); font: 700 20px/1 "KaiTi",serif; } +.mengsan-victory-option-copy-shuying { display: flex !important; flex: 1; min-width: 0; flex-direction: column; gap: 3px; } +.mengsan-victory-option-copy-shuying strong { color: #fff1d5; font: 700 20px/1.2 "KaiTi",serif; } +.mengsan-victory-option-copy-shuying small { color: #d3e0d4; font: 13px/1.4 "Microsoft YaHei",sans-serif; } +.mengsan-victory-option-arrow-shuying { flex: 0 0 22px; color: var(--reward-bronze); font: 28px/1 "KaiTi",serif; text-align: center; } button.mengsan-victory-skip-shuying { grid-column: 2; grid-row: 2; justify-self: end; min-height: 48px; margin-top: 16px; padding: 8px 4px; border: 0; border-bottom: 1px solid var(--reward-muted); color: var(--reward-muted); @@ -1121,7 +1121,7 @@ button.mengsan-card-choice-skip-shuying:hover { color: #fff1d5; border-color: #d .mengsan-victory-seal-shuying { display: none !important; } .mengsan-victory-intro-shuying::after { display: none; } .mengsan-victory-intro-shuying h2 { margin-top: 8px; } - .mengsan-victory-options-shuying { grid-column: 1; grid-row: 2; max-height: none; padding: 18px; } + .mengsan-victory-options-shuying { grid-column: 1; grid-row: 2; max-height: none; padding: 12px; } button.mengsan-victory-skip-shuying { grid-column: 1; grid-row: 3; } .mengsan-card-choice-stage-shuying { justify-content: flex-start; } .mengsan-card-choice-grid-shuying { grid-template-columns: repeat(3,minmax(0,1fr)); width: min(620px,100%); } @@ -1131,7 +1131,7 @@ button.mengsan-card-choice-skip-shuying:hover { color: #fff1d5; border-color: #d button.mengsan-card-choice-tile-shuying { min-height: 292px; } .mengsan-card-choice-art-shuying { height: 105px; } .mengsan-victory-option-index-shuying { flex-basis: 30px; font-size: 20px; } - button.mengsan-victory-option-shuying { gap: 10px; padding: 13px; } + button.mengsan-victory-option-shuying { gap: 8px; padding: 8px 10px; } } @media (max-width: 350px) { .mengsan-card-choice-grid-shuying { grid-template-columns: minmax(0,210px); } } @media (prefers-reduced-motion: reduce) {