From 8d701c0d36c2f4ed0948ea485d10506f9ae86ef8 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期六, 20 十二月 2025 14:01:21 +0800
Subject: [PATCH] 129 【战斗】战斗系统-服务端(修复关羽潜能触发怒气追击会消耗怒气bug;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py |   33 +++++++++++++++++++++++----------
 1 files changed, 23 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 6dcbf8b..b6da081 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py
@@ -59,9 +59,10 @@
     if not skillID:
         return
     
+    skillType = useSkill.GetSkillType()
     byTriggerWay = kwargs["byTriggerWay"] if "byTriggerWay" in kwargs else 0 # 不使用参数名 triggerWay, 防止传递过程中参数混乱
     if not curBatObj.IsAlive():
-        if useSkill.GetSkillType() == ChConfig.Def_SkillType_Revive and useSkill.GetTagAim() == ChConfig.SkillTagAim_Self:
+        if skillType == ChConfig.Def_SkillType_Revive and useSkill.GetTagAim() == ChConfig.SkillTagAim_Self:
             GameWorld.DebugLogEx("死亡时使用复活自己的技能! skillID=%s", skillID)
         else:
             if byTriggerWay in ChConfig.DeadCanTriggerWayList:
@@ -103,10 +104,16 @@
             if not tagObjList and isRemove:
                 return
             
+    if tagObjList and skillType == ChConfig.Def_SkillType_Revive:
+        for tagObj in tagObjList[::-1]:
+            if tagObj.CheckInState(ChConfig.BatObjState_RebornLimit):
+                GameWorld.DebugLogEx("    目标被禁止复活不处理! tagID=%s", tagObj.GetID())
+                tagObjList.remove(tagObj)
+                
     if not tagObjList:
         # 可扩展其他目标选择,如复活技能没有死亡单位时则使用另外的效果
         GameWorld.DebugLogEx("找不到技能目标! skillID=%s,mapID=%s,funcLineID=%s", skillID, turnFight.mapID, turnFight.funcLineID, turnFight.getReqPlayerID())
-        if useSkill.GetSkillType() == ChConfig.Def_SkillType_Revive:
+        if skillType == ChConfig.Def_SkillType_Revive and not isinstance(useSkill, IpyGameDataPY.IPY_Skill):
             otherEff = useSkill.GetEffectByID(ChConfig.SkillEff_ReviveNoUse)
             if otherEff:
                 otherSkillID = otherEff.GetEffectValue(0)
@@ -781,22 +788,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
 
@@ -1163,7 +1172,7 @@
     if IsNeedSyncSkill(useSkill):
         Sync_UseSkill(turnFight, curBatObj, useSkill)
         
-    __doSkillUserAnger(turnFight, curBatObj, useSkill)
+    __doSkillUserAnger(turnFight, curBatObj, useSkill, **kwargs)
     
     DoBeAttackResult(turnFight, curBatObj, useSkill)
     return
@@ -1635,10 +1644,14 @@
         
     return
 
-def __doSkillUserAnger(turnFight, curBatObj, useSkill):
+def __doSkillUserAnger(turnFight, curBatObj, useSkill, **kwargs):
     ## 技能释放者怒气相关
     if SkillCommon.isAngerSkill(useSkill):
-        curBatObj.SetXP(0)
+        if "noUseXP" in kwargs:
+            kwargs.pop("noUseXP")
+            GameWorld.DebugLogEx("本次不消耗怒气")
+        else:
+            curBatObj.SetXP(0)
     elif SkillCommon.isTurnNormalSkill(useSkill) and useSkill.GetBatType() == ChConfig.TurnBattleType_Normal:
         addXP = IpyGameDataPY.GetFuncCfg("AngerXP", 3)
         AddFightXP(curBatObj, addXP, "skillID:%s" % useSkill.GetSkillID())
@@ -1885,7 +1898,7 @@
         
     return isOK
 
-def CalcFormatHurt(turnFight, atkObj, defObj, curSkill, atkSkillValue, atkSkillPer, **kwargs):
+def CalcFormatHurt(turnFight, atkObj, defObj, curSkill, atkSkillValue, atkSkillPer, addBatDamPer=0, **kwargs):
     '''按公式计算伤害,默认按攻击计算
     '''
     
@@ -2000,7 +2013,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 += TurnPassive.GetTriggerEffectValue(turnFight, atkObj, defObj, ChConfig.PassiveEff_AddBatDamPerByLayer, curSkill)
+    aBatDamPer += addBatDamPer
     
     # 物法增减伤
     if pmType == IPY_GameWorld.ghtMag: # 法伤

--
Gitblit v1.8.0