diff options
Diffstat (limited to 'src')
3 files changed, 74 insertions, 2 deletions
diff --git a/src/bindings/scripts/scripts/kalimdor/blackfathom_depths/blackfathom_deeps.cpp b/src/bindings/scripts/scripts/kalimdor/blackfathom_depths/blackfathom_deeps.cpp index 6a2f9126afe..20a59a0bc21 100644 --- a/src/bindings/scripts/scripts/kalimdor/blackfathom_depths/blackfathom_deeps.cpp +++ b/src/bindings/scripts/scripts/kalimdor/blackfathom_depths/blackfathom_deeps.cpp @@ -18,15 +18,19 @@ #include "precompiled.h" #include "blackfathom_deeps.h" +#include "escort_ai.h" enum eSpells { SPELL_BLESSING_OF_BLACKFATHOM = 8733, SPELL_RAVAGE = 8391, SPELL_FROST_NOVA = 865, - SPELL_FROST_BOLT_VOLLEY = 8398 + SPELL_FROST_BOLT_VOLLEY = 8398, + SPELL_TELEPORT_DARNASSUS = 9268 }; +#define GOSSIP_ITEM_MORRIDUNE "Please port me to Darnassus" + const Position HomePosition = {-815.817,-145.299,-25.870, 0}; bool GoHello_blackfathom_altar(Player *pPlayer, GameObject* pGo) @@ -166,6 +170,61 @@ CreatureAI* GetAI_npc_blackfathom_deeps_event(Creature* pCreature) return new npc_blackfathom_deeps_eventAI (pCreature); } +enum eMorridune +{ + SAY_MORRIDUNE_1 = -1048003, + SAY_MORRIDUNE_2 = -1048004 +}; + +struct TRINITY_DLL_DECL npc_morriduneAI : public npc_escortAI +{ + npc_morriduneAI(Creature* pCreature) : npc_escortAI(pCreature) + { + DoScriptText(SAY_MORRIDUNE_1,pCreature); + m_creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + Start(false,false,NULL); + } + + void WaypointReached(uint32 uiPoint) + { + switch(uiPoint) + { + case 4: + SetEscortPaused(true); + m_creature->SetOrientation(1.775791); + m_creature->SendMovementFlagUpdate(); + m_creature->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + DoScriptText(SAY_MORRIDUNE_2,m_creature); + break; + } + } +}; + +CreatureAI* GetAI_npc_morridune(Creature* pCreature) +{ + return new npc_morriduneAI (pCreature); +} + +bool GossipHello_npc_morridune(Player* pPlayer, Creature* pCreature) +{ + pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_MORRIDUNE, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); + + pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); + return true; +} + +bool GossipSelect_npc_morridune(Player* pPlayer, Creature* pCreature, uint32 uiSender, uint32 uiAction) +{ + switch(uiAction) + { + case GOSSIP_ACTION_INFO_DEF+1: + pPlayer->TeleportTo(1,9952.239,2284.277,1341.394,1.595); + pPlayer->CLOSE_GOSSIP_MENU(); + break; + } + return true; +} + void AddSC_blackfathom_deeps() { Script *newscript; @@ -183,4 +242,11 @@ void AddSC_blackfathom_deeps() newscript->Name = "npc_blackfathom_deeps_event"; newscript->GetAI = &GetAI_npc_blackfathom_deeps_event; newscript->RegisterSelf(); + + newscript = new Script; + newscript->Name = "npc_morridune"; + newscript->GetAI = &GetAI_npc_morridune; + newscript->pGossipHello = &GossipHello_npc_morridune; + newscript->pGossipSelect = &GossipSelect_npc_morridune; + newscript->RegisterSelf(); } diff --git a/src/bindings/scripts/scripts/kalimdor/blackfathom_depths/blackfathom_deeps.h b/src/bindings/scripts/scripts/kalimdor/blackfathom_depths/blackfathom_deeps.h index 317aa67fa1c..e8bbab9f105 100644 --- a/src/bindings/scripts/scripts/kalimdor/blackfathom_depths/blackfathom_deeps.h +++ b/src/bindings/scripts/scripts/kalimdor/blackfathom_depths/blackfathom_deeps.h @@ -35,7 +35,9 @@ enum Creatures NPC_AKU_MAI_SNAPJAW = 4825, NPC_MURKSHALLOW_SOFTSHELL = 4977, NPC_AKU_MAI_SERVANT = 4978, - NPC_BARBED_CRUSTACEAN = 4823 + NPC_BARBED_CRUSTACEAN = 4823, + + NPC_MORRIDUNE = 6729 }; enum GameObjects diff --git a/src/bindings/scripts/scripts/kalimdor/blackfathom_depths/instance_blackfathom_deeps.cpp b/src/bindings/scripts/scripts/kalimdor/blackfathom_depths/instance_blackfathom_deeps.cpp index a1ba1c63934..c925616d32d 100644 --- a/src/bindings/scripts/scripts/kalimdor/blackfathom_depths/instance_blackfathom_deeps.cpp +++ b/src/bindings/scripts/scripts/kalimdor/blackfathom_depths/instance_blackfathom_deeps.cpp @@ -46,6 +46,7 @@ const Position SpawnsLocation[] = {-775.404, -174.132, -25.871, 3.185}, {-862.430, -154.937, -25.871, 0.060}, {-862.193, -174.251, -25.871, 6.182}, + {-863.895, -458.899, -33.891, 5.637} }; struct TRINITY_DLL_DECL instance_blackfathom_deeps : public ScriptedInstance @@ -142,7 +143,10 @@ struct TRINITY_DLL_DECL instance_blackfathom_deeps : public ScriptedInstance m_auiEncounter[3] = uiData; if (uiData == DONE) if (GameObject *pGo = instance->GetGameObject(m_uiAltarOfTheDeepsGUID)) + { pGo->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_UNK1); + pGo->SummonCreature(NPC_MORRIDUNE,SpawnsLocation[4], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 300000); + } break; case DATA_FIRE: m_uiCountFires = uiData; |