From b56df043e01be629f731c5d52ecb64cc7f7f2b60 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期一, 27 五月 2019 20:05:19 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.0.87:10010/r/SnxxServerCode

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py |   25 +++++++++++++++++++------
 1 files changed, 19 insertions(+), 6 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
index 9492c61..bd5cfad 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -3570,7 +3570,7 @@
             attrName = self.__AttrName % attrIndex
             setattr(self, attrName, getattr(self, attrName) + value)
     
-    def GetModuleFightPower(self, fpParam, job):
+    def GetModuleFightPower(self, fpParam, curPlayer):
         MaxHP = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_AttrMaxHP) # 最大血量
         MinAtk = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_AttrATKMin) # 最小攻击
         MaxAtk = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_AttrATKMax) # 最大攻击
@@ -3578,11 +3578,11 @@
         Hit = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_AttrHit) * fpParam.GetCftHit() # 命中值
         Miss = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_AttrMiss) * fpParam.GetCftMiss() # 闪避值
         AtkSpeed = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_AttrAtkSpeed) # 攻击速度(数值非攻击间隔)
-        SuperHitRate = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_SuperHitRate) # 暴击率
+        SuperHitRate = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_SuperHitRate) * fpParam.GetCftSuperHitRate() # 暴击率
         SuperHitRateReduce = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_SuperHitRateReduce) # 暴击概率抗性
         SuperHit = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_SuperHit) # 暴击伤害固定值
         SuperHitReduce = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_SuperHitReduce) * fpParam.GetCftSuperHitReduce() # 暴击固定减伤
-        LuckyHitRate = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_LuckyHitRate) # 会心一击
+        LuckyHitRate = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_LuckyHitRate) * fpParam.GetCftLuckyHitRate() # 会心一击
         LuckyHitRateReduce = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_LuckyHitRateReduce) * fpParam.GetCftLuckyHitRateReduce() # 会心一击概率抗性
         LuckyHit = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_LuckyHit) # 会心一击伤害固定值
         LuckyHitReduce = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_LuckyHitReduce) # 会心一击伤害固定减伤
@@ -3640,6 +3640,11 @@
         AtkSpeedParameter = fpParam.GetCftAtkSpeed()
         LuckyHitParameter = fpParam.GetCftLuckyHit()
         
+        #取总属性的
+        SuperHitRateTotal = curPlayer.GetSuperHitRate()
+        LuckyHitRateTotal = curPlayer.GetLuckyHitRate()
+        
+        job = curPlayer.GetJob()
         diffAttrDict = self.__GetAttrFightPowerParamDiff(job)
         for paramName, diffValue in diffAttrDict.items():
             exec("%s = max(0, %s - %s)" % (paramName, paramName, diffValue))
@@ -4035,6 +4040,7 @@
             if aftLV > befLV:
                 curPlayer.SetLV(aftLV, False) # 这里不再通知GameServer
                 PlayerSuccess.UptateSuccessProgress(curPlayer, ShareDefine.SuccType_HeroLV, aftLV)
+                PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_LVUP, aftLV - befLV)
             if aftFreePoint > befFreePoint:
                 curPlayer.SetFreePoint(aftFreePoint)
                 #NotifyCode(curPlayer, "ObtainAttributeDot", [aftFreePoint - befFreePoint])
@@ -4081,6 +4087,7 @@
             OpenServerCampaign.UpdOpenServerCampaignRecordData(curPlayer, ShareDefine.Def_Campaign_Type_LV, curPlayer.GetLV())
             #神秘限购
             FunctionNPCCommon.MysticalLimitShopOpen(curPlayer, befLV, aftLV)
+
         #不需要做升级任务, 设置玩家经验
         SetPlayerTotalExp(curPlayer, curTotalExp) 
         return
@@ -4531,6 +4538,7 @@
         curLV = curPlayer.GetLV()
         fpParam = IpyGameDataPY.GetIpyGameData("FightPowerParam", curLV)
         mfpDict = {} # 模块战斗力
+        mfpObjDict = {}
         for mfpType, attrFuncIndexList in ChConfig.MFPTypeAttrFuncIndexDict.items():
             mfpAttrList = [{} for _ in range(4)]
             mfpAttrExDict = {}
@@ -4556,8 +4564,11 @@
             mfpObj.SetCalcMFPBattleAttr(mfpAttrList)
             for attrIndex, value in mfpAttrExDict.items():
                 mfpObj.AddCalcMFPAttr(attrIndex, value)
-                
-            mfpValue = 0 if not fpParam else mfpObj.GetModuleFightPower(fpParam, curPlayer.GetJob())
+            mfpObjDict[mfpType] = mfpObj
+            
+        # 因为计算战力需要取到总属性,所以等各功能点属性累加完后再计算
+        for mfpType, mfpObj in mfpObjDict.items():
+            mfpValue = 0 if not fpParam else mfpObj.GetModuleFightPower(fpParam, curPlayer)
             mfpSkill = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_MFPSkill % mfpObj.mfpType)
             mfpEx = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_MFPEx % mfpObj.mfpType)
             mfpTotal = mfpValue + mfpSkill + mfpEx
@@ -6285,7 +6296,9 @@
 #    addAttrList[ChConfig.CalcAttr_BattleNoline] = {}
 #    return addAttrList
 #===============================================================================
-
+def GetTotalLingGenPoint(curPlayer):
+    # 总灵根点数(金木水火土+自由点数)
+    return GetMetal(curPlayer) + GetWood(curPlayer) + GetWater(curPlayer) + GetFire(curPlayer) + GetEarth(curPlayer) + curPlayer.GetFreePoint()
 
 # 灵根 - 金木水火土
 def GetMetal(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_Metal)

--
Gitblit v1.8.0