From 5f9bb5660f4a62ed7a30767a23d565fd9c152e2a Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 16 十二月 2025 20:38:01 +0800
Subject: [PATCH] 129 【战斗】战斗系统-服务端(关羽全部技能; 优化技能冷却时间字段对触发被动效果的技能也有效;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py |  149 +++++++++++++++++++++++++++++++++----------------
 1 files changed, 99 insertions(+), 50 deletions(-)

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 0ba5348..e031d89 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py
@@ -27,7 +27,6 @@
 import TurnPassive
 import TurnAttack
 import TurnBuff
-import ObjPool
 import FBLogic
 
 import random
@@ -60,13 +59,15 @@
     if not skillID:
         return
     
+    byTriggerWay = kwargs["byTriggerWay"] if "byTriggerWay" in kwargs else 0 # 不使用参数名 triggerWay, 防止传递过程中参数混乱
     if not curBatObj.IsAlive():
         if useSkill.GetSkillType() == ChConfig.Def_SkillType_Revive and useSkill.GetTagAim() == ChConfig.SkillTagAim_Self:
             GameWorld.DebugLogEx("死亡时使用复活自己的技能! skillID=%s", skillID)
         else:
-            triggerWay = kwargs.get("triggerWay", 0)
-            if triggerWay in ChConfig.DeadCanTriggerWayList:
-                GameWorld.DebugLogEx("死亡可触发的方式触发技能可释放! skillID=%s,triggerWay=%s", skillID, triggerWay)
+            if byTriggerWay in ChConfig.DeadCanTriggerWayList:
+                GameWorld.DebugLogEx("死亡可触发的方式触发技能可释放! skillID=%s,byTriggerWay=%s", skillID, byTriggerWay)
+            elif batType == ChConfig.TurnBattleType_Enhance:
+                GameWorld.DebugLogEx("死亡状态额外技能不限制,主技能能放的话也就能放! skillID=%s", skillID)                
             else:
                 GameWorld.DebugLogEx("死亡状态下无法释放该技能! skillID=%s", skillID)
                 return
@@ -140,18 +141,16 @@
                          objID, skillID, len(tagObjList), batType, bySkillID, curBatObj.GetHP(), curBatObj.GetMaxHP(), angerOverflow, curXP, oneActionUseCnt)
     # 以下为技能可以使用的处理,之后的逻辑默认技能使用成功
     
-    poolMgr = ObjPool.GetPoolMgr()
-    usePoolSkill = False
     if isinstance(useSkill, IpyGameDataPY.IPY_Skill):
-        usePoolSkill = True
         # 统一使用 BattleObj.PySkill
-        useSkill = poolMgr.acquire(BattleObj.PySkill, useSkill, objID)
+        useSkill = BattleObj.PySkill(useSkill, objID)
         
     useSkill.ResetUseRec()
     useSkill.SetTagObjList(tagObjList)
     useSkill.SetBatType(batType)
     useSkill.SetBySkill(bySkill)
     useSkill.SetByBuff(byBuff)
+    useSkill.SetByTriggerWay(byTriggerWay)
     
     isTurnNormalSkill = SkillCommon.isTurnNormalSkill(useSkill)
     if isTurnNormalSkill:
@@ -180,7 +179,7 @@
     else:
         __doUseSkill(turnFight, curBatObj, useSkill)
         
-    DoAttackResult(turnFight, curBatObj, useSkill)
+    DoAttackResult(turnFight, curBatObj, useSkill, **kwargs)
     
     if useTag:
         Sync_TurnFightTag(turnFight, useTag, 1)
@@ -192,8 +191,6 @@
             
     # 最后重置、回收对象
     useSkill.ResetUseRec()
-    if usePoolSkill:
-        poolMgr.release(useSkill)
     return True
 
 def CheckSkillUseCntLimit(batObj, useSkill):
@@ -851,8 +848,13 @@
     
     calcCureResults = []
     relativeObj = GetRelativeObj(turnFight, curBatObj)
+    multiValue = 1
+    addCureMulti = TurnPassive.GetTriggerEffectValue(turnFight, curBatObj, None, ChConfig.PassiveEff_AddCureMulti, useSkill)
+    if addCureMulti:
+        multiValue += addCureMulti / 100.0
+        
     for tagBatObj in useSkill.GetTagObjList():
