From a0d0fc8b7e5a92e9071de1e43e2260984d8f085f Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Sat, 2 Feb 2013 19:06:41 +0100 Subject: [PATCH] Fixed bug of Armored Transport, Simic Charm, Changed wrong exileId handling of Bane Alley Broker and Nightveil Specter. --- .../src/mage/sets/gatecrash/AEtherize.java | 1 - .../mage/sets/gatecrash/ArmoredTransport.java | 42 ++++++++++--------- .../mage/sets/gatecrash/BaneAlleyBroker.java | 12 ++++-- .../mage/sets/gatecrash/NightveilSpecter.java | 9 +++- .../src/mage/sets/gatecrash/SimicCharm.java | 2 +- 5 files changed, 38 insertions(+), 28 deletions(-) diff --git a/Mage.Sets/src/mage/sets/gatecrash/AEtherize.java b/Mage.Sets/src/mage/sets/gatecrash/AEtherize.java index b6bcf92c275..a5287f28d16 100644 --- a/Mage.Sets/src/mage/sets/gatecrash/AEtherize.java +++ b/Mage.Sets/src/mage/sets/gatecrash/AEtherize.java @@ -59,4 +59,3 @@ public class AEtherize extends CardImpl { return new AEtherize(this); } } - diff --git a/Mage.Sets/src/mage/sets/gatecrash/ArmoredTransport.java b/Mage.Sets/src/mage/sets/gatecrash/ArmoredTransport.java index 59115d71c6b..f9cf3f9af84 100644 --- a/Mage.Sets/src/mage/sets/gatecrash/ArmoredTransport.java +++ b/Mage.Sets/src/mage/sets/gatecrash/ArmoredTransport.java @@ -40,6 +40,7 @@ import mage.cards.CardImpl; import mage.game.Game; import mage.game.events.DamageEvent; import mage.game.events.GameEvent; +import mage.game.permanent.Permanent; /** * @@ -73,46 +74,47 @@ public class ArmoredTransport extends CardImpl { class ArmoredTransportPreventCombatDamageSourceEffect extends PreventionEffectImpl { public ArmoredTransportPreventCombatDamageSourceEffect(Duration duration) { - super(duration); - staticText = "Prevent all combat damage that would be dealt to {this} by creatures blocking it" + duration.toString(); + super(duration); + staticText = "Prevent all combat damage that would be dealt to {this} by creatures blocking it" + duration.toString(); } public ArmoredTransportPreventCombatDamageSourceEffect(final ArmoredTransportPreventCombatDamageSourceEffect effect) { - super(effect); + super(effect); } @Override public ArmoredTransportPreventCombatDamageSourceEffect copy() { - return new ArmoredTransportPreventCombatDamageSourceEffect(this); + return new ArmoredTransportPreventCombatDamageSourceEffect(this); } @Override public boolean apply(Game game, Ability source) { - return true; + return true; } @Override public boolean replaceEvent(GameEvent event, Ability source, Game game) { - GameEvent preventEvent = new GameEvent(GameEvent.EventType.PREVENT_DAMAGE, source.getFirstTarget(), source.getId(), source.getControllerId(), event.getAmount(), false); - if (!game.replaceEvent(preventEvent)) { - int damage = event.getAmount(); - event.setAmount(0); - game.fireEvent(GameEvent.getEvent(GameEvent.EventType.PREVENTED_DAMAGE, source.getFirstTarget(), source.getId(), source.getControllerId(), damage)); - return true; - } - return false; + GameEvent preventEvent = new GameEvent(GameEvent.EventType.PREVENT_DAMAGE, source.getFirstTarget(), source.getId(), source.getControllerId(), event.getAmount(), false); + if (!game.replaceEvent(preventEvent)) { + int damage = event.getAmount(); + event.setAmount(0); + game.fireEvent(GameEvent.getEvent(GameEvent.EventType.PREVENTED_DAMAGE, source.getFirstTarget(), source.getId(), source.getControllerId(), damage)); + return true; } + return false; + } @Override public boolean applies(GameEvent event, Ability source, Game game) { - if (super.applies(event, source, game)) { - DamageEvent damageEvent = (DamageEvent) event; - if (event.getTargetId().equals(source.getSourceId()) && damageEvent.isCombatDamage()) { - if (game.getState().getCombat().getAttackers().contains(source.getSourceId())) { - return true; - } + if (super.applies(event, source, game)) { + DamageEvent damageEvent = (DamageEvent) event; + if (event.getTargetId().equals(source.getSourceId()) && damageEvent.isCombatDamage()) { + Permanent sourcePermanent = game.getPermanent(source.getSourceId()); + if (sourcePermanent != null && sourcePermanent.isAttacking()) { + return true; } } - return false; + } + return false; } } diff --git a/Mage.Sets/src/mage/sets/gatecrash/BaneAlleyBroker.java b/Mage.Sets/src/mage/sets/gatecrash/BaneAlleyBroker.java index b26ed1b207b..b2bb7d4a7ee 100644 --- a/Mage.Sets/src/mage/sets/gatecrash/BaneAlleyBroker.java +++ b/Mage.Sets/src/mage/sets/gatecrash/BaneAlleyBroker.java @@ -140,7 +140,11 @@ class BaneAlleyBrokerDrawExileEffect extends OneShotEffect possibleTargets = new HashSet(); Card sourceCard = game.getCard(sourceId); if (sourceCard != null) { - UUID exileId = UUID.fromString(new StringBuilder(sourceCard.getId().toString()).append(sourceCard.getZoneChangeCounter()).toString()); + UUID exileId = (UUID) game.getState().getValue(new StringBuilder("exileZone").append(sourceId).append(sourceCard.getZoneChangeCounter()).toString()); ExileZone exile = game.getExile().getExileZone(exileId); if (exile != null && exile.size() > 0) { possibleTargets.addAll(exile); @@ -182,7 +186,7 @@ class TargetCardInBaneAlleyBrokerExile extends TargetCard 0) { return true; @@ -198,7 +202,7 @@ class TargetCardInBaneAlleyBrokerExile extends TargetCard Card card = game.getCard(sourceId); if (card != null && game.getState().getZone(card.getId()) == Zone.EXILED) { Card sourceCard = game.getCard(source.getSourceId()); - UUID exileId = UUID.fromString(new StringBuilder(sourceCard.getId().toString()).append(sourceCard.getZoneChangeCounter()).toString()); + UUID exileId = (UUID) game.getState().getValue(new StringBuilder("exileZone").append(source.getSourceId()).append(sourceCard.getZoneChangeCounter()).toString()); ExileZone zone = game.getExile().getExileZone(exileId); if (zone != null && zone.contains(card.getId())) { if (card.getCardType().contains(CardType.INSTANT) || game.canPlaySorcery(source.getControllerId())) { diff --git a/Mage.Sets/src/mage/sets/gatecrash/SimicCharm.java b/Mage.Sets/src/mage/sets/gatecrash/SimicCharm.java index 901262f2b81..c4190535581 100644 --- a/Mage.Sets/src/mage/sets/gatecrash/SimicCharm.java +++ b/Mage.Sets/src/mage/sets/gatecrash/SimicCharm.java @@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent; public class SimicCharm extends CardImpl { public SimicCharm (UUID ownerId) { - super(ownerId, 195, "Simic Charm", Rarity.UNCOMMON, new CardType[]{CardType.INSTANT}, "{B}{U}"); + super(ownerId, 195, "Simic Charm", Rarity.UNCOMMON, new CardType[]{CardType.INSTANT}, "{G}{U}"); this.expansionSetCode = "GTC"; this.color.setBlack(true);