From 18af22c697cfc551ac97e5e625930dd7cdc8ecbb Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 26 十一月 2025 10:10:06 +0800
Subject: [PATCH] 129 【战斗】战斗系统-服务端(修复5003效果消耗buff层持续伤害扣血bug;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/OpenFunc.py                 |    4 +++-
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_5003.py |    2 +-
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py                      |   11 ++++++++---
 3 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/OpenFunc.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/OpenFunc.py
index a5c4857..a61efa6 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/OpenFunc.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/OpenFunc.py
@@ -22,6 +22,7 @@
 import GameFuncComm
 import ChConfig
 import ShareDefine
+import PlayerOnline
 
 ## GM命令执行入口
 #  @param curPlayer 当前玩家
@@ -43,7 +44,8 @@
         else:
             openFuncID = cmdList[1] if len(cmdList) > 1 else 0
             DoGMOpenFunc(curPlayer, openFuncID)
-            
+        PlayerOnline.GetOnlinePlayer(curPlayer).ReCalcAllAttr()
+        
     PrintFuncOpenState(curPlayer)
     return
 
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_5003.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_5003.py
index a1df592..d87d0f1 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_5003.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_5003.py
@@ -22,7 +22,7 @@
     remainLayer = max(0, effBuff.GetLayer() - 1)
     effBuff.SetLayer(remainLayer)
     
-    TurnBuff.DoBuffProcess(turnFight, batObj, effBuff)
+    TurnBuff.DoBuffProcess(turnFight, batObj, effBuff, costLayer=1)
     
     if remainLayer <= 0:
         TurnBuff.DoBuffDel(turnFight, batObj, effBuff)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py
index c505673..7c3b80c 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py
@@ -2534,10 +2534,15 @@
     dMaxHP = defObj.GetMaxHP()
     GameWorld.DebugLog("结算dot: atkID=%s,defID=%s,buffID=%s,skillID=%s,ownerID=%s,hurtValue=%s,hurtTypes=%s,dHP=%s/%s" 
                        % (atkID, defID, buffID, skillID, ownerID, hurtValue, hurtTypes, dHP, dMaxHP))
+    costLayer = kwargs.get("costLayer")
     layer = curBuff.GetLayer()
-    if layer > 0:
-        hurtValue *= layer
-        GameWorld.DebugLog("    多层buff伤害: hurtValue=%s,layer=%s" % (hurtValue, layer))
+    if costLayer > 0:
+        hurtValue *= min(costLayer, max(1, layer))
+        GameWorld.DebugLog("    消耗buff层伤害: hurtValue=%s,costLayer=%s,layer=%s" % (hurtValue, costLayer, layer))
+    else:
+        if layer > 0:
+            hurtValue *= layer
+            GameWorld.DebugLog("    多层buff伤害: hurtValue=%s,layer=%s" % (hurtValue, layer))
     if "FinalDamPer" in kwargs:
         FinalDamPer = kwargs["FinalDamPer"]
         hurtValue *= (10000 + FinalDamPer) / 10000.0

--
Gitblit v1.8.0