From 3dee41c5518723e67433f7cf185c9df35955847f Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期六, 20 十二月 2025 10:30:59 +0800
Subject: [PATCH] 320 【付费内容】商城-服务端(代币充值支持额外给元宝;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py |   60 +++++++++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 53 insertions(+), 7 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 912d3cb..adc7c25 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py
@@ -443,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:
@@ -773,22 +781,24 @@
             addPer = addPerMax
         GameWorld.DebugLogEx("司马懿特殊潜能技能额外增加比例: frozenCnt=%s,addPer=%s" % (frozenCnt, addPer))
         
+    addBatDamPer = TurnPassive.GetTriggerEffectValue(turnFight, curBatObj, None, ChConfig.PassiveEff_AddBatDamPerByLayer, useSkill)
+    
     # 计算伤害
     calcHurtResults = []
     for tagBatObj in useSkill.GetTagObjList():
-        hurtValue, hurtTypes, immuneHurt = __calcSkillHurt(turnFight, curBatObj, tagBatObj, useSkill, addPer)
+        hurtValue, hurtTypes, immuneHurt = __calcSkillHurt(turnFight, curBatObj, tagBatObj, useSkill, addPer, addBatDamPer)
         calcHurtResults.append([tagBatObj, hurtValue, hurtTypes, immuneHurt])
         
     DoSkillHurtHP(turnFight, curBatObj, useSkill, calcHurtResults)        
     return
 
-def __calcSkillHurt(turnFight, atkObj, defObj, curSkill, addPer=0):
+def __calcSkillHurt(turnFight, atkObj, defObj, curSkill, addPer=0, addBatDamPer=0):
     ## 计算技能伤害,只计算值,不做实际处理
     # @param addPer: 外部指定增加的比例
     # @return: hurtValue, hurtTypes, immuneHurt
     atkSkillPer = curSkill.GetSkillPer() + addPer
     atkSkillValue = curSkill.GetSkillValue()
-    hurtValue, hurtTypes = CalcFormatHurt(turnFight, atkObj, defObj, curSkill, atkSkillValue, atkSkillPer)
+    hurtValue, hurtTypes = CalcFormatHurt(turnFight, atkObj, defObj, curSkill, atkSkillValue, atkSkillPer, addBatDamPer)
     hurtValue, hurtTypes, immuneHurt = CalcHurtWithBuff(turnFight, atkObj, defObj, hurtValue, hurtTypes)
     return hurtValue, hurtTypes, immuneHurt
 
@@ -1282,13 +1292,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的视为持续性的,否则为直接使用技能的攻击结果
+    curID = curObj.GetID()
+    isUseSkill = False if timeBuff else True # buff的视为持续性的,否则为直接使用技能的攻击结果
     isTurnNormalSkill = SkillCommon.isTurnNormalSkill(useSkill)
     isAngerSkill = SkillCommon.isAngerSkill(useSkill)
     
@@ -1456,6 +1467,7 @@
     triggerOne = False
     batType = useSkill.GetBatType()
     isAttackDirect = (isUseSkill and SkillCommon.isAttackDirectSkill(useSkill)) # 是否直接攻击
+    curBatLineup = None
     for tagObj in tagObjListAll:
         tagID = tagObj.GetID()
         
@@ -1528,6 +1540,31 @@
             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 curID != lineupObj.GetID():
+                            TurnPassive.OnTriggerPassiveEffect(turnFight, lineupObj, ChConfig.TriggerWay_FriendAttackOverDirectOneNoSelf, 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 # 设置已经触发过一次
         
     # 验证是否结算,最后处理
@@ -1836,13 +1873,21 @@
             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.pop("byFriendObj") # 触发即移除,防止一直传递引发其他问题,如触发的技能再触发其他技能会被视为也是有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)
         
     return isOK
 
-def CalcFormatHurt(turnFight, atkObj, defObj, curSkill, atkSkillValue, atkSkillPer, **kwargs):
+def CalcFormatHurt(turnFight, atkObj, defObj, curSkill, atkSkillValue, atkSkillPer, addBatDamPer=0, **kwargs):
     '''按公式计算伤害,默认按攻击计算
     '''
     
@@ -1957,6 +2002,7 @@
     aBatDamPer, dBatDamPerDef = 0, 0 # 战斗增减伤
     aBatDamPer += TurnPassive.GetTriggerEffectValue(turnFight, atkObj, defObj, ChConfig.AttrID_BatDamPer, curSkill)
     aBatDamPer += TurnPassive.GetTriggerEffectValue(turnFight, atkObj, defObj, ChConfig.PassiveEff_AddBatDamPerByTagLostHP, curSkill)
+    aBatDamPer += addBatDamPer
     
     # 物法增减伤
     if pmType == IPY_GameWorld.ghtMag: # 法伤

--
Gitblit v1.8.0