少年修仙传客户端代码仓库
client_Hale
2019-05-22 8c81100c8ff5d2e90dabcafbec59a5d45f9841c8
Fight/Actor/Skill/AttackHandler.cs
@@ -11,6 +11,7 @@
    public static void HandlerAttackTarget(GActorFight attacker,
                                           GActorFight target,
                                           int hurtValue,
                                           int realHurtValue,
                                           byte attackType,
                                           int skillID,
                                           int soConfigID,
@@ -132,7 +133,13 @@
            if (CheckPull(attacker, target, soConfig.bodyControlId))
            {
                target.StartBeatBack(attacker.ServerInstID, soConfig.bodyControlId, MathUtility.ForwardXZ(target.Pos, attacker.Pos), (HurtAttackType)attackType);
                float _extDis = 0;
                SkillHelper.EffectValue _effectValue;
                if (_skill.skillInfo.effectValue.TryGetValue(4015, out _effectValue))
                {
                    _extDis += _effectValue.value1 * .5f;
                }
                target.StartBeatBack(attacker.ServerInstID, soConfig.bodyControlId, MathUtility.ForwardXZ(target.Pos, attacker.Pos), (HurtAttackType)attackType, _extDis);
            }
        }
@@ -234,7 +241,7 @@
                    if (_doReduceHp)
                    {
                        target.ActorInfo.ReduceHp((uint)hurtValue);
                        target.ActorInfo.ReduceHp((uint)realHurtValue);
                    }
                    if (target.ServerInstID == PlayerDatas.Instance.baseData.PlayerID)
@@ -348,6 +355,7 @@
        bool _isZhuxianHit = false;
        SkillHelper.EffectValue _effectValue;
        SkillHelper.SkillInfo _skillInfo;
        float _aAtkSkillPer = 0;
        int _atkSkillValue = 0;
@@ -550,7 +558,7 @@
        }
        #region 4094,4507 增加暴击概率
        if (skill.skillInfo.effectValue.TryGetValue(4094, out _effectValue))
        if (attacker.SkillMgr.TryGetPassiveEffectValue(4094, out _effectValue, out _skillInfo))
        {
            bool _vaild = true;
            if (_effectValue.value2 != 0)
@@ -566,7 +574,7 @@
            }
        }
        if (skill.skillInfo.effectValue.TryGetValue(4507, out _effectValue))
        if (StatusMgr.Instance.TryGetSkillEffectValue(attacker.ServerInstID, 4507, out _effectValue))
        {
            bool _vaild = true;
            if (_effectValue.value2 == 1)
@@ -586,12 +594,35 @@
            }
            if (_vaild)
            {
                if (_vaild)
                {
                    _aSuperHitRate += _effectValue.value1;
                }
                _aSuperHitRate += _effectValue.value1;
            }
        }
        if (StatusMgr.Instance.TryGetSkillEffectValue(attacker.ServerInstID, 4526, out _effectValue))
        {
            bool _vaild = true;
            if (_effectValue.value2 == 1)
            {
                if (attacker.SelectTarget == null
                 || attacker.SelectTarget.ServerInstID != target.ServerInstID)
                {
                    _vaild = false;
                }
            }
            if (_effectValue.value3 == 1)
            {
                if (skill.skillInfo.config.FuncType != (int)E_SkillFuncType.NormalAttack
                 && skill.skillInfo.config.FuncType != (int)E_SkillFuncType.FaBaoActiveSkill)
                {
                    _vaild = false;
                }
            }
            if (_vaild)
            {
                _aZhuXianHitRate += _effectValue.value1;
            }
        }
        #endregion
        _isMiss = IsMiss(_hitRate, _missRate);
@@ -685,7 +716,13 @@
                }
            }
            if (attacker.SkillMgr.TryGetPassiveEffectValue(4083, out _effectValue))
            if (attacker.SkillMgr.TryGetPassiveEffectValue(4075, out _effectValue, out _skillInfo))
            {
                float _val = (PlayerDatas.Instance.extersion.battleValEx1 - 10000) * _effectValue.value1;
                _superHitAdd += _val;
            }
            if (attacker.SkillMgr.TryGetPassiveEffectValue(4083, out _effectValue, out _skillInfo))
            {
                bool _vaild = true;
                if (_effectValue.value2 == 1)
@@ -717,7 +754,7 @@
         || skill.skillInfo.config.HurtType == 0)
        {
            // 处理本身的技能
            CalculateSkillEffect(attacker, target, skill.skillInfo, ref _aDamagePer, ref _aAtkSkillPer, ref _atkSkillValue, ref _aIceAtk, ref _aFinalHurt, ref _superHitAdd, _isCrit);
            CalculateSkillEffect(attacker, target, skill.skillInfo, ref _aDamagePer, ref _aAtkSkillPer, ref _atkSkillValue, ref _aIceAtk, ref _aFinalHurt, ref _superHitAdd, ref _aDamagePVE, _isCrit);
            // 处理sp技能
            List<SkillHelper.SkillInfo> _spSkillList = SkillHelper.Instance.GetSpSkill(skill.id);
@@ -726,7 +763,7 @@
            {
                for (int i = 0; i < _spSkillList.Count; ++i)
                {
                    CalculateSkillEffect(attacker, target, _spSkillList[i], ref _aDamagePer, ref _aAtkSkillPer, ref _atkSkillValue, ref _aIceAtk, ref _aFinalHurt, ref _superHitAdd, _isCrit);
                    CalculateSkillEffect(attacker, target, _spSkillList[i], ref _aDamagePer, ref _aAtkSkillPer, ref _atkSkillValue, ref _aIceAtk, ref _aFinalHurt, ref _superHitAdd, ref _aDamagePVE, _isCrit);
                }
            }
        }
