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

129 lines
7 KiB
C++

#include "ScriptMgr.h"
#include "ScriptedCreature.h"
#include "ScriptedGossip.h"
#include "WorldPacket.h"
class npc_maniek : public CreatureScript
{
public:
npc_maniek() : CreatureScript("npc_maniek") { }
bool OnGossipHello(Player *pPlayer, Creature *pCreature)
{
uint8 PlayerTeam = (pPlayer->GetTeam() == ALLIANCE) ? 0 : 1;
uint32 NPCLevel = pCreature->getLevel(); // 80 = horde & allianz, 81 = horde, 82 = allianz
if ((NPCLevel == 81 && PlayerTeam != 1) || (NPCLevel == 82 && PlayerTeam != 0))
{
pCreature->MonsterWhisper("Get out! I offer my services to enemy!", pPlayer->GetGUID());
return true;
}
uint32 PlayerLevel = pPlayer->getLevel();
uint8 PlayerKlasse = pPlayer->getClass();
std::string kosten = (PlayerLevel <= 70) ? (PlayerLevel) + " Silver" : (PlayerLevel*10) + " Silver";
pPlayer->ADD_GOSSIP_ITEM( 10, " 传送: ", GOSSIP_SENDER_MAIN, 6111);
if (ALLIANCE == pPlayer->GetTeam())
{
pPlayer->ADD_GOSSIP_ITEM( 5, " 暴风城 ", GOSSIP_SENDER_MAIN, 6201);
pPlayer->ADD_GOSSIP_ITEM( 5, " 铁炉堡 ", GOSSIP_SENDER_MAIN, 6202);
pPlayer->ADD_GOSSIP_ITEM( 5, " 达纳苏斯 ", GOSSIP_SENDER_MAIN, 6203);
pPlayer->ADD_GOSSIP_ITEM( 5, " 埃索达 ", GOSSIP_SENDER_MAIN, 6204);
if (PlayerLevel>=68)
pPlayer->ADD_GOSSIP_ITEM( 5, " 诺森德 ", GOSSIP_SENDER_MAIN, 6267);
}
else
{
pPlayer->ADD_GOSSIP_ITEM( 5, " 奥格瑞玛 ", GOSSIP_SENDER_MAIN, 6211);
pPlayer->ADD_GOSSIP_ITEM( 5, " 雷霆崖 ", GOSSIP_SENDER_MAIN, 6212);
pPlayer->ADD_GOSSIP_ITEM( 5, " 幽暗城 ", GOSSIP_SENDER_MAIN, 6213);
pPlayer->ADD_GOSSIP_ITEM( 5, " 银月城 ", GOSSIP_SENDER_MAIN, 6214);
if (PlayerLevel>=68)
pPlayer->ADD_GOSSIP_ITEM( 5, " 诺森德 ", GOSSIP_SENDER_MAIN, 6268);
}
if (pPlayer->getClass()==6)
{
pPlayer->ADD_GOSSIP_ITEM( 5, " 阿彻鲁斯黑锋要塞 ", GOSSIP_SENDER_MAIN, 6207);
}
pPlayer->ADD_GOSSIP_ITEM( 5, " 阿斯特兰纳 ", GOSSIP_SENDER_MAIN, 6266);
if (PlayerLevel>=30)
pPlayer->ADD_GOSSIP_ITEM( 5, " 古拉巴什竞技场 ", GOSSIP_SENDER_MAIN, 6200);
pPlayer->ADD_GOSSIP_ITEM( 5, " 加基森 ", GOSSIP_SENDER_MAIN, 6269);
if (PlayerLevel>=58)
pPlayer->ADD_GOSSIP_ITEM( 5, " 沙塔斯 ", GOSSIP_SENDER_MAIN, 6208);
if (PlayerLevel>=65)
pPlayer->ADD_GOSSIP_ITEM( 5, " 奎尔丹纳斯岛 ", GOSSIP_SENDER_MAIN, 6209);
if (PlayerLevel>=70)
pPlayer->ADD_GOSSIP_ITEM( 5, " 达拉然 ", GOSSIP_SENDER_MAIN, 6210);
pPlayer->PlayerTalkClass->SendGossipMenu(2713, pCreature->GetGUID());
return true;
}
bool OnGossipSelect(Player *pPlayer, Creature *pCreature, uint32 /*uiSender*/, uint32 uiAction)
{
switch (uiAction)
{
case 6200: custom_porter_port(0, -13234.1f, 217.387f, 31.6759f, 1.06815f, pPlayer, pCreature); break; // Guru
case 6201: custom_porter_port(0, -8908.96f, 556.3f, 93.5345f, 0.73f, pPlayer, pCreature); break; // Stormwind
case 6202: custom_porter_port(0, -4821.6f, -1155.58f, 502.2345f, 3.33532f, pPlayer, pCreature); break; // Eisenschmiede
case 6203: custom_porter_port(1, 9947.53f, 2604.15f, 1316.19f, 4.223f, pPlayer, pCreature); break; // Darnassus
case 6204: custom_porter_port(530, -4054.75f, -11793.4f, 11.1139f, 1.51503f, pPlayer, pCreature); break; // Exodar
case 6205: custom_porter_port(1, 45.951f, 1218.27f, 146.713f, 0.063138f, pPlayer, pCreature); break; // Pt ally
case 6206: custom_porter_port(609, 2362.29f, -5693.76f, 153.922f, 3.77816f, pPlayer, pCreature); break; // Todesbresche
case 6207: custom_porter_port(609, 2348.74f, -5694.94f, 384.088f, 3.90954f, pPlayer, pCreature); break; // Acherus
case 6208: custom_porter_port(530, -1879.5f, 5409.46f, -12.4277f, 1.0332f, pPlayer, pCreature); break; // Shattrath
case 6209: custom_porter_port(530, 13000.2f, -6907.51f, 12.0f, 1.06815f, pPlayer, pCreature); break; // Queldanas
case 6210: custom_porter_port(571, 5814.2f, 446.337f, 659.201f, 1.41145f, pPlayer, pCreature); break; // Dalaran
case 6211: custom_porter_port(1, 1677.91f, -4314.79f, 62.35f, 2.66969f, pPlayer, pCreature); break; // Orgrimmar
case 6212: custom_porter_port(1, -1197.18f, 29.2706f, 179.755f, 2.9666f, pPlayer, pCreature); break; // Donnerfels
case 6213: custom_porter_port(0, 1568.48f, 268.52f, -42.1384f, 1.69719f, pPlayer, pCreature); break; // Unterstadt
case 6214: custom_porter_port(530, 9373.08f, -7166.07f, 11.4763f, 5.38653f, pPlayer, pCreature); break; // Silbermond
case 6215: custom_porter_port(1, -1790.17f, 3055.44f, 9.35831f, 1.06815f, pPlayer, pCreature); break; // Pt horde
case 6216: custom_porter_port(1, -11846.4f, -4756.91f, 6.25831f, 0.305114f, pPlayer, pCreature); break; // Pt highrate
case 6401: custom_porter_port(37, -30.2515f, 952.13f, 348.4f, 5.49992f, pPlayer, pCreature); break; // Krater horde
case 6402: custom_porter_port(37, 1100.61f, 298.099f, 338.7f, 3.11388f, pPlayer, pCreature); break; // Krater ally
case 6403: custom_porter_port(0, -3964.02f, -1343.13f, 152.9f, 3.14183f, pPlayer, pCreature); break; // New pt
case 6550: custom_porter_port(0, -7823.80f, -477.402f, 170.8f, 3.031973f, pPlayer, pCreature); break; // Dt-renngebiet
case 6266: custom_porter_port(1, 2730.27f, -368.802f, 108.886f, 4.07746f, pPlayer, pCreature); break; // Astranaar
case 6267: custom_porter_port(571, 2213.94f, 5273.14f, 12.1967f, 5.89294f, pPlayer, pCreature); break; // Northrend ALLIANCE
case 6268: custom_porter_port(571, 2649.82f, -4362.68f, 277.585f, 5.15979f, pPlayer, pCreature); break; // Northrend Horde
case 6269: custom_porter_port(1, -7155.7f, -3822.1f, 8.43f, 1.06815f, pPlayer, pCreature); break; // Dadgetzan
}
pPlayer->CLOSE_GOSSIP_MENU();
return true;
}
void custom_porter_port(uint32 a, float b, float c, float d, float e, Player* pPlayer, Creature* pCreature)
{
char* temp = "";
switch (urand(1,7)) {
case 1: temp = "Have a pleasant journey!"; break;
case 2: temp = "And again... happy customer..."; break;
case 3: temp = "An excellent choice!"; break;
case 4: temp = "Faster than the speed of light!"; break;
case 5: temp = "Would You recommend us?"; break;
case 6: temp = "Player? WHAT ARE YOU DOIN'?! STHAP!"; break;
case 7: temp = "Connection lost......."; break;
}
char const* text = temp;
pCreature->MonsterWhisper(text, pPlayer->GetGUID());
pPlayer->TeleportTo(a,b,c,d,e);
return;
}
};
void AddSC_npc_maniek()
{
new npc_maniek;
}