aboutsummaryrefslogtreecommitdiff
path: root/src/server/game
diff options
context:
space:
mode:
authorShauren <none@none>2010-12-26 16:35:29 +0100
committerShauren <none@none>2010-12-26 16:35:29 +0100
commit79070ca820e1bd0cf311a9c1a10b145740eb9fd8 (patch)
treea123808d614947dc09712213661dc0bde1a5590f /src/server/game
parent821c0f6c42efd4d194763a8e55f68b89af463a2d (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-xsrc/server/game/Entities/GameObject/GameObject.cpp15
-rwxr-xr-xsrc/server/game/Server/Protocol/Handlers/SpellHandler.cpp5
-rwxr-xr-xsrc/server/game/Spells/SpellEffects.cpp13
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)