@@ -852,7 +889,8 @@
        }
        SkillHelper.EffectValue _effectValue;
        if (_hero.SkillMgr.TryGetPassiveEffectValue(4081, out _effectValue))
        SkillHelper.SkillInfo _skillInfo;
        if (_hero.SkillMgr.TryGetPassiveEffectValue(4081, out _effectValue, out _skillInfo))
        {
            if (_effectValue.value2 == 1)
            {
@@ -897,16 +935,20 @@
        return actor.ActorInfo.RealHp * 1f / actor.ActorInfo.RealMaxHp;
    }
    private static void CalculateSkillEffect(GActorFight attacker, GActorFight target, SkillHelper.SkillInfo skillInfo,
    private static void CalculateSkillEffect(GActorFight attacker,
                                             GActorFight target,
                                             SkillHelper.SkillInfo skillInfo,
                                             ref int _aDamagePer,
                                             ref float _aAtkSkillPer,
                                             ref int _atkSkillValue,
                                             ref int _aIceAtk,
                                             ref int _aFinalHurt,
                                             ref float _aSuperHitAdd,
                                             ref int _aDamagePVE,
                                             bool _isCrit)
    {
        SkillHelper.EffectValue _effectValue;
        SkillHelper.SkillInfo _skillInfo;
        #region 伤害增加
        if (skillInfo.effectValue.TryGetValue(1062, out _effectValue))
@@ -931,7 +973,39 @@
        if (attacker is GA_Hero)
        {
            if (attacker.SkillMgr.TryGetPassiveEffectValue(4086, out _effectValue))
            if (attacker.SkillMgr.TryGetPassiveEffectValue(4102, out _effectValue, out _skillInfo))
            {
                int _val = _effectValue.value1;
                int _needCount = _effectValue.value2;
                bool _valid = true;
                if (attacker.SkillMgr.TryGetPassiveEffectValue(4092, out _effectValue, out _skillInfo))
                {
                    if (_effectValue.value2 == 0)
                    {
                        if (PlayerDatas.Instance.baseData.yinjiCount != _needCount)
                        {
                            _valid = false;
                        }
                    }
                    else if (_effectValue.value2 == 1)
                    {
                        if (PlayerDatas.Instance.baseData.yinjiCount == 0
                         || PlayerDatas.Instance.baseData.yinjiCount < _effectValue.value1)
                        {
                            _valid = false;
                        }
                    }
                }
                if (_valid)
                {
                    if (PlayerDatas.Instance.baseData.yinjiCount > _needCount)
                    {
                        _aDamagePVE += _val;
                    }
                }
            }
            if (attacker.SkillMgr.TryGetPassiveEffectValue(4086, out _effectValue, out _skillInfo))
            {
                bool _vaild = true;
                if (_effectValue.value3 == 1)
@@ -951,7 +1025,7 @@
                }
            }
            if (attacker.SkillMgr.TryGetPassiveEffectValue(4087, out _effectValue))
            if (attacker.SkillMgr.TryGetPassiveEffectValue(4087, out _effectValue, out _skillInfo))
            {
                if (PlayerDatas.Instance.baseData.yinjiCount > _effectValue.value2)
                {
@@ -959,12 +1033,12 @@
                }
            }
            if (attacker.SkillMgr.TryGetPassiveEffectValue(4088, out _effectValue))
            if (attacker.SkillMgr.TryGetPassiveEffectValue(4088, out _effectValue, out _skillInfo))
            {
                int _per = _effectValue.value1;
                int _needCount = _effectValue.value2;
                bool _valid = true;
                if (attacker.SkillMgr.TryGetPassiveEffectValue(4092, out _effectValue))
                if (attacker.SkillMgr.TryGetPassiveEffectValue(4092, out _effectValue, out _skillInfo))
                {
                    if (_effectValue.value2 == 0)
                    {
@@ -990,7 +1064,7 @@
                }
            }
            if (attacker.SkillMgr.TryGetPassiveEffectValue(4015, out _effectValue))
            if (attacker.SkillMgr.TryGetPassiveEffectValue(4015, out _effectValue, out _skillInfo))
            {
                if (target.ActorInfo.status4012.ContainsKey((byte)_effectValue.value2))
                {
@@ -998,6 +1072,15 @@
                    if (StatusMgr.Instance.IsBurning(target.ServerInstID, _selfSID))
                    {
                        _aAtkSkillPer += _effectValue.value1;
                        if (attacker.SkillMgr.TryGetPassiveEffectValue(4538, out _effectValue, out _skillInfo))
                        {
                            _aDamagePVE += _effectValue.value1;
                        }
                        if (attacker.SkillMgr.TryGetPassiveEffectValue(4002, out _effectValue, out _skillInfo))
                        {
                            _aDamagePVE += _effectValue.value1;
                        }
                    }
                }
            }
@@ -1014,13 +1097,13 @@
                }
            }
            if (attacker.SkillMgr.TryGetPassiveEffectValue(4098, out _effectValue))
            if (attacker.SkillMgr.TryGetPassiveEffectValue(4098, out _effectValue, out _skillInfo))
            {
                var _skillInfo = SkillHelper.Instance.Get(_effectValue.value2);
                if (_skillInfo != null)
                var _skillInfo1 = SkillHelper.Instance.Get(_effectValue.value2);
                if (_skillInfo1 != null)
                {
                    SkillHelper.EffectValue _tmpEffectValue;
                    if (_skillInfo.effectValue.TryGetValue(4012, out _tmpEffectValue))
                    if (_skillInfo1.effectValue.TryGetValue(4012, out _tmpEffectValue))
                    {
                        if (target.ActorInfo.status4012.ContainsKey((byte)_tmpEffectValue.value1))
                        {
@@ -1033,7 +1116,7 @@
                }
            }
            if (attacker.SkillMgr.TryGetPassiveEffectValue(4096, out _effectValue))
            if (attacker.SkillMgr.TryGetPassiveEffectValue(4096, out _effectValue, out _skillInfo))
            {
                if (StatusMgr.Instance.IsExist(target.ServerInstID, _effectValue.value3))
                {
@@ -1044,7 +1127,7 @@
        }
        // 4005 概率增加攻击(技能)伤害万分率
        if (skillInfo.effectValue.TryGetValue(4005, out _effectValue))
        if (attacker.SkillMgr.TryGetPassiveEffectValue(4005, out _effectValue, out _skillInfo))
        {
            if (Random.Range(0, 10000) < _effectValue.value2)
            {
@@ -1059,7 +1142,7 @@
        }
        // 4035 增加技能伤害万分率
        if (skillInfo.effectValue.TryGetValue(4035, out _effectValue))
        if (attacker.SkillMgr.TryGetPassiveEffectValue(4035, out _effectValue, out _skillInfo))
        {
            bool _isValid = true;
            var _mapConfig = MapConfig.Get(PlayerDatas.Instance.baseData.MapID);
@@ -1085,7 +1168,7 @@
        }
        // 4011 暴击时增加技能伤害
        if (skillInfo.effectValue.TryGetValue(4011, out _effectValue))
        if (attacker.SkillMgr.TryGetPassiveEffectValue(4011, out _effectValue, out _skillInfo))
        {
            if (_isCrit)
            {
@@ -1101,7 +1184,7 @@
        }
        // 4015 目标处于XX状态提高技能伤害
        if (skillInfo.effectValue.TryGetValue(4015, out _effectValue))
        if (attacker.SkillMgr.TryGetPassiveEffectValue(4015, out _effectValue, out _skillInfo))
        {
            if (target.ActorInfo.GetStatusCount((byte)_effectValue.value2, attacker.ServerInstID) > 0)
            {
@@ -1117,7 +1200,7 @@
        }
        // 4025 攻击附加真实伤害
        if (skillInfo.effectValue.TryGetValue(4025, out _effectValue))
        if (attacker.SkillMgr.TryGetPassiveEffectValue(4025, out _effectValue, out _skillInfo))
        {
            _aIceAtk += _effectValue.value1;
@@ -1192,7 +1275,7 @@
        #region 暴击伤害增加
        // 4007 暴击时增加暴击值, 增加暴击值万分率, 虚要判断自己身上是否有配置的buff
        if (skillInfo.effectValue.TryGetValue(4007, out _effectValue))
        if (attacker.SkillMgr.TryGetPassiveEffectValue(4007, out _effectValue, out _skillInfo))
        {
            bool _condition = true;