From 85a55d93ea4c99337ad1b81d2c471208effaebd1 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 23 十二月 2025 18:59:22 +0800
Subject: [PATCH] 121 【武将】武将系统-服务端(修复个别情况下上阵中的生效卡被视为未生效的bug;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnPassive.py |   38 ++++++++++++++++++++++++++++++++++----
 1 files changed, 34 insertions(+), 4 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnPassive.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnPassive.py
index dacd25b..fc4ec53 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnPassive.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnPassive.py
@@ -20,6 +20,7 @@
 import IpyGameDataPY
 import BattleObj
 import ChConfig
+import TurnSkill
 
 GameWorld.ImportAll("Script\\Skill\\", "PassiveTrigger")
 
@@ -82,14 +83,34 @@
     if not effSkill:
         return
     
+    if effSkill.GetCoolDownTime():
+        if hasattr(effSkill, "GetRemainTime") and effSkill.GetRemainTime() > 0:
+            GameWorld.DebugLogEx("被动效果技能CD中! effSkillID=%s,RemainTime=%s", skillID, effSkill.GetRemainTime())
+            return
+        kwargs["byEffSkill"] = effSkill # 目前用于触发被动技能时,该效果技能提前先设置CD,防止嵌套触发时CD后置才设置,如关羽的怒技追击
+        
+    # 没有类型的,纯配被动效果,有类型的技能在 OnUseSkill 统一处理回合次数,这里只处理纯被动效果的
+    useCntLimit = None
+    if not effSkill.GetSkillType(): 
+        useCntLimit = TurnSkill.CheckSkillUseCntLimit(batObj, effSkill)
+        if useCntLimit:
+            return
+        
+    isOK = False
     kwargs["byTriggerWay"] = triggerWay
     for effID in effIDList:
         curEffect = effSkill.GetEffectByID(effID, triggerWay)
         if not curEffect:
             continue
-        DoSkillEffectLogic(turnFight, batObj, tagObj, effSkill, curEffect, connSkill, connBuff, **kwargs)
+        if DoSkillEffectLogic(turnFight, batObj, tagObj, effSkill, curEffect, connSkill, connBuff, **kwargs):
+            isOK = True # 有效果触发就算
         
-    return
+    if isOK:
+        if useCntLimit != None:
+            #GameWorld.DebugLogEx("增加被动效果回合触发次数! skillID=%s", effSkill.GetSkillID())
+            batObj.AddSkillUseCnt(effSkill.GetSkillID())
+            
+    return isOK
 
 def DoSkillEffectLogic(turnFight, batObj, tagObj, effSkill, curEffect, connSkill, connBuff=None, **kwargs):
     effID = curEffect.GetEffectID()
@@ -99,8 +120,17 @@
     callFunc = GameWorld.GetExecFunc(PassiveTrigger, "%s.%s" % (pyName, "DoSkillEffectLogic"))
     if not callFunc:
         return
-    callFunc(turnFight, batObj, tagObj, effSkill, curEffect, connSkill, connBuff, **kwargs)
-    return
+    isOK = callFunc(turnFight, batObj, tagObj, effSkill, curEffect, connSkill, connBuff, **kwargs)
+    if not isOK:
+        return
+    
+    cdTime = effSkill.GetCoolDownTime()
+    if cdTime:
+        # 非触发技能的在后面设置CD即可
+        if hasattr(effSkill, "GetRemainTime"):
+            effSkill.SetRemainTime(cdTime)
+            
+    return True
 
 def __doTriggerPassiveEffectByBuff(turnFight, batObj, tagObj, triggerWay, buffID, effIDList, connSkill=None, connBuff=None, **kwargs):
     buffMgr = batObj.GetBuffManager()

--
Gitblit v1.8.0