From ace5dadbba4a16357d0aca93ee5734ab8adf7a94 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 28 十月 2025 17:57:08 +0800
Subject: [PATCH] 129 【战斗】战斗系统-服务端(韩遂技能;增加效果6016-对护盾造成伤害加成)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py |   30 +++++++++++++++++++-----------
 1 files changed, 19 insertions(+), 11 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 219354d..ca4ba77 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py
@@ -1592,7 +1592,7 @@
     
     # 减伤盾减伤, 会改变 hurtValue
     hurtValue = max(0, hurtValue)
-        
+    
     # 承伤盾承伤,剩余时间短的优先承伤,承伤不影响输出,相当于额外的HP,仅用于抵扣掉血,仅 改变 realHurtHP
     realHurtHP = hurtValue
     shieldBuffList = []
@@ -1605,27 +1605,35 @@
         shieldBuffList.append([remainTime, buffValue, buff])
         
     if shieldBuffList:
+        #可能需要同步盾伤跟实际扣血值给前端,具体看前端护盾怎么处理再优化
+        shieldHurtPer = 10000 # 对护盾伤害比
+        shieldHurtPer += TurnPassive.GetTriggerEffectValue(turnFight, atkObj, defObj, ChConfig.PassiveEff_AddShieldHurtPer, curSkill)
+        shieldHurtPer /= 10000.0
+        shieldHurtValue = int(hurtValue * shieldHurtPer)  # 对护盾伤害
+        GameWorld.DebugLog("    对护盾总伤害: shieldHurtValue=%s,shieldHurtPer=%s,hurtValue=%s" % (shieldHurtValue, shieldHurtPer, hurtValue))
         shieldBuffList.sort()
         for _, buffValue, buff in shieldBuffList:
-            if realHurtHP <= 0:
+            if shieldHurtValue <= 0:
                 break
             buffID = buff.GetBuffID()
-            if realHurtHP < buffValue:
-                damageShieldValue = realHurtHP
+            if shieldHurtValue < buffValue:
+                decShieldValue = shieldHurtValue
             else:
-                damageShieldValue = buffValue
-            GameWorld.DebugLog("    承伤盾: buffID=%s,buffValue=%s,realHurtHP=%s,damageShieldValue=%s" % (buffID, buffValue, realHurtHP, damageShieldValue))
-            realHurtHP -= damageShieldValue # 承伤值
-            if damageShieldValue >= buffValue:
-                GameWorld.DebugLog("        删除盾: buffID=%s,realHurtHP=%s" % (buffID, realHurtHP))
+                decShieldValue = buffValue
+            GameWorld.DebugLog("    承伤盾抵扣: buffID=%s,buffValue=%s,剩余盾伤=%s,扣除盾值=%s" % (buffID, buffValue, shieldHurtValue, decShieldValue))
+            shieldHurtValue -= decShieldValue # 承伤值
+            if decShieldValue >= buffValue:
+                GameWorld.DebugLog("        删除盾: buffID=%s,剩余盾伤=%s" % (buffID, shieldHurtValue))
                 TurnBuff.DoBuffDel(turnFight, defObj, buff, relatedSkill=curSkill, afterLogic=True, tagObj=atkObj)
             else:
-                updShieldValue = buffValue - damageShieldValue
-                GameWorld.DebugLog("        更新盾值: updShieldValue=%s,realHurtHP=%s" % (updShieldValue, realHurtHP))
+                updShieldValue = buffValue - decShieldValue
+                GameWorld.DebugLog("        更新盾: updShieldValue=%s,剩余盾伤=%s" % (updShieldValue, shieldHurtValue))
                 buff.SetValue1(updShieldValue % ChConfig.Def_PerPointValue)
                 buff.SetValue2(updShieldValue / ChConfig.Def_PerPointValue)
                 curSkill.AddAfterLogic(ChConfig.AfterLogic_SyncBuff, [defObj, buff, atkObj, "ReduceShieldValue"])
                 
+        realHurtHP = int(shieldHurtValue / shieldHurtPer)
+        GameWorld.DebugLog("        承伤后剩余伤血: realHurtHP=%s" % (realHurtHP))
     return hurtValue, max(0, realHurtHP), hurtTypes
 
 def CalcBounceHP(turnFight, atkObj, defObj, hurtObj, curSkill):

--
Gitblit v1.8.0