From 5e87d8d276b4e19bfde1ac7425dc941fb26e29b0 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Mon, 24 Dec 2012 11:15:51 +0100 Subject: [PATCH] Fixed Lavaball Trap for multiplayer use. --- .../src/mage/sets/zendikar/LavaballTrap.java | 37 +++++++++++++------ 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/Mage.Sets/src/mage/sets/zendikar/LavaballTrap.java b/Mage.Sets/src/mage/sets/zendikar/LavaballTrap.java index e356608d829..a512e4f2ca6 100644 --- a/Mage.Sets/src/mage/sets/zendikar/LavaballTrap.java +++ b/Mage.Sets/src/mage/sets/zendikar/LavaballTrap.java @@ -27,6 +27,8 @@ */ package mage.sets.zendikar; +import java.util.HashMap; +import java.util.Map; import java.util.UUID; import mage.Constants; import mage.Constants.CardType; @@ -81,7 +83,7 @@ public class LavaballTrap extends CardImpl { class LavaballTrapWatcher extends WatcherImpl { - int landPlayed; + private Map amountOfLandsPlayedThisTurn = new HashMap(); public LavaballTrapWatcher() { super("LavaballTrapWatcher", Constants.WatcherScope.GAME); @@ -89,6 +91,9 @@ class LavaballTrapWatcher extends WatcherImpl { public LavaballTrapWatcher(final LavaballTrapWatcher watcher) { super(watcher); + for (Map.Entry entry : watcher.amountOfLandsPlayedThisTurn.entrySet()) { + amountOfLandsPlayedThisTurn.put(entry.getKey(), entry.getValue()); + } } @Override @@ -98,25 +103,35 @@ class LavaballTrapWatcher extends WatcherImpl { @Override public void watch(GameEvent event, Game game) { - if (condition == true) { // no need to check - condition has already occured - return; - } if (event.getType() == GameEvent.EventType.ZONE_CHANGE && ((ZoneChangeEvent) event).getToZone() == Constants.Zone.BATTLEFIELD) { Permanent perm = game.getPermanent(event.getTargetId()); - if (perm.getCardType().contains(CardType.LAND) && !perm.getControllerId().equals(controllerId)) { - landPlayed += 1; - if (landPlayed >= 2) { - condition = true; + if (perm.getCardType().contains(CardType.LAND)) { + Integer amount = amountOfLandsPlayedThisTurn.get(perm.getControllerId()); + if (amount == null) { + amount = Integer.valueOf(1); + } else { + ++amount; } + amountOfLandsPlayedThisTurn.put(perm.getControllerId(), amount); } } } + public int maxLandsAnOpponentPlayedThisTurn(UUID playerId, Game game) { + int maxLands = 0; + for (UUID opponentId : game.getOpponents(playerId)) { + Integer amount = amountOfLandsPlayedThisTurn.get(opponentId); + if (amount != null && amount.intValue() > maxLands) { + maxLands = amount.intValue(); + } + } + return maxLands; + } + @Override public void reset() { super.reset(); - landPlayed = 0; - condition = false; + amountOfLandsPlayedThisTurn.clear(); } } @@ -139,7 +154,7 @@ class LavaballTrapAlternativeCost extends AlternativeCostImpl 1) { return true; } return false;