From 16c0ff3ef731566aecb8d60eb7b2eebaeef01634 Mon Sep 17 00:00:00 2001 From: NoFantasy Date: Sun, 17 Jan 2010 23:06:01 +0100 Subject: [PATCH] [9204] Move remaining handling of GO from SendLoot to GameObject::Use Signed-off-by: NoFantasy --- src/game/GameObject.cpp | 20 +++++++++++++++++++- src/game/SpellEffects.cpp | 17 +++++------------ src/shared/revision_nr.h | 2 +- 3 files changed, 25 insertions(+), 14 deletions(-) diff --git a/src/game/GameObject.cpp b/src/game/GameObject.cpp index 309ba7764..3631149ad 100644 --- a/src/game/GameObject.cpp +++ b/src/game/GameObject.cpp @@ -892,6 +892,24 @@ void GameObject::Use(Unit* user) player->SendPreparedGossip(this); return; } + case GAMEOBJECT_TYPE_CHEST: + { + if (user->GetTypeId() != TYPEID_PLAYER) + return; + + // TODO: possible must be moved to loot release (in different from linked triggering) + if (GetGOInfo()->chest.eventId) + { + sLog.outDebug("Chest ScriptStart id %u for GO %u", GetGOInfo()->chest.eventId, GetDBTableGUIDLow()); + GetMap()->ScriptsStart(sEventScripts, GetGOInfo()->chest.eventId, user, this); + } + + // triggering linked GO + if (uint32 trapEntry = GetGOInfo()->chest.linkedTrapId) + TriggeringLinkedGameObject(trapEntry, user); + + return; + } case GAMEOBJECT_TYPE_CHAIR: //7 Sitting: Wooden bench, chairs { GameObjectInfo const* info = GetGOInfo(); @@ -1311,7 +1329,7 @@ void GameObject::Use(Unit* user) return; } default: - sLog.outDebug("GameObject::Use unhandled GameObject type %u (entry %u).", GetGoType(), GetEntry()); + sLog.outError("GameObject::Use unhandled GameObject type %u (entry %u).", GetGoType(), GetEntry()); break; } diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp index 635e22b10..8cfd26522 100644 --- a/src/game/SpellEffects.cpp +++ b/src/game/SpellEffects.cpp @@ -3112,20 +3112,13 @@ void Spell::SendLoot(uint64 guid, LootType loottype) return; case GAMEOBJECT_TYPE_CHEST: - // TODO: possible must be moved to loot release (in different from linked triggering) - if (gameObjTarget->GetGOInfo()->chest.eventId) - { - sLog.outDebug("Chest ScriptStart id %u for GO %u", gameObjTarget->GetGOInfo()->chest.eventId,gameObjTarget->GetDBTableGUIDLow()); - player->GetMap()->ScriptsStart(sEventScripts, gameObjTarget->GetGOInfo()->chest.eventId, player, gameObjTarget); - } - - // triggering linked GO - if (uint32 trapEntry = gameObjTarget->GetGOInfo()->chest.linkedTrapId) - gameObjTarget->TriggeringLinkedGameObject(trapEntry,m_caster); - + gameObjTarget->Use(m_caster); // Don't return, let loots been taken - default: break; + + default: + sLog.outError("Spell::SendLoot unhandled GameObject type %u (entry %u).", gameObjTarget->GetGoType(), gameObjTarget->GetEntry()); + return; } } diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index 69a06a68d..735966018 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "9203" + #define REVISION_NR "9204" #endif // __REVISION_NR_H__