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

369 lines
No EOL
20 KiB
C++

#include "ScriptMgr.h"
#include "Cell.h"
#include "CellImpl.h"
#include "GameEventMgr.h"
#include "GridNotifiers.h"
#include "GridNotifiersImpl.h"
#include "Unit.h"
#include "GameObject.h"
#include "ScriptedCreature.h"
#include "ScriptedGossip.h"
#include "InstanceScript.h"
#include "CombatAI.h"
#include "PassiveAI.h"
#include "Chat.h"
#include "DBCStructure.h"
#include "DBCStores.h"
#include "ObjectMgr.h"
#include "SpellScript.h"
#include "SpellAuraEffects.h"
class npc_support : public CreatureScript
{
public:
npc_support() : CreatureScript("npc_support")
{
}
bool OnGossipHello(Player * pPlayer, Creature * pCreature)
{
pPlayer->ADD_GOSSIP_ITEM(4, "|TInterface/ICONS/INV_Misc_Coin_05:30|t Morphs", GOSSIP_SENDER_MAIN, 0);
pPlayer->ADD_GOSSIP_ITEM(0, "Nevermind...", GOSSIP_SENDER_MAIN, 800);
pPlayer->PlayerTalkClass->SendGossipMenu(9425, pCreature->GetGUID());
return true;
}
bool OnGossipSelect(Player * pPlayer, Creature * pCreature, uint32 /*uiSender*/, uint32 uiAction)
{
if(!pPlayer)
return true;
switch(uiAction)
{
{
case 0:
pPlayer->PlayerTalkClass->ClearMenus();
pPlayer->ADD_GOSSIP_ITEM(8, "|TInterface/ICONS/Achievement_Arena_2v2_7:30|t Blood Elf Female ", GOSSIP_SENDER_MAIN, 4);
pPlayer->ADD_GOSSIP_ITEM(8, "|TInterface/ICONS/Achievement_Arena_2v2_7:30|t Blood Elf Male ", GOSSIP_SENDER_MAIN, 5);
pPlayer->ADD_GOSSIP_ITEM(8, "|TInterface/ICONS/Achievement_Arena_2v2_7:30|t Gnome Female ", GOSSIP_SENDER_MAIN, 6);
pPlayer->ADD_GOSSIP_ITEM(8, "|TInterface/ICONS/Achievement_Arena_2v2_7:30|t Gnome Male ", GOSSIP_SENDER_MAIN, 7);
pPlayer->ADD_GOSSIP_ITEM(8, "|TInterface/ICONS/Achievement_Arena_2v2_7:30|t Human Female ", GOSSIP_SENDER_MAIN, 8);
pPlayer->ADD_GOSSIP_ITEM(8, "|TInterface/ICONS/Achievement_Arena_2v2_7:30|t Human Male ", GOSSIP_SENDER_MAIN, 9);
pPlayer->ADD_GOSSIP_ITEM(8, "|TInterface/ICONS/Achievement_Arena_2v2_7:30|t Tauren Female ", GOSSIP_SENDER_MAIN, 10);
pPlayer->ADD_GOSSIP_ITEM(8, "|TInterface/ICONS/Achievement_Arena_2v2_7:30|t Tauren Male ", GOSSIP_SENDER_MAIN, 11);
pPlayer->ADD_GOSSIP_ITEM(8, "|TInterface/ICONS/Achievement_Arena_2v2_7:30|t Undead Pirate ", GOSSIP_SENDER_MAIN, 12);
pPlayer->ADD_GOSSIP_ITEM(8, "|TInterface/ICONS/Achievement_Arena_2v2_7:30|t Etherial ", GOSSIP_SENDER_MAIN, 13);
pPlayer->ADD_GOSSIP_ITEM(8, "|TInterface/ICONS/Achievement_Arena_2v2_7:30|t Mad Scientist ", GOSSIP_SENDER_MAIN, 14);
pPlayer->ADD_GOSSIP_ITEM(8, "|TInterface/ICONS/Achievement_Arena_2v2_7:30|t Tatooed Man ", GOSSIP_SENDER_MAIN, 15);
pPlayer->ADD_GOSSIP_ITEM(8, "|TInterface/ICONS/Achievement_Arena_2v2_7:30|t Necromancer ", GOSSIP_SENDER_MAIN, 16);
pPlayer->ADD_GOSSIP_ITEM(8, "|TInterface/ICONS/Achievement_Arena_2v2_7:30|t Skeletal Mage ", GOSSIP_SENDER_MAIN, 17);
pPlayer->ADD_GOSSIP_ITEM(8, "|TInterface/ICONS/Achievement_Arena_2v2_7:30|t Frost Troll ", GOSSIP_SENDER_MAIN, 18);
pPlayer->ADD_GOSSIP_ITEM(8, "|TInterface/ICONS/Achievement_Arena_2v2_7:30|t Blood Elf Demon Girl ", GOSSIP_SENDER_MAIN, 19);
pPlayer->ADD_GOSSIP_ITEM(8, "|TInterface/ICONS/Achievement_Arena_2v2_7:30|t Human 19 Twink ", GOSSIP_SENDER_MAIN, 20);
pPlayer->ADD_GOSSIP_ITEM(8, "|TInterface/ICONS/Achievement_Arena_2v2_7:30|t Undead 19 Twink ", GOSSIP_SENDER_MAIN, 21);
}
pPlayer->PlayerTalkClass->SendGossipMenu(9452, pCreature->GetGUID());
break;
case 4:
if (pPlayer->HasItemCount(29434, 1, true))
{
pPlayer->DestroyItemCount(29434, 1, true);
pPlayer->SetDisplayId(20370);
pPlayer->SetFloatValue(OBJECT_FIELD_SCALE_X, 1);
pPlayer->CLOSE_GOSSIP_MENU();
ChatHandler(pPlayer->GetSession()).PSendSysMessage("You have been Morphed into a Female Blood Elf.", pPlayer -> GetGUID());
}
else
{
pPlayer->CLOSE_GOSSIP_MENU();
ChatHandler(pPlayer->GetSession()).PSendSysMessage("You don't have the required amount of Morph Tokens.", pPlayer -> GetGUID());
}
break;
case 5:
if (pPlayer->HasItemCount(29434, 1, true))
{
pPlayer->DestroyItemCount(29434, 1, true);
pPlayer->SetDisplayId(20369);
pPlayer->SetFloatValue(OBJECT_FIELD_SCALE_X, 1);
pPlayer->CLOSE_GOSSIP_MENU();
ChatHandler(pPlayer->GetSession()).PSendSysMessage("You have been Morphed into a Male Blood Elf.", pPlayer -> GetGUID());
}
else
{
pPlayer->CLOSE_GOSSIP_MENU();
ChatHandler(pPlayer->GetSession()).PSendSysMessage("You don't have the required amount of Morph Tokens.", pPlayer -> GetGUID());
}
break;
case 6:
if (pPlayer->HasItemCount(29434, 1, true))
{
pPlayer->DestroyItemCount(29434, 1, true);
pPlayer->SetDisplayId(20320);
pPlayer->SetFloatValue(OBJECT_FIELD_SCALE_X, 1);
pPlayer->CLOSE_GOSSIP_MENU();
ChatHandler(pPlayer->GetSession()).PSendSysMessage("You have been Morphed into a Gnome Female.", pPlayer -> GetGUID());
}
else
{
pPlayer->CLOSE_GOSSIP_MENU();
ChatHandler(pPlayer->GetSession()).PSendSysMessage("You don't have the required amount of Morph Tokens.", pPlayer -> GetGUID());
}
break;
case 7:
if (pPlayer->HasItemCount(29434, 1, true))
{
pPlayer->DestroyItemCount(29434, 1, true);
pPlayer->SetDisplayId(20580);
pPlayer->SetFloatValue(OBJECT_FIELD_SCALE_X, 1);
pPlayer->CLOSE_GOSSIP_MENU();
ChatHandler(pPlayer->GetSession()).PSendSysMessage("You have been Morphed into a Gnome Male.", pPlayer -> GetGUID());
}
else
{
pPlayer->CLOSE_GOSSIP_MENU();
ChatHandler(pPlayer->GetSession()).PSendSysMessage("You don't have the required amount of Morph Tokens.", pPlayer -> GetGUID());
}
break;
case 8:
if (pPlayer->HasItemCount(29434, 1, true))
{
pPlayer->DestroyItemCount(29434, 1, true);
pPlayer->SetDisplayId(19724);
pPlayer->SetFloatValue(OBJECT_FIELD_SCALE_X, 1);
pPlayer->CLOSE_GOSSIP_MENU();
ChatHandler(pPlayer->GetSession()).PSendSysMessage("You have been Morphed into a Human Female.", pPlayer -> GetGUID());
}
else
{
pPlayer->CLOSE_GOSSIP_MENU();
ChatHandler(pPlayer->GetSession()).PSendSysMessage("You don't have the required amount of Morph Tokens.", pPlayer -> GetGUID());
}
break;
case 9:
if (pPlayer->HasItemCount(29434, 1, true))
{
pPlayer->DestroyItemCount(29434, 1, true);
pPlayer->SetDisplayId(19723);
pPlayer->SetFloatValue(OBJECT_FIELD_SCALE_X, 1);
pPlayer->CLOSE_GOSSIP_MENU();
ChatHandler(pPlayer->GetSession()).PSendSysMessage("You have been Morphed into a Human Male.", pPlayer -> GetGUID());
}
else
{
pPlayer->CLOSE_GOSSIP_MENU();
ChatHandler(pPlayer->GetSession()).PSendSysMessage("You don't have the required amount of Morph Tokens.", pPlayer -> GetGUID());
}
break;
case 10:
if (pPlayer->HasItemCount(29434, 1, true))
{
pPlayer->DestroyItemCount(29434, 1, true);
pPlayer->SetDisplayId(20584);
pPlayer->SetFloatValue(OBJECT_FIELD_SCALE_X, 1);
pPlayer->CLOSE_GOSSIP_MENU();
ChatHandler(pPlayer->GetSession()).PSendSysMessage("You have been Morphed into a Tauren Female.", pPlayer -> GetGUID());
}
else
{
pPlayer->CLOSE_GOSSIP_MENU();
ChatHandler(pPlayer->GetSession()).PSendSysMessage("You don't have the required amount of Morph Tokens.", pPlayer -> GetGUID());
}
break;
case 11:
if (pPlayer->HasItemCount(29434, 1, true))
{
pPlayer->DestroyItemCount(29434, 1, true);
pPlayer->SetDisplayId(20319);
pPlayer->SetFloatValue(OBJECT_FIELD_SCALE_X, 1);
pPlayer->CLOSE_GOSSIP_MENU();
ChatHandler(pPlayer->GetSession()).PSendSysMessage("You have been Morphed into a Tauren Male", pPlayer -> GetGUID());
}
else
{
pPlayer->CLOSE_GOSSIP_MENU();
ChatHandler(pPlayer->GetSession()).PSendSysMessage("You don't have the required amount of Morph Tokens.", pPlayer -> GetGUID());
}
break;
case 12:
if (pPlayer->HasItemCount(29434, 1, true))
{
pPlayer->DestroyItemCount(29434, 1, true);
pPlayer->SetDisplayId(25042);
pPlayer->SetFloatValue(OBJECT_FIELD_SCALE_X, 1);
pPlayer->CLOSE_GOSSIP_MENU();
ChatHandler(pPlayer->GetSession()).PSendSysMessage("You have been Morphed into a Undead Pirate", pPlayer -> GetGUID());
}
else
{
pPlayer->CLOSE_GOSSIP_MENU();
ChatHandler(pPlayer->GetSession()).PSendSysMessage("You don't have the required amount of Morph Tokens.", pPlayer -> GetGUID());
}
break;
case 13:
if (pPlayer->HasItemCount(29434, 1, true))
{
pPlayer->DestroyItemCount(29434, 1, true);
pPlayer->SetDisplayId(24942);
pPlayer->SetFloatValue(OBJECT_FIELD_SCALE_X, 1);
pPlayer->CLOSE_GOSSIP_MENU();
ChatHandler(pPlayer->GetSession()).PSendSysMessage("You have been Morphed into a Etherial", pPlayer -> GetGUID());
}
else
{
pPlayer->CLOSE_GOSSIP_MENU();
ChatHandler(pPlayer->GetSession()).PSendSysMessage("You don't have the required amount of Morph Tokens.", pPlayer -> GetGUID());
}
break;
case 14:
if (pPlayer->HasItemCount(29434, 1, true))
{
pPlayer->DestroyItemCount(29434, 1, true);
pPlayer->SetDisplayId(23875);
pPlayer->SetFloatValue(OBJECT_FIELD_SCALE_X, 1);
pPlayer->CLOSE_GOSSIP_MENU();
ChatHandler(pPlayer->GetSession()).PSendSysMessage("You have been Morphed into a Mad Scientist", pPlayer -> GetGUID());
}
else
{
pPlayer->CLOSE_GOSSIP_MENU();
ChatHandler(pPlayer->GetSession()).PSendSysMessage("You don't have the required amount of Morph Tokens.", pPlayer -> GetGUID());
}
break;
case 15:
if (pPlayer->HasItemCount(29434, 1, true))
{
pPlayer->DestroyItemCount(29434, 1, true);
pPlayer->SetDisplayId(22634);
pPlayer->SetFloatValue(OBJECT_FIELD_SCALE_X, 0.5);
pPlayer->CLOSE_GOSSIP_MENU();
ChatHandler(pPlayer->GetSession()).PSendSysMessage("You have been Morphed into a Tattooed Man", pPlayer -> GetGUID());
}
else
{
pPlayer->CLOSE_GOSSIP_MENU();
ChatHandler(pPlayer->GetSession()).PSendSysMessage("You don't have the required amount of Morph Tokens.", pPlayer -> GetGUID());
}
break;
case 16:
if (pPlayer->HasItemCount(29434, 1, true))
{
pPlayer->DestroyItemCount(29434, 1, true);
pPlayer->SetDisplayId(24793);
pPlayer->SetFloatValue(OBJECT_FIELD_SCALE_X, 1);
pPlayer->CLOSE_GOSSIP_MENU();
ChatHandler(pPlayer->GetSession()).PSendSysMessage("You have been Morphed into a Necromancer", pPlayer -> GetGUID());
}
else
{
pPlayer->CLOSE_GOSSIP_MENU();
ChatHandler(pPlayer->GetSession()).PSendSysMessage("You don't have the required amount of Morph Tokens.", pPlayer -> GetGUID());
}
break;
case 17:
if (pPlayer->HasItemCount(29434, 1, true))
{
pPlayer->DestroyItemCount(29434, 1, true);
pPlayer->SetDisplayId(24495);
pPlayer->SetFloatValue(OBJECT_FIELD_SCALE_X, 0.7f);
pPlayer->CLOSE_GOSSIP_MENU();
ChatHandler(pPlayer->GetSession()).PSendSysMessage("You have been Morphed into a Skeletal Mage", pPlayer -> GetGUID());
}
else
{
pPlayer->CLOSE_GOSSIP_MENU();
ChatHandler(pPlayer->GetSession()).PSendSysMessage("You don't have the required amount of Morph Tokens.", pPlayer -> GetGUID());
}
break;
case 18:
if (pPlayer->HasItemCount(29434, 1, true))
{
pPlayer->DestroyItemCount(29434, 1, true);
pPlayer->SetDisplayId(24938);
pPlayer->SetFloatValue(OBJECT_FIELD_SCALE_X, 1);
pPlayer->CLOSE_GOSSIP_MENU();
ChatHandler(pPlayer->GetSession()).PSendSysMessage("You have been Morphed into a Frost Troll", pPlayer -> GetGUID());
}
else
{
pPlayer->CLOSE_GOSSIP_MENU();
ChatHandler(pPlayer->GetSession()).PSendSysMessage("You don't have the required amount of Morph Tokens.", pPlayer -> GetGUID());
}
break;
case 19:
if (pPlayer->HasItemCount(29434, 1, true))
{
pPlayer->DestroyItemCount(29434, 1, true);
pPlayer->SetDisplayId(24930);
pPlayer->SetFloatValue(OBJECT_FIELD_SCALE_X, 1);
pPlayer->CLOSE_GOSSIP_MENU();
ChatHandler(pPlayer->GetSession()).PSendSysMessage("You have been Morphed into a BELF Demon Girl", pPlayer -> GetGUID());
}
else
{
pPlayer->CLOSE_GOSSIP_MENU();
ChatHandler(pPlayer->GetSession()).PSendSysMessage("You don't have the required amount of Morph Tokens.", pPlayer -> GetGUID());
}
break;
case 20:
if (pPlayer->HasItemCount(29434, 1, true))
{
pPlayer->DestroyItemCount(29434, 1, true);
pPlayer->SetDisplayId(29796);
pPlayer->SetFloatValue(OBJECT_FIELD_SCALE_X, 1);
pPlayer->CLOSE_GOSSIP_MENU();
ChatHandler(pPlayer->GetSession()).PSendSysMessage("You have been Morphed into a Human 19 Twink", pPlayer -> GetGUID());
}
else
{
pPlayer->CLOSE_GOSSIP_MENU();
ChatHandler(pPlayer->GetSession()).PSendSysMessage("You don't have the required amount of Morph Tokens.", pPlayer -> GetGUID());
}
break;
case 21:
if (pPlayer->HasItemCount(29434, 1, true))
{
pPlayer->DestroyItemCount(29434, 1, true);
pPlayer->SetDisplayId(29795);
pPlayer->SetFloatValue(OBJECT_FIELD_SCALE_X, 1);
pPlayer->CLOSE_GOSSIP_MENU();
ChatHandler(pPlayer->GetSession()).PSendSysMessage("You have been Morphed into a Undead 19 Twink", pPlayer -> GetGUID());
}
else
{
pPlayer->CLOSE_GOSSIP_MENU();
ChatHandler(pPlayer->GetSession()).PSendSysMessage("You don't have the required amount of Morph Tokens.", pPlayer -> GetGUID());
}
break;
}
return true;
}
};
void AddSC_npc_supporter()
{
new npc_support();
}