eluna-scripts-ornfelt/lua/WowEmulationScriptPack/C++/instances.cpp

111 lines
3.7 KiB
C++
Raw Permalink Normal View History

2023-08-16 00:50:59 +02:00
#include "ScriptPCH.h"
#include "Chat.h"
class player_berserking : public CreatureScript
{
public:
player_berserking()
: CreatureScript("player_berserking")
{
}
bool OnGossipHello(Player* pPlayer, Creature* pCreature)
{
if(!pPlayer->HasAura(68378))
{
if(pPlayer->GetSession()->GetSecurity() >= 1)
{
pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_DOT, "VIP BERSERKING - 1 VP", GOSSIP_SENDER_MAIN, 1002);
pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_DOT, "VIP BERSERKING - 10 Event Coins", GOSSIP_SENDER_MAIN, 1004);
} else {
pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_DOT, "PLAYER BERSERKING - 2 VP", GOSSIP_SENDER_MAIN, 1000);
pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_DOT, "PLAYER BERSERKING - 20 Event Coins", GOSSIP_SENDER_MAIN, 1003);
}
pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_DOT, "Exit.", GOSSIP_SENDER_MAIN, 1001);
pPlayer->PlayerTalkClass->SendGossipMenu(907, pCreature->GetGUID());
} else {
ChatHandler(pPlayer).PSendSysMessage("You are already berserking.");
pPlayer->PlayerTalkClass->SendCloseGossip();
}
return true;
}
bool OnGossipSelect(Player* pPlayer, Creature* pCreature, uint32 /*uiSender*/, uint32 uiAction)
{
pPlayer->PlayerTalkClass->ClearMenus();
switch (uiAction)
{
case 1000:
if(pPlayer->HasItemCount(40753, 2))
{
pPlayer->AddAura(68378, pPlayer);
pPlayer->DestroyItemCount(40753, 2, true);
ChatHandler(pPlayer).PSendSysMessage("YOU ARE NOW BERSERKING UNTIL YOU LEAVE THIS INSTANCE!");
pPlayer->PlayerTalkClass->SendCloseGossip();
} else {
ChatHandler(pPlayer).PSendSysMessage("To get berserked like this you need 2 Emblem of Voting.");
pPlayer->PlayerTalkClass->SendCloseGossip();
}
break;
case 1002:
if(pPlayer->HasItemCount(40753, 1))
{
pPlayer->AddAura(68378, pPlayer);
pPlayer->DestroyItemCount(40753, 1, true);
ChatHandler(pPlayer).PSendSysMessage("YOU ARE NOW BERSERKING UNTIL YOU LEAVE THIS INSTANCE!");
pPlayer->PlayerTalkClass->SendCloseGossip();
} else {
ChatHandler(pPlayer).PSendSysMessage("To get berserked like this you need 1 Emblem of Voting.");
pPlayer->PlayerTalkClass->SendCloseGossip();
}
break;
case 1003:
if(pPlayer->HasItemCount(23247, 20))
{
pPlayer->AddAura(68378, pPlayer);
pPlayer->DestroyItemCount(23247, 20, true);
ChatHandler(pPlayer).PSendSysMessage("YOU ARE NOW BERSERKING UNTIL YOU LEAVE THIS INSTANCE!");
pPlayer->PlayerTalkClass->SendCloseGossip();
} else {
ChatHandler(pPlayer).PSendSysMessage("To get berserked like this you need 20 Event Coins.");
pPlayer->PlayerTalkClass->SendCloseGossip();
}
break;
case 1004:
if(pPlayer->HasItemCount(23247, 10))
{
pPlayer->AddAura(68378, pPlayer);
pPlayer->DestroyItemCount(23247, 10, true);
ChatHandler(pPlayer).PSendSysMessage("YOU ARE NOW BERSERKING UNTIL YOU LEAVE THIS INSTANCE!");
pPlayer->PlayerTalkClass->SendCloseGossip();
} else {
ChatHandler(pPlayer).PSendSysMessage("To get berserked like this you need 10 Event Coins.");
pPlayer->PlayerTalkClass->SendCloseGossip();
}
break;
case 1001:
pCreature->MonsterSay("Come again anytime you wish to get ZERKED!", LANG_UNIVERSAL, NULL);
pPlayer->PlayerTalkClass->SendCloseGossip();
break;
}
return true;
}
};
void AddSC_player_beserking()
{
new player_berserking();
}