Browse Source

BETA: Knownlists revise:
* Increasing distance to watch for walkers to 9000 from 8000.
* Considering vehicles as walkers.
* Allowing L2NpcInstance to see objects too.
* Cleanup.

Rumen Nikiforov 12 years ago
parent
commit
3453e708ab
17 changed files with 315 additions and 199 deletions
  1. 2 2
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/L2Object.java
  2. 6 0
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/L2Vehicle.java
  3. 15 8
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/knownlist/AttackableKnownList.java
  4. 46 14
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/knownlist/CharKnownList.java
  5. 3 2
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/knownlist/DecoyKnownList.java
  6. 14 17
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/knownlist/DefenderKnownList.java
  7. 18 6
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/knownlist/DoorKnownList.java
  8. 16 9
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/knownlist/FriendlyMobKnownList.java
  9. 21 12
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/knownlist/GuardKnownList.java
  10. 12 11
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/knownlist/MonsterKnownList.java
  11. 8 10
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/knownlist/NpcKnownList.java
  12. 50 22
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/knownlist/ObjectKnownList.java
  13. 66 47
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/knownlist/PcKnownList.java
  14. 11 29
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/knownlist/RaceManagerKnownList.java
  15. 18 6
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/knownlist/StaticObjectKnownList.java
  16. 3 1
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/knownlist/TrapKnownList.java
  17. 6 3
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/knownlist/VehicleKnownList.java

+ 2 - 2
L2J_Server_BETA/java/com/l2jserver/gameserver/model/L2Object.java

@@ -792,7 +792,7 @@ public abstract class L2Object
 	}
 	
 	/**
-	 * @return {@code true} if object Npc Walker
+	 * @return {@code true} if object Npc Walker or Vehicle
 	 */
 	public boolean isWalker()
 	{
@@ -800,7 +800,7 @@ public abstract class L2Object
 	}
 	
 	/**
-	 * @return {@code true} if object Can be targetable
+	 * @return {@code true} if object Can be targeted
 	 */
 	public boolean isTargetable()
 	{

+ 6 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/L2Vehicle.java

@@ -478,4 +478,10 @@ public abstract class L2Vehicle extends L2Character
 		public void detachAI()
 		{}
 	}
+	
+	@Override
+	public boolean isWalker()
+	{
+		return true;
+	}
 }

+ 15 - 8
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/knownlist/AttackableKnownList.java

@@ -21,8 +21,6 @@ import com.l2jserver.gameserver.instancemanager.WalkingManager;
 import com.l2jserver.gameserver.model.L2Object;
 import com.l2jserver.gameserver.model.actor.L2Attackable;
 import com.l2jserver.gameserver.model.actor.L2Character;
-import com.l2jserver.gameserver.model.actor.L2Playable;
-import com.l2jserver.gameserver.model.actor.instance.L2NpcInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 
 public class AttackableKnownList extends NpcKnownList
@@ -36,17 +34,23 @@ public class AttackableKnownList extends NpcKnownList
 	protected boolean removeKnownObject(L2Object object, boolean forget)
 	{
 		if (!super.removeKnownObject(object, forget))
+		{
 			return false;
+		}
 		
 		// Remove the L2Object from the _aggrolist of the L2Attackable
 		if (object instanceof L2Character)
+		{
 			getActiveChar().getAggroList().remove(object);
+		}
 		// Set the L2Attackable Intention to AI_INTENTION_IDLE
 		final Collection<L2PcInstance> known = getKnownPlayers().values();
 		
-		//FIXME: This is a temporary solution && support for Walking Manager
-		if (getActiveChar().hasAI() && (known == null || known.isEmpty()) && !WalkingManager.getInstance().isRegistered(getActiveChar()))
+		// FIXME: This is a temporary solution && support for Walking Manager
+		if (getActiveChar().hasAI() && ((known == null) || known.isEmpty()) && !WalkingManager.getInstance().isRegistered(getActiveChar()))
+		{
 			getActiveChar().getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE, null);
+		}
 		
 		return true;
 	}
@@ -54,7 +58,7 @@ public class AttackableKnownList extends NpcKnownList
 	@Override
 	public L2Attackable getActiveChar()
 	{
-		return (L2Attackable)super.getActiveChar();
+		return (L2Attackable) super.getActiveChar();
 	}
 	
 	@Override
