407 if (!kaynObject || !jayceObject || !allariaObject || !cyanaObject || !korvasObject || !sevisObject)
416 if (!kaynClone || !jayceClone || !allariaClone || !cyanaClone || !korvasClone || !sevisClone)
428 conversation->
Start();
445 if (!privateObjectOwner)
490 if (!privateObjectOwner)
548 std::list<Unit*> targetList;
552 targetList.remove_if([](
Unit* possibleTarget)
668 if (!kaynObject || !korvasObject)
673 if (!kaynClone || !korvasClone)
698 if (!privateObjectOwner)
782 if (triggerName ==
"SEEFELSABERCREDIT")
784 else if (triggerName ==
"UPDATEPHASE")
1069 balefulColoss->KillSelf();
1369template<u
int32 CreatureId>
First const & RAND(First const &first, Second const &second, Rest const &... rest)
std::chrono::milliseconds Milliseconds
Milliseconds shorthand typedef.
@ TEMPSUMMON_MANUAL_DESPAWN
@ TEMPSUMMON_TIMED_DESPAWN
@ QUEST_STATUS_INCOMPLETE
#define RegisterCreatureAI(ai_name)
#define RegisterAreaTriggerAI(ai_name)
#define RegisterSpellScript(spell_script)
#define RegisterSpellScriptWithArgs(spell_script, script_name,...)
Creature * GetClosestCreatureWithOptions(WorldObject *source, float maxSearchRange, FindCreatureOptions const &options)
void CloseGossipMenuFor(Player *player)
@ SPELL_EFFECT_SCRIPT_EFFECT
@ AURA_EFFECT_HANDLE_REAL
@ SPELL_AURA_SCHOOL_IMMUNITY
#define SpellEffectFn(F, I, N)
#define AuraEffectRemoveFn(F, I, N, M)
NPCFlags
Non Player Character flags.
@ UNIT_NPC_FLAG_QUESTGIVER
AuraApplication const * GetTargetApplication() const
HookList< EffectApplyHandler > AfterEffectRemove
BalefulColossSmashEvent(Creature *owner)
bool Execute(uint64, uint32) override
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 const * GetLineStartTime(LocaleConstant locale, int32 lineId) const
Unit * GetActorUnit(uint32 actorIdx) const
Creature * GetActorCreature(uint32 actorIdx) const
void Talk(uint8 id, WorldObject const *whisperTarget=nullptr)
bool _EnterEvadeMode(EvadeReason why=EvadeReason::Other)
void GetHomePosition(float &x, float &y, float &z, float &ori) const
void SetReactState(ReactStates st)
GuidUnorderedSet const & GetTapList() const
void DespawnOrUnsummon(Milliseconds timeToDespawn=0s, Seconds forceRespawnTime=0s)
void SetDisplayId(uint32 displayId, bool setNative=false) override
void ScheduleEvent(uint32 eventId, Milliseconds time, uint32 group=0, uint8 phase=0)
void MoveJumpWithGravity(Position const &pos, float speedXY, float gravity, uint32 id=EVENT_JUMP, bool hasOrientation=false, JumpArrivalCastArgs const *arrivalCast=nullptr, Movement::SpellEffectExtraData const *spellEffectExtraData=nullptr)
void MoveRotate(uint32 id, RotateDirection direction, Optional< Milliseconds > time={}, Optional< float > turnSpeed={}, Optional< float > totalTurnAngle={})
Makes the Unit turn in place.
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={}, bool generatePath=true)
void MovePoint(uint32 id, Position const &pos, bool generatePath=true, Optional< float > finalOrient={}, Optional< float > speed={}, MovementWalkRunSpeedSelectionMode speedSelectionMode=MovementWalkRunSpeedSelectionMode::Default, Optional< float > closeEnoughDistance={})
static ObjectGuid GetGUID(Object const *o)
static Player * ToPlayer(Object *o)
static bool OnConditionChange(WorldObject *object, bool updateVisibility=true)
void KilledMonsterCredit(uint32 entry, ObjectGuid guid=ObjectGuid::Empty)
void RemoveActiveQuest(uint32 questId, bool update=true)
QuestStatus GetQuestStatus(uint32 quest_id) const
void RemoveRewardedQuest(uint32 questId, bool update=true)
uint32 GetQuestId() const
static bool ValidateSpellInfo(std::initializer_list< uint32 > spellIds)
Unit * GetHitUnit() const
HookList< EffectHandler > OnEffectHitTarget
TaskContext & Schedule(std::chrono::duration< Rep, Period > time, TaskScheduler::task_handler_t task)
TaskContext & Repeat(std::chrono::duration< Rep, Period > duration)
TaskScheduler & Schedule(std::chrono::duration< Rep, Period > time, task_handler_t task)
TaskScheduler & Update(success_t const &callback=nullptr)
WorldObject * GetSummoner() const
Unit * GetSummonerUnit() const
SpellCastResult DoCastSelf(uint32 spellId, CastSpellExtraArgs const &args={})
SpellCastResult DoCastVictim(uint32 spellId, CastSpellExtraArgs const &args={})
Unit * SelectTarget(SelectTargetMethod targetType, uint32 offset=0, float dist=0.0f, bool playerOnly=false, bool withTank=true, int32 aura=0)
SpellCastResult DoCast(uint32 spellId)
void PlayOneShotAnimKitId(uint16 animKitId)
ObjectGuid GetOwnerGUID() const override
void InterruptNonMeleeSpells(bool withDelayed, uint32 spellid=0, bool withInstant=true)
MotionMaster * GetMotionMaster()
void SetFacingToObject(WorldObject const *object, bool force=true)
bool isAttackingPlayer() const
void RemoveNpcFlag(NPCFlags flags)
TempSummon * ToTempSummon()
void SetSheath(SheathState sheathed)
void SetEmoteState(Emote emote)
void SetNpcFlag(NPCFlags flags)
void SetFacingTo(float const ori, bool force=true)
bool HasUnitState(const uint32 f) const
void SendPlaySpellVisualKit(uint32 id, uint32 type, uint32 duration) const
bool HasAura(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint32 reqEffMask=0) const
bool HealthBelowPctDamaged(int32 pct, uint32 damage) const
void KillSelf(bool durabilityLoss=true, bool skipSettingDeathState=false)
void RemoveAurasDueToSpell(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, uint32 reqEffMask=0, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
void SetMountDisplayId(uint32 mountDisplayId)
void SetAIAnimKitId(uint16 animKitId)
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={ })
void MovePositionToFirstCollision(Position &pos, float dist, float angle)
TempSummon * SummonCreature(uint32 entry, Position const &pos, TempSummonType despawnType=TEMPSUMMON_MANUAL_DESPAWN, Milliseconds despawnTime=0s, uint32 vehId=0, uint32 spellId=0, ObjectGuid privateObjectOwner=ObjectGuid::Empty)
bool IsPrivateObject() const
void PlayObjectSound(int32 soundKitId, ObjectGuid targetObject, Player const *target=nullptr, int32 broadcastTextId=0) const
static void StartCloneMovement(ObjectGuid cloneGUID, uint32 pathId, uint32 animKit, Conversation *conversation)
TheInvasionBeginsEventData
@ EVENT_ILLIDARI_FACE_PLAYERS
@ EVENT_ILLIDARI_START_PATH
conversation_the_invasion_begins()
void OnConversationCreate(Conversation *conversation, Unit *creator) override
void OnConversationUpdate(Conversation *conversation, uint32 diff) override
void OnConversationStart(Conversation *conversation) override
static void StartCloneChannel(ObjectGuid guid, Conversation *conversation)
TheInvasionBeginsConversationData
@ CONVO_LINE_TRIGGER_FACING
event_sevis_sacrifice_player()
void OnTrigger(WorldObject *, WorldObject *invoker, uint32) override
void OnTrigger(WorldObject *, WorldObject *invoker, uint32) override
event_sevis_sacrifice_self()
quest_enter_the_illidari_shivarra()
void OnQuestStatusChange(Player *player, Quest const *, QuestStatus, QuestStatus newStatus) override
void OnSceneComplete(Player *player, uint32, SceneTemplate const *) override
scene_demonhunter_intro()
void OnSceneStart(Player *player, uint32, SceneTemplate const *) override
scene_enter_the_illidari_ashtongue()
void OnSceneTriggerEvent(Player *player, uint32, SceneTemplate const *, std::string const &triggerName) override
void OnSceneStart(Player *player, uint32, SceneTemplate const *) override
scene_enter_the_illidari_coilskar()
void OnSceneStart(Player *player, uint32, SceneTemplate const *) override
void HandleHitTarget(SpellEffIndex)
void AfterRemove(AuraEffect const *, AuraEffectHandleModes)
void HandleHitTarget(SpellEffIndex)
void HandleHitTarget(SpellEffIndex)
void SummonBeamingEye(Unit *origin, float angle)
bool Validate(SpellInfo const *) override
void HandleRemove(AuraEffect const *, AuraEffectHandleModes)
bool Validate(SpellInfo const *) override
void HandleHitTarget(SpellEffIndex)
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)
auto SelectRandomContainerElement(C const &container) -> typename std::add_const< decltype(*std::begin(container))>::type &
static void VisitAllObjects(WorldObject const *obj, T &visitor, float radius, bool dont_load=true)
constexpr void GetPosition(float &x, float &y) const
void AttackStart(Unit *) override
== Triggered Actions Requested ==================
void OnUnitEnter(Unit *unit) override
at_enter_the_illidari_ashtongue_allari_killcredit(AreaTrigger *areatrigger)
at_enter_the_illidari_shivarra_conversation(AreaTrigger *areatrigger)
void OnUnitEnter(Unit *unit) override
npc_allari_the_souleater_invasion_begins(Creature *creature)
void MovementInform(uint32 type, uint32 pointId) override
void WaypointPathEnded(uint32, uint32 pathId) override
npc_baleful_beaming_eye(Creature *creature)
void JustAppeared() override
void UpdateAI(uint32 diff) override
npc_belath_dawnblade_freed_private(Creature *creature)
void JustAppeared() override
npc_cyana_nightglaive_freed_private(Creature *creature)
void JustAppeared() override
void UpdateAI(uint32 diff) override
void WaypointPathEnded(uint32, uint32 pathId) override
void MovementInform(uint32 type, uint32 pointId) override
npc_cyana_nightglaive_invasion_begins(Creature *creature)
@ SPELL_ILLIDARI_FEL_RUSH
@ SPELL_ILLIDARI_CHAOS_STRIKE
void EnterEvadeMode(EvadeReason why) override
TaskScheduler _oocScheduler
npc_illidari_fighting_invasion_begins(Creature *creature)
void ScheduleTargetSelection()
void JustEngagedWith(Unit *) override
void UpdateAI(uint32 diff) override
void JustAppeared() override
ObjectGuid _balefulColossGUID
void JustEngagedWith(Unit *) override
void JustAppeared() override
void MovementInform(uint32 type, uint32 pointId) override
void DoAction(int32 action) override
npc_inquisitor_baleful_molten_shore(Creature *creature)
void UpdateAI(uint32 diff) override
void DamageTaken(Unit *, uint32 &damage, DamageEffectType, SpellInfo const *) override
void JustDied(Unit *) override
npc_izal_whitemoon_freed_private(Creature *creature)
void UpdateAI(uint32 diff) override
void JustAppeared() override
void MovementInform(uint32 type, uint32 pointId) override
npc_jayce_darkweaver_invasion_begins(Creature *creature)
void WaypointPathEnded(uint32, uint32 pathId) override
void JustAppeared() override
void UpdateAI(uint32 diff) override
npc_kayn_sunfury_ashtongue_intro_private(Creature *creature)
void OnQuestAccept(Player *player, Quest const *quest) override
npc_kayn_sunfury_ashtongue_intro(Creature *creature)
void UpdateAI(uint32 diff) override
void OnQuestAccept(Player *player, Quest const *quest) override
void MovementInform(uint32 type, uint32 pointId) override
void WaypointPathEnded(uint32, uint32 pathId) override
npc_kayn_sunfury_invasion_begins(Creature *creature)
npc_korvas_bloodthorn_invasion_begins(Creature *creature)
void MovementInform(uint32 type, uint32 pointId) override
void WaypointPathEnded(uint32, uint32 pathId) override
void UpdateAI(uint32 diff) override
void JustAppeared() override
npc_mannethrel_darkstar_freed_private(Creature *creature)
void JustAppeared() override
void UpdateAI(uint32 diff) override
npc_sevis_brightflame_ashtongue_gateway_private(Creature *creature)
void UpdateAI(uint32 diff) override
void JustAppeared() override
npc_sevis_brightflame_coilskar_gateway_private(Creature *creature)
void MovementInform(uint32 type, uint32 pointId) override
void WaypointPathEnded(uint32, uint32 pathId) override
npc_sevis_brightflame_invasion_begins(Creature *creature)
bool OnGossipSelect(Player *player, uint32 menuId, uint32 gossipListId) override
uint8 _soulMissileCounter
void DoAction(int32 param) override
npc_sevis_brightflame_shivarra_gateway(Creature *creature)
void UpdateAI(uint32 diff) override
@ SPELL_START_DEMON_HUNTER_PLAY_SCENE
Position const SevisBrightflameShivarraGatewayPosition
Position const WrathWarriorSpawnPosition
Position const AllariJumpPos
Position const KaynJumpPos
@ PATH_SEVIS_BRIGHTFLAME_GATEWAY
@ SAY_SEVIS_SAY_FIND_ALLARI
@ NPC_ALLARI_SOULEATER_ASHTONGUE
@ SAY_KAYN_ACTIVATE_GATEWAY
@ NPC_KAYN_SUNFURY_ASHTONGUE
@ SAY_KORVAS_SLAY_MORE_DEMONS
@ SPELL_VISUAL_KIT_SEVIS_MOUNT
@ SPELL_ASHTONGUE_FELLSABER_KILL_CREDIT
@ QUEST_ENTER_THE_ILLIDARI_ASHTONGUE
@ SPELL_CAST_MOUNT_DH_FELSABER
@ NPC_SEVIS_BRIGHTFLAME_ASHTONGUE
@ NPC_KORVAS_BLOODTHORN_ASHTONGUE
@ PATH_KAYN_SUNFURY_NEAR_TELEPORT
@ PATH_KORVAS_BLOODTHORN_NEAR_TELEPORT
@ PATH_SEVIS_BRIGHTFLAME_COILSKAR
@ SAY_SEVIS_SAY_MEET_AT_LAST_GATEWAY
@ NPC_SEVIS_BRIGHTFLAME_COILSKAR
@ QUEST_DEMON_HUNTER_INTRO_TRACKER
Position const KaynDoubleJumpPosition
Position const JayceJumpPos
CreatureAI * BelathDawnbladeFreedAISelector(Creature *creature)
TheInvasionBeginsAnimKitsData
CreatureAI * SevisBrightflameAshtongueGatewayAISelector(Creature *creature)
@ SOUND_SPELL_DOUBLE_JUMP
@ SOUND_METAL_WEAPON_UNSHEATH
TheInvasionBeginsVisualData
@ SPELL_VISUAL_KIT_WRATH_WARRIOR_DIE
@ SPELL_VISUAL_KIT_KAYN_WINGS
@ SPELL_VISUAL_KIT_KAYN_DOUBLE_JUMP
@ SPELL_VISUAL_KIT_KORVAS_JUMP
@ SPELL_VISUAL_KIT_KAYN_GLIDE
CreatureAI * SevisBrightflameCoilskarGatewayAISelector(Creature *creature)
TheInvasionBeginsQuestData
@ SPELL_DEMON_HUNTER_GLIDE_STATE
@ NPC_KAYN_SUNFURY_INVASION_BEGINS
@ NPC_JAYCE_DARKWEAVER_INVASION_BEGINS
@ NPC_SEVIS_BRIGHTFLAME_INVASION_BEGINS
@ NPC_ALLARI_THE_SOULEATER_INVASION_BEGINS
@ NPC_CYANA_NIGHTGLAIVE_INVASION_BEGINS
@ QUEST_THE_INVASION_BEGINS
@ CONVO_THE_INVASION_BEGINS
@ NPC_KORVAS_BLOODTHORN_INVASION_BEGINS
@ NPC_WRATH_WARRIOR_INVASION_BEGINS
@ SPELL_THE_INVASION_BEGINS
@ SPELL_TRACK_TARGET_IN_CHANNEL
@ SPELL_BALEFUL_COLOSS_INFERNAL_SMASH
@ SPELL_BALEFUL_COLOSS_INFERNAL_SMASH_CAST
@ SPELL_BALEFUL_BEAMING_GAZE
@ ACTION_BALEFUL_AEGIS_DOWN
@ EVENT_BALEFUL_INCITE_MADNESS
@ SPELL_BALEFUL_TAKING_POWER
@ SPELL_BALEFUL_BEAMING_EYE_CREATE_AT
@ NPC_COLOSSAL_INFERNAL_BALEFUL
@ SPELL_BALEFUL_MIND_SPIKE
@ SPELL_BALEFUL_INCITE_MADNESS
@ SPELL_BALEFUL_LEGION_AEGIS
@ SPELL_BALEFUL_BEAMING_EYE_SUMMON
@ EVENT_BALEFUL_MIND_SPIKE
@ EVENT_BALEFUL_COLOSS_INFERNAL_SMASH
@ SPELL_BALEFUL_KILL_CREDIT
@ POINT_BALEFUL_AEGIS_DOWN
@ EVENT_BALEFUL_BEAMING_GAZE
@ SPELL_BALEFUL_DIE_KNOCKBACK
Position const SevisJumpPos
TheInvasionsBeginsWaypointData
@ POINT_KAYN_TRIGGER_DOUBLE_JUMP
@ POINT_KAYN_MOVE_TO_DEMON
@ PATH_KORVAS_INVASION_BEGINS
@ PATH_JAYCE_INVASION_BEGINS
@ PATH_CYANA_INVASION_BEGINS
@ POINT_ILLIDARI_LAND_POS
@ PATH_SEVIS_JUMP_INVASION_BEGINS
@ PATH_CYANA_JUMP_INVASION_BEGINS
@ PATH_JAYCE_JUMP_INVASION_BEGINS
@ PATH_ALLARI_JUMP_INVASION_BEGINS
@ PATH_ALLARI_INVASION_BEGINS
@ PATH_SEVIS_INVASION_BEGINS
@ PATH_KORVAS_JUMP_INVASION_BEGINS
CreatureAI * CyanaNightglaiveFreedAISelector(Creature *creature)
CreatureAI * KaynSunfuryNearLegionBannerAISelector(Creature *creature)
Position const KorvasJumpPos
CreatureAI * IzalWhitemoonFreedAISelector(Creature *creature)
@ CONVO_DEMONHUNTER_INTRO_START
Position const BalefulAegisPos
CreatureAI * MannethrelDarkstarFreedAISelector(Creature *creature)
Position const CyanaJumpPos
@ PATH_BELATH_DAWNBLADE_FREED
@ NPC_BELATH_DAWNBLADE_FREED
@ SAY_BELATH_DAWNBLADE_FREED
@ SAY_MANNETHRE_DARKSTAR_FREED
@ PATH_MANNETHREL_DARKSTAR_FREED
@ PATH_CYANA_NIGHTGLAIVE_FREED
@ SAY_IZAL_WHITEMOON_FREED
@ SAY_CYANA_NIGHTGLAIVE_FREED
@ PATH_IZAL_WHITEMOON_FREED
@ NPC_CYANA_NIGHTGLAIVE_FREED
@ NPC_MANNETHREL_DARKSTAR_FREED
@ NPC_IZAL_WHITEMOON_FREED
@ SPELL_SEVIS_CHAOS_STRIKE
@ SPELL_TRIGGER_SHIVARRA_CONV_WHEN_DEAD
@ GOSSIP_OPTION_SACRIFICE_SEVIS
@ NPC_SEVIS_BRIGHTFLAME_SHIVARRA
@ GOSSIP_OPTION_SACRIFICE_PLAYER
@ SPELL_SEVIS_SOUL_MISSILE_02
@ SAY_SEVIS_GET_SACRIFICED
@ ANIM_KIT_ONESHOT_GET_HIT
@ PATH_SEVIS_GATEWAY_SHIVARRA
@ SPELL_VISUAL_SACRIFICE_PLAYER
@ QUEST_SEVIS_SACRIFICE_TRACKER
@ SPELL_SEVIS_KILLED_ME_AURA
@ POINT_SEVIS_GATEWAY_SHIVARRA
@ GOSSIP_MENU_SACRIFICE_PLAYER
@ GOSSIP_MENU_SACRIFICE_SEVIS
@ ACTION_SACRIFICE_PLAYER
@ SPELL_SEVIS_SACRIFICE_ME
@ SAY_SEVIS_PLAYER_SACRIFICE