191 {-8085.0f, 1528.0f, 2.61f, 3.141592f},
192 {-8080.0f, 1526.0f, 2.61f, 3.141592f},
193 {-8085.0f, 1524.0f, 2.61f, 3.141592f},
194 {-8080.0f, 1522.0f, 2.61f, 3.141592f},
195 {-8085.0f, 1520.0f, 2.61f, 3.141592f},
197 {-8085.0f, 1524.0f, 2.61f, 3.141592f},
198 {-8080.0f, 1522.0f, 2.61f, 3.141592f},
199 {-8085.0f, 1520.0f, 2.61f, 3.141592f},
200 {-8080.0f, 1518.0f, 2.61f, 3.141592f},
201 {-8085.0f, 1516.0f, 2.61f, 3.141592f},
203 {-8085.0f, 1518.0f, 2.61f, 3.141592f},
204 {-8080.0f, 1516.0f, 2.61f, 3.141592f},
205 {-8080.0f, 1520.0f, 2.61f, 3.141592f},
206 {-8080.0f, 1424.0f, 2.61f, 3.141592f},
207 {-8085.0f, 1422.0f, 2.61f, 3.141592f},
209 {-8082.0f, 1528.0f, 2.61f, 3.141592f},
210 {-8078.0f, 1525.0f, 2.61f, 3.141592f},
211 {-8082.0f, 1524.0f, 2.61f, 3.141592f},
212 {-8078.0f, 1526.0f, 2.61f, 3.141592f},
213 {-8082.0f, 1527.0f, 2.61f, 3.141592f},
215 {-8082.0f, 1524.0f, 2.61f, 3.141592f},
216 {-8078.0f, 1522.0f, 2.61f, 3.141592f},
217 {-8082.0f, 1520.0f, 2.61f, 3.141592f},
218 {-8078.0f, 1518.0f, 2.61f, 3.141592f},
219 {-8082.0f, 1516.0f, 2.61f, 3.141592f},
221 {-8082.0f, 1523.0f, 2.61f, 3.141592f},
222 {-8078.0f, 1521.0f, 2.61f, 3.141592f},
223 {-8082.0f, 1528.0f, 2.61f, 3.141592f},
224 {-8078.0f, 1519.0f, 2.61f, 3.141592f},
225 {-8082.0f, 1526.0f, 2.61f, 3.141592f},
227 {-8082.0f, 1524.0f, 2.61f, 3.141592f},
228 {-8078.0f, 1522.0f, 2.61f, 3.141592f},
229 {-8082.0f, 1520.0f, 2.61f, 3.141592f},
230 {-8078.0f, 1518.0f, 2.61f, 3.141592f},
231 {-8082.0f, 1516.0f, 2.61f, 3.141592f},
233 {-8088.0f, 1510.0f, 2.61f, 0.0f},
234 {-8084.0f, 1520.0f, 2.61f, 0.0f},
235 {-8088.0f, 1530.0f, 2.61f, 0.0f},
237 {-8080.0f, 1513.0f, 2.61f, 0.0f},
238 {-8082.0f, 1523.0f, 2.61f, 0.0f},
239 {-8085.0f, 1518.0f, 2.61f, 0.0f},
240 {-8082.0f, 1516.0f, 2.61f, 0.0f},
241 {-8085.0f, 1520.0f, 2.61f, 0.0f},
242 {-8080.0f, 1528.0f, 2.61f, 0.0f},
244 {-8082.0f, 1513.0f, 2.61f, 0.0f},
245 {-8079.0f, 1523.0f, 2.61f, 0.0f},
246 {-8080.0f, 1531.0f, 2.61f, 0.0f},
247 {-8079.0f, 1516.0f, 2.61f, 0.0f},
248 {-8082.0f, 1520.0f, 2.61f, 0.0f},
249 {-8080.0f, 1518.0f, 2.61f, 0.0f},
251 {-8081.0f, 1514.0f, 2.61f, 0.0f},
252 {-8081.0f, 1520.0f, 2.61f, 0.0f},
253 {-8081.0f, 1526.0f, 2.61f, 0.0f},
254 {-8081.0f, 1512.0f, 2.61f, 0.0f},
255 {-8082.0f, 1520.0f, 2.61f, 0.0f},
256 {-8081.0f, 1528.0f, 2.61f, 0.0f},
258 {-8082.0f, 1513.0f, 2.61f, 3.141592f},
259 {-8082.0f, 1520.0f, 2.61f, 3.141592f},
260 {-8082.0f, 1527.0f, 2.61f, 3.141592f},
276 {30, 0, 15423, 0, 0, 24s, 0},
277 { 3, 35, 15424, 0, 0, 24s, 0},
278 {12, 38, 15414, 0, 0, 24s, 0},
279 { 6, 50, 15422, 0, 0, 24s, 0},
280 {15, 15, 15423, 0, 0, 24s, 0}
291 {100000, 2000, 33652},
292 {38500, 300000, 28528},
293 {58000, 300000, 35871},
294 {80950, 300000, 42075},
380 if (!Fandral || !Arygos || !Caelestrasz || !Merithra)
566 for (
uint8 i = 0; i < 4; ++i)
627 AnachronosQuestTrigger->AI()->EnterEvadeMode();
751 Unit* target =
nullptr;
841 for (
uint8 i = locIndex; i <= count; ++i)
848 spawn->SetDisplayId(15427 +
rand32() % 4);
877 Player* groupMember =
nullptr;
879 uint8 GroupMemberCount = 0;
881 uint8 FailedMemberCount = 0;
947 triggerAI->LiveCounter();
1011 anachronosAI->PlayerGUID = player->
GetGUID();
1015 triggerAI->Failed =
false;
1016 triggerAI->PlayerGUID = player->
GetGUID();
1017 triggerAI->EventStarted =
true;
1018 triggerAI->Announced =
true;
1141 bool isSummoning =
false;
1149 if (setAura && medallionAura && ringAura)
1151 else if (setAura && medallionAura)
1213 me->DespawnOrUnsummon(1100ms);
1224 uint8 rank = GetPlayerTwilightSetRank(player);
1226 uint32 gossipId = me->GetGOInfo()->GetGossipMenuId();
1263 uint8 item = GetSummonItems(player,
DUKE);
1316 uint8 rank = GetPlayerTwilightSetRank(player);
1423 isSummoning =
false;
1453 return ValidateSpellEffect({ { spellInfo->
Id,
EFFECT_0 } }) && ValidateSpellInfo({ spellInfo->
GetEffect(
EFFECT_0).TriggerSpell });
1458 PreventDefaultAction();
First const & RAND(First const &first, Second const &second, Rest const &... rest)
std::chrono::milliseconds Milliseconds
Milliseconds shorthand typedef.
@ TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT
@ TEMPSUMMON_TIMED_OR_DEAD_DESPAWN
@ QUEST_STATUS_INCOMPLETE
uint32 urand(uint32 min, uint32 max)
#define RegisterSpellScript(spell_script)
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 InitGossipMenuFor(Player *player, uint32 menuId)
@ SPELL_AURA_PERIODIC_TRIGGER_SPELL
@ TRIGGERED_FULL_MASK
Used when doing CastSpell with triggered == true.
@ TRIGGERED_IGNORE_POWER_AND_REAGENT_COST
Will ignore power and reagent cost.
#define AuraEffectPeriodicFn(F, I, N)
@ UNIT_FLAG_NON_ATTACKABLE
SpellEffectInfo const & GetSpellEffectInfo() const
virtual void EnterEvadeMode(EvadeReason why=EvadeReason::Other)
void Talk(uint8 id, WorldObject const *whisperTarget=nullptr)
void DespawnOrUnsummon(Milliseconds timeToDespawn=0s, Seconds forceRespawnTime=0s)
void SetTarget(ObjectGuid const &guid) override
void SetDisplayId(uint32 displayId, bool setNative=false) override
std::list< MemberSlot > MemberSlotList
MemberSlotList::const_iterator member_citerator
void MoveCharge(float x, float y, float z, float speed=SPEED_CHARGE, uint32 id=EVENT_CHARGE, bool generatePath=false, Unit const *target=nullptr, Movement::SpellEffectExtraData const *spellEffectExtraData=nullptr)
static ObjectGuid const Empty
static ObjectGuid GetGUID(Object const *o)
bool HasItemCount(uint32 item, uint32 count=1, bool inBankAlso=false) const
void GroupEventHappens(uint32 questId, WorldObject const *pEventObject)
QuestStatus GetQuestStatus(uint32 quest_id) const
void FailQuest(uint32 quest_id)
Group * GetGroup(Optional< uint8 > partyIndex)
uint32 GetGossipTextId(uint32 menuId, WorldObject *source)
std::unique_ptr< PlayerMenu > PlayerTalkClass
uint32 GetQuestId() const
SpellEffectInfo const & GetEffect(SpellEffIndex index) const
SpellCastResult DoCast(uint32 spellId)
void CastStop(uint32 except_spellid=0)
void CombatStop(bool includingCast=false, bool mutualPvP=true, bool(*unitFilter)(Unit const *otherUnit)=nullptr)
void SetStandState(UnitStandStateType state, uint32 animKitID=0)
void SetFaction(uint32 faction) override
MotionMaster * GetMotionMaster()
bool SetDisableGravity(bool disable, bool updateAnimTier=true)
void RemoveAllAttackers()
void RemoveFromWorld() override
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 SetUnitFlag(UnitFlags flags)
void ReplaceAllNpcFlags(NPCFlags flags)
virtual void SetDisplayId(uint32 displayId, bool setNative=false)
SpellCastResult CastSpell(CastSpellTargetArg const &targets, uint32 spellId, CastSpellExtraArgs const &args={ })
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)
Creature * FindNearestCreature(uint32 entry, float range, bool alive=true) const
bool IsWithinDistInMap(WorldObject const *obj, float dist2compare, bool is3D=true, bool incOwnRadius=true, bool incTargetRadius=true) const
bool IsInRange(WorldObject const *obj, float minRange, float maxRange, bool is3D=true) const
GameObjectAI * GetAI(GameObject *go) const override
GameObjectAI * GetAI(GameObject *go) const override
CreatureAI * GetAI(Creature *creature) const override
npc_anachronos_quest_trigger()
CreatureAI * GetAI(Creature *creature) const override
npc_anachronos_the_ancient()
CreatureAI * GetAI(Creature *creature) const override
bool Validate(SpellInfo const *spellInfo) override
void PeriodicTick(AuraEffect const *aurEff)
TC_GAME_API Player * GetPlayer(Map const *, ObjectGuid const &guid)
TC_GAME_API Creature * GetCreature(WorldObject const &u, ObjectGuid const &guid)
constexpr float GetPositionX() const
constexpr float GetPositionY() const
constexpr float GetOrientation() const
constexpr float GetPositionZ() const
void AttackStart(Unit *) override
== Triggered Actions Requested ==================
void OnQuestAccept(Player *player, Quest const *quest) override
go_crystalline_tearAI(GameObject *go)
uint8 GetPlayerTwilightSetRank(Player *player)
go_wind_stoneAI(GameObject *go)
bool OnGossipHello(Player *player) override
void SummonNPC(GameObject *go, Player *player, uint32 npc, uint32 spell)
uint8 GetSummonItems(Player *player, WS type)
bool OnGossipSelect(Player *player, uint32, uint32 gossipListId) override
npc_anachronos_quest_triggerAI(Creature *creature)
void UpdateAI(uint32 diff) override
void UpdateAI(uint32 diff) override
ObjectGuid AnachronosQuestTriggerGUID
npc_anachronos_the_ancientAI(Creature *creature)
ObjectGuid CaelestraszGUID
npc_qiraj_war_spawnAI(Creature *creature)
void JustEngagedWith(Unit *) override
void JustDied(Unit *) override
void UpdateAI(uint32 diff) override
@ SPELL_BLUE_DRAGON_TRANSFORM_DND
@ SPELL_CALL_PRISMATIC_BARRIER
@ SPELL_CALL_GLYPHS_OF_WARDING
@ SPELL_ARCANE_CHANNELING
@ SPELL_GREEN_DRAGON_TRANSFORM_DND
@ SPELL_RED_DRAGON_TRANSFORM_DND
@ NPC_ANUBISATH_CONQUEROR
@ ANACHRONOS_QUEST_TRIGGER_INVISIBLE
@ MERITHRA_NIGHT_ELF_FORM
@ CAELESTRASZ_NIGHT_ELF_FORM
static QuestCinematic EventAnim[]
@ SPELL_STONED_CHANNEL_CAST_VISUAL
@ SPELL_SUMMON_POISON_CLOUD
static WaveData WavesInfo[5]
@ NPC_MERITHRA_OF_THE_DREAM
@ QUEST_A_PAWN_ON_THE_ETERNAL_BOARD
Position const SpawnLocation[]
static SpawnSpells SpawnCast[4]