mirror of
https://github.com/ornfelt/azerothcore_lua_scripts
synced 2026-08-22 06:26:03 -04:00
406 lines
No EOL
9.9 KiB
C++
406 lines
No EOL
9.9 KiB
C++
#include "ScriptPCH.h"
|
||
|
||
#include "ScriptMgr.h"
|
||
|
||
|
||
|
||
#define MSG_GOSSIP_TEXT_GETTING_STARTED "Welcome to the Revival DM server!"
|
||
|
||
|
||
#define MSG_ERR_INCOMBAT "Please out of combat!"
|
||
|
||
#define MSG_ERR_ARENA_POINT "Need more Arena Points!"
|
||
|
||
|
||
#define MSG_CHANGE_FACTION_COMPLETE "Please logout and change faction. Do not forget to leave the game and DELETE folder Cache!"
|
||
|
||
|
||
#define MSG_GOSSIP_TEXT_MAX_SKILL "Все уимения на максимум"
|
||
#define MSG_GOSSIP_TEXT_RIDING "Изучить езду"
|
||
|
||
|
||
#define MSG_GOSSIP_TEXT_CHANGE_FACTION "Change Faction - 30.000 Arena Points."
|
||
|
||
#define MSG_GOSSIP_TEXT_A7_PRIEST_HEAL "A8 set for Discipline Priest."
|
||
|
||
#define MSG_GOSSIP_TEXT_A7_PRIEST_DD "A8 set for Shadow Priest."
|
||
|
||
#define MSG_GOSSIP_TEXT_A7_DRUID_FERAL "A8 set for Feral Combat Druid."
|
||
|
||
#define MSG_GOSSIP_TEXT_A7_DRUID_RESTOR "A8 set for Restoration Druid."
|
||
|
||
#define MSG_GOSSIP_TEXT_A7_DRUID_BALANSE "A8 set for Balance Druid."
|
||
|
||
#define MSG_GOSSIP_TEXT_A7_WARRIOR "A8 set for Warrior."
|
||
|
||
#define MSG_GOSSIP_TEXT_A7_MAGE "A8 set for Mage."
|
||
|
||
#define MSG_GOSSIP_TEXT_A7_HUNTER "A8 set for Hunter."
|
||
|
||
#define MSG_GOSSIP_TEXT_A7_PALLADIN_HOLI "A8 set for Holy Paladin."
|
||
|
||
#define MSG_GOSSIP_TEXT_A7_PALLADIN_DD "A8 set for Retribution Paladin."
|
||
|
||
#define MSG_GOSSIP_TEXT_A7_ROGUE "A8 set for Rogue."
|
||
|
||
#define MSG_GOSSIP_TEXT_A7_DK "A8 set for Death Knight."
|
||
|
||
#define MSG_GOSSIP_TEXT_A7_LOOK "A8 set for Warlock."
|
||
|
||
#define MSG_GOSSIP_TEXT_A7_SHAMAN_HOLI "A8 set for Restoration Shaman."
|
||
|
||
#define MSG_GOSSIP_TEXT_A7_SHAMAN_RDD "A8 set for Elemental Shaman."
|
||
|
||
#define MSG_GOSSIP_TEXT_A7_SHAMAN_DD "A8 set for Enhancement Shaman."
|
||
|
||
|
||
#define CONST_ARENA_POINT_1 15000
|
||
|
||
#define CONST_ARENA_POINT_2 30000
|
||
|
||
|
||
|
||
int warlockItem[5] = {51536,51537,51538,51539,51540};
|
||
|
||
int warriorItem[5] = {51541,51542,51543,51544,51545};
|
||
|
||
int druidRestorItem[5] = {51419,51420,51421,51422,51424};
|
||
|
||
int druidBalanceItem[5] = {51433,51434,51435,51436,51438};
|
||
|
||
int druidFeralItem[5] = {51425,51426,51427,51428,51430};
|
||
|
||
int priestDiscItem[5] = {51482,51483,51484,51485,51486};
|
||
|
||
int priestShadowItem[5] = {51487,51488,51489,51490,51491};
|
||
|
||
int mageItem[5] = {51463,51464,51465,51466,51467};
|
||
|
||
int hunterItem[5] = {51458,51459,51460,51461,51462};
|
||
|
||
int paladinHolyItem[5] = {51468,51469,51470,51471,51473};
|
||
|
||
int paladinMeleeItem[5] = {51474,51475,51476,51477,51479};
|
||
|
||
int rogueItem[5] = {51492,51493,51494,51495,51496};
|
||
|
||
int deathknightItem[5] = {51413,51414,51415,51416,51418};
|
||
|
||
int shamanMeleeItem[5] = {51503,51504,51505,51506,51508};
|
||
|
||
int shamanElementalItem[5] = {51509,51510,51511,51512,51514};
|
||
|
||
int shamanRestorItem[5] = {51497,51498,51499,51500,51502};
|
||
|
||
|
||
|
||
class npc_other : public CreatureScript
|
||
|
||
{
|
||
|
||
public:
|
||
|
||
npc_other() : CreatureScript("npc_other") { }
|
||
|
||
|
||
|
||
void AddSet(Player* player, int massive[5])
|
||
|
||
{
|
||
|
||
for (int i = 0; i < 5; ++i)
|
||
|
||
{
|
||
|
||
player->AddItem(massive[i], 1);
|
||
|
||
}
|
||
|
||
player->CLOSE_GOSSIP_MENU();
|
||
|
||
}
|
||
|
||
|
||
|
||
bool OnGossipHello(Player *player, Creature *creature)
|
||
|
||
{
|
||
|
||
creature->MonsterWhisper(MSG_GOSSIP_TEXT_GETTING_STARTED, player->GetGUID());
|
||
|
||
|
||
int playerClass = player->getClass();
|
||
|
||
switch (playerClass)
|
||
|
||
{
|
||
|
||
case CLASS_WARLOCK:
|
||
|
||
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, MSG_GOSSIP_TEXT_A7_LOOK, GOSSIP_SENDER_MAIN, 7);
|
||
|
||
break;
|
||
|
||
case CLASS_WARRIOR:
|
||
|
||
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, MSG_GOSSIP_TEXT_A7_WARRIOR, GOSSIP_SENDER_MAIN, 8);
|
||
|
||
break;
|
||
|
||
case CLASS_DRUID:
|
||
|
||
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, MSG_GOSSIP_TEXT_A7_DRUID_RESTOR, GOSSIP_SENDER_MAIN, 9);
|
||
|
||
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, MSG_GOSSIP_TEXT_A7_DRUID_BALANSE, GOSSIP_SENDER_MAIN, 10);
|
||
|
||
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, MSG_GOSSIP_TEXT_A7_DRUID_FERAL, GOSSIP_SENDER_MAIN, 11);
|
||
|
||
break;
|
||
|
||
case CLASS_PRIEST:
|
||
|
||
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, MSG_GOSSIP_TEXT_A7_PRIEST_HEAL, GOSSIP_SENDER_MAIN, 12);
|
||
|
||
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, MSG_GOSSIP_TEXT_A7_PRIEST_DD, GOSSIP_SENDER_MAIN, 13);
|
||
|
||
break;
|
||
|
||
case CLASS_MAGE:
|
||
|
||
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, MSG_GOSSIP_TEXT_A7_MAGE, GOSSIP_SENDER_MAIN, 14);
|
||
|
||
break;
|
||
|
||
case CLASS_PALADIN:
|
||
|
||
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, MSG_GOSSIP_TEXT_A7_PALLADIN_HOLI, GOSSIP_SENDER_MAIN, 15);
|
||
|
||
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, MSG_GOSSIP_TEXT_A7_PALLADIN_DD, GOSSIP_SENDER_MAIN, 16);
|
||
|
||
break;
|
||
|
||
case CLASS_ROGUE:
|
||
|
||
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, MSG_GOSSIP_TEXT_A7_ROGUE, GOSSIP_SENDER_MAIN, 17);
|
||
|
||
break;
|
||
|
||
case CLASS_DEATH_KNIGHT:
|
||
|
||
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, MSG_GOSSIP_TEXT_A7_DK, GOSSIP_SENDER_MAIN, 18);
|
||
|
||
break;
|
||
|
||
case CLASS_SHAMAN:
|
||
|
||
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, MSG_GOSSIP_TEXT_A7_SHAMAN_DD, GOSSIP_SENDER_MAIN, 19);
|
||
|
||
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, MSG_GOSSIP_TEXT_A7_SHAMAN_RDD, GOSSIP_SENDER_MAIN, 20);
|
||
|
||
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, MSG_GOSSIP_TEXT_A7_SHAMAN_HOLI, GOSSIP_SENDER_MAIN, 21);
|
||
|
||
break;
|
||
|
||
case CLASS_HUNTER:
|
||
|
||
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, MSG_GOSSIP_TEXT_A7_HUNTER, GOSSIP_SENDER_MAIN, 22);
|
||
|
||
break;
|
||
|
||
}
|
||
|
||
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, MSG_GOSSIP_TEXT_MAX_SKILL, GOSSIP_SENDER_MAIN, 4);
|
||
|
||
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, MSG_GOSSIP_TEXT_RIDING, GOSSIP_SENDER_MAIN, 6);
|
||
|
||
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, MSG_GOSSIP_TEXT_CHANGE_FACTION, GOSSIP_SENDER_MAIN, 25);
|
||
|
||
player->SEND_GOSSIP_MENU (DEFAULT_GOSSIP_MESSAGE, creature->GetGUID());
|
||
|
||
return true;
|
||
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
bool OnGossipSelect(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 4:
|
||
|
||
player->UpdateSkillsToMaxSkillsForLevel();
|
||
|
||
player->CLOSE_GOSSIP_MENU();
|
||
|
||
break;
|
||
|
||
case 6:
|
||
|
||
player->SetSkill(762, 6, 450, 450);
|
||
|
||
player->learnSpell(54197, true);
|
||
|
||
player->CLOSE_GOSSIP_MENU();
|
||
|
||
break;
|
||
|
||
case 7:
|
||
|
||
AddSet(player, warlockItem);
|
||
|
||
player->CLOSE_GOSSIP_MENU();
|
||
|
||
break;
|
||
|
||
case 8:
|
||
|
||
AddSet(player, warriorItem);
|
||
|
||
break;
|
||
|
||
case 9:
|
||
|
||
AddSet(player, druidRestorItem);
|
||
|
||
break;
|
||
|
||
case 10:
|
||
|
||
AddSet(player, druidBalanceItem);
|
||
|
||
break;
|
||
|
||
case 11:
|
||
|
||
AddSet(player, druidFeralItem);
|
||
|
||
break;
|
||
|
||
case 12:
|
||
|
||
AddSet(player, priestDiscItem);
|
||
|
||
break;
|
||
|
||
case 13:
|
||
|
||
AddSet(player, priestShadowItem);
|
||
|
||
break;
|
||
|
||
case 14:
|
||
|
||
AddSet(player, mageItem);
|
||
|
||
break;
|
||
|
||
case 15:
|
||
|
||
AddSet(player, paladinHolyItem);
|
||
|
||
break;
|
||
|
||
case 16:
|
||
|
||
AddSet(player, paladinMeleeItem);
|
||
|
||
break;
|
||
|
||
case 17:
|
||
|
||
AddSet(player, rogueItem);
|
||
|
||
break;
|
||
|
||
case 18:
|
||
|
||
AddSet(player, deathknightItem);
|
||
|
||
break;
|
||
|
||
case 19:
|
||
|
||
AddSet(player, shamanMeleeItem);
|
||
|
||
break;
|
||
|
||
case 20:
|
||
|
||
AddSet(player, shamanRestorItem);
|
||
|
||
break;
|
||
|
||
case 21:
|
||
|
||
AddSet(player, shamanElementalItem);
|
||
|
||
break;
|
||
|
||
case 22:
|
||
|
||
AddSet(player, hunterItem);
|
||
|
||
|
||
case 25:
|
||
|
||
if (player->GetArenaPoints() < CONST_ARENA_POINT_2)
|
||
|
||
{
|
||
|
||
creature->MonsterWhisper(MSG_ERR_ARENA_POINT, player->GetGUID());
|
||
|
||
player->CLOSE_GOSSIP_MENU();
|
||
|
||
}else{
|
||
|
||
// ?????? ????? ???????
|
||
|
||
player->SetAtLoginFlag(AT_LOGIN_CHANGE_FACTION);
|
||
|
||
player->ModifyArenaPoints(-CONST_ARENA_POINT_2);
|
||
|
||
creature->MonsterWhisper(MSG_CHANGE_FACTION_COMPLETE, player->GetGUID());
|
||
|
||
player->CLOSE_GOSSIP_MENU();
|
||
|
||
}
|
||
|
||
break;
|
||
|
||
}
|
||
|
||
return true;
|
||
|
||
}
|
||
|
||
};
|
||
|
||
|
||
|
||
void AddSC_npc_other()
|
||
|
||
{
|
||
|
||
new npc_other;
|
||
|
||
} |