From 97d7544a2963a39f26a928bc966367434800c48f Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期五, 20 三月 2026 16:28:47 +0800
Subject: [PATCH] 0312 修复特权免广问题

---
 Main/System/Battle/SkillEffect/BulletSkillEffect.cs |   78 +++++++++++++++++++-------------------
 1 files changed, 39 insertions(+), 39 deletions(-)

diff --git a/Main/System/Battle/SkillEffect/BulletSkillEffect.cs b/Main/System/Battle/SkillEffect/BulletSkillEffect.cs
index ee71f5e..1022169 100644
--- a/Main/System/Battle/SkillEffect/BulletSkillEffect.cs
+++ b/Main/System/Battle/SkillEffect/BulletSkillEffect.cs
@@ -18,8 +18,8 @@
     private int scatterTotalTargets = 0;
 
 
-    public BulletSkillEffect(SkillBase _skillBase, SkillConfig _skillConfig, BattleObject _caster, HB427_tagSCUseSkill _tagUseSkillAttack)
-        : base(_skillBase, _skillConfig, _caster, _tagUseSkillAttack)
+    public BulletSkillEffect(SkillBase _skillBase, SkillConfig _skillConfig, SkillSkinConfig _skillSkinConfig, BattleObject _caster, HB427_tagSCUseSkill _tagUseSkillAttack)
+        : base(_skillBase, _skillConfig, _skillSkinConfig, _caster, _tagUseSkillAttack)
     {
 
     }
