mirror of
https://github.com/ornfelt/azerothcore_lua_scripts
synced 2026-08-22 06:26:03 -04:00
369 lines
No EOL
20 KiB
C++
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();
|
|
} |