1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#!/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