From 44611c79d167fda9d2c4ba05435a9d84bfd5a4a6 Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期二, 07 十月 2025 16:17:49 +0800
Subject: [PATCH] 125 战斗 散射伤害有问题,会出现多次飘血,司马懿可测试

---
 Main/System/Battle/SkillEffect/BulletSkillEffect.cs |   68 ++++++++++++++++++++++++++++++++--
 1 files changed, 64 insertions(+), 4 deletions(-)

diff --git a/Main/System/Battle/SkillEffect/BulletSkillEffect.cs b/Main/System/Battle/SkillEffect/BulletSkillEffect.cs
index a70f0cd..3d014c9 100644
--- a/Main/System/Battle/SkillEffect/BulletSkillEffect.cs
+++ b/Main/System/Battle/SkillEffect/BulletSkillEffect.cs
@@ -19,6 +19,7 @@
     {
 
     }
+    
 
 
     public override void OnMiddleFrameEnd(int times, int index)
@@ -43,7 +44,7 @@
             if (skillConfig.Scattering == 1)
             {
                 //  鏁e皠
-                ShotEachTargets(index);
+                ScatterShot(index);
             }
             else
             {
@@ -89,7 +90,7 @@
         {
             // 鑻agCount鐩爣涓暟涓�1~5涓紝浠h〃闅忔満浣滅敤浜庢晫鏂规垨鎴戞柟x涓灏嗭紝姝ゆ椂鎵�鏈夎闅忔満鍒扮殑瀵硅薄閮戒负涓荤洰鏍囷紙鏂芥硶浣嶇疆浼氱敤瀹㈡埛绔厤缃級
             ShotEachTargets(index);
-        }   
+        }
     }
 
     // 1    瀵逛綅锛�
@@ -171,7 +172,7 @@
 
         RectTransform effectTrans = effectPlayer.transform as RectTransform;
 
-        var bulletCurve = BulletCurveFactory.CreateBulletCurve(caster, skillConfig, effectPlayer, targetTransform, tagUseSkillAttack, bulletIndex, (index, hitList) =>
+        var bulletCurve = BulletCurveFactory.CreateBulletCurve(caster, skillConfig, effectPlayer, targetTransform, tagUseSkillAttack.HurtList.ToList(), bulletIndex, (index, hitList) =>
         {
             if (isFinish)
                 return;
@@ -293,11 +294,70 @@
         ShotToIndex(caster.Camp, caster.teamHero.positionNum, index);
     }
 
+
+    private void ScatterShot(int index)
+    {
+        // 澶勭悊鏁e皠閫昏緫
+        for (int i = 0; i < tagUseSkillAttack.HurtList.Length; i++)
+        {
+            var hurt = tagUseSkillAttack.HurtList[i];
+            BattleObject target = caster.battleField.battleObjMgr.GetBattleObject((int)hurt.ObjID);
+            if (target == null)
+            {
+                Debug.LogError("鐗规晥鐩爣涓虹┖ target == null ObjId : " + hurt.ObjID);
+                continue;
+            }
+            ScatterShot(target, hurt, index, i);
+        }
+    }
+
+    private void ScatterShot(BattleObject target, HB427_tagSCUseSkill.tagSCUseSkillHurt hurt, int index, int order)
+    {
+        BattleEffectPlayer effectPlayer = caster.battleField.battleEffectMgr.PlayEffect(caster, skillConfig.BulletEffectId, caster.heroRectTrans, caster.Camp);
+
+        var bulletCurve = BulletCurveFactory.CreateBulletCurve(caster, skillConfig, effectPlayer, target.heroRectTrans, new List<HB427_tagSCUseSkill.tagSCUseSkillHurt> { hurt }, index, (index, hitList) =>
+        {
+            foreach (var hurt in hitList)
+            {
+                BattleObject targetObj = caster.battleField.battleObjMgr.GetBattleObject((int)hurt.ObjID);
+                if (targetObj == null)
+                {
+                    Debug.LogError("鐩爣涓虹┖ target == null ObjId : " + hurt.ObjID);
+                    continue;
+                }
+
+                PlayExplosionEffect(skillConfig.ExplosionEffectId, targetObj.heroGo.transform, caster.Camp);
+                PlayExplosionEffect(skillConfig.ExplosionEffect2, targetObj.heroGo.transform, caster.Camp);
+                PlayExplosionEffect(skillConfig.ExplosionEffect3, targetObj.heroGo.transform, caster.Camp);
+            }
+
+            // 琛ㄧ幇瀛愬脊椋炶鍒扮洰鏍囦綅缃�
+            onHit?.Invoke(index, hitList);
+            // 鍑讳腑灏遍攢姣佸瓙寮�
+            caster.battleField.battleEffectMgr.RemoveEffect(skillConfig.BulletEffectId, effectPlayer);
+
+            if (isFinish)
+                return;
+
+            //  澶氫釜瀛愬脊鐨勬渶鍚庝竴鍙�
+            if (index >= skillConfig.ActiveFrames.Length - 1)
+            {
+                //  澶氳鑹茬殑鏈�鍚庝竴涓鑹�
+                if (order >= tagUseSkillAttack.HurtList.Length - 1)
+                {
+                    isFinish = true;
+                }
+            }
+        });
+
+        bulletCurves.Add(bulletCurve);
+    }
+
     protected void ShotToTarget(BattleObject target, int bulletIndex)
     {
         BattleEffectPlayer effectPlayer = caster.battleField.battleEffectMgr.PlayEffect(caster, skillConfig.BulletEffectId, caster.heroRectTrans, caster.Camp);
 
-        var bulletCurve = BulletCurveFactory.CreateBulletCurve(caster, skillConfig, effectPlayer, target.heroRectTrans, tagUseSkillAttack, bulletIndex, (index, hitList) =>
+        var bulletCurve = BulletCurveFactory.CreateBulletCurve(caster, skillConfig, effectPlayer, target.heroRectTrans, tagUseSkillAttack.HurtList.ToList(), bulletIndex, (index, hitList) =>
         {
             foreach (var hurt in hitList)
             {

--
Gitblit v1.8.0