yyl
1 天以前 778218d5d3562d8287f0612f83b8958daba8548e
125 战斗 最后一击死亡处理
2个文件已修改
51 ■■■■ 已修改文件
Main/System/Battle/BattleObject/BattleObject.cs 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Battle/Skill/SkillBase.cs 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Battle/BattleObject/BattleObject.cs
@@ -268,14 +268,32 @@
        return true;
    }
    public virtual void Hurt(List<long> damageValues, long _totalDamage, HB427_tagSCUseSkill.tagSCUseSkillHurt hurt, SkillConfig skillConfig, bool playAnimation = true)
    public virtual void Hurt(List<long> damageValues, long _totalDamage,
        HB427_tagSCUseSkill.tagSCUseSkillHurt hurt, SkillConfig skillConfig, bool isLastHit,
        BattleDrops battleDrops, HB422_tagMCTurnFightObjDead deadPack)
    {
        BattleDmgInfo dmgInfo = PopDamage(damageValues, _totalDamage, hurt, skillConfig);
        if ((dmgInfo.IsType(DamageType.Damage) || dmgInfo.IsRealdamage()) && playAnimation)
        bool isFatalAttack = (null != deadPack) && isLastHit;
        if (isFatalAttack)
        {
            motionBase.PlayAnimation(MotionName.hit, false);
            if (null != battleDrops)
            {
                PushDropItems(battleDrops);
            }
            battleField.OnObjsDead(new List<HB422_tagMCTurnFightObjDead>() { deadPack });
        }
        else
        {
            if ((dmgInfo.IsType(DamageType.Damage) || dmgInfo.IsRealdamage()))
            {
                motionBase.PlayAnimation(MotionName.hit, false);
            }
        }
    }
    public void SuckHp(uint suckHP, SkillConfig skillConfig)
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 最后一击的时候播放
    }
@@ -461,17 +462,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 notPlayHitAnime = isLastHit && isTargetDead;
        target.Hurt(damageList, totalDamage, hurt, skillConfig, !notPlayHitAnime);
        int objID = (int)target.ObjID;
        tempDropList.TryGetValue(objID, out BattleDrops battleDrops);
        tempDeadPackList.TryGetValue(objID, out HB422_tagMCTurnFightObjDead deadPack);
        target.Hurt(damageList, totalDamage, hurt, skillConfig, isLastHit, 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()
    {
@@ -520,17 +524,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();
    }
@@ -693,7 +697,6 @@
            otherSkillAction.ForceFinish();
            otherSkillAction = null;
        }
        HandleDead();
        isFinished = true;
        moveFinished = true;
        isPlay = true;