229 {2281.335f, -5300.409f, 85.170f, 0},
230 {2283.896f, -5287.914f, 83.066f, 1.55f},
231 {2281.461f, -5263.014f, 81.164f, 0},
232 {2262.277f, -5293.477f, 82.167f, 0},
233 {2270.286f, -5287.73f, 82.262f, 0},
234 {2269.511f, -5288.289f, 82.225f, 0},
235 {2262.277f, -5293.477f, 82.167f, 0},
236 {2270.286f, -5287.73f, 82.262f, 0},
237 {2269.511f, -5288.289f, 82.225f, 0},
238 {2273.205f, -5288.848f, 82.617f, 0},
239 {2274.739f, -5287.926f, 82.684f, 0},
240 {2253.673f, -5318.004f, 81.724f, 0},
241 {2287.028f, -5309.644f, 87.253f, 0},
242 {2286.978f, -5308.025f, 86.83f, 0},
243 {2248.877f, -5307.586f, 82.166f, 0},
244 {2278.58f, -5316.933f, 88.319f, 0},
245 {2278.535f, -5315.479f, 88.08f, 0},
246 {2259.416f, -5304.505f, 82.149f, 0},
247 {2289.259f, -5280.355f, 82.112f, 0},
248 {2289.02f, -5281.985f, 82.207f, 0},
249 {2273.289f, -5273.675f, 81.701f, 0},
250 {2273.332f, -5275.544f, 81.849f, 0},
251 {2281.198f, -5257.397f, 80.224f, 4.66f},
252 {2281.156f, -5259.934f, 80.647f, 0},
253 {2281.294f, -5281.895f, 82.445f, 1.35f},
254 {2281.093f, -5263.013f, 81.125f, 0},
255 {2281.313f, -5250.282f, 79.322f, 4.69f},
256 {2281.523f, -5261.058f, 80.877f, 0},
257 {2272.709f, -5255.552f, 78.226f, 0},
258 {2273.972f, -5257.676f, 78.862f, 0},
694 temp->SetWalk(
false);
695 temp->GetMotionMaster()->MovePoint(0,
LightofDawnLoc[0].GetPositionWithOffset({ float(
rand32() % 30), float(
rand32() % 30), 0.0f, 0.0f }));
699 temp->SetWalk(
false);
700 temp->GetMotionMaster()->MovePoint(0,
LightofDawnLoc[0].GetPositionWithOffset({ float(
rand32() % 30), float(
rand32() % 30), 0.0f, 0.0f }));
704 temp->SetWalk(
false);
705 temp->GetMotionMaster()->MovePoint(0,
LightofDawnLoc[0].GetPositionWithOffset({ float(
rand32() % 30), float(
rand32() % 30), 0.0f, 0.0f }));
709 temp->GetMotionMaster()->MovePoint(0,
LightofDawnLoc[0].GetPositionWithOffset({ float(
rand32() % 30), float(
rand32() % 30), 0.0f, 0.0f }));
712 temp->GetMotionMaster()->MovePoint(0,
LightofDawnLoc[0].GetPositionWithOffset({ float(
rand32() % 30), float(
rand32() % 30), 0.0f, 0.0f }));
715 temp->GetMotionMaster()->MovePoint(0,
LightofDawnLoc[0].GetPositionWithOffset({ float(
rand32() % 30), float(
rand32() % 30), 0.0f, 0.0f }));
718 temp->GetMotionMaster()->MovePoint(0,
LightofDawnLoc[0].GetPositionWithOffset({ float(
rand32() % 30), float(
rand32() % 30), 0.0f, 0.0f }));
750 temp->SetUninteractible(
true);
761 temp->SetUninteractible(
false);
779 temp->SetWalk(
false);
867 temp->SetVisible(
false);
871 temp->InterruptNonMeleeSpells(
false);
953 float fLichPositionX = 0,
958 fLichPositionX = temp->GetPositionX();
959 fLichPositionY = temp->GetPositionY();
960 fLichPositionZ = temp->GetPositionZ();
963 if (fLichPositionX && fLichPositionY)
984 temp->SetWalk(
false);
986 temp->GetMotionMaster()->MovePoint(0, fLichPositionX, fLichPositionY, fLichPositionZ);
992 temp->SetWalk(
false);
995 temp->GetMotionMaster()->MovePoint(0, fLichPositionX, fLichPositionY, fLichPositionZ);
1000 temp->SetWalk(
false);
1001 temp->SetSpeedRate(
MOVE_RUN, 2.0f);
1002 temp->GetMotionMaster()->MovePoint(0, fLichPositionX, fLichPositionY, fLichPositionZ);
1015 temp->SetSpeedRate(
MOVE_RUN, 6.0f);
1022 temp->SetSpeedRate(
MOVE_RUN, 6.0f);
1029 temp->SetSpeedRate(
MOVE_RUN, 6.0f);
1035 temp->SetSpeedRate(
MOVE_RUN, 6.0f);
1037 temp->GetMotionMaster()->MovePoint(0,
LightofDawnLoc[0].GetPositionWithOffset({ float(
rand32() % 10), float(
rand32() % 10), 0.0f, 0.0f }));
1041 temp->SetSpeedRate(
MOVE_RUN, 6.0f);
1043 temp->GetMotionMaster()->MovePoint(0,
LightofDawnLoc[0].GetPositionWithOffset({ float(
rand32() % 10), float(
rand32() % 10), 0.0f, 0.0f }));
1096 temp->InterruptNonMeleeSpells(
false);
1124 temp->SetSpeedRate(
MOVE_RUN, 3.0f);
1125 temp->SetWalk(
false);
1142 temp->SetSpeedRate(
MOVE_RUN, 1.0f);
1179 temp->SetSpeedRate(
MOVE_RUN, 1.0f);
1203 temp->SetWalk(
true);
1285 temp->DespawnOrUnsummon();
1287 temp->DespawnOrUnsummon();
1289 temp->DespawnOrUnsummon();
1291 temp->DespawnOrUnsummon();
1404 temp->AI()->EnterEvadeMode();
1405 temp->RemoveAllAuras();
1406 temp->CombatStop(
true);
1409 temp->SetWalk(
false);
1415 temp->RemoveAllAuras();
1416 temp->CombatStop(
true);
1419 temp->SetWalk(
false);
1425 temp->AI()->EnterEvadeMode();
1426 temp->RemoveAllAuras();
1427 temp->CombatStop(
true);
1430 temp->SetWalk(
false);
1437 temp->AI()->EnterEvadeMode();
1438 temp->RemoveAllAuras();
1439 temp->CombatStop(
true);
1442 temp->SetWalk(
false);
1452 temp->AI()->EnterEvadeMode();
1453 temp->RemoveAllAuras();
1454 temp->CombatStop(
true);
1457 temp->SetWalk(
false);
1480 if (temp->IsAlive())
1482 if (pTarget->IsAlive())
1485 temp->AI()->AttackStart(pTarget);
1491 Unit* temp =
nullptr;
1595 if (temp->IsAlive())
1597 temp->SetVisible(
false);
@ TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN
@ QUEST_STATUS_INCOMPLETE
uint32 urand(uint32 min, uint32 max)
Creature * GetClosestCreatureWithEntry(WorldObject *source, uint32 entry, float maxSearchRange, bool alive=true)
void AddGossipItemFor(Player *player, GossipOptionNpc optionNpc, std::string text, uint32 sender, uint32 action)
void SendGossipMenuFor(Player *player, uint32 npcTextID, ObjectGuid const &guid)
void ClearGossipMenuFor(Player *player)
void CloseGossipMenuFor(Player *player)
@ EMOTE_ONESHOT_SPECIALATTACK1H
@ EMOTE_STATE_ATTACK_UNARMED
@ FACTION_SCARLET_CRUSADE
@ FACTION_UNDEAD_SCOURGE_3
Position const LightofDawnLoc[]
@ SPELL_SCOURGE_AGGRO_AURA
@ WORLD_STATE_SHOW_FORCES_REMAINING
@ WORLD_STATE_BATTLE_IN_PROGRESS
@ SPELL_THE_LIGHT_OF_DAWN
@ SPELL_THE_MIGHT_OF_MOGRAINE
@ WORLD_STATE_FORCES_OF_THE_LIGHT_REMAINING
@ WORLD_STATE_FORCES_OF_THE_SCOURGE_REMAINING
@ NPC_RAMPAGING_ABOMINATION
@ NPC_HIGHLORD_TIRION_FORDRING
@ NPC_DEFENDER_OF_THE_LIGHT
@ SPELL_SOUL_FEAST_TIRION
@ ENCOUNTER_ABOMINATION_NUMBER
@ EQUIP_HIGHLORD_TIRION_FORDRING
@ ENCOUNTER_TOTAL_SCOURGE
@ NPC_WARRIOR_OF_THE_FROZEN_WASTES
@ NPC_COMMANDER_ELIGOR_DAWNBRINGER
@ NPC_LEONID_BARTHALOMEW_THE_REVERED
@ WORLD_STATE_MINUTES_UNTIL_BATTLE
@ NPC_HIGHLORD_DARION_MOGRAINE
@ NPC_KORFAX_CHAMPION_OF_THE_LIGHT
@ SPELL_TIRION_CHARGE_VISUAL
@ NPC_DUKE_NICHOLAS_ZVERENHOFF
@ ENCOUNTER_BEHEMOTH_NUMBER
@ ENCOUNTER_EARTHSHATTER_NUMBER
@ ENCOUNTER_WARRIOR_NUMBER
@ NPC_LORD_MAXWELL_TYROSUS
@ WORLD_STATE_SHOW_MINUTES_UNTIL_BATTLE
@ ENCOUNTER_DEFENDER_NUMBER
@ SPELL_REBIRTH_OF_THE_ASHBRINGER
@ SPELL_THE_LIGHT_OF_DAWN_Q
@ NPC_RIMBLAT_EARTHSHATTER
@ SPELL_ALEXANDROS_MOGRAINE_SPAWN
@ NPC_HIGHLORD_ALEXANDROS_MOGRAINE
@ NPC_KOLTIRA_DEATHWEAVER
static constexpr uint32 PATH_ESCORT_MOGRAINE
void AddSC_the_scarlet_enclave_c5()
void Talk(uint8 id, WorldObject const *whisperTarget=nullptr)
void DespawnOrUnsummon(Milliseconds timeToDespawn=0s, Seconds forceRespawnTime=0s)
PlayerList const & GetPlayers() const
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)
void PrepareQuestMenu(ObjectGuid guid)
QuestStatus GetQuestStatus(uint32 quest_id) const
uint32 GetGossipTextId(uint32 menuId, WorldObject *source)
std::unique_ptr< PlayerMenu > PlayerTalkClass
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 CombatStop(bool includingCast=false, bool mutualPvP=true, bool(*unitFilter)(Unit const *otherUnit)=nullptr)
void SetVirtualItem(uint32 slot, uint32 itemId, uint16 appearanceModId=0, uint16 itemVisual=0)
void SetStandState(UnitStandStateType state, uint32 animKitID=0)
void SetInCombatWith(Unit *enemy, bool addSecondUnitSuppressed=false)
void SetFaction(uint32 faction) override
void InterruptNonMeleeSpells(bool withDelayed, uint32 spellid=0, bool withInstant=true)
MotionMaster * GetMotionMaster()
void RemoveNpcFlag(NPCFlags flags)
bool IsQuestGiver() const
void Mount(uint32 mount, uint32 vehicleId=0, uint32 creatureEntry=0)
void SetEmoteState(Emote emote)
bool Attack(Unit *victim, bool meleeAttack)
uint32 GetFaction() const override
bool SetWalk(bool enable)
void SetSpeedRate(UnitMoveType mtype, float rate)
bool HasAura(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint32 reqEffMask=0) const
void HandleEmoteCommand(Emote emoteId, Player *target=nullptr, Trinity::IteratorPair< int32 const * > spellVisualKitIds={}, int32 sequenceVariation=0)
void RemoveAurasDueToSpell(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, uint32 reqEffMask=0, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
SpellCastResult CastSpell(CastSpellTargetArg const &targets, uint32 spellId, CastSpellExtraArgs const &args={ })
bool IsValidAttackTarget(WorldObject const *target, SpellInfo const *bySpell=nullptr) const
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)
GameObject * SummonGameObject(uint32 entry, Position const &pos, QuaternionData const &rot, Seconds respawnTime, GOSummonType summonType=GO_SUMMON_TIMED_OR_CORPSE_DESPAWN)
bool IsWithinLOSInMap(WorldObject const *obj, LineOfSightChecks checks=LINEOFSIGHT_ALL_CHECKS, VMAP::ModelIgnoreFlags ignoreFlags=VMAP::ModelIgnoreFlags::Nothing) const
bool IsWithinDistInMap(WorldObject const *obj, float dist2compare, bool is3D=true, bool incOwnRadius=true, bool incTargetRadius=true) const
CreatureAI * GetAI(Creature *creature) const override
npc_highlord_darion_mograine()
CreatureAI * GetAI(Creature *creature) const override
npc_the_lich_king_tirion_dawn()
TC_GAME_API Creature * GetCreature(WorldObject const &u, ObjectGuid const &guid)
void Start(bool isActiveAttacker=true, ObjectGuid playerGUID=ObjectGuid::Empty, Quest const *quest=nullptr, bool instantRespawn=false, bool canLoopPath=false)
void EnterEvadeMode(EvadeReason why) override
bool HasEscortState(uint32 escortState)
void LoadPath(uint32 pathId)
void SetEscortPaused(bool on)
void UpdateAI(uint32 diff) override
constexpr float GetPositionX() const
constexpr float GetPositionY() const
Position GetPositionWithOffset(Position const &offset) const
constexpr float GetPositionZ() const
void AddThreat(Unit *victim, float amount, Unit *who=nullptr)
void DoStartMovement(Unit *target, float distance=0.0f, float angle=0.0f)
npc_highlord_darion_mograineAI(Creature *creature)
void UpdateAI(uint32 diff) override
bool OnGossipHello(Player *player) override
void NPCChangeTarget(ObjectGuid ui_GUID)
ObjectGuid uiThassarianGUID
ObjectGuid uiLichKingGUID
ObjectGuid uiGhoulGUID[ENCOUNTER_GHOUL_NUMBER]
ObjectGuid uiAbominationGUID[ENCOUNTER_ABOMINATION_NUMBER]
ObjectGuid uiBehemothGUID[ENCOUNTER_BEHEMOTH_NUMBER]
ObjectGuid uiWarriorGUID[ENCOUNTER_WARRIOR_NUMBER]
bool OnGossipSelect(Player *player, uint32, uint32 gossipListId) override
void AttackStart(Unit *who) override
== Triggered Actions Requested ==================
ObjectGuid uiAlexandrosGUID
void MoveInLineOfSight(Unit *who) override
void SetHoldState(bool bOnHold)
void DespawnNPC(ObjectGuid pGUID)
void EnterEvadeMode(EvadeReason why) override
void WaypointReached(uint32 waypointId, uint32) override
void JumpToNextStep(uint32 uiTimer)
ObjectGuid uiDefenderGUID[ENCOUNTER_DEFENDER_NUMBER]
ObjectGuid uiEarthshatterGUID[ENCOUNTER_EARTHSHATTER_NUMBER]
npc_the_lich_king_tirion_dawnAI(Creature *creature)
void AttackStart(Unit *) override
== Triggered Actions Requested ==================
void UpdateAI(uint32) override
void JustDied(Unit *) override