129 【战斗】战斗系统-服务端(孙尚香技能;技能增加buff驱散限制字段;增加目标细分6 - 灼烧/玄火优先;增加效果5008 - 转化目标身上类型buff;优化效果5004 5006 5007;)
11个文件已修改
1个文件已添加
233 ■■■■ 已修改文件
PySysDB/PySysDBPY.h 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
PySysDB/生成IpyGameDataPY/IpyGameDataPYTemp.py 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BattleObj.py 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/TurnFight.py 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_5004.py 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_5006.py 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_5007.py 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_5008.py 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnBuff.py 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PySysDB/PySysDBPY.h
@@ -117,7 +117,7 @@
    BYTE        LayerCnt;    //Buff层数
    BYTE        LayerMax;    //最大层数
    DWORD        BuffRepeat;    //Buff叠加规则
    DWORD        DieContinue;    //Buff死亡存在
    BYTE        DispersedLimit;    //驱散限制
    DWORD        FightPower;    //技能战斗力
    char        SkillMotionName; //技能动作名
};
PySysDB/Éú³ÉIpyGameDataPY/IpyGameDataPYTemp.py
@@ -291,13 +291,7 @@
    
    def __StrToList(self, strValue):
        setList = []
        if (strValue.startswith("[") and strValue.endswith("]")) or (strValue.startswith("(") and strValue.endswith(")")):
            setList = eval(strValue)
        elif strValue in ["0", "-", ""]:
            pass
        elif strValue.isdigit():
            setList = (int(strValue),)
        else:
        if ChConfig.Def_Str_Montant in strValue: # |分割的优先
            for value in strValue.split(ChConfig.Def_Str_Montant):
                if value.isdigit():
                    value = int(value)
@@ -311,6 +305,12 @@
                setList.append(value)
            if setList:
                setList = tuple(setList)
        elif (strValue.startswith("[") and strValue.endswith("]")) or (strValue.startswith("(") and strValue.endswith(")")):
            setList = eval(strValue)
        elif strValue in ["0", "-", ""]:
            pass
        elif strValue.isdigit():
            setList = (int(strValue),)
        return setList
    
#<%Ipy_Cache_Func%>
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BattleObj.py
@@ -344,7 +344,7 @@
    def GetLayerCnt(self): return self._ipyData.GetLayerCnt()
    def GetLayerMax(self): return self._ipyData.GetLayerMax()
    def GetBuffRepeat(self): return self._ipyData.GetBuffRepeat() # Buff叠加规则
    def GetDieContinue(self): return self._ipyData.GetDieContinue() # Buff死亡存在
    def GetDispersedLimit(self): return self._ipyData.GetDispersedLimit() # é©±æ•£é™åˆ¶
    def GetFightPower(self): return self._ipyData.GetFightPower()
    def GetSkillMotionName(self): return self._ipyData.GetSkillMotionName()
    
