From 497d711912b68bfcbda795aecef60707dd6ddf7e Mon Sep 17 00:00:00 2001 From: chendian <-> Date: Mon, 27 Jan 2025 08:29:27 +0800 Subject: [PATCH] =?UTF-8?q?long=20stab03=EF=BC=8Clong=E6=8A=80=E8=83=BD?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/attack/blunt_normal_hit_up.tres | 7 +- config/attack/sharp_mid_hit_blow.tres | 3 +- config/attack/sharp_mid_hit_down.tres | 4 +- config/attack/sharp_normal_hit_back_hard.tres | 18 +++ config/attack/sharp_normal_hit_down.tres | 10 +- config/character/bullet01.tres | 4 +- config/character/bullet_hero01_long_stab.tres | 32 +++++ .../character/bullet_hero01_short_stab01.tres | 2 +- .../character/bullet_hero01_soul_hit01.tres | 2 +- .../{fast_fly.tres => fly_fast.tres} | 0 config/character_move/fly_normal.tres | 9 ++ .../hero01_fist_attack05.tres | 23 ++-- .../hero01_fist_skill03.tres | 22 ++-- .../hero01_long_air_attack03.tres | 27 ++-- .../hero01_long_stab01.tres | 4 +- .../hero01_long_stab03.tres | 36 ++++++ .../character/hero01_long_attack.aseprite | Bin 56150 -> 52146 bytes .../character/hero01_long_attack.png | Bin 37195 -> 30933 bytes .../character/hero01_long_skill01.aseprite | Bin 27993 -> 26942 bytes .../character/hero01_long_skill01.png | Bin 18506 -> 16897 bytes .../skill_animation/hero01_combo0101.tres | 8 +- .../skill_animation/hero01_combo0102.tres | 8 +- .../hero01_common_skill0101.tres | 8 +- .../hero01_common_skill0102.tres | 8 +- .../hero01_common_skill03.tres | 8 +- .../skill_animation/hero01_fist_attack05.tres | 6 +- .../skill_animation/hero01_fist_skill03.tres | 27 +++- .../hero01_long_air_attack01.tres | 20 +-- .../hero01_long_air_attack02.tres | 20 +-- .../hero01_long_air_attack03.tres | 20 +-- .../hero01_long_air_skill01.tres | 20 +-- .../skill_animation/hero01_long_attack01.tres | 8 +- .../skill_animation/hero01_long_attack02.tres | 8 +- .../skill_animation/hero01_long_skill02.tres | 18 +-- .../skill_animation/hero01_long_stab03.tres | 121 ++++++++++++++++++ resource/skill_animation/hero01_remote01.tres | 8 +- .../animation_library.tres | 4 +- scene/ai/bullet_simple.tscn | 2 +- scene/ai/bullet_simple_penetrat.tscn | 41 +++++- scene/ai/monster01.tscn | 2 +- scene/character/character.tscn | 7 +- scene/effect/particle/_particle_slash1.tscn | 6 +- scene/effect/particle/_particle_slash2.tscn | 9 +- scene/effect/particle/_particle_slash3.tscn | 5 +- scene/effect/particle/_particle_slash4.tscn | 4 +- scene/effect/particle/_particle_stab3.tscn | 94 ++++++++++++++ .../particle/bullet_hero01_long_stab.tscn | 10 ++ script/_global/setting.gd | 1 - script/ai/action/action_destroy.gd | 11 +- script/character/battle.gd | 24 ++-- script/character/character.gd | 12 +- script/character/move.gd | 3 +- script/character/skill.gd | 4 +- script/config/character_cfg.gd | 8 +- script/config/skill_cfg.gd | 9 +- script/effect/effect_base.gd | 17 ++- script/effect/particle.gd | 37 ++---- script/ui/hud/weapon_item.gd | 29 ++--- 58 files changed, 605 insertions(+), 253 deletions(-) create mode 100644 config/attack/sharp_normal_hit_back_hard.tres create mode 100644 config/character/bullet_hero01_long_stab.tres rename config/character_move/{fast_fly.tres => fly_fast.tres} (100%) create mode 100644 config/character_move/fly_normal.tres create mode 100644 config/skill_player_weapon/hero01_long_stab03.tres create mode 100644 resource/skill_animation/hero01_long_stab03.tres create mode 100644 scene/effect/particle/_particle_stab3.tscn create mode 100644 scene/effect/particle/bullet_hero01_long_stab.tscn diff --git a/config/attack/blunt_normal_hit_up.tres b/config/attack/blunt_normal_hit_up.tres index 7f13239..b7b06eb 100644 --- a/config/attack/blunt_normal_hit_up.tres +++ b/config/attack/blunt_normal_hit_up.tres @@ -1,6 +1,6 @@ [gd_resource type="Resource" script_class="AttackCfg" load_steps=2 format=3 uid="uid://ctbdt77yyubxn"] -[ext_resource type="Script" path="res://script/config/attack_cfg.gd" id="1_r7m5n"] +[ext_resource type="Script" uid="uid://bm8fn2yciam1g" path="res://script/config/attack_cfg.gd" id="1_r7m5n"] [resource] script = ExtResource("1_r7m5n") @@ -10,12 +10,9 @@ stun_attack = 10.0 damage_type = 1 is_floating = true is_rebound = false -is_stop_self = true is_throw_check = false is_throw_end = false hit_back_speed = 0.0 -hit_up_speed = 3.0 +hit_up_speed = 2.0 hit_back_duration = 0.05 hit_up_duration = 0.1 -pause_time = 0.05 - diff --git a/config/attack/sharp_mid_hit_blow.tres b/config/attack/sharp_mid_hit_blow.tres index f6e0bf6..b210dd8 100644 --- a/config/attack/sharp_mid_hit_blow.tres +++ b/config/attack/sharp_mid_hit_blow.tres @@ -1,6 +1,6 @@ [gd_resource type="Resource" script_class="AttackCfg" load_steps=2 format=3 uid="uid://2bkub7vmxjeu"] -[ext_resource type="Script" path="res://script/config/attack_cfg.gd" id="1_ggt4q"] +[ext_resource type="Script" uid="uid://bm8fn2yciam1g" path="res://script/config/attack_cfg.gd" id="1_ggt4q"] [resource] script = ExtResource("1_ggt4q") @@ -10,7 +10,6 @@ stun_attack = 10.0 damage_type = 0 is_floating = true is_rebound = false -is_stop_self = true is_throw_check = false is_throw_end = false hit_back_speed = 3.5 diff --git a/config/attack/sharp_mid_hit_down.tres b/config/attack/sharp_mid_hit_down.tres index cc19698..54e04de 100644 --- a/config/attack/sharp_mid_hit_down.tres +++ b/config/attack/sharp_mid_hit_down.tres @@ -13,6 +13,6 @@ is_rebound = false is_throw_check = false is_throw_end = false hit_back_speed = 0.0 -hit_up_speed = -10.0 +hit_up_speed = -12.0 hit_back_duration = 0.05 -hit_up_duration = 1.0 +hit_up_duration = 0.05 diff --git a/config/attack/sharp_normal_hit_back_hard.tres b/config/attack/sharp_normal_hit_back_hard.tres new file mode 100644 index 0000000..262f624 --- /dev/null +++ b/config/attack/sharp_normal_hit_back_hard.tres @@ -0,0 +1,18 @@ +[gd_resource type="Resource" script_class="AttackCfg" load_steps=2 format=3 uid="uid://dmfr73m28vsqj"] + +[ext_resource type="Script" uid="uid://bm8fn2yciam1g" path="res://script/config/attack_cfg.gd" id="1_rye6c"] + +[resource] +script = ExtResource("1_rye6c") +damage_rate = 1.0 +break_level = 2 +stun_attack = 10.0 +damage_type = 0 +is_floating = true +is_rebound = false +is_throw_check = false +is_throw_end = false +hit_back_speed = 4.5 +hit_up_speed = 0.1 +hit_back_duration = 0.1 +hit_up_duration = 0.05 diff --git a/config/attack/sharp_normal_hit_down.tres b/config/attack/sharp_normal_hit_down.tres index 2ccd7f3..9af5d7c 100644 --- a/config/attack/sharp_normal_hit_down.tres +++ b/config/attack/sharp_normal_hit_down.tres @@ -1,6 +1,6 @@ [gd_resource type="Resource" script_class="AttackCfg" load_steps=2 format=3 uid="uid://bnqnw10v7kude"] -[ext_resource type="Script" path="res://script/config/attack_cfg.gd" id="1_fl1sp"] +[ext_resource type="Script" uid="uid://bm8fn2yciam1g" path="res://script/config/attack_cfg.gd" id="1_fl1sp"] [resource] script = ExtResource("1_fl1sp") @@ -9,14 +9,10 @@ break_level = 1 stun_attack = 10.0 damage_type = 0 is_floating = true -is_hit_down = true is_rebound = false -is_stop_self = true is_throw_check = false is_throw_end = false -hit_back_speed = 6.0 -hit_up_speed = -6.0 +hit_back_speed = 1.0 +hit_up_speed = -10.0 hit_back_duration = 0.05 hit_up_duration = 0.05 -pause_time = 0.02 - diff --git a/config/character/bullet01.tres b/config/character/bullet01.tres index 92a1f8c..2fbabc2 100644 --- a/config/character/bullet01.tres +++ b/config/character/bullet01.tres @@ -3,8 +3,8 @@ [ext_resource type="Resource" uid="uid://ctbdt77yyubxn" path="res://config/attack/blunt_normal_hit_up.tres" id="1_4vq22"] [ext_resource type="Resource" uid="uid://bhxq1uffxyda8" path="res://config/attack_box/circle_normal_thin.tres" id="2_ewiqr"] [ext_resource type="Resource" uid="uid://dpajmgrlaytah" path="res://config/character_mp/normal.tres" id="2_hrxfp"] -[ext_resource type="Resource" uid="uid://iv8g1x3bkxvv" path="res://config/character_move/fast_fly.tres" id="3_gqffj"] -[ext_resource type="Script" path="res://script/config/character_cfg.gd" id="3_p63bn"] +[ext_resource type="Resource" uid="uid://iv8g1x3bkxvv" path="res://config/character_move/fly_fast.tres" id="3_gqffj"] +[ext_resource type="Script" uid="uid://dt3chi1tgnaef" path="res://script/config/character_cfg.gd" id="3_p63bn"] [ext_resource type="Resource" uid="uid://h1curvk64vm3" path="res://config/character_shield/none.tres" id="4_qnn3b"] [ext_resource type="Resource" uid="uid://5jes0p152akr" path="res://config/character_stun/none.tres" id="6_y4hsh"] diff --git a/config/character/bullet_hero01_long_stab.tres b/config/character/bullet_hero01_long_stab.tres new file mode 100644 index 0000000..03c49de --- /dev/null +++ b/config/character/bullet_hero01_long_stab.tres @@ -0,0 +1,32 @@ +[gd_resource type="Resource" script_class="CharacterCfg" load_steps=10 format=3 uid="uid://rxt1emwats2v"] + +[ext_resource type="PackedScene" uid="uid://tr65aikkpp2e" path="res://scene/ai/bullet_simple_penetrat.tscn" id="1_70j82"] +[ext_resource type="Resource" uid="uid://dmfr73m28vsqj" path="res://config/attack/sharp_normal_hit_back_hard.tres" id="2_70j82"] +[ext_resource type="Resource" uid="uid://decgfcx2xsj8i" path="res://config/attack_box/circle_mid.tres" id="3_6gt06"] +[ext_resource type="Resource" uid="uid://cw7rb4rlfw33q" path="res://config/attack/sharp_heavy_hit_back.tres" id="4_2lpps"] +[ext_resource type="Resource" uid="uid://dc2iepk6nb7rs" path="res://config/character_move/fly_normal.tres" id="4_70j82"] +[ext_resource type="Resource" uid="uid://dpajmgrlaytah" path="res://config/character_mp/normal.tres" id="5_1lrf8"] +[ext_resource type="Script" uid="uid://dt3chi1tgnaef" path="res://script/config/character_cfg.gd" id="6_pyp0d"] +[ext_resource type="Resource" uid="uid://h1curvk64vm3" path="res://config/character_shield/none.tres" id="7_iotq2"] +[ext_resource type="Resource" uid="uid://5jes0p152akr" path="res://config/character_stun/none.tres" id="8_euuy0"] + +[resource] +script = ExtResource("6_pyp0d") +name = "hero01" +type = 2 +sprite_height = 26 +sprite_width = 16 +move = ExtResource("4_70j82") +shield = ExtResource("7_iotq2") +stun = ExtResource("8_euuy0") +mp = ExtResource("5_1lrf8") +ai_behavior_tree = ExtResource("1_70j82") +hp_max = 100.0 +attack = 1.0 +attack1 = ExtResource("2_70j82") +attack1_box = ExtResource("3_6gt06") +attack2 = ExtResource("4_2lpps") +attack2_box = ExtResource("3_6gt06") +sub_character_auto_create = false +material_on = 0 +material_off = 0 diff --git a/config/character/bullet_hero01_short_stab01.tres b/config/character/bullet_hero01_short_stab01.tres index f64e872..715d6fe 100644 --- a/config/character/bullet_hero01_short_stab01.tres +++ b/config/character/bullet_hero01_short_stab01.tres @@ -3,7 +3,7 @@ [ext_resource type="PackedScene" uid="uid://bei75ysjq2pi4" path="res://scene/ai/bullet_simple.tscn" id="1_3q8i1"] [ext_resource type="Resource" uid="uid://d3mcp8sf6qbmd" path="res://config/attack/sharp_normal_hit.tres" id="2_3q8i1"] [ext_resource type="Resource" uid="uid://decgfcx2xsj8i" path="res://config/attack_box/circle_mid.tres" id="3_3q8i1"] -[ext_resource type="Resource" uid="uid://iv8g1x3bkxvv" path="res://config/character_move/fast_fly.tres" id="4_2bsgq"] +[ext_resource type="Resource" uid="uid://iv8g1x3bkxvv" path="res://config/character_move/fly_fast.tres" id="4_2bsgq"] [ext_resource type="Resource" uid="uid://dpajmgrlaytah" path="res://config/character_mp/normal.tres" id="5_gsbwd"] [ext_resource type="Script" uid="uid://dt3chi1tgnaef" path="res://script/config/character_cfg.gd" id="6_1ypqo"] [ext_resource type="Resource" uid="uid://h1curvk64vm3" path="res://config/character_shield/none.tres" id="7_k8icm"] diff --git a/config/character/bullet_hero01_soul_hit01.tres b/config/character/bullet_hero01_soul_hit01.tres index 1ae0d48..c41e3f7 100644 --- a/config/character/bullet_hero01_soul_hit01.tres +++ b/config/character/bullet_hero01_soul_hit01.tres @@ -3,7 +3,7 @@ [ext_resource type="Resource" uid="uid://ckbf40c75bfqf" path="res://config/attack/sharp_normal_hit_up.tres" id="1_at6jo"] [ext_resource type="PackedScene" uid="uid://bei75ysjq2pi4" path="res://scene/ai/bullet_simple.tscn" id="1_m7qit"] [ext_resource type="Resource" uid="uid://bld0vhuhgydm8" path="res://config/attack_box/direct.tres" id="2_780us"] -[ext_resource type="Resource" uid="uid://iv8g1x3bkxvv" path="res://config/character_move/fast_fly.tres" id="3_cx00u"] +[ext_resource type="Resource" uid="uid://iv8g1x3bkxvv" path="res://config/character_move/fly_fast.tres" id="3_cx00u"] [ext_resource type="Resource" uid="uid://dpajmgrlaytah" path="res://config/character_mp/normal.tres" id="4_alws1"] [ext_resource type="Script" uid="uid://dt3chi1tgnaef" path="res://script/config/character_cfg.gd" id="5_4n1ni"] [ext_resource type="Resource" uid="uid://h1curvk64vm3" path="res://config/character_shield/none.tres" id="6_u7wv4"] diff --git a/config/character_move/fast_fly.tres b/config/character_move/fly_fast.tres similarity index 100% rename from config/character_move/fast_fly.tres rename to config/character_move/fly_fast.tres diff --git a/config/character_move/fly_normal.tres b/config/character_move/fly_normal.tres new file mode 100644 index 0000000..2432ce9 --- /dev/null +++ b/config/character_move/fly_normal.tres @@ -0,0 +1,9 @@ +[gd_resource type="Resource" script_class="CharacterMoveCfg" load_steps=2 format=3 uid="uid://dc2iepk6nb7rs"] + +[ext_resource type="Script" uid="uid://dk6mufc8e8i88" path="res://script/config/character_move_cfg.gd" id="1_33bqv"] + +[resource] +script = ExtResource("1_33bqv") +speed = 5.0 +gravity_scale = 0.0 +jump_velocity = 6.0 diff --git a/config/skill_player_weapon/hero01_fist_attack05.tres b/config/skill_player_weapon/hero01_fist_attack05.tres index 210f7fb..593c2bc 100644 --- a/config/skill_player_weapon/hero01_fist_attack05.tres +++ b/config/skill_player_weapon/hero01_fist_attack05.tres @@ -2,7 +2,7 @@ [ext_resource type="Resource" uid="uid://bwe8xlgfhx1gl" path="res://config/attack/blunt_heavy_hit_blow.tres" id="1_5lwhl"] [ext_resource type="Resource" uid="uid://bqejjllfy03h3" path="res://config/attack_box/box_normal.tres" id="2_g7bbg"] -[ext_resource type="Script" path="res://script/config/skill_weapon_cfg.gd" id="2_ym7q1"] +[ext_resource type="Script" uid="uid://dgwtu2wj5033u" path="res://script/config/skill_weapon_cfg.gd" id="2_ym7q1"] [ext_resource type="Animation" uid="uid://b2xdmgnem1h4g" path="res://resource/skill_animation/hero01_fist_attack05.tres" id="3_dbjmb"] [ext_resource type="SpriteFrames" uid="uid://bhsotj76tuovy" path="res://resource/animation/character/hero01_fist_attack.aseprite" id="4_mhr07"] [ext_resource type="Resource" uid="uid://c6alg8pmqfdxm" path="res://config/weapon/fist.tres" id="5_en30r"] @@ -13,24 +13,21 @@ weapon = ExtResource("5_en30r") action = "attack_light" name = "" skill_animation = ExtResource("3_dbjmb") -range = 0.0 -free_lock = false -ignore_push = false -attack1 = ExtResource("1_5lwhl") -attack1_box = ExtResource("2_g7bbg") -attack1_with_pause_frame = true -attack1_with_stop = true -attack2_with_pause_frame = false -attack2_with_stop = false stance_from = 4 stance_to = 5 break_level = 3 is_charging = false +attack1 = ExtResource("1_5lwhl") +attack1_box = ExtResource("2_g7bbg") +attack1_with_stop = true +attack2_with_stop = false mp_cost = 0 mp_sub_cost = false -warn_type = 0 -with_stop = false +free_lock = false +ignore_push = false is_lock_x = true -refresh_animation = false +is_lock_x_move = false +range = 0.0 +warn_type = 0 sprite_frames = ExtResource("4_mhr07") animation_name = "fist_attack05" diff --git a/config/skill_player_weapon/hero01_fist_skill03.tres b/config/skill_player_weapon/hero01_fist_skill03.tres index 9ccc7a8..ec57d99 100644 --- a/config/skill_player_weapon/hero01_fist_skill03.tres +++ b/config/skill_player_weapon/hero01_fist_skill03.tres @@ -1,8 +1,8 @@ [gd_resource type="Resource" script_class="SkillWeaponCfg" load_steps=7 format=3 uid="uid://dbviuasvknl8q"] -[ext_resource type="Resource" uid="uid://b5sendxmglojg" path="res://config/attack/blunt_tackle.tres" id="1_aubbe"] -[ext_resource type="Resource" uid="uid://dja8jwx16njmf" path="res://config/attack_box/box_small.tres" id="2_xjtqg"] -[ext_resource type="Script" path="res://script/config/skill_weapon_cfg.gd" id="3_6wryu"] +[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_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,20 +13,22 @@ weapon = ExtResource("6_aemq5") action = "attack_heavy" name = "" skill_animation = ExtResource("4_c7ye6") -range = 0.0 -free_lock = false -ignore_push = true -attack1 = ExtResource("1_aubbe") -attack1_box = ExtResource("2_xjtqg") 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 mp_sub_cost = false -warn_type = 0 +free_lock = false +ignore_push = true with_stop = false is_lock_x = true -refresh_animation = false +is_lock_x_move = false +range = 0.0 +warn_type = 0 sprite_frames = ExtResource("5_sjxkh") animation_name = "fist_skill03" diff --git a/config/skill_player_weapon/hero01_long_air_attack03.tres b/config/skill_player_weapon/hero01_long_air_attack03.tres index 35b600b..3480dd0 100644 --- a/config/skill_player_weapon/hero01_long_air_attack03.tres +++ b/config/skill_player_weapon/hero01_long_air_attack03.tres @@ -1,7 +1,7 @@ [gd_resource type="Resource" script_class="SkillWeaponCfg" load_steps=6 format=3 uid="uid://b705py5rht5i3"] -[ext_resource type="Resource" uid="uid://dj7tchh0202t2" path="res://config/attack/sharp_mid_hit_down.tres" id="1_11m12"] -[ext_resource type="Script" path="res://script/config/skill_weapon_cfg.gd" id="2_0x7hh"] +[ext_resource type="Resource" uid="uid://bnqnw10v7kude" path="res://config/attack/sharp_normal_hit_down.tres" id="1_iyjil"] +[ext_resource type="Script" uid="uid://dgwtu2wj5033u" path="res://script/config/skill_weapon_cfg.gd" id="2_0x7hh"] [ext_resource type="Resource" uid="uid://bqejjllfy03h3" path="res://config/attack_box/box_normal.tres" id="2_rpr7r"] [ext_resource type="Animation" uid="uid://bh5s2t3cbobpp" path="res://resource/skill_animation/hero01_long_air_attack03.tres" id="3_1erk8"] [ext_resource type="Resource" uid="uid://cy3wwalxeyro0" path="res://config/weapon/long.tres" id="5_u3vas"] @@ -12,23 +12,20 @@ weapon = ExtResource("5_u3vas") action = "attack_light" name = "" skill_animation = ExtResource("3_1erk8") -range = 0.0 -free_lock = false -ignore_push = false -attack1 = ExtResource("1_11m12") -attack1_box = ExtResource("2_rpr7r") -attack1_with_pause_frame = false -attack1_with_stop = false -attack2_with_pause_frame = false -attack2_with_stop = false stance_from = 12 -stance_to = 2 +stance_to = 3 break_level = 3 is_charging = false +attack1 = ExtResource("1_iyjil") +attack1_box = ExtResource("2_rpr7r") +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 = false is_lock_x = true -refresh_animation = false +is_lock_x_move = false +range = 0.0 +warn_type = 0 animation_name = "" diff --git a/config/skill_player_weapon/hero01_long_stab01.tres b/config/skill_player_weapon/hero01_long_stab01.tres index dd08815..1b75e1c 100644 --- a/config/skill_player_weapon/hero01_long_stab01.tres +++ b/config/skill_player_weapon/hero01_long_stab01.tres @@ -19,9 +19,7 @@ break_level = 3 is_charging = false attack1 = ExtResource("1_orvsj") attack1_box = ExtResource("2_332ws") -attack1_with_pause_frame = false attack1_with_stop = false -attack2_with_pause_frame = false attack2_with_stop = false mp_cost = 0 mp_sub_cost = false @@ -33,4 +31,4 @@ is_lock_x_move = true range = 0.0 warn_type = 0 sprite_frames = ExtResource("5_j4rp7") -animation_name = "long_skill_stab01" +animation_name = "long_skill_stab02" diff --git a/config/skill_player_weapon/hero01_long_stab03.tres b/config/skill_player_weapon/hero01_long_stab03.tres new file mode 100644 index 0000000..e0fd8bd --- /dev/null +++ b/config/skill_player_weapon/hero01_long_stab03.tres @@ -0,0 +1,36 @@ +[gd_resource type="Resource" script_class="SkillWeaponCfg" load_steps=8 format=3 uid="uid://cahm6vjsskkc5"] + +[ext_resource type="Resource" uid="uid://dmfr73m28vsqj" path="res://config/attack/sharp_normal_hit_back_hard.tres" id="1_o1kbx"] +[ext_resource type="Animation" uid="uid://dbm6ssy6cqb2d" path="res://resource/skill_animation/hero01_long_stab03.tres" id="2_jcwvc"] +[ext_resource type="Resource" uid="uid://diedb7vw7eyxp" path="res://config/attack_box/box_mid.tres" id="2_o1kbx"] +[ext_resource type="Script" uid="uid://dgwtu2wj5033u" path="res://script/config/skill_weapon_cfg.gd" id="3_51oqr"] +[ext_resource type="Resource" uid="uid://rxt1emwats2v" path="res://config/character/bullet_hero01_long_stab.tres" id="4_hrq33"] +[ext_resource type="SpriteFrames" uid="uid://c6w03xigmrd31" path="res://resource/animation/character/hero01_long_skill03.aseprite" id="5_aqnpo"] +[ext_resource type="Resource" uid="uid://cy3wwalxeyro0" path="res://config/weapon/long.tres" id="6_cys3s"] + +[resource] +script = ExtResource("3_51oqr") +weapon = ExtResource("6_cys3s") +action = "attack_heavy" +name = "" +sub_character = ExtResource("4_hrq33") +skill_animation = ExtResource("2_jcwvc") +stance_from = 30 +stance_to = 99 +break_level = 3 +is_charging = false +attack1 = ExtResource("1_o1kbx") +attack1_box = ExtResource("2_o1kbx") +attack1_with_stop = false +attack2_with_stop = false +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 +warn_type = 0 +sprite_frames = ExtResource("5_aqnpo") +animation_name = "long_skill_stab02" diff --git a/resource/animation/character/hero01_long_attack.aseprite b/resource/animation/character/hero01_long_attack.aseprite index ec2ee3886d5de3c2414aa691211f3da8e3ea9c97..426eaa9ac661531b5dfafe0027a9ac1618409afc 100644 GIT binary patch delta 220 zcmcb%jd{~_X7){|85kZcb>7Ino4KBY0R`|fI${PtX z$l;SWmS@nyCvT$7#9%bJn?-@e(3rsr%rLTMaN69>!p^Z-P~f&0qtoO%C-u!2430Bx iPSf2N&v<_Ffqm+m112;}F>V4g@2}k_yxIQ5bR$3Cyu^Lm}LBa}sf4sZj@BCEla02)M>9PRBB2V@Lf za6oW1yU#572@`0>suLCPeKJ}i>UK&=pLcuZ=Q+P(KS$3`n$_;F-gWgjH*~@FYRm7D zzZdOluUcMM_Y59p=y*5sd@@|h0*$qyLen9D88CsSW9?JWW?Dlp#ehAqS;K&W7#NHM zU}Pk_UQrDMrf^bEo=gsHnhCF3XM*)iVh3Wx0E&qs7D54#!0?*@(ts#j#KCMQT)Pg+ z_D6bLTGZ*3_(gJNZnkS{+#IscSH=-c5&!fVbKCmGTF-kng?Idx_qF!AxrcM6I<=n~ zZGu%zbxu7A1MgiM%B3C5^IUS<2W&~ z_59Q@JnZm?_Y#dwzT>P22a*L5poAD`2_#%B7=IR^tc~zoqL>r6BkG-?e8$rw&(5#^be@xp$u#pP-DZ#V<0X@SDRb&E`WP2n^T(j9H6E z{b6KQmZdtUOwt3!LF0m?Vd*Q13Jrk15(S%q>l#!HglgYihXuMQTaUxE@nH-2+s%{b z(0Ai0{b&S`8qUnb{AQLk5>xzeYH+dGX*6QtFuii}aVV00Ynz%*Z^bANo{3QoS(Ol# z6{ujqw18$46DG!b&1_hJ5GIBZ020G>I=Os435RgsuyQw;-m>2uBrg9Re&sU4^zG+M5N2J^cu z$wdcgPRHhOZ${k~KYG7kjA(w#>Qdy!x@}u-tsB04EB)a(tv$n9;EA?tJB7;*+@SDh z@lTH3*OaePD^zYaC`Q2@`e8ZdjsavwX!`#xZ8IgTTEWxR^4LxX)uetyC?X! zC0EOs8V3j%1uOvVAK;Z_0Hn}1qD!b}tZ{&b=f%$1FE4j)Vl`KZarvTy)7Z@D2zBTWlfVxnO}4>_Co`Yi7Jkl;qVu6%nHOe z%qDCnNZg|hI&I8#w79OU65x`89hjF8bOcsL6{b8$=OOLih_hSA$9m|*ukIX6zWtWq8y454RcO`5 zb(CB!Sregg^yTU?t08)%a1U53IUZ6mWlz;V$G6@VZAKE33ZN5TCzOs#Y&UOftCUTvO>T6S1hKGSQ_(o zL1JlLrkK)|PIuThptZj|xRa5@Z*n;4$NOVH@4Bzz>#aPJmQ2Xa&Y-<#B;!x%aGpP( z(KjEJYP>ik?uzk0sl`9~ob*S-Ycj%rKt^`~i61ba+iN#u`JfdrW|yhbk@`XE>tD^` z|2Pz)vZ36&xII4H{{Y```}4MgE+QXKSPMRW-+1x5UB!ep;ll}nL{5X!j19z$0OqW| z40)D2M~Qj)pC4ijsB2b1gq(19juQ@$QMRV4)Z|SrDR0~o7vx&PXSMowzyPSN$>sM#eMFZu z=6S3r!d9q=<9YF22i)0{m2m|B@*I4knuxpieX^Cs7j~nkgZ2oXgxM&)&!jjfn*CBB z>sautme{iIhYW)$MA!Wzy<_2zq$dxK29fl47#5tdYM@^Cn;Bim95r{VWlk-Ts$-nl zY_ve>R6wGC{nKe)9)tw{KO|M4B1CGv-$F>Bq3k`(*o2?SF}sIK2%du6zdDB%Oyn=z z*z^lstjuOB+cUXN)&o`UCEl}88nnx>-cu@8wUwM5q)&PxV@?g_B`+=$ynGY~wx7{` zGt!@5)Oy;nX*Mln)X8zQyUzE@QrQnqNKT-M`vybNzpT3apGcaNt*VgvKNWsG@a_+&uG!coBRIR%15S7ntsxR2r_abdB0q27 zdydrp~N diff --git a/resource/animation/character/hero01_long_attack.png b/resource/animation/character/hero01_long_attack.png index 60c996c2aa4b053eae35bb19213971c23418acfd..2d52499f1eea3eec9d2c346344cbb2802afef7a3 100644 GIT binary patch literal 30933 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 z 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 TAh*qr00000NkvXXu0mjfvEMz+ diff --git a/resource/animation/character/hero01_long_skill01.aseprite b/resource/animation/character/hero01_long_skill01.aseprite index cd0c996ae8e2d0e20d8942fcb44a73b85dea1e83..39447095f4d9b9de2db585cf68c884340620ef31 100644 GIT binary patch delta 75 zcmcb4i*es2Ms~YQ28IVq4L7piVrCSW%*Z0mVkF2Q31rAHOEIWTR$x(JR%b8(((;>= dShi?y4m7q@V0U delta 770 zcmdmYiSgzwM)t^D28IVqjW@F2VrCSa%*Z0mVkE>M1!TxDOEYLpR$x(J)?_dO((;>= zShi?0T2FqUqh7y+fq{WlfssLh!Ia@Y6OaQ2dJJj|6?4{J$>nQM;9yI5U+>j-scl_j z&Auu7dE^=+v)9%Lu4g*<%awPn>r=(tO`PAojy_d<8^?6~j!OW`)wugUx3^raelc<1 zvXx&-7wpUTIqmQ{cGBC$#`0e#is(-7j(MXN#V@QKxhtUFxcBc|zC5{uUy^Rk^PF-2 zt6Q0L)Yp)(ysX<6e}B!n5o537@T0K@=qOeNCI)#1dn89{GKc^jId#H8-UA98u96*@ zdp5XEf4%T$@P;5)+Zk%D`c;aRc6PHkBlA>V-P2#abgeq$n-gA>@18m+*f33QVNSz( z(`qBLi`#ZRm+$>}Eri8+<^<&it!HmczUcBjaPm2~J-aJ#;-Wuoo?%{*yG10oZ>o!P zPO*`htf!a3Y|daa`J$D?WFB?-`o&<^u`}o~I3u}EoIwoey4-V~d`Ap8SRCR!_a_#) zEc#jZ!6~QL*H6>D`$X83%`;dZ921}KGsmm_b4q@zb^gaUdso~z?)~}rrhC)|%1m#wTiv(sa(u+()1^UYB!&aLX0dj8{$N?!d{du4Y%U%15Y9$TjM z(vqJqPS|{kw(9dzdo(|~Kdt{1w^~iv!g*jfax<7Q7*3Wpp1fJiz*2$n!Q{jc_4*x9 z=ZmAH06TCBIC?2s2$%v`1HSJ+wR_64Wg=6jCp=wV#4t4|Ol;j&mv1j#F>zLHJoQ+r zc*o|S#yxvibRYlv*-?;p#jPDxUiU-f^eQuMd9HuGW93%kUH!}FWV|#q$erLfON>k1 z#C`8&qgKZUHCBgu(#p0h6_@)`v&;AM@}kvYiH}ZOY?jYj5w+#W{>5+iw+MZmZI*8E gBYfT;&fM*5m-*gUW5@71#-iW}$oZSg1CC1o0K&&Xu>b%7 diff --git a/resource/animation/character/hero01_long_skill01.png b/resource/animation/character/hero01_long_skill01.png index fc50e85418c33b71afb58890af52e6b7b9800a02..2efa07ea5a720032862e7b1cd3dc705ae1785bc6 100644 GIT binary patch literal 16897 zcmZvkWmHsA-}cYI07DPmFm!iIcY}f=Auu3~ASESTf^>I>sB{QQcXtVhbf_RH9q-|O z?&r(9o)0*)7S1`FefIvx@4EIxKGs&j#iGOl0037_RZ$lJAi?1KX&5^AZ?qZlYw!i) zrmG?kRE|;q0ssV{rYQH+D|TX^`KqB$SHp?Mn_Y%OT+GqtY%MWTKKD2HKN{^ z!SuNL)l#b=ae)TRu0~SGil9G12C;05efhLur=1^MKPxh$Gc{MBWqM)eTj)}1!xgw+ zV-|cJWya9s7`c5}Yh9HgRd+tJm(gltT{V7k7%%nK`fMaq_)nvMRn$h47#}$fI->^# zK@45RvHsx}QLC?z|5D}YDgKfAeW9O;M{q-=aP|3Q8?h#D+<;r;djt@8?I0TTMq1|A z;L(c!`Be`V;+uF83rBP5J->Q7wCUl?e{W=>BKR&cXJz2gBhgQjyN3@h3uB_T-+Yg} zgCe{iUrP7@nmVy@3nGkNh}5MHtmu}wq&`*-JYClD7Z&4va?X>-1W&y=FA`bxU*7lG zxcv5|+Z`jb@7pk7A$h*)&|sTA5?f z^g87t3|!H{v`95cTWhQ^?JW&E~PE4i&5Z@%nqFBv~v!y zeI$P+JCUI)M=BKneC5p@x61crZoUq&iLr=EY2pp0AB6}PP*4u zlkaK+!l)g-klj-e-H_I}Nfj*^d~W_0$9usL2!#avT0{d#p?hSpd=X`cc+W>DzkH1z zQJXJK-dgM=tu#?FQn)Jjxhawtv-Z0gy$V*(k*i4hVb+Xk(9kzY@WP$SFozCQ(HEEV5#&Y$q*-)#eJCHZ^AQhRJIdb^?S*X!l z5iLmf18QKscM029@#p84sw$3-;;;I)7H9<~-k4IX7w~O< z=BhwN@cr7B4v%KJyW+EaAYXn1L}0*SE$Cg^OUE}U+bfM>bz;}sFNjG;vA*URDS)r? z3LA76dF5RFgMw*dC1mzf7m7b|MKlB^eo679cUMme`%@7e7g_E)`mL`MHbSmM8Ufu6Rnz9+wG92z>Hz^4k{{ZM!pi6P;Zi-D~>QxVe!SCjNG^v+$AQzvO?{VL8EX%!4ZCW2zjxLx!BkD z$24rC{{O;>=6-yI1MH%{GW3|b#y0BSPx?klY$-1DRqOza)H%RvTZh}`Hhi6mnfpB*wjfq4>{=z z@VZR?DqR@=6l3eZP~+L5N9c>uJ21LcANyI_zH>S#oi{}RZcYNslzI<6ipCN4!HDnJ zhRwTjuOz=Y&&B{HL3QqrHeWH zEQCL&+=o0Uk}_!6ka5|-B}$OGT?;&LYB4WtiX-46fu45odcK$d*P9rtxKp)d#f9hj zRX_1~#TThLdTrfDU)6CN4&{(y);~+CMFjBP(p9jgZ{$3Fvyuc^s{J4nEgm3gzbmRm z1~tM$5Y#>Pag}`Ty$<{ocSd(L2Y{F;0hBLs6fSre2U`gSOHjm3x|PIO$4IC@sno5) zO=9oxvxB;;+Z-V9{itxbzs7L%eC)tArvoG8YFWM9vFm`>-*VTFsZESE%WPl%=6S1_ z7jInVkGqb2y}PQllgw?#$C*cY63aBF>A@m&?RWN%;!$2SiI7^QY}q>fDEf8Y#?c-; zm)h-II4VrYmSSRXqDmsU!lN)A^~M(*s*1(NAiuCD4~}@pAR|R|57$z!C{cOLVV^#5 zcLQ;a&RVi{yc0uKQ$=7<8sRbWGh)GV3@hs&-=!=6Q{!8MU;N%S<#G2_e0X;hnbE*343rLDM|_}-s;v9B0i5` z48dbpV&3BX(SEY}OD}+phMJUAKSF`QQNvZ%aOKE(L5(s7$| zFjVTm+96j>&dlzB#bZdCNELCN6ZgZy)QW6!b}VO^ozY@zn5-`pmjrq&sQzt^r}#QK zL58%ioz<)Y{xfW}+|L0KABg^t7Zl8s?f#-$-|7MaB;PwM)2!c_4QtBl+`Xs|U>u8w z1DbHCx^;eAX8;oY4LzEpberR}$Ej0=3OIlBVkP9@RA1D8!$MOlIy#^AH+Hy6XzlWT zC$W(x`Xk2eLo>feaDThbodw=wo{3^Ki4kSS-l(dUp4N*YjolW3o&%p9E0^mJ+;q?% z*I^DX`K^1zH?3^YgukMN5}u*Zl`e;9kYP}>XB$#M4qHFlRzC9lMir)1#}{E}EAulf zI>eZ1B`>d)P&Mm)*V+Q791rllQ22`ec81V3>e0XdpUo)x?c%PLg4!&CBZA$@kF08 zzGKox!jZc+gX>#2#>O5RU;NIFUtfetdl zUnRxzW-Bm`_$5+U4=IcUcM$iT#uBqF1WZy*6yD<0{FhVL&=ZW*XQ_flS4!p0Pqf-N8_%)CF4B-MV|iig7VrI$=3Cx zh&1Qoy3lF!T^PD6PxEL`Ia1jaPsP+=k=;z+5D$2tVBG2aasXN0kihgQ`WQF<-07-6 zSUgx}3HRdX*4wLh7it?smv4u#d(M;hILTne6{->)`6Gj_puifeGZQeIOXr~Km{h>$irX&B07vx_>vs{DANc-OGfh@vZN3ia3N z!DwwFjXRV~okfXDq&-v3x#>5tz^+2WLQE#}dvs@-VB>(9IP3SwQ-4Fs0tU>1z=XWggggkUYKOr3EOeQ!=wV@asKF1;U*3y+1>zlMj#oHGw0a|7?kD=C?B118 z+;Z;Fd&9lT&b%cr>vp_l*@#uU-sTKFjCbYuCp{p)3ZaSIzOK%>AHMe{(ps8(X*5YK z?Jv7ar=V7cS|0>1nCwKsJW`Z3i*E>o=;WL?PV33@_gxRuf8(mmPy5M_c0tAf3ut;h zWBV#E3D@bxY7{BQP+%^9O$79IWMFtr+U{U81^ru3GSiE1VhD=eOx{#1)MdWYjyVr2 zj=(g?GaHmo=0%WA)&Nea-`iB-|LhX<@> z9v}4>-ppX*`kt$dCPMO~32@6Un;m{Jrog_nr)%k*tiRie_`JNTS*><(oQeXb* z6w(MFg3c9gZtBR?lHn@MYglyinoxHnkB5d0jgOyY5#k*qd*0T$K3eNvvR`yr*cUzS3Y8-Tt5)vUu z^f!kFBHw`-5@H;`)b(p;me0NQ;yn1Gy^uA4hi9frej{F{?n&ITv0XD!ZbQ;y1QR`^ zgT|yC74UK^y$TUoC4=7t{8c=d^Et}3m6Lrntq3PK$(Q^akBOj!>IaF% zGyR{4M2%FfiE4M0&@luU>6cF3MTFOAHM8oB>A9U3Ht$`=zl=_^ESrF4S|uKEJpG8<+aAG0b&I2QMvn>Uq_x(;; z)J6B}#ojMd+^~Ui8SjaM0Z3q#{c}ifZ`0AScy!Yk<6TGC)iWTFU&Dd__etZL2AnA^ zk)uMSiE}iUJmFngP9D&atI+hJMfQg0saQc$10eOiBBown>fg2|TDVP$fg9cZJQ{Xk zCFX9y2Q!04W7;^nQHLq4K_tFiTf)10UHA^a<6_Y`D;d`P!7#Df$GG_5z%x`pR;HNt zCU!^vkSHpQPJ75~#N^tz@gjs~yaIkt`|ol|HCvL3^TT!|ChLBG^UV|N5>N5 znm8Pf*ZW5*l3)NKxc4}btqRRqiogj6D@(}?-$7y2l8mi?xVU1!xMMm<&{>lW*=A}y zh|zl}G_j~ZVFo^=Iid8hO}6E_8_~^Rxmgti-c5I%KOrX5iVhEK_ux|t$;~wH9RS3O zd5e^4juN#e+0b$HN)lOEiP&KikI-7?7uD%(vGwMBPNDad#Cyd!sA*`O%6w*pl3{Z9 zrW3`*SZJl$ITX@~hax9k+SXttntOGGGW(}+RDNB=P>e6fjtif4*3A(TEL#ZyeyGoPrjfZANCaVYAWjFVT7OowNg?xvR&(%Ax#it*>nMLR#ggm?;qdmVI zPwl#meP1h+s$(>xsuRO^<(L<{I&kP^iDK^9$bjPHzK69^^8T}Hd!TL)nVi4{zKrO% z`Z)a{1p6Zuo~D!c0qkm1&g$}r?~#Lv{!k+-AQXe)9#`324P0@X(mi+-pU1}r9cPYy zV6}-V98#Qaj`xBwLcw^4e^B}uvU3$49$}KVgcv?MW4&O^dgz>sb9KvVm)b&ClW>It zf?De1NSP>u(t%QX^P&#{5p@5)a%sA!KVJG)Z(Egq&?u8XXXw|A$PGypffCv(03RNpJ;=ZYaFVXy=rx{4|E@-vzN zVW2fZlSwfH=k#axM@T_Cbg`b5_juufn=BggiN!_{2?jTmx=hOhaA=V4Di26cAml^J zmhy;N)%9d6Ol4^6r_v?xj)P$U0*2CcxxmT%83`88xJ_xQ?Mc>{L8|sI*RX&qYH%Gs zt?Tl`q;-ij`|5o#(P3qm0gpL<%~lZo{az>MfC$5r0rDnu-50>-ZWcMaYF&b`HCrt&Cuyp(`ob+dvFJybfB{vMRKkJ2x>kl12{WT z1Ltu)>;HN%;&Z91zQvK!cTjhqg@D{d+4^-v^g*hR<95q?{8@*Y!)rM6p5eqNqv~&2&w})XnV!uS0{37b8faUmF9c z!1Z15$`|v~%8H#AI?bPd?F`%ij7i?j!iE1Lxn@0I=S#rJ-vCTwczP{g3E;w~Z}#L|WCEENCJEA?Xhw=Hf6_ix;wLrm*_-1)a_p{(2&Ah^)eK!zSuo z&$>mrc~za|kx#f_ejPHTlA<6uSIp|edXLB_2Zwd=bDdv`t|#C8(^)^0GOKq{o+pk_ znmGnQY^aaSK$L+zktsCUoDR&D!JeD^UMjTRW#cP-uWOxDHj*u7HNUS|F4I=W>}km3 zEQeDq+K!VsQn%VlDoE5Y0kG04Lru4UeHP>_r2>61j$6TgbZGHSZ{jZ0`>FgdWFz^o zCVKN57pcUQ^2In$`m2(`kxoZP%P(JN_qUBD(gO>_N!Est}~Y%k^H}2Di2@6HPzVk9>zRAqN+4V^!aG`nL~UAeGKyPH+FGFa=>4YpkqYQ zCto5WL+!2lztZgYS&I=|%v8T9oKhNtdA%)!&tChAtok>k2UWDo@91t-tbRt zaxJvL1>}F`veGI=`f&t;)ywu+3z&82zQUShP<43#nA%P$+}wV#yu%n=)UZ`ek=Bpw zf%XU~LW5I6xb~T(-?Zrnp*}o2&qm&2igXwz3r?X*Pj>Hu=uTm^t^UC6?k681u&17w zxWMoSVc&}dwe)*N_#Df&MK5A_q+>{on|H`v?(zIw&oi?9P3)**2hw4iQ+w1q?$+1l zd~Y2m{B{?2Jsb_Vn|k}4Sjx3V!aOLa+fW6e@=PNg(F4eDhzGs^0wyxJOob9v1oI5K z2Qpb;s{M)B5at5ee2w+C%P#8PeIIKQ zZAJqd1P#j^^+vf?c}OhV?{{w|AJtf*&k0sfUw_v^q=O%`VNesFzndF1YZB3a2AkpW zfrFU%oz3$08h0B1)fX!u&{1Xn{gRrviKwj1&0`wbkJAH<&5${k1f^UvSq?`^0`%f& zoK|i}Q>1sR^M6Kf7>UUMAL1CE^l#ymU1p^07!~C~0iM9%10JH75bls1LMNJCgDl0g zG0wY363QRJurkmN;@$K&4hiC9J3!ZdyN40R;#64ySPW}jzo`nq=@3uZAM5AAU(yCA zK-xXxV}`aR^AAgOk?Hc6X&q$4Lcw-QZp3EpMuMvU!@xrM8H?qSBN1*7_^W5JH1K8M zAybWB!9f~sAqqI*oxfd)dvIE+3Q?{(H~_#*tDOe?F{#brE~1bEmx&^<_u^CxSe;JA zZ|c4_ice1r1)*LP9q2A#E0u{N0qQi>~}M#xb@`x z?RmYSo{*ks*~_eqBk~=sYq6&dzK@`0b>;guFN2Ol{q*Nwpgh8$sA18zm8ujom^mu# zB=>b11n_7*5dh?mt_PIf*U3#@S5Hdz`#A&{8#l!))(Z1g!OOm_l9m<=c=5?V0L^ z5QH4lAj<%IP<&Tsf(K_#|G5j5{qGCIMpCtr4lDRb%W>E<+fD1$hS_I(UzOo{P>46X zXsZDR&}6eE*#ee;(vFt^z{kk@?z*@&DK8tNZEWfu#1d;1N|^| zmhCmF-@VvFG4VvnM;O&&s${g|`LnYaiRDOZvh<*T$i_&`?_(C1T&*&Yi%M3KWjbMv zvn=p>kggcsEYskI6_fWMWI(M)Lwd{8Bl4-=E-DE`ZIBds={gYe0Zr z%Jocbo(prfV*E*Yzo4(q)x3wZJ zB5^l|=68d6QoR2DAlU;t^khsC%2Wx39!K4ia$u1%)OpUM^Ye8_p6ZvKXY?a2tO1pF zy@$4^q+B@9q!-_#M0oHKWiY^Y-{_{;cT6l*zP1H`hdUCW`+HYwmk>z@09Wv!M!{_#R!s=$agxMNPdZ(}NcJTwZ4to86atm6Lx z=#2J|%>V`{48)LS{sF8H^&g{5mHb`YZ)biBPdFv_M%?0sHA@2J3629)>Q+A5rTP)G zItTtF1BVVZ04T*Er)rtw=~VJ`aGPORtvT|;ZfVc$al! zvD8>rqW;Q7BeXd#t0m7?4b2-2E%uoB|Nq#N5BNgt-jyZSmyn#_?I{y_BHr+g6o%hHAk$; zuN(W2d?QDK5{gPaGNid9VKW;^xyDih8qg6#RF5KXG29SrYl~`6l!T=GKr*Q?shEa9 z;EN@zsg4yNMM_4JGSt7JJqgGU>uSm9_#4;RTBpE|GN`>vvA270y4bSsbzomDVh#jZ zv0q$`N;aPII)F4onY?#zG+!Q3q#Cyn{*6 z8aEKhliBk3W0`2S{@eT|YphPBW7h;W2rA{x(nSS3f^ZaBUd@aYD+`Xj#1O(pX+3HM zF}^>znIaigd7uL#TIs~v_A{MDN)nTgR=@TR4lafkkhS>>u1EwhPo?rcTYmS}=ABhW zZ^0Snc0bme=%h(5*y$CTtpt7K$Ek$b|MddE?Xz{c?zD(B$u9^c*=Y7i8_=D8y?oL@ zZ%=c0`qx3FKGVSykynCK7B*4Bg5ob4P`Qd6A{2;8pv!rsz>S)mD>s6>P+hJ??n93f zNVSuY8N4%^tVl>ek7TiaXFF81@MFSE!5(UKjFybRodxU31?@r%;3Kc>an@6<#Ip^P z#NJm7>^Sln!at-n9tSsIcC&#T$@K4ikql>8LilHrbb>#xx4rk&AIEf*!SmTiv`DBv zgI#QzM8xjz5Jg}jMCMW^vq9xl`c5-CwiX+0{lCsW5BWyIpx(k<|{0HI`@i7a0HLA5jS)YEXW$6R93T)nL=S&_fU#lQ#=} zZ?d@uZa!XN8g6@EsHT3Zm#2Ej;05)N zh72pAThs#B+@wVV(a?c}fohrFF*>hPYp<}XuB!?jhJg7r!3f}w@2 z7k=4~e8#tH8i$D2ZSjhkqU{Dhbhv$As9o3JD8InzcX5HFpmYa`pgmYaexG}yz;ZG2 zg_<8)sa~{7To^$e%yWB9*|EzutEq;YeDMi~4zB7+`0nA+f0R2 z<{=!UALCJY!!Mw(f_47Yt%Bu2IA`kgTlKv3nZkV|9TB8j0kJa@f()lT+j3oaTlWm! zxCwpx=VUmGc^#oZNO*dftsoqDn669-G6w%uglaXc+lOlwmYq*HSW}41UjF-p*NLaF zKLW2Fls3?w{lxldJMh(nZzCtt66T>OjKXTZt(hyS`2oMUrhJ)i@F4<`w*tXZ#kJdYTIQt=ZbX6cqw!VN`L{f5k_-?9N|4mm8|4 zv;L=1a>6$qufS&vfYvCR^`1dgA}9+o1z5og) zw$&K&+=2}JxTtl76oV+{V51>~liwU}gpHIB>~vN7hoW z&8->2jro<}>HmViOYJ3yhf=uyTXFJBHs?{!tD624ClDixs`)SmMskXgBK|>Suq>ng z4CZ^N$4q%wC(k(%H-;e38sEwE+#ZHliTan|62caT24(h{~WbI7syLI6+Harkxb| z+_dk%Y2YF?IW@nHk{xyT-%8Oeyhm?p_aLga$E8yz=i?6SMA|Bi8(2Me zgKKG~hd&S(yec-FR4&so)DBRR-J-o*>%LKF7?+r%7^%kB&xnl9j@pt`#4E}S%*l-^ zzAAempHc8z@!I-x3yCkt8EOJH>hebwHAs1P0*;3tseQB+pPa)P$>jfTCF{I&3+>jH zBO1}Pa;aCt%GZg;lAQH z()8$JuF8zG@c?WaN&kAG1E9D%zIN61@xtLxP2fpG>lr6dtw=s_!2R^Cogb;uIX_k7 zavTM@)+0gV@B9TlurQYC_@B0U&KS;u4=y!9L0!2UREdKV{5xz<$q<)-%h!9L@-IZU zOm`}&sOPo1wqEx z?ob%pF|6;V;FWM=0#?bM`oC)(zzIj4SU;SNx-pO{rEgGsQqPJ}iisleQ4+*C z)FQ#Gi-8Eh`X!s)7fYE2$bIV1M!xh`kzHx)B4Vdf;!mGR+Z;se-Y@;_=PF!lYKSUz z64sBCv$iC9*Ie~1odLG@ee(BWW|Ms&1_JA0B0_I;jRVP1(Vt2n> z^M^dPX5b7BTV4t!FzF(MdgL{fuwq9IwVzGtOCBD&;xLbrHlU*9$Q*8CyAe0O#wIWX zLkmMx4i{XR@3U)&VJL}ku}D_k66yj7^~S$7z|wf|@~a097!5>Pq5p$UtbvZOC7zAX zzrY+UgkF0)SIQFEEv74tQbO^vI{nI-<5~D(|0i7x?KV2W$8T*6A~AQ&g*=Dw#`~(3 z^F@OOVp~9fgM;#5SGw2;*oTJ!L9ZIKl=GR@G{#RN&IH|-ZprBlbgi1sH+s&Hiloy; z;n|O_cTMlfWiR1OOJEdWg!=SLNyH?DqXij70?f4M=Oe(h73$I;D6cWj43V)>-%# zU%4q3`GkF+?n`9adJf?Vzgd5i@V<~~9C15fnq1|DPDMAUv=RR}sm!wxABY#J5@N8X zZw)C}7UB_iYR*$7V$Z70Sz4-miHSULm<}dP#9D_> zK4+XKSe^45G$?f;a=MVjdUMOUUcVZox}aA_?9<(IDX@L)D3Fr_bH`+d?LbB9$pU6= zuGjpm%r9-q838*OE2Wm*#QgDF4_uOG7NL`mV~irdCxE4n6X?i&a@=DN`coM=|FR68Z<^>`V?eig`A>@s;kzlt z+HjP>RkHNS=`fI>+%CoLk=#oQAeXq=7vJ(q6NW9H7af0;2=j^jKe3{dQO zUG{NfD@lmiHYgwMD+_^oAl$KAl`3%~d!kBMJSs`RY4zx+Fj(dPI zPQspUybvYW=k<=;4X1TAZ?^^NQT(GLZ!lk+{rVfM5DdD(9@2N=g3!g#unWZChhSs} z^7k9eKGN!>#-oL*<(RG{roz1{cBYOcJoe}5!J0?4uA03yib|q01Z;wd+f%P$U>_IL z^NgRo@|_4;&Z8C9yPS-K_dl20@a#E?HnfS4dz6%vvM$C_=n?yJGV^V1U-h2)r}zpPVY+{rZ{ zb7%b%b+B^51x^lg7clXK6lN$9YK!jk*tM^}XY+aZCp$L%&_L=o|GLe#uP(IkHN*;@ zY6BXfg?b%m zev7H6k|;afu*H<~$5g)<15Q&(oD0wa2|O^N4OC=f!-O0MfQk+19zghd@=%myY&$@4 z!u6gIq1c_MKXG-d{ChHqtpYxO4%i-B0|OcX00kRho!5xPK*`_;SP*Chd06H#3&C#U zrsg@Q@=bNZi#1kh3(8{i$ajA{QGCdLKM{EQy{4k>_1Nswzpb}kWXH92C|}4(N4o-E zErftx+{X3e7ueG<`HuP5+jao}KgpmUR8h|$4`H%}15^&TJo^_WxM5YlfjwG{$B44B z*HiEOK$EKp691@XJ*TYBTMP`)I4~w3F{N^+3-{n6f~pHEX2ZbigvoXIZ%7_8d-dRX zgU$ox7%seTb8=kf=ZE6Tn|9K5W{Y%-nIPYPSBA}A=d7F8_>?h15jR0q;RdDNundG> zOqkqK;<;2}$Kk6sOhaEW&e*sA%yY0UN156NHjHRs-3~R#aWzz}~D+vSnym+u!3u&uYkEh`w=A_!> zGjU09Fd6N%t!o#uibuH9P7IZ5fecL*>?%^sHel`D5&_Uu+ zBSk{U=3cyK37;ql=!aYP_*!%UT7Hr62Y}y2ckh6qyz)i!SZcwkR2ivnU6W|mS9vRC zF}BX}8qMtXZY=*ge$1RTXac+qP;du7!gbc5+c-3T8z{>-zYJ>O{-9Xt1@$Bzo)qMJ z#7?M)=a^Z2jctKZZqLZ6&R!;`lekG#3hLV~*Xaa1&TE+gD8dG{`ZvvQZ(jmqXxYZ! z$6)UwlyM*8FMv{uv6ZZIy4Y6*YP{obBpZY2*m#teQa-MqO&K3QtvUb&HQDZ}C%1Rn z0doQ&1%bKW&a?yDOa(eH{@jC>d<&HCpwYo#SpsW?GaS^lWH$+o$~IOW*qAd>Nez_Yj}!s;g8|{&w<^N_(pZEN9OeJ_+FlF}xlUilQfzCmwq%)C z7?y|YUWsu->laUqjPV#VyYfK_A_>6d;*;AAP8#A54FNd?+tDvc5(|GTKa@ur7k;cq zmR>6Vl<5+0oD$3rlLg_Rm-h^`;M0M#)#J-M@YWFl(+OUn^$`Wy3E~vIrtqfe9NSpV z2KQ{fqQpw06g{^}KHr`)`nuv&Biw`$9J$-+jTv^XOpn%oK1ri^0nlZLuE~jiT-3i!u+zH zS6odk+)OLb5%e8Jo4Tq^wjZ&R29=qyt+RYV8N$TLH9rQblafK zmRODf??p&2`vsB^#r4#lu3-nUQfW=8d$OsUW%EDXM;waoeH%>kD{q zxwwRRtVrwqcyQ21ll`0%6%_3Xa>oBBFisW5PL zfRvy7MU-!gh@||j1MmLoK2E%gk@UYlW(6ZzAu#k2CYe;eG|zj&oK5jLONfzGH$Ce; zxT9*Q--7!c4CSl5lX%GKo0MH0;IE-Le$@8G=P*LO1fnN@9E`rG=tYsB$&IO+Py7LW z#_jXV?>6NWh3=&Cb5(f{%@?H}P6(_gC>V81Q_LaffWP&bkBl(S{YOaST?;hEjMK9? zG9x0aW#?|4vUQ_B1YEH_xEN(uSM&TWtC$?jz%J0BJoahSx41wSn_?sj3X+Y&{=%A= zii@9FjsI834AD{f5)N=-ezf%GFAl0d{sRptpgPvY zdlKaWS`$NCg1iMGz>-{w8wKs_sUr7fALrrb&+K(#)aDNo9q6bAUyAMS|Ne`E$myR7 zph}ddAfLHo6LF2Hyv~D_fOn!)^8cB8N8cs`x`V%-48eI*9aeV61z0G7fG<>Foe~TZ z;r%P8>YcUJb8cIT-w)>xz*Kxi6pBGr?#ed0_?zP|DDdi%@goGgx1p0FfqByh`T+SJtVWwbltH#=r#oOb$JYE?q3aG82=$@AZ{k(@ z@vfQNz-r>vk7|9C5Oa*(sVSicJ6=bEXei+{={CC(wx}&?U~HjVPvj48s|X$1nY@V_ z#9ftb6Kqm3`M*+T^KYW_0*ruysSmaK1Uw!_oSo&dmT5i2AltDY-5s=;4Vm=|jK&PC zR&)T*O!>dKUJ}dl6eVOGCp}MM&4^5pdrEg+qybg`)~3A;DVJpco%$Jwg5a{olXRzAmc(sKAlj)BKzd2DQX&l2R1$XFuP^ zTk}el@++T4o@sE3j>k)D-eY^T%-w=`o#nKrTBh?g`qd{75@5A&c!zKO5xyw+g8`FY zmv22>1|ucu^M8K^^P+NZzJj$UHVXq0!#nb;iD%(H-!-AKkFX!Vd^qheaX_vPijY!D zZY6C&$xPWghLNDpUiO*<)H;>w^;8@xpn|_+LS3x~8~M3|%%PXREp88uv0Rn0{&-CM z`wC)hB3J6JlGj-ogx06j^waxXDnAhAdTz;HF#%x}FhA%~7nQI-}+( zH=fUDB?<3hk}&Di#7Z#rD;kH4J5hsybOB*}*4PFN68ofisa_UV0+v0Jp|(G2Xxun~ zYl?}ERTz82c_br>;N2qf-d?}EKu$uf$4o;iQk;ML<`py$c9EbTQ>ZXyhjwNs8^wBJ z)$k?NVIA{$f;!@~m7xDublEJwWKetiVC#bx$gX$7v@%?Q;_=q0;3ruFM|r~6M{ayp zABPTnLUH7|{ZYk10o5Xrf~)`{QIV2Q%u73ljVxskh7Xg_=KM9roG<3j#$h>vl9P*ksHQ{(B8Kg94K`;e*Jz!J*rEN6`{-G#z_zMUwvR>tNQ6p`xRy)|jgs4*e~ z%tN9d8D)0}x!30y37LR>A3fNoO;_?Smf1m0JwBx5@+rY5in+}=ND~VS9Nz!e5KYWM zJZ(=eOB?^pfq6i053+x5Sw$%L$GzJ%Os*BmN1%prS?cZlO zxB+CK-AzGFo~4B5pqrhXB)rr5R{i?x8d@q5u9oYZRVq}BX zg;Zbw&c(1L9T*Y!t0d_&m>*0nEHduz*c*cDSwg;|H7uki%{VB(f|v6?diIu&3-me9 zgSu7|PEMkm81enaf^eCni|mV;MUENTTwU*1wfZP$*vz%<9PKF5R^?te>}gtK;-H%v z9{?fc%RylQ^61@{r?>9%Y#%EHX4EaIiTCb{lgla9F|7baH^NTWy7vbr{$R`;EJZsC zc*Yf{)omildPg*;euxdoPN0)-6U7`4;V74Py1d9<3;89lXZF*%vB^YD5Ny>z&50Fx zT@W;!s9LD-bE?|(3d!I0;OtWuj)y&*Be+2WVH|SErX2;y&TG~Ep*^SW1)3-P=OuWf zmSh|+191&lR!@)daL`w|>PqRS;p_rRp#Xw7ld+*U(i%K2j14{oFwSq_xnoPCV1aE$ zAb3Wu>N&aX$NrVYNsNYdkDCRj(=oG1kP#e;9QW?qJ21Zr*uvy8Z29p-L>4`Sz%UyD zz`hBiFw^s$RMM%R+3oKp!61pqIq>3u;%Gjo#P8A}3QClPf*;3bj9WhgPOLdt>e%OG z6KCa~OUMxTR=rw@`QYEu!H>UON&co<{8!jZzP$*Zn82R?X{FK#c)po(qWw=0&@jqO z)NuV3Z4txGG0RWMxBJ=V*?XWm@TuvFAS`pGP(`0oVnDV#Y3uTV%D3P3>5Cx3g7g@9 z$Z7W2u>U{3FW^R+@SXz^#&!(76uA?*XNU7Qtw0RG=cbkI=^1+JWkMJ z+JVqpXKd1%n*L)m_1$7-0YI?+a&n&$@us&MGm@ch|G_^2%1LeD@kB_8{l5utki!^W z-v(&5M^9O6KklOjC_UwFR}+G;Ku1`g5=dX3Yr78dlY1y8A=1I%`C7V;?nBwSuJsep zIJY(y)-v_2(^}R>92Ew0VMYn1+L60_Z! zLQyR2^FYU*1{~ej`zv;^?J-3uXk`HPN$g;AvB$O)xsyVlnHGVNPGl2AE4X8CAuVI4 z2z!;C-)@0$@M^H$?NNsrTz-kZT_JT_$bS~6)z*+O-VO^VoWDz*tq!}`z2TtSqs{%X zIAKIMkAJ^Z)8i{EI32{WFAg(!Am55aNR)@L3#mx?9EKup5xIvTkWYLC+R{Z9v!BKb z86{53R&Ci2DhZ+>g9AGwaLnf^$s|K#!0!ksdiY*|T0!^QBCyT?7kWqDKIttc)Cfk* z6hj)OD3_)4!ava#1?SHbz0Vi}h#hDN zRv?3}c#Ycx3NqFse+}8#Lkj4gXNK=ucmWgO*&qi8|+0plV5cG*on z4wym0BXmZ|7bOJH&ml~7AHx9ZrOv@8gxf?sCP%_Fv`B8z@o-jv1kCO#SqsLB7~octI> zfIx7(IXKSyD-dDE&;rGYK;CDIzYD(IQmGa2o{|6uvxK988 literal 18506 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 diff --git a/resource/skill_animation/hero01_combo0101.tres b/resource/skill_animation/hero01_combo0101.tres index 236f0d0..e1805b3 100644 --- a/resource/skill_animation/hero01_combo0101.tres +++ b/resource/skill_animation/hero01_combo0101.tres @@ -4,7 +4,7 @@ [resource] resource_name = "hero01_combo0101" -length = 0.9 +length = 0.8 tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true @@ -36,8 +36,8 @@ tracks/2/path = NodePath("View:frame") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/keys = { -"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), +"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1), "update": 1, -"values": [0, 1, 2, 3, 4, 5, 6, 7, 8] +"values": [0, 1, 2, 3, 4, 5, 6, 7] } diff --git a/resource/skill_animation/hero01_combo0102.tres b/resource/skill_animation/hero01_combo0102.tres index 9e6d5f2..35338f3 100644 --- a/resource/skill_animation/hero01_combo0102.tres +++ b/resource/skill_animation/hero01_combo0102.tres @@ -4,7 +4,7 @@ [resource] resource_name = "hero01_combo0102" -length = 0.9 +length = 0.8 tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true @@ -36,8 +36,8 @@ tracks/2/path = NodePath("View:frame") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/keys = { -"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), +"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1), "update": 1, -"values": [0, 1, 2, 3, 4, 5, 6, 7, 8] +"values": [0, 1, 2, 3, 4, 5, 6, 7] } diff --git a/resource/skill_animation/hero01_common_skill0101.tres b/resource/skill_animation/hero01_common_skill0101.tres index 9e00665..10dd628 100644 --- a/resource/skill_animation/hero01_common_skill0101.tres +++ b/resource/skill_animation/hero01_common_skill0101.tres @@ -4,7 +4,7 @@ [resource] resource_name = "hero01_common_skill0101" -length = 0.9 +length = 0.8 tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true @@ -36,8 +36,8 @@ tracks/2/path = NodePath("View:frame") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/keys = { -"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), +"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1), "update": 1, -"values": [0, 1, 2, 3, 4, 5, 6, 7, 8] +"values": [0, 1, 2, 3, 4, 5, 6, 7] } diff --git a/resource/skill_animation/hero01_common_skill0102.tres b/resource/skill_animation/hero01_common_skill0102.tres index c221a92..4217bdc 100644 --- a/resource/skill_animation/hero01_common_skill0102.tres +++ b/resource/skill_animation/hero01_common_skill0102.tres @@ -4,7 +4,7 @@ [resource] resource_name = "hero01_common_skill0102" -length = 0.9 +length = 0.8 tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true @@ -36,8 +36,8 @@ tracks/2/path = NodePath("View:frame") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/keys = { -"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), +"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1), "update": 1, -"values": [0, 1, 2, 3, 4, 5, 6, 7, 8] +"values": [0, 1, 2, 3, 4, 5, 6, 7] } diff --git a/resource/skill_animation/hero01_common_skill03.tres b/resource/skill_animation/hero01_common_skill03.tres index f866275..daff948 100644 --- a/resource/skill_animation/hero01_common_skill03.tres +++ b/resource/skill_animation/hero01_common_skill03.tres @@ -4,7 +4,7 @@ [resource] resource_name = "hero01_common_skill03" -length = 0.9 +length = 0.8 tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true @@ -86,8 +86,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, 0.7, 0.8), -"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1), +"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1), "update": 1, -"values": [0, 1, 2, 3, 4, 5, 6, 7, 8] +"values": [0, 1, 2, 3, 4, 5, 6, 7] } diff --git a/resource/skill_animation/hero01_fist_attack05.tres b/resource/skill_animation/hero01_fist_attack05.tres index 638bee7..d3f9dd9 100644 --- a/resource/skill_animation/hero01_fist_attack05.tres +++ b/resource/skill_animation/hero01_fist_attack05.tres @@ -61,10 +61,10 @@ tracks/4/path = NodePath("Status:skill_move_speed") tracks/4/interp = 1 tracks/4/loop_wrap = true tracks/4/keys = { -"times": PackedFloat32Array(0.2, 0.6), -"transitions": PackedFloat32Array(1, 1), +"times": PackedFloat32Array(0.2, 0.5, 0.6), +"transitions": PackedFloat32Array(1, 1, 1), "update": 1, -"values": [2.0, 0.0] +"values": [1.0, 4.0, 0.0] } tracks/5/type = "method" tracks/5/imported = false diff --git a/resource/skill_animation/hero01_fist_skill03.tres b/resource/skill_animation/hero01_fist_skill03.tres index 0a7115b..8f24e65 100644 --- a/resource/skill_animation/hero01_fist_skill03.tres +++ b/resource/skill_animation/hero01_fist_skill03.tres @@ -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.1, 0.2), -"transitions": PackedFloat32Array(1, 1), +"times": PackedFloat32Array(0, 0.1, 0.2, 0.3), +"transitions": PackedFloat32Array(1, 1, 1, 1), "update": 1, -"values": [6.0, 0.0] +"values": [2.0, 8.0, 6.0, 0.0] } tracks/4/type = "method" tracks/4/imported = false @@ -61,11 +61,17 @@ tracks/4/path = NodePath("Battle") tracks/4/interp = 1 tracks/4/loop_wrap = true tracks/4/keys = { -"times": PackedFloat32Array(0.1), -"transitions": PackedFloat32Array(1), +"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 = "method" @@ -94,3 +100,14 @@ tracks/6/keys = { "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": [] +} diff --git a/resource/skill_animation/hero01_long_air_attack01.tres b/resource/skill_animation/hero01_long_air_attack01.tres index 4f56721..7031aef 100644 --- a/resource/skill_animation/hero01_long_air_attack01.tres +++ b/resource/skill_animation/hero01_long_air_attack01.tres @@ -4,7 +4,7 @@ [resource] resource_name = "hero01_long_air_attack01" -length = 0.9 +length = 0.8 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.3, 0.6), +"times": PackedFloat32Array(0, 0.2, 0.5), "transitions": PackedFloat32Array(1, 1, 1), "update": 1, "values": [0, 3, 4] @@ -49,7 +49,7 @@ tracks/3/path = NodePath("Status:speed_up_rate") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/keys = { -"times": PackedFloat32Array(0.2, 0.3), +"times": PackedFloat32Array(0.1, 0.2), "transitions": PackedFloat32Array(1, 1), "update": 1, "values": [-0.5, -1.0] @@ -61,7 +61,7 @@ tracks/4/path = NodePath("Status:skill_move_speed") tracks/4/interp = 1 tracks/4/loop_wrap = true tracks/4/keys = { -"times": PackedFloat32Array(0.1, 0.3), +"times": PackedFloat32Array(0, 0.2), "transitions": PackedFloat32Array(1, 1), "update": 1, "values": [1.0, 0.0] @@ -73,7 +73,7 @@ tracks/5/path = NodePath("Status:skill_float_speed") tracks/5/interp = 1 tracks/5/loop_wrap = true tracks/5/keys = { -"times": PackedFloat32Array(0, 0.2, 0.4), +"times": PackedFloat32Array(0, 0.1, 0.3), "transitions": PackedFloat32Array(1, 1, 1), "update": 1, "values": [0.1, 1.0, 0.0] @@ -85,7 +85,7 @@ tracks/6/path = NodePath("Battle") tracks/6/interp = 1 tracks/6/loop_wrap = true tracks/6/keys = { -"times": PackedFloat32Array(0.2), +"times": PackedFloat32Array(0.1), "transitions": PackedFloat32Array(1), "values": [{ "args": [], @@ -99,7 +99,7 @@ tracks/7/path = NodePath("Effect") tracks/7/interp = 1 tracks/7/loop_wrap = true tracks/7/keys = { -"times": PackedFloat32Array(0.2), +"times": PackedFloat32Array(0.1), "transitions": PackedFloat32Array(1), "values": [{ "args": [], @@ -113,8 +113,8 @@ tracks/8/path = NodePath("View:frame") tracks/8/interp = 1 tracks/8/loop_wrap = true tracks/8/keys = { -"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), +"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1), "update": 1, -"values": [0, 1, 2, 3, 4, 5, 6, 7, 8] +"values": [0, 1, 2, 3, 4, 5, 6, 7] } diff --git a/resource/skill_animation/hero01_long_air_attack02.tres b/resource/skill_animation/hero01_long_air_attack02.tres index ad7e7c6..922f612 100644 --- a/resource/skill_animation/hero01_long_air_attack02.tres +++ b/resource/skill_animation/hero01_long_air_attack02.tres @@ -4,7 +4,7 @@ [resource] resource_name = "hero01_long_air_attack02" -length = 0.9 +length = 0.8 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.4), "transitions": PackedFloat32Array(1, 1, 1), "update": 1, "values": [0, 3, 4] @@ -49,7 +49,7 @@ tracks/3/path = NodePath("Status:speed_up_rate") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/keys = { -"times": PackedFloat32Array(0.2, 0.3), +"times": PackedFloat32Array(0.1, 0.2), "transitions": PackedFloat32Array(1, 1), "update": 1, "values": [-0.5, -1.0] @@ -61,7 +61,7 @@ tracks/4/path = NodePath("Status:skill_move_speed") tracks/4/interp = 1 tracks/4/loop_wrap = true tracks/4/keys = { -"times": PackedFloat32Array(0.1, 0.3), +"times": PackedFloat32Array(0, 0.2), "transitions": PackedFloat32Array(1, 1), "update": 1, "values": [1.0, 0.0] @@ -73,7 +73,7 @@ tracks/5/path = NodePath("Status:skill_float_speed") tracks/5/interp = 1 tracks/5/loop_wrap = true tracks/5/keys = { -"times": PackedFloat32Array(0, 0.2, 0.4), +"times": PackedFloat32Array(0, 0.1, 0.3), "transitions": PackedFloat32Array(1, 1, 1), "update": 1, "values": [0.1, 1.0, 0.0] @@ -85,7 +85,7 @@ tracks/6/path = NodePath("Battle") tracks/6/interp = 1 tracks/6/loop_wrap = true tracks/6/keys = { -"times": PackedFloat32Array(0.2), +"times": PackedFloat32Array(0.1), "transitions": PackedFloat32Array(1), "values": [{ "args": [], @@ -99,7 +99,7 @@ tracks/7/path = NodePath("Effect") tracks/7/interp = 1 tracks/7/loop_wrap = true tracks/7/keys = { -"times": PackedFloat32Array(0.2), +"times": PackedFloat32Array(0.1), "transitions": PackedFloat32Array(1), "values": [{ "args": [], @@ -113,8 +113,8 @@ tracks/8/path = NodePath("View:frame") tracks/8/interp = 1 tracks/8/loop_wrap = true tracks/8/keys = { -"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), +"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1), "update": 1, -"values": [0, 1, 2, 3, 4, 5, 6, 7, 8] +"values": [0, 1, 2, 3, 4, 5, 6, 7] } diff --git a/resource/skill_animation/hero01_long_air_attack03.tres b/resource/skill_animation/hero01_long_air_attack03.tres index 194760e..e7a76df 100644 --- a/resource/skill_animation/hero01_long_air_attack03.tres +++ b/resource/skill_animation/hero01_long_air_attack03.tres @@ -4,7 +4,7 @@ [resource] resource_name = "hero01_long_air_attack03" -length = 0.9 +length = 0.8 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, 0.7), +"times": PackedFloat32Array(0, 0.3, 0.4, 0.6), "transitions": PackedFloat32Array(1, 1, 1, 1), "update": 0, "values": [0, 1, 3, 4] @@ -49,7 +49,7 @@ tracks/3/path = NodePath("Battle") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/keys = { -"times": PackedFloat32Array(0.2), +"times": PackedFloat32Array(0.1), "transitions": PackedFloat32Array(1), "values": [{ "args": [], @@ -63,7 +63,7 @@ tracks/4/path = NodePath("Status:skill_float_speed") tracks/4/interp = 1 tracks/4/loop_wrap = true tracks/4/keys = { -"times": PackedFloat32Array(0, 0.2, 0.3), +"times": PackedFloat32Array(0, 0.1, 0.2), "transitions": PackedFloat32Array(1, 1, 1), "update": 1, "values": [2.0, -10.0, 0.0] @@ -75,7 +75,7 @@ tracks/5/path = NodePath("Effect") tracks/5/interp = 1 tracks/5/loop_wrap = true tracks/5/keys = { -"times": PackedFloat32Array(0.2, 0.3), +"times": PackedFloat32Array(0.1, 0.2), "transitions": PackedFloat32Array(1, 1), "values": [{ "args": [], @@ -92,7 +92,7 @@ tracks/6/path = NodePath("Battle") tracks/6/interp = 1 tracks/6/loop_wrap = true tracks/6/keys = { -"times": PackedFloat32Array(0.2), +"times": PackedFloat32Array(0.1), "transitions": PackedFloat32Array(1), "values": [{ "args": [], @@ -106,7 +106,7 @@ tracks/7/path = NodePath("Battle") tracks/7/interp = 1 tracks/7/loop_wrap = true tracks/7/keys = { -"times": PackedFloat32Array(0, 0.3), +"times": PackedFloat32Array(0, 0.2), "transitions": PackedFloat32Array(1, 1), "values": [{ "args": [], @@ -123,8 +123,8 @@ tracks/8/path = NodePath("View:frame") tracks/8/interp = 1 tracks/8/loop_wrap = true tracks/8/keys = { -"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), +"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1), "update": 1, -"values": [0, 1, 2, 3, 4, 5, 6, 7, 8] +"values": [0, 1, 2, 3, 4, 5, 6, 7] } diff --git a/resource/skill_animation/hero01_long_air_skill01.tres b/resource/skill_animation/hero01_long_air_skill01.tres index d1ed474..aac08d9 100644 --- a/resource/skill_animation/hero01_long_air_skill01.tres +++ b/resource/skill_animation/hero01_long_air_skill01.tres @@ -4,7 +4,7 @@ [resource] resource_name = "hero01_long_air_skill01" -length = 1.4 +length = 1.3 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.7, 1.3), +"times": PackedFloat32Array(0, 0.6, 1.3), "transitions": PackedFloat32Array(1, 1, 1), "update": 1, "values": [0, 3, 4] @@ -49,7 +49,7 @@ tracks/3/path = NodePath("Status:speed_up_rate") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/keys = { -"times": PackedFloat32Array(0.3, 0.6), +"times": PackedFloat32Array(0.2, 0.5), "transitions": PackedFloat32Array(1, 1), "update": 1, "values": [-0.5, -1.0] @@ -61,7 +61,7 @@ tracks/4/path = NodePath("Status:skill_move_speed") tracks/4/interp = 1 tracks/4/loop_wrap = true tracks/4/keys = { -"times": PackedFloat32Array(0, 0.3, 0.6), +"times": PackedFloat32Array(0, 0.2, 0.5), "transitions": PackedFloat32Array(1, 1, 1), "update": 1, "values": [0.0, 1.0, 0.0] @@ -73,7 +73,7 @@ tracks/5/path = NodePath("Battle") tracks/5/interp = 1 tracks/5/loop_wrap = true tracks/5/keys = { -"times": PackedFloat32Array(0.3, 0.5, 0.6), +"times": PackedFloat32Array(0.2, 0.4, 0.5), "transitions": PackedFloat32Array(1, 1, 1), "values": [{ "args": [], @@ -93,7 +93,7 @@ tracks/6/path = NodePath("Status:skill_float_speed") tracks/6/interp = 1 tracks/6/loop_wrap = true tracks/6/keys = { -"times": PackedFloat32Array(0, 0.3, 0.6), +"times": PackedFloat32Array(0, 0.2, 0.5), "transitions": PackedFloat32Array(1, 1, 1), "update": 1, "values": [0.1, 2.0, 0.0] @@ -105,7 +105,7 @@ tracks/7/path = NodePath("Effect") tracks/7/interp = 1 tracks/7/loop_wrap = true tracks/7/keys = { -"times": PackedFloat32Array(0.3, 0.5, 0.6), +"times": PackedFloat32Array(0.2, 0.4, 0.5), "transitions": PackedFloat32Array(1, 1, 1), "values": [{ "args": [], @@ -125,8 +125,8 @@ tracks/8/path = NodePath("View:frame") tracks/8/interp = 1 tracks/8/loop_wrap = true tracks/8/keys = { -"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.1, 1.2, 1.3), -"transitions": PackedFloat32Array(1, 1, 1, 1, 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, 0.7, 0.8, 0.9, 1, 1.1, 1.2), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), "update": 1, -"values": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13] +"values": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] } diff --git a/resource/skill_animation/hero01_long_attack01.tres b/resource/skill_animation/hero01_long_attack01.tres index c135ec5..0c9c1d0 100644 --- a/resource/skill_animation/hero01_long_attack01.tres +++ b/resource/skill_animation/hero01_long_attack01.tres @@ -4,7 +4,7 @@ [resource] resource_name = "hero01_long_attack01" -length = 0.9 +length = 0.8 step = 0.1 tracks/0/type = "value" tracks/0/imported = false @@ -101,8 +101,8 @@ tracks/7/path = NodePath("View:frame") tracks/7/interp = 1 tracks/7/loop_wrap = true tracks/7/keys = { -"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), +"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1), "update": 1, -"values": [0, 1, 2, 3, 4, 5, 6, 7, 8] +"values": [0, 1, 2, 3, 4, 5, 6, 7] } diff --git a/resource/skill_animation/hero01_long_attack02.tres b/resource/skill_animation/hero01_long_attack02.tres index a7aadf5..98b26c7 100644 --- a/resource/skill_animation/hero01_long_attack02.tres +++ b/resource/skill_animation/hero01_long_attack02.tres @@ -4,7 +4,7 @@ [resource] resource_name = "hero01_long_attack02" -length = 0.9 +length = 0.8 step = 0.1 tracks/0/type = "value" tracks/0/imported = false @@ -101,8 +101,8 @@ tracks/7/path = NodePath("View:frame") tracks/7/interp = 1 tracks/7/loop_wrap = true tracks/7/keys = { -"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), +"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1), "update": 1, -"values": [0, 1, 2, 3, 4, 5, 6, 7, 8] +"values": [0, 1, 2, 3, 4, 5, 6, 7] } diff --git a/resource/skill_animation/hero01_long_skill02.tres b/resource/skill_animation/hero01_long_skill02.tres index 0591f15..21c90fb 100644 --- a/resource/skill_animation/hero01_long_skill02.tres +++ b/resource/skill_animation/hero01_long_skill02.tres @@ -4,7 +4,7 @@ [resource] resource_name = "hero01_long_skill02" -length = 0.8 +length = 0.7 step = 0.1 tracks/0/type = "value" tracks/0/imported = false @@ -49,7 +49,7 @@ tracks/3/path = NodePath("Status:speed_up_rate") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/keys = { -"times": PackedFloat32Array(0, 0.2), +"times": PackedFloat32Array(0, 0.1), "transitions": PackedFloat32Array(1, 1), "update": 1, "values": [-0.5, -1.0] @@ -61,7 +61,7 @@ tracks/4/path = NodePath("Status:skill_move_speed") tracks/4/interp = 1 tracks/4/loop_wrap = true tracks/4/keys = { -"times": PackedFloat32Array(0.1, 0.2), +"times": PackedFloat32Array(0, 0.1), "transitions": PackedFloat32Array(1, 1), "update": 1, "values": [2.0, 0.0] @@ -73,7 +73,7 @@ tracks/5/path = NodePath("Status:skill_float_speed") tracks/5/interp = 1 tracks/5/loop_wrap = true tracks/5/keys = { -"times": PackedFloat32Array(0.3, 0.4), +"times": PackedFloat32Array(0.2, 0.3), "transitions": PackedFloat32Array(1, 1), "update": 1, "values": [3.0, 0.0] @@ -85,7 +85,7 @@ tracks/6/path = NodePath("Battle") tracks/6/interp = 1 tracks/6/loop_wrap = true tracks/6/keys = { -"times": PackedFloat32Array(0.3), +"times": PackedFloat32Array(0.2), "transitions": PackedFloat32Array(1), "values": [{ "args": [], @@ -99,7 +99,7 @@ tracks/7/path = NodePath("Effect") tracks/7/interp = 1 tracks/7/loop_wrap = true tracks/7/keys = { -"times": PackedFloat32Array(0.3), +"times": PackedFloat32Array(0.2), "transitions": PackedFloat32Array(1), "values": [{ "args": [], @@ -113,8 +113,8 @@ tracks/8/path = NodePath("View:frame") tracks/8/interp = 1 tracks/8/loop_wrap = true tracks/8/keys = { -"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7), -"transitions": PackedFloat32Array(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] +"values": [0, 1, 2, 3, 4, 5, 6] } diff --git a/resource/skill_animation/hero01_long_stab03.tres b/resource/skill_animation/hero01_long_stab03.tres new file mode 100644 index 0000000..8ee9e66 --- /dev/null +++ b/resource/skill_animation/hero01_long_stab03.tres @@ -0,0 +1,121 @@ +[gd_resource type="Animation" load_steps=2 format=3 uid="uid://dbm6ssy6cqb2d"] + +[ext_resource type="SpriteFrames" uid="uid://c6w03xigmrd31" path="res://resource/animation/character/hero01_long_skill03.aseprite" id="1_uyr8p"] + +[resource] +resource_name = "hero01_long_stab03" +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_uyr8p")] +} +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": ["long_skill_stab02"] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("View:frame") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/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] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("Status:break_level") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0, 0.3, 0.5), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 1, +"values": [0, 3, 4] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("Status:speed_up_rate") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0, 0.1), +"transitions": PackedFloat32Array(1, 1), +"update": 1, +"values": [-0.5, -1.0] +} +tracks/5/type = "method" +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/path = NodePath("Battle") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/keys = { +"times": PackedFloat32Array(0.2), +"transitions": PackedFloat32Array(1), +"values": [{ +"args": [], +"method": &"cast_sub_character" +}] +} +tracks/6/type = "method" +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/path = NodePath("Effect") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/keys = { +"times": PackedFloat32Array(0.2), +"transitions": PackedFloat32Array(1), +"values": [{ +"args": [], +"method": &"cast_attack_particle1" +}] +} +tracks/7/type = "value" +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/path = NodePath("Status:skill_move_speed") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/keys = { +"times": PackedFloat32Array(0, 0.1, 0.2), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [2.0, 6.0, 0.0] +} +tracks/8/type = "method" +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/path = NodePath("Battle") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/keys = { +"times": PackedFloat32Array(0.2), +"transitions": PackedFloat32Array(1), +"values": [{ +"args": [], +"method": &"attack1" +}] +} diff --git a/resource/skill_animation/hero01_remote01.tres b/resource/skill_animation/hero01_remote01.tres index 44ef10b..7bb5bbe 100644 --- a/resource/skill_animation/hero01_remote01.tres +++ b/resource/skill_animation/hero01_remote01.tres @@ -4,7 +4,7 @@ [resource] resource_name = "hero01_remote01" -length = 0.9 +length = 0.8 step = 0.1 tracks/0/type = "value" tracks/0/imported = false @@ -87,8 +87,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, 0.7, 0.8), -"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1), +"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1), "update": 1, -"values": [0, 1, 2, 3, 4, 5, 6, 7, 8] +"values": [0, 1, 2, 3, 4, 5, 6, 7] } diff --git a/resource/skill_animation_library/animation_library.tres b/resource/skill_animation_library/animation_library.tres index 0916add..947b81c 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=56 format=3 uid="uid://croik07a1qko5"] +[gd_resource type="AnimationLibrary" load_steps=57 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"] @@ -51,6 +51,7 @@ [ext_resource type="Animation" uid="uid://cc086nunelk2q" path="res://resource/skill_animation/hero01_long_stab01.tres" id="43_0kutt"] [ext_resource type="Animation" uid="uid://nhnwu6uccylr" path="res://resource/skill_animation/hero01_long_stab02.tres" id="44_c7cx4"] [ext_resource type="Animation" uid="uid://2oxeq83bpofb" path="res://resource/skill_animation/monster03_slash02.tres" id="45_1vnur"] +[ext_resource type="Animation" uid="uid://dbm6ssy6cqb2d" path="res://resource/skill_animation/hero01_long_stab03.tres" id="45_hfosj"] [ext_resource type="Animation" uid="uid://dyyt3nsvoye62" path="res://resource/skill_animation/monster03_slash01.tres" id="45_s1ue4"] [ext_resource type="Animation" uid="uid://co8bivpp1fm6g" path="res://resource/skill_animation/monster03_slash03.tres" id="46_litb8"] [ext_resource type="Animation" uid="uid://qcmj7d5pg6lw" path="res://resource/skill_animation/hero01_short_skill01.tres" id="50_1hav4"] @@ -102,6 +103,7 @@ _data = { &"hero01_long_skill03": ExtResource("42_d2bqv"), &"hero01_long_stab01": ExtResource("43_0kutt"), &"hero01_long_stab02": ExtResource("44_c7cx4"), +&"hero01_long_stab03": ExtResource("45_hfosj"), &"hero01_remote01": ExtResource("33_7i37k"), &"hero01_short_attack01": ExtResource("11_n0dhn"), &"hero01_short_attack02": ExtResource("11_h2vlt"), diff --git a/scene/ai/bullet_simple.tscn b/scene/ai/bullet_simple.tscn index 70b89ab..c374aad 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@25116") +blackboard = NodePath("@Node@25186") [node name="SequenceComposite" type="Node" parent="."] script = ExtResource("3_i33jf") diff --git a/scene/ai/bullet_simple_penetrat.tscn b/scene/ai/bullet_simple_penetrat.tscn index c6d27f5..84ae2e6 100644 --- a/scene/ai/bullet_simple_penetrat.tscn +++ b/scene/ai/bullet_simple_penetrat.tscn @@ -1,20 +1,49 @@ -[gd_scene load_steps=5 format=3 uid="uid://tr65aikkpp2e"] +[gd_scene load_steps=9 format=3 uid="uid://tr65aikkpp2e"] [ext_resource type="Script" uid="uid://mvwcxqcetiqp" path="res://addons/beehave/nodes/beehave_tree.gd" id="1_6wcp2"] [ext_resource type="Script" uid="uid://cugftmuc8v30c" path="res://addons/beehave/nodes/composites/sequence.gd" id="2_0p8p1"] -[ext_resource type="Script" uid="uid://cnw25wdsd3c76" path="res://script/ai/action/action_wait.gd" id="3_irjra"] +[ext_resource type="Script" uid="uid://dcqq2mursvw5m" path="res://addons/beehave/nodes/decorators/succeeder.gd" id="3_irjra"] +[ext_resource type="Script" uid="uid://csd1yh0ruy3yu" path="res://script/ai/action/action_wait_tick.gd" id="4_2fqct"] [ext_resource type="Script" uid="uid://ddcaceywxwt20" path="res://script/ai/action/action_attack1.gd" id="4_klwmg"] +[ext_resource type="Script" uid="uid://bhxaiqao7nkth" path="res://script/ai/action/action_check_hit_wall.gd" id="6_7sn8v"] +[ext_resource type="Script" uid="uid://ci3tg5fkdn16f" path="res://script/ai/action/action_destroy.gd" id="7_dfpyy"] +[ext_resource type="Script" uid="uid://scokoi8g3sm8" path="res://script/ai/action/action_attack2.gd" id="7_klwmg"] [node name="BeehaveTree" type="Node" node_paths=PackedStringArray("blackboard")] script = ExtResource("1_6wcp2") -blackboard = NodePath("@Node@25116") +blackboard = NodePath("@Node@25188") [node name="SequenceComposite" type="Node" parent="."] script = ExtResource("2_0p8p1") -[node name="ActionWait" type="Node" parent="SequenceComposite"] +[node name="AlwaysSucceedDecorator" type="Node" parent="SequenceComposite"] script = ExtResource("3_irjra") -wait_time = 0.05 +metadata/_custom_type_script = ExtResource("3_irjra") -[node name="ActionAttack1" type="Node" parent="SequenceComposite"] +[node name="保持攻击" type="Node" parent="SequenceComposite/AlwaysSucceedDecorator"] +script = ExtResource("2_0p8p1") + +[node name="ActionWaitTick" type="Node" parent="SequenceComposite/AlwaysSucceedDecorator/保持攻击"] +script = ExtResource("4_2fqct") +metadata/_custom_type_script = ExtResource("4_2fqct") + +[node name="ActionAttack1" type="Node" parent="SequenceComposite/AlwaysSucceedDecorator/保持攻击"] script = ExtResource("4_klwmg") + +[node name="AlwaysSucceedDecorator2" type="Node" parent="SequenceComposite"] +script = ExtResource("3_irjra") +metadata/_custom_type_script = ExtResource("3_irjra") + +[node name="检测命中墙壁并销毁" type="Node" parent="SequenceComposite/AlwaysSucceedDecorator2"] +script = ExtResource("2_0p8p1") + +[node name="ActionCheckHitWall" type="Node" parent="SequenceComposite/AlwaysSucceedDecorator2/检测命中墙壁并销毁"] +script = ExtResource("6_7sn8v") +metadata/_custom_type_script = ExtResource("6_7sn8v") + +[node name="ActionAttack2" type="Node" parent="SequenceComposite/AlwaysSucceedDecorator2/检测命中墙壁并销毁"] +script = ExtResource("7_klwmg") +metadata/_custom_type_script = ExtResource("7_klwmg") + +[node name="ActionDestroy" type="Node" parent="SequenceComposite/AlwaysSucceedDecorator2/检测命中墙壁并销毁"] +script = ExtResource("7_dfpyy") diff --git a/scene/ai/monster01.tscn b/scene/ai/monster01.tscn index f6128e6..426590f 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@25117") +blackboard = NodePath("@Node@25187") [node name="SequenceComposite" type="Node" parent="."] script = ExtResource("2_04nig") diff --git a/scene/character/character.tscn b/scene/character/character.tscn index 1679b1c..e837ee1 100644 --- a/scene/character/character.tscn +++ b/scene/character/character.tscn @@ -3,8 +3,8 @@ [ext_resource type="Script" uid="uid://cdvtgxvof33j3" path="res://script/character/character.gd" id="1_tonbs"] [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="SpriteFrames" uid="uid://c6w03xigmrd31" path="res://resource/animation/character/hero01_long_skill03.aseprite" id="4_53b4u"] [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="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"] @@ -137,8 +137,8 @@ gi_mode = 0 pixel_size = 0.02 double_sided = false texture_filter = 0 -sprite_frames = ExtResource("4_53b4u") -animation = &"long_skill_stab01" +sprite_frames = ExtResource("4_sox5o") +animation = &"long_air_attack03" script = ExtResource("4_vijjv") [node name="Move" type="Node3D" parent="."] @@ -187,6 +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) visible = false pixel_size = 0.02 sprite_frames = ExtResource("15_70jx1") diff --git a/scene/effect/particle/_particle_slash1.tscn b/scene/effect/particle/_particle_slash1.tscn index 241efac..64798b9 100644 --- a/scene/effect/particle/_particle_slash1.tscn +++ b/scene/effect/particle/_particle_slash1.tscn @@ -158,7 +158,7 @@ emitting = false amount = 1 lifetime = 0.2 one_shot = true -speed_scale = 2.5 +speed_scale = 2.8 fixed_fps = 60 local_coords = true process_material = SubResource("ParticleProcessMaterial_eppsm") @@ -174,7 +174,7 @@ emitting = false amount = 1 lifetime = 0.25 one_shot = true -speed_scale = 1.8 +speed_scale = 2.8 fixed_fps = 60 local_coords = true process_material = SubResource("ParticleProcessMaterial_g33uw") @@ -190,7 +190,7 @@ emitting = false amount = 1 lifetime = 0.25 one_shot = true -speed_scale = 1.8 +speed_scale = 2.8 fixed_fps = 60 local_coords = true process_material = SubResource("ParticleProcessMaterial_k158j") diff --git a/scene/effect/particle/_particle_slash2.tscn b/scene/effect/particle/_particle_slash2.tscn index f8171c9..b0e4ba3 100644 --- a/scene/effect/particle/_particle_slash2.tscn +++ b/scene/effect/particle/_particle_slash2.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=31 format=3 uid="uid://c2uyg7ktya04f"] -[ext_resource type="Script" path="res://script/effect/particle.gd" id="1_wk0x7"] -[ext_resource type="Shader" path="res://render/shader/effect_slash.gdshader" id="2_jb5vy"] +[ext_resource type="Script" uid="uid://dxoik7jm7xm2q" path="res://script/effect/particle.gd" id="1_wk0x7"] +[ext_resource type="Shader" uid="uid://b4x52xwsln0sq" path="res://render/shader/effect_slash.gdshader" id="2_jb5vy"] [ext_resource type="Texture2D" uid="uid://4cxxxxdbbugc" path="res://render/texture/particle/gradient/gradient1.png" id="3_lkmel"] [ext_resource type="Texture2D" uid="uid://c4byf37he3mjt" path="res://render/texture/particle/noise/noise1.png" id="3_t53xp"] [ext_resource type="Texture2D" uid="uid://b5nr3mq3u5tjn" path="res://render/texture/particle/mask/mask13.png" id="5_637ga"] @@ -35,7 +35,7 @@ metadata/_snap_enabled = true curve = SubResource("Curve_uh8b1") [sub_resource type="Curve" id="Curve_onba8"] -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 @@ -78,7 +78,7 @@ metadata/_snap_enabled = true curve = SubResource("Curve_56tu5") [sub_resource type="Curve" id="Curve_ixsbt"] -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 @@ -117,6 +117,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_stugk") diff --git a/scene/effect/particle/_particle_slash3.tscn b/scene/effect/particle/_particle_slash3.tscn index 0eee8b6..4c63431 100644 --- a/scene/effect/particle/_particle_slash3.tscn +++ b/scene/effect/particle/_particle_slash3.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=18 format=3 uid="uid://cp5eaiqn5u2tu"] -[ext_resource type="Script" path="res://script/effect/particle.gd" id="1_xld4w"] -[ext_resource type="Shader" path="res://render/shader/effect_slash.gdshader" id="2_x0g1q"] +[ext_resource type="Script" uid="uid://dxoik7jm7xm2q" path="res://script/effect/particle.gd" id="1_xld4w"] +[ext_resource type="Shader" uid="uid://b4x52xwsln0sq" path="res://render/shader/effect_slash.gdshader" id="2_x0g1q"] [ext_resource type="Texture2D" uid="uid://4cxxxxdbbugc" path="res://render/texture/particle/gradient/gradient1.png" id="3_poysl"] [ext_resource type="Texture2D" uid="uid://c4byf37he3mjt" path="res://render/texture/particle/noise/noise1.png" id="4_do65m"] [ext_resource type="Texture2D" uid="uid://b5nr3mq3u5tjn" path="res://render/texture/particle/mask/mask13.png" id="5_4etjt"] @@ -54,6 +54,7 @@ emission_ring_axis = Vector3(0, 1, 0) emission_ring_height = 0.0 emission_ring_radius = 1.0 emission_ring_inner_radius = 0.9 +emission_ring_cone_angle = 90.0 direction = Vector3(0, 1, 1) radial_velocity_min = 3.99998 radial_velocity_max = 3.99998 diff --git a/scene/effect/particle/_particle_slash4.tscn b/scene/effect/particle/_particle_slash4.tscn index 53eea02..860798b 100644 --- a/scene/effect/particle/_particle_slash4.tscn +++ b/scene/effect/particle/_particle_slash4.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=15 format=3 uid="uid://pyxtmwjjo8ch"] -[ext_resource type="Script" path="res://script/effect/particle.gd" id="1_dowcy"] -[ext_resource type="Shader" path="res://render/shader/effect_slash_down.gdshader" id="2_teaun"] +[ext_resource type="Script" uid="uid://dxoik7jm7xm2q" path="res://script/effect/particle.gd" id="1_dowcy"] +[ext_resource type="Shader" uid="uid://dw1itkg00sr2o" path="res://render/shader/effect_slash_down.gdshader" id="2_teaun"] [ext_resource type="Texture2D" uid="uid://4cxxxxdbbugc" path="res://render/texture/particle/gradient/gradient1.png" id="3_xsyva"] [ext_resource type="Texture2D" uid="uid://c4byf37he3mjt" path="res://render/texture/particle/noise/noise1.png" id="4_u6mi0"] [ext_resource type="Texture2D" uid="uid://l5qeh3owctpm" path="res://render/texture/particle/mask/mask15.png" id="5_tixsx"] diff --git a/scene/effect/particle/_particle_stab3.tscn b/scene/effect/particle/_particle_stab3.tscn new file mode 100644 index 0000000..c2bc616 --- /dev/null +++ b/scene/effect/particle/_particle_stab3.tscn @@ -0,0 +1,94 @@ +[gd_scene load_steps=17 format=3 uid="uid://bh3ydvhkb4771"] + +[ext_resource type="Script" uid="uid://dxoik7jm7xm2q" path="res://script/effect/particle.gd" id="1_n7rn2"] +[ext_resource type="Shader" uid="uid://b4x52xwsln0sq" path="res://render/shader/effect_slash.gdshader" id="2_eydbp"] +[ext_resource type="Texture2D" uid="uid://4cxxxxdbbugc" path="res://render/texture/particle/gradient/gradient1.png" id="3_xand7"] +[ext_resource type="Texture2D" uid="uid://c4byf37he3mjt" path="res://render/texture/particle/noise/noise1.png" id="4_f8gw0"] +[ext_resource type="Texture2D" uid="uid://vy3c8opc6uju" path="res://render/texture/particle/mask/mask17.png" id="5_nj1by"] +[ext_resource type="Texture2D" uid="uid://dd3e7ol8qa5eq" path="res://render/texture/particle/noise/noise2.png" id="6_dq6ln"] +[ext_resource type="ArrayMesh" uid="uid://bhqhfenm05vo2" path="res://render/mesh/cone1.obj" id="7_dw3eu"] +[ext_resource type="Texture2D" uid="uid://bn6fmxdjlp3wf" path="res://render/texture/particle/mask/mask19.png" id="8_gc3w6"] + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_n7rn2"] +render_priority = 0 +shader = ExtResource("2_eydbp") +shader_parameter/tex_main = ExtResource("4_f8gw0") +shader_parameter/tex_noise = ExtResource("6_dq6ln") +shader_parameter/tex_mask = ExtResource("5_nj1by") +shader_parameter/tex_gradient = ExtResource("3_xand7") + +[sub_resource type="Curve" id="Curve_dq6ln"] +_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 + +[sub_resource type="CurveTexture" id="CurveTexture_dw3eu"] +curve = SubResource("Curve_dq6ln") + +[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_gc3w6"] +particle_flag_rotate_y = true +angle_min = 180.0 +angle_max = 180.0 +angular_velocity_min = -720.0 +angular_velocity_max = -720.0 +gravity = Vector3(0, 0, 0) +scale_curve = SubResource("CurveTexture_dw3eu") + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_lhosn"] +render_priority = 0 +shader = ExtResource("2_eydbp") +shader_parameter/tex_main = ExtResource("4_f8gw0") +shader_parameter/tex_noise = ExtResource("6_dq6ln") +shader_parameter/tex_mask = ExtResource("8_gc3w6") +shader_parameter/tex_gradient = ExtResource("3_xand7") + +[sub_resource type="Curve" id="Curve_n7rn2"] +_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 + +[sub_resource type="CurveTexture" id="CurveTexture_eydbp"] +curve = SubResource("Curve_n7rn2") + +[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_xand7"] +particle_flag_rotate_y = true +angle_min = 180.0 +angle_max = 180.0 +angular_velocity_min = -720.0 +angular_velocity_max = -720.0 +gravity = Vector3(0, 0, 0) +scale_curve = SubResource("CurveTexture_eydbp") + +[node name="Particle" type="Node3D"] +script = ExtResource("1_n7rn2") + +[node name="Slash" type="GPUParticles3D" parent="."] +transform = Transform3D(-4.37114e-08, -1.5, 0, 1, -6.55671e-08, 0, 0, 0, 1, 0, 0, 0) +layers = 512 +material_override = SubResource("ShaderMaterial_n7rn2") +cast_shadow = 0 +gi_mode = 0 +emitting = false +amount = 1 +lifetime = 5.0 +one_shot = true +seed = 1352074707 +fixed_fps = 60 +local_coords = true +process_material = SubResource("ParticleProcessMaterial_gc3w6") +draw_pass_1 = ExtResource("7_dw3eu") + +[node name="Slash2" type="GPUParticles3D" parent="."] +transform = Transform3D(-2.62268e-08, -0.6, 0, 0.6, -2.62268e-08, 0, 0, 0, 0.6, 0, 0, 0) +layers = 512 +material_override = SubResource("ShaderMaterial_lhosn") +cast_shadow = 0 +gi_mode = 0 +emitting = false +amount = 1 +lifetime = 5.0 +one_shot = true +fixed_fps = 60 +local_coords = true +process_material = SubResource("ParticleProcessMaterial_xand7") +draw_pass_1 = ExtResource("7_dw3eu") diff --git a/scene/effect/particle/bullet_hero01_long_stab.tscn b/scene/effect/particle/bullet_hero01_long_stab.tscn new file mode 100644 index 0000000..0ac7634 --- /dev/null +++ b/scene/effect/particle/bullet_hero01_long_stab.tscn @@ -0,0 +1,10 @@ +[gd_scene load_steps=3 format=3 uid="uid://c8w1be7y1qejq"] + +[ext_resource type="Script" uid="uid://dxoik7jm7xm2q" path="res://script/effect/particle.gd" id="1_q4l8b"] +[ext_resource type="PackedScene" uid="uid://bh3ydvhkb4771" path="res://scene/effect/particle/_particle_stab3.tscn" id="2_iixv7"] + +[node name="Particle" type="Node3D"] +script = ExtResource("1_q4l8b") + +[node name="Particle" parent="." instance=ExtResource("2_iixv7")] +transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0.587818, 0, 0) diff --git a/script/_global/setting.gd b/script/_global/setting.gd index 8de5658..e70547a 100644 --- a/script/_global/setting.gd +++ b/script/_global/setting.gd @@ -14,7 +14,6 @@ const drag_air: float = 5 #关卡 const size_basic: Vector3 = Vector3(12.8, 5.12, 7.68) #ui -const weapon_hide_duration: float = 2.0 const weapon_anime_duration: float = 0.1 #pt const pt_mp_damage_rate: float = 0.5 diff --git a/script/ai/action/action_destroy.gd b/script/ai/action/action_destroy.gd index c853598..1ea1337 100644 --- a/script/ai/action/action_destroy.gd +++ b/script/ai/action/action_destroy.gd @@ -1,7 +1,14 @@ extends Action class_name ActionDestroy +var live_time: float = 0.05 + + func run(character: Character, blackboard: Blackboard) -> int: - Global.character_mgr.destroy_character(character.id()) - return SUCCESS + live_time -= get_physics_process_delta_time() + if live_time > 0: + return RUNNING + else: + Global.character_mgr.destroy_character(character.id()) + return SUCCESS diff --git a/script/character/battle.gd b/script/character/battle.gd index 9cc9b77..9c12a67 100644 --- a/script/character/battle.gd +++ b/script/character/battle.gd @@ -15,8 +15,8 @@ func attack1() -> void: if not status.skill_cfg: return var attack_info: Struct.AttackInfo = Struct.AttackInfo.new() - attack_info.attack = status.skill_cfg.get_attack1() - attack_info.attack_box = status.skill_cfg.get_attack1_box() + attack_info.attack = status.skill_cfg.attack1 + attack_info.attack_box = status.skill_cfg.attack1_box attack_info.attack_dir = status.skill_dir attack_info.with_stop = status.skill_cfg.attack1_with_stop attack_info.ignore_push = status.skill_cfg.ignore_push @@ -27,8 +27,8 @@ func attack2() -> void: if not status.skill_cfg: return var attack_info: Struct.AttackInfo = Struct.AttackInfo.new() - attack_info.attack = status.skill_cfg.get_attack2() - attack_info.attack_box = status.skill_cfg.get_attack2_box() + attack_info.attack = status.skill_cfg.attack2 + attack_info.attack_box = status.skill_cfg.attack2_box attack_info.attack_dir = status.skill_dir attack_info.with_stop = status.skill_cfg.attack2_with_stop attack_info.ignore_push = status.skill_cfg.ignore_push @@ -37,21 +37,26 @@ func attack2() -> void: func character_attack1() -> void: var attack_info: Struct.AttackInfo = Struct.AttackInfo.new() - attack_info.attack = status.cfg.get_attack1() - attack_info.attack_box = status.cfg.get_attack1_box() + attack_info.attack = status.cfg.attack1 + attack_info.attack_box = status.cfg.attack1_box attack_info.attack_dir = status.move_dir add_attack(attack_info) func character_attack2() -> void: + print("character_attack2") var attack_info: Struct.AttackInfo = Struct.AttackInfo.new() - attack_info.attack = status.cfg.get_attack2() - attack_info.attack_box = status.cfg.get_attack2_box() + attack_info.attack = status.cfg.attack2 + attack_info.attack_box = status.cfg.attack2_box attack_info.attack_dir = status.move_dir add_attack(attack_info) func add_attack(attack_info: Struct.AttackInfo) -> void: + if not attack_info.attack or not attack_info.attack_box: + return + if character.has_buff("hit_ground_cd") and attack_info.attack == ResourceManager.cfg_attack_rebound: + return var result: Character if attack_info.attack_box.is_throw: var target: Character = Global.character_mgr.get_character(status.throw_target) @@ -76,6 +81,7 @@ func on_attack_character(result: Character, attack_info: Struct.AttackInfo) -> v func settle(from: int, to: int, attack_info: Struct.AttackInfo) -> Struct.HitResultInfo: + print("settle",from,to) var attack: AttackCfg = attack_info.attack var attack_dir: Vector2 = attack_info.attack_dir var with_stop: bool = attack_info.with_stop @@ -326,7 +332,7 @@ func settle(from: int, to: int, attack_info: Struct.AttackInfo) -> Struct.HitRes #卡帧 if not is_bullet: character_from.set_pause_time(pause_time) - character_to.set_pause_time(pause_time) + character_to.set_pause_time(pause_time) #全局特效 var has_global_effect: bool = character_from.is_player() or character_to.is_player() diff --git a/script/character/character.gd b/script/character/character.gd index c03b147..2d2ef5b 100644 --- a/script/character/character.gd +++ b/script/character/character.gd @@ -217,8 +217,8 @@ func set_effect_lock(value: bool): effect.set_effect_lock(value) -func set_target(target: int): - set_status("target", target) +func set_target(target_new: int): + set_status("target", target_new) set_status("is_lock", false) @@ -226,13 +226,13 @@ func set_is_lock(value: bool): set_status("is_lock", value) -func cast_particle(resource: Resource, is_attach: bool, offset: Vector3 = Vector3.ZERO, scale: Vector3 = Vector3.ONE): - effect.cast_particle(resource, is_attach, offset, scale) +func cast_particle(resource: Resource, is_attach: bool, offset: Vector3 = Vector3.ZERO, effect_scale: Vector3 = Vector3.ONE): + effect.cast_particle(resource, is_attach, offset, effect_scale) func get_character_owner() -> Character: - var owner: Character = Global.character_mgr.get_character(status.owner_id) as Character - if owner: return owner + var character_owner: Character = Global.character_mgr.get_character(status.owner_id) as Character + if character_owner: return character_owner return self diff --git a/script/character/move.gd b/script/character/move.gd index 9fd153d..6d6e21f 100644 --- a/script/character/move.gd +++ b/script/character/move.gd @@ -128,8 +128,9 @@ func update_move_check(delta) -> bool: normal = normal.normalized() var normal_speed: float = velocity.dot(normal) if status.is_stagger: - if normal_speed < -6 and normal.y >= 0: + if normal_speed < -6 and normal.y >= 0 and not buff.has_buff("hit_ground_cd"): #墙体互动 + buff.add_buff("hit_ground_cd", 0.1) Global.effect_mgr.cast_particle(ResourceManager.particle_hit_ground_heavy, character.pos(), normal) var velocity_new: Vector3 = velocity - normal * normal_speed * 2 var attack_dir: Vector2 = Vector2(velocity_new.x, velocity_new.z).normalized() diff --git a/script/character/skill.gd b/script/character/skill.gd index 2d4443e..5c6f5be 100644 --- a/script/character/skill.gd +++ b/script/character/skill.gd @@ -143,8 +143,6 @@ func cast_skill(cfg: SkillCfg, cast_dir: Vector2, action_key: String = ""): if cfg.is_charging: buff.add_buff("charging", -1) if cast_dir.x != 0: status.is_right = cast_dir.x > 0 - if cfg.with_stop: - move.stop() #预警特效 match cfg.warn_type: Enum.ESkillWarnType.Normal: character.cast_particle(ResourceManager.particle_warn_normal, true) @@ -229,7 +227,7 @@ func _frame_back(frame_offset: int) -> void: var frame: int = int(current_animation_position / Setting.animation_frame_rate) - frame_offset frame = max(0, frame) var frame_pos: float = frame * Setting.animation_frame_rate - seek(frame_pos- Setting.animation_frame_rate / 5, true, true) + seek(frame_pos + 0.01, true, true) func on_cast_sub_character() -> void: diff --git a/script/config/character_cfg.gd b/script/config/character_cfg.gd index 03bb9aa..d270ab2 100644 --- a/script/config/character_cfg.gd +++ b/script/config/character_cfg.gd @@ -32,16 +32,16 @@ class_name CharacterCfg var core_cfg_list: Array[CoreCfg] -func get_attack1()->AttackCfg: return attack1 if attack1 else ResourceManager.cfg_attack_normal +func get_attack1()->AttackCfg: return attack1 -func get_attack1_box()->AttackBoxCfg: return attack1_box if attack1_box else ResourceManager.cfg_attack_box_normal +func get_attack1_box()->AttackBoxCfg: return attack1_box -func get_attack2()->AttackCfg: return attack2 if attack2 else ResourceManager.cfg_attack_normal +func get_attack2()->AttackCfg: return attack2 -func get_attack2_box()->AttackBoxCfg: return attack2_box if attack2_box else ResourceManager.cfg_attack_box_normal +func get_attack2_box()->AttackBoxCfg: return attack2_box func get_particle()->Resource: diff --git a/script/config/skill_cfg.gd b/script/config/skill_cfg.gd index 62d6840..36ea99a 100644 --- a/script/config/skill_cfg.gd +++ b/script/config/skill_cfg.gd @@ -24,7 +24,6 @@ var refresh_animation: Callable = check_animation @export var mp_sub_cost: bool @export var free_lock: bool @export var ignore_push: bool -@export var with_stop: bool = false @export var is_lock_x: bool = true @export var is_lock_x_move: bool = false @export_group("辅助参数") @@ -58,16 +57,16 @@ func check_animation() -> bool: return true -func get_attack1()->AttackCfg: return attack1 if attack1 else ResourceManager.cfg_attack_normal +func get_attack1()->AttackCfg: return attack1 -func get_attack1_box()->AttackBoxCfg: return attack1_box if attack1_box else ResourceManager.cfg_attack_box_normal +func get_attack1_box()->AttackBoxCfg: return attack1_box -func get_attack2()->AttackCfg: return attack2 if attack2 else ResourceManager.cfg_attack_normal +func get_attack2()->AttackCfg: return attack2 -func get_attack2_box()->AttackBoxCfg: return attack2_box if attack2_box else ResourceManager.cfg_attack_box_normal +func get_attack2_box()->AttackBoxCfg: return attack2_box func get_attack_particle(index: int)->Resource: diff --git a/script/effect/effect_base.gd b/script/effect/effect_base.gd index cee4988..0771141 100644 --- a/script/effect/effect_base.gd +++ b/script/effect/effect_base.gd @@ -9,8 +9,14 @@ var rate: float func _ready(): - lifetime_now = lifetime on_ready() + for child in get_children(): + if child is EffectBase: + if child.lifetime > lifetime: + lifetime = child.lifetime + else: + continue + lifetime_now = lifetime func _process(delta) -> void: @@ -27,7 +33,12 @@ func _process(delta) -> void: func set_pause(is_pause_set: bool): is_pause = is_pause_set - on_set_pause(is_pause_set) + for child in get_children(): + if child is EffectBase: + child.set_pause(is_pause) + else: + continue + on_set_pause() func on_ready(): pass @@ -36,4 +47,4 @@ func on_ready(): pass func on_process(delta: float): pass -func on_set_pause(is_pause_set: bool): pass +func on_set_pause(): pass diff --git a/script/effect/particle.gd b/script/effect/particle.gd index a90031f..9657767 100644 --- a/script/effect/particle.gd +++ b/script/effect/particle.gd @@ -4,46 +4,25 @@ class_name Particle @export var is_billboard: bool @export var is_ground: bool -var sub_particle_list: Array[Particle] = [] -var particle_list: Array[GPUParticles3D] = [] -var speed_scale_list: Array[float] = [] -var decal_list: Array[ParticleDecal] = [] -var sub_emitter_list: Array[ParticleSubEmitter] = [] +var particle_list: Array[GPUParticles3D] = [] +var particle_speed_scale_list: Array[float] = [] func on_ready(): for child in get_children(): - if child is Particle: - sub_particle_list.append(child) - elif child is GPUParticles3D: + if child is GPUParticles3D: var particle: GPUParticles3D = child as GPUParticles3D particle_list.append(particle) - speed_scale_list.append(particle.speed_scale) + particle_speed_scale_list.append(particle.speed_scale) particle.restart() - elif child is ParticleDecal: - child.on_ready() - decal_list.append(child) - elif child is ParticleSubEmitter: - sub_emitter_list.append(child) else: continue - if child.lifetime > lifetime_now: - lifetime_now = child.lifetime + if child.lifetime > lifetime: + lifetime = child.lifetime - for particle: GPUParticles3D in particle_list: - if particle.lifetime > lifetime_now: - lifetime_now = particle.lifetime - -func on_process(delta: float): - for decal: ParticleDecal in decal_list: - decal.on_process(delta) - - -func on_set_pause(is_pause_set: bool): +func on_set_pause(): for i in range(len(particle_list)): var particle: GPUParticles3D = particle_list[i] - var speed_scale: float = speed_scale_list[i] + var speed_scale: float = particle_speed_scale_list[i] particle.speed_scale = 0 if is_pause else speed_scale - for sub_particle: Particle in sub_particle_list: - sub_particle.set_pause(is_pause_set) diff --git a/script/ui/hud/weapon_item.gd b/script/ui/hud/weapon_item.gd index a19dc8e..93ce96e 100644 --- a/script/ui/hud/weapon_item.gd +++ b/script/ui/hud/weapon_item.gd @@ -9,41 +9,32 @@ var weapon_list: Array var weapon_index: int var weapon_index_dir: int var weapon_index_rate: float -var hide_duration: float func _process(delta) -> void: - if not visible: - return if weapon_index_dir: item_lerp(weapon_index_dir, weapon_index_rate) - hide_duration = Setting.weapon_hide_duration return item_lerp(weapon_index_dir, 1) - hide_duration -= delta - if hide_duration <= 0: - for item in weapon_item_list: - remove_child(item) - weapon_item_list.clear() - visible = false -func on_weapon_list_changed(list: Array): weapon_list = list +func on_weapon_list_changed(list: Array): + weapon_list = list + init_weapon_item() -func on_weapon_index_changed(index: int): weapon_index = index +func on_weapon_index_changed(index: int): + weapon_index = index -func on_weapon_index_change_rate_changed(rate: float): weapon_index_rate = rate +func on_weapon_index_change_rate_changed(rate: float): + weapon_index_rate = rate func on_weapon_index_change_dir_changed(dir: int) -> void: weapon_index_dir = dir if not weapon_index_dir: return - if not visible: - visible = true - for i in range(5): append() else: if dir > 0: push_back() @@ -51,7 +42,6 @@ func on_weapon_index_change_dir_changed(dir: int) -> void: else: push_front() pop_back() - hide_duration = Setting.weapon_hide_duration func append(): weapon_item_list.append(create_weapon_item(len(weapon_item_list)-2+weapon_index_dir)) @@ -68,6 +58,11 @@ func pop_front(): remove_child(weapon_item_list.pop_front()) func pop_back(): remove_child(weapon_item_list.pop_back()) +func init_weapon_item(): + for item in weapon_item_list: + remove_child(item) + weapon_item_list.clear() + for i in range(5): append() func create_weapon_item(offset: int)->WeaponItemSub: var weapon_count: int = len(weapon_list)