diff --git a/forge-ai/src/main/java/forge/ai/GameState.java b/forge-ai/src/main/java/forge/ai/GameState.java index 3219460b17d..f9c6c0feec8 100644 --- a/forge-ai/src/main/java/forge/ai/GameState.java +++ b/forge-ai/src/main/java/forge/ai/GameState.java @@ -328,11 +328,10 @@ public abstract class GameState { } private void applyCountersToGameEntity(GameEntity entity, String counterString) { - entity.setCounters(new HashMap()); + //entity.setCounters(new HashMap()); String[] allCounterStrings = counterString.split(","); for (final String counterPair : allCounterStrings) { String[] pair = counterPair.split("=", 2); - entity.addCounter(CounterType.valueOf(pair[0]), Integer.parseInt(pair[1]), false, false); } } diff --git a/forge-game/src/main/java/forge/game/card/Card.java b/forge-game/src/main/java/forge/game/card/Card.java index 918f80945e4..49986246bf0 100644 --- a/forge-game/src/main/java/forge/game/card/Card.java +++ b/forge-game/src/main/java/forge/game/card/Card.java @@ -1022,10 +1022,10 @@ public class Card extends GameEntity implements Comparable { } setTotalCountersToAdd(addAmount); + final Integer oldValue = getCounters(counterType); + final Integer newValue = addAmount + (oldValue == null ? 0 : oldValue); if (fireEvents) { - final Integer oldValue = getCounters(counterType); - final Integer newValue = addAmount + (oldValue == null ? 0 : oldValue); - + // Not sure why firing events wraps EVERYTHING ins if (!newValue.equals(oldValue)) { final int powerBonusBefore = getPowerBonusFromCounters(); final int toughnessBonusBefore = getToughnessBonusFromCounters(); @@ -1054,6 +1054,10 @@ public class Card extends GameEntity implements Comparable { if (addAmount > 0) { getGame().getTriggerHandler().runTrigger(TriggerType.CounterAddedOnce, runParams, false); } + } else { + setCounters(counterType, newValue); + getController().addCounterToPermThisTurn(counterType, addAmount); + view.updateCounters(this); } }