-        cureHP = CalcCureHP(turnFight, curBatObj, tagBatObj, useSkill, relativeObj=relativeObj)
+        cureHP = CalcCureHP(turnFight, curBatObj, tagBatObj, useSkill, relativeObj=relativeObj, multiValue=multiValue)
         poisonCureOwner = GetPoisonCureOwner(tagBatObj)
         calcCureResults.append([tagBatObj, cureHP, poisonCureOwner])
         
@@ -1018,8 +1020,7 @@
     #    hurtValue *= (10000 + FinalDamPer) / 10000.0
     #    GameWorld.DebugLogEx("    增伤: hurtValue=%s,FinalDamPer=%s", hurtValue, FinalDamPer)
     
-    poolMgr = ObjPool.GetPoolMgr()
-    useSkill = poolMgr.acquire(BattleObj.PySkill, skillIpyData, atkID)
+    useSkill = BattleObj.PySkill(skillIpyData, atkID)
     useSkill.SetTagObjList([defObj])
     useSkill.SetBatType(ChConfig.TurnBattleType_Cot)
     
@@ -1055,7 +1056,6 @@
     Sync_TurnFightTag(turnFight, useTag, 1)
     
     useSkill.ResetUseRec()
-    poolMgr.release(useSkill)
     return
 
 def SkillModule_6(turnFight, curBatObj, useSkill, opType):
@@ -1123,7 +1123,7 @@
         
     return
 
-def DoAttackResult(turnFight, curBatObj, useSkill):
+def DoAttackResult(turnFight, curBatObj, useSkill, **kwargs):
     '''执行攻击结果
     @param curBatObj: 施法方或buff归属方
     '''
@@ -1140,6 +1140,14 @@
     if useSkill.GetCoolDownTime():
         useSkill.SetRemainTime(useSkill.GetCoolDownTime())
         
+    if "byEffSkill" in kwargs:
+        byEffSkill = kwargs["byEffSkill"]
+        cdTime = byEffSkill.GetCoolDownTime()
+        if cdTime:
+            if hasattr(byEffSkill, "GetRemainTime"):
+                byEffSkill.SetRemainTime(cdTime)
+                GameWorld.DebugLogEx("提前设置效果技能触发后CD,防止嵌套循环触发! effSkillID=%s,cdTime=%s", byEffSkill.GetSkillID(), cdTime)
+                
     __doCostZhanchui(turnFight, curBatObj, useSkill) # 先扣除再同步技能
     
     # 需先技能使用 - 前端按顺序优先表现技能释放内容,前端需要动作或有伤血则通知
@@ -1287,16 +1295,14 @@
     
     # 优先处理afterLogic,可再预先汇总一些会触发被动的信息
     relatedSkillID = useSkill.GetSkillID()
-    shieldBrokenList = [] # 记录盾破
+    delBuffAfterEffList = [] # buff消失后要触发的被动,一般用于后置处理的逻辑
     afterLogicList = useSkill.GetAfterLogicList()
     for logicType, logicData in afterLogicList:
         if logicType == ChConfig.AfterLogic_DelBuff:
-            buffObjID, buff, tagObjID = logicData
-            buffSkillData = buff.GetSkillData()
-            buffSkillTypeID = buffSkillData.GetSkillTypeID()
+            buffObjID, buff, tagObjID, afterTriggerData = logicData
             TurnBuff.DoBuffDelAfterLogicOver(turnFight, buffObjID, buff, useSkill)
-            if SkillCommon.isDamageShieldSkill(buffSkillData):
-                shieldBrokenList.append([buffObjID, tagObjID, buffSkillTypeID])
+            if afterTriggerData:
+                delBuffAfterEffList.append([buffObjID, buff, tagObjID, afterTriggerData])
                 
         elif logicType == ChConfig.AfterLogic_AddBuff:
             batObj = logicData[0]
@@ -1323,9 +1329,7 @@
             TurnAttack.SetObjKilled(turnFight, tagObj, curObj, useSkill)
     useSkill.SetKillObjList(killObjList)
     # 判断自己,因为反弹、平摊伤害的原因,有可能自己干死自己
-    selfAlive = curObj.IsAlive()
-    if selfAlive and curObj.GetHP() <= 0:
-        selfAlive = False
+    if curObj.IsAlive() and curObj.GetHP() <= 0:
         dieObjList.append(curObj)
         TurnAttack.SetObjKilled(turnFight, curObj)
         
@@ -1400,16 +1404,18 @@
     effIgnoreObjIDList = missObjIDList + immuneObjIDList
     useSkill.SetEffIgnoreObjIDList(effIgnoreObjIDList)
     # 优先触发本技能额外效果,注:仅该技能释放后该技能的额外效果视为主技能的效果,优先级最高
