From e797b694ee5320e50e4da933352b93ad811a3277 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 22 十二月 2025 16:38:52 +0800
Subject: [PATCH] 129 【战斗】战斗系统-服务端(周瑜技能,除了最后一个觉醒;增加效果5028 5509;)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_5509.py | 41 +++++++++++++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_5008.py | 15 ++--
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py | 2
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_5028.py | 79 ++++++++++++++++++++++++++
4 files changed, 129 insertions(+), 8 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_5008.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_5008.py
index eeaaa6b..28f11bb 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_5008.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_5008.py
@@ -47,20 +47,21 @@
effSkillTypeID = effSkill.GetSkillTypeID()
changeLayers += TurnPassive.GetTriggerEffectValue(turnFight, batObj, tagObj, ChConfig.PassiveEff_AddChangeLayers5008, connSkillTypeID=effSkillTypeID, **kwargs)
- changeToLayer = 0
+ remainLayers = changeLayers # 剩余可转层数
+ changeToLayer = 0 # 最终转层数
for tagBuff in tagBuffList:
- if changeLayers <= 0:
+ if remainLayers <= 0:
break
skillID = tagBuff.GetSkillID()
curLayer = max(1, tagBuff.GetLayer()) # 至少算1层
- if curLayer > changeLayers:
- updLayer = curLayer - changeLayers
- changeLayers = 0
- changeToLayer += changeLayers
+ if curLayer > remainLayers:
+ updLayer = curLayer - remainLayers
+ changeToLayer += remainLayers
+ remainLayers = 0
else:
updLayer = 0
- changeLayers -= curLayer
changeToLayer += curLayer
+ remainLayers -= curLayer
GameWorld.DebugLog("转化buff: tagID=%s,tagBuffID=%s,skillID=%s,curLayer=%s,updLayer=%s,changeToLayer=%s"
% (tagObj.GetID(), tagBuff.GetBuffID(), skillID, curLayer, updLayer, changeToLayer))
TurnBuff.DoBuffLayerChange(turnFight, tagObj, tagBuff, updLayer, connSkill)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_5028.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_5028.py
new file mode 100644
index 0000000..aa0db6a
--- /dev/null
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_5028.py
@@ -0,0 +1,79 @@
+#!/usr/bin/python
+# -*- coding: GBK -*-
+#-------------------------------------------------------------------------------
+#
+##@package Skill.PassiveTrigger.PassiveEff_5028
+#
+# @todo:转化目标身上某种状态buff(删除旧的转换成其他buff)
+# @author hxp
+# @date 2025-12-22
+# @version 1.0
+#
+# 详细描述: 转化目标身上某种状态buff(删除旧的转换成其他buff)
+#
+#-------------------------------------------------------------------------------
+#"""Version = 2025-12-22 16:30"""
+#-------------------------------------------------------------------------------
+
+import TurnBuff
+import GameWorld
+import TurnPassive
+import ChConfig
+import random
+
+def DoSkillEffectLogic(turnFight, batObj, tagObj, effSkill, curEffect, connSkill, connBuff, **kwargs):
+ buffState = curEffect.GetEffectValue(0) # buff状态
+ changeLayers = max(1, curEffect.GetEffectValue(1)) # 转化层数
+ rate = curEffect.GetEffectValue(2) # 转化概率
+ changeToSkillID = curEffect.GetEffectValue(3) # 转化为其他buff技能ID
+
+ if not GameWorld.CanHappen(rate):
+ GameWorld.DebugLogEx("5028概率不转化! rate=%s", rate)
+ return
+
+ tagBuffList = []
+ buffMgr = tagObj.GetBuffManager()
+ for buff in buffMgr.FindBuffListByState(buffState):
+ skillData = buff.GetSkillData()
+ if skillData.GetDispersedLimit():
+ continue
+ tagBuffList.append(buff)
+
+ if not tagBuffList:
+ GameWorld.DebugLog("目标没有可转化的buff: tagID=%s,buffState=%s" % (tagObj.GetID(), buffState))
+ return
+
+ random.shuffle(tagBuffList) # 随机
+ if changeLayers < len(tagBuffList):
+ # 不足时才额外取其他被动增加的
+ effSkillTypeID = effSkill.GetSkillTypeID()
+ changeLayers += TurnPassive.GetTriggerEffectValue(turnFight, batObj, tagObj, ChConfig.PassiveEff_AddChangeLayers5008, connSkillTypeID=effSkillTypeID, **kwargs)
+
+ remainLayers = changeLayers # 剩余可转层数
+ changeToLayer = 0 # 最终转层数
+ for tagBuff in tagBuffList:
+ if remainLayers <= 0:
+ break
+ skillID = tagBuff.GetSkillID()
+ curLayer = max(1, tagBuff.GetLayer()) # 至少算1层
+ if curLayer > remainLayers:
+ updLayer = curLayer - remainLayers
+ changeToLayer += remainLayers
+ remainLayers = 0
+ else:
+ updLayer = 0
+ changeToLayer += curLayer
+ remainLayers -= curLayer
+ GameWorld.DebugLog("转化buff: tagID=%s,tagBuffID=%s,skillID=%s,curLayer=%s,updLayer=%s,changeToLayer=%s"
+ % (tagObj.GetID(), tagBuff.GetBuffID(), skillID, curLayer, updLayer, changeToLayer))
+ TurnBuff.DoBuffLayerChange(turnFight, tagObj, tagBuff, updLayer, connSkill)
+
+ if changeToLayer <= 0:
+ return
+
+ if not changeToSkillID:
+ changeToSkillID = effSkill.GetSkillID()
+
+ buffOwner = batObj
+ TurnBuff.DoAddBuffBySkillID(turnFight, tagObj, changeToSkillID, buffOwner, connSkill, setLayerCnt=changeToLayer)
+ return True
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_5509.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_5509.py
new file mode 100644
index 0000000..7dac9f2
--- /dev/null
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_5509.py
@@ -0,0 +1,41 @@
+#!/usr/bin/python
+# -*- coding: GBK -*-
+#-------------------------------------------------------------------------------
+#
+##@package Skill.PassiveTrigger.PassiveEff_5509
+#
+# @todo:触发释放技能(验证是否为指定友军来源)
+# @author hxp
+# @date 2025-12-22
+# @version 1.0
+#
+# 详细描述: 触发释放技能(验证是否为指定友军来源)
+#
+#-------------------------------------------------------------------------------
+#"""Version = 2025-12-22 16:30"""
+#-------------------------------------------------------------------------------
+
+import TurnSkill
+import GameWorld
+
+def DoSkillEffectLogic(turnFight, batObj, tagObj, effSkill, curEffect, connSkill, connBuff, **kwargs):
+ if "byFriendObj" not in kwargs:
+ return
+ byFriendObj = kwargs.pop("byFriendObj") # 直接取出,防止传递
+
+ passiveSkillID = curEffect.GetEffectValue(0) # 技能ID,为0时释放本技能
+ byHeorID = curEffect.GetEffectValue(1) # 仅友军武将ID时有效(验证用,不一定是技能目标)
+
+ friendHeroID = byFriendObj.GetHeroID()
+ if friendHeroID != byHeorID:
+ GameWorld.DebugLogEx("5509非友军触发来源不处理! friendHeroID=%s != %s", friendHeroID, byHeorID)
+ return
+
+ if not passiveSkillID:
+ passiveSkillID = effSkill.GetSkillID()
+ if not passiveSkillID:
+ return
+
+ effectID = curEffect.GetEffectID()
+ effSkillID = effSkill.GetSkillID()
+ return TurnSkill.OnUsePassiveSkill(turnFight, batObj, byFriendObj, passiveSkillID, connSkill, effSkillID, effectID, connBuff, **kwargs)
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 d593e48..3474507 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py
@@ -1469,7 +1469,7 @@
TurnPassive.OnTriggerPassiveEffect(turnFight, lineupObj, ChConfig.TriggerWay_EnemyDie, dieObj, connSkill=useSkill)
# 己方单位死亡时
else:
- TurnPassive.OnTriggerPassiveEffect(turnFight, lineupObj, ChConfig.TriggerWay_FriendDie, dieObj, connSkill=useSkill)
+ TurnPassive.OnTriggerPassiveEffect(turnFight, lineupObj, ChConfig.TriggerWay_FriendDie, dieObj, connSkill=useSkill, byFriendObj=dieObj)
# 复活时
for tagObj in reviveObjList:
--
Gitblit v1.8.0