@@ -604,7 +604,7 @@
    def GetLayerCnt(self): return self._skillData.GetLayerCnt()
    def GetLayerMax(self): return self._skillData.GetLayerMax()
    def GetBuffRepeat(self): return self._skillData.GetBuffRepeat() # Buff叠加规则
    def GetDieContinue(self): return self._skillData.GetDieContinue() # Buff死亡存在
    def GetDispersedLimit(self): return self._skillData.GetDispersedLimit() # é©±æ•£é™åˆ¶
    def GetFightPower(self): return self._skillData.GetFightPower()
    def GetSkillMotionName(self): return self._skillData.GetSkillMotionName()
    
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -1395,7 +1395,8 @@
SkillTagAffect_Death, # æ­»äº¡å•位 3
SkillTagAffect_UncontrolledPriority, # æœªè¢«æŽ§åˆ¶ä¼˜å…ˆ 4
SkillTagAffect_AtkHighest, # æ”»å‡»åŠ›æœ€é«˜ 5
) = range(6)
SkillTagAffect_Burn, # ç¼çƒ§/玄火目标优先 6
) = range(7)
#技能施法目标
Def_UseSkillAim_Type = 3
@@ -3160,7 +3161,8 @@
    BatObjState_20, # è´¯é¾™æžª 20
    BatObjState_DamShield, # æ‰¿ä¼¤ç›¾ 21
    BatObjState_DamBackShield, # è†æ£˜ç›¾ 22
) = range(1 + 22)
    BatObjState_BurnPlus, # çŽ„ç«(灼烧2) 23
) = range(1 + 23)
#玩家状态定义,不能超过31个,如超过,需扩展多个key支持
Def_PlayerStateList = (
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/TurnFight.py
@@ -21,6 +21,7 @@
import NetPackCommon
import TurnAttack
import BattleObj
import TurnBuff
FactionList = [1, 2]
@@ -33,6 +34,7 @@
    if not msgList:
        GameWorld.DebugAnswer(curPlayer, "设置属性: TurnFight a å±žæ€§ID å€¼ [阵营 ä½ç½®] ")
        GameWorld.DebugAnswer(curPlayer, "击杀目标: TurnFight k é˜µè¥ [位置 ...] ")
        GameWorld.DebugAnswer(curPlayer, "添加buff: TurnFight b é˜µè¥  ä½ç½® buff技能ID")
        GameWorld.DebugAnswer(curPlayer, "输出明细: TurnFight p [阵营 ä½ç½®] ")
        GameWorld.DebugAnswer(curPlayer, "阵营: 1-左边;2-右边")
        GameWorld.DebugAnswer(curPlayer, "位置: 1~6号位")
@@ -44,6 +46,8 @@
        __doSetAttr(curPlayer, msgList)
    elif value == "k":
        __doKillObj(curPlayer, msgList)
    elif value == "b":
        __doAddBuff(curPlayer, msgList)
    elif value == "p":
        __printInfo(curPlayer, msgList)
        
@@ -132,6 +136,38 @@
    NetPackCommon.SendFakePack(curPlayer, clientPack)
    return
def __doAddBuff(curPlayer, msgList):
    faction = msgList[1] if len(msgList) > 1 else 2
    posNum = msgList[2] if len(msgList) > 2 else 1
    skillID = msgList[3] if len(msgList) > 3 else 0
    if faction not in FactionList:
        GameWorld.DebugAnswer(curPlayer, "阵营: 1-左边;2-右边")
        return
    mainFightMgr = TurnAttack.GetMainFightMgr(curPlayer)
    turnFight = mainFightMgr.turnFight
    if not turnFight.isInFight():
        GameWorld.DebugAnswer(curPlayer, "主线非战斗中")
        return
    batObjMgr = BattleObj.GetBatObjMgr()
    batFaction = turnFight.getBatFaction(faction)
    batLineup = batFaction.getBatlineup(1)
    objID = batLineup.posObjIDDict.get(posNum)
    batObj = batObjMgr.getBatObj(objID)
    if not batObj:
        GameWorld.DebugAnswer(curPlayer, "不存在该战斗对象:阵营:%s,位置:%s" % (faction, posNum))
        return
    if not batObj.IsAlive():
        GameWorld.DebugAnswer(curPlayer, "该对象已被击杀:阵营:%s,位置:%s" % (faction, posNum))
        return
    addBuff = TurnBuff.DoAddBuffBySkillID(turnFight, batObj, skillID)
    if addBuff:
        GameWorld.DebugAnswer(curPlayer, "添加buff成功! buffID=%s" % addBuff.GetBuffID())
    else:
        GameWorld.DebugAnswer(curPlayer, "添加buff失败")
    return
def __printInfo(curPlayer, msgList):
    ## è¾“出信息
    faction = msgList[1] if len(msgList) > 1 else 0
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
@@ -139,7 +139,7 @@
                        ("BYTE", "LayerCnt", 0),
                        ("BYTE", "LayerMax", 0),
                        ("DWORD", "BuffRepeat", 0),
                        ("DWORD", "DieContinue", 0),
                        ("BYTE", "DispersedLimit", 0),
                        ("DWORD", "FightPower", 0),
                        ("char", "SkillMotionName", 0),
                        ),
