From 9f5db2e92b93dcbe7c5d53606d62c8f04aef3c19 Mon Sep 17 00:00:00 2001
From: lcy <1459594991@qq.com>
Date: 星期三, 18 三月 2026 23:20:18 +0800
Subject: [PATCH] 533 开服冲榜-客户端  开服冲榜的将星云集、百炼成军、红袖添香、命定乾坤和限时冲刺的武将冲刺、古宝冲刺、元宝冲刺添加特权标识

---
 Main/System/Battle/Skill/SkillBase.cs |  222 +++++++++++++++++++++++++++++++++----------------------
 1 files changed, 133 insertions(+), 89 deletions(-)

diff --git a/Main/System/Battle/Skill/SkillBase.cs b/Main/System/Battle/Skill/SkillBase.cs
index 2a5afcf..3988cad 100644
--- a/Main/System/Battle/Skill/SkillBase.cs
+++ b/Main/System/Battle/Skill/SkillBase.cs
@@ -19,6 +19,8 @@
     protected SkillEffect skillEffect;
     public HB427_tagSCUseSkill tagUseSkillAttack;
     public SkillConfig skillConfig;
+
+    public SkillSkinConfig skillSkinConfig;
     protected bool isFinished = false;
     protected BattleField battleField = null; // 鎴樺満
     protected RectTransform targetNode = null; // 鐩爣鑺傜偣
@@ -35,7 +37,7 @@
     public bool isPlay = false;
 
     //  鐖禦ecordAction锛圫killRecordAction锛夛紝鐢ㄤ簬瀛愭妧鑳藉缓绔嬬埗瀛愬叧绯�
-    protected RecordAction parentRecordAction;
+    protected SkillRecordAction ownRecordAction;
     
     //  鎶�鑳藉姩鐢绘槸鍚︽挱鏀惧畬鎴愶紙閽堝鏈夊姩鐢荤殑鎶�鑳斤級
     protected bool isMotionCompleted = false;
@@ -58,6 +60,21 @@
         battleField = _battleField;
         packList = _packList;
 
+        if (_caster is HeroBattleObject heroBattleObject)
+        {
+            skillSkinConfig = skillConfig.GetSkillSkinConfig(heroBattleObject.teamHero.SkinID);
+
+            if (null == skillSkinConfig)
+            {
+                Debug.LogError("鎵句笉鍒版妧鑳界毊鑲よ〃 " + "skillId: " + skillConfig.SkillID + " skinId: " + heroBattleObject.teamHero.SkinID);
+            }
+        }
+        else
+        {
+            skillSkinConfig = skillConfig.GetOriginSkinConfig();
+        }
+        
+
         // 娉ㄥ唽姝e湪閲婃斁鐨勬妧鑳�
         if (battleField != null && caster != null)
         {
@@ -73,9 +90,9 @@
     }
 
     //  璁剧疆鐖禦ecordAction
-    public void SetParentRecordAction(RecordAction recordAction)
+    public void SetOwnRecordAction(SkillRecordAction recordAction)
     {
-        parentRecordAction = recordAction;
+        ownRecordAction = recordAction;
     }
 
 #if UNITY_EDITOR
@@ -92,7 +109,7 @@
             var Hurt = tagUseSkillAttack.HurtList[i];
             BattleObject battleObject = caster.battleField.battleObjMgr.GetBattleObject((int)Hurt.ObjID);
             
-            string targetName = battleObject != null ? battleObject.teamHero.name : "Unknown";
+            string targetName = battleObject != null ? battleObject.GetName() : "Unknown";
             long hurtHp = GeneralDefine.GetFactValue(Hurt.HurtHP, Hurt.HurtHPEx);
             long curHp = GeneralDefine.GetFactValue(Hurt.CurHP, Hurt.CurHPEx);
             
@@ -125,7 +142,7 @@
                 var HurtEx = tagUseSkillAttack.HurtListEx[i];
                 BattleObject battleObject = caster.battleField.battleObjMgr.GetBattleObject((int)HurtEx.ObjID);
                 
-                string targetName = battleObject != null ? battleObject.teamHero.name : "Unknown";
+                string targetName = battleObject != null ? battleObject.GetName() : "Unknown";
                 long hurtHp = GeneralDefine.GetFactValue(HurtEx.HurtHP, HurtEx.HurtHPEx);
                 long curHp = GeneralDefine.GetFactValue(HurtEx.CurHP, HurtEx.CurHPEx);
                 
@@ -225,13 +242,13 @@
             if (change)
             {
                 MoveSpeed = 1125f;
-                caster.motionBase.ShowIllusionShadow(true, color);
+                caster.ShowIllusionShadow(true, color);
             }
         }
         else
         {
             MoveSpeed = 750f;
-            caster.motionBase.ShowIllusionShadow(false);
+            caster.ShowIllusionShadow(false);
         }
     }
 
@@ -240,12 +257,18 @@
     {
         // 骞挎挱鎶�鑳介噴鏀句簨浠�
         string guid = battleField.guid;
-        TeamHero teamHero = caster.teamHero;
+        // 鑾峰彇閲婃斁鑰呮暟鎹細Hero 浼犻�� teamHero锛孧ingge 浼犻�� null锛堝洜涓轰簨浠剁洃鍚櫒鍙鐞� Hero 鏁版嵁锛�
+        TeamHero teamHero = null;
+        if (caster is HeroBattleObject heroBattleObject)
+        {
+            teamHero = heroBattleObject.teamHero;
+        }
+        // 鍛芥牸閲婃斁鎶�鑳芥椂 teamHero 涓� null锛岀洃鍚櫒浼氭纭鐞嗭紙宸叉湁 null 妫�鏌ワ級
         EventBroadcast.Instance.Broadcast<string, SkillConfig, TeamHero>(EventName.BATTLE_CAST_SKILL, guid, skillConfig, teamHero);
 
-        if (skillConfig.SkinllSFX1 != 0)
+        if (skillSkinConfig.SkinllSFX1 != 0)
         {
-            battleField.soundManager.PlayEffectSound(skillConfig.SkinllSFX1, false);
+            battleField.soundManager.PlayEffectSound(skillSkinConfig.SkinllSFX1, false);
         }
 
         if (caster != null)
@@ -274,7 +297,7 @@
         HighLightAllTargets();
 
         // 鏍规嵁閲婃斁妯″紡鎵ц鐩稿簲閫昏緫
-        switch (skillConfig.castMode)
+        switch (skillSkinConfig.castMode)
         {
             case SkillCastMode.None:
             case SkillCastMode.Self:
@@ -293,7 +316,7 @@
                 DashCast(OnAttackFinish);
                 break;
             default:
-                Debug.LogError("寮哄埗缁撴潫鎶�鑳� 鏆傛椂涓嶆敮鎸佸叾浠栫殑鏂瑰紡閲婃斁 鏈夐渶姹俻lease鑱旂郴绛栧垝 鎶�鑳絠d:" + skillConfig.SkillID + " cast position " + skillConfig.CastPosition);
+                Debug.LogError("寮哄埗缁撴潫鎶�鑳� 鏆傛椂涓嶆敮鎸佸叾浠栫殑鏂瑰紡閲婃斁 鏈夐渶姹俻lease鑱旂郴绛栧垝 鎶�鑳絠d:" + skillConfig.SkillID + " cast position " + skillSkinConfig.CastPosition);
                 ForceFinished();
                 break;
         }
@@ -303,7 +326,7 @@
     {
         if (hintConfig != null)
         {
-            battleObject.heroInfoBar.ShowTips(((char)hintConfig.prefix).ToString(), true, false, 1.25f);
+            battleObject.ShowTips(((char)hintConfig.prefix).ToString(), true, false, 1.25f);
         }
     }
 
@@ -317,7 +340,7 @@
     // 瀵规晫鏂归噴鏀炬妧鑳斤細绉诲姩鍒版晫鏂瑰尯鍩熻繘琛屾敾鍑�
     protected void CastToEnemy()
     {
-        RectTransform target = battleField.GetTeamNode(caster.GetEnemyCamp(), skillConfig);
+        RectTransform target = battleField.GetTeamNode(caster.GetEnemyCamp(), skillSkinConfig);
         ExecuteMoveAndCastSequence(target, () =>
         {
             if (skillConfig.ClientTriggerTiming == 1)
@@ -327,7 +350,7 @@
             else
             {
                 // ShadowIllutionCreate(true);
-                MoveToTarget(battleField.GetTeamNode(caster.Camp, caster.teamHero.positionNum), Vector2.zero, () =>
+                MoveToTarget(battleField.GetTeamNode(caster.Camp, caster.GetPositionNum()), Vector2.zero, () =>
                 {
                     // ShadowIllutionCreate(false);
                     OnAttackFinish();
@@ -352,7 +375,7 @@
 
         ExecuteMoveAndCastSequence(targetTrans, () =>
         {
-            RectTransform rectTransform = battleField.GetTeamNode(caster.Camp, caster.teamHero.positionNum);
+            RectTransform rectTransform = battleField.GetTeamNode(caster.Camp, caster.GetPositionNum());
             // ShadowIllutionCreate(true);
             MoveToTarget(rectTransform, Vector2.zero, () =>
             {
@@ -365,7 +388,7 @@
     // 瀵瑰弸鏂归噴鏀炬妧鑳斤細绉诲姩鍒板弸鏂瑰尯鍩熻繘琛屾不鐤楁垨澧炵泭
     protected void CastToAllies()
     {
-        RectTransform target = battleField.GetTeamNode(caster.Camp, skillConfig);
+        RectTransform target = battleField.GetTeamNode(caster.Camp, skillSkinConfig);
         ExecuteMoveAndCastSequence(target, () =>
         {
             if (skillConfig.ClientTriggerTiming == 1)
@@ -375,7 +398,7 @@
             else
             {
                 // ShadowIllutionCreate(true);
-                MoveToTarget(battleField.GetTeamNode(caster.Camp, caster.teamHero.positionNum), Vector2.zero, () =>
+                MoveToTarget(battleField.GetTeamNode(caster.Camp, caster.GetPositionNum()), Vector2.zero, () =>
                 {
                     // ShadowIllutionCreate(false);
                     OnAttackFinish();
@@ -388,11 +411,11 @@
     private void ExecuteMoveAndCastSequence(RectTransform target, Action onReturnComplete)
     {
         ShadowIllutionCreate(true);
-        MoveToTarget(target, new Vector2(skillConfig.CastDistance, 0), () =>
+        MoveToTarget(target, new Vector2(skillSkinConfig.CastDistance, 0), () =>
         {
-            if (skillConfig.CastDistance < 9999 && skillConfig.SkinllSFX2 != 0)
+            if (skillSkinConfig.CastDistance < 9999 && skillSkinConfig.SkinllSFX2 != 0)
             {
-                battleField.soundManager.PlayEffectSound(skillConfig.SkinllSFX2, false);
+                battleField.soundManager.PlayEffectSound(skillSkinConfig.SkinllSFX2, false);
             }
 
             TurnBack(() =>
@@ -421,16 +444,16 @@
     // 绉诲姩鍒扮洰鏍囦綅缃細澶勭悊瑙掕壊鐨勭Щ鍔ㄥ姩鐢诲拰閫昏緫
     protected void MoveToTarget(RectTransform target, Vector2 offset, Action _onComplete = null, float speed = 750f)
     {
-        if (skillConfig.CastDistance >= 9999)
+        if (skillSkinConfig.CastDistance >= 9999)
         {
             _onComplete?.Invoke();
             return;
         }
 
-        caster.motionBase.PlayAnimation(MotionName.run, true);
-        var tweener = BattleUtility.MoveToTarget(caster.heroRectTrans, target, offset, () =>
+        caster.PlayAnimation(MotionName.run, true);
+        var tweener = BattleUtility.MoveToTarget(caster.GetRectTransform(), target, offset, () =>
         {
-            caster.motionBase.PlayAnimation(MotionName.idle, true);
+            caster.PlayAnimation(MotionName.idle, true);
             _onComplete?.Invoke();
         }, speed);
         battleField.battleTweenMgr.OnPlayTween(tweener);
@@ -439,11 +462,9 @@
     // 杞韩閫昏緫锛氭牴鎹妧鑳介厤缃鐞嗚鑹茶浆鍚�
     protected void TurnBack(Action _onComplete, float forward)
     {
-        if (skillConfig.CastDistance < 0)
+        if (skillSkinConfig.CastDistance < 0)
         {
-            Vector3 scale = caster.heroGo.transform.localScale;
-            scale.x = Mathf.Abs(scale.x) * forward;
-            caster.heroGo.transform.localScale = scale;
+            caster.SetFacing(forward);
         }
         _onComplete?.Invoke();
     }
@@ -453,7 +474,7 @@
     {
         TurnBack(null, 1f);
         OnAllAttackMoveFinished();
-        caster.motionBase.PlayAnimation(MotionName.idle, true);
+        caster.PlayAnimation(MotionName.idle, true);
     }
 
     // 鎵�鏈夋敾鍑荤Щ鍔ㄥ畬鎴愬悗鐨勫鐞嗭細鎭㈠UI鏄剧ず鐘舵��
@@ -464,7 +485,7 @@
         foreach (BattleObject bo in allList)
         {
             bo.layerMgr.SetFront();
-            bo.heroInfoBar.SetActive(true);
+            bo.GetHeroInfoBar()?.SetActive(true);
         }
         battleField.battleRootNode.skillMaskNode.SetActive(false);
     }
@@ -472,7 +493,7 @@
     // 鎵ц鎶�鑳介噴鏀惧姩鐢诲拰閫昏緫锛氭挱鏀炬柦娉曞姩浣滃苟鎻愪緵鍥炶皟
     protected TrackEntry CastImpl(Action onComplete = null)
     {
-        return caster.motionBase.PlaySkillAnimation(skillConfig, this, tagUseSkillAttack.BattleType == 4, onComplete);
+        return caster.PlaySkillAnimation(skillConfig, skillSkinConfig, this, tagUseSkillAttack.BattleType == 4, onComplete);
     }
 
     // 鎶�鑳藉紑濮嬪洖璋冿細澶勭悊姝讳骸銆佸瓙鎶�鑳姐�佹妧鑳芥晥鏋滃垵濮嬪寲
@@ -490,7 +511,7 @@
         //  鍐嶅鐞� 鍐呭祵鎶�鑳�
         ProcessSubSkill();
 
-        skillEffect = SkillEffectFactory.CreateSkillEffect(this, caster, skillConfig, tagUseSkillAttack);
+        skillEffect = SkillEffectFactory.CreateSkillEffect(this, caster, skillConfig, skillSkinConfig, tagUseSkillAttack);
         skillEffect.Play(OnHitTargets);
         
 
@@ -509,7 +530,12 @@
             if (pack is HB427_tagSCUseSkill skillPack)
             {
                 SkillConfig ssc = SkillConfig.Get((int)skillPack.SkillID);
-                if (!string.IsNullOrEmpty(ssc.SkillMotionName))
+                SkillSkinConfig sscSkin = ssc.GetOriginSkinConfig();
+                if (!string.IsNullOrEmpty(sscSkin.SkillMotionName))
+                {
+                    break;
+                }
+                if (ssc.SkillType == 8)
                 {
                     break;
                 }
@@ -525,14 +551,25 @@
             {
                 HB427_tagSCUseSkill sp = combinePack.GetMainHB427SkillPack();
                 SkillConfig ssc = SkillConfig.Get((int)sp.SkillID);
-
-                if (!string.IsNullOrEmpty(ssc.SkillMotionName))
+                SkillSkinConfig sscSkin = ssc.GetOriginSkinConfig();
+                if (!string.IsNullOrEmpty(sscSkin.SkillMotionName))
                 {
                     break;
                 }
+
+                if (ssc.SkillType == 8)
+                {
+                    break;
+                }
+                
                 SkillRecordAction skillRecordAction = combinePack.CreateSkillAction();
                 allSubSkills.Add((sp.packUID, skillRecordAction));
                 removePackList.Add(pack);
+
+                if (skillRecordAction.useParentRecordPlayer)
+                {
+                    break;
+                }
             }
         }
 
@@ -546,11 +583,13 @@
 
         foreach (var (packUID, recordAction) in allSubSkills)
         {
-            battleField.recordPlayer.ImmediatelyPlay(recordAction);
-
-            if (recordAction.IsNeedWaiting())
+            if (recordAction.useParentRecordPlayer)
             {
-                currentWaitingSkill.Add(recordAction);
+                ownRecordAction.GetInnerRecordPlayer().PlayRecord(recordAction, ownRecordAction);
+            }
+            else
+            {
+                ownRecordAction.GetInnerRecordPlayer().ImmediatelyPlay(recordAction);
             }
         }
     }
@@ -639,7 +678,7 @@
         var highlightSet = new HashSet<BattleObject>(highlightList);
 
         // 鍏堟妸鏂芥硶鑰呯殑 InfoBar 闅愯棌锛堝師閫昏緫淇濈暀锛�
-        caster.heroInfoBar.SetActive(false);
+        caster.GetHeroInfoBar()?.SetActive(false);
 
         foreach (BattleObject bo in allList)
         {
@@ -656,7 +695,7 @@
             }
 
             // 鐩爣锛堝惈 HurtListEx锛夐兘搴旀樉绀� InfoBar
-            bo.heroInfoBar.SetActive(isTarget);
+            bo.GetHeroInfoBar()?.SetActive(isTarget);
         }
 
         battleField.battleRootNode.skillMaskNode.SetActive(true);
@@ -666,7 +705,7 @@
     // 鍛戒腑鐩爣鍥炶皟锛氬鐞嗘墍鏈夎鍛戒腑鐨勭洰鏍囷紙鍖呮嫭涓荤洰鏍囥�佸脊灏勭洰鏍囥�佹簠灏勭洰鏍囷級
     protected virtual void OnHitTargets(int _hitIndex, List<HB427_tagSCUseSkill.tagSCUseSkillHurt> hitList)
     {
-        // Debug.LogError($"Skill {skillConfig.SkillID} hit targets _hitIndex: {_hitIndex} hit {string.Join(", ", hitList.Select(h => h.ObjID + ":" + battleField.battleObjMgr.GetBattleObject((int)h.ObjID)?.teamHero.name))}");
+        // Debug.LogError($"Skill {skillConfig.SkillID} hit targets _hitIndex: {_hitIndex} hit {string.Join(", ", hitList.Select(h => h.ObjID + ":" + battleField.battleObjMgr.GetBattleObject((int)h.ObjID)?.GetName()))}");
 
         //  閫犳垚浼ゅ鍓嶅厛澶勭悊琛�閲忓埛鏂板寘
         HandleRefreshHP();
@@ -773,8 +812,8 @@
                         DamageNumConfig hintConfig = DamageNumConfig.Get(BattleConst.BreakArmor);
                         Hint(battleObject, hintConfig);
                         battleField.battleEffectMgr.PlayEffect(battleObject, 
-                            BattleConst.BreakArmorEffectID, battleObject.heroRectTrans, battleObject.Camp, 
-                            battleObject.teamHero.modelScale);
+                            BattleConst.BreakArmorEffectID, battleObject.GetRectTransform(), battleObject.Camp, 
+                            battleObject.GetModelScale());
                     }
                 }
                 else if ((hurt.AttackTypes & (int)DamageType.Parry) == (int)DamageType.Parry)
@@ -785,8 +824,8 @@
                         DamageNumConfig hintConfig = DamageNumConfig.Get(BattleConst.Parry);
                         Hint(battleObject, hintConfig);
                         battleField.battleEffectMgr.PlayEffect(battleObject, 
-                            BattleConst.ParryEffectID, battleObject.heroRectTrans, battleObject.Camp, 
-                            battleObject.teamHero.modelScale);
+                            BattleConst.ParryEffectID, battleObject.GetRectTransform(), battleObject.Camp, 
+                            battleObject.GetModelScale());
                     }
                 }
             }
@@ -814,12 +853,12 @@
 #endif
 
         // 鍏堣皟鐢ㄧ洰鏍囧彈浼�
-        DeathRecordAction recordAc = target.Hurt(hurtParam, parentRecordAction);
+        DeathRecordAction recordAc = target.Hurt(hurtParam, ownRecordAction);
 
         if (null != recordAc)
         {
             tempDeadPackList.Remove(hurtParam.hurter.hurtObj.ObjID);
-            battleField.recordPlayer.ImmediatelyPlay(recordAc, parentRecordAction, true);
+            ownRecordAction.GetInnerRecordPlayer().ImmediatelyPlay(recordAc, ownRecordAction, true);
             currentWaitingSkill.Add(recordAc);
         }
         
@@ -862,7 +901,7 @@
 #if UNITY_EDITOR
     private void PrintHurtParamDebugInfo(BattleHurtParam hurtParam)
     {
-        bool isLastHit = hurtParam.hitIndex >= hurtParam.skillConfig.DamageDivide.Length - 1;
+        bool isLastHit = hurtParam.hitIndex >= hurtParam.skillSkinConfig.DamageDivide.Length - 1;
         
         long currentHitDamage = hurtParam.hurter.damageList != null ? hurtParam.hurter.damageList.Sum() : 0;
         long currentHitSuckHp = hurtParam.caster.suckHpList != null ? hurtParam.caster.suckHpList.Sum() : 0;
@@ -874,10 +913,10 @@
         
         BattleDebug.LogError(
             (hurtParam.caster.casterObj.Camp == BattleCamp.Red ? "銆愮孩鏂硅鍔ㄣ��" : "銆愯摑鏂硅鍔ㄣ�� ") +
-            $"鏀诲嚮鑰�: {hurtParam.caster.casterObj.teamHero.name} (ObjID:{hurtParam.caster.casterObj.ObjID})\n" +
-            $"鐩爣: {hurtParam.hurter.hurtObj.teamHero.name} (ObjID:{hurtParam.hurter.hurtObj.ObjID})\n" +
+            $"鏀诲嚮鑰�: {hurtParam.caster.casterObj.GetName()} (ObjID:{hurtParam.caster.casterObj.ObjID})\n" +
+            $"鐩爣: {hurtParam.hurter.hurtObj.GetName()} (ObjID:{hurtParam.hurter.hurtObj.ObjID})\n" +
             $"鎶�鑳�: {hurtParam.skillConfig.SkillName} (ID:{hurtParam.skillConfig.SkillID})\n" +
-            $"鍑绘暟: 绗瑊hurtParam.hitIndex + 1}鍑� / 鍏眥hurtParam.skillConfig.DamageDivide.Length}鍑�" + (isLastHit ? " [鏈�鍚庝竴鍑籡" : " [涓棿鍑籡") + "\n" +
+            $"鍑绘暟: 绗瑊hurtParam.hitIndex + 1}鍑� / 鍏眥hurtParam.skillSkinConfig.DamageDivide.Length}鍑�" + (isLastHit ? " [鏈�鍚庝竴鍑籡" : " [涓棿鍑籡") + "\n" +
             $"\n" +
             $"========== 鐩爣鍙椾激鏁版嵁 ==========\n" +
             $"浼ゅ: {currentHitDamage} / 鎬讳激瀹�: {totalDamage}\n" +
@@ -909,7 +948,7 @@
             // 銆愪娇鐢� parentRecordAction.innerRecordPlayer銆�
             // 鍘熷洜锛欻P鍒锋柊鍖呮槸鎶�鑳藉唴閮ㄤ骇鐢熺殑锛屽簲璇ョ敱褰撳墠SkillRecordAction鐨刬nnerRecordPlayer绠$悊
             // 杩欐牱鍙互纭繚HP鍒锋柊涓庢妧鑳界殑鐢熷懡鍛ㄦ湡缁戝畾锛孎orceFinish鏃朵竴骞跺鐞�
-            PackageRegeditEx.DistributeToRecordAction(refreshPack, parentRecordAction);
+            PackageRegeditEx.DistributeToRecordAction(refreshPack, ownRecordAction);
             packList.Remove(refreshPack);
         }
     }
@@ -975,7 +1014,7 @@
             // 銆愪娇鐢� parentRecordAction.innerRecordPlayer銆�
             // 鍘熷洜锛氭帀钀藉寘鏄妧鑳芥晥鏋滅殑涓�閮ㄥ垎锛屽簲璇ョ敱褰撳墠SkillRecordAction绠$悊
             // 鎺夎惤鍖呯殑鍒嗗彂涓庢妧鑳藉畬鎴愮粦瀹氾紝纭繚鍦ㄦ妧鑳紽orceFinish鏃舵纭鐞�
-            PackageRegeditEx.DistributeToRecordAction(_dropPack, parentRecordAction);
+            PackageRegeditEx.DistributeToRecordAction(_dropPack, ownRecordAction);
             packList.Remove(_dropPack);
         }
 
@@ -1005,7 +1044,7 @@
             
             BattleDrops battleDrops = new BattleDrops()
             {
-                rectTransform = deadTarget.heroRectTrans,
+                rectTransform = deadTarget.GetRectTransform(),
                 dropItemPackIndex = itemIndexList,
                 expDrops = expAssign[i]
             };
@@ -1183,7 +1222,7 @@
         if (moveFinished)
         {
             //  濡傛灉鎶�鑳芥湁鍔ㄧ敾锛圫killMotionName涓嶄负绌猴級锛岄渶瑕佺瓑寰呭姩鐢绘挱鏀惧畬鎴�
-            if (skillConfig != null && !string.IsNullOrEmpty(skillConfig.SkillMotionName))
+            if (skillSkinConfig != null && !string.IsNullOrEmpty(skillSkinConfig.SkillMotionName))
             {
                 if (!isMotionCompleted)
                 {
@@ -1233,6 +1272,7 @@
             return false;
         }
 
+
         // 妫�鏌ユ渶缁堝畬鎴愮姸鎬�
         if (isFinished && moveFinished)
         {
@@ -1243,7 +1283,7 @@
             }
 
             //  濡傛灉鑷繁鍐呴儴鐨剅ecora action鐨� inner record player杩樻湁娌℃墽琛屽畬鐨勫寘 涔熸槸杩斿洖false
-            if (parentRecordAction != null && parentRecordAction.GetInnerRecordPlayer().IsPlaying())
+            if (ownRecordAction != null && ownRecordAction.GetInnerRecordPlayer().IsPlaying())
             {
                 return false;
             }
@@ -1254,16 +1294,16 @@
                 battleField.RemoveCastingSkill(caster.ObjID, this);
                 
                 //  浼犻�抪arentRecordAction锛岃姝讳骸鎶�鑳界瓑寰呭綋鍓嶆妧鑳藉畬鎴�
-                DeathRecordAction recordAction = battleField.OnObjsDead(new List<BattleDeadPack>(tempDeadPackList.Values));
+                DeathRecordAction recordAction = battleField.OnObjsDead(new List<BattleDeadPack>(tempDeadPackList.Values), null, ownRecordAction);
                 if (null != recordAction)
                 {
-                    parentRecordAction.GetInnerRecordPlayer().ImmediatelyPlay(recordAction);
+                    ownRecordAction.GetInnerRecordPlayer().ImmediatelyPlay(recordAction);
                     tempDeadPackList.Clear();
                     return false;
                 }
             }
 
-            return true;
+            return !ownRecordAction.GetInnerRecordPlayer().IsPlaying();
         }
 
         return false;
@@ -1286,8 +1326,9 @@
         RecordAction rc = battleField.OnObjsDead(new List<BattleDeadPack>(tempDeadPackList.Values));
         if (null != rc)
         {
-            parentRecordAction.GetInnerRecordPlayer().ImmediatelyPlay(rc);
+            ownRecordAction.GetInnerRecordPlayer().ImmediatelyPlay(rc);
         }
+        tempDeadPackList.Clear();
 
         // 1. 寮哄埗缁撴潫鎶�鑳芥晥鏋�
         skillEffect?.ForceFinished();
@@ -1304,36 +1345,22 @@
         }
 
         // 3. 娓呯悊 DOTween 鍔ㄧ敾锛堥槻姝㈢Щ鍔ㄥ洖璋冨湪鎴樻枟缁撴潫鍚庢墽琛岋級
-        if (caster != null && caster.heroRectTrans != null)
+        if (caster != null)
         {
-            DG.Tweening.DOTween.Kill(caster.heroRectTrans);
+            caster.StopMoveAnimation();
         }
 
         // 4. 閲嶇疆鏂芥硶鑰呯姸鎬�
         if (caster != null)
         {
             // 閲嶇疆浣嶇疆鍒板師鐐�
-            if (caster.heroRectTrans != null)
-            {
-                caster.heroRectTrans.anchoredPosition = Vector2.zero;
-            }
+            caster.ResetPosition();
             
             // 閲嶇疆鏈濆悜
-            if (caster.heroGo != null)
-            {
-                Vector3 scale = caster.heroGo.transform.localScale;
-                scale.x = Mathf.Abs(scale.x);
-                caster.heroGo.transform.localScale = scale;
-            }
+            caster.ResetFacing();
 
             // 鍙栨秷骞诲奖鏁堟灉
-            caster.motionBase?.ShowIllusionShadow(false);
-            
-            // 鎾斁寰呮満鍔ㄧ敾锛堝鏋滆繕娲荤潃锛�
-            if (!caster.teamHero.isDead)
-            {
-                caster.motionBase?.ResetForReborn(false);
-            }
+            caster.ShowIllusionShadow(false);
         }
 
         // 5. 鎭㈠ UI 鐘舵��
@@ -1346,7 +1373,7 @@
                 foreach (BattleObject bo in allList)
                 {
                     bo.layerMgr?.SetFront();
-                    bo.heroInfoBar?.SetActive(true);
+                    bo.GetHeroInfoBar()?.SetActive(true);
                 }
             }
             
@@ -1458,11 +1485,20 @@
 
             if (pack is CustomHB426CombinePack combinePack && combinePack.startTag.Tag.StartsWith("Skill_"))
             {
-                BattleDebug.LogError("other skill casting " + combinePack.startTag.Tag);
                 var skillRecordAction = combinePack.CreateSkillAction();
                 skillRecordAction.fromSkill = this;
                 currentWaitingSkill.Add(skillRecordAction);
-                parentRecordAction.GetInnerRecordPlayer().PlayRecord(skillRecordAction);
+
+                //  闇�瑕佺粰鐪熸parent鎾殑
+                if (skillRecordAction.useParentRecordPlayer && skillRecordAction.parentSkillAction != null)
+                {
+                    skillRecordAction.parentSkillAction.GetInnerRecordPlayer().PlayRecord(skillRecordAction);
+                }
+                else
+                {
+                    ownRecordAction.GetInnerRecordPlayer().PlayRecord(skillRecordAction);
+                }
+
                 return false;
             }
             else if (IsBuffPack(pack))
@@ -1495,7 +1531,7 @@
                 // 銆愪娇鐢� parentRecordAction.innerRecordPlayer銆�
                 // 鍘熷洜锛氭妧鑳芥墽琛岃繃绋嬩腑鐨勫寘锛圔uff銆佸睘鎬у埛鏂扮瓑锛夋槸鎶�鑳芥晥鏋滅殑涓�閮ㄥ垎
                 // 搴旇鐢盨killRecordAction鐨刬nnerRecordPlayer绠$悊锛岀‘淇濅笌鎶�鑳界敓鍛藉懆鏈熶竴鑷�
-                PackageRegeditEx.DistributeToRecordAction(pack, parentRecordAction);
+                PackageRegeditEx.DistributeToRecordAction(pack, ownRecordAction);
             }
         }
 
@@ -1540,7 +1576,11 @@
                 BattleObject battleObj = battleField.battleObjMgr.GetBattleObject((int)buffRefresh.ObjID);
                 if (battleObj != null)
                 {
-                    battleObj.buffMgr.RefreshBuff(buffRefresh, true);
+                    var buffMgr = battleObj.GetBuffMgr();
+                    if (buffMgr != null) // 鍛芥牸涓嶆湁 buff 绠$悊鍣�
+                    {
+                        buffMgr.RefreshBuff(buffRefresh, true);
+                    }
                 }
             }
             else if (pack is HB429_tagSCBuffDel buffDel)
@@ -1548,7 +1588,11 @@
                 BattleObject battleObj = battleField.battleObjMgr.GetBattleObject((int)buffDel.ObjID);
                 if (battleObj != null)
                 {
-                    battleObj.buffMgr.RemoveBuff(buffDel, false);
+                    var buffMgr = battleObj.GetBuffMgr();
+                    if (buffMgr != null) // 鍛芥牸涓嶆湁 buff 绠$悊鍣�
+                    {
+                        buffMgr.RemoveBuff(buffDel, false);
+                    }
                 }
             }
         }
@@ -1566,7 +1610,7 @@
             // 銆愪娇鐢� parentRecordAction.innerRecordPlayer銆�
             // 鍘熷洜锛欱uff鍖呮槸鎶�鑳芥晥鏋滅殑鏍稿績缁勬垚閮ㄥ垎锛屽簲璇ョ敱SkillRecordAction绠$悊
             // 鍗充娇鏄己鍒跺垎鍙戠殑鎯呭喌锛屼篃瑕佷繚鎸佸湪姝g‘鐨凴ecordAction涓婁笅鏂囦腑
-            PackageRegeditEx.DistributeToRecordAction(pack, parentRecordAction);
+            PackageRegeditEx.DistributeToRecordAction(pack, ownRecordAction);
         }
     }
 
@@ -1582,7 +1626,7 @@
             return false;
         }
 
-        if (string.IsNullOrEmpty(skillConfig.SkillMotionName))
+        if (string.IsNullOrEmpty(skillSkinConfig.SkillMotionName))
         {
             return true;
         }

--
Gitblit v1.8.0