#!/usr/bin/python # -*- coding: GBK -*- # # @todo: ÒÑ»ñµÃµÄijƷÖʵijèÎïÃÇ×Ü×î´ó¹¥»÷°Ù·Ö±Èת»»Îª¸øÈËÎïµÄÉúÃü # # @author: Alee # @date 2018-1-20 ÏÂÎç02:50:26 # @version 1.0 # # @note: # #--------------------------------------------------------------------- #µ¼Èë import ChConfig import PlayerControl import GameFuncComm import ShareDefine import IpyGameDataPY #--------------------------------------------------------------------- ## buffÏßÐÔÔö¼ÓÊôÐÔ # @param defender Buff³ÐÊÜÕß # @param curEffect ¼¼ÄÜЧ¹û # @param calcDict ¼¼ÄÜЧ¹ûÀÛ¼Ó×ܱí # @return None def OnCalcBuffEx(defender, curEffect, calcDict, curBuff): minAtk, maxAtk = GetPetAtkValueByQuality(defender, curEffect.GetEffectValue(0)) calcDict[ChConfig.TYPE_Calc_AttrMaxHP] = calcDict.get(ChConfig.TYPE_Calc_AttrMaxHP, 0) + \ int(maxAtk*curEffect.GetEffectValue(1)*1.0/ChConfig.Def_MaxRateValue) return ## ·µ»ØbuffÀàÐÍ£¬ÏßÐÔÓë·ñ # @param # @return None # @remarks º¯ÊýÏêϸ˵Ã÷. def GetCalcType(): return ChConfig.TYPE_Linear ## »ñÈ¡ÁéÊÞ³öսʱµÄ¹¥»÷Á¦ def GetPetAtkValueByQuality(curPlayer, quality): if not GameFuncComm.GetFuncCanUse(curPlayer, ShareDefine.GameFuncID_Pet): #GameWorld.DebugLog(' ³èÎ﹦ÄÜ먦Æô') return 0, 0 classAddAtk = 0 petPackIndex = ShareDefine.rptPet petPack = curPlayer.GetItemManager().GetPack(petPackIndex) for i in range(petPack.GetCount()): packItem = petPack.GetAt(i) if packItem.IsEmpty(): continue if quality != packItem.GetUserAttr(ShareDefine.Def_IudetPet_QualityLV): # Ö¸¶¨Æ·ÖÊ continue petItemNPCID = packItem.GetUserAttr(ShareDefine.Def_IudetPet_NPCID) classlv = packItem.GetUserAttr(ShareDefine.Def_IudetPet_ClassLV) classIpyData = IpyGameDataPY.GetIpyGameData("PetClassCost", petItemNPCID, classlv + 1) classAddAtk += (classIpyData.GetAtkAdd() if classIpyData else 0) totalMinAtk = classAddAtk totalMaxAtk = classAddAtk return totalMinAtk, totalMaxAtk