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