@@ -2708,7 +2708,7 @@
    def GetLayerCnt(self): return self.attrTuple[34] # Buff层数 BYTE
    def GetLayerMax(self): return self.attrTuple[35] # æœ€å¤§å±‚æ•° BYTE
    def GetBuffRepeat(self): return self.attrTuple[36] # Buff叠加规则 DWORD
    def GetDieContinue(self): return self.attrTuple[37] # Buff死亡存在 DWORD
    def GetDispersedLimit(self): return self.attrTuple[37] # é©±æ•£é™åˆ¶ BYTE
    def GetFightPower(self): return self.attrTuple[38] # æŠ€èƒ½æˆ˜æ–—力 DWORD
    def GetSkillMotionName(self): return self.attrTuple[39] # æŠ€èƒ½åŠ¨ä½œå char
@@ -6913,13 +6913,7 @@
    
    def __StrToList(self, strValue):
        setList = []
        if (strValue.startswith("[") and strValue.endswith("]")) or (strValue.startswith("(") and strValue.endswith(")")):
            setList = eval(strValue)
        elif strValue in ["0", "-", ""]:
            pass
        elif strValue.isdigit():
            setList = (int(strValue),)
        else:
        if ChConfig.Def_Str_Montant in strValue: # |分割的优先
            for value in strValue.split(ChConfig.Def_Str_Montant):
                if value.isdigit():
                    value = int(value)
@@ -6933,6 +6927,12 @@
                setList.append(value)
            if setList:
                setList = tuple(setList)
        elif (strValue.startswith("[") and strValue.endswith("]")) or (strValue.startswith("(") and strValue.endswith(")")):
            setList = eval(strValue)
        elif strValue in ["0", "-", ""]:
            pass
        elif strValue.isdigit():
            setList = (int(strValue),)
        return setList
    
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_5004.py
@@ -4,12 +4,12 @@
#
##@package Skill.PassiveTrigger.PassiveEff_5004
#
# @todo:概率随机移除随机目标身上某种buff
# @todo:概率移除随机目标身上某种类型buff
# @author hxp
# @date 2025-09-23
# @version 1.0
#
# è¯¦ç»†æè¿°: æ¦‚率随机移除随机目标身上某种buff
# è¯¦ç»†æè¿°: æ¦‚率移除随机目标身上某种类型buff
#
#-------------------------------------------------------------------------------
#"""Version = 2025-09-23 18:30"""
@@ -23,7 +23,7 @@
def DoSkillEffectLogic(turnFight, batObj, tagObj, effSkill, curEffect, connSkill, connBuff, **kwargs):
    # buff技能类型    ç§»é™¤ä¸ªæ•°ï¼Œ0为全部    æ•Œå‹ï¼Œ1-敌方;2-友方    éšæœºç›®æ ‡ä¸ªæ•°    æ¦‚率
    skillType = curEffect.GetEffectValue(0) # buff技能类型
    skillTypeList = curEffect.GetEffectValue(0) # buff技能类型
    delBuffCnt = curEffect.GetEffectValue(1) # ç§»é™¤ä¸ªæ•°ï¼Œ0为全部
    isFriend = curEffect.GetEffectValue(2) # æ•Œå‹ï¼Œ0-敌方;1-友方
    delObjCnt = curEffect.GetEffectValue(3) # éšæœºç›®æ ‡ä¸ªæ•°
