mirror of
https://github.com/ornfelt/azerothcore_lua_scripts
synced 2026-08-22 06:26:03 -04:00
264 lines
8.2 KiB
C++
264 lines
8.2 KiB
C++
|
|
//Special Thanks for Saqirmdev
|
||
|
|
#include "ScriptPCH.h"
|
||
|
|
#include "InstanceSaveMgr.h"
|
||
|
|
#include "InstanceScript.h"
|
||
|
|
#include "MapManager.h"
|
||
|
|
|
||
|
|
class npc_change : public CreatureScript
|
||
|
|
{
|
||
|
|
public:
|
||
|
|
npc_change() : CreatureScript("npc_change") { }
|
||
|
|
|
||
|
|
bool OnGossipHello(Player *player, Creature *_creature)
|
||
|
|
{
|
||
|
|
if (player->isInCombat())
|
||
|
|
{
|
||
|
|
/// @todo check Combat
|
||
|
|
_creature->MonsterWhisper("You are in Combat", player->GetGUID());
|
||
|
|
player->CLOSE_GOSSIP_MENU();
|
||
|
|
return true;
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
player->ADD_GOSSIP_ITEM( 0, "10 Mark -> Reset Instance" , GOSSIP_SENDER_MAIN, 1);
|
||
|
|
player->ADD_GOSSIP_ITEM( 0, "10 Mark -> 25 Arena Points" , GOSSIP_SENDER_MAIN, 2);
|
||
|
|
player->ADD_GOSSIP_ITEM( 0, "10 Badge of Justice -> 1 Mark" , GOSSIP_SENDER_MAIN, 3);
|
||
|
|
player->ADD_GOSSIP_ITEM( 0, "2 Mark -> 1 EoT" , GOSSIP_SENDER_MAIN, 4);
|
||
|
|
player->ADD_GOSSIP_ITEM( 0, "4 Mark -> 5000 Honor" , GOSSIP_SENDER_MAIN, 5);
|
||
|
|
player->ADD_GOSSIP_ITEM( 0, "1 Mark -> 10 Badge of Justice" , GOSSIP_SENDER_MAIN, 6);
|
||
|
|
player->ADD_GOSSIP_ITEM( 0, "1 Mark -> 10 Wood(GH MARK)" , GOSSIP_SENDER_MAIN, 7);
|
||
|
|
player->ADD_GOSSIP_ITEM( 0, "1 Mark -> 1 Metal(GH MARK)" , GOSSIP_SENDER_MAIN, 7);
|
||
|
|
player->ADD_GOSSIP_ITEM( 0, "100 Mark -> [MOUNT]Reins of the Raven Lord" , GOSSIP_SENDER_MAIN, 16);
|
||
|
|
player->ADD_GOSSIP_ITEM( 0, "50 Mark -> [MOUNT]Swift Zhevra" , GOSSIP_SENDER_MAIN, 17);
|
||
|
|
player->ADD_GOSSIP_ITEM( 0, "75 Mark -> [MOUNT]Swift Zulian Tiger" , GOSSIP_SENDER_MAIN, 18);
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, _creature->GetGUID());
|
||
|
|
return true;
|
||
|
|
}
|
||
|
|
|
||
|
|
bool OnGossipSelect(Player *player, Creature *_creature, uint32 sender, uint32 uiAction)
|
||
|
|
{
|
||
|
|
|
||
|
|
if (sender != GOSSIP_SENDER_MAIN)
|
||
|
|
return true;
|
||
|
|
|
||
|
|
player->PlayerTalkClass->ClearMenus();
|
||
|
|
|
||
|
|
switch(uiAction)
|
||
|
|
{
|
||
|
|
|
||
|
|
case 1:
|
||
|
|
if (player->HasItemCount(19322, 10, true))
|
||
|
|
{
|
||
|
|
player->DestroyItemCount(19322, 10, true);
|
||
|
|
// Unbind ALL instances
|
||
|
|
for (uint8 i = 0; i < MAX_DIFFICULTY; ++i)
|
||
|
|
{
|
||
|
|
Player::BoundInstancesMap &binds = player->GetBoundInstances(Difficulty(i));
|
||
|
|
for (Player::BoundInstancesMap::iterator itr = binds.begin(); itr != binds.end();)
|
||
|
|
{
|
||
|
|
InstanceSave* save = itr->second.save;
|
||
|
|
if (itr->first != player->GetMapId())
|
||
|
|
player->UnbindInstance(itr, Difficulty(i));
|
||
|
|
else
|
||
|
|
++itr;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
_creature->MonsterWhisper("Unbind all Instances complete!", player->GetGUID());
|
||
|
|
player->CLOSE_GOSSIP_MENU();
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
_creature->MonsterWhisper("Missing items", player->GetGUID());
|
||
|
|
player->CLOSE_GOSSIP_MENU();
|
||
|
|
}
|
||
|
|
break;
|
||
|
|
|
||
|
|
case 2:
|
||
|
|
if (player->HasItemCount(19322, 10, true))
|
||
|
|
{
|
||
|
|
|
||
|
|
player->DestroyItemCount(19322, 10, true);
|
||
|
|
player->ModifyArenaPoints(+25);
|
||
|
|
_creature->MonsterWhisper("Change Succesful!", player->GetGUID());
|
||
|
|
player->CLOSE_GOSSIP_MENU();
|
||
|
|
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
_creature->MonsterWhisper("Missing Items.", player->GetGUID());
|
||
|
|
player->CLOSE_GOSSIP_MENU();
|
||
|
|
}
|
||
|
|
break;
|
||
|
|
|
||
|
|
|
||
|
|
case 3:
|
||
|
|
if (player->HasItemCount(29434, 10, true))
|
||
|
|
{
|
||
|
|
player->DestroyItemCount(29434, 10, true);
|
||
|
|
player->AddItem(19322, 1);
|
||
|
|
_creature->MonsterWhisper("Chance Succesful!", player->GetGUID());
|
||
|
|
player->CLOSE_GOSSIP_MENU();
|
||
|
|
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
_creature->MonsterWhisper("You need more Badge of Justice!", player->GetGUID());
|
||
|
|
player->CLOSE_GOSSIP_MENU();
|
||
|
|
}
|
||
|
|
break;
|
||
|
|
|
||
|
|
case 4:
|
||
|
|
if (player->HasItemCount(19322, 2, true))
|
||
|
|
{
|
||
|
|
|
||
|
|
player->DestroyItemCount(19322, 2, true);
|
||
|
|
player->AddItem(47241, 1);
|
||
|
|
_creature->MonsterWhisper("Chance Succesful!", player->GetGUID());
|
||
|
|
player->CLOSE_GOSSIP_MENU();
|
||
|
|
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
_creature->MonsterWhisper("Missing Items!", player->GetGUID());
|
||
|
|
player->CLOSE_GOSSIP_MENU();
|
||
|
|
}
|
||
|
|
break;
|
||
|
|
|
||
|
|
case 5:
|
||
|
|
if (player->HasItemCount(19322, 4, true))
|
||
|
|
{
|
||
|
|
|
||
|
|
player->ModifyHonorPoints(+5000);
|
||
|
|
player->DestroyItemCount(19322, 4, true);
|
||
|
|
_creature->MonsterWhisper("Chance Succesful!", player->GetGUID());
|
||
|
|
player->CLOSE_GOSSIP_MENU();
|
||
|
|
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
_creature->MonsterWhisper("Missing Items!", player->GetGUID());
|
||
|
|
player->CLOSE_GOSSIP_MENU();
|
||
|
|
|
||
|
|
}
|
||
|
|
break;
|
||
|
|
|
||
|
|
case 6:
|
||
|
|
if (player->HasItemCount(19322, 1, true))
|
||
|
|
{
|
||
|
|
player->AddItem(29434, 10);
|
||
|
|
player->DestroyItemCount(19322, 1, true);
|
||
|
|
_creature->MonsterWhisper("Chance Succesful!", player->GetGUID());
|
||
|
|
player->CLOSE_GOSSIP_MENU();
|
||
|
|
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
_creature->MonsterWhisper("Missing Items!", player->GetGUID());
|
||
|
|
player->CLOSE_GOSSIP_MENU();
|
||
|
|
|
||
|
|
}
|
||
|
|
break;
|
||
|
|
|
||
|
|
case 7: // Wood
|
||
|
|
if (player->HasItemCount(19322, 1, true))
|
||
|
|
{
|
||
|
|
player->AddItem(4470, 10);
|
||
|
|
player->DestroyItemCount(19322, 1, true);
|
||
|
|
_creature->MonsterWhisper("Chance Succesful!", player->GetGUID());
|
||
|
|
player->CLOSE_GOSSIP_MENU();
|
||
|
|
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
_creature->MonsterWhisper("Missing Items!", player->GetGUID());
|
||
|
|
player->CLOSE_GOSSIP_MENU();
|
||
|
|
|
||
|
|
}
|
||
|
|
break;
|
||
|
|
|
||
|
|
case 8: // Metal
|
||
|
|
if (player->HasItemCount(19322, 1, true))
|
||
|
|
{
|
||
|
|
player->AddItem(35691, 1);
|
||
|
|
player->DestroyItemCount(19322, 1, true);
|
||
|
|
_creature->MonsterWhisper("Chance Succesful!", player->GetGUID());
|
||
|
|
player->CLOSE_GOSSIP_MENU();
|
||
|
|
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
_creature->MonsterWhisper("Missing Items!", player->GetGUID());
|
||
|
|
player->CLOSE_GOSSIP_MENU();
|
||
|
|
|
||
|
|
}
|
||
|
|
break;
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
case 16: // Raven Lord Mount
|
||
|
|
if (player->HasItemCount(19322, 100, true))
|
||
|
|
{
|
||
|
|
player->AddItem(32768, 1);
|
||
|
|
player->DestroyItemCount(19322, 100, true);
|
||
|
|
_creature->MonsterWhisper("Chance Succesful!", player->GetGUID());
|
||
|
|
player->CLOSE_GOSSIP_MENU();
|
||
|
|
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
_creature->MonsterWhisper("Missing Items!", player->GetGUID());
|
||
|
|
player->CLOSE_GOSSIP_MENU();
|
||
|
|
|
||
|
|
}
|
||
|
|
break;
|
||
|
|
|
||
|
|
case 17: // Swift Zhevra Mount
|
||
|
|
if (player->HasItemCount(19322, 50, true))
|
||
|
|
{
|
||
|
|
player->AddItem(37719, 1);
|
||
|
|
player->DestroyItemCount(19322, 50, true);
|
||
|
|
_creature->MonsterWhisper("Chance Succesful!", player->GetGUID());
|
||
|
|
player->CLOSE_GOSSIP_MENU();
|
||
|
|
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
_creature->MonsterWhisper("Missing Items!", player->GetGUID());
|
||
|
|
player->CLOSE_GOSSIP_MENU();
|
||
|
|
|
||
|
|
}
|
||
|
|
break;
|
||
|
|
case 18: // Swift Zulian tiger Mount
|
||
|
|
if (player->HasItemCount(19322, 75, true))
|
||
|
|
{
|
||
|
|
player->AddItem(19902, 1);
|
||
|
|
player->DestroyItemCount(19322, 75, true);
|
||
|
|
_creature->MonsterWhisper("Chance Succesful!", player->GetGUID());
|
||
|
|
player->CLOSE_GOSSIP_MENU();
|
||
|
|
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
_creature->MonsterWhisper("Missing Items!", player->GetGUID());
|
||
|
|
player->CLOSE_GOSSIP_MENU();
|
||
|
|
|
||
|
|
}
|
||
|
|
break;
|
||
|
|
default:
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
return true;
|
||
|
|
}
|
||
|
|
};
|
||
|
|
|
||
|
|
void AddSC_npc_change()
|
||
|
|
{
|
||
|
|
new npc_change();
|
||
|
|
}
|