From 3b19e3db35cfe1ff56c6bfb307fb42670b5b688d Mon Sep 17 00:00:00 2001 From: Oleg Agafonov <jaydi85@gmail.com> Date: Wed, 1 Jul 2020 13:15:39 +0400 Subject: [PATCH] * AI: fixed that computer can't play some cards correctly (Ad Nauseam, Crazed Firecat, Fiery Gambit); --- Mage.Sets/src/mage/cards/a/AdNauseam.java | 24 ++++++++++++------- Mage.Sets/src/mage/cards/c/CrazedFirecat.java | 6 ++++- Mage.Sets/src/mage/cards/f/FieryGambit.java | 13 ++++++---- 3 files changed, 29 insertions(+), 14 deletions(-) diff --git a/Mage.Sets/src/mage/cards/a/AdNauseam.java b/Mage.Sets/src/mage/cards/a/AdNauseam.java index 8242867b1d..743144cf13 100644 --- a/Mage.Sets/src/mage/cards/a/AdNauseam.java +++ b/Mage.Sets/src/mage/cards/a/AdNauseam.java @@ -1,7 +1,5 @@ - package mage.cards.a; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.effects.OneShotEffect; import mage.cards.Card; @@ -14,6 +12,8 @@ import mage.constants.Zone; import mage.game.Game; import mage.players.Player; +import java.util.UUID; + /** * @author North */ @@ -62,13 +62,19 @@ class AdNauseamEffect extends OneShotEffect { } while (controller.chooseUse(outcome, message, source, game) && controller.getLibrary().hasCards()) { Card card = controller.getLibrary().getFromTop(game); - if (card != null) { - controller.moveCards(card, Zone.HAND, source, game); - int cmc = card.getConvertedManaCost(); - if (cmc > 0) { - controller.loseLife(cmc, game, false); - } - controller.revealCards(sourceCard.getIdName() + " put into hand", new CardsImpl(card), game); + if (card == null) { + break; + } + controller.moveCards(card, Zone.HAND, source, game); + int cmc = card.getConvertedManaCost(); + if (cmc > 0) { + controller.loseLife(cmc, game, false); + } + controller.revealCards(sourceCard.getIdName() + " put into hand", new CardsImpl(card), game); + + // AI workaround to stop infinite choose (only one card allows) + if (!controller.isHuman() && !controller.isTestMode()) { + break; } } return true; diff --git a/Mage.Sets/src/mage/cards/c/CrazedFirecat.java b/Mage.Sets/src/mage/cards/c/CrazedFirecat.java index a19b1e8233..aacbd36d13 100644 --- a/Mage.Sets/src/mage/cards/c/CrazedFirecat.java +++ b/Mage.Sets/src/mage/cards/c/CrazedFirecat.java @@ -1,4 +1,3 @@ - package mage.cards.c; import mage.MageInt; @@ -68,6 +67,11 @@ class CrazedFirecatEffect extends OneShotEffect { int flipsWon = 0; while (controller.flipCoin(source, game, true)) { flipsWon++; + + // AI workaround to stop on good condition + if (!controller.isHuman() && !controller.isTestMode() && flipsWon >= 2) { + break; + } } sourceObject.addCounters(CounterType.P1P1.createInstance(flipsWon), source, game); return true; diff --git a/Mage.Sets/src/mage/cards/f/FieryGambit.java b/Mage.Sets/src/mage/cards/f/FieryGambit.java index e0e22ba8fe..748885ddad 100644 --- a/Mage.Sets/src/mage/cards/f/FieryGambit.java +++ b/Mage.Sets/src/mage/cards/f/FieryGambit.java @@ -1,7 +1,5 @@ - package mage.cards.f; -import java.util.UUID; import mage.MageObject; import mage.abilities.Ability; import mage.abilities.effects.OneShotEffect; @@ -17,14 +15,15 @@ import mage.game.permanent.Permanent; import mage.players.Player; import mage.target.common.TargetCreaturePermanent; +import java.util.UUID; + /** - * * @author LevelX2 */ public final class FieryGambit extends CardImpl { public FieryGambit(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{R}"); + super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{R}"); // Flip a coin until you lose a flip or choose to stop flipping. If you lose a flip, Fiery Gambit has no effect. If you win one or more flips, Fiery Gambit deals 3 damage to target creature. If you win two or more flips, Fiery Gambit deals 6 damage to each opponent. If you win three or more flips, draw nine cards and untap all lands you control. this.getSpellAbility().addEffect(new FieryGambitEffect()); @@ -71,6 +70,12 @@ class FieryGambitEffect extends OneShotEffect { controllerStopped = true; break; } + + // AI workaround to stop flips on good result + if (!controller.isHuman() && !controller.isTestMode() && flipsWon >= 3) { + controllerStopped = true; + break; + } } if (controllerStopped) { Permanent creature = game.getPermanent(getTargetPointer().getFirst(game, source));