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