#!/usr/bin/python # -*- coding: GBK -*- #--------------------------------------------------------------------- # #--------------------------------------------------------------------- ##@package Item_ResetAttrPoint # @todo: Ï´µã¾íÖá # # @author: xdh # @date 2017-12-15 # @version 1.0 # #--------------------------------------------------------------------- """Version = 2017-12-15 17:40""" #--------------------------------------------------------------------- #µ¼Èë import PlayerControl import GameWorld import ItemCommon import ShareDefine import PlayerSuccess import ChConfig import math #--------------------------------------------------------------------- #È«¾Ö±äÁ¿ #--------------------------------------------------------------------- #--------------------------------------------------------------------- ##ÅúÁ¿Ê¹ÓÃÎïÆ· # @param curPlayer: Íæ¼ÒʵÀý # @param curRoleItem: ÎïÆ·ÊµÀý # @param tick: ʱ¼ä´Á # @param useCnt: ʹÓøöÊý # @return: def BatchUseItem(curPlayer, curRoleItem, tick, useCnt, exData): curEff = curRoleItem.GetEffectByIndex(0) effectID = curEff.GetEffectID() if effectID == ChConfig.Def_Effect_ResetAttrPoint: resetAttrID = exData resetCnt = curEff.GetEffectValue(0) else: resetAttrID = curEff.GetEffectValue(0) # ÊôÐÔID resetCnt = curEff.GetEffectValue(1) #ÖØÖõãÊý if resetAttrID not in [ShareDefine.Def_Effect_STR,ShareDefine.Def_Effect_PHY,ShareDefine.Def_Effect_CON,ShareDefine.Def_Effect_PNE]: return if not resetCnt: return freePoint = curPlayer.GetFreePoint() baseSTR, basePNE, basePHY, baseCON = PlayerControl.GetPlayerBasePoint(curPlayer.GetJob()) # ¶Á³ö·ÖÅäǰµÄÊôÐÔµã´íÎó if (baseSTR, basePNE, basePHY, baseCON) == (0, 0, 0, 0): GameWorld.Log("(baseSTR, basePNE, basePHY, baseCON) == (0, 0, 0, 0), Reset attribute Fail!") return False if resetAttrID == ShareDefine.Def_Effect_STR: baseValue = baseSTR keyStr = 'BaseSTR' elif resetAttrID == ShareDefine.Def_Effect_PHY: baseValue = basePHY keyStr = 'BasePHY' elif resetAttrID == ShareDefine.Def_Effect_CON: baseValue = baseCON keyStr = 'BaseCON' elif resetAttrID == ShareDefine.Def_Effect_PNE: baseValue = basePNE keyStr = 'BasePNE' else: return curValue = getattr(curPlayer, 'Get%s'%keyStr)() if curValue <= baseValue: GameWorld.Log(' Item_ResetAttrPoint ¸ÃÊôÐÔµãûÓпÉÏ´µÄµãÊý resetAttrID=%s'%resetAttrID) return realUseCnt = min(useCnt, int(math.ceil((curValue-baseValue)/float(resetCnt)))) resetPoint = min(curValue-baseValue, realUseCnt * resetCnt) curPlayer.SetFreePoint(freePoint+resetPoint) getattr(curPlayer, 'Set%s'%keyStr)(curValue-resetPoint) #Ë¢ÐÂÈËÎïËùÓÐ״̬ playerControl = PlayerControl.PlayerControl(curPlayer) playerControl.RefreshPlayerAttrState() #¿Û³ýÎïÆ· ItemCommon.DelItem(curPlayer, curRoleItem, realUseCnt, True, ChConfig.ItemDel_ResetAttrPoint) PlayerControl.NotifyCode(curPlayer, 'WashPoint2', [curRoleItem.GetItemTypeID(), resetAttrID, resetPoint, curValue-resetPoint-baseValue]) return True, realUseCnt ## Âß¼­ÊµÏÖ //·µ»ØÖµÎªÊÇ·ñʹÓóɹ¦(Íâ²ãÍ¨ÖªÌØÐ§) # @param curPlayer µ±Ç°Íæ¼Ò # @param curRoleItem µ±Ç°Ö÷½ÇʹÓõÄÎïÆ· # @param tick µ±Ç°Ê±¼ä # @return True or False ·µ»ØÖµÎªÊÇ·ñʹÓóɹ¦(Íâ²ãÍ¨ÖªÌØÐ§) # @remarks º¯ÊýÏêϸ˵Ã÷. def UseItem(curPlayer, curRoleItem, tick): return BatchUseItem(curPlayer, curRoleItem, tick, 1, 0)