#!/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 DataRecordPack  
 | 
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)  
 | 
    DataRecordPack.Cache_FightPowerChangeInfo(curPlayer, ChConfig.PowerDownType_ResetPoint, {'resetAttrID':resetAttrID,'resetPoint':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)  
 | 
     
 |