少年修仙传客户端代码仓库
client_Hale
2019-01-22 9f14215cf6689f4f332f0b625805fa076e7b86bb
382 诛仙一击客户端攻击公式修改
4个文件已修改
43 ■■■■ 已修改文件
Core/GameEngine/Model/Player/Character/PlayerExtersionData.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/Player/PlayerDatas.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/Actor/Skill/AttackHandler.cs 29 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Utility/EnumHelper.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/Player/Character/PlayerExtersionData.cs
@@ -73,4 +73,6 @@
    public uint soulSplinters;//聚魂-碎片 197
    public uint soulCore;//聚魂-核心环 198
    public int honorValue; //荣誉值 199
    public int zhuxianRate;// 诛仙一击概率
    public int zhuxianHurtPer;// 诛仙一击伤害值
}
Core/GameEngine/Model/Player/PlayerDatas.cs
@@ -926,6 +926,10 @@
            case PlayerDataRefresh.CDBPlayerRefresh_Honor:
                extersion.honorValue = (int)value;
                break;
            case PlayerDataRefresh.CDBPlayerRefresh_ZhuxianRate:
                break;
            case PlayerDataRefresh.CDBPlayerRefresh_ZhuxianHurtPer:
                break;
        }
    }
Fight/Actor/Skill/AttackHandler.cs
@@ -269,16 +269,19 @@
        int _missRate = 0;
        int _aSuperHitRate = 0;
        int _aLuckyHitRage = 0;
        int _aLuckyHitRate = 0;
        int _aZhuXianHitRate = 0;
        bool _isMiss = false;
        bool _isCrit = false;
        bool _isLucky = false;
        bool _isZhuxianHit = false;
        SkillHelper.EffectValue _effectValue;
        float _aAtkSkillPer = 0;
        int _atkSkillValue = 0;
        int _aZhuxianHurtPer = 0;
        int _aLuckyHit = 0;// 会心一击伤害加成    万分率, 默认0, 会心一击时有值
        float _aSuperHit = 0;// 暴击伤害            固定值, 默认0, 暴击时有值
        int _aMinAtk = 1;// 最小攻击            固定值
