From fe40f1881045b901bd5e7365673e3a2b677f7e7f Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 30 十二月 2025 18:07:49 +0800
Subject: [PATCH] 129 【战斗】战斗系统-服务端(吕布所有技能;优化效果5501支持同国层级;7002效果支持配置学习x技能生效;增加效果5511;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py |   18 ++++++++++++++----
 1 files changed, 14 insertions(+), 4 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 8fd79b3..e8ba14f 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py
@@ -2206,14 +2206,25 @@
         GameWorld.DebugLogEx("    伤害最高限制: hurtValue=%s,hurtAtkPerMax=%s,aAtk=%s", hurtValue, hurtAtkPerMax, aAtk)
         
     # 均摊
-    hurtShareEff = curSkill.GetEffectByID(ChConfig.SkillEff_HurtShare)
-    if hurtShareEff:
+    if HaveShareEff(atkObj, curSkill):
         tagCnt = max(1, len(curSkill.GetTagObjList()))
         hurtValue = hurtValue / tagCnt
         GameWorld.DebugLogEx("    目标均摊伤害: hurtValue=%s,tagCnt=%s", hurtValue, tagCnt)
         
     hurtValue = max(1, int(hurtValue)) # 负值、保底防范,放最后
     return hurtValue, hurtTypes
+
+def HaveShareEff(atkObj, curSkill):
+    ## 玩家技能是否有分摊效果: 均摊伤害/治疗/承伤盾值
+    hurtShareEff = curSkill.GetEffectByID(ChConfig.SkillEff_HurtShare)
+    if not hurtShareEff:
+        return False
+    needLearnSkillID = hurtShareEff.GetEffectValue(0)
+    if needLearnSkillID:
+        if not atkObj.GetSkillManager().FindSkillByID(needLearnSkillID):
+            GameWorld.DebugLogEx("所需技能未学习,分摊效果不生效! skillID=%s,needLearnSkillID=%s", curSkill.GetSkillID(), needLearnSkillID)
+            return False
+    return True
 
 def GetAddSkillPer(turnFight, atkObj, defObj, curSkill):
     ## 获取额外增加的技能万分比
@@ -2832,8 +2843,7 @@
         cureHP = int(cureHP * multiValue)
         GameWorld.DebugLogEx("    治疗倍值: cureHP=%s,multiValue=%s", cureHP, multiValue)
         
-    hurtShareEff = curSkill.GetEffectByID(ChConfig.SkillEff_HurtShare)
-    if hurtShareEff:
+    if HaveShareEff(userObj, curSkill):
         tagCnt = max(1, len(curSkill.GetTagObjList()))
         cureHP = cureHP / tagCnt
         GameWorld.DebugLogEx("    目标均摊治疗: cureHP=%s,tagCnt=%s", cureHP, tagCnt)

--
Gitblit v1.8.0