From d031b93fd4d4bc4aa67d241bde6acbb6b147119f Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Sat, 5 Apr 2014 02:51:11 +0200 Subject: [PATCH] * Fixed a bug that prevented most continuous effects from recognizing if a permanent made zone changes and so the permanent was considered as a valid target even if the permanent changed zones (e.g. was Cloudshifted). --- .../magic2013/LilianaOfTheDarkRealms.java | 2 -- .../sets/morningtide/SharedAnimosity.java | 3 +-- .../sets/theros/RescueFromTheUnderworld.java | 7 ++---- .../abilities/effects/ContinuousEffect.java | 1 + .../effects/ContinuousEffectImpl.java | 1 + .../mage/abilities/effects/EffectImpl.java | 5 ++-- .../effects/common/DetainAllEffect.java | 4 ++-- .../effects/common/DetainTargetEffect.java | 1 - .../common/ExileTargetForSourceEffect.java | 23 +++++++++++-------- ...ttlefieldUnderYourControlTargetEffect.java | 15 ++++++++---- .../common/continious/BoostTargetEffect.java | 1 - .../continious/GainAbilityTargetEffect.java | 6 ----- .../mage/cards/repository/CardRepository.java | 2 +- Mage/src/mage/game/GameImpl.java | 4 ++-- .../target/targetpointer/TargetPointer.java | 5 ++-- 15 files changed, 39 insertions(+), 41 deletions(-) diff --git a/Mage.Sets/src/mage/sets/magic2013/LilianaOfTheDarkRealms.java b/Mage.Sets/src/mage/sets/magic2013/LilianaOfTheDarkRealms.java index 12d89373c7f..a26b8075711 100644 --- a/Mage.Sets/src/mage/sets/magic2013/LilianaOfTheDarkRealms.java +++ b/Mage.Sets/src/mage/sets/magic2013/LilianaOfTheDarkRealms.java @@ -137,8 +137,6 @@ class LilianaOfTheDarkRealmsEffect extends ContinuousEffectImpl } } if(!isChangeling){ - ArrayList> predicateList = new ArrayList>(); + ArrayList> predicateList = new ArrayList<>(); for(String subtype : permanent.getSubtype()){ predicateList.add(new SubtypePredicate(subtype)); } @@ -122,7 +122,6 @@ class SharedAnimosityEffect extends ContinuousEffectImpl power = game.getBattlefield().getActivePermanents(filter, source.getControllerId(), source.getId(), game).size(); } - targetPointer.init(game, source); } @Override diff --git a/Mage.Sets/src/mage/sets/theros/RescueFromTheUnderworld.java b/Mage.Sets/src/mage/sets/theros/RescueFromTheUnderworld.java index 362a39beaa6..9139020fe95 100644 --- a/Mage.Sets/src/mage/sets/theros/RescueFromTheUnderworld.java +++ b/Mage.Sets/src/mage/sets/theros/RescueFromTheUnderworld.java @@ -154,7 +154,7 @@ class RescueFromTheUnderworldCreateDelayedTriggeredAbilityEffect extends OneShot for(Effect effect : delayedAbility.getEffects()) { effect.getTargetPointer().init(game, source); } - // add the scraificed creature as target + // add the sacrificed creature as target for (Cost cost :source.getCosts()) { if (cost instanceof SacrificeTargetCost) { SacrificeTargetCost sacCost = (SacrificeTargetCost) cost; @@ -193,10 +193,7 @@ class RescueFromTheUnderworldDelayedTriggeredAbility extends DelayedTriggeredAbi @Override public boolean checkTrigger(GameEvent event, Game game) { - if (event.getType() == GameEvent.EventType.UPKEEP_STEP_PRE && event.getPlayerId().equals(this.controllerId)) { - return true; - } - return false; + return event.getType() == GameEvent.EventType.UPKEEP_STEP_PRE && event.getPlayerId().equals(this.controllerId); } @Override diff --git a/Mage/src/mage/abilities/effects/ContinuousEffect.java b/Mage/src/mage/abilities/effects/ContinuousEffect.java index 9a2ab076ba5..2d145de6de4 100644 --- a/Mage/src/mage/abilities/effects/ContinuousEffect.java +++ b/Mage/src/mage/abilities/effects/ContinuousEffect.java @@ -41,6 +41,7 @@ import java.util.UUID; /** * * @author BetaSteward_at_googlemail.com + * @param */ public interface ContinuousEffect> extends Effect { diff --git a/Mage/src/mage/abilities/effects/ContinuousEffectImpl.java b/Mage/src/mage/abilities/effects/ContinuousEffectImpl.java index 55424ab33c6..fa9fc55ca02 100644 --- a/Mage/src/mage/abilities/effects/ContinuousEffectImpl.java +++ b/Mage/src/mage/abilities/effects/ContinuousEffectImpl.java @@ -144,6 +144,7 @@ public abstract class ContinuousEffectImpl> ex @Override public void init(Ability source, Game game) { + targetPointer.init(game, source); //20100716 - 611.2c if (source instanceof ActivatedAbility || source instanceof TriggeredAbility) { if (layer != null) { diff --git a/Mage/src/mage/abilities/effects/EffectImpl.java b/Mage/src/mage/abilities/effects/EffectImpl.java index 8bf08bc8c11..87265962062 100644 --- a/Mage/src/mage/abilities/effects/EffectImpl.java +++ b/Mage/src/mage/abilities/effects/EffectImpl.java @@ -42,6 +42,7 @@ import java.util.UUID; /** * * @author BetaSteward_at_googlemail.com + * @param */ public abstract class EffectImpl> implements Effect { @@ -65,7 +66,7 @@ public abstract class EffectImpl> implements Effect { this.staticText = effect.staticText; this.targetPointer = effect.targetPointer.copy(); if (effect.values != null) { - values = new HashMap(); + values = new HashMap<>(); Map map = effect.values; for (Map.Entry entry : map.entrySet()) { values.put(entry.getKey(), entry.getValue()); @@ -120,7 +121,7 @@ public abstract class EffectImpl> implements Effect { public void setValue(String key, Object value) { synchronized (this) { if (values == null) { - values = new HashMap(); + values = new HashMap<>(); } } values.put(key, value); diff --git a/Mage/src/mage/abilities/effects/common/DetainAllEffect.java b/Mage/src/mage/abilities/effects/common/DetainAllEffect.java index 301c27866d4..5dd750ed17b 100644 --- a/Mage/src/mage/abilities/effects/common/DetainAllEffect.java +++ b/Mage/src/mage/abilities/effects/common/DetainAllEffect.java @@ -71,7 +71,7 @@ public class DetainAllEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - List detainedObjects = new ArrayList(); + List detainedObjects = new ArrayList<>(); for (Permanent permanent : game.getBattlefield().getActivePermanents(filter, source.getControllerId(), source.getSourceId(), game)) { game.informPlayers("Detained permanent: " + permanent.getName()); FixedTarget fixedTarget = new FixedTarget(permanent.getId()); @@ -86,7 +86,7 @@ public class DetainAllEffect extends OneShotEffect { class DetainAllRestrictionEffect extends RestrictionEffect { - private List detainedObjects; + private final List detainedObjects; public DetainAllRestrictionEffect(List detainedObjects) { super(Duration.Custom); diff --git a/Mage/src/mage/abilities/effects/common/DetainTargetEffect.java b/Mage/src/mage/abilities/effects/common/DetainTargetEffect.java index c5290691d41..ff956473c01 100644 --- a/Mage/src/mage/abilities/effects/common/DetainTargetEffect.java +++ b/Mage/src/mage/abilities/effects/common/DetainTargetEffect.java @@ -86,7 +86,6 @@ public class DetainTargetEffect extends OneShotEffect { } } DetainRestrictionEffect effect = new DetainRestrictionEffect(); - effect.getTargetPointer().init(game, source); // needed to init zoneChangeCounter game.addEffect(effect, source); return true; } diff --git a/Mage/src/mage/abilities/effects/common/ExileTargetForSourceEffect.java b/Mage/src/mage/abilities/effects/common/ExileTargetForSourceEffect.java index 79d1f123ee2..8838ab142be 100644 --- a/Mage/src/mage/abilities/effects/common/ExileTargetForSourceEffect.java +++ b/Mage/src/mage/abilities/effects/common/ExileTargetForSourceEffect.java @@ -29,13 +29,15 @@ package mage.abilities.effects.common; import java.util.UUID; -import mage.constants.Outcome; import mage.abilities.Ability; import mage.abilities.Mode; import mage.abilities.effects.OneShotEffect; import mage.cards.Card; +import mage.constants.Outcome; +import mage.constants.Zone; import mage.game.Game; import mage.game.permanent.Permanent; +import mage.players.Player; /** * @@ -66,14 +68,17 @@ public class ExileTargetForSourceEffect extends OneShotEffect { power = new StaticValue(power.calculate(game, source)); toughness = new StaticValue(toughness.calculate(game, source)); } - targetPointer.init(game, source); } @Override diff --git a/Mage/src/mage/abilities/effects/common/continious/GainAbilityTargetEffect.java b/Mage/src/mage/abilities/effects/common/continious/GainAbilityTargetEffect.java index c1ccd19c3d4..4006b36573a 100644 --- a/Mage/src/mage/abilities/effects/common/continious/GainAbilityTargetEffect.java +++ b/Mage/src/mage/abilities/effects/common/continious/GainAbilityTargetEffect.java @@ -79,12 +79,6 @@ public class GainAbilityTargetEffect extends ContinuousEffectImpl cardDao; diff --git a/Mage/src/mage/game/GameImpl.java b/Mage/src/mage/game/GameImpl.java index 54333661ccc..97746b1598f 100644 --- a/Mage/src/mage/game/GameImpl.java +++ b/Mage/src/mage/game/GameImpl.java @@ -1227,8 +1227,8 @@ public abstract class GameImpl> implements Game, Serializa } } - List planeswalkers = new ArrayList(); - List legendary = new ArrayList(); + List planeswalkers = new ArrayList<>(); + List legendary = new ArrayList<>(); for (Permanent perm: getBattlefield().getAllActivePermanents()) { if (perm.getCardType().contains(CardType.CREATURE)) { //20091005 - 704.5f diff --git a/Mage/src/mage/target/targetpointer/TargetPointer.java b/Mage/src/mage/target/targetpointer/TargetPointer.java index 545b018924e..fff525f6b84 100644 --- a/Mage/src/mage/target/targetpointer/TargetPointer.java +++ b/Mage/src/mage/target/targetpointer/TargetPointer.java @@ -1,11 +1,10 @@ package mage.target.targetpointer; -import mage.abilities.Ability; -import mage.game.Game; - import java.io.Serializable; import java.util.List; import java.util.UUID; +import mage.abilities.Ability; +import mage.game.Game; public interface TargetPointer extends Serializable { void init(Game game, Ability source);