-    if selfAlive:
+    if curObj not in dieObjList:
         __DoCurSkillEff(turnFight, curObj, useSkill, effIgnoreObjIDList, isUseSkill)
     
     # ========== 以下触发被动 ==========
     
-    # 破盾时
-    for buffObjID, tagObjID, buffSkillTypeID in shieldBrokenList:
+    # buff消失后置处理的被动,优先处理,如破盾,区别于被动方式  ChConfig.TriggerWay_BuffDel(立即触发)
+    for buffObjID, buff, tagObjID, afterTriggerData in delBuffAfterEffList:
+        triggerWay, effInfoList = afterTriggerData
         buffObj = batObjMgr.getBatObj(buffObjID)
-        tagObj = batObjMgr.getBatObj(tagObjID)
-        TurnPassive.OnTriggerPassiveEffect(turnFight, buffObj, ChConfig.TriggerWay_ShieldBroken, tagObj, connSkillTypeID=buffSkillTypeID)
+        tagObj = batObjMgr.getBatObj(tagObjID) # 导致该buff消失的目标
+        GameWorld.DebugLogEx("buff消失后置处理的被动: buffObjID=%s,tagObjID=%s,triggerWay=%s,%s", buffObjID, tagObjID, triggerWay, effInfoList)
+        TurnPassive.OnTriggerPassiveEffList(turnFight, buffObj, triggerWay, tagObj, effInfoList, connSkill=useSkill, connBuff=buff)
         
     # 有击杀时
     for index, tagObj in enumerate(killObjList):
@@ -1420,6 +1426,7 @@
     if dieObjList:
         for dieObj in dieObjList:
             TurnPassive.OnTriggerPassiveEffect(turnFight, dieObj, ChConfig.TriggerWay_WhenDie, curObj, connSkill=useSkill)
+            __dongbaiRevive(turnFight, dieObj, useSkill) # 写死特殊处理董白复活
             
         for faction in [ChConfig.Def_FactionA, ChConfig.Def_FactionB]:
             batFaction = turnFight.getBatFaction(faction)
@@ -1464,6 +1471,7 @@
         # 掉血时
         if tagID in beHurtObjIDList:
             TurnPassive.OnTriggerPassiveEffect(turnFight, tagObj, ChConfig.TriggerWay_BeHurt, curObj, connSkill=useSkill)
+            #TurnPassive.OnTriggerPassiveEffect(turnFight, curObj, ChConfig.TriggerWay_HurtTag, tagObj, connSkill=useSkill) 暂时用不到先屏蔽
             
         #  受到任意效果时(除直接攻击外的任意效果,如buff、dot、治疗、额外怒技)
         if not isAttackDirect:
@@ -1525,6 +1533,33 @@
     if dieObjList:
         turnFight.checkOverByKilled()
         
+    return
+
+def __dongbaiRevive(turnFight, batObj, useSkill):
+    '''特殊处理董白复活: 董白死亡之后的时间,若有敌方单位阵亡,董白以50%血量复活
+    '''
+    faction = batObj.GetFaction()
+    batFaction = turnFight.getBatFaction(ChConfig.Def_FactionA if faction == ChConfig.Def_FactionB else ChConfig.Def_FactionB)
+    if not batFaction:
+        return
+    batLineup = batFaction.getBatlineup(1)
+    if ChConfig.HeroID_Dongbai not in batLineup.heroObjIDDict:
+        return
+    dongbaiObj = BattleObj.GetBatObjMgr().getBatObj(batLineup.heroObjIDDict[ChConfig.HeroID_Dongbai])
+    if not dongbaiObj or dongbaiObj.IsAlive():
+        return
+    skill = dongbaiObj.GetSkillManager().FindSkillByID(ChConfig.SkillID_DongbaiRevive)
+    if not skill:
+        GameWorld.DebugLogEx("董白还还未学习特殊复活技能! %s", ChConfig.SkillID_DongbaiRevive)
+        return
+    enemyDeadCnt = dongbaiObj.GetDictByKey("EnemyDeadCnt") + 1
+    dongbaiObj.SetDict("EnemyDeadCnt", enemyDeadCnt)
+    GameWorld.DebugLogEx("董白记录自身死亡后的敌方阵亡单位数: %s" % enemyDeadCnt)
+    needDeadCnt = skill.GetEffect(0).GetEffectValue(0) # 固定配置在效果1值
+    if enemyDeadCnt < needDeadCnt:
+        return
+    dongbaiObj.SetDict("EnemyDeadCnt", 0)
+    OnUseSkill(turnFight, dongbaiObj, skill, batType=ChConfig.TurnBattleType_Passive, bySkill=useSkill)
     return
 
 def __doCostZhanchui(turnFight, curBatObj, useSkill):
