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