summaryrefslogtreecommitdiff
path: root/src/server/game/Scripting/ScriptDefines
diff options
context:
space:
mode:
authorVincent Vanclef <rasmusostergaard@live.dk>2025-03-10 08:44:33 +0100
committerGitHub <noreply@github.com>2025-03-10 08:44:33 +0100
commitffe03f6e14c4beafa95645ee40d27f36d0686fd6 (patch)
tree5c54c949de6dd33993d502edfa2dab4aec06dd82 /src/server/game/Scripting/ScriptDefines
parent4cdb315db1742879fc67b70f6db3a744de25714c (diff)
feat(Core/Entities): add OnPlayerCanGiveLevel script hook (#21666)
Diffstat (limited to 'src/server/game/Scripting/ScriptDefines')
-rw-r--r--src/server/game/Scripting/ScriptDefines/PlayerScript.cpp5
-rw-r--r--src/server/game/Scripting/ScriptDefines/PlayerScript.h11
2 files changed, 16 insertions, 0 deletions
diff --git a/src/server/game/Scripting/ScriptDefines/PlayerScript.cpp b/src/server/game/Scripting/ScriptDefines/PlayerScript.cpp
index 99ef82868f..2e9b78b3e6 100644
--- a/src/server/game/Scripting/ScriptDefines/PlayerScript.cpp
+++ b/src/server/game/Scripting/ScriptDefines/PlayerScript.cpp
@@ -915,6 +915,11 @@ bool ScriptMgr::OnPlayerCanResurrect(Player* player)
CALL_ENABLED_BOOLEAN_HOOKS(PlayerScript, PLAYERHOOK_CAN_RESURRECT, !script->OnPlayerCanResurrect(player));
}
+bool ScriptMgr::OnPlayerCanGiveLevel(Player* player, uint8 newLevel)
+{
+ CALL_ENABLED_BOOLEAN_HOOKS(PlayerScript, PLAYERHOOK_ON_CAN_GIVE_LEVEL, !script->OnPlayerCanGiveLevel(player, newLevel));
+}
+
PlayerScript::PlayerScript(const char* name, std::vector<uint16> enabledHooks)
: ScriptObject(name, PLAYERHOOK_END)
{
diff --git a/src/server/game/Scripting/ScriptDefines/PlayerScript.h b/src/server/game/Scripting/ScriptDefines/PlayerScript.h
index cf2242d5f0..d813934e24 100644
--- a/src/server/game/Scripting/ScriptDefines/PlayerScript.h
+++ b/src/server/game/Scripting/ScriptDefines/PlayerScript.h
@@ -208,6 +208,7 @@ enum PlayerHook
PLAYERHOOK_ON_BEFORE_UPDATE_SKILL,
PLAYERHOOK_ON_UPDATE_SKILL,
PLAYERHOOK_CAN_RESURRECT,
+ PLAYERHOOK_ON_CAN_GIVE_LEVEL,
PLAYERHOOK_END
};
@@ -782,6 +783,16 @@ public:
* @return true if player is authorized to resurect
*/
virtual bool OnPlayerCanResurrect(Player* /*player*/) { return true; }
+
+ /**
+ * @brief This hook is called, to cancel the normal level up flow
+ *
+ * @param player Contains information about the Player
+ * @param newLevel The new level the player is about to be given
+ *
+ * @return true if player is allowed to gain the new level
+ */
+ virtual bool OnPlayerCanGiveLevel(Player* /*player*/, uint8 /*newLevel*/) { return true; }
};
#endif