@@ -1817,6 +1852,8 @@
     batType = curSkill.GetBatType()
     
     changeHurtType = TurnPassive.GetTriggerEffectValue(turnFight, atkObj, defObj, ChConfig.PassiveEff_ChangeHurtType, curSkill)
+    if not changeHurtType:
+        changeHurtType = TurnPassive.GetTriggerEffectValue(turnFight, atkObj, defObj, ChConfig.PassiveEff_ChangeHurtTypeByBuff, curSkill)
     if changeHurtType == 1:
         ignoreDef = True
         GameWorld.DebugLogEx("强制变更本次伤害为无视防御! skillID=%s", skillID)
@@ -1895,6 +1932,7 @@
     dFinalDamPerDef = defObj.GetBatAttrValue(ChConfig.AttrID_FinalDamPerDef) # 最终减伤
     
     aFinalDamPer += TurnPassive.GetTriggerEffectValue(turnFight, atkObj, defObj, ChConfig.PassiveEff_AddFinalDamPer, curSkill)
+    aFinalDamPer += TurnPassive.GetTriggerEffectValue(turnFight, atkObj, defObj, ChConfig.AttrID_FinalDamPer, curSkill)
     
     aNormalSkillPer, dNormalSkillPerDef = 0, 0
     if isTurnNormalSkill:
@@ -2016,6 +2054,7 @@
         
     hurtAtkPerMax = curSkill.GetHurtAtkPerMax() # 最大万分比,限制最终伤害不超过攻击力万分率
     if hurtAtkPerMax:
+        hurtAtkPerMax += TurnPassive.GetTriggerEffectValue(turnFight, atkObj, defObj, ChConfig.PassiveEff_AddHurtAtkPerMax, curSkill)
         aAtk = atkObj.GetAtk()
         hurtValueMax = aAtk * hurtAtkPerMax / 10000.0
         hurtValue = min(hurtValue, hurtValueMax)
@@ -2135,8 +2174,10 @@
         defObj, hurtValue, hurtTypes, immuneHurt = hurtInfo[:4]
         isEx = hurtInfo[4] if len(hurtInfo) > 4 else 0 # 是否是额外目标
         
-        lostHP = DoLostHP(turnFight, atkObj, defObj, hurtValue, curSkill, lostType, hpCanNegative=True, immuneHurt=immuneHurt)
-        
+        lostHP, ignoreShield = DoLostHP(turnFight, atkObj, defObj, hurtValue, curSkill, lostType, hpCanNegative=True, immuneHurt=immuneHurt)
+        if ignoreShield:
+            hurtTypes |= pow(2, ChConfig.HurtAtkType_IgnoreShield)
+            
         #伤害结构体
         defID = defObj.GetID()
         if isEx:
@@ -2423,9 +2464,10 @@
     @param hpCanNegative: 扣除后的生命是否允许负值
     @param immuneHurt: 免疫的伤害值
     @param isSkillSelfTag: 是否技能自身的直接目标,如平摊伤害目标、溅射伤害目标这种就不算直接目标
