#!/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 ChPlayer
|
import PlayerControl
|
import DataRecordPack
|
import IpyGameDataPY
|
import ItemCommon
|
import ChConfig
|
import SkillShell
|
|
##ÅúÁ¿Ê¹ÓÃÎïÆ·
|
# @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:
|
return
|
resetID = curEff.GetEffectValue(0)
|
if not resetID and exData:
|
resetID = exData
|
resetPoint = curEff.GetEffectValue(1) * useCnt
|
if not DoResetAttrPoint(curPlayer, resetID, resetPoint, curRoleItem.GetItemTypeID()):
|
return
|
|
#¿Û³ýÎïÆ·
|
ItemCommon.DelItem(curPlayer, curRoleItem, useCnt, True, ChConfig.ItemDel_ResetAttrPoint)
|
return True, useCnt
|
|
def DoResetAttrPoint(curPlayer, resetID, resetPoint, useItemID=0):
|
'''ÖØÖÃÁé¸ùÊôÐÔµã
|
@param resetID: ÖØÖÃÊôÐÔID£¬0ÎªÖØÖÃÈ«²¿
|
@param resetPoint: ÖØÖõãÊý£¬0ÎªÖØÖÃÈ«²¿
|
'''
|
|
ipyDataMgr = IpyGameDataPY.IPY_Data()
|
canResetIDList = [ipyDataMgr.GetRolePointByIndex(index).GetAttrID() for index in xrange(ipyDataMgr.GetRolePointCount())]
|
if resetID == 0:
|
resetIDList = canResetIDList
|
resetValueList = [resetPoint for _ in xrange(len(canResetIDList))]
|
elif resetID in canResetIDList:
|
resetIDList = [resetID]
|
resetValueList = [resetPoint]
|
else:
|
return
|
|
resetPointTotal = 0
|
for i, resetID in enumerate(resetIDList):
|
resetPoint = resetValueList[i]
|
curPoint = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_AddPointValue % resetID)
|
if not resetPoint:
|
realResetPoint = curPoint
|
else:
|
realResetPoint = min(resetPoint, curPoint)
|
if not realResetPoint:
|
continue
|
resetPointTotal += realResetPoint
|
updPoint = max(curPoint - realResetPoint, 0)
|
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_AddPointValue % resetID, updPoint)
|
if useItemID:
|
PlayerControl.NotifyCode(curPlayer, 'WashPoint2', [useItemID, resetID, realResetPoint, updPoint])
|
|
freePoint = curPlayer.GetFreePoint()
|
curPlayer.SetFreePoint(freePoint + resetPointTotal)
|
ChPlayer.NotifyPlayerBasePoint(curPlayer, resetIDList)
|
DataRecordPack.Cache_FightPowerChangeInfo(curPlayer, ChConfig.PowerDownType_ResetPoint, {'resetIDList':resetIDList, 'resetPointTotal':resetPointTotal})
|
|
#Ë¢ÐÂÈËÎïËùÓÐ״̬
|
playerControl = PlayerControl.PlayerControl(curPlayer)
|
playerControl.RefreshPlayerAttrState()
|
return True
|
|
## Â߼ʵÏÖ //·µ»ØÖµÎªÊÇ·ñʹÓóɹ¦(Íâ²ãÍ¨ÖªÌØÐ§)
|
# @param curPlayer µ±Ç°Íæ¼Ò
|
# @param curRoleItem µ±Ç°Ö÷½ÇʹÓõÄÎïÆ·
|
# @param tick µ±Ç°Ê±¼ä
|
# @return True or False ·µ»ØÖµÎªÊÇ·ñʹÓóɹ¦(Íâ²ãÍ¨ÖªÌØÐ§)
|
# @remarks º¯ÊýÏêϸ˵Ã÷.
|
def UseItem(curPlayer, curRoleItem, tick):
|
return BatchUseItem(curPlayer, curRoleItem, tick, 1, 0)
|
|