From bc5f3f1c88d225109fa39a85b209ef13f5fb52a9 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 06 二月 2026 21:28:13 +0800
Subject: [PATCH] 66 【公会】基础主体-服务端(跨服公会所有基本功能支持、跨服砍价支持;修改查看目标公会、查看目标玩家方式;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnBuff.py |   44 +++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 39 insertions(+), 5 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnBuff.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnBuff.py
index 3cf34db..46afd48 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnBuff.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnBuff.py
@@ -179,12 +179,15 @@
                 continue
             buffID = buff.GetBuffID()
             nowLayerCnt = buff.GetLayer()
-            GameWorld.DebugLogEx("    已经存在该buff: buffID=%s,skillTypeID=%s,ownerID=%s,buffRepeat=%s", buffID, skillTypeID, ownerID, buffRepeat)
+            GameWorld.DebugLogEx("    已经存在该buff: buffID=%s,skillTypeID=%s,ownerID=%s,buffRepeat=%s,nowLayerCnt=%s/%s", buffID, skillTypeID, ownerID, buffRepeat, nowLayerCnt, maxLayerCnt)
             
             resetAddTiming = False # 一般只有覆盖的才重新计算回合,视为重新添加
             remainTime = buffSkill.GetLastTime()
             updLayerCnt = addLayerCnt
             if buffRepeat == 3: # 叠加层级
+                if maxLayerCnt and nowLayerCnt >= maxLayerCnt:
+                    GameWorld.DebugLogEx("    已达最大层数: nowLayerCnt=%s/%s", nowLayerCnt, maxLayerCnt)
+                    return
                 updLayerCnt = nowLayerCnt + addLayerCnt
                 if maxLayerCnt and updLayerCnt > maxLayerCnt:
                     updLayerCnt = maxLayerCnt
@@ -584,9 +587,14 @@
     befHP = batObj.GetHP()
     befMaxHP = batObj.GetMaxHP()
     
+    isMingge = batObj.GetPosNum() == ChConfig.TFPosNum_Mingge
+    mgObj = None
+    if not isMingge:
+        mgObj = batObj.GetTFBatLineup().getMinggeObj()
+    mgObjID = mgObj.GetID() if mgObj else 0
     batAttrDict = batObj.ResetBattleEffect()
-    GameWorld.DebugLogEx("RefreshBuffAttr ID:%s,atk=%s,def=%s,hp=%s/%s,batAttrDict=%s", 
-                         objID, batObj.GetAtk(), batObj.GetDef(), befHP, befMaxHP, batAttrDict)
+    GameWorld.DebugLogEx("RefreshBuffAttr ID:%s,atk=%s,def=%s,hp=%s/%s,isMingge=%s(%s),batAttrDict=%s", 
+                         objID, batObj.GetAtk(), batObj.GetDef(), befHP, befMaxHP, isMingge, mgObjID, batAttrDict)
     
     skbufAttrDict = {}
     
@@ -661,11 +669,22 @@
     
     objID = batObj.GetID()
     # 先计算百分比加成或降低的
+    mgHaveAttrPer = False # 命格加成对友军有效
     perIDList = ChConfig.AttrPerDict.values()
     for attrID, attrPerID in ChConfig.AttrPerDict.items():
-        if attrPerID not in skbufAttrDict:
+        attrPerValue = 0
+        if attrPerID in skbufAttrDict:
+            attrPerValue += skbufAttrDict[attrPerID] # 可能是负值
+        if mgObj:
+            attrPerValue += mgObj.GetBatAttrValue(attrPerID)
+            if attrPerValue:
+                GameWorld.DebugLogEx("    命格额外加成: attrID=%s,attrPerID=%s,attrPerValue=%s", attrID, attrPerID, attrPerValue)
+        elif isMingge and attrPerValue:
+            mgHaveAttrPer = True
+            batObj.SetBatAttrValue(attrPerID, attrPerValue)
+            GameWorld.DebugLogEx("    命格保存加成: attrID=%s,attrPerID=%s,attrPerValue=%s", attrID, attrPerID, attrPerValue) 
+        if not attrPerValue:
             continue
-        attrPerValue = skbufAttrDict[attrPerID] # 可能是负值
         attrValue = batObj.GetBatAttrValue(attrID, False)
         if attrValue <= 0:
             continue
@@ -697,6 +716,21 @@
             batObj.SetHP(aftHP, isNotify)
     GameWorld.DebugLogEx("    befHP=%s/%s, aftHP=%s/%s", befHP, befMaxHP, aftHP, aftMaxHP)
     GameWorld.DebugLogEx("    最终属性 ID:%s,atk=%s,def=%s,hp=%s/%s,%s", objID, batObj.GetAtk(), batObj.GetDef(), aftHP, aftMaxHP, batObj.GetBatAttrDict())
+    
+    # 命格刷属性
+    if mgHaveAttrPer and isMingge and not isInit:
+        batLineup = batObj.GetTFBatLineup()
+        batObjMgr = BattleObj.GetBatObjMgr()
+        heroObjIDList = batLineup.getBatHeroObjIDList()
+        GameWorld.DebugLogEx("命格有加成属性同步刷新本阵容武将属性: heroObjIDList=%s", heroObjIDList)
+        for heroObjID in heroObjIDList:
+            heroObj = batObjMgr.getBatObj(heroObjID)
+            if not heroObj:
+                continue
+            if not heroObj.IsAlive():
+                continue
+            RefreshBuffAttr(heroObj)
+            
     return
 
 def SyncBuffRefresh(turnFight, curBatObj, curBuff, relatedSkillID=0, isNewAdd=False):

--
Gitblit v1.8.0