Avoid casts and some siege guard warnings.

Contributed by Sahar.
This commit is contained in:
MobiusDevelopment
2020-06-26 22:57:09 +00:00
parent a9d6ea2105
commit d8f6dbd4d0
17 changed files with 119 additions and 204 deletions

View File

@@ -16,7 +16,6 @@
*/ */
package ai.others; package ai.others;
import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList; 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 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 //@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]; private static final boolean[] RESIDENCE_WORKING = new boolean[122];
public SiegeGuards() public SiegeGuards()
@@ -109,8 +109,6 @@ public class SiegeGuards extends AbstractNpcAI
addKillId(MERCENARIES); addKillId(MERCENARIES);
addKillId(STATIONARY_MERCENARIES); addKillId(STATIONARY_MERCENARIES);
Arrays.fill(RESIDENCE_WORKING, false);
// Start task for unknown residences. // Start task for unknown residences.
RESIDENCE_GUARD_MAP[0] = new CopyOnWriteArrayList<>(); RESIDENCE_GUARD_MAP[0] = new CopyOnWriteArrayList<>();
ThreadPool.scheduleAtFixedRate(new AggroCheckTask(0), 0, 3000); ThreadPool.scheduleAtFixedRate(new AggroCheckTask(0), 0, 3000);
@@ -153,8 +151,7 @@ public class SiegeGuards extends AbstractNpcAI
RESIDENCE_WORKING[_residenceId] = true; RESIDENCE_WORKING[_residenceId] = true;
} }
@SuppressWarnings("unchecked") final List<Npc> guards = RESIDENCE_GUARD_MAP[_residenceId];
final List<Npc> guards = (CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[_residenceId];
for (Npc guard : guards) for (Npc guard : guards)
{ {
if (guard == null) if (guard == null)
@@ -217,24 +214,22 @@ public class SiegeGuards extends AbstractNpcAI
} }
@Override @Override
@SuppressWarnings("unchecked")
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon) public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
{ {
final int residenceId = npc.getScriptValue(); 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) if (guardList != null)
{ {
guardList.remove(npc); guardList.remove(npc);
} }
else else
{ {
((CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[0]).remove(npc); RESIDENCE_GUARD_MAP[0].remove(npc);
} }
return super.onKill(npc, killer, isSummon); return super.onKill(npc, killer, isSummon);
} }
@Override @Override
@SuppressWarnings("unchecked")
public String onSpawn(Npc npc) public String onSpawn(Npc npc)
{ {
npc.setRandomWalking(false); npc.setRandomWalking(false);
@@ -247,14 +242,14 @@ public class SiegeGuards extends AbstractNpcAI
final Fort fortress = npc.getFort(); final Fort fortress = npc.getFort();
final int residenceId = fortress != null ? fortress.getResidenceId() : (castle != null ? castle.getResidenceId() : 0); final int residenceId = fortress != null ? fortress.getResidenceId() : (castle != null ? castle.getResidenceId() : 0);
npc.setScriptValue(residenceId); npc.setScriptValue(residenceId);
final List<Npc> guardList = (CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[residenceId]; final List<Npc> guardList = RESIDENCE_GUARD_MAP[residenceId];
if (guardList != null) if (guardList != null)
{ {
guardList.add(npc); guardList.add(npc);
} }
else // Residence id not found. else // Residence id not found.
{ {
((CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[0]).add(npc); RESIDENCE_GUARD_MAP[0].add(npc);
} }
return super.onSpawn(npc); return super.onSpawn(npc);

View File

@@ -16,7 +16,6 @@
*/ */
package ai.others; package ai.others;
import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList; 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 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 //@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]; private static final boolean[] RESIDENCE_WORKING = new boolean[122];
public SiegeGuards() public SiegeGuards()
@@ -109,8 +109,6 @@ public class SiegeGuards extends AbstractNpcAI
addKillId(MERCENARIES); addKillId(MERCENARIES);
addKillId(STATIONARY_MERCENARIES); addKillId(STATIONARY_MERCENARIES);
Arrays.fill(RESIDENCE_WORKING, false);
// Start task for unknown residences. // Start task for unknown residences.
RESIDENCE_GUARD_MAP[0] = new CopyOnWriteArrayList<>(); RESIDENCE_GUARD_MAP[0] = new CopyOnWriteArrayList<>();
ThreadPool.scheduleAtFixedRate(new AggroCheckTask(0), 0, 3000); ThreadPool.scheduleAtFixedRate(new AggroCheckTask(0), 0, 3000);
@@ -153,8 +151,7 @@ public class SiegeGuards extends AbstractNpcAI
RESIDENCE_WORKING[_residenceId] = true; RESIDENCE_WORKING[_residenceId] = true;
} }
@SuppressWarnings("unchecked") final List<Npc> guards = RESIDENCE_GUARD_MAP[_residenceId];
final List<Npc> guards = (CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[_residenceId];
for (Npc guard : guards) for (Npc guard : guards)
{ {
if (guard == null) if (guard == null)
@@ -217,24 +214,22 @@ public class SiegeGuards extends AbstractNpcAI
} }
@Override @Override
@SuppressWarnings("unchecked")
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon) public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
{ {
final int residenceId = npc.getScriptValue(); 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) if (guardList != null)
{ {
guardList.remove(npc); guardList.remove(npc);
} }
else else
{ {
((CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[0]).remove(npc); RESIDENCE_GUARD_MAP[0].remove(npc);
} }
return super.onKill(npc, killer, isSummon); return super.onKill(npc, killer, isSummon);
} }
@Override @Override
@SuppressWarnings("unchecked")
public String onSpawn(Npc npc) public String onSpawn(Npc npc)
{ {
npc.setRandomWalking(false); npc.setRandomWalking(false);
@@ -247,14 +242,14 @@ public class SiegeGuards extends AbstractNpcAI
final Fort fortress = npc.getFort(); final Fort fortress = npc.getFort();
final int residenceId = fortress != null ? fortress.getResidenceId() : (castle != null ? castle.getResidenceId() : 0); final int residenceId = fortress != null ? fortress.getResidenceId() : (castle != null ? castle.getResidenceId() : 0);
npc.setScriptValue(residenceId); npc.setScriptValue(residenceId);
final List<Npc> guardList = (CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[residenceId]; final List<Npc> guardList = RESIDENCE_GUARD_MAP[residenceId];
if (guardList != null) if (guardList != null)
{ {
guardList.add(npc); guardList.add(npc);
} }
else // Residence id not found. else // Residence id not found.
{ {
((CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[0]).add(npc); RESIDENCE_GUARD_MAP[0].add(npc);
} }
return super.onSpawn(npc); return super.onSpawn(npc);

View File

@@ -16,7 +16,6 @@
*/ */
package ai.others; package ai.others;
import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList; 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 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 //@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]; private static final boolean[] RESIDENCE_WORKING = new boolean[122];
public SiegeGuards() public SiegeGuards()
@@ -109,8 +109,6 @@ public class SiegeGuards extends AbstractNpcAI
addKillId(MERCENARIES); addKillId(MERCENARIES);
addKillId(STATIONARY_MERCENARIES); addKillId(STATIONARY_MERCENARIES);
Arrays.fill(RESIDENCE_WORKING, false);
// Start task for unknown residences. // Start task for unknown residences.
RESIDENCE_GUARD_MAP[0] = new CopyOnWriteArrayList<>(); RESIDENCE_GUARD_MAP[0] = new CopyOnWriteArrayList<>();
ThreadPool.scheduleAtFixedRate(new AggroCheckTask(0), 0, 3000); ThreadPool.scheduleAtFixedRate(new AggroCheckTask(0), 0, 3000);
@@ -153,8 +151,7 @@ public class SiegeGuards extends AbstractNpcAI
RESIDENCE_WORKING[_residenceId] = true; RESIDENCE_WORKING[_residenceId] = true;
} }
@SuppressWarnings("unchecked") final List<Npc> guards = RESIDENCE_GUARD_MAP[_residenceId];
final List<Npc> guards = (CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[_residenceId];
for (Npc guard : guards) for (Npc guard : guards)
{ {
if (guard == null) if (guard == null)
@@ -217,24 +214,22 @@ public class SiegeGuards extends AbstractNpcAI
} }
@Override @Override
@SuppressWarnings("unchecked")
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon) public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
{ {
final int residenceId = npc.getScriptValue(); 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) if (guardList != null)
{ {
guardList.remove(npc); guardList.remove(npc);
} }
else else
{ {
((CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[0]).remove(npc); RESIDENCE_GUARD_MAP[0].remove(npc);
} }
return super.onKill(npc, killer, isSummon); return super.onKill(npc, killer, isSummon);
} }
@Override @Override
@SuppressWarnings("unchecked")
public String onSpawn(Npc npc) public String onSpawn(Npc npc)
{ {
npc.setRandomWalking(false); npc.setRandomWalking(false);
@@ -247,14 +242,14 @@ public class SiegeGuards extends AbstractNpcAI
final Fort fortress = npc.getFort(); final Fort fortress = npc.getFort();
final int residenceId = fortress != null ? fortress.getResidenceId() : (castle != null ? castle.getResidenceId() : 0); final int residenceId = fortress != null ? fortress.getResidenceId() : (castle != null ? castle.getResidenceId() : 0);
npc.setScriptValue(residenceId); npc.setScriptValue(residenceId);
final List<Npc> guardList = (CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[residenceId]; final List<Npc> guardList = RESIDENCE_GUARD_MAP[residenceId];
if (guardList != null) if (guardList != null)
{ {
guardList.add(npc); guardList.add(npc);
} }
else // Residence id not found. else // Residence id not found.
{ {
((CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[0]).add(npc); RESIDENCE_GUARD_MAP[0].add(npc);
} }
return super.onSpawn(npc); return super.onSpawn(npc);

View File

@@ -16,7 +16,6 @@
*/ */
package ai.others; package ai.others;
import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList; 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 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 //@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]; private static final boolean[] RESIDENCE_WORKING = new boolean[122];
public SiegeGuards() public SiegeGuards()
@@ -109,8 +109,6 @@ public class SiegeGuards extends AbstractNpcAI
addKillId(MERCENARIES); addKillId(MERCENARIES);
addKillId(STATIONARY_MERCENARIES); addKillId(STATIONARY_MERCENARIES);
Arrays.fill(RESIDENCE_WORKING, false);
// Start task for unknown residences. // Start task for unknown residences.
RESIDENCE_GUARD_MAP[0] = new CopyOnWriteArrayList<>(); RESIDENCE_GUARD_MAP[0] = new CopyOnWriteArrayList<>();
ThreadPool.scheduleAtFixedRate(new AggroCheckTask(0), 0, 3000); ThreadPool.scheduleAtFixedRate(new AggroCheckTask(0), 0, 3000);
@@ -153,8 +151,7 @@ public class SiegeGuards extends AbstractNpcAI
RESIDENCE_WORKING[_residenceId] = true; RESIDENCE_WORKING[_residenceId] = true;
} }
@SuppressWarnings("unchecked") final List<Npc> guards = RESIDENCE_GUARD_MAP[_residenceId];
final List<Npc> guards = (CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[_residenceId];
for (Npc guard : guards) for (Npc guard : guards)
{ {
if (guard == null) if (guard == null)
@@ -217,24 +214,22 @@ public class SiegeGuards extends AbstractNpcAI
} }
@Override @Override
@SuppressWarnings("unchecked")
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon) public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
{ {
final int residenceId = npc.getScriptValue(); 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) if (guardList != null)
{ {
guardList.remove(npc); guardList.remove(npc);
} }
else else
{ {
((CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[0]).remove(npc); RESIDENCE_GUARD_MAP[0].remove(npc);
} }
return super.onKill(npc, killer, isSummon); return super.onKill(npc, killer, isSummon);
} }
@Override @Override
@SuppressWarnings("unchecked")
public String onSpawn(Npc npc) public String onSpawn(Npc npc)
{ {
npc.setRandomWalking(false); npc.setRandomWalking(false);
@@ -247,14 +242,14 @@ public class SiegeGuards extends AbstractNpcAI
final Fort fortress = npc.getFort(); final Fort fortress = npc.getFort();
final int residenceId = fortress != null ? fortress.getResidenceId() : (castle != null ? castle.getResidenceId() : 0); final int residenceId = fortress != null ? fortress.getResidenceId() : (castle != null ? castle.getResidenceId() : 0);
npc.setScriptValue(residenceId); npc.setScriptValue(residenceId);
final List<Npc> guardList = (CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[residenceId]; final List<Npc> guardList = RESIDENCE_GUARD_MAP[residenceId];
if (guardList != null) if (guardList != null)
{ {
guardList.add(npc); guardList.add(npc);
} }
else // Residence id not found. else // Residence id not found.
{ {
((CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[0]).add(npc); RESIDENCE_GUARD_MAP[0].add(npc);
} }
return super.onSpawn(npc); return super.onSpawn(npc);

View File

@@ -16,7 +16,6 @@
*/ */
package ai.others; package ai.others;
import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList; 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 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 //@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]; private static final boolean[] RESIDENCE_WORKING = new boolean[122];
public SiegeGuards() public SiegeGuards()
@@ -109,8 +109,6 @@ public class SiegeGuards extends AbstractNpcAI
addKillId(MERCENARIES); addKillId(MERCENARIES);
addKillId(STATIONARY_MERCENARIES); addKillId(STATIONARY_MERCENARIES);
Arrays.fill(RESIDENCE_WORKING, false);
// Start task for unknown residences. // Start task for unknown residences.
RESIDENCE_GUARD_MAP[0] = new CopyOnWriteArrayList<>(); RESIDENCE_GUARD_MAP[0] = new CopyOnWriteArrayList<>();
ThreadPool.scheduleAtFixedRate(new AggroCheckTask(0), 0, 3000); ThreadPool.scheduleAtFixedRate(new AggroCheckTask(0), 0, 3000);
@@ -153,8 +151,7 @@ public class SiegeGuards extends AbstractNpcAI
RESIDENCE_WORKING[_residenceId] = true; RESIDENCE_WORKING[_residenceId] = true;
} }
@SuppressWarnings("unchecked") final List<Npc> guards = RESIDENCE_GUARD_MAP[_residenceId];
final List<Npc> guards = (CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[_residenceId];
for (Npc guard : guards) for (Npc guard : guards)
{ {
if (guard == null) if (guard == null)
@@ -217,24 +214,22 @@ public class SiegeGuards extends AbstractNpcAI
} }
@Override @Override
@SuppressWarnings("unchecked")
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon) public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
{ {
final int residenceId = npc.getScriptValue(); 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) if (guardList != null)
{ {
guardList.remove(npc); guardList.remove(npc);
} }
else else
{ {
((CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[0]).remove(npc); RESIDENCE_GUARD_MAP[0].remove(npc);
} }
return super.onKill(npc, killer, isSummon); return super.onKill(npc, killer, isSummon);
} }
@Override @Override
@SuppressWarnings("unchecked")
public String onSpawn(Npc npc) public String onSpawn(Npc npc)
{ {
npc.setRandomWalking(false); npc.setRandomWalking(false);
@@ -247,14 +242,14 @@ public class SiegeGuards extends AbstractNpcAI
final Fort fortress = npc.getFort(); final Fort fortress = npc.getFort();
final int residenceId = fortress != null ? fortress.getResidenceId() : (castle != null ? castle.getResidenceId() : 0); final int residenceId = fortress != null ? fortress.getResidenceId() : (castle != null ? castle.getResidenceId() : 0);
npc.setScriptValue(residenceId); npc.setScriptValue(residenceId);
final List<Npc> guardList = (CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[residenceId]; final List<Npc> guardList = RESIDENCE_GUARD_MAP[residenceId];
if (guardList != null) if (guardList != null)
{ {
guardList.add(npc); guardList.add(npc);
} }
else // Residence id not found. else // Residence id not found.
{ {
((CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[0]).add(npc); RESIDENCE_GUARD_MAP[0].add(npc);
} }
return super.onSpawn(npc); return super.onSpawn(npc);

View File

@@ -16,7 +16,6 @@
*/ */
package ai.others; package ai.others;
import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList; 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 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 //@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]; private static final boolean[] RESIDENCE_WORKING = new boolean[122];
public SiegeGuards() public SiegeGuards()
@@ -109,8 +109,6 @@ public class SiegeGuards extends AbstractNpcAI
addKillId(MERCENARIES); addKillId(MERCENARIES);
addKillId(STATIONARY_MERCENARIES); addKillId(STATIONARY_MERCENARIES);
Arrays.fill(RESIDENCE_WORKING, false);
// Start task for unknown residences. // Start task for unknown residences.
RESIDENCE_GUARD_MAP[0] = new CopyOnWriteArrayList<>(); RESIDENCE_GUARD_MAP[0] = new CopyOnWriteArrayList<>();
ThreadPool.scheduleAtFixedRate(new AggroCheckTask(0), 0, 3000); ThreadPool.scheduleAtFixedRate(new AggroCheckTask(0), 0, 3000);
@@ -153,8 +151,7 @@ public class SiegeGuards extends AbstractNpcAI
RESIDENCE_WORKING[_residenceId] = true; RESIDENCE_WORKING[_residenceId] = true;
} }
@SuppressWarnings("unchecked") final List<Npc> guards = RESIDENCE_GUARD_MAP[_residenceId];
final List<Npc> guards = (CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[_residenceId];
for (Npc guard : guards) for (Npc guard : guards)
{ {
if (guard == null) if (guard == null)
@@ -217,24 +214,22 @@ public class SiegeGuards extends AbstractNpcAI
} }
@Override @Override
@SuppressWarnings("unchecked")
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon) public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
{ {
final int residenceId = npc.getScriptValue(); 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) if (guardList != null)
{ {
guardList.remove(npc); guardList.remove(npc);
} }
else else
{ {
((CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[0]).remove(npc); RESIDENCE_GUARD_MAP[0].remove(npc);
} }
return super.onKill(npc, killer, isSummon); return super.onKill(npc, killer, isSummon);
} }
@Override @Override
@SuppressWarnings("unchecked")
public String onSpawn(Npc npc) public String onSpawn(Npc npc)
{ {
npc.setRandomWalking(false); npc.setRandomWalking(false);
@@ -247,14 +242,14 @@ public class SiegeGuards extends AbstractNpcAI
final Fort fortress = npc.getFort(); final Fort fortress = npc.getFort();
final int residenceId = fortress != null ? fortress.getResidenceId() : (castle != null ? castle.getResidenceId() : 0); final int residenceId = fortress != null ? fortress.getResidenceId() : (castle != null ? castle.getResidenceId() : 0);
npc.setScriptValue(residenceId); npc.setScriptValue(residenceId);
final List<Npc> guardList = (CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[residenceId]; final List<Npc> guardList = RESIDENCE_GUARD_MAP[residenceId];
if (guardList != null) if (guardList != null)
{ {
guardList.add(npc); guardList.add(npc);
} }
else // Residence id not found. else // Residence id not found.
{ {
((CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[0]).add(npc); RESIDENCE_GUARD_MAP[0].add(npc);
} }
return super.onSpawn(npc); return super.onSpawn(npc);

View File

@@ -16,7 +16,6 @@
*/ */
package ai.others; package ai.others;
import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList; 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 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 //@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]; private static final boolean[] RESIDENCE_WORKING = new boolean[122];
public SiegeGuards() public SiegeGuards()
@@ -109,8 +109,6 @@ public class SiegeGuards extends AbstractNpcAI
addKillId(MERCENARIES); addKillId(MERCENARIES);
addKillId(STATIONARY_MERCENARIES); addKillId(STATIONARY_MERCENARIES);
Arrays.fill(RESIDENCE_WORKING, false);
// Start task for unknown residences. // Start task for unknown residences.
RESIDENCE_GUARD_MAP[0] = new CopyOnWriteArrayList<>(); RESIDENCE_GUARD_MAP[0] = new CopyOnWriteArrayList<>();
ThreadPool.scheduleAtFixedRate(new AggroCheckTask(0), 0, 3000); ThreadPool.scheduleAtFixedRate(new AggroCheckTask(0), 0, 3000);
@@ -153,8 +151,7 @@ public class SiegeGuards extends AbstractNpcAI
RESIDENCE_WORKING[_residenceId] = true; RESIDENCE_WORKING[_residenceId] = true;
} }
@SuppressWarnings("unchecked") final List<Npc> guards = RESIDENCE_GUARD_MAP[_residenceId];
final List<Npc> guards = (CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[_residenceId];
for (Npc guard : guards) for (Npc guard : guards)
{ {
if (guard == null) if (guard == null)
@@ -217,24 +214,22 @@ public class SiegeGuards extends AbstractNpcAI
} }
@Override @Override
@SuppressWarnings("unchecked")
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon) public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
{ {
final int residenceId = npc.getScriptValue(); 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) if (guardList != null)
{ {
guardList.remove(npc); guardList.remove(npc);
} }
else else
{ {
((CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[0]).remove(npc); RESIDENCE_GUARD_MAP[0].remove(npc);
} }
return super.onKill(npc, killer, isSummon); return super.onKill(npc, killer, isSummon);
} }
@Override @Override
@SuppressWarnings("unchecked")
public String onSpawn(Npc npc) public String onSpawn(Npc npc)
{ {
npc.setRandomWalking(false); npc.setRandomWalking(false);
@@ -247,14 +242,14 @@ public class SiegeGuards extends AbstractNpcAI
final Fort fortress = npc.getFort(); final Fort fortress = npc.getFort();
final int residenceId = fortress != null ? fortress.getResidenceId() : (castle != null ? castle.getResidenceId() : 0); final int residenceId = fortress != null ? fortress.getResidenceId() : (castle != null ? castle.getResidenceId() : 0);
npc.setScriptValue(residenceId); npc.setScriptValue(residenceId);
final List<Npc> guardList = (CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[residenceId]; final List<Npc> guardList = RESIDENCE_GUARD_MAP[residenceId];
if (guardList != null) if (guardList != null)
{ {
guardList.add(npc); guardList.add(npc);
} }
else // Residence id not found. else // Residence id not found.
{ {
((CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[0]).add(npc); RESIDENCE_GUARD_MAP[0].add(npc);
} }
return super.onSpawn(npc); return super.onSpawn(npc);

View File

@@ -16,7 +16,6 @@
*/ */
package ai.others; package ai.others;
import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList; 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 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 //@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]; private static final boolean[] RESIDENCE_WORKING = new boolean[122];
public SiegeGuards() public SiegeGuards()
@@ -109,8 +109,6 @@ public class SiegeGuards extends AbstractNpcAI
addKillId(MERCENARIES); addKillId(MERCENARIES);
addKillId(STATIONARY_MERCENARIES); addKillId(STATIONARY_MERCENARIES);
Arrays.fill(RESIDENCE_WORKING, false);
// Start task for unknown residences. // Start task for unknown residences.
RESIDENCE_GUARD_MAP[0] = new CopyOnWriteArrayList<>(); RESIDENCE_GUARD_MAP[0] = new CopyOnWriteArrayList<>();
ThreadPool.scheduleAtFixedRate(new AggroCheckTask(0), 0, 3000); ThreadPool.scheduleAtFixedRate(new AggroCheckTask(0), 0, 3000);
@@ -153,8 +151,7 @@ public class SiegeGuards extends AbstractNpcAI
RESIDENCE_WORKING[_residenceId] = true; RESIDENCE_WORKING[_residenceId] = true;
} }
@SuppressWarnings("unchecked") final List<Npc> guards = RESIDENCE_GUARD_MAP[_residenceId];
final List<Npc> guards = (CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[_residenceId];
for (Npc guard : guards) for (Npc guard : guards)
{ {
if (guard == null) if (guard == null)
@@ -217,24 +214,22 @@ public class SiegeGuards extends AbstractNpcAI
} }
@Override @Override
@SuppressWarnings("unchecked")
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon) public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
{ {
final int residenceId = npc.getScriptValue(); 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) if (guardList != null)
{ {
guardList.remove(npc); guardList.remove(npc);
} }
else else
{ {
((CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[0]).remove(npc); RESIDENCE_GUARD_MAP[0].remove(npc);
} }
return super.onKill(npc, killer, isSummon); return super.onKill(npc, killer, isSummon);
} }
@Override @Override
@SuppressWarnings("unchecked")
public String onSpawn(Npc npc) public String onSpawn(Npc npc)
{ {
npc.setRandomWalking(false); npc.setRandomWalking(false);
@@ -247,14 +242,14 @@ public class SiegeGuards extends AbstractNpcAI
final Fort fortress = npc.getFort(); final Fort fortress = npc.getFort();
final int residenceId = fortress != null ? fortress.getResidenceId() : (castle != null ? castle.getResidenceId() : 0); final int residenceId = fortress != null ? fortress.getResidenceId() : (castle != null ? castle.getResidenceId() : 0);
npc.setScriptValue(residenceId); npc.setScriptValue(residenceId);
final List<Npc> guardList = (CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[residenceId]; final List<Npc> guardList = RESIDENCE_GUARD_MAP[residenceId];
if (guardList != null) if (guardList != null)
{ {
guardList.add(npc); guardList.add(npc);
} }
else // Residence id not found. else // Residence id not found.
{ {
((CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[0]).add(npc); RESIDENCE_GUARD_MAP[0].add(npc);
} }
return super.onSpawn(npc); return super.onSpawn(npc);

View File

@@ -16,7 +16,6 @@
*/ */
package ai.others; package ai.others;
import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList; 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 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 //@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]; private static final boolean[] RESIDENCE_WORKING = new boolean[122];
public SiegeGuards() public SiegeGuards()
@@ -109,8 +109,6 @@ public class SiegeGuards extends AbstractNpcAI
addKillId(MERCENARIES); addKillId(MERCENARIES);
addKillId(STATIONARY_MERCENARIES); addKillId(STATIONARY_MERCENARIES);
Arrays.fill(RESIDENCE_WORKING, false);
// Start task for unknown residences. // Start task for unknown residences.
RESIDENCE_GUARD_MAP[0] = new CopyOnWriteArrayList<>(); RESIDENCE_GUARD_MAP[0] = new CopyOnWriteArrayList<>();
ThreadPool.scheduleAtFixedRate(new AggroCheckTask(0), 0, 3000); ThreadPool.scheduleAtFixedRate(new AggroCheckTask(0), 0, 3000);
@@ -153,8 +151,7 @@ public class SiegeGuards extends AbstractNpcAI
RESIDENCE_WORKING[_residenceId] = true; RESIDENCE_WORKING[_residenceId] = true;
} }
@SuppressWarnings("unchecked") final List<Npc> guards = RESIDENCE_GUARD_MAP[_residenceId];
final List<Npc> guards = (CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[_residenceId];
for (Npc guard : guards) for (Npc guard : guards)
{ {
if (guard == null) if (guard == null)
@@ -217,24 +214,22 @@ public class SiegeGuards extends AbstractNpcAI
} }
@Override @Override
@SuppressWarnings("unchecked")
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon) public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
{ {
final int residenceId = npc.getScriptValue(); 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) if (guardList != null)
{ {
guardList.remove(npc); guardList.remove(npc);
} }
else else
{ {
((CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[0]).remove(npc); RESIDENCE_GUARD_MAP[0].remove(npc);
} }
return super.onKill(npc, killer, isSummon); return super.onKill(npc, killer, isSummon);
} }
@Override @Override
@SuppressWarnings("unchecked")
public String onSpawn(Npc npc) public String onSpawn(Npc npc)
{ {
npc.setRandomWalking(false); npc.setRandomWalking(false);
@@ -247,14 +242,14 @@ public class SiegeGuards extends AbstractNpcAI
final Fort fortress = npc.getFort(); final Fort fortress = npc.getFort();
final int residenceId = fortress != null ? fortress.getResidenceId() : (castle != null ? castle.getResidenceId() : 0); final int residenceId = fortress != null ? fortress.getResidenceId() : (castle != null ? castle.getResidenceId() : 0);
npc.setScriptValue(residenceId); npc.setScriptValue(residenceId);
final List<Npc> guardList = (CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[residenceId]; final List<Npc> guardList = RESIDENCE_GUARD_MAP[residenceId];
if (guardList != null) if (guardList != null)
{ {
guardList.add(npc); guardList.add(npc);
} }
else // Residence id not found. else // Residence id not found.
{ {
((CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[0]).add(npc); RESIDENCE_GUARD_MAP[0].add(npc);
} }
return super.onSpawn(npc); return super.onSpawn(npc);

View File

@@ -16,7 +16,6 @@
*/ */
package ai.others; package ai.others;
import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList; 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 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 //@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]; private static final boolean[] RESIDENCE_WORKING = new boolean[122];
public SiegeGuards() public SiegeGuards()
@@ -109,8 +109,6 @@ public class SiegeGuards extends AbstractNpcAI
addKillId(MERCENARIES); addKillId(MERCENARIES);
addKillId(STATIONARY_MERCENARIES); addKillId(STATIONARY_MERCENARIES);
Arrays.fill(RESIDENCE_WORKING, false);
// Start task for unknown residences. // Start task for unknown residences.
RESIDENCE_GUARD_MAP[0] = new CopyOnWriteArrayList<>(); RESIDENCE_GUARD_MAP[0] = new CopyOnWriteArrayList<>();
ThreadPool.scheduleAtFixedRate(new AggroCheckTask(0), 0, 3000); ThreadPool.scheduleAtFixedRate(new AggroCheckTask(0), 0, 3000);
@@ -153,8 +151,7 @@ public class SiegeGuards extends AbstractNpcAI
RESIDENCE_WORKING[_residenceId] = true; RESIDENCE_WORKING[_residenceId] = true;
} }
@SuppressWarnings("unchecked") final List<Npc> guards = RESIDENCE_GUARD_MAP[_residenceId];
final List<Npc> guards = (CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[_residenceId];
for (Npc guard : guards) for (Npc guard : guards)
{ {
if (guard == null) if (guard == null)
@@ -217,24 +214,22 @@ public class SiegeGuards extends AbstractNpcAI
} }
@Override @Override
@SuppressWarnings("unchecked")
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon) public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
{ {
final int residenceId = npc.getScriptValue(); 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) if (guardList != null)
{ {
guardList.remove(npc); guardList.remove(npc);
} }
else else
{ {
((CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[0]).remove(npc); RESIDENCE_GUARD_MAP[0].remove(npc);
} }
return super.onKill(npc, killer, isSummon); return super.onKill(npc, killer, isSummon);
} }
@Override @Override
@SuppressWarnings("unchecked")
public String onSpawn(Npc npc) public String onSpawn(Npc npc)
{ {
npc.setRandomWalking(false); npc.setRandomWalking(false);
@@ -247,14 +242,14 @@ public class SiegeGuards extends AbstractNpcAI
final Fort fortress = npc.getFort(); final Fort fortress = npc.getFort();
final int residenceId = fortress != null ? fortress.getResidenceId() : (castle != null ? castle.getResidenceId() : 0); final int residenceId = fortress != null ? fortress.getResidenceId() : (castle != null ? castle.getResidenceId() : 0);
npc.setScriptValue(residenceId); npc.setScriptValue(residenceId);
final List<Npc> guardList = (CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[residenceId]; final List<Npc> guardList = RESIDENCE_GUARD_MAP[residenceId];
if (guardList != null) if (guardList != null)
{ {
guardList.add(npc); guardList.add(npc);
} }
else // Residence id not found. else // Residence id not found.
{ {
((CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[0]).add(npc); RESIDENCE_GUARD_MAP[0].add(npc);
} }
return super.onSpawn(npc); return super.onSpawn(npc);

View File

@@ -16,7 +16,6 @@
*/ */
package ai.others; package ai.others;
import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.CopyOnWriteArrayList;
@@ -66,7 +65,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 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 //@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]; private static final boolean[] RESIDENCE_WORKING = new boolean[122];
public SiegeGuards() public SiegeGuards()
@@ -81,8 +81,6 @@ public class SiegeGuards extends AbstractNpcAI
addKillId(MERCENARIES); addKillId(MERCENARIES);
addKillId(STATIONARY_MERCENARIES); addKillId(STATIONARY_MERCENARIES);
Arrays.fill(RESIDENCE_WORKING, false);
// Start task for unknown residences. // Start task for unknown residences.
RESIDENCE_GUARD_MAP[0] = new CopyOnWriteArrayList<>(); RESIDENCE_GUARD_MAP[0] = new CopyOnWriteArrayList<>();
ThreadPool.scheduleAtFixedRate(new AggroCheckTask(0), 0, 3000); ThreadPool.scheduleAtFixedRate(new AggroCheckTask(0), 0, 3000);
@@ -117,8 +115,7 @@ public class SiegeGuards extends AbstractNpcAI
RESIDENCE_WORKING[_residenceId] = true; RESIDENCE_WORKING[_residenceId] = true;
} }
@SuppressWarnings("unchecked") final List<Npc> guards = RESIDENCE_GUARD_MAP[_residenceId];
final List<Npc> guards = (CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[_residenceId];
for (Npc guard : guards) for (Npc guard : guards)
{ {
if (guard == null) if (guard == null)
@@ -181,24 +178,22 @@ public class SiegeGuards extends AbstractNpcAI
} }
@Override @Override
@SuppressWarnings("unchecked")
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon) public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
{ {
final int residenceId = npc.getScriptValue(); 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) if (guardList != null)
{ {
guardList.remove(npc); guardList.remove(npc);
} }
else else
{ {
((CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[0]).remove(npc); RESIDENCE_GUARD_MAP[0].remove(npc);
} }
return super.onKill(npc, killer, isSummon); return super.onKill(npc, killer, isSummon);
} }
@Override @Override
@SuppressWarnings("unchecked")
public String onSpawn(Npc npc) public String onSpawn(Npc npc)
{ {
npc.setRandomWalking(false); npc.setRandomWalking(false);
@@ -211,14 +206,14 @@ public class SiegeGuards extends AbstractNpcAI
final Fort fortress = npc.getFort(); final Fort fortress = npc.getFort();
final int residenceId = fortress != null ? fortress.getResidenceId() : (castle != null ? castle.getResidenceId() : 0); final int residenceId = fortress != null ? fortress.getResidenceId() : (castle != null ? castle.getResidenceId() : 0);
npc.setScriptValue(residenceId); npc.setScriptValue(residenceId);
final List<Npc> guardList = (CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[residenceId]; final List<Npc> guardList = RESIDENCE_GUARD_MAP[residenceId];
if (guardList != null) if (guardList != null)
{ {
guardList.add(npc); guardList.add(npc);
} }
else // Residence id not found. else // Residence id not found.
{ {
((CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[0]).add(npc); RESIDENCE_GUARD_MAP[0].add(npc);
} }
return super.onSpawn(npc); return super.onSpawn(npc);

View File

@@ -16,7 +16,6 @@
*/ */
package ai.others; package ai.others;
import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.CopyOnWriteArrayList;
@@ -66,7 +65,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 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 //@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]; private static final boolean[] RESIDENCE_WORKING = new boolean[122];
public SiegeGuards() public SiegeGuards()
@@ -81,8 +81,6 @@ public class SiegeGuards extends AbstractNpcAI
addKillId(MERCENARIES); addKillId(MERCENARIES);
addKillId(STATIONARY_MERCENARIES); addKillId(STATIONARY_MERCENARIES);
Arrays.fill(RESIDENCE_WORKING, false);
// Start task for unknown residences. // Start task for unknown residences.
RESIDENCE_GUARD_MAP[0] = new CopyOnWriteArrayList<>(); RESIDENCE_GUARD_MAP[0] = new CopyOnWriteArrayList<>();
ThreadPool.scheduleAtFixedRate(new AggroCheckTask(0), 0, 3000); ThreadPool.scheduleAtFixedRate(new AggroCheckTask(0), 0, 3000);
@@ -117,8 +115,7 @@ public class SiegeGuards extends AbstractNpcAI
RESIDENCE_WORKING[_residenceId] = true; RESIDENCE_WORKING[_residenceId] = true;
} }
@SuppressWarnings("unchecked") final List<Npc> guards = RESIDENCE_GUARD_MAP[_residenceId];
final List<Npc> guards = (CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[_residenceId];
for (Npc guard : guards) for (Npc guard : guards)
{ {
if (guard == null) if (guard == null)
@@ -181,24 +178,22 @@ public class SiegeGuards extends AbstractNpcAI
} }
@Override @Override
@SuppressWarnings("unchecked")
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon) public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
{ {
final int residenceId = npc.getScriptValue(); 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) if (guardList != null)
{ {
guardList.remove(npc); guardList.remove(npc);
} }
else else
{ {
((CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[0]).remove(npc); RESIDENCE_GUARD_MAP[0].remove(npc);
} }
return super.onKill(npc, killer, isSummon); return super.onKill(npc, killer, isSummon);
} }
@Override @Override
@SuppressWarnings("unchecked")
public String onSpawn(Npc npc) public String onSpawn(Npc npc)
{ {
npc.setRandomWalking(false); npc.setRandomWalking(false);
@@ -211,14 +206,14 @@ public class SiegeGuards extends AbstractNpcAI
final Fort fortress = npc.getFort(); final Fort fortress = npc.getFort();
final int residenceId = fortress != null ? fortress.getResidenceId() : (castle != null ? castle.getResidenceId() : 0); final int residenceId = fortress != null ? fortress.getResidenceId() : (castle != null ? castle.getResidenceId() : 0);
npc.setScriptValue(residenceId); npc.setScriptValue(residenceId);
final List<Npc> guardList = (CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[residenceId]; final List<Npc> guardList = RESIDENCE_GUARD_MAP[residenceId];
if (guardList != null) if (guardList != null)
{ {
guardList.add(npc); guardList.add(npc);
} }
else // Residence id not found. else // Residence id not found.
{ {
((CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[0]).add(npc); RESIDENCE_GUARD_MAP[0].add(npc);
} }
return super.onSpawn(npc); return super.onSpawn(npc);

View File

@@ -16,7 +16,6 @@
*/ */
package ai.others; package ai.others;
import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.CopyOnWriteArrayList;
@@ -66,7 +65,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 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 //@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]; private static final boolean[] RESIDENCE_WORKING = new boolean[122];
public SiegeGuards() public SiegeGuards()
@@ -81,8 +81,6 @@ public class SiegeGuards extends AbstractNpcAI
addKillId(MERCENARIES); addKillId(MERCENARIES);
addKillId(STATIONARY_MERCENARIES); addKillId(STATIONARY_MERCENARIES);
Arrays.fill(RESIDENCE_WORKING, false);
// Start task for unknown residences. // Start task for unknown residences.
RESIDENCE_GUARD_MAP[0] = new CopyOnWriteArrayList<>(); RESIDENCE_GUARD_MAP[0] = new CopyOnWriteArrayList<>();
ThreadPool.scheduleAtFixedRate(new AggroCheckTask(0), 0, 3000); ThreadPool.scheduleAtFixedRate(new AggroCheckTask(0), 0, 3000);
@@ -117,8 +115,7 @@ public class SiegeGuards extends AbstractNpcAI
RESIDENCE_WORKING[_residenceId] = true; RESIDENCE_WORKING[_residenceId] = true;
} }
@SuppressWarnings("unchecked") final List<Npc> guards = RESIDENCE_GUARD_MAP[_residenceId];
final List<Npc> guards = (CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[_residenceId];
for (Npc guard : guards) for (Npc guard : guards)
{ {
if (guard == null) if (guard == null)
@@ -181,24 +178,22 @@ public class SiegeGuards extends AbstractNpcAI
} }
@Override @Override
@SuppressWarnings("unchecked")
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon) public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
{ {
final int residenceId = npc.getScriptValue(); 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) if (guardList != null)
{ {
guardList.remove(npc); guardList.remove(npc);
} }
else else
{ {
((CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[0]).remove(npc); RESIDENCE_GUARD_MAP[0].remove(npc);
} }
return super.onKill(npc, killer, isSummon); return super.onKill(npc, killer, isSummon);
} }
@Override @Override
@SuppressWarnings("unchecked")
public String onSpawn(Npc npc) public String onSpawn(Npc npc)
{ {
npc.setRandomWalking(false); npc.setRandomWalking(false);
@@ -211,14 +206,14 @@ public class SiegeGuards extends AbstractNpcAI
final Fort fortress = npc.getFort(); final Fort fortress = npc.getFort();
final int residenceId = fortress != null ? fortress.getResidenceId() : (castle != null ? castle.getResidenceId() : 0); final int residenceId = fortress != null ? fortress.getResidenceId() : (castle != null ? castle.getResidenceId() : 0);
npc.setScriptValue(residenceId); npc.setScriptValue(residenceId);
final List<Npc> guardList = (CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[residenceId]; final List<Npc> guardList = RESIDENCE_GUARD_MAP[residenceId];
if (guardList != null) if (guardList != null)
{ {
guardList.add(npc); guardList.add(npc);
} }
else // Residence id not found. else // Residence id not found.
{ {
((CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[0]).add(npc); RESIDENCE_GUARD_MAP[0].add(npc);
} }
return super.onSpawn(npc); return super.onSpawn(npc);

View File

@@ -16,7 +16,6 @@
*/ */
package ai.others; package ai.others;
import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.CopyOnWriteArrayList;
@@ -66,7 +65,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 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 //@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]; private static final boolean[] RESIDENCE_WORKING = new boolean[122];
public SiegeGuards() public SiegeGuards()
@@ -81,8 +81,6 @@ public class SiegeGuards extends AbstractNpcAI
addKillId(MERCENARIES); addKillId(MERCENARIES);
addKillId(STATIONARY_MERCENARIES); addKillId(STATIONARY_MERCENARIES);
Arrays.fill(RESIDENCE_WORKING, false);
// Start task for unknown residences. // Start task for unknown residences.
RESIDENCE_GUARD_MAP[0] = new CopyOnWriteArrayList<>(); RESIDENCE_GUARD_MAP[0] = new CopyOnWriteArrayList<>();
ThreadPool.scheduleAtFixedRate(new AggroCheckTask(0), 0, 3000); ThreadPool.scheduleAtFixedRate(new AggroCheckTask(0), 0, 3000);
@@ -117,8 +115,7 @@ public class SiegeGuards extends AbstractNpcAI
RESIDENCE_WORKING[_residenceId] = true; RESIDENCE_WORKING[_residenceId] = true;
} }
@SuppressWarnings("unchecked") final List<Npc> guards = RESIDENCE_GUARD_MAP[_residenceId];
final List<Npc> guards = (CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[_residenceId];
for (Npc guard : guards) for (Npc guard : guards)
{ {
if (guard == null) if (guard == null)
@@ -181,24 +178,22 @@ public class SiegeGuards extends AbstractNpcAI
} }
@Override @Override
@SuppressWarnings("unchecked")
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon) public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
{ {
final int residenceId = npc.getScriptValue(); 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) if (guardList != null)
{ {
guardList.remove(npc); guardList.remove(npc);
} }
else else
{ {
((CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[0]).remove(npc); RESIDENCE_GUARD_MAP[0].remove(npc);
} }
return super.onKill(npc, killer, isSummon); return super.onKill(npc, killer, isSummon);
} }
@Override @Override
@SuppressWarnings("unchecked")
public String onSpawn(Npc npc) public String onSpawn(Npc npc)
{ {
npc.setRandomWalking(false); npc.setRandomWalking(false);
@@ -211,14 +206,14 @@ public class SiegeGuards extends AbstractNpcAI
final Fort fortress = npc.getFort(); final Fort fortress = npc.getFort();
final int residenceId = fortress != null ? fortress.getResidenceId() : (castle != null ? castle.getResidenceId() : 0); final int residenceId = fortress != null ? fortress.getResidenceId() : (castle != null ? castle.getResidenceId() : 0);
npc.setScriptValue(residenceId); npc.setScriptValue(residenceId);
final List<Npc> guardList = (CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[residenceId]; final List<Npc> guardList = RESIDENCE_GUARD_MAP[residenceId];
if (guardList != null) if (guardList != null)
{ {
guardList.add(npc); guardList.add(npc);
} }
else // Residence id not found. else // Residence id not found.
{ {
((CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[0]).add(npc); RESIDENCE_GUARD_MAP[0].add(npc);
} }
return super.onSpawn(npc); return super.onSpawn(npc);

View File

@@ -16,7 +16,6 @@
*/ */
package ai.others; package ai.others;
import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.CopyOnWriteArrayList;
@@ -66,7 +65,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 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 //@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]; private static final boolean[] RESIDENCE_WORKING = new boolean[122];
public SiegeGuards() public SiegeGuards()
@@ -81,8 +81,6 @@ public class SiegeGuards extends AbstractNpcAI
addKillId(MERCENARIES); addKillId(MERCENARIES);
addKillId(STATIONARY_MERCENARIES); addKillId(STATIONARY_MERCENARIES);
Arrays.fill(RESIDENCE_WORKING, false);
// Start task for unknown residences. // Start task for unknown residences.
RESIDENCE_GUARD_MAP[0] = new CopyOnWriteArrayList<>(); RESIDENCE_GUARD_MAP[0] = new CopyOnWriteArrayList<>();
ThreadPool.scheduleAtFixedRate(new AggroCheckTask(0), 0, 3000); ThreadPool.scheduleAtFixedRate(new AggroCheckTask(0), 0, 3000);
@@ -117,8 +115,7 @@ public class SiegeGuards extends AbstractNpcAI
RESIDENCE_WORKING[_residenceId] = true; RESIDENCE_WORKING[_residenceId] = true;
} }
@SuppressWarnings("unchecked") final List<Npc> guards = RESIDENCE_GUARD_MAP[_residenceId];
final List<Npc> guards = (CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[_residenceId];
for (Npc guard : guards) for (Npc guard : guards)
{ {
if (guard == null) if (guard == null)
@@ -181,24 +178,22 @@ public class SiegeGuards extends AbstractNpcAI
} }
@Override @Override
@SuppressWarnings("unchecked")
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon) public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
{ {
final int residenceId = npc.getScriptValue(); 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) if (guardList != null)
{ {
guardList.remove(npc); guardList.remove(npc);
} }
else else
{ {
((CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[0]).remove(npc); RESIDENCE_GUARD_MAP[0].remove(npc);
} }
return super.onKill(npc, killer, isSummon); return super.onKill(npc, killer, isSummon);
} }
@Override @Override
@SuppressWarnings("unchecked")
public String onSpawn(Npc npc) public String onSpawn(Npc npc)
{ {
npc.setRandomWalking(false); npc.setRandomWalking(false);
@@ -211,14 +206,14 @@ public class SiegeGuards extends AbstractNpcAI
final Fort fortress = npc.getFort(); final Fort fortress = npc.getFort();
final int residenceId = fortress != null ? fortress.getResidenceId() : (castle != null ? castle.getResidenceId() : 0); final int residenceId = fortress != null ? fortress.getResidenceId() : (castle != null ? castle.getResidenceId() : 0);
npc.setScriptValue(residenceId); npc.setScriptValue(residenceId);
final List<Npc> guardList = (CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[residenceId]; final List<Npc> guardList = RESIDENCE_GUARD_MAP[residenceId];
if (guardList != null) if (guardList != null)
{ {
guardList.add(npc); guardList.add(npc);
} }
else // Residence id not found. else // Residence id not found.
{ {
((CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[0]).add(npc); RESIDENCE_GUARD_MAP[0].add(npc);
} }
return super.onSpawn(npc); return super.onSpawn(npc);

View File

@@ -16,7 +16,6 @@
*/ */
package ai.others; package ai.others;
import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.CopyOnWriteArrayList;
@@ -66,7 +65,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 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 //@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]; private static final boolean[] RESIDENCE_WORKING = new boolean[122];
public SiegeGuards() public SiegeGuards()
@@ -81,8 +81,6 @@ public class SiegeGuards extends AbstractNpcAI
addKillId(MERCENARIES); addKillId(MERCENARIES);
addKillId(STATIONARY_MERCENARIES); addKillId(STATIONARY_MERCENARIES);
Arrays.fill(RESIDENCE_WORKING, false);
// Start task for unknown residences. // Start task for unknown residences.
RESIDENCE_GUARD_MAP[0] = new CopyOnWriteArrayList<>(); RESIDENCE_GUARD_MAP[0] = new CopyOnWriteArrayList<>();
ThreadPool.scheduleAtFixedRate(new AggroCheckTask(0), 0, 3000); ThreadPool.scheduleAtFixedRate(new AggroCheckTask(0), 0, 3000);
@@ -117,8 +115,7 @@ public class SiegeGuards extends AbstractNpcAI
RESIDENCE_WORKING[_residenceId] = true; RESIDENCE_WORKING[_residenceId] = true;
} }
@SuppressWarnings("unchecked") final List<Npc> guards = RESIDENCE_GUARD_MAP[_residenceId];
final List<Npc> guards = (CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[_residenceId];
for (Npc guard : guards) for (Npc guard : guards)
{ {
if (guard == null) if (guard == null)
@@ -181,24 +178,22 @@ public class SiegeGuards extends AbstractNpcAI
} }
@Override @Override
@SuppressWarnings("unchecked")
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon) public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
{ {
final int residenceId = npc.getScriptValue(); 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) if (guardList != null)
{ {
guardList.remove(npc); guardList.remove(npc);
} }
else else
{ {
((CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[0]).remove(npc); RESIDENCE_GUARD_MAP[0].remove(npc);
} }
return super.onKill(npc, killer, isSummon); return super.onKill(npc, killer, isSummon);
} }
@Override @Override
@SuppressWarnings("unchecked")
public String onSpawn(Npc npc) public String onSpawn(Npc npc)
{ {
npc.setRandomWalking(false); npc.setRandomWalking(false);
@@ -211,14 +206,14 @@ public class SiegeGuards extends AbstractNpcAI
final Fort fortress = npc.getFort(); final Fort fortress = npc.getFort();
final int residenceId = fortress != null ? fortress.getResidenceId() : (castle != null ? castle.getResidenceId() : 0); final int residenceId = fortress != null ? fortress.getResidenceId() : (castle != null ? castle.getResidenceId() : 0);
npc.setScriptValue(residenceId); npc.setScriptValue(residenceId);
final List<Npc> guardList = (CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[residenceId]; final List<Npc> guardList = RESIDENCE_GUARD_MAP[residenceId];
if (guardList != null) if (guardList != null)
{ {
guardList.add(npc); guardList.add(npc);
} }
else // Residence id not found. else // Residence id not found.
{ {
((CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[0]).add(npc); RESIDENCE_GUARD_MAP[0].add(npc);
} }
return super.onSpawn(npc); return super.onSpawn(npc);

View File

@@ -16,7 +16,6 @@
*/ */
package ai.others; package ai.others;
import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.CopyOnWriteArrayList;
@@ -66,7 +65,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 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 //@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]; private static final boolean[] RESIDENCE_WORKING = new boolean[122];
public SiegeGuards() public SiegeGuards()
@@ -81,8 +81,6 @@ public class SiegeGuards extends AbstractNpcAI
addKillId(MERCENARIES); addKillId(MERCENARIES);
addKillId(STATIONARY_MERCENARIES); addKillId(STATIONARY_MERCENARIES);
Arrays.fill(RESIDENCE_WORKING, false);
// Start task for unknown residences. // Start task for unknown residences.
RESIDENCE_GUARD_MAP[0] = new CopyOnWriteArrayList<>(); RESIDENCE_GUARD_MAP[0] = new CopyOnWriteArrayList<>();
ThreadPool.scheduleAtFixedRate(new AggroCheckTask(0), 0, 3000); ThreadPool.scheduleAtFixedRate(new AggroCheckTask(0), 0, 3000);
@@ -117,8 +115,7 @@ public class SiegeGuards extends AbstractNpcAI
RESIDENCE_WORKING[_residenceId] = true; RESIDENCE_WORKING[_residenceId] = true;
} }
@SuppressWarnings("unchecked") final List<Npc> guards = RESIDENCE_GUARD_MAP[_residenceId];
final List<Npc> guards = (CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[_residenceId];
for (Npc guard : guards) for (Npc guard : guards)
{ {
if (guard == null) if (guard == null)
@@ -181,24 +178,22 @@ public class SiegeGuards extends AbstractNpcAI
} }
@Override @Override
@SuppressWarnings("unchecked")
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon) public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
{ {
final int residenceId = npc.getScriptValue(); 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) if (guardList != null)
{ {
guardList.remove(npc); guardList.remove(npc);
} }
else else
{ {
((CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[0]).remove(npc); RESIDENCE_GUARD_MAP[0].remove(npc);
} }
return super.onKill(npc, killer, isSummon); return super.onKill(npc, killer, isSummon);
} }
@Override @Override
@SuppressWarnings("unchecked")
public String onSpawn(Npc npc) public String onSpawn(Npc npc)
{ {
npc.setRandomWalking(false); npc.setRandomWalking(false);
@@ -211,14 +206,14 @@ public class SiegeGuards extends AbstractNpcAI
final Fort fortress = npc.getFort(); final Fort fortress = npc.getFort();
final int residenceId = fortress != null ? fortress.getResidenceId() : (castle != null ? castle.getResidenceId() : 0); final int residenceId = fortress != null ? fortress.getResidenceId() : (castle != null ? castle.getResidenceId() : 0);
npc.setScriptValue(residenceId); npc.setScriptValue(residenceId);
final List<Npc> guardList = (CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[residenceId]; final List<Npc> guardList = RESIDENCE_GUARD_MAP[residenceId];
if (guardList != null) if (guardList != null)
{ {
guardList.add(npc); guardList.add(npc);
} }
else // Residence id not found. else // Residence id not found.
{ {
((CopyOnWriteArrayList<Npc>) RESIDENCE_GUARD_MAP[0]).add(npc); RESIDENCE_GUARD_MAP[0].add(npc);
} }
return super.onSpawn(npc); return super.onSpawn(npc);