summaryrefslogtreecommitdiff
path: root/src/server/game/Scripting
diff options
context:
space:
mode:
authorWalter Pagani <paganiwalter@gmail.com>2023-06-24 08:23:23 -0300
committerGitHub <noreply@github.com>2023-06-24 08:23:23 -0300
commit7f9cdda17bf1acc026072ff9993fefa5a2ffdae7 (patch)
tree9372247f4279f3e13b1993f68f8fdffa0dbcd6e5 /src/server/game/Scripting
parentbf8ba6898f0463c7c549e3c92668ea2fa5f7fd0a (diff)
chore(Core/ScriptMgr): Hooks used in mod-aoe-loot (#16589)
* Creating the necessary hooks for the loot aoe * update hook * Typing error * Method name and add documentation * codestyle * Misc. fixes
Diffstat (limited to 'src/server/game/Scripting')
-rw-r--r--src/server/game/Scripting/ScriptDefines/PlayerScript.cpp31
-rw-r--r--src/server/game/Scripting/ScriptMgr.h27
2 files changed, 58 insertions, 0 deletions
diff --git a/src/server/game/Scripting/ScriptDefines/PlayerScript.cpp b/src/server/game/Scripting/ScriptDefines/PlayerScript.cpp
index 2682193d41..eaa3b95a7b 100644
--- a/src/server/game/Scripting/ScriptDefines/PlayerScript.cpp
+++ b/src/server/game/Scripting/ScriptDefines/PlayerScript.cpp
@@ -905,6 +905,37 @@ bool ScriptMgr::CanSendMail(Player* player, ObjectGuid receiverGuid, ObjectGuid
return true;
}
+bool ScriptMgr::CanSendErrorAlreadyLooted(Player* player)
+{
+ auto ret = IsValidBoolScript<PlayerScript>([&](PlayerScript* script)
+ {
+ return !script->CanSendErrorAlreadyLooted(player);
+ });
+
+ if (ret && *ret)
+ {
+ return false;
+ }
+
+ return true;
+}
+
+void ScriptMgr::OnAfterCreatureLoot(Player* player)
+{
+ ExecuteScript<PlayerScript>([&](PlayerScript* script)
+ {
+ script->OnAfterCreatureLoot(player);
+ });
+}
+
+void ScriptMgr::OnAfterCreatureLootMoney(Player* player)
+{
+ ExecuteScript<PlayerScript>([&](PlayerScript* script)
+ {
+ script->OnAfterCreatureLootMoney(player);
+ });
+}
+
void ScriptMgr::PetitionBuy(Player* player, Creature* creature, uint32& charterid, uint32& cost, uint32& type)
{
ExecuteScript<PlayerScript>([&](PlayerScript* script)
diff --git a/src/server/game/Scripting/ScriptMgr.h b/src/server/game/Scripting/ScriptMgr.h
index 3a543c2c3a..e4fcd3f96e 100644
--- a/src/server/game/Scripting/ScriptMgr.h
+++ b/src/server/game/Scripting/ScriptMgr.h
@@ -1481,6 +1481,30 @@ public:
virtual void AnticheatUpdateMovementInfo(Player* /*player*/, MovementInfo const& /*movementInfo*/) { }
[[nodiscard]] virtual bool AnticheatHandleDoubleJump(Player* /*player*/, Unit* /*mover*/) { return true; }
[[nodiscard]] virtual bool AnticheatCheckMovementInfo(Player* /*player*/, MovementInfo const& /*movementInfo*/, Unit* /*mover*/, bool /*jump*/) { return true; }
+
+ /**
+ * @brief This hook is called, to avoid displaying the error message that the body has already been stripped
+ *
+ * @param player Contains information about the Player
+ *
+ * @return true Avoiding displaying the error message that the loot has already been taken.
+ */
+ virtual bool CanSendErrorAlreadyLooted(Player* /*player*/) { return true; }
+
+ /**
+ * @brief It is used when an item is taken from a creature.
+ *
+ * @param player Contains information about the Player
+ *
+ */
+ virtual void OnAfterCreatureLoot(Player* /*player*/) { }
+
+ /**
+ * @brief After a creature's money is taken
+ *
+ * @param player Contains information about the Player
+ */
+ virtual void OnAfterCreatureLootMoney(Player* /*player*/) { }
};
class AccountScript : public ScriptObject
@@ -2406,6 +2430,9 @@ public: /* PlayerScript */
void OnPlayerEnterCombat(Player* player, Unit* enemy);
void OnPlayerLeaveCombat(Player* player);
void OnQuestAbandon(Player* player, uint32 questId);
+ bool CanSendErrorAlreadyLooted(Player* player);
+ void OnAfterCreatureLoot(Player* player);
+ void OnAfterCreatureLootMoney(Player* player);
// Anti cheat
void AnticheatSetSkipOnePacketForASH(Player* player, bool apply);