From d69d0cd898405aa741ae65ad4458fe81afef9f32 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期四, 18 十二月 2025 17:26:38 +0800
Subject: [PATCH] 129 【战斗】战斗系统-服务端(庞统所有技能;目标范围增加8-继承主技能友军;目标细分增加9-仅流血目标;增加触发方式48 49 50;增效效果5506;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py |   60 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 55 insertions(+), 5 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 669af57..b67c3c9 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py
@@ -179,7 +179,7 @@
     else:
         __doUseSkill(turnFight, curBatObj, useSkill)
         
-    DoAttackResult(turnFight, curBatObj, useSkill)
+    DoAttackResult(turnFight, curBatObj, useSkill, **kwargs)
     
     if useTag:
         Sync_TurnFightTag(turnFight, useTag, 1)
@@ -221,7 +221,8 @@
 
 def IsNeedSyncSkill(useSkill):
     ## 使用需要同步B427使用技能
-    if useSkill.GetSkillType() in [ChConfig.Def_SkillType_Atk, ChConfig.Def_SkillType_Cure, ChConfig.Def_SkillType_Revive, ChConfig.Def_SkillType_CleanBuff]:
+    if useSkill.GetSkillType() in [ChConfig.Def_SkillType_Atk, ChConfig.Def_SkillType_Cure, ChConfig.Def_SkillType_Revive, ChConfig.Def_SkillType_CleanBuff, 
+                                   ChConfig.Def_SkillType_AtkEx]:
         return True
     if useSkill.GetFuncType() in [ChConfig.Def_SkillFuncType_TurnNormaSkill, ChConfig.Def_SkillFuncType_AngerSkill]:
         return True
@@ -442,6 +443,14 @@
         for aimObj in aimObjList[::-1]:
             if not aimObj.CheckInState(ChConfig.BatObjState_PoisonCure):
                 aimObjList.remove(aimObj)
+        
+    # 仅流血目标
+    elif tagAffect == ChConfig.SkillTagAffect_Bleeding:
+        atkBackTagFrist = False
+        for aimObj in aimObjList[::-1]:
+            if not aimObj.CheckInState(ChConfig.BatObjState_Bleeding):
+                aimObjList.remove(aimObj)
+                
     else:
         # 范围目标超过个数,则随机取
         if tagCount and len(aimObjList) > tagCount:
@@ -1123,7 +1132,7 @@
         
     return
 
-def DoAttackResult(turnFight, curBatObj, useSkill):
+def DoAttackResult(turnFight, curBatObj, useSkill, **kwargs):
     '''执行攻击结果
     @param curBatObj: 施法方或buff归属方
     '''
@@ -1140,6 +1149,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) # 先扣除再同步技能
     
     # 需先技能使用 - 前端按顺序优先表现技能释放内容,前端需要动作或有伤血则通知
@@ -1273,13 +1290,14 @@
             return useSkill
     return
 
-def DoBeAttackResult(turnFight, curObj, useSkill, curBuff=None):
+def DoBeAttackResult(turnFight, curObj, useSkill, timeBuff=None):
     '''被攻击结果
     @param curObj: 施法方或buff归属方
+    @param timeBuff: 持续结算的buff,如持续攻击、持续治疗等
     '''
     
     #curID = curObj.GetID()
-    isUseSkill = False if curBuff else True # buff的视为持续性的,否则为直接使用技能的攻击结果
+    isUseSkill = False if timeBuff else True # buff的视为持续性的,否则为直接使用技能的攻击结果
     isTurnNormalSkill = SkillCommon.isTurnNormalSkill(useSkill)
     isAngerSkill = SkillCommon.isAngerSkill(useSkill)
     
@@ -1447,6 +1465,7 @@
     triggerOne = False
     batType = useSkill.GetBatType()
     isAttackDirect = (isUseSkill and SkillCommon.isAttackDirectSkill(useSkill)) # 是否直接攻击
+    curBatLineup = None
     for tagObj in tagObjListAll:
         tagID = tagObj.GetID()
         
@@ -1519,6 +1538,29 @@
             TurnPassive.OnTriggerPassiveEffect(turnFight, curObj, ChConfig.TriggerWay_AtkBack, tagObj, connSkill=useSkill)
             TurnPassive.OnTriggerPassiveEffect(turnFight, tagObj, ChConfig.TriggerWay_BeAtkBack, curObj, connSkill=useSkill)
             
+            
+        # 敌友方
+        if isAttackDirect or batType in [ChConfig.TurnBattleType_Combo, ChConfig.TurnBattleType_Pursue]:
+            if not curBatLineup:
+                curBatLineup = curObj.GetBatLineup()
+            for lineupObjID in curBatLineup.posObjIDDict.values():
+                lineupObj = batObjMgr.getBatObj(lineupObjID)
+                if not lineupObj.IsAlive():
+                    continue
+                
+                # 直接攻击
+                if isAttackDirect:
+                    if not triggerOne:
+                        TurnPassive.OnTriggerPassiveEffect(turnFight, lineupObj, ChConfig.TriggerWay_FriendAttackOverDirectOne, tagObj, connSkill=useSkill, byFriendObj=curObj)
+                        
+                # 连击
+                if batType == ChConfig.TurnBattleType_Combo:
+                    TurnPassive.OnTriggerPassiveEffect(turnFight, lineupObj, ChConfig.TriggerWay_FriendCombo, tagObj, connSkill=useSkill, byFriendObj=curObj)
+                    
+                # 追击
+                elif batType == ChConfig.TurnBattleType_Pursue:
+                    TurnPassive.OnTriggerPassiveEffect(turnFight, lineupObj, ChConfig.TriggerWay_FriendPursue, tagObj, connSkill=useSkill, byFriendObj=curObj)
+                    
         triggerOne = True # 设置已经触发过一次
         
     # 验证是否结算,最后处理
@@ -1827,6 +1869,14 @@
             return
         passiveTagObjList = connSkill.GetTagObjList()
         isOK = OnUseSkill(turnFight, batObj, passiveSkill, passiveTagObjList, batType=ChConfig.TurnBattleType_Passive, bySkill=connSkill, byBuff=connBuff, **kwargs)
+    elif tagAim == ChConfig.SkillTagAim_MainSkillFriend:
+        if "byFriendObj" not in kwargs:
+            return
+        byFriendObj = kwargs["byFriendObj"]
+        passiveTagObjList = [byFriendObj]
+        GameWorld.DebugLogEx("被动触发技能,针对来源友军! effSkillID=%s,effectID=%s,passiveSkillID=%s,bySkillID=%s,byFriendID=%s", 
+                             effSkillID, effectID, passiveSkillID, bySkillID, byFriendObj.GetID())
+        isOK = OnUseSkill(turnFight, batObj, passiveSkill, passiveTagObjList, batType=ChConfig.TurnBattleType_Passive, bySkill=connSkill, byBuff=connBuff, **kwargs)
     else:
         GameWorld.DebugLogEx("被动触发技能,重新锁定目标! effSkillID=%s,effectID=%s,passiveSkillID=%s,bySkillID=%s", effSkillID, effectID, passiveSkillID, bySkillID)
         isOK = OnUseSkill(turnFight, batObj, passiveSkill, batType=ChConfig.TurnBattleType_Passive, bySkill=connSkill, byBuff=connBuff, **kwargs)

--
Gitblit v1.8.0