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

698 lines
No EOL
28 KiB
C++
Raw 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"
#include "Language.h"
#define MSG_GOSSIP_TEXT_GETTING_STARTED "Welcome to Warlord-Gaming!"
#define MSG_ERR_HONOR "You do not have enough Honor for the purchase!"
#define MSG_ERR_ARENA_POINT_1 "You do not have enough Apa!"
#define MSG_ERR_TITLE "At this character already has a title!"
#define MSG_ERR_INCOMBAT "You are in combat. Npc To use this exit it."
#define MSG_COMPLETE_RENAME "Make Payment Successfully Produced Logout and enter a new name Personazha.Ne Forget After a name change, leave the game and remove from the Client Folder Cache!"
#define MSG_CUSTOMIZE_COMPLETE "Make Payment succeeded, Logout, and Change the Appearance Personazha.Ne Forget after the change of appearance, leave the game and remove from the Client Folder Cache!"
#define MSG_CHANGE_FACTION_COMPLETE "Make Payment succeeded, Logout, and Change the fraction Personazha.Ne Forget after the change of appearance, leave the game and remove from the Client Folder Cache!"
#define MSG_GOSSIP_TEXT_MAX_HEALTH "Heal me!"
#define MSG_GOSSIP_TEXT_MAX_SKILL "Learn all the skills and weapons of defense."
#define MSG_GOSSIP_TEXT_BUFF_POWER_WORD "Power Word: Fortitude"
#define MSG_GOSSIP_TEXT_BUFF_BLESSING_OF_KINGS "Blessing of Kings"
#define MSG_GOSSIP_TEXT_BUFF_MARK_OF_THE_WILD "Mark of the Wild"
#define MSG_GOSSIP_TEXT_BUFF_ARCANE_BRILLIANCE "Dalaran Brilliance"
#define MSG_GOSSIP_TEXT_BUFF_BLESSING_OF_MIGHT "Greater Blessing of Might"
#define MSG_GOSSIP_TEXT_BUFF_BLESSING_OF_WISDOM "Blessing of Wisdom"
#define MSG_GOSSIP_TEXT_BUFF_THORNS "Thorns"
#define MSG_GOSSIP_TEXT_BUFF_DIVINE_SPIRIT "Divine Spirit"
#define MSG_GOSSIP_TEXT_BUFF_SHADOW_PROTECTION "Shadow Protection"
#define MSG_GOSSIP_TEXT_BUFF_STAMINA "Endurance"
#define MSG_GOSSIP_TEXT_BUFF_MENU "[Buffs Menu] ->"
#define MSG_GOSSIP_TEXT_MAIN_MENU "<- [Return to Main Menu]"
#define MSG_GOSSIP_TEXT_PROFFESION_MENU "[Professions Menu] ->"
#define MSG_GOSSIP_TEXT_PROFFESION_SECON_MENU "[The menu is secondary professions] ->"
#define MSG_GOSSIP_TEXT_RENAME "Character Name Change for Free." / / Thank Crispi
#define MSG_GOSSIP_TEXT_CUSTOM "Changing the appearance of the character for Free" / / Thank Crispi
#define MSG_GOSSIP_TEXT_CHANGE_FACTION "Character Faction Change for Free."
#define MSG_GOSSIP_TEXT_TITLES_JENKINS "Get the title for 500 Jenkins Apa."
#define MSG_GOSSIP_TEXT_TITLES_THE_LOVE_FOOL "Madly in Love Get a rank of 500 Apa."
#define MSG_GOSSIP_TEXT_TITLES_MERRYMAKER "Get Merry title for 500 Apa."
#define MSG_GOSSIP_TEXT_TITLES_SCARAB_LORD "Get the title of Lord of Skorobeev for 500 Apa."
#define MSG_GOSSIP_TEXT_TITLES_THE_NOBLE "Get A wonderful title for 500 Apa."
#define MSG_GOSSIP_TEXT_TITLES_OBSIDIAN_SLAYER "Get the title of Conqueror of Obsidian for 1 thousand Apa."
#define MSG_GOSSIP_TEXT_MORTH_GNOME_MALE "[Turn] Gnome, man."
#define MSG_GOSSIP_TEXT_MORTH_GNOME_FEMALE "[Turn] Dwarf, woman."
#define MSG_GOSSIP_TEXT_MORTH_HUMAN_FEMALE "[Turn] Man, woman."
#define MSG_GOSSIP_TEXT_MORTH_HUMAN_MALE "[Turn] Man, man."
#define MSG_GOSSIP_TEXT_MORTH_BLOOD_ELF_MALE "[Turn] Blood Elf, man."
#define MSG_GOSSIP_TEXT_MORTH_BLOOD_ELF_FEMALE "[Turn] Blood Elf, woman."
#define MSG_GOSSIP_TEXT_MORTH_TAUREN_MALE "[Turn] Tauren, man."
#define MSG_GOSSIP_TEXT_MORTH_TAUREN_FEMALE "[Turn] Tauren, woman."
#define MSG_GOSSIP_TEXT_ALCHEMY "Learn Alchemy"
#define MSG_GOSSIP_TEXT_BLACKSMITHING "Learn Blacksmithing."
#define MSG_GOSSIP_TEXT_ENCNANTING "Learn Enchanting."
#define MSG_GOSSIP_TEXT_ENGINEERING "Learn Engineering."
#define MSG_GOSSIP_TEXT_HERBALISM "Learn Herbalism."
#define MSG_GOSSIP_TEXT_INSCRIPTION "Learn Inscription"
#define MSG_GOSSIP_TEXT_JEWELCRAFTING "Learn Jewelcrafting."
#define MSG_GOSSIP_TEXT_LEATHERWORKING "Learn Leatherworking."
#define MSG_GOSSIP_TEXT_MINING "Learn Mining."
#define MSG_GOSSIP_TEXT_SKINNING "Learn Skinning."
#define MSG_GOSSIP_TEXT_TAILORING "Learn TAiloring."
#define MSG_GOSSIP_TEXT_RIDING "Learn riding."
#define MSG_GOSSIP_TEXT_COOKING "Learn cooking."
#define MSG_GOSSIP_TEXT_FIRST_AID "Learn first aid."
#define MSG_GOSSIP_TEXT_FISHING "Learn fishing."
#define CONST_HONOR_1 0
#define CONST_HONOR_2 0
#define CONST_ARENA_POINT_1 500
#define CONST_ARENA_POINT_2 1000
#define CONST_ARENA_POINT_3 3000
#define CONST_ARENA_POINT_4 5000
class npc_buffer : public CreatureScript
{
public:
npc_buffer() : CreatureScript("npc_buffer") { }
void CompleteLearnProfession(Player *player, Creature * _creature, SkillType skill)
{
if (PlayerAlreadyHasNineProfessions(player) && !IsSecondarySkill(skill))
_creature->MonsterWhisper("Already Trained 2 Proffesion!", player->GetGUID());
else
{
if (!LearnAllRecipesInProfession(player, skill))
_creature->MonsterWhisper("Error!", player->GetGUID());
}
}
bool IsSecondarySkill(SkillType skill) const
{
return skill == SKILL_COOKING || skill == SKILL_FIRST_AID;
}
bool PlayerAlreadyHasNineProfessions(const Player *pPlayer) const
{
uint32 skillCount = 0;
if (pPlayer->HasSkill(SKILL_MINING))
skillCount++;
if (pPlayer->HasSkill(SKILL_SKINNING))
skillCount++;
if (pPlayer->HasSkill(SKILL_HERBALISM))
skillCount++;
if (skillCount >= 2)
return true;
for (uint32 i = 0; i < sSkillLineStore.GetNumRows(); ++i)
{
SkillLineEntry const *SkillInfo = sSkillLineStore.LookupEntry(i);
if (!SkillInfo)
continue;
if (SkillInfo->categoryId == SKILL_CATEGORY_SECONDARY)
continue;
if ((SkillInfo->categoryId != SKILL_CATEGORY_PROFESSION) || !SkillInfo->canLink)
continue;
const uint32 skillID = SkillInfo->id;
if (pPlayer->HasSkill(skillID))
skillCount++;
if (skillCount >= 2)
return true;
}
return false;
}
bool LearnAllRecipesInProfession(Player *player, SkillType skill)
{
ChatHandler handler(player->GetSession());
char* skill_name;
SkillLineEntry const *SkillInfo = sSkillLineStore.LookupEntry(skill);
skill_name = SkillInfo->name[handler.GetSessionDbcLocale()];
if (!SkillInfo)
{
TC_LOG_ERROR(LOG_FILTER_GENERAL, "Teleport NPC: received non-valid skill ID (LearnAllRecipesInProfession)");
return false;
}
LearnSkillRecipesHelper(player, SkillInfo->id);
uint16 maxLevel = player->GetPureMaxSkillValue(SkillInfo->id);
player->SetSkill(SkillInfo->id, player->GetSkillStep(SkillInfo->id), maxLevel, maxLevel);
handler.PSendSysMessage(LANG_COMMAND_LEARN_ALL_RECIPES, skill_name);
return true;
}
// See "static void HandleLearnSkillRecipesHelper(Player* player,uint32 skill_id)" from cs_learn.cpp
void LearnSkillRecipesHelper(Player *player, uint32 skill_id)
{
uint32 classmask = player->getClassMask();
for (uint32 j = 0; j < sSkillLineAbilityStore.GetNumRows(); ++j)
{
SkillLineAbilityEntry const *skillLine = sSkillLineAbilityStore.LookupEntry(j);
if (!skillLine)
continue;
// wrong skill
if (skillLine->skillId != skill_id)
continue;
// not high rank
if (skillLine->forward_spellid)
continue;
// skip racial skills
if (skillLine->racemask != 0)
continue;
// skip wrong class skills
if (skillLine->classmask && (skillLine->classmask & classmask) == 0)
continue;
SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(skillLine->spellId);
if (!spellInfo || !SpellMgr::IsSpellValid(spellInfo, player, false))
continue;
player->learnSpell(skillLine->spellId, false);
}
}
bool OnGossipHello(Player *player, Creature *_creature)
{
_creature->MonsterWhisper(MSG_GOSSIP_TEXT_GETTING_STARTED, player->GetGUID());
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TRAINER, MSG_GOSSIP_TEXT_RIDING, GOSSIP_SENDER_MAIN, 35);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, MSG_GOSSIP_TEXT_MAX_HEALTH, GOSSIP_SENDER_MAIN, 33);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, MSG_GOSSIP_TEXT_MAX_SKILL, GOSSIP_SENDER_MAIN, 34);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TALK, MSG_GOSSIP_TEXT_BUFF_MENU, GOSSIP_SENDER_MAIN, 2);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TALK, MSG_GOSSIP_TEXT_PROFFESION_MENU, GOSSIP_SENDER_MAIN, 36);
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 2:
player->PlayerTalkClass->ClearMenus();
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TRAINER, MSG_GOSSIP_TEXT_BUFF_POWER_WORD, GOSSIP_SENDER_MAIN, 3);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TRAINER, MSG_GOSSIP_TEXT_BUFF_BLESSING_OF_KINGS, GOSSIP_SENDER_MAIN, 4);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TRAINER, MSG_GOSSIP_TEXT_BUFF_MARK_OF_THE_WILD, GOSSIP_SENDER_MAIN, 5);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TRAINER, MSG_GOSSIP_TEXT_BUFF_ARCANE_BRILLIANCE, GOSSIP_SENDER_MAIN, 6);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TRAINER, MSG_GOSSIP_TEXT_BUFF_BLESSING_OF_MIGHT, GOSSIP_SENDER_MAIN, 7);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TRAINER, MSG_GOSSIP_TEXT_BUFF_BLESSING_OF_WISDOM, GOSSIP_SENDER_MAIN, 8);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TRAINER, MSG_GOSSIP_TEXT_BUFF_THORNS, GOSSIP_SENDER_MAIN, 9);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TRAINER, MSG_GOSSIP_TEXT_BUFF_DIVINE_SPIRIT, GOSSIP_SENDER_MAIN, 10);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TRAINER, MSG_GOSSIP_TEXT_BUFF_SHADOW_PROTECTION, GOSSIP_SENDER_MAIN, 11);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TRAINER, MSG_GOSSIP_TEXT_BUFF_STAMINA, GOSSIP_SENDER_MAIN, 12);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TALK, MSG_GOSSIP_TEXT_MAIN_MENU, GOSSIP_SENDER_MAIN, 21);
player->SEND_GOSSIP_MENU (DEFAULT_GOSSIP_MESSAGE,_creature->GetGUID());
break;
case 3:
// Наложение стойкости (Исправлено)
player->CastSpell(player, 69377, true);
player->CLOSE_GOSSIP_MENU();
break;
case 4:
// Наложение Благословение Королей (Исправлено)
player->CastSpell(player, 56525, true);
player->CLOSE_GOSSIP_MENU();
break;
case 5:
// Наложение Знак дикой природы
player->CastSpell(player, 1126, true);
player->CLOSE_GOSSIP_MENU();
break;
case 6:
// Наложение Чародейской гениальности Даларана (Исправлено)
player->CastSpell(player, 61316, true);
player->CLOSE_GOSSIP_MENU();
break;
case 7:
// Наложение Благословение могущества (Исправлено)
player->CastSpell(player, 29381, true);
player->CLOSE_GOSSIP_MENU();
break;
case 8:
// Наложение Благословение мудрости (Исправлено)
player->CastSpell(player, 56521, true);
player->CLOSE_GOSSIP_MENU();
break;
case 9:
// Наложение Шипов (Исправлено)
player->CastSpell(player, 53307, true);
player->CLOSE_GOSSIP_MENU();
break;
case 10:
// Наложение Божественный духа (Исправлено)
player->CastSpell(player, 48074, true);
player->CLOSE_GOSSIP_MENU();
break;
case 11:
// Наложение Защиты от темной магии (Исправлено)
player->CastSpell(player, 48170, true);
player->CLOSE_GOSSIP_MENU();
break;
case 12:
player->CastSpell(player, 48102, true);
player->CLOSE_GOSSIP_MENU();
break;
case 13:
if (player->GetHonorPoints() < CONST_HONOR_1)
{
_creature->MonsterWhisper(MSG_ERR_HONOR, player->GetGUID());
player->CLOSE_GOSSIP_MENU();
}else{
// Наложение берсерка и отнятие 1 ляма хонора (Доработано)
player->CastSpell(player, 41924, true);
player->ModifyHonorPoints(-CONST_HONOR_1);
player->CLOSE_GOSSIP_MENU();
}
break;
case 14:
if (player->GetHonorPoints() < CONST_HONOR_2)
{
_creature->MonsterWhisper(MSG_ERR_HONOR, player->GetGUID());
player->CLOSE_GOSSIP_MENU();
}else{
// Наложение Эгиды Рагнароса(Доработано)
player->CastSpell(player, 20620, true);
player->ModifyHonorPoints(-CONST_HONOR_2);
player->CLOSE_GOSSIP_MENU();
}
break;
case 15:
if (player->GetHonorPoints() < CONST_HONOR_2)
{
_creature->MonsterWhisper(MSG_ERR_HONOR, player->GetGUID());
player->CLOSE_GOSSIP_MENU();
}else{
// Наложение Защита Нелтариона(Доработано)
player->CastSpell(player, 51512, true);
player->ModifyHonorPoints(-CONST_HONOR_2);
player->CLOSE_GOSSIP_MENU();
}
break;
case 16:
if (player->GetHonorPoints() < CONST_HONOR_2)
{
_creature->MonsterWhisper(MSG_ERR_HONOR, player->GetGUID());
player->CLOSE_GOSSIP_MENU();
}else{
// Наложение Благословение А'дала
player->CastSpell(player, 35076, true);
player->ModifyHonorPoints(-CONST_HONOR_2);
player->CLOSE_GOSSIP_MENU();
}
break;
case 17:
if (player->GetHonorPoints() < CONST_HONOR_2)
{
_creature->MonsterWhisper(MSG_ERR_HONOR, player->GetGUID());
player->CLOSE_GOSSIP_MENU();
}else{
// Наложение Критического срабатывания положительных эффектов
player->CastSpell(player, 31305, true);
player->ModifyHonorPoints(-CONST_HONOR_2);
player->CLOSE_GOSSIP_MENU();
}
break;
case 18:
if (player->GetHonorPoints() < CONST_HONOR_2)
{
_creature->MonsterWhisper(MSG_ERR_HONOR, player->GetGUID());
player->CLOSE_GOSSIP_MENU();
}else{
// Наложение Благословения мистера Пинчи
player->CastSpell(player, 33053, true);
player->ModifyHonorPoints(-CONST_HONOR_2);
player->CLOSE_GOSSIP_MENU();
}
break;
case 19:
if (player->GetHonorPoints() < CONST_HONOR_2)
{
_creature->MonsterWhisper(MSG_ERR_HONOR, player->GetGUID());
player->CLOSE_GOSSIP_MENU();
}else{
// Наложение Прозрачности
player->CastSpell(player, 37802, true);
player->ModifyHonorPoints(-CONST_HONOR_2);
player->CLOSE_GOSSIP_MENU();
case 20:
player->PlayerTalkClass->ClearMenus();
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TRAINER, MSG_GOSSIP_TEXT_RIDING, GOSSIP_SENDER_MAIN, 35);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, MSG_GOSSIP_TEXT_MAX_HEALTH, GOSSIP_SENDER_MAIN, 33);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, MSG_GOSSIP_TEXT_MAX_SKILL, GOSSIP_SENDER_MAIN, 34);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TALK, MSG_GOSSIP_TEXT_BUFF_MENU, GOSSIP_SENDER_MAIN, 2);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TALK, MSG_GOSSIP_TEXT_PROFFESION_MENU, GOSSIP_SENDER_MAIN, 36);
player->SEND_GOSSIP_MENU (DEFAULT_GOSSIP_MESSAGE,_creature->GetGUID());
break;
case 21:
player->PlayerTalkClass->ClearMenus();
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, MSG_GOSSIP_TEXT_TITLES_JENKINS, GOSSIP_SENDER_MAIN, 23);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, MSG_GOSSIP_TEXT_TITLES_THE_LOVE_FOOL, GOSSIP_SENDER_MAIN, 24);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, MSG_GOSSIP_TEXT_TITLES_MERRYMAKER, GOSSIP_SENDER_MAIN, 25);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, MSG_GOSSIP_TEXT_TITLES_SCARAB_LORD, GOSSIP_SENDER_MAIN, 26);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, MSG_GOSSIP_TEXT_TITLES_THE_NOBLE, GOSSIP_SENDER_MAIN, 27);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, MSG_GOSSIP_TEXT_TITLES_OBSIDIAN_SLAYER, GOSSIP_SENDER_MAIN, 28);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TALK, MSG_GOSSIP_TEXT_MAIN_MENU, GOSSIP_SENDER_MAIN, 21);
player->SEND_GOSSIP_MENU (DEFAULT_GOSSIP_MESSAGE,_creature->GetGUID());
break;
case 22:
{CharTitlesEntry const* titleInfo = sCharTitlesStore.LookupEntry(143);
if (player->HasTitle(titleInfo))
{
_creature->MonsterWhisper(MSG_ERR_TITLE, player->GetGUID());
player->CLOSE_GOSSIP_MENU();
return false;
}
if (player->GetArenaPoints() < CONST_ARENA_POINT_1)
{
_creature->MonsterWhisper(MSG_ERR_ARENA_POINT_1, player->GetGUID());
player->CLOSE_GOSSIP_MENU();
}else{
// Даем звание Дженкинс
player->SetTitle(titleInfo);
player->ModifyArenaPoints(-CONST_ARENA_POINT_1);
player->CLOSE_GOSSIP_MENU();
}
}
break;
case 23:
{CharTitlesEntry const* titleInfo = sCharTitlesStore.LookupEntry(135);
if (player->HasTitle(titleInfo))
{
_creature->MonsterWhisper(MSG_ERR_TITLE, player->GetGUID());
player->CLOSE_GOSSIP_MENU();
return false;
}
if (player->GetArenaPoints() < CONST_ARENA_POINT_1)
{
_creature->MonsterWhisper(MSG_ERR_ARENA_POINT_1, player->GetGUID());
player->CLOSE_GOSSIP_MENU();
}else{
// Даем звание Безумно Влюбленный
player->SetTitle(titleInfo);
player->ModifyArenaPoints(-CONST_ARENA_POINT_1);
player->CLOSE_GOSSIP_MENU();
}
}
break;
case 24:
{CharTitlesEntry const* titleInfo = sCharTitlesStore.LookupEntry(134);
if (player->HasTitle(titleInfo))
{
_creature->MonsterWhisper(MSG_ERR_TITLE, player->GetGUID());
player->CLOSE_GOSSIP_MENU();
return false;
}
if (player->GetArenaPoints() < CONST_ARENA_POINT_1) {
_creature->MonsterWhisper(MSG_ERR_ARENA_POINT_1, player->GetGUID());
player->CLOSE_GOSSIP_MENU();
}else{
// Даем звание Весельчак
player->SetTitle(titleInfo);
player->ModifyArenaPoints(-CONST_ARENA_POINT_1);
player->CLOSE_GOSSIP_MENU();
}
}
break;
case 25:
{CharTitlesEntry const* titleInfo = sCharTitlesStore.LookupEntry(46);
if (player->HasTitle(titleInfo))
{
_creature->MonsterWhisper(MSG_ERR_TITLE, player->GetGUID());
player->CLOSE_GOSSIP_MENU();
return false;
}
if (player->GetArenaPoints() < CONST_ARENA_POINT_1) {
_creature->MonsterWhisper(MSG_ERR_ARENA_POINT_1, player->GetGUID());
player->CLOSE_GOSSIP_MENU();
}else{
// Даем звание Повелитель Скоробеев
player->SetTitle(titleInfo);
player->ModifyArenaPoints(-CONST_ARENA_POINT_1);
player->CLOSE_GOSSIP_MENU();
}
}
break;
case 26:
{CharTitlesEntry const* titleInfo = sCharTitlesStore.LookupEntry(155);
if (player->HasTitle(titleInfo))
{
_creature->MonsterWhisper(MSG_ERR_TITLE, player->GetGUID());
player->CLOSE_GOSSIP_MENU();
return false;
}
if (player->GetArenaPoints() < CONST_ARENA_POINT_1) {
_creature->MonsterWhisper(MSG_ERR_ARENA_POINT_1, player->GetGUID());
player->CLOSE_GOSSIP_MENU();
}else{
// Даем звание Чудесный
player->SetTitle(titleInfo);
player->ModifyArenaPoints(-CONST_ARENA_POINT_1);
player->CLOSE_GOSSIP_MENU();
}
}
break;
case 27:
{CharTitlesEntry const* titleInfo = sCharTitlesStore.LookupEntry(139);
if (player->HasTitle(titleInfo))
{
_creature->MonsterWhisper(MSG_ERR_TITLE, player->GetGUID());
player->CLOSE_GOSSIP_MENU();
return false;
}
if (player->GetArenaPoints() < CONST_ARENA_POINT_1) {
_creature->MonsterWhisper(MSG_ERR_ARENA_POINT_1, player->GetGUID());
player->CLOSE_GOSSIP_MENU();
}else{
// Даем звание Покоритель Обсидианового святилища
player->SetTitle(titleInfo);
player->ModifyArenaPoints(-CONST_ARENA_POINT_2);
player->CLOSE_GOSSIP_MENU();
}
}
break;
case 28:
player->PlayerTalkClass->ClearMenus();
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, MSG_GOSSIP_TEXT_RENAME, GOSSIP_SENDER_MAIN, 30);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, MSG_GOSSIP_TEXT_CUSTOM, GOSSIP_SENDER_MAIN, 31);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, MSG_GOSSIP_TEXT_CHANGE_FACTION, GOSSIP_SENDER_MAIN, 32);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TALK, MSG_GOSSIP_TEXT_MAIN_MENU, GOSSIP_SENDER_MAIN, 21);
player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE,_creature->GetGUID());
break;
case 29:
if (player->GetArenaPoints() < CONST_ARENA_POINT_3)
{
_creature->MonsterWhisper(MSG_ERR_ARENA_POINT_1, player->GetGUID());
player->CLOSE_GOSSIP_MENU();
}else{
// Делаем Ренейм
player->SetAtLoginFlag(AT_LOGIN_RENAME);
player->ModifyArenaPoints(-CONST_ARENA_POINT_0);
_creature->MonsterWhisper(MSG_COMPLETE_RENAME, player->GetGUID());
player->CLOSE_GOSSIP_MENU();
}
break;
case 30:
if (player->GetArenaPoints() < CONST_ARENA_POINT_0)
{
_creature->MonsterWhisper(MSG_ERR_ARENA_POINT_1, player->GetGUID());
player->CLOSE_GOSSIP_MENU();
}else{
// Делаем Смену внешности
player->SetAtLoginFlag(AT_LOGIN_CUSTOMIZE);
player->ModifyArenaPoints(-CONST_ARENA_POINT_0);
_creature->MonsterWhisper(MSG_CUSTOMIZE_COMPLETE, player->GetGUID());
player->CLOSE_GOSSIP_MENU();
}
break;
case 31:
if (player->GetArenaPoints() < CONST_ARENA_POINT_0)
{
_creature->MonsterWhisper(MSG_ERR_ARENA_POINT_1, player->GetGUID());
player->CLOSE_GOSSIP_MENU();
}else{
// Делаем Смену внешности
player->SetAtLoginFlag(AT_LOGIN_CHANGE_FACTION);
player->ModifyArenaPoints(-CONST_ARENA_POINT_0);
_creature->MonsterWhisper(MSG_CHANGE_FACTION_COMPLETE, player->GetGUID());
player->CLOSE_GOSSIP_MENU();
}
break;
case 32:
player->SetHealth(player->GetMaxHealth());
player->CLOSE_GOSSIP_MENU();
break;
case 33:
player->UpdateSkillsToMaxSkillsForLevel();
player->CLOSE_GOSSIP_MENU();
break;
case 34:
player->learnSpell(90265, true);
player->SetSkill(762, 6, 450, 450);
player->learnSpell(54197, true);
player->CLOSE_GOSSIP_MENU();
break;
case 35:
player->PlayerTalkClass->ClearMenus();
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TRAINER, MSG_GOSSIP_TEXT_ALCHEMY, GOSSIP_SENDER_MAIN, 37);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TRAINER, MSG_GOSSIP_TEXT_BLACKSMITHING, GOSSIP_SENDER_MAIN, 38);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TRAINER, MSG_GOSSIP_TEXT_ENCNANTING, GOSSIP_SENDER_MAIN, 39);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TRAINER, MSG_GOSSIP_TEXT_ENGINEERING, GOSSIP_SENDER_MAIN, 40);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TRAINER, MSG_GOSSIP_TEXT_HERBALISM, GOSSIP_SENDER_MAIN, 41);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TRAINER, MSG_GOSSIP_TEXT_INSCRIPTION, GOSSIP_SENDER_MAIN, 42);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TRAINER, MSG_GOSSIP_TEXT_JEWELCRAFTING, GOSSIP_SENDER_MAIN, 43);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TRAINER, MSG_GOSSIP_TEXT_LEATHERWORKING, GOSSIP_SENDER_MAIN, 44);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TRAINER, MSG_GOSSIP_TEXT_MINING, GOSSIP_SENDER_MAIN, 45);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TRAINER, MSG_GOSSIP_TEXT_SKINNING, GOSSIP_SENDER_MAIN, 46);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TRAINER, MSG_GOSSIP_TEXT_TAILORING, GOSSIP_SENDER_MAIN, 47);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TALK, MSG_GOSSIP_TEXT_PROFFESION_SECON_MENU, GOSSIP_SENDER_MAIN, 48);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TALK, MSG_GOSSIP_TEXT_MAIN_MENU, GOSSIP_SENDER_MAIN, 21);
player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE,_creature->GetGUID());
break;
case 36:
CompleteLearnProfession(player, _creature, SKILL_ALCHEMY);
player->CLOSE_GOSSIP_MENU();
break;
case 37:
CompleteLearnProfession(player, _creature, SKILL_BLACKSMITHING);
player->CLOSE_GOSSIP_MENU();
break;
case 38:
CompleteLearnProfession(player, _creature, SKILL_ENCHANTING);
player->CLOSE_GOSSIP_MENU();
break;
case 39:
CompleteLearnProfession(player, _creature, SKILL_ENGINEERING);
player->CLOSE_GOSSIP_MENU();
break;
case 40:
CompleteLearnProfession(player, _creature, SKILL_HERBALISM);
player->CLOSE_GOSSIP_MENU();
case 41:
CompleteLearnProfession(player, _creature, SKILL_INSCRIPTION);
player->CLOSE_GOSSIP_MENU();
break;
case 42:
CompleteLearnProfession(player, _creature, SKILL_JEWELCRAFTING);
player->CLOSE_GOSSIP_MENU();
break;
case 43:
CompleteLearnProfession(player, _creature, SKILL_LEATHERWORKING);
player->CLOSE_GOSSIP_MENU();
break;
case 44:
CompleteLearnProfession(player, _creature, SKILL_MINING);
player->CLOSE_GOSSIP_MENU();
break;
case 45:
CompleteLearnProfession(player, _creature, SKILL_SKINNING);
player->CLOSE_GOSSIP_MENU();
break;
case 46:
CompleteLearnProfession(player, _creature, SKILL_TAILORING);
player->CLOSE_GOSSIP_MENU();
break;
case 47:
player->PlayerTalkClass->ClearMenus();
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TRAINER, MSG_GOSSIP_TEXT_COOKING, GOSSIP_SENDER_MAIN, 49);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TRAINER, MSG_GOSSIP_TEXT_FIRST_AID, GOSSIP_SENDER_MAIN, 50);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TRAINER, MSG_GOSSIP_TEXT_FISHING, GOSSIP_SENDER_MAIN, 51);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TALK, MSG_GOSSIP_TEXT_MAIN_MENU, GOSSIP_SENDER_MAIN, 21);
player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE,_creature->GetGUID());
break;
case 48:
CompleteLearnProfession(player, _creature, SKILL_COOKING);
player->CLOSE_GOSSIP_MENU();
break;
case 49:
CompleteLearnProfession(player, _creature, SKILL_FIRST_AID);
player->CLOSE_GOSSIP_MENU();
break;
case 50:
CompleteLearnProfession(player, _creature, SKILL_FISHING);
player->CLOSE_GOSSIP_MENU();
break;
case 51:
player->PlayerTalkClass->ClearMenus();
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, MSG_GOSSIP_TEXT_MORTH_GNOME_MALE, GOSSIP_SENDER_MAIN, 53);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, MSG_GOSSIP_TEXT_MORTH_GNOME_FEMALE, GOSSIP_SENDER_MAIN, 54);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, MSG_GOSSIP_TEXT_MORTH_HUMAN_MALE, GOSSIP_SENDER_MAIN, 55);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, MSG_GOSSIP_TEXT_MORTH_HUMAN_FEMALE, GOSSIP_SENDER_MAIN, 56);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, MSG_GOSSIP_TEXT_MORTH_BLOOD_ELF_MALE, GOSSIP_SENDER_MAIN, 57);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, MSG_GOSSIP_TEXT_MORTH_BLOOD_ELF_MALE, GOSSIP_SENDER_MAIN, 58);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, MSG_GOSSIP_TEXT_MORTH_TAUREN_MALE, GOSSIP_SENDER_MAIN, 59);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, MSG_GOSSIP_TEXT_MORTH_TAUREN_FEMALE, GOSSIP_SENDER_MAIN, 50);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TALK, MSG_GOSSIP_TEXT_MAIN_MENU, GOSSIP_SENDER_MAIN, 21);
player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE,_creature->GetGUID());
break;
case 52:
player->CastSpell(player, 37808, true);
player->CLOSE_GOSSIP_MENU();
break;
case 53:
player->CastSpell(player, 37809, true);
player->CLOSE_GOSSIP_MENU();
break;
case 54:
player->CastSpell(player, 35466, true);
player->CLOSE_GOSSIP_MENU();
break;
case 55:
player->CastSpell(player, 37805, true);
player->CLOSE_GOSSIP_MENU();
break;
case 56:
player->CastSpell(player, 37807, true);
player->CLOSE_GOSSIP_MENU();
break;
case 57:
player->CastSpell(player, 37806, true);
player->CLOSE_GOSSIP_MENU();
break;
case 58:
player->CastSpell(player, 37810, true);
player->CLOSE_GOSSIP_MENU();
break;
case 59:
player->CastSpell(player, 37811, true);
player->CLOSE_GOSSIP_MENU();
break;
case 60:
player->RemoveAllAuras();
player->CLOSE_GOSSIP_MENU();
}
}
return true;
}
};
void AddSC_npc_buffer()
{
new npc_buffer;
}