diff --git a/CreatureHooks.cpp b/CreatureHooks.cpp index 875d749..1d7afcf 100644 --- a/CreatureHooks.cpp +++ b/CreatureHooks.cpp @@ -33,14 +33,14 @@ using namespace Hooks; return RETVAL;\ LOCK_ELUNA -bool Eluna::OnDummyEffect(WorldObject* pCaster, uint32 spellId, SpellEffIndex effIndex, Creature* pTarget) +void Eluna::OnDummyEffect(WorldObject* pCaster, uint32 spellId, SpellEffIndex effIndex, Creature* pTarget) { - START_HOOK_WITH_RETVAL(CREATURE_EVENT_ON_DUMMY_EFFECT, pTarget, false); + START_HOOK(CREATURE_EVENT_ON_DUMMY_EFFECT, pTarget); Push(pCaster); Push(spellId); Push(effIndex); Push(pTarget); - return CallAllFunctionsBool(CreatureEventBindings, CreatureUniqueBindings, entry_key, unique_key); + CallAllFunctions(CreatureEventBindings, CreatureUniqueBindings, entry_key, unique_key); } bool Eluna::OnQuestAccept(Player* pPlayer, Creature* pCreature, Quest const* pQuest) diff --git a/GameObjectHooks.cpp b/GameObjectHooks.cpp index a9ca705..e463220 100644 --- a/GameObjectHooks.cpp +++ b/GameObjectHooks.cpp @@ -30,14 +30,14 @@ using namespace Hooks; return RETVAL;\ LOCK_ELUNA -bool Eluna::OnDummyEffect(WorldObject* pCaster, uint32 spellId, SpellEffIndex effIndex, GameObject* pTarget) +void Eluna::OnDummyEffect(WorldObject* pCaster, uint32 spellId, SpellEffIndex effIndex, GameObject* pTarget) { - START_HOOK_WITH_RETVAL(GAMEOBJECT_EVENT_ON_DUMMY_EFFECT, pTarget->GetEntry(), false); + START_HOOK(GAMEOBJECT_EVENT_ON_DUMMY_EFFECT, pTarget->GetEntry()); Push(pCaster); Push(spellId); Push(effIndex); Push(pTarget); - return CallAllFunctionsBool(GameObjectEventBindings, key); + CallAllFunctions(GameObjectEventBindings, key); } void Eluna::UpdateAI(GameObject* pGameObject, uint32 diff) diff --git a/GlobalMethods.h b/GlobalMethods.h index 56fe72b..a4a7cd9 100644 --- a/GlobalMethods.h +++ b/GlobalMethods.h @@ -881,7 +881,7 @@ namespace LuaGlobalFunctions *
* enum ItemEvents
* {
- * ITEM_EVENT_ON_DUMMY_EFFECT = 1, // (event, caster, spellid, effindex, item) - Can return true
+ * ITEM_EVENT_ON_DUMMY_EFFECT = 1, // (event, caster, spellid, effindex, item)
* ITEM_EVENT_ON_USE = 2, // (event, player, item, target) - Can return false to stop the spell casting
* ITEM_EVENT_ON_QUEST_ACCEPT = 3, // (event, player, item, quest) - Can return true
* ITEM_EVENT_ON_EXPIRE = 4, // (event, player, itemid) - Can return true
@@ -1050,7 +1050,7 @@ namespace LuaGlobalFunctions
* CREATURE_EVENT_ON_MOVE_IN_LOS = 27, // (event, creature, unit) - Can return true to stop normal action. Does not actually check LOS, just uses the sight range
* // UNUSED = 28, // (event, creature)
* // UNUSED = 29, // (event, creature)
- * CREATURE_EVENT_ON_DUMMY_EFFECT = 30, // (event, caster, spellid, effindex, creature) - Can return true
+ * CREATURE_EVENT_ON_DUMMY_EFFECT = 30, // (event, caster, spellid, effindex, creature)
* CREATURE_EVENT_ON_QUEST_ACCEPT = 31, // (event, player, creature, quest) - Can return true
* // UNUSED = 32, // (event, creature)
* // UNUSED = 33, // (event, creature)
@@ -1083,40 +1083,40 @@ namespace LuaGlobalFunctions
*
* enum CreatureEvents
* {
- * CREATURE_EVENT_ON_ENTER_COMBAT = 1, // (event, creature, target)
- * CREATURE_EVENT_ON_LEAVE_COMBAT = 2, // (event, creature)
- * CREATURE_EVENT_ON_TARGET_DIED = 3, // (event, creature, victim)
- * CREATURE_EVENT_ON_DIED = 4, // (event, creature, killer)
- * CREATURE_EVENT_ON_SPAWN = 5, // (event, creature)
- * CREATURE_EVENT_ON_REACH_WP = 6, // (event, creature, type, id)
- * CREATURE_EVENT_ON_AIUPDATE = 7, // (event, creature, diff)
- * CREATURE_EVENT_ON_RECEIVE_EMOTE = 8, // (event, creature, player, emoteid)
+ * CREATURE_EVENT_ON_ENTER_COMBAT = 1, // (event, creature, target) - Can return true to stop normal action
+ * CREATURE_EVENT_ON_LEAVE_COMBAT = 2, // (event, creature) - Can return true to stop normal action
+ * CREATURE_EVENT_ON_TARGET_DIED = 3, // (event, creature, victim) - Can return true to stop normal action
+ * CREATURE_EVENT_ON_DIED = 4, // (event, creature, killer) - Can return true to stop normal action
+ * CREATURE_EVENT_ON_SPAWN = 5, // (event, creature) - Can return true to stop normal action
+ * CREATURE_EVENT_ON_REACH_WP = 6, // (event, creature, type, id) - Can return true to stop normal action
+ * CREATURE_EVENT_ON_AIUPDATE = 7, // (event, creature, diff) - Can return true to stop normal action
+ * CREATURE_EVENT_ON_RECEIVE_EMOTE = 8, // (event, creature, player, emoteid) - Can return true to stop normal action
* CREATURE_EVENT_ON_DAMAGE_TAKEN = 9, // (event, creature, attacker, damage) - Can return new damage
- * CREATURE_EVENT_ON_PRE_COMBAT = 10, // (event, creature, target)
- * CREATURE_EVENT_ON_ATTACKED_AT = 11, // (event, creature, attacker)
- * CREATURE_EVENT_ON_OWNER_ATTACKED = 12, // (event, creature, target) // Not on mangos
- * CREATURE_EVENT_ON_OWNER_ATTACKED_AT = 13, // (event, creature, attacker) // Not on mangos
- * CREATURE_EVENT_ON_HIT_BY_SPELL = 14, // (event, creature, caster, spellid)
- * CREATURE_EVENT_ON_SPELL_HIT_TARGET = 15, // (event, creature, target, spellid)
+ * CREATURE_EVENT_ON_PRE_COMBAT = 10, // (event, creature, target) - Can return true to stop normal action
+ * // UNUSED
+ * CREATURE_EVENT_ON_OWNER_ATTACKED = 12, // (event, creature, target) - Can return true to stop normal action // Not on mangos
+ * CREATURE_EVENT_ON_OWNER_ATTACKED_AT = 13, // (event, creature, attacker) - Can return true to stop normal action // Not on mangos
+ * CREATURE_EVENT_ON_HIT_BY_SPELL = 14, // (event, creature, caster, spellid) - Can return true to stop normal action
+ * CREATURE_EVENT_ON_SPELL_HIT_TARGET = 15, // (event, creature, target, spellid) - Can return true to stop normal action
* // UNUSED = 16, // (event, creature)
* // UNUSED = 17, // (event, creature)
* // UNUSED = 18, // (event, creature)
- * CREATURE_EVENT_ON_JUST_SUMMONED_CREATURE = 19, // (event, creature, summon)
- * CREATURE_EVENT_ON_SUMMONED_CREATURE_DESPAWN = 20, // (event, creature, summon)
- * CREATURE_EVENT_ON_SUMMONED_CREATURE_DIED = 21, // (event, creature, summon, killer) // Not on mangos
- * CREATURE_EVENT_ON_SUMMONED = 22, // (event, creature, summoner)
+ * CREATURE_EVENT_ON_JUST_SUMMONED_CREATURE = 19, // (event, creature, summon) - Can return true to stop normal action
+ * CREATURE_EVENT_ON_SUMMONED_CREATURE_DESPAWN = 20, // (event, creature, summon) - Can return true to stop normal action
+ * CREATURE_EVENT_ON_SUMMONED_CREATURE_DIED = 21, // (event, creature, summon, killer) - Can return true to stop normal action // Not on mangos
+ * CREATURE_EVENT_ON_SUMMONED = 22, // (event, creature, summoner) - Can return true to stop normal action
* CREATURE_EVENT_ON_RESET = 23, // (event, creature)
- * CREATURE_EVENT_ON_REACH_HOME = 24, // (event, creature)
+ * CREATURE_EVENT_ON_REACH_HOME = 24, // (event, creature) - Can return true to stop normal action
* // UNUSED = 25, // (event, creature)
- * CREATURE_EVENT_ON_CORPSE_REMOVED = 26, // (event, creature, respawndelay) - Can return new respawndelay
- * CREATURE_EVENT_ON_MOVE_IN_LOS = 27, // (event, creature, unit) - Does not actually check LOS. Just uses the sight range
+ * CREATURE_EVENT_ON_CORPSE_REMOVED = 26, // (event, creature, respawndelay) - Can return true, newRespawnDelay
+ * CREATURE_EVENT_ON_MOVE_IN_LOS = 27, // (event, creature, unit) - Can return true to stop normal action. Does not actually check LOS, just uses the sight range
* // UNUSED = 28, // (event, creature)
* // UNUSED = 29, // (event, creature)
* CREATURE_EVENT_ON_DUMMY_EFFECT = 30, // (event, caster, spellid, effindex, creature)
- * CREATURE_EVENT_ON_QUEST_ACCEPT = 31, // (event, player, creature, quest)
+ * CREATURE_EVENT_ON_QUEST_ACCEPT = 31, // (event, player, creature, quest) - Can return true
* // UNUSED = 32, // (event, creature)
* // UNUSED = 33, // (event, creature)
- * CREATURE_EVENT_ON_QUEST_REWARD = 34, // (event, player, creature, quest, opt)
+ * CREATURE_EVENT_ON_QUEST_REWARD = 34, // (event, player, creature, quest, opt) - Can return true
* CREATURE_EVENT_ON_DIALOG_STATUS = 35, // (event, player, creature)
* CREATURE_EVENT_ON_ADD = 36, // (event, creature)
* CREATURE_EVENT_ON_REMOVE = 37, // (event, creature)
@@ -1148,12 +1148,12 @@ namespace LuaGlobalFunctions
* {
* GAMEOBJECT_EVENT_ON_AIUPDATE = 1, // (event, go, diff)
* GAMEOBJECT_EVENT_ON_SPAWN = 2, // (event, go)
- * GAMEOBJECT_EVENT_ON_DUMMY_EFFECT = 3, // (event, caster, spellid, effindex, go) - Can return true
+ * GAMEOBJECT_EVENT_ON_DUMMY_EFFECT = 3, // (event, caster, spellid, effindex, go)
* GAMEOBJECT_EVENT_ON_QUEST_ACCEPT = 4, // (event, player, go, quest) - Can return true
* GAMEOBJECT_EVENT_ON_QUEST_REWARD = 5, // (event, player, go, quest, opt) - Can return true
* GAMEOBJECT_EVENT_ON_DIALOG_STATUS = 6, // (event, player, go)
- * GAMEOBJECT_EVENT_ON_DESTROYED = 7, // (event, go, player)
- * GAMEOBJECT_EVENT_ON_DAMAGED = 8, // (event, go, player)
+ * GAMEOBJECT_EVENT_ON_DESTROYED = 7, // (event, go, attacker)
+ * GAMEOBJECT_EVENT_ON_DAMAGED = 8, // (event, go, attacker)
* GAMEOBJECT_EVENT_ON_LOOT_STATE_CHANGE = 9, // (event, go, state)
* GAMEOBJECT_EVENT_ON_GO_STATE_CHANGED = 10, // (event, go, state)
* // UNUSED = 11, // (event, gameobject)
diff --git a/Hooks.h b/Hooks.h
index 5b800f7..1ab86e1 100644
--- a/Hooks.h
+++ b/Hooks.h
@@ -282,7 +282,7 @@ namespace Hooks
CREATURE_EVENT_ON_MOVE_IN_LOS = 27, // (event, creature, unit) - Can return true to stop normal action. Does not actually check LOS, just uses the sight range
// UNUSED = 28, // (event, creature)
// UNUSED = 29, // (event, creature)
- CREATURE_EVENT_ON_DUMMY_EFFECT = 30, // (event, caster, spellid, effindex, creature) - Can return true
+ CREATURE_EVENT_ON_DUMMY_EFFECT = 30, // (event, caster, spellid, effindex, creature)
CREATURE_EVENT_ON_QUEST_ACCEPT = 31, // (event, player, creature, quest) - Can return true
// UNUSED = 32, // (event, creature)
// UNUSED = 33, // (event, creature)
@@ -297,7 +297,7 @@ namespace Hooks
{
GAMEOBJECT_EVENT_ON_AIUPDATE = 1, // (event, go, diff)
GAMEOBJECT_EVENT_ON_SPAWN = 2, // (event, go)
- GAMEOBJECT_EVENT_ON_DUMMY_EFFECT = 3, // (event, caster, spellid, effindex, go) - Can return true
+ GAMEOBJECT_EVENT_ON_DUMMY_EFFECT = 3, // (event, caster, spellid, effindex, go)
GAMEOBJECT_EVENT_ON_QUEST_ACCEPT = 4, // (event, player, go, quest) - Can return true
GAMEOBJECT_EVENT_ON_QUEST_REWARD = 5, // (event, player, go, quest, opt) - Can return true
GAMEOBJECT_EVENT_ON_DIALOG_STATUS = 6, // (event, player, go)
@@ -314,7 +314,7 @@ namespace Hooks
enum ItemEvents
{
- ITEM_EVENT_ON_DUMMY_EFFECT = 1, // (event, caster, spellid, effindex, item) - Can return true
+ ITEM_EVENT_ON_DUMMY_EFFECT = 1, // (event, caster, spellid, effindex, item)
ITEM_EVENT_ON_USE = 2, // (event, player, item, target) - Can return false to stop the spell casting
ITEM_EVENT_ON_QUEST_ACCEPT = 3, // (event, player, item, quest) - Can return true
ITEM_EVENT_ON_EXPIRE = 4, // (event, player, itemid) - Can return true
diff --git a/ItemHooks.cpp b/ItemHooks.cpp
index 1bf7c98..5cc10be 100644
--- a/ItemHooks.cpp
+++ b/ItemHooks.cpp
@@ -13,6 +13,14 @@
using namespace Hooks;
+#define START_HOOK(EVENT, ENTRY) \
+ if (!IsEnabled())\
+ return;\
+ auto key = EntryKey(EVENT, ENTRY);\
+ if (!ItemEventBindings->HasBindingsFor(key))\
+ return;\
+ LOCK_ELUNA
+
#define START_HOOK_WITH_RETVAL(EVENT, ENTRY, RETVAL) \
if (!IsEnabled())\
return RETVAL;\
@@ -21,14 +29,14 @@ using namespace Hooks;
return RETVAL;\
LOCK_ELUNA
-bool Eluna::OnDummyEffect(WorldObject* pCaster, uint32 spellId, SpellEffIndex effIndex, Item* pTarget)
+void Eluna::OnDummyEffect(WorldObject* pCaster, uint32 spellId, SpellEffIndex effIndex, Item* pTarget)
{
- START_HOOK_WITH_RETVAL(ITEM_EVENT_ON_DUMMY_EFFECT, pTarget->GetEntry(), false);
+ START_HOOK(ITEM_EVENT_ON_DUMMY_EFFECT, pTarget->GetEntry());
Push(pCaster);
Push(spellId);
Push(effIndex);
Push(pTarget);
- return CallAllFunctionsBool(ItemEventBindings, key);
+ CallAllFunctions(ItemEventBindings, key);
}
bool Eluna::OnQuestAccept(Player* pPlayer, Item* pItem, Quest const* pQuest)
diff --git a/LuaEngine.h b/LuaEngine.h
index 85f4ca6..f96953d 100644
--- a/LuaEngine.h
+++ b/LuaEngine.h
@@ -359,7 +359,7 @@ public:
bool OnAddonMessage(Player* sender, uint32 type, std::string& msg, Player* receiver, Guild* guild, Group* group, Channel* channel);
/* Item */
- bool OnDummyEffect(WorldObject* pCaster, uint32 spellId, SpellEffIndex effIndex, Item* pTarget);
+ void OnDummyEffect(WorldObject* pCaster, uint32 spellId, SpellEffIndex effIndex, Item* pTarget);
bool OnQuestAccept(Player* pPlayer, Item* pItem, Quest const* pQuest);
bool OnUse(Player* pPlayer, Item* pItem, SpellCastTargets const& targets);
bool OnItemUse(Player* pPlayer, Item* pItem, SpellCastTargets const& targets);
@@ -369,7 +369,7 @@ public:
void HandleGossipSelectOption(Player* pPlayer, Item* item, uint32 sender, uint32 action, const std::string& code);
/* Creature */
- bool OnDummyEffect(WorldObject* pCaster, uint32 spellId, SpellEffIndex effIndex, Creature* pTarget);
+ void OnDummyEffect(WorldObject* pCaster, uint32 spellId, SpellEffIndex effIndex, Creature* pTarget);
bool OnGossipHello(Player* pPlayer, Creature* pCreature);
bool OnGossipSelect(Player* pPlayer, Creature* pCreature, uint32 sender, uint32 action);
bool OnGossipSelectCode(Player* pPlayer, Creature* pCreature, uint32 sender, uint32 action, const char* code);
@@ -401,7 +401,7 @@ public:
void On_Reset(Creature* me);
/* GameObject */
- bool OnDummyEffect(WorldObject* pCaster, uint32 spellId, SpellEffIndex effIndex, GameObject* pTarget);
+ void OnDummyEffect(WorldObject* 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);