master
chendian 2 years ago
parent f2da71a003
commit 7ad8f6ee3c

@ -1,20 +1,22 @@
[gd_resource type="Resource" script_class="CharacterCfg" load_steps=6 format=3 uid="uid://bjvrih37ni5nx"]
[gd_resource type="Resource" script_class="CharacterCfg" load_steps=7 format=3 uid="uid://bjvrih37ni5nx"]
[ext_resource type="Script" path="res://script/config/character_cfg.gd" id="1_2054l"]
[ext_resource type="Resource" uid="uid://dx54fjf5t0uu8" path="res://config/character_move/normal.tres" id="1_ebj0w"]
[ext_resource type="SpriteFrames" uid="uid://cwe8setoi6bd" path="res://resource/animation/character/hero01_move.aseprite" id="2_cssb0"]
[ext_resource type="Resource" uid="uid://815to6lq2qfs" path="res://config/character_mp/player.tres" id="2_wo8op"]
[ext_resource type="Resource" uid="uid://dlaekoamystx3" path="res://config/character_shield/normal.tres" id="3_5l0vx"]
[ext_resource type="Resource" uid="uid://cac6mk6g078vn" path="res://config/character_stun/normal.tres" id="5_kn3ip"]
[ext_resource type="Resource" uid="uid://cac6mk6g078vn" path="res://config/character_stun/normal.tres" id="6_i7bnp"]
[resource]
script = ExtResource("1_2054l")
name = "hero01"
type = 0
type = null
sprite_frames = ExtResource("2_cssb0")
sprite_harf_height = 26
sprite_width = 16
move = ExtResource("1_ebj0w")
shield = ExtResource("3_5l0vx")
stun = ExtResource("5_kn3ip")
stun = ExtResource("6_i7bnp")
mp = ExtResource("2_wo8op")
hp_max = 100.0
attack = 10.0

@ -1,10 +1,11 @@
[gd_resource type="Resource" script_class="CharacterCfg" load_steps=6 format=3 uid="uid://b1gf2jimihmc7"]
[gd_resource type="Resource" script_class="CharacterCfg" load_steps=7 format=3 uid="uid://b1gf2jimihmc7"]
[ext_resource type="Script" path="res://script/config/character_cfg.gd" id="1_4orbu"]
[ext_resource type="Resource" uid="uid://dx54fjf5t0uu8" path="res://config/character_move/normal.tres" id="1_b0lkj"]
[ext_resource type="Resource" uid="uid://dpajmgrlaytah" path="res://config/character_mp/normal.tres" id="2_pl54c"]
[ext_resource type="SpriteFrames" uid="uid://dkljs5h8gj5l" path="res://resource/animation/character/monster01_move.aseprite" id="2_su3hg"]
[ext_resource type="Resource" uid="uid://dlaekoamystx3" path="res://config/character_shield/normal.tres" id="3_3nfrx"]
[ext_resource type="Resource" uid="uid://cac6mk6g078vn" path="res://config/character_stun/normal.tres" id="5_7nk8h"]
[ext_resource type="Resource" uid="uid://cac6mk6g078vn" path="res://config/character_stun/normal.tres" id="6_25uqm"]
[resource]
script = ExtResource("1_4orbu")
@ -15,6 +16,7 @@ sprite_harf_height = 10
sprite_width = 16
move = ExtResource("1_b0lkj")
shield = ExtResource("3_3nfrx")
stun = ExtResource("5_7nk8h")
stun = ExtResource("6_25uqm")
mp = ExtResource("2_pl54c")
hp_max = 200.0
attack = 10.0

@ -1,10 +1,11 @@
[gd_resource type="Resource" script_class="CharacterCfg" load_steps=6 format=3 uid="uid://dmfh54jffhx28"]
[gd_resource type="Resource" script_class="CharacterCfg" load_steps=7 format=3 uid="uid://dmfh54jffhx28"]
[ext_resource type="Resource" uid="uid://dx54fjf5t0uu8" path="res://config/character_move/normal.tres" id="1_hjl2t"]
[ext_resource type="Script" path="res://script/config/character_cfg.gd" id="1_wkjce"]
[ext_resource type="Resource" uid="uid://dpajmgrlaytah" path="res://config/character_mp/normal.tres" id="2_gly3h"]
[ext_resource type="SpriteFrames" uid="uid://crdd52skym3ir" path="res://resource/animation/character/monster02_move.aseprite" id="2_h60bf"]
[ext_resource type="Resource" uid="uid://dlaekoamystx3" path="res://config/character_shield/normal.tres" id="3_5w356"]
[ext_resource type="Resource" uid="uid://cac6mk6g078vn" path="res://config/character_stun/normal.tres" id="5_gyhft"]
[ext_resource type="Resource" uid="uid://cac6mk6g078vn" path="res://config/character_stun/normal.tres" id="6_vlmkd"]
[resource]
script = ExtResource("1_wkjce")
@ -15,6 +16,7 @@ sprite_harf_height = 26
sprite_width = 16
move = ExtResource("1_hjl2t")
shield = ExtResource("3_5w356")
stun = ExtResource("5_gyhft")
stun = ExtResource("6_vlmkd")
mp = ExtResource("2_gly3h")
hp_max = 100.0
attack = 10.0

