From 7a88478e06c7384d90b6808a317a1dbc2bb98710 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 19 一月 2026 19:27:06 +0800
Subject: [PATCH] 423 【内政】命格系统-服务端(命格额外属性条数修改为由感悟层级决定;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BattleObj.py |   30 +++++++++++++++++++++++++++---
 1 files changed, 27 insertions(+), 3 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 061f81e..602c494 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BattleObj.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BattleObj.py
@@ -33,6 +33,7 @@
         self._batObj = batObj
         self._objID = batObj.GetID() if batObj else 0
         self._skillIDList = [] # 已有技能ID列表,获取被动中快速判断已学技能用
+        self.noDeadSkill = None # 不死技能效果,暂时只支持最多1个这种技能
         
         # 技能
         self._AffectSkillDict = {} # 被动技能 {(触发方式, 有效来源):{技能ID:[effID, ...], ...}, ...}
@@ -189,6 +190,11 @@
         effDict[skillID].append(effectID)
         if triggerWay not in self._skillTriggerWayList:
             self._skillTriggerWayList.append(triggerWay)
+            
+        # 加载不死技能效果
+        if triggerWay == ChConfig.TriggerWay_NoDead:
+            self.noDeadSkill = curSkill
+            
         return
         
     def RefreshBuffPassiveEffect(self):
@@ -664,6 +670,7 @@
         self._hurtListEx = [] # 额外伤血列表,如平摊、溅射 [HurtObj, ...]
         self._bySkill = None # 由哪个技能触发的
         self._byBuff = None # 由哪个buff触发的
+        self._byBatObj = None # 由哪个战斗对象触发的
         self._byTriggerWay = 0 # 由哪个被动方式触发的
         self._afterLogicList = [] # 技能释放后需要处理逻辑 [[logicType, logicParams], ...]
         self._energy = 0 # 技能能量,一般用于累计能量达到某种条件后做逻辑
@@ -690,6 +697,7 @@
         self._effIgnoreObjIDList = []
         self._bySkill = None
         self._byBuff = None
+        self._byBatObj = None
         self._byTriggerWay = 0
         self._afterLogicList = []
         self.ClearHurtObj()
@@ -742,6 +750,8 @@
     def SetBySkill(self, bySkill): self._bySkill = bySkill
     def GetByBuff(self): return self._byBuff
     def SetByBuff(self, byBuff): self._byBuff = byBuff
+    def GetByBatObj(self): return self._byBatObj
+    def SetByBatObj(self, byBatObj): self._byBatObj = byBatObj
     def GetByTriggerWay(self): return self._byTriggerWay
     def SetByTriggerWay(self, byTriggerWay): self._byTriggerWay = byTriggerWay
     def GetTagObjList(self): return self._tagObjList # 技能主要目标列表
@@ -903,6 +913,7 @@
         self.faction = 0 # 所属阵营,一般只有双方阵营, 1 或 2,发起方默认1
         self.lineupNum = 1 # 阵容位置编号,一般多V多时有用,通常默认1
         self.posNum = 0 # 所在阵容站位
+        self._batLineup = None # 所属战斗阵容对象
         self._hp = 0 # 当前生命值
         self._xp = 0 # 当前怒气值
         self._isAlive = True # 是否活着
@@ -989,9 +1000,11 @@
     def SetTFGUID(self, tfGUID): self.tfGUID = tfGUID
     def GetTurnFight(self): return TurnAttack.GetTurnFightMgr().getTurnFight(self.tfGUID)
     def GetBatLineup(self):
-        turnFight = self.GetTurnFight()
-        batFaction = turnFight.getBatFaction(self.faction)
-        return batFaction.getBatlineup(self.lineupNum)
+        if not self._batLineup:
+            turnFight = self.GetTurnFight()
+            batFaction = turnFight.getBatFaction(self.faction)
+            self._batLineup = batFaction.getBatlineup(self.lineupNum)
+        return self._batLineup
     def GetOwnerID(self): return self.ownerID # 如果是玩家战斗单位,则该值非0,为所属玩家ID
     def SetOwnerID(self, ownerID): self.ownerID = ownerID
     def GetID(self): return self.objID
@@ -1087,6 +1100,17 @@
             return False
         return True
     
+    def CanNoDead(self):
+        '''是否还可触发不死效果
+        暂定单个武将最多只支持配置1个不死效果,且单场战斗最多触发x次,即按技能cd判断即可
+        '''
+        noDeadSkill = self._passiveEffMgr.noDeadSkill # 固定有被动触发
+        if not noDeadSkill:
+            return
+        if noDeadSkill.GetRemainTime():
+            return
+        return True
+    
     def GetSneerTagObj(self):
         ## 获取被嘲讽的目标,如果存在则一定是活着的目标
         buffIDList = self._buffMgr.GetStateBuffIDList(ChConfig.BatObjState_Sneer)

--
Gitblit v1.8.0