From 80cec3121d7ea24123404d2b0dc95c603b780bcd Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期一, 20 五月 2019 21:40:52 +0800
Subject: [PATCH] 6603 【后端】【2.0】增加新版的sp和被动技能
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py | 49 ++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 40 insertions(+), 9 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 37a6ed7..36a2e8f 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -3463,7 +3463,7 @@
raise Exception('玩家获得升级属性点异常, curLV = %s PlayerID = %s' % (curLV, curPlayerID))
return
- return int(addPoint)
+ return int(addPoint) + GetFabaoAddPoint(curPlayer)
def GetAllPointByLV(curPlayer):
##获取当前等级可得到属性点数
@@ -3473,16 +3473,23 @@
return 0
# 初始点+升级点+境界点
setFreePoint = IpyGameDataPY.GetFuncCfg("LVUPAddPoint", 2)
-
+ fabaoAddPoint = GetFabaoAddPoint(curPlayer)
addPointDict = IpyGameDataPY.GetFuncEvalCfg("LVUPAddPoint", 1, {})
for rangLVs, point in addPointDict.items():
if curLV < rangLVs[0]:
continue
- setFreePoint += point * (min(curLV, rangLVs[1]) - rangLVs[0] + 1)
+ setFreePoint += (point + fabaoAddPoint) * (min(curLV, rangLVs[1]) - rangLVs[0] + 1)
#境界提升点数
setFreePoint += curPlayer.GetOfficialRank() * IpyGameDataPY.GetFuncCfg("LVUPAddPoint", 3)
return setFreePoint
+
+def GetFabaoAddPoint(curPlayer):
+ #法宝额外增加玩家每级获得的灵根点
+ mwID = IpyGameDataPY.GetFuncCfg('FabaoAddPoint', 1)
+ if not PlayerMagicWeapon.GetIsActiveMagicWeapon(curPlayer, mwID, lv=1):
+ return 0
+ return IpyGameDataPY.GetFuncCfg('FabaoAddPoint', 2)
def DoAddPointOpen(curPlayer):
'''加点功能开启'''
@@ -3562,7 +3569,7 @@
attrName = self.__AttrName % attrIndex
setattr(self, attrName, getattr(self, attrName) + value)
- def GetModuleFightPower(self, fpParam):
+ def GetModuleFightPower(self, fpParam, job):
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) # 最大攻击
@@ -3580,9 +3587,9 @@
LuckyHitReduce = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_LuckyHitReduce) # 会心一击伤害固定减伤
SkillAtkRate = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_SkillAtkRate) * fpParam.GetCftSkillAtkRate() # 技能攻击比例加成
SkillAtkRateReduce = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_SkillAtkRateReduce) * fpParam.GetCftSkillAtkRateReduce() # 技能攻击比例减少
- DamagePVP = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_DamagePVP) * fpParam.GetCftDamagePer() # PVP固定伤害
- DamagePVPReduce = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_DamagePVPReduce) * fpParam.GetCftDamReduce() # PVP固定减伤
- DamagePVE = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_DamagePVE) * fpParam.GetCftDamagePer() # PVE固定伤害
+ DamagePVP = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_DamagePVP) # PVP固定伤害
+ DamagePVPReduce = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_DamagePVPReduce) # PVP固定减伤
+ DamagePVE = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_DamagePVE) # PVE固定伤害
HPRestore = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_HPRestorePer) # 自动回复血量,固定值
DamBackPer = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_DamBackPer) * fpParam.GetCftDamBackPer() # 反伤百分比
SpeedValue = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_AttrSpeed) # 移动速度值
@@ -3631,6 +3638,10 @@
#其他需作为公式参数的系数
AtkSpeedParameter = fpParam.GetCftAtkSpeed()
LuckyHitParameter = fpParam.GetCftLuckyHit()
+
+ diffAttrDict = self.__GetAttrFightPowerParamDiff(job)
+ for paramName, diffValue in diffAttrDict.items():
+ exec("%s = max(0, %s - %s)" % (paramName, paramName, diffValue))
#获取策划配置的表格
FightpowerFormula = IpyGameDataPY.GetFuncCfg("FightpowerFormula")
@@ -3642,6 +3653,26 @@
totalFightPower = ShareDefine.Def_UpperLimit_DWord
return totalFightPower
+ def __GetAttrFightPowerParamDiff(self, job):
+ ## 战力计算属性参数与实际属性差值
+
+ #角色基础模块某些属性不计算战力
+ if self.mfpType != ShareDefine.Def_MFPType_Role:
+ return {}
+
+ roleBaseAttrDict = IpyGameDataPY.GetFuncEvalCfg("CreatRoleBaseAttr", 1)
+ notFightPowerEffIDNameDict = IpyGameDataPY.GetFuncEvalCfg("CreatRoleBaseAttr", 2)
+ if job not in roleBaseAttrDict:
+ return {}
+
+ diffAttrDict = {}
+ jobBaseAttrDict = roleBaseAttrDict[job]
+ for attrID, paramName in notFightPowerEffIDNameDict.items():
+ if attrID not in jobBaseAttrDict:
+ continue
+ diffAttrDict[paramName] = jobBaseAttrDict[attrID]
+ return diffAttrDict
+
def GetMFPAttrStr(self):
attrStr = ""
for attrIndex in xrange(1, ChConfig.Def_Calc_AllAttrType_MAX):
@@ -4116,7 +4147,7 @@
# 点数品质属性
curPQLV = 0
pqIntervalList = ipyData.GetPointQualityIntervalList()
- for pqLV, pqValue in enumerate(pqIntervalList, 1):
+ for pqLV, pqValue in enumerate(pqIntervalList, 1): # 灵根品级从1开始
if pointValue >= pqValue:
curPQLV = pqLV
else:
@@ -4525,7 +4556,7 @@
for attrIndex, value in mfpAttrExDict.items():
mfpObj.AddCalcMFPAttr(attrIndex, value)
- mfpValue = 0 if not fpParam else mfpObj.GetModuleFightPower(fpParam)
+ mfpValue = 0 if not fpParam else mfpObj.GetModuleFightPower(fpParam, curPlayer.GetJob())
mfpSkill = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_MFPSkill % mfpObj.mfpType)
mfpEx = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_MFPEx % mfpObj.mfpType)
mfpTotal = mfpValue + mfpSkill + mfpEx
--
Gitblit v1.8.0