From d8b7cc20965d256436e31dcc85fc0c8c988cf8cc Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期四, 20 九月 2018 19:26:37 +0800
Subject: [PATCH] 2615 【后端】神兽强化增加强化成功通知

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCAI/AIType_186.py |   49 +++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 45 insertions(+), 4 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCAI/AIType_186.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCAI/AIType_186.py
index a460007..2c5e032 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCAI/AIType_186.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCAI/AIType_186.py
@@ -31,6 +31,7 @@
 import NPCCommon
 import AICommon
 import IPY_GameWorld
+import FamilyRobBoss
 import AttackCommon
 import GameWorld
 import BaseAttack
@@ -110,6 +111,12 @@
             elif ownerType == ChConfig.Def_NPCHurtTypePlayer:
                 tagObj = GameWorld.GetObj(ownerID, IPY_GameWorld.gotPlayer)
                 
+    elif dropOwnerType == ChConfig.DropOwnerType_Family:
+        ownerInfo = FamilyRobBoss.RefreshFamilyOwnerNPCHurt(npcControl, curNPC, tick, refreshInterval)
+        if ownerInfo:
+            tagObj, ownerFamilyID = ownerInfo
+            ownerType, ownerID = ChConfig.Def_NPCHurtTypeFamily, ownerFamilyID
+            
     # 没有攻击目标,则刷新仇恨,支持主动怪
     if not tagObj:
         angryObjType, maxAngryObj = None, None
@@ -122,7 +129,7 @@
             maxAngryObj = GameWorld.GetObj(angryID, angryObjType)
             
         tagObj = maxAngryObj
-        if angryObjType == IPY_GameWorld.gotPlayer and maxAngryObj:
+        if angryObjType == IPY_GameWorld.gotPlayer and maxAngryObj and not ownerType:
             teamID = maxAngryObj.GetTeamID()
             if teamID:
                 ownerType, ownerID = ChConfig.Def_NPCHurtTypeTeam, teamID
@@ -149,7 +156,7 @@
 def __RefreshBossDropOwnerObjBuff(curNPC, npcControl, tick, ownerType=0, ownerID=0, isDead=False):
     npcID = curNPC.GetNPCID()
     dropOwnerType = NPCCommon.GetDropOwnerType(curNPC)
-    if dropOwnerType not in [ChConfig.DropOwnerType_MaxHurt, ChConfig.DropOwnerType_MaxAngry]:
+    if dropOwnerType not in [ChConfig.DropOwnerType_MaxHurt, ChConfig.DropOwnerType_MaxAngry, ChConfig.DropOwnerType_Family]:
         #GameWorld.DebugLog("不需要展示掉落归属的NPC! npcID=%s,dropOwnerType=%s" % (npcID, dropOwnerType))
         return
     
@@ -202,12 +209,35 @@
                 if isOk:
                     GameWorld.DebugLog("删除归属队员buff: teamID=%s,playerID=%s" % (ownerID, curTeamPlayer.GetPlayerID()))
                     
+    elif ownerType == ChConfig.Def_NPCHurtTypeFamily:
+        
+        hurtType, hurtID = ChConfig.Def_NPCHurtTypeFamily, ownerID
+        refreshPoint = curNPC.GetRefreshPosAt(curNPC.GetCurRefreshPointIndex())
+        copyPlayerMgr = GameWorld.GetMapCopyPlayerManager()
+        for index in xrange(copyPlayerMgr.GetPlayerCount()):
+            player = copyPlayerMgr.GetPlayerByIndex(index)
+            if not player:
+                continue
+            
+            # 归属仙盟 且 在boss区域内
+            if player.GetFamilyID() == ownerID and npcControl.GetIsInRefreshPoint(player.GetPosX(), player.GetPosY(), refreshPoint):
+                __AddBossDropOwnerPlayerBuff(player, tick, curNPC)
+                
+            else:
+                isOk = BuffSkill.DelBuffBySkillID(player, ChConfig.Def_SkillID_DropOwnerBuff, tick, buffOwner=curNPC)
+                if isOk:
+                    GameWorld.DebugLog("删除非归属仙盟成员buff: teamID=%s,playerID=%s" % (ownerID, player.GetPlayerID()))
+            
     if isDead:
         key = (GameWorld.GetGameWorld().GetLineID(), curNPC.GetID(), npcID)
         teamID = curTeam.GetTeamID() if curTeam else 0
         if killerDict:
             PyGameData.g_npcKillerInfo[key] = killerDict, curTeam, hurtType, hurtID
-        GameWorld.Log("Boss被击杀: npcID=%s,key=%s,playerIDList=%s,teamID=%s" % (npcID, key, killerDict.keys(), teamID))
+        elif ownerType == ChConfig.Def_NPCHurtTypeFamily:
+            PyGameData.g_npcKillerInfo[key] = {}, None, hurtType, hurtID
+            
+        GameWorld.Log("Boss被击杀: npcID=%s,key=%s,playerIDList=%s,teamID=%s,hurtType=%s,hurtID=%s" 
+                      % (npcID, key, killerDict.keys(), teamID, hurtType, hurtID))
     return
 
 def __AddBossDropOwnerPlayerBuff(curPlayer, tick, curNPC):
@@ -259,6 +289,14 @@
             if curTeamPlayer == None or curTeamPlayer.GetPlayerID() == 0:
                 continue
             __SetBossDropOwnerBuffDisappearTime(curTeamPlayer, curNPC)
+    elif ownerType == ChConfig.Def_NPCHurtTypeFamily:
+        copyPlayerMgr = GameWorld.GetMapCopyPlayerManager()
+        for index in xrange(copyPlayerMgr.GetPlayerCount()):
+            player = copyPlayerMgr.GetPlayerByIndex(index)
+            if not player:
+                continue
+            __SetBossDropOwnerBuffDisappearTime(player, curNPC)
+            
     return
 
 def __SetBossDropOwnerBuffDisappearTime(curPlayer, curNPC):
@@ -324,9 +362,12 @@
 #  @return None
 def OnDie(curNPC, HurtType, HurtID):
     AICommon.DoNPCUseSkillOnDie(curNPC)
+    return
+
+def OnNPCSetDead(curNPC):
     __DelayBossDropOwnerBuff(curNPC)
     return
-    
+
 ## npc攻击逻辑
 #  @param curNPC 当前npc
 #  @param tagID curNPCAngryID

--
Gitblit v1.8.0