ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py
@@ -130,18 +130,19 @@
                
    if not tagObjList:
        # 可扩展其他目标选择,如复活技能没有死亡单位时则使用另外的效果
        isOK = None
        GameWorld.DebugLogEx("找不到技能目标! skillID=%s,mapID=%s,funcLineID=%s", skillID, turnFight.mapID, turnFight.funcLineID, turnFight.getReqPlayerID())
        if skillType == ChConfig.Def_SkillType_Revive and not isinstance(useSkill, IpyGameDataPY.IPY_Skill):
            otherEff = useSkill.GetEffectByID(ChConfig.SkillEff_ReviveNoUse)
        if not isinstance(useSkill, IpyGameDataPY.IPY_Skill):
            otherEff = useSkill.GetEffectByID(ChConfig.SkillEff_NoTagUse)
            if otherEff:
                otherSkillID = otherEff.GetEffectValue(0)
                GameWorld.DebugLogEx("没有可复活的目标,释放其他技能! otherSkillID=%s", otherSkillID)
                GameWorld.DebugLogEx("没有目标时释放其他技能! otherSkillID=%s", otherSkillID)
                otherSkill = curBatObj.GetSkillManager().FindSkillByID(otherSkillID)
                if not otherSkill:
                    otherSkill = IpyGameDataPY.GetIpyGameData("Skill", otherSkillID)
                if otherSkill:
                    OnUseSkill(turnFight, curBatObj, otherSkill, None, batType, bySkill, byBuff, comboLimit, atkBackTag, **kwargs)
        return
                    isOK = OnUseSkill(turnFight, curBatObj, otherSkill, None, batType, bySkill, byBuff, comboLimit, atkBackTag, **kwargs)
        return isOK
    
    oneActionUseCnt = turnFight.GetOneActionUseSkillCnt(objID)
    if oneActionUseCnt >= 20:
@@ -312,7 +313,11 @@
        if SkillCommon.isAttackDirectSkill(useSkill):
            isNoSelf = True
            #GameWorld.DebugLogEx("特殊不包含自己")
    #0=敌对方; 1-友好方; 2-友好方(一定包含自己) ;3-友好方(一定不含自己)
    if tagFriendly == 3:
        isNoSelf = True
    # 根据敌友关系确定阵营及一些敌友关系的特殊逻辑
    sneerObjFirst = True # 嘲讽目标是否优先
    sneerTagObj = None # 嘲讽目标
@@ -470,7 +475,12 @@
        sneerObjFirst = False
        aimObjList.sort(key=lambda o:(o.IsInControlled()))
        GameWorld.DebugLogEx("未被控制优先: %s", [[o.GetID(), o.IsInControlled()] for o in aimObjList])
    # 受控目标优先(硬控>软控>其他)
    elif tagAffect == ChConfig.SkillTagAffect_IncontrolledPriority:
        aimObjList.sort(key=lambda o:(o.IsInControlledHard(), o.IsInControlledSoft()), reverse=True)
        GameWorld.DebugLogEx("受控目标优先: %s", [[o.GetID(), o.IsInControlledHard(), o.IsInControlledSoft()] for o in aimObjList])
    # 灼烧/玄火目标优先
    elif tagAffect == ChConfig.SkillTagAffect_Burn:
        atkBackTagFrist = False
@@ -755,7 +765,7 @@
    #执行添加buff
    
    #光环技能,需先添加施法者
    if useSkill.GetSkillType() == ChConfig.Def_SkillType_Halo:
    if useSkill.GetSkillType() in ChConfig.Def_HaloSkill_List:
        curID = curBatObj.GetID()
        skillID = useSkill.GetSkillID()
        GameWorld.DebugLogEx("光环技能先给施法者添加光源buff! skillID=%s,ownerID=%s", skillID, curID)
@@ -1640,6 +1650,7 @@
    triggerOne = False
    batType = useSkill.GetBatType()
    isAttackDirect = (isUseSkill and SkillCommon.isAttackDirectSkill(useSkill)) # 是否直接攻击
    objTriigerWayInfo = {} # 敌友已触发的列表,一般用于控制每人只触发一次的 {objID:{triggerWay:triggerCnt, ...}}
    for tagObj in tagObjListAll:
        tagID = tagObj.GetID()
        
@@ -1746,6 +1757,8 @@
                
        # 连击
        if batType == ChConfig.TurnBattleType_Combo:
            if not triggerOne:
                TurnPassive.OnTriggerPassiveEffect(turnFight, curObj, ChConfig.TriggerWay_ComboOne, tagObj, connSkill=useSkill)
            TurnPassive.OnTriggerPassiveEffect(turnFight, curObj, ChConfig.TriggerWay_Combo, tagObj, connSkill=useSkill)
            TurnPassive.OnTriggerPassiveEffect(turnFight, tagObj, ChConfig.TriggerWay_BeCombo, curObj, connSkill=useSkill)
            if curMGObj and ChConfig.TriggerWay_Combo not in mgTriggerWayList:
