From 9bc8c9c3e4b48dab63efbca946713465ee30b4cd Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 17 一月 2024 15:47:31 +0800
Subject: [PATCH] 10019 【砍树】回合战斗(副本回合制NPC支持配置精怪技能、神通技能;增加属性强化治疗215、弱化治疗216;NPC支持触发被动效果;被动效果触发方式增加按回合触发-效果ID5000;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillCommon.py |   23 ++++++++++++++---------
 1 files changed, 14 insertions(+), 9 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 007e3ad..82737c0 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
@@ -1254,8 +1254,10 @@
         return
     
     # 治疗加成
-    curePer = PlayerControl.GetCurePer(curObj) if curObjType == IPY_GameWorld.gotPlayer else ChConfig.Def_MaxRateValue 
-    addValue = int(addValue*curePer*1.0/ChConfig.Def_MaxRateValue)
+    curePer = GameObj.GetCurePer(curObj) + ChConfig.Def_MaxRateValue
+    curePerReduce = TurnAttack.GetEnemyCureDefPer(curObj) # 弱化治疗,取对方的
+    curePerFinal = max(0, curePer - curePerReduce)
+    addValueFianl = int(addValue*curePerFinal*1.0/ChConfig.Def_MaxRateValue)
     
     maxHP = GameObj.GetMaxHP(curObj)
     
@@ -1263,15 +1265,16 @@
     if curHP == maxHP:
         #广播加血类型
         if isNotify:
-            AttackCommon.ChangeHPView(curObj, curObj, skillTypeID, addValue, ChConfig.Def_HurtTYpe_Recovery)
-        return
+            AttackCommon.ChangeHPView(curObj, curObj, skillTypeID, addValueFianl, ChConfig.Def_HurtTYpe_Recovery)
+        GameWorld.DebugLog("        治疗时已满血: curID=%s,skillTypeID=%s,maxHP=%s" % (curObj.GetID(), skillTypeID, maxHP))
+        return addValueFianl
     
-    remainHP = min(curHP + addValue, maxHP)
+    remainHP = min(curHP + addValueFianl, maxHP)
     
     #---玩家处理---
     if curObjType == IPY_GameWorld.gotPlayer:
         GameObj.SetHP(curObj, remainHP, not isNotify)
-        FBLogic.OnFBAddHP(curObj, addValue)
+        FBLogic.OnFBAddHP(curObj, addValueFianl)
     
     #---NPC处理---
     elif curObjType == IPY_GameWorld.gotNPC:
@@ -1287,9 +1290,11 @@
            
     #广播加血类型
     if isNotify:
-        AttackCommon.ChangeHPView(curObj, curObj, skillTypeID, addValue, ChConfig.Def_HurtTYpe_Recovery)
-            
-    return
+        AttackCommon.ChangeHPView(curObj, curObj, skillTypeID, addValueFianl, ChConfig.Def_HurtTYpe_Recovery)
+        
+    GameWorld.DebugLog("        治疗: curID=%s,skillTypeID=%s,curePerFinal=%s(%s-%s),addValue=%s,addValueFianl=%s,HP=%s" 
+                       % (curObj.GetID(), skillTypeID, curePerFinal, curePer, curePerReduce, addValue, addValueFianl, remainHP))
+    return addValueFianl
 
 ## 直接扣血不走公式
 # view 是否广播客户端飘血

--
Gitblit v1.8.0