diff --git a/Mage.Sets/src/mage/cards/a/AngelicArbiter.java b/Mage.Sets/src/mage/cards/a/AngelicArbiter.java index 4acf0a2b1b9..167a878e736 100644 --- a/Mage.Sets/src/mage/cards/a/AngelicArbiter.java +++ b/Mage.Sets/src/mage/cards/a/AngelicArbiter.java @@ -1,7 +1,5 @@ - package mage.cards.a; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; @@ -18,8 +16,9 @@ import mage.game.permanent.Permanent; import mage.watchers.common.CastSpellLastTurnWatcher; import mage.watchers.common.PlayerAttackedWatcher; +import java.util.UUID; + /** - * * @author BetaSteward_at_googlemail.com */ public final class AngelicArbiter extends CardImpl { @@ -67,15 +66,13 @@ class AngelicArbiterCantAttackTargetEffect extends RestrictionEffect { public boolean applies(Permanent permanent, Ability source, Game game) { if (game.isActivePlayer(permanent.getControllerId()) && game.getOpponents(source.getControllerId()).contains(permanent.getControllerId())) { CastSpellLastTurnWatcher watcher = game.getState().getWatcher(CastSpellLastTurnWatcher.class); - if (watcher != null && watcher.getAmountOfSpellsPlayerCastOnCurrentTurn(permanent.getControllerId()) > 0) { - return true; - } + return watcher != null && watcher.getAmountOfSpellsPlayerCastOnCurrentTurn(permanent.getControllerId()) > 0; } return false; } @Override - public boolean canAttack(Game game) { + public boolean canAttack(Game game, boolean canUseChooseDialogs) { return false; } @@ -115,9 +112,7 @@ class AngelicArbiterEffect2 extends ContinuousRuleModifyingEffectImpl { public boolean applies(GameEvent event, Ability source, Game game) { if (game.isActivePlayer(event.getPlayerId()) && game.getOpponents(source.getControllerId()).contains(event.getPlayerId())) { PlayerAttackedWatcher watcher = game.getState().getWatcher(PlayerAttackedWatcher.class); - if (watcher != null && watcher.getNumberOfAttackersCurrentTurn(event.getPlayerId()) > 0) { - return true; - } + return watcher != null && watcher.getNumberOfAttackersCurrentTurn(event.getPlayerId()) > 0; } return false; } diff --git a/Mage.Sets/src/mage/cards/a/Arboria.java b/Mage.Sets/src/mage/cards/a/Arboria.java index 11b2d7ba0af..e45fa657843 100644 --- a/Mage.Sets/src/mage/cards/a/Arboria.java +++ b/Mage.Sets/src/mage/cards/a/Arboria.java @@ -58,7 +58,7 @@ class ArboriaEffect extends RestrictionEffect { } @Override - public boolean canAttack(Permanent attacker, UUID defenderId, Ability source, Game game) { + public boolean canAttack(Permanent attacker, UUID defenderId, Ability source, Game game, boolean canUseChooseDialogs) { if (defenderId == null) { return true; } diff --git a/Mage.Sets/src/mage/cards/b/BloodcrazedGoblin.java b/Mage.Sets/src/mage/cards/b/BloodcrazedGoblin.java index ab1708edb19..8ebb4b39b4f 100644 --- a/Mage.Sets/src/mage/cards/b/BloodcrazedGoblin.java +++ b/Mage.Sets/src/mage/cards/b/BloodcrazedGoblin.java @@ -1,5 +1,3 @@ - - package mage.cards.b; import mage.MageInt; @@ -62,7 +60,7 @@ class BloodcrazedGoblinEffect extends RestrictionEffect { } @Override - public boolean canAttack(Game game) { + public boolean canAttack(Game game, boolean canUseChooseDialogs) { return false; } diff --git a/Mage.Sets/src/mage/cards/b/BoldwyrIntimidator.java b/Mage.Sets/src/mage/cards/b/BoldwyrIntimidator.java index 19e439b7623..c44b6d4c5a8 100644 --- a/Mage.Sets/src/mage/cards/b/BoldwyrIntimidator.java +++ b/Mage.Sets/src/mage/cards/b/BoldwyrIntimidator.java @@ -1,4 +1,3 @@ - package mage.cards.b; import mage.MageInt; @@ -22,27 +21,26 @@ import mage.target.common.TargetCreaturePermanent; import java.util.UUID; /** - * * @author fireshoes */ public final class BoldwyrIntimidator extends CardImpl { public BoldwyrIntimidator(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{R}{R}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{R}{R}"); this.subtype.add(SubType.GIANT, SubType.WARRIOR); this.power = new MageInt(5); this.toughness = new MageInt(5); // Cowards can't block Warriors. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoldwyrIntimidatorEffect())); - + // {R}: Target creature becomes a Coward until end of turn. Effect effect = new BecomesCreatureTypeTargetEffect(Duration.EndOfTurn, SubType.COWARD); effect.setText("Target creature becomes a Coward until end of turn"); Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new ManaCostsImpl("{R}")); ability.addTarget(new TargetCreaturePermanent()); this.addAbility(ability); - + // {2}{R}: Target creature becomes a Warrior until end of turn. effect = new BecomesCreatureTypeTargetEffect(Duration.EndOfTurn, SubType.WARRIOR); effect.setText("Target creature becomes a Warrior until end of turn"); @@ -75,14 +73,11 @@ class BoldwyrIntimidatorEffect extends RestrictionEffect { @Override public boolean applies(Permanent permanent, Ability source, Game game) { Permanent sourcePermanent = game.getPermanent(source.getSourceId()); - if (sourcePermanent != null) { - return true; - } - return false; + return sourcePermanent != null; } @Override - public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { if (attacker != null && blocker != null) { Permanent sourcePermanent = game.getPermanent(source.getSourceId()); if (sourcePermanent != null && attacker.hasSubtype(SubType.WARRIOR, game)) { diff --git a/Mage.Sets/src/mage/cards/b/BontuTheGlorified.java b/Mage.Sets/src/mage/cards/b/BontuTheGlorified.java index 7ea8bac0b4f..79e561b86e0 100644 --- a/Mage.Sets/src/mage/cards/b/BontuTheGlorified.java +++ b/Mage.Sets/src/mage/cards/b/BontuTheGlorified.java @@ -1,7 +1,5 @@ - package mage.cards.b; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; @@ -25,8 +23,9 @@ import mage.players.Player; import mage.target.common.TargetControlledPermanent; import mage.watchers.common.CreaturesDiedWatcher; +import java.util.UUID; + /** - * * @author jeffwadsworth */ public final class BontuTheGlorified extends CardImpl { @@ -85,12 +84,12 @@ class BontuTheGlorifiedRestrictionEffect extends RestrictionEffect { } @Override - public boolean canAttack(Game game) { + public boolean canAttack(Game game, boolean canUseChooseDialogs) { return false; } @Override - public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { return false; } diff --git a/Mage.Sets/src/mage/cards/b/BowerPassage.java b/Mage.Sets/src/mage/cards/b/BowerPassage.java index 2051063fd98..d1ae1ac1d8c 100644 --- a/Mage.Sets/src/mage/cards/b/BowerPassage.java +++ b/Mage.Sets/src/mage/cards/b/BowerPassage.java @@ -1,7 +1,5 @@ - package mage.cards.b; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.RestrictionEffect; @@ -14,13 +12,15 @@ import mage.constants.Zone; import mage.game.Game; import mage.game.permanent.Permanent; +import java.util.UUID; + /** * @author noxx */ public final class BowerPassage extends CardImpl { public BowerPassage(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{G}"); + super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{G}"); // Creatures with flying can't block creatures you control. @@ -59,11 +59,8 @@ class BowerPassageEffect extends RestrictionEffect { } @Override - public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { - if (attacker != null && attacker.isControlledBy(source.getControllerId()) && blocker.getAbilities().contains(FlyingAbility.getInstance())) { - return false; - } - return true; + public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { + return attacker == null || !attacker.isControlledBy(source.getControllerId()) || !blocker.getAbilities().contains(FlyingAbility.getInstance()); } } diff --git a/Mage.Sets/src/mage/cards/b/BrandedBrawlers.java b/Mage.Sets/src/mage/cards/b/BrandedBrawlers.java index af4918a29d5..ddaaeedf9d9 100644 --- a/Mage.Sets/src/mage/cards/b/BrandedBrawlers.java +++ b/Mage.Sets/src/mage/cards/b/BrandedBrawlers.java @@ -1,7 +1,5 @@ - package mage.cards.b; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; @@ -10,8 +8,8 @@ import mage.abilities.effects.common.combat.CantAttackIfDefenderControlsPermanen import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.SubType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterPermanent; import mage.filter.common.FilterLandPermanent; @@ -21,16 +19,19 @@ import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; +import java.util.UUID; + /** * @author L_J */ public final class BrandedBrawlers extends CardImpl { static final private FilterLandPermanent filter = new FilterLandPermanent("an untapped land"); + static { filter.add(Predicates.not(TappedPredicate.instance)); } - + static final private String rule = "{this} can't block if you control an untapped land"; public BrandedBrawlers(UUID ownerId, CardSetInfo setInfo) { @@ -78,12 +79,10 @@ class BrandedBrawlersCantBlockEffect extends RestrictionEffect { } @Override - public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { Player player = game.getPlayer(blocker.getControllerId()); if (player != null) { - if (game.getBattlefield().countAll(filter, player.getId(), game) > 0) { - return false; - } + return game.getBattlefield().countAll(filter, player.getId(), game) <= 0; } return true; } diff --git a/Mage.Sets/src/mage/cards/c/CageOfHands.java b/Mage.Sets/src/mage/cards/c/CageOfHands.java index 32199c393a5..4130d968354 100644 --- a/Mage.Sets/src/mage/cards/c/CageOfHands.java +++ b/Mage.Sets/src/mage/cards/c/CageOfHands.java @@ -1,8 +1,5 @@ - - package mage.cards.c; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.common.SimpleStaticAbility; @@ -13,27 +10,24 @@ import mage.abilities.effects.common.ReturnToHandSourceEffect; import mage.abilities.keyword.EnchantAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.SubType; -import mage.constants.Duration; -import mage.constants.Outcome; -import mage.constants.Zone; +import mage.constants.*; import mage.game.Game; import mage.game.permanent.Permanent; import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import java.util.UUID; + /** - * * @author Loki */ public final class CageOfHands extends CardImpl { - public CageOfHands (UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{W}"); + public CageOfHands(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}"); this.subtype.add(SubType.AURA); - + // Enchant creature TargetPermanent auraTarget = new TargetCreaturePermanent(); this.getSpellAbility().addTarget(auraTarget); @@ -48,7 +42,7 @@ public final class CageOfHands extends CardImpl { this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new ReturnToHandSourceEffect(true), new ManaCostsImpl("{1}{W}"))); } - public CageOfHands (final CageOfHands card) { + public CageOfHands(final CageOfHands card) { super(card); } @@ -71,19 +65,16 @@ class CageOfHandsEffect extends RestrictionEffect { @Override public boolean applies(Permanent permanent, Ability source, Game game) { - if (permanent.getAttachments().contains((source.getSourceId()))) { - return true; - } + return permanent.getAttachments().contains((source.getSourceId())); + } + + @Override + public boolean canAttack(Game game, boolean canUseChooseDialogs) { return false; } @Override - public boolean canAttack(Game game) { - return false; - } - - @Override - public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { return false; } diff --git a/Mage.Sets/src/mage/cards/c/CanopyCover.java b/Mage.Sets/src/mage/cards/c/CanopyCover.java index 4fa4768cc2f..ff82a8bc79c 100644 --- a/Mage.Sets/src/mage/cards/c/CanopyCover.java +++ b/Mage.Sets/src/mage/cards/c/CanopyCover.java @@ -1,7 +1,5 @@ - package mage.cards.c; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.RestrictionEffect; @@ -20,6 +18,8 @@ import mage.game.permanent.Permanent; import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import java.util.UUID; + /** * @author noxx */ @@ -71,15 +71,13 @@ class CanopyCoverEffect extends RestrictionEffect { Permanent equipment = game.getPermanent(source.getSourceId()); if (equipment != null && equipment.getAttachedTo() != null) { Permanent equipped = game.getPermanent(equipment.getAttachedTo()); - if (equipped != null && permanent.getId().equals(equipped.getId())) { - return true; - } + return equipped != null && permanent.getId().equals(equipped.getId()); } return false; } @Override - public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { return blocker.getAbilities().contains(FlyingAbility.getInstance()) || blocker.getAbilities().contains(ReachAbility.getInstance()); } diff --git a/Mage.Sets/src/mage/cards/c/CavernsOfDespair.java b/Mage.Sets/src/mage/cards/c/CavernsOfDespair.java index 392fb6dd274..6b7f873e4b8 100644 --- a/Mage.Sets/src/mage/cards/c/CavernsOfDespair.java +++ b/Mage.Sets/src/mage/cards/c/CavernsOfDespair.java @@ -1,7 +1,5 @@ - package mage.cards.c; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.RestrictionEffect; @@ -10,12 +8,13 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; import mage.constants.SuperType; +import mage.constants.Zone; import mage.game.Game; import mage.game.permanent.Permanent; -import mage.constants.Zone; + +import java.util.UUID; /** - * * @author TheElk801 */ public final class CavernsOfDespair extends CardImpl { @@ -64,7 +63,7 @@ class CavernsOfDespairAttackRestrictionEffect extends RestrictionEffect { } @Override - public boolean canAttack(Permanent attacker, UUID defenderId, Ability source, Game game) { + public boolean canAttack(Permanent attacker, UUID defenderId, Ability source, Game game, boolean canUseChooseDialogs) { return game.getCombat().getAttackers().size() < 2; } } @@ -91,7 +90,7 @@ class CavernsOfDespairBlockRestrictionEffect extends RestrictionEffect { } @Override - public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { return game.getCombat().getBlockers().size() < 2; } } diff --git a/Mage.Sets/src/mage/cards/c/ChainedThroatseeker.java b/Mage.Sets/src/mage/cards/c/ChainedThroatseeker.java index 69e12ec7009..f9ac5ba3275 100644 --- a/Mage.Sets/src/mage/cards/c/ChainedThroatseeker.java +++ b/Mage.Sets/src/mage/cards/c/ChainedThroatseeker.java @@ -1,7 +1,5 @@ - package mage.cards.c; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; @@ -10,22 +8,23 @@ import mage.abilities.keyword.InfectAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.SubType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.counters.CounterType; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; +import java.util.UUID; + /** - * * @author North */ public final class ChainedThroatseeker extends CardImpl { public ChainedThroatseeker(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{U}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{U}"); this.subtype.add(SubType.HORROR); this.power = new MageInt(5); @@ -65,12 +64,10 @@ class ChainedThroatseekerCantAttackEffect extends RestrictionEffect { } @Override - public boolean canAttack(Permanent attacker, UUID defenderId, Ability source, Game game) { + public boolean canAttack(Permanent attacker, UUID defenderId, Ability source, Game game, boolean canUseChooseDialogs) { Player targetPlayer = game.getPlayer(defenderId); if (targetPlayer != null) { - if (targetPlayer.getCounters().containsKey(CounterType.POISON)) { - return true; - } + return targetPlayer.getCounters().containsKey(CounterType.POISON); } return false; } diff --git a/Mage.Sets/src/mage/cards/c/ChampionOfLambholt.java b/Mage.Sets/src/mage/cards/c/ChampionOfLambholt.java index c7c320feedf..8040e0c0374 100644 --- a/Mage.Sets/src/mage/cards/c/ChampionOfLambholt.java +++ b/Mage.Sets/src/mage/cards/c/ChampionOfLambholt.java @@ -73,7 +73,7 @@ class ChampionOfLambholtEffect extends RestrictionEffect { } @Override - public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { Permanent sourcePermanent = game.getPermanent(source.getSourceId()); if (sourcePermanent != null && attacker != null && attacker.isControlledBy(sourcePermanent.getControllerId())) { return blocker.getPower().getValue() >= sourcePermanent.getPower().getValue(); diff --git a/Mage.Sets/src/mage/cards/c/Chaosphere.java b/Mage.Sets/src/mage/cards/c/Chaosphere.java index dae8b6f7b74..12511380fc7 100644 --- a/Mage.Sets/src/mage/cards/c/Chaosphere.java +++ b/Mage.Sets/src/mage/cards/c/Chaosphere.java @@ -78,7 +78,7 @@ class ChaosphereEffect extends RestrictionEffect { } @Override - public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { if (attacker == null) { return true; } diff --git a/Mage.Sets/src/mage/cards/c/ConcussiveBolt.java b/Mage.Sets/src/mage/cards/c/ConcussiveBolt.java index 50103876f9a..23c5c0e79d4 100644 --- a/Mage.Sets/src/mage/cards/c/ConcussiveBolt.java +++ b/Mage.Sets/src/mage/cards/c/ConcussiveBolt.java @@ -1,7 +1,5 @@ - package mage.cards.c; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.condition.common.MetalcraftCondition; import mage.abilities.effects.OneShotEffect; @@ -17,8 +15,9 @@ import mage.game.permanent.Permanent; import mage.players.Player; import mage.target.common.TargetPlayerOrPlaneswalker; +import java.util.UUID; + /** - * * @author North */ public final class ConcussiveBolt extends CardImpl { @@ -89,14 +88,11 @@ class ConcussiveBoltRestrictionEffect extends RestrictionEffect { if (player == null) { return false; } - if (metalcraft && permanent.isControlledBy(player.getId())) { - return true; - } - return false; + return metalcraft && permanent.isControlledBy(player.getId()); } @Override - public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { return false; } } diff --git a/Mage.Sets/src/mage/cards/c/CrownHunterHireling.java b/Mage.Sets/src/mage/cards/c/CrownHunterHireling.java index c2f31d056b7..0c479bcf509 100644 --- a/Mage.Sets/src/mage/cards/c/CrownHunterHireling.java +++ b/Mage.Sets/src/mage/cards/c/CrownHunterHireling.java @@ -64,7 +64,7 @@ class CrownHunterHirelingCantAttackEffect extends RestrictionEffect { } @Override - public boolean canAttack(Permanent attacker, UUID defenderId, Ability source, Game game) { + public boolean canAttack(Permanent attacker, UUID defenderId, Ability source, Game game, boolean canUseChooseDialogs) { if (defenderId == null) { return true; } diff --git a/Mage.Sets/src/mage/cards/c/CursedTotem.java b/Mage.Sets/src/mage/cards/c/CursedTotem.java index 5237df02a0f..b10fec6e2cc 100644 --- a/Mage.Sets/src/mage/cards/c/CursedTotem.java +++ b/Mage.Sets/src/mage/cards/c/CursedTotem.java @@ -1,7 +1,5 @@ - package mage.cards.c; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.RestrictionEffect; @@ -13,14 +11,15 @@ import mage.constants.Zone; import mage.game.Game; import mage.game.permanent.Permanent; +import java.util.UUID; + /** - * * @author Plopman */ public final class CursedTotem extends CardImpl { public CursedTotem(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}"); + super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}"); // Activated abilities of creatures can't be activated. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CursedTotemCantActivateEffect())); @@ -53,7 +52,7 @@ class CursedTotemCantActivateEffect extends RestrictionEffect { } @Override - public boolean canUseActivatedAbilities(Permanent permanent, Ability source, Game game) { + public boolean canUseActivatedAbilities(Permanent permanent, Ability source, Game game, boolean canUseChooseDialogs) { return false; } diff --git a/Mage.Sets/src/mage/cards/d/DeadlockTrap.java b/Mage.Sets/src/mage/cards/d/DeadlockTrap.java index 46ce08b19dd..1a4c7233273 100644 --- a/Mage.Sets/src/mage/cards/d/DeadlockTrap.java +++ b/Mage.Sets/src/mage/cards/d/DeadlockTrap.java @@ -1,7 +1,5 @@ - package mage.cards.d; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTappedAbility; import mage.abilities.common.EntersBattlefieldTriggeredAbility; @@ -20,14 +18,15 @@ import mage.game.Game; import mage.game.permanent.Permanent; import mage.target.common.TargetCreatureOrPlaneswalker; +import java.util.UUID; + /** - * * @author spjspj */ public final class DeadlockTrap extends CardImpl { public DeadlockTrap(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}"); + super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}"); // Deadlock Trap enters the battlefield tapped. this.addAbility(new EntersBattlefieldTappedAbility()); @@ -70,7 +69,7 @@ class DeadlockTrapCantActivateEffect extends RestrictionEffect { } @Override - public boolean canUseActivatedAbilities(Permanent permanent, Ability source, Game game) { + public boolean canUseActivatedAbilities(Permanent permanent, Ability source, Game game, boolean canUseChooseDialogs) { return false; } diff --git a/Mage.Sets/src/mage/cards/d/DeathcultRogue.java b/Mage.Sets/src/mage/cards/d/DeathcultRogue.java index cf5b63bea8d..c161b415bc5 100644 --- a/Mage.Sets/src/mage/cards/d/DeathcultRogue.java +++ b/Mage.Sets/src/mage/cards/d/DeathcultRogue.java @@ -1,7 +1,5 @@ - package mage.cards.d; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; @@ -15,14 +13,15 @@ import mage.constants.Zone; import mage.game.Game; import mage.game.permanent.Permanent; +import java.util.UUID; + /** - * * @author LevelX2 */ public final class DeathcultRogue extends CardImpl { public DeathcultRogue(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U/B}{U/B}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U/B}{U/B}"); this.subtype.add(SubType.HUMAN); this.subtype.add(SubType.ROGUE); @@ -44,7 +43,7 @@ public final class DeathcultRogue extends CardImpl { } } -class DeathcultRogueRestrictionEffect extends RestrictionEffect { +class DeathcultRogueRestrictionEffect extends RestrictionEffect { public DeathcultRogueRestrictionEffect() { super(Duration.WhileOnBattlefield); @@ -57,18 +56,12 @@ class DeathcultRogueRestrictionEffect extends RestrictionEffect { @Override public boolean applies(Permanent permanent, Ability source, Game game) { - if (permanent.getId().equals(source.getSourceId())) { - return true; - } - return false; + return permanent.getId().equals(source.getSourceId()); } @Override - public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game) { - if (blocker.hasSubtype(SubType.ROGUE, game)) { - return true; - } - return false; + public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { + return blocker.hasSubtype(SubType.ROGUE, game); } @Override diff --git a/Mage.Sets/src/mage/cards/d/DenseCanopy.java b/Mage.Sets/src/mage/cards/d/DenseCanopy.java index 308cbe8ae1b..9a43da5da03 100644 --- a/Mage.Sets/src/mage/cards/d/DenseCanopy.java +++ b/Mage.Sets/src/mage/cards/d/DenseCanopy.java @@ -62,7 +62,7 @@ class DenseCanopyCantBlockEffect extends RestrictionEffect { } @Override - public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { if (attacker == null) { return true; } diff --git a/Mage.Sets/src/mage/cards/d/DesperateCastaways.java b/Mage.Sets/src/mage/cards/d/DesperateCastaways.java index 8eb77389407..266e087a150 100644 --- a/Mage.Sets/src/mage/cards/d/DesperateCastaways.java +++ b/Mage.Sets/src/mage/cards/d/DesperateCastaways.java @@ -1,23 +1,22 @@ - package mage.cards.d; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.RestrictionEffect; -import mage.constants.SubType; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.StaticFilters; import mage.game.Game; import mage.game.permanent.Permanent; +import java.util.UUID; + /** - * * @author TheElk801 */ public final class DesperateCastaways extends CardImpl { @@ -61,17 +60,14 @@ class DesperateCastawaysEffect extends RestrictionEffect { } @Override - public boolean canAttack(Game game) { + public boolean canAttack(Game game, boolean canUseChooseDialogs) { return false; } @Override public boolean applies(Permanent permanent, Ability source, Game game) { if (permanent.getId().equals(source.getSourceId())) { - if (game.getBattlefield().countAll(StaticFilters.FILTER_CONTROLLED_PERMANENT_ARTIFACT, source.getControllerId(), game) > 0) { - return false; - } - return true; + return game.getBattlefield().countAll(StaticFilters.FILTER_CONTROLLED_PERMANENT_ARTIFACT, source.getControllerId(), game) <= 0; } // do not apply to other creatures. return false; } diff --git a/Mage.Sets/src/mage/cards/d/DuelingGrounds.java b/Mage.Sets/src/mage/cards/d/DuelingGrounds.java index 25418a7d7ca..e1e91f5c255 100644 --- a/Mage.Sets/src/mage/cards/d/DuelingGrounds.java +++ b/Mage.Sets/src/mage/cards/d/DuelingGrounds.java @@ -1,8 +1,5 @@ - package mage.cards.d; -import java.util.Set; -import java.util.UUID; import mage.MageObjectReference; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; @@ -18,8 +15,10 @@ import mage.game.permanent.Permanent; import mage.watchers.common.AttackedThisTurnWatcher; import mage.watchers.common.BlockedThisTurnWatcher; +import java.util.Set; +import java.util.UUID; + /** - * * @author Quercitron */ public final class DuelingGrounds extends CardImpl { @@ -70,12 +69,12 @@ class NoMoreThanOneCreatureCanAttackEachTurnEffect extends RestrictionEffect { } @Override - public boolean canAttack(Permanent attacker, UUID defenderId, Ability source, Game game) { + public boolean canAttack(Permanent attacker, UUID defenderId, Ability source, Game game, boolean canUseChooseDialogs) { if (!game.getCombat().getAttackers().isEmpty()) { return false; } AttackedThisTurnWatcher watcher = game.getState().getWatcher(AttackedThisTurnWatcher.class); - if(watcher == null){ + if (watcher == null) { return false; } Set attackedThisTurnCreatures = watcher.getAttackedThisTurnCreatures(); @@ -107,12 +106,12 @@ class NoMoreThanOneCreatureCanBlockEachTurnEffect extends RestrictionEffect { } @Override - public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { if (!game.getCombat().getBlockers().isEmpty()) { return false; } BlockedThisTurnWatcher watcher = game.getState().getWatcher(BlockedThisTurnWatcher.class); - if(watcher == null){ + if (watcher == null) { return false; } Set blockedThisTurnCreatures = watcher.getBlockedThisTurnCreatures(); diff --git a/Mage.Sets/src/mage/cards/e/EdificeOfAuthority.java b/Mage.Sets/src/mage/cards/e/EdificeOfAuthority.java index 9ee96ef7838..d6787d80f78 100644 --- a/Mage.Sets/src/mage/cards/e/EdificeOfAuthority.java +++ b/Mage.Sets/src/mage/cards/e/EdificeOfAuthority.java @@ -1,7 +1,5 @@ - package mage.cards.e; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.condition.Condition; @@ -15,19 +13,16 @@ import mage.abilities.effects.common.combat.CantAttackTargetEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.Outcome; -import mage.constants.PhaseStep; -import mage.constants.Zone; +import mage.constants.*; import mage.counters.CounterType; import mage.game.Game; import mage.game.permanent.Permanent; import mage.game.turn.Step; import mage.target.common.TargetCreaturePermanent; +import java.util.UUID; + /** - * * @author jeffwadsworth */ public final class EdificeOfAuthority extends CardImpl { @@ -133,24 +128,21 @@ class EdificeOfAuthorityRestrictionEffect extends RestrictionEffect { @Override public boolean applies(Permanent permanent, Ability source, Game game) { - if (this.targetPointer.getTargets(game, source).contains(permanent.getId())) { - return true; - } + return this.targetPointer.getTargets(game, source).contains(permanent.getId()); + } + + @Override + public boolean canAttack(Game game, boolean canUseChooseDialogs) { return false; } @Override - public boolean canAttack(Game game) { + public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { return false; } @Override - public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { - return false; - } - - @Override - public boolean canUseActivatedAbilities(Permanent permanent, Ability source, Game game) { + public boolean canUseActivatedAbilities(Permanent permanent, Ability source, Game game, boolean canUseChooseDialogs) { return false; } diff --git a/Mage.Sets/src/mage/cards/e/EnsnaringBridge.java b/Mage.Sets/src/mage/cards/e/EnsnaringBridge.java index 0fdf7a1862a..eb322322668 100644 --- a/Mage.Sets/src/mage/cards/e/EnsnaringBridge.java +++ b/Mage.Sets/src/mage/cards/e/EnsnaringBridge.java @@ -1,7 +1,5 @@ - package mage.cards.e; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.RestrictionEffect; @@ -14,8 +12,9 @@ import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; +import java.util.UUID; + /** - * * @author Plopman */ public final class EnsnaringBridge extends CardImpl { @@ -59,7 +58,7 @@ class EnsnaringBridgeRestrictionEffect extends RestrictionEffect { } @Override - public boolean canAttack(Game game) { + public boolean canAttack(Game game, boolean canUseChooseDialogs) { return false; } diff --git a/Mage.Sets/src/mage/cards/e/EunuchsIntrigues.java b/Mage.Sets/src/mage/cards/e/EunuchsIntrigues.java index 1daf99900dc..2422e5e1bfa 100644 --- a/Mage.Sets/src/mage/cards/e/EunuchsIntrigues.java +++ b/Mage.Sets/src/mage/cards/e/EunuchsIntrigues.java @@ -1,7 +1,5 @@ - package mage.cards.e; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.RestrictionEffect; @@ -19,8 +17,9 @@ import mage.target.Target; import mage.target.TargetPermanent; import mage.target.common.TargetOpponent; +import java.util.UUID; + /** - * * @author TheElk801 & L_J */ public final class EunuchsIntrigues extends CardImpl { @@ -83,7 +82,7 @@ class EunuchsIntriguesEffect extends OneShotEffect { } class EunuchsIntriguesRestrictionEffect extends RestrictionEffect { - + protected UUID targetId; public EunuchsIntriguesRestrictionEffect(UUID targetId) { @@ -103,17 +102,11 @@ class EunuchsIntriguesRestrictionEffect extends RestrictionEffect { @Override public boolean applies(Permanent permanent, Ability source, Game game) { - if (permanent.isControlledBy(source.getFirstTarget())) { - return true; - } - return false; + return permanent.isControlledBy(source.getFirstTarget()); } @Override - public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { - if (targetId != null && blocker.getId().equals(targetId)) { - return true; - } - return false; + public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { + return targetId != null && blocker.getId().equals(targetId); } } diff --git a/Mage.Sets/src/mage/cards/e/Exogorth.java b/Mage.Sets/src/mage/cards/e/Exogorth.java index 1475b478f5b..aaa46a05d07 100644 --- a/Mage.Sets/src/mage/cards/e/Exogorth.java +++ b/Mage.Sets/src/mage/cards/e/Exogorth.java @@ -82,7 +82,7 @@ class CanBlockOnlySpaceflightEffect extends RestrictionEffect { } @Override - public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { if (attacker == null) { return true; } diff --git a/Mage.Sets/src/mage/cards/f/FloweringLumberknot.java b/Mage.Sets/src/mage/cards/f/FloweringLumberknot.java index 22c57fd9a69..990443b39dd 100644 --- a/Mage.Sets/src/mage/cards/f/FloweringLumberknot.java +++ b/Mage.Sets/src/mage/cards/f/FloweringLumberknot.java @@ -1,7 +1,5 @@ - package mage.cards.f; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; @@ -10,19 +8,21 @@ import mage.abilities.keyword.SoulbondAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.SubType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.game.Game; import mage.game.permanent.Permanent; +import java.util.UUID; + /** * @author noxx */ public final class FloweringLumberknot extends CardImpl { public FloweringLumberknot(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}"); this.subtype.add(SubType.TREEFOLK); this.power = new MageInt(5); @@ -66,9 +66,8 @@ class FloweringLumberknotEffect extends RestrictionEffect { break; } } - if (found) { - return false;// paired => can attack or block - } + // paired => can attack or block + return !found; } } // can't attack or block @@ -79,12 +78,12 @@ class FloweringLumberknotEffect extends RestrictionEffect { } @Override - public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { return false; } @Override - public boolean canAttack(Game game) { + public boolean canAttack(Game game, boolean canUseChooseDialogs) { return false; } diff --git a/Mage.Sets/src/mage/cards/g/GiantTurtle.java b/Mage.Sets/src/mage/cards/g/GiantTurtle.java index fb72e5c8488..dc7c0aabd63 100644 --- a/Mage.Sets/src/mage/cards/g/GiantTurtle.java +++ b/Mage.Sets/src/mage/cards/g/GiantTurtle.java @@ -1,8 +1,5 @@ - package mage.cards.g; -import java.util.Set; -import java.util.UUID; import mage.MageInt; import mage.MageObjectReference; import mage.abilities.Ability; @@ -18,8 +15,10 @@ import mage.game.Game; import mage.game.permanent.Permanent; import mage.watchers.common.AttackedLastTurnWatcher; +import java.util.Set; +import java.util.UUID; + /** - * * @author TheElk801 */ public final class GiantTurtle extends CardImpl { @@ -62,14 +61,12 @@ class CantAttackIfAttackedLastTurnEffect extends RestrictionEffect { } @Override - public boolean canAttack(Permanent attacker, UUID defenderId, Ability source, Game game) { + public boolean canAttack(Permanent attacker, UUID defenderId, Ability source, Game game, boolean canUseChooseDialogs) { AttackedLastTurnWatcher watcher = game.getState().getWatcher(AttackedLastTurnWatcher.class); if (watcher != null) { Set attackingCreatures = watcher.getAttackedLastTurnCreatures(attacker.getControllerId()); MageObjectReference mor = new MageObjectReference(attacker, game); - if (attackingCreatures.contains(mor)) { - return false; - } + return !attackingCreatures.contains(mor); } return true; } diff --git a/Mage.Sets/src/mage/cards/g/GlacialCrasher.java b/Mage.Sets/src/mage/cards/g/GlacialCrasher.java index 36a1fab245f..ba066a828b4 100644 --- a/Mage.Sets/src/mage/cards/g/GlacialCrasher.java +++ b/Mage.Sets/src/mage/cards/g/GlacialCrasher.java @@ -1,7 +1,5 @@ - package mage.cards.g; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; @@ -18,14 +16,15 @@ import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; +import java.util.UUID; + /** - * * @author LevelX2 */ public final class GlacialCrasher extends CardImpl { public GlacialCrasher(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}{U}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{U}{U}"); this.subtype.add(SubType.ELEMENTAL); this.power = new MageInt(5); @@ -71,16 +70,14 @@ class GlacialCrasherEffect extends RestrictionEffect { } @Override - public boolean canAttack(Game game) { + public boolean canAttack(Game game, boolean canUseChooseDialogs) { return false; } @Override public boolean applies(Permanent permanent, Ability source, Game game) { if (permanent.getId().equals(source.getSourceId())) { - if (game.getBattlefield().count(filter, source.getSourceId(), source.getControllerId(), game) < 1) { - return true; - } + return game.getBattlefield().count(filter, source.getSourceId(), source.getControllerId(), game) < 1; } return false; } diff --git a/Mage.Sets/src/mage/cards/g/GoblinCohort.java b/Mage.Sets/src/mage/cards/g/GoblinCohort.java index 452b58b2bc5..7410b939c33 100644 --- a/Mage.Sets/src/mage/cards/g/GoblinCohort.java +++ b/Mage.Sets/src/mage/cards/g/GoblinCohort.java @@ -1,7 +1,5 @@ - package mage.cards.g; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; @@ -9,21 +7,22 @@ import mage.abilities.effects.RestrictionEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.SubType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.game.Game; import mage.game.permanent.Permanent; import mage.watchers.common.PlayerCastCreatureWatcher; +import java.util.UUID; + /** - * * @author LevelX2 */ public final class GoblinCohort extends CardImpl { public GoblinCohort(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{R}"); this.subtype.add(SubType.GOBLIN); this.subtype.add(SubType.WARRIOR); @@ -62,7 +61,7 @@ class GoblinCohortEffect extends RestrictionEffect { } @Override - public boolean canAttack(Game game) { + public boolean canAttack(Game game, boolean canUseChooseDialogs) { return false; } @@ -70,9 +69,7 @@ class GoblinCohortEffect extends RestrictionEffect { public boolean applies(Permanent permanent, Ability source, Game game) { if (permanent.getId().equals(source.getSourceId())) { PlayerCastCreatureWatcher watcher = game.getState().getWatcher(PlayerCastCreatureWatcher.class); - if (watcher != null && !watcher.playerDidCastCreatureThisTurn(source.getControllerId())) { - return true; - } + return watcher != null && !watcher.playerDidCastCreatureThisTurn(source.getControllerId()); } return false; } diff --git a/Mage.Sets/src/mage/cards/g/GoblinGoon.java b/Mage.Sets/src/mage/cards/g/GoblinGoon.java index 823e5f8a92a..c9f778653b5 100644 --- a/Mage.Sets/src/mage/cards/g/GoblinGoon.java +++ b/Mage.Sets/src/mage/cards/g/GoblinGoon.java @@ -63,7 +63,7 @@ class GoblinGoonCantAttackEffect extends RestrictionEffect { } @Override - public boolean canAttack(Permanent attacker, UUID defenderId, Ability source, Game game) { + public boolean canAttack(Permanent attacker, UUID defenderId, Ability source, Game game, boolean canUseChooseDialogs) { if (defenderId == null) { return true; } @@ -110,7 +110,7 @@ class GoblinGoonCantBlockEffect extends RestrictionEffect { } @Override - public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { if (attacker == null) { return true; } diff --git a/Mage.Sets/src/mage/cards/g/GoblinWarCry.java b/Mage.Sets/src/mage/cards/g/GoblinWarCry.java index d4479c84759..1c31bdcf43b 100644 --- a/Mage.Sets/src/mage/cards/g/GoblinWarCry.java +++ b/Mage.Sets/src/mage/cards/g/GoblinWarCry.java @@ -1,7 +1,5 @@ - package mage.cards.g; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.RestrictionEffect; @@ -19,8 +17,9 @@ import mage.target.Target; import mage.target.TargetPermanent; import mage.target.common.TargetOpponent; +import java.util.UUID; + /** - * * @author TheElk801 & L_J */ public final class GoblinWarCry extends CardImpl { @@ -83,7 +82,7 @@ class GoblinWarCryEffect extends OneShotEffect { } class GoblinWarCryRestrictionEffect extends RestrictionEffect { - + protected UUID targetId; public GoblinWarCryRestrictionEffect(UUID targetId) { @@ -103,17 +102,11 @@ class GoblinWarCryRestrictionEffect extends RestrictionEffect { @Override public boolean applies(Permanent permanent, Ability source, Game game) { - if (permanent.isControlledBy(source.getFirstTarget())) { - return true; - } - return false; + return permanent.isControlledBy(source.getFirstTarget()); } @Override - public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { - if (targetId != null && blocker.getId().equals(targetId)) { - return true; - } - return false; + public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { + return targetId != null && blocker.getId().equals(targetId); } } diff --git a/Mage.Sets/src/mage/cards/g/GwafaHazidProfiteer.java b/Mage.Sets/src/mage/cards/g/GwafaHazidProfiteer.java index db44fb64686..4368890ee03 100644 --- a/Mage.Sets/src/mage/cards/g/GwafaHazidProfiteer.java +++ b/Mage.Sets/src/mage/cards/g/GwafaHazidProfiteer.java @@ -1,7 +1,5 @@ - package mage.cards.g; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; @@ -21,20 +19,21 @@ import mage.game.permanent.Permanent; import mage.players.Player; import mage.target.common.TargetCreaturePermanent; +import java.util.UUID; + /** - * * @author jeffwadsworth */ public final class GwafaHazidProfiteer extends CardImpl { - + private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature you don't control"); - + static { filter.add(new ControllerPredicate(TargetController.NOT_YOU)); } public GwafaHazidProfiteer(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{U}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}{U}"); addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.HUMAN); this.subtype.add(SubType.ROGUE); @@ -47,10 +46,10 @@ public final class GwafaHazidProfiteer extends CardImpl { ability.addCost(new TapSourceCost()); ability.addTarget(new TargetCreaturePermanent(filter)); this.addAbility(ability); - + // Creatures with bribery counters on them can't attack or block. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GwafaHazidProfiteerEffect2())); - + } public GwafaHazidProfiteer(final GwafaHazidProfiteer card) { @@ -64,7 +63,7 @@ public final class GwafaHazidProfiteer extends CardImpl { } class GwafaHazidProfiteerEffect1 extends OneShotEffect { - + GwafaHazidProfiteerEffect1() { super(Outcome.Detriment); staticText = "Put a bribery counter on target creature you don't control. Its controller draws a card"; @@ -113,12 +112,12 @@ class GwafaHazidProfiteerEffect2 extends RestrictionEffect { } @Override - public boolean canAttack(Game game) { + public boolean canAttack(Game game, boolean canUseChooseDialogs) { return false; } - + @Override - public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { return false; } diff --git a/Mage.Sets/src/mage/cards/h/HallsOfMist.java b/Mage.Sets/src/mage/cards/h/HallsOfMist.java index 72cb16de38c..a92f8621d61 100644 --- a/Mage.Sets/src/mage/cards/h/HallsOfMist.java +++ b/Mage.Sets/src/mage/cards/h/HallsOfMist.java @@ -1,8 +1,5 @@ - package mage.cards.h; -import java.util.Set; -import java.util.UUID; import mage.MageObjectReference; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; @@ -18,8 +15,10 @@ import mage.game.Game; import mage.game.permanent.Permanent; import mage.watchers.common.AttackedLastTurnWatcher; +import java.util.Set; +import java.util.UUID; + /** - * * @author L_J */ public final class HallsOfMist extends CardImpl { @@ -61,14 +60,12 @@ class CantAttackIfAttackedLastTurnAllEffect extends RestrictionEffect { } @Override - public boolean canAttack(Permanent attacker, UUID defenderId, Ability source, Game game) { + public boolean canAttack(Permanent attacker, UUID defenderId, Ability source, Game game, boolean canUseChooseDialogs) { AttackedLastTurnWatcher watcher = game.getState().getWatcher(AttackedLastTurnWatcher.class); if (watcher != null) { Set attackingCreatures = watcher.getAttackedLastTurnCreatures(attacker.getControllerId()); MageObjectReference mor = new MageObjectReference(attacker, game); - if (attackingCreatures.contains(mor)) { - return false; - } + return !attackingCreatures.contains(mor); } return true; } diff --git a/Mage.Sets/src/mage/cards/h/HarborSerpent.java b/Mage.Sets/src/mage/cards/h/HarborSerpent.java index c91eead8d55..80fb23b6377 100644 --- a/Mage.Sets/src/mage/cards/h/HarborSerpent.java +++ b/Mage.Sets/src/mage/cards/h/HarborSerpent.java @@ -1,7 +1,5 @@ - package mage.cards.h; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; @@ -17,15 +15,16 @@ import mage.filter.common.FilterLandPermanent; import mage.game.Game; import mage.game.permanent.Permanent; +import java.util.UUID; + /** - * * @author BetaSteward_at_googlemail.com * @author North */ public final class HarborSerpent extends CardImpl { public HarborSerpent(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}{U}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{U}{U}"); this.subtype.add(SubType.SERPENT); this.power = new MageInt(5); @@ -67,13 +66,13 @@ class HarborSerpentEffect extends RestrictionEffect { } @Override - public boolean canAttack(Game game) { + public boolean canAttack(Game game, boolean canUseChooseDialogs) { return false; } @Override - public boolean applies(Permanent permanent, Ability source, Game game) { - return permanent.getId().equals(source.getSourceId()) && + public boolean applies(Permanent permanent, Ability source, Game game) { + return permanent.getId().equals(source.getSourceId()) && game.getBattlefield().count(filter, source.getSourceId(), source.getControllerId(), game) < 5; } } diff --git a/Mage.Sets/src/mage/cards/h/HeroOfOxidRidge.java b/Mage.Sets/src/mage/cards/h/HeroOfOxidRidge.java index f3dc94dc892..ea6e7ce9acf 100644 --- a/Mage.Sets/src/mage/cards/h/HeroOfOxidRidge.java +++ b/Mage.Sets/src/mage/cards/h/HeroOfOxidRidge.java @@ -1,7 +1,5 @@ - package mage.cards.h; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.AttacksTriggeredAbility; @@ -11,19 +9,20 @@ import mage.abilities.keyword.HasteAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.SubType; import mage.constants.Duration; +import mage.constants.SubType; import mage.game.Game; import mage.game.permanent.Permanent; +import java.util.UUID; + /** - * * @author BetaSteward_at_googlemail.com */ public final class HeroOfOxidRidge extends CardImpl { public HeroOfOxidRidge(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}{R}"); this.subtype.add(SubType.HUMAN); this.subtype.add(SubType.KNIGHT); @@ -68,7 +67,7 @@ class HeroOfOxidRidgeEffect extends RestrictionEffect { } @Override - public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { return false; } diff --git a/Mage.Sets/src/mage/cards/h/HoodedHorror.java b/Mage.Sets/src/mage/cards/h/HoodedHorror.java index 5afe72dec96..fff5d7ee078 100644 --- a/Mage.Sets/src/mage/cards/h/HoodedHorror.java +++ b/Mage.Sets/src/mage/cards/h/HoodedHorror.java @@ -1,7 +1,5 @@ - package mage.cards.h; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleEvasionAbility; @@ -9,28 +7,29 @@ import mage.abilities.effects.RestrictionEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.SubType; import mage.constants.Duration; +import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; +import java.util.UUID; + /** - * * @author LevelX2 */ public final class HoodedHorror extends CardImpl { public HoodedHorror(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{B}"); this.subtype.add(SubType.HORROR); this.power = new MageInt(4); this.toughness = new MageInt(4); // Hooded Horror can't be blocked as long as defending player controls the most creatures or is tied for the most. - this.addAbility(new SimpleEvasionAbility(new HoodedHorrorCantBeBlockedEffect())); + this.addAbility(new SimpleEvasionAbility(new HoodedHorrorCantBeBlockedEffect())); } public HoodedHorror(final HoodedHorror card) { @@ -58,28 +57,23 @@ class HoodedHorrorCantBeBlockedEffect extends RestrictionEffect { @Override public boolean applies(Permanent permanent, Ability source, Game game) { - if (permanent.getId().equals(source.getSourceId()) && permanent.isAttacking()) { - return true; - } - return false; + return permanent.getId().equals(source.getSourceId()) && permanent.isAttacking(); } @Override - public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { Player controller = game.getPlayer(source.getControllerId()); if (controller != null) { int maxCreatures = 0; UUID playerIdWithMax = null; for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) { int creatures = game.getBattlefield().countAll(filter, playerId, game); - if (creatures > maxCreatures || (creatures == maxCreatures && playerId.equals(blocker.getControllerId())) ) { + if (creatures > maxCreatures || (creatures == maxCreatures && playerId.equals(blocker.getControllerId()))) { maxCreatures = creatures; playerIdWithMax = playerId; } } - if (playerIdWithMax != null && playerIdWithMax.equals(blocker.getControllerId())) { - return false; - } + return playerIdWithMax == null || !playerIdWithMax.equals(blocker.getControllerId()); } return true; } diff --git a/Mage.Sets/src/mage/cards/i/IllusionistsGambit.java b/Mage.Sets/src/mage/cards/i/IllusionistsGambit.java index 39f31ee20e7..d2e8fe22434 100644 --- a/Mage.Sets/src/mage/cards/i/IllusionistsGambit.java +++ b/Mage.Sets/src/mage/cards/i/IllusionistsGambit.java @@ -165,7 +165,7 @@ class IllusionistsGambitRestrictionEffect extends RestrictionEffect { } @Override - public boolean canAttack(Permanent attacker, UUID defenderId, Ability source, Game game) { + public boolean canAttack(Permanent attacker, UUID defenderId, Ability source, Game game, boolean canUseChooseDialogs) { if (defenderId == null) { return true; } diff --git a/Mage.Sets/src/mage/cards/i/InfiltratorsMagemark.java b/Mage.Sets/src/mage/cards/i/InfiltratorsMagemark.java index 319a3cf2420..1395f0085ca 100644 --- a/Mage.Sets/src/mage/cards/i/InfiltratorsMagemark.java +++ b/Mage.Sets/src/mage/cards/i/InfiltratorsMagemark.java @@ -1,7 +1,5 @@ - package mage.cards.i; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.Effect; @@ -12,12 +10,7 @@ import mage.abilities.keyword.DefenderAbility; import mage.abilities.keyword.EnchantAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.SubType; -import mage.constants.Duration; -import mage.constants.Outcome; -import mage.constants.TargetController; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.FilterPermanent; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.permanent.ControllerPredicate; @@ -27,20 +20,22 @@ import mage.game.permanent.Permanent; import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import java.util.UUID; + /** - * * @author LevelX2 */ public final class InfiltratorsMagemark extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Creatures you control that are enchanted"); + static { filter.add(EnchantedPredicate.instance); filter.add(new ControllerPredicate(TargetController.YOU)); } public InfiltratorsMagemark(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{U}"); + super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{U}"); this.subtype.add(SubType.AURA); @@ -51,7 +46,7 @@ public final class InfiltratorsMagemark extends CardImpl { Ability ability = new EnchantAbility(auraTarget.getTargetName()); this.addAbility(ability); // Creatures you control that are enchanted get +1/+1 and can't be blocked except by creatures with defender. - ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostAllEffect(1,1, Duration.WhileOnBattlefield, filter, false)); + ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostAllEffect(1, 1, Duration.WhileOnBattlefield, filter, false)); Effect effect = new InfiltratorsMagemarkCantBeBlockedAllEffect(filter, Duration.WhileOnBattlefield); ability.addEffect(effect); this.addAbility(ability); @@ -88,7 +83,7 @@ class InfiltratorsMagemarkCantBeBlockedAllEffect extends RestrictionEffect { } @Override - public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { return blocker.getAbilities().contains(DefenderAbility.getInstance()); } diff --git a/Mage.Sets/src/mage/cards/i/Interdict.java b/Mage.Sets/src/mage/cards/i/Interdict.java index 0e590cd6d30..6f81bc53b50 100644 --- a/Mage.Sets/src/mage/cards/i/Interdict.java +++ b/Mage.Sets/src/mage/cards/i/Interdict.java @@ -1,7 +1,5 @@ - package mage.cards.i; -import java.util.UUID; import mage.MageObject; import mage.abilities.Ability; import mage.abilities.effects.OneShotEffect; @@ -20,11 +18,11 @@ import mage.game.permanent.Permanent; import mage.game.stack.StackAbility; import mage.game.stack.StackObject; import mage.target.common.TargetActivatedAbility; -import mage.target.common.TargetActivatedOrTriggeredAbility; import mage.target.targetpointer.FixedTarget; +import java.util.UUID; + /** - * * @author TheElk801 */ public final class Interdict extends CardImpl { @@ -126,7 +124,7 @@ class InterdictCantActivateEffect extends RestrictionEffect { } @Override - public boolean canUseActivatedAbilities(Permanent permanent, Ability source, Game game) { + public boolean canUseActivatedAbilities(Permanent permanent, Ability source, Game game, boolean canUseChooseDialogs) { return false; } diff --git a/Mage.Sets/src/mage/cards/i/IntimidationBolt.java b/Mage.Sets/src/mage/cards/i/IntimidationBolt.java index e101c287a0e..da021239031 100644 --- a/Mage.Sets/src/mage/cards/i/IntimidationBolt.java +++ b/Mage.Sets/src/mage/cards/i/IntimidationBolt.java @@ -1,7 +1,5 @@ - package mage.cards.i; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.effects.RestrictionEffect; import mage.abilities.effects.common.DamageTargetEffect; @@ -13,23 +11,22 @@ import mage.game.Game; import mage.game.permanent.Permanent; import mage.target.common.TargetCreaturePermanent; +import java.util.UUID; + /** - * * @author jeffwadsworth */ public final class IntimidationBolt extends CardImpl { public IntimidationBolt(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{R}{W}"); - - + super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{R}{W}"); // Intimidation Bolt deals 3 damage to target creature. Other creatures can't attack this turn. this.getSpellAbility().addEffect(new DamageTargetEffect(3)); this.getSpellAbility().addEffect(new IntimidationEffect(Duration.EndOfTurn)); this.getSpellAbility().addTarget(new TargetCreaturePermanent()); - + } public IntimidationBolt(final IntimidationBolt card) { @@ -55,14 +52,11 @@ class IntimidationEffect extends RestrictionEffect { @Override public boolean applies(Permanent permanent, Ability source, Game game) { - if (!permanent.getId().equals(source.getFirstTarget())) { - return true; - } - return false; + return !permanent.getId().equals(source.getFirstTarget()); } @Override - public boolean canAttack(Game game) { + public boolean canAttack(Game game, boolean canUseChooseDialogs) { return false; } diff --git a/Mage.Sets/src/mage/cards/i/IronclawCurse.java b/Mage.Sets/src/mage/cards/i/IronclawCurse.java index 84e5ce57a7b..9e8309490fa 100644 --- a/Mage.Sets/src/mage/cards/i/IronclawCurse.java +++ b/Mage.Sets/src/mage/cards/i/IronclawCurse.java @@ -66,7 +66,7 @@ class IronclawCurseEffect extends CantBlockAttachedEffect { } @Override - public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { if (attacker == null) { return true; } diff --git a/Mage.Sets/src/mage/cards/k/KatabaticWinds.java b/Mage.Sets/src/mage/cards/k/KatabaticWinds.java index bb9cd0297d2..847459cd0f8 100644 --- a/Mage.Sets/src/mage/cards/k/KatabaticWinds.java +++ b/Mage.Sets/src/mage/cards/k/KatabaticWinds.java @@ -1,4 +1,3 @@ - package mage.cards.k; import mage.MageObject; @@ -25,7 +24,6 @@ import java.util.Optional; import java.util.UUID; /** - * * @author jeffwadsworth */ public final class KatabaticWinds extends CardImpl { @@ -76,12 +74,12 @@ class KatabaticWindsRestrictionEffect extends RestrictionEffect { } @Override - public boolean canAttack(Game game) { + public boolean canAttack(Game game, boolean canUseChooseDialogs) { return false; } @Override - public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { return false; } @@ -126,9 +124,7 @@ class KatabaticWindsRuleModifyingEffect extends ContinuousRuleModifyingEffectImp && object.isCreature() && object.getAbilities().contains(FlyingAbility.getInstance()) && game.getState().getPlayersInRange(source.getControllerId(), game).contains(event.getPlayerId())) { - if (ability.get().getCosts().stream().anyMatch((cost) -> (cost instanceof TapSourceCost))) { - return true; - } + return ability.get().getCosts().stream().anyMatch((cost) -> (cost instanceof TapSourceCost)); } return false; } diff --git a/Mage.Sets/src/mage/cards/k/KefnetTheMindful.java b/Mage.Sets/src/mage/cards/k/KefnetTheMindful.java index ab34bc96272..27b76ce5d5f 100644 --- a/Mage.Sets/src/mage/cards/k/KefnetTheMindful.java +++ b/Mage.Sets/src/mage/cards/k/KefnetTheMindful.java @@ -1,7 +1,5 @@ - package mage.cards.k; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; @@ -15,20 +13,16 @@ import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.IndestructibleAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.SubType; -import mage.constants.Duration; -import mage.constants.Outcome; -import mage.constants.SuperType; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; +import java.util.UUID; + /** - * * @author jeffwadsworth */ public final class KefnetTheMindful extends CardImpl { @@ -83,12 +77,12 @@ class KefnetTheMindfulRestrictionEffect extends RestrictionEffect { } @Override - public boolean canAttack(Game game) { + public boolean canAttack(Game game, boolean canUseChooseDialogs) { return false; } @Override - public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { return false; } diff --git a/Mage.Sets/src/mage/cards/k/KrakenOfTheStraits.java b/Mage.Sets/src/mage/cards/k/KrakenOfTheStraits.java index 45fdccb3813..eaf75f6b6c7 100644 --- a/Mage.Sets/src/mage/cards/k/KrakenOfTheStraits.java +++ b/Mage.Sets/src/mage/cards/k/KrakenOfTheStraits.java @@ -1,7 +1,5 @@ - package mage.cards.k; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; @@ -19,21 +17,22 @@ import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; +import java.util.UUID; + /** - * * @author LevelX2 */ public final class KrakenOfTheStraits extends CardImpl { public KrakenOfTheStraits(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{U}{U}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{U}{U}"); this.subtype.add(SubType.KRAKEN); this.power = new MageInt(6); this.toughness = new MageInt(6); // Creatures with power less than the number of Islands you control can't block Kraken of the Straits. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantBeBlockedByCreaturesWithLessPowerEffect())); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantBeBlockedByCreaturesWithLessPowerEffect())); } public KrakenOfTheStraits(final KrakenOfTheStraits card) { @@ -49,13 +48,13 @@ public final class KrakenOfTheStraits extends CardImpl { class CantBeBlockedByCreaturesWithLessPowerEffect extends RestrictionEffect { private static final FilterControlledPermanent filter = new FilterControlledPermanent("Islands"); - + static { filter.add(new SubtypePredicate(SubType.ISLAND)); } - + private final DynamicValue dynamicValue = new PermanentsOnBattlefieldCount(filter); - + public CantBeBlockedByCreaturesWithLessPowerEffect() { super(Duration.WhileOnBattlefield); staticText = "Creatures with power less than the number of Islands you control can't block {this}"; @@ -71,7 +70,7 @@ class CantBeBlockedByCreaturesWithLessPowerEffect extends RestrictionEffect { } @Override - public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { return blocker.getPower().getValue() >= dynamicValue.calculate(game, source, this); } diff --git a/Mage.Sets/src/mage/cards/k/KulrathKnight.java b/Mage.Sets/src/mage/cards/k/KulrathKnight.java index 16687c520ce..44df6d1a19c 100644 --- a/Mage.Sets/src/mage/cards/k/KulrathKnight.java +++ b/Mage.Sets/src/mage/cards/k/KulrathKnight.java @@ -1,7 +1,5 @@ - package mage.cards.k; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; @@ -10,25 +8,22 @@ import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.WitherAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.SubType; -import mage.constants.Duration; -import mage.constants.TargetController; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.permanent.ControllerPredicate; import mage.filter.predicate.permanent.CounterAnyPredicate; import mage.game.Game; import mage.game.permanent.Permanent; +import java.util.UUID; + /** - * * @author jeffwadsworth */ public final class KulrathKnight extends CardImpl { public KulrathKnight(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B/R}{B/R}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B/R}{B/R}"); this.subtype.add(SubType.ELEMENTAL); this.subtype.add(SubType.KNIGHT); this.power = new MageInt(3); @@ -79,12 +74,12 @@ class KulrathKnightRestrictionEffect extends RestrictionEffect { } @Override - public boolean canAttack(Game game) { + public boolean canAttack(Game game, boolean canUseChooseDialogs) { return false; } @Override - public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { return false; } diff --git a/Mage.Sets/src/mage/cards/l/LambholtPacifist.java b/Mage.Sets/src/mage/cards/l/LambholtPacifist.java index b811c781ff1..f4e6f766286 100644 --- a/Mage.Sets/src/mage/cards/l/LambholtPacifist.java +++ b/Mage.Sets/src/mage/cards/l/LambholtPacifist.java @@ -1,7 +1,5 @@ - package mage.cards.l; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.TriggeredAbility; @@ -14,25 +12,21 @@ import mage.abilities.effects.common.TransformSourceEffect; import mage.abilities.keyword.TransformAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.SubType; -import mage.constants.ComparisonType; -import mage.constants.Duration; -import mage.constants.TargetController; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.predicate.mageobject.PowerPredicate; import mage.game.Game; import mage.game.permanent.Permanent; +import java.util.UUID; + /** - * * @author fireshoes */ public final class LambholtPacifist extends CardImpl { public LambholtPacifist(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}"); this.subtype.add(SubType.HUMAN); this.subtype.add(SubType.SHAMAN); this.subtype.add(SubType.WEREWOLF); @@ -84,17 +78,14 @@ class LambholtPacifistEffect extends RestrictionEffect { } @Override - public boolean canAttack(Game game) { + public boolean canAttack(Game game, boolean canUseChooseDialogs) { return false; } @Override public boolean applies(Permanent permanent, Ability source, Game game) { if (permanent.getId().equals(source.getSourceId())) { - if (game.getBattlefield().countAll(filter, source.getControllerId(), game) > 0) { - return false; - } - return true; + return game.getBattlefield().countAll(filter, source.getControllerId(), game) <= 0; } // do not apply to other creatures. return false; } diff --git a/Mage.Sets/src/mage/cards/l/LegionLoyalist.java b/Mage.Sets/src/mage/cards/l/LegionLoyalist.java index ca675bf7560..e1b7071e987 100644 --- a/Mage.Sets/src/mage/cards/l/LegionLoyalist.java +++ b/Mage.Sets/src/mage/cards/l/LegionLoyalist.java @@ -1,6 +1,5 @@ package mage.cards.l; -import java.util.UUID; import mage.MageInt; import mage.MageObjectReference; import mage.abilities.Ability; @@ -20,8 +19,9 @@ import mage.game.Game; import mage.game.permanent.Permanent; import mage.game.permanent.PermanentToken; +import java.util.UUID; + /** - * * @author Plopman */ public final class LegionLoyalist extends CardImpl { @@ -75,18 +75,12 @@ class CantBeBlockedByTokenEffect extends RestrictionEffect { @Override public boolean applies(Permanent permanent, Ability source, Game game) { - if (affectedObjectList.contains(new MageObjectReference(permanent, game))) { - return true; - } - return false; + return affectedObjectList.contains(new MageObjectReference(permanent, game)); } @Override - public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game) { - if (blocker instanceof PermanentToken) { - return false; - } - return true; + public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { + return !(blocker instanceof PermanentToken); } @Override diff --git a/Mage.Sets/src/mage/cards/l/LinvalaKeeperOfSilence.java b/Mage.Sets/src/mage/cards/l/LinvalaKeeperOfSilence.java index fc7ea70a13d..04f7e6d73c1 100644 --- a/Mage.Sets/src/mage/cards/l/LinvalaKeeperOfSilence.java +++ b/Mage.Sets/src/mage/cards/l/LinvalaKeeperOfSilence.java @@ -1,7 +1,5 @@ - package mage.cards.l; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; @@ -9,16 +7,13 @@ import mage.abilities.effects.RestrictionEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.SubType; -import mage.constants.Duration; -import mage.constants.SuperType; -import mage.constants.Zone; +import mage.constants.*; import mage.game.Game; import mage.game.permanent.Permanent; +import java.util.UUID; + /** - * * @author Loki */ public final class LinvalaKeeperOfSilence extends CardImpl { @@ -66,7 +61,7 @@ class LinvalaKeeperOfSilenceCantActivateEffect extends RestrictionEffect { } @Override - public boolean canUseActivatedAbilities(Permanent permanent, Ability source, Game game) { + public boolean canUseActivatedAbilities(Permanent permanent, Ability source, Game game, boolean canUseChooseDialogs) { return false; } diff --git a/Mage.Sets/src/mage/cards/l/LupinePrototype.java b/Mage.Sets/src/mage/cards/l/LupinePrototype.java index 66f0c5320f5..26a817bdb2e 100644 --- a/Mage.Sets/src/mage/cards/l/LupinePrototype.java +++ b/Mage.Sets/src/mage/cards/l/LupinePrototype.java @@ -1,7 +1,5 @@ - package mage.cards.l; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; @@ -9,21 +7,22 @@ import mage.abilities.effects.RestrictionEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.SubType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; +import java.util.UUID; + /** - * * @author fireshoes */ public final class LupinePrototype extends CardImpl { public LupinePrototype(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{2}"); + super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{2}"); this.subtype.add(SubType.WOLF); this.subtype.add(SubType.CONSTRUCT); this.power = new MageInt(5); @@ -69,12 +68,12 @@ class LupinePrototypeEffect extends RestrictionEffect { } @Override - public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { return false; } @Override - public boolean canAttack(Game game) { + public boolean canAttack(Game game, boolean canUseChooseDialogs) { return false; } diff --git a/Mage.Sets/src/mage/cards/m/MantellianSavrip.java b/Mage.Sets/src/mage/cards/m/MantellianSavrip.java index a2d8af400a2..b9cc8e18840 100644 --- a/Mage.Sets/src/mage/cards/m/MantellianSavrip.java +++ b/Mage.Sets/src/mage/cards/m/MantellianSavrip.java @@ -1,7 +1,5 @@ - package mage.cards.m; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; @@ -10,14 +8,15 @@ import mage.abilities.keyword.MonstrosityAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.SubType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.game.Game; import mage.game.permanent.Permanent; +import java.util.UUID; + /** - * * @author Styxo */ public final class MantellianSavrip extends CardImpl { @@ -64,7 +63,7 @@ class MantellianSavripRestrictionEffect extends RestrictionEffect { } @Override - public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { return (blocker.getPower().getValue() >= attacker.getPower().getValue()); } diff --git a/Mage.Sets/src/mage/cards/m/MirriWeatherlightDuelist.java b/Mage.Sets/src/mage/cards/m/MirriWeatherlightDuelist.java index 9d359363d6e..07ccad75330 100644 --- a/Mage.Sets/src/mage/cards/m/MirriWeatherlightDuelist.java +++ b/Mage.Sets/src/mage/cards/m/MirriWeatherlightDuelist.java @@ -78,7 +78,7 @@ class MirriWeatherlightDuelistBlockRestrictionEffect extends RestrictionEffect { } @Override - public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { if (attacker == null) { return true; } diff --git a/Mage.Sets/src/mage/cards/m/MoggConscripts.java b/Mage.Sets/src/mage/cards/m/MoggConscripts.java index 9a69e98c7ca..4ee69cfe89d 100644 --- a/Mage.Sets/src/mage/cards/m/MoggConscripts.java +++ b/Mage.Sets/src/mage/cards/m/MoggConscripts.java @@ -1,7 +1,5 @@ - package mage.cards.m; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; @@ -9,21 +7,22 @@ import mage.abilities.effects.RestrictionEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.SubType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.game.Game; import mage.game.permanent.Permanent; import mage.watchers.common.PlayerCastCreatureWatcher; +import java.util.UUID; + /** - * * @author fireshoes */ public final class MoggConscripts extends CardImpl { public MoggConscripts(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{R}"); this.subtype.add(SubType.GOBLIN); this.power = new MageInt(2); @@ -60,7 +59,7 @@ class MoggConscriptsEffect extends RestrictionEffect { } @Override - public boolean canAttack(Game game) { + public boolean canAttack(Game game, boolean canUseChooseDialogs) { return false; } @@ -68,9 +67,7 @@ class MoggConscriptsEffect extends RestrictionEffect { public boolean applies(Permanent permanent, Ability source, Game game) { if (permanent.getId().equals(source.getSourceId())) { PlayerCastCreatureWatcher watcher = game.getState().getWatcher(PlayerCastCreatureWatcher.class); - if (watcher != null && !watcher.playerDidCastCreatureThisTurn(source.getControllerId())) { - return true; - } + return watcher != null && !watcher.playerDidCastCreatureThisTurn(source.getControllerId()); } return false; } diff --git a/Mage.Sets/src/mage/cards/m/MoggToady.java b/Mage.Sets/src/mage/cards/m/MoggToady.java index 9afd5a31161..b005016d82f 100644 --- a/Mage.Sets/src/mage/cards/m/MoggToady.java +++ b/Mage.Sets/src/mage/cards/m/MoggToady.java @@ -62,7 +62,7 @@ class MoggToadyCantAttackEffect extends RestrictionEffect { } @Override - public boolean canAttack(Permanent attacker, UUID defenderId, Ability source, Game game) { + public boolean canAttack(Permanent attacker, UUID defenderId, Ability source, Game game, boolean canUseChooseDialogs) { if (defenderId == null) { return true; } @@ -109,7 +109,7 @@ class MoggToadyCantBlockEffect extends RestrictionEffect { } @Override - public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { if (attacker == null) { return true; } diff --git a/Mage.Sets/src/mage/cards/m/MonstrousHound.java b/Mage.Sets/src/mage/cards/m/MonstrousHound.java index c89875a1ac4..cdebb8caa74 100644 --- a/Mage.Sets/src/mage/cards/m/MonstrousHound.java +++ b/Mage.Sets/src/mage/cards/m/MonstrousHound.java @@ -70,7 +70,7 @@ class CantAttackUnlessControllerControlsMoreLandsEffect extends RestrictionEffec } @Override - public boolean canAttack(Permanent attacker, UUID defenderId, Ability source, Game game) { + public boolean canAttack(Permanent attacker, UUID defenderId, Ability source, Game game, boolean canUseChooseDialogs) { if (defenderId == null) { return true; } @@ -118,7 +118,7 @@ class CantBlockUnlessControllerControlsMoreLandsEffect extends RestrictionEffect } @Override - public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { if (attacker == null) { return true; } diff --git a/Mage.Sets/src/mage/cards/m/Mournwillow.java b/Mage.Sets/src/mage/cards/m/Mournwillow.java index a75563af3ec..f4c83d13eae 100644 --- a/Mage.Sets/src/mage/cards/m/Mournwillow.java +++ b/Mage.Sets/src/mage/cards/m/Mournwillow.java @@ -1,7 +1,5 @@ package mage.cards.m; -import java.util.UUID; - import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTriggeredAbility; @@ -13,11 +11,13 @@ import mage.abilities.keyword.HasteAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.SubType; import mage.constants.Duration; +import mage.constants.SubType; import mage.game.Game; import mage.game.permanent.Permanent; +import java.util.UUID; + /** * @author fireshoes */ @@ -76,7 +76,7 @@ class MournwillowEffect extends RestrictionEffect { } @Override - public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { return false; } } \ No newline at end of file diff --git a/Mage.Sets/src/mage/cards/n/NullRod.java b/Mage.Sets/src/mage/cards/n/NullRod.java index bec7e30480f..3d7e2905127 100644 --- a/Mage.Sets/src/mage/cards/n/NullRod.java +++ b/Mage.Sets/src/mage/cards/n/NullRod.java @@ -1,7 +1,5 @@ - package mage.cards.n; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.RestrictionEffect; @@ -13,14 +11,15 @@ import mage.constants.Zone; import mage.game.Game; import mage.game.permanent.Permanent; +import java.util.UUID; + /** - * * @author LevelX2 */ public final class NullRod extends CardImpl { public NullRod(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}"); + super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}"); // Activated abilities of artifacts can't be activated. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new NullRodCantActivateEffect())); @@ -53,7 +52,7 @@ class NullRodCantActivateEffect extends RestrictionEffect { } @Override - public boolean canUseActivatedAbilities(Permanent permanent, Ability source, Game game) { + public boolean canUseActivatedAbilities(Permanent permanent, Ability source, Game game, boolean canUseChooseDialogs) { return false; } diff --git a/Mage.Sets/src/mage/cards/o/Occupation.java b/Mage.Sets/src/mage/cards/o/Occupation.java index 52e7aeae9d8..17434efa30b 100644 --- a/Mage.Sets/src/mage/cards/o/Occupation.java +++ b/Mage.Sets/src/mage/cards/o/Occupation.java @@ -1,16 +1,12 @@ package mage.cards.o; -import java.util.UUID; - import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.costs.mana.ManaCostsImpl; -import mage.abilities.effects.Effect; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.ReplacementEffectImpl; import mage.abilities.effects.RestrictionEffect; -import mage.abilities.effects.common.combat.CantAttackBlockTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.*; @@ -21,15 +17,16 @@ import mage.game.permanent.Permanent; import mage.game.turn.Step; import mage.target.common.TargetCreaturePermanent; +import java.util.UUID; + /** - * * @author NinthWorld */ public final class Occupation extends CardImpl { public Occupation(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{W}{B}"); - + // Creatures your opponents control enter the battlefield tapped. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new OccupationTapEffect())); @@ -81,9 +78,7 @@ class OccupationTapEffect extends ReplacementEffectImpl { public boolean applies(GameEvent event, Ability source, Game game) { if (game.getOpponents(source.getControllerId()).contains(event.getPlayerId())) { Permanent permanent = ((EntersTheBattlefieldEvent) event).getTarget(); - if (permanent != null && permanent.isCreature()) { - return true; - } + return permanent != null && permanent.isCreature(); } return false; } @@ -164,24 +159,21 @@ class OccupationRestrictionEffect extends RestrictionEffect { @Override public boolean applies(Permanent permanent, Ability source, Game game) { - if (this.targetPointer.getTargets(game, source).contains(permanent.getId())) { - return true; - } + return this.targetPointer.getTargets(game, source).contains(permanent.getId()); + } + + @Override + public boolean canAttack(Game game, boolean canUseChooseDialogs) { return false; } @Override - public boolean canAttack(Game game) { + public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { return false; } @Override - public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { - return false; - } - - @Override - public boolean canUseActivatedAbilities(Permanent permanent, Ability source, Game game) { + public boolean canUseActivatedAbilities(Permanent permanent, Ability source, Game game, boolean canUseChooseDialogs) { return false; } diff --git a/Mage.Sets/src/mage/cards/o/OketraTheTrue.java b/Mage.Sets/src/mage/cards/o/OketraTheTrue.java index 5938752fba5..2d7a644c6ec 100644 --- a/Mage.Sets/src/mage/cards/o/OketraTheTrue.java +++ b/Mage.Sets/src/mage/cards/o/OketraTheTrue.java @@ -1,7 +1,5 @@ - package mage.cards.o; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; @@ -13,12 +11,7 @@ import mage.abilities.keyword.DoubleStrikeAbility; import mage.abilities.keyword.IndestructibleAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.SubType; -import mage.constants.ComparisonType; -import mage.constants.Duration; -import mage.constants.SuperType; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.permanent.ControllerIdPredicate; import mage.game.Game; @@ -26,8 +19,9 @@ import mage.game.permanent.Permanent; import mage.game.permanent.token.WarriorVigilantToken; import mage.players.Player; +import java.util.UUID; + /** - * * @author fireshoes */ public final class OketraTheTrue extends CardImpl { @@ -80,12 +74,12 @@ class OketraTheTrueRestrictionEffect extends RestrictionEffect { } @Override - public boolean canAttack(Game game) { + public boolean canAttack(Game game, boolean canUseChooseDialogs) { return false; } @Override - public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { return false; } diff --git a/Mage.Sets/src/mage/cards/o/Okk.java b/Mage.Sets/src/mage/cards/o/Okk.java index 32194b9aacf..022b0a59ea7 100644 --- a/Mage.Sets/src/mage/cards/o/Okk.java +++ b/Mage.Sets/src/mage/cards/o/Okk.java @@ -1,7 +1,5 @@ - package mage.cards.o; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; @@ -9,22 +7,23 @@ import mage.abilities.effects.RestrictionEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.SubType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterAttackingCreature; import mage.filter.common.FilterBlockingCreature; import mage.game.Game; import mage.game.permanent.Permanent; +import java.util.UUID; + /** - * * @author icetc */ public final class Okk extends CardImpl { public Okk(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}"); this.subtype.add(SubType.GOBLIN); this.power = new MageInt(4); this.toughness = new MageInt(4); @@ -65,7 +64,7 @@ class OkkAttackEffect extends RestrictionEffect { } @Override - public boolean canAttackCheckAfter(int numberOfAttackers, Ability source, Game game) { + public boolean canAttackCheckAfter(int numberOfAttackers, Ability source, Game game, boolean canUseChooseDialogs) { return false; } @@ -103,7 +102,7 @@ class OkkBlockEffect extends RestrictionEffect { } @Override - public boolean canBlockCheckAfter(Ability source, Game game) { + public boolean canBlockCheckAfter(Ability source, Game game, boolean canUseChooseDialogs) { return false; } diff --git a/Mage.Sets/src/mage/cards/o/OpenSeason.java b/Mage.Sets/src/mage/cards/o/OpenSeason.java index c871340981a..e43e9d4ca5f 100644 --- a/Mage.Sets/src/mage/cards/o/OpenSeason.java +++ b/Mage.Sets/src/mage/cards/o/OpenSeason.java @@ -1,4 +1,3 @@ - package mage.cards.o; import mage.abilities.Ability; @@ -92,7 +91,7 @@ class OpenSeasonRestrictionEffect extends RestrictionEffect { } @Override - public boolean canUseActivatedAbilities(Permanent permanent, Ability source, Game game) { + public boolean canUseActivatedAbilities(Permanent permanent, Ability source, Game game, boolean canUseChooseDialogs) { return false; } diff --git a/Mage.Sets/src/mage/cards/o/OracleEnVec.java b/Mage.Sets/src/mage/cards/o/OracleEnVec.java index 46450454ba6..c547fcebb5f 100644 --- a/Mage.Sets/src/mage/cards/o/OracleEnVec.java +++ b/Mage.Sets/src/mage/cards/o/OracleEnVec.java @@ -1,8 +1,5 @@ - package mage.cards.o; -import java.util.List; -import java.util.UUID; import mage.MageInt; import mage.MageObjectReference; import mage.abilities.Ability; @@ -18,12 +15,7 @@ import mage.abilities.effects.RestrictionEffect; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.SubType; -import mage.constants.Duration; -import mage.constants.Outcome; -import mage.constants.TurnPhase; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.common.FilterControlledCreaturePermanent; import mage.game.Game; import mage.game.events.GameEvent; @@ -35,8 +27,10 @@ import mage.target.common.TargetOpponent; import mage.target.targetpointer.FixedTarget; import mage.watchers.common.AttackedThisTurnWatcher; +import java.util.List; +import java.util.UUID; + /** - * * @author emerald000 */ public final class OracleEnVec extends CardImpl { @@ -169,7 +163,7 @@ class OracleEnVecCantAttackRestrictionEffect extends RestrictionEffect { } @Override - public boolean canAttack(Game game) { + public boolean canAttack(Game game, boolean canUseChooseDialogs) { return false; } diff --git a/Mage.Sets/src/mage/cards/p/PeaceTalks.java b/Mage.Sets/src/mage/cards/p/PeaceTalks.java index 10df1e27cde..ef9811c5400 100644 --- a/Mage.Sets/src/mage/cards/p/PeaceTalks.java +++ b/Mage.Sets/src/mage/cards/p/PeaceTalks.java @@ -1,6 +1,5 @@ package mage.cards.p; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.effects.ContinuousRuleModifyingEffect; import mage.abilities.effects.ContinuousRuleModifyingEffectImpl; @@ -15,8 +14,9 @@ import mage.game.Game; import mage.game.events.GameEvent; import mage.game.permanent.Permanent; +import java.util.UUID; + /** - * * @author jeffwadsworth */ public final class PeaceTalks extends CardImpl { @@ -86,7 +86,7 @@ class PeaceTalksCantAttackEffect extends RestrictionEffect { } @Override - public boolean canAttack(Game game) { + public boolean canAttack(Game game, boolean canUseChooseDialogs) { return false; } @@ -146,7 +146,7 @@ class PeaceTalksPlayersAndPermanentsCantBeTargetsOfSpellsOrActivatedAbilities ex public PeaceTalksPlayersAndPermanentsCantBeTargetsOfSpellsOrActivatedAbilities copy() { return new PeaceTalksPlayersAndPermanentsCantBeTargetsOfSpellsOrActivatedAbilities(this); } - + @Override public boolean isInactive(Ability source, Game game) { if (startingTurn + 2 == game.getTurnNum()) { diff --git a/Mage.Sets/src/mage/cards/p/Peacekeeper.java b/Mage.Sets/src/mage/cards/p/Peacekeeper.java index 0ff2065d528..79d13a4b322 100644 --- a/Mage.Sets/src/mage/cards/p/Peacekeeper.java +++ b/Mage.Sets/src/mage/cards/p/Peacekeeper.java @@ -1,7 +1,5 @@ - package mage.cards.p; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; @@ -11,22 +9,19 @@ import mage.abilities.effects.RestrictionEffect; import mage.abilities.effects.common.SacrificeSourceUnlessPaysEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.SubType; -import mage.constants.Duration; -import mage.constants.TargetController; -import mage.constants.Zone; +import mage.constants.*; import mage.game.Game; import mage.game.permanent.Permanent; +import java.util.UUID; + /** - * * @author LevelX2 */ public final class Peacekeeper extends CardImpl { public Peacekeeper(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}"); this.subtype.add(SubType.HUMAN); this.power = new MageInt(1); @@ -66,7 +61,7 @@ class PeacekeeperCantAttackEffect extends RestrictionEffect { } @Override - public boolean canAttack(Game game) { + public boolean canAttack(Game game, boolean canUseChooseDialogs) { return false; } diff --git a/Mage.Sets/src/mage/cards/r/RecumbentBliss.java b/Mage.Sets/src/mage/cards/r/RecumbentBliss.java index 1310902878f..a914564eac1 100644 --- a/Mage.Sets/src/mage/cards/r/RecumbentBliss.java +++ b/Mage.Sets/src/mage/cards/r/RecumbentBliss.java @@ -1,7 +1,5 @@ - package mage.cards.r; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.common.SimpleStaticAbility; @@ -17,14 +15,15 @@ import mage.game.permanent.Permanent; import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import java.util.UUID; + /** - * * @author Loki */ public final class RecumbentBliss extends CardImpl { public RecumbentBliss(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{W}"); + super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}"); this.subtype.add(SubType.AURA); TargetPermanent auraTarget = new TargetCreaturePermanent(); @@ -59,19 +58,16 @@ class RecumbentBlissEffect extends RestrictionEffect { @Override public boolean applies(Permanent permanent, Ability source, Game game) { - if (permanent.getAttachments().contains((source.getSourceId()))) { - return true; - } + return permanent.getAttachments().contains((source.getSourceId())); + } + + @Override + public boolean canAttack(Game game, boolean canUseChooseDialogs) { return false; } @Override - public boolean canAttack(Game game) { - return false; - } - - @Override - public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { return false; } diff --git a/Mage.Sets/src/mage/cards/r/RhonasTheIndomitable.java b/Mage.Sets/src/mage/cards/r/RhonasTheIndomitable.java index cdb37cef16d..08b6c51ffcd 100644 --- a/Mage.Sets/src/mage/cards/r/RhonasTheIndomitable.java +++ b/Mage.Sets/src/mage/cards/r/RhonasTheIndomitable.java @@ -1,7 +1,5 @@ - package mage.cards.r; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; @@ -26,6 +24,8 @@ import mage.game.permanent.Permanent; import mage.players.Player; import mage.target.common.TargetCreaturePermanent; +import java.util.UUID; + /** * @author fireshoes */ @@ -92,12 +92,12 @@ class RhonasTheIndomitableRestrictionEffect extends RestrictionEffect { } @Override - public boolean canAttack(Game game) { + public boolean canAttack(Game game, boolean canUseChooseDialogs) { return false; } @Override - public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { return false; } diff --git a/Mage.Sets/src/mage/cards/r/RiverSerpent.java b/Mage.Sets/src/mage/cards/r/RiverSerpent.java index d6ad3f4476f..c423639f412 100644 --- a/Mage.Sets/src/mage/cards/r/RiverSerpent.java +++ b/Mage.Sets/src/mage/cards/r/RiverSerpent.java @@ -1,7 +1,5 @@ - package mage.cards.r; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; @@ -12,21 +10,22 @@ import mage.abilities.keyword.CyclingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.SubType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.game.Game; import mage.game.permanent.Permanent; +import java.util.UUID; + /** - * * @author stravant */ public final class RiverSerpent extends CardImpl { public RiverSerpent(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{U}"); - + this.subtype.add(SubType.SERPENT); this.power = new MageInt(5); this.toughness = new MageInt(5); @@ -64,7 +63,7 @@ class RiverSerpentEffect extends RestrictionEffect { } @Override - public boolean canAttack(Game game) { + public boolean canAttack(Game game, boolean canUseChooseDialogs) { return false; } diff --git a/Mage.Sets/src/mage/cards/r/RuthlessInvasion.java b/Mage.Sets/src/mage/cards/r/RuthlessInvasion.java index 1480bac6ab4..a2cff24e7b4 100644 --- a/Mage.Sets/src/mage/cards/r/RuthlessInvasion.java +++ b/Mage.Sets/src/mage/cards/r/RuthlessInvasion.java @@ -1,8 +1,5 @@ - - package mage.cards.r; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.effects.RestrictionEffect; import mage.cards.CardImpl; @@ -12,19 +9,20 @@ import mage.constants.Duration; import mage.game.Game; import mage.game.permanent.Permanent; +import java.util.UUID; + /** - * * @author Loki */ public final class RuthlessInvasion extends CardImpl { - public RuthlessInvasion (UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{R/P}"); + public RuthlessInvasion(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{R/P}"); this.getSpellAbility().addEffect(new RuthlessInvasionEffect()); } - public RuthlessInvasion (final RuthlessInvasion card) { + public RuthlessInvasion(final RuthlessInvasion card) { super(card); } @@ -47,10 +45,7 @@ class RuthlessInvasionEffect extends RestrictionEffect { @Override public boolean applies(Permanent permanent, Ability source, Game game) { - if (!permanent.isArtifact()) { - return true; - } - return false; + return !permanent.isArtifact(); } @Override @@ -59,7 +54,7 @@ class RuthlessInvasionEffect extends RestrictionEffect { } @Override - public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { return false; } diff --git a/Mage.Sets/src/mage/cards/s/ScarredPuma.java b/Mage.Sets/src/mage/cards/s/ScarredPuma.java index 9408d0a8bfe..d1f88ee6b12 100644 --- a/Mage.Sets/src/mage/cards/s/ScarredPuma.java +++ b/Mage.Sets/src/mage/cards/s/ScarredPuma.java @@ -1,8 +1,5 @@ - package mage.cards.s; -import java.util.Objects; -import java.util.UUID; import mage.MageInt; import mage.ObjectColor; import mage.abilities.Ability; @@ -11,21 +8,23 @@ import mage.abilities.effects.RestrictionEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.SubType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterAttackingCreature; import mage.game.Game; import mage.game.permanent.Permanent; +import java.util.Objects; +import java.util.UUID; + /** - * * @author Derpthemeus */ public final class ScarredPuma extends CardImpl { public ScarredPuma(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{R}"); this.subtype.add(SubType.CAT); this.power = new MageInt(2); this.toughness = new MageInt(1); @@ -62,7 +61,7 @@ public final class ScarredPuma extends CardImpl { } @Override - public boolean canAttackCheckAfter(int numberOfAttackers, Ability source, Game game) { + public boolean canAttackCheckAfter(int numberOfAttackers, Ability source, Game game, boolean canUseChooseDialogs) { return false; } diff --git a/Mage.Sets/src/mage/cards/s/ShaukuEndbringer.java b/Mage.Sets/src/mage/cards/s/ShaukuEndbringer.java index 1a700a7b3cf..1b4c1e9e29a 100644 --- a/Mage.Sets/src/mage/cards/s/ShaukuEndbringer.java +++ b/Mage.Sets/src/mage/cards/s/ShaukuEndbringer.java @@ -1,7 +1,5 @@ - package mage.cards.s; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; @@ -15,42 +13,36 @@ import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.SubType; -import mage.constants.Duration; -import mage.constants.SuperType; -import mage.constants.TargetController; -import mage.constants.Zone; +import mage.constants.*; import mage.counters.CounterType; -import mage.filter.common.FilterControlledPermanent; import mage.filter.common.FilterCreaturePermanent; -import mage.filter.predicate.mageobject.CardTypePredicate; import mage.filter.predicate.permanent.AnotherPredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.target.common.TargetCreaturePermanent; +import java.util.UUID; + /** - * * @author Saga */ -public final class ShaukuEndbringer extends CardImpl{ - - public ShaukuEndbringer(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{B}{B}"); +public final class ShaukuEndbringer extends CardImpl { + + public ShaukuEndbringer(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{B}{B}"); addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.VAMPIRE); this.power = new MageInt(5); this.toughness = new MageInt(5); - + this.addAbility(FlyingAbility.getInstance()); - + // Shauku, Endbringer can't attack if there's another creature on the battlefield. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ShaukuEndbringerEffect())); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ShaukuEndbringerEffect())); // At the beginning of your upkeep, you lose 3 life. this.addAbility(new BeginningOfUpkeepTriggeredAbility(new LoseLifeSourceControllerEffect(3), TargetController.YOU, false)); - + // {T}: Exile target creature and put a +1/+1 counter on Shauku. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ExileTargetEffect(), new TapSourceCost()); ability.addEffect(new AddCountersSourceEffect(CounterType.P1P1.createInstance())); @@ -68,13 +60,14 @@ public final class ShaukuEndbringer extends CardImpl{ } } - class ShaukuEndbringerEffect extends RestrictionEffect { - +class ShaukuEndbringerEffect extends RestrictionEffect { + private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature"); + static { filter.add(AnotherPredicate.instance); } - + public ShaukuEndbringerEffect() { super(Duration.WhileOnBattlefield); staticText = "{this} can't attack if there's another creature on the battlefield."; @@ -90,13 +83,13 @@ public final class ShaukuEndbringer extends CardImpl{ } @Override - public boolean canAttack(Game game) { + public boolean canAttack(Game game, boolean canUseChooseDialogs) { return false; } @Override - public boolean applies(Permanent permanent, Ability source, Game game) { - return permanent.getId().equals(source.getSourceId()) && + public boolean applies(Permanent permanent, Ability source, Game game) { + return permanent.getId().equals(source.getSourceId()) && game.getBattlefield().count(filter, source.getSourceId(), source.getControllerId(), game) > 0; } } diff --git a/Mage.Sets/src/mage/cards/s/ShrewdHatchling.java b/Mage.Sets/src/mage/cards/s/ShrewdHatchling.java index 4b944809d92..b4b36b3e2be 100644 --- a/Mage.Sets/src/mage/cards/s/ShrewdHatchling.java +++ b/Mage.Sets/src/mage/cards/s/ShrewdHatchling.java @@ -1,7 +1,5 @@ - package mage.cards.s; -import java.util.UUID; import mage.MageInt; import mage.ObjectColor; import mage.abilities.Ability; @@ -14,11 +12,7 @@ import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.abilities.effects.common.counter.RemoveCounterSourceEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.SubType; -import mage.constants.Duration; -import mage.constants.TargetController; -import mage.constants.Zone; +import mage.constants.*; import mage.counters.CounterType; import mage.filter.FilterSpell; import mage.filter.predicate.mageobject.ColorPredicate; @@ -27,28 +21,28 @@ import mage.game.Game; import mage.game.permanent.Permanent; import mage.target.common.TargetCreaturePermanent; -/** - * - * @author jeffwadsworth +import java.util.UUID; +/** + * @author jeffwadsworth */ public final class ShrewdHatchling extends CardImpl { - + private static final FilterSpell filter = new FilterSpell("blue spell"); private static final FilterSpell filter2 = new FilterSpell("red spell"); - + static { filter.add(new ControllerPredicate(TargetController.YOU)); filter.add(new ColorPredicate(ObjectColor.BLUE)); filter2.add(new ControllerPredicate(TargetController.YOU)); filter2.add(new ColorPredicate(ObjectColor.RED)); } - + private String rule = "Whenever you cast a blue spell, remove a -1/-1 counter from Shrewd Hatchling."; private String rule2 = "Whenever you cast a red spell, remove a -1/-1 counter from Shrewd Hatchling."; public ShrewdHatchling(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U/R}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U/R}"); this.subtype.add(SubType.ELEMENTAL); this.power = new MageInt(6); @@ -56,18 +50,18 @@ public final class ShrewdHatchling extends CardImpl { // Shrewd Hatchling enters the battlefield with four -1/-1 counters on it. this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.M1M1.createInstance(4)))); - + // {UR}: Target creature can't block Shrewd Hatchling this turn. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ShrewdHatchlingEffect(), new ManaCostsImpl("{U/R}")); ability.addTarget(new TargetCreaturePermanent()); this.addAbility(ability); - + // Whenever you cast a blue spell, remove a -1/-1 counter from Shrewd Hatchling. this.addAbility(new SpellCastAllTriggeredAbility(new RemoveCounterSourceEffect(CounterType.M1M1.createInstance()), filter, false, rule)); - + // Whenever you cast a red spell, remove a -1/-1 counter from Shrewd Hatchling. this.addAbility(new SpellCastAllTriggeredAbility(new RemoveCounterSourceEffect(CounterType.M1M1.createInstance()), filter2, false, rule2)); - + } public ShrewdHatchling(final ShrewdHatchling card) { @@ -93,18 +87,13 @@ class ShrewdHatchlingEffect extends RestrictionEffect { @Override public boolean applies(Permanent permanent, Ability source, Game game) { - if (permanent.getId().equals(source.getSourceId())) { - return true; - } - return false; + return permanent.getId().equals(source.getSourceId()); } @Override - public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { UUID targetId = source.getFirstTarget(); - if (targetId != null && blocker.getId().equals(targetId)) - return false; - return true; + return targetId == null || !blocker.getId().equals(targetId); } @Override diff --git a/Mage.Sets/src/mage/cards/s/SidarKondoOfJamuraa.java b/Mage.Sets/src/mage/cards/s/SidarKondoOfJamuraa.java index 63853758b80..f3db71d472b 100644 --- a/Mage.Sets/src/mage/cards/s/SidarKondoOfJamuraa.java +++ b/Mage.Sets/src/mage/cards/s/SidarKondoOfJamuraa.java @@ -88,7 +88,7 @@ class SidarKondoOfJamuraaCantBlockCreaturesSourceEffect extends RestrictionEffec } @Override - public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { if (attacker == null) { return true; } diff --git a/Mage.Sets/src/mage/cards/s/SilburlindSnapper.java b/Mage.Sets/src/mage/cards/s/SilburlindSnapper.java index bc605e466fd..bc5057f4cd3 100644 --- a/Mage.Sets/src/mage/cards/s/SilburlindSnapper.java +++ b/Mage.Sets/src/mage/cards/s/SilburlindSnapper.java @@ -1,8 +1,5 @@ - package mage.cards.s; -import java.util.List; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; @@ -10,22 +7,24 @@ import mage.abilities.effects.RestrictionEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.SubType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.game.Game; import mage.game.permanent.Permanent; import mage.game.stack.Spell; import mage.watchers.common.SpellsCastWatcher; +import java.util.List; +import java.util.UUID; + /** - * * @author LevelX2 */ public final class SilburlindSnapper extends CardImpl { public SilburlindSnapper(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{U}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{U}"); this.subtype.add(SubType.TURTLE); this.power = new MageInt(6); this.toughness = new MageInt(6); @@ -61,8 +60,7 @@ class SilburlindSnapperEffect extends RestrictionEffect { } @Override - public boolean canAttack(Game game) { - + public boolean canAttack(Game game, boolean canUseChooseDialogs) { return false; } diff --git a/Mage.Sets/src/mage/cards/s/SilentArbiter.java b/Mage.Sets/src/mage/cards/s/SilentArbiter.java index dfb2d7406fe..c5f13bd46a0 100644 --- a/Mage.Sets/src/mage/cards/s/SilentArbiter.java +++ b/Mage.Sets/src/mage/cards/s/SilentArbiter.java @@ -1,7 +1,5 @@ - package mage.cards.s; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; @@ -9,27 +7,28 @@ import mage.abilities.effects.RestrictionEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.SubType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.game.Game; import mage.game.permanent.Permanent; +import java.util.UUID; + /** - * * @author emerald000 */ public final class SilentArbiter extends CardImpl { public SilentArbiter(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}"); + super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{4}"); this.subtype.add(SubType.CONSTRUCT); this.power = new MageInt(1); this.toughness = new MageInt(5); // No more than one creature can attack each combat. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SilentArbiterAttackRestrictionEffect())); - + // No more than one creature can block each combat. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SilentArbiterBlockRestrictionEffect())); } @@ -45,55 +44,55 @@ public final class SilentArbiter extends CardImpl { } class SilentArbiterAttackRestrictionEffect extends RestrictionEffect { - + SilentArbiterAttackRestrictionEffect() { super(Duration.WhileOnBattlefield); staticText = "No more than one creature can attack each combat"; } - + SilentArbiterAttackRestrictionEffect(final SilentArbiterAttackRestrictionEffect effect) { super(effect); } - + @Override public SilentArbiterAttackRestrictionEffect copy() { return new SilentArbiterAttackRestrictionEffect(this); } - + @Override public boolean applies(Permanent permanent, Ability source, Game game) { return true; } - + @Override - public boolean canAttack(Permanent attacker, UUID defenderId, Ability source, Game game) { + public boolean canAttack(Permanent attacker, UUID defenderId, Ability source, Game game, boolean canUseChooseDialogs) { return game.getCombat().getAttackers().isEmpty(); } } class SilentArbiterBlockRestrictionEffect extends RestrictionEffect { - + SilentArbiterBlockRestrictionEffect() { super(Duration.WhileOnBattlefield); staticText = "No more than one creature can block each combat"; } - + SilentArbiterBlockRestrictionEffect(final SilentArbiterBlockRestrictionEffect effect) { super(effect); } - + @Override public SilentArbiterBlockRestrictionEffect copy() { return new SilentArbiterBlockRestrictionEffect(this); } - + @Override public boolean applies(Permanent permanent, Ability source, Game game) { return true; } - + @Override - public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { return game.getCombat().getBlockers().isEmpty(); } } \ No newline at end of file diff --git a/Mage.Sets/src/mage/cards/s/SilhanaLedgewalker.java b/Mage.Sets/src/mage/cards/s/SilhanaLedgewalker.java index 5e8bb868925..360c27082c4 100644 --- a/Mage.Sets/src/mage/cards/s/SilhanaLedgewalker.java +++ b/Mage.Sets/src/mage/cards/s/SilhanaLedgewalker.java @@ -1,8 +1,5 @@ - - package mage.cards.s; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; @@ -12,20 +9,21 @@ import mage.abilities.keyword.HexproofAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.SubType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.game.Game; import mage.game.permanent.Permanent; +import java.util.UUID; + /** - * * @author LevelX2 */ public final class SilhanaLedgewalker extends CardImpl { - public SilhanaLedgewalker (UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}"); + public SilhanaLedgewalker(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}"); this.subtype.add(SubType.ELF); this.subtype.add(SubType.ROGUE); @@ -39,7 +37,7 @@ public final class SilhanaLedgewalker extends CardImpl { this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SilhanaLedgewalkerEffect())); } - public SilhanaLedgewalker (final SilhanaLedgewalker card) { + public SilhanaLedgewalker(final SilhanaLedgewalker card) { super(card); } @@ -63,18 +61,12 @@ class SilhanaLedgewalkerEffect extends RestrictionEffect { @Override public boolean applies(Permanent permanent, Ability source, Game game) { - if (source.getSourceId().equals(permanent.getId())) { - return true; - } - return false; + return source.getSourceId().equals(permanent.getId()); } @Override - public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game) { - if (blocker.getAbilities().contains(FlyingAbility.getInstance())) { - return true; - } - return false; + public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { + return blocker.getAbilities().contains(FlyingAbility.getInstance()); } @Override diff --git a/Mage.Sets/src/mage/cards/s/SkyblinderStaff.java b/Mage.Sets/src/mage/cards/s/SkyblinderStaff.java index 8e029f9592e..b87bbcd6c58 100644 --- a/Mage.Sets/src/mage/cards/s/SkyblinderStaff.java +++ b/Mage.Sets/src/mage/cards/s/SkyblinderStaff.java @@ -1,7 +1,5 @@ - package mage.cards.s; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.costs.mana.GenericManaCost; @@ -15,21 +13,22 @@ import mage.constants.*; import mage.game.Game; import mage.game.permanent.Permanent; +import java.util.UUID; + /** - * * @author LevelX2 */ public final class SkyblinderStaff extends CardImpl { public SkyblinderStaff(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}"); + super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{1}"); this.subtype.add(SubType.EQUIPMENT); // Equipped creature gets +1/+0 and can't be blocked by creatures with flying. Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEquippedEffect(1, 0)); ability.addEffect(new CantBeBlockedByCreaturesWithFlyingAttachedEffect()); this.addAbility(ability); - + // Equip {3} this.addAbility(new EquipAbility(Outcome.BoostCreature, new GenericManaCost(3))); @@ -63,7 +62,7 @@ class CantBeBlockedByCreaturesWithFlyingAttachedEffect extends RestrictionEffect } @Override - public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { return !blocker.getAbilities().contains(FlyingAbility.getInstance()); } diff --git a/Mage.Sets/src/mage/cards/s/SlumberingDragon.java b/Mage.Sets/src/mage/cards/s/SlumberingDragon.java index 42375795b3d..5133283bb2d 100644 --- a/Mage.Sets/src/mage/cards/s/SlumberingDragon.java +++ b/Mage.Sets/src/mage/cards/s/SlumberingDragon.java @@ -1,7 +1,5 @@ - package mage.cards.s; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.AttacksAllTriggeredAbility; @@ -11,18 +9,15 @@ import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.SubType; -import mage.constants.Duration; -import mage.constants.SetTargetPointer; -import mage.constants.Zone; +import mage.constants.*; import mage.counters.CounterType; import mage.filter.StaticFilters; import mage.game.Game; import mage.game.permanent.Permanent; +import java.util.UUID; + /** - * * @author jeffwadsworth */ public final class SlumberingDragon extends CardImpl { @@ -68,22 +63,19 @@ class SlumberingDragonEffect extends RestrictionEffect { @Override public boolean applies(Permanent permanent, Ability source, Game game) { if (permanent.getId().equals(source.getSourceId())) { - if (permanent.getCounters(game).getCount(CounterType.P1P1) >= 5) { - return false; - } - return true; + return permanent.getCounters(game).getCount(CounterType.P1P1) < 5; } // don't apply for all other creatures! return false; } @Override - public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { return false; } @Override - public boolean canAttack(Game game) { + public boolean canAttack(Game game, boolean canUseChooseDialogs) { return false; } diff --git a/Mage.Sets/src/mage/cards/s/SongOfSerenity.java b/Mage.Sets/src/mage/cards/s/SongOfSerenity.java index 1e62cc3cb35..cc324767f9a 100644 --- a/Mage.Sets/src/mage/cards/s/SongOfSerenity.java +++ b/Mage.Sets/src/mage/cards/s/SongOfSerenity.java @@ -1,7 +1,5 @@ - package mage.cards.s; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.RestrictionEffect; @@ -15,8 +13,9 @@ import mage.filter.predicate.permanent.EnchantedPredicate; import mage.game.Game; import mage.game.permanent.Permanent; +import java.util.UUID; + /** - * * @author jeffwadsworth */ public final class SongOfSerenity extends CardImpl { @@ -62,12 +61,12 @@ class SongOfSerenityRestrictionEffect extends RestrictionEffect { } @Override - public boolean canAttack(Game game) { + public boolean canAttack(Game game, boolean canUseChooseDialogs) { return false; } @Override - public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { return false; } diff --git a/Mage.Sets/src/mage/cards/s/SpinEngine.java b/Mage.Sets/src/mage/cards/s/SpinEngine.java index 0e2b04d548c..009e732041b 100644 --- a/Mage.Sets/src/mage/cards/s/SpinEngine.java +++ b/Mage.Sets/src/mage/cards/s/SpinEngine.java @@ -1,7 +1,5 @@ - package mage.cards.s; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; @@ -10,21 +8,22 @@ import mage.abilities.effects.RestrictionEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.SubType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.game.Game; import mage.game.permanent.Permanent; import mage.target.common.TargetCreaturePermanent; +import java.util.UUID; + /** - * * @author BetaSteward_at_googlemail.com */ public final class SpinEngine extends CardImpl { public SpinEngine(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}"); + super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{3}"); this.subtype.add(SubType.CONSTRUCT); this.power = new MageInt(3); this.toughness = new MageInt(1); @@ -59,18 +58,13 @@ class SpinEngineEffect extends RestrictionEffect { @Override public boolean applies(Permanent permanent, Ability source, Game game) { - if (permanent.getId().equals(source.getSourceId())) { - return true; - } - return false; + return permanent.getId().equals(source.getSourceId()); } @Override - public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { UUID targetId = source.getFirstTarget(); - if (targetId != null && blocker.getId().equals(targetId)) - return false; - return true; + return targetId == null || !blocker.getId().equals(targetId); } @Override diff --git a/Mage.Sets/src/mage/cards/s/SpireTracer.java b/Mage.Sets/src/mage/cards/s/SpireTracer.java index b2481471168..b74f8a6fdc4 100644 --- a/Mage.Sets/src/mage/cards/s/SpireTracer.java +++ b/Mage.Sets/src/mage/cards/s/SpireTracer.java @@ -1,7 +1,5 @@ - package mage.cards.s; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; @@ -11,20 +9,21 @@ import mage.abilities.keyword.ReachAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.SubType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.game.Game; import mage.game.permanent.Permanent; +import java.util.UUID; + /** - * * @author jeffwadsworth */ public final class SpireTracer extends CardImpl { public SpireTracer(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{G}"); this.subtype.add(SubType.ELF); this.subtype.add(SubType.SCOUT); @@ -59,19 +58,13 @@ class CantBeBlockedExceptByCreaturesWithFlyingOrReachEffect extends RestrictionE @Override public boolean applies(Permanent permanent, Ability source, Game game) { - if (permanent.getId().equals(source.getSourceId())) { - return true; - } - return false; + return permanent.getId().equals(source.getSourceId()); } @Override - public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game) { - if (blocker.getAbilities().containsKey(FlyingAbility.getInstance().getId()) - || blocker.getAbilities().containsKey(ReachAbility.getInstance().getId())) { - return true; - } - return false; + public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { + return blocker.getAbilities().containsKey(FlyingAbility.getInstance().getId()) + || blocker.getAbilities().containsKey(ReachAbility.getInstance().getId()); } @Override diff --git a/Mage.Sets/src/mage/cards/s/SpitfireHandler.java b/Mage.Sets/src/mage/cards/s/SpitfireHandler.java index b4190b637f0..d5da32d3f7c 100644 --- a/Mage.Sets/src/mage/cards/s/SpitfireHandler.java +++ b/Mage.Sets/src/mage/cards/s/SpitfireHandler.java @@ -61,7 +61,7 @@ class SpitfireHandlerCantBlockEffect extends RestrictionEffect { } @Override - public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { if (attacker == null) { return true; } diff --git a/Mage.Sets/src/mage/cards/s/SteelcladSerpent.java b/Mage.Sets/src/mage/cards/s/SteelcladSerpent.java index 692a6e4c256..2eb98aaa061 100644 --- a/Mage.Sets/src/mage/cards/s/SteelcladSerpent.java +++ b/Mage.Sets/src/mage/cards/s/SteelcladSerpent.java @@ -1,7 +1,5 @@ - package mage.cards.s; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; @@ -9,8 +7,8 @@ import mage.abilities.effects.RestrictionEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.SubType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.CardTypePredicate; @@ -18,14 +16,15 @@ import mage.filter.predicate.permanent.AnotherPredicate; import mage.game.Game; import mage.game.permanent.Permanent; +import java.util.UUID; + /** - * * @author Plopman */ public final class SteelcladSerpent extends CardImpl { public SteelcladSerpent(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{5}{U}"); + super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{5}{U}"); this.subtype.add(SubType.SERPENT); this.power = new MageInt(4); @@ -48,7 +47,7 @@ public final class SteelcladSerpent extends CardImpl { class SteelcladSerpentEffect extends RestrictionEffect { private static final FilterControlledPermanent filter = new FilterControlledPermanent("another artifact"); - + static { filter.add(new CardTypePredicate(CardType.ARTIFACT)); filter.add(AnotherPredicate.instance); @@ -69,18 +68,15 @@ class SteelcladSerpentEffect extends RestrictionEffect { } @Override - public boolean canAttack(Game game) { + public boolean canAttack(Game game, boolean canUseChooseDialogs) { return false; } @Override public boolean applies(Permanent permanent, Ability source, Game game) { if (permanent.getId().equals(source.getSourceId())) { - if (!game.getBattlefield().getActivePermanents(filter, source.getControllerId(), permanent.getId(), game).isEmpty()) { - return false; - } - return true; - } + return game.getBattlefield().getActivePermanents(filter, source.getControllerId(), permanent.getId(), game).isEmpty(); + } return false; } } \ No newline at end of file diff --git a/Mage.Sets/src/mage/cards/s/StonySilence.java b/Mage.Sets/src/mage/cards/s/StonySilence.java index 6c7fdc4274e..0aca8dc2537 100644 --- a/Mage.Sets/src/mage/cards/s/StonySilence.java +++ b/Mage.Sets/src/mage/cards/s/StonySilence.java @@ -1,7 +1,5 @@ - package mage.cards.s; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.RestrictionEffect; @@ -13,14 +11,15 @@ import mage.constants.Zone; import mage.game.Game; import mage.game.permanent.Permanent; +import java.util.UUID; + /** - * * @author BetaSteward */ public final class StonySilence extends CardImpl { public StonySilence(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}"); + super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{W}"); // Activated abilities of artifacts can't be activated. @@ -55,7 +54,7 @@ class StonySilenceCantActivateEffect extends RestrictionEffect { } @Override - public boolean canUseActivatedAbilities(Permanent permanent, Ability source, Game game) { + public boolean canUseActivatedAbilities(Permanent permanent, Ability source, Game game, boolean canUseChooseDialogs) { return false; } diff --git a/Mage.Sets/src/mage/cards/s/StorageMatrix.java b/Mage.Sets/src/mage/cards/s/StorageMatrix.java index e2283a6073c..6face1e494b 100644 --- a/Mage.Sets/src/mage/cards/s/StorageMatrix.java +++ b/Mage.Sets/src/mage/cards/s/StorageMatrix.java @@ -1,9 +1,5 @@ - package mage.cards.s; -import java.util.HashSet; -import java.util.Set; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.RestrictionEffect; @@ -19,8 +15,11 @@ import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; +import java.util.HashSet; +import java.util.Set; +import java.util.UUID; + /** - * * @author LevelX2 */ public final class StorageMatrix extends CardImpl { @@ -53,6 +52,7 @@ class StorageMatrixRestrictionEffect extends RestrictionEffect { choice.add(CardType.CREATURE.toString()); choice.add(CardType.LAND.toString()); } + private CardType type; public StorageMatrixRestrictionEffect() { @@ -104,7 +104,7 @@ class StorageMatrixRestrictionEffect extends RestrictionEffect { } @Override - public boolean canBeUntapped(Permanent permanent, Ability source, Game game) { + public boolean canBeUntapped(Permanent permanent, Ability source, Game game, boolean canUseChooseDialogs) { return false; } diff --git a/Mage.Sets/src/mage/cards/s/StupefyingTouch.java b/Mage.Sets/src/mage/cards/s/StupefyingTouch.java index b2d9bdcfc70..fc19ee7966e 100644 --- a/Mage.Sets/src/mage/cards/s/StupefyingTouch.java +++ b/Mage.Sets/src/mage/cards/s/StupefyingTouch.java @@ -1,7 +1,5 @@ - package mage.cards.s; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.common.SimpleStaticAbility; @@ -11,24 +9,21 @@ import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.keyword.EnchantAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.SubType; -import mage.constants.Duration; -import mage.constants.Outcome; -import mage.constants.Zone; +import mage.constants.*; import mage.game.Game; import mage.game.permanent.Permanent; import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import java.util.UUID; + /** - * * @author fireshoes */ public final class StupefyingTouch extends CardImpl { public StupefyingTouch(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}"); + super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{U}"); this.subtype.add(SubType.AURA); // Enchant creature @@ -37,10 +32,10 @@ public final class StupefyingTouch extends CardImpl { this.getSpellAbility().addEffect(new AttachEffect(Outcome.Detriment)); Ability ability = new EnchantAbility(auraTarget.getTargetName()); this.addAbility(ability); - + // When Stupefying Touch enters the battlefield, draw a card. this.addAbility(new EntersBattlefieldTriggeredAbility(new DrawCardSourceControllerEffect(1), false)); - + // Enchanted creature's activated abilities can't be activated. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantActivateAbilitiesAttachedEffect())); } @@ -70,15 +65,13 @@ class CantActivateAbilitiesAttachedEffect extends RestrictionEffect { public boolean applies(Permanent permanent, Ability source, Game game) { Permanent enchantment = game.getPermanent(source.getSourceId()); if (enchantment != null && enchantment.getAttachedTo() != null) { - if (permanent.getId().equals(enchantment.getAttachedTo())) { - return true; - } + return permanent.getId().equals(enchantment.getAttachedTo()); } return false; } - + @Override - public boolean canUseActivatedAbilities(Permanent permanent, Ability source, Game game) { + public boolean canUseActivatedAbilities(Permanent permanent, Ability source, Game game, boolean canUseChooseDialogs) { return false; } diff --git a/Mage.Sets/src/mage/cards/t/TeferisMoat.java b/Mage.Sets/src/mage/cards/t/TeferisMoat.java index c163287dc1a..fbdcd065ee2 100644 --- a/Mage.Sets/src/mage/cards/t/TeferisMoat.java +++ b/Mage.Sets/src/mage/cards/t/TeferisMoat.java @@ -64,7 +64,7 @@ class TeferisMoatRestrictionEffect extends RestrictionEffect { } @Override - public boolean canAttack(Permanent attacker, UUID defenderId, Ability source, Game game) { + public boolean canAttack(Permanent attacker, UUID defenderId, Ability source, Game game, boolean canUseChooseDialogs) { if (defenderId == null) { return true; } diff --git a/Mage.Sets/src/mage/cards/t/TheFallenApart.java b/Mage.Sets/src/mage/cards/t/TheFallenApart.java index 66f887455ac..1159b50b5ab 100644 --- a/Mage.Sets/src/mage/cards/t/TheFallenApart.java +++ b/Mage.Sets/src/mage/cards/t/TheFallenApart.java @@ -1,7 +1,5 @@ - package mage.cards.t; -import java.util.UUID; import mage.MageInt; import mage.MageObject; import mage.abilities.Ability; @@ -12,18 +10,15 @@ import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.RestrictionEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.SubType; -import mage.constants.Duration; -import mage.constants.Outcome; -import mage.constants.Zone; +import mage.constants.*; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; import mage.util.CardUtil; +import java.util.UUID; + /** - * * @author L_J */ public final class TheFallenApart extends CardImpl { @@ -162,7 +157,7 @@ class TheFallenApartRestrictionEffect extends RestrictionEffect { } @Override - public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { MageObject mageObject = game.getObject(source.getSourceId()); if (mageObject != null) { return (Integer) game.getState().getValue(mageObject.getId() + "_arms") > 0; @@ -171,7 +166,7 @@ class TheFallenApartRestrictionEffect extends RestrictionEffect { } @Override - public boolean canAttack(Permanent attacker, UUID defenderId, Ability source, Game game) { + public boolean canAttack(Permanent attacker, UUID defenderId, Ability source, Game game, boolean canUseChooseDialogs) { MageObject mageObject = game.getObject(source.getSourceId()); if (mageObject != null) { return (Integer) game.getState().getValue(mageObject.getId() + "_legs") > 0; diff --git a/Mage.Sets/src/mage/cards/t/Togglodyte.java b/Mage.Sets/src/mage/cards/t/Togglodyte.java index ff3df93bd94..41f03d62dc6 100644 --- a/Mage.Sets/src/mage/cards/t/Togglodyte.java +++ b/Mage.Sets/src/mage/cards/t/Togglodyte.java @@ -1,7 +1,5 @@ - package mage.cards.t; -import java.util.UUID; import mage.MageInt; import mage.MageObject; import mage.abilities.Ability; @@ -16,18 +14,15 @@ import mage.abilities.effects.PreventionEffectImpl; import mage.abilities.effects.RestrictionEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.SubType; -import mage.constants.Duration; -import mage.constants.Outcome; -import mage.constants.Zone; +import mage.constants.*; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.permanent.Permanent; import mage.util.CardUtil; +import java.util.UUID; + /** - * * @author L_J */ public final class Togglodyte extends CardImpl { @@ -144,12 +139,12 @@ class TogglodyteRestrictionEffect extends RestrictionEffect { } @Override - public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { return false; } @Override - public boolean canAttack(Game game) { + public boolean canAttack(Game game, boolean canUseChooseDialogs) { return false; } @@ -178,9 +173,7 @@ class TogglodytePreventionEffect extends PreventionEffectImpl { @Override public boolean applies(GameEvent event, Ability source, Game game) { if (super.applies(event, source, game)) { - if (event.getSourceId().equals(source.getSourceId())) { - return true; - } + return event.getSourceId().equals(source.getSourceId()); } return false; } diff --git a/Mage.Sets/src/mage/cards/t/TrainingDrone.java b/Mage.Sets/src/mage/cards/t/TrainingDrone.java index 6b56d1a7fd0..50c94111a3c 100644 --- a/Mage.Sets/src/mage/cards/t/TrainingDrone.java +++ b/Mage.Sets/src/mage/cards/t/TrainingDrone.java @@ -1,8 +1,5 @@ - package mage.cards.t; -import java.util.List; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; @@ -10,20 +7,22 @@ import mage.abilities.effects.RestrictionEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.SubType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.game.Game; import mage.game.permanent.Permanent; +import java.util.List; +import java.util.UUID; + /** - * * @author North */ public final class TrainingDrone extends CardImpl { public TrainingDrone(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}"); + super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{3}"); this.subtype.add(SubType.DRONE); this.power = new MageInt(4); @@ -71,12 +70,12 @@ class TrainingDroneEffect extends RestrictionEffect { } @Override - public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { return false; } @Override - public boolean canAttack(Game game) { + public boolean canAttack(Game game, boolean canUseChooseDialogs) { return false; } diff --git a/Mage.Sets/src/mage/cards/t/TreetopBracers.java b/Mage.Sets/src/mage/cards/t/TreetopBracers.java index a1bcb1f2422..b92dd5f7dd8 100644 --- a/Mage.Sets/src/mage/cards/t/TreetopBracers.java +++ b/Mage.Sets/src/mage/cards/t/TreetopBracers.java @@ -1,6 +1,5 @@ package mage.cards.t; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.RestrictionEffect; @@ -17,10 +16,10 @@ import mage.game.permanent.Permanent; import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import java.util.UUID; + /** - * * @author Jason E. Wall - * */ public final class TreetopBracers extends CardImpl { @@ -67,15 +66,13 @@ class TreetopBracersRestrictEffect extends RestrictionEffect { Permanent equipment = game.getPermanent(source.getSourceId()); if (equipment != null && equipment.getAttachedTo() != null) { Permanent equipped = game.getPermanent(equipment.getAttachedTo()); - if (permanent != null && permanent.getId().equals(equipped.getId())) { - return true; - } + return permanent != null && permanent.getId().equals(equipped.getId()); } return false; } @Override - public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { return blocker.getAbilities().contains(FlyingAbility.getInstance()) || blocker.getAbilities().contains(ReachAbility.getInstance()); } diff --git a/Mage.Sets/src/mage/cards/t/Trickbind.java b/Mage.Sets/src/mage/cards/t/Trickbind.java index 4baf9227c94..46619fded7b 100644 --- a/Mage.Sets/src/mage/cards/t/Trickbind.java +++ b/Mage.Sets/src/mage/cards/t/Trickbind.java @@ -1,7 +1,5 @@ - package mage.cards.t; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.RestrictionEffect; @@ -17,14 +15,15 @@ import mage.game.stack.StackObject; import mage.target.common.TargetActivatedOrTriggeredAbility; import mage.target.targetpointer.FixedTarget; +import java.util.UUID; + /** - * * @author LevelX2 */ public final class Trickbind extends CardImpl { public Trickbind(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}"); + super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{U}"); // Split second @@ -64,7 +63,7 @@ class TrickbindCounterEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { StackObject stackObject = game.getStack().getStackObject(source.getFirstTarget()); - if(stackObject != null && game.getStack().counter(source.getFirstTarget(), source.getSourceId(), game)) { + if (stackObject != null && game.getStack().counter(source.getFirstTarget(), source.getSourceId(), game)) { TrickbindCantActivateEffect effect = new TrickbindCantActivateEffect(); effect.setTargetPointer(new FixedTarget(stackObject.getSourceId())); game.getContinuousEffects().addEffect(effect, source); @@ -92,7 +91,7 @@ class TrickbindCantActivateEffect extends RestrictionEffect { } @Override - public boolean canUseActivatedAbilities(Permanent permanent, Ability source, Game game) { + public boolean canUseActivatedAbilities(Permanent permanent, Ability source, Game game, boolean canUseChooseDialogs) { return false; } diff --git a/Mage.Sets/src/mage/cards/t/Tromokratis.java b/Mage.Sets/src/mage/cards/t/Tromokratis.java index 6c40ba960bd..9590fd92d39 100644 --- a/Mage.Sets/src/mage/cards/t/Tromokratis.java +++ b/Mage.Sets/src/mage/cards/t/Tromokratis.java @@ -1,9 +1,5 @@ - package mage.cards.t; -import java.util.Map; -import java.util.Set; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; @@ -24,8 +20,11 @@ import mage.game.Game; import mage.game.combat.CombatGroup; import mage.game.permanent.Permanent; +import java.util.Map; +import java.util.Set; +import java.util.UUID; + /** - * * @author LevelX2 */ public final class Tromokratis extends CardImpl { @@ -78,7 +77,7 @@ class CantBeBlockedUnlessAllEffect extends RestrictionEffect { } @Override - public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { // check if all creatures of defender are able to block this permanent // permanent.canBlock() can't be used because causing recursive call for (Permanent permanent : game.getBattlefield().getAllActivePermanents(filter, blocker.getControllerId(), game)) { @@ -88,7 +87,7 @@ class CantBeBlockedUnlessAllEffect extends RestrictionEffect { // check blocker restrictions for (Map.Entry> entry : game.getContinuousEffects().getApplicableRestrictionEffects(permanent, game).entrySet()) { for (Ability ability : entry.getValue()) { - if (!entry.getKey().canBlock(attacker, permanent, ability, game)) { + if (!entry.getKey().canBlock(attacker, permanent, ability, game, canUseChooseDialogs)) { return false; } } @@ -97,7 +96,7 @@ class CantBeBlockedUnlessAllEffect extends RestrictionEffect { for (Map.Entry> restrictionEntry : game.getContinuousEffects().getApplicableRestrictionEffects(attacker, game).entrySet()) { for (Ability ability : restrictionEntry.getValue()) { if (!(restrictionEntry.getKey() instanceof CantBeBlockedUnlessAllEffect) - && !restrictionEntry.getKey().canBeBlocked(attacker, permanent, ability, game)) { + && !restrictionEntry.getKey().canBeBlocked(attacker, permanent, ability, game, canUseChooseDialogs)) { return false; } } @@ -110,7 +109,7 @@ class CantBeBlockedUnlessAllEffect extends RestrictionEffect { } @Override - public boolean canBeBlockedCheckAfter(Permanent attacker, Ability source, Game game) { + public boolean canBeBlockedCheckAfter(Permanent attacker, Ability source, Game game, boolean canUseChooseDialogs) { for (CombatGroup combatGroup : game.getCombat().getGroups()) { if (combatGroup.getAttackers().contains(source.getSourceId())) { for (UUID blockerId : combatGroup.getBlockers()) { diff --git a/Mage.Sets/src/mage/cards/u/UnwindingClock.java b/Mage.Sets/src/mage/cards/u/UnwindingClock.java index 4c0b8767398..13f76f9525a 100644 --- a/Mage.Sets/src/mage/cards/u/UnwindingClock.java +++ b/Mage.Sets/src/mage/cards/u/UnwindingClock.java @@ -1,32 +1,25 @@ - package mage.cards.u; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.ContinuousEffectImpl; import mage.abilities.effects.RestrictionEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.Layer; -import mage.constants.Outcome; -import mage.constants.PhaseStep; -import mage.constants.SubLayer; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.common.FilterArtifactPermanent; import mage.game.Game; import mage.game.permanent.Permanent; +import java.util.UUID; + /** - * * @author BetaSteward */ public final class UnwindingClock extends CardImpl { public UnwindingClock(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}"); + super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}"); // Untap all artifacts you control during each other player's untap step. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new UnwindingClockEffect())); @@ -72,7 +65,7 @@ class UnwindingClockEffect extends ContinuousEffectImpl { for (Permanent artifact : game.getBattlefield().getAllActivePermanents(filter, source.getControllerId(), game)) { boolean untap = true; for (RestrictionEffect effect : game.getContinuousEffects().getApplicableRestrictionEffects(artifact, game).keySet()) { - untap &= effect.canBeUntapped(artifact, source, game); + untap &= effect.canBeUntapped(artifact, source, game, true); } if (untap) { artifact.untap(game); diff --git a/Mage.Sets/src/mage/cards/u/UrbanBurgeoning.java b/Mage.Sets/src/mage/cards/u/UrbanBurgeoning.java index 2b9c1d2c91d..e02e3c95966 100644 --- a/Mage.Sets/src/mage/cards/u/UrbanBurgeoning.java +++ b/Mage.Sets/src/mage/cards/u/UrbanBurgeoning.java @@ -1,7 +1,5 @@ - package mage.cards.u; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.ContinuousEffectImpl; @@ -11,22 +9,15 @@ import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect; import mage.abilities.keyword.EnchantAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.AttachmentType; -import mage.constants.CardType; -import mage.constants.SubType; -import mage.constants.Duration; -import mage.constants.Layer; -import mage.constants.Outcome; -import mage.constants.PhaseStep; -import mage.constants.SubLayer; -import mage.constants.Zone; +import mage.constants.*; import mage.game.Game; import mage.game.permanent.Permanent; import mage.target.TargetPermanent; import mage.target.common.TargetLandPermanent; +import java.util.UUID; + /** - * * @author LevelX2 */ public final class UrbanBurgeoning extends CardImpl { @@ -34,7 +25,7 @@ public final class UrbanBurgeoning extends CardImpl { static final String rule = "Enchanted land has \"Untap this land during each other player's untap step.\""; public UrbanBurgeoning(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{G}"); + super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{G}"); this.subtype.add(SubType.AURA); // Enchant land @@ -87,7 +78,7 @@ class UrbanBurgeoningUntapEffect extends ContinuousEffectImpl { Permanent land = game.getPermanent(source.getSourceId()); boolean untap = true; for (RestrictionEffect effect : game.getContinuousEffects().getApplicableRestrictionEffects(land, game).keySet()) { - untap &= effect.canBeUntapped(land, source, game); + untap &= effect.canBeUntapped(land, source, game, true); } if (untap) { land.untap(game); diff --git a/Mage.Sets/src/mage/cards/v/VeteranBrawlers.java b/Mage.Sets/src/mage/cards/v/VeteranBrawlers.java index 5d25ed9625a..a8c49a2a8a7 100644 --- a/Mage.Sets/src/mage/cards/v/VeteranBrawlers.java +++ b/Mage.Sets/src/mage/cards/v/VeteranBrawlers.java @@ -1,7 +1,5 @@ - package mage.cards.v; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; @@ -10,8 +8,8 @@ import mage.abilities.effects.common.combat.CantAttackIfDefenderControlsPermanen import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.SubType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterPermanent; import mage.filter.common.FilterLandPermanent; @@ -21,16 +19,19 @@ import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; +import java.util.UUID; + /** * @author L_J */ public final class VeteranBrawlers extends CardImpl { static final private FilterLandPermanent filter = new FilterLandPermanent("an untapped land"); + static { filter.add(Predicates.not(TappedPredicate.instance)); } - + static final private String rule = "{this} can't block if you control an untapped land"; public VeteranBrawlers(UUID ownerId, CardSetInfo setInfo) { @@ -78,12 +79,10 @@ class VeteranBrawlersCantBlockEffect extends RestrictionEffect { } @Override - public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { Player player = game.getPlayer(blocker.getControllerId()); if (player != null) { - if (game.getBattlefield().countAll(filter, player.getId(), game) > 0) { - return false; - } + return game.getBattlefield().countAll(filter, player.getId(), game) <= 0; } return true; } diff --git a/Mage.Sets/src/mage/cards/v/VigeanHydropon.java b/Mage.Sets/src/mage/cards/v/VigeanHydropon.java index 5c86441c89c..344c0abcf23 100644 --- a/Mage.Sets/src/mage/cards/v/VigeanHydropon.java +++ b/Mage.Sets/src/mage/cards/v/VigeanHydropon.java @@ -1,7 +1,5 @@ - package mage.cards.v; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; @@ -10,20 +8,21 @@ import mage.abilities.keyword.GraftAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.SubType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.game.Game; import mage.game.permanent.Permanent; +import java.util.UUID; + /** - * * @author JotaPeRL */ public final class VigeanHydropon extends CardImpl { public VigeanHydropon(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{U}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}{U}"); this.subtype.add(SubType.PLANT); this.subtype.add(SubType.MUTANT); this.power = new MageInt(0); @@ -31,7 +30,7 @@ public final class VigeanHydropon extends CardImpl { // Graft 5 this.addAbility(new GraftAbility(this, 5)); - + // Vigean Hydropon can't attack or block. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new VigeanHydroponEffect())); } @@ -63,20 +62,17 @@ class VigeanHydroponEffect extends RestrictionEffect { } @Override - public boolean canAttack(Game game) { + public boolean canAttack(Game game, boolean canUseChooseDialogs) { return false; } @Override - public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { return false; } @Override public boolean applies(Permanent permanent, Ability source, Game game) { - if (permanent.getId().equals(source.getSourceId())) { - return true; - } - return false; + return permanent.getId().equals(source.getSourceId()); } } \ No newline at end of file diff --git a/Mage.Sets/src/mage/cards/v/VoidWinnower.java b/Mage.Sets/src/mage/cards/v/VoidWinnower.java index 2a8e84ed30e..704de660dc3 100644 --- a/Mage.Sets/src/mage/cards/v/VoidWinnower.java +++ b/Mage.Sets/src/mage/cards/v/VoidWinnower.java @@ -1,7 +1,5 @@ - package mage.cards.v; -import java.util.UUID; import mage.MageInt; import mage.MageObject; import mage.abilities.Ability; @@ -10,25 +8,22 @@ import mage.abilities.effects.ContinuousRuleModifyingEffectImpl; import mage.abilities.effects.RestrictionEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.SubType; -import mage.constants.Duration; -import mage.constants.Outcome; -import mage.constants.Zone; +import mage.constants.*; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.events.GameEvent.EventType; import mage.game.permanent.Permanent; import mage.game.stack.Spell; +import java.util.UUID; + /** - * * @author LevelX2 */ public final class VoidWinnower extends CardImpl { public VoidWinnower(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{9}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{9}"); this.subtype.add(SubType.ELDRAZI); this.power = new MageInt(11); @@ -125,7 +120,7 @@ class VoidWinnowerCantBlockEffect extends RestrictionEffect { } @Override - public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { return false; } } diff --git a/Mage.Sets/src/mage/cards/v/VolrathsCurse.java b/Mage.Sets/src/mage/cards/v/VolrathsCurse.java index c9e64d9c209..5382f26e9d6 100644 --- a/Mage.Sets/src/mage/cards/v/VolrathsCurse.java +++ b/Mage.Sets/src/mage/cards/v/VolrathsCurse.java @@ -1,7 +1,5 @@ - package mage.cards.v; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.ActivatedAbilityImpl; import mage.abilities.SpecialAction; @@ -17,13 +15,7 @@ import mage.abilities.effects.common.ReturnToHandSourceEffect; import mage.abilities.keyword.EnchantAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import static mage.cards.v.VolrathsCurse.keyString; -import mage.constants.CardType; -import mage.constants.SubType; -import mage.constants.Duration; -import mage.constants.Outcome; -import mage.constants.TargetController; -import mage.constants.Zone; +import mage.constants.*; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.permanent.Permanent; @@ -31,8 +23,11 @@ import mage.target.TargetPermanent; import mage.target.common.TargetControlledPermanent; import mage.target.common.TargetCreaturePermanent; +import java.util.UUID; + +import static mage.cards.v.VolrathsCurse.keyString; + /** - * * @author LevelX2 */ public final class VolrathsCurse extends CardImpl { @@ -40,7 +35,7 @@ public final class VolrathsCurse extends CardImpl { static final String keyString = "_ignoreEffectForTurn"; public VolrathsCurse(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}"); + super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{U}"); this.subtype.add(SubType.AURA); // Enchant creature @@ -94,12 +89,12 @@ class VolrathsCurseRestrictionEffect extends RestrictionEffect { } @Override - public boolean canAttack(Game game) { + public boolean canAttack(Game game, boolean canUseChooseDialogs) { return false; } @Override - public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { return false; } @@ -188,8 +183,8 @@ class VolrathsCurseIgnoreEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - String key = source.getSourceId().toString() + source.getSourceObjectZoneChangeCounter() + keyString + game.getTurnNum() + ((ActivatedAbilityImpl)source).getActivatorId(); - game.getState().setValue(key,true); + String key = source.getSourceId().toString() + source.getSourceObjectZoneChangeCounter() + keyString + game.getTurnNum() + ((ActivatedAbilityImpl) source).getActivatorId(); + game.getState().setValue(key, true); return true; } } diff --git a/Mage.Sets/src/mage/cards/w/WallOfDust.java b/Mage.Sets/src/mage/cards/w/WallOfDust.java index 5998d54a4c4..f7517a38add 100644 --- a/Mage.Sets/src/mage/cards/w/WallOfDust.java +++ b/Mage.Sets/src/mage/cards/w/WallOfDust.java @@ -1,7 +1,5 @@ - package mage.cards.w; -import java.util.UUID; import mage.MageInt; import mage.MageObjectReference; import mage.abilities.Ability; @@ -11,14 +9,15 @@ import mage.abilities.keyword.DefenderAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.SubType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.TurnPhase; import mage.game.Game; import mage.game.permanent.Permanent; +import java.util.UUID; + /** - * * @author L_J (based on LevelX2) */ public final class WallOfDust extends CardImpl { @@ -95,14 +94,12 @@ class WallOfDustRestrictionEffect extends RestrictionEffect { @Override public boolean applies(Permanent permanent, Ability source, Game game) { if (permanent.getId().equals(getTargetPointer().getFirst(game, source))) { - if (game.isActivePlayer(permanent.getControllerId())) { - return true; - } + return game.isActivePlayer(permanent.getControllerId()); } return false; } - public boolean canAttack(Game game) { + public boolean canAttack(Game game, boolean canUseChooseDialogs) { return false; } } diff --git a/Mage.Sets/src/mage/cards/w/WarFalcon.java b/Mage.Sets/src/mage/cards/w/WarFalcon.java index ab819388aa4..e1fc9ba972b 100644 --- a/Mage.Sets/src/mage/cards/w/WarFalcon.java +++ b/Mage.Sets/src/mage/cards/w/WarFalcon.java @@ -1,7 +1,5 @@ - package mage.cards.w; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; @@ -19,14 +17,15 @@ import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; +import java.util.UUID; + /** - * * @author jeffwadsworth */ public final class WarFalcon extends CardImpl { public WarFalcon(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}"); this.subtype.add(SubType.BIRD); this.power = new MageInt(2); @@ -34,7 +33,7 @@ public final class WarFalcon extends CardImpl { // Flying this.addAbility(FlyingAbility.getInstance()); - + // War Falcon can't attack unless you control a Knight or a Soldier. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new WarFalconEffect())); } @@ -52,11 +51,11 @@ public final class WarFalcon extends CardImpl { class WarFalconEffect extends RestrictionEffect { private static final FilterControlledPermanent filter = new FilterControlledPermanent("Knight or a Soldier"); - + static { filter.add(Predicates.or( - new SubtypePredicate(SubType.KNIGHT), - new SubtypePredicate(SubType.SOLDIER))); + new SubtypePredicate(SubType.KNIGHT), + new SubtypePredicate(SubType.SOLDIER))); } public WarFalconEffect() { @@ -74,17 +73,14 @@ class WarFalconEffect extends RestrictionEffect { } @Override - public boolean canAttack(Game game) { + public boolean canAttack(Game game, boolean canUseChooseDialogs) { return false; } @Override public boolean applies(Permanent permanent, Ability source, Game game) { if (permanent.getId().equals(source.getSourceId())) { - if (game.getBattlefield().countAll(filter, source.getControllerId(), game) > 0) { - return false; - } - return true; + return game.getBattlefield().countAll(filter, source.getControllerId(), game) <= 0; } // do not apply to other creatures. return false; } diff --git a/Mage.Sets/src/mage/cards/w/WebOfInertia.java b/Mage.Sets/src/mage/cards/w/WebOfInertia.java index 47a384bf8f3..edaf46afe00 100644 --- a/Mage.Sets/src/mage/cards/w/WebOfInertia.java +++ b/Mage.Sets/src/mage/cards/w/WebOfInertia.java @@ -104,7 +104,7 @@ class WebOfInertiaRestrictionEffect extends RestrictionEffect { } @Override - public boolean canAttack(Permanent attacker, UUID defenderId, Ability source, Game game) { + public boolean canAttack(Permanent attacker, UUID defenderId, Ability source, Game game, boolean canUseChooseDialogs) { if (defenderId == null) { return true; } diff --git a/Mage.Sets/src/mage/cards/w/Wirecat.java b/Mage.Sets/src/mage/cards/w/Wirecat.java index 9a9a9917e69..d7de3f37296 100644 --- a/Mage.Sets/src/mage/cards/w/Wirecat.java +++ b/Mage.Sets/src/mage/cards/w/Wirecat.java @@ -1,4 +1,3 @@ - package mage.cards.w; import mage.MageInt; @@ -8,8 +7,8 @@ import mage.abilities.effects.RestrictionEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.SubType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.StaticFilters; import mage.game.Game; @@ -18,13 +17,12 @@ import mage.game.permanent.Permanent; import java.util.UUID; /** - * * @author Derpthemeus */ public final class Wirecat extends CardImpl { public Wirecat(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}"); + super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{4}"); this.subtype.add(SubType.CAT); this.power = new MageInt(4); this.toughness = new MageInt(3); @@ -59,12 +57,12 @@ public final class Wirecat extends CardImpl { } @Override - public boolean canAttackCheckAfter(int numberOfAttackers, Ability source, Game game) { + public boolean canAttackCheckAfter(int numberOfAttackers, Ability source, Game game, boolean canUseChooseDialogs) { return false; } @Override - public boolean canBlockCheckAfter(Ability source, Game game) { + public boolean canBlockCheckAfter(Ability source, Game game, boolean canUseChooseDialogs) { return false; } diff --git a/Mage.Sets/src/mage/cards/w/WordOfCommand.java b/Mage.Sets/src/mage/cards/w/WordOfCommand.java index ad06e245df4..07823ab0a1f 100644 --- a/Mage.Sets/src/mage/cards/w/WordOfCommand.java +++ b/Mage.Sets/src/mage/cards/w/WordOfCommand.java @@ -1,6 +1,5 @@ package mage.cards.w; -import java.util.UUID; import mage.MageObject; import mage.MageObjectReference; import mage.abilities.Ability; @@ -13,11 +12,7 @@ import mage.abilities.effects.RestrictionEffect; import mage.cards.Card; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.AsThoughEffectType; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.Outcome; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.FilterCard; import mage.game.Game; import mage.game.events.GameEvent; @@ -29,8 +24,9 @@ import mage.target.TargetCard; import mage.target.common.TargetOpponent; import mage.target.targetpointer.FixedTarget; +import java.util.UUID; + /** - * * @author L_J */ public final class WordOfCommand extends CardImpl { @@ -218,7 +214,7 @@ class WordOfCommandCantActivateEffect extends RestrictionEffect { } @Override - public boolean canUseActivatedAbilities(Permanent permanent, Ability source, Game game) { + public boolean canUseActivatedAbilities(Permanent permanent, Ability source, Game game, boolean canUseChooseDialogs) { return false; } } diff --git a/Mage.Sets/src/mage/cards/w/WritOfPassage.java b/Mage.Sets/src/mage/cards/w/WritOfPassage.java index 040f218574d..d28aa0d50d2 100644 --- a/Mage.Sets/src/mage/cards/w/WritOfPassage.java +++ b/Mage.Sets/src/mage/cards/w/WritOfPassage.java @@ -1,36 +1,29 @@ - package mage.cards.w; -import java.util.UUID; - -import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; -import mage.target.common.TargetCreaturePermanent; import mage.abilities.Ability; import mage.abilities.common.AttacksAttachedTriggeredAbility; import mage.abilities.condition.common.AttachedToMatchesFilterCondition; import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; import mage.abilities.effects.RestrictionEffect; import mage.abilities.effects.common.AttachEffect; import mage.abilities.effects.common.combat.CantBeBlockedTargetEffect; -import mage.constants.Outcome; -import mage.target.TargetPermanent; import mage.abilities.keyword.EnchantAbility; import mage.abilities.keyword.ForecastAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.AttachmentType; -import mage.constants.CardType; -import mage.constants.SubType; -import mage.constants.ComparisonType; -import mage.constants.Duration; +import mage.constants.*; import mage.filter.FilterPermanent; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.PowerPredicate; import mage.game.Game; import mage.game.permanent.Permanent; +import mage.target.TargetPermanent; +import mage.target.common.TargetCreaturePermanent; + +import java.util.UUID; /** - * * @author TheElk801 */ public final class WritOfPassage extends CardImpl { @@ -89,13 +82,13 @@ class WritOfPassageAttachedEffect extends RestrictionEffect { } @Override - public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { return false; } @Override public boolean applies(Permanent permanent, Ability source, Game game) { Permanent attachment = game.getPermanent(source.getSourceId()); - return attachment != null && attachment.isAttachedTo(permanent.getId()); + return attachment != null && attachment.isAttachedTo(permanent.getId()); } } diff --git a/Mage.Sets/src/mage/cards/x/XantchaSleeperAgent.java b/Mage.Sets/src/mage/cards/x/XantchaSleeperAgent.java index f10a1339a4c..d0a35959e7f 100644 --- a/Mage.Sets/src/mage/cards/x/XantchaSleeperAgent.java +++ b/Mage.Sets/src/mage/cards/x/XantchaSleeperAgent.java @@ -137,7 +137,7 @@ class XantchaSleeperAgentAttackRestrictionEffect extends RestrictionEffect { } @Override - public boolean canAttack(Permanent attacker, UUID defenderId, Ability source, Game game) { + public boolean canAttack(Permanent attacker, UUID defenderId, Ability source, Game game, boolean canUseChooseDialogs) { if (defenderId == null) { return true; } diff --git a/Mage.Sets/src/mage/cards/x/XathridGorgon.java b/Mage.Sets/src/mage/cards/x/XathridGorgon.java index e301d213583..adae2d237cb 100644 --- a/Mage.Sets/src/mage/cards/x/XathridGorgon.java +++ b/Mage.Sets/src/mage/cards/x/XathridGorgon.java @@ -1,7 +1,5 @@ - package mage.cards.x; -import java.util.UUID; import mage.MageInt; import mage.ObjectColor; import mage.abilities.Ability; @@ -19,22 +17,23 @@ import mage.abilities.keyword.DefenderAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.SubType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.counters.CounterType; import mage.game.Game; import mage.game.permanent.Permanent; import mage.target.common.TargetCreaturePermanent; +import java.util.UUID; + /** - * * @author jeffwadsworth */ public final class XathridGorgon extends CardImpl { public XathridGorgon(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{B}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{B}"); this.subtype.add(SubType.GORGON); this.power = new MageInt(3); @@ -42,7 +41,7 @@ public final class XathridGorgon extends CardImpl { // Deathtouch this.addAbility(DeathtouchAbility.getInstance()); - + // {2}{B}, {tap}: Put a petrification counter on target creature. It gains defender and becomes a colorless artifact in addition to its other types. Its activated abilities can't be activated. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new AddCountersTargetEffect(CounterType.PETRIFICATION.createInstance()), new ManaCostsImpl("{2}{B}")); ability.addCost(new TapSourceCost()); @@ -56,7 +55,7 @@ public final class XathridGorgon extends CardImpl { ability.addEffect(new BecomesColorTargetEffect(new ObjectColor(), Duration.Custom, "")); ability.addEffect(new XathridGorgonCantActivateEffect()); this.addAbility(ability); - + } public XathridGorgon(final XathridGorgon card) { @@ -91,7 +90,7 @@ class XathridGorgonCantActivateEffect extends RestrictionEffect { } @Override - public boolean canUseActivatedAbilities(Permanent permanent, Ability source, Game game) { + public boolean canUseActivatedAbilities(Permanent permanent, Ability source, Game game, boolean canUseChooseDialogs) { return false; } diff --git a/Mage/src/main/java/mage/abilities/decorator/ConditionalRestrictionEffect.java b/Mage/src/main/java/mage/abilities/decorator/ConditionalRestrictionEffect.java index f33793ea6bf..5f1e6318d58 100644 --- a/Mage/src/main/java/mage/abilities/decorator/ConditionalRestrictionEffect.java +++ b/Mage/src/main/java/mage/abilities/decorator/ConditionalRestrictionEffect.java @@ -1,4 +1,3 @@ - package mage.abilities.decorator; import mage.abilities.Ability; @@ -11,7 +10,6 @@ import mage.game.Game; import mage.game.permanent.Permanent; /** - * * @author LevelX2 */ public class ConditionalRestrictionEffect extends RestrictionEffect { @@ -86,51 +84,51 @@ public class ConditionalRestrictionEffect extends RestrictionEffect { } @Override - public boolean canAttack(Game game) { + public boolean canAttack(Game game, boolean canUseChooseDialogs) { if (conditionState) { - return effect.canAttack(game); + return effect.canAttack(game, canUseChooseDialogs); } else if (otherwiseEffect != null) { - return otherwiseEffect.canAttack(game); + return otherwiseEffect.canAttack(game, canUseChooseDialogs); } return true; } @Override - public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { if (conditionState) { - return effect.canBlock(attacker, blocker, source, game); + return effect.canBlock(attacker, blocker, source, game, canUseChooseDialogs); } else if (otherwiseEffect != null) { - return otherwiseEffect.canBlock(attacker, blocker, source, game); + return otherwiseEffect.canBlock(attacker, blocker, source, game, canUseChooseDialogs); } return true; } @Override - public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { if (conditionState) { - return effect.canBeBlocked(attacker, blocker, source, game); + return effect.canBeBlocked(attacker, blocker, source, game, canUseChooseDialogs); } else if (otherwiseEffect != null) { - return otherwiseEffect.canBeBlocked(attacker, blocker, source, game); + return otherwiseEffect.canBeBlocked(attacker, blocker, source, game, canUseChooseDialogs); } return true; } @Override - public boolean canBeUntapped(Permanent permanent, Ability source, Game game) { + public boolean canBeUntapped(Permanent permanent, Ability source, Game game, boolean canUseChooseDialogs) { if (conditionState) { - return effect.canBeUntapped(permanent, source, game); + return effect.canBeUntapped(permanent, source, game, canUseChooseDialogs); } else if (otherwiseEffect != null) { - return otherwiseEffect.canBeUntapped(permanent, source, game); + return otherwiseEffect.canBeUntapped(permanent, source, game, canUseChooseDialogs); } return true; } @Override - public boolean canUseActivatedAbilities(Permanent permanent, Ability source, Game game) { + public boolean canUseActivatedAbilities(Permanent permanent, Ability source, Game game, boolean canUseChooseDialogs) { if (conditionState) { - return effect.canUseActivatedAbilities(permanent, source, game); + return effect.canUseActivatedAbilities(permanent, source, game, canUseChooseDialogs); } else if (otherwiseEffect != null) { - return otherwiseEffect.canUseActivatedAbilities(permanent, source, game); + return otherwiseEffect.canUseActivatedAbilities(permanent, source, game, canUseChooseDialogs); } return true; } diff --git a/Mage/src/main/java/mage/abilities/effects/RestrictionEffect.java b/Mage/src/main/java/mage/abilities/effects/RestrictionEffect.java index aa8d55f8412..14cf8b38b43 100644 --- a/Mage/src/main/java/mage/abilities/effects/RestrictionEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/RestrictionEffect.java @@ -34,7 +34,10 @@ public abstract class RestrictionEffect extends ContinuousEffectImpl { public abstract boolean applies(Permanent permanent, Ability source, Game game); - public boolean canAttack(Game game) { + // canUseChooseDialogs -- restrict checks can be called by rules engine and by card info engine, + // last one uses for info only and can't use dialogs, e.g. canUseChooseDialogs = false + + public boolean canAttack(Game game, boolean canUseChooseDialogs) { return true; } @@ -45,11 +48,11 @@ public abstract class RestrictionEffect extends ContinuousEffectImpl { * @param game * @return */ - public boolean canAttack(Permanent attacker, UUID defenderId, Ability source, Game game) { + public boolean canAttack(Permanent attacker, UUID defenderId, Ability source, Game game, boolean canUseChooseDialogs) { return true; } - public boolean canAttackCheckAfter(int numberOfAttackers, Ability source, Game game) { + public boolean canAttackCheckAfter(int numberOfAttackers, Ability source, Game game, boolean canUseChooseDialogs) { return true; } @@ -60,15 +63,15 @@ public abstract class RestrictionEffect extends ContinuousEffectImpl { * @param game * @return */ - public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { return true; } - public boolean canBlockCheckAfter(Ability source, Game game) { + public boolean canBlockCheckAfter(Ability source, Game game, boolean canUseChooseDialogs) { return true; } - public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { return true; } @@ -81,19 +84,19 @@ public abstract class RestrictionEffect extends ContinuousEffectImpl { * @return true = block is ok false = block is not valid (human: back to * defining blockers, AI: remove blocker) */ - public boolean canBeBlockedCheckAfter(Permanent attacker, Ability source, Game game) { + public boolean canBeBlockedCheckAfter(Permanent attacker, Ability source, Game game, boolean canUseChooseDialogs) { return true; } - public boolean canBeUntapped(Permanent permanent, Ability source, Game game) { + public boolean canBeUntapped(Permanent permanent, Ability source, Game game, boolean canUseChooseDialogs) { return true; } - public boolean canUseActivatedAbilities(Permanent permanent, Ability source, Game game) { + public boolean canUseActivatedAbilities(Permanent permanent, Ability source, Game game, boolean canUseChooseDialogs) { return true; } - public boolean canTransform(Permanent permanent, Ability source, Game game) { + public boolean canTransform(Permanent permanent, Ability source, Game game, boolean canUseChooseDialogs) { return true; } diff --git a/Mage/src/main/java/mage/abilities/effects/common/CantAttackBlockTransformAttachedEffect.java b/Mage/src/main/java/mage/abilities/effects/common/CantAttackBlockTransformAttachedEffect.java index 6428f841a55..ab4726fa420 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/CantAttackBlockTransformAttachedEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/CantAttackBlockTransformAttachedEffect.java @@ -12,7 +12,6 @@ import mage.game.Game; import mage.game.permanent.Permanent; /** - * * @author halljared */ public class CantAttackBlockTransformAttachedEffect extends RestrictionEffect { @@ -30,25 +29,23 @@ public class CantAttackBlockTransformAttachedEffect extends RestrictionEffect { public boolean applies(Permanent permanent, Ability source, Game game) { Permanent enchantment = game.getPermanent(source.getSourceId()); if (enchantment != null && enchantment.getAttachedTo() != null) { - if (permanent.getId().equals(enchantment.getAttachedTo())) { - return true; - } + return permanent.getId().equals(enchantment.getAttachedTo()); } return false; } @Override - public boolean canAttack(Game game) { + public boolean canAttack(Game game, boolean canUseChooseDialogs) { return false; } @Override - public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { return false; } @Override - public boolean canTransform(Permanent permanent, Ability source, Game game) { + public boolean canTransform(Permanent permanent, Ability source, Game game, boolean canUseChooseDialogs) { return false; } diff --git a/Mage/src/main/java/mage/abilities/effects/common/DetainAllEffect.java b/Mage/src/main/java/mage/abilities/effects/common/DetainAllEffect.java index 410568577fa..99c5c5b07bb 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/DetainAllEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/DetainAllEffect.java @@ -1,9 +1,5 @@ - package mage.abilities.effects.common; -import java.util.ArrayList; -import java.util.List; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.RestrictionEffect; @@ -16,8 +12,11 @@ import mage.game.permanent.Permanent; import mage.game.turn.Step; import mage.target.targetpointer.FixedTarget; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + /** - * * @author LevelX2 */ public class DetainAllEffect extends OneShotEffect { @@ -110,17 +109,17 @@ class DetainAllRestrictionEffect extends RestrictionEffect { } @Override - public boolean canAttack(Game game) { + public boolean canAttack(Game game, boolean canUseChooseDialogs) { return false; } @Override - public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { return false; } @Override - public boolean canUseActivatedAbilities(Permanent permanent, Ability source, Game game) { + public boolean canUseActivatedAbilities(Permanent permanent, Ability source, Game game, boolean canUseChooseDialogs) { return false; } diff --git a/Mage/src/main/java/mage/abilities/effects/common/DetainTargetEffect.java b/Mage/src/main/java/mage/abilities/effects/common/DetainTargetEffect.java index 57b2a4c89ff..b4e169e8075 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/DetainTargetEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/DetainTargetEffect.java @@ -1,7 +1,5 @@ - package mage.abilities.effects.common; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.Mode; import mage.abilities.effects.OneShotEffect; @@ -16,8 +14,9 @@ import mage.target.Target; import mage.target.common.TargetCreaturePermanent; import mage.util.CardUtil; +import java.util.UUID; + /** - * * @author LevelX2 */ // @@ -137,17 +136,17 @@ class DetainRestrictionEffect extends RestrictionEffect { } @Override - public boolean canAttack(Game game) { + public boolean canAttack(Game game, boolean canUseChooseDialogs) { return false; } @Override - public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { return false; } @Override - public boolean canUseActivatedAbilities(Permanent permanent, Ability source, Game game) { + public boolean canUseActivatedAbilities(Permanent permanent, Ability source, Game game, boolean canUseChooseDialogs) { return false; } diff --git a/Mage/src/main/java/mage/abilities/effects/common/SkipUntapOptionalSourceEffect.java b/Mage/src/main/java/mage/abilities/effects/common/SkipUntapOptionalSourceEffect.java index dbe05cd6b7f..2a74938f66f 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/SkipUntapOptionalSourceEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/SkipUntapOptionalSourceEffect.java @@ -1,4 +1,3 @@ - package mage.abilities.effects.common; import mage.abilities.Ability; @@ -10,7 +9,6 @@ import mage.game.permanent.Permanent; import mage.players.Player; /** - * * @author LevelX2 */ public class SkipUntapOptionalSourceEffect extends RestrictionEffect { @@ -32,9 +30,15 @@ public class SkipUntapOptionalSourceEffect extends RestrictionEffect { } @Override - public boolean canBeUntapped(Permanent permanent, Ability source, Game game) { + public boolean canBeUntapped(Permanent permanent, Ability source, Game game, boolean canUseChooseDialogs) { Player player = game.getPlayer(permanent.getControllerId()); - return player != null && player.chooseUse(Outcome.Benefit, "Untap " + permanent.getLogName() + '?', source, game); + if (canUseChooseDialogs) { + // calls on untap step + return player != null && player.chooseUse(Outcome.Benefit, "Untap " + permanent.getLogName() + '?', source, game); + } else { + // calcs on get cards info + return true; + } } @Override diff --git a/Mage/src/main/java/mage/abilities/effects/common/combat/CanAttackOnlyAloneEffect.java b/Mage/src/main/java/mage/abilities/effects/common/combat/CanAttackOnlyAloneEffect.java index 7c5f54daf04..711ad88ebac 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/combat/CanAttackOnlyAloneEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/combat/CanAttackOnlyAloneEffect.java @@ -12,7 +12,6 @@ import mage.game.Game; import mage.game.permanent.Permanent; /** - * * @author LevelX2 */ public class CanAttackOnlyAloneEffect extends RestrictionEffect { @@ -32,7 +31,7 @@ public class CanAttackOnlyAloneEffect extends RestrictionEffect { } @Override - public boolean canAttackCheckAfter(int numberOfAttackers, Ability source, Game game) { + public boolean canAttackCheckAfter(int numberOfAttackers, Ability source, Game game, boolean canUseChooseDialogs) { return numberOfAttackers == 1; } diff --git a/Mage/src/main/java/mage/abilities/effects/common/combat/CanBlockOnlyFlyingAttachedEffect.java b/Mage/src/main/java/mage/abilities/effects/common/combat/CanBlockOnlyFlyingAttachedEffect.java index 885ac1063cc..ecb95414c9c 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/combat/CanBlockOnlyFlyingAttachedEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/combat/CanBlockOnlyFlyingAttachedEffect.java @@ -29,7 +29,7 @@ public class CanBlockOnlyFlyingAttachedEffect extends RestrictionEffect { } @Override - public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { if (attacker == null) { return true; } diff --git a/Mage/src/main/java/mage/abilities/effects/common/combat/CanBlockOnlyFlyingEffect.java b/Mage/src/main/java/mage/abilities/effects/common/combat/CanBlockOnlyFlyingEffect.java index d843a3f6b7f..c39e9d3188e 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/combat/CanBlockOnlyFlyingEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/combat/CanBlockOnlyFlyingEffect.java @@ -29,7 +29,7 @@ public class CanBlockOnlyFlyingEffect extends RestrictionEffect { } @Override - public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { if (attacker == null) { return true; } diff --git a/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackAloneAttachedEffect.java b/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackAloneAttachedEffect.java index dbd3766b02e..cf3a354dccb 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackAloneAttachedEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackAloneAttachedEffect.java @@ -13,7 +13,6 @@ import mage.game.Game; import mage.game.permanent.Permanent; /** - * * @author LevelX2 */ public class CantAttackAloneAttachedEffect extends RestrictionEffect { @@ -33,7 +32,7 @@ public class CantAttackAloneAttachedEffect extends RestrictionEffect { } @Override - public boolean canAttackCheckAfter(int numberOfAttackers, Ability source, Game game) { + public boolean canAttackCheckAfter(int numberOfAttackers, Ability source, Game game, boolean canUseChooseDialogs) { return numberOfAttackers > 1; } diff --git a/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackAloneSourceEffect.java b/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackAloneSourceEffect.java index 5aa33b59e3c..9f8f27f5ce6 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackAloneSourceEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackAloneSourceEffect.java @@ -12,7 +12,6 @@ import mage.game.Game; import mage.game.permanent.Permanent; /** - * * @author LevelX2 */ public class CantAttackAloneSourceEffect extends RestrictionEffect { @@ -32,7 +31,7 @@ public class CantAttackAloneSourceEffect extends RestrictionEffect { } @Override - public boolean canAttackCheckAfter(int numberOfAttackers, Ability source, Game game) { + public boolean canAttackCheckAfter(int numberOfAttackers, Ability source, Game game, boolean canUseChooseDialogs) { return numberOfAttackers > 1; } diff --git a/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackAnyPlayerAllEffect.java b/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackAnyPlayerAllEffect.java index 73326c41a7e..40339821a31 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackAnyPlayerAllEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackAnyPlayerAllEffect.java @@ -1,5 +1,3 @@ - - package mage.abilities.effects.common.combat; import mage.abilities.Ability; @@ -30,7 +28,7 @@ public class CantAttackAnyPlayerAllEffect extends RestrictionEffect { sb.append(' ').append(duration.toString()); } } - staticText = sb.toString(); + staticText = sb.toString(); } public CantAttackAnyPlayerAllEffect(final CantAttackAnyPlayerAllEffect effect) { @@ -44,7 +42,7 @@ public class CantAttackAnyPlayerAllEffect extends RestrictionEffect { } @Override - public boolean canAttack(Game game) { + public boolean canAttack(Game game, boolean canUseChooseDialogs) { return false; } diff --git a/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackAnyPlayerSourceEffect.java b/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackAnyPlayerSourceEffect.java index ea135f6e951..0a4365b39f5 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackAnyPlayerSourceEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackAnyPlayerSourceEffect.java @@ -1,5 +1,3 @@ - - package mage.abilities.effects.common.combat; import mage.abilities.Ability; @@ -10,7 +8,7 @@ import mage.game.permanent.Permanent; /** * The source of this effect can't attack any opponent - * + * * @author BetaSteward_at_googlemail.com */ public class CantAttackAnyPlayerSourceEffect extends RestrictionEffect { @@ -29,7 +27,7 @@ public class CantAttackAnyPlayerSourceEffect extends RestrictionEffect { } @Override - public boolean canAttack(Game game) { + public boolean canAttack(Game game, boolean canUseChooseDialogs) { return false; } diff --git a/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackAttachedEffect.java b/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackAttachedEffect.java index 0b39ca6dcae..3b726f3ca0e 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackAttachedEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackAttachedEffect.java @@ -1,5 +1,3 @@ - - package mage.abilities.effects.common.combat; import mage.abilities.Ability; @@ -10,7 +8,6 @@ import mage.game.Game; import mage.game.permanent.Permanent; /** - * * @author LevelX2 */ @@ -31,7 +28,7 @@ public class CantAttackAttachedEffect extends RestrictionEffect { } @Override - public boolean canAttack(Game game) { + public boolean canAttack(Game game, boolean canUseChooseDialogs) { return false; } diff --git a/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackBlockAllEffect.java b/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackBlockAllEffect.java index f6c9d06fb44..7e4db0db576 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackBlockAllEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackBlockAllEffect.java @@ -1,4 +1,3 @@ - package mage.abilities.effects.common.combat; import mage.abilities.Ability; @@ -9,7 +8,6 @@ import mage.game.Game; import mage.game.permanent.Permanent; /** - * * @author LevelX2 */ public class CantAttackBlockAllEffect extends RestrictionEffect { @@ -42,12 +40,12 @@ public class CantAttackBlockAllEffect extends RestrictionEffect { } @Override - public boolean canAttack(Game game) { + public boolean canAttack(Game game, boolean canUseChooseDialogs) { return false; } @Override - public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { return false; } diff --git a/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackBlockAttachedEffect.java b/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackBlockAttachedEffect.java index 9a026d3a93b..883e89d76d4 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackBlockAttachedEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackBlockAttachedEffect.java @@ -1,10 +1,9 @@ - package mage.abilities.effects.common.combat; -import mage.constants.AttachmentType; -import mage.constants.Duration; import mage.abilities.Ability; import mage.abilities.effects.RestrictionEffect; +import mage.constants.AttachmentType; +import mage.constants.Duration; import mage.constants.Outcome; import mage.game.Game; import mage.game.permanent.Permanent; @@ -31,12 +30,12 @@ public class CantAttackBlockAttachedEffect extends RestrictionEffect { } @Override - public boolean canAttack(Game game) { + public boolean canAttack(Game game, boolean canUseChooseDialogs) { return false; } @Override - public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { return false; } diff --git a/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackBlockTargetEffect.java b/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackBlockTargetEffect.java index f572dab3a51..a1f25df21d8 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackBlockTargetEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackBlockTargetEffect.java @@ -1,5 +1,3 @@ - - package mage.abilities.effects.common.combat; import mage.abilities.Ability; @@ -9,7 +7,6 @@ import mage.game.Game; import mage.game.permanent.Permanent; /** - * * @author LevelX2 */ @@ -30,12 +27,12 @@ public class CantAttackBlockTargetEffect extends RestrictionEffect { } @Override - public boolean canAttack(Game game) { + public boolean canAttack(Game game, boolean canUseChooseDialogs) { return false; } @Override - public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { return false; } diff --git a/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackBlockUnlessConditionSourceEffect.java b/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackBlockUnlessConditionSourceEffect.java index 0cdbd5da372..2f035c6f9ad 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackBlockUnlessConditionSourceEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackBlockUnlessConditionSourceEffect.java @@ -1,4 +1,3 @@ - package mage.abilities.effects.common.combat; import mage.abilities.Ability; @@ -9,7 +8,6 @@ import mage.game.Game; import mage.game.permanent.Permanent; /** - * * @author LevelX2 */ public class CantAttackBlockUnlessConditionSourceEffect extends RestrictionEffect { @@ -33,12 +31,12 @@ public class CantAttackBlockUnlessConditionSourceEffect extends RestrictionEffec } @Override - public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { return false; } @Override - public boolean canAttack(Game game) { + public boolean canAttack(Game game, boolean canUseChooseDialogs) { return false; } diff --git a/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackControllerAttachedEffect.java b/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackControllerAttachedEffect.java index 3d7bceb932f..605da5354c3 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackControllerAttachedEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackControllerAttachedEffect.java @@ -31,7 +31,7 @@ public class CantAttackControllerAttachedEffect extends RestrictionEffect { } @Override - public boolean canAttack(Permanent attacker, UUID defenderId, Ability source, Game game) { + public boolean canAttack(Permanent attacker, UUID defenderId, Ability source, Game game, boolean canUseChooseDialogs) { if (defenderId == null) { return true; } diff --git a/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackIfDefenderControlsPermanent.java b/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackIfDefenderControlsPermanent.java index 9c1fdd30ccd..21f0fece9a4 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackIfDefenderControlsPermanent.java +++ b/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackIfDefenderControlsPermanent.java @@ -35,7 +35,7 @@ public class CantAttackIfDefenderControlsPermanent extends RestrictionEffect { } @Override - public boolean canAttack(Permanent attacker, UUID defenderId, Ability source, Game game) { + public boolean canAttack(Permanent attacker, UUID defenderId, Ability source, Game game, boolean canUseChooseDialogs) { if (defenderId == null) { return true; } diff --git a/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackSourceEffect.java b/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackSourceEffect.java index ce43782e8a1..d47f577799d 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackSourceEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackSourceEffect.java @@ -1,15 +1,12 @@ - - package mage.abilities.effects.common.combat; -import mage.constants.Duration; import mage.abilities.Ability; import mage.abilities.effects.RestrictionEffect; +import mage.constants.Duration; import mage.game.Game; import mage.game.permanent.Permanent; /** - * * @author BetaSteward_at_googlemail.com & L_J */ public class CantAttackSourceEffect extends RestrictionEffect { @@ -29,7 +26,7 @@ public class CantAttackSourceEffect extends RestrictionEffect { } @Override - public boolean canAttack(Game game) { + public boolean canAttack(Game game, boolean canUseChooseDialogs) { return false; } diff --git a/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackTargetEffect.java b/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackTargetEffect.java index 641e804152a..c0148d71d5f 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackTargetEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackTargetEffect.java @@ -1,5 +1,3 @@ - - package mage.abilities.effects.common.combat; import mage.abilities.Ability; @@ -10,7 +8,6 @@ import mage.game.Game; import mage.game.permanent.Permanent; /** - * * @author LevelX2 */ public class CantAttackTargetEffect extends RestrictionEffect { @@ -29,7 +26,7 @@ public class CantAttackTargetEffect extends RestrictionEffect { } @Override - public boolean canAttack(Game game) { + public boolean canAttack(Game game, boolean canUseChooseDialogs) { return false; } @@ -40,11 +37,11 @@ public class CantAttackTargetEffect extends RestrictionEffect { @Override public String getText(Mode mode) { - if(staticText != null && !staticText.isEmpty()) { + if (staticText != null && !staticText.isEmpty()) { return staticText; } String text = "target " + mode.getTargets().get(0).getTargetName() + " can't attack"; - if(this.duration == Duration.EndOfTurn) { + if (this.duration == Duration.EndOfTurn) { text += " this turn"; } return text; diff --git a/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackUnlessDefenderControllsPermanent.java b/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackUnlessDefenderControllsPermanent.java index 5f46360b09a..f783c08a55e 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackUnlessDefenderControllsPermanent.java +++ b/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackUnlessDefenderControllsPermanent.java @@ -35,7 +35,7 @@ public class CantAttackUnlessDefenderControllsPermanent extends RestrictionEffec } @Override - public boolean canAttack(Permanent attacker, UUID defenderId, Ability source, Game game) { + public boolean canAttack(Permanent attacker, UUID defenderId, Ability source, Game game, boolean canUseChooseDialogs) { if (defenderId == null) { return true; } diff --git a/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackYouAllEffect.java b/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackYouAllEffect.java index d5da3b814a2..2df6a416e68 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackYouAllEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackYouAllEffect.java @@ -48,7 +48,7 @@ public class CantAttackYouAllEffect extends RestrictionEffect { } @Override - public boolean canAttack(Permanent attacker, UUID defenderId, Ability source, Game game) { + public boolean canAttack(Permanent attacker, UUID defenderId, Ability source, Game game, boolean canUseChooseDialogs) { if (defenderId == null) { return true; } diff --git a/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackYouEffect.java b/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackYouEffect.java index aa3f911ed8d..cdd9e6b0b2b 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackYouEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackYouEffect.java @@ -32,7 +32,7 @@ public class CantAttackYouEffect extends RestrictionEffect { } @Override - public boolean canAttack(Permanent attacker, UUID defenderId, Ability source, Game game) { + public boolean canAttack(Permanent attacker, UUID defenderId, Ability source, Game game, boolean canUseChooseDialogs) { if (defenderId == null) { return true; } diff --git a/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackYouOrPlaneswalkerAllEffect.java b/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackYouOrPlaneswalkerAllEffect.java index 67c01bacbbd..7bc79625d7c 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackYouOrPlaneswalkerAllEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/combat/CantAttackYouOrPlaneswalkerAllEffect.java @@ -38,7 +38,7 @@ public class CantAttackYouOrPlaneswalkerAllEffect extends RestrictionEffect { } @Override - public boolean canAttack(Permanent attacker, UUID defenderId, Ability source, Game game) { + public boolean canAttack(Permanent attacker, UUID defenderId, Ability source, Game game, boolean canUseChooseDialogs) { if (defenderId == null) { return true; } diff --git a/Mage/src/main/java/mage/abilities/effects/common/combat/CantBeBlockedAllEffect.java b/Mage/src/main/java/mage/abilities/effects/common/combat/CantBeBlockedAllEffect.java index 8d88c0fd809..1894ad25e08 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/combat/CantBeBlockedAllEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/combat/CantBeBlockedAllEffect.java @@ -1,15 +1,13 @@ - package mage.abilities.effects.common.combat; -import mage.constants.Duration; import mage.abilities.Ability; import mage.abilities.effects.RestrictionEffect; +import mage.constants.Duration; import mage.filter.FilterPermanent; import mage.game.Game; import mage.game.permanent.Permanent; /** - * * @author North */ public class CantBeBlockedAllEffect extends RestrictionEffect { @@ -37,7 +35,7 @@ public class CantBeBlockedAllEffect extends RestrictionEffect { } @Override - public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { return false; } diff --git a/Mage/src/main/java/mage/abilities/effects/common/combat/CantBeBlockedAttachedEffect.java b/Mage/src/main/java/mage/abilities/effects/common/combat/CantBeBlockedAttachedEffect.java index 6fc49b43cda..dfe28e5b501 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/combat/CantBeBlockedAttachedEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/combat/CantBeBlockedAttachedEffect.java @@ -1,4 +1,3 @@ - package mage.abilities.effects.common.combat; import mage.abilities.Ability; @@ -9,7 +8,6 @@ import mage.game.Game; import mage.game.permanent.Permanent; /** - * * @author North */ public class CantBeBlockedAttachedEffect extends RestrictionEffect { @@ -29,7 +27,7 @@ public class CantBeBlockedAttachedEffect extends RestrictionEffect { } @Override - public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { return false; } diff --git a/Mage/src/main/java/mage/abilities/effects/common/combat/CantBeBlockedByAllSourceEffect.java b/Mage/src/main/java/mage/abilities/effects/common/combat/CantBeBlockedByAllSourceEffect.java index 9e901b02d97..67930d2c521 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/combat/CantBeBlockedByAllSourceEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/combat/CantBeBlockedByAllSourceEffect.java @@ -1,4 +1,3 @@ - package mage.abilities.effects.common.combat; import mage.abilities.Ability; @@ -9,7 +8,6 @@ import mage.game.Game; import mage.game.permanent.Permanent; /** - * * @author LevelX2 */ public class CantBeBlockedByAllSourceEffect extends RestrictionEffect { @@ -36,7 +34,7 @@ public class CantBeBlockedByAllSourceEffect extends RestrictionEffect { } @Override - public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { return !filterBlockedBy.match(blocker, source.getSourceId(), source.getControllerId(), game); } diff --git a/Mage/src/main/java/mage/abilities/effects/common/combat/CantBeBlockedByAllTargetEffect.java b/Mage/src/main/java/mage/abilities/effects/common/combat/CantBeBlockedByAllTargetEffect.java index 7ac30077d08..1448aacf277 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/combat/CantBeBlockedByAllTargetEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/combat/CantBeBlockedByAllTargetEffect.java @@ -1,16 +1,15 @@ - package mage.abilities.effects.common.combat; import mage.abilities.Ability; import mage.abilities.effects.RestrictionEffect; import mage.constants.Duration; -import static mage.constants.Duration.EndOfTurn; import mage.filter.common.FilterCreaturePermanent; import mage.game.Game; import mage.game.permanent.Permanent; +import static mage.constants.Duration.EndOfTurn; + /** - * * @author LevelX2 */ public class CantBeBlockedByAllTargetEffect extends RestrictionEffect { @@ -38,7 +37,7 @@ public class CantBeBlockedByAllTargetEffect extends RestrictionEffect { } @Override - public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { return !filterBlockedBy.match(blocker, source.getSourceId(), source.getControllerId(), game); } diff --git a/Mage/src/main/java/mage/abilities/effects/common/combat/CantBeBlockedByCreaturesAllEffect.java b/Mage/src/main/java/mage/abilities/effects/common/combat/CantBeBlockedByCreaturesAllEffect.java index 30d2965464d..bb0bbc9ffbb 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/combat/CantBeBlockedByCreaturesAllEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/combat/CantBeBlockedByCreaturesAllEffect.java @@ -1,4 +1,3 @@ - package mage.abilities.effects.common.combat; import mage.abilities.Ability; @@ -9,7 +8,6 @@ import mage.game.Game; import mage.game.permanent.Permanent; /** - * * @author LevelX2 */ @@ -23,7 +21,7 @@ public class CantBeBlockedByCreaturesAllEffect extends RestrictionEffect { this.filterCreatures = filterCreatures; this.filterBlockedBy = filterBlockedBy; staticText = new StringBuilder(filterCreatures.getMessage()).append(" can't be blocked ") - .append(filterBlockedBy.getMessage().startsWith("except by") ? "":"by ").append(filterBlockedBy.getMessage()).toString(); + .append(filterBlockedBy.getMessage().startsWith("except by") ? "" : "by ").append(filterBlockedBy.getMessage()).toString(); } public CantBeBlockedByCreaturesAllEffect(final CantBeBlockedByCreaturesAllEffect effect) { @@ -38,7 +36,7 @@ public class CantBeBlockedByCreaturesAllEffect extends RestrictionEffect { } @Override - public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { return !filterBlockedBy.match(blocker, source.getSourceId(), source.getControllerId(), game); } diff --git a/Mage/src/main/java/mage/abilities/effects/common/combat/CantBeBlockedByCreaturesAttachedEffect.java b/Mage/src/main/java/mage/abilities/effects/common/combat/CantBeBlockedByCreaturesAttachedEffect.java index 52c339e1834..83259e873bf 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/combat/CantBeBlockedByCreaturesAttachedEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/combat/CantBeBlockedByCreaturesAttachedEffect.java @@ -1,4 +1,3 @@ - package mage.abilities.effects.common.combat; import mage.abilities.Ability; @@ -36,7 +35,7 @@ public class CantBeBlockedByCreaturesAttachedEffect extends RestrictionEffect { } @Override - public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { return !filter.match(blocker, source.getSourceId(), source.getControllerId(), game); } diff --git a/Mage/src/main/java/mage/abilities/effects/common/combat/CantBeBlockedByCreaturesSourceEffect.java b/Mage/src/main/java/mage/abilities/effects/common/combat/CantBeBlockedByCreaturesSourceEffect.java index e06358e4874..1f9cb728440 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/combat/CantBeBlockedByCreaturesSourceEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/combat/CantBeBlockedByCreaturesSourceEffect.java @@ -1,4 +1,3 @@ - package mage.abilities.effects.common.combat; import mage.abilities.Ability; @@ -33,7 +32,7 @@ public class CantBeBlockedByCreaturesSourceEffect extends RestrictionEffect { } @Override - public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { return !filter.match(blocker, source.getSourceId(), source.getControllerId(), game); } diff --git a/Mage/src/main/java/mage/abilities/effects/common/combat/CantBeBlockedByCreaturesWithGreaterPowerEffect.java b/Mage/src/main/java/mage/abilities/effects/common/combat/CantBeBlockedByCreaturesWithGreaterPowerEffect.java index c2194a80154..96774ecc3ea 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/combat/CantBeBlockedByCreaturesWithGreaterPowerEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/combat/CantBeBlockedByCreaturesWithGreaterPowerEffect.java @@ -1,4 +1,3 @@ - package mage.abilities.effects.common.combat; import mage.abilities.Ability; @@ -8,7 +7,6 @@ import mage.game.Game; import mage.game.permanent.Permanent; /** - * * @author LevelX2 */ public class CantBeBlockedByCreaturesWithGreaterPowerEffect extends RestrictionEffect { @@ -28,7 +26,7 @@ public class CantBeBlockedByCreaturesWithGreaterPowerEffect extends RestrictionE } @Override - public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { return blocker.getPower().getValue() <= attacker.getPower().getValue(); } diff --git a/Mage/src/main/java/mage/abilities/effects/common/combat/CantBeBlockedByCreaturesWithLessPowerEffect.java b/Mage/src/main/java/mage/abilities/effects/common/combat/CantBeBlockedByCreaturesWithLessPowerEffect.java index c60bf27c7ea..4bb2102dc3c 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/combat/CantBeBlockedByCreaturesWithLessPowerEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/combat/CantBeBlockedByCreaturesWithLessPowerEffect.java @@ -1,14 +1,12 @@ - package mage.abilities.effects.common.combat; -import mage.constants.Duration; import mage.abilities.Ability; import mage.abilities.effects.RestrictionEffect; +import mage.constants.Duration; import mage.game.Game; import mage.game.permanent.Permanent; /** - * * @author North */ public class CantBeBlockedByCreaturesWithLessPowerEffect extends RestrictionEffect { @@ -28,7 +26,7 @@ public class CantBeBlockedByCreaturesWithLessPowerEffect extends RestrictionEffe } @Override - public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { return (blocker.getPower().getValue() >= attacker.getPower().getValue()); } diff --git a/Mage/src/main/java/mage/abilities/effects/common/combat/CantBeBlockedByTargetSourceEffect.java b/Mage/src/main/java/mage/abilities/effects/common/combat/CantBeBlockedByTargetSourceEffect.java index cd3c25ed91c..112e1b0dd71 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/combat/CantBeBlockedByTargetSourceEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/combat/CantBeBlockedByTargetSourceEffect.java @@ -1,4 +1,3 @@ - package mage.abilities.effects.common.combat; import mage.abilities.Ability; @@ -10,7 +9,6 @@ import mage.game.permanent.Permanent; import mage.target.Target; /** - * * @author LevelX2 */ @@ -18,7 +16,7 @@ public class CantBeBlockedByTargetSourceEffect extends RestrictionEffect { /** * Target creature(s) cant block the source creature - * + * * @param duration */ @@ -36,7 +34,7 @@ public class CantBeBlockedByTargetSourceEffect extends RestrictionEffect { } @Override - public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { return !this.getTargetPointer().getTargets(game, source).contains(blocker.getId()); } @@ -52,7 +50,7 @@ public class CantBeBlockedByTargetSourceEffect extends RestrictionEffect { } StringBuilder sb = new StringBuilder(); Target target = mode.getTargets().get(0); - if(target.getNumberOfTargets() > 1){ + if (target.getNumberOfTargets() > 1) { if (target.getNumberOfTargets() < target.getMaxNumberOfTargets()) { sb.append("Up to"); } diff --git a/Mage/src/main/java/mage/abilities/effects/common/combat/CantBeBlockedSourceEffect.java b/Mage/src/main/java/mage/abilities/effects/common/combat/CantBeBlockedSourceEffect.java index 04e7af34c22..f9b65a97fc8 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/combat/CantBeBlockedSourceEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/combat/CantBeBlockedSourceEffect.java @@ -1,4 +1,3 @@ - package mage.abilities.effects.common.combat; import mage.abilities.Ability; @@ -8,7 +7,6 @@ import mage.game.Game; import mage.game.permanent.Permanent; /** - * * @author North */ public class CantBeBlockedSourceEffect extends RestrictionEffect { @@ -16,6 +14,7 @@ public class CantBeBlockedSourceEffect extends RestrictionEffect { public CantBeBlockedSourceEffect() { this(Duration.WhileOnBattlefield); } + public CantBeBlockedSourceEffect(Duration duration) { super(duration); this.staticText = "{this} can't be blocked"; @@ -34,7 +33,7 @@ public class CantBeBlockedSourceEffect extends RestrictionEffect { } @Override - public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { return false; } diff --git a/Mage/src/main/java/mage/abilities/effects/common/combat/CantBeBlockedTargetEffect.java b/Mage/src/main/java/mage/abilities/effects/common/combat/CantBeBlockedTargetEffect.java index 15d43ec0eaf..0d2a648f54a 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/combat/CantBeBlockedTargetEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/combat/CantBeBlockedTargetEffect.java @@ -13,7 +13,6 @@ import mage.target.Target; import mage.util.CardUtil; /** - * * @author North */ public class CantBeBlockedTargetEffect extends RestrictionEffect { @@ -47,7 +46,7 @@ public class CantBeBlockedTargetEffect extends RestrictionEffect { } @Override - public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { return !filter.match(blocker, source.getSourceId(), source.getControllerId(), game); } diff --git a/Mage/src/main/java/mage/abilities/effects/common/combat/CantBlockActivateAttachedEffect.java b/Mage/src/main/java/mage/abilities/effects/common/combat/CantBlockActivateAttachedEffect.java index 41f313bd439..53e9a16e0dd 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/combat/CantBlockActivateAttachedEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/combat/CantBlockActivateAttachedEffect.java @@ -1,4 +1,3 @@ - package mage.abilities.effects.common.combat; import mage.abilities.Ability; @@ -8,7 +7,6 @@ import mage.game.Game; import mage.game.permanent.Permanent; /** - * * @author escplan9 (Derek Monturo - dmontur1 at gmail dot com) */ public class CantBlockActivateAttachedEffect extends RestrictionEffect { @@ -26,20 +24,18 @@ public class CantBlockActivateAttachedEffect extends RestrictionEffect { public boolean applies(Permanent permanent, Ability source, Game game) { Permanent enchantment = game.getPermanent(source.getSourceId()); if (enchantment != null && enchantment.getAttachedTo() != null) { - if (permanent.getId().equals(enchantment.getAttachedTo())) { - return true; - } + return permanent.getId().equals(enchantment.getAttachedTo()); } return false; } @Override - public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { return false; } @Override - public boolean canUseActivatedAbilities(Permanent permanent, Ability source, Game game) { + public boolean canUseActivatedAbilities(Permanent permanent, Ability source, Game game, boolean canUseChooseDialogs) { return false; } diff --git a/Mage/src/main/java/mage/abilities/effects/common/combat/CantBlockAllEffect.java b/Mage/src/main/java/mage/abilities/effects/common/combat/CantBlockAllEffect.java index 605aa5ef49a..a75abc49006 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/combat/CantBlockAllEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/combat/CantBlockAllEffect.java @@ -1,4 +1,3 @@ - package mage.abilities.effects.common.combat; import mage.abilities.Ability; @@ -10,7 +9,6 @@ import mage.game.Game; import mage.game.permanent.Permanent; /** - * * @author LevelX2 */ public class CantBlockAllEffect extends RestrictionEffect { @@ -33,7 +31,7 @@ public class CantBlockAllEffect extends RestrictionEffect { } @Override - public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { return false; } diff --git a/Mage/src/main/java/mage/abilities/effects/common/combat/CantBlockAttachedEffect.java b/Mage/src/main/java/mage/abilities/effects/common/combat/CantBlockAttachedEffect.java index 63ef028cfe8..c3a680b7712 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/combat/CantBlockAttachedEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/combat/CantBlockAttachedEffect.java @@ -68,7 +68,7 @@ public class CantBlockAttachedEffect extends RestrictionEffect { } @Override - public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { if (attacker == null) { return true; } diff --git a/Mage/src/main/java/mage/abilities/effects/common/combat/CantBlockAttackActivateAttachedEffect.java b/Mage/src/main/java/mage/abilities/effects/common/combat/CantBlockAttackActivateAttachedEffect.java index e49b50d3260..cc9906fe9b0 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/combat/CantBlockAttackActivateAttachedEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/combat/CantBlockAttackActivateAttachedEffect.java @@ -1,4 +1,3 @@ - package mage.abilities.effects.common.combat; import mage.abilities.Ability; @@ -8,7 +7,6 @@ import mage.game.Game; import mage.game.permanent.Permanent; /** - * * @author LevelX2 */ public class CantBlockAttackActivateAttachedEffect extends RestrictionEffect { @@ -26,25 +24,23 @@ public class CantBlockAttackActivateAttachedEffect extends RestrictionEffect { public boolean applies(Permanent permanent, Ability source, Game game) { Permanent enchantment = game.getPermanent(source.getSourceId()); if (enchantment != null && enchantment.getAttachedTo() != null) { - if (permanent.getId().equals(enchantment.getAttachedTo())) { - return true; - } + return permanent.getId().equals(enchantment.getAttachedTo()); } return false; } @Override - public boolean canAttack(Game game) { + public boolean canAttack(Game game, boolean canUseChooseDialogs) { return false; } @Override - public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { return false; } @Override - public boolean canUseActivatedAbilities(Permanent permanent, Ability source, Game game) { + public boolean canUseActivatedAbilities(Permanent permanent, Ability source, Game game, boolean canUseChooseDialogs) { return false; } diff --git a/Mage/src/main/java/mage/abilities/effects/common/combat/CantBlockCreaturesSourceEffect.java b/Mage/src/main/java/mage/abilities/effects/common/combat/CantBlockCreaturesSourceEffect.java index 10a9518451a..0d888e8caba 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/combat/CantBlockCreaturesSourceEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/combat/CantBlockCreaturesSourceEffect.java @@ -36,7 +36,7 @@ public class CantBlockCreaturesSourceEffect extends RestrictionEffect { } @Override - public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { if (attacker == null) { return true; } diff --git a/Mage/src/main/java/mage/abilities/effects/common/combat/CantBlockSourceEffect.java b/Mage/src/main/java/mage/abilities/effects/common/combat/CantBlockSourceEffect.java index 86e11eecfc7..81d4735b0d6 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/combat/CantBlockSourceEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/combat/CantBlockSourceEffect.java @@ -1,15 +1,12 @@ - - package mage.abilities.effects.common.combat; -import mage.constants.Duration; import mage.abilities.Ability; import mage.abilities.effects.RestrictionEffect; +import mage.constants.Duration; import mage.game.Game; import mage.game.permanent.Permanent; /** - * * @author BetaSteward_at_googlemail.com */ public class CantBlockSourceEffect extends RestrictionEffect { @@ -32,7 +29,7 @@ public class CantBlockSourceEffect extends RestrictionEffect { } @Override - public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { return false; } diff --git a/Mage/src/main/java/mage/abilities/effects/common/combat/CantBlockTargetEffect.java b/Mage/src/main/java/mage/abilities/effects/common/combat/CantBlockTargetEffect.java index cb15d4d9bdc..9a97d0cb11a 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/combat/CantBlockTargetEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/combat/CantBlockTargetEffect.java @@ -1,4 +1,3 @@ - package mage.abilities.effects.common.combat; import mage.abilities.Ability; @@ -11,7 +10,6 @@ import mage.target.Target; import mage.util.CardUtil; /** - * * @author North */ public class CantBlockTargetEffect extends RestrictionEffect { @@ -30,7 +28,7 @@ public class CantBlockTargetEffect extends RestrictionEffect { } @Override - public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { return false; } diff --git a/Mage/src/main/java/mage/abilities/effects/common/combat/CantBlockUnlessYouControlSourceEffect.java b/Mage/src/main/java/mage/abilities/effects/common/combat/CantBlockUnlessYouControlSourceEffect.java index 52b86813cda..cba3316d96d 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/combat/CantBlockUnlessYouControlSourceEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/combat/CantBlockUnlessYouControlSourceEffect.java @@ -1,4 +1,3 @@ - package mage.abilities.effects.common.combat; import mage.abilities.Ability; @@ -9,7 +8,6 @@ import mage.game.Game; import mage.game.permanent.Permanent; /** - * * @author LevelX2 */ public class CantBlockUnlessYouControlSourceEffect extends RestrictionEffect { @@ -33,7 +31,7 @@ public class CantBlockUnlessYouControlSourceEffect extends RestrictionEffect { } @Override - public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { return false; } diff --git a/Mage/src/main/java/mage/abilities/effects/common/continuous/UntapAllDuringEachOtherPlayersUntapStepEffect.java b/Mage/src/main/java/mage/abilities/effects/common/continuous/UntapAllDuringEachOtherPlayersUntapStepEffect.java index 76999b4f193..0b8c11b397c 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/continuous/UntapAllDuringEachOtherPlayersUntapStepEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/continuous/UntapAllDuringEachOtherPlayersUntapStepEffect.java @@ -1,20 +1,14 @@ - package mage.abilities.effects.common.continuous; import mage.abilities.Ability; import mage.abilities.effects.ContinuousEffectImpl; import mage.abilities.effects.RestrictionEffect; -import mage.constants.Duration; -import mage.constants.Layer; -import mage.constants.Outcome; -import mage.constants.PhaseStep; -import mage.constants.SubLayer; +import mage.constants.*; import mage.filter.FilterPermanent; import mage.game.Game; import mage.game.permanent.Permanent; /** - * * @author LevelX2 */ public class UntapAllDuringEachOtherPlayersUntapStepEffect extends ContinuousEffectImpl { @@ -49,7 +43,7 @@ public class UntapAllDuringEachOtherPlayersUntapStepEffect extends ContinuousEff for (Permanent permanent : game.getBattlefield().getAllActivePermanents(filter, source.getControllerId(), game)) { boolean untap = true; for (RestrictionEffect effect : game.getContinuousEffects().getApplicableRestrictionEffects(permanent, game).keySet()) { - untap &= effect.canBeUntapped(permanent, source, game); + untap &= effect.canBeUntapped(permanent, source, game, true); } if (untap) { permanent.untap(game); diff --git a/Mage/src/main/java/mage/abilities/effects/common/continuous/UntapSourceDuringEachOtherPlayersUntapStepEffect.java b/Mage/src/main/java/mage/abilities/effects/common/continuous/UntapSourceDuringEachOtherPlayersUntapStepEffect.java index d1ede8e3a3b..1ea738d7b30 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/continuous/UntapSourceDuringEachOtherPlayersUntapStepEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/continuous/UntapSourceDuringEachOtherPlayersUntapStepEffect.java @@ -1,19 +1,13 @@ - package mage.abilities.effects.common.continuous; import mage.abilities.Ability; import mage.abilities.effects.ContinuousEffectImpl; import mage.abilities.effects.RestrictionEffect; -import mage.constants.Duration; -import mage.constants.Layer; -import mage.constants.Outcome; -import mage.constants.PhaseStep; -import mage.constants.SubLayer; +import mage.constants.*; import mage.game.Game; import mage.game.permanent.Permanent; /** - * * @author fireshoes */ public class UntapSourceDuringEachOtherPlayersUntapStepEffect extends ContinuousEffectImpl { @@ -43,11 +37,11 @@ public class UntapSourceDuringEachOtherPlayersUntapStepEffect extends Continuous && game.getStep() != null && game.getStep().getType() == PhaseStep.UNTAP) { game.getState().setValue(source.getSourceId() + "applied", true); - Permanent permanent = (Permanent) game.getPermanent(source.getSourceId()); + Permanent permanent = game.getPermanent(source.getSourceId()); if (permanent != null) { boolean untap = true; for (RestrictionEffect effect : game.getContinuousEffects().getApplicableRestrictionEffects(permanent, game).keySet()) { - untap &= effect.canBeUntapped(permanent, source, game); + untap &= effect.canBeUntapped(permanent, source, game, true); } if (untap) { permanent.untap(game); diff --git a/Mage/src/main/java/mage/abilities/keyword/FearAbility.java b/Mage/src/main/java/mage/abilities/keyword/FearAbility.java index e7742805976..e380accd372 100644 --- a/Mage/src/main/java/mage/abilities/keyword/FearAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/FearAbility.java @@ -1,18 +1,16 @@ - package mage.abilities.keyword; -import mage.constants.Duration; import mage.abilities.Ability; import mage.abilities.EvasionAbility; import mage.abilities.MageSingleton; import mage.abilities.effects.RestrictionEffect; +import mage.constants.Duration; import mage.game.Game; import mage.game.permanent.Permanent; import java.io.ObjectStreamException; /** - * * @author Loki */ public class FearAbility extends EvasionAbility implements MageSingleton { @@ -59,7 +57,7 @@ class FearEffect extends RestrictionEffect implements MageSingleton { } @Override - public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { return blocker.isArtifact() || blocker.getColor(game).isBlack(); } diff --git a/Mage/src/main/java/mage/abilities/keyword/FlyingAbility.java b/Mage/src/main/java/mage/abilities/keyword/FlyingAbility.java index ddc5aa9cfda..3550730f0b8 100644 --- a/Mage/src/main/java/mage/abilities/keyword/FlyingAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/FlyingAbility.java @@ -1,7 +1,5 @@ - package mage.abilities.keyword; -import java.io.ObjectStreamException; import mage.abilities.Ability; import mage.abilities.EvasionAbility; import mage.abilities.MageSingleton; @@ -12,8 +10,9 @@ import mage.constants.SubType; import mage.game.Game; import mage.game.permanent.Permanent; +import java.io.ObjectStreamException; + /** - * * @author BetaSteward_at_googlemail.com */ public class FlyingAbility extends EvasionAbility implements MageSingleton { @@ -60,7 +59,7 @@ class FlyingEffect extends RestrictionEffect implements MageSingleton { } @Override - public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { return blocker.getAbilities().containsKey(FlyingAbility.getInstance().getId()) || blocker.getAbilities().containsKey(ReachAbility.getInstance().getId()) || (null != game.getContinuousEffects().asThough(blocker.getId(), AsThoughEffectType.BLOCK_DRAGON, source, blocker.getControllerId(), game) diff --git a/Mage/src/main/java/mage/abilities/keyword/HorsemanshipAbility.java b/Mage/src/main/java/mage/abilities/keyword/HorsemanshipAbility.java index a7f515966e0..73b2ce7a35d 100644 --- a/Mage/src/main/java/mage/abilities/keyword/HorsemanshipAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/HorsemanshipAbility.java @@ -1,8 +1,5 @@ - - package mage.abilities.keyword; -import java.io.ObjectStreamException; import mage.abilities.Ability; import mage.abilities.EvasionAbility; import mage.abilities.MageSingleton; @@ -11,13 +8,14 @@ import mage.constants.Duration; import mage.game.Game; import mage.game.permanent.Permanent; +import java.io.ObjectStreamException; + /** - * * @author LevelX2 */ public class HorsemanshipAbility extends EvasionAbility implements MageSingleton { - private static final HorsemanshipAbility instance = new HorsemanshipAbility(); + private static final HorsemanshipAbility instance = new HorsemanshipAbility(); private Object readResolve() throws ObjectStreamException { return instance; @@ -59,7 +57,7 @@ class Horsemanship extends RestrictionEffect implements MageSingleton { } @Override - public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { return blocker.getAbilities().containsKey(HorsemanshipAbility.getInstance().getId()); } diff --git a/Mage/src/main/java/mage/abilities/keyword/IntimidateAbility.java b/Mage/src/main/java/mage/abilities/keyword/IntimidateAbility.java index c8dd8b47915..f48cc7327b8 100644 --- a/Mage/src/main/java/mage/abilities/keyword/IntimidateAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/IntimidateAbility.java @@ -10,18 +10,15 @@ import mage.game.permanent.Permanent; /** * 702.13. Intimidate # - * - * 702.13a Intimidate is an evasion ability. - * - * 702.13b A creature with intimidate can't be blocked except by artifact creatures - * and/or creatures that share a color with it. (See rule 509, "Declare Blockers Step.") # - * - * 702.13c Multiple instances of intimidate on the same creature are redundant. - * - * - * + *

+ * 702.13a Intimidate is an evasion ability. + *

+ * 702.13b A creature with intimidate can't be blocked except by artifact creatures + * and/or creatures that share a color with it. (See rule 509, "Declare Blockers Step.") # + *

+ * 702.13c Multiple instances of intimidate on the same creature are redundant. */ -public class IntimidateAbility extends EvasionAbility implements MageSingleton { +public class IntimidateAbility extends EvasionAbility implements MageSingleton { private static final IntimidateAbility instance = new IntimidateAbility(); public static IntimidateAbility getInstance() { @@ -58,7 +55,7 @@ class IntimidateEffect extends RestrictionEffect implements MageSingleton { } @Override - public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { boolean result = false; if (blocker.isArtifact() && (blocker.isCreature())) { result = true; diff --git a/Mage/src/main/java/mage/abilities/keyword/LandwalkAbility.java b/Mage/src/main/java/mage/abilities/keyword/LandwalkAbility.java index 77a5e0fc74c..dc4c59aee19 100644 --- a/Mage/src/main/java/mage/abilities/keyword/LandwalkAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/LandwalkAbility.java @@ -1,4 +1,3 @@ - package mage.abilities.keyword; import mage.abilities.Ability; @@ -11,7 +10,6 @@ import mage.game.Game; import mage.game.permanent.Permanent; /** - * * @author BetaSteward_at_googlemail.com */ public class LandwalkAbility extends EvasionAbility { @@ -60,7 +58,7 @@ class LandwalkEffect extends RestrictionEffect { } @Override - public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { if (game.getBattlefield().contains(filter, blocker.getControllerId(), 1, game) && null == game.getContinuousEffects().asThough(blocker.getId(), AsThoughEffectType.BLOCK_LANDWALK, source, blocker.getControllerId(), game)) { switch (filter.getMessage()) { diff --git a/Mage/src/main/java/mage/abilities/keyword/ShadowAbility.java b/Mage/src/main/java/mage/abilities/keyword/ShadowAbility.java index 2f55a16b72d..ed1689c4e1c 100644 --- a/Mage/src/main/java/mage/abilities/keyword/ShadowAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/ShadowAbility.java @@ -60,7 +60,7 @@ class ShadowEffect extends RestrictionEffect implements MageSingleton { } @Override - public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { if (attacker == null) { return true; } @@ -68,7 +68,7 @@ class ShadowEffect extends RestrictionEffect implements MageSingleton { } @Override - public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { return blocker.getAbilities().containsKey(ShadowAbility.getInstance().getId()) || null != game.getContinuousEffects().asThough(blocker.getId(), AsThoughEffectType.BLOCK_SHADOW, source, blocker.getControllerId(), game); } diff --git a/Mage/src/main/java/mage/abilities/keyword/SkulkAbility.java b/Mage/src/main/java/mage/abilities/keyword/SkulkAbility.java index 2378f0a9db6..db30ccb96a2 100644 --- a/Mage/src/main/java/mage/abilities/keyword/SkulkAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/SkulkAbility.java @@ -14,7 +14,6 @@ import mage.game.Game; import mage.game.permanent.Permanent; /** - * * @author LevelX2 */ public class SkulkAbility extends StaticAbility { @@ -56,7 +55,7 @@ class SkulkEffect extends RestrictionEffect { } @Override - public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { return blocker.getPower().getValue() <= attacker.getPower().getValue(); } diff --git a/Mage/src/main/java/mage/abilities/keyword/SpaceflightAbility.java b/Mage/src/main/java/mage/abilities/keyword/SpaceflightAbility.java index d125487fd11..ed9223756e6 100644 --- a/Mage/src/main/java/mage/abilities/keyword/SpaceflightAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/SpaceflightAbility.java @@ -57,7 +57,7 @@ class SpaceFlightEffect extends RestrictionEffect implements MageSingleton { } @Override - public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { if (attacker == null) { return true; } @@ -65,7 +65,7 @@ class SpaceFlightEffect extends RestrictionEffect implements MageSingleton { } @Override - public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { return blocker.getAbilities().containsKey(SpaceflightAbility.getInstance().getId()) || blocker.getAbilities().containsKey(CanBlockSpaceflightAbility.getInstance().getId()); } diff --git a/Mage/src/main/java/mage/abilities/keyword/UnleashAbility.java b/Mage/src/main/java/mage/abilities/keyword/UnleashAbility.java index 271f8db3ffd..8e7da9419f5 100644 --- a/Mage/src/main/java/mage/abilities/keyword/UnleashAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/UnleashAbility.java @@ -1,4 +1,3 @@ - package mage.abilities.keyword; import mage.abilities.Ability; @@ -110,15 +109,13 @@ class UnleashRestrictionEffect extends RestrictionEffect { @Override public boolean applies(Permanent permanent, Ability source, Game game) { if (permanent != null && permanent.getId().equals(source.getSourceId())) { - if (permanent.getCounters(game).getCount(CounterType.P1P1) > 0) { - return true; - } + return permanent.getCounters(game).getCount(CounterType.P1P1) > 0; } return false; } @Override - public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { return false; } diff --git a/Mage/src/main/java/mage/game/combat/Combat.java b/Mage/src/main/java/mage/game/combat/Combat.java index 50a10ffeafa..facc9230a0f 100644 --- a/Mage/src/main/java/mage/game/combat/Combat.java +++ b/Mage/src/main/java/mage/game/combat/Combat.java @@ -520,7 +520,7 @@ public class Combat implements Serializable, Copyable { for (Map.Entry> entry : game.getContinuousEffects().getApplicableRestrictionEffects(attackingCreature, game).entrySet()) { RestrictionEffect effect = entry.getKey(); for (Ability ability : entry.getValue()) { - if (!effect.canAttackCheckAfter(numberAttackers, ability, game)) { + if (!effect.canAttackCheckAfter(numberAttackers, ability, game, true)) { MageObject sourceObject = ability.getSourceObject(game); if (attackingPlayer.isHuman()) { game.informPlayer(attackingPlayer, attackingCreature.getIdName() + " can't attack this way (" + (sourceObject == null ? "null" : sourceObject.getIdName()) + ')'); @@ -1178,7 +1178,7 @@ public class Combat implements Serializable, Copyable { for (Map.Entry> entry : game.getContinuousEffects().getApplicableRestrictionEffects(blockingCreature, game).entrySet()) { RestrictionEffect effect = entry.getKey(); for (Ability ability : entry.getValue()) { - if (!effect.canBlockCheckAfter(ability, game)) { + if (!effect.canBlockCheckAfter(ability, game, true)) { if (controller.isHuman()) { game.informPlayer(controller, blockingCreature.getLogName() + " can't block this way."); return false; @@ -1198,7 +1198,7 @@ public class Combat implements Serializable, Copyable { for (Map.Entry> entry : game.getContinuousEffects().getApplicableRestrictionEffects(attackingCreature, game).entrySet()) { RestrictionEffect effect = entry.getKey(); for (Ability ability : entry.getValue()) { - if (!effect.canBeBlockedCheckAfter(attackingCreature, ability, game)) { + if (!effect.canBeBlockedCheckAfter(attackingCreature, ability, game, true)) { if (controller.isHuman()) { game.informPlayer(controller, attackingCreature.getLogName() + " can't be blocked this way."); return false; diff --git a/Mage/src/main/java/mage/game/command/planes/AgyremPlane.java b/Mage/src/main/java/mage/game/command/planes/AgyremPlane.java index 69b767cf39d..e879dd60547 100644 --- a/Mage/src/main/java/mage/game/command/planes/AgyremPlane.java +++ b/Mage/src/main/java/mage/game/command/planes/AgyremPlane.java @@ -150,7 +150,7 @@ class AgyremRestrictionEffect extends RestrictionEffect { } @Override - public boolean canAttack(Permanent attacker, UUID defenderId, Ability source, Game game) { + public boolean canAttack(Permanent attacker, UUID defenderId, Ability source, Game game, boolean canUseChooseDialogs) { if (defenderId == null) { return true; } diff --git a/Mage/src/main/java/mage/game/command/planes/AstralArenaPlane.java b/Mage/src/main/java/mage/game/command/planes/AstralArenaPlane.java index 7c7bf12635a..15260c05f5b 100644 --- a/Mage/src/main/java/mage/game/command/planes/AstralArenaPlane.java +++ b/Mage/src/main/java/mage/game/command/planes/AstralArenaPlane.java @@ -1,9 +1,5 @@ - package mage.game.command.planes; -import java.util.ArrayList; -import java.util.List; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.common.ActivateIfConditionActivatedAbility; import mage.abilities.common.SimpleStaticAbility; @@ -24,8 +20,11 @@ import mage.target.Target; import mage.watchers.common.AttackedThisTurnWatcher; import mage.watchers.common.PlanarRollWatcher; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + /** - * * @author spjspj */ public class AstralArenaPlane extends Plane { @@ -81,15 +80,11 @@ class AstralArenaAttackRestrictionEffect extends RestrictionEffect { if (cPlane == null) { return false; } - if (!cPlane.getName().equalsIgnoreCase("Plane - Astral Arena")) { - return false; - } - - return true; + return cPlane.getName().equalsIgnoreCase("Plane - Astral Arena"); } @Override - public boolean canAttack(Permanent attacker, UUID defenderId, Ability source, Game game) { + public boolean canAttack(Permanent attacker, UUID defenderId, Ability source, Game game, boolean canUseChooseDialogs) { return game.getCombat().getAttackers().isEmpty(); } } @@ -116,14 +111,11 @@ class AstralArenaBlockRestrictionEffect extends RestrictionEffect { if (cPlane == null) { return false; } - if (!cPlane.getName().equalsIgnoreCase("Plane - Astral Arena")) { - return false; - } - return true; + return cPlane.getName().equalsIgnoreCase("Plane - Astral Arena"); } @Override - public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { return game.getCombat().getBlockers().isEmpty(); } } diff --git a/Mage/src/main/java/mage/game/command/planes/HedronFieldsOfAgadeemPlane.java b/Mage/src/main/java/mage/game/command/planes/HedronFieldsOfAgadeemPlane.java index abb010d4dc1..06cb2d410e4 100644 --- a/Mage/src/main/java/mage/game/command/planes/HedronFieldsOfAgadeemPlane.java +++ b/Mage/src/main/java/mage/game/command/planes/HedronFieldsOfAgadeemPlane.java @@ -1,8 +1,5 @@ - package mage.game.command.planes; -import java.util.ArrayList; -import java.util.List; import mage.abilities.Ability; import mage.abilities.common.ActivateIfConditionActivatedAbility; import mage.abilities.common.SimpleStaticAbility; @@ -21,12 +18,14 @@ import mage.filter.predicate.mageobject.PowerPredicate; import mage.game.Game; import mage.game.command.Plane; import mage.game.permanent.Permanent; +import mage.game.permanent.token.EldraziAnnihilatorToken; import mage.target.Target; import mage.watchers.common.PlanarRollWatcher; -import mage.game.permanent.token.EldraziAnnihilatorToken; + +import java.util.ArrayList; +import java.util.List; /** - * * @author spjspj */ public class HedronFieldsOfAgadeemPlane extends Plane { @@ -80,12 +79,12 @@ class HedronFieldsOfAgadeemRestrictionEffect extends RestrictionEffect { } @Override - public boolean canAttack(Game game) { + public boolean canAttack(Game game, boolean canUseChooseDialogs) { return false; } @Override - public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { return false; } diff --git a/Mage/src/main/java/mage/game/command/planes/TazeemPlane.java b/Mage/src/main/java/mage/game/command/planes/TazeemPlane.java index a1bdad2eec1..e1accd02cb6 100644 --- a/Mage/src/main/java/mage/game/command/planes/TazeemPlane.java +++ b/Mage/src/main/java/mage/game/command/planes/TazeemPlane.java @@ -1,8 +1,5 @@ - package mage.game.command.planes; -import java.util.ArrayList; -import java.util.List; import mage.abilities.Ability; import mage.abilities.Mode; import mage.abilities.common.ActivateIfConditionActivatedAbility; @@ -25,8 +22,10 @@ import mage.game.permanent.Permanent; import mage.target.Target; import mage.watchers.common.PlanarRollWatcher; +import java.util.ArrayList; +import java.util.List; + /** - * * @author spjspj */ public class TazeemPlane extends Plane { @@ -83,7 +82,7 @@ class TazeemCantBlockAllEffect extends RestrictionEffect { } @Override - public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { + public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) { return false; } diff --git a/Mage/src/main/java/mage/game/permanent/PermanentImpl.java b/Mage/src/main/java/mage/game/permanent/PermanentImpl.java index 5f0fd78e500..a76df41f434 100644 --- a/Mage/src/main/java/mage/game/permanent/PermanentImpl.java +++ b/Mage/src/main/java/mage/game/permanent/PermanentImpl.java @@ -268,23 +268,23 @@ public abstract class PermanentImpl extends CardImpl implements Permanent { continue; } - if (!entry.getKey().canAttack(game) || !entry.getKey().canAttack(this, null, ability, game)) { + if (!entry.getKey().canAttack(game, false) || !entry.getKey().canAttack(this, null, ability, game, false)) { restrictHints.add(HintUtils.prepareText("Can't attack" + addSourceObjectName(game, ability), null, HintUtils.HINT_ICON_RESTRICT)); } - if (!entry.getKey().canBlock(null, this, ability, game)) { + if (!entry.getKey().canBlock(null, this, ability, game, false)) { restrictHints.add(HintUtils.prepareText("Can't block" + addSourceObjectName(game, ability), null, HintUtils.HINT_ICON_RESTRICT)); } - if (!entry.getKey().canBeUntapped(this, ability, game)) { + if (!entry.getKey().canBeUntapped(this, ability, game, false)) { restrictHints.add(HintUtils.prepareText("Can't untapped" + addSourceObjectName(game, ability), null, HintUtils.HINT_ICON_RESTRICT)); } - if (!entry.getKey().canUseActivatedAbilities(this, ability, game)) { + if (!entry.getKey().canUseActivatedAbilities(this, ability, game, false)) { restrictHints.add(HintUtils.prepareText("Can't use activated abilities" + addSourceObjectName(game, ability), null, HintUtils.HINT_ICON_RESTRICT)); } - if (!entry.getKey().canTransform(this, ability, game)) { + if (!entry.getKey().canTransform(this, ability, game, false)) { restrictHints.add(HintUtils.prepareText("Can't transform" + addSourceObjectName(game, ability), null, HintUtils.HINT_ICON_RESTRICT)); } } @@ -1190,11 +1190,11 @@ public abstract class PermanentImpl extends CardImpl implements Permanent { private boolean canAttackCheckRestrictionEffects(UUID defenderId, Game game) { //20101001 - 508.1c for (Map.Entry> effectEntry : game.getContinuousEffects().getApplicableRestrictionEffects(this, game).entrySet()) { - if (!effectEntry.getKey().canAttack(game)) { + if (!effectEntry.getKey().canAttack(game, true)) { return false; } for (Ability ability : effectEntry.getValue()) { - if (!effectEntry.getKey().canAttack(this, defenderId, ability, game)) { + if (!effectEntry.getKey().canAttack(this, defenderId, ability, game, true)) { return false; } } @@ -1219,7 +1219,7 @@ public abstract class PermanentImpl extends CardImpl implements Permanent { // check blocker restrictions for (Map.Entry> entry : game.getContinuousEffects().getApplicableRestrictionEffects(this, game).entrySet()) { for (Ability ability : entry.getValue()) { - if (!entry.getKey().canBlock(attacker, this, ability, game)) { + if (!entry.getKey().canBlock(attacker, this, ability, game, true)) { return false; } } @@ -1227,7 +1227,7 @@ public abstract class PermanentImpl extends CardImpl implements Permanent { // check also attacker's restriction effects for (Map.Entry> restrictionEntry : game.getContinuousEffects().getApplicableRestrictionEffects(attacker, game).entrySet()) { for (Ability ability : restrictionEntry.getValue()) { - if (!restrictionEntry.getKey().canBeBlocked(attacker, this, ability, game)) { + if (!restrictionEntry.getKey().canBeBlocked(attacker, this, ability, game, true)) { return false; } } @@ -1245,7 +1245,7 @@ public abstract class PermanentImpl extends CardImpl implements Permanent { for (Map.Entry> entry : game.getContinuousEffects().getApplicableRestrictionEffects(this, game).entrySet()) { RestrictionEffect effect = entry.getKey(); for (Ability ability : entry.getValue()) { - if (!effect.canBlock(null, this, ability, game)) { + if (!effect.canBlock(null, this, ability, game, true)) { return false; } } @@ -1266,7 +1266,7 @@ public abstract class PermanentImpl extends CardImpl implements Permanent { for (Map.Entry> entry : game.getContinuousEffects().getApplicableRestrictionEffects(this, game).entrySet()) { RestrictionEffect effect = entry.getKey(); for (Ability ability : entry.getValue()) { - if (!effect.canUseActivatedAbilities(this, ability, game)) { + if (!effect.canUseActivatedAbilities(this, ability, game, true)) { return false; } } @@ -1280,7 +1280,7 @@ public abstract class PermanentImpl extends CardImpl implements Permanent { for (Map.Entry> entry : game.getContinuousEffects().getApplicableRestrictionEffects(this, game).entrySet()) { RestrictionEffect effect = entry.getKey(); for (Ability ability : entry.getValue()) { - if (!effect.canTransform(this, ability, game)) { + if (!effect.canTransform(this, ability, game, true)) { return false; } } diff --git a/Mage/src/main/java/mage/players/PlayerImpl.java b/Mage/src/main/java/mage/players/PlayerImpl.java index 29a9cac92ae..b9e6937c9d5 100644 --- a/Mage/src/main/java/mage/players/PlayerImpl.java +++ b/Mage/src/main/java/mage/players/PlayerImpl.java @@ -1645,7 +1645,7 @@ public abstract class PlayerImpl implements Player, Serializable { for (Permanent permanent : game.getBattlefield().getAllActivePermanents(playerId)) { boolean untap = true; for (RestrictionEffect effect : game.getContinuousEffects().getApplicableRestrictionEffects(permanent, game).keySet()) { - untap &= effect.canBeUntapped(permanent, null, game); + untap &= effect.canBeUntapped(permanent, null, game, true); } if (untap) { canBeUntapped.add(permanent); @@ -1752,7 +1752,7 @@ public abstract class PlayerImpl implements Player, Serializable { for (Permanent permanent : game.getBattlefield().getAllActivePermanents(playerId)) { boolean untap = true; for (RestrictionEffect effect : game.getContinuousEffects().getApplicableRestrictionEffects(permanent, game).keySet()) { - untap &= effect.canBeUntapped(permanent, null, game); + untap &= effect.canBeUntapped(permanent, null, game, true); } if (untap) { permanent.untap(game);