67 {
"all", learnAllCommandTable },
68 {
"my", learnMyCommandTable }
73 {
"learn", learnCommandTable },
97 if (!allRanks && targetPlayer->
HasSpell(spell->
Id))
111 while ((spellId =
sSpellMgr->GetNextSpellInChain(spellId)))
136 for (
auto const& [
id, quest] :
sObjectMgr->GetQuestTemplates())
138 if (quest->GetAllowableClasses() && player->
SatisfyQuestClass(quest.get(),
false))
195 if (playerClass != talentInfo->
ClassID)
324 player = PlayerIdentifier::FromTargetOrSelf(handler);
325 if (!player || !player->IsConnected())
328 Player* target = player->GetConnectedPlayer();
340 player = PlayerIdentifier::FromTargetOrSelf(handler);
341 if (!player || !player->IsConnected())
344 Player* target = player->GetConnectedPlayer();
374 if (namePart.empty())
381 char const* name =
nullptr;
411 if (!(name && skillId))
426 std::vector<SkillLineAbilityEntry const*>
const* skillLineAbilities =
sDB2Manager.GetSkillLineAbilitiesBySkill(skillId);
427 if (!skillLineAbilities)
433 if (skillLine->SupercedesSpell)
437 if (!skillLine->RaceMask.IsEmpty())
441 if (skillLine->ClassMask && (skillLine->ClassMask & classmask) == 0)
465 spellId =
sSpellMgr->GetFirstSpellInChain(spellId);
DB2Storage< SkillLineEntry > sSkillLineStore("SkillLine.db2", &SkillLineLoadInfo::Instance)
DB2Storage< ChrClassesEntry > sChrClassesStore("ChrClasses.db2", &ChrClassesLoadInfo::Instance)
DB2Storage< SkillLineAbilityEntry > sSkillLineAbilityStore("SkillLineAbility.db2", &SkillLineAbilityLoadInfo::Instance)
DB2Storage< TalentEntry > sTalentStore("Talent.db2", &TalentLoadInfo::Instance)
@ LANG_COMMAND_LEARN_ALL_RECIPES
@ LANG_COMMAND_LEARN_ALL_DEBUG_HELP
@ LANG_COMMAND_LEARN_ALL_PETTALENT_HELP
@ LANG_COMMAND_LEARN_ALL_CRAFT
@ LANG_LEARNING_GM_SKILLS
@ LANG_COMMAND_LEARN_ALL_LANGUAGES_HELP
@ LANG_COMMAND_LEARN_MY_TRAINER_HELP
@ LANG_COMMAND_LEARN_CLASS_TALENTS
@ LANG_COMMAND_LEARN_ALL_BLIZZARD_HELP
@ LANG_COMMAND_LEARN_CLASS_SPELLS
@ LANG_COMMAND_LEARN_ALL_LANG
@ LANG_COMMAND_LEARN_ALL_CRAFTS_HELP
@ LANG_COMMAND_LEARN_ALL_DEFAULT_HELP
@ LANG_COMMAND_LEARN_ALL_RECIPES_HELP
@ LANG_COMMAND_UNLEARN_HELP
@ LANG_COMMAND_LEARN_ALL_TALENTS_HELP
@ LANG_COMMAND_SPELL_BROKEN
@ LANG_COMMAND_LEARN_ALL_DEFAULT_AND_QUEST
@ LANG_COMMAND_LEARN_MY_QUESTS_HELP
@ LANG_TARGET_KNOWN_SPELL
@ LANG_COMMAND_LEARN_HELP
std::optional< T > Optional
Optional helper class to wrap optional values within.
Role Based Access Control related classes definition.
@ SKILL_CATEGORY_SECONDARY
@ SKILL_CATEGORY_PROFESSION
void wstrToLower(std::wstring &str)
bool Utf8FitTo(std::string_view str, std::wstring_view search)
Player * getSelectedPlayerOrSelf()
Player * getSelectedPlayer()
WorldSession * GetSession()
virtual std::string GetNameLink() const
void PSendSysMessage(const char *fmt, Args &&... args)
void SetSentErrorMessage(bool val)
Player * GetPlayer() const
virtual void SendSysMessage(std::string_view str, bool escapeCharacters=false)
void LearnSpell(uint32 spell_id, bool dependent, int32 fromSkill=0, bool suppressMessaging=false, Optional< int32 > traitDefinitionId={})
ChrSpecialization GetPrimarySpecialization() const
void LearnQuestRewardedSpells()
void SendTalentsInfoData()
bool IsSpellFitByClassAndRace(uint32 spell_id) const
void SetSkill(uint32 id, uint16 step, uint16 newVal, uint16 maxVal)
uint16 GetPureMaxSkillValue(uint32 skill) const
bool SatisfyQuestClass(Quest const *qInfo, bool msg) const
bool AddTalent(TalentEntry const *talent, uint8 spec, bool learning)
uint16 GetSkillStep(uint32 skill) const
uint8 GetActiveTalentGroup() const
void RemoveSpell(uint32 spell_id, bool disabled=false, bool learn_low_rank=true, bool suppressMessaging=false)
bool HasSpell(uint32 spell) const override
void LearnDefaultSkills()
static bool IsSpellValid(SpellInfo const *spellInfo, Player *player=nullptr, bool msg=true)
Some checks for spells, to prevent adding deprecated/broken spells for trainers, spell book,...
uint32 GetClassMask() const
Player * GetPlayer() const
static bool HandleLearnMySpellsCommand(ChatHandler *handler)
static bool HandleLearnDebugSpellsCommand(ChatHandler *handler)
static bool HandleUnLearnCommand(ChatHandler *handler, SpellInfo const *spell, Optional< EXACT_SEQUENCE("all")> allRanks)
static bool HandleLearnAllPetTalentsCommand(ChatHandler *)
static bool HandleLearnAllRecipesCommand(ChatHandler *handler, WTail namePart)
static bool HandleLearnAllTalentsCommand(ChatHandler *handler)
static bool HandleLearnMyQuestsCommand(ChatHandler *handler)
static bool HandleLearnAllCraftsCommand(ChatHandler *handler, Optional< PlayerIdentifier > player)
static bool HandleLearnAllGMCommand(ChatHandler *handler)
ChatCommandTable GetCommands() const override
static bool HandleLearnAllDefaultCommand(ChatHandler *handler, Optional< PlayerIdentifier > player)
static bool HandleLearnAllLangCommand(ChatHandler *handler)
static bool HandleLearnCommand(ChatHandler *handler, SpellInfo const *spell, Optional< EXACT_SEQUENCE("all")> allRanks)
static void HandleLearnSkillRecipesHelper(Player *player, uint32 skillId)
void AddSC_learn_commandscript()
std::vector< ChatCommandBuilder > ChatCommandTable
constexpr IteratorPair< iterator, end_iterator > MakeIteratorPair(iterator first, end_iterator second)
@ RBAC_PERM_COMMAND_UNLEARN
@ RBAC_PERM_COMMAND_LEARN_ALL_LANG
@ RBAC_PERM_COMMAND_LEARN_ALL_CRAFTS
@ RBAC_PERM_COMMAND_LEARN_ALL_RECIPES
@ RBAC_PERM_COMMAND_LEARN_ALL_TALENTS
@ RBAC_PERM_COMMAND_LEARN
@ RBAC_PERM_COMMAND_LEARN_ALL_MY_SPELLS
@ RBAC_PERM_COMMAND_LEARN_ALL_GM
@ RBAC_PERM_COMMAND_LEARN_ALL_DEFAULT
@ RBAC_PERM_COMMAND_LEARN_MY_PETTALENTS
LocalizedString DisplayName