From 3af0d67c58acff1e066d8f7902f9747fbaf51b62 Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期五, 10 十月 2025 16:22:20 +0800
Subject: [PATCH] 125 战斗 buff支持多个buff同时释放

---
 Main/System/Battle/BattleField/RecordActions/BuffMountAction.cs |   29 ++++++++++++++++++-----------
 Main/System/Battle/Buff/BattleObjectBuffMgr.cs                  |   19 +++++++++++++++----
 2 files changed, 33 insertions(+), 15 deletions(-)

diff --git a/Main/System/Battle/BattleField/RecordActions/BuffMountAction.cs b/Main/System/Battle/BattleField/RecordActions/BuffMountAction.cs
index 7f3ce1b..3ce6331 100644
--- a/Main/System/Battle/BattleField/RecordActions/BuffMountAction.cs
+++ b/Main/System/Battle/BattleField/RecordActions/BuffMountAction.cs
@@ -4,23 +4,23 @@
 
 public class BuffMountAction : RecordAction
 {
-    protected HB428_tagSCBuffRefresh hB428_TagSCBuffRefresh;
+    protected List<HB428_tagSCBuffRefresh> buffList;
 
     protected Action onComplete;
 
-    public BuffMountAction(BattleField _battleField, BattleObject _battleObj, HB428_tagSCBuffRefresh vNetData, Action _onComplete)
-        : base(RecordActionType.BuffMount, _battleField, _battleObj)
+    public BuffMountAction(BattleField _battleField, List<HB428_tagSCBuffRefresh> buffPackList, Action _onComplete = null)
+        : base(RecordActionType.Death, _battleField, null)
     {
         isFinish = false;
-        hB428_TagSCBuffRefresh = vNetData;
+        buffList = buffPackList;
         onComplete = _onComplete;
     }
+
 
     public override bool IsFinished()
     {
         return isFinish;
     }
-
 
     public override void Run()
     {
@@ -28,17 +28,19 @@
 
         if (!isRunOnce)
         {
-            SkillConfig skillConfig = SkillConfig.Get((int)hB428_TagSCBuffRefresh.SkillID);
-            if (null != skillConfig)
+            foreach (var hB428_TagSCBuffRefresh in buffList)
             {
-                //  椋樺瓧
-                battleObject.heroInfoBar.ShowTips(skillConfig.SkillName);
+                SkillConfig skillConfig = SkillConfig.Get((int)hB428_TagSCBuffRefresh.SkillID);
+                BattleObject obj = battleField.battleObjMgr.GetBattleObject((int)hB428_TagSCBuffRefresh.ObjID);
+                if (null != skillConfig && obj != null)
+                {
+                    //  椋樺瓧
+                    obj.heroInfoBar.ShowTips(skillConfig.SkillName);
+                }
             }
-
 
             //  鍔燽uff(onComplete鍐欎簡)
             onComplete?.Invoke();
-
 
             isFinish = true;
             return;
@@ -48,6 +50,11 @@
 
     public override void ForceFinish()
     {
+        if (isFinish)
+        {
+            return;
+        }
+
         //  1甯у氨缁撴潫浜� 涓嶇
         base.ForceFinish();
     }
diff --git a/Main/System/Battle/Buff/BattleObjectBuffMgr.cs b/Main/System/Battle/Buff/BattleObjectBuffMgr.cs
index 2a2b56f..2143f97 100644
--- a/Main/System/Battle/Buff/BattleObjectBuffMgr.cs
+++ b/Main/System/Battle/Buff/BattleObjectBuffMgr.cs
@@ -93,7 +93,7 @@
     }
 
     //  鍒锋柊buff
-    public void RefreshBuff(HB428_tagSCBuffRefresh vNetData)
+    public void RefreshBuff(HB428_tagSCBuffRefresh vNetData, bool insert = false)
     {
         SkillConfig skillConfig = SkillConfig.Get((int)vNetData.SkillID);
 
@@ -114,9 +114,9 @@
             buffDataDict.Add(vNetData.BuffID, vNetData);
         }
 
-        if (isNew)
+        if (vNetData.IsAdd != 0)
         {
-            BuffMountAction buffMountAction = new BuffMountAction(battleObject.battleField, battleObject, vNetData, () =>
+            BuffMountAction buffMountAction = new BuffMountAction(battleObject.battleField, new List<HB428_tagSCBuffRefresh>(){ vNetData}, () =>
             {
                 if (null != skillConfig && skillConfig.BuffEffect > 0)
                 {
@@ -135,7 +135,14 @@
                 }
                 battleObject.heroInfoBar.RefreshBuff(buffDataDict.Values.ToList());
             });
-            battleObject.battleField.recordPlayer.PlayRecord(buffMountAction);
+            if (insert)
+            {
+                battleObject.battleField.recordPlayer.ImmediatelyPlay(buffMountAction);
+            }
+            else
+            {
+                battleObject.battleField.recordPlayer.PlayRecord(buffMountAction);
+            }
         }
         else
         {
@@ -144,4 +151,8 @@
         }
     }
 
+    public void InsertBuff(HB428_tagSCBuffRefresh vNetData)
+    {
+        RefreshBuff(vNetData, true);
+    }
 }
\ No newline at end of file

--
Gitblit v1.8.0