From 473c8ec96a03d71ac4d2c260cdac4ea39c752459 Mon Sep 17 00:00:00 2001 From: chendian <-> Date: Wed, 4 Oct 2023 09:29:01 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8A=80=E8=83=BD=E7=B3=BB=E7=BB=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/player_skill/hero01_long_attack01.tres | 2 + config/player_skill/hero01_long_attack02.tres | 4 +- config/player_skill/hero01_long_attack03.tres | 2 + config/player_skill/hero01_long_attack04.tres | 2 + config/player_skill/hero01_long_flash.tres | 19 ++++ config/player_skill/hero01_long_skill01.tres | 2 + project.godot | 5 + .../character/hero01_long_skill01.aseprite | Bin 27540 -> 30387 bytes .../character/hero01_long_skill01.png | Bin 21778 -> 25457 bytes .../skill_animation/hero01_long_attack01.tres | 12 +++ .../skill_animation/hero01_long_flash.tres | 43 ++++++++ scene/character/player.tscn | 4 +- script/_global/enum.gd | 2 +- script/_global/setting.gd | 2 + script/_global/util.gd | 10 ++ script/character/player/combo.gd | 95 ++++++++++++++++-- script/character/player/input.gd | 13 +-- script/character/skill.gd | 9 +- script/character/status.gd | 5 + script/config/player_skill_cfg.gd | 1 + script/config/skill_cfg.gd | 1 + 21 files changed, 210 insertions(+), 23 deletions(-) create mode 100644 config/player_skill/hero01_long_flash.tres create mode 100644 resource/skill_animation/hero01_long_flash.tres diff --git a/config/player_skill/hero01_long_attack01.tres b/config/player_skill/hero01_long_attack01.tres index 9d8194e..c10fc30 100644 --- a/config/player_skill/hero01_long_attack01.tres +++ b/config/player_skill/hero01_long_attack01.tres @@ -10,8 +10,10 @@ script = ExtResource("1_gik08") weapon = ExtResource("4_id85o") stance_from = 0 stance_to = 1 +action = "light_attack" name = "" skill_animation = ExtResource("2_6nbpq") +break_level = 2 has_animation = false sprite_frams = ExtResource("3_og1bb") animation_name = "long_attack01" diff --git a/config/player_skill/hero01_long_attack02.tres b/config/player_skill/hero01_long_attack02.tres index 96c87d8..15fc960 100644 --- a/config/player_skill/hero01_long_attack02.tres +++ b/config/player_skill/hero01_long_attack02.tres @@ -10,8 +10,10 @@ script = ExtResource("1_e0fqi") weapon = ExtResource("4_novna") stance_from = 1 stance_to = 2 +action = "light_attack" name = "" skill_animation = ExtResource("2_jrgan") -has_animation = true +break_level = 2 +has_animation = false sprite_frams = ExtResource("3_jidy7") animation_name = "long_attack02" diff --git a/config/player_skill/hero01_long_attack03.tres b/config/player_skill/hero01_long_attack03.tres index ce4320f..30ec02d 100644 --- a/config/player_skill/hero01_long_attack03.tres +++ b/config/player_skill/hero01_long_attack03.tres @@ -10,8 +10,10 @@ script = ExtResource("1_uaib7") weapon = ExtResource("2_8uqiw") stance_from = 2 stance_to = 3 +action = "light_attack" name = "" skill_animation = ExtResource("2_ugt3f") +break_level = 2 has_animation = true sprite_frams = ExtResource("3_sr2og") animation_name = "long_attack03" diff --git a/config/player_skill/hero01_long_attack04.tres b/config/player_skill/hero01_long_attack04.tres index 2c8ae60..4b9a46f 100644 --- a/config/player_skill/hero01_long_attack04.tres +++ b/config/player_skill/hero01_long_attack04.tres @@ -10,8 +10,10 @@ script = ExtResource("1_xsxbs") weapon = ExtResource("4_plyre") stance_from = 3 stance_to = 4 +action = "light_attack" name = "" skill_animation = ExtResource("2_sam6s") +break_level = 2 has_animation = true sprite_frams = ExtResource("3_w7h1m") animation_name = "long_attack04" diff --git a/config/player_skill/hero01_long_flash.tres b/config/player_skill/hero01_long_flash.tres new file mode 100644 index 0000000..05e7343 --- /dev/null +++ b/config/player_skill/hero01_long_flash.tres @@ -0,0 +1,19 @@ +[gd_resource type="Resource" script_class="PlayerSkillCfg" load_steps=5 format=3 uid="uid://cyqiiar75vf87"] + +[ext_resource type="Script" path="res://script/config/player_skill_cfg.gd" id="1_yamsl"] +[ext_resource type="Animation" uid="uid://cwm116apu63n1" path="res://resource/skill_animation/hero01_long_flash.tres" id="2_bdxlh"] +[ext_resource type="SpriteFrames" uid="uid://0yuryfn6dc2v" path="res://resource/animation/character/hero01_long_skill01.aseprite" id="2_uof6p"] +[ext_resource type="Resource" uid="uid://cy3wwalxeyro0" path="res://config/weapon/long.tres" id="4_xft4c"] + +[resource] +script = ExtResource("1_yamsl") +weapon = ExtResource("4_xft4c") +stance_from = 100 +stance_to = 0 +action = "flash" +name = "" +skill_animation = ExtResource("2_bdxlh") +break_level = 1 +has_animation = true +sprite_frams = ExtResource("2_uof6p") +animation_name = "long_flash" diff --git a/config/player_skill/hero01_long_skill01.tres b/config/player_skill/hero01_long_skill01.tres index c9488c4..d01ef2a 100644 --- a/config/player_skill/hero01_long_skill01.tres +++ b/config/player_skill/hero01_long_skill01.tres @@ -10,8 +10,10 @@ script = ExtResource("1_ud5ph") weapon = ExtResource("4_3bf64") stance_from = 1 stance_to = 2 +action = "heavy_attack" name = "" skill_animation = ExtResource("2_ewts2") +break_level = 2 has_animation = true sprite_frams = ExtResource("3_qwjfl") animation_name = "long_skill01" diff --git a/project.godot b/project.godot index 7aa168e..9ecc289 100644 --- a/project.godot +++ b/project.godot @@ -110,6 +110,11 @@ jump={ "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":32,"key_label":0,"unicode":32,"echo":false,"script":null) ] } +flash={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194325,"key_label":0,"unicode":0,"echo":false,"script":null) +] +} [rendering] diff --git a/resource/animation/character/hero01_long_skill01.aseprite b/resource/animation/character/hero01_long_skill01.aseprite index 5ac1a3b49d591b50bd14f6acd1d81b39a5544bed..f7af865735513003ea36de31f1200ec17b989320 100644 GIT binary patch delta 2737 zcmcImX;4$=8ve4Mgd~uFO|V=!iWQ0on1Dq=NEB?@6oPmK8wrgHHlTnAZkQmuY{qCo z8x|{|0%~cBES3_e)rkfH+o)_RBG?Kdi)iKIa8H5^=^f|Jolfuhan6}#P03MaHrG)*IaR`9PQ6|_10AN;S@4=$XWi;$OF#-65?%y5*v#YcnFb;Xo zJSZ^tuWKQJh~2xwLUu%i?g_^O!`X2&U-C@n9?{N-2>azmfbn0tSxm5Gwp$j2V`3}; zOXiO=SIBTB7}S?C>4pq(2r>W%V}Jwj1=Hx+(PTgY`{cgrCJKNdjB=MUvm+n%%5Zlk zx;;6HX96~|{R1sM!t45;MV5V^Q{`L~zw0d{a^dDK;fVATVa$QCgV8roxycLK<+|nZ zfCX0REpLLr-Y4JQ=1mnVVF>HD{&zX|E8pb7_~OG}@{Ptt`E>UQ}c6ZwC!m;mF>^hi@hAnBgZ@3x1H>N zSk}5V;cIinEu)q(moJ=KWqbBDW}uh3l@(-MPlz$w+D?hHb^-uGf+rx@R?A)zmWeOw z&_du7uv8B%1I$CvCbV&>*I)?e7iZhkp6R&~(|tpB>OmN|SZ(@CBiteyuLkK#+cjGl zckG@@Qv&}`4Q`_$`pcfFTH`8Lzi1DK6`yL@A>N~(AFyo zpF(MshSMnxCrflN6{A4#J35#BiB6J^&ebh-6krcwI4h!ljwnnVvb)zyJTpo($`4ds z=}s6oI6j{)No098tS61QTOVkR``nV6vC_OM_eWdTBc`F*@0hd$9KGDk)8!_zt%-&Z zDaLZ@O9(}`yE_hZ9Q+}>9+bQLaPbNFLhwZxQ@!ZQq=%BjiAP_xMOWe&V}|idIRuRhIc3>HKnh@-f;`tIj5I0`I?r^8tXpR7}93qUlf~rEUJ89Fa4O^@2As3p#3{ z%j#jC*X^JKtXAs8jzwcJFYbGH`-W%+EUULn=SK)OKT|%+d~m_IakCp0#NH9G^6t+s zDG7*6-B(j`sOG7IVb1OLx;%@u7gYh4#`I>5BcF+9OX~sWB;wDfu7Z$Hv|S}lm~@lT{Fr@!Hyth3^)Qy!2{E~n<*=46|l93XTJ z2t0jzj|X;i)`XnPwRdb0J>AM|5MtM1?D<(veN2(@KjR*@ay4rXTjaR7afogb-p*Q% z4g>+XgS9gt#7F}GBtX#8Er7x#N1|3REzH#0ga&C<%}qxHK)S=gFs&Rr2mo0_Bvk4a zfPgcw(~Dw;^2qjETJ>W6R*j@Gy3k)r4)cO1iANu19XzD?CJB^9WwvXwhZEw#?RP>$?xVNd_F}1#ackt@i#+beyccDY9RM?I+>cXmyU_-a*v_(HW!K~_xwzEKd z_&*CfQWpRQQLK+%05m|=vXI?GQNm-!b>ys&pSCeOcc_|nxBhmW2TC;B(jU-TDK4;(OB`ENKY2Dk?Pw^e9Xn^x#ZQD*>tGTPLvqv0 z32DXy1OlN%G7`1;gAcQC#uNgZ7O?_O&0M<~W>SG`07*Ejh?T%vZ}R&UA^u+^@qbhV z+HQ-CYxoi3@7i01_PA#M$={81{?1o75djxDu4BKo6M0iQ-S!tPt!Tz!(~6buSDPy< zt50Efp1P~Z7EiD?>^(hk;gsmwaUXX553bOPq+w+Nqo{lg6-u{>o=GbXDYhB*ku8yj z0H|VZv1z>(kB3$GbAC=7CBCfKCH=r++j^UFYdlD9Ft|6Tot1id{ad6X{wvyfzjU}r zL^CJ9{=I~VIEvO!K;lRg-ii{MvX&`0noUsyf5H56qjh47SQaP9Z$2;&CS97MuJAQN|@(Dnf{kU;G;$e)Zn~ delta 97 zcmdn|mT}5;M)oP$3=9vJ>P=*?L1zPEHV4-&`kRngjs4vKE5? diff --git a/resource/animation/character/hero01_long_skill01.png b/resource/animation/character/hero01_long_skill01.png index fd25fbd0e26b39496224d09a6eb61fb4b4712915..f5fb874b5511df5b243b029583e5de7f45dfd6c6 100644 GIT binary patch literal 25457 zcmY(qbyQW+)(3j%lI{*ENdf8ZPU(~sN$Kv814ws+fYJ@pb?8RAL!`U=?Q_3-$9wM& zY79Ml?Y-BU^H&qBrXq`uN`eXkfzajUq%=Svm_>kdb?}gAf%Z>WOUfVN@3=;OViPGn6SZ zl*6u{YW}tC8sC<4*UgQ3XAV91i`>(u>v7dtjS1hLc2quk$J3UGwu#y6HTXVV>Dj%u z$vZzZyftcfelNOlcj%4ID+8q;Jwx-?Ob)(?#*j{ob6qE8hu=Ipa}PBKWPas4s7+6 zu6e6QHt=)Kchb-y?YsS!2n>^>6r#ENK&OQaUqNY;$AAjx=?Z-&JWNt9IzzXDZ`c zH>BG=5r30ynERh-Wp@0$46H(e{RQb-nS@RUkMi?$xK-*rG+xxB4F?aLUeHG^bc1{& zbjcEUhi_W|2B-111XpNkWJ`H67qEk+YA3n|uaN@%z9Wgzn9dSru^|0~bc1Ws8_r^ifnLJ+o*C%8vP2)aJCnKtQL`o2za+Oq{@>?ZQO7sQbTGIkm9e-`6AK!rJZiMj% zo6-*s=%;6yJ;bq(EC%!&GMt@RE-LX}0;)D=Pk+X8c`~WTd|ps~`##@SX?j~fw*JeS zNWSkI9_}Z$B6zZlq~QBVgSW}MgNUU%tg8D?`-VPZHDoQ$W+@>QW)^WqiRGE*Q)PTk z%6nYbxcgZ_mD~aCMuZU$#T5y22U1dwdEZYxnfEzLy1sQ-3F_yHb2?#FHE7M}toS(m zE%bC_S(2|sP%~+xH-4+WRb&)Jh-m)2TA7x8yEt#T`2D@GlSI91@E&jm(#YIZS%~vH{OZ6aY8{$@-4lR7oX`otjxO$*%&GBA;*TQNJ zU*K@_tn2X=QzEu1a?KgWBqrw#2>AP5tKZrls$yrFA4e&ep@|CfkpvTRpV>FDJu*9^nlaL1Wbh2+}P}SXjvX*6w`P4BO6k&Aw&i*vWe}rL~ z8vh%JQG&Y4#PUvP^~L{TL9!niUiGo|oAPQ7n_tDWt%G>ZJ4zR(`D{!OR-ZTvoc*qq zVGExyK?Ti|Y1xW*A-W}9uevs8)~X1PW1yKd-ZxD%(|^r>n(5awJX38<`W4aOS|^#k zRJKLbgCxrcNw*HYjH&KC_g7jf?(#0*!nfR(#h|#J%KkoBk2h%IKH<<-2P)LTaLv;f z;a*#I(Qvp{Qts2Yytr{smweT&9Gfq_n^En~#a3lLmMq1Jg=IPv{C13>yyiz(l5iy{ zy`isiebgU3Og{C1AW^*u;;$v%Y-LsQdnqNLz;FI{d5795*%2uh&ReBJ@mH!2-> zNY7{I9ZtN8UTdU1v-?wM?7o``d&O)$**aifysi_Jc!z&P5#?Yv99cR2X#``{d?)d^ zt1&h?pm@C;Csw&#$J}azjOW_eelO$d-}l~*ez>EIC!RL`leBE~<#;>lly$h}*k)Eu z>%-3pC%UIxMLam-i60%rDcs$)%?`lt+4jknUm>PPM{$ujRuG)nCBKUM(^yZK)I6z%R`jNNLQdgK}R$E)Kh|1>bommk4Xahkb0 za3ttT(ESv6axMSOb;U}bt;lutD|kgS2QQ*X(T2{6JJTTUTaKwB4CwP5yIGS7SCfi- z*E^CJ!*Amg*2FPNhaC;|^}5#q)t28X<=*h$AWn7={v2Sn7&xp*x;OLT=|mWrB8lRH z+r@fk6gl_Sp6GW#!@=F3Z2|!Sf{#JD$i4j3vju@XrA1q6S#q?&l_=EyvMA2>V@uVr zxgR>%zcc01uHSXxebKz9_39_b+}N3K%zyroeI#_h?tR)Z zSDp~}{OZD+SWN-`&jFo=0D2%Ns4Csyr;^#!vawNJitwDxElw=9&PSkUD{yw>0M^+EtUF?sn-AtU33t7`Cdw4yEAE7wItUp!365)gpmTFyVBPnL{kKIvCpqk$ zFPRN%6qxTmHHqz+YEwZ5y!5F+*A@zJ^)}t8+QiO}RTNq=Q5Y&e>E|t26}*B#Nf(1M zt&Z3+sA2uIjJbBQ18@2ysHj!kRV+>-X)>G&#P*OG@(93vn6o{l;4udn?8LvIojNvV z;+TIYXhfO3ps`g#5Tm-XGP6k(F0$}pfq8$=Zw?x^2-wv}r`e5Di~ikQdhKHlJ>rT& zo%P{A=pprT_0z>FpY>y%%*=}51%6cR?w=T-(03QGMxseGVG!#(!S?fBw!e`+CE~va zj)aich~@^b?fE1oWs-@n*Y}_6T+L}TM3DuoWk5}u>*8XcurE&U$>Sc)g($#AW`SJ_GX??CG9T$Bx z;|$rPgC3^cG$Ci${jwhYd1GwQJ};aa3xYA3ENc}KNGa^X2QQG4$8O-3fGKeU&TZn0 zKlo#G`P7Q8GM-;=;+{UCz20{tNd|L;WgkX?<_vJC+~SrGw9*Q z-8}h9$WGI^#!KfRifhMx()MnF*148lwOOM*gZQ=W=}8_7MXfoV)Vnc&H;k@Hp=+!Ja$NW zxZVS;C}23OGSLq_j-ZVA1!q_@|4X2XE?2u+NCF!ic`oo`>b^&nh$HQtwV?`>%2 zoL!`j{5LTxlv35l1*{J^HEOG>TVk)BPfI-7^xaVniHt8fHkj%VjC`DL`@Ch9Xkk`} zz{lH4%A%GP4`ts!2?bh9yG{- zM@G#hKiy#pePZ@R81|QY4S%4ez<{25n@(W!d{OqJeud2)I4l3E9b zZ%EVs7{=<@84CSE3HWGe>fp8>>G}>^8`&|%joC$|GhI16e)0o zFVLSzKQo*5JCl(jg>NY=naGdiVccua`cmB1U zfuU3afrb;ZWz;DG03MtxCUdEOEe=$3h;xaTi(s=v$E2lj8y>I4rWTGR(#jQj1m`Od)}!_^C?3kO1w?s?QM z6z<{<4^*QR-)o8-SglXQY_>YCUT@znu0Ivu02rmXr5p*bsc@vlVaNzo(K zuAWAImz~ucw;_{tmhWTui2Hr`A=J?5>O{ zp7&L&>r4d$7p!&xN+E%n#AXoibcr~20{szQ-{Lrxnt5=NcPyNg{6@An4%|{^oq-kg zZ$et{qb|X!yOU*seX08w-hxbdk;RyBjbmDl;FCXs^rX_k^kO1ELp*q=8qP|0{w9i4 zet6Tedvbq~IN@j(uUtPRk56%L-glxcHX1N4TNt4kLs=rIE1RsE&?#(LXrK87x_{%* z!Xe_0uieb#LwESDKrc#O&ggNPk633gBi$qh<+d>(g47Uej3*^Ip=V?uI!xgYd8~56 zKCSY(4=%0@UT|gZo`2Fm5f-mwzvb_wq<{2x;~1TXB3&+}Wch1J5-N@weD~m+mGAH= zI{DcsUMT}uBU~i)#N@+7S$_&7u(sL4-j!QTc>`z9wnYcDlVJmfS1s>gpK0#Cxxft5!P4l=wGeE(D4QqB|~#a09-iqrp-=F+ZT=d{=1z+c~>l8*^Mpc zM0}DkE@9YeC??oej zeZfHqN$umnzgpUfOpG_q4YFJPeQnn4%`o1LO^AD6+Uktwk37P-bB}wM6{#ka>si-5 zfg;rRH0jG|t8VRe`$UOBNvYfsZtt-l($AXNU@TU|gMB4hW>u_l6jRizWr|^j<)F4Z zbejt#-Z$wHGmYdGVN2T6ufAb(w*TfzS{z{%=A2iL9@X8~F&DPS+H$6nd_<3BL9ly=Iofj}6o`mj)o6t6@SEhMr~E14Wx zNSGsE^BmZ+WdWQn;BHgiXACL7OnU1Q_~^hJxL0S$`hG!UO*DzM@R#=wkUiy>doP1Q zda!T%D@@CO(atTIsJqm?Io%(9)dBqwfyIpjTv?dF45z`g1q!6|#BSp|yFDf$8KM5g z-;z4J1cUP!(~j8Q2}nj9o}Z{w+FG$elNS;d3M|w9!I(L zG>d8C-DSv&^yl$Z&+K4U2Yg(NVJ{}N&}cQJwEs6#0Z+i1Qb7_`4BvxdIvHHxTbav; z?c7Z@clI>NPB;iU!}Rc92mh(Yt8wrLD4-RxBOgQPKztiV!fY9NRWrQx1?O~<%n|+x zL}BiLz4%YWmROuzS_xX?$p!^Ij_Wa(U#|dpw4J*_Gqnn~wRW_$B&)U~M;zt2u6;4i&;rYVbF0KjKT;`@sun?|1QJ;mhW`e4j9OGWo z)3D43@)taGN&0>_uf)@|Y_NVBL49olY-@q-L1v?ZPmUJ>eyng$fj?wk`O18NUoT8& zY3CvBXJfg*@gSEnS`Qk5q)9NicgS6PI?LNc%`sf6{XJ*0R7k2e_tP*>a?Zfh!p<%I zQ9b=&LS96U1<{al4XM80Mbm!6$Sf))<@z~+cQ~uEr;-VcR%%9?UD}D4+N5Ib2CSG~ zG@eAkZhA9 zm^>v7RradX0pFiwyMnE&0_2p5*3x6xy zk+s%-B}%LT&@HY+n&z#WPBhpn%jeeJlI%kt8m@oe_Ov_DG_vEU`g2jMIMI5&JKFMm zk#HB?@q{5t%%FY~Us9XA8D5^YGEW$>ix81LAAc%oe{7SN`$ns66BM2uF2z za@tui=0_{w0)M}tbS}A)i2CfAY-gNX!2Z=%(4JnAOE9F5Qz8Rd((Ewc>wjlh0;zoK zB{Yxvp(%IO2fwwhN;3zLv|^q0t}@%XC4B|q)m{3i&El#FM9`Rfv)FngRhA4pEV`P= zH`kjGp(*uoWatH)Jo?O?n%KQO-v0YuIk<2E(Qsm{Ji%ip@~tI%Z6Z`iC+&;iJDdF5 z)0%OFg`!X7w!>&<>VBbwMmj;({x{2Q+b!F7w;&1JX9-|RRR3N5 z{>yQRiI`YbCgwaz4C*6zpM)sk23bTrvt_ih|9X&y<4_FtU_A%B9Pwb%8l02ngK-=o z;^}sAku>o(BBAPc&wM{<#6_k5Fzfl~v5PZ5mmvnoqW(iF%-OC<7S_XQQ;RVA14w`% z#+0$~m*l;Gt@nlFA2URC$b4h3HBOmzS1rd;qi7d9BoE_xX2v=wFJ*K-0kSS#?9Op+ z4RSAVC-3Y2EhqdCF8Lm}&ut%#HHs;>iD_W@2Ho^;bw1-#ElF#*ik0Q)K5wTe^_=+@ zDUDY?JkmXT)xHNR=ONZ5f|?E_hJN@vt)&+)}S z-*0ll5bJuFb*+QN<4TG^z+6a+nswizk>XbvE7#APw(5dV$yao}$aBZvFEu`_frt?`P{b!|8j&@+Pzz z=;#fo?Jg6Igb_*1&Ke;}-v49~#tKSuJWL)hK4cw`4>{Auh!_jT$`rE@l2A|;m zaDI~0YK5;Dz2VKx4W(dI{~Yk-!g7BDoW1^nQ`OHX2{|~(H490MIQw|n7bH*37nBsu zaf8l8{F3*b*K(v#_GG#sb<;$MKm*(e+iQ`Lh>I6i<-Ugk9T8lIAZB2#0!)%MVTF7= ze4qVYaKL^<=$+*ZD*E$wF7E;X$#8C~jpbwCqvyrFa_Q-eq^PgjTFtS^!fURdld(SM z9zbIi8_N-~mf!xEZ~$Jo-Rta+2q_mn&V3(iI++W(Q6bD%Ln~GsuFDV{w_@EF^g5)1 z>%oBPN1+BJ>S>)N@(UBj4mw6hO8~IHQ-7QQ9w}2LU93O$gds&Jpv(2^;R@lgPqZ4e zp;DqMHm$nc`li3y!0}aH}>;^KLOxb zRDYd^ius_f^_JNwQ3Y$pGY>b)&8GsJS@W!|Tc7n0ZbD(imzL6?V-PCkEfsTc6Rq=& z(DxkFqF-C7T7>aFKLm#Eo;ck0YJajI*A%0RbKBzp>rMfqdcLh4U@4%BKO(9U!+wv4 zUgvc4h~BxfywN1+uv?gbfjnw ziuC{(TrjByN)y_`iK4o&v1X(Uasl|kMJRUI;3-TU4WL|bo^Y_T&%j351ImwXP>mOy z8o;qZJFThj%1$f_N%AeicEmGROWH)dNEsF4R;DQl{9^s)A9DGkF9&YQ{4W$v=c@i4 z(5I{Y>6aZ7_LxYOY*Ok=X)-Yz(g9TSu5xtdGx_aDr;vxInrFMdi)6}G=zsk2iejn7 zh2J$U^9$0=JO?)s#aP zMt)WLi!Fd=*=JAPCvj)DdI&NrGC9c2KwA+&1Ma0@qmn`G>pU)02DRcQ8G1QJyH3{t zTPys0TpP`BRLmstXOIO-i!m91f`=i1BY-I=$gGu8y4Ldt7uM9HRWeF-UKR;8eI}DJ zlMO>Q{ZkLl7W`0Dh)y}uR!-~gNN3u|krxJ2GA$AL;$OKnAuW@cycj_z&uMBRh?EpV zaBQ$}w^dfLq)s2}sb}U-An*&RET0J;#-a7hm{#ilBsO4=VnG+%Tt0onc_1>BKPXP2 zMei$4VTCxJ&qQMJ^+2li4)2Y8!o#wAfmCh(`v%L|T4SI*S)$eFS;Qt$93|pC7=D=$ zS0w^%?C)GVndg}s5Q(u&1o5peqOY;;&^b|^0J4(OJ**ke1;h8#vKwP#BUuthl>cP` z>QeOTt19)PGP1eY5|f+CYt zTngjku|1oR8{jq&3IKzvho4$#%_O_c%i*8WjR(ETk=3L#oL<9e!gvF2Ur;Da1X%JI z_fRWVUNgPxM%jks=rbFp*;dy#Erd%r4f>h-bMUG9%XC3*-rwQCnU^V*-U)RBZPqHm z-$+{XsWr7s(B36+Pjr)5@^|gpJ{i9+HGda(6u>Z_n0Wy?@k~2VdMafWI5RO%pQvey z{!9X769fTEHWJ2;eo)D_9^idz4;Z3H-}0zJ=uRD!mPUtbgpq4$UYs^3^t#_u823H7 ze_Nx`8xVJHp#1@O<;~u+&Hy*d<7w%XV*awWx)nw-W(7tKaiCBEF0_|cg9WPg-SBqX zZKj;v20VSDWjyy)Z;%AXV;Cv|El33M<3 zE??iK76tex+7&6I{!JrIBZoReW~q`j+ne!}EKvJ%4)*pyIrHmvv2sk#PgNlcKcKtj zS-%+ek?fWW`*X-_#g#jTn!}3AYkG5B$Y3p#YuHl)4@7_v!_5Mq3KOq02;(!Nu&Hxqr3G5s4#k{VrTcrLwOMzV6-7yiyRBJ^?qgPbbDJ1( zC&Zbl%`&QYRmR0Bd2E02d4SmHP!7@fD!aLjA((*N+Vp^+21BR|~`; zZg@p<&b9SO!*JJs^OuQu882l=(5lQ(vECUbkJvJP|NTeN2ZM~q>Vqa^M`=F%ZmC^@ zag@H}SZncY^o9*lRmw*oG|;by)}qv@cOOJUAbq*Z$?=mTui>-ILIzTIsu>7}LE~KQ z3Lf-ybD%N$Cabr2t&HPZgDAC<8O;2?&*f#oe{O2nmiV`EH%64H-A7$x_jiLfU1uFv z#l5+(%OY0HL{!~Yt^~SR;7?}!&sJmL#UV!en$MsvEv$bnqzQpTfGo{MHx&uuoKKk4 zKaXO5vLFc4Bh+9bkfJH0#)cY3ebj?hcA-}{h+_n(z;=_Yr?JCF_C8NF;YyW500H9r zzOuTRY@d1T`}j$T@-N$Hp(KJv@>eUqLZVnMKjY*;9G9sgCNe2eaCt2LfR3n{{zCIa zxbO~27m?jNWoFPE`CWHF_rmG887wOQWaw>$Z{yN4KFWm3VXm>tMW_dc=PD+mHn3w+F1u&_E4mi)W1ZLLqXU{a)}_(4Hic9CdWap z(0Bu=&z1py4$>v)uUFU?5gp0l)TFo$U>N~p6L?OwS}loX=TgEDW}l@+~al9w+i3ywKp=pk#e~WyBjRB zr)=HQb|T^E6mzXE%#X3! zNHEahYSSHTh!9HM6Z!&XQ&QQV;1%iZqZfzlQzAibRk?7di*SQMXKpblQ{I zBhz~Ulm)#eJ=Q7{Iz_+^z56BPo=emhmL?eZI%Zxp@-DluLMrw;xOE79^!H&o+YA!u zn}4$yVjv(-)+}G?Q`b{)5U9m9M!nN&(f~wp9??I2q?P*#VLo1+9d=^dx!x9TC8clL?Fw;MtjDMJrpLe+W>dJOu$@%j9e&}nFc^$|F)+XbppQR$Gpe|yG&!D;Q;w@dd>N@p6X>8-^OT#l48VvzJ2H5%IdWwMN5GnDlLdZ&?}S>+%D^jfwgLC-AW&H!%zH+x_)6nuv~lUTM8u5A zgCZWG^Jy|P!fz`qPY^{JzoZ_(KpNdzCuAhdHd%C zy-?-B!;xX(LU+VaQ=b37TiO)?MPmSIT(u4_omxr+ok{E?mhG3F6jzdM6Qrikt^vf! z>9)wlsDj`t7e3$Pv}ZM`|9TMnpNYg@9#4QzcmWU$pNGqh-8k2OxLj!SOSLw{AOJ>! zKm?$#K;G3oGuc{(!?LC1bEq8wa=Uyir$GZrtJ=&^&gUF0VV&Apio7=(WeiK2ITNMB zg(CY?z2wEXYyer$n2fMoIMWACYuqdec(%|vG5C;zVa z`AFOdJ6Gm?>Pq-pX~ru7UB8^ zDJMYh-!ifJBaaRP0%Wk*veXam^3Sux-ZyDbVug1|6}W#Z;KSOlyeY38uOBzULu2l1 zXV*_wQE#{5ANO$2^v@#I4$bV@XyEWf$YaZ%B6PAvNVle1@}p=9L*=+$iY(VVzW0QS zjM#SE&h-02ZT0;y`PYq84s&3~j`qO_1U%j_iN^@srgoGAr)|%GF+@96Xv^x$)RjW? zy$V05@I%ZBt$If^-^r0N#H)M9OBx8x-K;90s-$_yyrs-S?p(R=qu3z6wok8Ks{6Bb zdHc4W8vA$g`a4ip`bfxvpSG0n1$Bm_h$zY)NQC8q0$B7i#gN6V$C%u&hB-fDq5vIT zY^G%8WYXg-s?j$PS5DUN7l6WBR6wacoZhl@>6GKI6Q-#R;eJ-(sG(vu-%rrr2gsV8 zA$Bu@7oaRd-^MS8s!TsosM9i>FaB+|1eCu1?ve2|DchCEWbkH2|AKA$sZ$1|WfXo?Yf!n+be2 zR2x;olXCh$H?0-AW7|HquB1IUX6+!Hgt(Ym2&}EANWV|J@8x3&d7HD&Iv*jDW$l0nC^^u??nAVQDF<+_X4IK(L9JVcW-H-K$diBkhyE;u@WO5LT2+I_s5;nniSq z;xO~eZAWm5Ttu0$F0&h!_D<(dx?SoZCHC>v3<XCY& z|Gh3VGq+qGK*c((tl1XB$WZ;{TDq<8X!#l zfl{<%yP|Nwlb9E0VMTX`0Khyz6cC0H`yD_{0F7V+syR7UtQ8B~EGV{G)Y5`Be#jKn zcms>M^Nf{CohB?~W|;F?vz}7H4uQ!P^k%+GO+%oXv%bk z^3`1^pa7nSV=7gYL2$h9-E<=rU~SZ*N%$XiX#QbHZymxY8#vYiYm&h-Ii?yT1+JG{ z{zr}bn4~zq!LhJdP2S#Peq9-cZ;4s|GACh(eo^(M(58HOeqBMMDG!m|SDQULmZy`iD8^W_23BdxFt^aUpO;P2{e0nktSDv(r-G#>i zdB;$SjeqKE=W8fN6(ntZ3&=xySYYi>`&pfH+t;BIZAK$~v?4!qK$aH^(Lg4Ba!<7q zsW}NyfU(wC6xCQ1O85%xEl>wkP1FlMSSz3@Qt2CQkK{>`f58clM?W$7~_Xfq3o z$!7_OeUkw>QO)g8NHEkDe-`Fzd5t@0KHU5Z&&n2g=aToxwb~%XM}uYdOi}ZjbTy}B ziz>l-$7VobQ3awV4J^-@+`3(-{r0rzt4>`?bPjjCJneFX%FXZpOMwD8g3a?6Y)iwx z=tx+iD$pEJXC_8KDYCp?(Tv@c&$$!gobyZxdzJAsMLScBzY+aoK8oXdew`i8#uTa+ z8SuvKO=t;OA~ogJs;8Wf*r;>An7`LD#aiUn)LQ`3gqVSxP@ky!@mfOPtEQTSx8g>M zZAhxg5{D%cTtHm@M00unrrFKlTzpp+8F>q9Z!PxgZ0Fl12ip~MPW0B{s|&iwW5afW zvE0lnqFRd47L+y%;Vb-Uu-ew9s2~nfyS$0WB1IGbabhzhtQqkV4u`VX8nFWr3X)25 zU`@1*AnPZyu_jQb%V!j@7_D6WQlw}$AyT=h11Z8NAQnw^c0+7X#t74P=?TD01?F9A z6o~G2;Q|4_zzlF>MiVAU-WK3@8xWai_T-RUiVQUei}*%%1y9sefY0Y*rW3ALSt3iJTt^D)$Q?D-< zR>z6Y#5vsE9HjN^vE7lr4U~i_t~U)0uO{ISq+dsA4qR~iA=kLN(xZivuNIekSCUqa zCC9S*Bvd?TVk=5mv4F!;jihBRD6<3z8EO=XaM}r=Dv-sjZ0B}?Pl@TERO4@JBF?FV z^X=sOE@lZ!291H&ds3f7K!E;jbLNrOAa;HP`A;act;Pl;5E4&*`*KDMsyQexkOOpH z4A2>n*ulc?qc&jc_~=0Qc0Q_!LMmvIrIr96nqBjri`+wF7GMPsGrhfFSkSj7`aK?| z%#T212+CRk%@JU&dCrpR4WX`refO}NWTU}Ugt+g7UjNB60vS+QofwTS+kwUa`8&v{ zy*N8wb|^HQoNUnadZ5k|*w)6`fLetd%Csqenr01)ht>k`_hinmE)l+ZuUR zAySW6mH<2#@ahC5drK-PZzoJ2RO79vg{J)pXcdh?`1=Q1eGiAvg%2`*Tl;C)XjqfD zNbMS=pe-7`71~4wKQ8#o|VzQOI>i zAFU?xqbcCZFKZF=h@=VY?YCb)#ys88v!e&F)mI7LWrt_{@X_LS_pOckZ-QhyBghg~ zro7LthVhvG3oCsMGP%jGNcv0wV$gKTI`K~p%Q)hc88?uzMtlPF52$hr4YVnhVEzrAuc6J|vB#q~`s^*4XE1$^ja&|ZnM+(6CD4)l0y z8Ub7lI>&c*C>>>wjl$5pxn!6Q2?7RPYC7*r%giiL!x;66)6EFI)s_6{TI6ZuMhw&Ac-k1xRvH3w8d&M zCUR-fVmvzsy%D3s@GA1ie4uH6{&Bj^tfLZY_#QcVyE8F*&gsj#1og-B=6UrYQu_cl7obdhO_Jsj5vaXj06Ql<_zxw163j=q7wR;eBFf(THO< z0!TiyO2_E5QZZ5jFLhl2ZRB-VRhKwf^M1DYPgik(B`#R?rUu9`==vYB#LY&3&Ka|w zw=vPhS^(3*0uxzulpz9-DF^pw+-V?76Ijr{q&KNBrv^ArsF4XzQl@exG1?Z9C&@SG{6UcJQNrE zLerCKE2lZ|6R4$tDC_dF@q965CWVyOND|#Bw>t0Hb^b!|VITeY6oE$QMgD{ z9Wk+kS)xbKCvJDS6lD$M;+cufiUV#!FE|!v&IEOyV(e32EcP#F{~Iqc#{bswMznu4 z0xmC<{Uak+-e2Zs=~|_~N*9}-1&ZN=w~7FPO)DKyxPA%qVzK33SfRv>N#}^J9uk!H zv1vMtOF;!Xqr=8g_Je`bDTH_G-fHX739U*GQ)E0|0}r=C>DTioU^S&IhR(wBz_1wk zi{>T&FHJc6Pd@UrI2CFdMtb~~(xW8?`}c#mt@3Ucw>rf(gZi%eWC?!$+Gwq>&4=dt zRM3{_e-)EI7qXe9W_T!GaZqtDyjDl=?q9<&?kz`;(FU%(?)>M7S{nS87>4bT8j4E)XwJFlrXPxfMs*Ys%&HbzKm8&3Wr%7-ifMyH&F%_2p zAbFE`5YH=kB6%6Nug|AOGdwY(p?^h$vJPri@Vky^N)BYKrk<$}7FVWN$?E}ubUz_i zYUns|HK)M6?*bFt`A&Xc%lQXAAO*d{hP&I{S&9F3!qVH4)6o^-@o{XI0fxNmoAi1w zFjV>EYMT54XP?(tuCJ0(_o&LhkD>Pk~Ler8uk{F>rwRrlUZ7$i;Q>s#JmFIJct4SCJ}m6I6nf&#>GdI^0> zddcgoS2EhxeEo5}K`U3+i+4a&gYV^GF>YoT7t?X)yzjkND$6>-!oUEN5{i@nvmCRs zM0_P#(KC(x*WKH$uK_4O{u2D%^!>~WBzoSEuXh}o=J|9c|BS=paFoPDdh11s_oavd zr>#>YarCc}^VR>*iP)&^v=>qKTu$)*f4Jya-C z^CgK=JVC^ad!v#}8gK7g|L+BxBnS-1_;pPG-IOP{0=r_IdkY#K@33#(%XF2Snsdb4Lw&H^i~ah0zSRd?1^_wKc``mFg#vXVQjwuHdH6CaSYi_|D){Zm?dK^dqfp&Gh?g?J6)7|D^J$_kTl( zV)_%Lc8fuB_aBtwiJXtn^ZeLVVxy9&`Kw#8tJd$#@TN`6Tcj}5@r}0 z@wg9L=WNsBEgpHZye&S?F0s!#6*YpqffCsR1ob&qzOh2o6%i+gseUL_g%t5S(hr;#jn7sv^FsIW&)Gg*&A7q@p zq*e?Dc1`boa2Rxu(PpR7Ro=b_k=lq~Op{j0vDVUA!=zEn2hmpwyE$q_?&@#8M7nP* zfian8DDQ|dHcAyW&wY)?*JxK^rK=2g_R{I`5GuujqYlcA4y0WM;k5%l7_Kva;|mxD zT3{qmGG9i{Bga;~<10#sF1UdC?m59@X<`Y-FF8U=-p{Jn2p8S@9L=f_-lJF-_sR<# zyph5;=rNk|jyjn=8b!>645Y(?{I-WO_2vMWg0C!t_CI8YvX#88FnQba4k6%qg`9RU*a^)9e zMC_)CVB*(5`hb(KZB$io?*apwey;lvtFxK+zVJ|o_m5&5`xUtd>>t?t{xb-@$N~%M1GdHZcc(F6AaumK%s*oa<;N0Dbr6%ox~uj&RT4M zZ4c<-fbdKwYvTN7_E0hjLkCXUMLxpDvk;@bCvZ`%M1RZnt`$2BR?ScqAX~)qyqW7q zZvpn~kmi92YD~>*5uL^N6rkA*E9`K^N#$%0%*n2&_#)X`4gU27bp#0g768TzsOC8w znitaMG<;Vl`fPW#-`BMm0M#QJ&(AiXNP9z(>_3r{wMk0j6Ev$4wtyN_xIfV)Qk1Y2NLu7U~UJF<7wdh8g29ffMwu@_3srlRWtf&^D z;XmC{J#vZcbqnOZxd*fkJ2ig9y|DSI(OMtcaqxM+zklwbW%Q+u%Oo?nu{g@Lr>tYg zb z{^7emPMSX#FlzsZ`$K-Z#<dFXUGE7zyvIcBWUf0O=M@qccFP`G2}P4`8_3 zw~eppk+6D_SBoA*Z_$G2R__FfXo;SPxHno^$T|y0720PaXo0u@@7F71(NPXP9?6J>4%C*h?K;$m{qzv6NFD z0JLkzC?)@MGkBY~0FW6S9=7=38zJ_pSL81MGdh4|K_P>lSOZ*{QK!n89sreVZldRyBWqH;HIbq#XgadQoPfWkGHG z)3We3V&FPm1*$>r^M3zHF;8I&=x$^%OP2GACG4J!eFaC_m!kVOLzbv2MO}4ji?li+ zAIq*cOVqICkBFWCgLE!hryl>OoUto6U*~!a$nd?m;?Y! zC_^v(4^1{w2;YfKCqsJ$wsmj|O^K8<*Y5JZpC7Y&?JnmNlqA&Czq-G z^BXC6mzzg3?l=ZDQx{l7zk|Jq&W^BST&-;?9mcfd$a}kNP=N9zkyK8@oZFX8;35{h2ww2eK%%+j1l3Vq#FaaPTtXiV23uEtYCRDJPV{0!9c$3Ib|M1?;@OXMPCMZ2)ExF&tu$Zq zH#Oq?^8)xkpFTU^b1N)=1okNTmTR|LSK1yhIy&#hfTKCMlE&Pe`1SRiJj3X0|G2h< zb4u9bN}-Zzayz{lquoba3lL70oKf$^NT%rKx8!aZ2I(6_~V<8^gnu{ZEcuu^Wuig z$t@sYLddmVaggmk7)@Ly{3pU-2*g|fGovwMpx=yQwxi_Bu(cGAUVO+x>R5IJRza_u zy4jlBcY#3EgURBUJ!a^gRK5a9D?t&sU)(?W_3mIa2u2GoiVY~YSKPr6XTn*ZY0tg| zdVdqcV+9(-4DF2P7EpGoiwGF?T1m5NHm7^!EdOyIVbJS8Tc3>r=Qlr%#c6yX@5wA- zRfZ%DU5D&7u8zx7FI3s-EPd(CBKT}Zf;Ba&qt;X2-tTo7KXAVpG_D=tcCCg8d^PLX!G-N-LZDL(ThujZD-7Fh(6b4duWPXy8-~ zfvnEoiUJTZo9tm1@oHHhmf;Hf_kquTuL$GOPyBH#CgU69LUbLX@^82cbKbLUzoc^( z`@jTf!jb%B9sScprJLbMxc#U*hKyPyqd(PcU_<2c*mid;JFwMJXp`*`yM+RN=M$<0SK>sU~mCw3@hs9zs2P+t!#6)LNP^%q;W3q2QQiHaz+BclaV+ z$@9;VNyMnAN7GaD;z@)a)NQ=X3+4TYhsn+)uVKl~TWom|Xcx+laYbpYPc@lvnE+o2 z5tr?MO=7P>sEPNY&jDyF^%8F@vd2sMhNzw|R9^brqJ%Hf=)*LO1BK3hoj(40%~D1! z?w=(kSO5l%R|I+@BAd%&7(GHQxw_Zpi$?#koG`1O3uVx{&E2j_K8oOoZ>ndzC3K~q zL2?1m#3zpVmThfc@_7k9WEqkpc~UA9Nf&svWdle0hwfV`2qw+kP$DPxu%xKE2EopK~SQ+i{opCX704mf8@|C1sotWsoE zCzIdXI7a>!%#pZ@-dz@sIRQotue{~ z586};XCeQXtdffv-|>*Adx!M{2#|zmqn{qPMmdsWCV!-a-Qc{B{n;A5|5CSL zie%&;y-nEzWz7*;Rgn){Hmpx^!0z)QiSVxibC>g?u{gym_9Qm@Q1xgXcGSbCi0mnF z%!DC3#PykMfoAQ)KsmcsDJ?VMa`MkMVPw9V{%vC8cW<2$GnD>~o64?3b-&z3Hrcuw z3^=}cw}gQV5o)Go+P+}^R4dZ!e;cY9!BB5fmLFyYwH4Ym?gEp?eVlO`JhH*#%;7FN z(GI3=2VBL~?7|f{j)A^|w8Y>c`a=MjEtJ3A`l;8^F0jyoRcW9uv2S}t6e0JJZJ7lv z#1bw=g7~z&ghf@b%F@MVn(>W0Fh9r)Nh@qbeF=AsuaRj1>w=9h zR3rW1#c_kdt?vnyQivh}D>G+ZtEg2@LN^jzzA;JmmgZT!7k=z%eZOxhAa6h3J-VR(biN%{PSJxE;>)W=Fyl^Y8yV69h!0#nzU zC&!FZ(SSl&I+`zi%{SPaC=VaTwjF|7d+Ldvq}|X(WARUQK>(qTZDlObV2nMZ#anFp z+JA>lt|&!PM^aDC`z;n*ImsIWOjSdi90`-de38%X%ZN%-c`xTCRS1ikxtjy6=|8G0 zjzuPa+Nx%2JNfG61+4EV#Q#3EEHjnv#&Z^;l4AtKAOB*JyZf zANMa+dfvM0vzNY@dsNO{0ULK+@S;jc>0>P0TR-YiXI10Qw6eWgmm9rjjp z^+e_S;oAC<9D&Vqzdp|X($8H%gLE(-Vd3EUg(E*VB9^^y(b>YI<&_6g=x)RLTBG4= zCZ$6~$zJak^x=Ewjwm@{tEtZu=K()%q#G!UpwwWkG%7zb!Myc9)1Y^VkWt?#*)-x_h*3pu0ef)PNAP`XM^=^x;57D?hpZvG@jbzO^Yrn_We8iz<9AFYE zvDtDbVw=v2zEWut)xDy+<5&Y4ZBLM3l*ayBA{!QOeX0ka@>>FWz?Kj&zV~m?__|ti zwwPI&o0m4JYqEPCn+V(ijMG-(?_B-AK_^Sj>3=_FIFzZUM?ZJy@`8M>P=V7z+#9z` zXWSffJh$>Kt23YH8EL1sYdKF~+~UQ76YZS1ls4MMm|>W*%1}evRCdaKW5tETeEG8) z6}8(_bH?bbn<(ib8$0F{T-^tVmz79U_Lt{#xTZek$1*VgKQ(Z;IA{8|m9H2kzxx%S zLO274AE0rBbM^E9RN>yTaYQ?xDXf1P+fKKDJ6FrrO2Ee>f7WsJ_vYz40oLKh`9OaB zD7A~MSM;7)N^(=>JPcf{AY2Aih>MP`{($f2l>M}Hb zR$x37(Es{w|Nk}m#f+Uet__6v{Ar3?d%s1?aK1~GAMZb=`ltd-ISS#Z#DL3WxC}fvRbTf#ci6Wa5^&Nuw2+b<q2ZtB}L9l^DIlvpxvKRX<*Cpwv1P*cunB*1cmWP?k*} zk}OX^G296pK8b7Ym|0I}Se?GI@9d_>$xwjv5S=o1M`q$07^N2<7%Ke=EM__ZlRTT% z=p*c6>&V`|(@zE`#OJQZu-HIKg#TW^BeK^zA3^#BnAAT3?Fz8&>#hdp3{$Y*fh(R)*4p??Xh#-A;uESA#88h!`S8k<7~4xk}YPO9@&^Ir839Mna~~)(v7irJ}H#kL^9o90v#|} zTd9?VJUrc|bLR334 zR&rVb2LHE2@10k_86RDl%(<=~u=aO2iWV_`V22u3+nldyWma8B;uyt$Hvky%KFX;} zY}rQ#R1G$R3nZ#WJ|17Ar&HQ&t`E*)^PO$fM>z)u!$FsK&=Qfk=aV%$W z=4Xxq_yqH6!+2>Tn$F>IyJeIu>sx49WV)M$=_GKbU{UwhTAlY+tke z`~17DhkuT$i!hbgO%1OWi}4=Z?!91#g9sA?fv~BoB}vIZ=ZBYPb<$70Y{sY0Swz{q z3I6R+@&bHPxdi|YNVIUq>0%D#HDE9iAKItQ0b_-6{_M8rCA@#M_zc+U&&QsDsU%&Q z`nP{9QJz0O{CE>|ehrlreJ>&JC9pqG{vZ`Hp|0VMYKu6~J7~W`ba|9Cd-mYRm+R7U+g4HrV|3P(moBPI-=zN=tX8Ey#a&7eLUbZ)+IuNi6F~V7J$&VdTcehF zH3RmbPt7B;b4^Q6{S2r|yOOLpRV&p}roq-y&<*HPa?82NSec4Xk=ppc#Rytf*~J(w zOfba8xEq)!!`>78np#g^53MXZd9iCu0By%)x{|PEJF9G>y#&)fssj6xnh{IUQa z{kv-LOOZ(gmQHggvP;ZF%U70v2a>eD6%z>#k%k$M*6Ea*l%;RWP&D8Y4*PT8jMSZ> zeR3FN8>w)~LulD)6u9Y45#R*8QE$%45SGmjUa&rd3UM4yMXi4BRrf4@uLg*`r&5=j z1GuFpKxuQM`0n*}0a@p#HW!+TSrmagpx1&U%M1gt3!!hbVJ0@fU&#VCP}crvDi5yc zs5KxdgRL@9KiMp@M?(HODF6PdAR@JL+SX{V>qts6nPm&LHfjj;}S4bOiIaW%Fm< z0$(><8-F+NQru5nmH*I6tf2P*GFYXxH^oUd%f46nJ$?|opQ0j&Z$L@>xs{6fO@3{J z8TT(aJ^chpJ&@d}K#%$oWUx54zmGGz(#J$2Oh{?0H z2t|RwZ_HBifGjmXX!^^91b%h|#gwQ4)#rMCGtzE_rog0PF`njD$x!f?QfP(No8nwB zs@h4|z7>{h(k$L8pxXOt2y7u~|^ZaAlHez5VIdye?CDi&a*M^@XV>QDl{}s@yOdQT2e1@dheZU8-Ecd zcqY5l7-uYCQ#=};B>8^3yQc<3No=N8ku7DP_oN1h@TSrN!+7U!+!b>wMQlmmDWRHV zYR=kSM#YTl3xMTd%JFv$l7BW1`CEeb84C{$NTCA8K^&(>qy7lEFj8wG&(-9{<4R+Z zN$v+}XFwxP)dtzBN@LNyy|IZr;03Ha950+IcgsmleI^L_nrUp&Wt!zT)EdHSOFlQf zh2N8HE;=5ENxB!Jx%A5<0>Jle9c(vIsM7 z#J|m)hl2ph;99FMKkR`3y~$sdE~Msqn@W6!#E!Ph(=V^>#Fxh2nCFB9Ih9?bdMY|( zP+}ruMiC)!{M9Pz@sbb+^yfpjc%p{~rNz#nnMc_YlrevN$Yi^cierR^3r#4>?%WGC zhKa>;lY1>1BPa%lC?{{Ab5&Qj#IK*m4hB9G{m4eeQn8+?%LU)ge z=znl?B3pv=5ft*xLH}f7oQMVpDJ3D)VY~KbGc%*Xu}OF~JL+sJeGb$09Rt>*68s&tzd%GbAMyhgUZfr~Ym@z=oEMY3s_fqdmR$(Dn4d;VT_Xwv;$43-25mL@qkvXNnwMnAk8$kQ#f_9(rAx!j9uVzm_&7A( z0xcR^88K#rIAPSMW3<%GO&a#)=Td7NC2~^$V*=bL6-_Gy=BwhDzu(ZzU)_N$bZ2mx z^_I@@Mon(dPoGEu)jwf8XpqM!?of#ThGLa2%M%v_MM($=Nd?^O9ZM7e#8QH&-5uJ~ zpp}uY3qbPa=Pc^f5uL#~cs)h*-df`wm)1$|IFHNtC|c42f5u>x%REx?$y9 zsMb*U6HW}ls^zKuuKl1TjTAkq3`r52Pr?mk!NDDOT~TnaGR`1bho{-5z#v{HtwZKw zMG>WLqpWpm>kk(%iHo!&-aj)E?o6|LQQeajVaO20Yg+g^02B#RKVEqTgQAL60s2pr zuR22zwm<=K=YpLL&_I7cFeuRQap^hFWs?m|mu&7laCYpBG2yaqq{mi2Iyn9^K2R!2 z$Z)oL?ZJMBG)cgTIAjMQFAVDbA`Sn_Y9`3wD{`Z}KRUiWe|lK1HRSZs%l%Ovs7v7c z*wHK1!bzaLxSCFUU%#FOJch+g(pq%;+Trv71rH5kA%80%U3o<;ykgy!w$WcAdDu_5 zzgnUF1+WbZsR4z!_=W#MIMCCDj89&nRu)AUcR#{LX}sG(lE%H>xd|{OSdZwwi}G<` zyIAWtF4prPS>s-kM+repnUERLQ6Nni7JY3xo%VqLaG{L!>lkL^F`AF#eT6BxYgWW< zDhsGhfC6q~{JQgcS@@^+-bK+)tugg~&?3qNH$2E;GtURVa_}vp`MaiW!7($WbnQB` z6s6T~L+INyU5>|cJe$_++NR0ZpI2K{ue;e^f{nf8&Y)E=*>x zz+U2}y?bJET+0S0DDI}c^9`8#AtpNx zhMO#Tue!Z?PbJ^|mL>66)%2%?$F3Q0P3xV9dbxNXe-d^2`1o?ecCalZGc3;4rw|QF zg7J%>xNV?ouawrxiV6*Ep7$1r85Z+hbV%EOR3(|o6l5c(heg>D@L!4%YlwPbdb z=B#&9d%R8uo%)Mcb;MhHju~sab3h#^3f$7(ZMuu!h0%BDyWCG<*5ke7xd-EZOcLO5 zkv{KaMC{>knV@pQ95XduDGc5V)WVhA>s-cp1~Z$@WIpWdPw2&t3+V~nWAFQ668&2d zA?*Pdui40u);$HXW*!x?IdJ5#CaZf4q8lV3?15N-((_$`68bEwwgk7E|GDn7OchlZsL2T8^@K^F83w zp*UiUvz~H{mfy7*aBz;sBWRPvVzG`W(I|E2Q&qK-0h@$7r~N&x#1-QvRa9kzkMdk4 zrq@tAS%i7BbI8tyX`1ICE);@GbNP{2d%U-YQClJi9uR6H}7cowr&g@?cs zUsr?Cf}O^298cGRf=0~fYVBr0ig%5$3v>t*=NIfrEX8WL4f;{4F^Lm zO5J>--|?;JFWUYHi;dO!m8X%&_7v;6 zEg%TL)LAah8=k*dSvAxX5ippqMVmo^9c+vbPjMplZ1)8S=vAE_F4xP)9HzZ>VHU}$ zGbgRew<^J5k3KYO>;Y)u2oVJZ9s$lt|V zUgN`w>&ps+V2Qr06LSZ=l1G@|5jv$qrk=`T=!u;cdpd+gkD0p%jiRjf_xARLG#|=) z#OnGwTi+^;_yZ^IZcx@DtUf#B4Af|0gQIrAZ$$qNSCIP!K)$5Fy5FLZ^BFJ1{ylJ= z!}XP$x$0u=bUjDny(P?>h6L=*oy^E^Jn&Jb51Aqd_hmpRxJt-V|FXbKSHajlN%igC z02sF!p^tv`1oM2^&waw9`LnmTaA3&-O0El#vm2B1tJ)=_5z7zg!8vw*Gw!A{YscCph{mt`0p r#M?13`f*zFw3Yqg-fIZK3PHKFZojs5#VGg;4T!q3wodWzr?Cx literal 21778 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 skill +@onready var status = (%Status as Status) +@onready var skill = (%Skill as Skill) +@onready var move = (%Move as Move) + +class InputData: + var action:String + var alive_time:float + +var skill_map = {} #input -> skill[] var input_list = [] #指令缓存 -# Called when the node enters the scene tree for the first time. func _ready(): - pass # Replace with function body. + for player_skill_res in Util.get_all_player_skill(): + var player_skill = player_skill_res as PlayerSkillCfg + add_skill(player_skill.action,player_skill_res) - -# Called every frame. 'delta' is the elapsed time since the previous frame. func _process(delta): - pass + update_input_alive(delta) + update_break() + update_move() + +func update_input_alive(delta): + var input_list_new = [] + for input in input_list: + input.alive_time -= delta + if input.alive_time > 0: + input_list_new.append(input) + input_list = input_list_new + +func update_break(): + for break_level_name in Enum.EBreakLevel: + var break_level = Enum.EBreakLevel[break_level_name] + if break_level <= status.break_level: + match break_level: + Enum.EBreakLevel.None: pass + Enum.EBreakLevel.Cancel: update_break_cancel() + Enum.EBreakLevel.Jump: update_break_jump() + Enum.EBreakLevel.Combo: update_break_combo() + Enum.EBreakLevel.Walk: update_break_walk() + +func update_break_cancel(): + update_break_by_level(Enum.EBreakLevel.Cancel) + +func update_break_jump(): + var index = input_list.find("jump") + if index == -1: + return + refresh_input(index) + skill.cancel_skill() + move.jump() + +func update_break_combo(): + update_break_by_level(Enum.EBreakLevel.Combo) + +func update_break_walk(): + if status.input_dir.length() > 0: + refresh_input(len(input_list)) + skill.cancel_skill() + +func update_break_by_level(break_level:Enum.EBreakLevel): + for i in range(0,len(input_list)): + var input = input_list[i] + var skillCfgList = [] + if input.action in skill_map: + skillCfgList.append_array(skill_map[input.action]) + if "any" in skill_map: + skillCfgList.append_array(skill_map["any"]) + for skillCfg in skillCfgList: + if skillCfg.break_level == break_level: + skill.cast_skill(skillCfg,status.input_dir) + refresh_input(i) + +func refresh_input(index:int): + if index >= len(input_list)-1: + input_list = [] + else: + input_list = input_list.slice(index+1) + +func update_move(): + if status.is_free_control: + status.move_dir = status.input_dir + +func add_input_action(action:String): + var new_input = InputData.new() + new_input.action = action + new_input.alive_time = Setting.input_alive_time + input_list.append(new_input) + +func add_skill(action:String,skillCfg:SkillCfg): + if not action in skill_map: + skill_map[action] = [] + skill_map[action].append(skillCfg) + diff --git a/script/character/player/input.gd b/script/character/player/input.gd index 1818274..f7c9019 100644 --- a/script/character/player/input.gd +++ b/script/character/player/input.gd @@ -1,9 +1,7 @@ extends Node -@export var test_skill_cfg:SkillCfg @onready var status = (%Status as Status) -@onready var skill = (%Skill as Skill) -@onready var move = (%Move as Move) +@onready var combo = (%Combo as Combo) func _ready(): SignalManager.connect("input_action_pressed",on_input_action_pressed) @@ -11,15 +9,10 @@ func _ready(): SignalManager.connect("input_action_move",on_input_action_move) func on_input_action_pressed(event:InputEvent): - if event.is_action("attack_light"): - skill.cast_skill(test_skill_cfg,Vector2(1,1)) - elif event.is_action("jump"): - move.jump() + combo.add_input_action(event.as_text()) func on_input_action_released(event:InputEvent): pass func on_input_action_move(input_dir): - if !status.is_free_control: - return - status.move_dir = input_dir + status.input_dir = input_dir diff --git a/script/character/skill.gd b/script/character/skill.gd index 330c00d..e4cffc1 100644 --- a/script/character/skill.gd +++ b/script/character/skill.gd @@ -12,9 +12,14 @@ func _process(delta): func cast_skill(cfg:SkillCfg,cast_dir:Vector2): status.is_free_control = false + status.is_skill_running = true + status.skill_dir = cast_dir play("animation_library/%s"%Util.get_resource_name(cfg)) -func _on_animation_finished(_anim_name): +func cancel_skill(): view.reset() status.is_free_control = true - + status.is_skill_running = false + +func _on_animation_finished(_anim_name): + cancel_skill() diff --git a/script/character/status.gd b/script/character/status.gd index ea03f20..5d33728 100644 --- a/script/character/status.gd +++ b/script/character/status.gd @@ -25,6 +25,11 @@ class_name Status @export var is_jumped : bool #是否已跳跃 @export_category("技能状态") +@export var is_skill_running : bool #技能是否正在释放 + +@export_category("玩家输入状态") +@export var input_dir : Vector2 #指令方向 +@export var skill_dir : Vector2 #技能释放方向 @export var stance : Enum.EStance #技能姿态 @export var break_level : Enum.EBreakLevel #打断等级 diff --git a/script/config/player_skill_cfg.gd b/script/config/player_skill_cfg.gd index be1fc6c..15fa5e9 100644 --- a/script/config/player_skill_cfg.gd +++ b/script/config/player_skill_cfg.gd @@ -6,3 +6,4 @@ class_name PlayerSkillCfg @export var weapon : WeaponCfg @export var stance_from : Enum.EStance @export var stance_to : Enum.EStance +@export_enum("light_attack","heavy_attack","flash") var action : String = "light_attack" diff --git a/script/config/skill_cfg.gd b/script/config/skill_cfg.gd index f546177..c8bb1ed 100644 --- a/script/config/skill_cfg.gd +++ b/script/config/skill_cfg.gd @@ -5,6 +5,7 @@ class_name SkillCfg @export var name : String @export var skill_animation : Animation +@export var break_level : Enum.EBreakLevel = Enum.EBreakLevel.Combo var _has_animation : bool @export var has_animation : bool :