From 07faf872ea4a916083eb6196e9a5c67c75daa37f Mon Sep 17 00:00:00 2001 From: Oleg Agafonov Date: Tue, 30 Apr 2019 18:50:03 +0400 Subject: [PATCH] Fixed that some cards doesn't trigger counter remove events; --- Mage.Sets/src/mage/cards/a/AllHallowsEve.java | 11 ++++++----- Mage.Sets/src/mage/cards/a/Aurification.java | 14 ++++++++------ Mage.Sets/src/mage/cards/i/Inhumaniac.java | 10 ++++++---- Mage.Sets/src/mage/cards/m/MineLayer.java | 12 +++++++----- .../abilities/costs/common/RemoveCounterCost.java | 13 ++++--------- 5 files changed, 31 insertions(+), 29 deletions(-) diff --git a/Mage.Sets/src/mage/cards/a/AllHallowsEve.java b/Mage.Sets/src/mage/cards/a/AllHallowsEve.java index e033af793ad..d61463522c9 100644 --- a/Mage.Sets/src/mage/cards/a/AllHallowsEve.java +++ b/Mage.Sets/src/mage/cards/a/AllHallowsEve.java @@ -1,7 +1,5 @@ - package mage.cards.a; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.dynamicvalue.common.StaticValue; @@ -9,7 +7,9 @@ import mage.abilities.effects.Effect; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.ExileSpellEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect; -import mage.cards.*; +import mage.cards.Card; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; import mage.constants.TargetController; @@ -19,8 +19,9 @@ import mage.filter.StaticFilters; import mage.game.Game; import mage.players.Player; +import java.util.UUID; + /** - * * @author jeffwadsworth */ public final class AllHallowsEve extends CardImpl { @@ -72,7 +73,7 @@ class AllHallowsEveEffect extends OneShotEffect { if (allHallowsEve != null && controller != null && game.getExile().getCard(allHallowsEve.getId(), game) != null) { - allHallowsEve.getCounters(game).removeCounter(CounterType.SCREAM, 1); + allHallowsEve.removeCounters(CounterType.SCREAM.getName(), 1, game); if (allHallowsEve.getCounters(game).getCount(CounterType.SCREAM) == 0) { allHallowsEve.moveToZone(Zone.GRAVEYARD, source.getId(), game, false); for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) { diff --git a/Mage.Sets/src/mage/cards/a/Aurification.java b/Mage.Sets/src/mage/cards/a/Aurification.java index ef96fbf8ceb..3d85d0f83e7 100644 --- a/Mage.Sets/src/mage/cards/a/Aurification.java +++ b/Mage.Sets/src/mage/cards/a/Aurification.java @@ -1,7 +1,5 @@ - package mage.cards.a; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.TriggeredAbilityImpl; import mage.abilities.common.LeavesBattlefieldTriggeredAbility; @@ -24,8 +22,9 @@ import mage.game.permanent.Permanent; import mage.target.targetpointer.FixedTarget; import mage.util.SubTypeList; +import java.util.UUID; + /** - * * @author andyfries */ @@ -40,7 +39,7 @@ public final class Aurification extends CardImpl { static final String rule = "Each creature with a gold counter on it is a Wall in addition to its other creature types and has defender."; public Aurification(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{W}{W}"); + super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}{W}"); // Whenever a creature deals damage to you, put a gold counter on it. this.addAbility(new AddGoldCountersAbility()); @@ -127,8 +126,11 @@ public final class Aurification extends CardImpl { @Override public boolean apply(Game game, Ability source) { for (Permanent permanent : game.getBattlefield().getAllActivePermanents(CardType.CREATURE)) { - if (permanent != null){ - permanent.getCounters(game).removeAllCounters(CounterType.GOLD); + if (permanent != null) { + int numToRemove = permanent.getCounters(game).getCount(CounterType.GOLD); + if (numToRemove > 0) { + permanent.removeCounters(CounterType.GOLD.getName(), numToRemove, game); + } } } return true; diff --git a/Mage.Sets/src/mage/cards/i/Inhumaniac.java b/Mage.Sets/src/mage/cards/i/Inhumaniac.java index 8525bb3b53d..e7ae91e038c 100644 --- a/Mage.Sets/src/mage/cards/i/Inhumaniac.java +++ b/Mage.Sets/src/mage/cards/i/Inhumaniac.java @@ -1,7 +1,5 @@ - package mage.cards.i; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; @@ -17,8 +15,9 @@ import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; +import java.util.UUID; + /** - * * @author spjspj */ public final class Inhumaniac extends CardImpl { @@ -71,7 +70,10 @@ class InhumaniacEffect extends OneShotEffect { } else if (amount >= 5) { permanent.addCounters(CounterType.P1P1.createInstance(2), source, game); } else if (amount == 1) { - permanent.getCounters(game).removeAllCounters(CounterType.P1P1); + int numToRemove = permanent.getCounters(game).getCount(CounterType.P1P1); + if (numToRemove > 0) { + permanent.removeCounters(CounterType.P1P1.getName(), numToRemove, game); + } } return true; } diff --git a/Mage.Sets/src/mage/cards/m/MineLayer.java b/Mage.Sets/src/mage/cards/m/MineLayer.java index 113cb6f6917..1932c318edd 100644 --- a/Mage.Sets/src/mage/cards/m/MineLayer.java +++ b/Mage.Sets/src/mage/cards/m/MineLayer.java @@ -1,7 +1,5 @@ - package mage.cards.m; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.BecomesTappedTriggeredAbility; @@ -12,11 +10,11 @@ import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.effects.common.counter.AddCountersTargetEffect; -import mage.constants.SubType; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; +import mage.constants.SubType; import mage.constants.Zone; import mage.counters.CounterType; import mage.filter.common.FilterLandPermanent; @@ -25,8 +23,9 @@ import mage.game.Game; import mage.game.permanent.Permanent; import mage.target.common.TargetLandPermanent; +import java.util.UUID; + /** - * * @author TheElk801 */ public final class MineLayer extends CardImpl { @@ -87,7 +86,10 @@ class RemoveAllMineCountersEffect extends OneShotEffect { public boolean apply(Game game, Ability source) { for (Permanent permanent : game.getBattlefield().getAllActivePermanents(CardType.LAND)) { if (permanent != null) { - permanent.getCounters(game).removeAllCounters(CounterType.MINE); + int numToRemove = permanent.getCounters(game).getCount(CounterType.MINE); + if (numToRemove > 0) { + permanent.removeCounters(CounterType.MINE.getName(), numToRemove, game); + } } } return true; 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 90c7b07cd92..ab1196345f3 100644 --- a/Mage/src/main/java/mage/abilities/costs/common/RemoveCounterCost.java +++ b/Mage/src/main/java/mage/abilities/costs/common/RemoveCounterCost.java @@ -1,9 +1,5 @@ - package mage.abilities.costs.common; -import java.util.HashSet; -import java.util.Set; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.costs.Cost; import mage.abilities.costs.CostImpl; @@ -18,8 +14,11 @@ import mage.players.Player; import mage.target.TargetPermanent; import mage.util.CardUtil; +import java.util.HashSet; +import java.util.Set; +import java.util.UUID; + /** - * * @author LevelX */ public class RemoveCounterCost extends CostImpl { @@ -102,10 +101,6 @@ public class RemoveCounterCost extends CostImpl { new StringBuilder("Remove how many counters from ").append(permanent.getIdName()).toString(), game); } permanent.removeCounters(counterName, numberOfCountersSelected, game); - if (permanent.getCounters(game).getCount(counterName) == 0) { - // this removes only the item with number = 0 from the collection - permanent.getCounters(game).removeCounter(counterName); - } countersRemoved += numberOfCountersSelected; if (!game.isSimulation()) { game.informPlayers(new StringBuilder(controller.getLogName())