|
|
|
|
@ -58,20 +58,24 @@ func settle(hit_info:HitInfo):
|
|
|
|
|
var cfg_from = character_from.cfg()
|
|
|
|
|
var cfg_to = character_to.cfg()
|
|
|
|
|
|
|
|
|
|
var is_stun = character_to.get_status("is_stun")
|
|
|
|
|
var hp = character_to.get_status("hp")
|
|
|
|
|
var shield = character_to.get_status("shield")
|
|
|
|
|
var has_shield = shield > 0
|
|
|
|
|
|
|
|
|
|
var attack = hit_info.attack
|
|
|
|
|
var is_floating = attack.is_floating or not character_to.get_status("is_on_floor")
|
|
|
|
|
var is_hit_down = attack.is_hit_down
|
|
|
|
|
var is_rebound = attack.is_rebound
|
|
|
|
|
|
|
|
|
|
var is_stun = character_to.get_status("is_stun")
|
|
|
|
|
var is_break_shield = false
|
|
|
|
|
var is_break_stun = false
|
|
|
|
|
var is_block = false
|
|
|
|
|
var is_kill = false
|
|
|
|
|
var is_break_skill = false
|
|
|
|
|
|
|
|
|
|
#造成伤害
|
|
|
|
|
var damage = attack.damage_rate * cfg_from.attack
|
|
|
|
|
var hp = character_to.get_status("hp")
|
|
|
|
|
var shield = character_to.get_status("shield")
|
|
|
|
|
var has_shield = shield > 0
|
|
|
|
|
if has_shield:
|
|
|
|
|
damage = min(shield,damage)
|
|
|
|
|
character_to.set_status("shield",shield-damage)
|
|
|
|
|
@ -79,6 +83,7 @@ func settle(hit_info:HitInfo):
|
|
|
|
|
if is_break_shield:
|
|
|
|
|
character_to.remove_buff("shield_recover_cd")
|
|
|
|
|
character_to.remove_buff("shield_recover")
|
|
|
|
|
has_shield = false
|
|
|
|
|
else:
|
|
|
|
|
character_to.remove_buff("shield_recover")
|
|
|
|
|
character_to.add_buff("shield_recover_cd",cfg_to.shield.recover_cd)
|
|
|
|
|
@ -86,6 +91,8 @@ func settle(hit_info:HitInfo):
|
|
|
|
|
damage = min(hp,damage)
|
|
|
|
|
character_to.set_status("hp",hp-damage)
|
|
|
|
|
is_kill = damage == hp
|
|
|
|
|
if is_kill:
|
|
|
|
|
character_to.add_buff("die",1)
|
|
|
|
|
|
|
|
|
|
#眩晕值累加
|
|
|
|
|
if not is_stun:
|
|
|
|
|
@ -96,6 +103,7 @@ func settle(hit_info:HitInfo):
|
|
|
|
|
character_to.set_status("stun",stun+stun_damage)
|
|
|
|
|
is_break_stun = stun_damage == stun_max-stun
|
|
|
|
|
if is_break_stun:
|
|
|
|
|
is_stun = true
|
|
|
|
|
character_to.set_status("is_stun",true)
|
|
|
|
|
character_to.remove_buff("stun_recover_cd")
|
|
|
|
|
character_to.remove_buff("stun_recover")
|
|
|
|
|
@ -104,16 +112,23 @@ func settle(hit_info:HitInfo):
|
|
|
|
|
character_to.remove_buff("stun_recover")
|
|
|
|
|
character_to.add_buff("stun_recover_cd",cfg_to.stun.recover_cd)
|
|
|
|
|
|
|
|
|
|
#硬直等级
|
|
|
|
|
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)
|
|
|
|
|
is_break_skill = break_level_sub > 0
|
|
|
|
|
if is_break_skill:
|
|
|
|
|
#取消技能
|
|
|
|
|
if character_to.get_status("is_skill_running"):
|
|
|
|
|
character_to.cancel_skill()
|
|
|
|
|
|
|
|
|
|
#受击动画
|
|
|
|
|
var trigger_hit = "hit"
|
|
|
|
|
var trigger_hit = ""
|
|
|
|
|
if is_rebound: trigger_hit="rebound"
|
|
|
|
|
elif is_floating: trigger_hit = "air_hit_down" if is_hit_down else "air_hit_up"
|
|
|
|
|
elif is_break_stun: trigger_hit="stun_hit"
|
|
|
|
|
elif is_stun: trigger_hit="stun_hit"
|
|
|
|
|
elif break_level_sub == 3: trigger_hit="lhit"
|
|
|
|
|
elif break_level_sub == 2: trigger_hit="mhit"
|
|
|
|
|
elif break_level_sub == 1: trigger_hit="hit"
|
|
|
|
|
character_to.set_view_trigger(trigger_hit)
|
|
|
|
|
|
|
|
|
|
#浮空 击落 强制位移
|
|
|
|
|
@ -147,6 +162,10 @@ func settle(hit_info:HitInfo):
|
|
|
|
|
|
|
|
|
|
#伤害跳字
|
|
|
|
|
character_to.show_hit_damage(damage)
|
|
|
|
|
|
|
|
|
|
#状态跳字
|
|
|
|
|
character_to.show_hit_text("Break")
|
|
|
|
|
if is_break_shield:character_to.show_hit_text("Break")
|
|
|
|
|
elif is_break_stun:character_to.show_hit_text("Stun")
|
|
|
|
|
elif not is_break_skill:character_to.show_hit_text("Block")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|