diff --git a/src/engine/wpakpowers/WpakPowerManager.java b/src/engine/wpakpowers/WpakPowerManager.java index 7488e7ca..ac2f81cc 100644 --- a/src/engine/wpakpowers/WpakPowerManager.java +++ b/src/engine/wpakpowers/WpakPowerManager.java @@ -48,7 +48,7 @@ public class WpakPowerManager { private static JobScheduler js; - public static void init(){ + public static void init() { EffectsParser.parseWpakFile(); PowersParser.parseWpakFile(); PowerActionParser.parseWpakFile(); @@ -294,39 +294,44 @@ public class WpakPowerManager { return false; } - public static void finishUsePower(PerformActionMsg msg, PlayerCharacter caster, AbstractWorldObject target){ + public static void finishUsePower(PerformActionMsg msg, PlayerCharacter caster, AbstractWorldObject target) { Power powerUsed = powers.get(msg.getPowerUsedID()); - if(powerUsed == null) + if (powerUsed == null) return; - if(powerUsed.maxMobTargets > 1 || powerUsed.maxPlayerTargets > 1){ + if (powerUsed.maxMobTargets > 1 || powerUsed.maxPlayerTargets > 1) { AoeHandler(caster, target, powerUsed, msg.getNumTrains()); - }else{ + } else { applyAllPowerEffects(caster, powerUsed, msg.getNumTrains(), target); } } private static void AoeHandler(PlayerCharacter caster, AbstractWorldObject target, Power powerUsed, int rank) { + HashSet mobTargets = new HashSet<>(); - HashSet pcTargets = new HashSet<>(); - if(powerUsed.maxMobTargets > 0) - mobTargets = WorldGrid.getObjectsInRangePartial(target.loc,powerUsed.areaRange, MBServerStatics.MASK_MOB); - if(powerUsed.maxPlayerTargets > 0) - pcTargets = WorldGrid.getObjectsInRangePartial(target.loc,powerUsed.areaRange, MBServerStatics.MASK_PLAYER); + HashSet pcTargets = new HashSet<>(); int count = 1; - for(AbstractWorldObject mob : mobTargets){ - if(count < powerUsed.maxMobTargets + 1){ + + if (powerUsed.maxMobTargets > 0) + mobTargets = WorldGrid.getObjectsInRangePartial(target.loc, powerUsed.areaRange, MBServerStatics.MASK_MOB); + + if (powerUsed.maxPlayerTargets > 0) + pcTargets = WorldGrid.getObjectsInRangePartial(target.loc, powerUsed.areaRange, MBServerStatics.MASK_PLAYER); + + for (AbstractWorldObject mob : mobTargets) { + if (count < powerUsed.maxMobTargets + 1) { applyAllPowerEffects(caster, powerUsed, rank, mob); - count ++; - }else{ + count++; + } else { break; } } + count = 1; - for(AbstractWorldObject pc : pcTargets){ - if(count < powerUsed.maxPlayerTargets + 1){ + for (AbstractWorldObject pc : pcTargets) { + if (count < powerUsed.maxPlayerTargets + 1) { applyAllPowerEffects(caster, powerUsed, rank, pc); - count ++; - }else{ + count++; + } else { break; } } @@ -334,7 +339,7 @@ public class WpakPowerManager { public static void applyAllPowerEffects(AbstractCharacter caster, Power power, int rank, AbstractWorldObject target) { - for(ActionEntry powerAction: power.actionEntries){ + for (ActionEntry powerAction : power.actionEntries) { int effectTokem = Hasher.SBStringHash(powerAction.effect_id); Effect effect = effect_data.get(effectTokem);