From 06a57e061dc7306236601b0cec20e67db9145f3b Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 24 十二月 2025 17:37:04 +0800
Subject: [PATCH] 129 【战斗】战斗系统-服务端(张飞所有技能;增加触发方式55-免疫伤害时;增加效果5510;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnBuff.py                       |   19 +++++----
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_5510.py |   41 ++++++++++++++++++++
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py                      |   22 ++++++----
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py                             |    8 +++
 4 files changed, 71 insertions(+), 19 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index 8768a14..b2118aa 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -3007,6 +3007,11 @@
     BatObjState_Link, # 链接(董白) 29
 ) = range(1 + 29)
 
+BatObjState_Nuhuo = 43 # 怒火(张飞),仅免疫伤害
+
+#免疫伤害的状态
+ImmuneHurtStateList = [BatObjState_Wudi, BatObjState_Nuhuo]
+
 #属于灼烧状态的
 BurnStateList = [BatObjState_Burn, BatObjState_BurnPlus]
 
@@ -4031,7 +4036,8 @@
 TriggerWay_DOTHurt, # 造成持续伤害时 52
 TriggerWay_FriendDotHurt, # 友方造成持续伤害时(多目标仅触发一次,包含自己) 53
 TriggerWay_NoDead, # 不时死(有配置该触发方式的视为有不死,触发死亡时不死保留1点血量) 54
-) = range(1, 1 + 54)
+TriggerWay_ImmuneHurt, # 免疫伤害时 55
+) = range(1, 1 + 55)
 
 # 不加载的被动触发方式,一般用于本技能固定触发逻辑用的
 TriggerWayNoLoadList = [TriggerWay_CurSkillEff, TriggerWay_CurSkillEffLst]
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_5510.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_5510.py
new file mode 100644
index 0000000..ae3f26e
--- /dev/null
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_5510.py
@@ -0,0 +1,41 @@
+#!/usr/bin/python
+# -*- coding: GBK -*-
+#-------------------------------------------------------------------------------
+#
+##@package Skill.PassiveTrigger.PassiveEff_5510
+#
+# @todo:进行追击
+# @author hxp
+# @date 2025-12-24
+# @version 1.0
+#
+# 详细描述: 进行追击
+#
+#-------------------------------------------------------------------------------
+#"""Version = 2025-12-24 17:30"""
+#-------------------------------------------------------------------------------
+
+import TurnSkill
+#import GameWorld
+import ChConfig
+
+def DoSkillEffectLogic(turnFight, batObj, tagObj, effSkill, curEffect, connSkill, connBuff, **kwargs):    
+    passiveSkillID = curEffect.GetEffectValue(0) # 技能ID,为0时释放本技能
+    checkTagBuffState = curEffect.GetEffectValue(1) # 可附加验证来源处于xx状态 [状态1, 状态2, ...]
+    if checkTagBuffState:
+        if not tagObj.CheckInState(checkTagBuffState):
+            #GameWorld.DebugLogEx("5510来源目标不在buff状态,无法触发! checkTagBuffState=%s", checkTagBuffState)
+            return
+        
+    if not passiveSkillID:
+        passiveSkillID = effSkill.GetSkillID()
+    if not passiveSkillID:
+        return
+    effectID = curEffect.GetEffectID()
+    effSkillID = effSkill.GetSkillID()
+    return TurnSkill.OnUsePassiveSkill(turnFight, batObj, tagObj, passiveSkillID, connSkill, effSkillID, effectID, connBuff, 
+                                       batType=ChConfig.TurnBattleType_Pursue, **kwargs)
+    
+def DoBuffEffectLogic(turnFight, batObj, tagObj, effBuff, curEffect, connSkill, connBuff, **kwargs):
+    effSkill = effBuff.GetSkillData().GetIpyData()
+    return DoSkillEffectLogic(turnFight, batObj, tagObj, effSkill, curEffect, connSkill, connBuff, **kwargs)
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 33f700f..517f921 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnBuff.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnBuff.py
@@ -284,15 +284,16 @@
             
     if refreshType and buffSkill and buffOwner:
         TurnPassive.OnTriggerPassiveEffect(turnFight, buffOwner, ChConfig.TriggerWay_BuffAddByOwner, tagObj=batObj, connSkill=buffSkill, connBuff=curBuff)
-        # 判断是否有额外属性的
-        if not isRefreshAttr:
-            effExDict = curBuff.GetEffectExDict()
-            for effCalcInfo in effExDict.keys():
-                effID = effCalcInfo[0]
-                if effID in ChConfig.AttrIDList:
-                    isRefreshAttr = True
-                    break
-                
+        
+    # 判断是否有额外属性的
+    if not isRefreshAttr:
+        effExDict = curBuff.GetEffectExDict()
+        for effCalcInfo in effExDict.keys():
+            effID = effCalcInfo[0]
+            if effID in ChConfig.AttrIDList:
+                isRefreshAttr = True
+                break
+            
     if isRefreshAttr:
         RefreshBuffAttr(batObj)
         
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 2670102..019e82f 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py
@@ -832,7 +832,7 @@
         tagID = tagObj.GetID()
         if tagID == ChConfig.HeroID_Caoren:
             continue
-        if tagObj.CheckInState(ChConfig.BatObjState_Wudi):
+        if tagObj.CheckInState(ChConfig.ImmuneHurtStateList):
             continue
         if not caorenProtectObj or tagObj.GetHP() < caorenProtectObj.GetHP():
             caorenProtectObj = tagObj
