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