From 757051aca834417eaba25ee2295c6db2d41d658c Mon Sep 17 00:00:00 2001 From: Yogi Wiguna Date: Tue, 3 Feb 2026 17:04:35 +0800 Subject: [PATCH] feat: Implement powerup inventory UI and manager, introducing ghost and area freeze special tiles. --- .../enhanced_gridmap/meshlibrary/default.tres | 2 +- assets/graphics/touch_control/ghost.png | Bin 0 -> 21010 bytes .../graphics/touch_control/ghost.png.import | 40 ++++ assets/models/tiles/tile_area_freeze.tres | 26 +-- assets/models/tiles/tile_ghost.tres | 3 + assets/textures/power_tile/ghost_tile.png | Bin 0 -> 99690 bytes .../textures/power_tile/ghost_tile.png.import | 41 ++++ scenes/main.tscn | 3 +- scenes/player.gd | 44 ++++- scripts/managers/player_movement_manager.gd | 25 ++- scripts/managers/special_tiles_manager.gd | 180 +++++++++++++----- scripts/ui/powerup_inventory_ui.gd | 2 +- 12 files changed, 297 insertions(+), 69 deletions(-) create mode 100644 assets/graphics/touch_control/ghost.png create mode 100644 assets/graphics/touch_control/ghost.png.import create mode 100644 assets/textures/power_tile/ghost_tile.png create mode 100644 assets/textures/power_tile/ghost_tile.png.import diff --git a/addons/enhanced_gridmap/meshlibrary/default.tres b/addons/enhanced_gridmap/meshlibrary/default.tres index f0bf1d9..dafe4ca 100644 --- a/addons/enhanced_gridmap/meshlibrary/default.tres +++ b/addons/enhanced_gridmap/meshlibrary/default.tres @@ -6,7 +6,7 @@ [ext_resource type="ArrayMesh" uid="uid://brevl3ab0tdqe" path="res://assets/models/tiles/tile_wall.tres" id="4_8v5xv"] [ext_resource type="ArrayMesh" uid="uid://b5ta7tcw0iscd" path="res://assets/models/tiles/tile_coin.tres" id="4_76xkl"] [ext_resource type="ArrayMesh" uid="uid://d4himvyb81in8" path="res://assets/models/meshes/non-walkable.res" id="4_sx8rm"] -[ext_resource type="ArrayMesh" uid="uid://dr80txgr61irt" path="res://assets/models/tiles/tile_area_freeze.tres" id="5_sx8rm"] +[ext_resource type="ArrayMesh" uid="uid://dqo83gvaay6sn" path="res://assets/models/tiles/tile_area_freeze.tres" id="5_sx8rm"] [ext_resource type="ArrayMesh" uid="uid://bqvqj3fhf5x51" path="res://assets/models/tiles/tile_ghost.tres" id="6_r32il"] [ext_resource type="ArrayMesh" uid="uid://cv4bedhida00g" path="res://assets/models/tiles/tile_star.tres" id="7_p5epg"] [ext_resource type="ArrayMesh" uid="uid://gpnl4cjrivor" path="res://assets/models/tiles/tile_speed.tres" id="7_sx8rm"] diff --git a/assets/graphics/touch_control/ghost.png b/assets/graphics/touch_control/ghost.png new file mode 100644 index 0000000000000000000000000000000000000000..3e49be581edc290a7a3208cd73b7bf07ac9d27ad GIT binary patch literal 21010 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 literal 0 HcmV?d00001 diff --git a/assets/graphics/touch_control/ghost.png.import b/assets/graphics/touch_control/ghost.png.import new file mode 100644 index 0000000..7de7533 --- /dev/null +++ b/assets/graphics/touch_control/ghost.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b2vhatfmufn3d" +path="res://.godot/imported/ghost.png-50b35ecd19732e2631cec7740daf0cec.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/graphics/touch_control/ghost.png" +dest_files=["res://.godot/imported/ghost.png-50b35ecd19732e2631cec7740daf0cec.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/models/tiles/tile_area_freeze.tres b/assets/models/tiles/tile_area_freeze.tres index 7fc9794..d5d719a 100644 --- a/assets/models/tiles/tile_area_freeze.tres +++ b/assets/models/tiles/tile_area_freeze.tres @@ -1,41 +1,41 @@ -[gd_resource type="ArrayMesh" format=4 uid="uid://dr80txgr61irt"] +[gd_resource type="ArrayMesh" format=4 uid="uid://dqo83gvaay6sn"] [ext_resource type="Texture2D" uid="uid://cp7jtg77hc078" path="res://assets/textures/power_tile/freeze_area_tile.png" id="1_3pijd"] -[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_2kxvc"] +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ev6sk"] resource_name = "boost" cull_mode = 2 -albedo_color = Color(0.905882, 0.905882, 0.905882, 0.45098) +albedo_color = Color(0.91, 0.91, 0.91, 0.45098) albedo_texture = ExtResource("1_3pijd") -[sub_resource type="ArrayMesh" id="ArrayMesh_ggb2g"] +[sub_resource type="ArrayMesh" id="ArrayMesh_w3aij"] _surfaces = [{ "aabb": AABB(-0.282176, -0.000324821, -0.282176, 0.564351, 0.050792, 0.564351), "format": 34896613377, "index_count": 36, -"index_data": PackedByteArray("AAABAAIAAAADAAEABAABAAMABQADAAAABQAEAAMAAgAFAAAABAAGAAEAAgABAAYABgAEAAUAAgAHAAUABgAFAAcAAgAGAAcA"), +"index_data": PackedByteArray("BwAEAAUABwAGAAQABQACAAMABQAEAAIAAAAEAAYAAAACAAQABQABAAcABQADAAEAAgABAAMAAgAAAAEAAQAGAAcAAQAAAAYA"), "name": "boost", "primitive": 3, "uv_scale": Vector4(0, 0, 0, 0), "vertex_count": 8, -"vertex_data": PackedByteArray("AAAAAAAAAAD//wAA//8AAP//AAAAAAAAAAAAAP//AAAAAP////8AAAAA/v8AAAAA////////AAD///7/AAAAAA==") +"vertex_data": PackedByteArray("AAD/////AAAAAP7/AAAAAP///////wAA///+/wAAAAD//wAA//8AAP//AAAAAAAAAAAAAP//AAAAAAAAAAAAAA==") }] blend_shape_mode = 0 [resource] -resource_name = "tile_tile_coin_002" +resource_name = "tile_star" _surfaces = [{ "aabb": AABB(-0.282176, -0.000324821, -0.282176, 0.564351, 0.050792, 0.564351), -"attribute_data": PackedByteArray("zuS25MX6sfrF+rbkzuSx+szkQOSr9qfkzOSn5Kv2QOSw+yzlSvvl70r7LOWw++XvSvu0+rD7+u9K+/rvsPu0+pHeot5tIVwhkd5cIW0hot47+6/61PrQ6NT6r/o7+9Do"), +"attribute_data": PackedByteArray("sPss5W0hot47+9DosPv6720hXCE7+6/6sPvl75Heot6r9qfksPu0+pHeXCHM5KfkSvvl78X6sfqr9kDkSvu0+sX6tuTM5EDkSvss5c7ksfrU+tDoSvv6787ktuTU+q/6"), "format": 34896613399, "index_count": 36, -"index_data": PackedByteArray("AAABAAIAAAADAAEABAAFAAYABAAHAAUACAAJAAoACAALAAkADAANAA4ADAAPAA0AEAARABIAEAATABEAFAAVABYAFAAXABUA"), -"material": SubResource("StandardMaterial3D_2kxvc"), -"name": "tile_diamond_holo", +"index_data": PackedByteArray("FgANABAAFgATAA0AEQAIAAsAEQAOAAgAAAAMABIAAAAGAAwADwADABUADwAJAAMABwAEAAoABwABAAQABQAUABcABQACABQA"), +"material": SubResource("StandardMaterial3D_ev6sk"), +"name": "tile_area_freeze", "primitive": 3, "uv_scale": Vector4(0, 0, 0, 0), "vertex_count": 24, -"vertex_data": PackedByteArray("AAAAAAAA/z///wAA////P///AAAAAP8/AAAAAP///z///wAAAAD////////////////+/wAA/////wAA/////wAA//////+///8AAP///78AAAAA////v/////////+///8AAAAAAAAAAP7/AAAAAAAAAAAAAAAA///+/wAAAAD/////////vwAA/v8AAP+////+/wAA/78AAP//////vwAA/v8AAKoqAAAAAP//qioAAAAAAACqKgAA/////6oqAAD/fwAA/38AAP9/AAD/f/+//3//v/9//7//f/+//3///////////////////////7//v/+//7//v/+//7//v////3////9/////f////39U1VTVVNVU1VTVVNVU1VTV") +"vertex_data": PackedByteArray("AAD//////78AAP//////vwAA/////6oqAAD+/wAAAAAAAP7/AAD/vwAA/v8AAKoq/////////7//////////v//////////////+/wAAAAD///7/AAD/v////v8AAP////8AAP///7///wAA////P///AAD///////8AAAAAAAD//wAAAAD/P///AAAAAP//AAAAAP///78AAAAA////PwAAAAD//6oqAAAAAAAAAAAAAAAAAAD/PwAAAAAAAKoq/////////39U1VTV/7//v////39U1VTV/////////3//v/9//7//v////3//v/9//////wAA/3//v/9//7//vwAA/3//v/9//////wAA/39U1VTV/7//vwAA/39U1VTV") }] blend_shape_mode = 0 -shadow_mesh = SubResource("ArrayMesh_ggb2g") +shadow_mesh = SubResource("ArrayMesh_w3aij") diff --git a/assets/models/tiles/tile_ghost.tres b/assets/models/tiles/tile_ghost.tres index d1886f9..149e3be 100644 --- a/assets/models/tiles/tile_ghost.tres +++ b/assets/models/tiles/tile_ghost.tres @@ -1,9 +1,12 @@ [gd_resource type="ArrayMesh" format=4 uid="uid://bqvqj3fhf5x51"] +[ext_resource type="Texture2D" uid="uid://dv0datyodktqu" path="res://assets/textures/power_tile/ghost_tile.png" id="1_avhe4"] + [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ev6sk"] resource_name = "boost" cull_mode = 2 albedo_color = Color(0.91, 0.91, 0.91, 0.45098) +albedo_texture = ExtResource("1_avhe4") [sub_resource type="ArrayMesh" id="ArrayMesh_w3aij"] _surfaces = [{ diff --git a/assets/textures/power_tile/ghost_tile.png b/assets/textures/power_tile/ghost_tile.png new file mode 100644 index 0000000000000000000000000000000000000000..827ed58755cd3f31fa6fc25fcb80f160368bf3f7 GIT binary patch literal 99690 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%0A8zpjkLWd&z3{p39D4xTqSb9!{+yAlj%-=uy} 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%0DV<8FaGrIvxDb*6Aje{S!pz=KB{65WN zmXiZov=4o2v^{I`Dfgz8!a!oo)L)JqHnx9k{>37)selgMwYnGdcwX?ujlpK$Z{JGd zhc-BO1w0>az6}h`Q%+M|S5S&c{Ubn_z(#1Mn_xfF<|(w`IPP2hvSK1*@#d1IU@u~A zM~nO$WoWzwcR5pjtjmk0tw&4ag2*PP;|(g*#qcu~V{19J({6!V#>d`OdaIT70`NsH z*KPGg+k!6RD?dCL7rArv)_~nSc3CP5RF42D^!bs0>hx+iU5{l??q~q--B0_=1TXN^ zBEWkhK%fIH2M^Ev2PaFxPEuf+27rt~5n~-ixR~o0#buc!;LOB^H?D`#fYhfN4(#}H z2k(CZC_4r@q4aBnnB9B`QH1gwS0BqOMqBkAwF&;_?o)%Ea#_sR6wP{? z3BP`rZyHDbCSa8RSMDfi_+{l}e_2#U;|FO(xaK{n*TBjmK!x?!KZyOJ<5AzJcGrPZ zf-EDfnBDF3qb+u2C9~L1lEm^aJBA0#+;iFn&Q9_KIf^@Uk3(dKx1EwN12E_JqA3Hr z9u~5F)Bt|Je$yu|r~4}Lu(_!}eMA<$)oA;K5j`_;a?c8RtWL))1Yl;z#pb@EXs0IVam2(v%P1nIw#co!5hcB?{&$x~ALq1i3`qlHixei+tM#f%A%rVS3j))W9PaY;P#55FIb z6+JApTRgPDq&J9?{CIfn=2P(bLD%p0A5|(&4HfOsF3c$WSxw8sfbQSAkZ^yT8-2xm>O_x-!Om=?kgTMEgk>J#kLom;SJ@x83HD6P@v02vW);Ft{b{}S#UpeyWMhnb-SAyedv*a zxpWUni{<)8lW;bV{APU_B&E4{he^nn1bObIHq?422J<8M#{d5EX9;)zp*GE@^&<^R zH9Jdh))E|-2x5%g1WdFEAe*3{hT$Mvq-MBVhjT3DsL%;Rz18a$5c}D7_!^>;`Fv)e%)B~m$nD7 zU^C(F8~qR;=C9nTGZAn^+3u3*1!FvI%OV?H!p9<=nZl!k`P+f$hPDj~F8hyn-j6>d z?I=TMKH5-~eB^n%VuKPyr>t-*d5ViD#LMP^5dj$te&+?CkJaM#$AL%+1PY0FlY%RM$%D*&yx3H0d`Le4Ch<<4hZ*53zp z-UP_YzQPnU;9+kn?;H~U3t(R`n|P$*c>T+B>-B}NnkOjnT`FAg$JZZ=MT-SeBDWX{ zix=M%*=(jLv#L&PUG5!8V35;<#*(FReBvB}Hhr-s;$o8;`dxv*gJN+_s9H$bV_X}* zu3AMT$>fbuAbVNSeY-7g`hsgsH6|KADyt+oSd)dzNjon!qHA0Gk1iNqJ4$d=8hy;w z9pYCu-U>tuboG_x@EV6Gr9~96GC~R$SKt3r_1snd)AYD#BpK^%#d)%U^aLu1Ff0mx z$LiyuBo41JLEjHrI+>w)S(p#B_Ms5xI+)O|9bMd&C@C6~G|)b}oTdas-h&Wb_jGUE zx8BSx2btvOtJ}daX)+)JU&j@awo8<-=?Pv}N5rt4`U*L7sVx$7VLaa8AcwS&+9W(L zva2y(b*%=gyL=*NC#u4yhmTW2k$6gBDoS4l4WA7#$|Og|4TTtn+Y)Sfxaa*LB44-` zph9*-fNpUgzC$n;xhQMcbQ`$HWPeF)iS0~*T3Wb39tfU72Q>>%Q_v-h6x6}{2!izC&_k~ zn|;dYQ;Uo=ioS0*$$yEy;51HmJ7?@V35@dDBXF3874K^XLZE+^jye@UQ7O*8V+;qJHWgDYUo?qtb^_0KXSQC)&hxhrPGCc}-H1B~D>hmx$ zV`{GOWZim?{P6TFJJNtwhJHN-FE@u3#;1-v&T4ab*l(J<&}=aG2aPb6Lk~ z%iYe~k%}~4!i||0vcke<^qaW}N)6EqN<((>KzS4rBak2%n`@Qv`v`$Jbg!JY|Iq1Q z^va>WGXiqom%j4~XNj3I<-NQgtm;cQ?j49|3CHVlxs)a21eqzdFo{7o(wxsH%lTZc z;P*9`IHV*SC!Q@OkIZZDT$DI$9==SO$acWDW_n%=@AW&0X6kk0k2^l0g2ShYgO7Yl zg(u8;jXoF!nuuTct}3VWY5)C6WfegT-G-K82qANEIZCLK9%oPyU%Idbcbux|jaSxS z4r_U0)PO^Z$b#nO_|wi-O!P`@K$$nDGliVm`)jIlN@Q|gpSF4F;>XgR8HKK{d8X$(DZULbRczNn_)(e!k+1u z2uF9+qG+^_21e#vp%wQCQaMNO#aE%ctay}_%1is4n}j)y=mU;97`afja?8lkG0}*Z zs_!|9M(%tllkqQwaV^3egAczf6S3H9x^uKJWU+82y*`q+3J)J@OdGf_ex_K);aF>) z0jnfaHTL83KO2@MsM6mkrfi!^w{=`ddX0JNyMgH~t#VubHc85g8$=AAc>R^GxvquI z+awN>b<_V{$(}Mwl$I8eA(@=IZI+IckxUH9;)#YwRd_L_D$hPxT2FF6_=4!%h-gLs zSa{8|dG@GwJ*>Idd-;p|!S|9K;})*UN;bo~JG%zuWs?(mU8xQn&u!nkNHkr*;;vjo zP$^#UQNb>iNG{kluK4;4Ps$m0f1S*AzP4E|IUFL+(9kfdmgC5VL#V#f`gcke`q^O; z>&;3QW53o~ad*5n&%{uGY+8TYWoz-df*dm`8`TfCqE?vSV5|7IOLi~R2IHW!p#7Hz z5wB)vF}12b=SZvY^KeyiL~JJW-*78-odpN@6!B*Yj2@ulQi^XhPp6rx#ypoxM}|d{ z*130ToqCn^%r%yQiEKpR<)APLqG4n?+aXs^rb`~#(7)%gnWt^O;G?~c-WCvXx^Wmg z^3N*P<={Zm3XC{$Q=(gcWj2Pj4%x5nW*3grBbQR2;ozsGZQR4nD$B6_YL|7m%gxh% z-q2s{^vj^->uJ}0ndq>UA*qTXmQ1$wL+TVF_|)Jvr}_ALzww35G6D@M#rAU9lv3wh zyGdk2G>O`%=d%e%MfKd%$RP)|whx^Zh%eMzvBtIIyWLv|GqT&8?S`8(p<%Y|pLfZN z;&G|S!Uyd-N$5R^o2!Gz>P$2#+%FAKHU@v`8l_yU*{BF5i%tx-Bx8mCT92s)>k5+i z)uj=sfAbU>p@DfK)A-1dUV(F?aAxMs?hQ$TF6QfslXG$PM<3o8UzYS6qpqHut(=Mq zm~6a3^xBPZm-YCeLRY$B3aSAgT2A}P59%Y7Sly7RObhVjKs(>F*h?MLFqfQvnpE zJH1Va@9rCSeFGNiJS51xFzUCTLDz5~FF_Chr^^QXZB0LJT455B}zDQa8r8cC4v8f!M+ za@!3@sccFa6{)2;U8sI;+WZglW{Wa7N_S!X5wajfc^DG)g|NYDqQ?6{|1K zh@y%^lrK&_&|@IIAe0XyHAp%Yjec@b*2;%GF+-k&KcxxtoKG6zYu_IXmGy5wUP=y>m2paa@n-)26|sMGI}ddb&Ph!SLG^@n4#(W^ zSh20pikW74xe~SZ5T^NtxnZr!eCq`%9E}y75&r8Y&UZSqcR{G?t#Oe&lX(suhJ|R= z+MJ&^Y%-*C!rm6zh2JHm*v%mZyJ-TpHRGW}$i_(=g=hp} z$XzCk_M+N8nlCrms7CUfz4;`ws!!WuVL^?RGs3JhGmxv<+w)aCwCk9w+Uit1&QwU# z^>sXI!T0rxG6Q4n9OkLUvs6q256aJ7sso*BzV<9zsjQLmHa-tpG|fh~t%tz%ykMlt0? z>SMjH(^(&(io5{*bxPgK3F>nSN*n;V&IE?kqFR=ZPf zT5J5l({o3r*Jft!f^kaRTFrL}lxMH0>5GuicQZ}eoqi6;Z!ZsNO&W9R z++tBszc_t_`7O(vz1u}wbaSc^9URZxOpGjWngz#kYP1X{K4#ovS3ED?uCG%KiUi+m z?_L_b*P!0VXQ(QzjojsICe{6@roTiyqV+=d;AC;CFuj>3LO=YNmaJn<7?;+Jn=nmZ zU{>7IJ-)&hV=UCI{JYgjSuV^-@xkUUkCo{@P z^rr!rZ5t^j*}Ze2a5e(H#yzseEimag(~B9-`; z1y-M){52P- ze2~N9Fg6&w*tgTFc4_V1!puZ2XDaU#`Z53Z>kqBsXA8MueNneCaQFVZ_mjdmsJk#tj^P1CiTMTzC%Nw1UoAvY-%&G~0p}V(0lf;$;Msbr{Qu zZ15)x^zYCL5O-j>HM}b?7apN6=lQGYvGvdy$M;PWR%AoOh2(5nK&>4&vz?tr&aKJ{ z8{h3#@8_0oeGACNsW`B6k@@}W`MU(DD){LJf8%7H*Fy62g1Y{`BPq@mwBHVX~W`F(wFFCX(nu*sBBuBNgrONz0k#Zi3wAz8H4 z!(emV9MSK~C{uA}a&ha$*o-69YO?!Wahk<+4Du$q>=*v1kJ_odHOqj>}-EHG;(QKj()AQzx-J#X}wqqJ+ZxdrL z5PJCgG5=1yOI-oI-SK53_|MttH#oa^8#zvkr>5!Gyl4e*AL$`}pPKMn`P7ta2r)#7 z6ZGWc@jqL)D&Ri^$0Y;ZXjcx*xr6Y{fKS)sA)05N0O7CV-J}dV7%pNE>=T? zs&jB6N<-$C@Yp-_?HE-uy)Ef=Hi-`NC%ou=NswH|L2@BXzw-8Nh)%2#0)au@op|h< z#St^UCF8S^r(80QCuD0W@%NR=rd<8qX*Kj?E^D(>VrjKXGAKXZ5h|xfSx?n3vc5bp zJ~j+|NJ{^nu;O?YZ zFaJ>6tGjjYWarT-;(h;7fiPFr{Pztzfxv5wm`Drm`}(uOA2Em24DTyza@B={uCx7n zj{gUqJvYs9B+B;u7y}V&+^^esfE&~cTh}O?4ICijjIsC<%+wUXPb*7^2p_twn6Fhi zDokJVq=G9E^Y+2WOamw;0!~eLC4Il1hCA(6PO_VqQE%lq>5<^(G*3vI(r%YDGBo&m z7%sDFP)&nt;l|gjnBRh^-&X=!fqth4!L>zmYj+aDt0;yvbeL5C;j2Gid_hzg=-%*gG z-|JpFJz(sSr52np2ki{4v^9+D&A%W2e<0U+Hoa?WBxSW;&OYW23G39HL^37hPW&#E z*3D1EWo6Qo;Op~%ni|jqObR<+p2N7&mwfCsh0fQurymy@2YMD}9-nU^ZezdB{cs@{wLoG0#D72!B=bvI68|b z7mxqZ-eX*n%1~<_a8@he)M~||txKIl9IQNBw5D4|q4w(ED}LqQ-t8^}&hSYzB>(dA z2KYX#&+!N%ERELj;>>+twFbQK*^fb-%5}m5_^M-61n)GBMk2;lnNX;1fX>u>OM(}C zEnbw(&kg&qsWn?NTvZX|@_#>cM8j)a_pRC|3t;C2lv*q1P#%NWj7Kjg;Q1fr=Ab5) ze%@y3(lT%6bUVplnnh2fyS_!^>4@Eip5a3zzo8)eyD^Y_T?}qqK)N9A=M7?r3nLx8 zT;f>iYv^-in9_l_iS4j_++Rg9KC6fktB^w1l)y8Q$V-l~92$Qnsdw&PUWOvPLYfaX zB;yEs7I@&ktR+1J4`sS}#^x0#MVzQWq63PQ8-Wdtavb zo>(jd3<;m#;l8pockBP#&(m*eT&ySW(-BCg?`(LDQbINxk8ra}8=lDGLlHt-0w>1W z!*K2o73sy*dNnl7H?EVvY8E9y7L@6WSyPN{%AF@ucvj7my4y6CR?B8N@@Y`L{Yh%+9F-iCr){=@uC)i1p2F48+vs4t(nPPUTdKzD2k<7A;W8MR8LZ_Q^hZ}hU{ z58lh+{;Y7oKRvcljXgfM^Xz`<^1YEXLk~4D(=_hz4<4ZY)OfX zO2Nf2;g+i9{a>Xwyc)Wn%G|&SBKeOrFn#PR8bHM9MB9eo_-7%51|b|(hBN^H>iKD< zq(>d6149xb@#As>Xt$ShV)W+aV^7X~PS%uByF;FcrNJ=aG%~tr5)VF!mJTBYSv@CO zg5ci)c3JR@W5jQf`>6BEr>KMCBq>x&$%b43BJFz%uiHgweK8I58bCfX90;Mc+9Hw$T~S(cQ(9r6uSB zIE|@_$mcuD)^aQp3f;%{&u?5VP73f|c+o9%=~` zy(va|{289jikJ%*E^E;#yB8+mBQc~2Ve4$gA>VVMqD8OPPfBu-rUezCtAZXmIQBFh zB)w^uRu?R1!*icuXTHMv+_yw65M5f*u_wI<+urJ?5kK#=oAvP;5XR?7iut0mzO#*q zuy~5z4pwir93wOHKdCBM^b07&9G=BXfwK}GEAHcS?W^wx0Ccs`lM@z3KDt=Y0w@j3 zjW1Qr12X(->Mo2upH^jqeh>%UQTXR4wnqKZ8X*qyS%l%Ta!!qQ;AET-L-aU7kH)q~ z1_@F`7GIVxXf`$HoTimg1!79ZwiSN&ytE{Wcb}sBJIW%4U98_mh2VH2P^0&oUwb{B zb|oAUdft+eQ?1ece2Wiyh-fLqx=^z6HF;yu=2z}v2#3D1{_wmIecmCZv<2%w+p`XD{OO? z-Z7^FjSivN*>L4IS}B75RF_;b9N0nLv{KrRj&n6bab+TT^V>DXK`6=1zx&T^s_7^%hbb1^v2U<;&<0`7H#S zdtY-IO6{rGo=UW9a%y6U-?dO%@&{=VTlReNNW%sAST{l?TKIv3MMKv?) zZBybvq%Q8P`d7FyAMRT-gnQ1<=qnec!%*LDL3vxxpkX@J@*t!~%C?9_jTcqxao7qB zZFIh|$bmjrypV6Z(!Iz4>J!m9BD^MG2EIL8ASqclKNeo*xEVdm&=8nYbTv&#h@s;E zCuwRzgp`*SCB8+D7&Tg4*u~`M1)d|+C<1r>URX&Yi7I}y+ek*5(*8X~%2Z}^+*zg&1@vv71Yz&DE}(+jzJlz~2dsR(PV%ue>4 z^uTmAc=8Fl+Z30!P1&`gS+%I1S3G5t5%_6hlIt^IUBYaAtrOH@)ajQp_KR$(z_H&V zs$%DVi<4S>=0-bM#C=?-xS~|f6x{6e*Apkr7cikr>#^b($ddMFwr#$Y`2YNNEW=^C zW}NyE*F=;=TJPm;=r8Ft9cIwC`@o-G+>4+NM5@`=sz_XC{S6jsAVCKU$mf&q&tH7c zn{*ULia6PC?fORvT$6( zdCk>=4Z6p01>(tCC^zeCMP_I^P00uGNhKVgs8}3?1PjtW+al$&%w$0zQI#3kFFypJ z+F-Nte9QOz3y}#AkH%6(eUFqjj)=SfZv#`+QnKiZp_8(4Jel~hO&K4=mx2PKY$;4d zj#CB#@q1Fv=hRG&g2kiCOHd6{^#sN4;Lz7}T=_da&~RQd4GEQtt>}&~ZL(g_r(PB9?nkBx43GgrHzYV3Uv#+}$I`}w&Hw0y93T0` z`6#$_HfNKJ8h?)&w^o#h!0rE{qdiI{@r1V8`_)jQNnbd$sAR;zs++^A0yol<0x+HN zp!AQP4EcyzlZ|c3T6w*&*?806tPMKByIyD<(Ma%2?G_~@O@i%=Cy0Xr3d3+WHs3?? zvBc7AEIK4+fG^ldw>Hc5F+3;;lsfp0bFcFQA>eg|hK+o)LXM>ur8c*IA7x0jOph^m z3A>}7JUwv|_Ba|z^%UMM*NIML>Mfg(M2tqZwD?YpTEVK2yOk~28xwockFS;xQzxk17yX}U?#?saRe|`AE>=;tfF5<33>9h*^ zIEL^XaZwX+0+#1uUu{upd$Rzg7QU;7+K;kDbwwQx%{ARWS_tg)4;ax$~kW_!d_xgxi^q2lR9HPQK=t}56z$Td~NU6xR*lc-j6ZcMZg z;EpT+Z+3K!w>e>$VkffW1ufkYu4q21m|zEc{eRGP-hmVZs-4h^Ls5c%wlaPjV!L6B zNhOWvw*4xjd4{o8)~^Wf+fJ#clRo;J~ynhFi12BaL*e=V715*r!vNv%e8nW zCTR_RMs9w_scf{~d~k!6M>os?l!C7NDaM!4yF2i6<;Dk^XqZU7Ogn7d~BHi@mf`Zu^Vj8vAw(g zL7&w9#UjjP_CmgXW;EL&zRK6kbF}yG%&2#K6%Lu;{0Hhp-UC{d!1><-KeD3^y%|uJ zNhqn=gojZ=kG~Ss_EJL6ZO#8kX@~|Hbjc6o_wP22>^2INHRb>9x^L551iCvw9}eX@ zK|Q?3qTgH1H<})dBo+&Zz<*s{CJQ(PvR3-;ew!p|dn7=O6KC*H<>l#nsO?P7N$i&v zpVh^%ISVB7MaypNI|JyuGZDc33zrrz zYe@pm`0Uv|2cj#Did}V`dgtm3mO5J1_scL01T2?{q|KLjIs%o#>TA#UuuyB14A&-o z5MlKp8Y14Qep&Zh0)5HD25D>){^7JDqgYcL!M!tQ{S|ZuCC%d>XU?!Qup9+2i&#D4 z=YpKyyh(Lm{?Z@f1-^K0G}-15%XB>M7kQG4f(4Pb6o#;KI|t|oAu zp~7nxGD%U&s@wKfR>X(6g0P#~js<%kea|*1&4F@_*`uMCdw5HAd_gT>G9;Y|we{Et zVrlFNfXnN>DLdUjW7UN`T)eapm1{$vKNrLvqfvpE17roVQljLoWsD8?- z8?it(i2sAkJ8wfH?;zStnzk!faA!r@O2kJ%FFxtS)!?rCb(}izB)ST-@@;b8oX!k> zItiL)r@p51uzqoPUlSsN=>ZO;qLz!313{eNFSWPW#mkykhf(9G-SMA)PE3^`L?%2+{?ls1%Xj z73m!jsUoi+Rq0@WK-8ls(xga{4pO8kMWmw$NI%pFNRbvogb1ORa904&IbXTsj&bjO z-|_u;_aBL4@9eqPnrqHyKF?e`ME``n`SC9`J8#M^S_zXiXvWWzae;`F25&QKRFR1( zgA&f~CpZ?;I1d{4DYuH+Kzcg2b!Ufm$7Cy8Q58V5A4!&u6IX$4XW$dIAn(#a z(sq}1hrh-kHYHeT>)#0~>=^s4eGVMQ2`+lS9(>WiFuPYMW@;TLSz$MbUP#{CE^e2< zZ!z1Yfc+GzR|ZYQ06m9|qz`uW2tXfW+pn?1#Ar}=0$XyS20>>@yL;oYm0o5`)k<+G z3fFgb@>X{8?jGG(PM=g)N?J8PCB`J8S*#F=Sg;rKy%|**&?M zlh?345g~MIZI`?zhO0pQDlHef>pCJwBnfYeK})@6#q5wq6eSIT2kJ!!17;WQ04Ymy zLtQ)JduCT5UOd?VLyrjLwl#kY`$;t+nH>=1K)etP1j?%86Ahw*9!tDrqZPLXGkeeP`I&&sekyzMpsGI6%ecP>0C<3B^KsVL{bZNF(vh zPQ>Yz*U!>_c5UhHnW=%h=IxN#e`d}zi8d|`gMmo27S4Y0mcRPe&b20Mr0@b>bC-xM zypeh4u5~0BR-lL>HtT>{?ce-WtK2@WIYQ9c6Rd*9K>#LNVfB^Z`!_yJIOds^g#uXd zc9msnl+!WYLGSJ@y`a;;2^fwGFae@tfq$Y|sEL&|L}^oFDLPfpl|u5pOZ=X{Qe35{ z{_NJV5rZDn(y&vIf!Kpk?j|wkkN1!wY%y#U)_UwQZ=&aBdNf|PP zucc^51jekToDbZ|EUVyu%z<$|{`L5tGy1SMLipy(O854V)#P*3kZYKYAT1h$yJztOhF(pXBrY*{h|3(u;*QE`qm%NPZ#8f84!TgEN(&YM5) z-5dJ8Bl-S^=dQ(wn1$RLJl=i>R*+WbM~Hw&1^{}ei~g`CIEjQ-!NNV%87jpXndP#4q*7Z$f$4#h6gD!p_$s}%nFqq0*4LxqLdZe23JBXuqstn}Am zx_Ol!OLw5IFy#lJN=iuxg*0S|+UhV-8tB}^LsxF*fkHY$APo)}7ra3P&ZSWJ!cd1G zW^k|hYtUsb3E?)&cz60E5XSg8RaEO!NaMx|0k|6(gfVa%JdZk&A6JIVWqoteeeTZV zEvje=AFY57uGan8srGk|vXZyG+4M9$5opJIeVC&+k>FAj!7HkYbwrS z&L^*@w5IQg$x-~UU56e2>YU-0iP+f$3n^>x*cTN5=3~pDJWV8f#k6GNNJ4bgI!tu2 z0KZbL2I&OOo`6M4xSH@>9xHorpN|=WVxB(>duSukA_yjwSya->)2AM4q=p|LA=mnOOJCHtCF{q)q=WO#j!Z7S zIsxpSI9*NM(c3FBDnCP0QzK#=tLo>0_hfKSw5%1wWe zXig#JW}4x2L)Cg2qSaU?EK?m!->n~|2p%Y^tO%=q4uT*(6@?Uzbcb{BTP2_LL7e-Y z6mA@0VkUpI(UQgA=t+&yk((!v1Zh>#LLAN&bJrkUA6({^sN=#w*%!g9rwZAc8~`TL zjDfTn3eEY_dgi1C9OXi!g7TZH!2{e6KX(#bmX!VVv(wd+1Fy_^0GZ%Lq2zd6gG2Bv z5Hk0rIRJF5{@}}mrWJ6hjO@ys5I<0rHhuTaOiSDL}(Ysd(vy+YSmqiV+a+Q%HIUP(W}n?v5AV8D>3Td9WgZs80e`V?|k<9~@&2qv-6T=lD zH{#*Yk}jJRrD*{8Fcj`4OAnD96D-1AhzaGVe6G9|IcaZ9wP!20BGLZ94 zQp+ju&AQ$aKf->CqeflzSO+NFnELS1!TFigsAq~$7IqHWf}}^NQ7iHi`@VPL_xbKn zC{nzd4#f*bnsI++fq5FBYM2uax|9=ydgh2FoA|*EMWG+r@G4vNMc9BR|DaVQ!Uxh{ z=OP)`ZsOl=Rgf0z5e)0_7e^^VU5bFxSJ9RFba+A1KC=7M`@r>E$&DS31X-#qI#g){ z6rc1&1Dra+bK2?)fLH&~<(wH%HFCSrb7W}&fHf7zYCxG-PB#cbl{tJBiMc_peCKa8 z>XAq@;3uQlR2Q~1I@B@<8hxgHN)zDA9W_@bzR^Qi8e*e#9V7nnuOeXImPf^nyZ2iA%0Za$?&4w*3h$sMEl zirHtugf0^@x}QP~H2W=9=BSMo*n}7jnDrPr_$?C^XqSv+&(`oqIe1!S7eGM_2h0Dd zJ|`rcNm?3Cp!^^2Qv#<&vT;LBVW87ZGddaGO9gdZJUCb59w)>BmaPP^aQrO$9&?Bo z1f4ruNhuHlIUMcqB3CvC`1;b;%P633n6TXF++Pa79|+(X2Y~W&lb?O>^Ernhs<&xF z5u-n)X;Gz7mSha7(8@r21SG&haqAQ}^!5`e(3G6w8g*NtR^}GzR{~hLAdpAQG-TB7-bwZLOkpR3Qi8$NSac zd1shW-&Y6&Wwl+8cG-Qn=|ixyR*+LP(p&S2g*-#5IY^dzNiHCaxSaD=6~ z!%QttoSkNYaWRI%MRA_Mxx$yUe$xm`-Y|+4m|Gy2t|0rGD-Cn7+&A|( zg8Z2-ATh`k!tm<=_k{PkN$v?_c09!fY< z2P6h>bF}CC+%unE8(wtv4{4)8Q$A_MmarWC^bAB5hD%EurF+`XA%`M;DeB`el;=M0 z>j;Yyc8I1%Avj=Psa2Y4pHibdIba55-=?p~=LvMq#~c;NZ;d2Q$?dGsni;{Y)Dk8y z)#J)$LZJBKP{H9l=o#%8CFPW_p-S8JF~FA(p*bn_VjoIAgMPjcKUF3xlu!=ZJA>r{ z>e_|<@E-3L!FR}FX090-vIwvteZD13+z+;CFw1LsZ>gtLEZjM-Xd#6Y#MXyL}-Kx3VQ1>2lM1{^ozv|)3tIxAopOvtL z0$ZkN>U8;oC$xi?s!gQzGya;%D+{ma5HlgJr>~WD7PWVq`{-a^=YD9tx%WJfz|RA* zkX>SjMLs6UHaFhv2Z0`HRGtm=4EnDlK$x{3^b3!8e6Kq$i^=WN{d}IhG>J0FkW-p; zm!xE-EeG9Wyl;%p1b7xQix_2Zbl_zRaWWRh>1&xzGy>h4#m!c0rieH=>B3Zs==XKM3>@}BCh zy~TTmzP^^)mXEuLIPvFvt1>!`2YitWMz+Ui-1V^v94v|8R1Hy^dG>wz7^6*ufBkqs zjw00C%L4;mOf$hmPKpFNYLIy1NM`kx;#25LeWQt&y|C+$D&9(X5IO5>g+UPdX1EpQ zIK$z@PQ zza!`0aW+}$1S5)2l>TJhwQgMi!nOf!CKn2n*++V&m(S;o%dD_aie4sHCbGZJkn=?R zm!VMI6m=fXg3AnXak<-A^R*INS^AJEw=X1b8Q)}blov3!PbCc7ZChsl>5;y)+lL-m zV243639`g8it|p&YszXagGg=QZHl2w6JHDp)&W%dRE69`Lo{#6=RiBcNO%{2EJ&1l;OQ5Q*8CV+ipL!>^mgp z?OzVr($_DlF%E2?OByE8H`0U!`)Kca_P$j^Fhuy`iq7zQ_WVZJ?YhNd-C<0WAxDN zZX(c&2|z(0A>I>`*{pm4959V+0LAubEyg@T{^P3sWzw{6bfD6ZfT*+Sr(p-vD=bue zuT!!5DX;Y~`P!;MCi9-5GrP4l&qq~R=t2gEFg0s3DOM3Uv%U{HO8SZn$({sB(T!<~ zp0(|ltJrS7OgQSgD6WWPlIJP_yE62Ubju;=UnRPqiIazm>hq(nLet|m?G}1He+y%T z*_?LO07JzOKO$-zE$fbW?-Wem62I{M{#1kQN&_NpQTxo$+RCNfx)!^w?HVM`k7&1> zT;TO<8j<1l=qbNJapAu1XgXEQK+UnEikl{7yLEQRG5Z#k--anKbDX_$T4*Z3#X%OH zmR=4T=dvbAH3G_df5f6d7X=3_KIfz|H?)j@J0q0i@Sm4hodBohn);YHAu#S9n?{Zq zBe`QuZ&Ho0KksGPei;OBMp5&eo`Xu?i<81FEd~8EJ6;NVB}6@wDvhbjJ+j+LXvLON z+&ejEmN+b?H8{i5evFbbHQ@Yk;CP85zH};`{O+TPB>{N3P1_7t*O*vWOC5mfTl2c= z5N{%`Wsg+N{T8!vfQZN&o~o<=p9gYwx2xRaWgTk@hp$YYvN}sB$9ZWzBn!oC(5azN zmNUJ+gqHT4l}kIVJoIM18_4hov%L0A?0*_tjKXY4+p~<4_KJtrUcyYV33Y!CZf*A# zXX^MP8SR(a2w)8^mS|}>#M$-!}CTkvgJH_=UBpV z=`E9Qt3mKo7}dwCe)33JTP4Ter8!QYVJlMc+qK01+-BnxM#ywue7U~9EbQ}ZIr)v< zF3L?37`Crt+{y5)%fNj}3&V9(2+5&187 z!CW)66t@P(GYhcQ((<#=Wf&)>1P+eN5LtIWAs4E3i&|z1RueGH?c4qcrs|@WY0Vfx zMMAY6uDUzm{Dx|ai(vxR{1n52Hrk`afpeR~lMoZzf>~NZyi!!k?APGM>QN#>A)<@w z=qgL|s<9RC!_1 z!^*t9I?db4r^i3;xi^3E#UMTEc0SUBItgRU{Za{w{xwmZ&7SXRinjs~>-0s>a;eyOY0 zD?6>P-aDy;{X_8q{PCTgp*_2#2xRAJP&JEy#!1h8#SY+F4hpW*lx`egGPkR1j+mqE zm}-41P1gZV{%=;0yV>Ss=}py^IDL+)#h}!wMmyxJOmoQlVu1)tf>Xi)IN4gf6esU7 zx>(~)5WF4oe#m>%tlejSdGrwYU5BTaATE8sveRg1X7tq8Kl9*Wt@wM`)RlWK%*ri_ zP?S0(`N_atgd3hV@k!QoxZs~_T8mwvEXCE7DweL9D7?EoP)?ku)giB{P&i5}-Aj#x z)l0ddfGtvVcknhBbB57F6ikDNzB@wIbG7YFRRDI3G;mEB#+M_Pw(i zzLfYpMM;>To|x+f6U6pdS{B<_MohI*qnaD0Bj8-@Qg9NuOC#-M0#r%}#JmcdxOk%B z5a3_HKOFS_=en5ttJFG3R0zwHF(+mBVtfaf7ATYgG9ZX`MH{5PvqR%-)gX;7L&(U9 zdB67f*P9lAr$%|r?L*K*2H`_b|FkGdksi9%2%Y%<8q2gfD)0G@Rc*!`6h{Si)h|~S zarJYXQ?m8E3HPhieT?I9u5H})n|kyR;9hkC^#IlVi`l3hH4K^@x{^wbY9*B^Zq?Uj zN`GXm3p3$BBrhV=Y+^m=tz+nfw|QI>5%q*T0pau30fYH-8_TUK=v};Lz=wiv`4-cj zHO842&Nqch4@#wRdAL^R(eEWThLxOPo9 zYWtUErRR2UkCU+A^FP^7+AwZN{`kKpR?d+Zoew|;tJkRj-uS1qy_||@?!%Q z9t+JQkzPPGF3e`>T&R?V@xpJd`68IgivFAW2GkbI*$L}%sUedk%T4yRA>ksa@?N8R ziY>wITOFREjCZXKIVxud#11O&)lqw4#B|jt0ylf@Z#aItU@rp`f!o2x*ue5zKHpiP zev03p#AtdbY8kMV7EAh4|Y2&TuF`6s{3O5_=9;z?T9=h*u_fk3Wn8U^$}j zzaWey2L)K1KJ`{BN?kE(cky6ajmeb@FM{?i_O(>wooArig2Zs!2`N{l^992~%?q(t z{7j0A1pjp=4!-Xdyd}XK5wOA54KO8ZVmRc+LIDW918v6aNMvG6AbDEPw-kj@+lV3+ z06AWD>W*;hkORKuU*dqJ?~8hV3ZYLx{ztz2SFGODI4X%)0t*>I+iypo1rZQ|0kG&;Cq0a-hYC7J z>fRyAJTf#5%n^np1j0g=87Rb|e?(Zg``leX``{vo`lFLjucy z;FHUIn6nOv&hRHNo%T60t^`Rexf`i!I3fbpW*82i<2Sy&Mc-!L%}Eu`5taYP3a3z~>LtCZ-E2)u zjdSIE^g6)!htL4{r5WxD29?icVigAZHsi(_$H!w-_sLaW5~WZ}%ozuLZhu-zqRIi! zE6)LA4g<~SxrO@c087UR$BO%<7GMfilO?RS2(98cyseP^;Eq{P&Ri|tukr^cdcm`^ zJ7dA8HMj>euUp%-?T^JCA>5gC&FM44T}(IySQ`1%)rvbvrL)e~G6nu)TVZQe6A~;oa?NWPht@@nkBH0Npr8Z^?AnWAm4fJ!U_De zknf%OEo9HQ=eMp5Ec8KpF(bu~Wr#S9dvo4El*OFZzUj;7HESVSTigDpKP0{;u=CJ5 z8iAdHPRE%Qwgh#R)|ED;8$Od_dFPVL88~$Qmq!dyp<+OR4(RPAAWrS790$L@WNLBE zz|&<;}ai#|LGyE+o)CV^d_NdK0EyuMgFlz<>iKr%3ICd{SuS5B-BMDw6c%5dfASet+sFY>l4HBW+lJK-aoFL1z6bld?`%WI+%g?{)Le0fJ!JF{) zOY^O-AwgXJ=%9gqzgk0C(EV(*%-mqysBFKsYFk?*`c^6vl)<1Kf{jW4vDSufDqC~% zgZ|TFmUw1%CIS0z8DLO@gClYFzjHD8Rre&e>d{L~v3{~cY0rdkIEm>Zi!V$W|Aq3O`0 z^Ksrwz1~(eKH5x0i}Uj{IH!BVl#fN9W|^qlcvzH^he4f*wSo62jY|1;gQ-UH(IJmc zf>z{`*n{?$%u1wXd=3z_A|2lQg^XA=-IYTYqu-^jW*8Q~tHCJX5#9b{sq5?cYx<8& zLpeU6E*JO(aUJ`IM3urSXd-0F84j%Pdf^_y`&mR66>v2uPtd)4JLeDL8 ztx@ts#$}};`ib8IF$Ol<2E9eQX*Wge$&8t`B;MTr(#!)fCjiPybV=S&lLJQmNMoT9 zxu6u3VLu+2$D|+l6Z8lD$dY5x2JywMEh)S%Ctjg9h@_2{hOaCqx{Rj^9al zPmpvTE5IX^EX>gMgG8^PmO3U0MS^W%qgf!n+Nw8zDMEM~b0M5_Oa#B1fuZbrm(|P0 zeEKBVc0|$X-Ber0Ku#lkGcs?0AsA^PNJ}NQns_W&^b#@L_WbxAwOzry&vckDe`JE+ zs7e1>$KzUj%vRb>qlpj#lrOCAv5lyOa=is_F!SC{=4HRy zLQnTd<2&(zRl03*rcL9=pTmM2MeWn&e`vnWsVvB|%Q?4s4HIb8qn~p-^;j{#T=KhS z)SAgPR`3#y{!$)TfvZ+@CV3KQBr^cYV`za9x$^z{xjEgOxSd=Lz z>4+!oWu;>nWJL(xJ+$WX=_Kz2HzWM>#j%;!@tqQTCK3y4S*sEjf{UxRl9CL*)nX$S zK8fW|`WIR)Yi^zI*sTi<{RfXl9_Q7lf8_Ncsc*6cWULU1$xEUD%O0&X4_s64Ov!q%p>`f*rL0i>t`I>y~@pb-XL+e%6P9_o>HNk9+l(9HV@s;pF{8R>OzAx8k>8j}u`u{G01cR;d}Q7K3GkpPlV}MB;^{)un6ir@RMduKV4ItuM0M zLFn2$7NsI*cEtNK0z#&yypRjhvDxEHGlXdm{dv#44L{p~-sni;2)5*Q30v#C)BS42 zxZUsG9u-%=?-@C|PNd5p$}-VNC^Uf|&h?#;IklzYov7qudODh&L5P62t6ejz!)ssC9%wrXoYGCYpcy z{_kqn!oH`Ej3s`UQsM#avgb|`jH9~zoA`zldw0Y~9f!Cb|6yXU9i5!nnOHZ6uM}3= z4K$$&jP6S|AsQ<*NiS1i#tsdmDOEw|^KNWPxlWnSD0euW8dfA_{9uCFciO^&_Q zsie=&=n}Ucv2FRf?4?X@w#8e;p?2e&`t5%5mlEnKi{2T&mSx`p#PF3vQT_*6+PI8- z-G|ouAdnSuq(V_q8i{))w(&(UqUsXjFXbSk+q-%5wV|6sE{?&T0B+hk9uVVg=i@KkN+D-j>y;s|KX*MOZ zcCWJ_DCv{TIN9B&S#NV&%Ln#C4t@|&HuP*ZgulueoT ztDeQ0;YUhK_HE#gSS>)tR|q$DV?oE{gJ)A41!&mWCA^|cs2o||rO+b$Q6q{kW?}ZS zF2Coh8`U}<`6~LfU-287NZ|KdTZr>pnxxz92Y(Qn)Ox*%j1_`maeoshW-`S zrJM!5-eQrT4ia>O!-b^W3lUK6FL<@GG8IvV9z}m=vetGF^2;mCKrvk zZcKZ%`j2;8-Q3o}ZTSt3D-}B$-kj}>tDx%}kEl)kaAx}W-HV&l4b5v513dmB<;D?^ zh7&Chbe|k5{o^WV_;DOcI$BJ_>h1VPG;cz(P+oQM#9&bdK1ezxcSxQHi{CgC&qnK5 zTA62(BN3Zj4}Nc{j_+)tk@*wPa5QFbwT2M$aW;1J)9S0rW3OHjf)=FV$Oo8ZSTD!8~xMz0pK|$EuZ%!ku^IFrX-)$~KBNWu zZcnZG-^Pnrjtn(DlB_OO1A3kk)ffea{YMof03ba;HLR#vAA z<>JmddX3)yK3^nk`TiJu{xJYUJebDL<|l zhb6RBxq08Hs>(kWtUDa90eWc-D5~|Yokc%&9uHES|0%NRV!Wxpa^-PU%+<~myHqo* zvyU1~nHKCec;%uiKlM=PsJI`Sa$^fa(akzx&3WfKcT<*DW#-lXJkdx7y13*Tz3lG? z0GANRIL2R}4rPh1)SJ}QA4MZZAjn4;HXR4?WY8~n!zDeEtmoCWr z-P@&#oV+9MsXQatvaCckbm;sLZZfNv^X0^FJT)DXgRs3^{EL({e_?j$T9-=DgiZ&~hUCmx~xjlvccht~}x4 zT{T$~uI}yI#~)|?I<9MwwCj)M#b8HMWH4|ji&!|X{9>q`m~LISF3EF_$)Lj?qoeJu zTEP}NZBnzCA&TUx`M0m%oA};AVm%qSz~_ef2}%x{e}DWRG8z{(U(h#aKwt(T6U})_ zjvLGIO`qKZ263pU4NjsLb8wU_*|y@*t32QY=q=6sYEQYpLTr=oF^ETmK7Kl|q)q@QS6 zoG)A`XyBpC+0?rSAm{iI<_tP06zoCJ`28s9iSpm1gb;}1U|WUYYUxc_Ov`|GW~L~| z5hj|Z%V4!bF+h@P{#U?0?oD%DV+O_APpAPFzqAe)q}X4O-RD54*Sd@oedrK=3v*(lL=k9{XJ@ z`v`bL+`-4AvER@A`{TbyW8XLa?F|233;&J`|JQ+0%$-fd22a|Q0-?kX1MYs~%Krb5 gI#~W^{;{zK!z}su+%wB$AQ`Bss&}>M%B_e03t~LWn*aa+ literal 0 HcmV?d00001 diff --git a/assets/textures/power_tile/ghost_tile.png.import b/assets/textures/power_tile/ghost_tile.png.import new file mode 100644 index 0000000..a67314b --- /dev/null +++ b/assets/textures/power_tile/ghost_tile.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dv0datyodktqu" +path.s3tc="res://.godot/imported/ghost_tile.png-472e4da46a96c33de653b9d0ab2de179.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/textures/power_tile/ghost_tile.png" +dest_files=["res://.godot/imported/ghost_tile.png-472e4da46a96c33de653b9d0ab2de179.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/scenes/main.tscn b/scenes/main.tscn index c35314c..1d47465 100644 --- a/scenes/main.tscn +++ b/scenes/main.tscn @@ -29,6 +29,7 @@ [ext_resource type="Texture2D" uid="uid://cupfmb5m15kmf" path="res://assets/graphics/touch_control/wall.png" id="27_yq6so"] [ext_resource type="Texture2D" uid="uid://3up2su2e0lfa" path="res://assets/graphics/touch_control/freeze_area.png" id="28_fv21b"] [ext_resource type="Texture2D" uid="uid://ckhdyxnho6sjp" path="res://assets/graphics/touch_control/spawn_tile.png" id="28_j8jky"] +[ext_resource type="Texture2D" uid="uid://b2vhatfmufn3d" path="res://assets/graphics/touch_control/ghost.png" id="33_5q0nq"] [ext_resource type="Script" uid="uid://86ikh0wuqk7v" path="res://scripts/ui/powerup_inventory_ui.gd" id="powerup_ui_script"] [ext_resource type="Script" uid="uid://b54tfa0n6kogi" path="res://scripts/managers/touch_controls.gd" id="touch_manager"] [ext_resource type="Script" uid="uid://djiml4sh61dc1" path="res://scripts/ui/virtual_joystick.gd" id="virtual_joystick"] @@ -9881,7 +9882,7 @@ expand_icon = true layout_mode = 2 size_flags_horizontal = 3 focus_mode = 0 -icon = ExtResource("27_dgi5k") +icon = ExtResource("33_5q0nq") flat = true icon_alignment = 1 expand_icon = true diff --git a/scenes/player.gd b/scenes/player.gd index 4bb00e4..9c9c8ba 100644 --- a/scenes/player.gd +++ b/scenes/player.gd @@ -613,11 +613,20 @@ func _apply_tint_recursive(node: Node, color: Color): # If color is WHITE (reset), clear the overlay if color == Color.WHITE: node.material_overlay = null + node.transparency = 0.0 # Reset else: # If color is Blue (frozen), make it semi-transparent overlay mat.albedo_color = color - mat.albedo_color.a = 0.5 # Semi-transparent - mat.transparency = BaseMaterial3D.TRANSPARENCY_ALPHA + + # Special Ghost Effect (Invisible Mode) + if color.a < 1.0: + mat.transparency = BaseMaterial3D.TRANSPARENCY_ALPHA + node.transparency = 0.5 # Make base mesh transparent too if possible, depending on material + else: + # Frozen + mat.albedo_color.a = 0.5 # Semi-transparent overlay + mat.transparency = BaseMaterial3D.TRANSPARENCY_ALPHA + node.material_overlay = mat for child in node.get_children(): @@ -658,6 +667,37 @@ func apply_stagger(duration: float = 1.5): else: _apply_tint_recursive(self, Color.WHITE) # Remove tint +@rpc("any_peer", "call_local") +func apply_slow_effect(duration: float = 3.0): + # "area with blue like wall... Player who cross on that area will got slowed and freeze effect" + # Visual: Blue Tint + _apply_tint_recursive(self, Color(0.6, 0.8, 1.0)) # Icy Blue + + # Logic: Slow Movement speed + if movement_manager: + # Use 0.2 multipliers to match "slowed" request (20% speed) + movement_manager.set_speed_multiplier(0.2) + + print("Player %s is slowed for %.1f seconds" % [name, duration]) + + # Restore after duration + # Note: If they stand in the zone, this will be re-applied constantly, resetting the visual + await get_tree().create_timer(duration).timeout + + # Only restore if not re-applied recently (simple check: if still tinted?) + # A better way is managing a "slow_timer" but for now let's just reset if timer expires. + # The persistent zone logic reapplies every frame, so we want this timer to be short + # OR we rely on the zone logic. + # The RPC call says "apply_slow_effect(0.5)", so it expires quickly. + + if movement_manager: + movement_manager.set_speed_multiplier(1.0) + + if immunity_timer > 0: + _apply_tint_recursive(self, Color(0.5, 1.0, 0.5)) + else: + _apply_tint_recursive(self, Color.WHITE) + func playerboard_is_empty() -> bool: for item in playerboard: if item != -1: diff --git a/scripts/managers/player_movement_manager.gd b/scripts/managers/player_movement_manager.gd index 4a21bb2..ccffa55 100644 --- a/scripts/managers/player_movement_manager.gd +++ b/scripts/managers/player_movement_manager.gd @@ -70,7 +70,11 @@ func simple_move_to(grid_position: Vector2i) -> bool: return false var cell_item = enhanced_gridmap.get_cell_item(Vector3i(grid_position.x, 0, grid_position.y)) - if cell_item == -1 or cell_item in enhanced_gridmap.non_walkable_items: + + # Allow passing through Walls (Item 4) if Invisible + var is_wall_passable = player.get("is_invisible") and cell_item == 4 + + if (cell_item == -1 or cell_item in enhanced_gridmap.non_walkable_items) and not is_wall_passable: return false if player.is_position_occupied(grid_position): @@ -234,7 +238,14 @@ func highlight_movement_range(): # Check basic walkability var cell_item = enhanced_gridmap.get_cell_item(Vector3i(x, 0, z)) - if cell_item == -1 or cell_item in enhanced_gridmap.non_walkable_items or player.is_position_occupied(test_pos): + + # Allow passing through Walls (Item 4) if Invisible + var is_wall_passable = player.get("is_invisible") and cell_item == 4 + + if (cell_item == -1 or cell_item in enhanced_gridmap.non_walkable_items) and not is_wall_passable: + continue + + if player.is_position_occupied(test_pos): continue # Check if there's a valid path to this cell @@ -284,8 +295,14 @@ func can_reach_cell(target_pos: Vector2i, blocked_cells: Array) -> bool: # Skip if already visited, blocked, or not valid if visited.has(next_pos) or next_pos in blocked_cells: continue - - if not enhanced_gridmap.is_position_valid(next_pos) or not enhanced_gridmap.is_cell_walkable(next_pos, 0): + + # Custom Walkable Check incorporating invisibility + var cell_item = enhanced_gridmap.get_cell_item(Vector3i(next_pos.x, 0, next_pos.y)) + var is_wall_passable = player.get("is_invisible") and cell_item == 4 + + if (not enhanced_gridmap.is_position_valid(next_pos) or \ + (cell_item in enhanced_gridmap.non_walkable_items and not is_wall_passable) or \ + cell_item == -1): continue if player.is_position_occupied(next_pos) and next_pos != target_pos: diff --git a/scripts/managers/special_tiles_manager.gd b/scripts/managers/special_tiles_manager.gd index eebeec4..07ec1eb 100644 --- a/scripts/managers/special_tiles_manager.gd +++ b/scripts/managers/special_tiles_manager.gd @@ -52,8 +52,10 @@ const INVISIBLE_DURATION = 6.0 # Active effect tracking var blocked_tiles: Array[Dictionary] = [] # {position: Vector3i, original_item: int, timer: float} var freeze_zones: Array[Dictionary] = [] # {position: Vector2i, timer: float} +var active_freeze_zones: Array = [] # Array of {center, radius, timer} var invisible_timer: float = 0.0 + # INVENTORY SYSTEM # Stores count of each power-up type. Max 1 per type as per user request? # "player can store 1 of each different power up" @@ -189,47 +191,107 @@ func _execute_faster_speed(): NotificationManager.send_message(player, "Speed Boost! (5s)", NotificationManager.MessageType.POWERUP) func _execute_area_freeze(): - # "Area Freeze... slow their speed movement for 3s" - # Reuse freeze logic but simpler duration - var center = player.current_position - # 3x3 around player - var radius = 1 - print("Player %s executing Area Freeze" % player.name) + # "area with blue like wall but with far away from the player who use it" + # "Make it like 4 floor first (offset 4) and the continue to bigger when the level... is close to max" - # Get enemies in radius + # 1. Calculate Forward Direction based on Rotation + # Rotation 0 = South (+Z), PI = North (-Z) + var rot = player.rotation.y + var forward_x = round(sin(rot)) + var forward_z = round(cos(rot)) + var forward_vec = Vector2i(forward_x, forward_z) + + # If rotation is diagonal or imprecise, normalize to cardinal + if abs(forward_x) > abs(forward_z): + forward_vec = Vector2i(sign(forward_x), 0) + else: + forward_vec = Vector2i(0, sign(forward_z)) + + # 2. Offset Center (4 tiles away) + var offset_dist = 4 + var center = player.current_position + (forward_vec * offset_dist) + + # 3. Determine Radius based on Level + # Level 1-4: Radius 1 (3x3 area) + # Level 5-8: Radius 2 (5x5 area) + var current_lvl = powerup_levels.get(SpecialEffect.AREA_FREEZE, 1) + var radius = 1 + if current_lvl >= 5: + radius = 2 # Bigger area at high levels + + print("Player %s executing Area Freeze at %s (Offset %s, Lvl %d, Rad %d)" % [player.name, center, forward_vec, current_lvl, radius]) + + # Register Zone for persistence + active_freeze_zones.append({ + "center": center, + "radius": radius, + "timer": FREEZE_SLOW_DURATION # Same duration as the visual + }) + + # Initial Check (Instant Feedback) var all_players = player.get_tree().get_nodes_in_group("Players") for p in all_players: - if p == player: continue - var dist = Vector2(p.current_position.x - center.x, p.current_position.y - center.y).length() - if dist <= 1.5: # Adjacent or on top + # Check distance (Chebyshev distance for square area) + var dx = abs(p.current_position.x - center.x) + var dy = abs(p.current_position.y - center.y) + + # If inside square radius + if dx <= radius and dy <= radius: p.rpc("apply_slow_effect", FREEZE_SLOW_DURATION) + NotificationManager.send_message(p, "Caught in Freeze Zone!", NotificationManager.MessageType.WARNING) - # Visual Feedback (Icy Floor for 3s?) + # Visual Feedback (Turn Floor Blue - Item 12 on Layer 0) if player.is_multiplayer_authority(): - for x in range(-1, 2): - for y in range(-1, 2): + # Sync Icy Floor (Layer 0) + for x in range(-radius, radius + 1): + for y in range(-radius, radius + 1): var pos = center + Vector2i(x, y) - var main = player.get_tree().get_root().get_node_or_null("Main") - if main: main.rpc("sync_grid_item", pos.x, 2, pos.y, 15) # Icy decal + if enhanced_gridmap.is_position_valid(pos): + var main = player.get_tree().get_root().get_node_or_null("Main") + # Use Item 12 (Blue Freeze Tile) on Layer 0 (Floor) + if main: main.rpc("sync_grid_item", pos.x, 0, pos.y, 12) # Cleanup visual timer (managed locally by author) get_tree().create_timer(FREEZE_SLOW_DURATION).timeout.connect(func(): - for x in range(-1, 2): - for y in range(-1, 2): + for x in range(-radius, radius + 1): + for y in range(-radius, radius + 1): var pos = center + Vector2i(x, y) - var main = player.get_tree().get_root().get_node_or_null("Main") - if main: main.rpc("sync_grid_item", pos.x, 2, pos.y, -1) + if enhanced_gridmap.is_position_valid(pos): + var main = player.get_tree().get_root().get_node_or_null("Main") + # Restore to Item 0 (Standard Floor) + if main: main.rpc("sync_grid_item", pos.x, 0, pos.y, 0) ) func _execute_block_floor(target: Node3D): # Existing logic for blocking, reused # "Wall Block" usually means block WHERE YOU ARE or FRONT? # Original code blocked target's floor. - # If target is self, blocks self's floor? Maybe defensive. - # "Have the same cooldown as Faster" -> Just logic reuse. + # User Request: "choose one between horizontal or vertical all the way to the colus or rows" + # We interpret "Choose one" as random 50/50 since there's no UI for sub-selection. + + # Check for Immunity (Invisible Mode) + if target.get("is_invisible"): + NotificationManager.send_message(target, "blocked!", NotificationManager.MessageType.POWERUP) + # We should probably notify the attacker too? + return + var center = target.current_position - var neighbors = enhanced_gridmap.get_neighbors(center, 1) - neighbors.append({"position": center}) + var is_horizontal = rng.randf() < 0.5 + var neighbors = [] + + if is_horizontal: + # Block entire Row (Fixed Z, iterate all X) + # Assuming 'center.y' corresponds to Grid Z-row + var row_z = center.y + for x in range(enhanced_gridmap.columns): + neighbors.append({"position": Vector2i(x, row_z)}) + print("Player %s activated Wall Block: HORIZONTAL ROW (Z=%d)" % [player.name, row_z]) + else: + # Block entire Column (Fixed X, iterate all Z) + var col_x = center.x + for z in range(enhanced_gridmap.rows): + neighbors.append({"position": Vector2i(col_x, z)}) + print("Player %s activated Wall Block: VERTICAL COLUMN (X=%d)" % [player.name, col_x]) for n in neighbors: var pos = n.position @@ -240,8 +302,9 @@ func _execute_block_floor(target: Node3D): if main: main.rpc("sync_grid_item", block_pos.x, block_pos.y, block_pos.z, 4) - var original_item = 0 # Assume floor - # If we have logic to save original, fine, but for now just 0 + # We don't save original item here properly in this loop if we overwrite something important, + # but for Floor 0 it's usually just ground (0) or obstacles. + # If we overwrite another Wall, it's fine. blocked_tiles.append({ "position": block_pos, "original_item": 0, @@ -250,9 +313,13 @@ func _execute_block_floor(target: Node3D): NotificationManager.send_message(target, "Wall Block Created!", NotificationManager.MessageType.POWERUP) func _execute_invisible_mode(target: Node3D): - # Existing logic kept as ID 14 placeholder target.is_invisible = true invisible_timer = INVISIBLE_DURATION + + # Visual Feedback: Ghost Mode (Low Alpha) + if target.has_method("sync_modulate"): + target.rpc("sync_modulate", Color(1.0, 1.0, 1.0, 0.4)) # 40% Opacity + NotificationManager.send_message(target, "Invisible Mode!", NotificationManager.MessageType.POWERUP) @@ -273,12 +340,12 @@ func spawn_powerups_around(center: Vector2i, force_powerups: bool = true): if rng.randf() > 0.5: continue var item_id: int - # 70% Chance for PowerUp (11-14) + # 70% Chance for Normal Tile (7-10) if rng.randf() < 0.7: - item_id = rng.randi_range(11, 14) - else: - # 30% Chance for Normal Tile (7-10) item_id = rng.randi_range(7, 10) + else: + # 30% Chance for PowerUp (11-14) + item_id = rng.randi_range(11, 14) var cell = Vector3i(pos.x, 1, pos.y) @@ -290,23 +357,35 @@ func spawn_powerups_around(center: Vector2i, force_powerups: bool = true): func _update_freeze_zones(delta: float): # Only the authority of this manager (the caster) handles the timers and cleanup - if not player.is_multiplayer_authority(): - return + if not active_freeze_zones.is_empty(): + var zones_to_remove = [] - var zones_to_remove = [] - for i in range(freeze_zones.size()): - freeze_zones[i].timer -= delta - if freeze_zones[i].timer <= 0: - zones_to_remove.append(i) + for i in range(active_freeze_zones.size()): + var zone = active_freeze_zones[i] + zone.timer -= delta - # Cleanup expired zones - zones_to_remove.reverse() - for idx in zones_to_remove: - var zone = freeze_zones[idx] - var main = player.get_tree().get_root().get_node_or_null("Main") - if main: - main.rpc("sync_grid_item", zone.position.x, 2, zone.position.y, -1) - freeze_zones.remove_at(idx) + # Check for players inside this zone (Trap Logic) + var all_players = player.get_tree().get_nodes_in_group("Players") + for p in all_players: + # Invisible Immunity (Passive) + if p.get("is_invisible"): continue + + var dx = abs(p.current_position.x - zone.center.x) + var dy = abs(p.current_position.y - zone.center.y) + + # If inside zone + if dx <= zone.radius and dy <= zone.radius: + # Apply slow effect repeatedly + # We use a short duration so it expires quickly if they leave + p.rpc("apply_slow_effect", 0.5) + + if zone.timer <= 0: + zones_to_remove.append(i) + + # Cleanup expired zones + zones_to_remove.reverse() + for idx in zones_to_remove: + active_freeze_zones.remove_at(idx) func _check_for_icy_floor(): # Every player checks if they are standing on an icy floor (item 15 on layer 2) @@ -314,6 +393,10 @@ func _check_for_icy_floor(): if not player.is_multiplayer_authority(): return + # Invisible Immunity (Passive) + if player.is_invisible: + return + if not enhanced_gridmap: return @@ -339,7 +422,6 @@ func _process(delta): if powerup_cooldowns[effect] <= 0: powerup_cooldowns[effect] = 0 emit_signal("cooldown_updated", effect, 0, 0) - print("Cooldown finished for %s" % SpecialEffect.keys()[effect]) # Update Active Buffs (Speed) if active_buffs.has(SpecialEffect.FASTER_SPEED): @@ -392,7 +474,11 @@ func _update_invisible_timer(delta: float): invisible_timer = 0 if is_instance_valid(player): player.is_invisible = false - NotificationManager.send_message(player, NotificationManager.MESSAGES.INVISIBILITY_ENDED, NotificationManager.MessageType.NORMAL) + # Reset Visuals + if player.has_method("sync_modulate"): + player.rpc("sync_modulate", Color.WHITE) + + NotificationManager.send_message(player, "Invisibility Ended", NotificationManager.MessageType.NORMAL) # ============================================================================= diff --git a/scripts/ui/powerup_inventory_ui.gd b/scripts/ui/powerup_inventory_ui.gd index 6bea140..7282d44 100644 --- a/scripts/ui/powerup_inventory_ui.gd +++ b/scripts/ui/powerup_inventory_ui.gd @@ -160,7 +160,7 @@ func _on_cooldown_updated(effect: int, time_left: float, max_time: float): var cd_lbl = btn.get_node_or_null("CooldownLabel") if cd_lbl: if time_left > 0: - cd_lbl.text = "%.1f" % time_left + cd_lbl.text = "%d" % int(time_left) btn.disabled = true btn.modulate = Color(0.7, 0.7, 0.7, 0.8) else: