diff --git a/Mage.Common/src/mage/view/CardView.java b/Mage.Common/src/mage/view/CardView.java index ca3b6c48eed..18ef48839e9 100644 --- a/Mage.Common/src/mage/view/CardView.java +++ b/Mage.Common/src/mage/view/CardView.java @@ -246,14 +246,14 @@ public class CardView extends SimpleCardView { if (card instanceof Permanent) { this.mageObjectType = MageObjectType.PERMANENT; Permanent permanent = (Permanent) card; - this.loyalty = Integer.toString(permanent.getCounters().getCount(CounterType.LOYALTY)); + this.loyalty = Integer.toString(permanent.getCounters(game).getCount(CounterType.LOYALTY)); this.pairedCard = permanent.getPairedCard() != null ? permanent.getPairedCard().getSourceId() : null; if (!permanent.getControllerId().equals(permanent.getOwnerId())) { controlledByOwner = false; } - if (game != null && permanent.getCounters() != null && !permanent.getCounters().isEmpty()) { + if (game != null && permanent.getCounters(game) != null && !permanent.getCounters(game).isEmpty()) { counters = new ArrayList<>(); - for (Counter counter : permanent.getCounters().values()) { + for (Counter counter : permanent.getCounters(game).values()) { counters.add(new CounterView(counter)); } } @@ -348,7 +348,7 @@ public class CardView extends SimpleCardView { this.mageObjectType = MageObjectType.PERMANENT; this.power = Integer.toString(object.getPower().getValue()); this.toughness = Integer.toString(object.getToughness().getValue()); - this.loyalty = Integer.toString(((Permanent) object).getCounters().getCount(CounterType.LOYALTY)); + this.loyalty = Integer.toString(((Permanent) object).getCounters((Game)null).getCount(CounterType.LOYALTY)); } else { this.power = object.getPower().toString(); this.toughness = object.getToughness().toString(); diff --git a/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ma/ArtificialScoringSystem.java b/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ma/ArtificialScoringSystem.java index 9b0c0171975..2e3d0d8ccca 100644 --- a/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ma/ArtificialScoringSystem.java +++ b/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ma/ArtificialScoringSystem.java @@ -64,8 +64,8 @@ public class ArtificialScoringSystem { public static int getVariablePermanentScore(final Game game, final Permanent permanent) { - int score = permanent.getCounters().getCount(CounterType.CHARGE) * 30; - score += permanent.getCounters().getCount(CounterType.LEVEL) * 30; + int score = permanent.getCounters(game).getCount(CounterType.CHARGE) * 30; + score += permanent.getCounters(game).getCount(CounterType.LEVEL) * 30; score -= permanent.getDamage() * 2; if (!canTap(permanent)) { score += getTappedScore(permanent); diff --git a/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ma/optimizers/impl/LevelUpOptimizer.java b/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ma/optimizers/impl/LevelUpOptimizer.java index 9cfe9a10782..c3c8934fa1e 100644 --- a/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ma/optimizers/impl/LevelUpOptimizer.java +++ b/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ma/optimizers/impl/LevelUpOptimizer.java @@ -30,7 +30,7 @@ public class LevelUpOptimizer extends BaseTreeOptimizer { if (permanent != null && permanent instanceof PermanentCard) { PermanentCard leveler = (PermanentCard) permanent; // check already existing Level counters and compare to maximum that make sense - if (permanent.getCounters().getCount(CounterType.LEVEL) >= leveler.getMaxLevelCounters()) { + if (permanent.getCounters(game).getCount(CounterType.LEVEL) >= leveler.getMaxLevelCounters()) { removeAbility(ability); } } diff --git a/Mage.Server.Plugins/Mage.Player.AI/src/main/java/mage/player/ai/simulators/CombatSimulator.java b/Mage.Server.Plugins/Mage.Player.AI/src/main/java/mage/player/ai/simulators/CombatSimulator.java index 00e7e3102d3..d2eb5ffdf94 100644 --- a/Mage.Server.Plugins/Mage.Player.AI/src/main/java/mage/player/ai/simulators/CombatSimulator.java +++ b/Mage.Server.Plugins/Mage.Player.AI/src/main/java/mage/player/ai/simulators/CombatSimulator.java @@ -68,7 +68,7 @@ public class CombatSimulator implements Serializable { } else { Permanent permanent = game.getPermanent(defenderId); - simCombat.planeswalkerLoyalty.put(defenderId, permanent.getCounters().getCount(CounterType.LOYALTY)); + simCombat.planeswalkerLoyalty.put(defenderId, permanent.getCounters(game).getCount(CounterType.LOYALTY)); } } return simCombat; diff --git a/Mage.Server.Plugins/Mage.Player.AIMinimax/src/mage/player/ai/GameStateEvaluator.java b/Mage.Server.Plugins/Mage.Player.AIMinimax/src/mage/player/ai/GameStateEvaluator.java index 16e131031eb..4887da0e61d 100644 --- a/Mage.Server.Plugins/Mage.Player.AIMinimax/src/mage/player/ai/GameStateEvaluator.java +++ b/Mage.Server.Plugins/Mage.Player.AIMinimax/src/mage/player/ai/GameStateEvaluator.java @@ -111,7 +111,7 @@ public class GameStateEvaluator { if (!(ability instanceof ManaAbility) && ability.canActivate(ability.getControllerId(), game)) value += ability.getEffects().size(); } - for (Counter counter: permanent.getCounters().values()) { + for (Counter counter: permanent.getCounters(game).values()) { if (!(counter instanceof BoostCounter)) { value += counter.getCount(); } diff --git a/Mage.Sets/src/mage/sets/alarareborn/AvenMimeomancer.java b/Mage.Sets/src/mage/sets/alarareborn/AvenMimeomancer.java index bed26c61364..31274e79240 100644 --- a/Mage.Sets/src/mage/sets/alarareborn/AvenMimeomancer.java +++ b/Mage.Sets/src/mage/sets/alarareborn/AvenMimeomancer.java @@ -116,7 +116,7 @@ class AvenEffect extends ContinuousEffectImpl { @Override public boolean isInactive(Ability source, Game game) { Permanent creature = game.getPermanent(this.targetPointer.getFirst(game, source)); - if (creature != null && creature.getCounters().getCount(CounterType.FEATHER) < 1) { + if (creature != null && creature.getCounters(game).getCount(CounterType.FEATHER) < 1) { return true; } return false; @@ -160,7 +160,7 @@ class AvenEffect2 extends ContinuousEffectImpl { @Override public boolean isInactive(Ability source, Game game) { Permanent creature = game.getPermanent(this.targetPointer.getFirst(game, source)); - if (creature != null && creature.getCounters().getCount(CounterType.FEATHER) < 1) { + if (creature != null && creature.getCounters(game).getCount(CounterType.FEATHER) < 1) { return true; } return false; diff --git a/Mage.Sets/src/mage/sets/archenemy/MakeshiftMannequin.java b/Mage.Sets/src/mage/sets/archenemy/MakeshiftMannequin.java index cf248de7b5d..c3bd077fa03 100644 --- a/Mage.Sets/src/mage/sets/archenemy/MakeshiftMannequin.java +++ b/Mage.Sets/src/mage/sets/archenemy/MakeshiftMannequin.java @@ -141,7 +141,7 @@ class MakeshiftMannequinGainAbilityEffect extends ContinuousEffectImpl { @Override public boolean isInactive(Ability source, Game game) { Permanent permanent = game.getPermanent(this.getTargetPointer().getFirst(game, source)); - return permanent == null || permanent.getCounters().getCount(CounterType.MANNEQUIN) < 1; + return permanent == null || permanent.getCounters(game).getCount(CounterType.MANNEQUIN) < 1; } @Override diff --git a/Mage.Sets/src/mage/sets/avacynrestored/DescentIntoMadness.java b/Mage.Sets/src/mage/sets/avacynrestored/DescentIntoMadness.java index 25472b037ab..0bea2d7ccc6 100644 --- a/Mage.Sets/src/mage/sets/avacynrestored/DescentIntoMadness.java +++ b/Mage.Sets/src/mage/sets/avacynrestored/DescentIntoMadness.java @@ -117,7 +117,7 @@ class DescentIntoMadnessEffect extends OneShotEffect { sourcePermanent = (Permanent) game.getLastKnownInformation(source.getSourceId(), Zone.BATTLEFIELD); } if (sourcePermanent != null && controller != null) { - int count = sourcePermanent.getCounters().getCount(CounterType.DESPAIR); + int count = sourcePermanent.getCounters(game).getCount(CounterType.DESPAIR); if (count > 0) { // select the permanents and hand cards in turn order LinkedList selectedObjects = new LinkedList<>(); diff --git a/Mage.Sets/src/mage/sets/avacynrestored/HeraldOfWar.java b/Mage.Sets/src/mage/sets/avacynrestored/HeraldOfWar.java index ac3bc380356..9e73eb62c4c 100644 --- a/Mage.Sets/src/mage/sets/avacynrestored/HeraldOfWar.java +++ b/Mage.Sets/src/mage/sets/avacynrestored/HeraldOfWar.java @@ -94,7 +94,7 @@ class HeraldOfWarCostReductionEffect extends CostModificationEffectImpl { SpellAbility spellAbility = (SpellAbility) abilityToModify; Permanent sourcePermanent = game.getPermanent(source.getSourceId()); if (sourcePermanent != null) { - int amount = sourcePermanent.getCounters().getCount(CounterType.P1P1); + int amount = sourcePermanent.getCounters(game).getCount(CounterType.P1P1); if (amount > 0) { CardUtil.adjustCost(spellAbility, amount); return true; diff --git a/Mage.Sets/src/mage/sets/avacynrestored/OtherworldAtlas.java b/Mage.Sets/src/mage/sets/avacynrestored/OtherworldAtlas.java index 43594a8956f..ed7791b301c 100644 --- a/Mage.Sets/src/mage/sets/avacynrestored/OtherworldAtlas.java +++ b/Mage.Sets/src/mage/sets/avacynrestored/OtherworldAtlas.java @@ -91,7 +91,7 @@ class OtherworldAtlasDrawEffect extends OneShotEffect { Player sourcePlayer = game.getPlayer(source.getControllerId()); Permanent permanent = game.getPermanent(source.getSourceId()); if (permanent != null) { - int amount = permanent.getCounters().getCount(CounterType.CHARGE); + int amount = permanent.getCounters(game).getCount(CounterType.CHARGE); if (amount > 0) { for (UUID playerId : game.getState().getPlayersInRange(sourcePlayer.getId(), game)) { Player player = game.getPlayer(playerId); diff --git a/Mage.Sets/src/mage/sets/battleforzendikar/UndergrowthChampion.java b/Mage.Sets/src/mage/sets/battleforzendikar/UndergrowthChampion.java index 504b6eec6a6..245efb96da5 100644 --- a/Mage.Sets/src/mage/sets/battleforzendikar/UndergrowthChampion.java +++ b/Mage.Sets/src/mage/sets/battleforzendikar/UndergrowthChampion.java @@ -119,7 +119,7 @@ class UndergrowthChampionPreventionEffect extends PreventionEffectImpl { } } - if(removeCounter && permanent.getCounters().containsKey(CounterType.P1P1)) { + if(removeCounter && permanent.getCounters(game).containsKey(CounterType.P1P1)) { preventDamageAction(event, source, game); StringBuilder sb = new StringBuilder(permanent.getName()).append(": "); permanent.removeCounters(CounterType.P1P1.createInstance(), game); diff --git a/Mage.Sets/src/mage/sets/bornofthegods/AstralCornucopia.java b/Mage.Sets/src/mage/sets/bornofthegods/AstralCornucopia.java index 2df81d93576..5b920493608 100644 --- a/Mage.Sets/src/mage/sets/bornofthegods/AstralCornucopia.java +++ b/Mage.Sets/src/mage/sets/bornofthegods/AstralCornucopia.java @@ -93,7 +93,7 @@ class AstralCornucopiaManaAbility extends ManaAbility { netMana.clear(); Permanent sourcePermanent = game.getPermanent(getSourceId()); if (sourcePermanent != null) { - int counters = sourcePermanent.getCounters().getCount(CounterType.CHARGE.getName()); + int counters = sourcePermanent.getCounters(game).getCount(CounterType.CHARGE.getName()); if (counters > 0) { netMana.add(new Mana(0, 0, 0, 0, 0, 0, counters, 0)); } @@ -132,7 +132,7 @@ class AstralCornucopiaManaEffect extends ManaEffect { Permanent sourcePermanent = game.getPermanent(source.getSourceId()); if (choice.getChoice() != null) { String color = choice.getChoice(); - int counters = sourcePermanent.getCounters().getCount(CounterType.CHARGE.getName()); + int counters = sourcePermanent.getCounters(game).getCount(CounterType.CHARGE.getName()); switch (color) { case "Red": computedMana.setRed(counters); diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/Hankyu.java b/Mage.Sets/src/mage/sets/championsofkamigawa/Hankyu.java index cc32185da8d..d5d1e79f894 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/Hankyu.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/Hankyu.java @@ -188,7 +188,7 @@ class HankyuCountersSourceCost extends CostImpl { public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana, Cost costToPay) { Permanent equipment = game.getPermanent(this.effectGivingEquipmentId); if (equipment != null ) { - this.removedCounters = equipment.getCounters().getCount(CounterType.AIM); + this.removedCounters = equipment.getCounters(game).getCount(CounterType.AIM); if (this.removedCounters > 0) { equipment.removeCounters("aim", this.removedCounters, game); } diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/PiousKitsune.java b/Mage.Sets/src/mage/sets/championsofkamigawa/PiousKitsune.java index d7a17269b4e..7422587a91a 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/PiousKitsune.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/PiousKitsune.java @@ -112,7 +112,7 @@ class PiousKitsuneEffect extends OneShotEffect { if (game.getBattlefield().count(filter, source.getSourceId(), source.getControllerId(), game) > 0) { Permanent permanent = game.getPermanent(source.getSourceId()); if (permanent != null) { - int life = permanent.getCounters().getCount(CounterType.DEVOTION); + int life = permanent.getCounters(game).getCount(CounterType.DEVOTION); if (life > 0) { Player controller = game.getPlayer(source.getControllerId()); if (controller != null) { diff --git a/Mage.Sets/src/mage/sets/coldsnap/DarkDepths.java b/Mage.Sets/src/mage/sets/coldsnap/DarkDepths.java index 108f81524bf..f7d83f64094 100644 --- a/Mage.Sets/src/mage/sets/coldsnap/DarkDepths.java +++ b/Mage.Sets/src/mage/sets/coldsnap/DarkDepths.java @@ -131,7 +131,7 @@ class DarkDepthsAbility extends StateTriggeredAbility { @Override public boolean checkTrigger(GameEvent event, Game game) { Permanent permanent = game.getPermanent(getSourceId()); - return permanent != null && permanent.getCounters().getCount(CounterType.ICE) == 0; + return permanent != null && permanent.getCounters(game).getCount(CounterType.ICE) == 0; } @Override diff --git a/Mage.Sets/src/mage/sets/coldsnap/HibernationsEnd.java b/Mage.Sets/src/mage/sets/coldsnap/HibernationsEnd.java index 09d46b4974c..a4f224f38dd 100644 --- a/Mage.Sets/src/mage/sets/coldsnap/HibernationsEnd.java +++ b/Mage.Sets/src/mage/sets/coldsnap/HibernationsEnd.java @@ -128,7 +128,7 @@ class HibernationsEndEffect extends OneShotEffect { Player player = game.getPlayer(source.getControllerId()); Permanent sourcePermanent = game.getPermanentOrLKIBattlefield(source.getSourceId()); if (sourcePermanent != null && player != null) { - int newConvertedCost = sourcePermanent.getCounters().getCount("age"); + int newConvertedCost = sourcePermanent.getCounters(game).getCount("age"); FilterCard filter = new FilterCard("creature card with converted mana cost " + newConvertedCost); filter.add(new ConvertedManaCostPredicate(Filter.ComparisonType.Equal, newConvertedCost)); filter.add(new CardTypePredicate(CardType.CREATURE)); diff --git a/Mage.Sets/src/mage/sets/commander/AnimarSoulOfElements.java b/Mage.Sets/src/mage/sets/commander/AnimarSoulOfElements.java index e8c9e26074a..325e0302243 100644 --- a/Mage.Sets/src/mage/sets/commander/AnimarSoulOfElements.java +++ b/Mage.Sets/src/mage/sets/commander/AnimarSoulOfElements.java @@ -117,7 +117,7 @@ class AnimarCostReductionEffect extends CostModificationEffectImpl { Ability spellAbility = (SpellAbility) abilityToModify; Permanent sourcePermanent = game.getPermanent(source.getSourceId()); if (sourcePermanent != null && spellAbility != null) { - int amount = sourcePermanent.getCounters().getCount(CounterType.P1P1); + int amount = sourcePermanent.getCounters(game).getCount(CounterType.P1P1); if (amount > 0) { CardUtil.reduceCost(spellAbility, amount); return true; diff --git a/Mage.Sets/src/mage/sets/commander/VishKalBloodArbiter.java b/Mage.Sets/src/mage/sets/commander/VishKalBloodArbiter.java index 9594ad1d90d..55662f63eee 100644 --- a/Mage.Sets/src/mage/sets/commander/VishKalBloodArbiter.java +++ b/Mage.Sets/src/mage/sets/commander/VishKalBloodArbiter.java @@ -123,7 +123,7 @@ class VishKalBloodArbiterCost extends CostImpl { public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana, Cost costToPay) { Permanent permanent = game.getPermanent(sourceId); if (permanent != null) { - this.amount = permanent.getCounters().getCount(name); + this.amount = permanent.getCounters(game).getCount(name); permanent.removeCounters(name, amount, game); this.paid = true; } diff --git a/Mage.Sets/src/mage/sets/commander2013/MarathWillOfTheWild.java b/Mage.Sets/src/mage/sets/commander2013/MarathWillOfTheWild.java index f56934af526..f3976e03af5 100644 --- a/Mage.Sets/src/mage/sets/commander2013/MarathWillOfTheWild.java +++ b/Mage.Sets/src/mage/sets/commander2013/MarathWillOfTheWild.java @@ -112,7 +112,7 @@ public class MarathWillOfTheWild extends CardImpl { if (ability instanceof SimpleActivatedAbility && ability.getModes().size() == 3) { Permanent sourcePermanent = game.getPermanent(ability.getSourceId()); if (sourcePermanent != null) { - int amount = sourcePermanent.getCounters().getCount(CounterType.P1P1); + int amount = sourcePermanent.getCounters(game).getCount(CounterType.P1P1); if (amount > 0) { for (VariableCost cost: ability.getManaCostsToPay().getVariableCosts()) { if (cost instanceof VariableManaCost) { @@ -192,7 +192,7 @@ class MarathWillOfTheWildRemoveCountersCost extends CostImpl { @Override public boolean canPay(Ability ability, UUID sourceId, UUID controllerId, Game game) { Permanent permanent = game.getPermanent(sourceId); - if (permanent != null && permanent.getCounters().getCount(CounterType.P1P1) > 0) { + if (permanent != null && permanent.getCounters(game).getCount(CounterType.P1P1) > 0) { return true; } return false; @@ -202,7 +202,7 @@ class MarathWillOfTheWildRemoveCountersCost extends CostImpl { public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana, Cost costToPay) { int amount = new ManacostVariableValue().calculate(game, ability, null); Permanent permanent = game.getPermanent(sourceId); - if (permanent != null && permanent.getCounters().getCount(CounterType.P1P1) >= amount) { + if (permanent != null && permanent.getCounters(game).getCount(CounterType.P1P1) >= amount) { permanent.removeCounters(CounterType.P1P1.getName(), amount, game); this.paid = true; } diff --git a/Mage.Sets/src/mage/sets/commander2013/PhantomNantuko.java b/Mage.Sets/src/mage/sets/commander2013/PhantomNantuko.java index 9f2d2f37d82..3c5de1ded54 100644 --- a/Mage.Sets/src/mage/sets/commander2013/PhantomNantuko.java +++ b/Mage.Sets/src/mage/sets/commander2013/PhantomNantuko.java @@ -129,7 +129,7 @@ class PhantomNantukoPreventionEffect extends PreventionEffectImpl { } } - if(removeCounter && permanent.getCounters().containsKey(CounterType.P1P1)) { + if(removeCounter && permanent.getCounters(game).containsKey(CounterType.P1P1)) { StringBuilder sb = new StringBuilder(permanent.getName()).append(": "); permanent.removeCounters(CounterType.P1P1.createInstance(), game); sb.append("Removed a +1/+1 counter "); diff --git a/Mage.Sets/src/mage/sets/commander2013/PlagueBoiler.java b/Mage.Sets/src/mage/sets/commander2013/PlagueBoiler.java index e29d0cf668c..61e86c34cd3 100644 --- a/Mage.Sets/src/mage/sets/commander2013/PlagueBoiler.java +++ b/Mage.Sets/src/mage/sets/commander2013/PlagueBoiler.java @@ -101,7 +101,7 @@ class PlagueBoilerEffect extends OneShotEffect { Player controller = game.getPlayer(source.getControllerId()); Permanent sourcePermanent = game.getPermanent(source.getSourceId()); if (controller != null && sourcePermanent != null) { - if (!sourcePermanent.getCounters().containsKey(CounterType.PLAGUE) || controller.chooseUse(outcome, "Put a plague counter on? (No removes one)", source, game)) { + if (!sourcePermanent.getCounters(game).containsKey(CounterType.PLAGUE) || controller.chooseUse(outcome, "Put a plague counter on? (No removes one)", source, game)) { return new AddCountersSourceEffect(CounterType.PLAGUE.createInstance(), true).apply(game, source); } else { return new RemoveCounterSourceEffect(CounterType.PLAGUE.createInstance()).apply(game, source); @@ -135,7 +135,7 @@ class PlagueBoilerTriggeredAbility extends TriggeredAbilityImpl { public boolean checkTrigger(GameEvent event, Game game) { if (event.getTargetId().equals(this.getSourceId()) && event.getData().equals(CounterType.PLAGUE.getName())) { Permanent sourcePermanent = game.getPermanent(this.getSourceId()); - if (sourcePermanent != null && sourcePermanent.getCounters().getCount(CounterType.PLAGUE) >= 3) { + if (sourcePermanent != null && sourcePermanent.getCounters(game).getCount(CounterType.PLAGUE) >= 3) { return true; } } diff --git a/Mage.Sets/src/mage/sets/commander2014/AEtherSnap.java b/Mage.Sets/src/mage/sets/commander2014/AEtherSnap.java index 922537d4314..7cae9c21f57 100644 --- a/Mage.Sets/src/mage/sets/commander2014/AEtherSnap.java +++ b/Mage.Sets/src/mage/sets/commander2014/AEtherSnap.java @@ -90,8 +90,8 @@ class AEtherSnapEffect extends OneShotEffect { for (Permanent permanent : game.getBattlefield().getActivePermanents(new FilterPermanent(), controller.getId(), source.getSourceId(), game)) { if (permanent instanceof PermanentToken) { controller.moveCardToExileWithInfo(permanent, null, "", source.getSourceId(), game, Zone.BATTLEFIELD, true); - } else if (!permanent.getCounters().isEmpty()) { - Counters counters = permanent.getCounters().copy(); + } else if (!permanent.getCounters(game).isEmpty()) { + Counters counters = permanent.getCounters(game).copy(); for (Counter counter : counters.values()) { permanent.removeCounters(counter, game); } diff --git a/Mage.Sets/src/mage/sets/commander2015/BloodsporeThrinax.java b/Mage.Sets/src/mage/sets/commander2015/BloodsporeThrinax.java index 5a5d699db54..7c8a0d49226 100644 --- a/Mage.Sets/src/mage/sets/commander2015/BloodsporeThrinax.java +++ b/Mage.Sets/src/mage/sets/commander2015/BloodsporeThrinax.java @@ -106,7 +106,7 @@ class BloodsporeThrinaxEntersBattlefieldEffect extends ReplacementEffectImpl { Permanent sourceCreature = game.getPermanent(source.getSourceId()); Permanent creature = ((EntersTheBattlefieldEvent) event).getTarget(); if (sourceCreature != null && creature != null) { - int amount = sourceCreature.getCounters().getCount(CounterType.P1P1); + int amount = sourceCreature.getCounters(game).getCount(CounterType.P1P1); if (amount > 0) { creature.addCounters(CounterType.P1P1.createInstance(amount), game); } diff --git a/Mage.Sets/src/mage/sets/commander2015/ThiefOfBlood.java b/Mage.Sets/src/mage/sets/commander2015/ThiefOfBlood.java index 1d680880263..ac0ff03b420 100644 --- a/Mage.Sets/src/mage/sets/commander2015/ThiefOfBlood.java +++ b/Mage.Sets/src/mage/sets/commander2015/ThiefOfBlood.java @@ -101,7 +101,7 @@ class ThiefOfBloodEffect extends OneShotEffect { public boolean apply(Game game, Ability source) { int countersRemoved = 0; for (Permanent permanent : game.getBattlefield().getActivePermanents(filter, source.getControllerId(), game)) { - Counters counters = permanent.getCounters().copy(); + Counters counters = permanent.getCounters(game).copy(); for (Counter counter : counters.values()) { permanent.removeCounters(counter.getName(), counter.getCount(), game); countersRemoved += counter.getCount(); diff --git a/Mage.Sets/src/mage/sets/conflux/GwafaHazidProfiteer.java b/Mage.Sets/src/mage/sets/conflux/GwafaHazidProfiteer.java index 938bdf266ad..ff96e311e0c 100644 --- a/Mage.Sets/src/mage/sets/conflux/GwafaHazidProfiteer.java +++ b/Mage.Sets/src/mage/sets/conflux/GwafaHazidProfiteer.java @@ -140,7 +140,7 @@ class GwafaHazidProfiteerEffect2 extends RestrictionEffect { @Override public boolean applies(Permanent permanent, Ability source, Game game) { - return permanent.getCounters().containsKey(CounterType.BRIBERY); + return permanent.getCounters(game).containsKey(CounterType.BRIBERY); } @Override diff --git a/Mage.Sets/src/mage/sets/darkascension/JarOfEyeballs.java b/Mage.Sets/src/mage/sets/darkascension/JarOfEyeballs.java index 8ffde604dc8..ebd5bf57141 100644 --- a/Mage.Sets/src/mage/sets/darkascension/JarOfEyeballs.java +++ b/Mage.Sets/src/mage/sets/darkascension/JarOfEyeballs.java @@ -148,7 +148,7 @@ class JarOfEyeballsCost extends CostImpl { public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana, Cost costToPay) { Permanent permanent = game.getPermanent(ability.getSourceId()); if (permanent != null) { - this.removedCounters = permanent.getCounters().getCount(CounterType.EYEBALL); + this.removedCounters = permanent.getCounters(game).getCount(CounterType.EYEBALL); if (this.removedCounters > 0) { permanent.removeCounters(CounterType.EYEBALL.createInstance(this.removedCounters), game); } diff --git a/Mage.Sets/src/mage/sets/darksteel/AEtherVial.java b/Mage.Sets/src/mage/sets/darksteel/AEtherVial.java index 2b8937f5f92..d396249c524 100644 --- a/Mage.Sets/src/mage/sets/darksteel/AEtherVial.java +++ b/Mage.Sets/src/mage/sets/darksteel/AEtherVial.java @@ -101,7 +101,7 @@ class AEtherVialEffect extends OneShotEffect { return false; } } - int count = permanent.getCounters().getCount(CounterType.CHARGE); + int count = permanent.getCounters(game).getCount(CounterType.CHARGE); FilterCreatureCard filter = new FilterCreatureCard("creature card with converted mana cost equal to " + count); filter.add(new ConvertedManaCostPredicate(Filter.ComparisonType.Equal, count)); diff --git a/Mage.Sets/src/mage/sets/darksteel/DarksteelReactor.java b/Mage.Sets/src/mage/sets/darksteel/DarksteelReactor.java index 9a559a9c108..363bfff68da 100644 --- a/Mage.Sets/src/mage/sets/darksteel/DarksteelReactor.java +++ b/Mage.Sets/src/mage/sets/darksteel/DarksteelReactor.java @@ -90,7 +90,7 @@ class DarksteelReactorStateTriggeredAbility extends StateTriggeredAbility { @Override public boolean checkTrigger(GameEvent event, Game game) { Permanent permanent = game.getPermanent(this.getSourceId()); - if(permanent != null && permanent.getCounters().getCount(CounterType.CHARGE) >= 20){ + if(permanent != null && permanent.getCounters(game).getCount(CounterType.CHARGE) >= 20){ return true; } return false; diff --git a/Mage.Sets/src/mage/sets/dissension/CytoplastRootKin.java b/Mage.Sets/src/mage/sets/dissension/CytoplastRootKin.java index 9c0de869b60..7d90f9c63e2 100644 --- a/Mage.Sets/src/mage/sets/dissension/CytoplastRootKin.java +++ b/Mage.Sets/src/mage/sets/dissension/CytoplastRootKin.java @@ -114,7 +114,7 @@ class CytoplastRootKinEffect extends OneShotEffect { if (sourcePermanent != null && targetPermanent != null && !sourcePermanent.getId().equals(targetPermanent.getId()) - && targetPermanent.getCounters().getCount(CounterType.P1P1) > 0) { + && targetPermanent.getCounters(game).getCount(CounterType.P1P1) > 0) { targetPermanent.removeCounters(CounterType.P1P1.createInstance(), game); sourcePermanent.addCounters(CounterType.P1P1.createInstance(), game); return true; diff --git a/Mage.Sets/src/mage/sets/dragonsmaze/BredForTheHunt.java b/Mage.Sets/src/mage/sets/dragonsmaze/BredForTheHunt.java index d7f5af5a277..02c57cb6654 100644 --- a/Mage.Sets/src/mage/sets/dragonsmaze/BredForTheHunt.java +++ b/Mage.Sets/src/mage/sets/dragonsmaze/BredForTheHunt.java @@ -89,7 +89,7 @@ class BredForTheHuntTriggeredAbility extends TriggeredAbilityImpl { public boolean checkTrigger(GameEvent event, Game game) { if (((DamagedEvent) event).isCombatDamage()) { Permanent creature = game.getPermanent(event.getSourceId()); - if (creature != null && creature.getControllerId().equals(getControllerId()) && creature.getCounters().getCount(CounterType.P1P1) > 0) { + if (creature != null && creature.getControllerId().equals(getControllerId()) && creature.getCounters(game).getCount(CounterType.P1P1) > 0) { return true; } } diff --git a/Mage.Sets/src/mage/sets/dragonsmaze/GiveTake.java b/Mage.Sets/src/mage/sets/dragonsmaze/GiveTake.java index 5f6c6940144..659d2721e2c 100644 --- a/Mage.Sets/src/mage/sets/dragonsmaze/GiveTake.java +++ b/Mage.Sets/src/mage/sets/dragonsmaze/GiveTake.java @@ -93,7 +93,7 @@ class TakeEffect extends OneShotEffect { public boolean apply(Game game, Ability source) { Permanent creature = game.getPermanent(targetPointer.getFirst(game, source)); if (creature != null) { - int numberCounters = creature.getCounters().getCount(CounterType.P1P1); + int numberCounters = creature.getCounters(game).getCount(CounterType.P1P1); if (numberCounters > 0) { creature.removeCounters(CounterType.P1P1.getName(), numberCounters, game); Player controller = game.getPlayer(source.getControllerId()); diff --git a/Mage.Sets/src/mage/sets/dragonsmaze/VorelOfTheHullClade.java b/Mage.Sets/src/mage/sets/dragonsmaze/VorelOfTheHullClade.java index f853e890911..f537d09c28e 100644 --- a/Mage.Sets/src/mage/sets/dragonsmaze/VorelOfTheHullClade.java +++ b/Mage.Sets/src/mage/sets/dragonsmaze/VorelOfTheHullClade.java @@ -107,7 +107,7 @@ class VorelOfTheHullCladeEffect extends OneShotEffect { if (target == null) { return false; } - for (Counter counter : target.getCounters().values()) { + for (Counter counter : target.getCounters(game).values()) { Counter newCounter = new Counter(counter.getName(), counter.getCount()); target.addCounters(newCounter, game); } diff --git a/Mage.Sets/src/mage/sets/dragonsoftarkir/GleamOfAuthority.java b/Mage.Sets/src/mage/sets/dragonsoftarkir/GleamOfAuthority.java index 43b9341a94a..156f757298e 100644 --- a/Mage.Sets/src/mage/sets/dragonsoftarkir/GleamOfAuthority.java +++ b/Mage.Sets/src/mage/sets/dragonsoftarkir/GleamOfAuthority.java @@ -111,7 +111,7 @@ class CountersOnControlledCount implements DynamicValue { Permanent enchantment = game.getPermanent(sourceAbility.getSourceId()); for (Permanent permanent : game.getState().getBattlefield().getAllActivePermanents(filter, sourceAbility.getControllerId(), game)) { if (!permanent.getId().equals(enchantment.getAttachedTo())) { - count += permanent.getCounters().getCount(CounterType.P1P1); + count += permanent.getCounters(game).getCount(CounterType.P1P1); } } return count; diff --git a/Mage.Sets/src/mage/sets/dragonsoftarkir/MythRealized.java b/Mage.Sets/src/mage/sets/dragonsoftarkir/MythRealized.java index 942e5171998..10247877cb0 100644 --- a/Mage.Sets/src/mage/sets/dragonsoftarkir/MythRealized.java +++ b/Mage.Sets/src/mage/sets/dragonsoftarkir/MythRealized.java @@ -131,7 +131,7 @@ class MythRealizedSetPTEffect extends ContinuousEffectImpl { if (controller != null) { Permanent permanent = game.getPermanent(source.getSourceId()); if (permanent != null && new MageObjectReference(source.getSourceObject(game), game).refersTo(permanent, game)) { - int amount = permanent.getCounters().getCount(CounterType.LORE); + int amount = permanent.getCounters(game).getCount(CounterType.LORE); permanent.getPower().setValue(amount); permanent.getToughness().setValue(amount); return true; diff --git a/Mage.Sets/src/mage/sets/dragonsoftarkir/ServantOfTheScale.java b/Mage.Sets/src/mage/sets/dragonsoftarkir/ServantOfTheScale.java index 2967f548d09..21ab714bb12 100644 --- a/Mage.Sets/src/mage/sets/dragonsoftarkir/ServantOfTheScale.java +++ b/Mage.Sets/src/mage/sets/dragonsoftarkir/ServantOfTheScale.java @@ -104,7 +104,7 @@ class ServantOfTheScaleEffect extends OneShotEffect { if (sourcePermanent != null && controller != null && (sourcePermanent.getZoneChangeCounter(game) == source.getSourceObjectZoneChangeCounter() // Token || sourcePermanent.getZoneChangeCounter(game) + 1 == source.getSourceObjectZoneChangeCounter())) { // PermanentCard - int amount = sourcePermanent.getCounters().getCount(CounterType.P1P1); + int amount = sourcePermanent.getCounters(game).getCount(CounterType.P1P1); if (amount > 0) { Effect effect = new AddCountersTargetEffect(CounterType.P1P1.createInstance(amount)); effect.setTargetPointer(targetPointer); diff --git a/Mage.Sets/src/mage/sets/eldritchmoon/IdentityThief.java b/Mage.Sets/src/mage/sets/eldritchmoon/IdentityThief.java index 12cbb8c3b69..2a3834b7e41 100644 --- a/Mage.Sets/src/mage/sets/eldritchmoon/IdentityThief.java +++ b/Mage.Sets/src/mage/sets/eldritchmoon/IdentityThief.java @@ -139,7 +139,7 @@ class IdentityThiefEffect extends OneShotEffect { Permanent sourcePermanent = game.getPermanentOrLKIBattlefield(source.getSourceId()); if (controller != null && permanent != null && sourcePermanent != null) { Permanent permanentReset = permanent.copy(); - permanentReset.getCounters().clear(); + permanentReset.getCounters(game).clear(); permanentReset.getPower().resetToBaseValue(); permanentReset.getToughness().resetToBaseValue(); CopyEffect copyEffect = new CopyEffect(Duration.EndOfTurn, permanentReset, source.getSourceId()); diff --git a/Mage.Sets/src/mage/sets/eldritchmoon/NoosegrafMob.java b/Mage.Sets/src/mage/sets/eldritchmoon/NoosegrafMob.java index 6d1c24d9066..f4c8a3ffdc4 100644 --- a/Mage.Sets/src/mage/sets/eldritchmoon/NoosegrafMob.java +++ b/Mage.Sets/src/mage/sets/eldritchmoon/NoosegrafMob.java @@ -96,7 +96,7 @@ class NoosegrafMobEffect extends OneShotEffect { public boolean apply(Game game, Ability source) { Permanent permanent = game.getPermanent(source.getSourceId()); Player controller = game.getPlayer(source.getControllerId()); - if (controller != null && permanent != null && permanent.getCounters().getCount(CounterType.P1P1) > 0) { + if (controller != null && permanent != null && permanent.getCounters(game).getCount(CounterType.P1P1) > 0) { permanent.removeCounters(CounterType.P1P1.createInstance(), game); Effect effect = new CreateTokenEffect(new ZombieToken()); return effect.apply(game, source); diff --git a/Mage.Sets/src/mage/sets/eventide/GilderBairn.java b/Mage.Sets/src/mage/sets/eventide/GilderBairn.java index a17be6b9fe1..2c2d3f23420 100644 --- a/Mage.Sets/src/mage/sets/eventide/GilderBairn.java +++ b/Mage.Sets/src/mage/sets/eventide/GilderBairn.java @@ -98,7 +98,7 @@ class GilderBairnEffect extends OneShotEffect { if (target == null) { return false; } - for (Counter counter : target.getCounters().values()) { + for (Counter counter : target.getCounters(game).values()) { Counter newCounter = new Counter(counter.getName(), counter.getCount()); target.addCounters(newCounter, game); } diff --git a/Mage.Sets/src/mage/sets/eventide/Necroskitter.java b/Mage.Sets/src/mage/sets/eventide/Necroskitter.java index 054381415a5..3b790761ff8 100644 --- a/Mage.Sets/src/mage/sets/eventide/Necroskitter.java +++ b/Mage.Sets/src/mage/sets/eventide/Necroskitter.java @@ -103,7 +103,7 @@ class NecroskitterTriggeredAbility extends TriggeredAbilityImpl { if (zEvent.getFromZone() == Zone.BATTLEFIELD && zEvent.getToZone() == Zone.GRAVEYARD) { Permanent permanent = zEvent.getTarget(); if (permanent != null - && permanent.getCounters().containsKey(CounterType.M1M1) + && permanent.getCounters(game).containsKey(CounterType.M1M1) && game.getOpponents(controllerId).contains(permanent.getControllerId())) { for (Effect effect : this.getEffects()) { effect.setTargetPointer(new FixedTarget(event.getTargetId(), game.getState().getZoneChangeCounter(event.getTargetId()))); diff --git a/Mage.Sets/src/mage/sets/exodus/SpikeCannibal.java b/Mage.Sets/src/mage/sets/exodus/SpikeCannibal.java index 385b3ca0c40..65756c41f39 100644 --- a/Mage.Sets/src/mage/sets/exodus/SpikeCannibal.java +++ b/Mage.Sets/src/mage/sets/exodus/SpikeCannibal.java @@ -104,7 +104,7 @@ class SpikeCannibalEffect extends OneShotEffect { if (sourcePermanent != null) { for (Permanent creature : game.getBattlefield().getActivePermanents(filter, source.getControllerId(), game)) { if (creature != sourcePermanent) { - int numberCounters = creature.getCounters().getCount(CounterType.P1P1); + int numberCounters = creature.getCounters(game).getCount(CounterType.P1P1); if (numberCounters > 0) { creature.removeCounters(CounterType.P1P1.getName(), numberCounters, game); countersRemoved += numberCounters; diff --git a/Mage.Sets/src/mage/sets/fatereforged/DaghatarTheAdamant.java b/Mage.Sets/src/mage/sets/fatereforged/DaghatarTheAdamant.java index 327de83e8cb..cdd50b828a5 100644 --- a/Mage.Sets/src/mage/sets/fatereforged/DaghatarTheAdamant.java +++ b/Mage.Sets/src/mage/sets/fatereforged/DaghatarTheAdamant.java @@ -111,7 +111,7 @@ class MoveCounterFromTargetToTargetEffect extends OneShotEffect { MageObject sourceObject = game.getObject(source.getSourceId()); if (sourceObject != null && controller != null) { Permanent fromPermanent = game.getPermanent(getTargetPointer().getFirst(game, source)); - if (fromPermanent != null && fromPermanent.getCounters().getCount(CounterType.P1P1) > 0) { + if (fromPermanent != null && fromPermanent.getCounters(game).getCount(CounterType.P1P1) > 0) { Permanent toPermanent = game.getPermanent(source.getTargets().get(1).getFirstTarget()); if (toPermanent != null) { fromPermanent.removeCounters(CounterType.P1P1.createInstance(), game); diff --git a/Mage.Sets/src/mage/sets/fifthdawn/EngineeredExplosives.java b/Mage.Sets/src/mage/sets/fifthdawn/EngineeredExplosives.java index e8d7576e5fc..cdf2d19367d 100644 --- a/Mage.Sets/src/mage/sets/fifthdawn/EngineeredExplosives.java +++ b/Mage.Sets/src/mage/sets/fifthdawn/EngineeredExplosives.java @@ -99,7 +99,7 @@ class EngineeredExplosivesEffect extends OneShotEffect { public boolean apply(Game game, Ability source) { MageObject engineeredExplosives = game.getLastKnownInformation(source.getSourceId(), Zone.BATTLEFIELD); if(engineeredExplosives != null && engineeredExplosives instanceof Permanent){ - int count = ((Permanent)engineeredExplosives).getCounters().getCount(CounterType.CHARGE); + int count = ((Permanent)engineeredExplosives).getCounters(game).getCount(CounterType.CHARGE); for (Permanent permanent : game.getBattlefield().getActivePermanents(filter, source.getControllerId(), source.getSourceId(), game)) { if(permanent.getConvertedManaCost() == count){ permanent.destroy(source.getSourceId(), game, false); diff --git a/Mage.Sets/src/mage/sets/fourthedition/ClockworkAvian.java b/Mage.Sets/src/mage/sets/fourthedition/ClockworkAvian.java index 62e3877f288..87815b41c42 100644 --- a/Mage.Sets/src/mage/sets/fourthedition/ClockworkAvian.java +++ b/Mage.Sets/src/mage/sets/fourthedition/ClockworkAvian.java @@ -100,7 +100,7 @@ class AvianAddCountersSourceEffect extends AddCountersSourceEffect { @Override public boolean apply(Game game, Ability source) { //record how many counters - Counters permCounters = game.getPermanent(source.getSourceId()).getCounters(); + Counters permCounters = game.getPermanent(source.getSourceId()).getCounters(game); int countersWas = permCounters.getCount(CounterType.P1P0); if (countersWas < 4){ super.apply(game, source); diff --git a/Mage.Sets/src/mage/sets/futuresight/CoalitionRelic.java b/Mage.Sets/src/mage/sets/futuresight/CoalitionRelic.java index 8577a414ceb..adc57e3fd9e 100644 --- a/Mage.Sets/src/mage/sets/futuresight/CoalitionRelic.java +++ b/Mage.Sets/src/mage/sets/futuresight/CoalitionRelic.java @@ -97,7 +97,7 @@ class CoalitionRelicEffect extends OneShotEffect { Permanent sourcePermanent = game.getPermanent(source.getSourceId()); Player player = game.getPlayer(source.getControllerId()); if (sourcePermanent != null && player != null) { - int chargeCounters = sourcePermanent.getCounters().getCount(CounterType.CHARGE); + int chargeCounters = sourcePermanent.getCounters(game).getCount(CounterType.CHARGE); sourcePermanent.removeCounters(CounterType.CHARGE.createInstance(chargeCounters), game); Mana mana = new Mana(); ChoiceColor choice = new ChoiceColor(); diff --git a/Mage.Sets/src/mage/sets/futuresight/DustOfMoments.java b/Mage.Sets/src/mage/sets/futuresight/DustOfMoments.java index 1736ded2689..fe3eef96e3d 100644 --- a/Mage.Sets/src/mage/sets/futuresight/DustOfMoments.java +++ b/Mage.Sets/src/mage/sets/futuresight/DustOfMoments.java @@ -138,7 +138,7 @@ public class DustOfMoments extends CardImpl { if (permFilter.match(card, game)) { final String counterName = counter.getName(); if (shouldRemoveCounters()) { - final Counter existingCounterOfSameType = card.getCounters().get(counterName); + final Counter existingCounterOfSameType = card.getCounters(game).get(counterName); final int countersToRemove = Math.min(existingCounterOfSameType.getCount(), counter.getCount()); final Counter modifiedCounter = new Counter(counterName, countersToRemove); card.removeCounters(modifiedCounter, game); diff --git a/Mage.Sets/src/mage/sets/futuresight/LostAuramancers.java b/Mage.Sets/src/mage/sets/futuresight/LostAuramancers.java index 513cac67db2..d0a2b3b9e1e 100644 --- a/Mage.Sets/src/mage/sets/futuresight/LostAuramancers.java +++ b/Mage.Sets/src/mage/sets/futuresight/LostAuramancers.java @@ -104,7 +104,7 @@ class LostAuramancersAbility extends PutIntoGraveFromBattlefieldSourceTriggeredA public boolean checkTrigger(GameEvent event, Game game) { if (super.checkTrigger(event, game)) { Permanent permanent = (Permanent) game.getLastKnownInformation(event.getTargetId(), Zone.BATTLEFIELD); - if (!permanent.getCounters().containsKey(CounterType.TIME) || permanent.getCounters().getCount(CounterType.TIME) == 0) { + if (!permanent.getCounters(game).containsKey(CounterType.TIME) || permanent.getCounters(game).getCount(CounterType.TIME) == 0) { return true; } } diff --git a/Mage.Sets/src/mage/sets/gatecrash/Bioshift.java b/Mage.Sets/src/mage/sets/gatecrash/Bioshift.java index bb89a69a921..2f79caf7869 100644 --- a/Mage.Sets/src/mage/sets/gatecrash/Bioshift.java +++ b/Mage.Sets/src/mage/sets/gatecrash/Bioshift.java @@ -45,7 +45,6 @@ import mage.game.Game; import mage.game.permanent.Permanent; import mage.game.stack.StackObject; import mage.players.Player; -import mage.target.Target; import mage.target.common.TargetCreaturePermanent; /** @@ -114,7 +113,7 @@ class MoveCounterFromTargetToTargetEffect extends OneShotEffect { if (fromPermanent == null || toPermanent == null || !fromPermanent.getControllerId().equals(toPermanent.getControllerId())) { return false; } - int amountCounters = fromPermanent.getCounters().getCount(CounterType.P1P1); + int amountCounters = fromPermanent.getCounters(game).getCount(CounterType.P1P1); if (amountCounters > 0) { int amountToMove = controller.getAmount(0, amountCounters, "How many counters do you want to move?", game); if (amountToMove > 0) { diff --git a/Mage.Sets/src/mage/sets/gatecrash/SimicFluxmage.java b/Mage.Sets/src/mage/sets/gatecrash/SimicFluxmage.java index ad91e5ba281..e74b6581c52 100644 --- a/Mage.Sets/src/mage/sets/gatecrash/SimicFluxmage.java +++ b/Mage.Sets/src/mage/sets/gatecrash/SimicFluxmage.java @@ -101,7 +101,7 @@ class MoveCounterFromSourceToTargetEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { Permanent sourcePermanent = game.getPermanent(source.getSourceId()); - if (sourcePermanent != null && sourcePermanent.getCounters().getCount(CounterType.P1P1) > 0) { + if (sourcePermanent != null && sourcePermanent.getCounters(game).getCount(CounterType.P1P1) > 0) { Permanent targetPermanent = game.getPermanent(targetPointer.getFirst(game, source)); if (targetPermanent != null) { sourcePermanent.removeCounters(CounterType.P1P1.createInstance(), game); diff --git a/Mage.Sets/src/mage/sets/innistrad/EssenceOfTheWild.java b/Mage.Sets/src/mage/sets/innistrad/EssenceOfTheWild.java index 7372a9e86b9..5ed4f834f0f 100644 --- a/Mage.Sets/src/mage/sets/innistrad/EssenceOfTheWild.java +++ b/Mage.Sets/src/mage/sets/innistrad/EssenceOfTheWild.java @@ -100,7 +100,7 @@ class EssenceOfTheWildEffect extends ReplacementEffectImpl { Permanent sourceObject = game.getPermanentOrLKIBattlefield(source.getSourceId()); if (sourceObject != null) { Permanent permanentReset = sourceObject.copy(); - permanentReset.getCounters().clear(); + permanentReset.getCounters(game).clear(); permanentReset.getPower().resetToBaseValue(); permanentReset.getToughness().resetToBaseValue(); game.addEffect(new CopyEffect(Duration.Custom, permanentReset, event.getTargetId()), source); diff --git a/Mage.Sets/src/mage/sets/innistrad/GarrukRelentless.java b/Mage.Sets/src/mage/sets/innistrad/GarrukRelentless.java index 1f43014bc50..5a27be7ae0c 100644 --- a/Mage.Sets/src/mage/sets/innistrad/GarrukRelentless.java +++ b/Mage.Sets/src/mage/sets/innistrad/GarrukRelentless.java @@ -112,7 +112,7 @@ class GarrukRelentlessTriggeredAbility extends TriggeredAbilityImpl { public boolean checkTrigger(GameEvent event, Game game) { if (event.getTargetId().equals(sourceId)) { Permanent permanent = game.getPermanent(sourceId); - if (permanent != null && !permanent.isTransformed() && permanent.getCounters().getCount(CounterType.LOYALTY) <= 2) { + if (permanent != null && !permanent.isTransformed() && permanent.getCounters(game).getCount(CounterType.LOYALTY) <= 2) { return true; } } diff --git a/Mage.Sets/src/mage/sets/innistrad/GutterGrime.java b/Mage.Sets/src/mage/sets/innistrad/GutterGrime.java index 39a459d4952..5b29b872442 100644 --- a/Mage.Sets/src/mage/sets/innistrad/GutterGrime.java +++ b/Mage.Sets/src/mage/sets/innistrad/GutterGrime.java @@ -173,7 +173,7 @@ class GutterGrimeCounters implements DynamicValue { public int calculate(Game game, Ability sourceAbility, Effect effect) { Permanent p = game.getPermanent(sourceId); if (p != null) { - return p.getCounters().getCount(CounterType.SLIME); + return p.getCounters(game).getCount(CounterType.SLIME); } return 0; } diff --git a/Mage.Sets/src/mage/sets/innistrad/LudevicsTestSubject.java b/Mage.Sets/src/mage/sets/innistrad/LudevicsTestSubject.java index 63d53328be4..44c51fea78a 100644 --- a/Mage.Sets/src/mage/sets/innistrad/LudevicsTestSubject.java +++ b/Mage.Sets/src/mage/sets/innistrad/LudevicsTestSubject.java @@ -96,8 +96,8 @@ class LudevicsTestSubjectEffect extends OneShotEffect { public boolean apply(Game game, Ability source) { Permanent p = game.getPermanent(source.getSourceId()); if (p != null) { - if (p.getCounters().getCount(CounterType.HATCHLING) >= 5) { - p.removeCounters(CounterType.HATCHLING.getName(), p.getCounters().getCount(CounterType.HATCHLING), game); + if (p.getCounters(game).getCount(CounterType.HATCHLING) >= 5) { + p.removeCounters(CounterType.HATCHLING.getName(), p.getCounters(game).getCount(CounterType.HATCHLING), game); TransformSourceEffect effect = new TransformSourceEffect(true); return effect.apply(game, source); } diff --git a/Mage.Sets/src/mage/sets/journeyintonyx/SageOfHours.java b/Mage.Sets/src/mage/sets/journeyintonyx/SageOfHours.java index 49ed1548fad..1d9bd57025e 100644 --- a/Mage.Sets/src/mage/sets/journeyintonyx/SageOfHours.java +++ b/Mage.Sets/src/mage/sets/journeyintonyx/SageOfHours.java @@ -104,7 +104,7 @@ class SageOfHoursCost extends CostImpl { public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana, Cost costToPay) { Permanent permanent = game.getPermanent(ability.getSourceId()); if (permanent != null) { - this.removedCounters = permanent.getCounters().getCount(CounterType.P1P1); + this.removedCounters = permanent.getCounters(game).getCount(CounterType.P1P1); if (this.removedCounters > 0) { permanent.removeCounters(CounterType.P1P1.createInstance(this.removedCounters), game); } diff --git a/Mage.Sets/src/mage/sets/journeyintonyx/SolidarityOfHeroes.java b/Mage.Sets/src/mage/sets/journeyintonyx/SolidarityOfHeroes.java index 12aac922535..63db68f8c73 100644 --- a/Mage.Sets/src/mage/sets/journeyintonyx/SolidarityOfHeroes.java +++ b/Mage.Sets/src/mage/sets/journeyintonyx/SolidarityOfHeroes.java @@ -93,7 +93,7 @@ class SolidarityOfHeroesEffect extends OneShotEffect { for (UUID targetId: getTargetPointer().getTargets(game, source)) { Permanent permanent = game.getPermanent(targetId); if (permanent != null) { - int existingCounters = permanent.getCounters().getCount(CounterType.P1P1); + int existingCounters = permanent.getCounters(game).getCount(CounterType.P1P1); if (existingCounters > 0) { permanent.addCounters(CounterType.P1P1.createInstance(existingCounters), game); } diff --git a/Mage.Sets/src/mage/sets/judgment/PhantomCentaur.java b/Mage.Sets/src/mage/sets/judgment/PhantomCentaur.java index 63680d0df06..88ad9b7801f 100644 --- a/Mage.Sets/src/mage/sets/judgment/PhantomCentaur.java +++ b/Mage.Sets/src/mage/sets/judgment/PhantomCentaur.java @@ -136,7 +136,7 @@ class PhantomCentaurPreventionEffect extends PreventionEffectImpl { } } - if(removeCounter && permanent.getCounters().containsKey(CounterType.P1P1)) { + if(removeCounter && permanent.getCounters(game).containsKey(CounterType.P1P1)) { StringBuilder sb = new StringBuilder(permanent.getName()).append(": "); permanent.removeCounters(CounterType.P1P1.createInstance(), game); sb.append("Removed a +1/+1 counter "); diff --git a/Mage.Sets/src/mage/sets/judgment/PhantomFlock.java b/Mage.Sets/src/mage/sets/judgment/PhantomFlock.java index 9f949c7ef07..c8de4202471 100644 --- a/Mage.Sets/src/mage/sets/judgment/PhantomFlock.java +++ b/Mage.Sets/src/mage/sets/judgment/PhantomFlock.java @@ -127,7 +127,7 @@ class PhantomFlockPreventionEffect extends PreventionEffectImpl { } } - if(removeCounter && permanent.getCounters().containsKey(CounterType.P1P1)) { + if(removeCounter && permanent.getCounters(game).containsKey(CounterType.P1P1)) { StringBuilder sb = new StringBuilder(permanent.getName()).append(": "); permanent.removeCounters(CounterType.P1P1.createInstance(), game); sb.append("Removed a +1/+1 counter "); diff --git a/Mage.Sets/src/mage/sets/judgment/PhantomNishoba.java b/Mage.Sets/src/mage/sets/judgment/PhantomNishoba.java index 51cb80804d3..06c79c80257 100644 --- a/Mage.Sets/src/mage/sets/judgment/PhantomNishoba.java +++ b/Mage.Sets/src/mage/sets/judgment/PhantomNishoba.java @@ -131,7 +131,7 @@ class PhantomNishobaPreventionEffect extends PreventionEffectImpl { } } - if(removeCounter && permanent.getCounters().containsKey(CounterType.P1P1)) { + if(removeCounter && permanent.getCounters(game).containsKey(CounterType.P1P1)) { StringBuilder sb = new StringBuilder(permanent.getName()).append(": "); permanent.removeCounters(CounterType.P1P1.createInstance(), game); sb.append("Removed a +1/+1 counter "); diff --git a/Mage.Sets/src/mage/sets/judgment/PhantomNomad.java b/Mage.Sets/src/mage/sets/judgment/PhantomNomad.java index 3c10caeb7a5..cbb20cd6756 100644 --- a/Mage.Sets/src/mage/sets/judgment/PhantomNomad.java +++ b/Mage.Sets/src/mage/sets/judgment/PhantomNomad.java @@ -126,7 +126,7 @@ class PhantomNomadPreventionEffect extends PreventionEffectImpl { } } - if(removeCounter && permanent.getCounters().containsKey(CounterType.P1P1)) { + if(removeCounter && permanent.getCounters(game).containsKey(CounterType.P1P1)) { StringBuilder sb = new StringBuilder(permanent.getName()).append(": "); permanent.removeCounters(CounterType.P1P1.createInstance(), game); sb.append("Removed a +1/+1 counter "); diff --git a/Mage.Sets/src/mage/sets/judgment/PhantomTiger.java b/Mage.Sets/src/mage/sets/judgment/PhantomTiger.java index 4c488085ad2..de1b49816f2 100644 --- a/Mage.Sets/src/mage/sets/judgment/PhantomTiger.java +++ b/Mage.Sets/src/mage/sets/judgment/PhantomTiger.java @@ -122,7 +122,7 @@ class PhantomTigerPreventionEffect extends PreventionEffectImpl { } } - if (removeCounter && permanent.getCounters().getCount(CounterType.P1P1) > 0) { + if (removeCounter && permanent.getCounters(game).getCount(CounterType.P1P1) > 0) { StringBuilder sb = new StringBuilder(permanent.getName()).append(": "); permanent.removeCounters(CounterType.P1P1.createInstance(), game); sb.append("Removed a +1/+1 counter "); diff --git a/Mage.Sets/src/mage/sets/khansoftarkir/BringLow.java b/Mage.Sets/src/mage/sets/khansoftarkir/BringLow.java index 3ecb45a5969..7dfee4808a7 100644 --- a/Mage.Sets/src/mage/sets/khansoftarkir/BringLow.java +++ b/Mage.Sets/src/mage/sets/khansoftarkir/BringLow.java @@ -83,7 +83,7 @@ class TargetHasCounterCondition implements Condition { if (!source.getTargets().isEmpty()) { Permanent permanent = game.getPermanent(source.getFirstTarget()); if (permanent != null) { - return permanent.getCounters().containsKey(counterType); + return permanent.getCounters(game).containsKey(counterType); } } return false; diff --git a/Mage.Sets/src/mage/sets/khansoftarkir/RiteOfTheSerpent.java b/Mage.Sets/src/mage/sets/khansoftarkir/RiteOfTheSerpent.java index 378c9afbe61..49aacd513d9 100644 --- a/Mage.Sets/src/mage/sets/khansoftarkir/RiteOfTheSerpent.java +++ b/Mage.Sets/src/mage/sets/khansoftarkir/RiteOfTheSerpent.java @@ -89,7 +89,7 @@ class RiteOfTheSerpentEffect extends OneShotEffect { public boolean apply(Game game, Ability source) { Permanent targetCreature = game.getPermanentOrLKIBattlefield(getTargetPointer().getFirst(game, source)); if (targetCreature != null) { - if (targetCreature.getCounters().containsKey(CounterType.P1P1)) { + if (targetCreature.getCounters(game).containsKey(CounterType.P1P1)) { new CreateTokenEffect(new SnakeToken("KTK")).apply(game, source); } return true; diff --git a/Mage.Sets/src/mage/sets/limitedalpha/ClockworkBeast.java b/Mage.Sets/src/mage/sets/limitedalpha/ClockworkBeast.java index fe322b6c506..c77adb96b1c 100644 --- a/Mage.Sets/src/mage/sets/limitedalpha/ClockworkBeast.java +++ b/Mage.Sets/src/mage/sets/limitedalpha/ClockworkBeast.java @@ -125,7 +125,7 @@ class BeastAddCountersSourceEffect extends AddCountersSourceEffect { @Override public boolean apply(Game game, Ability source) { - Counters permCounters = game.getPermanent(source.getSourceId()).getCounters(); + Counters permCounters = game.getPermanent(source.getSourceId()).getCounters(game); int countersWas = permCounters.getCount(CounterType.P1P0); if (countersWas < 7){ super.apply(game, source); diff --git a/Mage.Sets/src/mage/sets/lorwyn/AquitectsWill.java b/Mage.Sets/src/mage/sets/lorwyn/AquitectsWill.java index 8604c8ab21e..d3a2e72c25e 100644 --- a/Mage.Sets/src/mage/sets/lorwyn/AquitectsWill.java +++ b/Mage.Sets/src/mage/sets/lorwyn/AquitectsWill.java @@ -105,7 +105,7 @@ class AquitectsWillEffect extends BecomesBasicLandTargetEffect { if (land == null) { // if permanent left battlefield the effect can be removed because it was only valid for that object this.discard(); - } else if (land.getCounters().getCount(CounterType.FLOOD) > 0) { + } else if (land.getCounters(game).getCount(CounterType.FLOOD) > 0) { // only if Flood counter is on the object it becomes an Island.(it would be possible to remove and return the counters with e.g. Fate Transfer if the land becomes a creature too) super.apply(layer, sublayer, source, game); } diff --git a/Mage.Sets/src/mage/sets/lorwyn/AshlingThePilgrim.java b/Mage.Sets/src/mage/sets/lorwyn/AshlingThePilgrim.java index cefdfba27cb..d25c366a7ef 100644 --- a/Mage.Sets/src/mage/sets/lorwyn/AshlingThePilgrim.java +++ b/Mage.Sets/src/mage/sets/lorwyn/AshlingThePilgrim.java @@ -122,7 +122,7 @@ class AshlingThePilgrimEffect extends OneShotEffect { } info.activations++; if (info.activations == 3) { - int damage = sourcePermanent.getCounters().getCount(CounterType.P1P1); + int damage = sourcePermanent.getCounters(game).getCount(CounterType.P1P1); if (damage > 0) { sourcePermanent.removeCounters(CounterType.P1P1.getName(), damage, game); return new DamageEverythingEffect(damage, new FilterCreaturePermanent()).apply(game, source); diff --git a/Mage.Sets/src/mage/sets/magic2011/PhylacteryLich.java b/Mage.Sets/src/mage/sets/magic2011/PhylacteryLich.java index 6cf3a7c7243..5363d138333 100644 --- a/Mage.Sets/src/mage/sets/magic2011/PhylacteryLich.java +++ b/Mage.Sets/src/mage/sets/magic2011/PhylacteryLich.java @@ -100,7 +100,7 @@ public class PhylacteryLich extends CardImpl { @Override public boolean checkTrigger(GameEvent event, Game game) { for (Permanent perm : game.getBattlefield().getAllActivePermanents(controllerId)) { - if (perm.getCounters().getCount("phylactery") > 0) { + if (perm.getCounters(game).getCount("phylactery") > 0) { return false; } } diff --git a/Mage.Sets/src/mage/sets/magic2012/PrimordialHydra.java b/Mage.Sets/src/mage/sets/magic2012/PrimordialHydra.java index f6f23863272..fb184e046b4 100644 --- a/Mage.Sets/src/mage/sets/magic2012/PrimordialHydra.java +++ b/Mage.Sets/src/mage/sets/magic2012/PrimordialHydra.java @@ -103,7 +103,7 @@ class PrimordialHydraDoubleEffect extends OneShotEffect { public boolean apply(Game game, Ability source) { Permanent sourcePermanent = game.getPermanent(source.getSourceId()); if (sourcePermanent != null) { - int amount = sourcePermanent.getCounters().getCount(CounterType.P1P1); + int amount = sourcePermanent.getCounters(game).getCount(CounterType.P1P1); if (amount > 0) { sourcePermanent.addCounters(CounterType.P1P1.createInstance(amount), game); } diff --git a/Mage.Sets/src/mage/sets/magic2013/SlumberingDragon.java b/Mage.Sets/src/mage/sets/magic2013/SlumberingDragon.java index 22702ac44fc..4cd96d6799c 100644 --- a/Mage.Sets/src/mage/sets/magic2013/SlumberingDragon.java +++ b/Mage.Sets/src/mage/sets/magic2013/SlumberingDragon.java @@ -96,7 +96,7 @@ class SlumberingDragonEffect extends RestrictionEffect { @Override public boolean applies(Permanent permanent, Ability source, Game game) { if (permanent.getId().equals(source.getSourceId())) { - if (permanent.getCounters().getCount(CounterType.P1P1) >= 5) { + if (permanent.getCounters(game).getCount(CounterType.P1P1) >= 5) { return false; } return true; diff --git a/Mage.Sets/src/mage/sets/magic2014/DoorOfDestinies.java b/Mage.Sets/src/mage/sets/magic2014/DoorOfDestinies.java index 5a342a704b1..2c9a4e37a84 100644 --- a/Mage.Sets/src/mage/sets/magic2014/DoorOfDestinies.java +++ b/Mage.Sets/src/mage/sets/magic2014/DoorOfDestinies.java @@ -154,7 +154,7 @@ class BoostCreatureEffectEffect extends ContinuousEffectImpl { if (subtype != null) { for (Permanent perm : game.getBattlefield().getAllActivePermanents(filter, source.getControllerId(), game)) { if (perm.hasSubtype(subtype, game)) { - int boost = permanent.getCounters().getCount(CounterType.CHARGE); + int boost = permanent.getCounters(game).getCount(CounterType.CHARGE); perm.addPower(boost); perm.addToughness(boost); } diff --git a/Mage.Sets/src/mage/sets/magic2014/KalonianHydra.java b/Mage.Sets/src/mage/sets/magic2014/KalonianHydra.java index e76a552a26d..9f801bdb5ee 100644 --- a/Mage.Sets/src/mage/sets/magic2014/KalonianHydra.java +++ b/Mage.Sets/src/mage/sets/magic2014/KalonianHydra.java @@ -108,7 +108,7 @@ class KalonianHydraEffect extends OneShotEffect { public boolean apply(Game game, Ability source) { List permanents = game.getBattlefield().getActivePermanents(filter, source.getControllerId(), source.getSourceId(), game); for (Permanent permanent : permanents) { - int existingCounters = permanent.getCounters().getCount(CounterType.P1P1); + int existingCounters = permanent.getCounters(game).getCount(CounterType.P1P1); if (existingCounters > 0) { permanent.addCounters(CounterType.P1P1.createInstance(existingCounters), game); } diff --git a/Mage.Sets/src/mage/sets/magic2015/ChasmSkulker.java b/Mage.Sets/src/mage/sets/magic2015/ChasmSkulker.java index 3f46ea78439..8594a94364f 100644 --- a/Mage.Sets/src/mage/sets/magic2015/ChasmSkulker.java +++ b/Mage.Sets/src/mage/sets/magic2015/ChasmSkulker.java @@ -101,7 +101,7 @@ class ChasmSkulkerEffect extends OneShotEffect { if (controller != null) { Permanent permanent = (Permanent) game.getLastKnownInformation(source.getSourceId(), Zone.BATTLEFIELD); if (permanent != null) { - int counters = permanent.getCounters().getCount(CounterType.P1P1); + int counters = permanent.getCounters(game).getCount(CounterType.P1P1); if (counters > 0) { return new CreateTokenEffect(new ChasmSkulkerSquidToken(), counters).apply(game, source); } diff --git a/Mage.Sets/src/mage/sets/magic2015/YisanTheWandererBard.java b/Mage.Sets/src/mage/sets/magic2015/YisanTheWandererBard.java index 56c2762021a..f799200c7c0 100644 --- a/Mage.Sets/src/mage/sets/magic2015/YisanTheWandererBard.java +++ b/Mage.Sets/src/mage/sets/magic2015/YisanTheWandererBard.java @@ -105,7 +105,7 @@ class YisanTheWandererBardEffect extends OneShotEffect { Player controller = game.getPlayer(source.getControllerId()); Permanent sourcePermanent = game.getPermanentOrLKIBattlefield(source.getSourceId()); if (sourcePermanent != null && controller != null) { - int newConvertedCost = sourcePermanent.getCounters().getCount("verse"); + int newConvertedCost = sourcePermanent.getCounters(game).getCount("verse"); FilterCard filter = new FilterCard("creature card with converted mana cost " + newConvertedCost); filter.add(new ConvertedManaCostPredicate(Filter.ComparisonType.Equal, newConvertedCost)); filter.add(new CardTypePredicate(CardType.CREATURE)); diff --git a/Mage.Sets/src/mage/sets/magicplayerrewards/PowderKeg.java b/Mage.Sets/src/mage/sets/magicplayerrewards/PowderKeg.java index fa93f70731b..3e32f46a69f 100644 --- a/Mage.Sets/src/mage/sets/magicplayerrewards/PowderKeg.java +++ b/Mage.Sets/src/mage/sets/magicplayerrewards/PowderKeg.java @@ -93,7 +93,7 @@ class PowderKegEffect extends OneShotEffect { } } - int count = p.getCounters().getCount(CounterType.FUSE); + int count = p.getCounters(game).getCount(CounterType.FUSE); for (Permanent perm: game.getBattlefield().getAllActivePermanents()) { if (perm.getConvertedManaCost() == count && ((perm.getCardType().contains(CardType.ARTIFACT)) || (perm.getCardType().contains(CardType.CREATURE)))) { diff --git a/Mage.Sets/src/mage/sets/masterseditioniii/DivineIntervention.java b/Mage.Sets/src/mage/sets/masterseditioniii/DivineIntervention.java index 2fec7ff9d3d..14ede09f098 100644 --- a/Mage.Sets/src/mage/sets/masterseditioniii/DivineIntervention.java +++ b/Mage.Sets/src/mage/sets/masterseditioniii/DivineIntervention.java @@ -158,7 +158,7 @@ public class DivineIntervention extends CardImpl { Player controller = game.getPlayer(source.getControllerId()); Permanent sourcePermanent = game.getPermanentOrLKIBattlefield(source.getSourceId()); if (controller != null && sourcePermanent != null) { - if (game.getState().getZone(sourcePermanent.getId()) == Zone.BATTLEFIELD && sourcePermanent.getCounters().getCount(CounterType.INTERVENTION) == 0) { + if (game.getState().getZone(sourcePermanent.getId()) == Zone.BATTLEFIELD && sourcePermanent.getCounters(game).getCount(CounterType.INTERVENTION) == 0) { game.setDraw(controller.getId()); for (UUID player : game.getOpponents(controller.getId())) { diff --git a/Mage.Sets/src/mage/sets/masterseditioniv/Cyclone.java b/Mage.Sets/src/mage/sets/masterseditioniv/Cyclone.java index 80c3684f068..ef32c84afc1 100644 --- a/Mage.Sets/src/mage/sets/masterseditioniv/Cyclone.java +++ b/Mage.Sets/src/mage/sets/masterseditioniv/Cyclone.java @@ -93,7 +93,7 @@ class CycloneEffect extends OneShotEffect { public boolean apply(Game game, Ability source) { Player player = game.getPlayer(source.getControllerId()); Permanent permanent = game.getPermanent(source.getSourceId()); - int total = permanent.getCounters().getCount(CounterType.WIND); + int total = permanent.getCounters(game).getCount(CounterType.WIND); String greens = ""; diff --git a/Mage.Sets/src/mage/sets/mercadianmasques/BlackMarket.java b/Mage.Sets/src/mage/sets/mercadianmasques/BlackMarket.java index 7f37e44083d..664d7e94a59 100644 --- a/Mage.Sets/src/mage/sets/mercadianmasques/BlackMarket.java +++ b/Mage.Sets/src/mage/sets/mercadianmasques/BlackMarket.java @@ -91,7 +91,7 @@ class BlackMarketEffect extends OneShotEffect { Permanent sourcePermanent = game.getPermanent(source.getSourceId()); Player player = game.getPlayer(source.getControllerId()); if (sourcePermanent != null && player != null) { - int chargeCounters = sourcePermanent.getCounters().getCount(CounterType.CHARGE); + int chargeCounters = sourcePermanent.getCounters(game).getCount(CounterType.CHARGE); if (chargeCounters > 0){ player.getManaPool().addMana(Mana.BlackMana(chargeCounters), game, source); return true; diff --git a/Mage.Sets/src/mage/sets/mirrodin/AltarOfShadows.java b/Mage.Sets/src/mage/sets/mirrodin/AltarOfShadows.java index e9cab6c8b78..bd7369c932c 100644 --- a/Mage.Sets/src/mage/sets/mirrodin/AltarOfShadows.java +++ b/Mage.Sets/src/mage/sets/mirrodin/AltarOfShadows.java @@ -101,7 +101,7 @@ class AltarOfShadowsEffect extends OneShotEffect { Permanent sourcePermanent = game.getPermanent(source.getSourceId()); Player player = game.getPlayer(source.getControllerId()); if (sourcePermanent != null && player != null) { - int chargeCounters = sourcePermanent.getCounters().getCount(CounterType.CHARGE); + int chargeCounters = sourcePermanent.getCounters(game).getCount(CounterType.CHARGE); if (chargeCounters > 0){ player.getManaPool().addMana(Mana.BlackMana(chargeCounters), game, source); return true; diff --git a/Mage.Sets/src/mage/sets/mirrodin/ChaliceOfTheVoid.java b/Mage.Sets/src/mage/sets/mirrodin/ChaliceOfTheVoid.java index 8d673250350..907b9ec9fcb 100644 --- a/Mage.Sets/src/mage/sets/mirrodin/ChaliceOfTheVoid.java +++ b/Mage.Sets/src/mage/sets/mirrodin/ChaliceOfTheVoid.java @@ -97,7 +97,7 @@ class ChaliceOfTheVoidTriggeredAbility extends TriggeredAbilityImpl { public boolean checkTrigger(GameEvent event, Game game) { Permanent chalice = game.getPermanent(getSourceId()); Spell spell = game.getStack().getSpell(event.getTargetId()); - if (spell != null && chalice != null && spell.getConvertedManaCost() == chalice.getCounters().getCount(CounterType.CHARGE)) { + if (spell != null && chalice != null && spell.getConvertedManaCost() == chalice.getCounters(game).getCount(CounterType.CHARGE)) { for (Effect effect : this.getEffects()) { effect.setTargetPointer(new FixedTarget(event.getTargetId())); } diff --git a/Mage.Sets/src/mage/sets/mirrodin/JinxedChoker.java b/Mage.Sets/src/mage/sets/mirrodin/JinxedChoker.java index 9ce1f78d594..aa37521d928 100644 --- a/Mage.Sets/src/mage/sets/mirrodin/JinxedChoker.java +++ b/Mage.Sets/src/mage/sets/mirrodin/JinxedChoker.java @@ -127,7 +127,7 @@ class JinxedChokerDynamicValue implements DynamicValue { int count = 0; if (permanent != null){ - count = permanent.getCounters().getCount(CounterType.CHARGE); + count = permanent.getCounters(game).getCount(CounterType.CHARGE); } return count; } @@ -169,7 +169,7 @@ class JinxedChokerCounterEffect extends OneShotEffect { Player controller = game.getPlayer(source.getControllerId()); Permanent sourcePermanent = game.getPermanent(source.getSourceId()); if (controller != null && sourcePermanent != null) { - if (!sourcePermanent.getCounters().containsKey(CounterType.CHARGE) || controller.chooseUse(outcome, "Put a charge counter on? (No removes one)", source, game)) { + if (!sourcePermanent.getCounters(game).containsKey(CounterType.CHARGE) || controller.chooseUse(outcome, "Put a charge counter on? (No removes one)", source, game)) { return new AddCountersSourceEffect(CounterType.CHARGE.createInstance(), true).apply(game, source); } else { return new RemoveCounterSourceEffect(CounterType.CHARGE.createInstance()).apply(game, source); diff --git a/Mage.Sets/src/mage/sets/mirrodin/OblivionStone.java b/Mage.Sets/src/mage/sets/mirrodin/OblivionStone.java index c48b20ca4a7..f74c4ec9c92 100644 --- a/Mage.Sets/src/mage/sets/mirrodin/OblivionStone.java +++ b/Mage.Sets/src/mage/sets/mirrodin/OblivionStone.java @@ -90,13 +90,13 @@ class OblivionStoneEffect extends OneShotEffect { @java.lang.Override public boolean apply(Game game, Ability source) { for (Permanent p : game.getBattlefield().getAllActivePermanents()) { - if (!(p.getCardType().contains(CardType.LAND) || p.getCounters().containsKey(CounterType.FATE))) { + if (!(p.getCardType().contains(CardType.LAND) || p.getCounters(game).containsKey(CounterType.FATE))) { p.destroy(source.getSourceId(), game, false); } } for (Permanent p : game.getBattlefield().getAllActivePermanents()) { - if (p.getCounters().containsKey(CounterType.FATE)) { - p.removeCounters(CounterType.FATE.getName(), p.getCounters().getCount(CounterType.FATE), game); + if (p.getCounters(game).containsKey(CounterType.FATE)) { + p.removeCounters(CounterType.FATE.getName(), p.getCounters(game).getCount(CounterType.FATE), game); } } return true; diff --git a/Mage.Sets/src/mage/sets/morningtide/KinsbaileBorderguard.java b/Mage.Sets/src/mage/sets/morningtide/KinsbaileBorderguard.java index 5080aa2baa5..14805d6f173 100644 --- a/Mage.Sets/src/mage/sets/morningtide/KinsbaileBorderguard.java +++ b/Mage.Sets/src/mage/sets/morningtide/KinsbaileBorderguard.java @@ -92,7 +92,7 @@ class AllCountersCount implements DynamicValue { Permanent sourcePermanent = game.getPermanentOrLKIBattlefield(sourceAbility.getSourceId()); if(sourcePermanent != null) { int total = 0; - for(Counter counter : sourcePermanent.getCounters().values()) { + for(Counter counter : sourcePermanent.getCounters(game).values()) { total += counter.getCount(); } return total; diff --git a/Mage.Sets/src/mage/sets/morningtide/OonasBlackguard.java b/Mage.Sets/src/mage/sets/morningtide/OonasBlackguard.java index 085cd722d3b..46be4f2a8d6 100644 --- a/Mage.Sets/src/mage/sets/morningtide/OonasBlackguard.java +++ b/Mage.Sets/src/mage/sets/morningtide/OonasBlackguard.java @@ -157,7 +157,7 @@ class OonasBlackguardTriggeredAbility extends TriggeredAbilityImpl { public boolean checkTrigger(GameEvent event, Game game) { if (((DamagedPlayerEvent) event).isCombatDamage()) { Permanent creature = game.getPermanent(event.getSourceId()); - if (creature != null && creature.getControllerId().equals(getControllerId()) && creature.getCounters().getCount(CounterType.P1P1) > 0) { + if (creature != null && creature.getControllerId().equals(getControllerId()) && creature.getCounters(game).getCount(CounterType.P1P1) > 0) { for (Effect effect : this.getEffects()) { effect.setTargetPointer(new FixedTarget(event.getPlayerId())); } diff --git a/Mage.Sets/src/mage/sets/nemesis/TangleWire.java b/Mage.Sets/src/mage/sets/nemesis/TangleWire.java index 53644de7d9a..065bbd63043 100644 --- a/Mage.Sets/src/mage/sets/nemesis/TangleWire.java +++ b/Mage.Sets/src/mage/sets/nemesis/TangleWire.java @@ -103,7 +103,7 @@ class TangleWireEffect extends OneShotEffect { } int targetCount = game.getBattlefield().countAll(filter, player.getId(), game); - int counterCount = permanent.getCounters().getCount(CounterType.FADE); + int counterCount = permanent.getCounters(game).getCount(CounterType.FADE); int amount = Math.min(counterCount, targetCount); Target target = new TargetControlledPermanent(amount, amount, filter, true); diff --git a/Mage.Sets/src/mage/sets/newphyrexia/GremlinMine.java b/Mage.Sets/src/mage/sets/newphyrexia/GremlinMine.java index 53c8d39de80..02ecda3ba98 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/GremlinMine.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/GremlinMine.java @@ -110,7 +110,7 @@ class GremlinMineEffect extends OneShotEffect { Permanent permanent = game.getPermanent(source.getFirstTarget()); if (player != null && permanent != null) { - int existingCount = permanent.getCounters().getCount(CounterType.CHARGE); + int existingCount = permanent.getCounters(game).getCount(CounterType.CHARGE); if (existingCount > 0) { Choice choice = new ChoiceImpl(); diff --git a/Mage.Sets/src/mage/sets/newphyrexia/HexParasite.java b/Mage.Sets/src/mage/sets/newphyrexia/HexParasite.java index 75cc958ff75..f67e1ff6206 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/HexParasite.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/HexParasite.java @@ -99,14 +99,14 @@ class HexParasiteEffect extends OneShotEffect { if (permanent != null && player != null) { int toRemove = source.getManaCostsToPay().getX(); int removed = 0; - String[] counterNames = permanent.getCounters().keySet().toArray(new String[0]); + String[] counterNames = permanent.getCounters(game).keySet().toArray(new String[0]); for (String counterName : counterNames) { if (player.chooseUse(Outcome.Neutral, "Do you want to remove " + counterName + " counters?", source, game)) { - if (permanent.getCounters().get(counterName).getCount() == 1 || toRemove == 1) { + if (permanent.getCounters(game).get(counterName).getCount() == 1 || toRemove == 1) { permanent.removeCounters(counterName, 1, game); removed++; } else { - int amount = player.getAmount(1, Math.min(permanent.getCounters().get(counterName).getCount(), toRemove - removed), "How many?", game); + int amount = player.getAmount(1, Math.min(permanent.getCounters(game).get(counterName).getCount(), toRemove - removed), "How many?", game); if (amount > 0) { removed += amount; permanent.removeCounters(counterName, amount, game); diff --git a/Mage.Sets/src/mage/sets/newphyrexia/ShrineOfPiercingVision.java b/Mage.Sets/src/mage/sets/newphyrexia/ShrineOfPiercingVision.java index ac8b2203805..9319ba4ef53 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/ShrineOfPiercingVision.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/ShrineOfPiercingVision.java @@ -114,7 +114,7 @@ class ShrineOfPiercingVisionEffect extends OneShotEffect { if (player == null || permanent == null) { return false; } - int count = permanent.getCounters().getCount(CounterType.CHARGE); + int count = permanent.getCounters(game).getCount(CounterType.CHARGE); Cards cards = new CardsImpl(); count = Math.min(player.getLibrary().size(), count); diff --git a/Mage.Sets/src/mage/sets/oathofthegatewatch/GladehartCavalry.java b/Mage.Sets/src/mage/sets/oathofthegatewatch/GladehartCavalry.java index 9e535d57ee0..199b17ad02f 100644 --- a/Mage.Sets/src/mage/sets/oathofthegatewatch/GladehartCavalry.java +++ b/Mage.Sets/src/mage/sets/oathofthegatewatch/GladehartCavalry.java @@ -102,7 +102,7 @@ class GladehartCavalryTriggeredAbility extends TriggeredAbilityImpl { if (permanent != null && permanent.getControllerId().equals(this.getControllerId()) && permanent.getCardType().contains(CardType.CREATURE) - && permanent.getCounters().getCount(CounterType.P1P1) > 0) { + && permanent.getCounters(game).getCount(CounterType.P1P1) > 0) { return true; } } diff --git a/Mage.Sets/src/mage/sets/odyssey/BombSquad.java b/Mage.Sets/src/mage/sets/odyssey/BombSquad.java index 87bf9c3083e..f6b94f2535b 100644 --- a/Mage.Sets/src/mage/sets/odyssey/BombSquad.java +++ b/Mage.Sets/src/mage/sets/odyssey/BombSquad.java @@ -122,7 +122,7 @@ class BombSquadTriggeredAbility extends TriggeredAbilityImpl { if (event.getData().equals(CounterType.FUSE.getName())) { Permanent permanent = game.getPermanent(event.getTargetId()); if (permanent != null && filter.match(permanent, game)) { - if (4 <= permanent.getCounters().getCount(CounterType.FUSE)) { + if (4 <= permanent.getCounters(game).getCount(CounterType.FUSE)) { for (Effect effect : this.getEffects()) { effect.setTargetPointer(new FixedTarget(permanent.getId())); } @@ -159,7 +159,7 @@ class BombSquadDamgeEffect extends OneShotEffect { public boolean apply(Game game, Ability source) { Permanent creature = game.getPermanent(this.getTargetPointer().getFirst(game, source)); if (creature != null) { - creature.removeCounters(CounterType.FUSE.getName(), creature.getCounters().getCount(CounterType.FUSE), game); + creature.removeCounters(CounterType.FUSE.getName(), creature.getCounters(game).getCount(CounterType.FUSE), game); creature.destroy(source.getSourceId(), game, false); } if (creature == null) { diff --git a/Mage.Sets/src/mage/sets/odyssey/DelayingShield.java b/Mage.Sets/src/mage/sets/odyssey/DelayingShield.java index 2e7965676c5..29e69e6685d 100644 --- a/Mage.Sets/src/mage/sets/odyssey/DelayingShield.java +++ b/Mage.Sets/src/mage/sets/odyssey/DelayingShield.java @@ -134,7 +134,7 @@ class DelayingShieldUpkeepEffect extends OneShotEffect { Player controller = game.getPlayer(source.getControllerId()); Permanent permanent = game.getPermanent(source.getSourceId()); if (controller != null && permanent != null) { - int numCounters = permanent.getCounters().getCount(CounterType.DELAY); + int numCounters = permanent.getCounters(game).getCount(CounterType.DELAY); permanent.removeCounters(CounterType.DELAY.createInstance(numCounters), game); for (int i = numCounters; i > 0; i--) { if (controller.chooseUse(Outcome.Benefit, "Pay {1}{W}? (" + i + " counters left to pay)", source, game)) { diff --git a/Mage.Sets/src/mage/sets/onslaught/Aurification.java b/Mage.Sets/src/mage/sets/onslaught/Aurification.java index 92479ceca51..c864f15cfe8 100644 --- a/Mage.Sets/src/mage/sets/onslaught/Aurification.java +++ b/Mage.Sets/src/mage/sets/onslaught/Aurification.java @@ -155,7 +155,7 @@ public class Aurification extends CardImpl { public boolean apply(Game game, Ability source) { for (Permanent permanent : game.getBattlefield().getAllActivePermanents(CardType.CREATURE)) { if (permanent != null){ - permanent.getCounters().removeAllCounters(CounterType.GOLD); + permanent.getCounters(game).removeAllCounters(CounterType.GOLD); } } return true; diff --git a/Mage.Sets/src/mage/sets/planarchaos/FungalBehemoth.java b/Mage.Sets/src/mage/sets/planarchaos/FungalBehemoth.java index 41e396f1c47..d6191eea3d4 100644 --- a/Mage.Sets/src/mage/sets/planarchaos/FungalBehemoth.java +++ b/Mage.Sets/src/mage/sets/planarchaos/FungalBehemoth.java @@ -124,7 +124,7 @@ class P1P1CountersOnControlledCreaturesCount implements DynamicValue { public int calculate(Game game, Ability sourceAbility, Effect effect) { int count = 0; for (Permanent permanent : game.getBattlefield().getAllActivePermanents(new FilterCreaturePermanent(), sourceAbility.getControllerId(), game)) { - count += permanent.getCounters().getCount(CounterType.P1P1); + count += permanent.getCounters(game).getCount(CounterType.P1P1); } return count; } diff --git a/Mage.Sets/src/mage/sets/ravnica/Necroplasm.java b/Mage.Sets/src/mage/sets/ravnica/Necroplasm.java index 3327d28d264..21b1eb9ec1b 100644 --- a/Mage.Sets/src/mage/sets/ravnica/Necroplasm.java +++ b/Mage.Sets/src/mage/sets/ravnica/Necroplasm.java @@ -103,7 +103,7 @@ class NecroplasmEffect extends OneShotEffect { Player player = game.getPlayer(source.getControllerId()); Permanent sourcePermanent = game.getPermanentOrLKIBattlefield(source.getSourceId()); if (player != null && sourcePermanent != null) { - int numCounters = sourcePermanent.getCounters().getCount(CounterType.P1P1); + int numCounters = sourcePermanent.getCounters(game).getCount(CounterType.P1P1); FilterCreaturePermanent filter = new FilterCreaturePermanent(); filter.add(new ConvertedManaCostPredicate(ComparisonType.Equal, numCounters)); for (Permanent permanent : game.getBattlefield().getActivePermanents(filter, source.getControllerId(), source.getSourceId(), game)) { diff --git a/Mage.Sets/src/mage/sets/returntoravnica/AzorsElocutors.java b/Mage.Sets/src/mage/sets/returntoravnica/AzorsElocutors.java index 39f8c09982f..1507245f11f 100644 --- a/Mage.Sets/src/mage/sets/returntoravnica/AzorsElocutors.java +++ b/Mage.Sets/src/mage/sets/returntoravnica/AzorsElocutors.java @@ -129,7 +129,7 @@ class AzorsElocutorsEffect extends OneShotEffect { Permanent permanent = game.getPermanent(source.getSourceId()); if (permanent != null) { permanent.addCounters(new Counter("filibuster"), game); - if (permanent.getCounters().getCount("filibuster") > 4) { + if (permanent.getCounters(game).getCount("filibuster") > 4) { Player player = game.getPlayer(permanent.getControllerId()); if (player != null) { player.won(game); diff --git a/Mage.Sets/src/mage/sets/riseoftheeldrazi/SphinxBoneWand.java b/Mage.Sets/src/mage/sets/riseoftheeldrazi/SphinxBoneWand.java index cda66dbda5e..7352bac0e9c 100644 --- a/Mage.Sets/src/mage/sets/riseoftheeldrazi/SphinxBoneWand.java +++ b/Mage.Sets/src/mage/sets/riseoftheeldrazi/SphinxBoneWand.java @@ -99,7 +99,7 @@ class SphinxBoneWandEffect extends OneShotEffect { Permanent sourcePermanent = game.getPermanent(source.getSourceId()); if (sourcePermanent != null) { sourcePermanent.addCounters(CounterType.CHARGE.createInstance(), game); - int amount = sourcePermanent.getCounters().getCount(CounterType.CHARGE); + int amount = sourcePermanent.getCounters(game).getCount(CounterType.CHARGE); Permanent permanent = game.getPermanent(source.getFirstTarget()); if (permanent != null) { diff --git a/Mage.Sets/src/mage/sets/riseoftheeldrazi/ThoughtGorger.java b/Mage.Sets/src/mage/sets/riseoftheeldrazi/ThoughtGorger.java index d9fe95cd8f3..64cf6a6e4ff 100644 --- a/Mage.Sets/src/mage/sets/riseoftheeldrazi/ThoughtGorger.java +++ b/Mage.Sets/src/mage/sets/riseoftheeldrazi/ThoughtGorger.java @@ -130,7 +130,7 @@ class ThoughtGorgerEffectLeaves extends OneShotEffect { public boolean apply(Game game, Ability source) { Player player = game.getPlayer(source.getControllerId()); Permanent thoughtGorgerLastState = (Permanent) game.getLastKnownInformation(source.getSourceId(), Zone.BATTLEFIELD); - int numberCounters = thoughtGorgerLastState.getCounters().getCount(CounterType.P1P1); + int numberCounters = thoughtGorgerLastState.getCounters(game).getCount(CounterType.P1P1); if (player != null) { player.drawCards(numberCounters, game); return true; diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/CullingDais.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/CullingDais.java index 81bff54a08b..74ab2c6d085 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/CullingDais.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/CullingDais.java @@ -92,7 +92,7 @@ class CullingDaisEffect extends OneShotEffect { Permanent p = (Permanent) game.getLastKnownInformation(source.getSourceId(), Zone.BATTLEFIELD); Player player = game.getPlayer(source.getControllerId()); if (p != null && player != null) { - int count = p.getCounters().getCount(CounterType.CHARGE); + int count = p.getCounters(game).getCount(CounterType.CHARGE); player.drawCards(count, game); return true; } diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/Grindclock.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/Grindclock.java index 5819d908429..3df7499d4df 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/Grindclock.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/Grindclock.java @@ -83,7 +83,7 @@ class GrindclockEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - int amount = game.getPermanent(source.getSourceId()).getCounters().getCount(CounterType.CHARGE); + int amount = game.getPermanent(source.getSourceId()).getCounters(game).getCount(CounterType.CHARGE); Player targetPlayer = game.getPlayer(source.getFirstTarget()); if (targetPlayer != null) { targetPlayer.moveCards(targetPlayer.getLibrary().getTopCards(game, amount), Zone.GRAVEYARD, source, game); diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/LiegeOfTheTangle.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/LiegeOfTheTangle.java index 6f46999fee7..9d06e013dcd 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/LiegeOfTheTangle.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/LiegeOfTheTangle.java @@ -135,7 +135,7 @@ class LiegeOfTheTangleEffect extends ContinuousEffectImpl { for (Iterator it = affectedObjectList.iterator(); it.hasNext();) { Permanent perm = it.next().getPermanent(game); if (perm != null) { - if (perm.getCounters().getCount(CounterType.AWAKENING) > 0) { + if (perm.getCounters(game).getCount(CounterType.AWAKENING) > 0) { switch (layer) { case TypeChangingEffects_4: if (sublayer == SubLayer.NA) { diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/RatchetBomb.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/RatchetBomb.java index a5b43eea934..93c2f77f477 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/RatchetBomb.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/RatchetBomb.java @@ -94,7 +94,7 @@ public class RatchetBomb extends CardImpl { } } - int count = p.getCounters().getCount(CounterType.CHARGE); + int count = p.getCounters(game).getCount(CounterType.CHARGE); for (Permanent perm: game.getBattlefield().getAllActivePermanents()) { if (perm.getConvertedManaCost() == count && !(perm.getCardType().contains(CardType.LAND))) { perm.destroy(source.getSourceId(), game, false); diff --git a/Mage.Sets/src/mage/sets/scourge/ForgottenAncient.java b/Mage.Sets/src/mage/sets/scourge/ForgottenAncient.java index 497d7b5b2ec..aad2b972b80 100644 --- a/Mage.Sets/src/mage/sets/scourge/ForgottenAncient.java +++ b/Mage.Sets/src/mage/sets/scourge/ForgottenAncient.java @@ -116,7 +116,7 @@ public class ForgottenAncient extends CardImpl { return false; } - int numCounters = sourcePermanent.getCounters().getCount(CounterType.P1P1); + int numCounters = sourcePermanent.getCounters(game).getCount(CounterType.P1P1); ArrayList counterMovements = new ArrayList<>(); do { diff --git a/Mage.Sets/src/mage/sets/shadowmoor/BlowflyInfestation.java b/Mage.Sets/src/mage/sets/shadowmoor/BlowflyInfestation.java index d3056ac4628..dbab73a32e5 100644 --- a/Mage.Sets/src/mage/sets/shadowmoor/BlowflyInfestation.java +++ b/Mage.Sets/src/mage/sets/shadowmoor/BlowflyInfestation.java @@ -92,7 +92,7 @@ class BlowflyInfestationCondition implements Condition { } } if (permanent != null) { - return permanent.getCounters().containsKey(CounterType.M1M1); + return permanent.getCounters(game).containsKey(CounterType.M1M1); } return false; } diff --git a/Mage.Sets/src/mage/sets/shadowmoor/FateTransfer.java b/Mage.Sets/src/mage/sets/shadowmoor/FateTransfer.java index 6555350861c..c0c3986a93a 100644 --- a/Mage.Sets/src/mage/sets/shadowmoor/FateTransfer.java +++ b/Mage.Sets/src/mage/sets/shadowmoor/FateTransfer.java @@ -102,7 +102,7 @@ class FateTransferEffect extends OneShotEffect { if (creatureToMoveCountersFrom != null && creatureToMoveCountersTo != null) { Permanent copyCreature = creatureToMoveCountersFrom.copy(); - for (Counter counter : copyCreature.getCounters().values()) { + for (Counter counter : copyCreature.getCounters(game).values()) { creatureToMoveCountersFrom.removeCounters(counter, game); creatureToMoveCountersTo.addCounters(counter, game); } diff --git a/Mage.Sets/src/mage/sets/shadowmoor/GriefTyrant.java b/Mage.Sets/src/mage/sets/shadowmoor/GriefTyrant.java index 6b1523ee1ee..1c7b61300e0 100644 --- a/Mage.Sets/src/mage/sets/shadowmoor/GriefTyrant.java +++ b/Mage.Sets/src/mage/sets/shadowmoor/GriefTyrant.java @@ -96,7 +96,7 @@ class GriefTyrantEffect extends OneShotEffect { public boolean apply(Game game, Ability source) { Permanent targetCreature = game.getPermanent(targetPointer.getFirst(game, source)); Permanent griefTyrant = game.getPermanentOrLKIBattlefield(source.getSourceId()); - int countersOnGriefTyrant = griefTyrant.getCounters().getCount(CounterType.M1M1); + int countersOnGriefTyrant = griefTyrant.getCounters(game).getCount(CounterType.M1M1); if (targetCreature != null) { targetCreature.addCounters(CounterType.M1M1.createInstance(countersOnGriefTyrant), game); return true; diff --git a/Mage.Sets/src/mage/sets/shadowmoor/Heartmender.java b/Mage.Sets/src/mage/sets/shadowmoor/Heartmender.java index 5d40d09f3da..bd8a7ba4439 100644 --- a/Mage.Sets/src/mage/sets/shadowmoor/Heartmender.java +++ b/Mage.Sets/src/mage/sets/shadowmoor/Heartmender.java @@ -99,7 +99,7 @@ class HeartmenderEffect extends OneShotEffect { } for (Permanent creature : game.getBattlefield().getActivePermanents(filter, source.getControllerId(), game)) { if (creature != null - && creature.getCounters().getCount(counter.getName()) >= counter.getCount()) { + && creature.getCounters(game).getCount(counter.getName()) >= counter.getCount()) { creature.removeCounters(counter.getName(), counter.getCount(), game); game.informPlayers(new StringBuilder("Removed ").append(counter.getCount()).append(" ").append(counter.getName()) .append(" counter from ").append(creature.getName()).toString()); diff --git a/Mage.Sets/src/mage/sets/shadowmoor/LeechBonder.java b/Mage.Sets/src/mage/sets/shadowmoor/LeechBonder.java index 3877ea3184b..f4ca31fb615 100644 --- a/Mage.Sets/src/mage/sets/shadowmoor/LeechBonder.java +++ b/Mage.Sets/src/mage/sets/shadowmoor/LeechBonder.java @@ -119,13 +119,13 @@ class LeechBonderEffect extends OneShotEffect { } Choice choice = new ChoiceImpl(); Set possibleChoices = new HashSet<>(); - for (String counterName : fromPermanent.getCounters().keySet()) { + for (String counterName : fromPermanent.getCounters(game).keySet()) { possibleChoices.add(counterName); } choice.setChoices(possibleChoices); if (controller.choose(outcome, choice, game)) { String chosen = choice.getChoice(); - if (fromPermanent.getCounters().containsKey(chosen)) { + if (fromPermanent.getCounters(game).containsKey(chosen)) { CounterType counterType = CounterType.findByName(chosen); if (counterType != null) { Counter counter = counterType.createInstance(); diff --git a/Mage.Sets/src/mage/sets/shadowmoor/Woeleecher.java b/Mage.Sets/src/mage/sets/shadowmoor/Woeleecher.java index d7ea5cad845..a3dfcc05ba3 100644 --- a/Mage.Sets/src/mage/sets/shadowmoor/Woeleecher.java +++ b/Mage.Sets/src/mage/sets/shadowmoor/Woeleecher.java @@ -102,9 +102,9 @@ class WoeleecherEffect extends OneShotEffect { Permanent target = game.getPermanent(source.getFirstTarget()); Player you = game.getPlayer(source.getControllerId()); if (target != null) { - numberCountersOriginal = target.getCounters().getCount(CounterType.M1M1); + numberCountersOriginal = target.getCounters(game).getCount(CounterType.M1M1); target.removeCounters(CounterType.M1M1.createInstance(), game); - numberCountersAfter = target.getCounters().getCount(CounterType.M1M1); + numberCountersAfter = target.getCounters(game).getCount(CounterType.M1M1); if (numberCountersAfter < numberCountersOriginal && you != null) { you.gainLife(2, game); return true; diff --git a/Mage.Sets/src/mage/sets/shadowsoverinnistrad/BrainInAJar.java b/Mage.Sets/src/mage/sets/shadowsoverinnistrad/BrainInAJar.java index 4994645e6ed..4ef113d70fd 100644 --- a/Mage.Sets/src/mage/sets/shadowsoverinnistrad/BrainInAJar.java +++ b/Mage.Sets/src/mage/sets/shadowsoverinnistrad/BrainInAJar.java @@ -106,7 +106,7 @@ class BrainInAJarCastEffect extends OneShotEffect { Player controller = game.getPlayer(source.getControllerId()); Permanent sourceObject = game.getPermanent(source.getSourceId()); if (controller != null && sourceObject != null) { - int counters = sourceObject.getCounters().getCount(CounterType.CHARGE); + int counters = sourceObject.getCounters(game).getCount(CounterType.CHARGE); FilterCard filter = new FilterInstantOrSorceryCard(); filter.add(new ConvertedManaCostPredicate(Filter.ComparisonType.Equal, counters)); int cardsToCast = controller.getHand().count(filter, source.getControllerId(), source.getSourceId(), game); diff --git a/Mage.Sets/src/mage/sets/stronghold/CrovaxTheCursed.java b/Mage.Sets/src/mage/sets/stronghold/CrovaxTheCursed.java index aac366b2002..cabc6f546db 100644 --- a/Mage.Sets/src/mage/sets/stronghold/CrovaxTheCursed.java +++ b/Mage.Sets/src/mage/sets/stronghold/CrovaxTheCursed.java @@ -113,11 +113,11 @@ class CrovaxTheCursedEffect extends OneShotEffect { if (creatures > 0 && controller.chooseUse(outcome, "Sacrifice a creature?", source, game)) { if (new SacrificeControllerEffect(new FilterCreaturePermanent(), 1, "").apply(game, source)) { if (sourceObject != null) { - sourceObject.getCounters().addCounter(CounterType.P1P1.createInstance()); + sourceObject.getCounters(game).addCounter(CounterType.P1P1.createInstance()); game.informPlayers(controller.getLogName() + " puts a +1/+1 counter on " + sourceObject.getName()); } } - } else if (sourceObject != null && sourceObject.getCounters().containsKey(CounterType.P1P1)) { + } else if (sourceObject != null && sourceObject.getCounters(game).containsKey(CounterType.P1P1)) { sourceObject.removeCounters(CounterType.P1P1.getName(), 1, game); game.informPlayers(controller.getLogName() + " removes a +1/+1 counter from " + sourceObject.getName()); } diff --git a/Mage.Sets/src/mage/sets/tempest/EssenceBottle.java b/Mage.Sets/src/mage/sets/tempest/EssenceBottle.java index 2bc7202af2f..6ac36a749be 100644 --- a/Mage.Sets/src/mage/sets/tempest/EssenceBottle.java +++ b/Mage.Sets/src/mage/sets/tempest/EssenceBottle.java @@ -101,7 +101,7 @@ class EssenceBottleCost extends CostImpl { public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana, Cost costToPay) { Permanent permanent = game.getPermanent(ability.getSourceId()); if (permanent != null) { - this.removedCounters = permanent.getCounters().getCount(CounterType.ELIXIR); + this.removedCounters = permanent.getCounters(game).getCount(CounterType.ELIXIR); if (this.removedCounters > 0) { permanent.removeCounters(CounterType.ELIXIR.createInstance(this.removedCounters), game); } diff --git a/Mage.Sets/src/mage/sets/tempest/LegacysAllure.java b/Mage.Sets/src/mage/sets/tempest/LegacysAllure.java index 0ece69c2ba6..63072ce7777 100644 --- a/Mage.Sets/src/mage/sets/tempest/LegacysAllure.java +++ b/Mage.Sets/src/mage/sets/tempest/LegacysAllure.java @@ -80,7 +80,7 @@ public class LegacysAllure extends CardImpl { if (ability.getOriginalId().equals(originalId)) { Permanent sourcePermanent = game.getPermanent(ability.getSourceId()); if (sourcePermanent != null) { - int numbCounters = sourcePermanent.getCounters().getCount("treasure"); + int numbCounters = sourcePermanent.getCounters(game).getCount("treasure"); FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power less than or equal to the number of treasure counters on " + getLogName()); filter.add(new PowerPredicate(Filter.ComparisonType.LessThan, numbCounters + 1)); ability.getTargets().clear(); diff --git a/Mage.Sets/src/mage/sets/tempest/Magmasaur.java b/Mage.Sets/src/mage/sets/tempest/Magmasaur.java index 2cdccfd05c0..2de4991ac7d 100644 --- a/Mage.Sets/src/mage/sets/tempest/Magmasaur.java +++ b/Mage.Sets/src/mage/sets/tempest/Magmasaur.java @@ -112,7 +112,7 @@ class MagmasaurEffect extends OneShotEffect { if (controller.chooseUse(outcome, "Remove a +1/+1 counter from " + sourceObject.getLogName() + "?", source, game)) { sourceObject.removeCounters(CounterType.P1P1.getName(), 1, game); } else { - int counters = sourceObject.getCounters().getCount(CounterType.P1P1); + int counters = sourceObject.getCounters(game).getCount(CounterType.P1P1); sourceObject.sacrifice(source.getSourceId(), game); new DamageEverythingEffect(counters, filter).apply(game, source); } diff --git a/Mage.Sets/src/mage/sets/tempest/TortureChamber.java b/Mage.Sets/src/mage/sets/tempest/TortureChamber.java index 5a464f1cd12..21965c84e66 100644 --- a/Mage.Sets/src/mage/sets/tempest/TortureChamber.java +++ b/Mage.Sets/src/mage/sets/tempest/TortureChamber.java @@ -106,7 +106,7 @@ class TortureChamberCost extends CostImpl { public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana, Cost costToPay) { Permanent permanent = game.getPermanent(ability.getSourceId()); if (permanent != null) { - this.removedCounters = permanent.getCounters().getCount(CounterType.PAIN); + this.removedCounters = permanent.getCounters(game).getCount(CounterType.PAIN); if (this.removedCounters > 0) { permanent.removeCounters(CounterType.PAIN.createInstance(this.removedCounters), game); } @@ -146,7 +146,7 @@ class TortureChamberEffect1 extends OneShotEffect { Player player = game.getPlayer(source.getControllerId()); Permanent permanent = game.getPermanent(source.getSourceId()); if (player != null && permanent != null) { - int painCounters = permanent.getCounters().getCount(CounterType.PAIN); + int painCounters = permanent.getCounters(game).getCount(CounterType.PAIN); player.damage(painCounters, source.getSourceId(), game, false, true); return true; } diff --git a/Mage.Sets/src/mage/sets/timespiral/Clockspinning.java b/Mage.Sets/src/mage/sets/timespiral/Clockspinning.java index 293ffeb4c90..df4fbf408b6 100644 --- a/Mage.Sets/src/mage/sets/timespiral/Clockspinning.java +++ b/Mage.Sets/src/mage/sets/timespiral/Clockspinning.java @@ -95,13 +95,13 @@ class ClockspinningAddOrRemoveCounterEffect extends OneShotEffect { private Counter selectCounterType(Game game, Ability source, Permanent permanent) { Player controller = game.getPlayer(source.getControllerId()); - if (controller != null && permanent.getCounters().size() > 0) { + if (controller != null && permanent.getCounters(game).size() > 0) { String counterName = null; - if (permanent.getCounters().size() > 1) { + if (permanent.getCounters(game).size() > 1) { Choice choice = new ChoiceImpl(true); Set choices = new HashSet<>(2); - for (Counter counter : permanent.getCounters().values()) { - if (permanent.getCounters().getCount(counter.getName()) > 0) { + for (Counter counter : permanent.getCounters(game).values()) { + if (permanent.getCounters(game).getCount(counter.getName()) > 0) { choices.add(counter.getName()); } } @@ -110,7 +110,7 @@ class ClockspinningAddOrRemoveCounterEffect extends OneShotEffect { controller.choose(Outcome.Neutral, choice, game); counterName = choice.getChoice(); } else { - for (Counter counter : permanent.getCounters().values()) { + for (Counter counter : permanent.getCounters(game).values()) { if (counter.getCount() > 0) { counterName = counter.getName(); } diff --git a/Mage.Sets/src/mage/sets/timespiral/ClockworkHydra.java b/Mage.Sets/src/mage/sets/timespiral/ClockworkHydra.java index d66edb5b41c..6477000c753 100644 --- a/Mage.Sets/src/mage/sets/timespiral/ClockworkHydra.java +++ b/Mage.Sets/src/mage/sets/timespiral/ClockworkHydra.java @@ -106,7 +106,7 @@ class ClockworkHydraEffect extends OneShotEffect { public boolean apply(Game game, Ability source) { Permanent permanent = game.getPermanent(source.getSourceId()); Player controller = game.getPlayer(source.getControllerId()); - if (controller != null && permanent != null && permanent.getCounters().getCount(CounterType.P1P1) > 0) { + if (controller != null && permanent != null && permanent.getCounters(game).getCount(CounterType.P1P1) > 0) { permanent.removeCounters(CounterType.P1P1.createInstance(), game); Target target = new TargetCreatureOrPlayer(); if (controller.chooseTarget(outcome, target, source, game)) { diff --git a/Mage.Sets/src/mage/sets/timespiral/JhoirasTimebug.java b/Mage.Sets/src/mage/sets/timespiral/JhoirasTimebug.java index a6775e6a347..8eb3ea44e26 100644 --- a/Mage.Sets/src/mage/sets/timespiral/JhoirasTimebug.java +++ b/Mage.Sets/src/mage/sets/timespiral/JhoirasTimebug.java @@ -105,7 +105,7 @@ class JhoirasTimebugEffect extends OneShotEffect { Player controller = game.getPlayer(source.getControllerId()); if (controller != null) { Permanent permanent = game.getPermanent(this.getTargetPointer().getFirst(game, source)); - if (permanent != null && permanent.getCounters().containsKey(CounterType.TIME)) { + if (permanent != null && permanent.getCounters(game).containsKey(CounterType.TIME)) { if (controller.chooseUse(Outcome.Benefit, "Add a time counter? (Otherwise remove one)", source, game)) { permanent.addCounters(CounterType.TIME.createInstance(), game); } diff --git a/Mage.Sets/src/mage/sets/timespiral/PhantomWurm.java b/Mage.Sets/src/mage/sets/timespiral/PhantomWurm.java index 316f935abaa..49597fd9f37 100644 --- a/Mage.Sets/src/mage/sets/timespiral/PhantomWurm.java +++ b/Mage.Sets/src/mage/sets/timespiral/PhantomWurm.java @@ -124,7 +124,7 @@ class PhantomWurmPreventionEffect extends PreventionEffectImpl { } } - if(removeCounter && permanent.getCounters().containsKey(CounterType.P1P1)) { + if(removeCounter && permanent.getCounters(game).containsKey(CounterType.P1P1)) { StringBuilder sb = new StringBuilder(permanent.getName()).append(": "); permanent.removeCounters(CounterType.P1P1.createInstance(), game); sb.append("Removed a +1/+1 counter "); diff --git a/Mage.Sets/src/mage/sets/timespiral/ThelonOfHavenwood.java b/Mage.Sets/src/mage/sets/timespiral/ThelonOfHavenwood.java index fd063d51434..0211746a0c1 100644 --- a/Mage.Sets/src/mage/sets/timespiral/ThelonOfHavenwood.java +++ b/Mage.Sets/src/mage/sets/timespiral/ThelonOfHavenwood.java @@ -118,7 +118,7 @@ class ThelonOfHavenwoodBoostEffect extends ContinuousEffectImpl { @Override public boolean apply(Game game, Ability source) { for (Permanent creature : game.getBattlefield().getActivePermanents(filter, source.getControllerId(), source.getSourceId(), game)) { - int numCounters = creature.getCounters().getCount(CounterType.SPORE); + int numCounters = creature.getCounters(game).getCount(CounterType.SPORE); if (numCounters > 0) { creature.addPower(numCounters); creature.addToughness(numCounters); diff --git a/Mage.Sets/src/mage/sets/torment/CephalidVandal.java b/Mage.Sets/src/mage/sets/torment/CephalidVandal.java index 58ead923f01..e7a0fffd5ee 100644 --- a/Mage.Sets/src/mage/sets/torment/CephalidVandal.java +++ b/Mage.Sets/src/mage/sets/torment/CephalidVandal.java @@ -97,7 +97,7 @@ class CephalidVandalEffect extends OneShotEffect { Player controller = game.getPlayer(source.getControllerId()); Permanent permanent = game.getPermanent(source.getSourceId()); if (permanent != null && controller != null) { - int amount = permanent.getCounters().getCount(CounterType.SHRED); + int amount = permanent.getCounters(game).getCount(CounterType.SHRED); controller.moveCards(controller.getLibrary().getTopCards(game, amount), Zone.GRAVEYARD, source, game); } return true; diff --git a/Mage.Sets/src/mage/sets/urzaslegacy/Anthroplasm.java b/Mage.Sets/src/mage/sets/urzaslegacy/Anthroplasm.java index 09abe519993..5a941a92057 100644 --- a/Mage.Sets/src/mage/sets/urzaslegacy/Anthroplasm.java +++ b/Mage.Sets/src/mage/sets/urzaslegacy/Anthroplasm.java @@ -100,7 +100,7 @@ class AnthroplasmEffect extends OneShotEffect { Permanent permanent = game.getPermanent(source.getSourceId()); if (permanent != null) { //Remove all +1/+1 counters - permanent.removeCounters(permanent.getCounters().get(CounterType.P1P1.getName()), game); + permanent.removeCounters(permanent.getCounters(game).get(CounterType.P1P1.getName()), game); //put X +1/+1 counters permanent.addCounters(CounterType.P1P1.createInstance(source.getManaCostsToPay().getX()), game); return true; diff --git a/Mage.Sets/src/mage/sets/urzaslegacy/MoltenHydra.java b/Mage.Sets/src/mage/sets/urzaslegacy/MoltenHydra.java index 3e0f9f8cc73..48f3cbdb9c4 100644 --- a/Mage.Sets/src/mage/sets/urzaslegacy/MoltenHydra.java +++ b/Mage.Sets/src/mage/sets/urzaslegacy/MoltenHydra.java @@ -114,7 +114,7 @@ class RemoveAllCountersSourceCost extends CostImpl { public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana, Cost costToPay) { Permanent permanent = game.getPermanent(sourceId); if (permanent != null) { - this.amount = permanent.getCounters().getCount(name); + this.amount = permanent.getCounters(game).getCount(name); permanent.removeCounters(name, amount, game); this.paid = true; } diff --git a/Mage.Sets/src/mage/sets/urzassaga/Smokestack.java b/Mage.Sets/src/mage/sets/urzassaga/Smokestack.java index 4622fa38b22..42d7bcbbdb3 100644 --- a/Mage.Sets/src/mage/sets/urzassaga/Smokestack.java +++ b/Mage.Sets/src/mage/sets/urzassaga/Smokestack.java @@ -93,7 +93,7 @@ class SmokestackEffect extends OneShotEffect { Player activePlayer = game.getPlayer(getTargetPointer().getFirst(game, source)); Permanent sourcePermanent = game.getPermanentOrLKIBattlefield(source.getSourceId()); if (activePlayer != null && sourcePermanent != null) { - int count = sourcePermanent.getCounters().getCount("Soot"); + int count = sourcePermanent.getCounters(game).getCount("Soot"); if (count > 0) { int amount = Math.min(count, game.getBattlefield().countAll(new FilterControlledPermanent(), activePlayer.getId(), game)); Target target = new TargetControlledPermanent(amount, amount, new FilterControlledPermanent(), false); diff --git a/Mage.Sets/src/mage/sets/urzassaga/VileRequiem.java b/Mage.Sets/src/mage/sets/urzassaga/VileRequiem.java index e5d630bcae6..eb05d84c599 100644 --- a/Mage.Sets/src/mage/sets/urzassaga/VileRequiem.java +++ b/Mage.Sets/src/mage/sets/urzassaga/VileRequiem.java @@ -88,7 +88,7 @@ public class VileRequiem extends CardImpl { if (ability.getOriginalId().equals(originalId)) { Permanent sourcePermanent = game.getPermanent(ability.getSourceId()); if (sourcePermanent != null) { - int numberCounters = sourcePermanent.getCounters().getCount(CounterType.VERSE); + int numberCounters = sourcePermanent.getCounters(game).getCount(CounterType.VERSE); ability.getTargets().clear(); FilterCreaturePermanent newFilter = filter.copy(); newFilter.setMessage(new StringBuilder("up to ").append(CardUtil.numberToText(numberCounters)).append(" target nonblack creatures").toString()); diff --git a/Mage.Sets/src/mage/sets/vintagemasters/MarchesaTheBlackRose.java b/Mage.Sets/src/mage/sets/vintagemasters/MarchesaTheBlackRose.java index f59007cb13f..50f525e503f 100644 --- a/Mage.Sets/src/mage/sets/vintagemasters/MarchesaTheBlackRose.java +++ b/Mage.Sets/src/mage/sets/vintagemasters/MarchesaTheBlackRose.java @@ -121,7 +121,7 @@ class MarchesaTheBlackRoseTriggeredAbility extends TriggeredAbilityImpl { if (permanent != null && permanent.getControllerId().equals(this.getControllerId()) && permanent.getCardType().contains(CardType.CREATURE) - && permanent.getCounters().getCount(CounterType.P1P1) > 0) { + && permanent.getCounters(game).getCount(CounterType.P1P1) > 0) { for (Effect effect : this.getEffects()) { effect.setTargetPointer(new FixedTarget(permanent.getId(), permanent.getZoneChangeCounter(game) + 1)); } diff --git a/Mage.Sets/src/mage/sets/vintagemasters/SaprolingBurst.java b/Mage.Sets/src/mage/sets/vintagemasters/SaprolingBurst.java index aa82cc0b0c5..97f10ddd56b 100644 --- a/Mage.Sets/src/mage/sets/vintagemasters/SaprolingBurst.java +++ b/Mage.Sets/src/mage/sets/vintagemasters/SaprolingBurst.java @@ -151,7 +151,7 @@ class SaprolingBurstTokenDynamicValue implements DynamicValue { public int calculate(Game game, Ability sourceAbility, Effect effect) { Permanent permanent = this.saprolingBurstMOR.getPermanent(game); if (permanent != null) { - return permanent.getCounters().getCount(CounterType.FADE); + return permanent.getCounters(game).getCount(CounterType.FADE); } return 0; } diff --git a/Mage.Sets/src/mage/sets/visions/PhyrexianMarauder.java b/Mage.Sets/src/mage/sets/visions/PhyrexianMarauder.java index b28df13771b..f52a2517472 100644 --- a/Mage.Sets/src/mage/sets/visions/PhyrexianMarauder.java +++ b/Mage.Sets/src/mage/sets/visions/PhyrexianMarauder.java @@ -99,7 +99,7 @@ class PhyrexianMarauderCantAttackUnlessYouPayEffect extends CantAttackBlockUnles public ManaCosts getManaCostToPay(GameEvent event, Ability source, Game game) { Permanent sourceObject = game.getPermanent(source.getSourceId()); if (sourceObject != null) { - int counter = sourceObject.getCounters().getCount(CounterType.P1P1); + int counter = sourceObject.getCounters(game).getCount(CounterType.P1P1); if (counter > 0) { return new ManaCostsImpl<>("{" + counter + "}"); } diff --git a/Mage.Sets/src/mage/sets/worldwake/QuestForTheNihilStone.java b/Mage.Sets/src/mage/sets/worldwake/QuestForTheNihilStone.java index 86429ffe035..65f6c15be99 100644 --- a/Mage.Sets/src/mage/sets/worldwake/QuestForTheNihilStone.java +++ b/Mage.Sets/src/mage/sets/worldwake/QuestForTheNihilStone.java @@ -134,7 +134,7 @@ class QuestForTheNihilStoneTriggeredAbility2 extends TriggeredAbilityImpl { Player opponent = game.getPlayer(event.getPlayerId()); if (opponent != null && opponent.getHand().size() == 0 - && quest.getCounters().getCount(CounterType.QUEST) >= 2) { + && quest.getCounters(game).getCount(CounterType.QUEST) >= 2) { for (Effect effect : this.getEffects()) { effect.setTargetPointer(new FixedTarget(opponent.getId())); return true; diff --git a/Mage.Sets/src/mage/sets/worldwake/QuestForUlasTemple.java b/Mage.Sets/src/mage/sets/worldwake/QuestForUlasTemple.java index 62939a97ce6..511505a4452 100644 --- a/Mage.Sets/src/mage/sets/worldwake/QuestForUlasTemple.java +++ b/Mage.Sets/src/mage/sets/worldwake/QuestForUlasTemple.java @@ -141,7 +141,7 @@ class QuestForUlasTempleTriggeredAbility extends TriggeredAbilityImpl { @Override public boolean checkTrigger(GameEvent event, Game game) { Permanent quest = game.getPermanent(super.getSourceId()); - return quest != null && quest.getCounters().getCount(CounterType.QUEST) >= 3; + return quest != null && quest.getCounters(game).getCount(CounterType.QUEST) >= 3; } @Override diff --git a/Mage.Sets/src/mage/sets/zendikar/ArchmageAscension.java b/Mage.Sets/src/mage/sets/zendikar/ArchmageAscension.java index bf5da3cf616..98323b03867 100644 --- a/Mage.Sets/src/mage/sets/zendikar/ArchmageAscension.java +++ b/Mage.Sets/src/mage/sets/zendikar/ArchmageAscension.java @@ -158,7 +158,7 @@ class ArchmageAscensionReplacementEffect extends ReplacementEffectImpl { Player you = game.getPlayer(source.getControllerId()); return event.getPlayerId().equals(source.getControllerId()) && archmage != null - && archmage.getCounters().getCount(CounterType.QUEST) >= 6 + && archmage.getCounters(game).getCount(CounterType.QUEST) >= 6 && you != null && you.chooseUse(Outcome.Benefit, "Would you like to search your library instead of drawing a card?", source, game); } diff --git a/Mage.Sets/src/mage/sets/zendikar/BeastmasterAscension.java b/Mage.Sets/src/mage/sets/zendikar/BeastmasterAscension.java index c396f64f6db..718265ee1e5 100644 --- a/Mage.Sets/src/mage/sets/zendikar/BeastmasterAscension.java +++ b/Mage.Sets/src/mage/sets/zendikar/BeastmasterAscension.java @@ -84,7 +84,7 @@ class BeastmasterAscensionEffect extends BoostControlledEffect { @Override public boolean apply(Game game, Ability source) { Permanent permanent = game.getPermanent(source.getSourceId()); - if (permanent != null && permanent.getCounters().getCount(CounterType.QUEST) > 6) { + if (permanent != null && permanent.getCounters(game).getCount(CounterType.QUEST) > 6) { super.apply(game, source); } return false; diff --git a/Mage.Sets/src/mage/sets/zendikar/EternityVessel.java b/Mage.Sets/src/mage/sets/zendikar/EternityVessel.java index e98268f67c0..2717b1f5a9d 100644 --- a/Mage.Sets/src/mage/sets/zendikar/EternityVessel.java +++ b/Mage.Sets/src/mage/sets/zendikar/EternityVessel.java @@ -117,7 +117,7 @@ class EternityVesselEffect2 extends OneShotEffect { Permanent vessel = game.getPermanent(source.getSourceId()); Player controller = game.getPlayer(source.getControllerId()); if (vessel != null && controller != null) { - controller.setLife(vessel.getCounters().getCount(CounterType.CHARGE), game); + controller.setLife(vessel.getCounters(game).getCount(CounterType.CHARGE), game); return true; } return false; diff --git a/Mage.Sets/src/mage/sets/zendikar/LuminarchAscension.java b/Mage.Sets/src/mage/sets/zendikar/LuminarchAscension.java index 2a679d24b86..1fa4e3c90c4 100644 --- a/Mage.Sets/src/mage/sets/zendikar/LuminarchAscension.java +++ b/Mage.Sets/src/mage/sets/zendikar/LuminarchAscension.java @@ -125,7 +125,7 @@ class SourceHasCountersCost extends CostImpl { @Override public boolean canPay(Ability ability, UUID sourceId, UUID controllerId, Game game) { - return (game.getPermanent(sourceId).getCounters().getCount(counterType) >= counters); + return (game.getPermanent(sourceId).getCounters(game).getCount(counterType) >= counters); } @Override diff --git a/Mage.Sets/src/mage/sets/zendikar/ObsidianFireheart.java b/Mage.Sets/src/mage/sets/zendikar/ObsidianFireheart.java index 20326b53f7c..5347f1fa919 100644 --- a/Mage.Sets/src/mage/sets/zendikar/ObsidianFireheart.java +++ b/Mage.Sets/src/mage/sets/zendikar/ObsidianFireheart.java @@ -115,7 +115,7 @@ class ObsidianFireheartGainAbilityEffect extends GainAbilityTargetEffect { @Override public boolean isInactive(Ability source, Game game) { Permanent land = game.getPermanent(this.targetPointer.getFirst(game, source)); - if (land != null && land.getCounters().getCount(CounterType.BLAZE) < 1) { + if (land != null && land.getCounters(game).getCount(CounterType.BLAZE) < 1) { return true; } return false; diff --git a/Mage.Sets/src/mage/sets/zendikar/PyromancerAscension.java b/Mage.Sets/src/mage/sets/zendikar/PyromancerAscension.java index e45e614d651..95793a88a77 100644 --- a/Mage.Sets/src/mage/sets/zendikar/PyromancerAscension.java +++ b/Mage.Sets/src/mage/sets/zendikar/PyromancerAscension.java @@ -151,7 +151,7 @@ class PyromancerAscensionCopyTriggeredAbility extends TriggeredAbilityImpl { Spell spell = game.getStack().getSpell(event.getTargetId()); if (isControlledInstantOrSorcery(spell)) { Permanent permanent = game.getBattlefield().getPermanent(this.getSourceId()); - if (permanent != null && permanent.getCounters().getCount(CounterType.QUEST) >= 2) { + if (permanent != null && permanent.getCounters(game).getCount(CounterType.QUEST) >= 2) { this.getEffects().get(0).setTargetPointer(new FixedTarget(spell.getId())); return true; } diff --git a/Mage.Sets/src/mage/sets/zendikar/VampireHexmage.java b/Mage.Sets/src/mage/sets/zendikar/VampireHexmage.java index b51edc62b2c..819b24d691a 100644 --- a/Mage.Sets/src/mage/sets/zendikar/VampireHexmage.java +++ b/Mage.Sets/src/mage/sets/zendikar/VampireHexmage.java @@ -100,7 +100,7 @@ class VampireHexmageEffect extends OneShotEffect { Permanent permanent = game.getPermanent(target.getFirstTarget()); if (permanent != null) { - for(Counter counter : permanent.getCounters().values()){ + for(Counter counter : permanent.getCounters(game).values()){ permanent.removeCounters(counter, game); } diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/abilities/activated/LevelUpAbilityTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/activated/LevelUpAbilityTest.java index 8eda402cc24..dfc038e1a60 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/abilities/activated/LevelUpAbilityTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/activated/LevelUpAbilityTest.java @@ -27,7 +27,7 @@ public class LevelUpAbilityTest extends CardTestPlayerBase { execute(); Permanent master = getPermanent("Transcendent Master", playerA.getId()); - Assert.assertTrue(master.getCounters().isEmpty()); + Assert.assertTrue(master.getCounters(currentGame).isEmpty()); Assert.assertEquals(3, master.getPower().getValue()); Assert.assertEquals(3, master.getToughness().getValue()); @@ -49,7 +49,7 @@ public class LevelUpAbilityTest extends CardTestPlayerBase { execute(); Permanent master = getPermanent("Transcendent Master", playerA.getId()); - Assert.assertEquals(1, master.getCounters().getCount(CounterType.LEVEL)); + Assert.assertEquals(1, master.getCounters(currentGame).getCount(CounterType.LEVEL)); Assert.assertEquals(3, master.getPower().getValue()); Assert.assertEquals(3, master.getToughness().getValue()); @@ -73,7 +73,7 @@ public class LevelUpAbilityTest extends CardTestPlayerBase { execute(); Permanent master = getPermanent("Transcendent Master", playerA.getId()); - Assert.assertEquals(6, master.getCounters().getCount(CounterType.LEVEL)); + Assert.assertEquals(6, master.getCounters(currentGame).getCount(CounterType.LEVEL)); Assert.assertEquals(6, master.getPower().getValue()); Assert.assertEquals(6, master.getToughness().getValue()); @@ -99,7 +99,7 @@ public class LevelUpAbilityTest extends CardTestPlayerBase { execute(); Permanent master = getPermanent("Transcendent Master", playerA.getId()); - Assert.assertEquals(12, master.getCounters().getCount(CounterType.LEVEL)); + Assert.assertEquals(12, master.getCounters(currentGame).getCount(CounterType.LEVEL)); Assert.assertEquals("Power different", 9, master.getPower().getValue()); Assert.assertEquals("Toughness different", 9, master.getToughness().getValue()); @@ -123,7 +123,7 @@ public class LevelUpAbilityTest extends CardTestPlayerBase { execute(); Permanent master = getPermanent("Transcendent Master", playerA.getId()); - Assert.assertEquals(15, master.getCounters().getCount(CounterType.LEVEL)); + Assert.assertEquals(15, master.getCounters(currentGame).getCount(CounterType.LEVEL)); Assert.assertEquals("Power different", 9, master.getPower().getValue()); Assert.assertEquals("Toughness different", 9, master.getToughness().getValue()); diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/copy/VesuvaTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/copy/VesuvaTest.java index 5115f62996b..7ac84a509ab 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/copy/VesuvaTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/copy/VesuvaTest.java @@ -96,7 +96,7 @@ public class VesuvaTest extends CardTestPlayerBase { Permanent darkDepth = getPermanent("Dark Depths", playerA); if (darkDepth != null) { - Assert.assertEquals(10, darkDepth.getCounters().getCount("ice")); + Assert.assertEquals(10, darkDepth.getCounters(currentGame).getCount("ice")); } assertTappedCount("Dark Depths", true, 1); } diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/single/ChronozoaTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/single/ChronozoaTest.java index 7125bdce733..0112beef2c9 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/single/ChronozoaTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/single/ChronozoaTest.java @@ -65,7 +65,7 @@ public class ChronozoaTest extends CardTestPlayerBase { Assert.assertEquals("Chronozoa has to be a token", true, creature instanceof PermanentToken); // Make sure each token has 2 time counters - final Counters counters = creature.getCounters(); + final Counters counters = creature.getCounters(currentGame); Assert.assertEquals(1, counters.size()); for(final Counter counter : counters.values()) { Assert.assertEquals(CounterType.TIME.getName(), counter.getName()); diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/single/DustOfMomentsTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/single/DustOfMomentsTest.java index bd0af195e47..0368051b658 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/single/DustOfMomentsTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/single/DustOfMomentsTest.java @@ -30,7 +30,7 @@ public class DustOfMomentsTest extends CardTestPlayerBase { for (final Permanent creature : activeCreatures) { Assert.assertEquals("Chronozoa", creature.getName()); - Assert.assertEquals(3, creature.getCounters().getCount(CounterType.TIME)); + Assert.assertEquals(3, creature.getCounters(currentGame).getCount(CounterType.TIME)); } // Check time counters on kraken assertCounterOnExiledCardCount("Deep-Sea Kraken", CounterType.TIME, 6); diff --git a/Mage.Tests/src/test/java/org/mage/test/serverside/base/impl/CardTestPlayerAPIImpl.java b/Mage.Tests/src/test/java/org/mage/test/serverside/base/impl/CardTestPlayerAPIImpl.java index e4177371fc9..fc92814a8b6 100644 --- a/Mage.Tests/src/test/java/org/mage/test/serverside/base/impl/CardTestPlayerAPIImpl.java +++ b/Mage.Tests/src/test/java/org/mage/test/serverside/base/impl/CardTestPlayerAPIImpl.java @@ -30,7 +30,6 @@ import org.junit.Assert; import org.junit.Before; import org.mage.test.player.TestPlayer; import org.mage.test.serverside.base.CardTestAPI; -import org.mage.test.serverside.base.CardTestAPI.GameResult; import org.mage.test.serverside.base.MageTestPlayerBase; /** @@ -637,7 +636,7 @@ public abstract class CardTestPlayerAPIImpl extends MageTestPlayerBase implement } } Assert.assertNotNull("There is no such permanent " + (player == null ? "" : "for player " + player.getName()) + " on the battlefield, cardName=" + cardName, found); - Assert.assertEquals("(Battlefield) Counter counts are not equal (" + cardName + ":" + type + ")", count, found.getCounters().getCount(type)); + Assert.assertEquals("(Battlefield) Counter counts are not equal (" + cardName + ":" + type + ")", count, found.getCounters(currentGame).getCount(type)); } /** diff --git a/Mage/src/main/java/mage/abilities/condition/common/AttachedToCounterCondition.java b/Mage/src/main/java/mage/abilities/condition/common/AttachedToCounterCondition.java index f23dfc3505a..644d753a09a 100644 --- a/Mage/src/main/java/mage/abilities/condition/common/AttachedToCounterCondition.java +++ b/Mage/src/main/java/mage/abilities/condition/common/AttachedToCounterCondition.java @@ -70,13 +70,13 @@ public class AttachedToCounterCondition implements Condition { return false; } if (from != -1) { //range compare - int count = attachedTo.getCounters().getCount(counterType); + int count = attachedTo.getCounters(game).getCount(counterType); if (to == Integer.MAX_VALUE) { return count >= from; } return count >= from && count <= to; } else { // single compare (lte) - return attachedTo.getCounters().getCount(counterType) >= amount; + return attachedTo.getCounters(game).getCount(counterType) >= amount; } } } diff --git a/Mage/src/main/java/mage/abilities/condition/common/LastTimeCounterRemovedCondition.java b/Mage/src/main/java/mage/abilities/condition/common/LastTimeCounterRemovedCondition.java index 0c47125c9ca..a68e20036f7 100644 --- a/Mage/src/main/java/mage/abilities/condition/common/LastTimeCounterRemovedCondition.java +++ b/Mage/src/main/java/mage/abilities/condition/common/LastTimeCounterRemovedCondition.java @@ -26,7 +26,7 @@ public class LastTimeCounterRemovedCondition implements Condition{ permanent = (Permanent) game.getLastKnownInformation(source.getSourceId(), Zone.BATTLEFIELD); } if (permanent != null) { - final int timeCounters = permanent.getCounters().getCount(CounterType.TIME); + final int timeCounters = permanent.getCounters(game).getCount(CounterType.TIME); return timeCounters == 0; } else { return false; diff --git a/Mage/src/main/java/mage/abilities/condition/common/PermanentHasCounterCondition.java b/Mage/src/main/java/mage/abilities/condition/common/PermanentHasCounterCondition.java index 815e0b3bb3a..b20f5d4b77c 100644 --- a/Mage/src/main/java/mage/abilities/condition/common/PermanentHasCounterCondition.java +++ b/Mage/src/main/java/mage/abilities/condition/common/PermanentHasCounterCondition.java @@ -67,19 +67,19 @@ public class PermanentHasCounterCondition implements Condition { for (Permanent permanent : permanents) { switch (this.type) { case FEWER_THAN: - if (permanent.getCounters().getCount(this.counterType) < this.amount) { + if (permanent.getCounters(game).getCount(this.counterType) < this.amount) { conditionApplies = true; break; } break; case MORE_THAN: - if (permanent.getCounters().getCount(this.counterType) > this.amount) { + if (permanent.getCounters(game).getCount(this.counterType) > this.amount) { conditionApplies = true; break; } break; case EQUAL_TO: - if (permanent.getCounters().getCount(this.counterType) == this.amount) { + if (permanent.getCounters(game).getCount(this.counterType) == this.amount) { conditionApplies = true; break; } diff --git a/Mage/src/main/java/mage/abilities/condition/common/SourceHasCounterCondition.java b/Mage/src/main/java/mage/abilities/condition/common/SourceHasCounterCondition.java index 9471e7aab82..96434483e0f 100644 --- a/Mage/src/main/java/mage/abilities/condition/common/SourceHasCounterCondition.java +++ b/Mage/src/main/java/mage/abilities/condition/common/SourceHasCounterCondition.java @@ -76,7 +76,7 @@ public class SourceHasCounterCondition implements Condition { if (card != null) { count = card.getCounters(game).getCount(counterType); } else { - count = permanent.getCounters().getCount(counterType); + count = permanent.getCounters(game).getCount(counterType); } if (to == Integer.MAX_VALUE) { return count >= from; @@ -86,7 +86,7 @@ public class SourceHasCounterCondition implements Condition { if (card != null) { return card.getCounters(game).getCount(counterType) >= amount; } else { - return permanent.getCounters().getCount(counterType) >= amount; + return permanent.getCounters(game).getCount(counterType) >= amount; } } } diff --git a/Mage/src/main/java/mage/abilities/costs/common/PayLoyaltyCost.java b/Mage/src/main/java/mage/abilities/costs/common/PayLoyaltyCost.java index 5cb975d7b1f..9944d89abcd 100644 --- a/Mage/src/main/java/mage/abilities/costs/common/PayLoyaltyCost.java +++ b/Mage/src/main/java/mage/abilities/costs/common/PayLoyaltyCost.java @@ -59,15 +59,15 @@ public class PayLoyaltyCost extends CostImpl { @Override public boolean canPay(Ability ability, UUID sourceId, UUID controllerId, Game game) { Permanent planeswalker = game.getPermanent(sourceId); - return planeswalker != null && planeswalker.getCounters().getCount(CounterType.LOYALTY) + amount >= 0 && planeswalker.canLoyaltyBeUsed(game); + return planeswalker != null && planeswalker.getCounters(game).getCount(CounterType.LOYALTY) + amount >= 0 && planeswalker.canLoyaltyBeUsed(game); } @Override public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana, Cost costToPay) { Permanent planeswalker = game.getPermanent(sourceId); - if (planeswalker != null && planeswalker.getCounters().getCount(CounterType.LOYALTY) + amount >= 0 && planeswalker.canLoyaltyBeUsed(game)) { + if (planeswalker != null && planeswalker.getCounters(game).getCount(CounterType.LOYALTY) + amount >= 0 && planeswalker.canLoyaltyBeUsed(game)) { if (amount > 0) { - planeswalker.getCounters().addCounter(CounterType.LOYALTY.createInstance(amount)); + planeswalker.getCounters(game).addCounter(CounterType.LOYALTY.createInstance(amount)); } else if (amount < 0) { planeswalker.removeCounters(CounterType.LOYALTY.getName(), Math.abs(amount), game); } diff --git a/Mage/src/main/java/mage/abilities/costs/common/PayVariableLoyaltyCost.java b/Mage/src/main/java/mage/abilities/costs/common/PayVariableLoyaltyCost.java index 7536b0df023..4a19e7ea423 100644 --- a/Mage/src/main/java/mage/abilities/costs/common/PayVariableLoyaltyCost.java +++ b/Mage/src/main/java/mage/abilities/costs/common/PayVariableLoyaltyCost.java @@ -72,7 +72,7 @@ public class PayVariableLoyaltyCost extends VariableCostImpl { int maxValue = 0; Permanent permanent = game.getPermanent(source.getSourceId()); if (permanent != null) { - maxValue = permanent.getCounters().getCount(CounterType.LOYALTY.getName()); + maxValue = permanent.getCounters(game).getCount(CounterType.LOYALTY.getName()); } return maxValue; } diff --git a/Mage/src/main/java/mage/abilities/costs/common/RemoveCounterCost.java b/Mage/src/main/java/mage/abilities/costs/common/RemoveCounterCost.java index 38be9ace0eb..100beada6cd 100644 --- a/Mage/src/main/java/mage/abilities/costs/common/RemoveCounterCost.java +++ b/Mage/src/main/java/mage/abilities/costs/common/RemoveCounterCost.java @@ -93,16 +93,16 @@ public class RemoveCounterCost extends CostImpl { for (UUID targetId : target.getTargets()) { Permanent permanent = game.getPermanent(targetId); if (permanent != null) { - if (permanent.getCounters().size() > 0 && (counterTypeToRemove == null || permanent.getCounters().containsKey(counterTypeToRemove))) { + if (permanent.getCounters(game).size() > 0 && (counterTypeToRemove == null || permanent.getCounters(game).containsKey(counterTypeToRemove))) { String counterName = null; if (counterTypeToRemove != null) { counterName = counterTypeToRemove.getName(); - } else if (permanent.getCounters().size() > 1 && counterTypeToRemove == null) { + } else if (permanent.getCounters(game).size() > 1 && counterTypeToRemove == null) { Choice choice = new ChoiceImpl(true); Set choices = new HashSet<>(); - for (Counter counter : permanent.getCounters().values()) { - if (permanent.getCounters().getCount(counter.getName()) > 0) { + for (Counter counter : permanent.getCounters(game).values()) { + if (permanent.getCounters(game).getCount(counter.getName()) > 0) { choices.add(counter.getName()); } } @@ -111,7 +111,7 @@ public class RemoveCounterCost extends CostImpl { controller.choose(Outcome.UnboostCreature, choice, game); counterName = choice.getChoice(); } else { - for (Counter counter : permanent.getCounters().values()) { + for (Counter counter : permanent.getCounters(game).values()) { if (counter.getCount() > 0) { counterName = counter.getName(); } @@ -119,16 +119,16 @@ public class RemoveCounterCost extends CostImpl { } if (counterName != null) { int countersLeft = countersToRemove - countersRemoved; - int countersOnPermanent = permanent.getCounters().getCount(counterName); + int countersOnPermanent = permanent.getCounters(game).getCount(counterName); int numberOfCountersSelected = 1; if (countersLeft > 1 && countersOnPermanent > 1) { numberOfCountersSelected = controller.getAmount(1, Math.min(countersLeft, countersOnPermanent), new StringBuilder("Remove how many counters from ").append(permanent.getIdName()).toString(), game); } permanent.removeCounters(counterName, numberOfCountersSelected, game); - if (permanent.getCounters().getCount(counterName) == 0) { + if (permanent.getCounters(game).getCount(counterName) == 0) { // this removes only the item with number = 0 from the collection - permanent.getCounters().removeCounter(counterName); + permanent.getCounters(game).removeCounter(counterName); } countersRemoved += numberOfCountersSelected; if (!game.isSimulation()) { diff --git a/Mage/src/main/java/mage/abilities/costs/common/RemoveCountersSourceCost.java b/Mage/src/main/java/mage/abilities/costs/common/RemoveCountersSourceCost.java index ebf92959f44..66b8f49efa8 100644 --- a/Mage/src/main/java/mage/abilities/costs/common/RemoveCountersSourceCost.java +++ b/Mage/src/main/java/mage/abilities/costs/common/RemoveCountersSourceCost.java @@ -64,7 +64,7 @@ public class RemoveCountersSourceCost extends CostImpl { @Override public boolean canPay(Ability ability, UUID sourceId, UUID controllerId, Game game) { Permanent permanent = game.getPermanent(sourceId); - if (permanent != null && permanent.getCounters().getCount(name) >= amount) { + if (permanent != null && permanent.getCounters(game).getCount(name) >= amount) { return true; } return false; @@ -73,7 +73,7 @@ public class RemoveCountersSourceCost extends CostImpl { @Override public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana, Cost costToPay) { Permanent permanent = game.getPermanent(sourceId); - if (permanent != null && permanent.getCounters().getCount(name) >= amount) { + if (permanent != null && permanent.getCounters(game).getCount(name) >= amount) { permanent.removeCounters(name, amount, game); this.paid = true; } diff --git a/Mage/src/main/java/mage/abilities/costs/common/RemoveVariableCountersSourceCost.java b/Mage/src/main/java/mage/abilities/costs/common/RemoveVariableCountersSourceCost.java index 7678d644736..be4ce5e09d3 100644 --- a/Mage/src/main/java/mage/abilities/costs/common/RemoveVariableCountersSourceCost.java +++ b/Mage/src/main/java/mage/abilities/costs/common/RemoveVariableCountersSourceCost.java @@ -92,7 +92,7 @@ public class RemoveVariableCountersSourceCost extends VariableCostImpl { int maxValue = 0; Permanent permanent = game.getPermanent(source.getSourceId()); if (permanent != null) { - maxValue = permanent.getCounters().getCount(counterName); + maxValue = permanent.getCounters(game).getCount(counterName); } return maxValue; } diff --git a/Mage/src/main/java/mage/abilities/costs/common/RemoveVariableCountersTargetCost.java b/Mage/src/main/java/mage/abilities/costs/common/RemoveVariableCountersTargetCost.java index 6e243296567..bb5160b0129 100644 --- a/Mage/src/main/java/mage/abilities/costs/common/RemoveVariableCountersTargetCost.java +++ b/Mage/src/main/java/mage/abilities/costs/common/RemoveVariableCountersTargetCost.java @@ -95,9 +95,9 @@ public class RemoveVariableCountersTargetCost extends VariableCostImpl { int maxValue = 0; for (Permanent permanent :game.getBattlefield().getAllActivePermanents(filter, source.getControllerId(), game)) { if (counterTypeToRemove != null) { - maxValue += permanent.getCounters().getCount(counterTypeToRemove); + maxValue += permanent.getCounters(game).getCount(counterTypeToRemove); } else { - for(Counter counter :permanent.getCounters().values()){ + for(Counter counter :permanent.getCounters(game).values()){ maxValue += counter.getCount(); } } diff --git a/Mage/src/main/java/mage/abilities/dynamicvalue/common/CountersCount.java b/Mage/src/main/java/mage/abilities/dynamicvalue/common/CountersCount.java index eb317e61012..5b239827fc0 100644 --- a/Mage/src/main/java/mage/abilities/dynamicvalue/common/CountersCount.java +++ b/Mage/src/main/java/mage/abilities/dynamicvalue/common/CountersCount.java @@ -62,7 +62,7 @@ public class CountersCount implements DynamicValue { public int calculate(Game game, Ability sourceAbility, Effect effect) { int count = 0; for (Permanent permanent : game.getBattlefield().getAllActivePermanents(filter, game)) { - count += permanent.getCounters().getCount(counter); + count += permanent.getCounters(game).getCount(counter); } return count; } diff --git a/Mage/src/main/java/mage/abilities/effects/ApplyCountersEffect.java b/Mage/src/main/java/mage/abilities/effects/ApplyCountersEffect.java index ce497867d9d..320fff976f0 100644 --- a/Mage/src/main/java/mage/abilities/effects/ApplyCountersEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/ApplyCountersEffect.java @@ -55,7 +55,7 @@ public class ApplyCountersEffect extends ContinuousEffectImpl { @Override public boolean apply(Game game, Ability source) { for (Permanent permanent: game.getBattlefield().getAllActivePermanents(CardType.CREATURE)) { - for (BoostCounter counter: permanent.getCounters().getBoostCounters()) { + for (BoostCounter counter: permanent.getCounters(game).getBoostCounters()) { permanent.addPower(counter.getPower() * counter.getCount()); permanent.addToughness(counter.getToughness() * counter.getCount()); } diff --git a/Mage/src/main/java/mage/abilities/effects/common/RemoveAllCountersSourceEffect.java b/Mage/src/main/java/mage/abilities/effects/common/RemoveAllCountersSourceEffect.java index 0327dd6dd65..52ac8c477e3 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/RemoveAllCountersSourceEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/RemoveAllCountersSourceEffect.java @@ -62,7 +62,7 @@ public class RemoveAllCountersSourceEffect extends OneShotEffect { public boolean apply(Game game, Ability source) { Permanent sourcePermanent = game.getPermanent(source.getSourceId()); if (sourcePermanent != null) { - int count = sourcePermanent.getCounters().getCount(counterType); + int count = sourcePermanent.getCounters(game).getCount(counterType); sourcePermanent.removeCounters(counterType.getName(), count, game); return true; } diff --git a/Mage/src/main/java/mage/abilities/effects/common/counter/AddCountersSourceEffect.java b/Mage/src/main/java/mage/abilities/effects/common/counter/AddCountersSourceEffect.java index a39c2b7de8b..0ea83b7f345 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/counter/AddCountersSourceEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/counter/AddCountersSourceEffect.java @@ -127,10 +127,10 @@ public class AddCountersSourceEffect extends OneShotEffect { countersToAdd--; } newCounter.add(countersToAdd); - int before = permanent.getCounters().getCount(newCounter.getName()); + int before = permanent.getCounters(game).getCount(newCounter.getName()); permanent.addCounters(newCounter, game); if (informPlayers && !game.isSimulation()) { - int amountAdded = permanent.getCounters().getCount(newCounter.getName()) - before; + int amountAdded = permanent.getCounters(game).getCount(newCounter.getName()) - before; Player player = game.getPlayer(source.getControllerId()); if (player != null) { game.informPlayers(player.getLogName() + " puts " + amountAdded + " " + newCounter.getName().toLowerCase() + " counter on " + permanent.getLogName()); diff --git a/Mage/src/main/java/mage/abilities/effects/common/counter/AddCountersTargetEffect.java b/Mage/src/main/java/mage/abilities/effects/common/counter/AddCountersTargetEffect.java index a19cd3cd21e..12ed557e84f 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/counter/AddCountersTargetEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/counter/AddCountersTargetEffect.java @@ -96,9 +96,9 @@ public class AddCountersTargetEffect extends OneShotEffect { newCounter.remove(newCounter.getCount()); } newCounter.add(calculated); - int before = permanent.getCounters().getCount(counter.getName()); + int before = permanent.getCounters(game).getCount(counter.getName()); permanent.addCounters(newCounter, game); - int numberAdded = permanent.getCounters().getCount(counter.getName()) - before; + int numberAdded = permanent.getCounters(game).getCount(counter.getName()) - before; affectedTargets++; if (!game.isSimulation()) { game.informPlayers(sourceObject.getLogName() + ": " + controller.getLogName() + " puts " @@ -114,7 +114,7 @@ public class AddCountersTargetEffect extends OneShotEffect { + counter.getCount() + " " + counter.getName().toLowerCase() + " counter on " + player.getLogName()); } } else if (card != null) { - card.addCounters(counter.getName(), counter.getCount(), game); + card.addCounters(counter, game); if (!game.isSimulation()) { game.informPlayers(new StringBuilder("Added ").append(counter.getCount()).append(" ").append(counter.getName()) .append(" counter to ").append(card.getName()) diff --git a/Mage/src/main/java/mage/abilities/effects/common/counter/ProliferateEffect.java b/Mage/src/main/java/mage/abilities/effects/common/counter/ProliferateEffect.java index b85e47bf840..7ae35237b81 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/counter/ProliferateEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/counter/ProliferateEffect.java @@ -75,23 +75,25 @@ public class ProliferateEffect extends OneShotEffect { UUID chosen = (UUID) target.getTargets().get(idx); Permanent permanent = game.getPermanent(chosen); if (permanent != null) { - if (permanent.getCounters().size() > 0) { - if (permanent.getCounters().size() == 1) { - for (Counter counter : permanent.getCounters().values()) { - permanent.addCounters(counter.getName(), 1, game); + if (permanent.getCounters(game).size() > 0) { + if (permanent.getCounters(game).size() == 1) { + for (Counter counter : permanent.getCounters(game).values()) { + Counter newCounter = new Counter(counter.getName()); + permanent.addCounters(newCounter, game); } } else { Choice choice = new ChoiceImpl(true); Set choices = new HashSet<>(); - for (Counter counter : permanent.getCounters().values()) { + for (Counter counter : permanent.getCounters(game).values()) { choices.add(counter.getName()); } choice.setChoices(choices); choice.setMessage("Choose a counter to proliferate (" + permanent.getIdName() + ")"); controller.choose(Outcome.Benefit, choice, game); - for (Counter counter : permanent.getCounters().values()) { + for (Counter counter : permanent.getCounters(game).values()) { if (counter.getName().equals(choice.getChoice())) { - permanent.addCounters(counter.getName(), 1, game); + Counter newCounter = new Counter(counter.getName()); + permanent.addCounters(newCounter, game); break; } } diff --git a/Mage/src/main/java/mage/abilities/effects/common/counter/RemoveCounterSourceEffect.java b/Mage/src/main/java/mage/abilities/effects/common/counter/RemoveCounterSourceEffect.java index 3c075450d9e..a371859fc5a 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/counter/RemoveCounterSourceEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/counter/RemoveCounterSourceEffect.java @@ -57,7 +57,7 @@ public class RemoveCounterSourceEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { Permanent permanent = game.getPermanent(source.getSourceId()); - if (permanent != null && permanent.getCounters().getCount(counter.getName()) >= counter.getCount()) { + if (permanent != null && permanent.getCounters(game).getCount(counter.getName()) >= counter.getCount()) { permanent.removeCounters(counter.getName(), counter.getCount(), game); if (!game.isSimulation()) { game.informPlayers("Removed " + counter.getCount() + " " + counter.getName() + " counter from " + permanent.getLogName()); diff --git a/Mage/src/main/java/mage/abilities/effects/common/counter/RemoveCounterTargetEffect.java b/Mage/src/main/java/mage/abilities/effects/common/counter/RemoveCounterTargetEffect.java index b596453d62b..ff8a03f950b 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/counter/RemoveCounterTargetEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/counter/RemoveCounterTargetEffect.java @@ -71,7 +71,7 @@ public class RemoveCounterTargetEffect extends OneShotEffect { Permanent p = game.getPermanent(targetPointer.getFirst(game, source)); if(p != null) { Counter toRemove = (counter == null ? selectCounterType(game, source, p) : counter); - if(toRemove != null && p.getCounters().getCount(toRemove.getName()) >= toRemove.getCount()) { + if(toRemove != null && p.getCounters(game).getCount(toRemove.getName()) >= toRemove.getCount()) { p.removeCounters(toRemove.getName(), toRemove.getCount(), game); if(!game.isSimulation()) game.informPlayers("Removed " + toRemove.getCount() + " " + toRemove.getName() @@ -93,13 +93,13 @@ public class RemoveCounterTargetEffect extends OneShotEffect { private Counter selectCounterType(Game game, Ability source, Permanent permanent) { Player controller = game.getPlayer(source.getControllerId()); - if(controller != null && permanent.getCounters().size() > 0) { + if(controller != null && permanent.getCounters(game).size() > 0) { String counterName = null; - if(permanent.getCounters().size() > 1) { + if(permanent.getCounters(game).size() > 1) { Choice choice = new ChoiceImpl(true); Set choices = new HashSet<>(); - for(Counter counter : permanent.getCounters().values()) { - if (permanent.getCounters().getCount(counter.getName()) > 0) { + for(Counter counter : permanent.getCounters(game).values()) { + if (permanent.getCounters(game).getCount(counter.getName()) > 0) { choices.add(counter.getName()); } } @@ -108,7 +108,7 @@ public class RemoveCounterTargetEffect extends OneShotEffect { controller.choose(Outcome.Detriment, choice, game); counterName = choice.getChoice(); } else { - for(Counter counter : permanent.getCounters().values()) { + for(Counter counter : permanent.getCounters(game).values()) { if(counter.getCount() > 0) { counterName = counter.getName(); } diff --git a/Mage/src/main/java/mage/abilities/keyword/CumulativeUpkeepAbility.java b/Mage/src/main/java/mage/abilities/keyword/CumulativeUpkeepAbility.java index 7fdecb10d31..eb8e0e7bac0 100644 --- a/Mage/src/main/java/mage/abilities/keyword/CumulativeUpkeepAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/CumulativeUpkeepAbility.java @@ -98,7 +98,7 @@ class CumulativeUpkeepEffect extends OneShotEffect { Player player = game.getPlayer(source.getControllerId()); Permanent permanent = game.getPermanent(source.getSourceId()); if (player != null && permanent != null) { - int ageCounter = permanent.getCounters().getCount(CounterType.AGE); + int ageCounter = permanent.getCounters(game).getCount(CounterType.AGE); if (cumulativeCost instanceof ManaCost) { ManaCostsImpl totalCost = new ManaCostsImpl<>(); for (int i = 0; i < ageCounter; i++) { diff --git a/Mage/src/main/java/mage/abilities/keyword/FadingAbility.java b/Mage/src/main/java/mage/abilities/keyword/FadingAbility.java index e8e45295810..2a8ec6fc76f 100644 --- a/Mage/src/main/java/mage/abilities/keyword/FadingAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/FadingAbility.java @@ -62,7 +62,7 @@ class FadingEffect extends OneShotEffect { public boolean apply(Game game, Ability source) { Permanent permanent = game.getPermanent(source.getSourceId()); if (permanent != null) { - int amount = permanent.getCounters().getCount(CounterType.FADE); + int amount = permanent.getCounters(game).getCount(CounterType.FADE); if (amount > 0) { permanent.removeCounters(CounterType.FADE.createInstance(), game); } else { diff --git a/Mage/src/main/java/mage/abilities/keyword/GraftAbility.java b/Mage/src/main/java/mage/abilities/keyword/GraftAbility.java index c201f81c012..c60b3c4bb04 100644 --- a/Mage/src/main/java/mage/abilities/keyword/GraftAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/GraftAbility.java @@ -95,7 +95,7 @@ public class GraftAbility extends TriggeredAbilityImpl { if (sourcePermanent != null && permanent != null && !sourcePermanent.getId().equals(permanent.getId()) - && sourcePermanent.getCounters().containsKey(CounterType.P1P1) + && sourcePermanent.getCounters(game).containsKey(CounterType.P1P1) && filter.match(permanent, game)) { for (Effect effect : this.getEffects()) { effect.setTargetPointer(new FixedTarget(event.getTargetId())); @@ -168,7 +168,7 @@ class GraftDistributeCounterEffect extends OneShotEffect { public boolean apply(Game game, Ability source) { Permanent sourcePermanent = game.getPermanent(source.getSourceId()); if (sourcePermanent != null) { - int numberOfCounters = sourcePermanent.getCounters().getCount(CounterType.P1P1); + int numberOfCounters = sourcePermanent.getCounters(game).getCount(CounterType.P1P1); if (numberOfCounters > 0) { Permanent targetCreature = game.getPermanent(targetPointer.getFirst(game, source)); if (targetCreature != null) { diff --git a/Mage/src/main/java/mage/abilities/keyword/ModularAbility.java b/Mage/src/main/java/mage/abilities/keyword/ModularAbility.java index 5efdb7a01a7..62800ca7842 100644 --- a/Mage/src/main/java/mage/abilities/keyword/ModularAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/ModularAbility.java @@ -75,7 +75,7 @@ public class ModularAbility extends DiesTriggeredAbility { public boolean checkTrigger(GameEvent event, Game game) { if (super.checkTrigger(event, game)) { ZoneChangeEvent zEvent = (ZoneChangeEvent) event; - if (zEvent.getTarget().getCounters().getCount(CounterType.P1P1) > 0) { + if (zEvent.getTarget().getCounters(game).getCount(CounterType.P1P1) > 0) { return true; } } @@ -157,7 +157,7 @@ class ModularDistributeCounterEffect extends OneShotEffect { Permanent targetArtifact = game.getPermanent(targetPointer.getFirst(game, source)); Player player = game.getPlayer(source.getControllerId()); if (sourcePermanent != null && targetArtifact != null && player != null) { - int numberOfCounters = sourcePermanent.getCounters().getCount(CounterType.P1P1); + int numberOfCounters = sourcePermanent.getCounters(game).getCount(CounterType.P1P1); if (numberOfCounters > 0) { targetArtifact.addCounters(CounterType.P1P1.createInstance(numberOfCounters), game); } diff --git a/Mage/src/main/java/mage/abilities/keyword/PersistAbility.java b/Mage/src/main/java/mage/abilities/keyword/PersistAbility.java index 3f4a297c7de..085d893a495 100644 --- a/Mage/src/main/java/mage/abilities/keyword/PersistAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/PersistAbility.java @@ -65,7 +65,7 @@ public class PersistAbility extends DiesTriggeredAbility { public boolean checkTrigger(GameEvent event, Game game) { if (super.checkTrigger(event, game)) { Permanent permanent = ((ZoneChangeEvent) event).getTarget(); - if (permanent.getCounters().getCount(CounterType.M1M1) == 0) { + if (permanent.getCounters(game).getCount(CounterType.M1M1) == 0) { FixedTarget fixedTarget = new FixedTarget(permanent.getId()); fixedTarget.init(game, this); return true; diff --git a/Mage/src/main/java/mage/abilities/keyword/UndyingAbility.java b/Mage/src/main/java/mage/abilities/keyword/UndyingAbility.java index 237989397a2..66df34d1fb0 100644 --- a/Mage/src/main/java/mage/abilities/keyword/UndyingAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/UndyingAbility.java @@ -35,7 +35,7 @@ public class UndyingAbility extends DiesTriggeredAbility { public boolean checkTrigger(GameEvent event, Game game) { if (super.checkTrigger(event, game)) { Permanent permanent = (Permanent) game.getLastKnownInformation(event.getTargetId(), Zone.BATTLEFIELD); - if (!permanent.getCounters().containsKey(CounterType.P1P1) || permanent.getCounters().getCount(CounterType.P1P1) == 0) { + if (!permanent.getCounters(game).containsKey(CounterType.P1P1) || permanent.getCounters(game).getCount(CounterType.P1P1) == 0) { return true; } } diff --git a/Mage/src/main/java/mage/abilities/keyword/UnleashAbility.java b/Mage/src/main/java/mage/abilities/keyword/UnleashAbility.java index ec109329661..eb0a9ec4a36 100644 --- a/Mage/src/main/java/mage/abilities/keyword/UnleashAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/UnleashAbility.java @@ -136,7 +136,7 @@ class UnleashRestrictionEffect extends RestrictionEffect { @Override public boolean applies(Permanent permanent, Ability source, Game game) { if (permanent != null && permanent.getId().equals(source.getSourceId())) { - if (permanent.getCounters().getCount(CounterType.P1P1) > 0) { + if (permanent.getCounters(game).getCount(CounterType.P1P1) > 0) { return true; } } diff --git a/Mage/src/main/java/mage/abilities/keyword/VanishingSacrificeAbility.java b/Mage/src/main/java/mage/abilities/keyword/VanishingSacrificeAbility.java index b6f2dc6a103..642c563e214 100644 --- a/Mage/src/main/java/mage/abilities/keyword/VanishingSacrificeAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/VanishingSacrificeAbility.java @@ -28,7 +28,7 @@ public class VanishingSacrificeAbility extends TriggeredAbilityImpl { if (event.getData().equals("time") && event.getTargetId().equals(this.getSourceId())) { Permanent p = game.getPermanent(this.getSourceId()); if (p != null) { - return p.getCounters().getCount(CounterType.TIME) == 0; + return p.getCounters(game).getCount(CounterType.TIME) == 0; } } return false; diff --git a/Mage/src/main/java/mage/abilities/keyword/VanishingUpkeepAbility.java b/Mage/src/main/java/mage/abilities/keyword/VanishingUpkeepAbility.java index 2b5bf00431a..30994dc7a90 100644 --- a/Mage/src/main/java/mage/abilities/keyword/VanishingUpkeepAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/VanishingUpkeepAbility.java @@ -64,7 +64,7 @@ class VanishingEffect extends OneShotEffect { public boolean apply(Game game, Ability source) { Permanent p = game.getPermanent(source.getSourceId()); if (p != null) { - int amount = p.getCounters().getCount(CounterType.TIME); + int amount = p.getCounters(game).getCount(CounterType.TIME); if (amount > 0) { p.removeCounters(CounterType.TIME.createInstance(), game); game.informPlayers("Removed a time counter from " + p.getLogName() + " (" + amount + " left)"); diff --git a/Mage/src/main/java/mage/cards/Card.java b/Mage/src/main/java/mage/cards/Card.java index 3befec124b1..13895bc84c0 100644 --- a/Mage/src/main/java/mage/cards/Card.java +++ b/Mage/src/main/java/mage/cards/Card.java @@ -40,6 +40,7 @@ import mage.constants.Zone; import mage.counters.Counter; import mage.counters.Counters; import mage.game.Game; +import mage.game.GameState; import mage.game.permanent.Permanent; public interface Card extends MageObject { @@ -152,6 +153,8 @@ public interface Card extends MageObject { Counters getCounters(Game game); + Counters getCounters(GameState state); + boolean addCounters(String name, int amount, Game game); boolean addCounters(String name, int amount, Game game, ArrayList appliedEffects); diff --git a/Mage/src/main/java/mage/cards/CardImpl.java b/Mage/src/main/java/mage/cards/CardImpl.java index 050e5d5ee02..a0c23ef525c 100644 --- a/Mage/src/main/java/mage/cards/CardImpl.java +++ b/Mage/src/main/java/mage/cards/CardImpl.java @@ -53,6 +53,7 @@ import mage.counters.Counters; import mage.game.CardAttribute; import mage.game.CardState; import mage.game.Game; +import mage.game.GameState; import mage.game.command.Commander; import mage.game.events.GameEvent; import mage.game.events.ZoneChangeEvent; @@ -655,7 +656,12 @@ public abstract class CardImpl extends MageObjectImpl implements Card { @Override public Counters getCounters(Game game) { - return game.getState().getCardState(this.objectId).getCounters(); + return getCounters(game.getState()); + } + + @Override + public Counters getCounters(GameState state) { + return state.getCardState(this.objectId).getCounters(); } @Override @@ -673,7 +679,7 @@ public abstract class CardImpl extends MageObjectImpl implements Card { GameEvent event = GameEvent.getEvent(GameEvent.EventType.ADD_COUNTER, objectId, ownerId, name, 1); event.setAppliedEffects(appliedEffects); if (!game.replaceEvent(event)) { - game.getState().getCardState(this.objectId).getCounters().addCounter(name, 1); + getCounters(game).addCounter(name, 1); game.fireEvent(GameEvent.getEvent(GameEvent.EventType.COUNTER_ADDED, objectId, ownerId, name, 1)); } else { returnCode = false; @@ -703,7 +709,7 @@ public abstract class CardImpl extends MageObjectImpl implements Card { GameEvent event = GameEvent.getEvent(GameEvent.EventType.ADD_COUNTER, objectId, ownerId, counter.getName(), 1); event.setAppliedEffects(appliedEffects); if (!game.replaceEvent(event)) { - game.getState().getCardState(this.objectId).getCounters().addCounter(eventCounter); + getCounters(game).addCounter(eventCounter); game.fireEvent(GameEvent.getEvent(GameEvent.EventType.COUNTER_ADDED, objectId, ownerId, counter.getName(), 1)); } else { returnCode = false; @@ -718,7 +724,7 @@ public abstract class CardImpl extends MageObjectImpl implements Card { @Override public void removeCounters(String name, int amount, Game game) { for (int i = 0; i < amount; i++) { - game.getState().getCardState(this.objectId).getCounters().removeCounter(name, 1); + getCounters(game).removeCounter(name, 1); GameEvent event = GameEvent.getEvent(GameEvent.EventType.COUNTER_REMOVED, objectId, ownerId); event.setData(name); game.fireEvent(event); diff --git a/Mage/src/main/java/mage/filter/common/FilterPermanentOrPlayerWithCounter.java b/Mage/src/main/java/mage/filter/common/FilterPermanentOrPlayerWithCounter.java index 44d4330b85e..e175fc7fe42 100644 --- a/Mage/src/main/java/mage/filter/common/FilterPermanentOrPlayerWithCounter.java +++ b/Mage/src/main/java/mage/filter/common/FilterPermanentOrPlayerWithCounter.java @@ -59,7 +59,7 @@ public class FilterPermanentOrPlayerWithCounter extends FilterPermanentOrPlayer return false; } } else if (o instanceof Permanent) { - if (((Permanent)o).getCounters().size() == 0) { + if (((Permanent)o).getCounters(game).size() == 0) { return false; } } diff --git a/Mage/src/main/java/mage/filter/predicate/permanent/CounterAnyPredicate.java b/Mage/src/main/java/mage/filter/predicate/permanent/CounterAnyPredicate.java index 68c9d6f3c20..67b7c998d82 100644 --- a/Mage/src/main/java/mage/filter/predicate/permanent/CounterAnyPredicate.java +++ b/Mage/src/main/java/mage/filter/predicate/permanent/CounterAnyPredicate.java @@ -43,7 +43,7 @@ public class CounterAnyPredicate implements Predicate { @Override public boolean apply(Permanent input, Game game) { - for (Counter counter: input.getCounters().values()) { + for (Counter counter: input.getCounters(game).values()) { if (counter.getCount()> 0) { return true; } diff --git a/Mage/src/main/java/mage/filter/predicate/permanent/CounterPredicate.java b/Mage/src/main/java/mage/filter/predicate/permanent/CounterPredicate.java index dd746ddad9c..8058f2796da 100644 --- a/Mage/src/main/java/mage/filter/predicate/permanent/CounterPredicate.java +++ b/Mage/src/main/java/mage/filter/predicate/permanent/CounterPredicate.java @@ -51,9 +51,9 @@ public class CounterPredicate implements Predicate { @Override public boolean apply(Permanent input, Game game) { if (counter == null) { - return !input.getCounters().keySet().isEmpty(); + return !input.getCounters(game).keySet().isEmpty(); } else { - return input.getCounters().containsKey(counter); + return input.getCounters(game).containsKey(counter); } } diff --git a/Mage/src/main/java/mage/game/GameImpl.java b/Mage/src/main/java/mage/game/GameImpl.java index 1a543b15f00..5ea6d0feb4c 100644 --- a/Mage/src/main/java/mage/game/GameImpl.java +++ b/Mage/src/main/java/mage/game/GameImpl.java @@ -1722,7 +1722,7 @@ public abstract class GameImpl implements Game, Serializable { } if (perm.getCardType().contains(CardType.PLANESWALKER)) { //20091005 - 704.5i - if (perm.getCounters().getCount(CounterType.LOYALTY) == 0) { + if (perm.getCounters(this).getCount(CounterType.LOYALTY) == 0) { if (movePermanentToGraveyardWithInfo(perm)) { somethingHappened = true; continue; @@ -1860,12 +1860,12 @@ public abstract class GameImpl implements Game, Serializable { } //20110501 - 704.5r - if (perm.getCounters().containsKey(CounterType.P1P1) && perm.getCounters().containsKey(CounterType.M1M1)) { - int p1p1 = perm.getCounters().getCount(CounterType.P1P1); - int m1m1 = perm.getCounters().getCount(CounterType.M1M1); + if (perm.getCounters(this).containsKey(CounterType.P1P1) && perm.getCounters(this).containsKey(CounterType.M1M1)) { + int p1p1 = perm.getCounters(this).getCount(CounterType.P1P1); + int m1m1 = perm.getCounters(this).getCount(CounterType.M1M1); int min = Math.min(p1p1, m1m1); - perm.getCounters().removeCounter(CounterType.P1P1, min); - perm.getCounters().removeCounter(CounterType.M1M1, min); + perm.getCounters(this).removeCounter(CounterType.P1P1, min); + perm.getCounters(this).removeCounter(CounterType.M1M1, min); } } diff --git a/Mage/src/main/java/mage/game/GameState.java b/Mage/src/main/java/mage/game/GameState.java index eec7695c562..2e48c954ce0 100644 --- a/Mage/src/main/java/mage/game/GameState.java +++ b/Mage/src/main/java/mage/game/GameState.java @@ -264,7 +264,7 @@ public class GameState implements Serializable, Copyable { sb.append("permanents"); for (Permanent permanent : battlefield.getAllPermanents()) { - sb.append(permanent.getValue()); + sb.append(permanent.getValue(this)); } sb.append("spells"); @@ -305,7 +305,7 @@ public class GameState implements Serializable, Copyable { sb.append("permanents"); List perms = new ArrayList<>(); for (Permanent permanent : battlefield.getAllPermanents()) { - perms.add(permanent.getValue()); + perms.add(permanent.getValue(this)); } Collections.sort(perms); sb.append(perms); @@ -357,7 +357,7 @@ public class GameState implements Serializable, Copyable { sb.append("permanents"); List perms = new ArrayList<>(); for (Permanent permanent : battlefield.getAllPermanents()) { - perms.add(permanent.getValue()); + perms.add(permanent.getValue(this)); } Collections.sort(perms); sb.append(perms); diff --git a/Mage/src/main/java/mage/game/permanent/Permanent.java b/Mage/src/main/java/mage/game/permanent/Permanent.java index 7319a51a112..56670bc3fae 100644 --- a/Mage/src/main/java/mage/game/permanent/Permanent.java +++ b/Mage/src/main/java/mage/game/permanent/Permanent.java @@ -40,6 +40,7 @@ import mage.constants.Zone; import mage.counters.Counters; import mage.game.Controllable; import mage.game.Game; +import mage.game.GameState; public interface Permanent extends Card, Controllable { @@ -161,7 +162,7 @@ public interface Permanent extends Card, Controllable { boolean entersBattlefield(UUID sourceId, Game game, Zone fromZone, boolean fireEvent); - String getValue(); + String getValue(GameState state); @Deprecated void addAbility(Ability ability); diff --git a/Mage/src/main/java/mage/game/permanent/PermanentImpl.java b/Mage/src/main/java/mage/game/permanent/PermanentImpl.java index 08462ac5664..501dca7d47c 100644 --- a/Mage/src/main/java/mage/game/permanent/PermanentImpl.java +++ b/Mage/src/main/java/mage/game/permanent/PermanentImpl.java @@ -65,6 +65,7 @@ import mage.counters.Counter; import mage.counters.CounterType; import mage.counters.Counters; import mage.game.Game; +import mage.game.GameState; import mage.game.command.CommandObject; import mage.game.events.DamageCreatureEvent; import mage.game.events.DamagePlaneswalkerEvent; @@ -219,12 +220,12 @@ public abstract class PermanentImpl extends CardImpl implements Permanent { } @Override - public String getValue() { + public String getValue(GameState state) { StringBuilder sb = threadLocalBuilder.get(); sb.append(controllerId).append(name).append(tapped).append(damage); sb.append(subtype).append(supertype).append(power.getValue()).append(toughness.getValue()); sb.append(abilities.getValue()); - for (Counter counter : getCounters().values()) { + for (Counter counter : getCounters(state).values()) { sb.append(counter.getName()).append(counter.getCount()); } return sb.toString(); @@ -333,31 +334,8 @@ public abstract class PermanentImpl extends CardImpl implements Permanent { } @Override - public boolean addCounters(String name, int amount, Game game) { - return addCounters(name, amount, game, null); - } - - @Override - public boolean addCounters(String name, int amount, Game game, ArrayList appliedEffects) { - boolean returnCode = true; - GameEvent countersEvent = GameEvent.getEvent(GameEvent.EventType.ADD_COUNTERS, objectId, controllerId, name, amount); - countersEvent.setAppliedEffects(appliedEffects); - if (!game.replaceEvent(countersEvent)) { - for (int i = 0; i < countersEvent.getAmount(); i++) { - GameEvent event = GameEvent.getEvent(GameEvent.EventType.ADD_COUNTER, objectId, controllerId, name, 1); - event.setAppliedEffects(appliedEffects); - if (!game.replaceEvent(event)) { - counters.addCounter(name, 1); - game.fireEvent(GameEvent.getEvent(GameEvent.EventType.COUNTER_ADDED, objectId, controllerId, name, 1)); - } else { - returnCode = false; - } - } - game.fireEvent(GameEvent.getEvent(GameEvent.EventType.COUNTERS_ADDED, objectId, controllerId, name, amount)); - } else { - returnCode = false; - } - return returnCode; + public Counters getCounters(GameState state) { + return counters; } @Override @@ -878,10 +856,10 @@ public abstract class PermanentImpl extends CardImpl implements Permanent { int actualDamage = event.getAmount(); if (actualDamage > 0) { int countersToRemove = actualDamage; - if (countersToRemove > getCounters().getCount(CounterType.LOYALTY)) { - countersToRemove = getCounters().getCount(CounterType.LOYALTY); + if (countersToRemove > getCounters(game).getCount(CounterType.LOYALTY)) { + countersToRemove = getCounters(game).getCount(CounterType.LOYALTY); } - getCounters().removeCounter(CounterType.LOYALTY, countersToRemove); + getCounters(game).removeCounter(CounterType.LOYALTY, countersToRemove); game.fireEvent(new DamagedPlaneswalkerEvent(objectId, sourceId, controllerId, actualDamage, combat)); return actualDamage; } diff --git a/Mage/src/main/java/mage/game/stack/Spell.java b/Mage/src/main/java/mage/game/stack/Spell.java index 6ce48963faf..9a1b8eebbb0 100644 --- a/Mage/src/main/java/mage/game/stack/Spell.java +++ b/Mage/src/main/java/mage/game/stack/Spell.java @@ -56,6 +56,7 @@ import mage.constants.ZoneDetail; import mage.counters.Counter; import mage.counters.Counters; import mage.game.Game; +import mage.game.GameState; import mage.game.events.GameEvent; import mage.game.events.GameEvent.EventType; import mage.game.events.ZoneChangeEvent; @@ -825,9 +826,15 @@ public class Spell extends StackObjImpl implements Card { @Override public Counters getCounters(Game game) { + return card.getCounters(game); } + @Override + public Counters getCounters(GameState state) { + return card.getCounters(state); + } + @Override public boolean addCounters(String name, int amount, Game game) { return card.addCounters(name, amount, game); diff --git a/Mage/src/main/java/mage/target/common/TargetPermanentOrPlayerWithCounter.java b/Mage/src/main/java/mage/target/common/TargetPermanentOrPlayerWithCounter.java index 700c5c4f845..ae63a8aba97 100644 --- a/Mage/src/main/java/mage/target/common/TargetPermanentOrPlayerWithCounter.java +++ b/Mage/src/main/java/mage/target/common/TargetPermanentOrPlayerWithCounter.java @@ -80,7 +80,7 @@ public class TargetPermanentOrPlayerWithCounter extends TargetPermanentOrPlayer public boolean canTarget(UUID id, Game game) { Permanent permanent = game.getPermanent(id); if (permanent != null) { - if (permanent.getCounters().size() == 0) { + if (permanent.getCounters(game).size() == 0) { return false; } } @@ -97,7 +97,7 @@ public class TargetPermanentOrPlayerWithCounter extends TargetPermanentOrPlayer public boolean canTarget(UUID id, Ability source, Game game) { Permanent permanent = game.getPermanent(id); if (permanent != null) { - if (permanent.getCounters().size() == 0) { + if (permanent.getCounters(game).size() == 0) { return false; } }