diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/Creature.java
index 9ac6650e8c..41faac32ee 100644
--- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/Creature.java
+++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/Creature.java
@@ -108,10 +108,8 @@ import org.l2jmobius.gameserver.model.zone.type.TownZone;
import org.l2jmobius.gameserver.network.SystemMessageId;
import org.l2jmobius.gameserver.network.serverpackets.ActionFailed;
import org.l2jmobius.gameserver.network.serverpackets.Attack;
-import org.l2jmobius.gameserver.network.serverpackets.BeginRotation;
import org.l2jmobius.gameserver.network.serverpackets.ChangeMoveType;
import org.l2jmobius.gameserver.network.serverpackets.ChangeWaitType;
-import org.l2jmobius.gameserver.network.serverpackets.CharInfo;
import org.l2jmobius.gameserver.network.serverpackets.CharMoveToLocation;
import org.l2jmobius.gameserver.network.serverpackets.ExOlympiadSpelledInfo;
import org.l2jmobius.gameserver.network.serverpackets.GameServerPacket;
@@ -123,7 +121,6 @@ import org.l2jmobius.gameserver.network.serverpackets.MyTargetSelected;
import org.l2jmobius.gameserver.network.serverpackets.NpcInfo;
import org.l2jmobius.gameserver.network.serverpackets.PartySpelled;
import org.l2jmobius.gameserver.network.serverpackets.PetInfo;
-import org.l2jmobius.gameserver.network.serverpackets.RelationChanged;
import org.l2jmobius.gameserver.network.serverpackets.Revive;
import org.l2jmobius.gameserver.network.serverpackets.SetupGauge;
import org.l2jmobius.gameserver.network.serverpackets.StatusUpdate;
@@ -202,7 +199,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder
private final byte[] _zones = new byte[ZoneId.getZoneCount()];
private boolean _advanceFlag = false;
private int _advanceMultiplier = 1;
- private byte _startingRotationCounter = 4;
/**
* Check if the character is in the given zone Id.
@@ -367,109 +363,24 @@ public abstract class Creature extends WorldObject implements ISkillsHolder
getAttackByList().add(creature);
}
- /**
- * Checks if is starting rotation allowed.
- * @return true, if is starting rotation allowed
- */
- public synchronized boolean isStartingRotationAllowed()
- {
- // This function is called too often from movement arrow
- _startingRotationCounter--;
- if (_startingRotationCounter < 0)
- {
- _startingRotationCounter = 4;
- }
-
- if (_startingRotationCounter == 4)
- {
- return true;
- }
- return false;
- }
-
public void broadcastPacket(GameServerPacket mov)
{
- if (!(mov instanceof CharInfo))
- {
- sendPacket(mov);
- }
-
- // don't broadcast anytime the rotating packet
- if ((mov instanceof BeginRotation) && !isStartingRotationAllowed())
- {
- return;
- }
-
for (PlayerInstance player : getKnownList().getKnownPlayers().values())
{
- if (player != null)
- {
- if ((this instanceof PlayerInstance) && !player.isGM() && (((PlayerInstance) this).getAppearance().isInvisible() || ((PlayerInstance) this).inObserverMode()))
- {
- return;
- }
-
- try
- {
- player.sendPacket(mov);
-
- if ((mov instanceof CharInfo) && (this instanceof PlayerInstance))
- {
- final int relation = ((PlayerInstance) this).getRelation(player);
- if ((getKnownList().getKnownRelations().get(player.getObjectId()) != null) && (getKnownList().getKnownRelations().get(player.getObjectId()) != relation))
- {
- player.sendPacket(new RelationChanged((PlayerInstance) this, relation, player.isAutoAttackable(this)));
- }
- }
- }
- catch (NullPointerException e)
- {
- LOGGER.warning(e.toString());
- }
- }
+ player.sendPacket(mov);
}
}
- /**
- * Send a packet to the Creature AND to all PlayerInstance in the radius (max knownlist radius) from the Creature.
- *
- * Concept:
- *
- * PlayerInstance in the detection area of the Creature are identified in _knownPlayers. In order to inform other players of state modification on the Creature, server just need to go through _knownPlayers to send Server->Client Packet
- * @param mov the mov
- * @param radiusInKnownlist the radius in knownlist
- */
- public void broadcastPacket(GameServerPacket mov, int radiusInKnownlist)
+ public void broadcastPacket(GameServerPacket mov, int radius)
{
- if (!(mov instanceof CharInfo))
- {
- sendPacket(mov);
- }
-
for (PlayerInstance player : getKnownList().getKnownPlayers().values())
{
- try
+ if (!isInsideRadius(player, radius, true, false))
{
- if (!isInsideRadius(player, radiusInKnownlist, false, false))
- {
- continue;
- }
-
- player.sendPacket(mov);
-
- if ((mov instanceof CharInfo) && (this instanceof PlayerInstance))
- {
- final int relation = ((PlayerInstance) this).getRelation(player);
- if ((getKnownList().getKnownRelations().get(player.getObjectId()) != null) && (getKnownList().getKnownRelations().get(player.getObjectId()) != relation))
- {
- player.sendPacket(new RelationChanged((PlayerInstance) this, relation, player.isAutoAttackable(this)));
- }
- }
- }
- catch (NullPointerException e)
- {
- LOGGER.warning(e.toString());
+ continue;
}
+
+ player.sendPacket(mov);
}
}
diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java
index a9e00450f7..248b190592 100644
--- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java
+++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java
@@ -4982,6 +4982,69 @@ public class PlayerInstance extends Playable
Broadcast.toKnownPlayers(this, new TitleUpdate(this));
}
+ @Override
+ public void broadcastPacket(GameServerPacket mov)
+ {
+ final boolean isCharInfo = mov instanceof CharInfo;
+ if (!isCharInfo)
+ {
+ sendPacket(mov);
+ }
+
+ for (PlayerInstance player : getKnownList().getKnownPlayers().values())
+ {
+ if (!player.isGM() && (getAppearance().isInvisible() || inObserverMode()))
+ {
+ continue;
+ }
+
+ player.sendPacket(mov);
+
+ if (isCharInfo)
+ {
+ final int relation = getRelation(player);
+ if ((getKnownList().getKnownRelations().get(player.getObjectId()) != null) && (getKnownList().getKnownRelations().get(player.getObjectId()) != relation))
+ {
+ player.sendPacket(new RelationChanged(this, relation, player.isAutoAttackable(this)));
+ }
+ }
+ }
+ }
+
+ @Override
+ public void broadcastPacket(GameServerPacket mov, int radius)
+ {
+ final boolean isCharInfo = mov instanceof CharInfo;
+ if (!isCharInfo)
+ {
+ sendPacket(mov);
+ }
+
+ for (PlayerInstance player : getKnownList().getKnownPlayers().values())
+ {
+ if (!isInsideRadius(player, radius, true, false))
+ {
+ continue;
+ }
+
+ if (!player.isGM() && (getAppearance().isInvisible() || inObserverMode()))
+ {
+ continue;
+ }
+
+ player.sendPacket(mov);
+
+ if (isCharInfo)
+ {
+ final int relation = getRelation(player);
+ if ((getKnownList().getKnownRelations().get(player.getObjectId()) != null) && (getKnownList().getKnownRelations().get(player.getObjectId()) != relation))
+ {
+ player.sendPacket(new RelationChanged(this, relation, player.isAutoAttackable(this)));
+ }
+ }
+ }
+ }
+
/**
* @return the Alliance Identifier of the PlayerInstance.
*/
diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/Creature.java
index 9b75ffc115..b4824afe22 100644
--- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/Creature.java
+++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/Creature.java
@@ -110,10 +110,8 @@ import org.l2jmobius.gameserver.model.zone.type.TownZone;
import org.l2jmobius.gameserver.network.SystemMessageId;
import org.l2jmobius.gameserver.network.serverpackets.ActionFailed;
import org.l2jmobius.gameserver.network.serverpackets.Attack;
-import org.l2jmobius.gameserver.network.serverpackets.BeginRotation;
import org.l2jmobius.gameserver.network.serverpackets.ChangeMoveType;
import org.l2jmobius.gameserver.network.serverpackets.ChangeWaitType;
-import org.l2jmobius.gameserver.network.serverpackets.CharInfo;
import org.l2jmobius.gameserver.network.serverpackets.CharMoveToLocation;
import org.l2jmobius.gameserver.network.serverpackets.ExOlympiadSpelledInfo;
import org.l2jmobius.gameserver.network.serverpackets.GameServerPacket;
@@ -125,7 +123,6 @@ import org.l2jmobius.gameserver.network.serverpackets.MyTargetSelected;
import org.l2jmobius.gameserver.network.serverpackets.NpcInfo;
import org.l2jmobius.gameserver.network.serverpackets.PartySpelled;
import org.l2jmobius.gameserver.network.serverpackets.PetInfo;
-import org.l2jmobius.gameserver.network.serverpackets.RelationChanged;
import org.l2jmobius.gameserver.network.serverpackets.Revive;
import org.l2jmobius.gameserver.network.serverpackets.SetupGauge;
import org.l2jmobius.gameserver.network.serverpackets.StatusUpdate;
@@ -204,7 +201,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder
private final byte[] _zones = new byte[ZoneId.getZoneCount()];
private boolean _advanceFlag = false;
private int _advanceMultiplier = 1;
- private byte _startingRotationCounter = 4;
/**
* Check if the character is in the given zone Id.
@@ -369,109 +365,24 @@ public abstract class Creature extends WorldObject implements ISkillsHolder
getAttackByList().add(creature);
}
- /**
- * Checks if is starting rotation allowed.
- * @return true, if is starting rotation allowed
- */
- public synchronized boolean isStartingRotationAllowed()
- {
- // This function is called too often from movement arrow
- _startingRotationCounter--;
- if (_startingRotationCounter < 0)
- {
- _startingRotationCounter = 4;
- }
-
- if (_startingRotationCounter == 4)
- {
- return true;
- }
- return false;
- }
-
public void broadcastPacket(GameServerPacket mov)
{
- if (!(mov instanceof CharInfo))
- {
- sendPacket(mov);
- }
-
- // don't broadcast anytime the rotating packet
- if ((mov instanceof BeginRotation) && !isStartingRotationAllowed())
- {
- return;
- }
-
for (PlayerInstance player : getKnownList().getKnownPlayers().values())
{
- if (player != null)
- {
- if ((this instanceof PlayerInstance) && !player.isGM() && (((PlayerInstance) this).getAppearance().isInvisible() || ((PlayerInstance) this).inObserverMode()))
- {
- return;
- }
-
- try
- {
- player.sendPacket(mov);
-
- if ((mov instanceof CharInfo) && (this instanceof PlayerInstance))
- {
- final int relation = ((PlayerInstance) this).getRelation(player);
- if ((getKnownList().getKnownRelations().get(player.getObjectId()) != null) && (getKnownList().getKnownRelations().get(player.getObjectId()) != relation))
- {
- player.sendPacket(new RelationChanged((PlayerInstance) this, relation, player.isAutoAttackable(this)));
- }
- }
- }
- catch (NullPointerException e)
- {
- LOGGER.warning(e.toString());
- }
- }
+ player.sendPacket(mov);
}
}
- /**
- * Send a packet to the Creature AND to all PlayerInstance in the radius (max knownlist radius) from the Creature.
- *
- * Concept:
- *
- * PlayerInstance in the detection area of the Creature are identified in _knownPlayers. In order to inform other players of state modification on the Creature, server just need to go through _knownPlayers to send Server->Client Packet
- * @param mov the mov
- * @param radiusInKnownlist the radius in knownlist
- */
- public void broadcastPacket(GameServerPacket mov, int radiusInKnownlist)
+ public void broadcastPacket(GameServerPacket mov, int radius)
{
- if (!(mov instanceof CharInfo))
- {
- sendPacket(mov);
- }
-
for (PlayerInstance player : getKnownList().getKnownPlayers().values())
{
- try
+ if (!isInsideRadius(player, radius, true, false))
{
- if (!isInsideRadius(player, radiusInKnownlist, false, false))
- {
- continue;
- }
-
- player.sendPacket(mov);
-
- if ((mov instanceof CharInfo) && (this instanceof PlayerInstance))
- {
- final int relation = ((PlayerInstance) this).getRelation(player);
- if ((getKnownList().getKnownRelations().get(player.getObjectId()) != null) && (getKnownList().getKnownRelations().get(player.getObjectId()) != relation))
- {
- player.sendPacket(new RelationChanged((PlayerInstance) this, relation, player.isAutoAttackable(this)));
- }
- }
- }
- catch (NullPointerException e)
- {
- LOGGER.warning(e.toString());
+ continue;
}
+
+ player.sendPacket(mov);
}
}
diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java
index 9859473ab7..43a05195a7 100644
--- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java
+++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java
@@ -5074,6 +5074,69 @@ public class PlayerInstance extends Playable
Broadcast.toKnownPlayers(this, new TitleUpdate(this));
}
+ @Override
+ public void broadcastPacket(GameServerPacket mov)
+ {
+ final boolean isCharInfo = mov instanceof CharInfo;
+ if (!isCharInfo)
+ {
+ sendPacket(mov);
+ }
+
+ for (PlayerInstance player : getKnownList().getKnownPlayers().values())
+ {
+ if (!player.isGM() && (getAppearance().isInvisible() || inObserverMode()))
+ {
+ continue;
+ }
+
+ player.sendPacket(mov);
+
+ if (isCharInfo)
+ {
+ final int relation = getRelation(player);
+ if ((getKnownList().getKnownRelations().get(player.getObjectId()) != null) && (getKnownList().getKnownRelations().get(player.getObjectId()) != relation))
+ {
+ player.sendPacket(new RelationChanged(this, relation, player.isAutoAttackable(this)));
+ }
+ }
+ }
+ }
+
+ @Override
+ public void broadcastPacket(GameServerPacket mov, int radius)
+ {
+ final boolean isCharInfo = mov instanceof CharInfo;
+ if (!isCharInfo)
+ {
+ sendPacket(mov);
+ }
+
+ for (PlayerInstance player : getKnownList().getKnownPlayers().values())
+ {
+ if (!isInsideRadius(player, radius, true, false))
+ {
+ continue;
+ }
+
+ if (!player.isGM() && (getAppearance().isInvisible() || inObserverMode()))
+ {
+ continue;
+ }
+
+ player.sendPacket(mov);
+
+ if (isCharInfo)
+ {
+ final int relation = getRelation(player);
+ if ((getKnownList().getKnownRelations().get(player.getObjectId()) != null) && (getKnownList().getKnownRelations().get(player.getObjectId()) != relation))
+ {
+ player.sendPacket(new RelationChanged(this, relation, player.isAutoAttackable(this)));
+ }
+ }
+ }
+ }
+
/**
* @return the Alliance Identifier of the PlayerInstance.
*/
diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java
index 9fb9b55320..7e56e7008c 100644
--- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java
+++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java
@@ -4239,7 +4239,8 @@ public class PlayerInstance extends Playable
@Override
public void broadcastPacket(IClientOutgoingPacket mov)
{
- if (!(mov instanceof CharInfo))
+ final boolean isCharInfo = mov instanceof CharInfo;
+ if (!isCharInfo)
{
sendPacket(mov);
}
@@ -4250,8 +4251,10 @@ public class PlayerInstance extends Playable
{
return;
}
+
player.sendPacket(mov);
- if (mov instanceof CharInfo)
+
+ if (isCharInfo)
{
final int relation = getRelation(player);
final boolean isAutoAttackable = isAutoAttackable(player);
@@ -4270,22 +4273,24 @@ public class PlayerInstance extends Playable
}
@Override
- public void broadcastPacket(IClientOutgoingPacket mov, int radiusInKnownlist)
+ public void broadcastPacket(IClientOutgoingPacket mov, int radius)
{
- if (!(mov instanceof CharInfo))
+ final boolean isCharInfo = mov instanceof CharInfo;
+ if (!isCharInfo)
{
sendPacket(mov);
}
World.getInstance().forEachVisibleObject(this, PlayerInstance.class, player ->
{
- if (!isVisibleFor(player) || (calculateDistance3D(player) >= radiusInKnownlist))
+ if (!isVisibleFor(player) || (calculateDistance3D(player) >= radius))
{
return;
}
player.sendPacket(mov);
- if (mov instanceof CharInfo)
+
+ if (isCharInfo)
{
final int relation = getRelation(player);
final boolean isAutoAttackable = isAutoAttackable(player);
diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java
index 5bb15d0140..a23a0db4b5 100644
--- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java
+++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java
@@ -4129,7 +4129,8 @@ public class PlayerInstance extends Playable
@Override
public void broadcastPacket(IClientOutgoingPacket mov)
{
- if (!(mov instanceof CharInfo))
+ final boolean isCharInfo = mov instanceof CharInfo;
+ if (!isCharInfo)
{
sendPacket(mov);
}
@@ -4140,8 +4141,10 @@ public class PlayerInstance extends Playable
{
return;
}
+
player.sendPacket(mov);
- if (mov instanceof CharInfo)
+
+ if (isCharInfo)
{
final int relation = getRelation(player);
final boolean isAutoAttackable = isAutoAttackable(player);
@@ -4160,22 +4163,24 @@ public class PlayerInstance extends Playable
}
@Override
- public void broadcastPacket(IClientOutgoingPacket mov, int radiusInKnownlist)
+ public void broadcastPacket(IClientOutgoingPacket mov, int radius)
{
- if (!(mov instanceof CharInfo))
+ final boolean isCharInfo = mov instanceof CharInfo;
+ if (!isCharInfo)
{
sendPacket(mov);
}
World.getInstance().forEachVisibleObject(this, PlayerInstance.class, player ->
{
- if (!isVisibleFor(player) || (calculateDistance3D(player) >= radiusInKnownlist))
+ if (!isVisibleFor(player) || (calculateDistance3D(player) >= radius))
{
return;
}
player.sendPacket(mov);
- if (mov instanceof CharInfo)
+
+ if (isCharInfo)
{
final int relation = getRelation(player);
final boolean isAutoAttackable = isAutoAttackable(player);