From ffb198b68f7e75f4fb2046189f1e7b2992d2ebac Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 15 九月 2025 14:41:24 +0800
Subject: [PATCH] 129 【战斗】战斗系统-服务端(于禁技能,支持格挡印记;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BattleObj.py |   44 +++++++++++++++++++++++++++++---------------
 1 files changed, 29 insertions(+), 15 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 150d32d..8b7a961 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BattleObj.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BattleObj.py
@@ -226,6 +226,7 @@
     def GetEffectID(self): return self._effID
     def GetEffectValue(self, index): return self._values[index] if len(self._values) > index else 0
     def GetEffectValueCount(self): return len(self._values)
+    def GetEffectValues(self): return self._values # 直接返回整个效果values
     def GetTriggerWay(self): return self._triggerWay
     def GetTriggerSrc(self): return self._triggerSrc
     #def GetTriggerParams(self, index): return self._triggerParams[index] if len(self._triggerParams) > index else 0
@@ -344,6 +345,7 @@
         self._buffList = []
         self._buffIDDict = {}
         self._skillTypeIDBuffIDs = {}
+        self._buffStateDict = {}
         self._buffID = 0
         return
     
@@ -400,13 +402,13 @@
         return
     
     def GetBuff(self, buffID): return self._buffIDDict.get(buffID, None)
-    def FindBuffBySkillID(self, skillID):
+    def FindBuffListBySkillID(self, skillID):
         ## 返回该技能ID的所有buff列表
         skillData = IpyGameDataPY.GetIpyGameData("Skill", skillID)
         if not skillData:
             return []
-        return self.FindBuffBySkillTypeID(skillData.GetSkillTypeID())
-    def FindBuffBySkillTypeID(self, skillTypeID):
+        return self.FindBuffListBySkillTypeID(skillData.GetSkillTypeID())
+    def FindBuffListBySkillTypeID(self, skillTypeID):
         ## 返回该技能TypeID的所有buff列表
         if skillTypeID not in self._skillTypeIDBuffIDs:
             return []
@@ -416,6 +418,13 @@
                 continue
             buffs.append(self._buffIDDict[buffID])
         return buffs
+    def FindBuffByState(self, state):
+        ## 查找某种buff状态的buff
+        buffIDList = self._buffStateDict.get(state, [])
+        if not buffIDList:
+            return
+        buffID = buffIDList[0]
+        return self._buffIDDict.get(buffID, None)
     
     def AddBuffState(self, state, buffID):
         ## 添加buff影响的状态,ChConfig.BatObjStateList
@@ -548,6 +557,7 @@
     
     def GetSkillCount(self): return len(self._skillList)
     def GetSkillByIndex(self, index): return self._skillList[index]
+    def GetSkillIDList(self): return self._skillDict.keys()
     def FindSkillByID(self, skillID): return self._skillDict.get(skillID, None)
     def FindSkillByTypeID(self, skillTypeID):
         skill = None
@@ -597,6 +607,7 @@
         self.skinID = 0
         self.country = 0
         self.atkDistType = 0
+        self.specialty = 0 # 特长
         self.sex = 0
         self.lv = 1
         self.fightPower = 0
@@ -637,6 +648,10 @@
         TurnPassive.RefreshPassive(self)
         return
     
+    def TurnReset(self):
+        ## 回合重置
+        self._skillTurnUseCntDict = {}
+        
     def UpdInitBatAttr(self, initAttrDict, skillIDList):
         ## 更新战斗属性,一般只有主阵容需要更新,战斗中养成、装备变化等引起的主阵容属性变更时需要实时更新
         self._initAttrDict = initAttrDict
@@ -666,6 +681,8 @@
     def SetCountry(self, country): self.country = country
     def GetAtkDistType(self): return self.atkDistType
     def SetAtkDistType(self, atkDistType): self.atkDistType = atkDistType
+    def GetSpecialty(self): return self.specialty
+    def SetSpecialty(self, specialty): self.specialty = specialty
     def GetSex(self): return self.sex
     def SetSex(self, sex): self.sex = sex
     def GetNPCID(self): return self.npcID # 如果是NPC战斗单位,则该值非0
@@ -799,10 +816,6 @@
         self.cureStat += cureValue
         return self.cureStat
     
-    def TurnReset(self):
-        ## 回合重置
-        self._skillTurnUseCntDict = {}
-    
 class BattleObjMgr():
     ## 战斗对象管理器
     
@@ -858,14 +871,15 @@
             return
         objID = batObj.objID
         GameWorld.DebugLog("回收战斗单位: objID=%s" % (objID))
-        turnFight = batObj.GetTurnFight()
-        if turnFight:
-            # //04 07 NPC消失#tagNPCDisappear 此处通知消失,与回合制死亡区分
-            clientPack = ChNetSendPack.tagNPCDisappear()
-            clientPack.NPCID = [objID]
-            clientPack.Count = len(clientPack.NPCID)
-            turnFight.addBatPack(clientPack)
-            
+        #前端确认不需要通知消失
+        #turnFight = batObj.GetTurnFight()
+        #if turnFight:
+        #    # //04 07 NPC消失#tagNPCDisappear 此处通知消失,与回合制死亡区分
+        #    clientPack = ChNetSendPack.tagNPCDisappear()
+        #    clientPack.NPCID = [objID]
+        #    clientPack.Count = len(clientPack.NPCID)
+        #    turnFight.addBatPack(clientPack)
+        
         # 最后回收对象
         ObjPool.GetPoolMgr().release(batObj)
         if objID not in self._freeIDList: # 回收ID,重复利用

--
Gitblit v1.8.0