From 778218d5d3562d8287f0612f83b8958daba8548e Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期五, 10 十月 2025 18:21:27 +0800
Subject: [PATCH] 125 战斗 最后一击死亡处理

---
 Main/System/Battle/Skill/SkillBase.cs |   27 +++++++++++++++------------
 1 files changed, 15 insertions(+), 12 deletions(-)

diff --git a/Main/System/Battle/Skill/SkillBase.cs b/Main/System/Battle/Skill/SkillBase.cs
index 41cfb7f..0b8d916 100644
--- a/Main/System/Battle/Skill/SkillBase.cs
+++ b/Main/System/Battle/Skill/SkillBase.cs
@@ -51,7 +51,6 @@
 		packList = _packList;
 
 		// Debug.LogError("start a skill id " + skillConfig.SkillID + " caster " + caster.teamHero.heroId + " pos " + caster.teamHero.positionNum + " camp " + caster.Camp);
-
 	}
 
 	public virtual void Run()
@@ -315,6 +314,7 @@
 	//	鎶�鑳藉紑濮�
 	public void OnSkillStart()
 	{
+		HandleDead();
 		skillEffect = SkillEffectFactory.CreateSkillEffect(
 				caster,
 				skillConfig,
@@ -361,7 +361,8 @@
 	{	
 		skillEffect.OnFinalFrameEnd();
 
-		HandleDead();
+		//	杞Щ鍒版浜″寘 battleobject.hurt 鏈�鍚庝竴鍑荤殑鏃跺�欐挱鏀�
+		
 	}
 
 
@@ -461,17 +462,20 @@
 
 		//	TODO YYL AttackTypes  瑕佽〃鐜版垚浠�涔堟牱鍛紵 鏀寔澶氱绫诲瀷骞跺瓨锛屽鏃犺闃插尽涓旀毚鍑诲悓鏃惰鏍兼尅锛屼簩杩涘埗鎴栬繍绠楁渶缁堝�硷紱0-澶辫触锛�1-鏅�氾紱2-鍥炶锛�5-鏍兼尅锛�6-鏃犺闃插尽锛�7-鏆村嚮锛�9-闂伩
 
-		List<HB422_tagMCTurnFightObjDead> deadPacks = BattleUtility.FindDeadPack(packList);
-		bool isTargetDead = deadPacks.Exists(p => p.ObjID == target.ObjID);
 
-		bool notPlayHitAnime = isLastHit && isTargetDead;
-		target.Hurt(damageList, totalDamage, hurt, skillConfig, !notPlayHitAnime);
+		int objID = (int)target.ObjID;
+		tempDropList.TryGetValue(objID, out BattleDrops battleDrops);
+		tempDeadPackList.TryGetValue(objID, out HB422_tagMCTurnFightObjDead deadPack);
+		target.Hurt(damageList, totalDamage, hurt, skillConfig, isLastHit, battleDrops, deadPack);
 
 		//	TODO YYL 杩欓噷鏄鍋氱粺涓�璁$畻鍚庡啀hurt璺焥uckhp杩樻槸鎬庢牱
 		caster.SuckHp(hurt.SuckHP, skillConfig);//	鍚歌
 		caster.HurtByReflect(hurt.BounceHP, skillConfig);// 鍙嶅脊浼ゅ
 	}
 
+	private Dictionary<int, BattleDrops> tempDropList = new Dictionary<int, BattleDrops>();
+
+	private Dictionary<int, HB422_tagMCTurnFightObjDead> tempDeadPackList = new Dictionary<int, HB422_tagMCTurnFightObjDead>();
 
 	protected void HandleDead()
 	{
@@ -520,17 +524,17 @@
 				dropItemPackIndex = itemModelDropsIndexList,
 				expDrops = expAssign[i]
 			};
-			deadTarget.PushDropItems(battleDrops);
+
+			tempDropList.Add((int)deadPackList[i].ObjID, battleDrops);
+			// deadTarget.PushDropItems(battleDrops);
 		}
 
-		// 鍒嗗彂姝讳骸鍖�
-
-		battleField.OnObjsDead(new List<HB422_tagMCTurnFightObjDead>(deadPackList));
+		// battleField.OnObjsDead(new List<HB422_tagMCTurnFightObjDead>(deadPackList));
 		foreach (var deadPack in deadPackList)
 		{
+			tempDeadPackList.Add((int)deadPack.ObjID, deadPack);
 			packList.Remove(deadPack);
 		}
-		deadPackList.Clear();
 	}
 
 
@@ -693,7 +697,6 @@
 			otherSkillAction.ForceFinish();
 			otherSkillAction = null;
 		}
-		HandleDead();
 		isFinished = true;
 		moveFinished = true;
 		isPlay = true;

--
Gitblit v1.8.0