@@ -66,12 +70,15 @@ public class AttackableKnownList extends NpcKnownList
 	@Override
 	public int getDistanceToWatchObject(L2Object object)
 	{
-		if (object instanceof L2NpcInstance
-				|| !(object instanceof L2Character))
+		if (!(object instanceof L2Character))
+		{
 			return 0;
+		}
 		
-		if (object instanceof L2Playable)
+		if (object.isPlayable())
+		{
 			return object.getKnownList().getDistanceToWatchObject(getActiveObject());
+		}
 		
 		int max = Math.max(300, Math.max(getActiveChar().getAggroRange(), Math.max(getActiveChar().getFactionRange(), getActiveChar().getEnemyRange())));
 		

+ 46 - 14
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/knownlist/CharKnownList.java

@@ -14,18 +14,20 @@
  */
 package com.l2jserver.gameserver.model.actor.knownlist;
 
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Iterator;
+import java.util.List;
 import java.util.Map;
 
 import javolution.util.FastList;
-import javolution.util.FastMap;
 
 import com.l2jserver.gameserver.model.L2Object;
 import com.l2jserver.gameserver.model.actor.L2Character;
 import com.l2jserver.gameserver.model.actor.L2Summon;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.util.Util;
+import com.l2jserver.util.L2FastMap;
 
 public class CharKnownList extends ObjectKnownList
 {
@@ -42,14 +44,18 @@ public class CharKnownList extends ObjectKnownList
 	public boolean addKnownObject(L2Object object)
 	{
 		if (!super.addKnownObject(object))
+		{
 			return false;
-		if (object instanceof L2PcInstance)
+		}
+		else if (object.isPlayer())
 		{
-			getKnownPlayers().put(object.getObjectId(), (L2PcInstance) object);
+			getKnownPlayers().put(object.getObjectId(), object.getActingPlayer());
 			getKnownRelations().put(object.getObjectId(), -1);
 		}
-		else if (object instanceof L2Summon)
+		else if (object.isSummon())
+		{
 			getKnownSummons().put(object.getObjectId(), (L2Summon) object);
+		}
 		
 		return true;
 	}
@@ -60,7 +66,7 @@ public class CharKnownList extends ObjectKnownList
 	 */
 	public final boolean knowsThePlayer(L2PcInstance player)
 	{
-		return getActiveChar() == player || getKnownPlayers().containsKey(player.getObjectId());
+		return (getActiveChar() == player) || getKnownPlayers().containsKey(player.getObjectId());
 	}
 	
 	/** Remove all L2Object from _knownObjects and _knownPlayer of the L2Character then cancel Attack or Cast and notify AI. */
@@ -78,29 +84,37 @@ public class CharKnownList extends ObjectKnownList
 		
 		// Cancel AI Task
 		if (getActiveChar().hasAI())
+		{
 			getActiveChar().setAI(null);
+		}
 	}
 	
 	@Override
 	protected boolean removeKnownObject(L2Object object, boolean forget)
 	{
 		if (!super.removeKnownObject(object, forget))
+		{
 			return false;
+		}
 		
 		if (!forget) // on forget objects removed by iterator
 		{
-			if (object instanceof L2PcInstance)
+			if (object.isPlayer())
 			{
 				getKnownPlayers().remove(object.getObjectId());
 				getKnownRelations().remove(object.getObjectId());
 			}
-			else if (object instanceof L2Summon)
+			else if (object.isSummon())
+			{
 				getKnownSummons().remove(object.getObjectId());
+			}
 		}
 		
 		// If object is targeted by the L2Character, cancel Attack or Cast
 		if (object == getActiveChar().getTarget())
+		{
 			getActiveChar().setTarget(null);
+		}
 		
 		return true;
 	}
@@ -117,7 +131,9 @@ public class CharKnownList extends ObjectKnownList
 			{
 				player = pIter.next();
 				if (player == null)
+				{
 					pIter.remove();
+				}
 				else if (!player.isVisible() || !Util.checkIfInShortRadius(getDistanceToForgetObject(player), getActiveObject(), player, true))
 				{
 					pIter.remove();
@@ -135,7 +151,9 @@ public class CharKnownList extends ObjectKnownList
 			{
 				summon = sIter.next();
 				if (summon == null)
+				{
 					sIter.remove();
+				}
 				else if (!summon.isVisible() || !Util.checkIfInShortRadius(getDistanceToForgetObject(summon), getActiveObject(), summon, true))
 				{
 					sIter.remove();
@@ -154,19 +172,23 @@ public class CharKnownList extends ObjectKnownList
 		{
 			object = oIter.next();
 			if (object == null)
+			{
 				oIter.remove();
+			}
 			else if (!object.isVisible() || !Util.checkIfInShortRadius(getDistanceToForgetObject(object), getActiveObject(), object, true))
 			{
 				oIter.remove();
 				removeKnownObject(object, true);
 				
-				if (object instanceof L2PcInstance)
+				if (object.isPlayer())
 				{
 					getKnownPlayers().remove(object.getObjectId());
 					getKnownRelations().remove(object.getObjectId());
 				}
-				else if (object instanceof L2Summon)
+				else if (object.isSummon())
+				{
 					getKnownSummons().remove(object.getObjectId());
+				}
 			}
 		}
 	}
@@ -184,14 +206,16 @@ public class CharKnownList extends ObjectKnownList
 		for (L2Object obj : objs)
 		{
 			if (obj instanceof L2Character)
+			{
 				result.add((L2Character) obj);
+			}
 		}
 		return result;
 	}
 	
 	public Collection<L2Character> getKnownCharactersInRadius(long radius)
 	{
-		FastList<L2Character> result = new FastList<>();
+		List<L2Character> result = new ArrayList<>();
 		
 		final Collection<L2Object> objs = getKnownObjects().values();
 		for (L2Object obj : objs)
@@ -199,7 +223,9 @@ public class CharKnownList extends ObjectKnownList
 			if (obj instanceof L2Character)
 			{
 				if (Util.checkIfInRange((int) radius, getActiveChar(), obj, true))
+				{
 					result.add((L2Character) obj);
+				}
 			}
 		}
 		
@@ -209,27 +235,33 @@ public class CharKnownList extends ObjectKnownList
 	public final Map<Integer, L2PcInstance> getKnownPlayers()
 	{
 		if (_knownPlayers == null)
-			_knownPlayers = new FastMap<Integer, L2PcInstance>().shared();
+		{
+			_knownPlayers = new L2FastMap<>(true);
+		}
 		return _knownPlayers;
 	}
 	
 	public final Map<Integer, Integer> getKnownRelations()
 	{
 		if (_knownRelations == null)
-			_knownRelations = new FastMap<Integer, Integer>().shared();
+		{
+			_knownRelations = new L2FastMap<>(true);
+		}
 		return _knownRelations;
 	}
 	
 	public final Map<Integer, L2Summon> getKnownSummons()
 	{
 		if (_knownSummons == null)
-			_knownSummons = new FastMap<Integer, L2Summon>().shared();
+		{
+			_knownSummons = new L2FastMap<>(true);
+		}
 		return _knownSummons;
 	}
 	
 	public final Collection<L2PcInstance> getKnownPlayersInRadius(long radius)
 	{
-		FastList<L2PcInstance> result = new FastList<>();
+		List<L2PcInstance> result = new ArrayList<>();
 		
 		final Collection<L2PcInstance> plrs = getKnownPlayers().values();
 		for (L2PcInstance player : plrs)

+ 3 - 2
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/knownlist/DecoyKnownList.java

@@ -33,9 +33,10 @@ public class DecoyKnownList extends CharKnownList
 	@Override
 	public int getDistanceToForgetObject(L2Object object)
 	{
-		if (object == getActiveChar().getOwner()
-				|| object == getActiveChar().getTarget())
+		if ((object == getActiveChar().getOwner()) || (object == getActiveChar().getTarget()))
+		{
 			return 6000;
+		}
 		return 3000;
 	}
 	

+ 14 - 17
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/knownlist/DefenderKnownList.java

@@ -17,9 +17,7 @@ package com.l2jserver.gameserver.model.actor.knownlist;
 import com.l2jserver.gameserver.ai.CtrlIntention;
 import com.l2jserver.gameserver.instancemanager.TerritoryWarManager;
 import com.l2jserver.gameserver.model.L2Object;
-import com.l2jserver.gameserver.model.actor.L2Summon;
 import com.l2jserver.gameserver.model.actor.instance.L2DefenderInstance;
-import com.l2jserver.gameserver.model.actor.instance.L2FortCommanderInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.entity.Castle;
 import com.l2jserver.gameserver.model.entity.Fort;
@@ -35,30 +33,31 @@ public class DefenderKnownList extends AttackableKnownList
 	@Override
 	public boolean addKnownObject(L2Object object)
 	{
-		if (!super.addKnownObject(object)) return false;
+		if (!super.addKnownObject(object))
+		{
+			return false;
+		}
 		
 		Castle castle = getActiveChar().getCastle();
 		Fort fortress = getActiveChar().getFort();
 		SiegableHall hall = getActiveChar().getConquerableHall();
 		// Check if siege is in progress
-		if ((fortress != null && fortress.getZone().isActive())
-				|| (castle != null && castle.getZone().isActive())
-				|| (hall != null && hall.getSiegeZone().isActive()))
+		if (((fortress != null) && fortress.getZone().isActive()) || ((castle != null) && castle.getZone().isActive()) || ((hall != null) && hall.getSiegeZone().isActive()))
 		{
 			L2PcInstance player = null;
-			if (object instanceof L2PcInstance)
-				player = (L2PcInstance) object;
-			else if (object instanceof L2Summon)
-				player = ((L2Summon)object).getOwner();
-			int activeSiegeId = (fortress != null ? fortress.getFortId() : (castle != null ? castle.getCastleId() : hall != null? hall.getId() : 0));
+			if (object.isPlayable())
+			{
+				player = object.getActingPlayer();
+			}
+			int activeSiegeId = (fortress != null ? fortress.getFortId() : (castle != null ? castle.getCastleId() : hall != null ? hall.getId() : 0));
 			
 			// Check if player is an enemy of this defender npc
-			if (player != null && ((player.getSiegeState() == 2 && !player.isRegisteredOnThisSiegeField(activeSiegeId))
-					|| (player.getSiegeState() == 1 && !TerritoryWarManager.getInstance().isAllyField(player, activeSiegeId))
-					|| player.getSiegeState() == 0))
+			if ((player != null) && (((player.getSiegeState() == 2) && !player.isRegisteredOnThisSiegeField(activeSiegeId)) || ((player.getSiegeState() == 1) && !TerritoryWarManager.getInstance().isAllyField(player, activeSiegeId)) || (player.getSiegeState() == 0)))
 			{
 				if (getActiveChar().getAI().getIntention() == CtrlIntention.AI_INTENTION_IDLE)
+				{
 					getActiveChar().getAI().setIntention(CtrlIntention.AI_INTENTION_ACTIVE, null);
+				}
 			}
 		}
 		return true;
@@ -67,8 +66,6 @@ public class DefenderKnownList extends AttackableKnownList
 	@Override
 	public final L2DefenderInstance getActiveChar()
 	{
-		if (super.getActiveChar() instanceof L2FortCommanderInstance)
-			return (L2FortCommanderInstance)super.getActiveChar();
-		return (L2DefenderInstance)super.getActiveChar();
+		return (L2DefenderInstance) super.getActiveChar();
 	}
 }

+ 18 - 6
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/knownlist/DoorKnownList.java

@@ -17,7 +17,6 @@ package com.l2jserver.gameserver.model.actor.knownlist;
 import com.l2jserver.gameserver.model.L2Object;
 import com.l2jserver.gameserver.model.actor.instance.L2DefenderInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2DoorInstance;
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 
 public class DoorKnownList extends CharKnownList
 {
@@ -27,14 +26,22 @@ public class DoorKnownList extends CharKnownList
 	}
 	
 	@Override
-	public final L2DoorInstance getActiveChar() { return (L2DoorInstance)super.getActiveChar(); }
+	public final L2DoorInstance getActiveChar()
+	{
+		return (L2DoorInstance) super.getActiveChar();
+	}
 	
 	@Override
 	public int getDistanceToForgetObject(L2Object object)
 	{
-		if (object instanceof L2DefenderInstance) return 800;
-		if (!(object instanceof L2PcInstance))
+		if (object instanceof L2DefenderInstance)
+		{
+			return 800;
+		}
+		else if (!object.isPlayer())
+		{
 			return 0;
+		}
 		
 		return 4000;
 	}
@@ -42,9 +49,14 @@ public class DoorKnownList extends CharKnownList
 	@Override
 	public int getDistanceToWatchObject(L2Object object)
 	{
-		if (object instanceof L2DefenderInstance) return 600;
-		if (!(object instanceof L2PcInstance))
+		if (object instanceof L2DefenderInstance)
+		{
+			return 600;
+		}
+		else if (!object.isPlayer())
+		{
 			return 0;
+		}
 		return 3500;
 	}
 }

+ 16 - 9
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/knownlist/FriendlyMobKnownList.java

@@ -19,7 +19,6 @@ import com.l2jserver.gameserver.ai.CtrlIntention;
 import com.l2jserver.gameserver.model.L2Object;
 import com.l2jserver.gameserver.model.actor.L2Character;
 import com.l2jserver.gameserver.model.actor.instance.L2FriendlyMobInstance;
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 
 public class FriendlyMobKnownList extends AttackableKnownList
 {
@@ -32,11 +31,14 @@ public class FriendlyMobKnownList extends AttackableKnownList
 	public boolean addKnownObject(L2Object object)
 	{
 		if (!super.addKnownObject(object))
+		{
 			return false;
+		}
 		
-		if (object instanceof L2PcInstance
-				&& getActiveChar().getAI().getIntention() == CtrlIntention.AI_INTENTION_IDLE)
+		if (object.isPlayer() && (getActiveChar().getAI().getIntention() == CtrlIntention.AI_INTENTION_IDLE))
+		{
 			getActiveChar().getAI().setIntention(CtrlIntention.AI_INTENTION_ACTIVE, null);
+		}
 		
 		return true;
 	}
@@ -45,26 +47,31 @@ public class FriendlyMobKnownList extends AttackableKnownList
 	protected boolean removeKnownObject(L2Object object, boolean forget)
 	{
 		if (!super.removeKnownObject(object, forget))
+		{
 			return false;
+		}
 		
 		if (!(object instanceof L2Character))
+		{
 			return true;
+		}
 		
 		if (getActiveChar().hasAI())
 		{
 			getActiveChar().getAI().notifyEvent(CtrlEvent.EVT_FORGET_OBJECT, object);
-			if (getActiveChar().getTarget() == (L2Character)object)
+			if (getActiveChar().getTarget() == (L2Character) object)
+			{
 				getActiveChar().setTarget(null);
+			}
 		}
 		
-		if (getActiveChar().isVisible()
-				&& getKnownPlayers().isEmpty()
-				&& getKnownSummons().isEmpty())
+		if (getActiveChar().isVisible() && getKnownPlayers().isEmpty() && getKnownSummons().isEmpty())
 		{
 			getActiveChar().clearAggroList();
-			//removeAllKnownObjects();
 			if (getActiveChar().hasAI())
+			{
 				getActiveChar().getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE, null);
+			}
 		}
 		
 		return true;
@@ -73,6 +80,6 @@ public class FriendlyMobKnownList extends AttackableKnownList
 	@Override
 	public final L2FriendlyMobInstance getActiveChar()
 	{
-		return (L2FriendlyMobInstance)super.getActiveChar();
+		return (L2FriendlyMobInstance) super.getActiveChar();
 	}
 }

+ 21 - 12
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/knownlist/GuardKnownList.java

@@ -21,8 +21,6 @@ import com.l2jserver.gameserver.ai.CtrlIntention;
 import com.l2jserver.gameserver.model.L2Object;
 import com.l2jserver.gameserver.model.actor.instance.L2GuardInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2MonsterInstance;
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
-
 
 public class GuardKnownList extends AttackableKnownList
 {
@@ -37,33 +35,42 @@ public class GuardKnownList extends AttackableKnownList
 	public boolean addKnownObject(L2Object object)
 	{
 		if (!super.addKnownObject(object))
+		{
 			return false;
+		}
 		
-		if (object instanceof L2PcInstance)
+		if (object.isPlayer())
 		{
 			// Check if the object added is a L2PcInstance that owns Karma
-			if (((L2PcInstance)object).getKarma() > 0)
+			if (object.getActingPlayer().getKarma() > 0)
 			{
 				if (Config.DEBUG)
-					_log.fine(getActiveChar().getObjectId()+": PK "+object.getObjectId()+" entered scan range");
+				{
+					_log.fine(getActiveChar().getObjectId() + ": PK " + object.getObjectId() + " entered scan range");
+				}
 				
 				// Set the L2GuardInstance Intention to AI_INTENTION_ACTIVE
 				if (getActiveChar().getAI().getIntention() == CtrlIntention.AI_INTENTION_IDLE)
+				{
 					getActiveChar().getAI().setIntention(CtrlIntention.AI_INTENTION_ACTIVE, null);
+				}
 			}
 		}
-		else if ((Config.GUARD_ATTACK_AGGRO_MOB && getActiveChar().isInActiveRegion())
-				&& object instanceof L2MonsterInstance)
+		else if ((Config.GUARD_ATTACK_AGGRO_MOB && getActiveChar().isInActiveRegion()) && object.isMonster())
 		{
 			// Check if the object added is an aggressive L2MonsterInstance
-			if (((L2MonsterInstance)object).isAggressive())
+			if (((L2MonsterInstance) object).isAggressive())
 			{
 				if (Config.DEBUG)
-					_log.fine(getActiveChar().getObjectId()+": Aggressive mob "+object.getObjectId()+" entered scan range");
+				{
+					_log.fine(getActiveChar().getObjectId() + ": Aggressive mob " + object.getObjectId() + " entered scan range");
+				}
 				
 				// Set the L2GuardInstance Intention to AI_INTENTION_ACTIVE
 				if (getActiveChar().getAI().getIntention() == CtrlIntention.AI_INTENTION_IDLE)
+				{
 					getActiveChar().getAI().setIntention(CtrlIntention.AI_INTENTION_ACTIVE, null);
+				}
 			}
 		}
 		
@@ -74,16 +81,18 @@ public class GuardKnownList extends AttackableKnownList
 	protected boolean removeKnownObject(L2Object object, boolean forget)
 	{
 		if (!super.removeKnownObject(object, forget))
+		{
 			return false;
+		}
 		
 		// Check if the _aggroList of the L2GuardInstance is Empty
 		if (getActiveChar().noTarget())
 		{
-			//removeAllKnownObjects();
-			
 			// Set the L2GuardInstance to AI_INTENTION_IDLE
 			if (getActiveChar().hasAI())
+			{
 				getActiveChar().getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE, null);
+			}
 		}
 		
 		return true;
@@ -92,6 +101,6 @@ public class GuardKnownList extends AttackableKnownList
 	@Override
 	public final L2GuardInstance getActiveChar()
 	{
-		return (L2GuardInstance)super.getActiveChar();
+		return (L2GuardInstance) super.getActiveChar();
 	}
 }

+ 12 - 11
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/knownlist/MonsterKnownList.java

@@ -33,15 +33,17 @@ public class MonsterKnownList extends AttackableKnownList
 	public boolean addKnownObject(L2Object object)
 	{
 		if (!super.addKnownObject(object))
+		{
 			return false;
+		}
 		
 		final L2CharacterAI ai = getActiveChar().getAI(); // force AI creation
-
+		
 		// Set the L2MonsterInstance Intention to AI_INTENTION_ACTIVE if the state was AI_INTENTION_IDLE
-		if (object instanceof L2PcInstance
-				&& ai != null
-				&& ai.getIntention() == CtrlIntention.AI_INTENTION_IDLE)
+		if ((object instanceof L2PcInstance) && (ai != null) && (ai.getIntention() == CtrlIntention.AI_INTENTION_IDLE))
+		{
 			ai.setIntention(CtrlIntention.AI_INTENTION_ACTIVE, null);
+		}
 		
 		return true;
 	}
@@ -50,10 +52,14 @@ public class MonsterKnownList extends AttackableKnownList
 	protected boolean removeKnownObject(L2Object object, boolean forget)
 	{
 		if (!super.removeKnownObject(object, forget))
+		{
 			return false;
+		}
 		
 		if (!(object instanceof L2Character))
+		{
 			return true;
+		}
 		
 		if (getActiveChar().hasAI())
 		{
@@ -61,15 +67,10 @@ public class MonsterKnownList extends AttackableKnownList
 			getActiveChar().getAI().notifyEvent(CtrlEvent.EVT_FORGET_OBJECT, object);
 		}
 		
-		if (getActiveChar().isVisible()
-				&& getKnownPlayers().isEmpty()
-				&& getKnownSummons().isEmpty())
+		if (getActiveChar().isVisible() && getKnownPlayers().isEmpty() && getKnownSummons().isEmpty())
 		{
 			// Clear the _aggroList of the L2MonsterInstance
 			getActiveChar().clearAggroList();
-			
-			// Remove all L2Object from _knownObjects and _knownPlayer of the L2MonsterInstance then cancel Attak or Cast and notify AI
-			//removeAllKnownObjects();
 		}
 		
 		return true;
@@ -78,6 +79,6 @@ public class MonsterKnownList extends AttackableKnownList
 	@Override
 	public final L2MonsterInstance getActiveChar()
 	{
-		return (L2MonsterInstance)super.getActiveChar();
+		return (L2MonsterInstance) super.getActiveChar();
 	}
 }

+ 8 - 10
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/knownlist/NpcKnownList.java

@@ -24,9 +24,7 @@ import com.l2jserver.gameserver.model.L2Object;
 import com.l2jserver.gameserver.model.actor.L2Attackable;
 import com.l2jserver.gameserver.model.actor.L2Character;
 import com.l2jserver.gameserver.model.actor.L2Npc;
-import com.l2jserver.gameserver.model.actor.L2Playable;
 import com.l2jserver.gameserver.model.actor.instance.L2FestivalGuideInstance;
-import com.l2jserver.gameserver.model.actor.instance.L2NpcInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 
 public class NpcKnownList extends CharKnownList
@@ -53,17 +51,17 @@ public class NpcKnownList extends CharKnownList
 	@Override
 	public int getDistanceToWatchObject(L2Object object)
 	{
-		if (object instanceof L2FestivalGuideInstance)
+		if (!(object instanceof L2Character))
 		{
-			return 4000;
+			return 0;
 		}
 		
-		if ((object instanceof L2NpcInstance) || !(object instanceof L2Character))
+		if (object instanceof L2FestivalGuideInstance)
 		{
-			return 0;
+			return 4000;
 		}
 		
-		if (object instanceof L2Playable)
+		if (object.isPlayable())
 		{
 			return 1500;
 		}
@@ -71,7 +69,7 @@ public class NpcKnownList extends CharKnownList
 		return 500;
 	}
 	
-	//L2Master mod - support for Walking monsters aggro
+	// L2Master mod - support for Walking monsters aggro
 	public void startTrackingTask()
 	{
 		if ((_trackingTask == null) && (getActiveChar().getAggroRange() > 0))
@@ -80,7 +78,7 @@ public class NpcKnownList extends CharKnownList
 		}
 	}
 	
-	//L2Master mod - support for Walking monsters aggro
+	// L2Master mod - support for Walking monsters aggro
 	public void stopTrackingTask()
 	{
 		if (_trackingTask != null)
@@ -90,7 +88,7 @@ public class NpcKnownList extends CharKnownList
 		}
 	}
 	
-	//L2Master mod - support for Walking monsters aggro
+	// L2Master mod - support for Walking monsters aggro
 	private class TrackingTask implements Runnable
 	{
 		public TrackingTask()

+ 50 - 22
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/knownlist/ObjectKnownList.java

@@ -18,14 +18,12 @@ import java.util.Collection;
 import java.util.Iterator;
 import java.util.Map;
 
-import javolution.util.FastMap;
-
 import com.l2jserver.gameserver.model.L2Object;
 import com.l2jserver.gameserver.model.L2WorldRegion;
 import com.l2jserver.gameserver.model.actor.L2Character;
 import com.l2jserver.gameserver.model.actor.L2Playable;
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.util.Util;
+import com.l2jserver.util.L2FastMap;
 
 public class ObjectKnownList
 {
@@ -40,23 +38,33 @@ public class ObjectKnownList
 	public boolean addKnownObject(L2Object object)
 	{
 		if (object == null)
+		{
 			return false;
+		}
 		
 		// Instance -1 is for GMs that can see everything on all instances
-		if (getActiveObject().getInstanceId() != -1 && (object.getInstanceId() != getActiveObject().getInstanceId()))
+		if ((getActiveObject().getInstanceId() != -1) && (object.getInstanceId() != getActiveObject().getInstanceId()))
+		{
 			return false;
+		}
 		
 		// Check if the object is an L2PcInstance in ghost mode
-		if (object instanceof L2PcInstance && ((L2PcInstance) object).getAppearance().isGhost())
+		if (object.isPlayer() && object.getActingPlayer().getAppearance().isGhost())
+		{
 			return false;
+		}
 		
 		// Check if already know object
 		if (knowsObject(object))
+		{
 			return false;
+		}
 		
 		// Check if object is not inside distance to watch object
 		if (!Util.checkIfInShortRadius(getDistanceToWatchObject(object), getActiveObject(), object, true))
+		{
 			return false;
+		}
 		
 		return (getKnownObjects().put(object.getObjectId(), object) == null);
 	}
@@ -64,12 +72,16 @@ public class ObjectKnownList
 	public final boolean knowsObject(L2Object object)
 	{
 		if (object == null)
+		{
 			return false;
+		}
 		
-		return getActiveObject() == object || getKnownObjects().containsKey(object.getObjectId());
+		return (getActiveObject() == object) || getKnownObjects().containsKey(object.getObjectId());
 	}
 	
-	/** Remove all L2Object from _knownObjects */
+	/** 
+	 * Remove all L2Object from _knownObjects
+	 */
 	public void removeAllKnownObjects()
 	{
 		getKnownObjects().clear();
@@ -83,34 +95,43 @@ public class ObjectKnownList
 	protected boolean removeKnownObject(L2Object object, boolean forget)
 	{
 		if (object == null)
+		{
 			return false;
+		}
 		
-		if (forget) // on forget objects removed from list by iterator
+		if (forget)
+		{
 			return true;
+		}
 		
 		return getKnownObjects().remove(object.getObjectId()) != null;
 	}
 	
-	// used only in Config.MOVE_BASED_KNOWNLIST and does not support guards seeing
-	// moving monsters
+	/** 
+	 * Used only in Config.MOVE_BASED_KNOWNLIST and does not support guards seeing moving monsters 
+	 */
 	public final void findObjects()
 	{
 		final L2WorldRegion region = getActiveObject().getWorldRegion();
 		if (region == null)
+		{
 			return;
+		}
 		
-		if (getActiveObject() instanceof L2Playable)
+		if (getActiveObject().isPlayable())
 		{
 			for (L2WorldRegion regi : region.getSurroundingRegions()) // offer members of this and surrounding regions
 			{
 				Collection<L2Object> vObj = regi.getVisibleObjects().values();
-				for (L2Object _object : vObj)
+				for (L2Object object : vObj)
 				{
-					if (_object != getActiveObject())
+					if (object != getActiveObject())
 					{
-						addKnownObject(_object);
-						if (_object instanceof L2Character)
-							_object.getKnownList().addKnownObject(getActiveObject());
+						addKnownObject(object);
+						if (object instanceof L2Character)
+						{
+							object.getKnownList().addKnownObject(getActiveObject());
+						}
 					}
 				}
 			}
@@ -122,11 +143,11 @@ public class ObjectKnownList
 				if (regi.isActive())
 				{
 					Collection<L2Playable> vPls = regi.getVisiblePlayable().values();
-					for (L2Object _object : vPls)
+					for (L2Object object : vPls)
 					{
-						if (_object != getActiveObject())
+						if (object != getActiveObject())
 						{
-							addKnownObject(_object);
+							addKnownObject(object);
 						}
 					}
 				}
@@ -134,7 +155,10 @@ public class ObjectKnownList
 		}
 	}
 	
-	// Remove invisible and too far L2Object from _knowObject and if necessary from _knownPlayers of the L2Character
+	/**
+	 * Remove invisible and too far L2Object from _knowObject and if necessary from _knownPlayers of the L2Character
+	 * @param fullCheck
+	 */
 	public void forgetObjects(boolean fullCheck)
 	{
 		// Go through knownObjects
@@ -150,8 +174,10 @@ public class ObjectKnownList
 				continue;
 			}
 			
-			if (!fullCheck && !(object instanceof L2Playable))
+			if (!fullCheck && !object.isPlayable())
+			{
 				continue;
+			}
 			
 			// Remove all objects invisible or too far
 			if (!object.isVisible() || !Util.checkIfInShortRadius(getDistanceToForgetObject(object), getActiveObject(), object, true))
@@ -183,7 +209,9 @@ public class ObjectKnownList
 	public final Map<Integer, L2Object> getKnownObjects()
 	{
 		if (_knownObjects == null)
-			_knownObjects = new FastMap<Integer, L2Object>().shared();
+		{
+			_knownObjects = new L2FastMap<>(true);
+		}
 		return _knownObjects;
 	}
 }

+ 66 - 47
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/knownlist/PcKnownList.java

@@ -14,12 +14,10 @@
  */
 package com.l2jserver.gameserver.model.actor.knownlist;
 
-
 import com.l2jserver.Config;
 import com.l2jserver.gameserver.model.L2Object;
 import com.l2jserver.gameserver.model.actor.L2Character;
 import com.l2jserver.gameserver.model.actor.L2Npc;
-import com.l2jserver.gameserver.model.actor.L2Vehicle;
 import com.l2jserver.gameserver.model.actor.instance.L2AirShipInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.network.serverpackets.DeleteObject;
@@ -33,43 +31,44 @@ public class PcKnownList extends PlayableKnownList
 	}
 	
 	/**
-	 * Add a visible L2Object to L2PcInstance _knownObjects and _knownPlayer (if necessary) and send Server-Client Packets needed to inform the L2PcInstance of its state and actions in progress.<BR><BR>
-	 *
-	 * <B><U> object is a L2ItemInstance </U> :</B><BR><BR>
-	 * <li> Send Server-Client Packet DropItem/SpawnItem to the L2PcInstance </li><BR><BR>
-	 *
-	 * <B><U> object is a L2DoorInstance </U> :</B><BR><BR>
-	 * <li> Send Server-Client Packets DoorInfo and DoorStatusUpdate to the L2PcInstance </li>
-	 * <li> Send Server->Client packet MoveToPawn/CharMoveToLocation and AutoAttackStart to the L2PcInstance </li><BR><BR>
-	 *
-	 * <B><U> object is a L2NpcInstance </U> :</B><BR><BR>
-	 * <li> Send Server-Client Packet NpcInfo to the L2PcInstance </li>
-	 * <li> Send Server->Client packet MoveToPawn/CharMoveToLocation and AutoAttackStart to the L2PcInstance </li><BR><BR>
-	 *
-	 * <B><U> object is a L2Summon </U> :</B><BR><BR>
-	 * <li> Send Server-Client Packet NpcInfo/PetItemList (if the L2PcInstance is the owner) to the L2PcInstance </li>
-	 * <li> Send Server->Client packet MoveToPawn/CharMoveToLocation and AutoAttackStart to the L2PcInstance </li><BR><BR>
-	 *
-	 * <B><U> object is a L2PcInstance </U> :</B><BR><BR>
-	 * <li> Send Server-Client Packet CharInfo to the L2PcInstance </li>
-	 * <li> If the object has a private store, Send Server-Client Packet PrivateStoreMsgSell to the L2PcInstance </li>
-	 * <li> Send Server->Client packet MoveToPawn/CharMoveToLocation and AutoAttackStart to the L2PcInstance </li><BR><BR>
-	 *
+	 * Add a visible L2Object to L2PcInstance _knownObjects and _knownPlayer (if necessary) and send Server-Client Packets needed to inform the L2PcInstance of its state and actions in progress.<BR>
+	 * <BR>
+	 * <B><U> object is a L2ItemInstance </U> :</B><BR>
+	 * <BR>
+	 * <li>Send Server-Client Packet DropItem/SpawnItem to the L2PcInstance</li><BR>
+	 * <BR>
+	 * <B><U> object is a L2DoorInstance </U> :</B><BR>
+	 * <BR>
+	 * <li>Send Server-Client Packets DoorInfo and DoorStatusUpdate to the L2PcInstance</li> <li>Send Server->Client packet MoveToPawn/CharMoveToLocation and AutoAttackStart to the L2PcInstance</li><BR>
+	 * <BR>
+	 * <B><U> object is a L2NpcInstance </U> :</B><BR>
+	 * <BR>
+	 * <li>Send Server-Client Packet NpcInfo to the L2PcInstance</li> <li>Send Server->Client packet MoveToPawn/CharMoveToLocation and AutoAttackStart to the L2PcInstance</li><BR>
+	 * <BR>
+	 * <B><U> object is a L2Summon </U> :</B><BR>
+	 * <BR>
+	 * <li>Send Server-Client Packet NpcInfo/PetItemList (if the L2PcInstance is the owner) to the L2PcInstance</li> <li>Send Server->Client packet MoveToPawn/CharMoveToLocation and AutoAttackStart to the L2PcInstance</li><BR>
+	 * <BR>
+	 * <B><U> object is a L2PcInstance </U> :</B><BR>
+	 * <BR>
+	 * <li>Send Server-Client Packet CharInfo to the L2PcInstance</li> <li>If the object has a private store, Send Server-Client Packet PrivateStoreMsgSell to the L2PcInstance</li> <li>Send Server->Client packet MoveToPawn/CharMoveToLocation and AutoAttackStart to the L2PcInstance</li><BR>
+	 * <BR>
 	 * @param object The L2Object to add to _knownObjects and _knownPlayer
 	 */
 	@Override
 	public boolean addKnownObject(L2Object object)
 	{
 		if (!super.addKnownObject(object))
+		{
 			return false;
+		}
 		
-		if (object.getPoly().isMorphed()
-				&& object.getPoly().getPolyType().equals("item"))
+		if (object.getPoly().isMorphed() && object.getPoly().getPolyType().equals("item"))
 		{
-			//if (object.getPolytype().equals("item"))
+			// if (object.getPolytype().equals("item"))
 			getActiveChar().sendPacket(new SpawnItem(object));
-			//else if (object.getPolytype().equals("npc"))
-			//    sendPacket(new NpcInfoPoly(object, this));
+			// else if (object.getPolytype().equals("npc"))
+			// sendPacket(new NpcInfoPoly(object, this));
 		}
 		else
 		{
@@ -80,7 +79,9 @@ public class PcKnownList extends PlayableKnownList
 				// Update the state of the L2Character object client side by sending Server->Client packet MoveToPawn/CharMoveToLocation and AutoAttackStart to the L2PcInstance
 				L2Character obj = (L2Character) object;
 				if (obj.hasAI())
+				{
 					obj.getAI().describeStateToPlayer(getActiveChar());
+				}
 			}
 		}
 		
@@ -88,31 +89,37 @@ public class PcKnownList extends PlayableKnownList
 	}
 	
 	/**
-	 * Remove a L2Object from L2PcInstance _knownObjects and _knownPlayer (if necessary) and send Server-Client Packet DeleteObject to the L2PcInstance.<BR><BR>
-	 *
+	 * Remove a L2Object from L2PcInstance _knownObjects and _knownPlayer (if necessary) and send Server-Client Packet DeleteObject to the L2PcInstance.<BR>
+	 * <BR>
 	 * @param object The L2Object to remove from _knownObjects and _knownPlayer
-	 *
 	 */
 	@Override
 	protected boolean removeKnownObject(L2Object object, boolean forget)
 	{
 		if (!super.removeKnownObject(object, forget))
+		{
 			return false;
+		}
 		
 		if (object instanceof L2AirShipInstance)
 		{
-			if (((L2AirShipInstance)object).getCaptainId() != 0
-					&& ((L2AirShipInstance)object).getCaptainId() != getActiveChar().getObjectId())
-				getActiveChar().sendPacket(new DeleteObject(((L2AirShipInstance)object).getCaptainId()));
-			if (((L2AirShipInstance)object).getHelmObjectId() != 0)
-				getActiveChar().sendPacket(new DeleteObject(((L2AirShipInstance)object).getHelmObjectId()));
+			if ((((L2AirShipInstance) object).getCaptainId() != 0) && (((L2AirShipInstance) object).getCaptainId() != getActiveChar().getObjectId()))
+			{
+				getActiveChar().sendPacket(new DeleteObject(((L2AirShipInstance) object).getCaptainId()));
+			}
+			if (((L2AirShipInstance) object).getHelmObjectId() != 0)
+			{
+				getActiveChar().sendPacket(new DeleteObject(((L2AirShipInstance) object).getHelmObjectId()));
+			}
 		}
 		
 		// Send Server-Client Packet DeleteObject to the L2PcInstance
 		getActiveChar().sendPacket(new DeleteObject(object));
 		
-		if (Config.CHECK_KNOWN && object instanceof L2Npc && getActiveChar().isGM())
-			getActiveChar().sendMessage("Removed NPC: "+((L2Npc)object).getName());
+		if (Config.CHECK_KNOWN && (object instanceof L2Npc) && getActiveChar().isGM())
+		{
+			getActiveChar().sendMessage("Removed NPC: " + ((L2Npc) object).getName());
+		}
 		
 		return true;
 	}
@@ -120,45 +127,57 @@ public class PcKnownList extends PlayableKnownList
 	@Override
 	public final L2PcInstance getActiveChar()
 	{
-		return (L2PcInstance)super.getActiveChar();
+		return (L2PcInstance) super.getActiveChar();
 	}
 	
 	@Override
 	public int getDistanceToForgetObject(L2Object object)
 	{
-		if (object instanceof L2Vehicle)
-			return 10000;
-		else if (object != null && object.isWalker())
+		if (object.isWalker())
+		{
 			return 10000;
+		}
 		
 		// when knownlist grows, the distance to forget should be at least
 		// the same as the previous watch range, or it becomes possible that
 		// extra charinfo packets are being sent (watch-forget-watch-forget)
 		final int knownlistSize = getKnownObjects().size();
 		if (knownlistSize <= 25)
+		{
 			return 4000;
+		}
 		if (knownlistSize <= 35)
+		{
 			return 3500;
+		}
 		if (knownlistSize <= 70)
+		{
 			return 2910;
+		}
 		return 2310;
 	}
 	
 	@Override
 	public int getDistanceToWatchObject(L2Object object)
 	{
-		if (object instanceof L2Vehicle)
-			return 8000;
-		else if (object != null && object.isWalker())
-			return 8000;
+		if (object.isWalker())
+		{
+			return 9000;
+		}
 		
 		final int knownlistSize = getKnownObjects().size();
 		if (knownlistSize <= 25)
+		{
 			return 3400; // empty field
+		}
 		if (knownlistSize <= 35)
+		{
 			return 2900;
+		}
 		if (knownlistSize <= 70)
+		{
 			return 2300;
+		}
 		return 1700; // Siege, TOI, city
 	}
 }

+ 11 - 29
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/knownlist/RaceManagerKnownList.java

@@ -14,52 +14,31 @@
  */
 package com.l2jserver.gameserver.model.actor.knownlist;
 
-import java.util.logging.Logger;
-
 import com.l2jserver.gameserver.MonsterRace;
 import com.l2jserver.gameserver.model.L2Object;
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2RaceManagerInstance;
 import com.l2jserver.gameserver.network.serverpackets.DeleteObject;
 
-
 public class RaceManagerKnownList extends NpcKnownList
 {
-	protected static final Logger _log = Logger.getLogger(RaceManagerKnownList.class.getName());
-	
 	public RaceManagerKnownList(L2RaceManagerInstance activeChar)
 	{
 		super(activeChar);
 	}
 	
-	@Override
-	public boolean addKnownObject(L2Object object)
-	{
-		if (!super.addKnownObject(object)) return false;
-		
-		/* DONT KNOW WHY WE NEED THIS WHEN RACE MANAGER HAS A METHOD THAT BROADCAST TO ITS KNOW PLAYERS
-        if (object instanceof L2PcInstance) {
-            if (packet != null)
-                ((L2PcInstance) object).sendPacket(packet);
-        }
-		 */
-		
-		return true;
-	}
-	
 	@Override
 	protected boolean removeKnownObject(L2Object object, boolean forget)
 	{
-		if (!super.removeKnownObject(object, forget)) return false;
+		if (!super.removeKnownObject(object, forget))
+		{
+			return false;
+		}
 		
-		if (object instanceof L2PcInstance)
+		if (object.isPlayer())
 		{
-			//_log.info("Sending delete monsrac info.");
-			DeleteObject obj = null;
-			for (int i=0; i<8; i++)
+			for (int i = 0; i < 8; i++)
 			{
-				obj = new DeleteObject(MonsterRace.getInstance().getMonsters()[i]);
-				((L2PcInstance)object).sendPacket(obj);
+				object.sendPacket(new DeleteObject(MonsterRace.getInstance().getMonsters()[i]));
 			}
 		}
 		
@@ -67,5 +46,8 @@ public class RaceManagerKnownList extends NpcKnownList
 	}
 	
 	@Override
-	public L2RaceManagerInstance getActiveChar() { return (L2RaceManagerInstance)super.getActiveChar(); }
+	public L2RaceManagerInstance getActiveChar()
+	{
+		return (L2RaceManagerInstance) super.getActiveChar();
+	}
 }

+ 18 - 6
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/knownlist/StaticObjectKnownList.java

@@ -16,7 +16,6 @@ package com.l2jserver.gameserver.model.actor.knownlist;
 
 import com.l2jserver.gameserver.model.L2Object;
 import com.l2jserver.gameserver.model.actor.instance.L2DefenderInstance;
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2StaticObjectInstance;
 
 public class StaticObjectKnownList extends CharKnownList
@@ -27,14 +26,22 @@ public class StaticObjectKnownList extends CharKnownList
 	}
 	
 	@Override
