45#define TALK_MUST_UNLEARN_WEAPON "You must forget your weapon type specialty before I can help you. Go to Everlook in Winterspring and seek help there."
47#define TALK_HAMMER_LEARN "Ah, a seasoned veteran you once were. I know you are capable, you merely need to ask and I shall teach you the way of the hammersmith."
48#define TALK_AXE_LEARN "Ah, a seasoned veteran you once were. I know you are capable, you merely need to ask and I shall teach you the way of the axesmith."
49#define TALK_SWORD_LEARN "Ah, a seasoned veteran you once were. I know you are capable, you merely need to ask and I shall teach you the way of the swordsmith."
51#define TALK_HAMMER_UNLEARN "Forgetting your Hammersmithing skill is not something to do lightly. If you choose to abandon it you will forget all recipes that require Hammersmithing to create!"
52#define TALK_AXE_UNLEARN "Forgetting your Axesmithing skill is not something to do lightly. If you choose to abandon it you will forget all recipes that require Axesmithing to create!"
53#define TALK_SWORD_UNLEARN "Forgetting your Swordsmithing skill is not something to do lightly. If you choose to abandon it you will forget all recipes that require Swordsmithing to create!"
59#define GOSSIP_SENDER_LEARN 50
60#define GOSSIP_SENDER_UNLEARN 51
61#define GOSSIP_SENDER_CHECK 52
67#define GOSSIP_LEARN_POTION "Please teach me how to become a Master of Potions, Lauranna"
68#define GOSSIP_UNLEARN_POTION "I wish to unlearn Potion Mastery"
69#define GOSSIP_LEARN_TRANSMUTE "Please teach me how to become a Master of Transmutations, Zarevhi"
70#define GOSSIP_UNLEARN_TRANSMUTE "I wish to unlearn Transmutation Mastery"
71#define GOSSIP_LEARN_ELIXIR "Please teach me how to become a Master of Elixirs, Lorokeem"
72#define GOSSIP_UNLEARN_ELIXIR "I wish to unlearn Elixir Mastery"
74#define BOX_UNLEARN_ALCHEMY_SPEC "Do you really want to unlearn your alchemy specialty and lose all associated recipes? \n Cost: "
76#define GOSSIP_WEAPON_LEARN "Please teach me how to become a Weaponsmith"
77#define GOSSIP_WEAPON_UNLEARN "I wish to unlearn the art of Weaponsmithing"
78#define GOSSIP_ARMOR_LEARN "Please teach me how to become a Armorsmith"
79#define GOSSIP_ARMOR_UNLEARN "I wish to unlearn the art of Armorsmithing"
81#define GOSSIP_UNLEARN_SMITH_SPEC "I wish to unlearn my blacksmith specialty"
82#define BOX_UNLEARN_ARMORORWEAPON "Do you really want to unlearn your blacksmith specialty and lose all associated recipes? \n Cost: "
84#define GOSSIP_LEARN_HAMMER "Please teach me how to become a Hammersmith, Lilith"
85#define GOSSIP_UNLEARN_HAMMER "I wish to unlearn Hammersmithing"
86#define GOSSIP_LEARN_AXE "Please teach me how to become a Axesmith, Kilram"
87#define GOSSIP_UNLEARN_AXE "I wish to unlearn Axesmithing"
88#define GOSSIP_LEARN_SWORD "Please teach me how to become a Swordsmith, Seril"
89#define GOSSIP_UNLEARN_SWORD "I wish to unlearn Swordsmithing"
91#define BOX_UNLEARN_WEAPON_SPEC "Do you really want to unlearn your weaponsmith specialty and lose all associated recipes? \n Cost: "
93#define GOSSIP_UNLEARN_DRAGON "I wish to unlearn Dragonscale Leatherworking"
94#define GOSSIP_UNLEARN_ELEMENTAL "I wish to unlearn Elemental Leatherworking"
95#define GOSSIP_UNLEARN_TRIBAL "I wish to unlearn Tribal Leatherworking"
97#define BOX_UNLEARN_LEATHER_SPEC "Do you really want to unlearn your leatherworking specialty and lose all associated recipes? \n Cost: "
99#define GOSSIP_LEARN_SPELLFIRE "Please teach me how to become a Spellcloth tailor"
100#define GOSSIP_UNLEARN_SPELLFIRE "I wish to unlearn Spellfire Tailoring"
101#define GOSSIP_LEARN_MOONCLOTH "Please teach me how to become a Mooncloth tailor"
102#define GOSSIP_UNLEARN_MOONCLOTH "I wish to unlearn Mooncloth Tailoring"
103#define GOSSIP_LEARN_SHADOWEAVE "Please teach me how to become a Shadoweave tailor"
104#define GOSSIP_UNLEARN_SHADOWEAVE "I wish to unlearn Shadoweave Tailoring"
106#define BOX_UNLEARN_TAILOR_SPEC "Do you really want to unlearn your tailoring specialty and lose all associated recipes? \n Cost: "
271 player->
CastSpell(player, triggeredSpellId,
true);
291 uint32 reqSpell = spellEffectInfo.TriggerSpell;
295 Item* item =
nullptr;
302 TC_LOG_DEBUG(
"scripts",
"player attempt to unlearn spell {}, but item {} is equipped.", reqSpell, item->
GetEntry());
409 player->
CastSpell(player, spellId,
true);
412 if (alternativeSpellId)
413 creature->
CastSpell(player, alternativeSpellId,
true);
864#define GOSSIP_ITEM_ZAP "This Dimensional Imploder sounds dangerous! How can I make one?"
865#define GOSSIP_ITEM_JHORDY "I must build a beacon for this marvelous device!"
866#define GOSSIP_ITEM_KABLAM "[PH] Unknown"
886 npcTextId = altTextId;
894 std::string gossipItem;
895 bool canLearn =
false;
@ EQUIP_ERR_CLIENT_LOCKED_OUT
@ BUY_ERR_NOT_ENOUGHT_MONEY
#define TC_LOG_DEBUG(filterType__,...)
#define INVENTORY_SLOT_BAG_0
void AddGossipItemFor(Player *player, GossipOptionNpc optionNpc, std::string text, uint32 sender, uint32 action)
void SendGossipMenuFor(Player *player, uint32 npcTextID, ObjectGuid const &guid)
void ClearGossipMenuFor(Player *player)
void CloseGossipMenuFor(Player *player)
#define GOSSIP_TEXT_TRAIN
#define GOSSIP_TEXT_BROWSE_GOODS
ItemTemplate const * GetTemplate() const
static ObjectGuid GetGUID(Object const *o)
void SendEquipError(InventoryResult msg, Item const *item1=nullptr, Item const *item2=nullptr, uint32 itemId=0) const
bool ModifyMoney(int64 amount, bool sendError=true)
bool GetQuestRewardStatus(uint32 quest_id) const
WorldSession * GetSession() const
Item * GetItemByPos(uint16 pos) const
bool HasSkill(uint32 skill) const
uint16 GetBaseSkillValue(uint32 skill) const
void SendBuyError(BuyResult msg, Creature *creature, uint32 item, uint32 param) const
void PrepareQuestMenu(ObjectGuid guid)
void RemoveSpell(uint32 spell_id, bool disabled=false, bool learn_low_rank=true, bool suppressMessaging=false)
ReputationRank GetReputationRank(uint32 faction_id) const
bool HasSpell(uint32 spell) const override
uint32 GetGossipTextId(uint32 menuId, WorldObject *source)
std::unique_ptr< PlayerMenu > PlayerTalkClass
bool HasEnoughMoney(uint64 amount) const
std::vector< SpellEffectInfo > const & GetEffects() const
bool IsQuestGiver() const
SpellCastResult CastSpell(CastSpellTargetArg const &targets, uint32 spellId, CastSpellExtraArgs const &args={ })
void SendListInventory(ObjectGuid guid)
void SendTrainerList(Creature *npc, uint32 trainerId)
CreatureAI * GetAI(Creature *creature) const override
npc_engineering_tele_trinket()
CreatureAI * GetAI(Creature *creature) const override
CreatureAI * GetAI(Creature *creature) const override
CreatureAI * GetAI(Creature *creature) const override
CreatureAI * GetAI(Creature *creature) const override
#define GOSSIP_LEARN_POTION
@ GOSSIP_OPTION_HERBALISM
@ GOSSIP_MENU_ENGINEERING
@ GOSSIP_MENU_JEWELCRAFTING
@ GOSSIP_OPTION_JEWELCRAFTING
@ GOSSIP_OPTION_INSCRIPTION
@ GOSSIP_OPTION_LEATHERWORKING
@ GOSSIP_OPTION_ENGINEERING
@ GOSSIP_OPTION_ENCHANTING
@ GOSSIP_OPTION_BLACKSMITHING
@ GOSSIP_MENU_INSCRIPTION
@ GOSSIP_OPTION_TAILORING
@ GOSSIP_MENU_LEATHERWORKING
@ GOSSIP_MENU_BLACKSMITHING
#define GOSSIP_LEARN_SPELLFIRE
#define GOSSIP_UNLEARN_SHADOWEAVE
#define GOSSIP_UNLEARN_HAMMER
#define GOSSIP_LEARN_HAMMER
#define BOX_UNLEARN_ARMORORWEAPON
#define BOX_UNLEARN_ALCHEMY_SPEC
void AddSC_npc_professions()
#define GOSSIP_UNLEARN_POTION
#define GOSSIP_SENDER_CHECK
void ProfessionUnlearnSpells(Player *player, uint32 type)
#define BOX_UNLEARN_LEATHER_SPEC
#define GOSSIP_SENDER_LEARN
int32 DoHighUnlearnCost(Player *)
#define GOSSIP_UNLEARN_AXE
#define GOSSIP_UNLEARN_SMITH_SPEC
int32 DoMedUnlearnCost(Player *player)
#define GOSSIP_ITEM_KABLAM
#define GOSSIP_LEARN_SHADOWEAVE
#define GOSSIP_ARMOR_LEARN
#define GOSSIP_LEARN_ELIXIR
bool EquippedOk(Player *player, uint32 spellId)
#define GOSSIP_UNLEARN_ELIXIR
#define GOSSIP_UNLEARN_MOONCLOTH
#define GOSSIP_UNLEARN_ELEMENTAL
int32 DoLowUnlearnCost(Player *player)
#define GOSSIP_WEAPON_UNLEARN
void ProcessCastaction(Player *player, Creature *creature, uint32 spellId, uint32 triggeredSpellId, int32 cost)
#define GOSSIP_SENDER_UNLEARN
#define GOSSIP_UNLEARN_SPELLFIRE
#define GOSSIP_UNLEARN_DRAGON
#define BOX_UNLEARN_TAILOR_SPEC
#define GOSSIP_WEAPON_LEARN
@ TRAINER_ID_BLACKSMITHING
@ TRAINER_ID_LEATHERWORKING
#define GOSSIP_ARMOR_UNLEARN
#define GOSSIP_UNLEARN_SWORD
#define GOSSIP_UNLEARN_TRIBAL
void ProcessUnlearnAction(Player *player, Creature *creature, uint32 spellId, uint32 alternativeSpellId, int32 cost)
#define GOSSIP_LEARN_TRANSMUTE
#define GOSSIP_LEARN_SWORD
@ SPELL_LEARN_TO_EVERLOOK
#define BOX_UNLEARN_WEAPON_SPEC
#define GOSSIP_LEARN_MOONCLOTH
int32 DoLearnCost(Player *)
#define GOSSIP_UNLEARN_TRANSMUTE
#define GOSSIP_ITEM_JHORDY
uint32 GetRequiredSpell() const
bool OnGossipHello(Player *player) override
bool CanLearn(Player *player, uint32 textId, uint32 altTextId, uint32 skillValue, uint32 reqSpellId, uint32 spellId, uint32 &npcTextId)
npc_engineering_tele_trinketAI(Creature *creature)
bool OnGossipSelect(Player *player, uint32, uint32 gossipListId) override
void SendActionMenu(Player *player, uint32 action)
void SendConfirmLearn(Player *player, uint32 action)
npc_prof_alchemyAI(Creature *creature)
void SendConfirmUnlearn(Player *player, uint32 action)
bool OnGossipHello(Player *player) override
bool HasAlchemySpell(Player *player)
bool OnGossipSelect(Player *player, uint32, uint32 gossipListId) override
npc_prof_blacksmithAI(Creature *creature)
void SendActionMenu(Player *player, uint32 action)
void SendConfirmUnlearn(Player *player, uint32 action)
bool OnGossipSelect(Player *player, uint32, uint32 gossipListId) override
bool HasWeaponSub(Player *player)
bool OnGossipHello(Player *player) override
void SendConfirmLearn(Player *player, uint32 action)
bool OnGossipHello(Player *player) override
bool OnGossipSelect(Player *player, uint32, uint32 gossipListId) override
void SendActionMenu(Player *player, uint32 action)
void SendConfirmUnlearn(Player *player, uint32 action)
npc_prof_leatherAI(Creature *creature)
npc_prof_tailorAI(Creature *creature)
void SendActionMenu(Player *player, uint32 action)
bool OnGossipHello(Player *player) override
void SendConfirmLearn(Player *player, uint32 action)
bool HasTailorSpell(Player *player)
void SendConfirmUnlearn(Player *player, uint32 action)
bool OnGossipSelect(Player *player, uint32, uint32 gossipListId) override