mirror of
https://github.com/mangosfour/server.git
synced 2025-12-14 16:37:01 +00:00
Phase system development continue.
* Use WorldObject phase mask field instead explicit aura scan. This allow have phase for any world objects. * Add phase checks to packet broadcasters/object searchers. This let correctly work say/yell/area and multi/random target spells/aggro assistance in phased areas or target selection. * In GM-mode character presense (see and visible) in all phases except normal visibility efects including GM-visibility. TODO: summoned objects phase set base at owner phase, load phase mask for creatures/gameobjects from DB, in game commands.
This commit is contained in:
parent
0c43a425e8
commit
b5da610388
16 changed files with 223 additions and 121 deletions
|
|
@ -142,8 +142,11 @@ MessageDeliverer::Visit(PlayerMapType &m)
|
|||
{
|
||||
for(PlayerMapType::iterator iter=m.begin(); iter != m.end(); ++iter)
|
||||
{
|
||||
if( i_toSelf || iter->getSource() != &i_player)
|
||||
if (i_toSelf || iter->getSource() != &i_player)
|
||||
{
|
||||
if (!i_player.InSamePhase(iter->getSource()))
|
||||
continue;
|
||||
|
||||
if(WorldSession* session = iter->getSource()->GetSession())
|
||||
session->SendPacket(i_message);
|
||||
}
|
||||
|
|
@ -155,6 +158,9 @@ ObjectMessageDeliverer::Visit(PlayerMapType &m)
|
|||
{
|
||||
for(PlayerMapType::iterator iter=m.begin(); iter != m.end(); ++iter)
|
||||
{
|
||||
if(!iter->getSource()->InSamePhase(i_phaseMask))
|
||||
continue;
|
||||
|
||||
if(WorldSession* session = iter->getSource()->GetSession())
|
||||
session->SendPacket(i_message);
|
||||
}
|
||||
|
|
@ -169,6 +175,9 @@ MessageDistDeliverer::Visit(PlayerMapType &m)
|
|||
(!i_ownTeamOnly || iter->getSource()->GetTeam() == i_player.GetTeam() ) &&
|
||||
(!i_dist || iter->getSource()->GetDistance(&i_player) <= i_dist) )
|
||||
{
|
||||
if (!i_player.InSamePhase(iter->getSource()))
|
||||
continue;
|
||||
|
||||
if(WorldSession* session = iter->getSource()->GetSession())
|
||||
session->SendPacket(i_message);
|
||||
}
|
||||
|
|
@ -182,6 +191,9 @@ ObjectMessageDistDeliverer::Visit(PlayerMapType &m)
|
|||
{
|
||||
if( !i_dist || iter->getSource()->GetDistance(&i_object) <= i_dist )
|
||||
{
|
||||
if( !i_object.InSamePhase(iter->getSource()))
|
||||
continue;
|
||||
|
||||
if(WorldSession* session = iter->getSource()->GetSession())
|
||||
session->SendPacket(i_message);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue