fix(Core/Professions): Leatherworking specialization (#10415)

This commit is contained in:
Nefertumm
2022-03-14 08:50:18 -03:00
committed by GitHub
parent 1dd05ac390
commit 4806769beb
2 changed files with 144 additions and 47 deletions
@@ -0,0 +1,40 @@
INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1643424341492582600');
DELETE FROM `npc_text` WHERE `ID` IN (10303, 10304);
INSERT INTO `npc_text` (`ID`, `text0_0`, `text0_1`, `BroadcastTextID0`) VALUES
(10303, 'Forgetting tribal leatherworking is not something to do lightly. If you choose to abandon it you will forget all recipes that require tribal leatherworking as well!', 'Forgetting tribal leatherworking is not something to do lightly. If you choose to abandon it you will forget all recipes that require tribal leatherworking as well!', 18974),
(10304, 'Forgetting dragonscale leatherworking is not something to do lightly. If you choose to abandon it you will forget all recipes that require dragonscale leatherworking as well!', 'Forgetting dragonscale leatherworking is not something to do lightly. If you choose to abandon it you will forget all recipes that require dragonscale leatherworking as well!', 18976);
DELETE FROM `gossip_menu` WHERE `MenuID` IN (3068, 3069, 3073) AND `TextID` IN (3802, 3803, 3806);
DELETE FROM `gossip_menu` WHERE `MenuID` IN (3075, 3076, 3077) AND `TextID` IN (10302, 10303, 10304);
INSERT INTO `gossip_menu` (`MenuID`, `TextID`) VALUES
(3068, 3802),
(3069, 3803),
(3073, 3806),
(3075, 10304), -- dragonscale
(3076, 10302), -- elemental
(3077, 10303); -- tribal
DELETE FROM `gossip_menu_option` WHERE `MenuID` IN (3067, 3068, 3069, 3070, 3072, 3073) AND `OptionID` = 0;
DELETE FROM `gossip_menu_option` WHERE `MenuID` IN (3067, 3068, 3069, 3070, 3072, 3073, 3075, 3076, 3077) AND `OptionID` = 1;
INSERT INTO `gossip_menu_option` (`MenuID`, `OptionID`, `OptionIcon`, `OptionText`, `OptionBroadcastTextID`, `OptionType`, `OptionNpcFlag`, `ActionMenuID`, `ActionPoiID`, `BoxCoded`, `BoxMoney`, `BoxText`, `BoxBroadcastTextID`, `VerifiedBuild`) VALUES
(3067, 0, 3, 'I would like to train.', 5597, 5, 16, 0, 0, 0, 0, '', 0, 0),
(3067, 1, 0, 'I wish to unlearn dragonscale leatherworking!', 18977, 1, 1, 3075, 0, 0, 0, '', 0, 0),
(3068, 0, 3, 'I would like to train.', 5597, 5, 16, 0, 0, 0, 0, '', 0, 0),
(3068, 1, 0, 'I wish to unlearn dragonscale leatherworking!', 18977, 1, 1, 3075, 0, 0, 0, '', 0, 0),
(3069, 0, 3, 'I would like to train.', 5597, 5, 16, 0, 0, 0, 0, '', 0, 0),
(3069, 1, 0, 'I wish to unlearn elemental leatherworking!', 18917, 1, 1, 3076, 0, 0, 0, '', 0, 0),
(3070, 0, 3, 'I would like to train.', 5597, 5, 16, 0, 0, 0, 0, '', 0, 0),
(3070, 1, 0, 'I wish to unlearn elemental leatherworking!', 18917, 1, 1, 3076, 0, 0, 0, '', 0, 0),
(3072, 0, 3, 'I would like to train.', 5597, 5, 16, 0, 0, 0, 0, '', 0, 0),
(3072, 1, 0, 'I wish to unlearn tribal leatherworking!', 18975, 1, 1, 3077, 0, 0, 0, '', 0, 0),
(3073, 0, 3, 'I would like to train.', 5597, 5, 16, 0, 0, 0, 0, '', 0, 0),
(3073, 1, 0, 'I wish to unlearn tribal leatherworking!', 18975, 1, 1, 3077, 0, 0, 0, '', 0, 0),
(3075, 1, 0, 'I wish to unlearn dragonscale leatherworking!', 18977, 1, 1, 0, 0, 0, 0, 'Do you really want to unlearn your leatherworking specialty and lose all associated recipes?', 18969, 0),
(3076, 1, 0, 'I wish to unlearn elemental leatherworking!', 18917, 1, 1, 0, 0, 0, 0, 'Do you really want to unlearn your leatherworking specialty and lose all associated recipes?', 18969, 0),
(3077, 1, 0, 'I wish to unlearn tribal leatherworking!', 18975, 1, 1, 0, 0, 0, 0, 'Do you really want to unlearn your leatherworking specialty and lose all associated recipes?', 18969, 0);
UPDATE `creature_template` SET `gossip_menu_id` = 3068, `npcflag` = `npcflag`|1 WHERE `entry` = 7867; -- Thorkaf Dragoneye
UPDATE `creature_template` SET `gossip_menu_id` = 3069, `npcflag` = `npcflag`|1 WHERE `entry` = 7869; -- Mrumn Winterhoof
UPDATE `creature_template` SET `gossip_menu_id` = 3073, `npcflag` = `npcflag`|1 WHERE `entry` = 7871; -- Se'Jib
+104 -47
View File
@@ -18,7 +18,7 @@
/* ScriptData /* ScriptData
SDName: Npc_Professions SDName: Npc_Professions
SD%Complete: 80 SD%Complete: 80
SDComment: Provides learn/unlearn/relearn-options for professions. Not supported: Unlearn engineering, re-learn engineering, re-learn leatherworking. SDComment: Provides learn/unlearn/relearn-options for professions. Not supported: Unlearn engineering, re-learn engineering.
SDCategory: NPCs SDCategory: NPCs
EndScriptData */ EndScriptData */
@@ -86,10 +86,6 @@ there is no difference here (except that default text is chosen with `gameobject
#define BOX_UNLEARN_WEAPON_SPEC "Do you really want to unlearn your weaponsmith specialty and lose all associated recipes? \n Cost: " #define BOX_UNLEARN_WEAPON_SPEC "Do you really want to unlearn your weaponsmith specialty and lose all associated recipes? \n Cost: "
#define GOSSIP_LEARN_DRAGON "I wish to learn Dragonscale Leatherworking"
#define GOSSIP_LEARN_ELEMENTAL "I wish to learn Elemental Leatherworking"
#define GOSSIP_LEARN_TRIBAL "I wish to learn Tribal Leatherworking"
#define GOSSIP_LEARN_SPELLFIRE "Please teach me how to become a Spellcloth tailor" #define GOSSIP_LEARN_SPELLFIRE "Please teach me how to become a Spellcloth tailor"
#define GOSSIP_UNLEARN_SPELLFIRE "I wish to unlearn Spellfire Tailoring" #define GOSSIP_UNLEARN_SPELLFIRE "I wish to unlearn Spellfire Tailoring"
#define GOSSIP_LEARN_MOONCLOTH "Please teach me how to become a Mooncloth tailor" #define GOSSIP_LEARN_MOONCLOTH "Please teach me how to become a Mooncloth tailor"
@@ -230,6 +226,37 @@ enum SpecializationQuests
Q_MASTER_POTION = 10897, Q_MASTER_POTION = 10897,
}; };
// All referred to gossips (menu, menu_opt, actions)
enum Gossips
{
// Leatherworking
GOSSIP_MENU_PETER_GALEN = 3067,
GOSSIP_MENU_THORKAF_DRAGONEYE = 3068,
GOSSIP_MENU_BRUMN_WINTERHOOF = 3069,
GOSSIP_MENU_SARAH_TANNER = 3070,
GOSSIP_MENU_CARYSSIA_MOONHUNTER = 3072,
GOSSIP_MENU_SEJIB = 3073,
GOSSIP_MENU_UNLEARN_CONFIRM_DRAGONSCALE = 3075,
GOSSIP_MENU_UNLEARN_CONFIRM_ELEMENTAL = 3076,
GOSSIP_MENU_UNLEARN_CONFIRM_TRIBAL = 3077,
GOSSIP_MENU_OPTION_TRAIN = 0,
GOSSIP_MENU_OPTION_CONFIRM_UNLEARN_DRAGONSCALE = 1,
GOSSIP_MENU_OPTION_CONFIRM_UNLEARN_ELEMENTAL = 1,
GOSSIP_MENU_OPTION_CONFIRM_UNLEARN_TRIBAL = 1,
GOSSIP_TEXT_UNLEARN_CONFIRM_DRAGONSCALE = 10304,
GOSSIP_TEXT_UNLEARN_CONFIRM_ELEMENTAL = 10302,
GOSSIP_TEXT_UNLEARN_CONFIRM_TRIBAL = 10303,
GOSSIP_MENU_GO_SOOTHSAYING_FOR_DUMMIES = 7058,
GOSSIP_MENU_OPTION_GO_LEARN_DRAGONSCALE = 4,
GOSSIP_MENU_OPTION_GO_LEARN_ELEMENTAL = 5,
GOSSIP_MENU_OPTION_GO_LEARN_TRIBAL = 6,
};
/*### /*###
# formulas to calculate unlearning cost # formulas to calculate unlearning cost
###*/ ###*/
@@ -347,7 +374,11 @@ void ProfessionUnlearnSpells(Player* player, uint32 type)
player->removeSpell(36259, SPEC_MASK_ALL, false); // Lionheart Executioner player->removeSpell(36259, SPEC_MASK_ALL, false); // Lionheart Executioner
break; break;
case S_UNLEARN_DRAGON: // S_UNLEARN_DRAGON case S_UNLEARN_DRAGON: // S_UNLEARN_DRAGON
player->removeSpell(10619, SPEC_MASK_ALL, false); // Dragonscale Guantlets
player->removeSpell(10650, SPEC_MASK_ALL, false); // Dragonscale Breastplate
player->removeSpell(36076, SPEC_MASK_ALL, false); // Dragonstrike Leggings player->removeSpell(36076, SPEC_MASK_ALL, false); // Dragonstrike Leggings
player->removeSpell(24655, SPEC_MASK_ALL, false); // Green Dragonscale Gauntlets
player->removeSpell(24654, SPEC_MASK_ALL, false); // Blue Dragonscale Leggings
player->removeSpell(36079, SPEC_MASK_ALL, false); // Golden Dragonstrike Breastplate player->removeSpell(36079, SPEC_MASK_ALL, false); // Golden Dragonstrike Breastplate
player->removeSpell(35576, SPEC_MASK_ALL, false); // Ebon Netherscale Belt player->removeSpell(35576, SPEC_MASK_ALL, false); // Ebon Netherscale Belt
player->removeSpell(35577, SPEC_MASK_ALL, false); // Ebon Netherscale Bracers player->removeSpell(35577, SPEC_MASK_ALL, false); // Ebon Netherscale Bracers
@@ -362,6 +393,8 @@ void ProfessionUnlearnSpells(Player* player, uint32 type)
player->removeSpell(35590, SPEC_MASK_ALL, false); // Primalstrike Belt player->removeSpell(35590, SPEC_MASK_ALL, false); // Primalstrike Belt
player->removeSpell(35591, SPEC_MASK_ALL, false); // Primalstrike Bracers player->removeSpell(35591, SPEC_MASK_ALL, false); // Primalstrike Bracers
player->removeSpell(35589, SPEC_MASK_ALL, false); // Primalstrike Vest player->removeSpell(35589, SPEC_MASK_ALL, false); // Primalstrike Vest
player->removeSpell(10630, SPEC_MASK_ALL, false); // Gauntlets of the Sea
player->removeSpell(10632, SPEC_MASK_ALL, false); // Helm of Fire
break; break;
case S_UNLEARN_TRIBAL: // S_UNLEARN_TRIBAL case S_UNLEARN_TRIBAL: // S_UNLEARN_TRIBAL
player->removeSpell(35585, SPEC_MASK_ALL, false); // Windhawk Hauberk player->removeSpell(35585, SPEC_MASK_ALL, false); // Windhawk Hauberk
@@ -369,6 +402,8 @@ void ProfessionUnlearnSpells(Player* player, uint32 type)
player->removeSpell(35588, SPEC_MASK_ALL, false); // Windhawk Bracers player->removeSpell(35588, SPEC_MASK_ALL, false); // Windhawk Bracers
player->removeSpell(36075, SPEC_MASK_ALL, false); // Wildfeather Leggings player->removeSpell(36075, SPEC_MASK_ALL, false); // Wildfeather Leggings
player->removeSpell(36078, SPEC_MASK_ALL, false); // Living Crystal Breastplate player->removeSpell(36078, SPEC_MASK_ALL, false); // Living Crystal Breastplate
player->removeSpell(10621, SPEC_MASK_ALL, false); // Wolfshead Helm
player->removeSpell(10647, SPEC_MASK_ALL, false); // Feathered Breastplate
break; break;
case S_UNLEARN_SPELLFIRE: // S_UNLEARN_SPELLFIRE case S_UNLEARN_SPELLFIRE: // S_UNLEARN_SPELLFIRE
player->removeSpell(26752, SPEC_MASK_ALL, false); // Spellfire Belt player->removeSpell(26752, SPEC_MASK_ALL, false); // Spellfire Belt
@@ -950,44 +985,39 @@ public:
bool OnGossipHello(Player* player, Creature* creature) override bool OnGossipHello(Player* player, Creature* creature) override
{ {
ClearGossipMenuFor(player);
if (creature->IsQuestGiver()) if (creature->IsQuestGiver())
{
player->PrepareQuestMenu(creature->GetGUID()); player->PrepareQuestMenu(creature->GetGUID());
}
if (creature->IsVendor()) if (player->HasSkill(SKILL_LEATHERWORKING) && player->GetBaseSkillValue(SKILL_LEATHERWORKING) >= 225 && player->getLevel() > 40)
AddGossipItemFor(player, GOSSIP_ICON_VENDOR, GOSSIP_TEXT_BROWSE_GOODS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE);
// pussywizard: NO UNLEARNING! LEATHERWORKING SPECIALTY IS A PERMANENT DECISION AND CANNOT BE CHANGED IN ANY WAY!
// pussywizard: CAN RE-LEARN ONLY THE ONE FOR WHICH QUEST IS COMPLETED!
if (player->HasSkill(SKILL_LEATHERWORKING) && player->GetBaseSkillValue(SKILL_LEATHERWORKING) >= 250 && player->getLevel() > 49)
{ {
switch (creature->GetEntry()) switch (creature->GetEntry())
{ {
case N_TRAINER_DRAGON1: //Peter Galen case N_TRAINER_DRAGON1: //Peter Galen
case N_TRAINER_DRAGON2: //Thorkaf Dragoneye case N_TRAINER_DRAGON2: //Thorkaf Dragoneye
if (!HasLeatherSpecialty(player) && (player->GetQuestRewardStatus(5141) || player->GetQuestRewardStatus(5145)))
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_LEARN_DRAGON, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
if (player->HasSpell(S_DRAGON)) if (player->HasSpell(S_DRAGON))
{ {
AddGossipItemFor(player, GOSSIP_ICON_TRAINER, GOSSIP_TEXT_TRAIN, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRAIN); AddGossipItemFor(player, creature->GetEntry() == N_TRAINER_DRAGON1 ? GOSSIP_MENU_PETER_GALEN : GOSSIP_MENU_THORKAF_DRAGONEYE, GOSSIP_MENU_OPTION_TRAIN, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRAIN);
AddGossipItemFor(player, creature->GetEntry() == N_TRAINER_DRAGON1 ? GOSSIP_MENU_PETER_GALEN : GOSSIP_MENU_THORKAF_DRAGONEYE, GOSSIP_MENU_OPTION_CONFIRM_UNLEARN_DRAGONSCALE, GOSSIP_SENDER_MAIN, GOSSIP_MENU_UNLEARN_CONFIRM_DRAGONSCALE);
} }
break; break;
case N_TRAINER_ELEMENTAL1: //Sarah Tanner case N_TRAINER_ELEMENTAL1: //Sarah Tanner
case N_TRAINER_ELEMENTAL2: //Brumn Winterhoof case N_TRAINER_ELEMENTAL2: //Brumn Winterhoof
if (!HasLeatherSpecialty(player) && (player->GetQuestRewardStatus(5144) || player->GetQuestRewardStatus(5146)))
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_LEARN_ELEMENTAL, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
if (player->HasSpell(S_ELEMENTAL)) if (player->HasSpell(S_ELEMENTAL))
{ {
AddGossipItemFor(player, GOSSIP_ICON_TRAINER, GOSSIP_TEXT_TRAIN, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRAIN); AddGossipItemFor(player, creature->GetEntry() == N_TRAINER_ELEMENTAL1 ? GOSSIP_MENU_SARAH_TANNER : GOSSIP_MENU_BRUMN_WINTERHOOF, GOSSIP_MENU_OPTION_TRAIN, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRAIN);
AddGossipItemFor(player, creature->GetEntry() == N_TRAINER_ELEMENTAL1 ? GOSSIP_MENU_SARAH_TANNER : GOSSIP_MENU_BRUMN_WINTERHOOF, GOSSIP_MENU_OPTION_CONFIRM_UNLEARN_ELEMENTAL, GOSSIP_SENDER_MAIN, GOSSIP_MENU_UNLEARN_CONFIRM_ELEMENTAL);
} }
break; break;
case N_TRAINER_TRIBAL1: //Caryssia Moonhunter case N_TRAINER_TRIBAL1: //Caryssia Moonhunter
case N_TRAINER_TRIBAL2: //Se'Jib case N_TRAINER_TRIBAL2: //Se'Jib
if (!HasLeatherSpecialty(player) && (player->GetQuestRewardStatus(5143) || player->GetQuestRewardStatus(5148)))
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_LEARN_TRIBAL, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3);
if (player->HasSpell(S_TRIBAL)) if (player->HasSpell(S_TRIBAL))
{ {
AddGossipItemFor(player, GOSSIP_ICON_TRAINER, GOSSIP_TEXT_TRAIN, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRAIN); AddGossipItemFor(player, creature->GetEntry() == N_TRAINER_TRIBAL1 ? GOSSIP_MENU_CARYSSIA_MOONHUNTER : GOSSIP_MENU_SEJIB, GOSSIP_MENU_OPTION_TRAIN, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRAIN);
AddGossipItemFor(player, creature->GetEntry() == N_TRAINER_TRIBAL1 ? GOSSIP_MENU_CARYSSIA_MOONHUNTER : GOSSIP_MENU_SEJIB, GOSSIP_MENU_OPTION_CONFIRM_UNLEARN_TRIBAL, GOSSIP_SENDER_MAIN, GOSSIP_MENU_UNLEARN_CONFIRM_TRIBAL);
} }
break; break;
} }
@@ -997,36 +1027,35 @@ public:
return true; return true;
} }
void SendActionMenu(Player* player, Creature* creature, uint32 action) bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
{ {
ClearGossipMenuFor(player);
switch (action) switch (action)
{ {
case GOSSIP_ACTION_TRADE:
player->GetSession()->SendListInventory(creature->GetGUID());
break;
case GOSSIP_ACTION_TRAIN: case GOSSIP_ACTION_TRAIN:
player->GetSession()->SendTrainerList(creature->GetGUID()); player->GetSession()->SendTrainerList(creature->GetGUID());
break; break;
// Learn Leather case GOSSIP_MENU_UNLEARN_CONFIRM_DRAGONSCALE:
AddGossipItemFor(player, GOSSIP_MENU_UNLEARN_CONFIRM_DRAGONSCALE, GOSSIP_MENU_OPTION_CONFIRM_UNLEARN_DRAGONSCALE, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1, DoMedUnlearnCost(player));
SendGossipMenuFor(player, GOSSIP_TEXT_UNLEARN_CONFIRM_DRAGONSCALE, creature);
break;
case GOSSIP_MENU_UNLEARN_CONFIRM_ELEMENTAL:
AddGossipItemFor(player, GOSSIP_MENU_UNLEARN_CONFIRM_ELEMENTAL, GOSSIP_MENU_OPTION_CONFIRM_UNLEARN_ELEMENTAL, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2, DoMedUnlearnCost(player));
SendGossipMenuFor(player, GOSSIP_TEXT_UNLEARN_CONFIRM_ELEMENTAL, creature);
break;
case GOSSIP_MENU_UNLEARN_CONFIRM_TRIBAL:
AddGossipItemFor(player, GOSSIP_MENU_UNLEARN_CONFIRM_TRIBAL, GOSSIP_MENU_OPTION_CONFIRM_UNLEARN_TRIBAL, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3, DoMedUnlearnCost(player));
SendGossipMenuFor(player, GOSSIP_TEXT_UNLEARN_CONFIRM_TRIBAL, creature);
break;
case GOSSIP_ACTION_INFO_DEF + 1: case GOSSIP_ACTION_INFO_DEF + 1:
ProcessCastaction(player, creature, S_DRAGON, S_LEARN_DRAGON, 0); ProcessUnlearnAction(player, creature, S_UNLEARN_DRAGON, 0, DoMedUnlearnCost(player));
break; break;
case GOSSIP_ACTION_INFO_DEF + 2: case GOSSIP_ACTION_INFO_DEF + 2:
ProcessCastaction(player, creature, S_ELEMENTAL, S_LEARN_ELEMENTAL, 0); ProcessUnlearnAction(player, creature, S_UNLEARN_ELEMENTAL, 0, DoMedUnlearnCost(player));
break; break;
case GOSSIP_ACTION_INFO_DEF + 3: case GOSSIP_ACTION_INFO_DEF + 3:
ProcessCastaction(player, creature, S_TRIBAL, S_LEARN_TRIBAL, 0); ProcessUnlearnAction(player, creature, S_UNLEARN_TRIBAL, 0, DoMedUnlearnCost(player));
break;
}
}
bool OnGossipSelect(Player* player, Creature* creature, uint32 sender, uint32 action) override
{
ClearGossipMenuFor(player);
switch (sender)
{
case GOSSIP_SENDER_MAIN:
SendActionMenu(player, creature, action);
break; break;
} }
return true; return true;
@@ -1210,9 +1239,14 @@ class go_evil_book_for_dummies : public GameObjectScript
public: public:
go_evil_book_for_dummies() : GameObjectScript("go_evil_book_for_dummies") { } go_evil_book_for_dummies() : GameObjectScript("go_evil_book_for_dummies") { }
inline bool HasLeatherSpecialty(Player* player)
{
return (player->HasSpell(S_DRAGON) || player->HasSpell(S_ELEMENTAL) || player->HasSpell(S_TRIBAL));
}
bool OnGossipHello(Player* player, GameObject* gameobject) override bool OnGossipHello(Player* player, GameObject* gameobject) override
{ {
//TAILORING SPEC //ENGINEERING SPEC
if (player->HasSkill(SKILL_ENGINEERING) && player->GetBaseSkillValue(SKILL_ENGINEERING) >= 225 && player->getLevel() >= 35) if (player->HasSkill(SKILL_ENGINEERING) && player->GetBaseSkillValue(SKILL_ENGINEERING) >= 225 && player->getLevel() >= 35)
{ {
if (player->GetQuestRewardStatus(3643) || player->GetQuestRewardStatus(3641) || player->GetQuestRewardStatus(3639)) if (player->GetQuestRewardStatus(3643) || player->GetQuestRewardStatus(3641) || player->GetQuestRewardStatus(3639))
@@ -1233,6 +1267,17 @@ public:
} }
} }
//LEATHERWORKING SPEC
if (player->HasSkill(SKILL_LEATHERWORKING) && player->GetBaseSkillValue(SKILL_LEATHERWORKING) >= 225 && player->getLevel() >= 40)
{
if (!HasLeatherSpecialty(player) && (player->GetQuestRewardStatus(5141) || player->GetQuestRewardStatus(5143) || player->GetQuestRewardStatus(5144) || player->GetQuestRewardStatus(5145) || player->GetQuestRewardStatus(5146) || player->GetQuestRewardStatus(5148)))
{
AddGossipItemFor(player, GOSSIP_MENU_GO_SOOTHSAYING_FOR_DUMMIES, GOSSIP_MENU_OPTION_GO_LEARN_DRAGONSCALE, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 5);
AddGossipItemFor(player, GOSSIP_MENU_GO_SOOTHSAYING_FOR_DUMMIES, GOSSIP_MENU_OPTION_GO_LEARN_ELEMENTAL, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 6);
AddGossipItemFor(player, GOSSIP_MENU_GO_SOOTHSAYING_FOR_DUMMIES, GOSSIP_MENU_OPTION_GO_LEARN_TRIBAL, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 7);
}
}
SendGossipMenuFor(player, player->GetGossipTextId(gameobject), gameobject->GetGUID()); SendGossipMenuFor(player, player->GetGossipTextId(gameobject), gameobject->GetGUID());
return true; return true;
} }
@@ -1257,6 +1302,18 @@ public:
case GOSSIP_ACTION_INFO_DEF + 4: case GOSSIP_ACTION_INFO_DEF + 4:
ProcessUnlearnAction(player, nullptr, S_UNLEARN_GNOMISH, 0, DoHighUnlearnCost(player)); ProcessUnlearnAction(player, nullptr, S_UNLEARN_GNOMISH, 0, DoHighUnlearnCost(player));
break; break;
//Learn Dragon
case GOSSIP_ACTION_INFO_DEF + 5:
ProcessCastaction(player, nullptr, S_DRAGON, S_LEARN_DRAGON, 0);
break;
//Learn Elemental
case GOSSIP_ACTION_INFO_DEF + 6:
ProcessCastaction(player, nullptr, S_ELEMENTAL, S_LEARN_ELEMENTAL, 0);
break;
//Learn Tribal
case GOSSIP_ACTION_INFO_DEF + 7:
ProcessCastaction(player, nullptr, S_TRIBAL, S_LEARN_TRIBAL, 0);
break;
} }
} }