
ArenaTitle NPC for OregonCore
By: a guest on
Jul 3rd, 2012 | syntax:
C++ | size: 1.62 KB | hits: 62 | expires: Never
#define MSG_ERR_ARENA_POINT "You haven't enough TR!"
#define MSG_ERR_TITLE "Your character already have this title!"
#define MSG_ERR_INCOMBAT "You are in combat."
#define MSG_GOSSIP_TEXT_42 "Gladiator"
#define reqpersonalarenarating 1700
bool AddTitle(Player* player , Creature* creature, CharTitlesEntry const* titleInfo)
{
if (player->HasTitle(titleInfo)) {
creature->MonsterWhisper(MSG_ERR_TITLE, player->GetGUID());
player->CLOSE_GOSSIP_MENU();
return false;
}
if (player->GetMaxPersonalArenaRatingRequirement() < reqpersonalarenarating) {
creature->MonsterWhisper(MSG_ERR_ARENA_POINT, player->GetGUID());
player->CLOSE_GOSSIP_MENU();
} else{
player->SetTitle(titleInfo);
player->CLOSE_GOSSIP_MENU();
}
return true;
}
bool GossipHello_npc_title(Player *player, Creature *creature)
{
player->PlayerTalkClass->ClearMenus();
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TRAINER, MSG_GOSSIP_TEXT_42, GOSSIP_SENDER_MAIN, 2);
player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, creature->GetGUID());
return true;
}
bool GossipSelect_npc_title(Player *player, Creature *creature, uint32 sender, uint32 action )
{
if (!player->getAttackers().empty())
{
creature->MonsterWhisper(MSG_ERR_INCOMBAT, player->GetGUID());
player->CLOSE_GOSSIP_MENU();
return false;
}
switch (action)
{
case 2:
{CharTitlesEntry const* titleInfo = sCharTitlesStore.LookupEntry(144);
AddTitle(player, creature, titleInfo);
}
break;
}
return true;
}