Avoid casts and some siege guard warnings.
Contributed by Sahar.
This commit is contained in:
		@@ -16,7 +16,6 @@
 | 
			
		||||
 */
 | 
			
		||||
package ai.others;
 | 
			
		||||
 | 
			
		||||
import java.util.Arrays;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.concurrent.CopyOnWriteArrayList;
 | 
			
		||||
 | 
			
		||||
@@ -91,7 +90,8 @@ public class SiegeGuards extends AbstractNpcAI
 | 
			
		||||
		35134, 35135, 35136, 35176, 35177, 35178, 35218, 35219, 35220, 35261, 35262, 35263, 35264, 35265, 35308, 35309, 35310, 35352, 35353, 35354, 35497, 35498, 35499, 35500, 35501, 35544, 35545, 35546
 | 
			
		||||
	};
 | 
			
		||||
	//@formatter:on
 | 
			
		||||
	private static final Object[] RESIDENCE_GUARD_MAP = new Object[122];
 | 
			
		||||
	@SuppressWarnings("unchecked")
 | 
			
		||||
	private static final List<Npc>[] RESIDENCE_GUARD_MAP = new CopyOnWriteArrayList[122];
 | 
			
		||||
	private static final boolean[] RESIDENCE_WORKING = new boolean[122];
 | 
			
		||||
	
 | 
			
		||||
	public SiegeGuards()
 | 
			
		||||
@@ -109,8 +109,6 @@ public class SiegeGuards extends AbstractNpcAI
 | 
			
		||||
		addKillId(MERCENARIES);
 | 
			
		||||
		addKillId(STATIONARY_MERCENARIES);
 | 
			
		||||
		
 | 
			
		||||
		Arrays.fill(RESIDENCE_WORKING, false);
 | 
			
		||||
		
 | 
			
		||||
		// Start task for unknown residences.
 | 
			
		||||
		RESIDENCE_GUARD_MAP[0] = new CopyOnWriteArrayList<>();
 | 
			
		||||
		ThreadPool.scheduleAtFixedRate(new AggroCheckTask(0), 0, 3000);
 | 
			
		||||
@@ -153,8 +151,7 @@ public class SiegeGuards extends AbstractNpcAI
 | 
			
		||||
				RESIDENCE_WORKING[_residenceId] = true;
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			@SuppressWarnings("unchecked")
 | 
			
		||||
			final List<Npc> guards = (CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[_residenceId];
 | 
			
		||||
			final List<Npc> guards = RESIDENCE_GUARD_MAP[_residenceId];
 | 
			
		||||
			for (Npc guard : guards)
 | 
			
		||||
			{
 | 
			
		||||
				if (guard == null)
 | 
			
		||||
@@ -217,24 +214,22 @@ public class SiegeGuards extends AbstractNpcAI
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	@Override
 | 
			
		||||
	@SuppressWarnings("unchecked")
 | 
			
		||||
	public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
 | 
			
		||||
	{
 | 
			
		||||
		final int residenceId = npc.getScriptValue();
 | 
			
		||||
		final List<Npc> guardList = (CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[residenceId];
 | 
			
		||||
		final List<Npc> guardList = RESIDENCE_GUARD_MAP[residenceId];
 | 
			
		||||
		if (guardList != null)
 | 
			
		||||
		{
 | 
			
		||||
			guardList.remove(npc);
 | 
			
		||||
		}
 | 
			
		||||
		else
 | 
			
		||||
		{
 | 
			
		||||
			((CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[0]).remove(npc);
 | 
			
		||||
			RESIDENCE_GUARD_MAP[0].remove(npc);
 | 
			
		||||
		}
 | 
			
		||||
		return super.onKill(npc, killer, isSummon);
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	@Override
 | 
			
		||||
	@SuppressWarnings("unchecked")
 | 
			
		||||
	public String onSpawn(Npc npc)
 | 
			
		||||
	{
 | 
			
		||||
		npc.setRandomWalking(false);
 | 
			
		||||
@@ -247,14 +242,14 @@ public class SiegeGuards extends AbstractNpcAI
 | 
			
		||||
		final Fort fortress = npc.getFort();
 | 
			
		||||
		final int residenceId = fortress != null ? fortress.getResidenceId() : (castle != null ? castle.getResidenceId() : 0);
 | 
			
		||||
		npc.setScriptValue(residenceId);
 | 
			
		||||
		final List<Npc> guardList = (CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[residenceId];
 | 
			
		||||
		final List<Npc> guardList = RESIDENCE_GUARD_MAP[residenceId];
 | 
			
		||||
		if (guardList != null)
 | 
			
		||||
		{
 | 
			
		||||
			guardList.add(npc);
 | 
			
		||||
		}
 | 
			
		||||
		else // Residence id not found.
 | 
			
		||||
		{
 | 
			
		||||
			((CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[0]).add(npc);
 | 
			
		||||
			RESIDENCE_GUARD_MAP[0].add(npc);
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		return super.onSpawn(npc);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user