mirror of
https://github.com/magefree/mage.git
synced 2026-01-24 12:19:59 -08:00
Fixed some problems with possible ConcurrentModificationExceptions and some minor changes.
This commit is contained in:
parent
d97f6c6cd1
commit
81af372bc1
144 changed files with 410 additions and 429 deletions
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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)) {
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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()));
|
||||
|
|
|
|||
|
|
@ -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)) {
|
||||
|
|
|
|||
|
|
@ -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>());
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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)) {
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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)) {
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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++;
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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)) {
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)) {
|
||||
|
|
|
|||
|
|
@ -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)) {
|
||||
|
|
|
|||
|
|
@ -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)) {
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<>();
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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)) {
|
||||
|
|
|
|||
|
|
@ -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)) {
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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)) {
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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())) {
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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()) {
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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)) {
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)) {
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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
Loading…
Add table
Add a link
Reference in a new issue