aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/BrokenIsles/zone_mardum.cpp78
1 files changed, 78 insertions, 0 deletions
diff --git a/src/server/scripts/BrokenIsles/zone_mardum.cpp b/src/server/scripts/BrokenIsles/zone_mardum.cpp
index dbbb5e7f088..d7ae8bdf32d 100644
--- a/src/server/scripts/BrokenIsles/zone_mardum.cpp
+++ b/src/server/scripts/BrokenIsles/zone_mardum.cpp
@@ -854,6 +854,82 @@ struct at_enter_the_illidari_ashtongue_allari_killcredit : AreaTriggerAI
}
};
+enum ETICoilskarIntroData
+{
+ NPC_SEVIS_BRIGHTFLAME_COILSKAR = 99917,
+ SAY_SEVIS_SAY_MEET_AT_LAST_GATEWAY = 2,
+
+ PATH_SEVIS_BRIGHTFLAME_COILSKAR = 9991700
+};
+
+// 1077 - Enter the Illidari: Coilskar
+class scene_enter_the_illidari_coilskar : public SceneScript
+{
+public:
+ scene_enter_the_illidari_coilskar() : SceneScript("scene_enter_the_illidari_coilskar") { }
+
+ void OnSceneStart(Player* player, uint32 /*sceneInstanceID*/, SceneTemplate const* /*sceneTemplate*/) override
+ {
+ PhasingHandler::OnConditionChange(player);
+ Creature* sevisObject = GetClosestCreatureWithOptions(player, 30.0f, { .CreatureId = NPC_SEVIS_BRIGHTFLAME_COILSKAR, .IgnorePhases = true });
+ if (!sevisObject)
+ return;
+
+ sevisObject->SummonPersonalClone(sevisObject->GetPosition(), TEMPSUMMON_MANUAL_DESPAWN, 0s, 0, 0, player);
+ }
+};
+
+// 99917 - Sevis Brightflame (Coilskar Gateway)
+struct npc_sevis_brightflame_coilskar_gateway_private : public ScriptedAI
+{
+ npc_sevis_brightflame_coilskar_gateway_private(Creature* creature) : ScriptedAI(creature) { }
+
+ void JustAppeared() override
+ {
+ TempSummon* summon = me->ToTempSummon();
+ if (!summon)
+ return;
+
+ Unit* summoner = summon->GetSummonerUnit();
+ if (!summoner)
+ return;
+
+ me->SetFacingToObject(summoner);
+ me->DespawnOrUnsummon(14s);
+
+ _scheduler.Schedule(1s, [this](TaskContext task)
+ {
+ Talk(SAY_SEVIS_SAY_MEET_AT_LAST_GATEWAY, me);
+
+ task.Schedule(2s, [this](TaskContext task)
+ {
+ me->SendPlaySpellVisualKit(SPELL_VISUAL_KIT_SEVIS_MOUNT, 0, 0);
+ me->SetMountDisplayId(DISPLAY_ID_SEVIS_MOUNT);
+
+ task.Schedule(3s, [this](TaskContext /*task*/)
+ {
+ me->GetMotionMaster()->MovePath(PATH_SEVIS_BRIGHTFLAME_COILSKAR, false);
+ });
+ });
+ });
+ }
+
+ void UpdateAI(uint32 diff) override
+ {
+ _scheduler.Update(diff);
+ }
+
+private:
+ TaskScheduler _scheduler;
+};
+
+CreatureAI* SevisBrightflameCoilskarGatewayAISelector(Creature* creature)
+{
+ if (creature->IsPrivateObject())
+ return new npc_sevis_brightflame_coilskar_gateway_private(creature);
+ return new NullCreatureAI(creature);
+};
+
void AddSC_zone_mardum()
{
// Creature
@@ -868,6 +944,7 @@ void AddSC_zone_mardum()
// AISelector
new FactoryCreatureScript<CreatureAI, &KaynSunfuryNearLegionBannerAISelector>("npc_kayn_sunfury_ashtongue_intro");
new FactoryCreatureScript<CreatureAI, &SevisBrightflameAshtongueGatewayAISelector>("npc_sevis_brightflame_ashtongue_gateway_private");
+ new FactoryCreatureScript<CreatureAI, &SevisBrightflameCoilskarGatewayAISelector>("npc_sevis_brightflame_coilskar_gateway_private");
// AreaTrigger
RegisterAreaTriggerAI(at_enter_the_illidari_ashtongue_allari_killcredit);
@@ -878,6 +955,7 @@ void AddSC_zone_mardum()
// Scene
new scene_demonhunter_intro();
new scene_enter_the_illidari_ashtongue();
+ new scene_enter_the_illidari_coilskar();
// Spells
RegisterSpellScript(spell_demon_hunter_intro_aura);