From 6f2c8b0e79e4963cc6aceda674847d04d23e02b2 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 24 十二月 2025 18:25:40 +0800
Subject: [PATCH] 16 卡牌服务端(MainLevelPass流向增加祝福树等级信息;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHero.py |   35 +++++++++++++++++++++++++++++------
 1 files changed, 29 insertions(+), 6 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHero.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHero.py
index 907551c..c494c7c 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHero.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHero.py
@@ -43,6 +43,7 @@
     Sync_PlayerHeroInfo(curPlayer)
     Sync_LineupRecommendInfo(curPlayer)
     Sync_HeroFatesInfo(curPlayer)
+    __CheckOSAHeroStar(curPlayer)
     return
 
 def OnPlayerFirstLogin(curPlayer):
@@ -605,6 +606,28 @@
             break
         singleItem.AddUserAttr(ShareDefine.Def_IudetHeroTalentID, talentID)
         singleItem.AddUserAttr(ShareDefine.Def_IudetHeroTalentIDLV, lvList[index])
+    return
+
+def GetHeroStarTotal(curPlayer):
+    ## 武将总星级
+    totalStar = 0
+    curPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptHero)
+    for index in range(curPack.GetCount()):
+        heroItem = curPack.GetAt(index)
+        if not heroItem or heroItem.IsEmpty():
+            continue
+        totalStar += heroItem.GetUserAttr(ShareDefine.Def_IudetHeroStar)
+    return totalStar
+
+def __CheckOSAHeroStar(curPlayer):
+    ## 线上bug临时处理
+    osaHeroStar = PlayerSuccess.GetSuccValue(curPlayer, ShareDefine.SuccType_OSAHeroStarUP, [])
+    starTotal = GetHeroStarTotal(curPlayer)
+    addStar = starTotal - osaHeroStar
+    if addStar <= 0:
+        return
+    GameWorld.Log("上线修正庆典武将升星成就进度! addStar=%s,starTotal=%s" % (addStar, starTotal))
+    PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_OSAHeroStarUP, addStar)
     return
 
 #// B2 32 武将突破 #tagCSHeroBreak
@@ -1263,13 +1286,13 @@
         qualityBreakIpyData = IpyGameDataPY.GetIpyGameData("HeroQualityBreak", quality, retBreakLV)
         if not qualityBreakIpyData:
             continue
-        costItemInfo = qualityBreakIpyData.GetUPCostItem()
-        if not costItemInfo:
+        costItemList = qualityBreakIpyData.GetUPCostItemList()
+        if not costItemList:
             continue
-        costItemID, costItemCount = costItemInfo
-        costItemCount = max(1, int(costItemCount * ratio / 100.0))
-        returnItemDict[costItemID] = returnItemDict.get(costItemID, 0) + costItemCount
-        returnDict[costItemID] = returnDict.get(costItemID, 0) + costItemCount
+        for costItemID, costItemCount in costItemList:
+            costItemCount = max(1, int(costItemCount * ratio / 100.0))
+            returnItemDict[costItemID] = returnItemDict.get(costItemID, 0) + costItemCount
+            returnDict[costItemID] = returnDict.get(costItemID, 0) + costItemCount
     GameWorld.DebugLog("    突破返还: quality=%s,breakLV=%s,ratio=%s,%s,总%s" % (quality, breakLV, ratio, returnDict, returnItemDict))
     return
 

--
Gitblit v1.8.0