From ed98029a88cd89702980ac7c40b711afddc5aeb2 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期四, 20 十一月 2025 14:44:59 +0800
Subject: [PATCH] Merge branch 'master' of http://mobile.secondworld.net.cn:10010/r/Project_SG_scripts

---
 Main/System/Battle/SkillEffect/NormalSkillEffect.cs |   90 ++++++++++++++++++---------------------------
 1 files changed, 36 insertions(+), 54 deletions(-)

diff --git a/Main/System/Battle/SkillEffect/NormalSkillEffect.cs b/Main/System/Battle/SkillEffect/NormalSkillEffect.cs
index 91b98e9..ae1fa16 100644
--- a/Main/System/Battle/SkillEffect/NormalSkillEffect.cs
+++ b/Main/System/Battle/SkillEffect/NormalSkillEffect.cs
@@ -11,79 +11,61 @@
     // protected BattleObject caster;
     // protected List<BattleObject> targets; // 鐩爣鍒楄〃
 
-    public NormalSkillEffect(SkillConfig _skillConfig, BattleObject _caster, H0604_tagUseSkillAttack _tagUseSkillAttack)
-        : base(_skillConfig, _caster, _tagUseSkillAttack)
+    public NormalSkillEffect(SkillBase _skillBase, SkillConfig _skillConfig, BattleObject _caster, HB427_tagSCUseSkill _tagUseSkillAttack)
+        : base(_skillBase, _skillConfig, _caster, _tagUseSkillAttack)
     {
 
     }
 
 
-    public override void Play(Action<int, List<H0604_tagUseSkillAttack.tagSkillHurtObj>> _onHit)
+    public override void OnMiddleFrameEnd(int times, int hitIndex)
     {
 
-        Action<int, List<H0604_tagUseSkillAttack.tagSkillHurtObj>> onHitFormation = (_hitIndex, _hurtList) =>
-        {
-            _onHit?.Invoke(_hitIndex, tagUseSkillAttack.HurtList.ToList());
-        };
+        int mainTargetIndex = BattleUtility.GetMainTargetPositionNum(skillBase, caster, tagUseSkillAttack.HurtList.ToList(), skillConfig);
 
-        if (skillConfig.effectAnchor == SkillEffectAnchor.Caster)
+        BattleCamp battleCamp = skillConfig.TagFriendly == 1 ? caster.Camp : caster.GetEnemyCamp();
+
+        RectTransform targetTransform = caster.battleField.GetTeamNode(battleCamp, mainTargetIndex);
+
+        if (skillConfig.ExplosionEffectId > 0)
         {
-            CastInTarget(caster.heroGo.transform as RectTransform, onHitFormation);
+            caster.battleField.battleEffectMgr.PlayEffect(caster, skillConfig.ExplosionEffectId, targetTransform, caster.Camp);
         }
-        else if (skillConfig.effectAnchor == SkillEffectAnchor.Target)
+
+        if (skillConfig.ExplosionEffect2 > 0)
         {
-            if (tagUseSkillAttack == null || tagUseSkillAttack.HurtList.Length <= 0)
+            caster.battleField.battleEffectMgr.PlayEffect(caster, skillConfig.ExplosionEffect2, targetTransform, caster.Camp);
+        }
+
+        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("娌℃湁鐩爣 tagUseSkillAttack.HurtList.Length <= 0");
-                _onHit?.Invoke(0, default);
-                return;
+                Debug.LogError("鐗规晥鐩爣涓虹┖ target == null ObjId : " + hurt.ObjID);
+                continue;
             }
 
-            foreach (var hurt in tagUseSkillAttack.HurtList)
+            if (skillConfig.ExplosionEffect3 > 0)
             {
-                BattleObject target = caster.battleField.battleObjMgr.GetBattleObject((int)hurt.ObjID);
-                if (target == null)
-                {
-                    Debug.LogError("鐗规晥鐩爣涓虹┖ target == null ObjId : " + hurt.ObjID);
-                    continue;
-                }
-
-                CastInTarget(target.heroGo.transform as RectTransform, (index, list) => _onHit(0, new List<H0604_tagUseSkillAttack.tagSkillHurtObj>() { hurt }));
+                caster.battleField.battleEffectMgr.PlayEffect(target, skillConfig.ExplosionEffect3, target.heroGo.transform, caster.Camp);
+            }
+            if (skillConfig.ExplosionEffect4 > 0)
+            {
+                caster.battleField.battleEffectMgr.PlayEffect(target, skillConfig.ExplosionEffect4, target.heroGo.transform, caster.Camp);
             }
         }
-        else if (skillConfig.effectAnchor == SkillEffectAnchor.AlliesCenter)
-        {
-            CastInTarget(caster.battleField.GetTeamNode(caster.Camp), onHitFormation);
-        }
-        else if (skillConfig.effectAnchor == SkillEffectAnchor.EnemiesCenter)
-        {
-            CastInTarget(caster.battleField.GetTeamNode(caster.Camp == BattleCamp.Blue ? BattleCamp.Red : BattleCamp.Blue), onHitFormation);
-        }
-        else
-        {
-            Debug.LogError("鏈煡鐨勬妧鑳界壒鏁堥敋鐐圭被鍨�: " + skillConfig.effectAnchor);
-        }
+
+        onHit?.Invoke(hitIndex, tagUseSkillAttack.HurtList.ToList());
     }
 
-    protected void CastInTarget(RectTransform target, Action<int, List<H0604_tagUseSkillAttack.tagSkillHurtObj>> _onHit)
+    /// <summary>
+    /// 鍚庢憞缁撴潫
+    /// </summary>
+    public override void OnFinalFrameEnd()
     {
-        EffectPlayer effectPlayer = caster.battleField.battleEffectMgr.PlayEffect(caster.ObjID, skillConfig.EffectId, caster.effectNode);
-
-        effectPlayer.Play();
-
-        RectTransform effectTrans = effectPlayer.transform as RectTransform;
-
-        _onHit?.Invoke(0, null);
-
-        //  閿�姣佽嚜韬笂鐨勭壒鏁堝簲璇ユ槸绛夌壒鏁堟挱鏀惧畬姣曚箣鍚�
-        // caster.battleField.battleEffectMgr.RemoveEffect(skillConfig.EffectId, effectPlayer);
-        //  鎾斁鍙楀嚮鐗规晥
-        caster.battleField.battleEffectMgr.PlayEffect(caster.ObjID, skillConfig.ExplotionEffectId, target).Play();
-
-    }
-
-    public override void Run()
-    {
-
+        base.OnFinalFrameEnd();
+        isFinish = true;
     }
 }
\ No newline at end of file

--
Gitblit v1.8.0