@@ -1772,6 +1785,10 @@
                if not lineupObj.IsAlive():
                    continue
                
                if lineupObjID not in objTriigerWayInfo:
                    objTriigerWayInfo[lineupObjID] = {}
                objTriigerWayCntDict = objTriigerWayInfo[lineupObjID]
                # 直接攻击
                if isAttackDirect:
                    if not triggerOne:
@@ -1783,17 +1800,26 @@
                    if not triggerOne:
                        TurnPassive.OnTriggerPassiveEffect(turnFight, lineupObj, ChConfig.TriggerWay_FriendDotHurt, tagObj, connSkill=useSkill, byFriendObj=curObj)
                        
                # 敌方被控时
                # 敌方被控时 - 默认为友军造成的
                if tagID in beControlledHardDict and lineupObj.GetFaction() != tagObj.GetFaction():
                    TurnPassive.OnTriggerPassiveEffect(turnFight, lineupObj, ChConfig.TriggerWay_EnemyBeControlledHard, tagObj, connSkill=useSkill)
                    tagBuff = beControlledHardDict[tagID]
                    # 敌方被冰冻
                    if tagBuff.GetCurBuffState() == ChConfig.BatObjState_Frozen:
                        if ChConfig.TriggerWay_FriendCausesFrozen not in objTriigerWayCntDict:
                            objTriigerWayCntDict[ChConfig.TriggerWay_FriendCausesFrozen] = 1
                            TurnPassive.OnTriggerPassiveEffect(turnFight, lineupObj, ChConfig.TriggerWay_FriendCausesFrozen, tagObj, connSkill=useSkill)
                # 连击
                if batType == ChConfig.TurnBattleType_Combo:
                    TurnPassive.OnTriggerPassiveEffect(turnFight, lineupObj, ChConfig.TriggerWay_FriendCombo, tagObj, connSkill=useSkill, byFriendObj=curObj)
                    if isAttackDirect:
                        TurnPassive.OnTriggerPassiveEffect(turnFight, lineupObj, ChConfig.TriggerWay_FriendComboHurt, tagObj, connSkill=useSkill, byFriendObj=curObj)
                # 追击
                elif batType == ChConfig.TurnBattleType_Pursue:
                    TurnPassive.OnTriggerPassiveEffect(turnFight, lineupObj, ChConfig.TriggerWay_FriendPursue, tagObj, connSkill=useSkill, byFriendObj=curObj)
                    if isAttackDirect:
                        TurnPassive.OnTriggerPassiveEffect(turnFight, lineupObj, ChConfig.TriggerWay_FriendPursueHurt, tagObj, connSkill=useSkill, byFriendObj=curObj)
                    
        triggerOne = True # 设置已经触发过一次
        
@@ -1858,10 +1884,10 @@
    
    fightPoint = max(curPlayer.GetFightPoint(), 1) # 主线战斗消耗倍值,默认1
    costZhanchuiTotal = costZhanchui * fightPoint
    if not PlayerControl.PayMoney(curPlayer, ShareDefine.TYPE_Price_Xiantao, costZhanchuiTotal, isNotify=False):
    if not PlayerControl.PayMoney(curPlayer, ShareDefine.TYPE_Price_Xiantao, costZhanchuiTotal, "UseSkill", isNotify=False):
        # 不足时,有多少扣多少
        nowMoney = PlayerControl.GetMoney(curPlayer, ShareDefine.TYPE_Price_Xiantao)
        PlayerControl.PayMoney(curPlayer, ShareDefine.TYPE_Price_Xiantao, min(nowMoney, costZhanchuiTotal), isNotify=False)
        PlayerControl.PayMoney(curPlayer, ShareDefine.TYPE_Price_Xiantao, min(nowMoney, costZhanchuiTotal), "UseSkill", isNotify=False)
        
    return
@@ -2455,6 +2481,7 @@
    atkSkillPer += TurnPassive.GetTriggerEffectValue(turnFight, atkObj, defObj, ChConfig.PassiveEff_AddSkillPerByBuffLayer, curSkill)
    atkSkillPer += TurnPassive.GetTriggerEffectValue(turnFight, atkObj, defObj, ChConfig.PassiveEff_AddSkillPerByDeadTeammate, curSkill)
    atkSkillPer += TurnPassive.GetTriggerEffectValue(turnFight, atkObj, defObj, ChConfig.PassiveEff_AddSkillPerByBuffState, curSkill)
    atkSkillPer += TurnPassive.GetTriggerEffectValue(turnFight, atkObj, defObj, ChConfig.PassiveEff_AddSkillPerByBeFrozenCnt, curSkill)
    return atkSkillPer
def CanSuperHit(turnFight, atkObj, defObj, curSkill):