From 2b01a0341858e3bbb61610acc5f2b12e94f5d163 Mon Sep 17 00:00:00 2001 From: magenoxx Date: Fri, 15 Mar 2013 14:11:57 +0400 Subject: [PATCH] Fixed Issue#89: Unattach event does not trigger if equipped creature is exiled --- Mage/src/mage/game/GameImpl.java | 16 +++++------- .../mage/game/permanent/PermanentImpl.java | 26 +++---------------- 2 files changed, 11 insertions(+), 31 deletions(-) diff --git a/Mage/src/mage/game/GameImpl.java b/Mage/src/mage/game/GameImpl.java index 637626aad54..1610cfbb3bf 100644 --- a/Mage/src/mage/game/GameImpl.java +++ b/Mage/src/mage/game/GameImpl.java @@ -28,15 +28,7 @@ package mage.game; -import java.io.IOException; -import java.io.Serializable; -import java.util.*; -import mage.Constants.CardType; -import mage.Constants.MultiplayerAttackOption; -import mage.Constants.Outcome; -import mage.Constants.PhaseStep; -import mage.Constants.RangeOfInfluence; -import mage.Constants.Zone; +import mage.Constants.*; import mage.MageObject; import mage.abilities.Ability; import mage.abilities.ActivatedAbility; @@ -91,6 +83,10 @@ import mage.util.functions.ApplyToPermanent; import mage.watchers.common.*; import org.apache.log4j.Logger; +import java.io.IOException; +import java.io.Serializable; +import java.util.*; + public abstract class GameImpl> implements Game, Serializable { @@ -1093,7 +1089,9 @@ public abstract class GameImpl> implements Game, Serializa if (perm.getAttachedTo() != null) { Permanent creature = getPermanent(perm.getAttachedTo()); if (creature == null || !creature.getAttachments().contains(perm.getId())) { + UUID wasAttachedTo = perm.getAttachedTo(); perm.attachTo(null, this); + fireEvent(new GameEvent(GameEvent.EventType.UNATTACHED, wasAttachedTo, perm.getId(), perm.getControllerId())); } else if (!creature.getCardType().contains(CardType.CREATURE) || creature.hasProtectionFrom(perm, this)) { if (creature.removeAttachment(perm.getId(), this)) { somethingHappened = true; diff --git a/Mage/src/mage/game/permanent/PermanentImpl.java b/Mage/src/mage/game/permanent/PermanentImpl.java index b2b7ec5c994..6bf0192f148 100644 --- a/Mage/src/mage/game/permanent/PermanentImpl.java +++ b/Mage/src/mage/game/permanent/PermanentImpl.java @@ -28,13 +28,6 @@ package mage.game.permanent; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.UUID; import mage.Constants; import mage.Constants.AsThoughEffectType; import mage.Constants.CardType; @@ -44,28 +37,17 @@ import mage.abilities.Ability; import mage.abilities.effects.ContinuousEffect; import mage.abilities.effects.Effect; import mage.abilities.effects.RestrictionEffect; -import mage.abilities.keyword.DeathtouchAbility; -import mage.abilities.keyword.DefenderAbility; -import mage.abilities.keyword.HasteAbility; -import mage.abilities.keyword.HexproofAbility; -import mage.abilities.keyword.InfectAbility; -import mage.abilities.keyword.LifelinkAbility; -import mage.abilities.keyword.ProtectionAbility; -import mage.abilities.keyword.ShroudAbility; -import mage.abilities.keyword.WitherAbility; +import mage.abilities.keyword.*; import mage.cards.CardImpl; import mage.counters.Counter; import mage.counters.CounterType; import mage.game.Game; -import mage.game.events.DamageCreatureEvent; -import mage.game.events.DamagePlaneswalkerEvent; -import mage.game.events.DamagedCreatureEvent; -import mage.game.events.DamagedPlaneswalkerEvent; -import mage.game.events.EntersTheBattlefieldEvent; -import mage.game.events.GameEvent; +import mage.game.events.*; import mage.game.events.GameEvent.EventType; import mage.players.Player; +import java.util.*; + /** * @author BetaSteward_at_googlemail.com