@@ -53,14 +53,16 @@
        for index in range(buffMgr.GetBuffCount()):
            buff = buffMgr.GetBuffByIndex(index)
            skillData = buff.GetSkillData()
            if skillData.GetSkillType() != skillType:
            if skillData.GetSkillType() not in skillTypeList:
                continue
            if skillData.GetDispersedLimit():
                continue
            buffList.append(buff)
            
        if buffList:
            objBuffList.append([tagObj, buffList])
            
    GameWorld.DebugLog("概率随机移除随机目标身上某种buff: skillType=%s,objLen=%s" % (skillType, len(objBuffList)))
    GameWorld.DebugLog("概率随机移除随机目标身上某种buff: skillTypeList=%s,objLen=%s" % (skillTypeList, len(objBuffList)))
    if not objBuffList:
        return
    
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_5006.py
@@ -4,12 +4,12 @@
#
##@package Skill.PassiveTrigger.PassiveEff_5006
#
# @todo:移除目标身上某种状态buff
# @todo:移除/驱散目标身上某种状态buff
# @author hxp
# @date 2025-09-24
# @version 1.0
#
# è¯¦ç»†æè¿°: ç§»é™¤ç›®æ ‡èº«ä¸ŠæŸç§çŠ¶æ€buff
# è¯¦ç»†æè¿°: ç§»é™¤/驱散目标身上某种状态buff
#
#-------------------------------------------------------------------------------
#"""Version = 2025-09-24 19:00"""
@@ -35,6 +35,9 @@
    
    buffMgr = delObj.GetBuffManager()
    for buff in buffMgr.FindBuffListByState(buffState):
        skillData = buff.GetSkillData()
        if skillData.GetDispersedLimit():
            continue
        GameWorld.DebugLog("    ç§»é™¤buff状态: tagID=%s,buffID=%s" % (delObj.GetID(), buff.GetBuffID()))
        TurnBuff.DoBuffDel(turnFight, delObj, buff)
        
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_5007.py
@@ -4,46 +4,48 @@
#
##@package Skill.PassiveTrigger.PassiveEff_5007
#
# @todo:偷取目标身上增益类型buff(技能类型3、5)
# @todo:偷取目标身上类型buff(删除对方的加到自己身上)
# @author hxp
# @date 2025-09-25
# @version 1.0
#
# è¯¦ç»†æè¿°: å·å–目标身上增益类型buff(技能类型3、5)
# è¯¦ç»†æè¿°: å·å–目标身上类型buff(删除对方的加到自己身上)
#
#-------------------------------------------------------------------------------
#"""Version = 2025-09-25 17:30"""
#-------------------------------------------------------------------------------
import TurnBuff
import ChConfig
import GameWorld
import random
def DoSkillEffectLogic(turnFight, batObj, tagObj, effSkill, curEffect, connSkill, connBuff, **kwargs):
    stealCnt = max(1, curEffect.GetEffectValue(0)) # å·å–个数
    checkInStateList = curEffect.GetEffectValue(1) # å¯é™„加验证处于xx状态 [状态1, çŠ¶æ€2, ...]
    skillTypeList = curEffect.GetEffectValue(0) # buff技能类型
    stealCnt = max(1, curEffect.GetEffectValue(1)) # å·å–个数
    checkInStateList = curEffect.GetEffectValue(2) # å¯é™„加验证处于xx状态 [状态1, çŠ¶æ€2, ...]
    if checkInStateList:
        if not tagObj.CheckInState(checkInStateList):
            GameWorld.DebugLog("目标不在以下状态不能偷: tagID=%s,checkInStateList=%s" % (tagObj.GetID(), checkInStateList))
            return
        
    plsBuffList = []
    tagBuffList = []
    buffMgr = tagObj.GetBuffManager()
    for index in range(buffMgr.GetBuffCount()):
        buff = buffMgr.GetBuffByIndex(index)
        skillData = buff.GetSkillData()
        if skillData.GetSkillType() not in [ChConfig.Def_SkillType_LstPlsBuff, ChConfig.Def_SkillType_PlsBuff]:
        if skillData.GetSkillType() not in skillTypeList:
            continue
        plsBuffList.append(buff)
        if skillData.GetDispersedLimit():
            continue
        tagBuffList.append(buff)
        
    if not plsBuffList:
        GameWorld.DebugLog("目标没有增益buff: tagID=%s" % (tagObj.GetID()))
    if not tagBuffList:
        GameWorld.DebugLog("目标没有可偷的buff: tagID=%s,skillTypeList=%s" % (tagObj.GetID(), skillTypeList))
        return
    
    random.shuffle(plsBuffList) # éšæœº
    random.shuffle(tagBuffList) # éšæœº
    
    for tagBuff in plsBuffList:
    for tagBuff in tagBuffList:
        if stealCnt <= 0:
            break
        skillID = tagBuff.GetSkillID()
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_5008.py
New file
@@ -0,0 +1,67 @@
#!/usr/bin/python
# -*- coding: GBK -*-
#-------------------------------------------------------------------------------
#
##@package Skill.PassiveTrigger.PassiveEff_5008
#
# @todo:转化目标身上类型buff(删除旧的转换成其他buff)
# @author hxp
# @date 2025-09-26
# @version 1.0
#
# è¯¦ç»†æè¿°: è½¬åŒ–目标身上类型buff(删除旧的转换成其他buff)
#
#-------------------------------------------------------------------------------
#"""Version = 2025-09-26 16:30"""
#-------------------------------------------------------------------------------
import TurnBuff
import GameWorld
import random
def DoSkillEffectLogic(turnFight, batObj, tagObj, effSkill, curEffect, connSkill, connBuff, **kwargs):
    skillTypeList = curEffect.GetEffectValue(0) # buff技能类型
    changeLayers = max(1, curEffect.GetEffectValue(1)) # è½¬åŒ–层数
    changeToSkillID = curEffect.GetEffectValue(2) # è½¬åŒ–为其他buff技能ID
    tagBuffList = []
    buffMgr = tagObj.GetBuffManager()
    for index in range(buffMgr.GetBuffCount()):
        buff = buffMgr.GetBuffByIndex(index)
        skillData = buff.GetSkillData()
        if skillData.GetSkillType() not in skillTypeList:
            continue
        if skillData.GetDispersedLimit():
            continue
        tagBuffList.append(buff)
    if not tagBuffList:
        GameWorld.DebugLog("目标没有可转化的buff: tagID=%s,skillTypeList=%s" % (tagObj.GetID(), skillTypeList))
        return
    random.shuffle(tagBuffList) # éšæœº
    changeToLayer = 0
    for tagBuff in tagBuffList:
        if changeLayers <= 0:
            break
        skillID = tagBuff.GetSkillID()
        curLayer = max(1, tagBuff.GetLayer()) # è‡³å°‘ç®—1层
        if curLayer > changeLayers:
            updLayer = curLayer - changeLayers
            changeLayers = 0
            changeToLayer += changeLayers
        else:
            updLayer = 0
            changeLayers -= curLayer
            changeToLayer += 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
    buffOwner = batObj
    TurnBuff.DoAddBuffBySkillID(turnFight, tagObj, changeToSkillID, buffOwner, connSkill, setLayerCnt=changeToLayer)
    return True
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnBuff.py
@@ -49,7 +49,7 @@
    SyncBuffRefresh(turnFight, curBatObj, curBuff, relatedSkillID, isNewAdd)
    return
    
