diff --git a/HookMgr.cpp b/HookMgr.cpp index 006cf87..59bd72a 100644 --- a/HookMgr.cpp +++ b/HookMgr.cpp @@ -2577,6 +2577,17 @@ void Eluna::OnRemoveFromWorld(GameObject* gameobject) CallAllFunctions(GameObjectEventBindings, GAMEOBJECT_EVENT_ON_REMOVE, gameobject->GetEntry()); } +bool Eluna::OnGameObjectUse(Player* pPlayer, GameObject* pGameObject) +{ + if (!GameObjectEventBindings->HasEvents(GAMEOBJECT_EVENT_ON_USE, pGameObject->GetEntry())) + return false; + + LOCK_ELUNA; + Push(pGameObject); + Push(pPlayer); + return CallAllFunctionsBool(GameObjectEventBindings, GAMEOBJECT_EVENT_ON_USE, pGameObject->GetEntry()); +} + CreatureAI* Eluna::GetAI(Creature* creature) { if (!CreatureEventBindings->HasEvents(creature->GetEntry()) && !CreatureUniqueBindings->HasEvents(creature->GET_GUID(), creature->GetInstanceId())) diff --git a/HookMgr.h b/HookMgr.h index 2e2ef9d..f5d45fb 100644 --- a/HookMgr.h +++ b/HookMgr.h @@ -252,6 +252,7 @@ namespace HookMgr // UNUSED = 11, // (event, gameobject) GAMEOBJECT_EVENT_ON_ADD = 12, // (event, gameobject) GAMEOBJECT_EVENT_ON_REMOVE = 13, // (event, gameobject) + GAMEOBJECT_EVENT_ON_USE = 14, // (event, go, player) GAMEOBJECT_EVENT_COUNT }; diff --git a/LuaEngine.h b/LuaEngine.h index 94ca2e3..c51c7ce 100644 --- a/LuaEngine.h +++ b/LuaEngine.h @@ -339,6 +339,7 @@ public: /* GameObject */ bool OnDummyEffect(Unit* pCaster, uint32 spellId, SpellEffIndex effIndex, GameObject* pTarget); + bool OnGameObjectUse(Player* pPlayer, GameObject* pGameObject); bool OnGossipHello(Player* pPlayer, GameObject* pGameObject); bool OnGossipSelect(Player* pPlayer, GameObject* pGameObject, uint32 sender, uint32 action); bool OnGossipSelectCode(Player* pPlayer, GameObject* pGameObject, uint32 sender, uint32 action, const char* code);