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;
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);

View File

@@ -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);

View File

@@ -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);

View File

@@ -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);

View File

@@ -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);

View File

@@ -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);

View File

@@ -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);

View File

@@ -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);

View File

@@ -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);

View File

@@ -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);

View File

@@ -16,7 +16,6 @@
*/
package ai.others;
import java.util.Arrays;
import java.util.List;
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
};
//@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()
@@ -81,8 +81,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);
@@ -117,8 +115,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)
@@ -181,24 +178,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);
@@ -211,14 +206,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);

View File

@@ -16,7 +16,6 @@
*/
package ai.others;
import java.util.Arrays;
import java.util.List;
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
};
//@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()
@@ -81,8 +81,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);
@@ -117,8 +115,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)
@@ -181,24 +178,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);
@@ -211,14 +206,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);

View File

@@ -16,7 +16,6 @@
*/
package ai.others;
import java.util.Arrays;
import java.util.List;
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
};
//@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()
@@ -81,8 +81,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);
@@ -117,8 +115,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)
@@ -181,24 +178,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);
@@ -211,14 +206,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);

View File

@@ -16,7 +16,6 @@
*/
package ai.others;
import java.util.Arrays;
import java.util.List;
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
};
//@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()
@@ -81,8 +81,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);
@@ -117,8 +115,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)
@@ -181,24 +178,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);
@@ -211,14 +206,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);

View File

@@ -16,7 +16,6 @@
*/
package ai.others;
import java.util.Arrays;
import java.util.List;
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
};
//@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()
@@ -81,8 +81,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);
@@ -117,8 +115,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)
@@ -181,24 +178,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);
@@ -211,14 +206,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);

View File

@@ -16,7 +16,6 @@
*/
package ai.others;
import java.util.Arrays;
import java.util.List;
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
};
//@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()
@@ -81,8 +81,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);
@@ -117,8 +115,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)
@@ -181,24 +178,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);
@@ -211,14 +206,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);

View File

@@ -16,7 +16,6 @@
*/
package ai.others;
import java.util.Arrays;
import java.util.List;
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
};
//@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()
@@ -81,8 +81,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);
@@ -117,8 +115,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)
@@ -181,24 +178,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);
@@ -211,14 +206,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);