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