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

406 lines
9.9 KiB
C++
Raw Permalink Normal View History

2023-08-16 00:50:59 +02:00
#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;
}