eluna-scripts-ornfelt/lua/WowEmulationScriptPack/C++/npc_other.cpp
2024-09-23 07:59:23 +02:00

406 lines
No EOL
9.9 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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;
}