Code:
/*
* RedRum Scripts
* Copyright (C) 2010 <http://www.vcnwow.net/>
* Scripted by Zanukan
* NPC ID :76667
*/
#include "StdAfx.h"
#include "Setup.h"
#ifdef WIN32
#pragma warning(disable:4305)// warning C4305: 'argument' : truncation from 'double' to 'float'
#endif
class SCRIPT_DECL WotlkNPC : public GossipScript
{
public:
void GossipHello(Object * pObject, Player* Plr, bool AutoSend);
void GossipSelectOption(Object * pObject, Player* Plr, uint32 Id, uint32 IntId, const char * Code);
void GossipEnd(Object * pObject, Player* Plr);
void Destroy()
{
delete this;
}
};
void WotlkNPC::GossipHello(Object * pObject, Player* Plr, bool AutoSend)
{
GossipMenu *Menu;
objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
Menu->AddItem(1, "|cFFFF0000Welcome to Insane WoW 3.3.0 Realm.");
Menu->AddItem(2, "|cFF800080Northrend Locations", 97);
Menu->AddItem(2, "|cFF800080Northrend Instances", 777);
Menu->AddItem(5, "|cFFFFD700Dalaran", 1001);
Menu->AddItem(9, "|cFF000000Gurubashi Arena", 45);
if(AutoSend)
Menu->SendTo(Plr);
}
void WotlkNPC::GossipSelectOption(Object * pObject, Player* Plr, uint32 Id, uint32 IntId, const char * Code)
{
Creature * pCreature = (pObject->GetTypeId()==TYPEID_UNIT)?((Creature*)pObject):NULL;;
if(pCreature==NULL)
return;
GossipMenu * Menu;
switch(IntId)
{
case 0:
GossipHello(pObject, Plr, true);
break;
case 97: //Northrend Locations
{
objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
Menu->AddItem(5, "|cFF008000Borean Tundra", 501);
Menu->AddItem(5, "|cFF008000Crystalsong Forest", 502);
Menu->AddItem(5, "|cFF008000Dalaran (City)", 503);
Menu->AddItem(5, "|cFF008000Dragonblight", 504);
Menu->AddItem(5, "|cFF008000Grizzly Hills", 505);
Menu->AddItem(5, "|cFF008000Howling Fjord", 506);
Menu->AddItem(5, "|cFF008000Icecrown", 507);
Menu->AddItem(5, "|cFF008000Sholazar Basin", 508);
Menu->AddItem(5, "|cFF008000The Storm Peaks", 509);
Menu->AddItem(5, "|cFF008000Zul'Dark", 510);
Menu->AddItem(5, "|cFF008000DK Start Zone", 511);
Menu->SendTo(Plr);
}
break;
case 777: //Northrend Instances
{
objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
Menu->AddItem(5, "|cFF008000Utgarde Keep", 779);
Menu->AddItem(5, "|cFF008000Utgard Pinnacle", 778);
Menu->AddItem(5, "|cFF008000Draktharon Keep", 780);
Menu->AddItem(5, "|cFF008000Halls of Stone", 781);
Menu->AddItem(5, "|cFF008000Halls of Lighting", 782);
Menu->AddItem(5, "|cFF008000The Nexus", 785);
Menu->AddItem(5, "|cFF008000The Oculus", 786);
Menu->AddItem(5, "|cFF008000The Old Kingdom", 787);
Menu->AddItem(5, "|cFF008000Azjol-nerub", 788);
Menu->AddItem(5, "|cFF800080Northrend Raids--->", 888);
Menu->SendTo(Plr);
}
break;
case 888: //Northrend Raids
{
objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
Menu->AddItem(5, "|cFF008000Naxxramas", 783);
Menu->AddItem(5, "|cFF008000The Eye of Eternity", 784);
Menu->AddItem(5, "|cFF008000Ulduar", 733);
Menu->SendTo(Plr);
}
break;
case 889:
{
Plr->EventTeleport(1, 4613.19, -3861.61, 944.178);
}
break;
case 45: //GuruBashi Arena
{
Plr->EventTeleport(0, -13243.240234, 197.949799, 32.112690);
}
break;
case 501: // Borean Tundra
{
Plr->EventTeleport(571, 2087.0109, 6508.6171, 1.4727);
}
break;
case 502: //Utgard Pinnacle
{
Plr->EventTeleport(571, 5434.8281, -1022.4812, 175.0125);
}
break;
case 503: //Dalaran (City)
{
Plr->EventTeleport(571, 5811.4067, 647.7883, 647.4152);
}
break;
case 504: //Dragonblight
{
Plr->EventTeleport(571, 3511.6850, 2841.8454, 36.7473);
}
break;
case 505: //Grizzly Hills
{
Plr->EventTeleport(571, 3346.2551, -4486.8173, 259.2319);
}
break;
case 506: //Howling Fjord
{
Plr->EventTeleport(571, 2195.3654, -4526.7729, 216.7943);
}
break;
case 507: //Icecrown
{
Plr->EventTeleport(571, 6729.2387, 2510.4931, 427.7868);
}
break;
case 508: //Sholazar Basin
{
Plr->EventTeleport(570, 4913.3090, 5536.0737, -76.4190);
}
break;
case 509: //The Storm Peaks
{
Plr->EventTeleport(571, 6196.4174, -776.7462, 402.3688);
}
break;
case 510: //Zul'Dark
{
Plr->EventTeleport(571, 5443.4326, -1259.7487, 248.7494);
}
break;
case 511: //DK Start Zone
{
Plr->EventTeleport(609, 2355.7048, -5662.7075, 426.0274);
break;
{
case 778: //Utgard Pinnacle
{
Plr->EventTeleport(571, 1248.92, -4853.94, 219.231);
}
break;
case 779: //Utgarde Keep
{
Plr->EventTeleport(571, 1215.37, -4866.46, 47.8483);
}
break;
case 780: //Draktharon Keep
Plr->EventTeleport(571, 4775.11, -2035.08, 229.387);
}
break;
case 781: //Halls of Stone
{
Plr->EventTeleport(571, 9174.49, -1377.79, 1102.41);
}
break;
case 782: //Halls of Lighting
{
Plr->EventTeleport(571, 8923.74, -986.607, 1039.35);
}
break;
case 783: //Nax
{
Plr->EventTeleport(533, 3005.87, -3435.01, 293.883);
}
break;
case 784: //The Eye of Eternity
{
Plr->EventTeleport(571, 3879.34, 6979.7, 152.042);
}
break;
case 785: //The Nexus
{
Plr->EventTeleport(571, 3881.67, 6984.54, 73.7606);
}
break;
case 786: //The Oculus
{
Plr->EventTeleport(571, 3879.99, 6984.38, 106.321);
}
break;
case 733: //Ulduar
{
Plr->EventTeleport(571, 8923.66, -1002.0, 1039.5);
}
break;
case 787: //The Old Kingdom
{
Plr->EventTeleport(571, 3717.18, 2154.97, 36.4342);
}
break;
case 788: //Azjol-nerub
{
Plr->EventTeleport(571, 3717.18, 2154.97, 36.4342);
}
break;
case 1001: //Dalaran City
{
Plr->EventTeleport(571, 5785.24, 724.91, 641.081);
}
break;
};
}
}
void WotlkNPC::GossipEnd(Object * pObject, Player* Plr)
{
GossipScript::GossipEnd(pObject, Plr);
}
void SetupWotlkNPC(ScriptMgr * mgr)
{
GossipScript * gs = (GossipScript*) new WotlkNPC();
mgr->register_gossip_script(76667, gs);
}