hch
2025-10-11 8730d119e7ccb0ea69b996cb76ee059cee0e07f0
Main/System/Battle/Skill/SkillBase.cs
@@ -51,7 +51,6 @@
      packList = _packList;
      // Debug.LogError("start a skill id " + skillConfig.SkillID + " caster " + caster.teamHero.heroId + " pos " + caster.teamHero.positionNum + " camp " + caster.Camp);
   }
   public virtual void Run()
@@ -315,6 +314,7 @@
   //   技能开始
   public void OnSkillStart()
   {
      HandleDead();
      skillEffect = SkillEffectFactory.CreateSkillEffect(
            caster,
            skillConfig,
@@ -361,7 +361,8 @@
   {   
      skillEffect.OnFinalFrameEnd();
      HandleDead();
      //   转移到死亡包 battleobject.hurt 最后一击的时候播放
   }
@@ -369,6 +370,8 @@
   protected void HighLightAllTargets()
   {
      caster.layerMgr.SetSortingOrder(BattleConst.ActiveHeroActionSortingOrder);
      if (skillConfig.FuncType != 2)
         return;
@@ -408,7 +411,6 @@
         }
      }
      caster.layerMgr.SetSortingOrder(BattleConst.ActiveHeroActionSortingOrder);
      battleField.battleRootNode.skillMaskNode.SetActive(true);
      battleField.battleRootNode.SetSortingOrder();
@@ -441,7 +443,6 @@
   {
      // 伤害分布 (万分比)
      // Debug.LogError("skillConfig.DamageDivide.Count " + skillConfig.DamageDivide.Length + " _hitIndex " + _hitIndex);
      bool isLastHit = _hitIndex >= skillConfig.DamageDivide.Length - 1;
      int[] damageDivide = skillConfig.DamageDivide[_hitIndex];
      long totalDamage = GeneralDefine.GetFactValue(hurt.HurtHP, hurt.HurtHPEx);
@@ -460,17 +461,20 @@
      //   TODO YYL AttackTypes  要表现成什么样呢? 支持多种类型并存,如无视防御且暴击同时被格挡,二进制或运算最终值;0-失败;1-普通;2-回血;5-格挡;6-无视防御;7-暴击;9-闪避
      List<HB422_tagMCTurnFightObjDead> deadPacks = BattleUtility.FindDeadPack(packList);
      bool isTargetDead = deadPacks.Exists(p => p.ObjID == target.ObjID);
      bool playAnimation = !(isLastHit && isTargetDead);
      target.Hurt(damageList, totalDamage, hurt, skillConfig, playAnimation);
      int objID = (int)target.ObjID;
      tempDropList.TryGetValue(objID, out BattleDrops battleDrops);
      tempDeadPackList.TryGetValue(objID, out HB422_tagMCTurnFightObjDead deadPack);
      target.Hurt(damageList, totalDamage, hurt, skillConfig, _hitIndex, battleDrops, deadPack);
      //   TODO YYL 这里是要做统一计算后再hurt跟suckhp还是怎样
      caster.SuckHp(hurt.SuckHP, skillConfig);//   吸血
      caster.HurtByReflect(hurt.BounceHP, skillConfig);// 反弹伤害
   }
   private Dictionary<int, BattleDrops> tempDropList = new Dictionary<int, BattleDrops>();
   private Dictionary<int, HB422_tagMCTurnFightObjDead> tempDeadPackList = new Dictionary<int, HB422_tagMCTurnFightObjDead>();
   protected void HandleDead()
   {
@@ -519,17 +523,17 @@
            dropItemPackIndex = itemModelDropsIndexList,
            expDrops = expAssign[i]
         };
         deadTarget.PushDropItems(battleDrops);
         tempDropList.Add((int)deadPackList[i].ObjID, battleDrops);
         // deadTarget.PushDropItems(battleDrops);
      }
      // 分发死亡包
      battleField.OnObjsDead(new List<HB422_tagMCTurnFightObjDead>(deadPackList));
      // battleField.OnObjsDead(new List<HB422_tagMCTurnFightObjDead>(deadPackList));
      foreach (var deadPack in deadPackList)
      {
         tempDeadPackList.Add((int)deadPack.ObjID, deadPack);
         packList.Remove(deadPack);
      }
      deadPackList.Clear();
   }
@@ -692,7 +696,6 @@
         otherSkillAction.ForceFinish();
         otherSkillAction = null;
      }
      HandleDead();
      isFinished = true;
      moveFinished = true;
      isPlay = true;