mirror of
https://github.com/ornfelt/azerothcore_lua_scripts
synced 2026-08-22 06:26:03 -04:00
698 lines
No EOL
28 KiB
C++
698 lines
No EOL
28 KiB
C++
#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;
|
||
} |