package net.demilich.metastone.game.spells; import java.util.ArrayList; import java.util.List; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import net.demilich.metastone.game.GameContext; import net.demilich.metastone.game.Player; import net.demilich.metastone.game.entities.Entity; import net.demilich.metastone.game.spells.desc.SpellDesc; import net.demilich.metastone.game.spells.desc.filter.EntityFilter; public class DestroyAllExceptOneSpell extends DestroySpell { public static Logger logger = LoggerFactory.getLogger(DestroyAllExceptOneSpell.class); @Override public void cast(GameContext context, Player player, SpellDesc desc, Entity source, List<Entity> targets) { if (targets == null || targets.isEmpty()) { return; } EntityFilter filter = desc.getEntityFilter(); List<Entity> destroyedTargets = new ArrayList<Entity>(targets); List<Entity> potentialSurvivors = SpellUtils.getValidTargets(context, player, destroyedTargets, filter); if (!potentialSurvivors.isEmpty()) { Entity randomTarget = SpellUtils.getRandomTarget(potentialSurvivors); destroyedTargets.remove(randomTarget); } for (Entity entity : destroyedTargets) { onCast(context, player, null, null, entity); } } }