| #!/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)  | 
|      |