| | |
| | | if tagNum not in lineupNumList:
|
| | | lineupNumList.append(tagNum)
|
| | |
|
| | | batLineup = None
|
| | | aimObjList = [] # 先筛选出范围目标
|
| | | for num in lineupNumList:
|
| | | batLineup = batFaction.getBatlineup(num)
|
| | |
| | | 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:
|
| | | # 范围目标超过个数,则随机取
|
| | |
| | |
|
| | | def __GetRelativeObjDefault(batObjMgr, curBatObj, posNum, batLineup):
|
| | | ## 获取在某一阵营中的默认对位目标
|
| | | |
| | | if not batLineup:
|
| | | return
|
| | | tagAffect = ChConfig.SkillTagAffect_None # 默认对位目标不需要细分目标,默认规则即可
|
| | | inColNum = ChConfig.GetInColNum(posNum) # 玩家所在纵列
|
| | | # 优先自己所在纵
|