@@ -30,7 +30,7 @@
     {
         base.OnMiddleFrameEnd(times, index);
         //  寮瑰皠 鍙﹀鐨勫仛娉曚簡
-        if (skillConfig.effectType == SkillEffectType.Bullet && skillConfig.BulletPath == 4)
+        if (skillSkinConfig.effectType == SkillEffectType.Bullet && skillSkinConfig.BulletPath == 4)
         {
             var hurt = tagUseSkillAttack.HurtList[0];
             BattleObject targetObject = caster.battleField.battleObjMgr.GetBattleObject((int)hurt.ObjID);
@@ -146,9 +146,9 @@
                     continue;
                 }
 
-                minimumIndex = Mathf.Min(target.teamHero.positionNum, minimumIndex);
+                minimumIndex = Mathf.Min(target.GetPositionNum(), minimumIndex);
 
-                if (target.Camp == battleCamp && target.teamHero.positionNum < 3)
+                if (target.Camp == battleCamp && target.GetPositionNum() < 3)
                 {
                     targetIndex = 1;
                     break;
@@ -172,22 +172,22 @@
     private void ShotToIndex(BattleCamp camp, int targetIndex, int bulletIndex)
     {
         RectTransform targetTransform = caster.battleField.GetTeamNode(camp, targetIndex);
-        BattleEffectPlayer effectPlayer = caster.battleField.battleEffectMgr.PlayEffect(caster, skillConfig.BulletEffectId, caster.heroRectTrans, caster.Camp, caster.teamHero.modelScale);
+        BattleEffectPlayer effectPlayer = caster.battleField.battleEffectMgr.PlayEffect(caster, skillSkinConfig.BulletEffectId, caster.GetRectTransform(), caster.Camp, caster.GetModelScale());
 
         RectTransform effectTrans = effectPlayer.transform as RectTransform;
 
-        var bulletCurve = BulletCurveFactory.CreateBulletCurve(caster, skillConfig, effectPlayer, targetTransform, tagUseSkillAttack.HurtList.ToList(), bulletIndex, (index, hitList) =>
+        var bulletCurve = BulletCurveFactory.CreateBulletCurve(caster, skillConfig, skillSkinConfig, effectPlayer, targetTransform, tagUseSkillAttack.HurtList.ToList(), bulletIndex, (index, hitList) =>
         {
             if (isFinish)
                 return;
             // 鍑讳腑灏遍攢姣佸瓙寮�
-            caster.battleField.battleEffectMgr.RemoveEffect(skillConfig.BulletEffectId, effectPlayer);
+            caster.battleField.battleEffectMgr.RemoveEffect(skillSkinConfig.BulletEffectId, effectPlayer);
             // 鎾斁瀛愬脊鐖嗙偢鐗规晥
 
             BattleCamp battleCamp = skillConfig.TagFriendly != 0 ? caster.Camp : caster.GetEnemyCamp();
             //  棣栧厛鏄洰鏍囪韩涓婄垎鐐�
-            PlayExplosionEffect(skillConfig.ExplosionEffectId, targetTransform, caster.Camp, 1f);
-            PlayExplosionEffect(skillConfig.ExplosionEffect2, targetTransform, caster.Camp, 1f);
+            PlayExplosionEffect(skillSkinConfig.ExplosionEffectId, targetTransform, caster.Camp, 1f);
+            PlayExplosionEffect(skillSkinConfig.ExplosionEffect2, targetTransform, caster.Camp, 1f);
 
             foreach (var hurt in hitList)
             {
@@ -198,8 +198,8 @@
                     continue;
                 }
 
-                PlayExplosionEffect(skillConfig.ExplosionEffect3, targetObj.heroGo.transform, caster.Camp, targetObj.teamHero.modelScale);
-                PlayExplosionEffect(skillConfig.ExplosionEffect4, targetObj.heroGo.transform, caster.Camp, targetObj.teamHero.modelScale);
+                PlayExplosionEffect(skillSkinConfig.ExplosionEffect3, targetObj.GetTransform(), caster.Camp, targetObj.GetModelScale());
+                PlayExplosionEffect(skillSkinConfig.ExplosionEffect4, targetObj.GetTransform(), caster.Camp, targetObj.GetModelScale());
             }
 
             // 琛ㄧ幇瀛愬脊椋炶鍒扮洰鏍囦綅缃�
@@ -238,13 +238,13 @@
                     continue;
                 }
 
-                if (target.Camp == battleCamp && target.teamHero.positionNum > 3)
+                if (target.Camp == battleCamp && target.GetPositionNum() > 3)
                 {
                     targetIndex = 4;
                     break;
                 }
 
-                maxinumIndex = Mathf.Max(target.teamHero.positionNum, maxinumIndex);
+                maxinumIndex = Mathf.Max(target.GetPositionNum(), maxinumIndex);
             }
 
             if (targetIndex == int.MaxValue)
@@ -276,7 +276,7 @@
                 continue;
             }
 
-            minimumIndex = Mathf.Min(target.teamHero.positionNum, minimumIndex);
+            minimumIndex = Mathf.Min(target.GetPositionNum(), minimumIndex);
         }
 
         if (minimumIndex != int.MaxValue)
@@ -296,7 +296,7 @@
     private void SelfShoting(int index)
     {
         // 榛樿鍙�夎嚜宸憋紝鑷繁涓轰富鐩爣
-        ShotToIndex(caster.Camp, caster.teamHero.positionNum, index);
+        ShotToIndex(caster.Camp, caster.GetPositionNum(), index);
     }
 
     //  鏁e皠
@@ -307,7 +307,7 @@
         {
             scatterHitCount = 0;
             // 鎬诲嚮涓暟 = 鍙戝皠娆℃暟 脳 鐩爣鏁伴噺
-            scatterTotalTargets = skillConfig.ActiveFrames.Length * tagUseSkillAttack.HurtList.Length;
+            scatterTotalTargets = skillSkinConfig.ActiveFrames.Length * tagUseSkillAttack.HurtList.Length;
         }
         
         // 澶勭悊鏁e皠閫昏緫
@@ -328,7 +328,7 @@
 
     private void ScatterShot(BattleObject target, HB427_tagSCUseSkill.tagSCUseSkillHurt hurt, int bulletIndex, int order)
     {
-        BattleEffectPlayer effectPlayer = caster.battleField.battleEffectMgr.PlayEffect(caster, skillConfig.BulletEffectId, caster.heroRectTrans, caster.Camp, caster.teamHero.modelScale);
+        BattleEffectPlayer effectPlayer = caster.battleField.battleEffectMgr.PlayEffect(caster, skillSkinConfig.BulletEffectId, caster.GetRectTransform(), caster.Camp, caster.GetModelScale());
 
         bool shotToSelf = target.ObjID == caster.ObjID;
 
@@ -336,7 +336,7 @@
 
         var tempOrder = order;
 
-        var bulletCurve = BulletCurveFactory.CreateBulletCurve(caster, skillConfig, effectPlayer, target.heroRectTrans,
+        var bulletCurve = BulletCurveFactory.CreateBulletCurve(caster, skillConfig, skillSkinConfig, effectPlayer, target.GetRectTransform(),
             new List<HB427_tagSCUseSkill.tagSCUseSkillHurt> { hurt }, bulletIndex, (index, hitList) =>
         {
             foreach (var hurt in hitList)
@@ -348,16 +348,16 @@
                     continue;
                 }
 
-                PlayExplosionEffect(skillConfig.ExplosionEffectId, targetObj.heroGo.transform, caster.Camp, targetObj.teamHero.modelScale);
-                PlayExplosionEffect(skillConfig.ExplosionEffect2, targetObj.heroGo.transform, caster.Camp, targetObj.teamHero.modelScale);
-                PlayExplosionEffect(skillConfig.ExplosionEffect3, targetObj.heroGo.transform, caster.Camp, targetObj.teamHero.modelScale);
-                PlayExplosionEffect(skillConfig.ExplosionEffect4, targetObj.heroGo.transform, caster.Camp, targetObj.teamHero.modelScale);
+                PlayExplosionEffect(skillSkinConfig.ExplosionEffectId, targetObj.GetTransform(), caster.Camp, targetObj.GetModelScale());
+                PlayExplosionEffect(skillSkinConfig.ExplosionEffect2, targetObj.GetTransform(), caster.Camp, targetObj.GetModelScale());
+                PlayExplosionEffect(skillSkinConfig.ExplosionEffect3, targetObj.GetTransform(), caster.Camp, targetObj.GetModelScale());
+                PlayExplosionEffect(skillSkinConfig.ExplosionEffect4, targetObj.GetTransform(), caster.Camp, targetObj.GetModelScale());
             }
 
             // 琛ㄧ幇瀛愬脊椋炶鍒扮洰鏍囦綅缃�
             onHit?.Invoke(index, hitList);
             // 鍑讳腑灏遍攢姣佸瓙寮�
-            caster.battleField.battleEffectMgr.RemoveEffect(skillConfig.BulletEffectId, effectPlayer);
+            caster.battleField.battleEffectMgr.RemoveEffect(skillSkinConfig.BulletEffectId, effectPlayer);
 
             // 澧炲姞鏁e皠鍑讳腑璁℃暟
             scatterHitCount++;
@@ -374,7 +374,7 @@
 
     protected void ShotToTarget(BattleObject target, int bulletIndex)
     {
-        BattleEffectPlayer effectPlayer = caster.battleField.battleEffectMgr.PlayEffect(caster, skillConfig.BulletEffectId, caster.heroRectTrans, caster.Camp, caster.teamHero.modelScale);
+        BattleEffectPlayer effectPlayer = caster.battleField.battleEffectMgr.PlayEffect(caster, skillSkinConfig.BulletEffectId, caster.GetRectTransform(), caster.Camp, caster.GetModelScale());
 
         bool shotToSelf = target.ObjID == caster.ObjID;
 
@@ -384,9 +384,9 @@
 
         int tempBulletIndex = bulletIndex;
 
-        var bulletCurve = BulletCurveFactory.CreateBulletCurve(caster, skillConfig, effectPlayer, target.heroRectTrans, tagUseSkillAttack.HurtList.ToList(), bulletIndex, (index, hitList) =>
+        var bulletCurve = BulletCurveFactory.CreateBulletCurve(caster, skillConfig, skillSkinConfig, effectPlayer, target.GetRectTransform(), tagUseSkillAttack.HurtList.ToList(), bulletIndex, (index, hitList) =>
         {
-            if (skillConfig.BulletPath == 4)
+            if (skillSkinConfig.BulletPath == 4)
             {
                 if (bounceHitIndex >= hitList.Count)
                 {
@@ -396,10 +396,10 @@
                 BattleObject targetObj = caster.battleField.battleObjMgr.GetBattleObject((int)hurt.ObjID);
                 if (targetObj != null)
                 {
-                    PlayExplosionEffect(skillConfig.ExplosionEffectId, targetObj.heroGo.transform, caster.Camp, targetObj.teamHero.modelScale);
-                    PlayExplosionEffect(skillConfig.ExplosionEffect2, targetObj.heroGo.transform, caster.Camp, targetObj.teamHero.modelScale);
-                    PlayExplosionEffect(skillConfig.ExplosionEffect3, targetObj.heroGo.transform, caster.Camp, targetObj.teamHero.modelScale);
-                    PlayExplosionEffect(skillConfig.ExplosionEffect4, targetObj.heroGo.transform, caster.Camp, targetObj.teamHero.modelScale);
+                    PlayExplosionEffect(skillSkinConfig.ExplosionEffectId, targetObj.GetTransform(), caster.Camp, targetObj.GetModelScale());
+                    PlayExplosionEffect(skillSkinConfig.ExplosionEffect2, targetObj.GetTransform(), caster.Camp, targetObj.GetModelScale());
+                    PlayExplosionEffect(skillSkinConfig.ExplosionEffect3, targetObj.GetTransform(), caster.Camp, targetObj.GetModelScale());
+                    PlayExplosionEffect(skillSkinConfig.ExplosionEffect4, targetObj.GetTransform(), caster.Camp, targetObj.GetModelScale());
                 }
                 else
                 {
@@ -411,13 +411,13 @@
 
                 if (bounceHitIndex >= tagUseSkillAttack.HurtList.Length)
                 {
-                    caster.battleField.battleEffectMgr.RemoveEffect(skillConfig.BulletEffectId, effectPlayer);
+                    caster.battleField.battleEffectMgr.RemoveEffect(skillSkinConfig.BulletEffectId, effectPlayer);
                 }
 
                 if (isFinish)
                     return;
 
-                if (tempBulletIndex >= skillConfig.ActiveFrames.Length - 1 && bounceHitIndex >= hitList.Count)
+                if (tempBulletIndex >= skillSkinConfig.ActiveFrames.Length - 1 && bounceHitIndex >= hitList.Count)
                 {
                     isFinish = true;
                 }
@@ -433,22 +433,22 @@
                         continue;
                     }
 
-                    PlayExplosionEffect(skillConfig.ExplosionEffectId, targetObj.heroGo.transform, caster.Camp, targetObj.teamHero.modelScale);
-                    PlayExplosionEffect(skillConfig.ExplosionEffect2, targetObj.heroGo.transform, caster.Camp, targetObj.teamHero.modelScale);
-                    PlayExplosionEffect(skillConfig.ExplosionEffect3, targetObj.heroGo.transform, caster.Camp, targetObj.teamHero.modelScale);
-                    PlayExplosionEffect(skillConfig.ExplosionEffect4, targetObj.heroGo.transform, caster.Camp, targetObj.teamHero.modelScale);
+                    PlayExplosionEffect(skillSkinConfig.ExplosionEffectId, targetObj.GetTransform(), caster.Camp, targetObj.GetModelScale());
+                    PlayExplosionEffect(skillSkinConfig.ExplosionEffect2, targetObj.GetTransform(), caster.Camp, targetObj.GetModelScale());
+                    PlayExplosionEffect(skillSkinConfig.ExplosionEffect3, targetObj.GetTransform(), caster.Camp, targetObj.GetModelScale());
+                    PlayExplosionEffect(skillSkinConfig.ExplosionEffect4, targetObj.GetTransform(), caster.Camp, targetObj.GetModelScale());
                 }
 
                 // 琛ㄧ幇瀛愬脊椋炶鍒扮洰鏍囦綅缃�
                 onHit?.Invoke(index, hitList);
                 // 鍑讳腑灏遍攢姣佸瓙寮�
 
-                caster.battleField.battleEffectMgr.RemoveEffect(skillConfig.BulletEffectId, effectPlayer);
+                caster.battleField.battleEffectMgr.RemoveEffect(skillSkinConfig.BulletEffectId, effectPlayer);
 
                 if (isFinish)
                     return;
 
-                if (bulletIndex >= skillConfig.ActiveFrames.Length - 1)
+                if (bulletIndex >= skillSkinConfig.ActiveFrames.Length - 1)
                 {
                     isFinish = true;
                 }

--
Gitblit v1.8.0