feat(Core/Player): Add 'OnPlayerCanLearnTalent' hook (#24826)
This commit is contained in:
parent
6da5bf3a7a
commit
601a4231f6
4 changed files with 13 additions and 0 deletions
|
|
@ -13958,6 +13958,9 @@ void Player::LearnTalent(uint32 talentId, uint32 talentRank, bool command /*= fa
|
|||
if (!talentInfo)
|
||||
return;
|
||||
|
||||
if (!sScriptMgr->OnPlayerCanLearnTalent(this, talentInfo, talentRank))
|
||||
return;
|
||||
|
||||
TalentTabEntry const* talentTabInfo = sTalentTabStore.LookupEntry(talentInfo->TalentTab);
|
||||
if (!talentTabInfo)
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -109,6 +109,11 @@ void ScriptMgr::OnPlayerTalentsReset(Player* player, bool noCost)
|
|||
CALL_ENABLED_HOOKS(PlayerScript, PLAYERHOOK_ON_TALENTS_RESET, script->OnPlayerTalentsReset(player, noCost));
|
||||
}
|
||||
|
||||
bool ScriptMgr::OnPlayerCanLearnTalent(Player* player, TalentEntry const* talent, uint32 rank)
|
||||
{
|
||||
CALL_ENABLED_BOOLEAN_HOOKS(PlayerScript, PLAYERHOOK_CAN_LEARN_TALENT, !script->OnPlayerCanLearnTalent(player, talent, rank));
|
||||
}
|
||||
|
||||
void ScriptMgr::OnPlayerAfterSpecSlotChanged(Player* player, uint8 newSlot)
|
||||
{
|
||||
CALL_ENABLED_HOOKS(PlayerScript, PLAYERHOOK_ON_AFTER_SPEC_SLOT_CHANGED, script->OnPlayerAfterSpecSlotChanged(player, newSlot));
|
||||
|
|
|
|||
|
|
@ -43,6 +43,7 @@ enum PlayerHook
|
|||
PLAYERHOOK_ON_LEVEL_CHANGED,
|
||||
PLAYERHOOK_ON_FREE_TALENT_POINTS_CHANGED,
|
||||
PLAYERHOOK_ON_TALENTS_RESET,
|
||||
PLAYERHOOK_CAN_LEARN_TALENT,
|
||||
PLAYERHOOK_ON_AFTER_SPEC_SLOT_CHANGED,
|
||||
PLAYERHOOK_ON_BEFORE_UPDATE,
|
||||
PLAYERHOOK_ON_UPDATE,
|
||||
|
|
@ -260,6 +261,9 @@ public:
|
|||
// Called when a player's talent points are reset (right before the reset is done)
|
||||
virtual void OnPlayerTalentsReset(Player* /*player*/, bool /*noCost*/) { }
|
||||
|
||||
// Called when a player attempts to put a point in a talent.
|
||||
virtual bool OnPlayerCanLearnTalent(Player* /*player*/, TalentEntry const* /*talent*/, uint32 /*rank*/) { return true; }
|
||||
|
||||
// Called after a player switches specs using the dual spec system
|
||||
virtual void OnPlayerAfterSpecSlotChanged(Player* /*player*/, uint8 /*newSlot*/) { }
|
||||
|
||||
|
|
|
|||
|
|
@ -308,6 +308,7 @@ public: /* PlayerScript */
|
|||
void OnPlayerLevelChanged(Player* player, uint8 oldLevel);
|
||||
void OnPlayerFreeTalentPointsChanged(Player* player, uint32 newPoints);
|
||||
void OnPlayerTalentsReset(Player* player, bool noCost);
|
||||
bool OnPlayerCanLearnTalent(Player* player, TalentEntry const* talent, uint32 rank);
|
||||
void OnPlayerAfterSpecSlotChanged(Player* player, uint8 newSlot);
|
||||
void OnPlayerMoneyChanged(Player* player, int32& amount);
|
||||
void OnPlayerBeforeLootMoney(Player* player, Loot* loot);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue