From 8d57a9bf9f4bef8e701e668dc5ee47905988b0df Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期五, 28 十一月 2025 15:14:53 +0800
Subject: [PATCH] 125 战斗 复活技能

---
 Main/System/Battle/BattleField/BattleField.cs                                                  |   21 ----------
 Main/Core/NetworkPackage/DTCFile/ServerPack/HB4_FightDefine/DTCB423_tagMCTurnFightObjReborn.cs |    1 
 Main/System/Battle/BattleConst.cs                                                              |   30 ++++++++++++++-
 Main/System/Battle/Skill/SkillFactory.cs                                                       |    3 +
 Main/System/Battle/StoryBossBattleWin.cs                                                       |    4 +-
 Main/System/Battle/BattleObject/BattleObject.cs                                                |    8 ++--
 Main/System/Battle/Motion/MotionBase.cs                                                        |   10 +++++
 Main/System/Battle/Skill/RebornSkill.cs                                                        |   14 +++++++
 Main/System/Battle/Define/BattleDmgInfo.cs                                                     |    7 +++
 9 files changed, 68 insertions(+), 30 deletions(-)

diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HB4_FightDefine/DTCB423_tagMCTurnFightObjReborn.cs b/Main/Core/NetworkPackage/DTCFile/ServerPack/HB4_FightDefine/DTCB423_tagMCTurnFightObjReborn.cs
index f5cfe3c..73c7cac 100644
--- a/Main/Core/NetworkPackage/DTCFile/ServerPack/HB4_FightDefine/DTCB423_tagMCTurnFightObjReborn.cs
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/HB4_FightDefine/DTCB423_tagMCTurnFightObjReborn.cs
@@ -11,6 +11,5 @@
 
         HB423_tagMCTurnFightObjReborn vNetData = vNetPack as HB423_tagMCTurnFightObjReborn;
         BattleField battleField = BattleManager.Instance.GetBattleField(vNetPack.packUID);
-        battleField?.OnObjReborn(vNetData);
     }
 }
diff --git a/Main/System/Battle/BattleConst.cs b/Main/System/Battle/BattleConst.cs
index 93e01e6..253ef47 100644
--- a/Main/System/Battle/BattleConst.cs
+++ b/Main/System/Battle/BattleConst.cs
@@ -1,9 +1,10 @@
-
 using System;
 using System.Collections.Generic;
 
 public static class BattleConst
 {
+    #region 鎴樻枟绐楀彛閰嶇疆
+    
     public static List<Type> BattleWindows = new List<Type>()
     {
         typeof(BattleWin),
@@ -29,13 +30,21 @@
         { "BoneBattleField", 3},
         { "TianziBillboradBattleField", 4 },
     };
+    
+    #endregion
 
+    #region 鎴樻枟鍩虹閰嶇疆
+    
     public const int BattleStartEffectID = 1001; // Example effect ID for battle start
 
     public const int skillMotionFps = 30;
 
     public const int BattlePointItemID = 3;//鎴橀敜ID
+    
+    #endregion
 
+    #region 鎴樻枟缁熻绫诲瀷
+    
     public const int BattleTotalDamageType = 100001; // 鎬讳激瀹崇被鍨婭D
 
     public const int BattleTotalRecoverType = 100002; // 鎬绘不鐤楃被鍨婭D
@@ -47,7 +56,11 @@
     public const int BattleChaseAttack = 100005; // 杩藉嚮
 
     public const int BattleStun = 100006; // 鍑绘檿
+    
+    #endregion
 
+    #region 鎴樻枟灞傜骇鎺掑簭
+    
     //  1000~10000涔嬮棿鐨勬垬鏂楀眰绾�
     //  闇�瑕佽�冭檻鏍规嵁UI 鐗规晥 鎴樻枟瑙掕壊涓夋柟鐨勫眰绾у叧绯�
     //  纭珛鍩烘湰鐨勫眰绾ц寖鍥� 鍚庡線涓婄疮鍔�
@@ -189,8 +202,11 @@
             return ActiveHeroActionSortingOrder + 1;
         }
     }
+    
+    #endregion
 
-
+    #region Buff闄愬埗缁�
+    
     public const int HardControlGroup = 1;
 
     public const int SoftControlGroup = 2;
@@ -211,4 +227,14 @@
     };
 
     public const int ShieldBuffAttackType = 1003;//鎶ょ浘鍚告敹浼ゅ绫诲瀷ID
+    
+    #endregion
+
+    #region 鐗规晥ID
+    
+    public const int BlockEffectID = 19999; // 鏍兼尅鐗规晥ID
+
+    public const int RebornEffectID = 20000;    // 澶嶆椿鐗规晥ID
+    
+    #endregion
 }
\ No newline at end of file
diff --git a/Main/System/Battle/BattleField/BattleField.cs b/Main/System/Battle/BattleField/BattleField.cs
index 122ef9e..983f2f6 100644
--- a/Main/System/Battle/BattleField/BattleField.cs
+++ b/Main/System/Battle/BattleField/BattleField.cs
@@ -561,27 +561,6 @@
         };
     }
 
-
-    public void OnObjReborn(HB423_tagMCTurnFightObjReborn vNetData)
-    {
-        // 澶勭悊澶嶆椿閫昏緫
-        BattleObject battleObj = battleObjMgr.GetBattleObject((int)vNetData.ObjID);
-        if (battleObj != null)
-        {
-            battleObj.OnReborn(vNetData);
-            
-            // 浠庢浜″鐞嗗垪琛ㄤ腑绉婚櫎璇ヨ鑹�
-            if (processingDeathObjIds.Remove(vNetData.ObjID))
-            {
-                Debug.Log($"OnObjReborn: 瑙掕壊澶嶆椿锛屼粠姝讳骸澶勭悊鍒楄〃绉婚櫎 ObjID={vNetData.ObjID}");
-            }
-        }
-        else
-        {
-            Debug.LogError($"BattleObject with ID {vNetData.ObjID} not found for reborn.");
-        }
-    }
-
     //鍚勪釜鎴樺満娌℃湁鍦烘櫙姒傚康锛屼笖鍙互鍏卞瓨锛屽悓鏃跺瓨鍦ㄦ垬鍦哄拰缁撶畻鐨勬儏鍐�
     //鍐呴儴缁撶畻闇�瑕佸鐞嗙殑閫昏緫锛屼笉鍚玌I
     protected virtual void OnSettlement(JsonData turnFightStateData)
diff --git a/Main/System/Battle/BattleObject/BattleObject.cs b/Main/System/Battle/BattleObject/BattleObject.cs
index ec00f22..9a493dd 100644
--- a/Main/System/Battle/BattleObject/BattleObject.cs
+++ b/Main/System/Battle/BattleObject/BattleObject.cs
@@ -350,7 +350,7 @@
         {
             if (dmgInfo.IsType(DamageType.Block))
             {
-                battleField.battleEffectMgr.PlayEffect(this, 19999, heroRectTrans, Camp);
+                battleField.battleEffectMgr.PlayEffect(this, BattleConst.BlockEffectID, heroRectTrans, Camp);
             }
             // else
             // {
@@ -450,13 +450,13 @@
         buffMgr.RemoveAllBuff();
     }
 
-    public void OnReborn(HB423_tagMCTurnFightObjReborn vNetData)
+    public void OnReborn(HB427_tagSCUseSkill.tagSCUseSkillHurt vNetData)
     {
         // 澶勭悊澶嶆椿閫昏緫
-        teamHero.curHp = GeneralDefine.GetFactValue(vNetData.HP, vNetData.HPEx);
+        teamHero.curHp = GeneralDefine.GetFactValue(vNetData.CurHP, vNetData.CurHPEx);
         teamHero.isDead = false;
         heroGo.SetActive(true);
-        motionBase.PlayAnimation(MotionName.idle, true);
+        motionBase.ResetToIdleAnimation();
     }
 
     // 浼ゅ杩樿鐪� 鏄惁闂伩 鏆村嚮 and so on 闇�瑕佹湁涓�涓狣amageType 鏈嶅姟鍣ㄥ簲璇ヤ細缁�
diff --git a/Main/System/Battle/Define/BattleDmgInfo.cs b/Main/System/Battle/Define/BattleDmgInfo.cs
index 41caa35..e85459d 100644
--- a/Main/System/Battle/Define/BattleDmgInfo.cs
+++ b/Main/System/Battle/Define/BattleDmgInfo.cs
@@ -396,6 +396,13 @@
     /// </summary>
     private int ValidateAndFixAttackType(int attackType)
     {
+        if (IsType(DamageType.Stunned))
+        {
+            // 鐗规畩澶勭悊鍑绘檿绫诲瀷
+            //  鍘绘帀鍑绘檿绫诲瀷
+            attackType &= ~(int)DamageType.Stunned;
+        }
+
         if (DamageNumConfig.Get(attackType) != null)
             return attackType;
 
diff --git a/Main/System/Battle/Motion/MotionBase.cs b/Main/System/Battle/Motion/MotionBase.cs
index 9539668..46a2b4e 100644
--- a/Main/System/Battle/Motion/MotionBase.cs
+++ b/Main/System/Battle/Motion/MotionBase.cs
@@ -542,6 +542,8 @@
 
     public void HaveRest()
     {
+        animState?.ClearTracks();
+
         trackEntryCallbacks.Clear();
         runningActions.Clear();
         activeSkillTracks.Clear();
@@ -555,6 +557,8 @@
         subSkillTrackMap.Clear();
         for (int i = 1; i <= 8; i++)
             availableSubTracks.Enqueue(i);
+
+        currentTrack = null;
         
         playingSkillAnim = false;
         PlayAnimation(MotionName.idle, true);
@@ -574,4 +578,10 @@
             illusionShadow.Show(isVisible, color);
         }
     }
+
+    internal void ResetToIdleAnimation()
+    {
+        // 娓呯┖涔嬪墠鐨勭姸鎬�
+        HaveRest();
+    }
 }
\ No newline at end of file
diff --git a/Main/System/Battle/Skill/RebornSkill.cs b/Main/System/Battle/Skill/RebornSkill.cs
index fefbc14..6cf73d9 100644
--- a/Main/System/Battle/Skill/RebornSkill.cs
+++ b/Main/System/Battle/Skill/RebornSkill.cs
@@ -14,7 +14,21 @@
 
 	}
 
+	protected override void OnHitTargets(int _hitIndex, List<HB427_tagSCUseSkill.tagSCUseSkillHurt> hitList)
+	{
+		for (int i = 0; i < hitList.Count; i++)
+		{
+			var hitInfo = hitList[i];
+			BattleObject targetObj = battleField.battleObjMgr.GetBattleObject((int)hitInfo.ObjID);
+			if (targetObj != null)
+			{
+				targetObj.battleField.battleEffectMgr.PlayEffect(targetObj, BattleConst.RebornEffectID, targetObj.heroRectTrans, targetObj.Camp);
+				// B427涓� tagSCUseSkillHurt 涓哄娲荤殑鐩爣锛�  HurtHP銆丠urtHPEx - 澶嶆椿鍥炶锛� CurHP銆丆urHPEx - 澶嶆椿鍚庣殑琛�閲�
+				targetObj.OnReborn(hitInfo);
+			}
+		}
 
 
+	}
 
 }
\ No newline at end of file
diff --git a/Main/System/Battle/Skill/SkillFactory.cs b/Main/System/Battle/Skill/SkillFactory.cs
index 10678d2..44be8b4 100644
--- a/Main/System/Battle/Skill/SkillFactory.cs
+++ b/Main/System/Battle/Skill/SkillFactory.cs
@@ -68,6 +68,9 @@
 			case 4:
 				skill = new DotSkill(_caster, skillConfig, vNetData, packList, battleField);
 				break;
+			case 8:
+				skill = new RebornSkill(_caster, skillConfig, vNetData, packList, battleField);
+				break;
 			case 5:
 			case 6:
 			case 14:
diff --git a/Main/System/Battle/StoryBossBattleWin.cs b/Main/System/Battle/StoryBossBattleWin.cs
index 968ee52..6106063 100644
--- a/Main/System/Battle/StoryBossBattleWin.cs
+++ b/Main/System/Battle/StoryBossBattleWin.cs
@@ -124,11 +124,11 @@
         if (null == bossBattleObject)
             return;
 
-        if (bossBattleObject.teamHero.ObjID == info.battleHurtParam.hurter.hurtObj.teamHero.ObjID)
+        if (info.battleHurtParam.hurter.hurtObj != null && bossBattleObject.teamHero.ObjID == info.battleHurtParam.hurter.hurtObj.teamHero.ObjID)
         {
             bossLifeBar.Show((ulong)info.battleHurtParam.hurter.toHp, (ulong)bossBattleObject.teamHero.maxHp);
         }
-        else if (bossBattleObject.teamHero.ObjID == info.battleHurtParam.caster.casterObj.teamHero.ObjID)
+        else if (info.battleHurtParam.caster.casterObj != null && bossBattleObject.teamHero.ObjID == info.battleHurtParam.caster.casterObj.teamHero.ObjID)
         {
             bossLifeBar.Show((ulong)info.battleHurtParam.caster.toHp, (ulong)bossBattleObject.teamHero.maxHp);
         }

--
Gitblit v1.8.0