From ff96123068534b3a39c3ffd6a146c2736687f6c4 Mon Sep 17 00:00:00 2001 From: chendian <-> Date: Mon, 9 Sep 2024 18:00:48 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A1=AC=E7=9B=B4=E7=AD=89=E7=BA=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/attack/blunt_starfall_2.tres | 2 +- config/attack_box/box_large.tres | 4 +- config/attack_box/box_mid.tres | 4 +- config/attack_box/box_normal.tres | 4 +- config/attack_box/box_small.tres | 4 +- config/attack_box/circle_foot.tres | 13 +++++ config/attack_box/circle_large.tres | 13 +++++ config/attack_box/circle_mid.tres | 4 +- config/attack_box/circle_normal.tres | 3 +- config/character_mp/normal.tres | 2 +- config/skill_core/monster03_slash01.tres | 4 +- config/skill_core/monster03_slash02.tres | 6 +-- config/skill_core/monster03_slash03.tres | 4 +- .../hero01_fist_air_attack02.tres | 6 ++- .../hero01_fist_air_skill01.tres | 4 +- .../hero01_fist_attack01.tres | 6 ++- .../hero01_fist_attack03.tres | 6 ++- .../hero01_fist_attack04.tres | 4 +- .../hero01_fist_attack05.tres | 6 ++- .../hero01_fist_skill01.tres | 6 ++- .../hero01_long_attack04.tres | 6 ++- .../hero01_long_skill01.tres | 6 ++- .../animation/character/hero01_move.aseprite | Bin 39021 -> 36105 bytes resource/animation/character/hero01_move.png | Bin 12880 -> 19536 bytes .../skill_animation/monster03_slash02.tres | 4 +- resource/ui/hud/break_level.png | Bin 0 -> 245 bytes resource/ui/hud/break_level.png.import | 34 ++++++++++++ scene/ai/bullet01.tscn | 2 +- scene/ai/monster01.tscn | 2 +- scene/ai/monster03.tscn | 2 +- scene/launcher.tscn | 11 ++-- scene/ui/item/headbar.tscn | 49 +++++++++++------- script/character/battle.gd | 24 ++++++--- script/character/buff.gd | 2 +- script/character/character.gd | 6 ++- script/character/skill.gd | 3 ++ script/character/status.gd | 21 +++++++- script/ui/hud/headbar.gd | 11 ++++ script/ui/hud/headbar_page.gd | 7 +-- 39 files changed, 214 insertions(+), 81 deletions(-) create mode 100644 config/attack_box/circle_foot.tres create mode 100644 config/attack_box/circle_large.tres create mode 100644 resource/ui/hud/break_level.png create mode 100644 resource/ui/hud/break_level.png.import diff --git a/config/attack/blunt_starfall_2.tres b/config/attack/blunt_starfall_2.tres index 607571b..e09f675 100644 --- a/config/attack/blunt_starfall_2.tres +++ b/config/attack/blunt_starfall_2.tres @@ -5,7 +5,7 @@ [resource] script = ExtResource("1_gadv7") damage_rate = 1.0 -break_level = 2 +break_level = 1 stun_attack = 10.0 damage_type = 1 is_floating = true diff --git a/config/attack_box/box_large.tres b/config/attack_box/box_large.tres index dc09f6e..056a25b 100644 --- a/config/attack_box/box_large.tres +++ b/config/attack_box/box_large.tres @@ -3,10 +3,10 @@ [ext_resource type="Script" path="res://script/config/attack_box_cfg.gd" id="1_661yg"] [sub_resource type="BoxShape3D" id="BoxShape3D_87jhu"] -size = Vector3(2, 2, 2) +size = Vector3(2, 0.8, 1) [resource] script = ExtResource("1_661yg") shape = SubResource("BoxShape3D_87jhu") -offset = Vector2(1, 1) +offset = Vector2(1, 0.4) is_throw = false diff --git a/config/attack_box/box_mid.tres b/config/attack_box/box_mid.tres index 2346ee7..ed0e352 100644 --- a/config/attack_box/box_mid.tres +++ b/config/attack_box/box_mid.tres @@ -3,10 +3,10 @@ [ext_resource type="Script" path="res://script/config/attack_box_cfg.gd" id="1_hxvsy"] [sub_resource type="BoxShape3D" id="BoxShape3D_87jhu"] -size = Vector3(1.6, 1.2, 1.2) +size = Vector3(1.6, 0.8, 0.8) [resource] script = ExtResource("1_hxvsy") shape = SubResource("BoxShape3D_87jhu") -offset = Vector2(0.8, 0.6) +offset = Vector2(0.8, 0.4) is_throw = false diff --git a/config/attack_box/box_normal.tres b/config/attack_box/box_normal.tres index 1085de0..3e5f506 100644 --- a/config/attack_box/box_normal.tres +++ b/config/attack_box/box_normal.tres @@ -3,10 +3,10 @@ [ext_resource type="Script" path="res://script/config/attack_box_cfg.gd" id="1_d4mqn"] [sub_resource type="BoxShape3D" id="BoxShape3D_87jhu"] -size = Vector3(1.6, 1.2, 1.2) +size = Vector3(1.2, 0.8, 0.6) [resource] script = ExtResource("1_d4mqn") shape = SubResource("BoxShape3D_87jhu") -offset = Vector2(0.8, 0.6) +offset = Vector2(0.6, 0.4) is_throw = false diff --git a/config/attack_box/box_small.tres b/config/attack_box/box_small.tres index 03924b7..cc9de6f 100644 --- a/config/attack_box/box_small.tres +++ b/config/attack_box/box_small.tres @@ -3,10 +3,10 @@ [ext_resource type="Script" path="res://script/config/attack_box_cfg.gd" id="1_gmrbh"] [sub_resource type="BoxShape3D" id="BoxShape3D_87jhu"] -size = Vector3(1.2, 0.8, 1) +size = Vector3(0.8, 0.8, 0.4) [resource] script = ExtResource("1_gmrbh") shape = SubResource("BoxShape3D_87jhu") -offset = Vector2(0.6, 0.4) +offset = Vector2(0.4, 0.4) is_throw = false diff --git a/config/attack_box/circle_foot.tres b/config/attack_box/circle_foot.tres new file mode 100644 index 0000000..bef169a --- /dev/null +++ b/config/attack_box/circle_foot.tres @@ -0,0 +1,13 @@ +[gd_resource type="Resource" script_class="AttackBoxCfg" load_steps=3 format=3 uid="uid://dq3pnbyfx4irr"] + +[ext_resource type="Script" path="res://script/config/attack_box_cfg.gd" id="1_utw7p"] + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_pmh6g"] +height = 0.2 +radius = 0.25 + +[resource] +script = ExtResource("1_utw7p") +shape = SubResource("CylinderShape3D_pmh6g") +offset = Vector2(0, 0) +is_throw = false diff --git a/config/attack_box/circle_large.tres b/config/attack_box/circle_large.tres new file mode 100644 index 0000000..3401d9e --- /dev/null +++ b/config/attack_box/circle_large.tres @@ -0,0 +1,13 @@ +[gd_resource type="Resource" script_class="AttackBoxCfg" load_steps=3 format=3 uid="uid://hg1w2k1u3wn"] + +[ext_resource type="Script" path="res://script/config/attack_box_cfg.gd" id="1_aqwel"] + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_pmh6g"] +height = 0.8 +radius = 1.0 + +[resource] +script = ExtResource("1_aqwel") +shape = SubResource("CylinderShape3D_pmh6g") +offset = Vector2(0, 0) +is_throw = false diff --git a/config/attack_box/circle_mid.tres b/config/attack_box/circle_mid.tres index ba0b55d..4579679 100644 --- a/config/attack_box/circle_mid.tres +++ b/config/attack_box/circle_mid.tres @@ -3,8 +3,8 @@ [ext_resource type="Script" path="res://script/config/attack_box_cfg.gd" id="1_w2uwt"] [sub_resource type="CylinderShape3D" id="CylinderShape3D_pmh6g"] -height = 1.0 -radius = 1.5 +height = 0.8 +radius = 0.6 [resource] script = ExtResource("1_w2uwt") diff --git a/config/attack_box/circle_normal.tres b/config/attack_box/circle_normal.tres index aca3a10..6556652 100644 --- a/config/attack_box/circle_normal.tres +++ b/config/attack_box/circle_normal.tres @@ -3,7 +3,8 @@ [ext_resource type="Script" path="res://script/config/attack_box_cfg.gd" id="1_8rhve"] [sub_resource type="CylinderShape3D" id="CylinderShape3D_pmh6g"] -height = 1.0 +height = 0.8 +radius = 0.25 [resource] script = ExtResource("1_8rhve") diff --git a/config/character_mp/normal.tres b/config/character_mp/normal.tres index 22db85a..b410078 100644 --- a/config/character_mp/normal.tres +++ b/config/character_mp/normal.tres @@ -6,7 +6,7 @@ script = ExtResource("1_sfq22") mp_max = 5 mp_sub_max = 100.0 -recover_speed = 50.0 +recover_speed = 20.0 recover_cd = 1.0 add_rate_attack = 0.0 add_rate_hit = 2.0 diff --git a/config/skill_core/monster03_slash01.tres b/config/skill_core/monster03_slash01.tres index 00fd3d7..7dac4bd 100644 --- a/config/skill_core/monster03_slash01.tres +++ b/config/skill_core/monster03_slash01.tres @@ -1,7 +1,7 @@ [gd_resource type="Resource" script_class="SkillCfg" load_steps=6 format=3 uid="uid://b62nw6qww2qxq"] [ext_resource type="Resource" uid="uid://bv4uoey1liqoq" path="res://config/attack/sharp_heavy_hit_blow.tres" id="1_idhfy"] -[ext_resource type="Resource" uid="uid://bnfnjdw0tms3h" path="res://config/attack_box/box_large.tres" id="2_k02dw"] +[ext_resource type="Resource" uid="uid://diedb7vw7eyxp" path="res://config/attack_box/box_mid.tres" id="2_rmdjw"] [ext_resource type="Script" path="res://script/config/skill_cfg.gd" id="3_qlpem"] [ext_resource type="Animation" uid="uid://dyyt3nsvoye62" path="res://resource/skill_animation/monster03_slash01.tres" id="4_xr54j"] [ext_resource type="SpriteFrames" uid="uid://bac4ype7w4wr7" path="res://resource/animation/character/monster03_skill.aseprite" id="5_30t6c"] @@ -14,7 +14,7 @@ range = 1.0 free_lock = false ignore_push = false attack1 = ExtResource("1_idhfy") -attack1_box = ExtResource("2_k02dw") +attack1_box = ExtResource("2_rmdjw") stance_from = 100 stance_to = 0 break_level = 3 diff --git a/config/skill_core/monster03_slash02.tres b/config/skill_core/monster03_slash02.tres index c17e443..a8447c5 100644 --- a/config/skill_core/monster03_slash02.tres +++ b/config/skill_core/monster03_slash02.tres @@ -2,7 +2,7 @@ [ext_resource type="Resource" uid="uid://btg40rn2f36c2" path="res://config/attack/sharp_normal_hit_back.tres" id="1_sp2tj"] [ext_resource type="Resource" uid="uid://bv4uoey1liqoq" path="res://config/attack/sharp_heavy_hit_blow.tres" id="1_txo8b"] -[ext_resource type="Resource" uid="uid://bnfnjdw0tms3h" path="res://config/attack_box/box_large.tres" id="2_8iiyr"] +[ext_resource type="Resource" uid="uid://bqejjllfy03h3" path="res://config/attack_box/box_normal.tres" id="2_6lahv"] [ext_resource type="Resource" uid="uid://diedb7vw7eyxp" path="res://config/attack_box/box_mid.tres" id="2_tp3t7"] [ext_resource type="Script" path="res://script/config/skill_cfg.gd" id="3_oagn5"] [ext_resource type="SpriteFrames" uid="uid://bac4ype7w4wr7" path="res://resource/animation/character/monster03_skill.aseprite" id="5_jfqys"] @@ -16,9 +16,9 @@ range = 2.0 free_lock = false ignore_push = true attack1 = ExtResource("1_sp2tj") -attack1_box = ExtResource("2_tp3t7") +attack1_box = ExtResource("2_6lahv") attack2 = ExtResource("1_txo8b") -attack2_box = ExtResource("2_8iiyr") +attack2_box = ExtResource("2_tp3t7") stance_from = 100 stance_to = 0 break_level = 3 diff --git a/config/skill_core/monster03_slash03.tres b/config/skill_core/monster03_slash03.tres index 7c5f078..a754ba6 100644 --- a/config/skill_core/monster03_slash03.tres +++ b/config/skill_core/monster03_slash03.tres @@ -1,7 +1,7 @@ [gd_resource type="Resource" script_class="SkillCfg" load_steps=6 format=3 uid="uid://1hson47yrtgq"] [ext_resource type="Resource" uid="uid://qmivx7ntfrki" path="res://config/attack/sharp_mid_hit.tres" id="1_iexxu"] -[ext_resource type="Resource" uid="uid://bnfnjdw0tms3h" path="res://config/attack_box/box_large.tres" id="2_p4b1w"] +[ext_resource type="Resource" uid="uid://hg1w2k1u3wn" path="res://config/attack_box/circle_large.tres" id="2_r82bc"] [ext_resource type="Script" path="res://script/config/skill_cfg.gd" id="3_n02wr"] [ext_resource type="Animation" uid="uid://co8bivpp1fm6g" path="res://resource/skill_animation/monster03_slash03.tres" id="4_cip05"] [ext_resource type="SpriteFrames" uid="uid://bac4ype7w4wr7" path="res://resource/animation/character/monster03_skill.aseprite" id="5_0ny0c"] @@ -14,7 +14,7 @@ range = 4.0 free_lock = false ignore_push = false attack1 = ExtResource("1_iexxu") -attack1_box = ExtResource("2_p4b1w") +attack1_box = ExtResource("2_r82bc") stance_from = 100 stance_to = 0 break_level = 3 diff --git a/config/skill_player_weapon/hero01_fist_air_attack02.tres b/config/skill_player_weapon/hero01_fist_air_attack02.tres index c011f86..00a6711 100644 --- a/config/skill_player_weapon/hero01_fist_air_attack02.tres +++ b/config/skill_player_weapon/hero01_fist_air_attack02.tres @@ -1,7 +1,7 @@ [gd_resource type="Resource" script_class="SkillWeaponCfg" load_steps=7 format=3 uid="uid://d1q7buaerirow"] [ext_resource type="Resource" uid="uid://dib6g7t6p5ac2" path="res://config/attack/blunt_normal_hit.tres" id="1_cut8n"] -[ext_resource type="Resource" uid="uid://bqejjllfy03h3" path="res://config/attack_box/box_normal.tres" id="2_bgip4"] +[ext_resource type="Resource" uid="uid://dja8jwx16njmf" path="res://config/attack_box/box_small.tres" id="2_8enki"] [ext_resource type="Script" path="res://script/config/skill_weapon_cfg.gd" id="3_agxba"] [ext_resource type="Animation" uid="uid://dia1xwl6foafg" path="res://resource/skill_animation/hero01_fist_air_attack02.tres" id="4_jbb00"] [ext_resource type="SpriteFrames" uid="uid://bhsotj76tuovy" path="res://resource/animation/character/hero01_fist_attack.aseprite" id="5_byipk"] @@ -17,10 +17,12 @@ range = 0.0 free_lock = false ignore_push = false attack1 = ExtResource("1_cut8n") -attack1_box = ExtResource("2_bgip4") +attack1_box = ExtResource("2_8enki") stance_from = 11 stance_to = 12 break_level = 3 +is_charging = false +mp_cost = 0 refresh_animation = false sprite_frames = ExtResource("5_byipk") animation_name = "fist_air_attack02" diff --git a/config/skill_player_weapon/hero01_fist_air_skill01.tres b/config/skill_player_weapon/hero01_fist_air_skill01.tres index e651b4c..4f7a477 100644 --- a/config/skill_player_weapon/hero01_fist_air_skill01.tres +++ b/config/skill_player_weapon/hero01_fist_air_skill01.tres @@ -1,7 +1,7 @@ [gd_resource type="Resource" script_class="SkillWeaponCfg" load_steps=8 format=3 uid="uid://dkxgra6y2u30l"] [ext_resource type="Resource" uid="uid://by6jd5xqjml2m" path="res://config/attack/blunt_starfall_1.tres" id="1_dfu42"] -[ext_resource type="Resource" uid="uid://57sukcw6ewqo" path="res://config/attack_box/circle_normal.tres" id="2_cvjvy"] +[ext_resource type="Resource" uid="uid://dq3pnbyfx4irr" path="res://config/attack_box/circle_foot.tres" id="2_doldq"] [ext_resource type="Script" path="res://script/config/skill_weapon_cfg.gd" id="2_mje6b"] [ext_resource type="Resource" uid="uid://d26ok8as50xe5" path="res://config/attack/blunt_starfall_2.tres" id="3_m2yio"] [ext_resource type="Animation" uid="uid://dxgqn5fa7aokj" path="res://resource/skill_animation/hero01_fist_air_skill01.tres" id="3_q461t"] @@ -18,7 +18,7 @@ range = 0.0 free_lock = false ignore_push = true attack1 = ExtResource("1_dfu42") -attack1_box = ExtResource("2_cvjvy") +attack1_box = ExtResource("2_doldq") attack2 = ExtResource("3_m2yio") attack2_box = ExtResource("4_lpsn0") stance_from = 10 diff --git a/config/skill_player_weapon/hero01_fist_attack01.tres b/config/skill_player_weapon/hero01_fist_attack01.tres index 847f885..ee93c8b 100644 --- a/config/skill_player_weapon/hero01_fist_attack01.tres +++ b/config/skill_player_weapon/hero01_fist_attack01.tres @@ -1,7 +1,7 @@ [gd_resource type="Resource" script_class="SkillWeaponCfg" load_steps=7 format=3 uid="uid://7e4fnj5sg72s"] [ext_resource type="Resource" uid="uid://dib6g7t6p5ac2" path="res://config/attack/blunt_normal_hit.tres" id="1_k0cmy"] -[ext_resource type="Resource" uid="uid://bqejjllfy03h3" path="res://config/attack_box/box_normal.tres" id="2_ixt4v"] +[ext_resource type="Resource" uid="uid://dja8jwx16njmf" path="res://config/attack_box/box_small.tres" id="2_erxj5"] [ext_resource type="Script" path="res://script/config/skill_weapon_cfg.gd" id="2_yc8jq"] [ext_resource type="Animation" uid="uid://t01a4jvp8srr" path="res://resource/skill_animation/hero01_fist_attack01.tres" id="3_b2pdb"] [ext_resource type="SpriteFrames" uid="uid://bhsotj76tuovy" path="res://resource/animation/character/hero01_fist_attack.aseprite" id="4_ymqrn"] @@ -17,10 +17,12 @@ range = 0.0 free_lock = false ignore_push = false attack1 = ExtResource("1_k0cmy") -attack1_box = ExtResource("2_ixt4v") +attack1_box = ExtResource("2_erxj5") stance_from = 0 stance_to = 1 break_level = 3 +is_charging = false +mp_cost = 0 refresh_animation = false sprite_frames = ExtResource("4_ymqrn") animation_name = "fist_attack01" diff --git a/config/skill_player_weapon/hero01_fist_attack03.tres b/config/skill_player_weapon/hero01_fist_attack03.tres index 7a80892..e462a1e 100644 --- a/config/skill_player_weapon/hero01_fist_attack03.tres +++ b/config/skill_player_weapon/hero01_fist_attack03.tres @@ -1,8 +1,8 @@ [gd_resource type="Resource" script_class="SkillWeaponCfg" load_steps=7 format=3 uid="uid://dekpkk8o6o8hk"] [ext_resource type="Resource" uid="uid://duu05cr8gk5v4" path="res://config/attack/blunt_mid_hit_blow.tres" id="1_am4eq"] +[ext_resource type="Resource" uid="uid://bqejjllfy03h3" path="res://config/attack_box/box_normal.tres" id="2_7j3rd"] [ext_resource type="Script" path="res://script/config/skill_weapon_cfg.gd" id="2_fde7v"] -[ext_resource type="Resource" uid="uid://diedb7vw7eyxp" path="res://config/attack_box/box_mid.tres" id="2_ja1d4"] [ext_resource type="Animation" uid="uid://c6mk8tfdpniys" path="res://resource/skill_animation/hero01_fist_attack03.tres" id="3_6rajt"] [ext_resource type="SpriteFrames" uid="uid://bhsotj76tuovy" path="res://resource/animation/character/hero01_fist_attack.aseprite" id="4_orcy6"] [ext_resource type="Resource" uid="uid://c6alg8pmqfdxm" path="res://config/weapon/fist.tres" id="5_r5lmk"] @@ -17,10 +17,12 @@ range = 0.0 free_lock = false ignore_push = false attack1 = ExtResource("1_am4eq") -attack1_box = ExtResource("2_ja1d4") +attack1_box = ExtResource("2_7j3rd") stance_from = 2 stance_to = 3 break_level = 3 +is_charging = false +mp_cost = 0 refresh_animation = false sprite_frames = ExtResource("4_orcy6") animation_name = "fist_attack03" diff --git a/config/skill_player_weapon/hero01_fist_attack04.tres b/config/skill_player_weapon/hero01_fist_attack04.tres index c069056..252cfbc 100644 --- a/config/skill_player_weapon/hero01_fist_attack04.tres +++ b/config/skill_player_weapon/hero01_fist_attack04.tres @@ -1,8 +1,8 @@ [gd_resource type="Resource" script_class="SkillWeaponCfg" load_steps=6 format=3 uid="uid://b4aysymwqtvtd"] [ext_resource type="Resource" uid="uid://duu05cr8gk5v4" path="res://config/attack/blunt_mid_hit_blow.tres" id="1_s12sc"] +[ext_resource type="Resource" uid="uid://bqejjllfy03h3" path="res://config/attack_box/box_normal.tres" id="2_ldfkh"] [ext_resource type="Script" path="res://script/config/skill_weapon_cfg.gd" id="2_mhuew"] -[ext_resource type="Resource" uid="uid://diedb7vw7eyxp" path="res://config/attack_box/box_mid.tres" id="2_ur730"] [ext_resource type="Animation" uid="uid://6u3dhxly760l" path="res://resource/skill_animation/hero01_fist_attack04.tres" id="3_bst70"] [ext_resource type="Resource" uid="uid://c6alg8pmqfdxm" path="res://config/weapon/fist.tres" id="5_gn3tt"] @@ -16,7 +16,7 @@ range = 0.0 free_lock = false ignore_push = false attack1 = ExtResource("1_s12sc") -attack1_box = ExtResource("2_ur730") +attack1_box = ExtResource("2_ldfkh") stance_from = 3 stance_to = 4 break_level = 3 diff --git a/config/skill_player_weapon/hero01_fist_attack05.tres b/config/skill_player_weapon/hero01_fist_attack05.tres index 484d677..b490dde 100644 --- a/config/skill_player_weapon/hero01_fist_attack05.tres +++ b/config/skill_player_weapon/hero01_fist_attack05.tres @@ -1,7 +1,7 @@ [gd_resource type="Resource" script_class="SkillWeaponCfg" load_steps=7 format=3 uid="uid://0n2jnkdrwa2l"] [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://diedb7vw7eyxp" path="res://config/attack_box/box_mid.tres" id="2_xua7v"] +[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="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"] @@ -17,10 +17,12 @@ range = 0.0 free_lock = false ignore_push = false attack1 = ExtResource("1_5lwhl") -attack1_box = ExtResource("2_xua7v") +attack1_box = ExtResource("2_g7bbg") stance_from = 4 stance_to = 5 break_level = 3 +is_charging = false +mp_cost = 0 refresh_animation = false sprite_frames = ExtResource("4_mhr07") animation_name = "fist_attack05" diff --git a/config/skill_player_weapon/hero01_fist_skill01.tres b/config/skill_player_weapon/hero01_fist_skill01.tres index 16fb88e..4b008ea 100644 --- a/config/skill_player_weapon/hero01_fist_skill01.tres +++ b/config/skill_player_weapon/hero01_fist_skill01.tres @@ -1,7 +1,7 @@ [gd_resource type="Resource" script_class="SkillWeaponCfg" load_steps=7 format=3 uid="uid://bw582o3eyj6b5"] [ext_resource type="Resource" uid="uid://fjjpp1wuesoq" path="res://config/attack/blunt_throw_check_hit.tres" id="1_8bqc0"] -[ext_resource type="Resource" uid="uid://bqejjllfy03h3" path="res://config/attack_box/box_normal.tres" id="2_owe8i"] +[ext_resource type="Resource" uid="uid://dja8jwx16njmf" path="res://config/attack_box/box_small.tres" id="2_gikwn"] [ext_resource type="Script" path="res://script/config/skill_weapon_cfg.gd" id="3_0nei0"] [ext_resource type="Animation" uid="uid://cj0lnanjp7xfo" path="res://resource/skill_animation/hero01_fist_skill01.tres" id="4_mq2ab"] [ext_resource type="SpriteFrames" uid="uid://cajgs8smbkjan" path="res://resource/animation/character/hero01_fist_skill01.aseprite" id="5_34tga"] @@ -17,10 +17,12 @@ range = 0.0 free_lock = false ignore_push = false attack1 = ExtResource("1_8bqc0") -attack1_box = ExtResource("2_owe8i") +attack1_box = ExtResource("2_gikwn") stance_from = 1 stance_to = 99 break_level = 3 +is_charging = false +mp_cost = 0 refresh_animation = false sprite_frames = ExtResource("5_34tga") animation_name = "" diff --git a/config/skill_player_weapon/hero01_long_attack04.tres b/config/skill_player_weapon/hero01_long_attack04.tres index e93936d..cc590c1 100644 --- a/config/skill_player_weapon/hero01_long_attack04.tres +++ b/config/skill_player_weapon/hero01_long_attack04.tres @@ -3,7 +3,7 @@ [ext_resource type="Resource" uid="uid://bv4uoey1liqoq" path="res://config/attack/sharp_heavy_hit_blow.tres" id="1_8ipjq"] [ext_resource type="Resource" uid="uid://c87w2x5qfqdns" path="res://config/attack/blunt_normal_hit_back.tres" id="1_44ai1"] [ext_resource type="Script" path="res://script/config/skill_weapon_cfg.gd" id="1_xsxbs"] -[ext_resource type="Resource" uid="uid://bqejjllfy03h3" path="res://config/attack_box/box_normal.tres" id="2_5jvmg"] +[ext_resource type="Resource" uid="uid://dja8jwx16njmf" path="res://config/attack_box/box_small.tres" id="2_bjopd"] [ext_resource type="Animation" uid="uid://dk1o3gqhjmuvh" path="res://resource/skill_animation/hero01_long_attack04.tres" id="2_sam6s"] [ext_resource type="SpriteFrames" uid="uid://ce83cuqwgwwi4" path="res://resource/animation/character/hero01_long_attack.aseprite" id="3_w7h1m"] [ext_resource type="Resource" uid="uid://bnfnjdw0tms3h" path="res://config/attack_box/box_large.tres" id="4_7j0pm"] @@ -19,12 +19,14 @@ range = 0.0 free_lock = false ignore_push = false attack1 = ExtResource("1_44ai1") -attack1_box = ExtResource("2_5jvmg") +attack1_box = ExtResource("2_bjopd") attack2 = ExtResource("1_8ipjq") attack2_box = ExtResource("4_7j0pm") stance_from = 3 stance_to = 4 break_level = 3 +is_charging = false +mp_cost = 0 refresh_animation = false sprite_frames = ExtResource("3_w7h1m") animation_name = "long_attack04" diff --git a/config/skill_player_weapon/hero01_long_skill01.tres b/config/skill_player_weapon/hero01_long_skill01.tres index 57ce363..5cb1f28 100644 --- a/config/skill_player_weapon/hero01_long_skill01.tres +++ b/config/skill_player_weapon/hero01_long_skill01.tres @@ -3,7 +3,7 @@ [ext_resource type="Resource" uid="uid://2bkub7vmxjeu" path="res://config/attack/sharp_mid_hit_blow.tres" id="1_blbi2"] [ext_resource type="Script" path="res://script/config/skill_weapon_cfg.gd" id="1_ud5ph"] [ext_resource type="Animation" uid="uid://bjnkrte7660pt" path="res://resource/skill_animation/hero01_long_skill01.tres" id="2_ewts2"] -[ext_resource type="Resource" uid="uid://decgfcx2xsj8i" path="res://config/attack_box/circle_mid.tres" id="2_uxcyk"] +[ext_resource type="Resource" uid="uid://hg1w2k1u3wn" path="res://config/attack_box/circle_large.tres" id="2_fayd5"] [ext_resource type="SpriteFrames" uid="uid://dhfqj1dxldqao" path="res://resource/animation/character/hero01_long_skill01.aseprite" id="3_qwjfl"] [ext_resource type="Resource" uid="uid://cy3wwalxeyro0" path="res://config/weapon/long.tres" id="4_3bf64"] @@ -17,10 +17,12 @@ range = 0.0 free_lock = false ignore_push = false attack1 = ExtResource("1_blbi2") -attack1_box = ExtResource("2_uxcyk") +attack1_box = ExtResource("2_fayd5") stance_from = 1 stance_to = 2 break_level = 3 +is_charging = false +mp_cost = 0 refresh_animation = false sprite_frames = ExtResource("3_qwjfl") animation_name = "long_skill01" diff --git a/resource/animation/character/hero01_move.aseprite b/resource/animation/character/hero01_move.aseprite index 8d4ea90eac9dec5938b9cad35a556c5922cff06d..4d1a42e5c8cec9db49aceac41420107781ad22ea 100644 GIT binary patch delta 178 zcmaF6fvIyA6BB3eMy3KzM&`}MoL+*wtV|3Hzdo`uq%bfruui@xD7~3c<}M?n^<+j7 z_056S!c0uvOp_nTs%>7Nl+47`3uaFa=w{m-qZZG^XbD!vtR=|Alm?NCbrIWaC-RGN za-6;%Qw2n8f|xSXBx7Bsbcm7z1#Fu)O7H-MxF+|TDKi>@4FOp@`Ld-hQwBs+ptVda E0OUn9%K!iX delta 3172 zcmeH}`#%$m9>-_eFx%XX%*bbC?YZpCVsj_wmr6O$WS&RkXrso00eUEEfybmXwQO(=I+T(U!=!-%c zC7kjn$Ql{gC`nAaNMxL?_#`a+02CUZ+re9Q*g>9Vi{x}u(n=CTI8gPGKig7 z0?v^mszCGxF!p_4gkexEXZXrQ%-5a1-CuJpc&wB!La9UK@yc3`hQiE(V26%;uG2S6 zqJi%%2j-Ni0uaU(2LP65B>|zLR7p}E%c+s9)q?7oDi^00r0Eoj`^5zo3=bUm%5Jtho_97Au%V?fYph465_6MKsF zcy${c2>KE{yt&!w>OvnpNz1xa>)N`kyRYgz5g-Za@rQtc;`m6lXL+fb?#tZE{B&;% zTbUx~92=vnMO1n=26NdU%034yUNL#omk&Ix9+dt$r`h4X$$2eM9icpFsoqA$VinHb z(#zk%a`X0_f>s%3BYvp3b!>-=!ZQ$xOmUJU=QjSER2{ z=A4_kiU-x*$&;8EHA8rq0nGqOZ$>~mo(5|bYDI{8*D`9h=-=+BaenhD;I*w7NdHw`5Kc9`R zp|XsH_>0;tug{{DcD@aOLEv_bU0dwR$Tt!?Mo#7`bAIz**VpJVl3sXo5Fs;MIqK}5 z!NB&z*xVxfWdl}g;QHYW@^IrfCghbT>VeV-)dqfEzx39?D9IDGrVcYp3$|ah;H#)f zk;|ywd#|KWb{(nAYRxbp(C??rqRLyN_w0To5f7fGb!|?n$V--?u0Lnx;b`6J{B>T< z7n$OSr=4fiFN7TXA+k7p=>j2EGXiTGJlYvfJbJeV(QTYZ80ENGwIo4l%ycm*xkOs- z<5UU$$xM|nI>LQ|loOVwM$38HSa!LvSgSzPeW82G-!koV3cm(;q{@`SH3ItWHx>Bj*T+^#rML;GKc6X0N^)x9j>pUclv5`ARop z&hu#&0J##*0&E6Z!48FlR6dCJlNj^wtPk3Ef{n&~@$Khm`-o`=!r*;^@S?HCu?c~d zG9OP{10rH9&}058<6>8;>i#SxF(iyhDiNDH7TIF-1Z#c(q%& z!ljQV(HBka#3ugua|csTQ5Hx+>q=7c^mJjDeqnYg1xZ>H**19*GSQPA8pqYUdh~om zMMDl+l4B}#-QRB_Rdn0RDabmM4afCY{R9TTCqtDjFg~+H*zYHOCG#31bM{d6k&-FA zqM3x%3QaE<94_7`yuZi5*OKyXVdxz}MFX8Ci zglQ`df;}4DZ(ohGBs?grjzRpUHDd>RHb^Aq>lcdO zzXxhfj6c4IgO~DTiph)C@6K9NP5-e_m zG?_y&Iul{~I6h4as^0y&H&g5r=MmTGIDW3b2ixQ#7eQM;nL-iIM|Fp`YLl+FShikl za9}YS96oVWGhfOFfI)<~_l=Et5PUQRc2bSX5qpMHbH>bUZ`W3K6tG{tu4hec!ak6o zV9Z|6wNv@Ao&bd?WWdRHwT<8nkqRSS%!GY->wAvNglB{a9qB%b^7Ig9`N%zh$ACtz zaL^6niM66`V+oGtv-_4g6@m)1WUCTuu1|Kjqn3XE> v-`PPZ1Y>QW$Iqhs|G@j3fd>J?3Vw;&-wOL*pL$r*|90vH8T?064;k=Ja+_V$ diff --git a/resource/animation/character/hero01_move.png b/resource/animation/character/hero01_move.png index 8f867f1e8827e4f8c0ecd03c913562c5b5df96c9..6f6a1712c946a13673530550918b20942405374f 100644 GIT binary patch literal 19536 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 twK|A1h>{6Q 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 M07*qoM6N<$f~}lmssI20 literal 12880 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�M{nTstCw&zTA=j)uOh8?zD%!7V08YRPGbJ&U` zQyr=-7i98p4OHLxO%ESB5!(=YwG1_3uk@jbr?4($Yo;V5wi_!nd!U1AojdG`wMw#; za)14l_SlZD<|&;qDC_26#F9xBVdqua*JA9f_;dgxf2GV%$p(HM_e~?M6k&6URtFFV zpg!5TRiEcwHv8!zrIrDTkA=soOok%4Q%`FeYNdhcp3wOs`d63mMOach#;H=AAQi@n zNvF|1?%ZLi+mQCz#NSNqp@bd}!pM!fvgvgkGOjS6rN}ua+JD_Lt3q2<;7?upQ0_H? zEP!}$%rEa7gjBg1>V^N$AqbTiwSSQ}6`=>%46_sa{nm#i(QZ`)E737E=2E(CRkI~f zeDVRi>TE!OQsc-3X;q1&KaimI55@qw5cKQX1>q;-e}x2F*jK)B~dn zFY)E}Svq}biykWO26CVJ`)7f^0^Dl?UL?xiF^e*mN!^QV?~%7GksDJ=?tRJJ17Jl@ z2qKFak^VNqTkIHj+#9ySoDqY2wj$Tjbm}Ssx(o3rUr)HBnCMO7ezu1hiW~$tWy~%K z1yXPP10v)`8dIOUf!wi(JxvG>l3%2sxyCoot*CqtjCm6)oh5rnVfMsE*y%p`SZ+(n zF2v6{7!U3DT`LAeitKx*h^5Sz^teP`D+||Jz?kd$1qEQorn>s)3KI|0OQFj zSGPQpDV-o<^{+fVJNGx^uEE4!PG`CYIn%=s>>5 zfsEGl?!&OeiiL}gaUnNw>fkomNs|nP6JYNtDyG^KDI-LFl|%#N%K>rIAB>u=9AesW z;n8v-6f?5a(#uZ6Np$MTrD+ruP~Zca+TMtIBIOc%$$MwC&s2-~bDXvb)fnDhIXG{d z(u!FT@OaAGn1csu7Xx1y93*pr>7I}9w?rSFidp#6A&q+*k<8n56(%$hhTfkxzG$b< zvc}^_uu9(rkSc+!&%dQ=8hTM9TMuHH$#8g~Dj#%ioj7)mMt$S3?a`qZQX39{ytR5R z1Ui2^C1jXse;OG|2Mx&DZ$dB2&}=#>I0or~Gt&zfA;&^0Qz{YKSlUUQJrb|XiQqFJ zr}9GhhlD5+;pR;|!60UX9d!UPITNzFDW*D}OB**a8CSxZ2pjJpB60LWK9+1s?~5&! z-LPa!V939nO6Kn)1@1Y4J3v}p+X3A~Ckq&T0$+T<5A>kdAo&jWmy2y#?eQ>-6&6bF z;TcBLrEOgwENnlK7V17xq*E^9sjcZZ$zA^ zVKe}vbY5uxOUAt#+zX1r>`_HFUYKjypY}ky>@Gj6ZLbtuIP?o_$@)2_*5C_lih{H| zcOOS!rXfw9HEb_(V#A$x9OI2!wGyaB{76}ynwFKLUM_dVZ_}=KHwi`jJ(63S!a zZINj1hov@3qUVNzxm#ffq(o6>^L4t9#L0xU*{lyjMhv=t%Lc$rIxdO+c-&VL^*b`T z`#N;}o%7?y$Zlf#PnS@^K=v8S7Zo-@u<6kA1hOkjXwFLoBaB?MZ;!+e%o})*$t`4~ zCv3bHMYjgX3rI+*U+*v~sC#B&m^;_s{L8{>;{4UR?HW@t5P=jbt^_MCCR3kC(NwHg z1Cv~Ov`|pA zp|7Mv{FO+33P@b3u1mc#^`vsk;rQf>qR-_wy oc-u2(vk|)q#|Wgn`3_ZFcMG4oZq@~SMFb=vA}d@WsPFs#07F@6dH?_b diff --git a/resource/skill_animation/monster03_slash02.tres b/resource/skill_animation/monster03_slash02.tres index 1351df5..e894d47 100644 --- a/resource/skill_animation/monster03_slash02.tres +++ b/resource/skill_animation/monster03_slash02.tres @@ -52,7 +52,7 @@ tracks/3/keys = { "times": PackedFloat32Array(0.1, 0.8, 1.1, 1.3, 1.6, 1.8), "transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1), "update": 1, -"values": [-0.5, -1.0, -0.5, -1.0, -0.5, -1.0] +"values": [-0.5, -1.0, -0.8, -1.0, -0.8, -1.0] } tracks/4/type = "value" tracks/4/imported = false @@ -64,7 +64,7 @@ tracks/4/keys = { "times": PackedFloat32Array(0.7, 0.9, 1.2, 1.4, 1.7, 1.9), "transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1), "update": 1, -"values": [3.0, 0.0, 2.0, 0.0, 3.0, 0.0] +"values": [1.0, 0.0, 2.0, 0.0, 3.0, 0.0] } tracks/5/type = "method" tracks/5/imported = false diff --git a/resource/ui/hud/break_level.png b/resource/ui/hud/break_level.png new file mode 100644 index 0000000000000000000000000000000000000000..d748b70549f0fe4eff8ba1ea411bca288c1459eb GIT binary patch literal 245 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|)_b}*hIn*7 zow}Fzkbyw!e)aP%C)uXt9FPe)a}Y>7obfUziQEk@6)|tC9@+LboEI--B s^lAI5dGc%}PZ#{lWanPsIFZS&{!4XU@ynZ6flg=eboFyt=akR{06afq!~g&Q literal 0 HcmV?d00001 diff --git a/resource/ui/hud/break_level.png.import b/resource/ui/hud/break_level.png.import new file mode 100644 index 0000000..6a5f752 --- /dev/null +++ b/resource/ui/hud/break_level.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dqqd56qoquts7" +path="res://.godot/imported/break_level.png-6c1bb817b614823045841c5fbd1a01d4.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resource/ui/hud/break_level.png" +dest_files=["res://.godot/imported/break_level.png-6c1bb817b614823045841c5fbd1a01d4.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=0 +compress/normal_map=2 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=false +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/scene/ai/bullet01.tscn b/scene/ai/bullet01.tscn index ab85eee..7091e83 100644 --- a/scene/ai/bullet01.tscn +++ b/scene/ai/bullet01.tscn @@ -14,7 +14,7 @@ [node name="BeehaveTree" type="Node" node_paths=PackedStringArray("blackboard")] script = ExtResource("1_r673b") -blackboard = NodePath("@Node@76945") +blackboard = NodePath("@Node@19487") [node name="SelectorComposite" type="Node" parent="."] script = ExtResource("2_5ltau") diff --git a/scene/ai/monster01.tscn b/scene/ai/monster01.tscn index 7eb4c19..e98c12f 100644 --- a/scene/ai/monster01.tscn +++ b/scene/ai/monster01.tscn @@ -7,7 +7,7 @@ [node name="BeehaveTree" type="Node" node_paths=PackedStringArray("blackboard")] script = ExtResource("1_bbyao") -blackboard = NodePath("@Node@77274") +blackboard = NodePath("@Node@19488") [node name="SequenceComposite" type="Node" parent="."] script = ExtResource("2_04nig") diff --git a/scene/ai/monster03.tscn b/scene/ai/monster03.tscn index 753816a..b9783af 100644 --- a/scene/ai/monster03.tscn +++ b/scene/ai/monster03.tscn @@ -11,7 +11,7 @@ [node name="BeehaveTree" type="Node" node_paths=PackedStringArray("blackboard")] script = ExtResource("1_tkdjh") -blackboard = NodePath("@Node@81414") +blackboard = NodePath("@Node@19489") [node name="SequenceComposite" type="Node" parent="."] script = ExtResource("2_mxprp") diff --git a/scene/launcher.tscn b/scene/launcher.tscn index bf7fd96..32cdfbf 100644 --- a/scene/launcher.tscn +++ b/scene/launcher.tscn @@ -19,7 +19,7 @@ [ext_resource type="Script" path="res://script/manager/ai_manager.gd" id="11_fm4d1"] [ext_resource type="Script" path="res://script/manager/input_manager.gd" id="12_vfqm4"] [ext_resource type="Script" path="res://script/character/status.gd" id="18_nr8sb"] -[ext_resource type="SpriteFrames" uid="uid://bac4ype7w4wr7" path="res://resource/animation/character/monster03_skill.aseprite" id="19_6w5yx"] +[ext_resource type="SpriteFrames" uid="uid://ce83cuqwgwwi4" path="res://resource/animation/character/hero01_long_attack.aseprite" id="20_0ashe"] [ext_resource type="SpriteFrames" uid="uid://2cb8lknel0ih" path="res://resource/animation/character/basic_move.aseprite" id="20_4ni1a"] [ext_resource type="AnimationLibrary" uid="uid://croik07a1qko5" path="res://resource/skill_animation_library/animation_library.tres" id="22_qyapv"] [ext_resource type="Script" path="res://script/character/skill.gd" id="23_783eu"] @@ -207,7 +207,7 @@ script = ExtResource("5_n3qhi") unique_name_in_owner = true script = ExtResource("18_nr8sb") speed_up_rate = -1.0 -skill_float_speed = 0.1 +skill_move_speed = 2.0 [node name="View" type="AnimatedSprite3D" parent="EditorTool/Character"] unique_name_in_owner = true @@ -219,13 +219,12 @@ pixel_size = 0.02 double_sided = false alpha_cut = 2 texture_filter = 0 -sprite_frames = ExtResource("19_6w5yx") -animation = &"skill02" -frame = 28 +sprite_frames = ExtResource("20_0ashe") +animation = &"long_attack01" [node name="Throw" type="AnimatedSprite3D" parent="EditorTool/Character"] unique_name_in_owner = true -transform = Transform3D(1, 0, 0, 0, 1, -1.50996e-07, 0, 1.50996e-07, 1, 0, 0, 0) +transform = Transform3D(1, 0, 0, 0, -1, 1.50996e-07, 0, -1.50996e-07, -1, 0, 0, 0) pixel_size = 0.02 sprite_frames = ExtResource("20_4ni1a") animation = &"idle_loop" diff --git a/scene/ui/item/headbar.tscn b/scene/ui/item/headbar.tscn index 4b72f9c..164aed1 100644 --- a/scene/ui/item/headbar.tscn +++ b/scene/ui/item/headbar.tscn @@ -1,8 +1,9 @@ -[gd_scene load_steps=4 format=3 uid="uid://dy0u26ba7dle"] +[gd_scene load_steps=5 format=3 uid="uid://dy0u26ba7dle"] [ext_resource type="Script" path="res://script/ui/hud/headbar.gd" id="1_k0rtd"] [ext_resource type="Texture2D" uid="uid://cwhu1ec03t3c8" path="res://resource/ui/hud/headbar_hp_empty.png" id="2_g5t31"] [ext_resource type="Texture2D" uid="uid://b4ly1exl0owck" path="res://resource/ui/hud/headbar_hp.png" id="3_vh1p5"] +[ext_resource type="Texture2D" uid="uid://dqqd56qoquts7" path="res://resource/ui/hud/break_level.png" id="4_wo8oo"] [node name="HeadBar" type="Control"] layout_mode = 3 @@ -55,7 +56,20 @@ texture_under = ExtResource("2_g5t31") texture_progress = ExtResource("3_vh1p5") tint_progress = Color(0, 1, 1, 1) -[node name="StunBar" type="TextureProgressBar" parent="."] +[node name="BreakLevel" type="Sprite2D" parent="."] +unique_name_in_owner = true +position = Vector2(-21, 0) +texture = ExtResource("4_wo8oo") +hframes = 3 +vframes = 3 + +[node name="DebugInfo" type="Control" parent="."] +unique_name_in_owner = true +anchors_preset = 0 +offset_right = 40.0 +offset_bottom = 40.0 + +[node name="StunBar" type="TextureProgressBar" parent="DebugInfo"] unique_name_in_owner = true layout_mode = 1 anchors_preset = 8 @@ -63,10 +77,10 @@ anchor_left = 0.5 anchor_top = 0.5 anchor_right = 0.5 anchor_bottom = 0.5 -offset_left = 24.0 -offset_top = 8.0 -offset_right = 56.0 -offset_bottom = 12.0 +offset_left = 4.0 +offset_top = -12.0 +offset_right = 36.0 +offset_bottom = -8.0 grow_horizontal = 2 grow_vertical = 2 value = 50.0 @@ -78,7 +92,7 @@ texture_under = ExtResource("2_g5t31") texture_progress = ExtResource("3_vh1p5") tint_progress = Color(0.866667, 0.933333, 0.105882, 1) -[node name="MpSubBar" type="TextureProgressBar" parent="."] +[node name="MpSubBar" type="TextureProgressBar" parent="DebugInfo"] unique_name_in_owner = true layout_mode = 1 anchors_preset = 8 @@ -86,10 +100,9 @@ anchor_left = 0.5 anchor_top = 0.5 anchor_right = 0.5 anchor_bottom = 0.5 -offset_left = 24.0 -offset_top = 16.0 -offset_right = 56.0 -offset_bottom = 20.0 +offset_left = 4.0 +offset_top = -4.0 +offset_right = 36.0 grow_horizontal = 2 grow_vertical = 2 value = 50.0 @@ -100,7 +113,7 @@ stretch_margin_bottom = 10 texture_under = ExtResource("2_g5t31") texture_progress = ExtResource("3_vh1p5") -[node name="MpBar" type="TextureProgressBar" parent="."] +[node name="MpBar" type="TextureProgressBar" parent="DebugInfo"] unique_name_in_owner = true layout_mode = 1 anchors_preset = 8 @@ -108,10 +121,10 @@ anchor_left = 0.5 anchor_top = 0.5 anchor_right = 0.5 anchor_bottom = 0.5 -offset_left = 24.0 -offset_top = 12.0 -offset_right = 56.0 -offset_bottom = 16.0 +offset_left = 4.0 +offset_top = -8.0 +offset_right = 36.0 +offset_bottom = -4.0 grow_horizontal = 2 grow_vertical = 2 value = 50.0 @@ -123,7 +136,7 @@ texture_under = ExtResource("2_g5t31") texture_progress = ExtResource("3_vh1p5") tint_progress = Color(0.0941176, 1, 0.992157, 1) -[node name="PosLabel" type="Label" parent="."] +[node name="PosLabel" type="Label" parent="DebugInfo"] unique_name_in_owner = true layout_mode = 0 offset_left = 24.0 @@ -133,7 +146,7 @@ offset_bottom = 6.0 theme_override_font_sizes/font_size = 10 text = "123,123" -[node name="RoleLabel" type="Label" parent="."] +[node name="RoleLabel" type="Label" parent="DebugInfo"] unique_name_in_owner = true layout_mode = 0 offset_left = 24.0 diff --git a/script/character/battle.gd b/script/character/battle.gd index 008c6c4..e5b9af0 100644 --- a/script/character/battle.gd +++ b/script/character/battle.gd @@ -115,11 +115,23 @@ func add_attack(from: int, to: int, dir: Vector2, attack: AttackCfg) -> HitResul var pause_time: float = attack.pause_time var is_remote: bool = character_from != character_from.get_character_owner() - #造成伤害 + #基本伤害 var damage: float = attack.damage_rate * cfg_from.attack + + #硬直等级 + var break_level_def: int = cfg_to.shield.break_level_on if has_shield else cfg_to.shield.break_level_off + break_level_def += character_to.get_status("skill_break_level_add") + var break_level_sub: int = clampi(attack.break_level - break_level_def, 0, 3) + is_break_skill = break_level_sub > 0 + if break_level_sub < 0: + damage = 0 + elif break_level_sub == 0: + damage *= 0.5 + + #造成伤害 if has_shield: damage = min(shield, damage) - character_to.set_status("shield", shield-damage) + character_to.set_shield(shield-damage) is_break_shield = damage == shield if is_break_shield: character_to.remove_buff("shield_recover_cd") @@ -159,7 +171,7 @@ func add_attack(from: int, to: int, dir: Vector2, attack: AttackCfg) -> HitResul character_to.add_mp_sub(damage * cfg_to.mp.add_rate_hit, true) #投技检测 - if attack.is_throw_check and not character_to.get_status("is_be_throw") and status.throw_target == 0: + if is_break_skill and attack.is_throw_check and not character_to.get_status("is_be_throw") and status.throw_target == 0: character_to.set_status("is_be_throw", true) status.throw_target = character_to.id() @@ -168,10 +180,6 @@ func add_attack(from: int, to: int, dir: Vector2, attack: AttackCfg) -> HitResul character_to.set_status("is_be_throw", false) status.throw_target = 0 - #硬直等级 - var break_level_def: int = cfg_to.shield.break_level_on if has_shield else cfg_to.shield.break_level_off - var break_level_sub: int = clampi(attack.break_level - break_level_def, 0, 3) - is_break_skill = break_level_sub > 0 if is_break_skill: #取消技能 if character_to.get_status("is_skill_running"): @@ -317,7 +325,7 @@ func hold(): skill.on_hold() func stop(): move.stop() -func change_dir(): +func change_dir(): status.skill_dir = status.move_dir status.is_right = status.move_dir.x > 0 diff --git a/script/character/buff.gd b/script/character/buff.gd index 6741816..afabd82 100644 --- a/script/character/buff.gd +++ b/script/character/buff.gd @@ -139,7 +139,7 @@ func on_update_shield_recover(rate)->void: shield_add = min(status.shield_max - status.shield, shield_add) if shield_add == status.shield_max - status.shield: remove_buff("shield_recover") - character.set_status("shield", status.shield+shield_add) + character.set_shield( status.shield+shield_add) func on_end_mp_recover_cd(rate)->void: add_buff("mp_recover", -1) diff --git a/script/character/character.gd b/script/character/character.gd index 7d00c84..71a6da9 100644 --- a/script/character/character.gd +++ b/script/character/character.gd @@ -127,12 +127,16 @@ func get_status(status_name: String) -> Variant: return status.get_status(status func set_status(status_name: String, value): status.set_status(status_name, value) +func set_shield(value: float): + status.set_shield(value) + + func set_pos(pos: Vector3): position = pos SignalManager.character_pos_changed.emit(id(), pos()) -func move_to(dir: Vector2): set_status("move_dir", dir) +func move_to(dir: Vector2): set_status("move_dir", dir.normalized()) func move_stop(): diff --git a/script/character/skill.gd b/script/character/skill.gd index a841376..be48326 100644 --- a/script/character/skill.gd +++ b/script/character/skill.gd @@ -74,6 +74,7 @@ func cast_skill(cfg: SkillCfg, cast_dir: Vector2, action_key: String = "") -> bo status.stance = cfg.stance_to status.is_charging = cfg.is_charging status.skill_action_key = action_key + status.set_skill_break_level_add(cfg.mp_cost) #todo character.set_body_scale(cfg.get_owner()) if cfg.is_charging: buff.add_buff("charging", -1) @@ -98,6 +99,7 @@ func break_skill(): status.is_charging = false status.charging_level = 0 status.skill_action_key = "" + status.set_skill_break_level_add(0) buff.remove_buff("charging") if status.throw_target != 0: var character_to: Character = Global.character_mgr.get_character(status.throw_target) @@ -115,6 +117,7 @@ func cancel_skill(): func on_attack_miss(): # 攻击未命中时跳帧 _frame_forward() + status.set_skill_break_level_add(-1)#todo func on_hold() -> void: diff --git a/script/character/status.gd b/script/character/status.gd index ac01d10..08c94e7 100644 --- a/script/character/status.gd +++ b/script/character/status.gd @@ -23,6 +23,7 @@ class_name Status @export var is_dead: bool #是否死亡 @export var target: int #目标角色 @export var throw_target: int #投技目标 +@export var break_level_def: int #硬直抗性等级 @export_category("表现状态") @export var basic_offset: Vector3 #基本偏移值 @export var shake_offset: Vector3 #抖动偏移值 @@ -65,6 +66,7 @@ class_name Status @export var skill_move_stop: bool #技能位移速度是否停止生效 @export var skill_float_speed: float #技能y位移速度 @export var skill_action_key: String #技能输入指令 +@export var skill_break_level_add: int #技能额外打断等级 @export_category("玩家技能状态") @export var input_dir: Vector2 #指令方向 @export var stance: Enum.EStance #技能姿态 @@ -101,4 +103,21 @@ func set_status(status_name: String, value: Variant): func emit_status(status_name: String): SignalManager.character_status_changed.emit(id, status_name, get_status(status_name)) - + + +func set_shield(value: float): + shield = value + refresh_break_level_def() + emit_status("shield") + + +func set_skill_break_level_add(value: int): + skill_break_level_add = value + refresh_break_level_def() + emit_status("skill_break_level_add") + + +func refresh_break_level_def(): + break_level_def = cfg.shield.break_level_on if shield>0 else cfg.shield.break_level_off + break_level_def += skill_break_level_add + emit_status("break_level_def") diff --git a/script/ui/hud/headbar.gd b/script/ui/hud/headbar.gd index ecfd8d2..4bb67dd 100644 --- a/script/ui/hud/headbar.gd +++ b/script/ui/hud/headbar.gd @@ -4,12 +4,19 @@ class_name Headbar @onready var hit_text_scene: PackedScene = preload("res://scene/ui/item/hit_text.tscn") @onready var hp_bar: TextureProgressBar = (%HpBar as TextureProgressBar) @onready var shield_bar: TextureProgressBar = (%ShieldBar as TextureProgressBar) +@onready var break_level: Sprite2D = (%BreakLevel as Sprite2D) +#debug info @onready var stun_bar: TextureProgressBar = (%StunBar as TextureProgressBar) @onready var mp_bar: TextureProgressBar = (%MpBar as TextureProgressBar) @onready var mp_sub_bar: TextureProgressBar = (%MpSubBar as TextureProgressBar) @onready var pos_lable: Label = (%PosLabel as Label) @onready var role_lable: Label = (%RoleLabel as Label) + +func set_debug_info_show(is_show: bool) -> void: + var debug_info: Control = (%DebugInfo as Control) + debug_info.visible = is_show + var hit_text_damage_cache: HitText @@ -27,6 +34,10 @@ func on_shield_changed(value): func on_shield_max_changed(value): shield_bar.max_value = value +func on_break_level_def_changed(value): + break_level.frame = clamp(value + 4, 0, 8) + + func on_stun_changed(value): stun_bar.value = value diff --git a/script/ui/hud/headbar_page.gd b/script/ui/hud/headbar_page.gd index dd31c3b..c82fc54 100644 --- a/script/ui/hud/headbar_page.gd +++ b/script/ui/hud/headbar_page.gd @@ -30,11 +30,12 @@ func _process(delta): func on_character_create(id: int, type: int, pos: Vector3) -> void: if type != Enum.ECharacterType.Monster: return - var new_headbar_meta = HeadbarMeta.new() + var new_headbar_meta = HeadbarMeta.new() + var new_headbar: Headbar = headbar_scene.instantiate() as Headbar new_headbar_meta.pos = pos - var new_headbar = headbar_scene.instantiate() - add_child(new_headbar) new_headbar_meta.headbar = new_headbar + new_headbar.set_debug_info_show(get_tree().debug_collisions_hint) + add_child(new_headbar) on_character_ui_pos_changed(id, pos) headbar_map[id] = new_headbar_meta