def DoAddBuffBySkillID(turnFight, batObj, skillID, buffOwner=None, bySkill=None, afterLogic=False, isSync=True):
def DoAddBuffBySkillID(turnFight, batObj, skillID, buffOwner=None, bySkill=None, afterLogic=False, isSync=True, setLayerCnt=0):
    ## æ ¹æ®æŠ€èƒ½ID添加buff
    if not skillID:
        return
@@ -62,12 +62,12 @@
    useSkill = poolMgr.acquire(BattleObj.PySkill, skillIpyData, ownerID)
    useSkill.SetTagObjList(tagObjList)
    
    addBuff = OnAddBuff(turnFight, batObj, useSkill, buffOwner, bySkill, afterLogic, isSync=isSync)
    addBuff = OnAddBuff(turnFight, batObj, useSkill, buffOwner, bySkill, afterLogic, isSync=isSync, setLayerCnt=setLayerCnt)
    
    poolMgr.release(useSkill)
    return addBuff
def OnAddBuff(turnFight, batObj, buffSkill, buffOwner=None, bySkill=None, afterLogic=False, isSync=True):
def OnAddBuff(turnFight, batObj, buffSkill, buffOwner=None, bySkill=None, afterLogic=False, isSync=True, setLayerCnt=0):
    skillID = buffSkill.GetSkillID()
    bySkill = buffSkill.GetBySkill() if not bySkill else bySkill
    relatedSkillID = bySkill.GetSkillID() if bySkill else 0