-	public final L2StaticObjectInstance getActiveChar() { return (L2StaticObjectInstance)super.getActiveChar(); }
+	public final L2StaticObjectInstance getActiveChar()
+	{
+		return (L2StaticObjectInstance) super.getActiveChar();
+	}
 	
 	@Override
 	public int getDistanceToForgetObject(L2Object object)
 	{
-		if (object instanceof L2DefenderInstance) return 800;
-		if (!(object instanceof L2PcInstance))
+		if (object instanceof L2DefenderInstance)
+		{
+			return 800;
+		}
+		if (!object.isPlayer())
+		{
 			return 0;
+		}
 		
 		return 4000;
 	}
@@ -42,9 +49,14 @@ public class StaticObjectKnownList extends CharKnownList
 	@Override
 	public int getDistanceToWatchObject(L2Object object)
 	{
-		if (object instanceof L2DefenderInstance) return 600;
-		if (!(object instanceof L2PcInstance))
+		if (object instanceof L2DefenderInstance)
+		{
+			return 600;
+		}
+		if (!object.isPlayer())
+		{
 			return 0;
+		}
 		return 2000;
 	}
 }

+ 3 - 1
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/knownlist/TrapKnownList.java

@@ -33,8 +33,10 @@ public class TrapKnownList extends CharKnownList
 	@Override
 	public int getDistanceToForgetObject(L2Object object)
 	{
-		if (object == getActiveChar().getOwner() || object == getActiveChar().getTarget())
+		if ((object == getActiveChar().getOwner()) || (object == getActiveChar().getTarget()))
+		{
 			return 6000;
+		}
 		
 		return 3000;
 	}

+ 6 - 3
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/knownlist/VehicleKnownList.java

@@ -16,7 +16,6 @@ package com.l2jserver.gameserver.model.actor.knownlist;
 
 import com.l2jserver.gameserver.model.L2Object;
 import com.l2jserver.gameserver.model.actor.L2Character;
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 
 public class VehicleKnownList extends CharKnownList
 {
@@ -28,8 +27,10 @@ public class VehicleKnownList extends CharKnownList
 	@Override
 	public int getDistanceToForgetObject(L2Object object)
 	{
-		if (!(object instanceof L2PcInstance))
+		if (!object.isPlayer())
+		{
 			return 0;
+		}
 		
 		return object.getKnownList().getDistanceToForgetObject(getActiveObject());
 	}
@@ -37,8 +38,10 @@ public class VehicleKnownList extends CharKnownList
 	@Override
 	public int getDistanceToWatchObject(L2Object object)
 	{
-		if (!(object instanceof L2PcInstance))
+		if (!object.isPlayer())
+		{
 			return 0;
+		}
 		
 		return object.getKnownList().getDistanceToWatchObject(getActiveObject());
 	}