From 95e5cc37cc097f506004f31cdfff1118953296f6 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 16 十二月 2025 15:58:24 +0800
Subject: [PATCH] 129 【战斗】战斗系统-服务端(董白全部技能; 增加效果5024 5504;buff持续规则字段支持配置每大回合-1层;动态属性ID变化增加计算方式11-根据自己已损失血量百分比;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BattleObj.py |   21 +++++++++++++++++----
 1 files changed, 17 insertions(+), 4 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BattleObj.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BattleObj.py
index f2a0f36..a65e3e0 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BattleObj.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BattleObj.py
@@ -579,16 +579,25 @@
             if buff.GetOwnerID() == ownerID:
                 return buff
         return
-    def FindBuffByState(self, state):
+    def FindBuffByState(self, state, ownerID=0):
         ## 查找某种buff状态的buff
+        # @param ownerID: 可指定获取归属于某个对象ID的buff
         if state not in self._buffStateDict:
             return
         buffIDList = self._buffStateDict[state]
         if not buffIDList:
             return
-        buffID = buffIDList[0]
-        if buffID in self._buffIDDict:
-            return self._buffIDDict[buffID]
+        if ownerID:
+            for buffID in buffIDList:
+                if buffID not in self._buffIDDict:
+                    continue
+                buff = self._buffIDDict[buffID]
+                if buff.GetOwnerID() == ownerID:
+                    return buff
+        else:
+            buffID = buffIDList[0]
+            if buffID in self._buffIDDict:
+                return self._buffIDDict[buffID]
     def FindBuffListByState(self, state):
         ## 查找某种buff状态的buff列表
         if state not in self._buffStateDict:
@@ -646,6 +655,7 @@
         self._hurtListEx = [] # 额外伤血列表,如平摊、溅射 [HurtObj, ...]
         self._bySkill = None # 由哪个技能触发的
         self._byBuff = None # 由哪个buff触发的
+        self._byTriggerWay = 0 # 由哪个被动方式触发的
         self._afterLogicList = [] # 技能释放后需要处理逻辑 [[logicType, logicParams], ...]
         self._energy = 0 # 技能能量,一般用于累计能量达到某种条件后做逻辑
         
@@ -671,6 +681,7 @@
         self._effIgnoreObjIDList = []
         self._bySkill = None
         self._byBuff = None
+        self._byTriggerWay = 0
         self._afterLogicList = []
         self.ClearHurtObj()
         return
@@ -722,6 +733,8 @@
     def SetBySkill(self, bySkill): self._bySkill = bySkill
     def GetByBuff(self): return self._byBuff
     def SetByBuff(self, byBuff): self._byBuff = byBuff
+    def GetByTriggerWay(self): return self._byTriggerWay
+    def SetByTriggerWay(self, byTriggerWay): self._byTriggerWay = byTriggerWay
     def GetTagObjList(self): return self._tagObjList # 技能主要目标列表
     def SetTagObjList(self, tagObjList): self._tagObjList = tagObjList
     def GetTagObjListEx(self): return self._tagObjListEx # 技能额外目标列表

--
Gitblit v1.8.0