From ddc480baf399e9e0c87406c2c6738e04dbe6da86 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期四, 20 六月 2019 12:01:03 +0800
Subject: [PATCH] 7394 【2.0】【后端】雷罚BOSS(副本中只有一个玩家时离线副本关闭逻辑优化)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillCommon.py |   46 ++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 44 insertions(+), 2 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 bc90b1e..c2f464a 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
@@ -33,6 +33,7 @@
 import ShareDefine
 import GameObj
 import PassiveBuffEffMng
+import IpyGameDataPY
 #---------------------------------------------------------------------
 
 #---------------------------------------------------------------------
@@ -98,6 +99,11 @@
     curSkill.SetLastUseTick(tick)
     coolDownTime = curSkill.GetCoolDownTime()
     remainTime = coolDownTime
+    
+    skillTypeID = curSkill.GetSkillTypeID()
+    if atkObj and skillTypeID in IpyGameDataPY.GetFuncEvalCfg("SkillCD", 1):
+        reduceSkillCDPer += PlayerControl.GetTheFBSkillsCD(atkObj)
+        
     if isPassiveSkill(curSkill):
         if curSkill.GetFuncType() == ChConfig.Def_SkillFuncType_GiftSkill:
             # 天赋有减CD效果
@@ -1266,7 +1272,12 @@
         if curObj.GetGameNPCObjType() == IPY_GameWorld.gnotPet:
             PetControl.SetPetHP(curObj, remainHP)
         else:
-            GameObj.SetHP(curObj, remainHP)
+            timeLostHPIpyData = IpyGameDataPY.GetIpyGameDataNotLog("NPCTimeLostHP", curObj.GetNPCID())
+            if timeLostHPIpyData:
+                AttackCommon.UpdateTimeMonsterHP(curObj, timeLostHPIpyData, tick)
+            else:
+                GameObj.SetHP(curObj, remainHP)
+                
             if not view :   # 已广播的不重复
                 curObj.Notify_HPEx()
 
@@ -1276,10 +1287,11 @@
         GameObj.SetHP(curObj, remainHP, not view)
     
     AttackCommon.WriteHurtLog(buffOwner, curObj, curSkill, lostValue, hurtType, "持续掉血")
-    
     if view:
         #广播伤血类型
         AttackCommon.ChangeHPView(curObj, buffOwner, skillTypeID, notifyLostValue, hurtType)
+        if buffOwner:
+            PassiveBuffEffMng.OnPassiveSkillTrigger(buffOwner, curObj, curSkill, ChConfig.TriggerType_AttackOverPassive, tick)
         
     # 濒死状态触发技能
     if GameObj.GetHP(curObj) == 0:
@@ -1747,6 +1759,35 @@
     
     return returnInfo
 
+
+def FindBuffByOwner(gameObj, skillTypeID, ownerID, ownerType):
+    findSkill = GameWorld.GetGameData().GetSkillBySkillID(skillTypeID)
+    buffType = GetBuffType(findSkill)
+    buffTuple = GetBuffManagerByBuffType(gameObj, buffType)
+    if buffTuple == ():
+        return None
+    
+    buffManager = buffTuple[0]
+    for i in range(0, buffManager.GetBuffCount()):
+        curBuff = buffManager.GetBuff(i)
+        if not curBuff:
+            continue
+        
+        #判断是否拥有同一类型的技能
+        if curBuff.GetSkill().GetSkillTypeID() != skillTypeID:
+            continue
+        
+        #判断是否拥有同一类型的技能
+        if curBuff.GetOwnerID() != ownerID:
+            continue
+        
+        if curBuff.GetOwnerType() != ownerType:
+            continue
+    
+        return curBuff
+    
+    return None
+    
 #---------------------------------------------------------------------
 ## 执行清空命令 参数:玩家, 保留技能类型列表
 #  @param curPlayer 玩家
@@ -2091,6 +2132,7 @@
     #技能附加
     skillValue = curSkill.GetEffect(0).GetEffectValue(1)
     
+    skillPer += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(userObj, None, curSkill, ChConfig.TriggerType_AddHP)/float(ChConfig.Def_MaxRateValue)
     #公式计算治疗值 
     cureHP = int((cureBaseValue * skillPer + skillValue + addExValue) * curePercent)
     

--
Gitblit v1.8.0