From 7dafc3a10c56f44ea6ab7fbdbdadd29ba679e1be Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 23 十二月 2025 15:30:09 +0800
Subject: [PATCH] 129 【战斗】战斗系统-服务端(步练师所有技能; 5023效果增加可指定消耗层级或不消耗怒气;增加效果6031;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_5023.py |   12 +++++++++---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6031.py |   33 +++++++++++++++++++++++++++++++++
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnBuff.py                       |   14 ++++++++------
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py                             |    1 +
 4 files changed, 51 insertions(+), 9 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index 97ad37d..378f9ed 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -4074,6 +4074,7 @@
 PassiveEff_AddChangeLayers5008 = 6028 # 增减5008效果的转化层数
 PassiveEff_AddBatDamPerByLayer = 6029 # 提升技能战斗伤害(根据身上buff状态层数)
 PassiveEff_LostHPProtect = 6030 # 掉血上限保护
+PassiveEff_ImmuneControlDepBuff = 6031 # 某种buff状态层达到x时免疫减益控制效果
 
 # 被动效果ID有触发值时就返回的
 PassiveEffHappenValueList = [PassiveEff_ChangeHurtType, PassiveEff_ImmuneControlBuff, PassiveEff_MustSuperHit, PassiveEff_SkillInvalid, 
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_5023.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_5023.py
index f06ae15..4aaf5f7 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_5023.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_5023.py
@@ -40,12 +40,18 @@
     if buffLayers < needLayers:
         GameWorld.DebugLogEx("buff状态层数不足不触发! buffState=%s,buffLayers=%s < %s", buffState, buffLayers, needLayers)
         return
-    updLayer = buffLayers - needLayers
-    GameWorld.DebugLogEx("消耗buff层释放技能: buffState=%s,buffLayers=%s,delLayers=%s,updLayer=%s", buffState, buffLayers, needLayers, updLayer)
+    delLayers = curEffect.GetEffectValue(3) # 指定消耗层数
+    if not delLayers:
+        delLayers = needLayers
+    updLayer = buffLayers - delLayers
+    GameWorld.DebugLogEx("消耗buff层释放技能: buffState=%s,buffLayers=%s,delLayers=%s,updLayer=%s", buffState, buffLayers, delLayers, updLayer)
     TurnBuff.DoBuffLayerChange(turnFight, batObj, curBuff, updLayer, connSkill)
     
     if exSkillID:
-        TurnSkill.OnUsePassiveSkill(turnFight, batObj, tagObj, exSkillID, connBuff=connBuff)
+        noUseXP = curEffect.GetEffectValue(4) # 怒气时是否不消耗怒气
+        if noUseXP:
+            kwargs["noUseXP"] = 1
+        TurnSkill.OnUsePassiveSkill(turnFight, batObj, tagObj, exSkillID, connBuff=connBuff, **kwargs)
             
     return True
 
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6031.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6031.py
new file mode 100644
index 0000000..d8f5cb2
--- /dev/null
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6031.py
@@ -0,0 +1,33 @@
+#!/usr/bin/python
+# -*- coding: GBK -*-
+#-------------------------------------------------------------------------------
+#
+##@package Skill.PassiveTrigger.PassiveEff_6031
+#
+# @todo:某种buff状态层达到x时免疫减益控制效果
+# @author hxp
+# @date 2025-12-23
+# @version 1.0
+#
+# 详细描述: 某种buff状态层达到x时免疫减益控制效果
+#
+#-------------------------------------------------------------------------------
+#"""Version = 2025-12-23 15:30"""
+#-------------------------------------------------------------------------------
+
+import GameWorld
+
+def GetHappenValue(attacker, defender, curEffect, effSkill, effBuff, connSkill, **skillkwargs):
+    buffState = curEffect.GetEffectValue(0) # buff状态
+    needLayers = curEffect.GetEffectValue(1) # 达到x层
+    
+    layerTotal = 0
+    buffMgr = attacker.GetBuffManager()
+    for buff in buffMgr.FindBuffListByState(buffState):
+        layerTotal += buff.GetLayer()
+        
+    if layerTotal < needLayers:
+        return
+    
+    GameWorld.DebugLogEx("某种buff状态层达到x时免疫减益控制效果! buffState=%s,layerTotal=%s >= %s", buffState, layerTotal, needLayers)
+    return 1
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 13a686b..33f700f 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnBuff.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnBuff.py
@@ -85,12 +85,14 @@
     ownerID = buffOwner.GetID()
     
     skillType = buffSkill.GetSkillType()
-    #无敌免疫持续减益buff、控制类buff
-    if skillType in [ChConfig.Def_SkillType_LstDepBuff, ChConfig.Def_SkillType_Action] \
-        and batObj.CheckInState(ChConfig.BatObjState_Wudi):
-        GameWorld.DebugLogEx("无敌状态下免疫该buff: curID=%s,skillID=%s,ownerID=%s,relatedSkillID=%s", curID, skillID, ownerID, relatedSkillID)
-        return
-    
+    #免疫减益buff、控制类buff
+    if skillType in [ChConfig.Def_SkillType_LstDepBuff, ChConfig.Def_SkillType_DepBuff, ChConfig.Def_SkillType_Action]:
+        if batObj.CheckInState(ChConfig.BatObjState_Wudi):
+            GameWorld.DebugLogEx("无敌状态下免疫该buff: curID=%s,skillID=%s,ownerID=%s,relatedSkillID=%s", curID, skillID, ownerID, relatedSkillID)
+            return
+        if TurnPassive.GetTriggerEffectValue(turnFight, batObj, buffOwner, ChConfig.PassiveEff_ImmuneControlDepBuff, buffSkill):
+            return
+        
     #被动触发免疫控制buff
     if skillType == ChConfig.Def_SkillType_Action:
         if TurnPassive.GetTriggerEffectValue(turnFight, batObj, buffOwner, ChConfig.PassiveEff_ImmuneControlBuff, buffSkill):

--
Gitblit v1.8.0