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