@@ -364,7 +367,6 @@
            _missRate = _npcBase.NpcConfig.MissRate;
            _dDef = _npcBase.NpcConfig.Def;
        }
        else if (target.ActorType == GameObjType.gotPlayer)
        {
@@ -376,7 +378,9 @@
        {
            _hitRate = PlayerDatas.Instance.extersion.HIT;
            _aSuperHitRate = PlayerDatas.Instance.extersion.SuperHitRate;
            _aLuckyHitRage = PlayerDatas.Instance.extersion.luckHitRate;
            _aLuckyHitRate = PlayerDatas.Instance.extersion.luckHitRate;
            _aZhuxianHurtPer = PlayerDatas.Instance.extersion.zhuxianHurtPer;
            _aZhuXianHitRate = PlayerDatas.Instance.extersion.zhuxianRate;
            _aMaxAtk = PlayerDatas.Instance.extersion.MAXATK;
            _aMinAtk = PlayerDatas.Instance.extersion.MINATK;
            _aIgnoreDefRate = PlayerDatas.Instance.extersion.IgnoreDefRate;
@@ -408,7 +412,8 @@
        _isMiss = IsMiss(_hitRate, _missRate);
        _isCrit = IsCrit(_aSuperHitRate);
        _isLucky = IsLucky(_aLuckyHitRage);
        _isLucky = IsLucky(_aLuckyHitRate);
        _isZhuxianHit = IsZhuXianHit(_aZhuXianHitRate);
        // 4014 必定触发 按位配置 1为必命中,2为必暴击,4为必会心一击
        if (skill.skillInfo.effectValue.TryGetValue(4014, out _effectValue))
@@ -458,6 +463,7 @@
        _aLuckyHit = _isLucky ? _luckyHit : 0;
        _aSuperHit = _isCrit ? _superHit : 0;
        // 4051 当发生会心伤害时, 增加会心一击伤害
        if (_isLucky
         && skill.skillInfo.effectValue.TryGetValue(4051, out _effectValue))
@@ -495,7 +501,13 @@
        if (attacker.ActorType == GameObjType.gotPlayer
         && target.ActorType == GameObjType.gotNPC)
        {
            //"PVE_1"    :"int(max((((max((aMaxAtk if isLuckyHit else (aMinAtk + (aMaxAtk - aMinAtk)*rand))-dDef*max(1-aIgnoreDefRate/10000.0,0),1))*(1+(aLuckyHit/10000.0 if isLuckyHit else 0))+(aSuperHit if isSuperHit else 0)+ max(aIceAtkSuperHit*aIceAtk - dIceDef, 0))*(atkSkillPer+aSkillAtkRate/10000.0)*(1+aDamagePer/10000.0)+max(aFinalHurt+aOnlyFinalHurt-dFinalHurtReduce, 0)+atkSkillValue)*max(1+aFinalHurtPer/10000.0,1)+aNPCHurtAddPer/10000.0*(aMinAtk+aMaxAtk)/2.0,(aMinAtk+aMaxAtk)/2*0.05 + (aMinAtk+aMaxAtk)/2*0.1*rand))"
            //"PVE_1"    :"int(max((((max((aMaxAtk if isLuckyHit else (aMinAtk + (aMaxAtk - aMinAtk)*rand))
            //            -dDef*max(1-aIgnoreDefRate/10000.0,0),1))*(1+(aLuckyHit/10000.0 if isLuckyHit else 0))
            //            +(aSuperHit if isSuperHit else 0)+ max(aIceAtkSuperHit*aIceAtk - dIceDef, 0))
            //            *(atkSkillPer+(aZhuxianHurtPer/10000.0 if isZhuxianHit else 0)+aSkillAtkRate/10000.0)
            //            *(1+aDamagePer/10000.0)+max(aFinalHurt+aOnlyFinalHurt-dFinalHurtReduce, 0)
            //            +atkSkillValue)*(1+dBeHurtPer/10000.0)*max(1+aFinalHurtPer/10000.0,1)
            //            +aNPCHurtAddPer/10000.0*(aMinAtk+aMaxAtk)/2.0,(aMinAtk+aMaxAtk)/2*0.05 + (aMinAtk+aMaxAtk)/2*0.1*rand))"
            float _random = Random.Range(0f, 1f);
            _value1 = _aMinAtk + (_aMaxAtk - _aMinAtk) * _random;
@@ -576,7 +588,7 @@
            }
#endif
            _value1 = (_aAtkSkillPer + _aSkillAtkRate * Constants.F_DELTA) * (1 + _aDamagePer * Constants.F_DELTA);
            _value1 = (_aAtkSkillPer + (_isZhuxianHit ? _aZhuxianHurtPer * Constants.F_DELTA : 0) + _aSkillAtkRate * Constants.F_DELTA) * (1 + _aDamagePer * Constants.F_DELTA);
#if UNITY_EDITOR
            if (RuntimeLogUtility.s_HurtValueLog)
@@ -678,6 +690,11 @@
        return Random.Range(0, 10000) < luckHitRate;
    }
    private static bool IsZhuXianHit(int zxHitRate)
    {
        return Random.Range(0, 10000) < zxHitRate;
    }
    private static float HpPer(GActor actor)
    {
        return actor.ActorInfo.RealHp * 1f / actor.ActorInfo.RealMaxHp;
Utility/EnumHelper.cs
@@ -599,6 +599,10 @@
    CDBPlayerRefresh_SoulSplinters = 197,//聚魂-碎片
    CDBPlayerRefresh_SoulCore = 198,//聚魂-核心环
    CDBPlayerRefresh_Honor = 199, //# 荣誉值
    CDBPlayerRefresh_ZhuxianRate = 200, //# 荣誉值
    CDBPlayerRefresh_ZhuxianHurtPer = 201, //# 荣誉值
};
/** 物品加成类型 */
@@ -1390,6 +1394,10 @@
    Suppress,
    /**斩杀**/
    ZhanSha,
    /** 诛仙一击 */
    ZhuXianAtk,
    /** 终极斩杀 */
    FinalKill,
}
public enum E_PlayerState