-    @return: lostHP
+    @return: lostHP, ignoreShield
     '''
     
+    ignoreShield = None
     if immuneHurt > 0:
         buffMgr = defObj.GetBuffManager()
         wudiBuffList = buffMgr.FindBuffListByState(ChConfig.BatObjState_Wudi)
@@ -2440,7 +2482,7 @@
                                  defObj.GetID(), buff.GetBuffID(), buffSkillID, buffValue, immuneHurt, updBuffValue, lostType)
             
     if hurtValue <= 0:
-        return 0
+        return 0, ignoreShield
     
     atkID = atkObj.GetID()
     defID = defObj.GetID()
@@ -2451,6 +2493,11 @@
     shieldBuffList = []
     buffMgr = defObj.GetBuffManager()
     for buff in buffMgr.FindBuffListByState(ChConfig.BatObjState_DamShield):
+        if ignoreShield == None:
+            if TurnPassive.GetTriggerEffectValue(turnFight, atkObj, defObj, ChConfig.PassiveEff_IgnoreShield, curSkill):
+                ignoreShield = True # 无视承伤盾
+                break
+            ignoreShield = False
         skillData = buff.GetSkillData()
         remainTime = buff.GetRemainTime() # 剩余回合
         if not skillData.GetLastTime():
@@ -2479,7 +2526,9 @@
             shieldHurtValue -= decShieldValue # 承伤值
             if decShieldValue >= buffValue:
                 GameWorld.DebugLogEx("        删除盾: buffID=%s,剩余盾伤=%s", buffID, shieldHurtValue)
-                TurnBuff.DoBuffDel(turnFight, defObj, buff, relatedSkill=curSkill, afterLogic=True, tagObj=atkObj)
+                #盾破时buff会被删除,导致绑定在该buff上的被动效果同步被清除,后续就无法触发盾破后被动,固先取出来
+                effInfoList = defObj.GetPassiveEffManager().GetPassiveEffByTrigger(ChConfig.TriggerWay_ShieldBroken, connSkillTypeID=buffSkillID)
+                TurnBuff.DoBuffDel(turnFight, defObj, buff, relatedSkill=curSkill, afterLogic=True, tagObj=atkObj, afterTriggerData=[ChConfig.TriggerWay_ShieldBroken, effInfoList])
             else:
                 updShieldValue = buffValue - decShieldValue
                 GameWorld.DebugLogEx("        更新盾: updShieldValue=%s,剩余盾伤=%s", updShieldValue, shieldHurtValue)
@@ -2500,7 +2549,7 @@
     GameWorld.DebugLogEx("    扣血: atkID=%s,defID=%s,hurtValue=%s,lostType=%s,lostHP=%s,dHP=%s,updHP=%s/%s", 
                          atkID, defID, hurtValue, lostType, lostHP, dHP, defObj.GetHP(), defObj.GetMaxHP())
     TurnAttack.AddTurnObjHurtValue(atkObj, defObj, hurtValue, lostHP, skillID, lostType)
-    return lostHP
+    return lostHP, ignoreShield
 
 def CalcBounceHP(turnFight, atkObj, defObj, hurtObj, curSkill):
     '''计算反弹反弹伤害
@@ -2584,7 +2633,7 @@
     TurnAttack.AddTurnObjCureHP(atkObj, atkObj, suckHP, cureHP)
     return
 
-def CalcCureHP(turnFight, userObj, tagObj, curSkill, relativeObj=None):
+def CalcCureHP(turnFight, userObj, tagObj, curSkill, relativeObj=None, multiValue=1):
     ''' 计算治疗值
     '''
     
@@ -2624,6 +2673,10 @@
         cureHPEx = eval(IpyGameDataPY.GetFuncCompileCfg("CureFormula", 1))
         cureHP += cureHPEx
         GameWorld.DebugLogEx("    额外治疗值(%s): cureType=%s,baseValue=%s,skillPer=%s,cureHP=%s", cureHPEx, cureType, baseValue, skillPer, cureHP)
+        
+    if multiValue and multiValue != 1:
+        cureHP = int(cureHP * multiValue)
+        GameWorld.DebugLogEx("    治疗倍值: cureHP=%s,multiValue=%s", cureHP, multiValue)
         
     hurtShareEff = curSkill.GetEffectByID(ChConfig.SkillEff_HurtShare)
     if hurtShareEff:
@@ -2710,8 +2763,7 @@
         hurtValue *= (10000 + FinalDamPer) / 10000.0
         GameWorld.DebugLogEx("    增伤: hurtValue=%s,FinalDamPer=%s", hurtValue, FinalDamPer)
         
-    poolMgr = ObjPool.GetPoolMgr()
-    useSkill = poolMgr.acquire(BattleObj.PySkill, skillIpyData, atkID)
+    useSkill = BattleObj.PySkill(skillIpyData, atkID)
     useSkill.SetTagObjList([defObj])
     useSkill.SetBatType(ChConfig.TurnBattleType_Dot)
     
@@ -2727,12 +2779,11 @@
     Sync_TurnFightTag(turnFight, useTag, 1)
     
     useSkill.ResetUseRec()
-    poolMgr.release(useSkill)
     return
 
 def Sync_TurnFightTag(turnFight, useTag, sign):
     ## 通知技能标签
-    clientPack = ObjPool.GetPoolMgr().acquire(ChPyNetSendPack.tagSCTurnFightTag)
+    clientPack = ChPyNetSendPack.tagSCTurnFightTag()
     clientPack.Tag = useTag
     clientPack.Len = len(clientPack.Tag)
     clientPack.Sign = sign
