#!/usr/bin/python
|
# -*- coding: GBK -*-
|
#---------------------------------------------------------------------
|
#
|
#---------------------------------------------------------------------
|
##@package Item_Add_HPMP
|
# @todo: Ò©¼ÁÎïÆ·Ê¹ÓÃ
|
#
|
# @author: panwei
|
# @date 2010-04-23
|
# @version 2.5
|
#
|
# @change: "2010-08-09 16:00" panwei ÐÂÔö¶à´Î»Ø¸´Ò©¼ÁÂß¼
|
# @change: "2010-08-18 14:25" panwei ³ÖÐø²¹ºìºÍ³ÖÐø²¹ÀºÐ§¹û·Ö¿ª
|
# @change: "2011-02-23 17:30" panwei ɾ³ýÍâ²ãͳһÁ÷Ïò¼Ç¼, µ¥¸öÎïÆ·µ÷ÓÃͳһÁ÷Ïò¼Ç¼
|
# @change: "2011-04-13 18:00" Alee Ìí¼Ó³èÎï¶à´Î²¹¸øÎïÆ·
|
# @change: "2011-04-18 13:30" Alee Ìí¼ÓϵͳÌáʾ²ÎÊý
|
# @change: "2012-06-18 18:00" jiang ÐÞ¸ÄItemCommon.DelItemº¯ÊýµÄ²ÎÊýÓÃÓÚOssʼþ¼Ç¼
|
# @change: "2012-07-18 17:40" Alee ¾«¼òÁ÷ÏòÊä³ö
|
# @change: "2013-07-17 20:10" Alee ÐÞ¸ÄϵͳÌáʾ
|
# @change: "2014-07-03 21:00" hxp Ôö¼ÓѪ°ü/À¶°ü²¹³äÁ¿ÎïÆ·
|
# @change: "2015-03-23 03:30" ljd Ò©¼Á²¹ÑªÔö¼ÓÖÎÁÆ(Ôö¼Ó¼õÉÙ»ØÑªÐ§¹û)Ч¹û
|
# @change: "2015-05-07 11:00" hxp ÐÞ¸ÄÌáʾ
|
# @change: "2015-05-22 20:30" hxp Ôö¼Ó³èÎï»ØÑªÑª°ü
|
# @change: "2016-11-03 20:30" xdh ËÀÍö²»»ØÑª
|
# @change: "2016-11-16 20:00" hxp Ôö¼Ó½ûÁÆ×´Ì¬ÏÂÏÞÖÆ
|
# @change: "2016-11-24 16:30" hxp Ôö¼Ó²»¿É»ØÑªµÄµØÍ¼É趨
|
#---------------------------------------------------------------------
|
#"""Version = 2016-11-24 16:30"""
|
#---------------------------------------------------------------------
|
#µ¼Èë
|
import ChConfig
|
import PlayerControl
|
import GameWorld
|
import ItemCommon
|
import Item_Txt_Skill_ByItemList
|
import PetControl
|
import SkillCommon
|
import BuffSkill
|
import IPY_GameWorld
|
import GameObj
|
#---------------------------------------------------------------------
|
#È«¾Ö±äÁ¿
|
#---------------------------------------------------------------------
|
|
#---------------------------------------------------------------------
|
## Â߼ʵÏÖ //·µ»ØÖµÎªÊÇ·ñʹÓóɹ¦(Íâ²ãÍ¨ÖªÌØÐ§)
|
# @param curPlayer µ±Ç°Íæ¼Ò
|
# @param curRoleItem µ±Ç°Ö÷½ÇʹÓõÄÎïÆ·
|
# @param tick µ±Ç°Ê±¼ä
|
# @return True or False ·µ»ØÖµÎªÊÇ·ñʹÓóɹ¦(Íâ²ãÍ¨ÖªÌØÐ§)
|
# @remarks º¯ÊýÏêϸ˵Ã÷.
|
def UseItem(curPlayer, curRoleItem, tick):
|
if GameObj.GetHP(curPlayer) <= 0 or curPlayer.GetPlayerAction() == IPY_GameWorld.paDie:
|
#ËÀÍö²»»ØÑª
|
return
|
|
if curPlayer.GetMapID() in ChConfig.CanNotRecoverMapIDList:
|
#GameWorld.DebugLog("¸ÃµØÍ¼ÎÞ·¨Ê¹Óûָ´ÎïÆ·!")
|
return
|
|
if GameObj.GetPyPlayerState(curPlayer, ChConfig.Def_PlayerState_LimitAddHP):
|
# ÔÝʱºìÀ¶¶¼½ûµô
|
#GameWorld.DebugLog("µ±Ç°½ûÁÆ×´Ì¬Ï£¬ÎÞ·¨Ê¹ÓûØÑªÎïÆ·!")
|
return
|
|
useItemEff = curRoleItem.GetEffectByIndex(0)
|
curEffID = useItemEff.GetEffectID()
|
curEffValueA = useItemEff.GetEffectValue(0)
|
curEffValueB = useItemEff.GetEffectValue(1)
|
|
# HP»Ö¸´Ð§¹û±ä»¯
|
if curEffID in [ChConfig.Def_Effect_AddHP_Once, ChConfig.Def_Effect_AddHP_More,
|
ChConfig.Def_Effect_AddHP_Package, ChConfig.Def_Effect_AddPetHP_More]:
|
# Ѫƿ»Ö¸´Ð§¹û¼Ó³É
|
curEffValueB += PlayerControl.GetHPCureEnhance(curPlayer)
|
|
#²¹ºì(µ¥´Î)
|
if curEffID == ChConfig.Def_Effect_AddHP_Once:
|
return __DoLogic_AddHP_Once(curPlayer, curRoleItem, curEffValueA, curEffValueB)
|
|
#²¹À¶(µ¥´Î)
|
if curEffID == ChConfig.Def_Effect_AddMP_Once:
|
return __DoLogic_AddMP_Once(curPlayer, curRoleItem, curEffValueA, curEffValueB)
|
|
#===========================================================================
|
# #²¹ºì(¶à´Î)
|
# if curEffID == ChConfig.Def_Effect_AddHP_More:
|
# return __DoLogic_AddHP_More(curPlayer, curRoleItem, curEffValueA)
|
#
|
# #²¹À¶(¶à´Î)
|
# if curEffID == ChConfig.Def_Effect_AddMP_More:
|
# return __DoLogic_AddMP_More(curPlayer, curRoleItem, curEffValueA)
|
#===========================================================================
|
|
#³ÖÐø»Ø¸´Ñª»òÀ¶
|
if curEffID in [ChConfig.Def_Effect_AddHP_Last, ChConfig.Def_Effect_AddMP_Last]:
|
#µ÷ÓÃÎïÆ·´¥·¢¼¼ÄÜ
|
return Item_Txt_Skill_ByItemList.UseItem(curPlayer, curRoleItem, tick)
|
|
#Ѫ°ü»òÀ¶°üÈÝÁ¿
|
if curEffID in [ChConfig.Def_Effect_AddHP_Package, ChConfig.Def_Effect_AddMP_Package,
|
ChConfig.Def_Effect_AddPetHP_Package]:
|
return __DoLogic_AddHPMP_Package(curPlayer, curRoleItem, curEffValueA, tick)
|
|
if curEffID == ChConfig.Def_Effect_AddPetHP_More:
|
return __DoLogic_AddPetHP_More(curPlayer, curRoleItem, curEffValueA)
|
|
#ʹÓÃʧ°Ü
|
GameWorld.ErrLog('Item_Add_HPMP effID = %s NoFind'%(curEffID))
|
return False
|
|
#===============================================================================
|
#---µ¥´Î»Ø¸´Âß¼--- »Ø¸´Ð§¹û = Íæ¼Òµ±Ç°ÉúÃü(ħ·¨) + Íæ¼Ò×î´óÉúÃü(ħ·¨)ÉÏÏÞ * Ч¹ûAÖµ + Ч¹ûBÖµ
|
#===============================================================================
|
#---------------------------------------------------------------------
|
##Ò»´ÎÐÔ»ØÑªÎïÆ·Âß¼´¦Àí
|
# @param curPlayer Íæ¼ÒʵÀý
|
# @param curItem ÎïÆ·ÊµÀý
|
# @param effValueA Ч¹ûAÖµ
|
# @param effValueB Ч¹ûBÖµ
|
# @return ²¼¶ûÖµ
|
# @remarks Ò»´ÎÐÔ»ØÑªÎïÆ·Âß¼´¦Àí
|
def __DoLogic_AddHP_Once(curPlayer, curItem, effValueA, effValueB):
|
curValue = GameObj.GetHP(curPlayer)
|
curMaxValue = GameObj.GetMaxHP(curPlayer)
|
setFunc = "SetHP"
|
sysMsgStr = 'GeRen_chenxin_21675'
|
|
return __Add_HPorMP_Once(curPlayer, curItem, curValue, curMaxValue, setFunc, effValueA, effValueB, sysMsgStr)
|
#---------------------------------------------------------------------
|
##Ò»´ÎÐÔ»ØÀ¶ÎïÆ·Âß¼´¦Àí
|
# @param curPlayer Íæ¼ÒʵÀý
|
# @param curItem ÎïÆ·ÊµÀý
|
# @param effValueA Ч¹ûAÖµ
|
# @param effValueB Ч¹ûBÖµ
|
# @return ²¼¶ûÖµ
|
# @remarks Ò»´ÎÐÔ»ØÀ¶ÎïÆ·Âß¼´¦Àí
|
def __DoLogic_AddMP_Once(curPlayer, curItem, effValueA, effValueB):
|
curValue = curPlayer.GetMP()
|
curMaxValue = curPlayer.GetMaxMP()
|
setFunc = curPlayer.SetMP
|
sysMsgStr = 'GeRen_chenxin_295695'
|
|
return __Add_HPorMP_Once(curPlayer, curItem, curValue, curMaxValue, setFunc, effValueA, effValueB, sysMsgStr)
|
#---------------------------------------------------------------------
|
##µ¥´Î»Ø¸´Âß¼´¦Àí
|
# @param curPlayer Íæ¼ÒʵÀý
|
# @param curItem ÎïÆ·ÊµÀý
|
# @param curValue µ±Ç°Öµ
|
# @param curMaxValue µ±Ç°×î´óÖµ
|
# @param setFunc µ÷ÓÃÉèÖú¯Êý
|
# @param addPer °Ù·Ö±È¼Ó³É
|
# @param addValue ¹Ì¶¨Öµ
|
# @param sysMsgStr ϵͳÌáʾÏûÏ¢×Ö·û´®
|
# @return ²¼¶ûÖµ
|
# @remarks µ¥´Î²¹HP»òÕß²¹MP
|
def __Add_HPorMP_Once(curPlayer, curItem, curValue, curMaxValue, setFunc, addPer, addValue, sysMsgStr):
|
if curValue == curMaxValue:
|
PlayerControl.NotifyCode(curPlayer, sysMsgStr)
|
return False
|
|
#»Ø¸´Ð§¹û = Íæ¼Òµ±Ç°ÉúÃü(ħ·¨) + Íæ¼Ò×î´óÉúÃü(ħ·¨)ÉÏÏÞ * Ч¹ûAÖµ + Ч¹ûBÖµ
|
addTotalValue = int(curMaxValue * addPer / ChConfig.Def_MaxRateValue + addValue)
|
#»Ø¸´ÊýÖµ
|
if setFunc == "SetHP":
|
GameObj.SetHP(curPlayer, min(curMaxValue, curValue + addTotalValue))
|
else:
|
setFunc(min(curMaxValue, curValue + addTotalValue))
|
#¿Û³ýÎïÆ·
|
ItemCommon.DelItem(curPlayer, curItem, 1, True)
|
return True
|
|
#===============================================================================
|
#--¶à´Î»Ø¸´Âß¼--- »Ø¸´Ð§¹û = Íæ¼Òµ±Ç°ÉúÃü(ħ·¨) + Ч¹ûAÖµ
|
#===============================================================================
|
#---------------------------------------------------------------------
|
##¶à´Î»ØÑªÎïÆ·Âß¼´¦Àí
|
# @param curPlayer Íæ¼ÒʵÀý
|
# @param curItem ÎïÆ·ÊµÀý
|
# @param effValueA Ч¹ûAÖµ
|
# @return ²¼¶ûÖµ
|
# @remarks ¶à´Î»ØÑªÎïÆ·Âß¼´¦Àí
|
def __DoLogic_AddHP_More(curPlayer, curItem, effValueA):
|
curValue = GameObj.GetHP(curPlayer)
|
curMaxValue = GameObj.GetMaxHP(curPlayer)
|
setFunc = curPlayer.SetHP
|
sysMsgStr = 'GeRen_chenxin_21675'
|
|
return __Add_HPorMP_More(curPlayer, curItem, curValue, curMaxValue, setFunc, effValueA, sysMsgStr)
|
#---------------------------------------------------------------------
|
##¶à´Î»ØÀ¶ÎïÆ·Âß¼´¦Àí
|
# @param curPlayer Íæ¼ÒʵÀý
|
# @param curItem ÎïÆ·ÊµÀý
|
# @param effValueA Ч¹ûAÖµ
|
# @return ²¼¶ûÖµ
|
# @remarks ¶à´Î»ØÀ¶ÎïÆ·Âß¼´¦Àí
|
def __DoLogic_AddMP_More(curPlayer, curItem, effValueA):
|
curValue = curPlayer.GetMP()
|
curMaxValue = curPlayer.GetMaxMP()
|
setFunc = curPlayer.SetMP
|
sysMsgStr = 'GeRen_chenxin_295695'
|
|
return __Add_HPorMP_More(curPlayer, curItem, curValue, curMaxValue, setFunc, effValueA, sysMsgStr)
|
#---------------------------------------------------------------------
|
##¶à´Î»Ö¸´Âß¼´¦Àí
|
# @param curPlayer Íæ¼ÒʵÀý
|
# @param curItem ÎïÆ·ÊµÀý
|
# @param curValue µ±Ç°Öµ
|
# @param curMaxValue µ±Ç°×î´óÖµ
|
# @param setFunc ÉèÖú¯Êý
|
# @param addValue Ìí¼ÓÖµ
|
# @param sysMsgStr ϵͳÌáʾÏûÏ¢×Ö·û´®
|
# @return ²¼¶ûÖµ
|
# @remarks ¶à´Î²¹HP»òÕß²¹MP
|
def __Add_HPorMP_More(curPlayer, curItem, curValue, curMaxValue, setFunc, addValue, sysMsgStr):
|
#===========================================================================
|
# #ÒѾÂúÖµ
|
# if curValue == curMaxValue:
|
# PlayerControl.NotifyCode(curPlayer, sysMsgStr)
|
# return False
|
#
|
# curItemDurg = curItem.GetCurDurg()
|
#
|
# #»Ø¸´Ð§¹û = Íæ¼Òµ±Ç°ÉúÃü(ħ·¨) + Ч¹ûAÖµ (×îºóÒ»´Î²»Ò»¶¨×ã¹»)
|
# setFunc(min(curMaxValue, curValue + min(addValue, curItemDurg)))
|
#
|
# #---ÎïÆ·Ä;üõÉÙ---
|
# if curItemDurg > addValue:
|
# curItem.SetCurDurg(curItemDurg - addValue)
|
# else:
|
# ItemCommon.DelItem(curPlayer, curItem, 1, True)
|
#===========================================================================
|
|
return True
|
|
|
##³èÎï¶à´Î»ØÑªÎïÆ·Âß¼´¦Àí
|
# @param curPlayer Íæ¼ÒʵÀý
|
# @param curRoleItem ÎïÆ·ÊµÀý
|
# @param curEffValueA Ч¹ûAÖµ
|
# @return ²¼¶ûÖµ
|
def __DoLogic_AddPetHP_More(curPlayer, curRoleItem, curEffValueA):
|
#===============================================================================
|
# fightPetObj = curPlayer.GetPetMgr().GetFightPet() # ³öÕ½µÄ³èÎï¶ÔÏó
|
#
|
# if fightPetObj == None:
|
# PlayerControl.NotifyCode(curPlayer, "Pet_liubo_381601", [curRoleItem.GetItemTypeID()])
|
# return False
|
#
|
# curValue = GameObj.GetHP(fightPetObj)
|
# curMaxValue = GameObj.GetMaxHP(fightPetObj)
|
# #ÒѾÂúÖµ
|
# if curValue == curMaxValue:
|
# PlayerControl.NotifyCode(curPlayer, "Pet_liubo_493922")
|
# return False
|
#
|
# curItemDurg = curRoleItem.GetCurDurg()
|
#
|
# #»Ø¸´Ð§¹û = µ±Ç°ÉúÃü + Ч¹ûAÖµ(×îºóÒ»´Î²»Ò»¶¨¹»)
|
# PetControl.AddPetHP(fightPetObj, min(curEffValueA, curItemDurg))
|
#
|
# #---ÎïÆ·Ä;üõÉÙ---
|
# if curItemDurg > curEffValueA:
|
# curRoleItem.SetCurDurg(curItemDurg - curEffValueA)
|
# else:
|
# ItemCommon.DelItem(curPlayer, curRoleItem, 1, True)
|
#
|
#===============================================================================
|
return True
|
|
|
##Ѫ°ü/À¶°ü²¹³ä°ü
|
# @param curPlayer Íæ¼ÒʵÀý
|
# @param curRoleItem ÎïÆ·ÊµÀý
|
# @param curEffValueA Ч¹ûAÖµ
|
# @return ²¼¶ûÖµ
|
def __DoLogic_AddHPMP_Package(curPlayer, curRoleItem, curEffValueA, tick):
|
# ʹÓõȼ¶
|
if curPlayer.GetLV() < curRoleItem.GetUseLV():
|
return False
|
|
if curRoleItem.GetAddSkillCount() <= 0:
|
return False
|
|
addSkillID = curRoleItem.GetAddSkill(0)
|
|
if not addSkillID:
|
return False
|
|
addSkill = GameWorld.GetGameData().GetSkillBySkillID(addSkillID)
|
|
buffType = SkillCommon.GetBuffType(addSkill)
|
BuffSkill.AddBuffNoRefreshState(curPlayer, buffType, addSkill, tick, [curEffValueA], curPlayer)
|
# ¼¤»îÍæ¼Ò(±£Ö¤³ÖÐøÐÔBuff´¦Àí¼ä¸ô)
|
PlayerControl.SetIsNeedProcess(curPlayer, True)
|
# ¿Û³ýÎïÆ·
|
ItemCommon.DelItem(curPlayer, curRoleItem, 1, True)
|
return True
|
|