From c98671282f11485d886286e57e826e20da88e08d Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Tue, 1 Nov 2016 23:36:42 +0100 Subject: [PATCH] * Cursed Rack - Fixed that the hand size modification was applied to the controller of the cursed rack instead of the chosen opponent. --- .../src/main/java/mage/server/Main.java | 1 - Mage.Sets/src/mage/cards/c/CursedRack.java | 47 +++++++++++++++---- 2 files changed, 39 insertions(+), 9 deletions(-) diff --git a/Mage.Server/src/main/java/mage/server/Main.java b/Mage.Server/src/main/java/mage/server/Main.java index f6c461cfd71..0da06d742ab 100644 --- a/Mage.Server/src/main/java/mage/server/Main.java +++ b/Mage.Server/src/main/java/mage/server/Main.java @@ -350,7 +350,6 @@ public class Main { @Override public void setInvoker(ServerInvoker invoker) { - logger.info("Invoker version: " + ((BisocketServerInvoker) invoker).getVersion()); ((BisocketServerInvoker) invoker).setSecondaryBindPort(ConfigSettings.getInstance().getSecondaryBindPort()); ((BisocketServerInvoker) invoker).setBacklog(ConfigSettings.getInstance().getBacklogSize()); ((BisocketServerInvoker) invoker).setNumAcceptThreads(ConfigSettings.getInstance().getNumAcceptThreads()); diff --git a/Mage.Sets/src/mage/cards/c/CursedRack.java b/Mage.Sets/src/mage/cards/c/CursedRack.java index bf5e3e11161..bd7b2718c88 100644 --- a/Mage.Sets/src/mage/cards/c/CursedRack.java +++ b/Mage.Sets/src/mage/cards/c/CursedRack.java @@ -29,15 +29,20 @@ package mage.cards.c; import java.util.UUID; import mage.abilities.Ability; +import mage.abilities.common.AsEntersBattlefieldAbility; import mage.abilities.common.SimpleStaticAbility; -import mage.abilities.effects.Effect; -import mage.abilities.effects.common.continuous.MaximumHandSizeControllerEffect; +import mage.abilities.effects.ContinuousEffectImpl; +import mage.abilities.effects.common.ChooseOpponentEffect; 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.SubLayer; import mage.constants.Zone; -import mage.target.common.TargetOpponent; +import mage.game.Game; +import mage.players.Player; /** * @@ -46,14 +51,12 @@ import mage.target.common.TargetOpponent; public class CursedRack extends CardImpl { public CursedRack(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}"); + super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}"); // As Cursed Rack enters the battlefield, choose an opponent. + this.addAbility(new AsEntersBattlefieldAbility(new ChooseOpponentEffect(Outcome.Detriment))); // The chosen player's maximum hand size is four. - Effect effect = new MaximumHandSizeControllerEffect(4, Duration.WhileOnBattlefield, MaximumHandSizeControllerEffect.HandSizeModification.SET); - Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, effect); - ability.addTarget(new TargetOpponent()); - this.addAbility(ability); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CursedRackHandSizeEffect())); } @@ -66,3 +69,31 @@ public class CursedRack extends CardImpl { return new CursedRack(this); } } + +class CursedRackHandSizeEffect extends ContinuousEffectImpl { + + public CursedRackHandSizeEffect() { + super(Duration.WhileOnBattlefield, Layer.PlayerEffects, SubLayer.NA, Outcome.Benefit); + staticText = "The chosen player's maximum hand size is four"; + } + + public CursedRackHandSizeEffect(final CursedRackHandSizeEffect effect) { + super(effect); + } + + @Override + public CursedRackHandSizeEffect copy() { + return new CursedRackHandSizeEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + UUID playerId = (UUID) game.getState().getValue(source.getSourceId() + ChooseOpponentEffect.VALUE_KEY); + Player opponent = game.getPlayer(playerId); + if (opponent != null) { + opponent.setMaxHandSize(4); + return true; + } + return false; + } +}