forked from MagicBane/Server
Fixed Concurrent Modification issue.
This commit is contained in:
@@ -1648,6 +1648,7 @@ public class MobileFSM {
|
|||||||
// if done previously in canCast();
|
// if done previously in canCast();
|
||||||
|
|
||||||
ArrayList<Integer> powerTokens;
|
ArrayList<Integer> powerTokens;
|
||||||
|
ArrayList<Integer> purgeTokens;
|
||||||
PlayerCharacter target = (PlayerCharacter) mob.getCombatTarget();
|
PlayerCharacter target = (PlayerCharacter) mob.getCombatTarget();
|
||||||
|
|
||||||
if (mob.getMobBase().getFlags().contains(Enum.MobFlagType.CALLSFORHELP))
|
if (mob.getMobBase().getFlags().contains(Enum.MobFlagType.CALLSFORHELP))
|
||||||
@@ -1656,9 +1657,10 @@ public class MobileFSM {
|
|||||||
// Generate a list of tokens from the mob powers for this mobile.
|
// Generate a list of tokens from the mob powers for this mobile.
|
||||||
|
|
||||||
powerTokens = new ArrayList<>(mob.mobPowers.keySet());
|
powerTokens = new ArrayList<>(mob.mobPowers.keySet());
|
||||||
|
purgeTokens = new ArrayList<>();
|
||||||
|
|
||||||
// If player has this effect on them already then remove the token
|
// If player has this effect on them already then remove the token
|
||||||
// from the list of mob powers
|
// from our list of mob powers
|
||||||
|
|
||||||
for (int powerToken : powerTokens){
|
for (int powerToken : powerTokens){
|
||||||
|
|
||||||
@@ -1669,10 +1671,12 @@ public class MobileFSM {
|
|||||||
String des = act.stackType;
|
String des = act.stackType;
|
||||||
|
|
||||||
if (target.getEffects() != null && target.getEffects().containsKey(des))
|
if (target.getEffects() != null && target.getEffects().containsKey(des))
|
||||||
powerTokens.remove(Integer.valueOf(powerToken));
|
purgeTokens.add(powerToken);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
powerTokens.removeAll(purgeTokens);
|
||||||
|
|
||||||
// Pick random spell from our list of powers
|
// Pick random spell from our list of powers
|
||||||
|
|
||||||
int powerToken = powerTokens.get(ThreadLocalRandom.current().nextInt(powerTokens.size()));
|
int powerToken = powerTokens.get(ThreadLocalRandom.current().nextInt(powerTokens.size()));
|
||||||
|
|||||||
Reference in New Issue
Block a user