From 49070a560884ed182b8fb8ca8d5b515c6305fa7c Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 27 三月 2024 14:45:53 +0800
Subject: [PATCH] 10019 【砍树】回合战斗(优化强化灵兽、弱化灵兽、强化治疗、弱化治疗属性对灵宠治疗技能值的计算规则)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillCommon.py |   15 +++++++++++----
 1 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillCommon.py
index c42569e..d73897a 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillCommon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillCommon.py
@@ -2261,8 +2261,10 @@
     skillPer += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(userObj, None, curSkill, ChConfig.TriggerType_AddHP)
     
     # 回合制
-    curePer = 0 # 治疗加成、强化灵兽
-    cureDefPer = 0 # 敌方的弱化治疗、弱化灵兽
+    curePer = 0 # 治疗加成
+    cureDefPer = 0 # 敌方的弱化治疗
+    baseValueAddPer = 0 # 强化灵兽可影响基础值
+    baseValueDefPer = 0 # 弱化灵兽可影响基础值
     if userObj.GetDictByKey(ChConfig.Def_Obj_Dict_TurnFightTimeline):
         isPetNPC = PetControl.IsPetNPC(userObj)
         enemyObj = None
@@ -2272,7 +2274,7 @@
             enemyObj = TurnAttack.GetEnemyObj(petOwner)
             
             curePer += GameObj.GetCurePer(petOwner)
-            curePer += GameObj.GetPetStrengthenPer(petOwner) # 强化灵兽
+            baseValueAddPer += GameObj.GetPetStrengthenPer(petOwner) # 强化灵兽
         else:
             enemyObj = TurnAttack.GetEnemyObj(userObj)
             
@@ -2281,8 +2283,13 @@
         if enemyObj:
             cureDefPer += GameObj.GetCureDefPer(enemyObj)
             if isPetNPC:
-                cureDefPer += GameObj.GetPetWeakenPer(enemyObj) # 弱化灵兽
+                baseValueDefPer += GameObj.GetPetWeakenPer(enemyObj) # 弱化灵兽
                 
+    if baseValueAddPer or baseValueDefPer:
+        #GameWorld.DebugLog("治疗基值受强化弱化影响变化: cureBaseValue=%s,baseValueAddPer=%s,baseValueDefPer=%s" 
+        #                   % (cureBaseValue, baseValueAddPer, baseValueDefPer))
+        cureBaseValue = cureBaseValue * (ChConfig.Def_MaxRateValue + baseValueAddPer - baseValueDefPer) / float(ChConfig.Def_MaxRateValue)
+    cureBaseValue = max(0, cureBaseValue) # 防止基值被弱化为负值,在恢复比例也是负值的情况下负负得正导致可以恢复血量
     skillPer += (curePer - cureDefPer) # 可能负值
     #公式计算治疗值 
     cureHP = int((cureBaseValue * skillPer / float(ChConfig.Def_MaxRateValue) + skillValue + addExValue) * curePercent)

--
Gitblit v1.8.0