hxp
2018-12-06 a68fd82869f2b29ae2beea2ef4b27afd88359e1a
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerState.py
@@ -1447,23 +1447,43 @@
        #GameWorld.DebugLog("退出Boss状态!", curPlayer.GetPlayerID())
    
    # 脱离PK战斗 X秒后按比例恢复
    if not IsInPKState(curPlayer):
        if tick - curPlayer.GetDictByKey("StartProDTick") < IpyGameDataPY.GetFuncCfg("MagicExterior", 2) * 1000:
            return
        if curPlayer.GetPlayerAction() == IPY_GameWorld.paDie:
            return
        # 每秒恢复
        if tick - curPlayer.GetDictByKey("restoreProDTick") < 1000:
            return
        #非PK状态恢复护盾
        PlayerControl.SetProDef(curPlayer, min(PlayerControl.GetProDef(curPlayer) + \
                    IpyGameDataPY.GetFuncCfg("MagicExterior", 3)*PlayerControl.GetMaxProDef(curPlayer)/ChConfig.Def_MaxRateValue, \
                    PlayerControl.GetMaxProDef(curPlayer)))
        curPlayer.SetDict("restoreProDTick", tick)
    ProcessProDef(curPlayer, tick)
    return
# 脱离PK战斗 X秒后按比例恢复
def ProcessProDef(curPlayer, tick):
    if PlayerControl.GetProDefHPPer(curPlayer) == 0:
        # 没转化值
        return
    # 脱离PK战斗 X秒后按比例恢复
    if IsInPKState(curPlayer):
        return
    if tick - curPlayer.GetDictByKey("StartProDTick") < IpyGameDataPY.GetFuncCfg("MagicExterior", 2) * 1000:
        return
    if curPlayer.GetPlayerAction() == IPY_GameWorld.paDie:
        return
    # 每秒恢复
    if tick - curPlayer.GetDictByKey("restoreProDTick") < 1000:
        return
    curProDef = PlayerControl.GetProDef(curPlayer)
    maxProDef = PlayerControl.GetMaxProDef(curPlayer)
    if curProDef == maxProDef:
        return
    #非PK状态恢复护盾
    PlayerControl.SetProDef(curPlayer, min(curProDef + \
                            IpyGameDataPY.GetFuncCfg("MagicExterior", 3)*maxProDef/ChConfig.Def_MaxRateValue, maxProDef))
    curPlayer.SetDict("restoreProDTick", tick)
    return
def IsInPKState(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PDict_PKStateTick) > 0
def SetPKStateTick(curPlayer, tick):
    if not curPlayer.GetDictByKey(ChConfig.Def_PDict_PKStateTick):