Fixed olympiad zone broadcast.
Contributed by Sahar.
This commit is contained in:
@@ -92,8 +92,8 @@ public class OlympiadObservation implements IBypassHandler
|
||||
final OlympiadGameTask nextArena = OlympiadGameManager.getInstance().getOlympiadTask(arenaId);
|
||||
if (nextArena != null)
|
||||
{
|
||||
player.enterOlympiadObserverMode(nextArena.getZone().getSpectatorSpawns().get(0), arenaId);
|
||||
player.setInstanceId(OlympiadGameManager.getInstance().getOlympiadTask(arenaId).getZone().getInstanceId());
|
||||
final int instanceId = OlympiadGameManager.getInstance().getOlympiadTask(arenaId).getZone().getInstanceId();
|
||||
player.enterOlympiadObserverMode(nextArena.getZone().getSpectatorSpawns().get(0), arenaId, instanceId);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
|
@@ -9595,7 +9595,7 @@ public class PlayerInstance extends Playable
|
||||
_lastLoc.setXYZ(0, 0, 0);
|
||||
}
|
||||
|
||||
public void enterOlympiadObserverMode(Location loc, int id)
|
||||
public void enterOlympiadObserverMode(Location loc, int id, int instanceId)
|
||||
{
|
||||
if (hasSummon())
|
||||
{
|
||||
@@ -9634,7 +9634,7 @@ public class PlayerInstance extends Playable
|
||||
setTarget(null);
|
||||
setIsInvul(true);
|
||||
setInvisible(true);
|
||||
teleToLocation(loc, false);
|
||||
teleToLocation(loc, instanceId, 0);
|
||||
sendPacket(new ExOlympiadMode(3));
|
||||
|
||||
broadcastUserInfo();
|
||||
|
@@ -49,7 +49,7 @@ public abstract class ZoneType extends ListenersContainer
|
||||
protected Map<Integer, Creature> _characterList = new ConcurrentHashMap<>();
|
||||
|
||||
/** Parameters to affect specific characters */
|
||||
private boolean _checkAffected = false;
|
||||
protected boolean _checkAffected = false;
|
||||
private String _name = null;
|
||||
private int _minLvl;
|
||||
private int _maxLvl;
|
||||
@@ -196,7 +196,7 @@ public abstract class ZoneType extends ListenersContainer
|
||||
* @param creature the player to verify.
|
||||
* @return {@code true} if the given character is affected by this zone, {@code false} otherwise.
|
||||
*/
|
||||
private boolean isAffected(Creature creature)
|
||||
protected boolean isAffected(Creature creature)
|
||||
{
|
||||
// Check instance
|
||||
if (_instanceTemplateId > 0)
|
||||
|
@@ -57,6 +57,8 @@ public class OlympiadStadiumZone extends ZoneRespawn
|
||||
settings = new Settings();
|
||||
}
|
||||
setSettings(settings);
|
||||
|
||||
_checkAffected = true;
|
||||
}
|
||||
|
||||
public class Settings extends AbstractZoneSettings
|
||||
@@ -144,7 +146,7 @@ public class OlympiadStadiumZone extends ZoneRespawn
|
||||
final ExOlympiadUserInfo packet = new ExOlympiadUserInfo(player);
|
||||
for (PlayerInstance target : getPlayersInside())
|
||||
{
|
||||
if ((target != null) && (target.inObserverMode() || (target.getOlympiadSide() != player.getOlympiadSide())))
|
||||
if ((target != null) && (target.inObserverMode() || (target.getOlympiadSide() != player.getOlympiadSide())) && (target.getInstanceId() == player.getInstanceId()))
|
||||
{
|
||||
target.sendPacket(packet);
|
||||
}
|
||||
@@ -153,15 +155,43 @@ public class OlympiadStadiumZone extends ZoneRespawn
|
||||
|
||||
public void broadcastPacketToObservers(IClientOutgoingPacket packet)
|
||||
{
|
||||
for (Creature creature : getCharactersInside())
|
||||
for (PlayerInstance creature : getPlayersInside())
|
||||
{
|
||||
if ((creature != null) && creature.isPlayer() && creature.getActingPlayer().inObserverMode())
|
||||
if ((creature != null) && creature.inObserverMode() && (creature.getInstanceId() == getInstanceId()))
|
||||
{
|
||||
creature.sendPacket(packet);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void broadcastPacket(IClientOutgoingPacket packet)
|
||||
{
|
||||
for (PlayerInstance creature : getPlayersInside())
|
||||
{
|
||||
if ((creature != null) && (creature.getInstanceId() == getInstanceId()))
|
||||
{
|
||||
creature.sendPacket(packet);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean isAffected(Creature creature)
|
||||
{
|
||||
if (super.isAffected(creature))
|
||||
{
|
||||
if (creature.getInstanceId() != getInstanceId())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected final void onEnter(Creature creature)
|
||||
{
|
||||
@@ -230,6 +260,10 @@ public class OlympiadStadiumZone extends ZoneRespawn
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if (creature.getInstanceId() != getInstanceId())
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (battleStarted)
|
||||
{
|
||||
|
Reference in New Issue
Block a user