From 9f14215cf6689f4f332f0b625805fa076e7b86bb Mon Sep 17 00:00:00 2001
From: client_Hale <339726288@qq.com>
Date: 星期二, 22 一月 2019 15:12:12 +0800
Subject: [PATCH] 382 诛仙一击客户端攻击公式修改

---
 Utility/EnumHelper.cs                                         |   16 ++++++++++++----
 Core/GameEngine/Model/Player/PlayerDatas.cs                   |    4 ++++
 Fight/Actor/Skill/AttackHandler.cs                            |   29 +++++++++++++++++++++++------
 Core/GameEngine/Model/Player/Character/PlayerExtersionData.cs |    2 ++
 4 files changed, 41 insertions(+), 10 deletions(-)

diff --git a/Core/GameEngine/Model/Player/Character/PlayerExtersionData.cs b/Core/GameEngine/Model/Player/Character/PlayerExtersionData.cs
index 4d898eb..9277c82 100644
--- a/Core/GameEngine/Model/Player/Character/PlayerExtersionData.cs
+++ b/Core/GameEngine/Model/Player/Character/PlayerExtersionData.cs
@@ -73,4 +73,6 @@
     public uint soulSplinters;//鑱氶瓊-纰庣墖 197
     public uint soulCore;//鑱氶瓊-鏍稿績鐜� 198
     public int honorValue; //鑽h獕鍊� 199
+    public int zhuxianRate;// 璇涗粰涓�鍑绘鐜�
+    public int zhuxianHurtPer;// 璇涗粰涓�鍑讳激瀹冲��
 }
diff --git a/Core/GameEngine/Model/Player/PlayerDatas.cs b/Core/GameEngine/Model/Player/PlayerDatas.cs
index 0c3b68a..7ad75ec 100644
--- a/Core/GameEngine/Model/Player/PlayerDatas.cs
+++ b/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;
         }
     }
 
diff --git a/Fight/Actor/Skill/AttackHandler.cs b/Fight/Actor/Skill/AttackHandler.cs
index 0236029..1018111 100644
--- a/Fight/Actor/Skill/AttackHandler.cs
+++ b/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;
diff --git a/Utility/EnumHelper.cs b/Utility/EnumHelper.cs
index 050f4b9..8f02f11 100644
--- a/Utility/EnumHelper.cs
+++ b/Utility/EnumHelper.cs
@@ -599,6 +599,10 @@
     CDBPlayerRefresh_SoulSplinters = 197,//鑱氶瓊-纰庣墖
     CDBPlayerRefresh_SoulCore = 198,//鑱氶瓊-鏍稿績鐜�
     CDBPlayerRefresh_Honor = 199, //# 鑽h獕鍊�
+    CDBPlayerRefresh_ZhuxianRate = 200, //# 鑽h獕鍊�
+    CDBPlayerRefresh_ZhuxianHurtPer = 201, //# 鑽h獕鍊�
+
+
 };
 
 /** 鐗╁搧鍔犳垚绫诲瀷 */
@@ -927,7 +931,7 @@
     Dogz = 138, //绁炲吔
     AddPoint = 145,//鍔犵偣
     CrossServer = 157, //璺ㄦ湇澶╂璧�
-    CrossServerBoss=162,
+    CrossServerBoss = 162,
 }
 //灞炴�х被鍨�
 public enum AttrEnum
@@ -1227,9 +1231,9 @@
     Def_RewardType_WishingWell = 16,//  璁告効姹犲鍔�16
     Def_RewardType_OpenFunc = 17,//鍔熻兘棰勫憡濂栧姳
     Def_RewardType_TotalRecharge = 18,//绱鍏呭�煎鍔�
-    Def_RewardType_IceLodeStar=19, //鍐版櫠鐭胯剦鏄熺骇濂栧姳19
-    Def_RewardType_WeekPartyAct=20, //棰嗗彇鍛ㄧ媯娆㈡椿鍔ㄥ鍔�20
-    Def_RewardType_WeekPartyPoint=21,// 棰嗗彇鍛ㄧ媯娆㈢Н鍒嗗鍔�21
+    Def_RewardType_IceLodeStar = 19, //鍐版櫠鐭胯剦鏄熺骇濂栧姳19
+    Def_RewardType_WeekPartyAct = 20, //棰嗗彇鍛ㄧ媯娆㈡椿鍔ㄥ鍔�20
+    Def_RewardType_WeekPartyPoint = 21,// 棰嗗彇鍛ㄧ媯娆㈢Н鍒嗗鍔�21
 
 }
 
@@ -1390,6 +1394,10 @@
     Suppress,
     /**鏂╂潃**/
     ZhanSha,
+    /** 璇涗粰涓�鍑� */
+    ZhuXianAtk,
+    /** 缁堟瀬鏂╂潃 */
+    FinalKill,
 }
 
 public enum E_PlayerState

--
Gitblit v1.8.0