From 295b152833e9167c79d69f1d6c4ad3482909f55a Mon Sep 17 00:00:00 2001 From: Aokromes Date: Wed, 23 Mar 2016 16:59:31 +0100 Subject: [PATCH] Misc: remove useless row --- issue_template.md | 2 - src/server/scripts/Kalimdor/zone_desolace.cpp | 100 +++++++++++++++--- 2 files changed, 87 insertions(+), 15 deletions(-) diff --git a/issue_template.md b/issue_template.md index fe090da233..8a856f4485 100644 --- a/issue_template.md +++ b/issue_template.md @@ -10,8 +10,6 @@ 2. 3. -**Branch(es)**: 335/6x - **TC hash/commit**: **TDB version**: diff --git a/src/server/scripts/Kalimdor/zone_desolace.cpp b/src/server/scripts/Kalimdor/zone_desolace.cpp index 812ef59ba3..d79a8c9af3 100644 --- a/src/server/scripts/Kalimdor/zone_desolace.cpp +++ b/src/server/scripts/Kalimdor/zone_desolace.cpp @@ -124,34 +124,108 @@ public: }; /*###### -## go_demon_portal +## go_iruxos +## Hand of Iruxos ######*/ -enum DemonPortal +enum Iruxos { - NPC_DEMON_GUARDIAN = 11937, - QUEST_PORTAL_OF_THE_LEGION = 5581 + QUEST_HAND_IRUXOS = 5381, + NPC_DEMON_SPIRIT = 11876 }; -class go_demon_portal : public GameObjectScript +class go_iruxos : public GameObjectScript { public: - go_demon_portal() : GameObjectScript("go_demon_portal") { } + go_iruxos() : GameObjectScript("go_iruxos") { } - bool OnGossipHello(Player* player, GameObject* go) + bool OnGossipHello(Player* player, GameObject* go) override { - if (player->GetQuestStatus(QUEST_PORTAL_OF_THE_LEGION) == QUEST_STATUS_INCOMPLETE && !go->FindNearestCreature(NPC_DEMON_GUARDIAN, 5.0f, true)) - { - if (Creature* guardian = player->SummonCreature(NPC_DEMON_GUARDIAN, go->GetPositionX(), go->GetPositionY(), go->GetPositionZ(), 0.0f, TEMPSUMMON_DEAD_DESPAWN, 0)) - guardian->AI()->AttackStart(player); - } + if (player->GetQuestStatus(QUEST_HAND_IRUXOS) == QUEST_STATUS_INCOMPLETE && !go->FindNearestCreature(NPC_DEMON_SPIRIT, 25.0f, true)) + player->SummonCreature(NPC_DEMON_SPIRIT, go->GetPositionX(), go->GetPositionY(), go->GetPositionZ(), 0.0f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 10000); return true; } }; +/*###### +## npc_dalinda_malem. Quest 1440 +######*/ + +enum Dalinda +{ + QUEST_RETURN_TO_VAHLARRIEL = 1440 +}; + +class npc_dalinda : public CreatureScript +{ +public: + npc_dalinda() : CreatureScript("npc_dalinda") { } + + struct npc_dalindaAI : public npc_escortAI + { + npc_dalindaAI(Creature* creature) : npc_escortAI(creature) { } + + void Reset() override { } + + void EnterCombat(Unit* /*who*/) override { } + + void JustDied(Unit* /*killer*/) override + { + if (Player* player = GetPlayerForEscort()) + player->FailQuest(QUEST_RETURN_TO_VAHLARRIEL); + return; + } + + void WaypointReached(uint32 waypointId) override + { + Player* player = GetPlayerForEscort(); + + switch (waypointId) + { + case 1: + me->SetStandState(UNIT_STAND_STATE_STAND); + break; + case 15: + if (player) + player->GroupEventHappens(QUEST_RETURN_TO_VAHLARRIEL, me); + break; + } + } + + void UpdateAI(uint32 diff) override + { + npc_escortAI::UpdateAI(diff); + + if (!UpdateVictim()) + return; + + DoMeleeAttackIfReady(); + } + }; + + bool OnQuestAccept(Player* player, Creature* creature, Quest const* quest) override + { + if (quest->GetQuestId() == QUEST_RETURN_TO_VAHLARRIEL) + { + if (npc_escortAI* escortAI = CAST_AI(npc_dalinda::npc_dalindaAI, creature->AI())) + { + escortAI->Start(true, false, player->GetGUID()); + creature->setFaction(113); + } + } + return true; + } + + CreatureAI* GetAI(Creature* creature) const override + { + return new npc_dalindaAI(creature); + } +}; + void AddSC_desolace() { new npc_aged_dying_ancient_kodo(); - new go_demon_portal(); + new go_iruxos(); + new npc_dalinda(); }