From ef081780facfe8f378216b32efd9c33fc5d075d5 Mon Sep 17 00:00:00 2001 From: chendian <-> Date: Fri, 31 Jan 2025 22:05:55 +0800 Subject: [PATCH] =?UTF-8?q?fist=20skill=2003=EF=BC=8C=E9=95=9C=E5=A4=B4?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/attack/blunt_mid_hit_down.tres | 4 +- config/attack/blunt_mid_hit_down_forward.tres | 18 +++ config/attack_box/box_high.tres | 14 ++ config/attack_box/box_large.tres | 4 +- config/attack_box/circle_large.tres | 4 +- config/attack_box/circle_mid.tres | 2 +- config/attack_box/circle_normal.tres | 4 +- config/attack_box/circle_normal_thin.tres | 1 + .../hero01_fist_air_attack03.tres | 4 +- .../hero01_fist_skill01_add.tres | 33 ++++ .../hero01_fist_skill02.tres | 45 +++--- .../hero01_fist_skill03.tres | 13 +- .../hero01_long_air_skill02.tres | 22 ++- .../hero01_long_stab02.tres | 1 - .../hero01_long_stab03.tres | 1 - .../hero01_short_attack03.tres | 4 +- .../hero01_short_skill01.tres | 1 - .../hero01_short_stab01.tres | 1 - render/trail_mesh/flare_blunt.tres | 2 +- .../character/hero01_fist_skill01.aseprite | Bin 44729 -> 48002 bytes .../character/hero01_fist_skill01.png | Bin 19780 -> 20570 bytes .../character/hero01_soul_move.aseprite | Bin 9194 -> 9509 bytes .../animation/character/hero01_soul_move.png | Bin 214 -> 365 bytes .../hero01_fist_skill01_add.tres | 145 ++++++++++++++++++ .../skill_animation/hero01_fist_skill02.tres | 136 +++++++--------- .../skill_animation/hero01_fist_skill03.tres | 41 ++--- .../skill_animation/hero01_long_skill01.tres | 2 +- .../skill_animation/hero01_long_skill02.tres | 14 +- .../animation_library.tres | 10 +- scene/ai/bullet_simple.tscn | 2 +- scene/ai/monster01.tscn | 2 +- scene/character/character.tscn | 8 +- scene/effect/particle/_particle_fist1.tscn | 9 +- .../effect/particle/hero01_fist_skill03.tscn | 10 ++ script/character/battle.gd | 19 ++- script/character/skill.gd | 1 + script/manager/camera_manager.gd | 4 +- 37 files changed, 389 insertions(+), 192 deletions(-) create mode 100644 config/attack/blunt_mid_hit_down_forward.tres create mode 100644 config/attack_box/box_high.tres create mode 100644 config/skill_player_weapon/hero01_fist_skill01_add.tres create mode 100644 resource/skill_animation/hero01_fist_skill01_add.tres create mode 100644 scene/effect/particle/hero01_fist_skill03.tscn diff --git a/config/attack/blunt_mid_hit_down.tres b/config/attack/blunt_mid_hit_down.tres index c9ad0fc..2c6ce56 100644 --- a/config/attack/blunt_mid_hit_down.tres +++ b/config/attack/blunt_mid_hit_down.tres @@ -1,4 +1,4 @@ -[gd_resource type="Resource" script_class="AttackCfg" load_steps=2 format=3 uid="uid://dr70nrjjk754r"] +[gd_resource type="Resource" script_class="AttackCfg" load_steps=2 format=3 uid="uid://cdkjjljp81p56"] [ext_resource type="Script" uid="uid://bm8fn2yciam1g" path="res://script/config/attack_cfg.gd" id="1_esnha"] @@ -12,7 +12,7 @@ is_floating = true is_rebound = false is_throw_check = false is_throw_end = false -hit_back_speed = 7.0 +hit_back_speed = 0.0 hit_up_speed = -7.0 hit_back_duration = 0.05 hit_up_duration = 0.05 diff --git a/config/attack/blunt_mid_hit_down_forward.tres b/config/attack/blunt_mid_hit_down_forward.tres new file mode 100644 index 0000000..c9ad0fc --- /dev/null +++ b/config/attack/blunt_mid_hit_down_forward.tres @@ -0,0 +1,18 @@ +[gd_resource type="Resource" script_class="AttackCfg" load_steps=2 format=3 uid="uid://dr70nrjjk754r"] + +[ext_resource type="Script" uid="uid://bm8fn2yciam1g" path="res://script/config/attack_cfg.gd" id="1_esnha"] + +[resource] +script = ExtResource("1_esnha") +damage_rate = 1.0 +break_level = 2 +stun_attack = 10.0 +damage_type = 1 +is_floating = true +is_rebound = false +is_throw_check = false +is_throw_end = false +hit_back_speed = 7.0 +hit_up_speed = -7.0 +hit_back_duration = 0.05 +hit_up_duration = 0.05 diff --git a/config/attack_box/box_high.tres b/config/attack_box/box_high.tres new file mode 100644 index 0000000..25e7d39 --- /dev/null +++ b/config/attack_box/box_high.tres @@ -0,0 +1,14 @@ +[gd_resource type="Resource" script_class="AttackBoxCfg" load_steps=3 format=3 uid="uid://qp5sy3u3rlpe"] + +[ext_resource type="Script" uid="uid://dekrsow0vntqs" path="res://script/config/attack_box_cfg.gd" id="1_05sfw"] + +[sub_resource type="BoxShape3D" id="BoxShape3D_87jhu"] +size = Vector3(1, 1.6, 1) + +[resource] +script = ExtResource("1_05sfw") +shape = SubResource("BoxShape3D_87jhu") +offset = Vector2(0.5, 0.8) +is_throw = false +is_direct = false +is_hit_self = false diff --git a/config/attack_box/box_large.tres b/config/attack_box/box_large.tres index 16ed6ec..c5f52f6 100644 --- a/config/attack_box/box_large.tres +++ b/config/attack_box/box_large.tres @@ -3,12 +3,12 @@ [ext_resource type="Script" uid="uid://dekrsow0vntqs" path="res://script/config/attack_box_cfg.gd" id="1_661yg"] [sub_resource type="BoxShape3D" id="BoxShape3D_87jhu"] -size = Vector3(2, 0.8, 1) +size = Vector3(2, 1.2, 1) [resource] script = ExtResource("1_661yg") shape = SubResource("BoxShape3D_87jhu") -offset = Vector2(1, 0.4) +offset = Vector2(1, 0.6) is_throw = false is_direct = false is_hit_self = false diff --git a/config/attack_box/circle_large.tres b/config/attack_box/circle_large.tres index 204140b..395c0fc 100644 --- a/config/attack_box/circle_large.tres +++ b/config/attack_box/circle_large.tres @@ -3,13 +3,13 @@ [ext_resource type="Script" uid="uid://dekrsow0vntqs" path="res://script/config/attack_box_cfg.gd" id="1_aqwel"] [sub_resource type="CylinderShape3D" id="CylinderShape3D_pmh6g"] -height = 0.8 +height = 1.2 radius = 1.0 [resource] script = ExtResource("1_aqwel") shape = SubResource("CylinderShape3D_pmh6g") -offset = Vector2(0, 0) +offset = Vector2(0, 0.6) is_throw = false is_direct = false is_hit_self = false diff --git a/config/attack_box/circle_mid.tres b/config/attack_box/circle_mid.tres index 3cf3270..c604ece 100644 --- a/config/attack_box/circle_mid.tres +++ b/config/attack_box/circle_mid.tres @@ -9,7 +9,7 @@ radius = 0.6 [resource] script = ExtResource("1_w2uwt") shape = SubResource("CylinderShape3D_pmh6g") -offset = Vector2(0, 0) +offset = Vector2(0, 0.4) is_throw = false is_direct = false is_hit_self = false diff --git a/config/attack_box/circle_normal.tres b/config/attack_box/circle_normal.tres index 6556652..947f669 100644 --- a/config/attack_box/circle_normal.tres +++ b/config/attack_box/circle_normal.tres @@ -1,6 +1,6 @@ [gd_resource type="Resource" script_class="AttackBoxCfg" load_steps=3 format=3 uid="uid://57sukcw6ewqo"] -[ext_resource type="Script" path="res://script/config/attack_box_cfg.gd" id="1_8rhve"] +[ext_resource type="Script" uid="uid://dekrsow0vntqs" path="res://script/config/attack_box_cfg.gd" id="1_8rhve"] [sub_resource type="CylinderShape3D" id="CylinderShape3D_pmh6g"] height = 0.8 @@ -11,3 +11,5 @@ script = ExtResource("1_8rhve") shape = SubResource("CylinderShape3D_pmh6g") offset = Vector2(0, 0) is_throw = false +is_direct = false +is_hit_self = false diff --git a/config/attack_box/circle_normal_thin.tres b/config/attack_box/circle_normal_thin.tres index 87c94c6..13dff20 100644 --- a/config/attack_box/circle_normal_thin.tres +++ b/config/attack_box/circle_normal_thin.tres @@ -11,3 +11,4 @@ shape = SubResource("CylinderShape3D_pmh6g") offset = Vector2(0, 0.5) is_throw = false is_direct = false +is_hit_self = false diff --git a/config/skill_player_weapon/hero01_fist_air_attack03.tres b/config/skill_player_weapon/hero01_fist_air_attack03.tres index 143b54f..99f3db3 100644 --- a/config/skill_player_weapon/hero01_fist_air_attack03.tres +++ b/config/skill_player_weapon/hero01_fist_air_attack03.tres @@ -1,8 +1,8 @@ [gd_resource type="Resource" script_class="SkillWeaponCfg" load_steps=7 format=3 uid="uid://0nysxqwoq5tj"] -[ext_resource type="Resource" uid="uid://dr70nrjjk754r" path="res://config/attack/blunt_mid_hit_down.tres" id="1_w8lg4"] +[ext_resource type="Resource" uid="uid://dr70nrjjk754r" path="res://config/attack/blunt_mid_hit_down_forward.tres" id="1_w8lg4"] [ext_resource type="Resource" uid="uid://bqejjllfy03h3" path="res://config/attack_box/box_normal.tres" id="2_2gnst"] -[ext_resource type="Script" path="res://script/config/skill_weapon_cfg.gd" id="3_ghxjs"] +[ext_resource type="Script" uid="uid://dgwtu2wj5033u" path="res://script/config/skill_weapon_cfg.gd" id="3_ghxjs"] [ext_resource type="Animation" uid="uid://dfe8krunqdf3m" path="res://resource/skill_animation/hero01_fist_air_attack03.tres" id="4_y802t"] [ext_resource type="SpriteFrames" uid="uid://bhsotj76tuovy" path="res://resource/animation/character/hero01_fist_attack.aseprite" id="5_pslv2"] [ext_resource type="Resource" uid="uid://c6alg8pmqfdxm" path="res://config/weapon/fist.tres" id="6_t7m8t"] diff --git a/config/skill_player_weapon/hero01_fist_skill01_add.tres b/config/skill_player_weapon/hero01_fist_skill01_add.tres new file mode 100644 index 0000000..d7e494e --- /dev/null +++ b/config/skill_player_weapon/hero01_fist_skill01_add.tres @@ -0,0 +1,33 @@ +[gd_resource type="Resource" script_class="SkillWeaponCfg" load_steps=7 format=3 uid="uid://dvnwgl10tljft"] + +[ext_resource type="Resource" uid="uid://4o4v0ruyag5a" path="res://config/attack/blunt_throw_end_hit_down.tres" id="1_dh40s"] +[ext_resource type="Resource" uid="uid://dp8schthpyl3l" path="res://config/attack_box/throw.tres" id="2_1sc65"] +[ext_resource type="Script" uid="uid://dgwtu2wj5033u" path="res://script/config/skill_weapon_cfg.gd" id="3_8mjpe"] +[ext_resource type="Animation" uid="uid://bnqll5kf8t8qs" path="res://resource/skill_animation/hero01_fist_skill01_add.tres" id="4_mq2d2"] +[ext_resource type="SpriteFrames" uid="uid://cajgs8smbkjan" path="res://resource/animation/character/hero01_fist_skill01.aseprite" id="5_kkp4n"] +[ext_resource type="Resource" uid="uid://c6alg8pmqfdxm" path="res://config/weapon/fist.tres" id="6_12y4k"] + +[resource] +script = ExtResource("3_8mjpe") +weapon = ExtResource("6_12y4k") +action = "none" +name = "" +skill_animation = ExtResource("4_mq2d2") +stance_from = 99 +stance_to = 3 +break_level = 3 +is_charging = false +attack1 = ExtResource("1_dh40s") +attack1_box = ExtResource("2_1sc65") +attack1_with_stop = false +attack2_with_stop = false +mp_cost = 0 +mp_sub_cost = false +free_lock = false +ignore_push = false +is_lock_x = true +is_lock_x_move = false +range = 0.0 +warn_type = 0 +sprite_frames = ExtResource("5_kkp4n") +animation_name = "fist_skill01_add" diff --git a/config/skill_player_weapon/hero01_fist_skill02.tres b/config/skill_player_weapon/hero01_fist_skill02.tres index f0dcd26..fcef6ac 100644 --- a/config/skill_player_weapon/hero01_fist_skill02.tres +++ b/config/skill_player_weapon/hero01_fist_skill02.tres @@ -1,28 +1,33 @@ -[gd_resource type="Resource" script_class="SkillWeaponCfg" load_steps=7 format=3 uid="uid://dvnwgl10tljft"] +[gd_resource type="Resource" script_class="SkillWeaponCfg" load_steps=7 format=3 uid="uid://dbviuasvknl8q"] -[ext_resource type="Resource" uid="uid://4o4v0ruyag5a" path="res://config/attack/blunt_throw_end_hit_down.tres" id="1_dh40s"] -[ext_resource type="Resource" uid="uid://dp8schthpyl3l" path="res://config/attack_box/throw.tres" id="2_1sc65"] -[ext_resource type="Script" path="res://script/config/skill_weapon_cfg.gd" id="3_8mjpe"] -[ext_resource type="Animation" uid="uid://batvpnk7jfc2a" path="res://resource/skill_animation/hero01_fist_skill02.tres" id="4_mq2d2"] -[ext_resource type="SpriteFrames" uid="uid://cajgs8smbkjan" path="res://resource/animation/character/hero01_fist_skill01.aseprite" id="5_kkp4n"] -[ext_resource type="Resource" uid="uid://c6alg8pmqfdxm" path="res://config/weapon/fist.tres" id="6_12y4k"] +[ext_resource type="Resource" uid="uid://ctbdt77yyubxn" path="res://config/attack/blunt_normal_hit_up.tres" id="1_ywehi"] +[ext_resource type="Resource" uid="uid://decgfcx2xsj8i" path="res://config/attack_box/circle_mid.tres" id="2_ywehi"] +[ext_resource type="Script" uid="uid://dgwtu2wj5033u" path="res://script/config/skill_weapon_cfg.gd" id="3_6wryu"] +[ext_resource type="Animation" uid="uid://mnmlwnqk4aqq" path="res://resource/skill_animation/hero01_fist_skill02.tres" id="4_c7ye6"] +[ext_resource type="SpriteFrames" uid="uid://cajgs8smbkjan" path="res://resource/animation/character/hero01_fist_skill01.aseprite" id="5_sjxkh"] +[ext_resource type="Resource" uid="uid://c6alg8pmqfdxm" path="res://config/weapon/fist.tres" id="6_aemq5"] [resource] -script = ExtResource("3_8mjpe") -weapon = ExtResource("6_12y4k") -action = "none" +script = ExtResource("3_6wryu") +weapon = ExtResource("6_aemq5") +action = "attack_heavy" name = "" -skill_animation = ExtResource("4_mq2d2") -range = 0.0 -free_lock = false -ignore_push = false -attack1 = ExtResource("1_dh40s") -attack1_box = ExtResource("2_1sc65") -stance_from = 99 +skill_animation = ExtResource("4_c7ye6") +stance_from = 2 stance_to = 3 break_level = 3 is_charging = false +attack1 = ExtResource("1_ywehi") +attack1_box = ExtResource("2_ywehi") +attack1_with_stop = false +attack2_with_stop = false mp_cost = 0 -refresh_animation = false -sprite_frames = ExtResource("5_kkp4n") -animation_name = "" +mp_sub_cost = false +free_lock = false +ignore_push = true +is_lock_x = true +is_lock_x_move = false +range = 0.0 +warn_type = 0 +sprite_frames = ExtResource("5_sjxkh") +animation_name = "fist_skill02" diff --git a/config/skill_player_weapon/hero01_fist_skill03.tres b/config/skill_player_weapon/hero01_fist_skill03.tres index ec57d99..7e2eb6e 100644 --- a/config/skill_player_weapon/hero01_fist_skill03.tres +++ b/config/skill_player_weapon/hero01_fist_skill03.tres @@ -1,9 +1,9 @@ -[gd_resource type="Resource" script_class="SkillWeaponCfg" load_steps=7 format=3 uid="uid://dbviuasvknl8q"] +[gd_resource type="Resource" script_class="SkillWeaponCfg" load_steps=7 format=3 uid="uid://dpaa7dflbjk62"] -[ext_resource type="Resource" uid="uid://ctbdt77yyubxn" path="res://config/attack/blunt_normal_hit_up.tres" id="1_ywehi"] -[ext_resource type="Resource" uid="uid://decgfcx2xsj8i" path="res://config/attack_box/circle_mid.tres" id="2_ywehi"] +[ext_resource type="Resource" uid="uid://cdkjjljp81p56" path="res://config/attack/blunt_mid_hit_down.tres" id="1_ywehi"] +[ext_resource type="Resource" uid="uid://qp5sy3u3rlpe" path="res://config/attack_box/box_high.tres" id="2_ywehi"] [ext_resource type="Script" uid="uid://dgwtu2wj5033u" path="res://script/config/skill_weapon_cfg.gd" id="3_6wryu"] -[ext_resource type="Animation" uid="uid://mnmlwnqk4aqq" path="res://resource/skill_animation/hero01_fist_skill03.tres" id="4_c7ye6"] +[ext_resource type="Animation" uid="uid://by2e51w02ka8s" path="res://resource/skill_animation/hero01_fist_skill03.tres" id="4_c7ye6"] [ext_resource type="SpriteFrames" uid="uid://cajgs8smbkjan" path="res://resource/animation/character/hero01_fist_skill01.aseprite" id="5_sjxkh"] [ext_resource type="Resource" uid="uid://c6alg8pmqfdxm" path="res://config/weapon/fist.tres" id="6_aemq5"] @@ -13,8 +13,8 @@ weapon = ExtResource("6_aemq5") action = "attack_heavy" name = "" skill_animation = ExtResource("4_c7ye6") -stance_from = 2 -stance_to = 3 +stance_from = 3 +stance_to = 30 break_level = 3 is_charging = false attack1 = ExtResource("1_ywehi") @@ -25,7 +25,6 @@ mp_cost = 0 mp_sub_cost = false free_lock = false ignore_push = true -with_stop = false is_lock_x = true is_lock_x_move = false range = 0.0 diff --git a/config/skill_player_weapon/hero01_long_air_skill02.tres b/config/skill_player_weapon/hero01_long_air_skill02.tres index 12a2970..b476e64 100644 --- a/config/skill_player_weapon/hero01_long_air_skill02.tres +++ b/config/skill_player_weapon/hero01_long_air_skill02.tres @@ -2,7 +2,7 @@ [ext_resource type="Resource" uid="uid://bv4uoey1liqoq" path="res://config/attack/sharp_heavy_hit_blow.tres" id="1_m5u18"] [ext_resource type="Resource" uid="uid://bnfnjdw0tms3h" path="res://config/attack_box/box_large.tres" id="2_0351a"] -[ext_resource type="Script" path="res://script/config/skill_weapon_cfg.gd" id="3_to21l"] +[ext_resource type="Script" uid="uid://dgwtu2wj5033u" path="res://script/config/skill_weapon_cfg.gd" id="3_to21l"] [ext_resource type="Animation" uid="uid://cjc6sis2xn1yy" path="res://resource/skill_animation/hero01_long_air_skill02.tres" id="4_u7aq7"] [ext_resource type="SpriteFrames" uid="uid://dhfqj1dxldqao" path="res://resource/animation/character/hero01_long_skill01.aseprite" id="5_6p3pi"] [ext_resource type="Resource" uid="uid://cy3wwalxeyro0" path="res://config/weapon/long.tres" id="6_vj7l0"] @@ -13,25 +13,21 @@ weapon = ExtResource("6_vj7l0") action = "attack_heavy" name = "" skill_animation = ExtResource("4_u7aq7") -range = 0.0 -free_lock = false -ignore_push = true -attack1 = ExtResource("1_m5u18") -attack1_box = ExtResource("2_0351a") -attack1_with_pause_frame = false -attack1_with_stop = false -attack2_with_pause_frame = false -attack2_with_stop = false stance_from = 12 stance_to = 10 break_level = 3 is_charging = false +attack1 = ExtResource("1_m5u18") +attack1_box = ExtResource("2_0351a") +attack1_with_stop = false +attack2_with_stop = false mp_cost = 0 mp_sub_cost = false -warn_type = 0 -with_stop = false +free_lock = false +ignore_push = true is_lock_x = true is_lock_x_move = true -refresh_animation = false +range = 0.0 +warn_type = 0 sprite_frames = ExtResource("5_6p3pi") animation_name = "long_air_skill02" diff --git a/config/skill_player_weapon/hero01_long_stab02.tres b/config/skill_player_weapon/hero01_long_stab02.tres index 9fe4a50..151daa1 100644 --- a/config/skill_player_weapon/hero01_long_stab02.tres +++ b/config/skill_player_weapon/hero01_long_stab02.tres @@ -25,7 +25,6 @@ mp_cost = 0 mp_sub_cost = false free_lock = false ignore_push = true -with_stop = false is_lock_x = true is_lock_x_move = true range = 0.0 diff --git a/config/skill_player_weapon/hero01_long_stab03.tres b/config/skill_player_weapon/hero01_long_stab03.tres index e0fd8bd..55a949c 100644 --- a/config/skill_player_weapon/hero01_long_stab03.tres +++ b/config/skill_player_weapon/hero01_long_stab03.tres @@ -27,7 +27,6 @@ mp_cost = 0 mp_sub_cost = false free_lock = false ignore_push = true -with_stop = false is_lock_x = true is_lock_x_move = true range = 0.0 diff --git a/config/skill_player_weapon/hero01_short_attack03.tres b/config/skill_player_weapon/hero01_short_attack03.tres index f674432..b53d705 100644 --- a/config/skill_player_weapon/hero01_short_attack03.tres +++ b/config/skill_player_weapon/hero01_short_attack03.tres @@ -2,8 +2,8 @@ [ext_resource type="Resource" uid="uid://bhhrt6fpjccga" path="res://config/attack/blunt_normal_none.tres" id="1_er265"] [ext_resource type="Resource" uid="uid://bqejjllfy03h3" path="res://config/attack_box/box_normal.tres" id="2_jmcul"] -[ext_resource type="Resource" uid="uid://dr70nrjjk754r" path="res://config/attack/blunt_mid_hit_down.tres" id="3_0i2p5"] -[ext_resource type="Script" path="res://script/config/skill_weapon_cfg.gd" id="3_8rsme"] +[ext_resource type="Resource" uid="uid://dr70nrjjk754r" path="res://config/attack/blunt_mid_hit_down_forward.tres" id="3_0i2p5"] +[ext_resource type="Script" uid="uid://dgwtu2wj5033u" path="res://script/config/skill_weapon_cfg.gd" id="3_8rsme"] [ext_resource type="Animation" uid="uid://bdyjvq185tdk6" path="res://resource/skill_animation/hero01_short_attack03.tres" id="4_7ws6s"] [ext_resource type="SpriteFrames" uid="uid://cndpnxtdh37ii" path="res://resource/animation/character/hero01_short_attack.aseprite" id="5_40215"] [ext_resource type="Resource" uid="uid://pnhii1a83axg" path="res://config/weapon/short.tres" id="6_pclwt"] diff --git a/config/skill_player_weapon/hero01_short_skill01.tres b/config/skill_player_weapon/hero01_short_skill01.tres index 01185c7..f8c6b8d 100644 --- a/config/skill_player_weapon/hero01_short_skill01.tres +++ b/config/skill_player_weapon/hero01_short_skill01.tres @@ -21,7 +21,6 @@ mp_cost = 0 mp_sub_cost = false free_lock = false ignore_push = false -with_stop = false is_lock_x = true is_lock_x_move = false range = 0.0 diff --git a/config/skill_player_weapon/hero01_short_stab01.tres b/config/skill_player_weapon/hero01_short_stab01.tres index 0403dcf..bcc3839 100644 --- a/config/skill_player_weapon/hero01_short_stab01.tres +++ b/config/skill_player_weapon/hero01_short_stab01.tres @@ -27,7 +27,6 @@ mp_cost = 0 mp_sub_cost = false free_lock = false ignore_push = true -with_stop = false is_lock_x = false is_lock_x_move = false range = 0.0 diff --git a/render/trail_mesh/flare_blunt.tres b/render/trail_mesh/flare_blunt.tres index ad8ddc0..8ac228f 100644 --- a/render/trail_mesh/flare_blunt.tres +++ b/render/trail_mesh/flare_blunt.tres @@ -1,6 +1,6 @@ [gd_resource type="RibbonTrailMesh" load_steps=3 format=3 uid="uid://cv0787wcswb6d"] -[ext_resource type="Shader" path="res://render/shader/trail.gdshader" id="1_lp8r8"] +[ext_resource type="Shader" uid="uid://bey68hqql2gfr" path="res://render/shader/trail.gdshader" id="1_lp8r8"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_od7xi"] render_priority = 0 diff --git a/resource/animation/character/hero01_fist_skill01.aseprite b/resource/animation/character/hero01_fist_skill01.aseprite index fdf307d85dcead57c61e5213027498b9ae0332e9..6c7968c65614db79f80c30212e6ffe0c2015eebb 100644 GIT binary patch delta 1637 zcmdmam#OJH6MNHc28IVq!zZ#=^6unhVEFY>i6Mo7fkA0wuQD^c3?l=BgaXIp?aY>w z^;p=si?cIxatsXP6H`(q|6`V8F_LCbp3KN1!>q=jH(7y2fmxry5=hIl7+Ep+f*Hns z3}GO~WLsWk)3=`vDC?x;K8**-iR{PpTl;cu~T zSuYf~KJ)?F%c{TxbcN>RjXI8l+;th?u$u&SGb4izgAG#HsW8X`!*1_naM-!T7W_9Z znsV$4gJ@boqSqY;|9w_<8uVU4Kep?z`^-Nk>;G^0KsSvx@MndnmW0_Sns)FFht_ z1eL-kth=*g>i!AeWM?w8t=Ovh((=dkfMxw^0ZBhpRB7n1H99t= z3LJXExW8%9M_4d=OkS_!%$Nyw=47ZdwHd6CoTC^90?Z*90HikDH)1T+MZ<+Ojb;a&E z=3guoEYBb0oOzLJS-1WZk%9}Inb$5JT6TYaub8T7mHZupk291ddarc-L>D9y<|qMe%qTr#r&*<5!f delta 142 zcmZqr&b0F`6Z_6}3=9vJ`b}i7OVEFY>ks*bFfkAO&uQD_HPasP|fqn9JW=jJe zhP2G$lKA56%$ytpBM}BEpd1oFkv5iPP@TMnMV`e_jllrSFfwFt0W*wU8GM0^rp-32 RyX`hxa%nPe-VuB%9RT#ECW`<7 diff --git a/resource/animation/character/hero01_fist_skill01.png b/resource/animation/character/hero01_fist_skill01.png index 79c2776bcaf4e6d3ba53b4a91d093c94cba36c62..f5caee0b3219db9e409e807ddc9ee98f5f00cd46 100644 GIT binary patch literal 20570 zcmZU5Wmr_vyYJ8;ozgX=gb0E(gVa#c-5?<#(%qnh5`%QZ0MZCZmw?jU3?<#&c{l%a z&U5a4?gxhXz^=8|TJNu3B2-o6aIq<|K_Cz=R9;#g1VXX_zHeiq1D{y_Wz@hgBo}o# zDNy+k^)?7Z4}wZVG(FSzTLSFKrZaf%C^`)q;0=|Fe!rWdKDL|fUl~Q(p*m4-b@b(; z=aiEQakZ#K5{;0}RMKlHEH+i@lH%F$BryI~Rv2TeK`7f)VJT#A;C{5^a_z@|8@dZG ztKc%<(jrNjpLix1s^75O5Fq+6tj ziAJia3PHQbQLrl9Y-{SDT!_V98yRbEEzOi6yR5GK7}xKwWU_>+bYW-QZAm+4ghqmS zrD*cerR{88fE+Y)=vVmJ&^>D}RUe{w>g{nje(S}` zG_OCOfBDS!>u{Tz9w|GP*6>$&%sy&`^jwb3$ozY4<1^tez!c?QCMl85M&r6v#Bdpq z>5n$t%o}@SPKx{v-TV4NyoGK7;o*hwxs5>ref})xds|mwQ&p8ESh}!EE80jU(sY3Y z64>`50RGDCcXR&Yqw+UgP~cqZ2j)vjqUr;SDrwa=H$mAwlN z_M2kmU}U&IfKl*VvYleByrlu|JCFv<^>%2&m<)J;e+jE%5r`~VqM;BHnyCsf^GRsu zK^pu&XP*1W&Jzv4nryoix%=YJWX_Vy5*u{lE+~)Q;tR(!{U!+zL!HEc`#I4JQTG zD}?7KKO5&VjBYD!heJB zv!@y{5J}(owl5V1nyfR7w|UXTdpQXH#tyb3l%A?8#=i)v{7Zz~_T9`ZL^zP%`x^}_4MhaxLWhBZ>4>@4{c)cQVFhb4zFM~KXA-Np_9x#?*+Q|bz%%82c~$Th{+IC}O0MT*(GsB>t;_$Y;xT$B z^6N}Y*`IN1>-6bO*HTr+W_$Gzxn-U!3IA@=O_2uXSrWRR<0J38$mkbhDAzvRoV+G? z%fxbD&Ty`76WaZgm}%qh)7F!fLOACf#323j3d3DP-{Chiw`cxK*5jENWlXmI8~7T- zAejZ>$E4VEKf)9c=EV6=%tm|))lkztl)^aK7PH`Fy>NM99JN(2&VNS715W2kd(?MK zyXlMwlN2LX1*0r_cC0LqF8oXsW|53n1a7IQcF=FLuARnxmQ)v&;=`T%{7>;K zS7N>ZQlMdNy2zE!V@ke7;IOGotumPk%H*NoGd z(E8_!=4dDt!ibCmFQF1D@mCQlis$A48K#o^xV~L-msru+a z&=;8<6za{=&%iY5h#1qVDr|6!_QUmxRQ*n|GY!?R#LrK7j*h3>{@sd2#)h;Pk}?lm?J4BC6IIb~UXUuQOjKoH zASytCE;=n0q7-zVp8UsRDYWrEo73J7hYzOnx=jW{7Y!(vzwG=jreuf;kR(jKu)JMP zKb$o?p*mowfY>;XG23nyz;k%%?e}eWan^5;_QJU>52M-&bN&(5v)juiFY!G*Zff1WW}e+I8MGB!rm%ZML7r=(bvtkWoof=D{=pY_S}EpGisO4hLF9kb zzyo6A;-~}))$Lx}l>;~A9vjruT1n^d%tS`R0wwcCFDQ0Qeo)QA`HxEl@{x}gGqaFd z8#p1I32~n%XU@3*iUccgB4Bu+ggoAA+0a zPe#|Oa39Sxs1ss4yB}h$ z2%qQmu96Q%;CZ!aSmqz}GJj3)l!Os4d@+eB*4DR*(>{4^M$!zN@ES>O445O0oLDk( zd=A!7ikFH5qUhxdAW+Rf<~m~0pba}#J~B%)KL;7&AQ)5y%f|8=pZ$w;c+*XE7VM?i zV%YX1}HDL%9cxA7VQdNA26txCo()Siv0XEI;VA4Za4enL@AZ ze4>nNY|r|OAr^_OZ^XTmSaPzV94~MTn}Uwl^B=|}KcPCSzl*Q>p50HH+nzFa>WIXa zpdkMZw3THa4u?jfcbt20LSlGKHn(%#YWVPeqC-aoV)=x-~YkJs#SVBH(hR#u#SDxhB0Fy#XHYFHpBJv1R1S`j*ERkiM%|8Tc zh}^%nbDr|T)52uhY^MJ@gUKlrKOM;x{vp6Y`Bx_~-@C3e5s_{5jEX%*tm?l&{ih;f ze7N)QxZdHaTIyX%n~M0+=I=jXfK?{IKjcvE?S*k7z& zeRqxon(}X=iMdyP_HcSnrNEIQ`>Nx38wx_=*Yp8qm07CQ1z0a!jO|& zuWjx#WuSB$K$XyoF}Yu;-Wnuv{hhwh&Udz0Gh)Xg4c5lYA>`TcJMy;CUVyCOfQAC@ z3r9}x4hLm^1@pr2UjDes*7H_*W2uYO@+=LCdHV-nA$`&WX=aZ3+LOmg-nM(0&NMPa*a_=mKLGeLia8N<&z|$EJOa< zy5i{DwHk45)aDyz>}m+vk!QPP4W*%2B)%aIQ{#UjLIgG35~qmHD2r6-D-c#>bCd5n zvOwvAh7`YgYcn-ua!OMqE8y|D_~XORfl2;qR%~MR+enr#_={%8`8;(E0p|$?SJG*p z)3vArsOXi-j<>9*nfx4H^az&HZvhz9`s3u6WP|e@clFco^CLXNham;Wrih* z3HbfZ(e3@A#2uD-!(|cUG&c0h3V@rxe8U7+avMJF8fUzVl3_h1X9Hg*O1c~Gc?a-qJ32g~~EiKQ-NrfFom^G2sjD4z9Wb=yyc4?xT%y zZY=|+FdmF#m&-$!0m51qn}c1XUw)_Vjfo2=*q_LD0C9=HU9Gfvtd1*`w`L{#*BWPdU*7)tT@-GBO@YLrE z45@{&U=CrN`RRjjoG`W7neRb%E|cx5-nlA}vDN*-JoG2B~`FDZs= ziZ>^ODdAbywn>}))AMN|sG5=}c_n_o>|z4SlAE=f;oPn^^~-Xj#0)}2WV>K$o0m~O z#|FR8yt*=c&XKQ~2*1`3a?;fNj>Hoc>zejkXBr(woV34Y58KlG?V9!i)qyt{tj#D( z$Uqj3-)f<$P=prp(N?dx{vzZ!0!p43=aRUCo0+WjSqxFIh}oz^1xc{g)sc%wdQBQU z^|hwl-HgaC-38nt{w%IeS-rD7;KYl~sFS3l#+yl=vA^G00#A3CgkB;pq*Sck)rXID ztJG-kPLhzT5cOs{DafJdJ=EJ6K)lna(B1FJ4l;?-NhEqn*wr2Qjnp|V zvmeK3;;;#P`OmEtDwalBbdcuxm10jj8f998%Y}PVe6t;j<(-%Rscp7*=FPG!4^zB) zm$=qHq8&s~dd7ixmm7(20$AiC>%a30y3^LeIB$d0=_c25poHS!w5D9U)Cv8uL7UCV z_i9NyzZx(ME>G3i)a=m{)097Ix$ho91mK{AI12xIJ-Nub?*;W9@;*BK5$p2mDBepb z8#t)xa{FFSkjV#YjwH9(Z>#()js!ZMRG{qB*XGL6`(4aq3ha<~W*@S~@{F+x;83pu z5^aB)?bBYKBs_cm+;{xvdh07eqSWA1Nomt=V0RjiO*UnuU`w8+IV&$Bsl#l6y|AB zx#C0RTrwlE_hhEl1{6Nl3<7LtPD!0*xsIpO5p(qAx3Z z)l$CtJ3QW7bY_R$?3sN}lUd0c+2@y1yEePh0Ia7=LAq$rA__iOmmjtRf#PUWFBX6s zqSE5#;p$7vj)zy&dU*X`;(Ty>T}t@ZcJEuz(E{RkUK5|AMAVOm zLT67--5hIx>drwMeZPg;x;!(G8iRgw6aMB)3YU8>6uT3cBsJ^jrudPu%l34r+>co+ zl5D^rGDOY;rBV)N^(_dMaYNaM_Dn1Uc$rz!gAWC}{(bS;TFm}+vG7%bGUY`gQW8Su z1|)N5dTCPOsh}SM)%y#xzwm)EW1Bw&o}hu=7SxJm{lw=w)^b+;`(m=Sbk-|F;iou= z_`evC!ki)ZUgc1FMwFE}iu;c!kjo58=cc;D;H_3&H)U!+Wb7d_G=^ld3oKXz1MiqmbY`fldVAegtfr01 zWdJLxEtpH%SGErJ(V~Z~VhPzaDfh&qI*hgHNMl2p1vPepgGq4TO#;Nf6#hp2Fh+mE|KmUIDjg^d)SGeSbA>x zR7c>Qq;W4D3h%3IEE)oF%*+n7N{e#<5u*Ph=`1yO-R*fe&UG6L1XXs8TE@y{>AEZ@ zar@865vG7(#ovvM$tQjUdSYezZaeRpAt?C_Lr$m4Pe?`tfxL=FFkCNtyFN*uL{fY( z4G(an1=sP<%s0>7K8$a+VSt{F_I2~VeHOwxAjrWCC?}tO*gf-Jd=p%Y!W!ta2?D89 z%wxJbjJm&jFEWUWQW# zGXA64nG2?o%i=r0{r!$x)EA8IDUIHaXl?L%?N05d;-WZd4sel5t1UJb>!DMJ$9q0I z-t!Yq-_q^I_t25`K)9vs4qk@3tD)4_G01piAplEqqBD$WdTQTYJmlT^TrWoj2RIhR zRB*$F6r2?!flGCYc`Sw9Ou0Q5TNSKba=A2G6t887j&npLa)XGysrbJkQnO!-xroAf zH6!JPl|1?nUMLPgSqgQcFW)2~xKVE|t1Jg@S*zc8y4H~?`fI}sNGuPuq%F_Oc1JE2 zp=SX<^(=PRMp|=wBlHQ6ezba_z2i0$NN*}`HN)vk&CWX;t}T8urqEuTzr}{U!E89{ z&t-j!-L^1ID?ebpc>P*Gi7U~c79y)LyNcCpjm+>ZprVw-p=2!)eNwPud7u-tG_{ka z^Qqv0qu}o=+e8BCG0D;8KA$u|PFddnM_5W2dpt4IwDoAtH}|?I1-PP2kHt9|1(te} z0#jK|6|h@Ib&7yM0LC2QRi1E)CC@7?l_+(9QHiwX-lWcBM@)oTUZnjmM72y-I=)_kiPIN2u_levwI@fANqVM4y(X;a^>4URY01~wITr47b zG#(TPd~B7Okb3)%!|mtVrpbE0{e7-AFMd=x@6`M#sHh1@Z0$ZF$&^0RxA!?&&G_vV zELB12dLw<&f7wBMG~5r16ElG+^M1Q3kKP7^u8RaR>Wx^U^4{^Fg7k36@|1N8<+;`6oNultwmZG0XFRZ>= zEYE#gd6@1FJnjA7&^)2^=IH3h#0;!OrF#o%ipW`cBgwE7t~_bJf=+QhRe@|yLKjZ; z<#(PvR;mo``4D3zINzY-E90LWGuh!c%0n6wZObYEb$_}xS|I6gi@v8&VT>8p=Px~f zqUYi^#4XLz0vt6g-Z~YD>Bp|u+lRWzB2;&pqBmZKbrC30Orbl zRfcB2GccL^H(lQC6Vpj5QO{q7$&^vd8~k?~+Bu7;S{d=o9ll>W<@>*%;ehT<>}7Yi z=*&(YJ|mkgh+t^BDT>vQ0Gbv=G7f4u300QqDB$|OXrb~@eSdezi=FD*T&kSnkjn?o%MAPN=3`&a81W^uBc z19^Lz)PNp)Ag9qAeH(JwGA{qQjLkMFA-B^vR{8maC-h&~Z(^IfTc)i5^Vh|W#>e}& zF^5yjy^eRJQ=n|?(aSJl(0JpxE$942{ggn-XXxW%B7sL2uoz@$#7_;ccuNd2AV)=u zwPFV+;K4kLGq5hBC3J30m%b_f>nDLv`?A>!mQQMvWx6(SH+LMx^j>IY;|X6@ar!uY zbFQ&Mn+1Ak2Kw=NT_;2~V(3Jofqm?%PHqDk^x(IZ%QF*#ncAaQu)tzstW7@X<9u~? zK&^Ru`I(SkwHSZB;<791ymi%$z=a+;(lB=IoddZt+u1@_H5nm4Pq-_fuvCEN=#F4N zBjDD-9Frerp(9?Q*eyQ~khsQvwY>Dq%_gFkF#7um{i>IO?Ro28wW~JL<9usk=|La4 zGhCO+UqX+@C%R@4Mt@KxKAAKoc;&R*TQ9 zYL|e<1v+Xgf6OAn`VM!b&x~&?B6s&SA0yS8uuTzr_N?_(ad^x2!`GVheHV!x?}1Gn z&JGQUQ^oTX0=^hq7@kWZPTGL0go}2td!7G_Gn%HVM^#e;H(}=QG?3~^o)!65&=`#% zep#Xg9)=eS)f{+a_F!tz@Pbke9i5*w3N(s^E)njRNj&b~!V`yq&AinKnOSraVkJ5t)B}(tnNnYA05`X@q=d55= z29FV+j@=r^*n3f=ZOYDNx9U&pl0DNVTP0T2E4wBov#r+Y1y1?Kz4<*DQ3+R^vJ*xT zmQ))c_vC2(0V-)+xs94-y0o_duCd7+pzzGNV}hjon%n{n+qXm<9v@(6o@dp&LEMgd zA+Ei5V4~W#4HmB>_-4d&;-5HiFJxzn-t-|s(TgLJ;^E4P*)r0cC;kLQB2_FlJDc?P z+-O>=RfU`rR1njA8>vf-)s(uZ_82oYx^c^Rnfx2OO%rE}IKF2gFxRkbuDAN^Qk%;c zRes7P!87WrrN=y9(;euo2!l0gzI(;=2!EsxQJGO1gP;y7jGGmU?SnJ4DFvj*eqsqn z%?`<&m%b^!iu$nv;ux)XtTmTjrdddt3 zETAO?XY@PNjBZ|gCa3{)r1-oi6)FtN)?0~)PvwaT5yh!OO%MIiiC)#~(i2=(@H?dE z8bGPcfB6+YJ4Qhg(Y%V+7@XoUIUxwiA<0)AlZ{f-@7KoV$8t~yZ`;S*VaZqRD5K8| z@T4=qV?0B=9B&Pkq2s=-=3|P)0CL{(vyPaPbw;n^dQpHZK*XQ@8U8*xP6`v!zrliW zCw>B|A##P&@rP9&0Nmoq>jFlhP;uCWp^^<(7qmh;(oB;h{1{lY=Lj#3)zc!>bDTS+ zZ>;M~wcLkb>U$%I{L?+UphPS_Uvd5>Rh-7z5wKVLy6xX79?%_JJfpjF`ejQ=8YCHP ztPAXq7baZ|>Ya?eGw}7AtbK5c%|pfkAgB`7@@%(<7nd4w|JC*`Ct-OvQ?m)7-u4>2 z&2pUp_?W7JhC@|ETr6&WUBVBCgv_9$UhYWv?7fyGNe~uEJT2NZXITG(4-&j~i2rlgy76YU@rv>Co<{fvYBt8Gw z^#LS#xg2n!{tCbZUFEm=C{Y_r+hboA&_Q6aQ*eg69;r5I{=6g+KLs+6Ndw5ay9Cg; zjfEChEoqi>V5-+WVpQRC0^53IPVqrS^tJ}5VQiS+LPa5mdviLu9_W!N10c^L7FO#a z6p&^XEqmhU;gMe)O0PC1DMignMtpv5zTC#M7Ovwq6{j*a+}e38)scp;^e{nKUl*Wk z-wLUiZNKTg*XocP`3?@BWL5txxHwJ9wv##S>sKi@<98u2j>=46k z0PbICO&onX;3#gb;wR)q*+CajoG|MepwnR3!se(XhkBVmZI#;@c_(ku%4?;6AV(^y z#}U39=uSE6j-lzMlW=dY|2MCt^xyb`sT-KO*dC+Kw+Bp7ej_k zY>tr-@L@uDddbFwP;vZTNvJiL8sO90i>)tUaJ{@`fO%|rtzzyNOy>aB%ER#j<&qQr z{hFV>Zc{fimYBSHT~QYEE(St(kog;$W%vVk;0w=gHyS?)(^|I6&i& z!Tej7MKw3X_@$$51pbRGR17xQ#p7+*BgW;tA9s$%0PTV?2g!nxD8tm6M%fDzTpwZ<*C?oqe*O>ZAjIZEw98}9zUd`0yXD~fD* zq*8V2Ck14!84Mb*7>1WSVE$#_-y|PNaYCynBgU74#R&*M&a1slcb7Q6WNvf`#xviT zm}VFy=zJ@{ro<@Y84mG1BCFYpvx4wn^qVrKNtEbQs7 z2u|rWoaA`;Dy;h3HkNJ|H)X%#SdLa|AymIWAENrpM1z3PP#e7-OaL8il$zAT3Tj8N z>&>`7vdncBzt;U%>T}CY2gL{I(T(-u=l6Y0Z{6oL+KNuBM*qnWr{Jf` z0n&1zpG^E)!Z0&(z50EpC)66_D+B0i-fLVpalZ`aqy49A7Xp%LBBq5jaHIkI%=b4A^I!`04$+0nms!X4Yhxo#bpoc{>Ixetb zII~oO%lMKov&aHXHcqn1lOGjLH4qy}z+Bt8fcGxZvJ_Qk(lrtYEb0+GiCK=5qd;VU zCM((XRt49KZr1Lk79=o&PvA2;f`NH>*oDgVtQH%s&6S8NUrB+uYHfh^rjCNq=wcD& z(Z~y7i=|AYIYH!oAkwC_5UON`xZnK{gQIskCb%mk1%Ce8c1!jAfj^v~)q0}VjR64Zk`viVf9!B`HheuBbq4{sLOyoGk8vn02_dehM zsw3I4f_Ek32ot~sKbvR>bhyka5R<;TTVk7083J!d8b;VI0b3|4wJ zo^9d+qt$yc@E=eAUo;v(oW&zD7Z!nmnj}5p*7uW(vq>IG_Qz+mB{t?yA*jKW?kUiu zh7w&@({CeWovk8L=271-#Asf{9=y4sK4`e*o~SGDd~##k)HXVsVbwVHO^^KhIi!bx za0J-&zf(8cHshN;03}8tRRDJ-o}P%=d?TVduWX!EZQK##r$PM=&(>qyT-4`w#nCyp z5w+!rK%TCm8}H(?-rDyK&zP*~g$;}}YefiibLEgs5sBq6hyT(^vIm%J=(p=vZii}b zr)M+Y8W{k2fWN_Keuvagp#U*Q>feA^r9S;SDBI~ppWCocDk$tBFP-_!ET{U)EtXul zfXG$Vk5?O}U9_XR{?qIkJMjwYG%9JOR+&mMpt)Gnq6bEd?Vs!LGONs*~ODox>) zg+5eR{zENPEDkmI7WU28vc+x%<^n99EIB-hTfryQWyx2aZSm8=hu$y6Em6o!N^5ym ztVQ+HjQ~csH5py2JjmfVl)!QokD(6-AJbbhn4MZQ);&J=WKX^4F8PcJ%XRY_wPb|! z$5vzK<={b+&W7};FddRV)%sW4C^bAe#ox64S0zDg0xHQN^HHxI2}9Jyu0{KG?$)f} zp2zgc;Uf>8C>F@`!X(|E69qhHs*%V!S54JDaD$GyzN?Sr2CQP}nxK`%wL z0UrIXn;NWEEx*&kD5cJmI+L?#8>j7@$gus=T;;8KZT;-5 zjAz0}eSv7$eC;K=npPcrt*-7c`5zN^;)rfC$4t9;1wB4_roGIX2)}6X>#W6-gP4nd zth^7DcMU(>UwDn)J*50vbo{^b48zN*4UuoHD*qb!f1v=yYhKh6I`zzI2I5w592emM z<@tk}F<^g<)B+|--MW32V^~+FqDR`c{@yQ{<=&Ko{Q;3S?q1$i!j*qCx-T8spCoOc z-N&dCpVUU-jj8}F>8U3n;OfNfNu=;FRApqM0PsNeW7Ob}n?7~x4|_%?W^$Q<6)q`B5(mlP?X_>~zq*F9MKx&At>hI+ z5I+dC`WoeA;U6Bsw<_DCURHKV7ZV~=ku8W>P=gd$FwR;Ia_^D$50xl&jGURz;0v~H zL)!^dLFHU=zhz!=#0DQMI{x7D98EvlX{hRv#-Pzj#XQ;R`B3B-52mf-DnPd9rg`Az zcH$|D=~Des8t<0Nc`?TbE7*s0?ZwffjJYAJCO#%7B_d@5Z`k8w+;JqA7zT-9zpE0Z zw1U0FldPmL_Br-D900Y?>^?`EJ8y_CT`WmdlWFh_cXYGQeV>T>`y-NRP@QMzjRwb8 z&fXN(X*iO=o=N<&$qb+rPJtE7(LfI!0b$7-7FSz!+SS`svSuNTLmo6p)WNKr{ylS!=!Q5l{5^iQsltW*Vs5TAwv-{KCp)$(4_kNQ)iNabYdOM*FZzwNUen{e({Z-N0)a3n# zDaOEPER9giLff9|)T9xf8-lq29BervDZIMQpHx`(-3{0;VgLQN7DmtbDkK_yeDB2J zho}HF2In-U3S3(7zrU|sUmXVaqN z-P?#)g@B&tCCSejUFec_>zV1Wul~Z zVShvYPiammYG?F7KzpSjgkn&I$b@+eWw~uGtIk%`pHTz?H zq&AlM8_n{gEDI>rCre~;WO1L8!DYMezeo6fy)`HZxBIl~vw+sIu((3R_l$8nrjfRD zK5rNm#s~Qf*OE;{SB4kl=>+A<;ZnV)3MC?y+fWq1I)c^V`oK-%CswN~Kl2F23Q7SttE8Im&?KL-ycFtB9^y^=<56!x_$HaE%HJHE| zQ(A+P(sZ}JGRv%M*}a->CaD_&uOgFBUn%=cR_UnU_6>hc4*AL(L|fr8aV|sjz1juK@_p z;p$YVMmiDXaw88Mj>3Q{(zR}fxwZ&<4P8Jw5ixH<$WFe3;;i@E9Q~TuAM_qY3_F# zE<8o6+t+(qra%B7NIVqSHNCUwbKl3a`90iQFt=^ndpuWii5lorOdd9@G?{twTB6Uk zt-BpHCBO=a-!+M}&15Ex3^*O1rdU65qys9-7K4^B>n+r!HF4woV=_T3^M1iPumbN7UtHDFT%R9yQ98-IHdd<H-@~C*+~;11_iq)l1;wN;Qq1lMm#`K*T#$b z7c?7B|Cd=ecxKKV$a!*3kTrSW0Y2hZoPeq@eQbg^x z2ewv&GSz0d;u-B%6P}5>yYHWhb6!D{SQ>%M@h8BP&%2)lq6XFMKNzj00JaANughxG z!m~Td={rpXT+%fKnwp_w&<{~Egmfhev;XBpV=n)O-EZYjF+-o2G(gfAeo0(G_O!>u z5pL(4LgT1tBsYKJVMrDCcc^m1M3Seglo%3Rs1U7@;`<^tJ1_U+ z82Bd?L0FYZ8CW05tvaU$>C%yo`|3qx>2$Pppu4Xa40zKS2m43Ae#wjfaR=n8(5YNS zk%*b{66;=}4^j>v?4L5`Nk3|4{FF*WG)p3tiZksiawR*0%?XVn_Yf|PkQkNlryF=@+;k?AxmR0Kzwx7ow1nzTflq`L{ag$QoaB=`HwD7 z5rt;I?yn;|4UG{&j`4Vw+xVFnMlE{{v(_@|{LfNLPnDAEs4RPhUM#p!<0)xPibPS_ z1L*fDNDEX`Q!i_*G)eHF_DGA*?zCV2V2EmLZd4b!R(WQd_`3mNpkrdpEc`N z`01O5dx5D(_hEc(z>a#Qe(p~(w8vQfd-YrEMzx3ZTn9#VZ9hNIf9Rfy_>`S^OIU@9 zV}RLFXkUN6)OQI_SP~OYqc>qL3mfAn_my$wL@(|o^tEnUq!|Vw4UzA}`~>9zQ+}sT zS{%@Fy7%GW#~r{k$EG^SSiP4;2m**lY;>7Y%rXuijlTgxZ0=*kWV_KH%*H2C7Ic%P z`%NsMn*CGNhY$9WfWV}K!8`Z7oDQS53$Ke|vou_&$U=sZDaU@N1-uz8tfRTt$kFqB z1Y3N{AK;L00Yg|gRWtaFthk!NIAdJ-;!B$godNv` zD!{q~+AKyk^E+kBhQi2FqMmpZfrt z7J=OlY*E1yZ^oxE13qc}=Z!oe?Z9BoHXy3bvu4Z+WVfaL>}-R5Qm_=0N-TxKc2AAp zh4Nou&f0B$OOIcpgqE&g63uGmzZmS3i%YCpBkbVm2BN7)7ml)kc~4)wllYzbUF%d$ zTl6{`+CJ#$`Y5r+#S_&I)l$j9{@rM;==RR=#3RP1af$Ry!&hpU=8ax5x946nWaW-1 zuo))Z@}C*$UOgvpXBz&rUiRX@IwQwtVx{A5#BVBGEU}6Jg~Zd5K*QqDyG`OO{_+@z z@0--*4JCbXFnQ`DICt29rfM||%-_iGg)4!Q0V;xgA{6d0G6~SkY&tadM(ojec2$mj zwIcROp(qEeX`LX>eL^p=)#xR?&1<4aDeBonXu>s%%U>dCSw>2EuEE^}Aa;=p)E)9* zhcTIAK<^oMt{p}T1U$*sq&z?(qW;H`+Rf`p$b0(OcAxeR)Wc;WbFGTqcoPpq2&(Nh z%yXWiDZs*ufNy6yir>C96Sv9!#IwNnm-mx@>6))Er{vtR)!X`3g&As*SZf<58!{)F zo>jaDPOH%;@&%Zj;psd9)_~0{#n5AR2G+0aq^Yl1P-?m{_P_wL$*QqefI)q7Kd{54 z%yP@VwS$zI{;Uy5%yXSaYOfB1A*`dl4=RBr52zLY?6KM6zO6GFr5tGCiWR_ z=k`egv#UBWH_w#AonGN%xlD9j7#SNJ2{V`luk(GIrV0bElmq68S6uh3!CXgJap)Z6<6^E&~>(Fa`P!-0q4 z)?`K)`f`7S`guaW$`jcr=t-gRxJwojyjczYeb9$yieOlBVg`$4ybBhq*h+sz5Vot4 z%d-9Ho;v84+>xqn3<2r8+CK>sBX5#{uH~{r zT^!%tQF1KkO$5|g-Q)R^r=MgX(eOo!=V|Y*`oTR|$dOI1YZ-2rB342#hS5IZNkd7? z?xZ6+@#~L9&`j>)OA3*87NcBgCCQ%!Ye18hAx94oLvv#dSCAfIeC(_Vvy7*;Ly-n! zZVgVLC#zkCdO7qEmG)Fj^Gn0dfEYR6_L^P-DFj};!fbotD@Z;FHaY1}6wc9;u;)PRDfE56%@Tk!zJG(LRT5H(Q6$h~ z$NJz~D2|woAyZfce|^OfCxf=kcEsa8Kl=*1%FofTr9(+~O>jU;GrvpVDXrQwhX=q; zZGpuqylI^XKtFhjOaO{~81S`kpHO;;M2$l8n-OXPtfn`Z^e1?WK7zr%az`N*jO{<_ z)FS^9X7PMXLCER$0njj}rpOqc!>n-af!ErMTqdA6!r5V*KJ`9|DJF>`#J-^MWl=nM zi%7|*V+IU~(oW>6w!X%xgf5KCSa;lBSC8$C9EB$hhmzuGu3toBk6Y(SMq%YD0Iut6 zb|B%KJ^npTO(qp0o&JklenRQ$p7|LF1O(;*`&DzPdNi$uD?Hn+dBAwZEeKzrM4zS$+BiMbwpJD3fOfmLC4%U-?S7r$$OKE^TKZdpRwW%vIV`B=C_+-apG5K&!;Kp7Y zhv$Stv)RP@qa7*4xY|yZnfTtHgjgb_psM8%xvIldGoH;^Id7-|EjOa))yy_Vwa-lu z278PD2{CQ7oZ2nC8FQUWlHk;3!YU|_ZWuz@B{;vn{u*<9N2VsIvdjtk$ulc9|$DzW%D*&aL5TFq+pPk- zWPivL6OI)4nQ7jpr&89UTJ7_T=mvnN= zLNooPvG%*P`bD!-*E26cTn%6rgKZN27Qq4Qp_ZZ)LkbQqlRp&lG1opeq~Mu!K-spJ z`3D50MjROtXtx;&xiWv9wHj~!A9Xk^3y%hE$mkCuaXnF6s}eA7ZNt@)3S}E$E<{Np z39-(^ zhvd^EwC#2(yQZf&T(u_J>YEXx8zQe)Q?nlNMWR-_0EtXeMpA*JMq=4g%-E8ER4@In z%MYMtZ;QNML!V6a1x)3RMp)@b{ntWi9Nc2WJsxg`h$A2h^wXGSd`y+Pis6}XTSgh2 z$eq)VJWQ#-HYc5sG&C;B|CL&JNEuh}R00X<{rksS6YDNb+~QyLfAZN`ftP6e?vL3E zUTZxIPTXM8H@dcLQTZG(m7C%~ByXtfhTwa$iS$5~R%_55feL}9ta)F%6~JtAbu#F_ z(1`dNK?Opa0Ps=qL6wa5rKp*YkV5@Wo)?2u?38IFf8gLAW+(!0H0mueBW`I-!9!_i z@@niWkePlDc83my7bN-P+=ONAd0Iw2pp73Z7(0l7Irjl&G(%`oe`)t)|DIl^^$^fz zlLjuy8-?iqaAjU zZ#VPP_#9|R7z7vkYfosQzn82rnm^}kUMLxoCrQM?4846mmbg?o? z)mPTwQz|1+c|DH|9;3>HWTfk)e84JU(tsU}6|+1w0FO?kK!2?_KS3%6=WR1SsTUZ{`qTndlqY| z@RXN80&M&@+%bV2WKS8#aF6qy*cJBPR5OF8Rvq$lNXNE}hf01kEE`3~|OnnLQat1e5ZQB}>FVQlWdJ~D61_}uVty?pLD zbmtZ3<|ol;z6TC}x&L63+g9ye-~_i$i~V)<=WU{C$Xr=2YC6Y}**(9|EqJTG8e6Qe zH4p^CzkB+>043u^WkuSsPrcF^74{k{?zlPj=_o3oeO=U*AfM zou(dMvR!u96XyfNQ{Co=W)A+B!3nlap?;x>%~Qi-Hi8?q6Z=zm2>=Ga2IV<+eE$U5 zIwN=8oMuNvit4z=)!1Ij5#MM0;X~VtO|RzvRHFW6hi#8gW=xpb-ZJ)QM|(8eB!QULXPG;=Ho zFvZ7Ut3NV0pu&CkPCy4V+CfbI8{jE4C6c!eIWvoJyKqRp&Hw_sXfVrm)j}m_NBRS zgl4`3M#tLkSvp@7{Hr1lcB zKBZOgoNMCR`Pu8VF_tge&a;IEEHw`9AF)-S}EAD za!Fjc+XxT@)~G6jZ|KOY{pBZZLg?^g;bNVc*8strg&;dYY&6DU#feujSPQMQYDj`+ z`>!BFuT-}mY&yurUj+Cppf}Qsi4gKt7#!N{o+)3QAs~AyYYNFzyn%2VqeTj@_zotl zIRkflkx)D(9ggrg0s~Urw;l7dVUUT@DT*1g_y{9SSUe6P;PqW$e*TZOuC*`wr%B@E z4Zw9aAHsb$J=;bv1_w(Lyk?S*!ls>YHC_wId|t>M%(cM;SP@pn{|QqJtn=LSoE6fR zoYiSpl7LhP* z&!RSJl1U+ypxF}=DY7-cN@{%ts5exC)sInu$e{A-CT2-hF%0>vgV5CQ=NE$Y~Fqd&%ic}smuq99^S3Ymxb%JCkDmTUA^R1}iHKd__&MmIV2 z{=-&ZWF$}^gP#r^#hOoV$u~43sCIueF&UV+1{v*wjB|kB)s5WUR2UvbBpn8kF*I&F zf}~T~cg}{yMJm7srX(e2AV3E#npp}&*MoD*eq3<5t6zoMnrf%zY@a)DU%P|8*Og_3 zlGYP3`sbF}vwRcA`0{mV)fgJeqCidnA2?GWr>mGsV7C+zLlAUJL!{Ft>5eyK7Th04 z(DvRSs_K@M9Ix8_QAdC4xJDK^KX~;GU4!-W4nq=SXc+mLN=B5{wJ$9%Jn>?^`)cpo!u`FRWYSiabgP zd_rthl@r*3&lBR%a5{1tpO|$2Md9M2foJe<3Vx9^xya!tNHL&GEH@+|bd?)H75 z&ex_t`PY|yyUg7Bh)3*k$ysNAo47_6IY0P&Vj;Re-u6Mp(69dO-%01Q33^|H(nLgs zbEn~rERH4c60<5nFqEKKa+V#ev_CuWlaNMOaY~@z_9s)lS4U}^ma~2C-dnXw$*J$u zkQ>y;LFAlSf_$!OF{zk(>sM(BHwQ|IhwtydIPfGcja_t-Oa`*okbS16lT3x(13^U4 zfZqd$RBV6z*m2zd%OBx|!4rvBJ0=NQRmnaZRV#r6EhJ}=bT^H+fAdKoi6oWoqLxlA z)75*U%E+*V1ynqQ7N%;j2ytqT5ymGbUFsutg(8~#ShTNb5~`!(UOyHB2%3z?%8Cd~ zUxzPQ4`lF6S$m6wF+8gpn{fzw&8N43d*@(s<~;oQmVfryK&D>)1wQ`zH&UsiSRpG+ zZJE~ft(*y3I#8u`^pEgw_s>Q3%`4uve|)zF{qOz<{_T;u06tOPxG4RVM}!fEj5F{2 z8hrJaB#3&6eQk;f_C+8`4JZ;fq5V3i{Oo((#kR+No3su#j+|Lgj%c7DMXJiGH*oES zN77_in>)Kf-9#X9eE_k%luRX=3PYUpi;|C}MN}rtycVG~38`Eh{awA6w4$xnU$02OHMzaXZ>Ny-F(GGscDc8O>E7ASoiS z%imd9_{-^26M^ePR)SqHZ>i@Mp&~3fY~oezsT3D+^NO^uXmaAZWmez3;`hEecQw}W zQ4o1i=^|&-u6?>8MbKnK_#f~8uH?7TGjHL4y#G6IA6;Mxh;`+mk4QppUA9;#IqM*@ zfonIsk7|&=w+!Os?@j{Id3`E~X|Dk#BrU?>9k~3Rm0s=$6%usPRZrx3Gs^kFlJwB< zh|p%y)YyQx@0byqbWBwgp>DD)XV*R{f_`DJP^o0k-)!xYEkw>i(lT9>d?MqdoMhYU>2x{inS8#9Bz5OZ2!+HfRC2_ ze?SN!lcYeIvc%OZk|WA^81!4*2O+hjY=6M<5wf7P4LPw#U7v6FxzQhc?u0z?@e(Xc z(xQ@Os=!y&VO<@mjVe?I3%5OvGw=L5FpaHuEk%-gkjrLRzVj$#nPf_&<0V~tH;T55 zUNmT#;B}F+isSQyNIz&{QuzCZ*E>JOFrdQVYBkcWmx@a3jO`0F2jgwZo^`P|&d z_3h=qTLGYGY>(3xeuCEF9?D-&Wlhz}+L~%7?4{+& znO9|88oTHmc(@p4R3PhmSETX?Yv;gy?M{cJ&$mu>hbeLff+cmJK-PImgPB#0%{XDq z1J`bZ=5rSzsrpc-TA|!r`$7pijG$PANzVYhge|)B;PRcW;vt0ffvj%%z{8_HGEXu< zWqrPN5|`|FNQWYbpjc_w2Jj@^x@@r#$$;%&mZVh@v`JM;)OGoOWmiH;3&KX_{CMam z?*s7X>`;+YCP)YElc2Xft|ZY}9OwvEF?B87kRoWnPtpWdY6ko+Pb^8BB4>h1k|u(- ziJa;Fh#*aoGkfhIsA>mqBxIq3po1obr+!u{*%DG!>}Db**<2=UxIBfjt6HLq2%0D7 zr019QoKods6}KHKuVE6>1Pz2sHoQOT-lz9_st=Ro%p&c;URbxtee|>I0PG>?to3PO zKB%hO#ZN?lUg??6E%MA^!RGx4VovDO2VMsa{Y?Gcl8u8y1aLOt^0$| zeZl*mBxiP8mf+okvM_?k5GHRq*Y#p#9RbFB=ET9mx<&4#h<(WK+r)EU$YeuI^W5Sd zBf2M<$iKMlk~y!fkjlkT4hYKlwy?#voLBuBlF(1yNPJL7Zb{vRjrDloK>%@G_MwCoT8~-2K70LmwL+e$-2- zTar#ng0jY;xaSLs3d>?e!MaYyJ$50N!<$FP=t+Fk^;iiZm7GVxeX|093CURnlC(9C zu6K!a(B%X&1lpo!W+9{3RVBqlU0Z}Cy2dzdjJkha9s#Uz7znpP#MMRfZ4UBO0mKGT zzAt5$?m<#?Sb{Oxi9xl!AK3aAuVqu&f?Wrz#}v5|-6X z$B9&vH5BrC%rtFg$vFyfr0BE~TpFVqn|?Q~d!{a-AWb`1$V}vU(MjL-1P$0Xo2GpM z(hNRbZhZViqFdTe>-P@C^WKq>o|EX0Mfqj;bHzni&`Vy_0C84NSsK>UqC(J?At^a$ zxy+0MA{!f}eU_Ycd+*4276s*!P;u=f`(*8dAJh)nw(xy!gYi8I6@s=1SuY(;T~nnY zN)>7F~8i!Qk*fVS< zE8zBfPbvg$31pVMw-fmO2znXQzNA@`b8Stv@VQ6bmkxKhJdMA!&pj{iTZN!4K_2vB zCShv1-TlFM<}YdfMs6@s<|m6tOZw?p6P42hRLzs>!8yQww^6@sq7I+&J} zZl@Q%f_&k&$;DAYK46P0m#xT4D7Gr_Vf=Z%mn69DL%l1o3%B#js2UZ!M*dMzaa3R( zDuhx&1qD=892HoF3OQF$K@k;#uAqVnDzFq4g07%~GDJoHTpp+pbOjZZDJtZge^k6U gDyX1>3M|F{1+o)hvN>C}X8-^I07*qoM6N<$f}}%KI{*Lx literal 19780 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 delta 205 jcmZ4L^~#;;mGVZWiQJ6MllavqTX07YMaJe{@fo}T{Kz`I diff --git a/resource/animation/character/hero01_soul_move.png b/resource/animation/character/hero01_soul_move.png index 564e972f56560f8347bc0d82dcda2c42072b4610..fae07db0a0c262b6a67b8dc9a33cdf2d61f0b1fe 100644 GIT binary patch literal 365 zcmV-z0h0cSP)Px$CrLy>R9J=WSS=TWFbquC6kw+&kmz}S{yZ9qKw-C8rn1LJThg?pz}s1xORkre zwupFvqvOgQ_<6kt-M2K)(6ta1KbIHRoG=wHP3oIl>x4~$d5jNdY>=3Wk%AL%o5M7I zA;MJvhew)27ng7bN#UDM2W2}Q4L=c~W^K;fHc#*C?L1C|?%mM*=W*ib*jz+WR@is7 zI9_!ch~|WgkU9SCBt=nH2w>+%nrEmxSSB>UOLc|Blbc3i@EP=aq$FYJGt&ATM7V( z{Mtb+b-O=A@q|?ogplt}Bu45ATSREI&2x~7h`zpiqK0bF=A`==qIX1J<4A&S8D}W8va|PW(5la?hHZZ4AE^J){1Qba?^$?uO`p z!JP*Ge*{)9T~_m0czMeFT~DT~Zfm+;b0IMM;hbOpb7xLsi}{wNA1ldW6Br~o(HQ79 N22WQ%mvv4FO#q=VQzifa diff --git a/resource/skill_animation/hero01_fist_skill01_add.tres b/resource/skill_animation/hero01_fist_skill01_add.tres new file mode 100644 index 0000000..3dbc0f7 --- /dev/null +++ b/resource/skill_animation/hero01_fist_skill01_add.tres @@ -0,0 +1,145 @@ +[gd_resource type="Animation" load_steps=2 format=3 uid="uid://bnqll5kf8t8qs"] + +[ext_resource type="SpriteFrames" uid="uid://cajgs8smbkjan" path="res://resource/animation/character/hero01_fist_skill01.aseprite" id="1_mf7r8"] + +[resource] +resource_name = "hero01_fist_skill01_add" +step = 0.1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("View:sprite_frames") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [ExtResource("1_mf7r8")] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("View:animation") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [&"fist_skill01_add"] +} +tracks/2/type = "position_3d" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("%Throw") +tracks/2/interp = 0 +tracks/2/loop_wrap = true +tracks/2/keys = PackedFloat32Array(0, 1, 0.75, 0.4, 0, 0.1, 1, 0.5, 0.5, 0, 0.2, 1, 0, 0.8, 0, 0.3, 1, 0, 0.8, 0) +tracks/3/type = "scale_3d" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("%Throw") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = PackedFloat32Array(0, 1, -1, 1, 1) +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("%Throw:animation") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0, 0.2), +"transitions": PackedFloat32Array(1, 1), +"update": 1, +"values": [&"airhit1", &"airhit3"] +} +tracks/5/type = "value" +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/path = NodePath("%Throw:frame") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/keys = { +"times": PackedFloat32Array(0, 0.1, 0.2, 0.3), +"transitions": PackedFloat32Array(1, 1, 1, 1), +"update": 1, +"values": [0, 1, 2, 3] +} +tracks/6/type = "value" +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/path = NodePath("Status:break_level") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/keys = { +"times": PackedFloat32Array(0, 0.6, 0.8), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 1, +"values": [0, 3, 4] +} +tracks/7/type = "value" +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/path = NodePath("Status:speed_up_rate") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/keys = { +"times": PackedFloat32Array(0.1, 0.4), +"transitions": PackedFloat32Array(1, 1), +"update": 1, +"values": [-0.5, -1.0] +} +tracks/8/type = "value" +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/path = NodePath("Status:skill_move_speed") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/keys = { +"times": PackedFloat32Array(0.1, 0.4), +"transitions": PackedFloat32Array(1, 1), +"update": 1, +"values": [2.0, 0.0] +} +tracks/9/type = "method" +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/path = NodePath("Battle") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/keys = { +"times": PackedFloat32Array(0.4), +"transitions": PackedFloat32Array(1), +"values": [{ +"args": [], +"method": &"attack1" +}] +} +tracks/10/type = "method" +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/path = NodePath("Effect") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/keys = { +"times": PackedFloat32Array(0.3), +"transitions": PackedFloat32Array(1), +"values": [{ +"args": [], +"method": &"cast_attack_particle1" +}] +} +tracks/11/type = "value" +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/path = NodePath("View:frame") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/keys = { +"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1), +"update": 1, +"values": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] +} diff --git a/resource/skill_animation/hero01_fist_skill02.tres b/resource/skill_animation/hero01_fist_skill02.tres index cd854d8..d25c56f 100644 --- a/resource/skill_animation/hero01_fist_skill02.tres +++ b/resource/skill_animation/hero01_fist_skill02.tres @@ -1,9 +1,10 @@ -[gd_resource type="Animation" load_steps=2 format=3 uid="uid://bnqll5kf8t8qs"] +[gd_resource type="Animation" load_steps=2 format=3 uid="uid://mnmlwnqk4aqq"] -[ext_resource type="SpriteFrames" uid="uid://cajgs8smbkjan" path="res://resource/animation/character/hero01_fist_skill01.aseprite" id="1_mf7r8"] +[ext_resource type="SpriteFrames" uid="uid://cajgs8smbkjan" path="res://resource/animation/character/hero01_fist_skill01.aseprite" id="1_o5821"] [resource] resource_name = "hero01_fist_skill02" +length = 0.7 step = 0.1 tracks/0/type = "value" tracks/0/imported = false @@ -15,7 +16,7 @@ tracks/0/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 1, -"values": [ExtResource("1_mf7r8")] +"values": [ExtResource("1_o5821")] } tracks/1/type = "value" tracks/1/imported = false @@ -29,117 +30,84 @@ tracks/1/keys = { "update": 1, "values": ["fist_skill02"] } -tracks/2/type = "position_3d" +tracks/2/type = "value" tracks/2/imported = false tracks/2/enabled = true -tracks/2/path = NodePath("%Throw") -tracks/2/interp = 0 +tracks/2/path = NodePath("Status:break_level") +tracks/2/interp = 1 tracks/2/loop_wrap = true -tracks/2/keys = PackedFloat32Array(0, 1, 0.75, 0.4, 0, 0.1, 1, 0.5, 0.5, 0, 0.2, 1, 0, 0.8, 0, 0.3, 1, 0, 0.8, 0) -tracks/3/type = "scale_3d" +tracks/2/keys = { +"times": PackedFloat32Array(0, 0.4, 0.5), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 1, +"values": [0, 3, 4] +} +tracks/3/type = "value" tracks/3/imported = false tracks/3/enabled = true -tracks/3/path = NodePath("%Throw") +tracks/3/path = NodePath("Status:skill_move_speed") tracks/3/interp = 1 tracks/3/loop_wrap = true -tracks/3/keys = PackedFloat32Array(0, 1, -1, 1, 1) -tracks/4/type = "value" +tracks/3/keys = { +"times": PackedFloat32Array(0, 0.1, 0.2, 0.3), +"transitions": PackedFloat32Array(1, 1, 1, 1), +"update": 1, +"values": [2.0, 8.0, 6.0, 0.0] +} +tracks/4/type = "method" tracks/4/imported = false tracks/4/enabled = true -tracks/4/path = NodePath("%Throw:animation") +tracks/4/path = NodePath("Battle") tracks/4/interp = 1 tracks/4/loop_wrap = true tracks/4/keys = { -"times": PackedFloat32Array(0, 0.2), -"transitions": PackedFloat32Array(1, 1), -"update": 1, -"values": [&"airhit1", &"airhit3"] +"times": PackedFloat32Array(0.1, 0.2, 0.3), +"transitions": PackedFloat32Array(1, 1, 1), +"values": [{ +"args": [], +"method": &"attack1" +}, { +"args": [], +"method": &"attack1" +}, { +"args": [], +"method": &"attack1" +}] } -tracks/5/type = "value" +tracks/5/type = "method" tracks/5/imported = false tracks/5/enabled = true -tracks/5/path = NodePath("%Throw:frame") +tracks/5/path = NodePath("Effect") tracks/5/interp = 1 tracks/5/loop_wrap = true tracks/5/keys = { -"times": PackedFloat32Array(0, 0.1, 0.2, 0.3), -"transitions": PackedFloat32Array(1, 1, 1, 1), -"update": 1, -"values": [0, 1, 2, 3] +"times": PackedFloat32Array(0.1), +"transitions": PackedFloat32Array(1), +"values": [{ +"args": [], +"method": &"cast_attack_particle1" +}] } -tracks/6/type = "value" +tracks/6/type = "method" tracks/6/imported = false tracks/6/enabled = true -tracks/6/path = NodePath("Status:break_level") +tracks/6/path = NodePath("Battle") tracks/6/interp = 1 tracks/6/loop_wrap = true tracks/6/keys = { -"times": PackedFloat32Array(0, 0.6, 0.8), -"transitions": PackedFloat32Array(1, 1, 1), -"update": 1, -"values": [0, 3, 4] +"times": PackedFloat32Array(), +"transitions": PackedFloat32Array(), +"values": [] } tracks/7/type = "value" tracks/7/imported = false tracks/7/enabled = true -tracks/7/path = NodePath("Status:speed_up_rate") +tracks/7/path = NodePath("View:frame") tracks/7/interp = 1 tracks/7/loop_wrap = true tracks/7/keys = { -"times": PackedFloat32Array(0.1, 0.4), -"transitions": PackedFloat32Array(1, 1), -"update": 1, -"values": [-0.5, -1.0] -} -tracks/8/type = "value" -tracks/8/imported = false -tracks/8/enabled = true -tracks/8/path = NodePath("Status:skill_move_speed") -tracks/8/interp = 1 -tracks/8/loop_wrap = true -tracks/8/keys = { -"times": PackedFloat32Array(0.1, 0.4), -"transitions": PackedFloat32Array(1, 1), -"update": 1, -"values": [2.0, 0.0] -} -tracks/9/type = "method" -tracks/9/imported = false -tracks/9/enabled = true -tracks/9/path = NodePath("Battle") -tracks/9/interp = 1 -tracks/9/loop_wrap = true -tracks/9/keys = { -"times": PackedFloat32Array(0.4), -"transitions": PackedFloat32Array(1), -"values": [{ -"args": [], -"method": &"attack1" -}] -} -tracks/10/type = "method" -tracks/10/imported = false -tracks/10/enabled = true -tracks/10/path = NodePath("Effect") -tracks/10/interp = 1 -tracks/10/loop_wrap = true -tracks/10/keys = { -"times": PackedFloat32Array(0.3), -"transitions": PackedFloat32Array(1), -"values": [{ -"args": [], -"method": &"cast_attack_particle1" -}] -} -tracks/11/type = "value" -tracks/11/imported = false -tracks/11/enabled = true -tracks/11/path = NodePath("View:frame") -tracks/11/interp = 1 -tracks/11/loop_wrap = true -tracks/11/keys = { -"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9), -"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1), +"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1), "update": 1, -"values": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] +"values": [0, 1, 2, 3, 4, 5, 6] } diff --git a/resource/skill_animation/hero01_fist_skill03.tres b/resource/skill_animation/hero01_fist_skill03.tres index 8f24e65..258e2f5 100644 --- a/resource/skill_animation/hero01_fist_skill03.tres +++ b/resource/skill_animation/hero01_fist_skill03.tres @@ -1,10 +1,10 @@ -[gd_resource type="Animation" load_steps=2 format=3 uid="uid://mnmlwnqk4aqq"] +[gd_resource type="Animation" load_steps=2 format=3 uid="uid://by2e51w02ka8s"] [ext_resource type="SpriteFrames" uid="uid://cajgs8smbkjan" path="res://resource/animation/character/hero01_fist_skill01.aseprite" id="1_o5821"] [resource] resource_name = "hero01_fist_skill03" -length = 0.7 +length = 0.9 step = 0.1 tracks/0/type = "value" tracks/0/imported = false @@ -37,7 +37,7 @@ tracks/2/path = NodePath("Status:break_level") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/keys = { -"times": PackedFloat32Array(0, 0.4, 0.5), +"times": PackedFloat32Array(0, 0.3, 0.5), "transitions": PackedFloat32Array(1, 1, 1), "update": 1, "values": [0, 3, 4] @@ -49,10 +49,10 @@ tracks/3/path = NodePath("Status:skill_move_speed") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/keys = { -"times": PackedFloat32Array(0, 0.1, 0.2, 0.3), -"transitions": PackedFloat32Array(1, 1, 1, 1), +"times": PackedFloat32Array(0, 0.1), +"transitions": PackedFloat32Array(1, 1), "update": 1, -"values": [2.0, 8.0, 6.0, 0.0] +"values": [4.0, 0.0] } tracks/4/type = "method" tracks/4/imported = false @@ -61,17 +61,11 @@ tracks/4/path = NodePath("Battle") tracks/4/interp = 1 tracks/4/loop_wrap = true tracks/4/keys = { -"times": PackedFloat32Array(0.1, 0.2, 0.3), -"transitions": PackedFloat32Array(1, 1, 1), +"times": PackedFloat32Array(0.2), +"transitions": PackedFloat32Array(1), "values": [{ "args": [], "method": &"attack1" -}, { -"args": [], -"method": &"attack1" -}, { -"args": [], -"method": &"attack1" }] } tracks/5/type = "method" @@ -81,7 +75,7 @@ tracks/5/path = NodePath("Effect") tracks/5/interp = 1 tracks/5/loop_wrap = true tracks/5/keys = { -"times": PackedFloat32Array(0.1), +"times": PackedFloat32Array(0.2), "transitions": PackedFloat32Array(1), "values": [{ "args": [], @@ -95,19 +89,8 @@ tracks/6/path = NodePath("View:frame") tracks/6/interp = 1 tracks/6/loop_wrap = true tracks/6/keys = { -"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6), -"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1), +"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1), "update": 1, -"values": [0, 1, 2, 3, 4, 5, 6] -} -tracks/7/type = "method" -tracks/7/imported = false -tracks/7/enabled = true -tracks/7/path = NodePath("Battle") -tracks/7/interp = 1 -tracks/7/loop_wrap = true -tracks/7/keys = { -"times": PackedFloat32Array(), -"transitions": PackedFloat32Array(), -"values": [] +"values": [0, 1, 2, 3, 4, 5, 6, 7, 8] } diff --git a/resource/skill_animation/hero01_long_skill01.tres b/resource/skill_animation/hero01_long_skill01.tres index 91832f7..fb091d6 100644 --- a/resource/skill_animation/hero01_long_skill01.tres +++ b/resource/skill_animation/hero01_long_skill01.tres @@ -37,7 +37,7 @@ tracks/2/path = NodePath("Status:break_level") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/keys = { -"times": PackedFloat32Array(0, 0.6, 0.7), +"times": PackedFloat32Array(0, 0.3, 0.7), "transitions": PackedFloat32Array(1, 1, 1), "update": 1, "values": [0, 3, 4] diff --git a/resource/skill_animation/hero01_long_skill02.tres b/resource/skill_animation/hero01_long_skill02.tres index 21c90fb..ab4ceb5 100644 --- a/resource/skill_animation/hero01_long_skill02.tres +++ b/resource/skill_animation/hero01_long_skill02.tres @@ -85,11 +85,14 @@ tracks/6/path = NodePath("Battle") tracks/6/interp = 1 tracks/6/loop_wrap = true tracks/6/keys = { -"times": PackedFloat32Array(0.2), -"transitions": PackedFloat32Array(1), +"times": PackedFloat32Array(0.1, 0.2), +"transitions": PackedFloat32Array(1, 1), "values": [{ "args": [], "method": &"attack1" +}, { +"args": [], +"method": &"attack1" }] } tracks/7/type = "method" @@ -99,11 +102,14 @@ tracks/7/path = NodePath("Effect") tracks/7/interp = 1 tracks/7/loop_wrap = true tracks/7/keys = { -"times": PackedFloat32Array(0.2), -"transitions": PackedFloat32Array(1), +"times": PackedFloat32Array(0.1, 0.2), +"transitions": PackedFloat32Array(1, 1), "values": [{ "args": [], "method": &"cast_attack_particle1" +}, { +"args": [], +"method": &"cast_attack_particle1" }] } tracks/8/type = "value" diff --git a/resource/skill_animation_library/animation_library.tres b/resource/skill_animation_library/animation_library.tres index 947b81c..3f50c70 100644 --- a/resource/skill_animation_library/animation_library.tres +++ b/resource/skill_animation_library/animation_library.tres @@ -1,4 +1,4 @@ -[gd_resource type="AnimationLibrary" load_steps=57 format=3 uid="uid://croik07a1qko5"] +[gd_resource type="AnimationLibrary" load_steps=58 format=3 uid="uid://croik07a1qko5"] [ext_resource type="Animation" uid="uid://t01a4jvp8srr" path="res://resource/skill_animation/hero01_fist_attack01.tres" id="1_4bwwm"] [ext_resource type="Animation" uid="uid://cfapnjkj5dkws" path="res://resource/skill_animation/hero01_basic_flash.tres" id="1_46f01"] @@ -41,10 +41,11 @@ [ext_resource type="Animation" uid="uid://uxuayi0qf3b7" path="res://resource/skill_animation/hero01_long_air_skill01.tres" id="20_0ey8y"] [ext_resource type="Animation" uid="uid://cjc6sis2xn1yy" path="res://resource/skill_animation/hero01_long_air_skill02.tres" id="21_ks43l"] [ext_resource type="Animation" uid="uid://b0a1nnw2e13sg" path="res://resource/skill_animation/hero01_fist_skill_charging01.tres" id="23_12bpf"] -[ext_resource type="Animation" uid="uid://mnmlwnqk4aqq" path="res://resource/skill_animation/hero01_fist_skill03.tres" id="23_541fl"] +[ext_resource type="Animation" uid="uid://by2e51w02ka8s" path="res://resource/skill_animation/hero01_fist_skill03.tres" id="23_541fl"] [ext_resource type="Animation" uid="uid://bbq4e0a0eyrke" path="res://resource/skill_animation/hero01_fist_skill_charging02.tres" id="24_j0oqq"] [ext_resource type="Animation" uid="uid://by0w3sn21f1v0" path="res://resource/skill_animation/hero01_fist_skill01.tres" id="24_qdhvi"] -[ext_resource type="Animation" uid="uid://bnqll5kf8t8qs" path="res://resource/skill_animation/hero01_fist_skill02.tres" id="25_j3bpt"] +[ext_resource type="Animation" uid="uid://bnqll5kf8t8qs" path="res://resource/skill_animation/hero01_fist_skill01_add.tres" id="25_j3bpt"] +[ext_resource type="Animation" uid="uid://mnmlwnqk4aqq" path="res://resource/skill_animation/hero01_fist_skill02.tres" id="28_p1ciy"] [ext_resource type="Animation" uid="uid://h8hm3kbecdx8" path="res://resource/skill_animation/hero01_remote01.tres" id="33_7i37k"] [ext_resource type="Animation" uid="uid://q7qlw0a7hfjt" path="res://resource/skill_animation/hero01_slash01.tres" id="38_lyels"] [ext_resource type="Animation" uid="uid://b7f0rdven8gdc" path="res://resource/skill_animation/hero01_long_skill03.tres" id="42_d2bqv"] @@ -84,7 +85,8 @@ _data = { &"hero01_fist_attack04": ExtResource("4_087em"), &"hero01_fist_attack05": ExtResource("2_y7w3h"), &"hero01_fist_skill01": ExtResource("24_qdhvi"), -&"hero01_fist_skill02": ExtResource("25_j3bpt"), +&"hero01_fist_skill01_add": ExtResource("25_j3bpt"), +&"hero01_fist_skill02": ExtResource("28_p1ciy"), &"hero01_fist_skill03": ExtResource("23_541fl"), &"hero01_fist_skill_charging": ExtResource("1_nd54y"), &"hero01_fist_skill_charging01": ExtResource("23_12bpf"), diff --git a/scene/ai/bullet_simple.tscn b/scene/ai/bullet_simple.tscn index 3fefba1..24469e9 100644 --- a/scene/ai/bullet_simple.tscn +++ b/scene/ai/bullet_simple.tscn @@ -11,7 +11,7 @@ [node name="BeehaveTree" type="Node" node_paths=PackedStringArray("blackboard")] script = ExtResource("1_7oi2o") -blackboard = NodePath("@Node@25099") +blackboard = NodePath("@Node@25084") [node name="SequenceComposite" type="Node" parent="."] script = ExtResource("3_i33jf") diff --git a/scene/ai/monster01.tscn b/scene/ai/monster01.tscn index 0733337..0e82f45 100644 --- a/scene/ai/monster01.tscn +++ b/scene/ai/monster01.tscn @@ -11,7 +11,7 @@ [node name="BeehaveTree" type="Node" node_paths=PackedStringArray("blackboard")] script = ExtResource("1_bbyao") -blackboard = NodePath("@Node@25100") +blackboard = NodePath("@Node@25085") [node name="SequenceComposite" type="Node" parent="."] script = ExtResource("2_04nig") diff --git a/scene/character/character.tscn b/scene/character/character.tscn index e837ee1..0f7dbc9 100644 --- a/scene/character/character.tscn +++ b/scene/character/character.tscn @@ -4,7 +4,7 @@ [ext_resource type="Script" uid="uid://cms637d0jt6sk" path="res://script/character/hitbox.gd" id="2_6xf87"] [ext_resource type="Script" uid="uid://bfi4gneebe3oq" path="res://script/character/status.gd" id="2_txdip"] [ext_resource type="Script" uid="uid://cnaqs44siwa45" path="res://script/character/move.gd" id="4_66r53"] -[ext_resource type="SpriteFrames" uid="uid://ce83cuqwgwwi4" path="res://resource/animation/character/hero01_long_attack.aseprite" id="4_sox5o"] +[ext_resource type="SpriteFrames" uid="uid://cajgs8smbkjan" path="res://resource/animation/character/hero01_fist_skill01.aseprite" id="4_sox5o"] [ext_resource type="Script" uid="uid://c247mf44qb3uf" path="res://script/character/view.gd" id="4_vijjv"] [ext_resource type="Script" uid="uid://c24is3uqqcmcn" path="res://script/character/skill.gd" id="6_h4xqy"] [ext_resource type="AnimationLibrary" uid="uid://croik07a1qko5" path="res://resource/skill_animation_library/animation_library.tres" id="6_pakq5"] @@ -124,7 +124,7 @@ shape = SubResource("CylinderShape3D_ehwx5") [node name="Status" type="Node3D" parent="."] unique_name_in_owner = true script = ExtResource("2_txdip") -speed_up_rate = -0.5 +speed_up_rate = -1.0 skill_move_speed = 2.0 skill_float_speed = 0.1 @@ -138,7 +138,7 @@ pixel_size = 0.02 double_sided = false texture_filter = 0 sprite_frames = ExtResource("4_sox5o") -animation = &"long_air_attack03" +animation = &"fist_skill03" script = ExtResource("4_vijjv") [node name="Move" type="Node3D" parent="."] @@ -187,7 +187,7 @@ script = ExtResource("14_gua01") [node name="Throw" type="AnimatedSprite3D" parent="."] unique_name_in_owner = true -transform = Transform3D(-1, 0, 0, 0, 1, 0, 0, 0, 1, 0.75, 0.4, 0) +transform = Transform3D(-1, 0, 0, 0, 1, -8.74228e-08, 0, 8.74228e-08, 1, 0.75, 0.4, 0) visible = false pixel_size = 0.02 sprite_frames = ExtResource("15_70jx1") diff --git a/scene/effect/particle/_particle_fist1.tscn b/scene/effect/particle/_particle_fist1.tscn index 6aa3708..f2dc640 100644 --- a/scene/effect/particle/_particle_fist1.tscn +++ b/scene/effect/particle/_particle_fist1.tscn @@ -1,14 +1,14 @@ [gd_scene load_steps=36 format=3 uid="uid://cohy1qv35n57q"] -[ext_resource type="Script" path="res://script/effect/particle.gd" id="1_2o8k8"] -[ext_resource type="Shader" path="res://render/shader/effect_slash.gdshader" id="2_f3m3g"] +[ext_resource type="Script" uid="uid://dxoik7jm7xm2q" path="res://script/effect/particle.gd" id="1_2o8k8"] +[ext_resource type="Shader" uid="uid://b4x52xwsln0sq" path="res://render/shader/effect_slash.gdshader" id="2_f3m3g"] [ext_resource type="Texture2D" uid="uid://c4byf37he3mjt" path="res://render/texture/particle/noise/noise1.png" id="3_paeu0"] [ext_resource type="Texture2D" uid="uid://dg6i5l05y3vww" path="res://render/texture/particle/gradient/gradient2.png" id="3_yyp7i"] [ext_resource type="Texture2D" uid="uid://b5nr3mq3u5tjn" path="res://render/texture/particle/mask/mask13.png" id="5_4pjvu"] [ext_resource type="Texture2D" uid="uid://dd3e7ol8qa5eq" path="res://render/texture/particle/noise/noise2.png" id="5_yf7h5"] [ext_resource type="ArrayMesh" uid="uid://dq207a0waxk0j" path="res://render/mesh/slash1.obj" id="7_tkeme"] [ext_resource type="Texture2D" uid="uid://hcpxvwtjhvag" path="res://render/texture/particle/mask/mask11.png" id="8_7gljn"] -[ext_resource type="Shader" path="res://render/shader/effect_slash_dark.gdshader" id="9_ocwqc"] +[ext_resource type="Shader" uid="uid://yl3qwpecny54" path="res://render/shader/effect_slash_dark.gdshader" id="9_ocwqc"] [ext_resource type="Texture2D" uid="uid://ciusodtprwghg" path="res://render/texture/particle/gradient/gradient4.png" id="10_x51x7"] [ext_resource type="Texture2D" uid="uid://c61nspskft0to" path="res://render/texture/particle/mask/mask14.png" id="11_uxv6d"] [ext_resource type="RibbonTrailMesh" uid="uid://cv0787wcswb6d" path="res://render/trail_mesh/flare_blunt.tres" id="12_ukx45"] @@ -38,7 +38,7 @@ metadata/_snap_enabled = true curve = SubResource("Curve_4ofb5") [sub_resource type="Curve" id="Curve_q5uf1"] -max_value = 1.1 +_limits = [0.0, 1.1, 0.0, 1.0] _data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(1, 1.1), 0.0, 0.0, 0, 0] point_count = 2 @@ -136,6 +136,7 @@ emission_ring_axis = Vector3(0, 1, 0) emission_ring_height = 0.2 emission_ring_radius = 1.25 emission_ring_inner_radius = 1.0 +emission_ring_cone_angle = 90.0 radial_velocity_min = 2.99998 radial_velocity_max = 3.99998 radial_velocity_curve = SubResource("CurveTexture_73qq2") diff --git a/scene/effect/particle/hero01_fist_skill03.tscn b/scene/effect/particle/hero01_fist_skill03.tscn new file mode 100644 index 0000000..b8996e2 --- /dev/null +++ b/scene/effect/particle/hero01_fist_skill03.tscn @@ -0,0 +1,10 @@ +[gd_scene load_steps=3 format=3 uid="uid://dg35c5r582lry"] + +[ext_resource type="Script" uid="uid://dxoik7jm7xm2q" path="res://script/effect/particle.gd" id="1_ua8eh"] +[ext_resource type="PackedScene" uid="uid://cohy1qv35n57q" path="res://scene/effect/particle/_particle_fist1.tscn" id="2_8oawf"] + +[node name="Particle" type="Node3D"] +script = ExtResource("1_ua8eh") + +[node name="Particle" parent="." instance=ExtResource("2_8oawf")] +transform = Transform3D(0.8, 0, 0, 0, -3.49691e-08, -0.8, 0, 0.8, -3.49691e-08, 0, 0, 0) diff --git a/script/character/battle.gd b/script/character/battle.gd index 19550b0..30ae5fe 100644 --- a/script/character/battle.gd +++ b/script/character/battle.gd @@ -67,10 +67,27 @@ func add_attack(attack_info: Struct.AttackInfo) -> void: result = target else: battle_attack_area.refresh_attack_area(attack_info) + var offset_xz: Vector2 = attack_info.attack_dir * attack_info.attack_box.offset.x + var offset_y: float = attack_info.attack_box.offset.y + var offset: Vector3 = Vector3(offset_xz.x, offset_y, offset_xz.y) + var shape: Shape3D = attack_info.attack_box.shape + _debug_draw_attack_box(shape, offset) return on_attack_character(result, attack_info) +func _debug_draw_attack_box(shape: Shape3D, offset: Vector3) -> void: + if not get_tree().debug_collisions_hint: + return + if shape is BoxShape3D: + var box_scale: Vector3 = shape.size + character.cast_particle(ResourceManager.particle_debug_box, false, offset, box_scale) + elif shape is CylinderShape3D: + var box_scale: Vector3 = Vector3(shape.radius, shape.height, shape.radius) + character.cast_particle(ResourceManager.particle_debug_cylinder, false, offset, box_scale) + return + + func on_attack_character(result: Character, attack_info: Struct.AttackInfo) -> void: if attack_info.attack_box.is_hit_self != (result.team() == character.team()): return @@ -472,7 +489,7 @@ func on_hero01_long_stab01_cast(): func on_hero01_fist_skill01_break(): var target: int = status.throw_target - skill.cast_skill_by_name("hero01_fist_skill02", status.move_dir) + skill.cast_skill_by_name("hero01_fist_skill01_add", status.move_dir) status.throw_target = target diff --git a/script/character/skill.gd b/script/character/skill.gd index 95e1651..b2f6c2a 100644 --- a/script/character/skill.gd +++ b/script/character/skill.gd @@ -177,6 +177,7 @@ func break_skill(): status.is_hit_wall = false status.set_skill_break_level_add(0) buff.remove_buff("charging") + buff.remove_buff("pause") battle_attack_area.set_active(false) if status.throw_target != 0: var character_to: Character = Global.character_mgr.get_character(status.throw_target) diff --git a/script/manager/camera_manager.gd b/script/manager/camera_manager.gd index 70f308e..abe8eb9 100644 --- a/script/manager/camera_manager.gd +++ b/script/manager/camera_manager.gd @@ -12,7 +12,7 @@ var level_size: Vector2 = Vector2(12.8, 7.68) var level_pos: Vector2 = Vector2.ZERO var offset: float = 10 var shake_offset_x: float -var camera_limit: Vector3 = Vector3(6.4, 1.7, 3.58) #x,z-up,z-down +var camera_limit: Vector3 = Vector3(6.4, 1.7, 3.28) #x,z-up,z-down var camera_size: float = 7.2 var basic_size: Vector2 = Vector2(640, 360) var scale_y: float = cos(deg_to_rad(45.0)) * 2.0 #1.414 @@ -102,7 +102,7 @@ func on_character_create(id: int, type: int, pos: Vector3): func on_character_pos_changed(id: int, pos: Vector3): if id == target: target_character_pos.x = pos.x - target_character_pos.y = pos.z + target_character_pos.y = pos.z - 0.4 target_pos_y = pos.y refresh_target_pos()