From 063c37a60dfad1fad8e31ee235e0d69c3ae35481 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期四, 12 一月 2023 17:12:08 +0800
Subject: [PATCH] 9762 【BT8】【后端】藏宝阁(古宝特殊效果属性支持)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPet.py |   38 +++++++++++++++++++++++++++++++++-----
 1 files changed, 33 insertions(+), 5 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPet.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPet.py
index e027e7a..bb6fab2 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPet.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPet.py
@@ -787,6 +787,21 @@
         totalPetLV += classLV
     return totalPetLV
 
+def GetTotalPetCount(curPlayer):
+    totalPetCount = 0
+    petPackIndex = ShareDefine.rptPet
+    petPack = curPlayer.GetItemManager().GetPack(petPackIndex)
+    for i in range(petPack.GetCount()):
+        petItem = petPack.GetAt(i)
+        if petItem.IsEmpty():
+            continue 
+        petItemNPCID = petItem.GetUserAttr(ShareDefine.Def_IudetPet_NPCID)
+        petIpyData = GetPetIpydata(petItemNPCID)
+        if not petIpyData:
+            continue
+        totalPetCount += 1
+    return totalPetCount
+
 def IsPetMaxLV(curPlayer, petNPCID):
     petItem = GetPetDataItemByNPCID(curPlayer, petNPCID)
     if not petItem:
@@ -858,7 +873,9 @@
     skillAttrList = [{} for _ in range(4)]
     allAttrListPetSkin = [{} for _ in range(4)]
     allAttrListTrain = [{} for _ in range(4)]
-    totalMinAtk, totalMaxAtk = GetPetAtkValue(curPlayer)
+    customAttrDictPet = {}
+    totalMinAtk, totalMaxAtk, qualityAttrInfo = GetPetAtkValue(curPlayer)
+    customAttrDictPet["petQualityAttrInfo"] = qualityAttrInfo
     PlayerControl.CalcAttrDict_Type(ShareDefine.Def_Effect_PetMinAtk, totalMinAtk, allAttrListPet)
     PlayerControl.CalcAttrDict_Type(ShareDefine.Def_Effect_PetMaxAtk, totalMaxAtk, allAttrListPet)
     totalSignNum = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TotalSignNum) # 总签到天数
@@ -923,7 +940,7 @@
                 
     PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_PetTarin, allAttrListTrain)
     
-    PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Pet, allAttrListPet)
+    PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Pet, allAttrListPet, customAttrDict=customAttrDictPet)
     PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_PetSoul, allAttrListPetSoul)
     PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_PetSign, allAttrListPetSign)
     
@@ -962,9 +979,10 @@
 
 ## 获取灵兽出战时的攻击力
 def GetPetAtkValue(curPlayer):
+    qualityAttrInfo = {}
     if not GameFuncComm.GetFuncCanUse(curPlayer, ShareDefine.GameFuncID_Pet):
         #GameWorld.DebugLog(' 宠物功能未开启')
-        return 0, 0
+        return 0, 0, qualityAttrInfo
     
     classAddAtk = 0
     petPackIndex = ShareDefine.rptPet
@@ -976,10 +994,20 @@
         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)
+        atkAdd = classIpyData.GetAtkAdd() if classIpyData else 0
+        classAddAtk += atkAdd
+        
+        petIpyData = GetPetIpydata(petItemNPCID)
+        if petIpyData:
+            quality = petIpyData.GetQuality()
+            if quality not in qualityAttrInfo:
+                qualityAttrInfo[quality] = {}
+            qualityAttrDict = qualityAttrInfo[quality]
+            qualityAttrDict[ShareDefine.Def_Effect_PetAtk] = qualityAttrDict.get(ShareDefine.Def_Effect_PetAtk, 0) + atkAdd
+            
     totalMinAtk = classAddAtk
     totalMaxAtk = classAddAtk
-    return totalMinAtk, totalMaxAtk
+    return totalMinAtk, totalMaxAtk, qualityAttrInfo
 
 def OnPlayerPetLogin(curPlayer):
     ## 登录处理

--
Gitblit v1.8.0