diff --git a/src/server/game/Entities/Pet/Pet.cpp b/src/server/game/Entities/Pet/Pet.cpp index ccef54968..de0cefbae 100644 --- a/src/server/game/Entities/Pet/Pet.cpp +++ b/src/server/game/Entities/Pet/Pet.cpp @@ -1065,6 +1065,10 @@ bool Guardian::InitStatsForLevel(uint8 petlevel) SetFullHealth(); SetPower(POWER_MANA, GetMaxPower(POWER_MANA)); + + if (Pet* pet = ToPet()) + sScriptMgr->OnPetInitStatsForLevel(pet); + return true; } diff --git a/src/server/game/Scripting/ScriptMgr.cpp b/src/server/game/Scripting/ScriptMgr.cpp index 897797f2d..af25a8122 100644 --- a/src/server/game/Scripting/ScriptMgr.cpp +++ b/src/server/game/Scripting/ScriptMgr.cpp @@ -1750,6 +1750,11 @@ bool ScriptMgr::CanJoinInBattlegroundQueue(Player* player, uint64 BattlemasterGu return ret; } +void ScriptMgr::OnPetInitStatsForLevel(Pet* pet) +{ + FOREACH_SCRIPT(PlayerScript)->OnPetInitStatsForLevel(pet); +} + // Account void ScriptMgr::OnAccountLogin(uint32 accountId) { diff --git a/src/server/game/Scripting/ScriptMgr.h b/src/server/game/Scripting/ScriptMgr.h index 3ec042f18..ae002cc6d 100644 --- a/src/server/game/Scripting/ScriptMgr.h +++ b/src/server/game/Scripting/ScriptMgr.h @@ -961,6 +961,9 @@ class PlayerScript : public ScriptObject virtual void OnFirstLogin(Player* /*player*/) { } virtual bool CanJoinInBattlegroundQueue(Player* /*player*/, uint64 /*BattlemasterGuid*/, BattlegroundTypeId /*BGTypeID*/, uint8 /*joinAsGroup*/, GroupJoinBattlegroundResult& /*err*/) { return true; } + + // Called after the player's pet has been loaded and initialized + virtual void OnPetInitStatsForLevel(Pet* /*pet*/) { } }; class AccountScript : public ScriptObject @@ -1412,6 +1415,7 @@ class ScriptMgr void OnFirstLogin(Player* player); void OnPlayerCompleteQuest(Player* player, Quest const* quest); bool CanJoinInBattlegroundQueue(Player* player, uint64 BattlemasterGuid, BattlegroundTypeId BGTypeID, uint8 joinAsGroup, GroupJoinBattlegroundResult& err); + void OnPetInitStatsForLevel(Pet* pet); public: /* AccountScript */