Fixed some problems with possible ConcurrentModificationExceptions and some minor changes.

This commit is contained in:
LevelX2 2016-01-31 23:23:09 +01:00
parent d97f6c6cd1
commit 81af372bc1
144 changed files with 410 additions and 429 deletions

View file

@ -75,7 +75,7 @@ class LordOfExtinctionDynamicCount implements DynamicValue {
@Override
public int calculate(Game game, Ability sourceAbility, Effect effect) {
int count = 0;
for (UUID playerId : game.getPlayer(sourceAbility.getControllerId()).getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(sourceAbility.getControllerId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
count += player.getGraveyard().size();

View file

@ -95,7 +95,7 @@ class SoulquakeEffect extends OneShotEffect {
for (Permanent permanent : game.getBattlefield().getActivePermanents(filter, source.getControllerId(), source.getSourceId(), game)) {
permanent.moveToZone(Zone.HAND, source.getSourceId(), game, true);
}
for (UUID playerId : game.getPlayer(source.getControllerId()).getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(source.getControllerId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
for (Card card : player.getGraveyard().getCards(filter2, game)) {

View file

@ -78,7 +78,7 @@ class DiminishingReturnsEffect extends OneShotEffect {
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
if (controller != null) {
for (UUID playerId : controller.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
for (Card card: player.getHand().getCards(game)) {
@ -95,7 +95,7 @@ class DiminishingReturnsEffect extends OneShotEffect {
controller.moveCardToExileWithInfo(card, null, "", source.getSourceId(), game, Zone.LIBRARY, true);
}
for (UUID playerId : controller.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
int cardsToDrawCount = player.getAmount(0, 7, "How many cards to draw (up to 7)?", game);

View file

@ -132,7 +132,7 @@ class PutridWarriorGainLifeEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
for(UUID playerId: game.getPlayer(source.getControllerId()).getInRange()) {
for(UUID playerId: game.getState().getPlayersInRange(source.getControllerId(), game)) {
Player player = game.getPlayer(playerId);
if(player != null) {
player.gainLife(1, game);

View file

@ -98,7 +98,7 @@ class KillingWaveEffect extends OneShotEffect {
HashMap<UUID, Integer> lifePaidAmounts = new HashMap<UUID, Integer>();
FilterCreaturePermanent filter = new FilterCreaturePermanent();
for (UUID playerId : controller.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
List<Permanent> creatures = game.getBattlefield().getAllActivePermanents(filter, playerId, game);
@ -117,7 +117,7 @@ class KillingWaveEffect extends OneShotEffect {
lifePaidAmounts.put(playerId, lifePaid);
}
for (UUID playerId : controller.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
int lifePaid = lifePaidAmounts.get(playerId);
if (lifePaid > 0) {
Player player = game.getPlayer(playerId);

View file

@ -93,7 +93,7 @@ class OtherworldAtlasDrawEffect extends OneShotEffect {
if (permanent != null) {
int amount = permanent.getCounters().getCount(CounterType.CHARGE);
if (amount > 0) {
for (UUID playerId : sourcePlayer.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(sourcePlayer.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
player.drawCards(amount, game);

View file

@ -113,7 +113,7 @@ class RiteOfRuinEffect extends OneShotEffect {
FilterControlledPermanent filter = new FilterControlledPermanent(cardType + " permanent you control");
filter.add(new CardTypePredicate(cardType));
for (UUID playerId : controller.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
int amount = Math.min(count, game.getBattlefield().countAll(filter, playerId, game));
TargetControlledPermanent target = new TargetControlledPermanent(amount, amount, filter, false);
Player player = game.getPlayer(playerId);

View file

@ -92,7 +92,7 @@ class HeartlessHidetsuguDamageEffect extends OneShotEffect {
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
if (controller != null) {
for (UUID playerId : controller.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
int damage = player.getLife() / 2;

View file

@ -98,7 +98,7 @@ class KitsunePalliatorEffect extends OneShotEffect {
effect.setTargetPointer(new FixedTarget(permanent.getId()));
game.addEffect(effect, source);
}
for (UUID playerId: game.getPlayer(source.getControllerId()).getInRange()) {
for (UUID playerId: game.getState().getPlayersInRange(source.getControllerId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
effect.setTargetPointer(new FixedTarget(player.getId()));

View file

@ -99,7 +99,7 @@ class TwentyGraveyardCreatureCondition implements Condition {
MageObject target = game.getObject(source.getSourceId());
if (target != null) {
HashSet<CardType> foundCardTypes = new HashSet<>();
for (UUID playerId : controller.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
for (Card card : player.getGraveyard().getCards(game)) {

View file

@ -120,7 +120,7 @@ class WhimsOfTheFateEffect extends OneShotEffect {
continue;
}
// if player is in range of controller he chooses 3 piles with all its permanents
if (currentPlayer != null && controller.getInRange().contains(currentPlayer.getId())) {
if (currentPlayer != null && game.getState().getPlayersInRange(controller.getId(), game).contains(currentPlayer.getId())) {
Map<Integer, Set<UUID>> playerPiles = new HashMap<>();
for (int i = 1; i < 4; i++) {
playerPiles.put(i, new LinkedHashSet<UUID>());

View file

@ -88,14 +88,14 @@ class ReverseTheSandsEffect extends OneShotEffect {
if (controller != null) {
Choice lifeChoice = new ChoiceImpl(true);
Set<String> choices = new HashSet<String>();
for (UUID playerId : controller.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
choices.add(new StringBuilder(Integer.toString(player.getLife())).append(" life of ").append(player.getLogName()).toString());
}
}
lifeChoice.setChoices(choices);
for (UUID playersId : controller.getInRange()) {
for (UUID playersId : game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playersId);
if (player != null) {
String selectedChoice;

View file

@ -90,7 +90,7 @@ class AllianceOfArmsEffect extends OneShotEffect {
if (controller != null) {
int xSum = 0;
xSum += playerPaysXGenericMana(controller, source, game);
for(UUID playerId : controller.getInRange()) {
for(UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
if (playerId != controller.getId()) {
Player player = game.getPlayer(playerId);
if (player != null) {
@ -100,7 +100,7 @@ class AllianceOfArmsEffect extends OneShotEffect {
}
}
if (xSum > 0) {
for(UUID playerId : controller.getInRange()) {
for(UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
Effect effect = new CreateTokenTargetEffect(new SoldierToken(), xSum);
effect.setTargetPointer(new FixedTarget(playerId));
effect.apply(game, source);

View file

@ -90,7 +90,7 @@ class CollectiveVoyageEffect extends OneShotEffect {
if (controller != null) {
int xSum = 0;
xSum += playerPaysXGenericMana(controller, source, game);
for(UUID playerId : controller.getInRange()) {
for(UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
if (playerId != controller.getId()) {
Player player = game.getPlayer(playerId);
if (player != null) {
@ -99,7 +99,7 @@ class CollectiveVoyageEffect extends OneShotEffect {
}
}
}
for(UUID playerId : controller.getInRange()) {
for(UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
TargetCardInLibrary target = new TargetCardInLibrary(0, xSum, new FilterBasicLandCard());

View file

@ -87,7 +87,7 @@ class DeathByDragonsEffect extends OneShotEffect {
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
if (controller != null) {
for (UUID playerId : controller.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
if (!playerId.equals(this.getTargetPointer().getFirst(game, source))) {
Token token = new DragonToken2();
token.putOntoBattlefield(1, game, source.getSourceId(), playerId);

View file

@ -129,7 +129,7 @@ class ManaChargedDragonEffect extends OneShotEffect {
if (controller != null) {
int xSum = 0;
xSum += playerPaysXGenericMana(controller, source, game);
for (UUID playerId : controller.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
if (playerId != controller.getId()) {
Player player = game.getPlayer(playerId);
if (player != null) {

View file

@ -87,7 +87,7 @@ class MindsAglowEffect extends OneShotEffect {
if (controller != null) {
int xSum = 0;
xSum += playerPaysXGenericMana(controller, source, game);
for(UUID playerId : controller.getInRange()) {
for(UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
if (playerId != controller.getId()) {
Player player = game.getPlayer(playerId);
if (player != null) {
@ -97,7 +97,7 @@ class MindsAglowEffect extends OneShotEffect {
}
}
if (xSum > 0) {
for(UUID playerId : controller.getInRange()) {
for(UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
player.drawCards(xSum, game);

View file

@ -89,7 +89,7 @@ class SharedTraumaEffect extends OneShotEffect {
if (controller != null) {
int xSum = 0;
xSum += playerPaysXGenericMana(controller, source, game);
for(UUID playerId : controller.getInRange()) {
for(UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
if (playerId != controller.getId()) {
Player player = game.getPlayer(playerId);
if (player != null) {
@ -99,7 +99,7 @@ class SharedTraumaEffect extends OneShotEffect {
}
}
if (xSum > 0) {
for(UUID playerId : controller.getInRange()) {
for(UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
Effect effect = new PutTopCardOfLibraryIntoGraveTargetEffect(xSum);
effect.setTargetPointer(new FixedTarget(playerId));
effect.apply(game, source);

View file

@ -97,7 +97,7 @@ class VeteranExplorerEffect extends OneShotEffect {
if (controller != null) {
List<Player> usingPlayers = new ArrayList<>();
this.chooseAndSearchLibrary(usingPlayers, controller, source, game);
for (UUID playerId: controller.getInRange()) {
for (UUID playerId: game.getState().getPlayersInRange(controller.getId(), game)) {
if (!playerId.equals(controller.getId())) {
Player player = game.getPlayer(playerId);
if (player != null) {

View file

@ -106,7 +106,7 @@ class BroodingSaurianControlEffect extends ContinuousEffectImpl {
// add all creatures in range
Player controller = game.getPlayer(source.getControllerId());
if (controller != null) {
for (UUID playerId : controller.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
FilterPermanent playerFilter = filter.copy();
playerFilter.add(new OwnerIdPredicate(playerId));
for (Permanent permanent :game.getBattlefield().getActivePermanents(playerFilter, playerId, game)) {

View file

@ -101,7 +101,7 @@ class FromTheAshesEffect extends OneShotEffect {
Player controller = game.getPlayer(source.getControllerId());
if (controller != null) {
Map<UUID, Integer> playerAmount = new HashMap<>();
for (UUID playerId : controller.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
int amount = 0;

View file

@ -103,7 +103,7 @@ class HomewardPathControlEffect extends ContinuousEffectImpl {
// add all creatures in range
Player controller = game.getPlayer(source.getControllerId());
if (controller != null) {
for (UUID playerId : controller.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
FilterPermanent playerFilter = filter.copy();
playerFilter.add(new OwnerIdPredicate(playerId));
for (Permanent permanent :game.getBattlefield().getActivePermanents(playerFilter, playerId, game)) {

View file

@ -96,7 +96,7 @@ class HoodedHorrorCantBeBlockedEffect extends RestrictionEffect {
if (controller != null) {
int maxCreatures = 0;
UUID playerIdWithMax = null;
for (UUID playerId : controller.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
int creatures = game.getBattlefield().countAll(filter, playerId, game);
if (creatures > maxCreatures || (creatures == maxCreatures && playerId.equals(blocker.getControllerId())) ) {
maxCreatures = creatures;

View file

@ -112,7 +112,7 @@ class JelevaNephaliasScourgeEffect extends OneShotEffect {
if (watcher != null) {
int xValue = watcher.getManaSpentToCastLastTime(sourceCard.getZoneChangeCounter(game) - 1);
if (xValue > 0) {
for (UUID playerId : controller.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
int cardsToExile = Math.min(player.getLibrary().size(), xValue);

View file

@ -186,7 +186,7 @@ class MysticBarrierReplacementEffect extends ReplacementEffectImpl {
if (game.getPlayers().size() > 2) {
Player controller = game.getPlayer(source.getControllerId());
if (controller != null) {
if (controller.getInRange().contains(event.getPlayerId())) {
if (game.getState().getPlayersInRange(controller.getId(), game).contains(event.getPlayerId())) {
String allowedDirection = (String) game.getState().getValue(new StringBuilder("attack_direction_").append(source.getSourceId()).toString());
if (allowedDirection != null) {
Player defender = game.getPlayer(event.getTargetId());

View file

@ -105,7 +105,7 @@ class NayaSoulbeastCastEffect extends OneShotEffect {
MageObject sourceObject = source.getSourceObject(game);
if (controller != null && sourceObject != null) {
int cmc = 0;
for (UUID playerId : controller.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
if (player.getLibrary().size() > 0) {

View file

@ -120,7 +120,7 @@ class OrderOfSuccessionEffect extends OneShotEffect {
continue;
}
// if player is in range he chooses a creature to control
if (currentPlayer != null && controller.getInRange().contains(currentPlayer.getId())) {
if (currentPlayer != null && game.getState().getPlayersInRange(controller.getId(), game).contains(currentPlayer.getId())) {
FilterCreaturePermanent filter = new FilterCreaturePermanent(new StringBuilder("creature controlled by ").append(nextPlayer.getLogName()).toString());
filter.add(new ControllerIdPredicate(nextPlayer.getId()));
Target target = new TargetCreaturePermanent(filter);

View file

@ -120,7 +120,7 @@ class ShattergangBrothersEffect extends OneShotEffect {
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
if (controller != null) {
for(UUID playerId : controller.getInRange()) {
for(UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
if (playerId != source.getControllerId()) {
Player player = game.getPlayer(playerId);
if (player != null) {

View file

@ -93,7 +93,7 @@ class SurveyorsScopeEffect extends OneShotEffect {
if (controller != null) {
int numberOfLands = 0;
int ownLands = game.getBattlefield().countAll(new FilterLandPermanent(), controller.getId(), game);
for (UUID playerId: controller.getInRange()) {
for (UUID playerId: game.getState().getPlayersInRange(controller.getId(), game)) {
if (!playerId.equals(controller.getId())) {
if (game.getBattlefield().countAll(new FilterLandPermanent(), playerId, game) > ownLands + 1) {
numberOfLands++;

View file

@ -94,7 +94,7 @@ class BrineElementalEffect extends OneShotEffect {
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
if (controller != null) {
for (UUID playerId: controller.getInRange()) {
for (UUID playerId: game.getState().getPlayersInRange(controller.getId(), game)) {
if (controller.hasOpponent(playerId, game)) {
game.getState().getTurnMods().add(new TurnMod(playerId, PhaseStep.UNTAP));
}

View file

@ -101,7 +101,7 @@ class GraveSifterEffect extends OneShotEffect {
typeChoice.setChoices(CardRepository.instance.getCreatureTypes());
Player controller = game.getPlayer(source.getControllerId());
if (controller != null) {
for (UUID playerId : controller.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
typeChoice.clearChoice();

View file

@ -86,7 +86,7 @@ class InciteRebellionEffect extends OneShotEffect {
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
if (controller != null) {
for (UUID playerId: controller.getInRange()) {
for (UUID playerId: game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
int count = game.getBattlefield().countAll(filter, playerId, game);

View file

@ -102,7 +102,7 @@ class StitcherGeralfEffect extends OneShotEffect {
Player controller = game.getPlayer(source.getControllerId());
if (controller != null) {
Cards cards = new CardsImpl();
for (UUID playerId: controller.getInRange()) {
for (UUID playerId: game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
cards.addAll(player.getLibrary().getTopCards(game, 3));

View file

@ -111,7 +111,7 @@ class WaveOfVitriolEffect extends OneShotEffect {
Player controller = game.getPlayer(source.getControllerId());
if (controller != null) {
Map<Player, Integer> sacrificedLands = new HashMap<>();
for (UUID playerId : controller.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
int count = 0;

View file

@ -88,7 +88,7 @@ class WolfcallersHowlEffect extends OneShotEffect {
Player controller = game.getPlayer(source.getControllerId());
if (controller != null) {
int count = 0;
for(UUID playerId :controller.getInRange()) {
for(UUID playerId :game.getState().getPlayersInRange(controller.getId(), game)) {
if (controller.hasOpponent(playerId, game)) {
Player opponent = game.getPlayer(playerId);
if (opponent != null) {

View file

@ -139,7 +139,7 @@ class BloodTyrantEffect extends OneShotEffect {
int counters = 0;
Player controller = game.getPlayer(source.getControllerId());
if (controller != null) {
for (UUID playerId : controller.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
if (player.loseLife(1, game) > 0) {

View file

@ -82,7 +82,7 @@ class StrongholdDisciplineEffect extends OneShotEffect {
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
if (controller != null) {
for (UUID playerId : controller.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
final int count = game.getBattlefield().getAllActivePermanents(new FilterCreaturePermanent(), playerId, game).size();
if (count > 0) {
Player player = game.getPlayer(playerId);

View file

@ -88,7 +88,7 @@ class ChillOfForebodingEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
Player sourcePlayer = game.getPlayer(source.getControllerId());
for (UUID playerId : sourcePlayer.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(sourcePlayer.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
player.moveCards(player.getLibrary().getTopCards(game, 5), Zone.LIBRARY, Zone.GRAVEYARD, source, game);

View file

@ -139,7 +139,7 @@ class EverythingIsColorlessEffect extends ContinuousEffectImpl {
for (CommandObject commandObject : game.getState().getCommand()) {
commandObject.getColor(game).setColor(colorless);
}
for (UUID playerId : controller.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
// hand
@ -186,7 +186,7 @@ class ManaCanBeSpentAsAnyColorEffect extends AsThoughEffectImpl implements AsTho
@Override
public boolean applies(UUID objectId, Ability source, UUID affectedControllerId, Game game) {
Player controller = game.getPlayer(source.getControllerId());
return controller != null && controller.getInRange().contains(affectedControllerId);
return controller != null && game.getState().getPlayersInRange(controller.getId(), game).contains(affectedControllerId);
}
@Override

View file

@ -85,7 +85,7 @@ class PulseOfTheFieldsReturnToHandEffect extends OneShotEffect {
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
if (controller != null) {
for (UUID playerId : controller.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null && player.getLife() > controller.getLife()) {
Card card = game.getCard(source.getSourceId());

View file

@ -85,7 +85,7 @@ class PulseOfTheGridReturnToHandEffect extends OneShotEffect {
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
if (controller != null) {
for (UUID playerId : controller.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null && player.getHand().size() > controller.getHand().size()) {
Card card = game.getCard(source.getSourceId());

View file

@ -131,10 +131,10 @@ class BloodBaronOfVizkopaEffect extends ContinuousEffectImpl {
}
protected boolean conditionState(Ability source, Game game) {
Player player = game.getPlayer(source.getControllerId());
if (player != null && player.getLife() >= 30) {
for (UUID opponentId : player.getInRange()) {
if (player.hasOpponent(opponentId, game)) {
Player controller = game.getPlayer(source.getControllerId());
if (controller != null && controller.getLife() >= 30) {
for (UUID opponentId : game.getState().getPlayersInRange(controller.getId(), game)) {
if (controller.hasOpponent(opponentId, game)) {
Player opponent = game.getPlayer(opponentId);
if (opponent != null && opponent.getLife() < 11) {
return true;

View file

@ -109,7 +109,7 @@ class ReleaseSacrificeEffect extends OneShotEffect {
if (controller == null) {
return false;
}
for (UUID playerId : controller.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
Target target1 = new TargetControlledPermanent(1, 1, new FilterControlledArtifactPermanent(), true);

View file

@ -91,7 +91,7 @@ class SireOfInsanityEffect extends OneShotEffect {
if (sourcePlayer == null) {
return false;
}
for (UUID playerId : sourcePlayer.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(sourcePlayer.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
for (Card c : player.getHand().getCards(game)) {

View file

@ -143,7 +143,7 @@ class ShamanOfForgottenWaysEffect extends OneShotEffect {
Player controller = game.getPlayer(source.getControllerId());
if (controller != null) {
FilterPermanent filter = new FilterCreaturePermanent();
for(UUID playerId : controller.getInRange()) {
for(UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null){
int numberCreatures = game.getBattlefield().getAllActivePermanents(filter, playerId, game).size();

View file

@ -97,7 +97,7 @@ class BatwingBrumeEffect extends OneShotEffect {
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
if (controller != null) {
for (UUID playerId : controller.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
final int amount = game.getBattlefield().getAllActivePermanents(new FilterAttackingCreature(), playerId, game).size();
if (amount > 0) {
Player player = game.getPlayer(playerId);

View file

@ -91,7 +91,7 @@ class PriceOfProgressEffect extends OneShotEffect {
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
if (controller != null) {
for (UUID playerId : controller.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
int amount = game.getBattlefield().countAll(filter , playerId, game);
if (amount > 0) {
Player player = game.getPlayer(playerId);

View file

@ -65,6 +65,6 @@ class SkipUpkeepStepEffect extends ContinuousRuleModifyingEffectImpl {
@Override
public boolean applies(GameEvent event, Ability source, Game game) {
Player controller = game.getPlayer(source.getControllerId());
return controller != null && controller.getInRange().contains(event.getPlayerId());
return controller != null && game.getState().getPlayersInRange(controller.getId(), game).contains(event.getPlayerId());
}
}

View file

@ -90,7 +90,7 @@ class PoxEffect extends OneShotEffect {
Player controller = game.getPlayer(source.getControllerId());
if (controller != null) {
// Each player loses a third of his or her life,
for (UUID playerId : controller.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
int lifeToLose = (int) Math.ceil(player.getLife() / 3.0);
@ -98,7 +98,7 @@ class PoxEffect extends OneShotEffect {
}
}
// then discards a third of the cards in his or her hand,
for (UUID playerId : controller.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
int cardsToDiscard = (int) Math.ceil(player.getHand().size() / 3.0);
@ -108,7 +108,7 @@ class PoxEffect extends OneShotEffect {
}
}
// then sacrifices a third of the creatures he or she controls,
for (UUID playerId : controller.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent();
@ -126,7 +126,7 @@ class PoxEffect extends OneShotEffect {
}
}
// then sacrifices a third of the lands he or she controls.
for (UUID playerId : controller.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
FilterControlledLandPermanent filter = new FilterControlledLandPermanent();

View file

@ -94,6 +94,6 @@ class SkipUntapStepEffect extends ContinuousRuleModifyingEffectImpl {
Player controller = game.getPlayer(source.getControllerId());
return event.getType() == GameEvent.EventType.UNTAP_STEP
&& controller != null
&& controller.getInRange().contains(event.getPlayerId());
&& game.getState().getPlayersInRange(controller.getId(), game).contains(event.getPlayerId());
}
}

View file

@ -112,7 +112,7 @@ class HomingSliverEffect extends ContinuousEffectImpl {
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
if (controller != null) {
for (UUID playerId: controller.getInRange()) {
for (UUID playerId: game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
for (Card card : player.getHand().getCards(filter, game)) {

View file

@ -97,7 +97,7 @@ class TarmogoyfEffect extends ContinuousEffectImpl {
MageObject target = game.getObject(source.getSourceId());
if (target != null) {
HashSet<CardType> foundCardTypes = new HashSet<>();
for (UUID playerId : controller.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
for (Card card : player.getGraveyard().getCards(game)) {

View file

@ -94,7 +94,7 @@ public class YixlidJailer extends CardImpl {
if (layer == Layer.AbilityAddingRemovingEffects_6) {
Player controller = game.getPlayer(source.getControllerId());
if (controller != null) {
for (UUID playerId : controller.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
for (Card card : player.getGraveyard().getCards(game)) {

View file

@ -84,7 +84,7 @@ class WhisperingMadnessEffect extends OneShotEffect {
if (sourcePlayer == null) {
return false;
}
for (UUID playerId : sourcePlayer.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(sourcePlayer.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
int discarded = 0;
@ -98,7 +98,7 @@ class WhisperingMadnessEffect extends OneShotEffect {
}
}
}
for (UUID playerId : sourcePlayer.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(sourcePlayer.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
player.drawCards(maxDiscarded, game);

View file

@ -96,7 +96,7 @@ class LhurgoyfEffect extends ContinuousEffectImpl {
MageObject mageObject = game.getObject(source.getSourceId());
if (mageObject != null) {
int number = 0;
for (UUID playerId : controller.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
number += player.getGraveyard().count(new FilterCreatureCard(), game);

View file

@ -103,7 +103,7 @@ class YawgmothsAgendaCanPlayCardsFromGraveyardEffect extends ContinuousEffectImp
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
if (controller != null) {
for (UUID playerId: controller.getInRange()) {
for (UUID playerId: game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null)
{

View file

@ -90,7 +90,7 @@ class WidespreadPanicEffect extends OneShotEffect {
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
if (controller != null) {
for (UUID playerId: controller.getInRange()) {
for (UUID playerId: game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
if (player.getHand().size() > 0) {

View file

@ -97,14 +97,14 @@ class DakraMysticEffect extends OneShotEffect {
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
if (controller != null) {
for(UUID playerId: controller.getInRange()) {
for(UUID playerId: game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null && player.getLibrary().size() > 0) {
player.revealCards(player.getLogName(), new CardsImpl(player.getLibrary().getFromTop(game)), game);
}
}
if (controller.chooseUse(outcome, "Put revealed cards into graveyard?", source, game)) {
for(UUID playerId: controller.getInRange()) {
for(UUID playerId: game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null && player.getLibrary().size() > 0) {
player.moveCards(player.getLibrary().getFromTop(game), Zone.LIBRARY, Zone.GRAVEYARD, source, game);

View file

@ -95,7 +95,7 @@ class CracklingDoomEffect extends OneShotEffect {
Player controller = game.getPlayer(source.getControllerId());
if (controller != null) {
ArrayList<Permanent> toSacrifice = new ArrayList<>();
for (UUID playerId: controller.getInRange()) {
for (UUID playerId: game.getState().getPlayersInRange(controller.getId(), game)) {
if (controller.hasOpponent(playerId, game)) {
Player opponent = game.getPlayer(playerId);
if (opponent != null) {

View file

@ -123,7 +123,7 @@ class GoblinAssassinTriggeredEffect extends OneShotEffect {
List<UUID> perms = new ArrayList<>();
Player controller = game.getPlayer(source.getControllerId());
if (controller != null) {
for (UUID playerId : controller.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null && !player.flipCoin(game)) {
TargetControlledCreaturePermanent target = new TargetControlledCreaturePermanent();

View file

@ -57,7 +57,6 @@ public class Balance extends CardImpl {
super(ownerId, 188, "Balance", Rarity.RARE, new CardType[]{CardType.SORCERY}, "{1}{W}");
this.expansionSetCode = "LEB";
// Each player chooses a number of lands he or she controls equal to the number of lands controlled by the player who controls the fewest, then sacrifices the rest. Players discard cards and sacrifice creatures the same way.
this.getSpellAbility().addEffect(new BalanceEffect());
}
@ -95,7 +94,7 @@ class BalanceEffect extends OneShotEffect {
//Lands
int minLand = Integer.MAX_VALUE;
Cards landsToSacrifice = new CardsImpl();
for (UUID playerId : controller.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
int count = game.getBattlefield().countAll(new FilterControlledLandPermanent(), player.getId(), game);
@ -104,8 +103,8 @@ class BalanceEffect extends OneShotEffect {
}
}
}
for (UUID playerId : controller.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
TargetControlledPermanent target = new TargetControlledPermanent(minLand, minLand, new FilterControlledLandPermanent("lands to keep"), true);
@ -118,7 +117,7 @@ class BalanceEffect extends OneShotEffect {
}
}
}
for (UUID cardId : landsToSacrifice) {
Permanent permanent = game.getPermanent(cardId);
if (permanent != null) {
@ -129,7 +128,7 @@ class BalanceEffect extends OneShotEffect {
//Creatures
int minCreature = Integer.MAX_VALUE;
Cards creaturesToSacrifice = new CardsImpl();
for (UUID playerId : controller.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
int count = game.getBattlefield().countAll(new FilterControlledCreaturePermanent(), player.getId(), game);
@ -139,7 +138,7 @@ class BalanceEffect extends OneShotEffect {
}
}
for (UUID playerId : controller.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
TargetControlledPermanent target = new TargetControlledPermanent(minCreature, minCreature, new FilterControlledCreaturePermanent("creatures to keep"), true);
@ -152,18 +151,18 @@ class BalanceEffect extends OneShotEffect {
}
}
}
for (UUID cardId : creaturesToSacrifice) {
Permanent permanent = game.getPermanent(cardId);
if (permanent != null) {
permanent.sacrifice(source.getSourceId(), game);
}
}
//Cards in hand
int minCard = Integer.MAX_VALUE;
HashMap<UUID, Cards> cardsToDiscard = new HashMap<>(2);
for (UUID playerId : controller.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
int count = player.getHand().size();
@ -173,7 +172,7 @@ class BalanceEffect extends OneShotEffect {
}
}
for (UUID playerId : controller.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
Cards cards = new CardsImpl();
@ -188,8 +187,8 @@ class BalanceEffect extends OneShotEffect {
}
}
}
for (UUID playerId : controller.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null && cardsToDiscard.get(playerId) != null) {
for (UUID cardId : cardsToDiscard.get(playerId)) {
@ -204,4 +203,4 @@ class BalanceEffect extends OneShotEffect {
}
return false;
}
}
}

View file

@ -97,7 +97,7 @@ class LilianaVessEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
for (UUID playerId : controller.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
Set<Card> creatureCards = new LinkedHashSet<>();

View file

@ -78,7 +78,7 @@ class VisionsOfBeyondEffect extends OneShotEffect {
public boolean apply(Game game, Ability source) {
Player sourcePlayer = game.getPlayer(source.getControllerId());
int count = 1;
for (UUID playerId: sourcePlayer.getInRange()) {
for (UUID playerId: game.getState().getPlayersInRange(sourcePlayer.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
if (player.getGraveyard().size() >= 20) {

View file

@ -82,7 +82,7 @@ class RiseOfTheDarkRealmsEffect extends OneShotEffect {
if (controller != null) {
Set<Card> creatureCards = new LinkedHashSet<>();
for (UUID playerId : controller.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
for (Card card : player.getGraveyard().getCards(game)) {

View file

@ -110,7 +110,7 @@ class JaceTheLivingGuildpactEffect extends OneShotEffect {
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
if (controller != null) {
for (UUID playerId : controller.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
for (Card card : player.getHand().getCards(game)) {

View file

@ -173,7 +173,7 @@ class MagisterOfWorthReturnFromGraveyardEffect extends OneShotEffect {
Player controller = game.getPlayer(source.getControllerId());
MageObject sourceObject = game.getObject(source.getSourceId());
if (controller != null && sourceObject != null) {
for (UUID playerId : controller.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
player.moveCards(player.getGraveyard().getCards(new FilterCreatureCard(), game), Zone.BATTLEFIELD, source, game);

View file

@ -96,7 +96,7 @@ class WaitingInTheWeedsEffect extends OneShotEffect {
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
if (controller != null) {
for (UUID playerId : controller.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
Token token = new CatToken();
int amount = game.getBattlefield().getAllActivePermanents(filter, playerId, game).size();
token.putOntoBattlefield(amount, game, source.getSourceId(), playerId);

View file

@ -87,7 +87,7 @@ class TemporalCascadeShuffleEffect extends OneShotEffect {
@java.lang.Override
public boolean apply(Game game, Ability source) {
Player sourcePlayer = game.getPlayer(source.getControllerId());
for (UUID playerId: sourcePlayer.getInRange()) {
for (UUID playerId: game.getState().getPlayersInRange(sourcePlayer.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
for (Card card: player.getHand().getCards(game)) {
@ -124,7 +124,7 @@ class TemporalCascadeDrawEffect extends OneShotEffect {
public boolean apply(Game game, Ability source) {
Player sourcePlayer = game.getPlayer(source.getControllerId());
game.getState().handleSimultaneousEvent(game); // needed here so state based triggered effects
for (UUID playerId: sourcePlayer.getInRange()) {
for (UUID playerId: game.getState().getPlayersInRange(sourcePlayer.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
player.drawCards(7, game);

View file

@ -97,7 +97,7 @@ class KnowledgePoolEffect1 extends OneShotEffect {
if (controller == null || sourceObject == null) {
return false;
}
for (UUID playerId : controller.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
player.moveCardsToExile(player.getLibrary().getTopCards(game, 3), source, game, true,

View file

@ -159,7 +159,7 @@ class MoltenDisasterEffect extends OneShotEffect {
for (Permanent permanent: game.getBattlefield().getActivePermanents(filter, source.getControllerId(), game)) {
permanent.damage(amount, source.getSourceId(), game, false, true);
}
for (UUID playerId: game.getPlayer(source.getControllerId()).getInRange()) {
for (UUID playerId: game.getState().getPlayersInRange(source.getControllerId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
player.damage(amount, source.getSourceId(), game, false, true);

View file

@ -130,7 +130,7 @@ class GravePactEffect extends OneShotEffect {
List<UUID> perms = new ArrayList<>();
Player controller = game.getPlayer(source.getControllerId());
if (controller != null) {
for (UUID playerId : controller.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null && !playerId.equals(source.getControllerId())) {
TargetControlledCreaturePermanent target = new TargetControlledCreaturePermanent();

View file

@ -92,7 +92,7 @@ class HuntedWumpusEffect extends OneShotEffect {
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
if (controller != null) {
for(UUID playerId: controller.getInRange()) {
for(UUID playerId: game.getState().getPlayersInRange(controller.getId(), game)) {
if (!playerId.equals(controller.getId())) {
Player player = game.getPlayer(playerId);
if (player != null) {

View file

@ -72,7 +72,7 @@ public class AEtherBurst extends CardImpl {
Player controller = game.getPlayer(ability.getControllerId());
int amount = 0;
if (controller != null) {
for (UUID playerId : controller.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
amount += player.getGraveyard().getCards(filter, game).size();

View file

@ -93,7 +93,7 @@ class BalancingActEffect extends OneShotEffect {
if (controller != null) {
int minPermanent = Integer.MAX_VALUE, minCard = Integer.MAX_VALUE;
// count minimal permanets
for(UUID playerId : controller.getInRange()){
for(UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)){
Player player = game.getPlayer(playerId);
if(player != null){
int count = game.getBattlefield().getActivePermanents(new FilterControlledPermanent(), player.getId(), source.getSourceId(), game).size();
@ -103,7 +103,7 @@ class BalancingActEffect extends OneShotEffect {
}
}
// sacrifice permanents over the minimum
for(UUID playerId : controller.getInRange()){
for(UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)){
Player player = game.getPlayer(playerId);
if(player != null){
TargetControlledPermanent target = new TargetControlledPermanent(minPermanent, minPermanent, new FilterControlledPermanent(), true);
@ -118,7 +118,7 @@ class BalancingActEffect extends OneShotEffect {
}
// count minimal cards in hand
for(UUID playerId : controller.getInRange()){
for(UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)){
Player player = game.getPlayer(playerId);
if(player != null){
int count = player.getHand().size();
@ -129,7 +129,7 @@ class BalancingActEffect extends OneShotEffect {
}
// discard cards over the minimum
for(UUID playerId : controller.getInRange()){
for(UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)){
Player player = game.getPlayer(playerId);
if(player != null){
TargetCardInHand target = new TargetCardInHand(minCard, new FilterCard());

View file

@ -85,7 +85,7 @@ class WordsOfWisdomEffect extends OneShotEffect {
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
if (controller != null) {
for(UUID playerId: controller.getInRange()) {
for(UUID playerId: game.getState().getPlayersInRange(controller.getId(), game)) {
if (!playerId.equals(controller.getId())) {
Player player = game.getPlayer(playerId);
if (player != null) {

View file

@ -85,7 +85,7 @@ class SoullessOneDynamicCount implements DynamicValue {
zombiesInGraveyard.add(new SubtypePredicate("Zombie"));
int count = game.getBattlefield().count(zombiesBattlefield, sourceAbility.getSourceId(), sourceAbility.getControllerId(), game);
for (UUID playerId : game.getPlayer(sourceAbility.getControllerId()).getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(sourceAbility.getControllerId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
count += player.getGraveyard().count(zombiesInGraveyard, game);

View file

@ -94,7 +94,7 @@ class WeirdHarvestEffect extends OneShotEffect {
if (xValue > 0) {
List<Player> usingPlayers = new ArrayList<>();
this.chooseAndSearchLibrary(usingPlayers, controller, xValue, source, sourceObject, game);
for (UUID playerId : controller.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
if (!playerId.equals(controller.getId())) {
Player player = game.getPlayer(playerId);
if (player != null) {

View file

@ -137,7 +137,7 @@ class NonBasicLandsInOpponentsGraveyards implements DynamicValue {
int amount = 0;
Player controller = game.getPlayer(sourceAbility.getControllerId());
if (controller != null) {
for (UUID playerUUID : controller.getInRange()) {
for (UUID playerUUID : game.getState().getPlayersInRange(controller.getId(), game)) {
if (controller.hasOpponent(playerUUID, game)) {
Player player = game.getPlayer(playerUUID);
if (player != null) {

View file

@ -129,7 +129,7 @@ class RoilingHorrorDynamicValue implements DynamicValue {
int opponentsMostLife = Integer.MIN_VALUE;
Player controller = game.getPlayer(sourceAbility.getControllerId());
if (controller != null) {
for (UUID playerUUID : controller.getInRange()) {
for (UUID playerUUID : game.getState().getPlayersInRange(controller.getId(), game)) {
if (controller.hasOpponent(playerUUID, game)) {
Player opponent = game.getPlayer(playerUUID);
if (opponent != null && opponent.getLife() > opponentsMostLife) {

View file

@ -95,7 +95,7 @@ class ShivanWumpusEffect extends PutOnLibrarySourceEffect {
Player controller = game.getPlayer(source.getControllerId());
if (controller != null) {
boolean costPaid = false;
for (UUID playerId : controller.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
Cost cost = new SacrificeTargetCost(new TargetControlledPermanent(new FilterControlledLandPermanent()));
Player player = game.getPlayer(playerId);
if (player != null

View file

@ -77,7 +77,7 @@ class MnemonicNexusEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
Player sourcePlayer = game.getPlayer(source.getControllerId());
for (UUID playerId: sourcePlayer.getInRange()) {
for (UUID playerId: game.getState().getPlayersInRange(sourcePlayer.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
for (Card card: player.getGraveyard().getCards(game)) {

View file

@ -138,7 +138,7 @@ class SavraSacrificeEffect extends OneShotEffect {
List<UUID> perms = new ArrayList<>();
Player controller = game.getPlayer(source.getControllerId());
if (controller != null) {
for (UUID playerId : controller.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null && !playerId.equals(source.getControllerId())) {
TargetControlledCreaturePermanent target = new TargetControlledCreaturePermanent();

View file

@ -297,7 +297,7 @@ class JaceArchitectOfThoughtEffect3 extends OneShotEffect {
if (controller == null || sourcePermanent == null) {
return false;
}
for (UUID playerId : controller.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
String playerName = new StringBuilder(player.getLogName()).append("'s").toString();
if (source.getControllerId().equals(player.getId())) {

View file

@ -79,7 +79,7 @@ public class SkullRend extends CardImpl {
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
if (controller != null) {
for (UUID playerId: controller.getInRange()) {
for (UUID playerId: game.getState().getPlayersInRange(controller.getId(), game)) {
if (playerId != source.getControllerId()) {
Player opponent = game.getPlayer(playerId);
if (opponent != null) {

View file

@ -109,7 +109,7 @@ class SokenzanRenegadeEffect extends OneShotEffect {
if (controller != null && sourcePermanent != null) {
int max = Integer.MIN_VALUE;
Player newController = null;
for(UUID playerId : controller.getInRange()) {
for(UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
if (player.getLife() > max) {
@ -146,7 +146,7 @@ class OnePlayerHasTheMostCards implements Condition {
if (controller != null) {
int max = Integer.MIN_VALUE;
boolean onlyOnePlayer = false;
for(UUID playerId : controller.getInRange()) {
for(UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
if (player.getLife() > max) {

View file

@ -96,7 +96,7 @@ class ThoughtsOfRuinEffect extends OneShotEffect {
if (amount > 0) {
List<Permanent> permanentsToSacrifice = new ArrayList<Permanent>();
// select all lands to sacrifice
for (UUID playerId : controller.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
int lands = game.getState().getBattlefield().countAll(filter, playerId, game);

View file

@ -86,7 +86,7 @@ class NaturesResurgenceEffect extends OneShotEffect {
public boolean apply(Game game, Ability source) {
Player sourcePlayer = game.getPlayer(source.getControllerId());
if (sourcePlayer != null) {
for (UUID playerId : sourcePlayer.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(sourcePlayer.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
int amount = player.getGraveyard().count(filter, game);

View file

@ -102,7 +102,7 @@ class AdviceFromTheFaeEffect extends OneShotEffect {
}
controller.lookAtCards(mageObject.getIdName(), cardsFromLibrary, game);
int max = 0;
for (UUID playerId : controller.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
FilterCreaturePermanent filter = new FilterCreaturePermanent();
filter.add(new ControllerIdPredicate(playerId));
if (playerId != controller.getId()) {

View file

@ -119,7 +119,7 @@ class PaintersServantEffect extends ContinuousEffectImpl {
}
}
for (UUID playerId : controller.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
// Hand

View file

@ -103,7 +103,7 @@ class PlagueOfVerminEffect extends OneShotEffect {
if (firstInactivePlayer == null) {
firstInactivePlayer = currentPlayer.getId();
}
if (currentPlayer != null && currentPlayer.canRespond() && controller.getInRange().contains(currentPlayer.getId())) {
if (currentPlayer != null && currentPlayer.canRespond() && game.getState().getPlayersInRange(controller.getId(), game).contains(currentPlayer.getId())) {
currentLifePaid = 0;
totalPaidLife = 0;
if (currentPlayer.chooseUse(Outcome.AIDontUseIt, "Pay life?", source, game)) {

View file

@ -95,7 +95,7 @@ class SphinxSovereignEffect extends OneShotEffect {
if (!permanent.isTapped()) {
controller.gainLife(3, game);
} else {
for (UUID opponentId : controller.getInRange()) {
for (UUID opponentId : game.getState().getPlayersInRange(controller.getId(), game)) {
if (controller.hasOpponent(opponentId, game)) {
Player opponent = game.getPlayer(opponentId);
if (opponent != null) {

View file

@ -101,7 +101,7 @@ class DreamHallsEffect extends ContinuousEffectImpl {
public boolean apply(Layer layer, SubLayer sublayer, Ability source, Game game) {
Player controller = game.getPlayer(source.getControllerId());
if (controller != null) {
for (UUID playerId : controller.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
player.getAlternativeSourceCosts().add(alternativeCastingCostAbility);

View file

@ -123,7 +123,7 @@ class AlurenRuleEffect extends ContinuousEffectImpl {
public boolean apply(Layer layer, SubLayer sublayer, Ability source, Game game) {
Player controller = game.getPlayer(source.getControllerId());
if (controller != null) {
for (UUID playerId: controller.getInRange()){
for (UUID playerId: game.getState().getPlayersInRange(controller.getId(), game)){
Player player = game.getPlayer(playerId);
if (player != null) {
player.getAlternativeSourceCosts().add(alternativeCastingCostAbility);

View file

@ -90,7 +90,7 @@ class UpwellingRuleEffect extends ContinuousEffectImpl {
public boolean apply(Layer layer, SubLayer sublayer, Ability source, Game game) {
Player controller = game.getPlayer(source.getControllerId());
if (controller != null) {
for (UUID playerId: controller.getInRange()) {
for (UUID playerId: game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null){
ManaPool pool = player.getManaPool();

View file

@ -111,7 +111,7 @@ class PyxisOfPandemoniumExileEffect extends OneShotEffect {
game.getState().setValue(valueKey, exileIds);
}
for (UUID playerId : controller.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {

View file

@ -111,7 +111,7 @@ class HypergenesisEffect extends OneShotEffect {
Target target = new TargetCardInHand(filter);
while (controller.canRespond()) {
if (currentPlayer != null && currentPlayer.canRespond() && controller.getInRange().contains(currentPlayer.getId())) {
if (currentPlayer != null && currentPlayer.canRespond() && game.getState().getPlayersInRange(controller.getId(), game).contains(currentPlayer.getId())) {
if (firstInactivePlayer == null) {
firstInactivePlayer = currentPlayer.getId();
}

View file

@ -102,7 +102,7 @@ class RestoreBalanceEffect extends OneShotEffect {
//Lands
int minLand = Integer.MAX_VALUE;
Cards landsToSacrifice = new CardsImpl();
for (UUID playerId : controller.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
int count = game.getBattlefield().countAll(new FilterControlledLandPermanent(), player.getId(), game);
@ -112,7 +112,7 @@ class RestoreBalanceEffect extends OneShotEffect {
}
}
for (UUID playerId : controller.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
TargetControlledPermanent target = new TargetControlledPermanent(minLand, minLand, new FilterControlledLandPermanent(), true);
@ -136,7 +136,7 @@ class RestoreBalanceEffect extends OneShotEffect {
//Creatures
int minCreature = Integer.MAX_VALUE;
Cards creaturesToSacrifice = new CardsImpl();
for (UUID playerId : controller.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
int count = game.getBattlefield().countAll(new FilterControlledCreaturePermanent(), player.getId(), game);
@ -146,7 +146,7 @@ class RestoreBalanceEffect extends OneShotEffect {
}
}
for (UUID playerId : controller.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
TargetControlledPermanent target = new TargetControlledPermanent(minCreature, minCreature, new FilterControlledCreaturePermanent(), true);
@ -170,7 +170,7 @@ class RestoreBalanceEffect extends OneShotEffect {
//Cards in hand
int minCard = Integer.MAX_VALUE;
HashMap<UUID, Cards> cardsToDiscard = new HashMap<>(2);
for (UUID playerId : controller.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
int count = player.getHand().size();
@ -180,7 +180,7 @@ class RestoreBalanceEffect extends OneShotEffect {
}
}
for (UUID playerId : controller.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
Cards cards = new CardsImpl();
@ -196,7 +196,7 @@ class RestoreBalanceEffect extends OneShotEffect {
}
}
for (UUID playerId : controller.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null && cardsToDiscard.get(playerId) != null) {
for (UUID cardId : cardsToDiscard.get(playerId)) {

View file

@ -91,7 +91,7 @@ class UrborgSyphonMageEffect extends OneShotEffect {
int damage = 0;
Player controller = game.getPlayer(source.getControllerId());
if (controller != null) {
for (UUID playerId : controller.getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
if (playerId != source.getControllerId()) {
Player player = game.getPlayer(playerId);
if (player != null) {

View file

@ -97,7 +97,7 @@ class MemoryJarEffect extends OneShotEffect {
{
Cards cards = new CardsImpl();
//Exile hand
for (UUID playerId: game.getPlayer(source.getControllerId()).getInRange()) {
for (UUID playerId: game.getState().getPlayersInRange(source.getControllerId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null)
{
@ -114,7 +114,7 @@ class MemoryJarEffect extends OneShotEffect {
}
}
//Draw 7 cards
for (UUID playerId: game.getPlayer(source.getControllerId()).getInRange()) {
for (UUID playerId: game.getState().getPlayersInRange(source.getControllerId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null)
{
@ -162,7 +162,7 @@ class MemoryJarDelayedEffect extends OneShotEffect {
if(cards != null)
{
//Discard
for (UUID playerId: game.getPlayer(source.getControllerId()).getInRange()) {
for (UUID playerId: game.getState().getPlayersInRange(source.getControllerId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null)
{

View file

@ -80,7 +80,7 @@ class AcidicSoilEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
List<Permanent> permanents = game.getBattlefield().getActivePermanents(new FilterLandPermanent(), source.getControllerId(), source.getSourceId(), game);
for (UUID playerId : game.getPlayer(source.getControllerId()).getInRange()) {
for (UUID playerId : game.getState().getPlayersInRange(source.getControllerId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
int amount = 0;

Some files were not shown because too many files have changed in this diff Show more