From 2c52845949937053e8ee091e9b490085b6ef2756 Mon Sep 17 00:00:00 2001 From: chendian <-> Date: Sat, 31 Aug 2024 07:02:19 +0800 Subject: [PATCH] backup --- .../hero01_fist_air_skill01.tres | 16 ++------- .../hero01_fist_attack04.tres | 12 +++---- .../hero01_long_air_attack03.tres | 12 +++---- render/shader/effect_skew1.gdshader | 6 ++-- render/shader/effect_slash.gdshader | 2 +- .../character/_design_monster.aseprite | Bin 13081 -> 12347 bytes .../animation/character/_design_monster.png | Bin 17297 -> 15597 bytes scene/ai/bullet01.tscn | 22 ++++++++---- scene/character/character.tscn | 7 ++-- script/ai/action/action_find_target.gd | 3 +- script/ai/action/action_stop_move.gd | 3 +- script/ai/action_blackboard.gd | 4 +-- .../action_blackboard_add.gd | 6 ++-- .../action_blackboard_check.gd | 34 +++++++++--------- .../action_blackboard_set.gd | 2 +- script/character/ai/monster_ai.gd | 2 +- script/character/battle.gd | 3 +- script/character/character.gd | 11 ++++-- script/character/skill.gd | 5 --- 19 files changed, 70 insertions(+), 80 deletions(-) diff --git a/config/skill_player_weapon/hero01_fist_air_skill01.tres b/config/skill_player_weapon/hero01_fist_air_skill01.tres index 57b70ba..8c62547 100644 --- a/config/skill_player_weapon/hero01_fist_air_skill01.tres +++ b/config/skill_player_weapon/hero01_fist_air_skill01.tres @@ -1,12 +1,7 @@ -[gd_resource type="Resource" script_class="SkillWeaponCfg" load_steps=9 format=3 uid="uid://dkxgra6y2u30l"] +[gd_resource type="Resource" script_class="SkillWeaponCfg" load_steps=4 format=3 uid="uid://dkxgra6y2u30l"] -[ext_resource type="Resource" uid="uid://by6jd5xqjml2m" path="res://config/attack/blunt_starfall_1.tres" id="1_p1fp6"] [ext_resource type="Script" path="res://script/config/skill_weapon_cfg.gd" id="2_mje6b"] -[ext_resource type="Resource" uid="uid://57sukcw6ewqo" path="res://config/attack_box/circle_normal.tres" id="2_nvq3h"] -[ext_resource type="Resource" uid="uid://d26ok8as50xe5" path="res://config/attack/blunt_starfall_2.tres" id="3_ffp0l"] [ext_resource type="Animation" uid="uid://dxgqn5fa7aokj" path="res://resource/skill_animation/hero01_fist_air_skill01.tres" id="3_q461t"] -[ext_resource type="Resource" uid="uid://decgfcx2xsj8i" path="res://config/attack_box/circle_mid.tres" id="4_13pbo"] -[ext_resource type="SpriteFrames" uid="uid://cajgs8smbkjan" path="res://resource/animation/character/hero01_fist_skill01.aseprite" id="4_seudu"] [ext_resource type="Resource" uid="uid://c6alg8pmqfdxm" path="res://config/weapon/fist.tres" id="5_70pp4"] [resource] @@ -18,13 +13,8 @@ skill_animation = ExtResource("3_q461t") range = 0.0 free_lock = false ignore_push = true -attack1 = ExtResource("1_p1fp6") -attack1_box = ExtResource("2_nvq3h") -attack2 = ExtResource("3_ffp0l") -attack2_box = ExtResource("4_13pbo") -stance_from = 10 +stance_from = 100 stance_to = 0 break_level = 3 refresh_animation = false -sprite_frames = ExtResource("4_seudu") -animation_name = "fist_air_skill01" +animation_name = "" diff --git a/config/skill_player_weapon/hero01_fist_attack04.tres b/config/skill_player_weapon/hero01_fist_attack04.tres index c27a818..f31a647 100644 --- a/config/skill_player_weapon/hero01_fist_attack04.tres +++ b/config/skill_player_weapon/hero01_fist_attack04.tres @@ -1,10 +1,8 @@ -[gd_resource type="Resource" script_class="SkillWeaponCfg" load_steps=7 format=3 uid="uid://b4aysymwqtvtd"] +[gd_resource type="Resource" script_class="SkillWeaponCfg" load_steps=5 format=3 uid="uid://b4aysymwqtvtd"] [ext_resource type="Resource" uid="uid://duu05cr8gk5v4" path="res://config/attack/blunt_mid_hit_blow.tres" id="1_s12sc"] -[ext_resource type="Resource" uid="uid://diedb7vw7eyxp" path="res://config/attack_box/box_mid.tres" id="2_0lps6"] [ext_resource type="Script" path="res://script/config/skill_weapon_cfg.gd" id="2_mhuew"] [ext_resource type="Animation" uid="uid://6u3dhxly760l" path="res://resource/skill_animation/hero01_fist_attack04.tres" id="3_bst70"] -[ext_resource type="SpriteFrames" uid="uid://bhsotj76tuovy" path="res://resource/animation/character/hero01_fist_attack.aseprite" id="4_hyek5"] [ext_resource type="Resource" uid="uid://c6alg8pmqfdxm" path="res://config/weapon/fist.tres" id="5_gn3tt"] [resource] @@ -17,10 +15,8 @@ range = 0.0 free_lock = false ignore_push = false attack1 = ExtResource("1_s12sc") -attack1_box = ExtResource("2_0lps6") -stance_from = 3 -stance_to = 4 +stance_from = 100 +stance_to = 0 break_level = 3 refresh_animation = false -sprite_frames = ExtResource("4_hyek5") -animation_name = "fist_attack04" +animation_name = "" diff --git a/config/skill_player_weapon/hero01_long_air_attack03.tres b/config/skill_player_weapon/hero01_long_air_attack03.tres index aecc40e..aee8c40 100644 --- a/config/skill_player_weapon/hero01_long_air_attack03.tres +++ b/config/skill_player_weapon/hero01_long_air_attack03.tres @@ -1,10 +1,8 @@ -[gd_resource type="Resource" script_class="SkillWeaponCfg" load_steps=7 format=3 uid="uid://b705py5rht5i3"] +[gd_resource type="Resource" script_class="SkillWeaponCfg" load_steps=5 format=3 uid="uid://b705py5rht5i3"] [ext_resource type="Resource" uid="uid://bv4uoey1liqoq" path="res://config/attack/sharp_heavy_hit_blow.tres" id="1_5rgpl"] [ext_resource type="Script" path="res://script/config/skill_weapon_cfg.gd" id="2_0x7hh"] -[ext_resource type="Resource" uid="uid://diedb7vw7eyxp" path="res://config/attack_box/box_mid.tres" id="2_2wu8a"] [ext_resource type="Animation" uid="uid://bh5s2t3cbobpp" path="res://resource/skill_animation/hero01_long_air_attack03.tres" id="3_1erk8"] -[ext_resource type="SpriteFrames" uid="uid://ce83cuqwgwwi4" path="res://resource/animation/character/hero01_long_attack.aseprite" id="4_wrd60"] [ext_resource type="Resource" uid="uid://cy3wwalxeyro0" path="res://config/weapon/long.tres" id="5_u3vas"] [resource] @@ -17,10 +15,8 @@ range = 0.0 free_lock = false ignore_push = false attack1 = ExtResource("1_5rgpl") -attack1_box = ExtResource("2_2wu8a") -stance_from = 12 -stance_to = 13 +stance_from = 100 +stance_to = 0 break_level = 3 refresh_animation = false -sprite_frames = ExtResource("4_wrd60") -animation_name = "long_air_attack03" +animation_name = "" diff --git a/render/shader/effect_skew1.gdshader b/render/shader/effect_skew1.gdshader index c164c3e..9ee4327 100644 --- a/render/shader/effect_skew1.gdshader +++ b/render/shader/effect_skew1.gdshader @@ -8,15 +8,15 @@ uniform float distortionView : hint_range(0.0, 0.3, 0.005) = 0.03; uniform float speedView : hint_range(0.0, 1.0, 0.005) = 0.5; uniform sampler2D screenTexture : hint_screen_texture; -void fragment() +void fragment() { vec4 col_mask = texture(tex_mask, UV); - + float noiseValueX = (texture(noise, UV + (TIME * speedView)).r * 2.0) - 1.0; // Range: -1.0 to 1.0 float noiseValueY = (texture(noise, UV + (TIME * speedView)).r * 2.0) - 1.0; // Range: -1.0 to 1.0 vec2 noiseDistort = vec2(noiseValueX, noiseValueY) * distortionView * col_mask.r;; vec3 distortedScreenTexture = vec3(texture(screenTexture, SCREEN_UV + noiseDistort).rgb); - + ALBEDO = distortedScreenTexture; ALPHA = col_mask.r; } \ No newline at end of file diff --git a/render/shader/effect_slash.gdshader b/render/shader/effect_slash.gdshader index cc44e42..54187a0 100644 --- a/render/shader/effect_slash.gdshader +++ b/render/shader/effect_slash.gdshader @@ -14,7 +14,7 @@ void fragment() { vec4 col_mask = texture(tex_mask, UV); vec4 col = (col_noise + col_main) * col_mask; col = texture(tex_gradient, vec2(clamp(col.r,0.0,1.0),0.5)); - + //vec4 col_mask2 = texture(tex_mask2, UV); //float noiseValueX = col_noise.r; //float noiseValueY = col_noise.r; diff --git a/resource/animation/character/_design_monster.aseprite b/resource/animation/character/_design_monster.aseprite index 834b5c6376b2d335d8151a294976ed674a3217ef..2f6f08267b4d94874f4304e331be02491355056a 100644 GIT binary patch delta 524 zcmbQ4wmX5{+JJ%K!BU=y?3Ii;8yg?9)^{*4Ft94HG8i!=GW=%(a=<{2L7Jgr&fH6< zc@HS?FbD7pocz81aEfo^G>(E_A2lB_HfgAAx*(igbZFOs3DSwjVsF(2Y&bqoM9M$( zh5O2hFE2iwKi_1(rQND2OXad0*H?Xc)PKrt-^CXHt1+QQQm0?Ow8{U_YFD+5*NCgv zSpN;ff-8nc-)z31J&CdY70`Z=dyE;vklZ7|payhL?d48EWe#h&}*SSrcAzZRURxq$X-B+W}e#@gL zg`Z>3{n1-)Y5Y)Tp7o#N-!`(37H{3%%DvCYIK;=@XL#{0|*847Yf%4r#%H7@j98RlvD zTQ}v@39EI7W(UY6c~0J#*&5QV?Qr(bL(Qyg-T3MQwc$Z7aW=dLo+mdq2uxz!?8$dQ F1pqK=;6VTY delta 708 zcmdm;Ff)x^(wKqa!BXCd?3Ije8yg?9CMPj4Ft94HGMF%AF#Kl%a=<{0L4=`V&e99J zc^MRVoE`ZSPX1nhIOPv3OYldn*OypdaH{pr$z8{+uAR1VW1#Johgz|VkBA(Pwr7%U zY76{nGvRF}&)N0y(-`M|lZf!${FZGJV|^XaV30-n3~@*nDKp3cEjoJnB<}$Q9+yC_ zAD6z|=bNhfP{4rkjYs6Ov}c?L4+a%2RxX>gZqb~R%ewZxyt*ha@qkTHufNhGWuada zv~^BanwYZiJTw)mdUs!?QN3)FTWVm!p#|@xCohRkS#d6l`AWTArHu{PdUgf_hD0Rm zl^EE8)<1rjsK8QD!Ld?tK~uYiC`*pQ0~R*9y1FJU35KedjBJZH-{b`Pz#VJ^6N4*5 zERqqd43a=2l6RbBU=euq%(qRa?M+Ubj=~8xVV;DhMvkP@)7HLVIl)rW#MsKf5F@5` zB>`*7qBQf9kg07NV(IoSLBcCD z)$V-ua%0S$ek=VU^x5DretzHzjb{U*cMg>ONIy}TLi$4 zoqIlz?|=da^M$zSMYenHH{_f;)06hMT2+9R;jN?F*SmkrmQ~N_N~$_G!DhSU>2KHe z<<7j;)Ke@p*Q31bzTBGnuMcx=VyxmeePgYDkgpmJwuzm=m?0WrlP?1o*s9($2RRuG zIG7KdnZ4#Z-($1T4}nWrKYvtkVVIKA5u=ov7J4zPQvJyS?Y0B{A5)g?O;g(aXWtad a2o~LAxnOfS8O#`bC)@KTZN9;otOfvxY4|z- diff --git a/resource/animation/character/_design_monster.png b/resource/animation/character/_design_monster.png index bb702c44cc40bdd7138dafd184111329b9e947e2..7cbc324067df234dcbca89b04dc183e40f0b2bee 100644 GIT binary patch literal 15597 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 literal 17297 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

;%3rV!)Q`P2#TTvymlNdLm_`lw!Dgy~vm z>r^i27CTAR3lnPHvShW6DWcNS8Sg{Rm-5^{<|PT=*~PN5>}rO7S^}){3dV2@BdXNNE%c0>sjH>r|TS3gFo~9v#h6e1Z~l6U{gNC^1|fXwXnI zqV;)F=E3K8?s-+2VC`xZEt57aHC~(=-c`H_iKx~SZxlDG$4b=iNQ2jAUE1X)(VCtN zdB3nc)Gi2ATp_jVI|F#8+_X~}^jHbgZK3U~vu$nXmxkMg2@rlhuhh7FwS4!mWM;$^ z=G=jT@Fdi&8nGVHQ4=+7lRvVhXL=ZPG@eE zS&J9lyfJ2!9d*p5jC7l0mA!=Zost!AvjY@hs{~OiE7-miZ(GvZC?myE@E&&#HrV~T zEVA2AD{3t6aG&KUsK2WAuQ5ori!`|k(efgN&+*}Jz4-?Ar!QLjyC?Fx6Qm%56uitf zY4T3ZoC3^ls!Gl2yjmyBd6N^TSXvz^LuWL$B<<`p^V@-8zNf9Yr9Cz5Y=Z2{8zTUs zQM;B$elN6puuK4BI%7(ufIy>e8`Aqo6AO&Au5DmDs9MA#A;~Oz(oL;PW8v5jU(W>@t54Y;O$SEA3fVwze&v_j$du5q&V(oa3RAnl4eV5 zM5k|^yP~wjk2(XW{~g<8c>|Z=s6Bh&GNYh}r_XGCvEi!A-TCrYl1HRbelZG~cSAUI zw?ElGT3p(56O?bfOQAk4d@msfC;StCX<S`{8 z(WLsOUr_V#@<&Vx4i54-CdHVtcdzj`^4&43=+o+X^(*p1s}4(*CNKn&(YKgC-y^a)5|{ z!QA*0*p9}2B?OnV!eA#1j`L%6^>c{P15mSc@m+ILi(0Rs^Q>T@7XPf+TMbZ+L&$1?9%WGtVwyVM zoh|=UOxDBY5|=9CRb)T1T?@ z!m{Te7Jy|gYp&==k&IT2LJNaNWixtO?KXv`L>7a=?&$Ie-#_Irmn3084!lfGx?d&X z3@*MmzH7qO6P=jgQE3Tam~XM$>sq`e9>2{Kq_558bSEglG2zwO#ucf?HN7e9Rsw*^ z`Q^(d3s*7M_kLe=ur^NFd7I?lNEkR@<65hR;Ygr{(!-#-94iUr;-JPaOdS}T@&C0l z5+!z&r2kmAlrA=*b`C~wMJmRL??b+3p};&R12*vkU^IIQ^f(pN-Q_P78oNXDUlk5 z3OkG)XQJf%Xj~6AKbYa3hwiN-cuQRzCtcW2;i0WH!)A4@d)F?Ne?kwBGu#4#DvGNJHn>Xf;2nX#isGg0hAvuysd`@V zKUZUB-UPyY&{!}R5lo?M@rrofnOVud@Hh=SQb=pF+z2d&J8c!eD)J*T;h2uFFeu3c<(L@*d$IOA$#nA{@rPizqKBrj zJsxwvN>$w)vBc%b+q*HzamLJ70Hv3((8U3^O(&?VoEzRE&sC^^I|O^Sro@+UWCt!t zq60?rHCaOR7ZF038nJFAV1QbbR9VZ{qj!B4>MoE3Y7vdn#c_~)VmKc9%!NK30|XM8 zVV{`o;i8M&N%QSRy;crUum?psYnJd326Kxofr6o<+|RZFt5q1C^5Apc`b$h~qSCRC zdxnaxF+41dI}_xd^h+PT$E@6cDN-a=fEuZFKTpB>Q5fYz6`CR+&%Ky|(Va?>|2;l8a!BH3QqjiD1cDSRiS zw;?#_$^a-&L+Z>gUkH`FTMW|=s8SVyg{?%gp12IwLeZR1RXF^8#N!a8cJ67GGXAH! zcvV0b=lKuL2G?8NgD@EDnVsJS0E7D)-?dyHe%xqeC)8$%s?A=f%x}#0U=>>rzw;zS zdpt(vk&@XlZ35abZLfcGFpS;_MCM}c)-btuAA2vd^2Klo)K&_Dtzyj)zQR z%u}^(#xWipIZeJ(gB3JV=U6C*E1(#tfQ;xvzE9C*zm4t>k_cT>p%q*#us6yU^RPZC zH(sor()CviTKR)|wYGQPO{!toNsuVl&q18nn*$4GMm&BwX2i9`z$Bj7-q;ZDbm07j zZ$1Ts;jc??Y(ktn$l6YssKhMD<^wiHAt)QPuBrfA?SZ%5EcpN=0io+p3n2v%p_ypx zd%m^}D|3V$betm{Ae}##yo*%XqrCFWVu$5`GUkI}U79R+Kl)eU-cB4j>#l_PuQ>8@ z+6zMPWPZCm#$e1no-EY-F&o&ffV|Uk94s)qGm7xivXxWh(JIr%fJh;&-p_y|lFsR< ztc%+T3-KnpNtpKheL7Q%6>a8qPKWGZ+8wFy$hMzB#IG)PT7%uGDld3u~dz; zeY{gHsJ!xI#WENQ!dC!41oJVE0l_XDrTnt(2mR}DkhJF?X`+oEGesJye^6wAf(dCD(pAMxQ zoZ*D!ACQN^x6*)0*oBslh9K0KpKfxu5eZH int: - character.move_stop() + var player_id: int = Global.character_mgr.get_player_id() + character.set_target(player_id) return SUCCESS diff --git a/script/ai/action/action_stop_move.gd b/script/ai/action/action_stop_move.gd index 40d0669..a45a0f4 100644 --- a/script/ai/action/action_stop_move.gd +++ b/script/ai/action/action_stop_move.gd @@ -2,6 +2,5 @@ extends Action class_name ActionStopMove func run(character: Character, blackboard: Blackboard) -> int: - var player_id: int = Global.character_mgr.get_player_id() - character.set_target(player_id) + character.move_stop() return SUCCESS diff --git a/script/ai/action_blackboard.gd b/script/ai/action_blackboard.gd index 7e4d23a..b7637b1 100644 --- a/script/ai/action_blackboard.gd +++ b/script/ai/action_blackboard.gd @@ -3,8 +3,8 @@ class_name ActionBlackboard extends Action func run(character: Character, blackboard: Blackboard) -> int: - return execute(character, blackboard) + return execute(character, blackboard) func execute(character: Character, blackboard: Blackboard) -> int: - return FAILURE + return FAILURE diff --git a/script/ai/action_blackboard/action_blackboard_add.gd b/script/ai/action_blackboard/action_blackboard_add.gd index de65577..b63edf3 100644 --- a/script/ai/action_blackboard/action_blackboard_add.gd +++ b/script/ai/action_blackboard/action_blackboard_add.gd @@ -6,6 +6,6 @@ class_name ActionBlackboardAdd func execute(character: Character, blackboard: Blackboard) -> int: - var left: int = blackboard.get_value(key, 0) - blackboard.set(key, left+value) - return SUCCESS + var left: int = blackboard.get_value(key, 0) + blackboard.set_value(key, left+value) + return SUCCESS diff --git a/script/ai/action_blackboard/action_blackboard_check.gd b/script/ai/action_blackboard/action_blackboard_check.gd index e078e0c..d9a4b17 100644 --- a/script/ai/action_blackboard/action_blackboard_check.gd +++ b/script/ai/action_blackboard/action_blackboard_check.gd @@ -2,12 +2,12 @@ extends ActionBlackboard class_name ActionBlackboardCheck enum Operators { - EQUAL, - NOT_EQUAL, - GREATER, - LESS, - GREATER_EQUAL, - LESS_EQUAL, + EQUAL, + NOT_EQUAL, + GREATER, + LESS, + GREATER_EQUAL, + LESS_EQUAL, } @export var key: String @@ -16,15 +16,13 @@ enum Operators { func execute(character: Character, blackboard: Blackboard) -> int: - var left: Variant = blackboard.get_value(key, 0) - var result: bool = false - - match operator: - Operators.EQUAL: result = left == value - Operators.NOT_EQUAL: result = left != value - Operators.GREATER: result = left > value - Operators.LESS: result = left < value - Operators.GREATER_EQUAL: result = left >= value - Operators.LESS_EQUAL: result = left <= value - - return SUCCESS if result else FAILURE \ No newline at end of file + var left: Variant = blackboard.get_value(key, 0) + var result: bool = false + match operator: + Operators.EQUAL: result = left == value + Operators.NOT_EQUAL: result = left != value + Operators.GREATER: result = left > value + Operators.LESS: result = left < value + Operators.GREATER_EQUAL: result = left >= value + Operators.LESS_EQUAL: result = left <= value + return SUCCESS if result else FAILURE diff --git a/script/ai/action_blackboard/action_blackboard_set.gd b/script/ai/action_blackboard/action_blackboard_set.gd index 871cff4..e267dc5 100644 --- a/script/ai/action_blackboard/action_blackboard_set.gd +++ b/script/ai/action_blackboard/action_blackboard_set.gd @@ -6,5 +6,5 @@ class_name ActionBlackboardSet func execute(character: Character, blackboard: Blackboard) -> int: - blackboard.set(key, value) + blackboard.set_value(key, value) return SUCCESS diff --git a/script/character/ai/monster_ai.gd b/script/character/ai/monster_ai.gd index d5953df..608cea2 100644 --- a/script/character/ai/monster_ai.gd +++ b/script/character/ai/monster_ai.gd @@ -1,5 +1,5 @@ extends AI class_name MonsterAI -func on_process(): +func on_process(delta): pass diff --git a/script/character/battle.gd b/script/character/battle.gd index 0bf65a8..b5cd735 100644 --- a/script/character/battle.gd +++ b/script/character/battle.gd @@ -231,7 +231,8 @@ func settle(hit_info: HitInfo) -> bool: character_to.set_pause_time(pause_time) #全局特效 - Global.camera_mgr.effect(pause_time) + if not is_remote: + Global.camera_mgr.effect(pause_time) #伤害跳字 character_to.show_hit_damage(damage) diff --git a/script/character/character.gd b/script/character/character.gd index 2a28c9f..033f121 100644 --- a/script/character/character.gd +++ b/script/character/character.gd @@ -9,6 +9,7 @@ class_name Character @onready var skill: Skill = (%Skill as Skill) @onready var battle: Battle = (%Battle as Battle) @onready var effect: Effect = (%Effect as Effect) +@onready var move: Move = (%Move as Move) func init(id: int, cfg: CharacterCfg, team: Enum.ETeam, owner_id: int): @@ -123,7 +124,9 @@ func set_pos(pos: Vector3): func move_to(dir: Vector2): set_status("move_dir", dir) -func move_stop(): set_status("move_dir", Vector2.ZERO) +func move_stop(): + set_status("move_dir", Vector2.ZERO) + move.stop() func add_buff(buff_name: String, duration: float, ignore_pause: bool = false): buff.add_buff(buff_name, duration, ignore_pause) @@ -182,9 +185,11 @@ func get_character_owner() -> Character: var owner: Character = Global.character_mgr.get_character(status.owner_id) as Character if owner: return owner return self - + + func attack1() -> bool: return battle.character_attack1() - + + func attack2() -> bool: return battle.character_attack2() diff --git a/script/character/skill.gd b/script/character/skill.gd index a07316f..58a8023 100644 --- a/script/character/skill.gd +++ b/script/character/skill.gd @@ -47,17 +47,12 @@ func cast_skill(cfg: SkillCfg, cast_dir: Vector2): var animation_name: String = "animation_library/%s" % Util.get_resource_name(cfg) if has_animation(animation_name): status.speed_up_rate = -1 - status.skill_move_speed = 0 - status.skill_float_speed = 0 status.is_free_control = false status.is_free_turn = false status.is_skill_running = true status.skill_cfg = cfg status.skill_dir = cast_dir status.break_level = Enum.EBreakLevel.None - status.speed_down_push_rate = 0 - status.skill_move_stop = false - status.is_speed_y_freeze = false if cast_dir.x != 0: status.is_right = cast_dir.x > 0 play(animation_name, -1, Setting.animation_speed_scale) else: