From d1d7db670b09a507cb73f71f99d2ca22c96307a5 Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期二, 30 九月 2025 18:34:12 +0800
Subject: [PATCH] 125 战斗 1.治疗问题 2.死亡时受击不播放
---
Main/System/Battle/BattleObject/BattleObject.cs | 16 ++++++++++------
Main/System/Battle/Skill/SkillBase.cs | 8 +++++++-
2 files changed, 17 insertions(+), 7 deletions(-)
diff --git a/Main/System/Battle/BattleObject/BattleObject.cs b/Main/System/Battle/BattleObject/BattleObject.cs
index d3b7bdd..ba47e96 100644
--- a/Main/System/Battle/BattleObject/BattleObject.cs
+++ b/Main/System/Battle/BattleObject/BattleObject.cs
@@ -268,11 +268,11 @@
return true;
}
- public virtual void Hurt(List<long> damageValues, long _totalDamage, HB427_tagSCUseSkill.tagSCUseSkillHurt hurt, SkillConfig skillConfig)
+ public virtual void Hurt(List<long> damageValues, long _totalDamage, HB427_tagSCUseSkill.tagSCUseSkillHurt hurt, SkillConfig skillConfig, bool playAnimation = true)
{
BattleDmgInfo dmgInfo = PopDamage(damageValues, _totalDamage, hurt, skillConfig);
- if (dmgInfo.IsType(DamageType.Damage) || dmgInfo.IsRealdamage())
+ if ((dmgInfo.IsType(DamageType.Damage) || dmgInfo.IsRealdamage()) && playAnimation)
{
motionBase.PlayAnimation(MotionName.hit, false);
}
@@ -280,12 +280,12 @@
public void SuckHp(uint suckHP, SkillConfig skillConfig)
{
-
+ teamHero.curHp = Math.Min(teamHero.maxHp, teamHero.curHp + (int)suckHP);
}
public void HurtByReflect(uint bounceHP, SkillConfig skillConfig)
{
-
+ teamHero.curHp = Math.Max(0, teamHero.curHp - (int)bounceHP);
}
// 闂伩寮�濮�
@@ -360,8 +360,12 @@
currentHurtHp += (int)damageValues[i];
}
- heroInfoBar.UpdateHP(teamHero.curHp, Math.Max(0, teamHero.curHp - currentHurtHp), teamHero.maxHp);
- teamHero.curHp = Math.Max(0, teamHero.curHp - currentHurtHp);
+ bool isRecovery = battleDmgInfo.IsType(DamageType.Recovery);
+
+ long toHp = Math.Max(0, teamHero.curHp + (isRecovery ? currentHurtHp : -currentHurtHp));
+
+ heroInfoBar.UpdateHP(teamHero.curHp, toHp, teamHero.maxHp);
+ teamHero.curHp = toHp;
// YYL TODO 鏄惁闇�瑕佹寕鍦ㄥ湪鑷韩鐨刦ollow鐐逛笂
EventBroadcast.Instance.Broadcast(EventName.BATTLE_DAMAGE_TAKEN, battleDmgInfo);
diff --git a/Main/System/Battle/Skill/SkillBase.cs b/Main/System/Battle/Skill/SkillBase.cs
index 829b7e8..69899a7 100644
--- a/Main/System/Battle/Skill/SkillBase.cs
+++ b/Main/System/Battle/Skill/SkillBase.cs
@@ -441,6 +441,7 @@
{
// 浼ゅ鍒嗗竷 (涓囧垎姣�)
// Debug.LogError("skillConfig.DamageDivide.Count " + skillConfig.DamageDivide.Length + " _hitIndex " + _hitIndex);
+ bool isLastHit = _hitIndex >= skillConfig.DamageDivide.Length - 1;
int[] damageDivide = skillConfig.DamageDivide[_hitIndex];
long totalDamage = GeneralDefine.GetFactValue(hurt.HurtHP, hurt.HurtHPEx);
@@ -458,7 +459,12 @@
// TODO YYL AttackTypes 瑕佽〃鐜版垚浠�涔堟牱鍛紵 鏀寔澶氱绫诲瀷骞跺瓨锛屽鏃犺闃插尽涓旀毚鍑诲悓鏃惰鏍兼尅锛屼簩杩涘埗鎴栬繍绠楁渶缁堝�硷紱0-澶辫触锛�1-鏅�氾紱2-鍥炶锛�5-鏍兼尅锛�6-鏃犺闃插尽锛�7-鏆村嚮锛�9-闂伩
- target.Hurt(damageList, totalDamage, hurt, skillConfig);
+
+ List<HB422_tagMCTurnFightObjDead> deadPacks = BattleUtility.FindDeadPack(packList);
+ bool isTargetDead = deadPacks.Exists(p => p.ObjID == target.ObjID);
+
+ bool playAnimation = !(isLastHit && isTargetDead);
+ target.Hurt(damageList, totalDamage, hurt, skillConfig, playAnimation);
// TODO YYL 杩欓噷鏄鍋氱粺涓�璁$畻鍚庡啀hurt璺焥uckhp杩樻槸鎬庢牱
caster.SuckHp(hurt.SuckHP, skillConfig);// 鍚歌
--
Gitblit v1.8.0