From d254a370d14e560470889eb69537bd21532bc254 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 02 三月 2026 18:58:56 +0800
Subject: [PATCH] 129 【战斗】战斗系统-服务端(郭嘉所有技能;增加触发类型62、63、64、65;增加效果6038;增加技能类型16-减益光环,对自己无效,原类型10为增益光环对自己有效;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py |   61 +++++++++++++++++++++++++-----
 1 files changed, 51 insertions(+), 10 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 d206ba3..04d2139 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py
@@ -755,7 +755,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 +1640,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 +1747,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 +1775,10 @@
                 if not lineupObj.IsAlive():
                     continue
                 
+                if lineupObjID not in objTriigerWayInfo:
+                    objTriigerWayInfo[lineupObjID] = {}
+                objTriigerWayCntDict = objTriigerWayInfo[lineupObjID]
+                
                 # 直接攻击
                 if isAttackDirect:
                     if not triggerOne:
@@ -1783,17 +1790,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 +1874,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
 
@@ -2154,6 +2170,8 @@
     pmType = GetPMType(atkObj, curSkill)
     ignoreDef = IsIgnoreDef(curSkill)
     batType = curSkill.GetBatType()
+    atkMGObj = atkObj.GetTFBatLineup().getMinggeObj()
+    defMGObj = defObj.GetTFBatLineup().getMinggeObj()
     
     changeHurtType = TurnPassive.GetTriggerEffectValue(turnFight, atkObj, defObj, ChConfig.PassiveEff_ChangeHurtType, curSkill)
     if not changeHurtType:
@@ -2185,6 +2203,8 @@
     if not isDot:
         aMissRateDef = atkObj.GetBatAttrValue(ChConfig.AttrID_AbsoluteMissRateDef)
         dMissRate = defObj.GetBatAttrValue(ChConfig.AttrID_AbsoluteMissRate)
+        if defMGObj:
+            dMissRate += defMGObj.GetBatAttrValue(ChConfig.AttrID_AbsoluteMissRate)
         missNum = curSkill.GetTagMissNum(defID)
         if dMissRate > 0:
             missRate = eval(IpyGameDataPY.GetFuncCompileCfg("MissCfg", 1))
@@ -2213,7 +2233,8 @@
         aSuperDamPer = IpyGameDataPY.GetFuncCfg("SuperHitCfg", 2) * 10000
         aSuperDamPer += atkObj.GetBatAttrValue(ChConfig.AttrID_SuperDamPer)
         aSuperDamPer += TurnPassive.GetTriggerEffectValue(turnFight, atkObj, defObj, ChConfig.AttrID_SuperDamPer, curSkill)
-        
+        if atkMGObj:
+            aSuperDamPer += atkMGObj.GetBatAttrValue(ChConfig.AttrID_SuperDamPer)
         dSuperDamPerDef = defObj.GetBatAttrValue(ChConfig.AttrID_SuperDamPerDef)
         
     if isParry:
@@ -2242,6 +2263,9 @@
     aFinalDamPer += TurnPassive.GetTriggerEffectValue(turnFight, atkObj, defObj, ChConfig.PassiveEff_AddFinalDamPer, curSkill)
     aFinalDamPer += TurnPassive.GetTriggerEffectValue(turnFight, atkObj, defObj, ChConfig.AttrID_FinalDamPer, curSkill)
     
+    if defMGObj:
+        dFinalDamPerDef += defMGObj.GetBatAttrValue(ChConfig.AttrID_FinalDamPerDef)
+        
     #招架  - 无视攻击方最终增伤百分比
     dZhaojia = defObj.GetBatAttrValue(ChConfig.AttrID_Zhaojia)
     aZhaojiaDef = atkObj.GetBatAttrValue(ChConfig.AttrID_ZhaojiaDef)
@@ -2289,6 +2313,8 @@
             aDOTPer += atkObj.GetBatAttrValue(ChConfig.AttrID_DOTBurnPer)
             dDOTPerDef += defObj.GetBatAttrValue(ChConfig.AttrID_DOTBurnPerDef)
             GameWorld.DebugLogEx("是灼烧: aDOTPer=%s,dDOTPerDef=%s", aDOTPer, dDOTPerDef)
+        if atkMGObj:
+            aDOTPer += atkMGObj.GetBatAttrValue(ChConfig.AttrID_DOTPer)
             
     #aAddSkillPer = 0 # 技能增伤
     dBatDamPerDef = 0 # 战斗增减伤
@@ -2296,7 +2322,9 @@
     aBatDamPer += TurnPassive.GetTriggerEffectValue(turnFight, atkObj, defObj, ChConfig.AttrID_BatDamPer, curSkill)
     aBatDamPer += TurnPassive.GetTriggerEffectValue(turnFight, atkObj, defObj, ChConfig.PassiveEff_AddBatDamPerByTagLostHP, curSkill)
     aBatDamPer += addBatDamPer
-    
+    if atkMGObj:
+        aBatDamPer += TurnPassive.GetTriggerEffectValue(turnFight, atkMGObj, defObj, ChConfig.AttrID_BatDamPer, curSkill)
+        
     # 物法增减伤
     if pmType == IPY_GameWorld.ghtMag: # 法伤
         aPMDamPer = atkObj.GetBatAttrValue(ChConfig.AttrID_MagDamPer)
@@ -2320,12 +2348,15 @@
     if batType == ChConfig.TurnBattleType_Combo:
         aComboDamPer = atkObj.GetBatAttrValue(ChConfig.AttrID_ComboDamPer)
         dComboDamPerDef = defObj.GetBatAttrValue(ChConfig.AttrID_ComboDamPerDef)
-        
+        if atkMGObj:
+            aComboDamPer += atkMGObj.GetBatAttrValue(ChConfig.AttrID_ComboDamPer)
     aPursueDamPer, dPursueDamPerDef = 0, 0 # 追击增伤
     if batType == ChConfig.TurnBattleType_Pursue:
         aPursueDamPer = atkObj.GetBatAttrValue(ChConfig.AttrID_PursueDamPer)
         dPursueDamPerDef = defObj.GetBatAttrValue(ChConfig.AttrID_PursueDamPerDef)
-        
+        if atkMGObj:
+            aPursueDamPer += atkMGObj.GetBatAttrValue(ChConfig.AttrID_PursueDamPer)
+            
     aPVPDamPer, dPVPDamPerDef = 0, 0 # PVP
     if turnFight.isPVP() > 0:
         aPVPDamPer = atkObj.GetBatAttrValue(ChConfig.AttrID_PVPDamPer)
@@ -2440,6 +2471,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):
@@ -2929,6 +2961,12 @@
         connSkillTypeID = buff.GetSkillTypeID()
         damBackPer += TurnPassive.GetTriggerEffectValue(turnFight, defObj, atkObj, ChConfig.PassiveEff_AddDamBackPerByBuffLayer, connSkillTypeID=connSkillTypeID)
         
+    defMGObj = defObj.GetTFBatLineup().getMinggeObj()
+    if defMGObj:
+        mgBuffMgr = defMGObj.GetBuffManager()
+        for buff in mgBuffMgr.FindBuffListByState(ChConfig.BatObjState_DamBackShield):
+            damBackPer += buff.GetValue1() * max(1, buff.GetLayer())
+            
     if damBackPer <= 0:
         return
     
@@ -2957,7 +2995,10 @@
         # dot施法者已死亡不再吸血
         return
     
+    atkMGObj = atkObj.GetTFBatLineup().getMinggeObj()
     aSuckHPPer = atkObj.GetBatAttrValue(ChConfig.AttrID_SuckHPPer)
+    if atkMGObj:
+        aSuckHPPer += atkMGObj.GetBatAttrValue(ChConfig.AttrID_SuckHPPer)
     aCurePer = atkObj.GetBatAttrValue(ChConfig.AttrID_CurePer)
     
     dSuckHPPerDef = defObj.GetBatAttrValue(ChConfig.AttrID_SuckHPPerDef)

--
Gitblit v1.8.0