From 69603a748cf54f1a81930d1f88861d32bf006205 Mon Sep 17 00:00:00 2001 From: hch <305670599@qq.com> Date: 星期一, 26 十一月 2018 18:02:54 +0800 Subject: [PATCH] 4923 【后端】【1.3】神兵技能--神兵护盾 --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py | 30 +++++++++++++++++++++++++++--- 1 files changed, 27 insertions(+), 3 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 e5d8b03..3120321 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py @@ -4205,6 +4205,7 @@ #beforeAtkInterval = curPlayer.GetAtkInterval() beforeMaxHP = curPlayer.GetMaxHP() beforeMoveSpeedValue = GetSpeedValue(curPlayer) + beforeMaxProDef = GetMaxProDef(curPlayer) #构建玩家刷新通知客户端字典, 缓存[索引, 数值] playerStateDict = {} for index in xrange(1, ChConfig.Def_Calc_AllAttrType_MAX): @@ -4399,6 +4400,9 @@ CalcLineEffect.ChangePlayerAttrInLineEffectList(curPlayer, skillNoFightPowerAttrList[ChConfig.CalcAttr_Battle]) #self.PrintAttr(curPlayer, "固定层级") + #护盾值刷新 + self.__RefreshMaxProDef(beforeMaxProDef) + # 【到此所有功能属性都已刷新处理完毕,复制一份 功能属性的刷新结果,用于BUFF属性单独刷新】 EffGetSet.CopyPlayerFuncAttr(curPlayer) @@ -4426,6 +4430,26 @@ GameWorld.DebugLog("End RefreshPlayerAttrStateEx!!!") return True + + # 生命转化为防护值 + def __RefreshMaxProDef(self, beforeMaxProDef): + curPlayer = self.__Player + if GetProDefHPPer(curPlayer) == 0: + return + SetMaxProDef(curPlayer, curPlayer.GetMaxHP()*GetProDefHPPer(curPlayer)/ChConfig.Def_MaxRateValue) + + afterMaxProDef = GetMaxProDef(curPlayer) + addValue = max(0, afterMaxProDef - beforeMaxProDef) + curProDef = GetProDef(curPlayer) + + if beforeMaxProDef > 0 and addValue > 0 and curPlayer.GetPlayerAction() != IPY_GameWorld.paDie: + # 同步增加 (死亡状态下不刷) + SetProDef(curPlayer, min(curProDef + addValue, afterMaxProDef)) + elif curProDef > afterMaxProDef: + # 做一次防范纠正 + SetProDef(curPlayer, min(curProDef, afterMaxProDef)) + + return def __RefreshBuffAttr(self): ## 刷新buff层属性,该层属性只会改变玩家最终属性,不会影响战力等 @@ -6483,17 +6507,17 @@ def GetMaxProDef(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_AttrMaxProDef) def SetMaxProDef(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_AttrMaxProDef, value) - curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_MaxProDef, value, True) # 周围玩家需要通知 + curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_MaxProDef, value, False) # 周围玩家需要通知 #---生命上限换算为防护值的百分比---- def GetProDefHPPer(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_AttrProDefHPPer) def SetProDefHPPer(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_AttrProDefHPPer, value) - curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_ProDefHPPer, value, False) + #curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_ProDefHPPer, value, False) #---防护值吸收伤害比率---- def GetProDefAbsorb(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_AttrProDefAbsorb) def SetProDefAbsorb(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_AttrProDefAbsorb, value) - curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_ProDefAbsorb, value, False) + #curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_ProDefAbsorb, value, False) #---宠物攻击提升值---- def GetPetMinAtk(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_AttrPetMinAtk) -- Gitblit v1.8.0