diff options
| author | kontownik <kontownik44@o2.pl> | 2014-03-03 22:18:47 +0100 |
|---|---|---|
| committer | kontownik <kontownik44@o2.pl> | 2014-03-03 22:18:47 +0100 |
| commit | 91850fa9e441eb30ca9b28b87012a4e71ccbdef7 (patch) | |
| tree | 57a1d52046aa70d2c9a7c39d1e3413d8ca6776ae /src | |
| parent | 437b97fe73d536bc049813e61a97a8f6d58b65af (diff) | |
Core/Scripts: New ItemScript trigger, OnItemRemove
Diffstat (limited to 'src')
| -rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 3 | ||||
| -rw-r--r-- | src/server/game/Scripting/ScriptMgr.cpp | 9 | ||||
| -rw-r--r-- | src/server/game/Scripting/ScriptMgr.h | 4 |
3 files changed, 15 insertions, 1 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 6e3ff34668f..36e0b2f20a9 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -12654,7 +12654,8 @@ void Player::DestroyItem(uint8 bag, uint8 slot, bool update) RemoveAurasDueToSpell(proto->Spells[i].SpellId); ItemRemovedQuestCheck(pItem->GetEntry(), pItem->GetCount()); - + sScriptMgr->OnItemRemove(this, pItem); + if (bag == INVENTORY_SLOT_BAG_0) { SetUInt64Value(PLAYER_FIELD_INV_SLOT_HEAD + (slot * 2), 0); diff --git a/src/server/game/Scripting/ScriptMgr.cpp b/src/server/game/Scripting/ScriptMgr.cpp index d7a2c147edb..94cf1047dfb 100644 --- a/src/server/game/Scripting/ScriptMgr.cpp +++ b/src/server/game/Scripting/ScriptMgr.cpp @@ -691,6 +691,15 @@ bool ScriptMgr::OnItemExpire(Player* player, ItemTemplate const* proto) return tmpscript->OnExpire(player, proto); } +bool ScriptMgr::OnItemRemove(Player* player, Item* item) +{ + ASSERT(player); + ASSERT(item); + + GET_SCRIPT_RET(ItemScript, item->GetScriptId(), tmpscript, false); + return tmpscript->OnRemove(player, item); +} + bool ScriptMgr::OnDummyEffect(Unit* caster, uint32 spellId, SpellEffIndex effIndex, Creature* target) { ASSERT(caster); diff --git a/src/server/game/Scripting/ScriptMgr.h b/src/server/game/Scripting/ScriptMgr.h index a0724ac47fb..726ac025d3c 100644 --- a/src/server/game/Scripting/ScriptMgr.h +++ b/src/server/game/Scripting/ScriptMgr.h @@ -388,6 +388,9 @@ class ItemScript : public ScriptObject // Called when the item expires (is destroyed). virtual bool OnExpire(Player* /*player*/, ItemTemplate const* /*proto*/) { return false; } + + // Called when the item is destroyed. + virtual bool OnRemove(Player* /*player*/, Item* /*item*/) { return false; } }; class UnitScript : public ScriptObject @@ -918,6 +921,7 @@ class ScriptMgr bool OnQuestAccept(Player* player, Item* item, Quest const* quest); bool OnItemUse(Player* player, Item* item, SpellCastTargets const& targets); bool OnItemExpire(Player* player, ItemTemplate const* proto); + bool OnItemRemove(Player* player, Item* item); public: /* CreatureScript */ |
