void HandleAreaSpiritHealerQueue(AreaSpiritHealerQueue areaSpiritHealerQueue) { Creature unit = ObjectAccessor.GetCreature(GetPlayer(), areaSpiritHealerQueue.HealerGuid); if (!unit) { return; } if (!unit.IsSpiritService()) // it's not spirit service { return; } Battleground bg = GetPlayer().GetBattleground(); if (bg) { bg.AddPlayerToResurrectQueue(areaSpiritHealerQueue.HealerGuid, GetPlayer().GetGUID()); } BattleField bf = Global.BattleFieldMgr.GetBattlefieldToZoneId(GetPlayer().GetZoneId()); if (bf != null) { bf.AddPlayerToResurrectQueue(areaSpiritHealerQueue.HealerGuid, GetPlayer().GetGUID()); } }
void HandleGossipHello(Hello packet) { Creature unit = GetPlayer().GetNPCIfCanInteractWith(packet.Unit, NPCFlags.Gossip); if (unit == null) { Log.outDebug(LogFilter.Network, "WORLD: HandleGossipHello - {0} not found or you can not interact with him.", packet.Unit.ToString()); return; } // set faction visible if needed var factionTemplateEntry = CliDB.FactionTemplateStorage.LookupByKey(unit.getFaction()); if (factionTemplateEntry != null) { GetPlayer().GetReputationMgr().SetVisible(factionTemplateEntry); } GetPlayer().RemoveAurasWithInterruptFlags(SpellAuraInterruptFlags.Talk); if (unit.IsArmorer() || unit.IsCivilian() || unit.IsQuestGiver() || unit.IsServiceProvider() || unit.IsGuard()) { unit.StopMoving(); } // If spiritguide, no need for gossip menu, just put player into resurrect queue if (unit.IsSpiritGuide()) { Battleground bg = GetPlayer().GetBattleground(); if (bg) { bg.AddPlayerToResurrectQueue(unit.GetGUID(), GetPlayer().GetGUID()); Global.BattlegroundMgr.SendAreaSpiritHealerQuery(GetPlayer(), bg, unit.GetGUID()); return; } } if (!Global.ScriptMgr.OnGossipHello(GetPlayer(), unit)) { GetPlayer().PrepareGossipMenu(unit, unit.GetCreatureTemplate().GossipMenuId, true); GetPlayer().SendPreparedGossip(unit); } unit.GetAI().sGossipHello(GetPlayer()); }
void HandleGossipHello(Hello packet) { Creature unit = GetPlayer().GetNPCIfCanInteractWith(packet.Unit, NPCFlags.Gossip, NPCFlags2.None); if (unit == null) { Log.outDebug(LogFilter.Network, "WORLD: HandleGossipHello - {0} not found or you can not interact with him.", packet.Unit.ToString()); return; } // set faction visible if needed var factionTemplateEntry = CliDB.FactionTemplateStorage.LookupByKey(unit.GetFaction()); if (factionTemplateEntry != null) { GetPlayer().GetReputationMgr().SetVisible(factionTemplateEntry); } GetPlayer().RemoveAurasWithInterruptFlags(SpellAuraInterruptFlags.Interacting); // Stop the npc if moving unit.PauseMovement(WorldConfig.GetUIntValue(WorldCfg.CreatureStopForPlayer)); unit.SetHomePosition(unit.GetPosition()); // If spiritguide, no need for gossip menu, just put player into resurrect queue if (unit.IsSpiritGuide()) { Battleground bg = GetPlayer().GetBattleground(); if (bg) { bg.AddPlayerToResurrectQueue(unit.GetGUID(), GetPlayer().GetGUID()); Global.BattlegroundMgr.SendAreaSpiritHealerQuery(GetPlayer(), bg, unit.GetGUID()); return; } } _player.PlayerTalkClass.ClearMenus(); if (!unit.GetAI().GossipHello(_player)) { GetPlayer().PrepareGossipMenu(unit, unit.GetCreatureTemplate().GossipMenuId, true); GetPlayer().SendPreparedGossip(unit); } }