@@ -94,12 +94,16 @@
    
    skillTypeID = buffSkill.GetSkillTypeID()
    buffRepeat = buffSkill.GetBuffRepeat()
    addLayerCnt = buffSkill.GetLayerCnt()
    addLayerEff = buffSkill.GetEffectByID(ChConfig.PassiveEff_AddBuffLayerByWeight)
    if addLayerEff:
        # å¯æŒ‡å®šæ¥æºæŠ€èƒ½æŠ€èƒ½æ‰ç”Ÿæ•ˆï¼Œä¸æŒ‡å®šçš„话默认生效
        if not addLayerEff.GetTriggerSrc() or addLayerEff.GetTriggerSrc() == relatedSkillID:
            addLayerCnt = GameWorld.GetResultByWeightList(addLayerEff.GetEffectValues(), addLayerCnt)
    if setLayerCnt > 0:
        addLayerCnt = setLayerCnt
        GameWorld.DebugLog("外部直接指定添加的buff层级: setLayerCnt=%s" % setLayerCnt)
    else:
        addLayerCnt = buffSkill.GetLayerCnt()
        addLayerEff = buffSkill.GetEffectByID(ChConfig.PassiveEff_AddBuffLayerByWeight)
        if addLayerEff:
            # å¯æŒ‡å®šæ¥æºæŠ€èƒ½æŠ€èƒ½æ‰ç”Ÿæ•ˆï¼Œä¸æŒ‡å®šçš„话默认生效
            if not addLayerEff.GetTriggerSrc() or addLayerEff.GetTriggerSrc() == relatedSkillID:
                addLayerCnt = GameWorld.GetResultByWeightList(addLayerEff.GetEffectValues(), addLayerCnt)
    maxLayerCnt = buffSkill.GetLayerMax()
    if maxLayerCnt:
        maxLayerCnt += TurnPassive.GetTriggerEffectValue(turnFight, buffOwner, batObj, ChConfig.PassiveEff_AddBuffLayerMax, buffSkill)
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py
@@ -208,6 +208,7 @@
            if tagNum not in lineupNumList:
                lineupNumList.append(tagNum)
                
    batLineup = None
    aimObjList = [] # å…ˆç­›é€‰å‡ºèŒƒå›´ç›®æ ‡
    for num in lineupNumList:
        batLineup = batFaction.getBatlineup(num)
@@ -304,6 +305,21 @@
        sneerObjFirst = False
        aimObjList.sort(key=lambda o:(o.IsInControlled()))
        GameWorld.DebugLog("未被控制优先: %s" % [[o.GetID(), o.IsInControlled()] for o in aimObjList])
    # ç¼çƒ§/玄火目标优先
    elif tagAffect == ChConfig.SkillTagAffect_Burn:
        relativeObj = __GetRelativeObjDefault(batObjMgr, curBatObj, posNum, batLineup)
        sortObjList = [] # ä¼˜å…ˆç¼çƒ§ç›®æ ‡ï¼Œå†å¯¹ä½
        for aimObj in aimObjList:
            sortValue = 0
            buffMgr = aimObj.GetBuffManager()
            if buffMgr.FindBuffListByState(ChConfig.BatObjState_Burn) or buffMgr.FindBuffListByState(ChConfig.BatObjState_BurnPlus):
                sortValue = 2
            elif relativeObj and relativeObj.GetID() == aimObj.GetID():
                sortValue = 1
            sortObjList.append([sortValue, aimObj])
        sortObjList.sort(reverse=True)
        aimObjList = [s[1] for s in sortObjList]
        
    else:
        # èŒƒå›´ç›®æ ‡è¶…过个数,则随机取
@@ -408,7 +424,8 @@
def __GetRelativeObjDefault(batObjMgr, curBatObj, posNum, batLineup):
    ## èŽ·å–åœ¨æŸä¸€é˜µè¥ä¸­çš„é»˜è®¤å¯¹ä½ç›®æ ‡
    if not batLineup:
        return
    tagAffect = ChConfig.SkillTagAffect_None # é»˜è®¤å¯¹ä½ç›®æ ‡ä¸éœ€è¦ç»†åˆ†ç›®æ ‡ï¼Œé»˜è®¤è§„则即可
    inColNum = ChConfig.GetInColNum(posNum) # çŽ©å®¶æ‰€åœ¨çºµåˆ—
    # ä¼˜å…ˆè‡ªå·±æ‰€åœ¨çºµ