aboutsummaryrefslogtreecommitdiff
path: root/src/game/GridNotifiers.cpp
diff options
context:
space:
mode:
authormegamage <none@none>2009-03-23 20:13:37 -0600
committermegamage <none@none>2009-03-23 20:13:37 -0600
commitf18a9c916d23c96c013f702aaec6b2c539ceb273 (patch)
tree9e1858c39f31538d2fa0c101d4b3911c811e822a /src/game/GridNotifiers.cpp
parentdcb08352e7420b6a1277dfa5de359d2f19651cd9 (diff)
*Fix some crashes possibly related to vehicles.
*Fix a bug that client crashes when seer is far away from caster. --HG-- branch : trunk
Diffstat (limited to 'src/game/GridNotifiers.cpp')
-rw-r--r--src/game/GridNotifiers.cpp32
1 files changed, 18 insertions, 14 deletions
diff --git a/src/game/GridNotifiers.cpp b/src/game/GridNotifiers.cpp
index 86f4be9adc6..a244e950dad 100644
--- a/src/game/GridNotifiers.cpp
+++ b/src/game/GridNotifiers.cpp
@@ -110,14 +110,15 @@ Deliverer::Visit(PlayerMapType &m)
if(!iter->getSource()->InSamePhase(i_phaseMask))
continue;
- if (!i_dist || iter->getSource()->GetDistance(&i_source) <= i_dist)
+ if (!i_dist || iter->getSource()->GetDistance(&i_source) < i_dist)
{
// Send packet to all who are sharing the player's vision
if (!iter->getSource()->GetSharedVisionList().empty())
{
- SharedVisionList::const_iterator it = iter->getSource()->GetSharedVisionList().begin();
- for ( ; it != iter->getSource()->GetSharedVisionList().end(); ++it)
- SendPacket(*it);
+ SharedVisionList::const_iterator i = iter->getSource()->GetSharedVisionList().begin();
+ for ( ; i != iter->getSource()->GetSharedVisionList().end(); ++i)
+ if((*i)->m_seer == iter->getSource())
+ SendPacket(*i);
}
VisitObject(iter->getSource());
@@ -133,14 +134,15 @@ Deliverer::Visit(CreatureMapType &m)
if(!iter->getSource()->InSamePhase(i_phaseMask))
continue;
- if (!i_dist || iter->getSource()->GetDistance(&i_source) <= i_dist)
+ if (!i_dist || iter->getSource()->GetDistance(&i_source) < i_dist)
{
// Send packet to all who are sharing the creature's vision
if (!iter->getSource()->GetSharedVisionList().empty())
{
- SharedVisionList::const_iterator it = iter->getSource()->GetSharedVisionList().begin();
- for ( ; it != iter->getSource()->GetSharedVisionList().end(); ++it)
- SendPacket(*it);
+ SharedVisionList::const_iterator i = iter->getSource()->GetSharedVisionList().begin();
+ for ( ; i != iter->getSource()->GetSharedVisionList().end(); ++i)
+ if((*i)->m_seer == iter->getSource())
+ SendPacket(*i);
}
}
}
@@ -154,13 +156,15 @@ Deliverer::Visit(DynamicObjectMapType &m)
if(!iter->getSource()->InSamePhase(i_phaseMask))
continue;
- if (IS_PLAYER_GUID(iter->getSource()->GetCasterGUID()))
+ if (!i_dist || iter->getSource()->GetDistance(&i_source) < i_dist)
{
- // Send packet back to the caster if the caster has vision of dynamic object
- Player* caster = (Player*)iter->getSource()->GetCaster();
- if (caster && caster->GetUInt64Value(PLAYER_FARSIGHT) == iter->getSource()->GetGUID() &&
- (!i_dist || iter->getSource()->GetDistance(&i_source) <= i_dist))
- SendPacket(caster);
+ if (IS_PLAYER_GUID(iter->getSource()->GetCasterGUID()))
+ {
+ // Send packet back to the caster if the caster has vision of dynamic object
+ Player* caster = (Player*)iter->getSource()->GetCaster();
+ if (caster && caster->m_seer == iter->getSource())
+ SendPacket(caster);
+ }
}
}
}