@@ -910,7 +910,7 @@
             continue
         if tagID == ChConfig.HeroID_Caoren:
             continue
-        if tagObj.CheckInState(ChConfig.BatObjState_Wudi):
+        if tagObj.CheckInState(ChConfig.ImmuneHurtStateList):
             continue
         if not caorenProtectObj or tagObj.GetHP() < caorenProtectObj.GetHP():
             caorenProtectObj = tagObj
@@ -1536,6 +1536,10 @@
             TurnPassive.OnTriggerPassiveEffect(turnFight, curObj, ChConfig.TriggerWay_BeMiss, tagObj, connSkill=useSkill)
             TurnPassive.OnTriggerPassiveEffect(turnFight, tagObj, ChConfig.TriggerWay_Miss, curObj, connSkill=useSkill)
             
+        # 免疫
+        if tagID in immuneObjIDList:
+            TurnPassive.OnTriggerPassiveEffect(turnFight, tagObj, ChConfig.TriggerWay_ImmuneHurt, curObj, connSkill=useSkill)
+            
         if tagID in effIgnoreObjIDList:
             continue
         
@@ -1894,7 +1898,7 @@
     OnUseSkill(turnFight, curBatObj, enhanceSkillData, batType=ChConfig.TurnBattleType_Enhance, bySkill=useSkill)
     return
 
-def OnUsePassiveSkill(turnFight, batObj, tagObj, passiveSkill, connSkill=None, effSkillID=0, effectID=0, connBuff=None, **kwargs):
+def OnUsePassiveSkill(turnFight, batObj, tagObj, passiveSkill, connSkill=None, effSkillID=0, effectID=0, connBuff=None, batType=ChConfig.TurnBattleType_Passive, **kwargs):
     '''被动触发使用技能
     @param passiveSkill: 释放的被动技能 或 技能ID
     @param connSkill: 由什么技能引起的
@@ -1944,12 +1948,12 @@
             GameWorld.DebugLogEx("    概率不触发: tagID=%s,happenRate=%s", tagID, happenRate)
             return
         passiveTagObjList = [tagObj]
-        isOK = OnUseSkill(turnFight, batObj, passiveSkill, passiveTagObjList, batType=ChConfig.TurnBattleType_Passive, bySkill=connSkill, byBuff=connBuff, **kwargs)
+        isOK = OnUseSkill(turnFight, batObj, passiveSkill, passiveTagObjList, batType=batType, bySkill=connSkill, byBuff=connBuff, **kwargs)
     elif tagAim == ChConfig.SkillTagAim_MainSkillEx:
         if not connSkill:
             return
         passiveTagObjList = connSkill.GetTagObjList()
-        isOK = OnUseSkill(turnFight, batObj, passiveSkill, passiveTagObjList, batType=ChConfig.TurnBattleType_Passive, bySkill=connSkill, byBuff=connBuff, **kwargs)
+        isOK = OnUseSkill(turnFight, batObj, passiveSkill, passiveTagObjList, batType=batType, bySkill=connSkill, byBuff=connBuff, **kwargs)
     elif tagAim == ChConfig.SkillTagAim_MainSkillFriend:
         if "byFriendObj" not in kwargs:
             return
@@ -1957,10 +1961,10 @@
         passiveTagObjList = [byFriendObj]
         GameWorld.DebugLogEx("被动触发技能,针对来源友军! effSkillID=%s,effectID=%s,passiveSkillID=%s,bySkillID=%s,byFriendID=%s", 
                              effSkillID, effectID, passiveSkillID, bySkillID, byFriendObj.GetID())
-        isOK = OnUseSkill(turnFight, batObj, passiveSkill, passiveTagObjList, batType=ChConfig.TurnBattleType_Passive, bySkill=connSkill, byBuff=connBuff, **kwargs)
+        isOK = OnUseSkill(turnFight, batObj, passiveSkill, passiveTagObjList, batType=batType, bySkill=connSkill, byBuff=connBuff, **kwargs)
     else:
         GameWorld.DebugLogEx("被动触发技能,重新锁定目标! effSkillID=%s,effectID=%s,passiveSkillID=%s,bySkillID=%s", effSkillID, effectID, passiveSkillID, bySkillID)
-        isOK = OnUseSkill(turnFight, batObj, passiveSkill, batType=ChConfig.TurnBattleType_Passive, bySkill=connSkill, byBuff=connBuff, **kwargs)
+        isOK = OnUseSkill(turnFight, batObj, passiveSkill, batType=batType, bySkill=connSkill, byBuff=connBuff, **kwargs)
         
     return isOK
 
@@ -2273,7 +2277,7 @@
         return hurtValue, hurtTypes, immuneHurt
     
     hurtValue = int(hurtValue)
-    if defObj.CheckInState(ChConfig.BatObjState_Wudi):
+    if defObj.CheckInState(ChConfig.ImmuneHurtStateList):
         hurtTypes |= pow(2, ChConfig.HurtAtkType_Immune) # 添加免疫
         immuneHurt = hurtValue
         hurtValue = 0
@@ -2557,7 +2561,7 @@
             
             immuneHurt = immuneHurtDict.get(aveObjID)
             if immuneHurt == None:
-                if aveObj.CheckInState(ChConfig.BatObjState_Wudi):
+                if aveObj.CheckInState(ChConfig.ImmuneHurtStateList):
                     immuneHurt = 0
                 else:
                     immuneHurt = -1 # 标记没有无敌

--
Gitblit v1.8.0