@ -0,0 +1,12 @@
[gd_resource type="Resource" script_class="MpCfg" load_steps=2 format=3 uid="uid://dpajmgrlaytah"]
[ext_resource type="Script" path="res://script/config/mp_cfg.gd" id="1_sfq22"]
[resource]
script = ExtResource("1_sfq22")
mp_max = 5
mp_sub_max = 100.0
recover_speed = 10.0
recover_cd = 2.0
add_rate_attack = 1.0
add_rate_hit = 1.0

@ -0,0 +1,12 @@
[gd_resource type="Resource" script_class="MpCfg" load_steps=2 format=3 uid="uid://815to6lq2qfs"]
[ext_resource type="Script" path="res://script/config/mp_cfg.gd" id="1_1adyr"]
[resource]
script = ExtResource("1_1adyr")
mp_max = 5
mp_sub_max = 100.0
recover_speed = -10.0
recover_cd = 2.0
add_rate_attack = 1.0
add_rate_hit = 1.0

@ -67,9 +67,56 @@ anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -32.0
offset_left = 40.0
offset_top = 8.0
offset_right = 104.0
offset_bottom = 24.0
grow_horizontal = 2
grow_vertical = 2
scale = Vector2(1, 0.439999)
value = 50.0
stretch_margin_left = 10
stretch_margin_top = 10
stretch_margin_right = 10
stretch_margin_bottom = 10
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="."]
unique_name_in_owner = true
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = 40.0
offset_top = 24.0
offset_right = 104.0
offset_bottom = 40.0
grow_horizontal = 2
grow_vertical = 2
scale = Vector2(1, 0.439999)
value = 50.0
stretch_margin_left = 10
stretch_margin_top = 10
stretch_margin_right = 10
stretch_margin_bottom = 10
texture_under = ExtResource("2_g5t31")
texture_progress = ExtResource("3_vh1p5")
[node name="MpBar" type="TextureProgressBar" parent="."]
unique_name_in_owner = true
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = 40.0
offset_top = 16.0
offset_right = 32.0
offset_right = 104.0
offset_bottom = 32.0
grow_horizontal = 2
grow_vertical = 2
@ -81,4 +128,4 @@ stretch_margin_right = 10
stretch_margin_bottom = 10
texture_under = ExtResource("2_g5t31")
texture_progress = ExtResource("3_vh1p5")
tint_progress = Color(0, 1, 1, 1)
tint_progress = Color(0.0941176, 1, 0.992157, 1)

@ -6,7 +6,6 @@ func execute(character: Character, target: Character) -> int:
if dist < 1:
character.move_stop()
else:
print(dir)
character.move_to(dir)
return RUNNING
return SUCCESS

@ -112,6 +112,10 @@ func settle(hit_info:HitInfo):
character_to.remove_buff("stun_recover")
character_to.add_buff("stun_recover_cd",cfg_to.stun.recover_cd)
#mp累加
character_from.add_mp(damage * cfg_from.mp.add_rate_attack)
character_to.add_mp(damage * cfg_to.mp.add_rate_hit)
#硬直等级
var break_level_def = cfg_to.shield.break_level_on if has_shield else cfg_to.shield.break_level_off
var break_level_sub = clampi(attack.break_level - break_level_def,0,3)
@ -171,4 +175,19 @@ func settle(hit_info:HitInfo):
elif is_break_stun:character_to.show_hit_text("Stun")
elif not is_break_skill:character_to.show_hit_text("Block")
func add_mp(value:float):
var mp = character.get_status("mp")
var mp_max = character.get_status("mp_max")
var mp_sub = character.get_status("mp_sub")
var mp_sub_max = character.get_status("mp_sub_max")
value = min(mp_sub_max-mp_sub,value)
if value == mp_sub_max-mp_sub:
var mp_add = min(mp_max-mp,1)
if mp_add > 0:
character.set_status("mp",mp+mp_add)
character.set_status("mp_sub",0)
else:
character.set_status("mp_sub",mp_sub+value)
character.remove_buff("mp_recover")
character.add_buff("mp_recover_cd",status.cfg.mp.recover_cd)

