diff options
| author | Shauren <none@none> | 2010-12-26 16:35:29 +0100 |
|---|---|---|
| committer | Shauren <none@none> | 2010-12-26 16:35:29 +0100 |
| commit | 79070ca820e1bd0cf311a9c1a10b145740eb9fd8 (patch) | |
| tree | a123808d614947dc09712213661dc0bde1a5590f /src/server/game | |
| parent | 821c0f6c42efd4d194763a8e55f68b89af463a2d (diff) | |
Scripts/Serpentshrine Cavern: Fixed "The Lurker Above" achievement and removed hacks for the event
--HG--
branch : trunk
Diffstat (limited to 'src/server/game')
| -rwxr-xr-x | src/server/game/Entities/GameObject/GameObject.cpp | 15 | ||||
| -rwxr-xr-x | src/server/game/Server/Protocol/Handlers/SpellHandler.cpp | 5 | ||||
| -rwxr-xr-x | src/server/game/Spells/SpellEffects.cpp | 13 |
3 files changed, 19 insertions, 14 deletions
diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp index 809f394a2f8..ef5685ffb08 100755 --- a/src/server/game/Entities/GameObject/GameObject.cpp +++ b/src/server/game/Entities/GameObject/GameObject.cpp @@ -1040,6 +1040,14 @@ void GameObject::Use(Unit* user) uint32 spellId = 0; bool triggered = false; + if (Player* playerUser = user->ToPlayer()) + { + if (sScriptMgr->OnGossipHello(playerUser, this)) + return; + + AI()->GossipHello(playerUser); + } + switch(GetGoType()) { case GAMEOBJECT_TYPE_DOOR: //0 @@ -1238,15 +1246,14 @@ void GameObject::Use(Unit* user) //fishing bobber case GAMEOBJECT_TYPE_FISHINGNODE: //17 { - if (user->GetTypeId() != TYPEID_PLAYER) + Player* player = user->ToPlayer(); + if (!player) return; - Player* player = (Player*)user; - if (player->GetGUID() != GetOwnerGUID()) return; - switch(getLootState()) + switch (getLootState()) { case GO_READY: // ready for loot { diff --git a/src/server/game/Server/Protocol/Handlers/SpellHandler.cpp b/src/server/game/Server/Protocol/Handlers/SpellHandler.cpp index 5c1687956d8..87ae02b5272 100755 --- a/src/server/game/Server/Protocol/Handlers/SpellHandler.cpp +++ b/src/server/game/Server/Protocol/Handlers/SpellHandler.cpp @@ -294,11 +294,6 @@ void WorldSession::HandleGameObjectUseOpcode(WorldPacket & recv_data) if (!obj) return; - if (sScriptMgr->OnGossipHello(_player, obj)) - return; - - obj->AI()->GossipHello(_player); - obj->Use(_player); } diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index 60d3fe5704c..a1406a5ab18 100755 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -2631,12 +2631,19 @@ void Spell::EffectEnergizePct(SpellEffIndex effIndex) void Spell::SendLoot(uint64 guid, LootType loottype) { - Player* player = (Player*)m_caster; + Player* player = m_caster->ToPlayer(); if (!player) return; if (gameObjTarget) { + // special case, already has GossipHello inside so return and avoid calling twice + if (gameObjTarget->GetGoType() == GAMEOBJECT_TYPE_GOOBER) + { + gameObjTarget->Use(m_caster); + return; + } + if (sScriptMgr->OnGossipHello(player, gameObjTarget)) return; @@ -2662,10 +2669,6 @@ void Spell::SendLoot(uint64 guid, LootType loottype) gameObjTarget->TriggeringLinkedGameObject(trapEntry,m_caster); return; - case GAMEOBJECT_TYPE_GOOBER: - gameObjTarget->Use(m_caster); - return; - case GAMEOBJECT_TYPE_CHEST: // TODO: possible must be moved to loot release (in different from linked triggering) if (gameObjTarget->GetGOInfo()->chest.eventId) |
