eluna-scripts-ornfelt/lua/WowEmulationScriptPack/C++/Teleporter_NPC.cpp
2024-09-23 07:59:23 +02:00

217 lines
No EOL
11 KiB
C++

#include "ScriptPCH.h"
class Teleporter_NPC : public CreatureScript
{
public:
Teleporter_NPC() : CreatureScript("Teleporter_NPC") { }
bool OnGossipHello(Player * player, Creature * creature)
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, "|TInterface/ICONS/INV_Misc_Coin_01:30|t Sanctuary Mall.", GOSSIP_SENDER_MAIN, 1);
switch (player->GetTeam())
{
case HORDE:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, "|TInterface/ICONS/INV_BannerPVP_01:30|t Faction Malls.", GOSSIP_SENDER_MAIN, 2);
break;
case ALLIANCE:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, "|TInterface/ICONS/INV_BannerPVP_02:30|t Faction Malls.", GOSSIP_SENDER_MAIN, 2);
break;
}
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_BATTLE, "|TInterface/ICONS/Achievement_Arena_2v2_7:30|t PvP Arenas.", GOSSIP_SENDER_MAIN, 3);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_BATTLE, "|TInterface/ICONS/Achievement_Arena_3v3_5:30|t Duel Zone", GOSSIP_SENDER_MAIN, 4);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_BATTLE, "|TInterface/ICONS/Achievement_Arena_3v3_5:30|t World Boss", GOSSIP_SENDER_MAIN, 134);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_BATTLE, "|TInterface/ICONS/INV_MISC_FILM_01:30|t Event Zone.", GOSSIP_SENDER_MAIN, 9);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_BATTLE, "|TInterface/ICONS/Achievement_Quests_Completed_08:30|t Questing Zone.", GOSSIP_SENDER_MAIN, 5);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TABARD, "|TInterface/ICONS/INV_Misc_Gear_01:30|t Profession Mall.", GOSSIP_SENDER_MAIN, 6);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TABARD, "|TInterface/ICONS/INV_Chest_Plate13:30|t Transmorgrification Mall.", GOSSIP_SENDER_MAIN, 7);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TABARD, "|TInterface/ICONS/Achievement_Dungeon_Icecrown_IcecrownEntrance:30|t Icecrown Citadel.", GOSSIP_SENDER_MAIN, 8);
player->PlayerTalkClass->SendGossipMenu(1, creature->GetGUID());
return true;
}
bool OnGossipSelect(Player* player, Creature* creature, uint32 uiSender, uint32 uiAction)
{
player->PlayerTalkClass->ClearMenus();
switch(uiAction)
{
case 1: // Global Mall
player->TeleportTo(530, -2981.270020f, 779.124023f, -8.054820f, 2.530470f);
player->Dismount();
player->RemoveAurasByType(SPELL_AURA_MOUNTED);
player->PlayerTalkClass->SendCloseGossip();
break;
case 134: // World Boss
player->TeleportTo(0, -7627.41f, -708.915f, 183.457f, 4.95638f);
player->Dismount();
player->RemoveAurasByType(SPELL_AURA_MOUNTED);
player->PlayerTalkClass->SendCloseGossip();
break;
case 2: // Malls
if (player->GetTeam() == HORDE)
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, "|TInterface/ICONS/INV_Misc_Coin_05:30|t Orgrimmar", GOSSIP_SENDER_MAIN, 11);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, "|TInterface/ICONS/INV_Misc_Coin_05:30|t Undercity", GOSSIP_SENDER_MAIN, 12);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TALK, "|TInterface/ICONS/Thrown_1H_Harpoon_D_01Blue:30|t Back", GOSSIP_SENDER_MAIN, 20);
player->PlayerTalkClass->SendGossipMenu(1, creature->GetGUID());
}
else
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, "|TInterface/ICONS/INV_Misc_Coin_05:30|t Stormwind", GOSSIP_SENDER_MAIN, 13);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, "|TInterface/ICONS/INV_Misc_Coin_05:30|t Ironforge", GOSSIP_SENDER_MAIN, 14);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TALK, "|TInterface/ICONS/Thrown_1H_Harpoon_D_01Blue:30|t Back", GOSSIP_SENDER_MAIN, 20);
player->PlayerTalkClass->SendGossipMenu(1, creature->GetGUID());
}
player->Dismount();
player->RemoveAurasByType(SPELL_AURA_MOUNTED);
break;
case 3: // PvP Arenas
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_BATTLE, "|TInterface/ICONS/Achievement_Arena_2v2_3:30|t Gurubashi Arena", GOSSIP_SENDER_MAIN, 15);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_BATTLE, "|TInterface/ICONS/Achievement_Arena_2v2_3:30|t Dire Maul Arena", GOSSIP_SENDER_MAIN, 16);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TALK, "|TInterface/ICONS/Thrown_1H_Harpoon_D_01Blue:30|t Back", GOSSIP_SENDER_MAIN, 20);
player->PlayerTalkClass->SendGossipMenu(1, creature->GetGUID());
player->Dismount();
player->RemoveAurasByType(SPELL_AURA_MOUNTED);
break;
case 4: // duelzone
player->TeleportTo(0, 4300.189941f, -2761.300049f, 16.813999f, 3.643650f);
player->PlayerTalkClass->SendCloseGossip();
player->Dismount();
player->RemoveAurasByType(SPELL_AURA_MOUNTED);
break;
case 5: // Questing Zone.
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_BATTLE, "|TInterface/ICONS/Achievement_Arena_2v2_3:30|t Northwatch Hold", GOSSIP_SENDER_MAIN, 17);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_BATTLE, "|TInterface/ICONS/Achievement_Arena_2v2_3:30|t Supreme", GOSSIP_SENDER_MAIN, 18);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_BATTLE, "|TInterface/ICONS/Achievement_Arena_2v2_3:30|t Mulgore", GOSSIP_SENDER_MAIN, 19);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TALK, "|TInterface/ICONS/Thrown_1H_Harpoon_D_01Blue:30|t Back", GOSSIP_SENDER_MAIN, 20);
player->PlayerTalkClass->SendGossipMenu(1, creature->GetGUID());
player->Dismount();
player->RemoveAurasByType(SPELL_AURA_MOUNTED);
break;
case 6: // prifessions mall
player->TeleportTo(0, -219.182281f, 1638.179443f, 79.765350f, 1.288978f);
player->PlayerTalkClass->SendCloseGossip();
player->Dismount();
player->RemoveAurasByType(SPELL_AURA_MOUNTED);
break;
case 7: // mog mall
player->TeleportTo(1, -2650.709961f, -5021.879883f, 21.182899f, 2.431570f);
player->PlayerTalkClass->SendCloseGossip();
player->Dismount();
player->RemoveAurasByType(SPELL_AURA_MOUNTED);
break;
case 8: // ICC
player->TeleportTo(571, 5873.82f, 2110.98f, 636.011f, 3.5523f);
player->PlayerTalkClass->SendCloseGossip();
player->Dismount();
player->RemoveAurasByType(SPELL_AURA_MOUNTED);
break;
case 9: // event zone
player->TeleportTo(1, -11841.861328f, -4757.439941f, 6.225769f, 0.398504f);
player->PlayerTalkClass->SendCloseGossip();
player->Dismount();
player->RemoveAurasByType(SPELL_AURA_MOUNTED);
break;
case 11: // org
player->TeleportTo(1, 1462.180054f, -4419.850098f, 25.463112f, 0.109132f);
player->PlayerTalkClass->SendCloseGossip();
player->Dismount();
player->RemoveAurasByType(SPELL_AURA_MOUNTED);
break;
case 12: // undercity
player->TeleportTo(0, 1745.290039f, 239.115997f, 61.920300f, 6.248010f);
player->PlayerTalkClass->SendCloseGossip();
player->Dismount();
player->RemoveAurasByType(SPELL_AURA_MOUNTED);
break;
case 13: // stormwind
player->TeleportTo(0, -8847.259766f, 606.219971f, 92.426201f, 0.757473f);
player->PlayerTalkClass->SendCloseGossip();
player->Dismount();
player->RemoveAurasByType(SPELL_AURA_MOUNTED);
break;
case 14: // ironforge
player->TeleportTo(0, -4936.500000f, -937.025024f, 503.040985f, 5.440750f);
player->PlayerTalkClass->SendCloseGossip();
player->Dismount();
player->RemoveAurasByType(SPELL_AURA_MOUNTED);
break;
case 15: // guru
player->TeleportTo(0, -13245.921875f, 193.394821f, 31.008369f, 1.096788f);
player->PlayerTalkClass->SendCloseGossip();
player->Dismount();
player->RemoveAurasByType(SPELL_AURA_MOUNTED);
break;
case 16: // dire maul
player->TeleportTo(1, -3761.399658f, 1133.067749f, 132.084564f, 4.719074f);
player->PlayerTalkClass->SendCloseGossip();
player->Dismount();
player->RemoveAurasByType(SPELL_AURA_MOUNTED);
break;
case 17: // northwatch hold
player->TeleportTo(1, -1998.12f, -3680.54f, 21.1346f, 2.45298f);
player->PlayerTalkClass->SendCloseGossip();
player->Dismount();
player->RemoveAurasByType(SPELL_AURA_MOUNTED);
break;
case 18: // supreme
player->TeleportTo(0, -1852.07f, -4251.95f, 2.76502f, 1.08637f);
player->PlayerTalkClass->SendCloseGossip();
player->Dismount();
player->RemoveAurasByType(SPELL_AURA_MOUNTED);
break;
case 19: // mulgore
player->TeleportTo(1, -2203.916992f, -699.970459f, -10.450468f, 0.375297f);
player->PlayerTalkClass->SendCloseGossip();
player->Dismount();
player->RemoveAurasByType(SPELL_AURA_MOUNTED);
break;
case 20: // bk
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, "|TInterface/ICONS/INV_Misc_Coin_01:30|t Sanctuary Mall.", GOSSIP_SENDER_MAIN, 1);
switch (player->GetTeam())
{
case HORDE:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, "|TInterface/ICONS/INV_BannerPVP_01:30|t Faction Malls.", GOSSIP_SENDER_MAIN, 2);
break;
case ALLIANCE:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, "|TInterface/ICONS/INV_BannerPVP_02:30|t Faction Malls.", GOSSIP_SENDER_MAIN, 2);
break;
}
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_BATTLE, "|TInterface/ICONS/Achievement_Arena_2v2_7:30|t PvP Arenas.", GOSSIP_SENDER_MAIN, 3);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_BATTLE, "|TInterface/ICONS/Achievement_Arena_3v3_5:30|t Duel Zone", GOSSIP_SENDER_MAIN, 4);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_BATTLE, "|TInterface/ICONS/Achievement_Arena_3v3_5:30|t World Boss", GOSSIP_SENDER_MAIN, 134);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_BATTLE, "|TInterface/ICONS/INV_MISC_FILM_01:30|t Event Zone.", GOSSIP_SENDER_MAIN, 9);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_BATTLE, "|TInterface/ICONS/Achievement_Quests_Completed_08:30|t Questing Zone.", GOSSIP_SENDER_MAIN, 5);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TABARD, "|TInterface/ICONS/INV_Misc_Gear_01:30|t Profession Mall.", GOSSIP_SENDER_MAIN, 6);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TABARD, "|TInterface/ICONS/INV_Chest_Plate13:30|t Transmorgrification Mall.", GOSSIP_SENDER_MAIN, 7);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TABARD, "|TInterface/ICONS/Achievement_Dungeon_Icecrown_IcecrownEntrance:30|t Icecrown Citadel.", GOSSIP_SENDER_MAIN, 8);
player->PlayerTalkClass->SendGossipMenu(1, creature->GetGUID());
break;
}
return true;
}
};
void AddSC_Teleporter_NPC()
{
new Teleporter_NPC;
}