@@ -2743,8 +2794,7 @@
     ## 通知释放技能
     bySkill = useSkill.GetBySkill()
     relatedSkillID = bySkill.GetSkillID() if bySkill else 0
-    poolMgr = ObjPool.GetPoolMgr()
-    clientPack = poolMgr.acquire(ChPyNetSendPack.tagSCUseSkill)
+    clientPack = ChPyNetSendPack.tagSCUseSkill()
     clientPack.ObjID = curBatObj.GetID()
     clientPack.PMType = GetPMType(curBatObj, useSkill)
     clientPack.BattleType = useSkill.GetBatType()
@@ -2755,7 +2805,7 @@
     # 技能的主要伤害
     clientPack.HurtList = []
     for hurtObj in useSkill.GetHurtObjList():
-        hurt = poolMgr.acquire(ChPyNetSendPack.tagSCUseSkillHurt)
+        hurt = ChPyNetSendPack.tagSCUseSkillHurt()
         hurt.ObjID = hurtObj.GetObjID()
         hurt.AttackTypes = hurtObj.GetHurtTypes()
         hurt.HurtHP = hurtObj.GetHurtHP() % ChConfig.Def_PerPointValue
@@ -2767,7 +2817,7 @@
         hurt.HurtListEx = []
         # 单个伤害的额外伤害,如弹射+平摊伤害
         for hurtObjEx in hurtObj.GetHurtObjListEx():
-            hurtEx = poolMgr.acquire(ChPyNetSendPack.tagSCUseSkillHurtEx)
+            hurtEx = ChPyNetSendPack.tagSCUseSkillHurtEx()
             hurtEx.ObjID = hurtObjEx.GetObjID()
             hurtEx.AttackTypes = hurtObjEx.GetHurtTypes()
             hurtEx.HurtHP = hurtObjEx.GetHurtHP() % ChConfig.Def_PerPointValue
@@ -2782,7 +2832,7 @@
     # 技能的额外伤害,如常规技能的平摊伤害
     clientPack.HurtListEx = []
     for hurtObjEx in useSkill.GetHurtObjListEx():
-        hurtEx = poolMgr.acquire(ChPyNetSendPack.tagSCUseSkillHurtEx)
+        hurtEx = ChPyNetSendPack.tagSCUseSkillHurtEx()
         hurtEx.ObjID = hurtObjEx.GetObjID()
         hurtEx.AttackTypes = hurtObjEx.GetHurtTypes()
         hurtEx.HurtHP = hurtObjEx.GetHurtHP() % ChConfig.Def_PerPointValue
@@ -2797,7 +2847,7 @@
     if not clientPack.HurtList:
         for tagObj in useSkill.GetTagObjList():
             tagID = tagObj.GetID()
-            hurt = poolMgr.acquire(ChPyNetSendPack.tagSCUseSkillHurt)
+            hurt = ChPyNetSendPack.tagSCUseSkillHurt()
             hurt.ObjID = tagID
             hurt.CurHP = tagObj.GetHP() % ChConfig.Def_PerPointValue
             hurt.CurHPEx = tagObj.GetHP() / ChConfig.Def_PerPointValue
@@ -2819,8 +2869,7 @@
     if attrID not in ChConfig.CDBRefresh_AttrIDDict:
         return
     refreshType, isBig = ChConfig.CDBRefresh_AttrIDDict[attrID]
-    poolMgr = ObjPool.GetPoolMgr()
-    clientPack = poolMgr.acquire(ChPyNetSendPack.tagSCObjPropertyRefreshView)
+    clientPack = ChPyNetSendPack.tagSCObjPropertyRefreshView()
     clientPack.ObjID = curBatObj.GetID()
     clientPack.RefreshType = refreshType
     clientPack.AttackTypes = hurtTypes    
@@ -2842,7 +2891,7 @@
 
 def Sync_HPRefresh(turnFight, curBatObj):
     hp, maxHP = curBatObj.GetHP(), curBatObj.GetMaxHP()
-    clientPack = ObjPool.GetPoolMgr().acquire(ChPyNetSendPack.tagSCObjHPRefresh)
+    clientPack = ChPyNetSendPack.tagSCObjHPRefresh()
     clientPack.ObjID = curBatObj.GetID()
     clientPack.HP = hp % ShareDefine.Def_PerPointValue
     clientPack.HPEx = hp / ShareDefine.Def_PerPointValue

--
Gitblit v1.8.0