162template<u
int32 QuestId, u
int32 ObjectiveId, u
int32 SpellId>
173 player->
CastSpell(
nullptr, SpellId,
false);
450 if (!cyrusObject || !gennObject || !greyguardOneObject || !greyguardTwoObject)
457 if (!cyrusClone || !gennClone || !greyguardOneClone || !greyguardTwoClone)
494 if (!privateObjectOwner)
498 gennClone->DespawnOrUnsummon();
615 if (!privateObjectOwner)
682 if (!magusStormwind || !magusExodar || !magusIronforge)
688 if (!magusStormwindClone || !magusExodarClone || !magusIronforgeClone)
802 summon->DespawnOrUnsummon(2s);
T GetEntry(std::unordered_map< uint32, T > const &map, CriteriaTreeEntry const *tree)
@ TEMPSUMMON_MANUAL_DESPAWN
@ QUEST_STATUS_INCOMPLETE
#define RegisterCreatureAI(ai_name)
#define RegisterAreaTriggerAI(ai_name)
#define RegisterSpellScript(spell_script)
#define RegisterConversationAI(ai_name)
Creature * GetClosestCreatureWithOptions(WorldObject *source, float maxSearchRange, FindCreatureOptions const &options)
void CloseGossipMenuFor(Player *player)
@ AURA_EFFECT_HANDLE_REAL
#define SpellEffectFn(F, I, N)
#define AuraEffectRemoveFn(F, I, N, M)
NPCFlags
Non Player Character flags.
@ UNIT_NPC_FLAG_QUESTGIVER
@ CURRENT_CHANNELED_SPELL
HookList< EffectApplyHandler > AfterEffectApply
ObjectGuid const & GetGUID() const
Conversation *const conversation
Milliseconds GetLineEndTime(LocaleConstant locale, int32 lineId) const
void AddActor(int32 actorId, uint32 actorIdx, ObjectGuid const &actorGuid)
LocaleConstant GetPrivateObjectOwnerLocale() const
static Conversation * CreateConversation(uint32 conversationEntry, Unit *creator, Position const &pos, ObjectGuid privateObjectOwner, SpellInfo const *spellInfo=nullptr, bool autoStart=true)
Milliseconds GetLastLineEndTime(LocaleConstant locale) const
Creature * GetActorCreature(uint32 actorIdx) const
void DespawnOrUnsummon(Milliseconds timeToDespawn=0s, Seconds forceRespawnTime=0s)
void ScheduleEvent(uint32 eventId, Milliseconds time, uint32 group=0, uint8 phase=0)
void MoveFollow(Unit *target, float dist, Optional< ChaseAngle > angle={}, Optional< Milliseconds > duration={}, bool ignoreTargetWalk=false, MovementSlot slot=MOTION_SLOT_ACTIVE, Scripting::v2::ActionResultSetter< MovementStopReason > &&scriptResult={})
void MovePoint(uint32 id, Position const &pos, bool generatePath=true, Optional< float > finalOrient={}, Optional< float > speed={}, MovementWalkRunSpeedSelectionMode speedSelectionMode=MovementWalkRunSpeedSelectionMode::Default, Optional< float > closeEnoughDistance={}, Optional< MovementFadeObject > fadeObject={}, Scripting::v2::ActionResultSetter< MovementStopReason > &&scriptResult={})
void MovePath(uint32 pathId, bool repeatable, Optional< Milliseconds > duration={}, Optional< float > speed={}, MovementWalkRunSpeedSelectionMode speedSelectionMode=MovementWalkRunSpeedSelectionMode::Default, Optional< std::pair< Milliseconds, Milliseconds > > waitTimeRangeAtPathEnd={}, Optional< float > wanderDistanceAtPathEnds={}, Optional< bool > followPathBackwardsFromEndToStart={}, Optional< bool > exactSplinePath={}, bool generatePath=true, Optional< MovementFadeObject > fadeObject={}, Scripting::v2::ActionResultSetter< MovementStopReason > &&scriptResult={})
static bool OnConditionChange(WorldObject *object, bool updateVisibility=true)
void KilledMonsterCredit(uint32 entry, ObjectGuid guid=ObjectGuid::Empty)
int32 GetQuestObjectiveData(uint32 questId, uint32 objectiveId) const
QuestStatus GetQuestStatus(uint32 quest_id) const
uint32 GetQuestId() const
static bool ValidateSpellInfo(std::initializer_list< uint32 > spellIds)
Creature * GetHitCreature() const
Unit * GetHitUnit() const
HookList< EffectHandler > OnEffectHitTarget
TaskContext & Schedule(TaskScheduler::duration_t time, TaskScheduler::task_handler_t task)
TaskScheduler & Schedule(duration_t time, task_handler_t task)
TaskScheduler & Update()
Update the scheduler to the current time.
Unit * GetSummonerUnit() const
SpellCastResult DoCastAOE(uint32 spellId, CastSpellExtraArgs const &args={})
MotionMaster * GetMotionMaster()
void SetFacingToObject(WorldObject const *object, bool force=true)
void RemoveNpcFlag(NPCFlags flags)
TempSummon * ToTempSummon()
bool SetWalk(bool enable)
void SetFacingTo(float const ori, bool force=true)
void NearTeleportTo(TeleportLocation const &target, bool casting=false)
void InterruptSpell(CurrentSpellTypes spellType, bool withDelayed=true, bool withInstant=true)
TempSummon * SummonPersonalClone(Position const &pos, TempSummonType despawnType=TEMPSUMMON_MANUAL_DESPAWN, Milliseconds despawnTime=0s, uint32 vehId=0, uint32 spellId=0, Player *privateObjectOwner=nullptr)
Creature * FindNearestCreatureWithOptions(float range, FindCreatureOptions const &options) const
ObjectGuid GetPrivateObjectOwner() const
SpellCastResult CastSpell(CastSpellTargetArg const &targets, uint32 spellId, CastSpellExtraArgs const &args={ })
conversation_boralus_accept_old_knight(Conversation *conversation)
void OnCreate(Unit *creator) override
ObjectGuid _gennCloneGUID
void OnUpdate(uint32 diff) override
void OnCreate(Unit *creator) override
OldKnightsConversationData
@ EVENT_OLD_KNIGHTS_CLONE_DESPAWN
@ CONVO_LINE_CYRUS_AND_GENN_DESPAWN
conversation_boralus_cyrus_meets_genn(Conversation *conversation)
conversation_boralus_enter_harbormaster_office(Conversation *conversation)
void OnCreate(Unit *creator) override
void OnCreate(Unit *creator) override
conversation_boralus_hub_tour_00(Conversation *conversation)
Position const & GetGuardMovePosition()
conversation_boralus_hub_tour_counting_house(Conversation *conversation)
Position const & GetGuardMovePosition()
conversation_boralus_hub_tour_ferry(Conversation *conversation)
Position const & GetGuardMovePosition()
conversation_boralus_hub_tour_flight_master(Conversation *conversation)
conversation_boralus_hub_tour_harbor_inn(Conversation *conversation)
Position const & GetGuardMovePosition()
virtual uint32 GetKillCreditId()=0
void OnCreate(Unit *creator) override
void OnUpdate(uint32 diff) override
virtual Position const & GetGuardMovePosition()=0
conversation_boralus_hub_tour(Conversation *conversation)
void OnUpdate(uint32 diff) override
void OnCreate(Unit *creator) override
conversation_cyrus_crestfall_shaking_hands(Conversation *conversation)
ShakingHandsConversationData
@ CONVO_LINE_CYRUS_CHANGE_FACING_GENN
@ POINT_CYRUS_MOVE_BACK_TO_GENN
@ CONVO_LINE_CYRUS_START_WALK_TO_FIRE
@ EVENT_CYRUS_MOVE_BACK_TO_GENN
@ CONVO_LINE_CYRUS_MOVE_BACK_TO_GENN
@ EVENT_CYRUS_DESPAWN_CLONE_OFFICE
@ EVENT_CYRUS_CHANGE_FACING_GENN
@ EVENT_CYRUS_START_WALK_TO_FIRE
@ CONVO_LINE_CYRUS_DESPAWN_CLONE_OFFICE
@ POINT_CYRUS_MOVE_TO_OFFICE_FIRE
void OnSceneCancel(Player *player, uint32, SceneTemplate const *) override
scene_boralus_client_scene_cyrus_and_genn()
void OnSceneComplete(Player *player, uint32, SceneTemplate const *) override
void OnSceneCancel(Player *player, uint32, SceneTemplate const *) override
void OnSceneComplete(Player *player, uint32, SceneTemplate const *) override
scene_boralus_jainas_procession()
void HandleHitTarget(SpellEffIndex)
bool Validate(SpellInfo const *) override
void HandleHitSummoner(SpellEffIndex)
void HandleHitJaina(SpellEffIndex)
bool Validate(SpellInfo const *) override
void OnApply(AuraEffect const *, AuraEffectHandleModes)
TC_GAME_API Unit * GetUnit(WorldObject const &, ObjectGuid const &guid)
TC_GAME_API Player * GetPlayer(Map const *, ObjectGuid const &guid)
TC_GAME_API Creature * GetCreature(WorldObject const &u, ObjectGuid const &guid)
constexpr void GetPosition(float &x, float &y) const
at_boralus_get_your_bearings(AreaTrigger *areatrigger)
void OnUnitEnter(Unit *unit) override
at_boralus_old_knight_enter_harbormasters_office(AreaTrigger *areatrigger)
void OnUnitEnter(Unit *unit) override
void OnUnitEnter(Unit *unit) override
at_boralus_old_knight_genn_arrives_boralus(AreaTrigger *areatrigger)
void OnUnitEnter(Unit *unit) override
at_boralus_sanctum_of_the_sages_conversation(AreaTrigger *areatrigger)
npc_7th_legion_magus_sanctum_of_the_sages(Creature *creature)
void UpdateAI(uint32 diff) override
void WaypointReached(uint32, uint32 pathId) override
bool OnGossipSelect(Player *player, uint32 menuId, uint32 gossipListId) override
npc_cyrus_crestfall_old_knight(Creature *creature)
bool OnGossipSelect(Player *player, uint32 menuId, uint32 gossipListId) override
void IsSummonedBy(WorldObject *summoner) override
npc_taelia_get_your_bearings(Creature *creature)
void WaypointPathEnded(uint32, uint32 pathId) override
void OnQuestAccept(Player *player, Quest const *quest) override
void SpellHit(WorldObject *, SpellInfo const *spellInfo) override
void MovementInform(uint32 type, uint32 pointId) override
Position const TaeliaTeleportOfficePos
void AddSC_zone_boralus()
Position const GennOfficePos
Position const CyrusOfficePos
Position const TaeliaFerryPos
Position const TaeliaBankPos
@ SPELL_OBJ_COMPLETE_KATHERINES_COURT
@ SPELL_PLAY_SCENE_JAINA_PROCESSION
@ SPELL_WAKE_UP_IN_TOL_DAGOR
@ NPC_JAINA_PROUDMOORE_BEFORE_AUDIENCE
Position const CyrusMoveToOfficeFirePos
Position const TaeliaFlightMasterPos
Position const CyrusStaticOfficePos
@ SPELL_ENTER_HARBOR_MASTERS_OFFICE
@ GOSSIP_OPTION_CYRUS_SHAKING_HANDS
@ PATH_GREYGUARD_ONE_AFTER_SCENE_OFFICE
@ PATH_KULTIRAN_GUARD_ENTER_OFFICE
@ OBJECTIVE_ENTER_HARBORMASTERS_OFFICE
@ PATH_GENN_GREYMANE_AFTER_SCENE_OFFICE
@ SPELL_FIND_CYRUS_OBJECTIVE_COMPLETE
@ SPELL_CLIENT_SCENE_CYRUS_AND_GENN
@ PATH_CYRUS_CRESTFAL_AFTER_SCENE_OFFICE
@ PATH_KULTIRAN_GUARD_AFTER_SCENE_OFFICE
@ CONVO_ACTOR_CYRUS_CRESTFAL
@ CONVO_CYRUS_MEETS_GENN_IN_OFFICE
@ KILLCREDIT_HEAR_CYRUS_TALE_OLD_KNIGHT
@ GOSSIP_MENU_CYRUS_SHAKING_HANDS
@ CONVO_ACCEPT_OLD_KNIGHT_QUEST
@ CONVO_CYRUS_SHAKING_HAND
@ KILLCREDIT_SPEAK_WITH_CYRUS_OLD_KNIGHT
@ PATH_GREYGUARD_TWO_AFTER_SCENE_OFFICE
Position const GreyguardTwoOfficePos
Position const TaeliaInnPos
@ GOSSIP_OPTION_OPEN_CITY_PORTALS
@ PATH_MAGUS_OPEN_PORTAL_IRONFORGE
@ PATH_MAGUS_OPEN_PORTAL_STORMWIND
@ KILLCREDIT_OPEN_CAPITAL_PORTALS
@ QUEST_SANCTUM_OF_THE_SAGES
@ NPC_7TH_LEGION_MAGUS_WITH_GOSSIP
@ PATH_MAGUS_FINISH_PORTAL_IRONFORGE
@ PATH_MAGUS_FINISH_PORTAL_EXODAR
@ PATH_MAGUS_OPEN_PORTAL_EXODAR
@ PATH_MAGUS_FINISH_PORTAL_STORMWIND
@ SPELL_LEGION_MAGUS_ARCANE_CHANNEL
@ CONVO_SANCTUM_OF_THE_SAGES
@ GOSSIP_MENU_OPEN_CITY_PORTALS
@ OBJECTIVE_FERRY_DOCK_VISITED
@ OBJECTIVE_FLIGHT_MASTER_VISITED
@ SPELL_HUB_TOUR_CONVO_BANK
@ CONVO_ACTOR_KULTIRAN_GUARD
@ KILL_CREDIT_FLIGHT_MASTER_VISITED
@ QUEST_GET_YOUR_BEARINGS
@ OBJECTIVE_COUNTING_HOUSE_VISITED
@ SPELL_HUB_TOUR_CONVO_FERRY
@ SPELL_HUB_TOUR_CONVO_FLIGHT_MASTER
@ KILL_CREDIT_COUNTING_HOUSE_VISITED
@ SPELL_HUB_TOUR_CONVO_INN
@ OBJECTIVE_SNUG_HARBOR_INN_VISITED
@ KILL_CREDIT_SNUG_HARBOR_INN_VISITED
@ KILL_CREDIT_FERRY_DOCK_VISITED
@ NPC_SUMMONED_KULTIRAN_GUARD
@ POINT_KULTIRAN_GUARD_FLIGHT_MASTER
Position const GreyguardOneOfficePos