diff --git a/Mage.Sets/src/mage/cards/c/CosimaGodOfTheVoyage.java b/Mage.Sets/src/mage/cards/c/CosimaGodOfTheVoyage.java index 22f5b51e96d..288d1318c13 100644 --- a/Mage.Sets/src/mage/cards/c/CosimaGodOfTheVoyage.java +++ b/Mage.Sets/src/mage/cards/c/CosimaGodOfTheVoyage.java @@ -102,8 +102,13 @@ class CosimaGodOfTheVoyageEffect extends OneShotEffect { return false; } Card card = game.getCard(permanent.getId()); - player.moveCards(permanent, Zone.EXILED, source, game); - if (card == null || game.getState().getZone(card.getId()) != Zone.EXILED) { + if (card == null) { + return false; + } + + String exileName = "Exiled to the voyage"; + player.moveCardsToExile(permanent, source, game, true, source.getSourceId(), exileName); + if (game.getState().getZone(card.getId()) != Zone.EXILED) { return true; } game.addEffect(new CosimaGodOfTheVoyageGainAbilityEffect(new MageObjectReference(card, game)), source); @@ -206,19 +211,29 @@ class CosimaGodOfTheVoyageReturnEffect extends OneShotEffect { if (player == null || card == null) { return false; } - if (player.chooseUse(outcome, "Add a voyage counter?", source, game) + + // AI hint to return card on 2+ counters + int currentCount = card.getCounters(game).getCount(CounterType.VOYAGE); + Outcome aiOutcome = (currentCount >= 2) ? Outcome.Benefit : Outcome.Detriment; + + if (player.chooseUse(aiOutcome, "Add a voyage counter (current: " + currentCount + ")?", null, + "Yes, add counter", "No, return to battlefield", source, game) && card.addCounters(CounterType.VOYAGE.createInstance(), player.getId(), source, game)) { return true; } - int counterCount = card.getCounters(game).getCount(CounterType.VOYAGE); + + // return to battle + int newCount = card.getCounters(game).getCount(CounterType.VOYAGE); player.moveCards(card, Zone.BATTLEFIELD, source, game); - if (counterCount < 1) { + if (newCount < 1) { return true; } - player.drawCards(counterCount, source, game); + + // draw and boost + player.drawCards(newCount, source, game); Permanent permanent = game.getPermanent(card.getId()); if (permanent != null) { - permanent.addCounters(CounterType.P1P1.createInstance(counterCount), player.getId(), source, game); + permanent.addCounters(CounterType.P1P1.createInstance(newCount), player.getId(), source, game); } return true; } diff --git a/Mage/src/main/java/mage/cards/ModalDoubleFacesCard.java b/Mage/src/main/java/mage/cards/ModalDoubleFacesCard.java index ee69abe5f67..b47231adca0 100644 --- a/Mage/src/main/java/mage/cards/ModalDoubleFacesCard.java +++ b/Mage/src/main/java/mage/cards/ModalDoubleFacesCard.java @@ -7,7 +7,9 @@ import mage.abilities.*; import mage.abilities.costs.mana.ManaCost; import mage.abilities.costs.mana.ManaCosts; import mage.constants.*; +import mage.counters.Counters; import mage.game.Game; +import mage.game.GameState; import mage.game.events.ZoneChangeEvent; import mage.util.CardUtil; import mage.util.SubTypes; @@ -111,6 +113,16 @@ public abstract class ModalDoubleFacesCard extends CardImpl { rightHalfCard.updateZoneChangeCounter(game, event); } + @Override + public Counters getCounters(Game game) { + return leftHalfCard.getCounters(game.getState()); + } + + @Override + public Counters getCounters(GameState state) { + return state.getCardState(leftHalfCard.getId()).getCounters(); + } + @Override public boolean cast(Game game, Zone fromZone, SpellAbility ability, UUID controllerId) { switch (ability.getSpellAbilityType()) {