From 0f542f5938f5281588d4ded8f3ba16ee661c4c5e Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 06 一月 2026 19:46:12 +0800
Subject: [PATCH] 121 【武将】武将系统-服务端(Hero命令优化一键满级可指定等级、星级、突破、觉醒;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGubao.py |   24 +++++++++++++++++-------
 1 files changed, 17 insertions(+), 7 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGubao.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGubao.py
index b35c897..1114e28 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGubao.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGubao.py
@@ -37,7 +37,7 @@
     return lv, star, layer
 def SetGubaoInfo(curPlayer, gubaoID, lv, star, layer):
     ## 特殊效果层*100000 + 等级*100 + 星级
-    info = min(layer, 99) * 100000 + min(lv, 999) * 100 + min(star, 99)
+    info = min(layer, 9999) * 100000 + min(lv, 999) * 100 + min(star, 99)
     PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GubaoInfo % gubaoID, info)
     return
 
@@ -257,6 +257,8 @@
         if not IsGubaoActivated(curPlayer, gubaoID):
             continue
         
+        quality = ipyData.GetGubaoQuality()
+        
         lv, star, layer = GetGubaoInfo(curPlayer, gubaoID)
         gubaoStarDict[gubaoID] = star
         
@@ -275,15 +277,23 @@
         # 特殊属性
         attrID = ipyData.GetSpecAttrID()
         effType = ipyData.GetSpecEffType()
+        layerMax = ipyData.GetSpecEffLayerMax()
         SpecAttrValue = ipyData.GetSpecAttrValue()
-        SpecAttrPerLVAdd = ipyData.GetSpecAttrPerLVAdd()
         SpecAttrPerStarAdd = ipyData.GetSpecAttrPerStarAdd()
-        attrValue = SpecAttrValue + SpecAttrPerLVAdd *  max(lv - 1, 0) + SpecAttrPerStarAdd * star
-        if effType: # 有特殊效果类型的
-            attrValue *= layer
+        specLVAttr = 0
+        lvAttrIpyData = IpyGameDataPY.GetIpyGameData("GubaoLVAttr", quality, lv)
+        if lvAttrIpyData:
+            specAttrIDList = lvAttrIpyData.GetSpecAttrIDList()
+            specAttrValueList = lvAttrIpyData.GetSpecAttrValueList()
+            for sIndex in range(min(len(specAttrIDList), len(specAttrValueList))):
+                if specAttrIDList[sIndex] == attrID:
+                    specLVAttr = specAttrValueList[sIndex]
+        if not layerMax:
+            layer, layerMax = 1, 1 # 无层级限制的默认1层
+        attrValue = int((SpecAttrValue + SpecAttrPerStarAdd * star + specLVAttr / float(layerMax)) * layer)
         attrDict[attrID] = attrDict.get(attrID, 0) + attrValue
-        GameWorld.DebugLog("古宝特殊属性! gubaoID=%s,lv=%s,star=%s,effType=%s,layer=%s,attrID=%s,v=%s,perLV=%s,perStar=%s,attrValue=%s,%s" 
-                           % (gubaoID, lv, star, effType, layer, attrID, SpecAttrValue, SpecAttrPerLVAdd, SpecAttrPerStarAdd, attrValue, attrDict), playerID)
+        GameWorld.DebugLog("古宝特殊属性! gubaoID=%s,quality=%s,lv=%s,star=%s,effType=%s,layer=%s/%s,attrID=%s,v=%s,perStar=%s,specLVAttr=%s,attrValue=%s,%s" 
+                           % (gubaoID, quality, lv, star, effType, layer, layerMax, attrID, SpecAttrValue, SpecAttrPerStarAdd, specLVAttr, attrValue, attrDict), playerID)
         
     # 共鸣
     for index in range(ipyDataMgr.GetGubaoResonanceCount()):

--
Gitblit v1.8.0