#!/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 import PetControl #--------------------------------------------------------------------- ## 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_AttrATKMin] = calcDict.get(ChConfig.TYPE_Calc_AttrATKMin, 0) + \ int(minAtk*curEffect.GetEffectValue(1)*1.0/ChConfig.Def_MaxRateValue) calcDict[ChConfig.TYPE_Calc_AttrATKMax] = calcDict.get(ChConfig.TYPE_Calc_AttrATKMax, 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(curPet, quality): curPlayer = PetControl.GetPetOwner(curPet) if not curPlayer: return 0, 0 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