From 1144bf3b4f1f6c62331ca8b3adc9f4c1f83616b4 Mon Sep 17 00:00:00 2001 From: Evan Kranzler Date: Wed, 16 Jan 2019 18:20:36 -0500 Subject: [PATCH] finished adding support for multiple copies of Krark's Thumb --- Mage.Sets/src/mage/cards/k/KrarksThumb.java | 2 +- .../main/java/mage/players/PlayerImpl.java | 25 +++++++++++++++++-- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/Mage.Sets/src/mage/cards/k/KrarksThumb.java b/Mage.Sets/src/mage/cards/k/KrarksThumb.java index a0dbcc70614..294cfec83ce 100644 --- a/Mage.Sets/src/mage/cards/k/KrarksThumb.java +++ b/Mage.Sets/src/mage/cards/k/KrarksThumb.java @@ -55,7 +55,7 @@ class KrarksThumbEffect extends ContinuousEffectImpl { public boolean apply(Layer layer, SubLayer sublayer, Ability source, Game game) { Player controller = game.getPlayer(source.getControllerId()); if (controller != null) { - controller.setExtraCoinFlips(controller.getExtraCoinFlips() + 1); + controller.setExtraCoinFlips(2 * controller.getExtraCoinFlips()); } return true; } diff --git a/Mage/src/main/java/mage/players/PlayerImpl.java b/Mage/src/main/java/mage/players/PlayerImpl.java index 08c8b0d6bc5..c603706f904 100644 --- a/Mage/src/main/java/mage/players/PlayerImpl.java +++ b/Mage/src/main/java/mage/players/PlayerImpl.java @@ -2587,13 +2587,34 @@ public abstract class PlayerImpl implements Player, Serializable { boolean chosen = false; if (winnable) { chosen = this.chooseUse(Outcome.Benefit, "Heads or tails?", "", "Heads", "Tails", source, game); - game.informPlayers(getLogName() + " chose " + (chosen ? "heads." : "tails.")); + game.informPlayers(getLogName() + " chose " + CardUtil.booleanToFlipName(chosen)); } boolean result = RandomUtil.nextBoolean(); FlipCoinEvent event = new FlipCoinEvent(playerId, source.getSourceId(), result, chosen, winnable); event.addAppliedEffects(appliedEffects); game.replaceEvent(event); - game.informPlayers(getLogName() + " got " + (event.getResult() ? "heads" : "tails")); + if (extraCoinFlips > 1) { + boolean canChooseHeads = event.getResult(); + boolean canChooseTails = !event.getResult(); + boolean tempFlip; + for (int i = 0; i < extraCoinFlips; i++) { + tempFlip = RandomUtil.nextBoolean(); + canChooseHeads = canChooseHeads || tempFlip; + canChooseTails = canChooseTails || !tempFlip; + game.informPlayers(getLogName() + " flipped " + CardUtil.booleanToFlipName(tempFlip)); + } + if (canChooseHeads && canChooseTails) { + event.setResult(chooseUse(Outcome.Benefit, "Choose which flip to keep", + (event.isWinnable() ? "(You called " + event.getChosenName() + ")" : null), + "Heads", "Tails", source, game + )); + } else if (canChooseHeads) { + event.setResult(true); + } else { + event.setResult(false); + } + } + game.informPlayers(getLogName() + " got " + CardUtil.booleanToFlipName(event.getResult())); if (event.isWinnable()) { game.informPlayers(getLogName() + " " + (event.getResult() == event.getChosen() ? "won" : "lost") + " the flip"); }