@ -94,6 +94,21 @@ func on_update_shield_recover(rate):
remove_buff("shield_recover")
character.set_status("shield",status.shield+shield_add)
func on_end_mp_recover_cd(rate):add_buff("mp_recover",-1)
func on_update_mp_recover(rate):
var mp_add = get_process_delta_time() * status.cfg.mp.recover_speed
if mp_add == 0:
remove_buff("mp_recover")
elif mp_add > 0:
mp_add = min(status.mp_max - status.mp,mp_add)
if mp_add == status.mp_max - status.mp:
remove_buff("mp_recover")
elif mp_add < 0:
mp_add = max(status.mp + mp_add,0)
if mp_add == 0:
remove_buff("mp_recover")
character.set_status("mp_sub",status.mp+mp_add)
func on_end_stun_recover_break_cd(rate):add_buff("stun_recover_break",-1)
func on_update_stun_recover_break(rate):
var stun_sub = get_process_delta_time() * status.cfg.stun.recover_break_speed

@ -33,6 +33,10 @@ func init_after():
set_status("shield_max",cfg.shield.shield_max)
set_status("stun",0)
set_status("stun_max",cfg.stun.stun_max)
set_status("mp",0)
set_status("mp_max",cfg.mp.mp_max)
set_status("mp_sub",0)
set_status("mp_sub_max",cfg.mp.mp_sub_max)
func set_material(material:ShaderMaterial):
view.material_override = material
@ -61,3 +65,4 @@ func set_view_trigger(trigger_name:String):status.set("trigger_%s"%trigger_name,
func add_attack(from:int,dir:Vector2,attack:AttackCfg):battle.add_attack(from,dir,attack)
func show_hit_text(value:String):SignalManager.character_hit_text.emit(id(),value)
func show_hit_damage(value:float):SignalManager.character_hit_damage.emit(id(),value)
func add_mp(value:float):battle.add_mp(value)

@ -16,6 +16,10 @@ class_name Status
@export var shield_max : float #护盾最大值
@export var stun : float #当前眩晕值
@export var stun_max : float #眩晕值最大值
@export var mp : int #mp最大值
@export var mp_max : int #mp最大值
@export var mp_sub : float #次级mp
@export var mp_sub_max : float #次级mp最大值
@export var is_dead : bool #是否死亡
@export var target : int #目标角色

@ -15,6 +15,7 @@ class_name CharacterCfg
@export var move : CharacterMoveCfg
@export var shield : ShieldCfg
@export var stun : StunCfg
@export var mp : MpCfg
#战斗信息
@export var hp_max : float

@ -0,0 +1,10 @@
extends Resource
class_name MpCfg
@export var mp_max : int = 5 #mp最大值
@export var mp_sub_max : float = 100 #次级mp最大值
@export var recover_speed : float = 10 #次级mp恢复速度
@export var recover_cd : float = 2 #次级mp恢复延迟
@export var add_rate_attack : float = 1 #次级mp攻击时增加系数
@export var add_rate_hit : float = 1 #次级mp受击时增加系数

@ -3,24 +3,30 @@ class_name Headbar
@onready var hit_text_scene = preload("res://scene/ui/item/hit_text.tscn")
@onready var hpbar = (%HpBar as TextureProgressBar)
@onready var shieldbar = (%ShieldBar as TextureProgressBar)
@onready var stunbar = (%StunBar as TextureProgressBar)
@onready var hp_bar = (%HpBar as TextureProgressBar)
@onready var shield_bar = (%ShieldBar as TextureProgressBar)
@onready var stun_bar = (%StunBar as TextureProgressBar)
@onready var mp_bar = (%MpBar as TextureProgressBar)
@onready var mp_sub_bar = (%MpSubBar as TextureProgressBar)
var hit_text_damage_cache : HitText
func on_hp_changed(value):hpbar.value = value
func on_hp_max_changed(value):hpbar.max_value = value
func on_shield_changed(value):shieldbar.value = value
func on_shield_max_changed(value):shieldbar.max_value = value
func on_stun_changed(value):stunbar.value = value
func on_stun_max_changed(value):stunbar.max_value = value
func on_hp_changed(value):hp_bar.value = value
func on_hp_max_changed(value):hp_bar.max_value = value
func on_shield_changed(value):shield_bar.value = value
func on_shield_max_changed(value):shield_bar.max_value = value
func on_stun_changed(value):stun_bar.value = value
func on_stun_max_changed(value):stun_bar.max_value = value
func on_mp_changed(value):mp_bar.value = value
func on_mp_max_changed(value):mp_bar.max_value = value
func on_mp_sub_changed(value):mp_sub_bar.value = value
func on_mp_sub_max_changed(value):mp_sub_bar.max_value = value
func on_hit_text(value:String):
var hit_text = get_hit_text_object()
hit_text.show_hit_text(value)
func on_hit_danage(value:float):
func on_hit_damage(value:float):
var hit_text = hit_text_damage_cache
if not hit_text or hit_text.is_close:
hit_text_damage_cache = get_hit_text_object()

@ -73,7 +73,7 @@ func on_character_hit_damage(id:int,value:float):
return
var headbar_meta = headbar_map[id]
var headbar = headbar_meta.headbar as Headbar
headbar.on_hit_danage(value)
headbar.on_hit_damage(value)
func on_character_die(id:int):
if not id in headbar_map:

Loading…
Cancel
Save