diff --git a/Mage.Sets/src/mage/cards/a/ArtisticRefusal.java b/Mage.Sets/src/mage/cards/a/ArtisticRefusal.java index eb08568eda7..d27275cb7f3 100644 --- a/Mage.Sets/src/mage/cards/a/ArtisticRefusal.java +++ b/Mage.Sets/src/mage/cards/a/ArtisticRefusal.java @@ -24,7 +24,7 @@ public final class ArtisticRefusal extends CardImpl { // Choose one or both -- this.getSpellAbility().getModes().setMinModes(1); - this.getSpellAbility().getModes().setMinModes(2); + this.getSpellAbility().getModes().setMaxModes(2); // * Counter target spell. this.getSpellAbility().addEffect(new CounterTargetEffect()); diff --git a/Mage/src/main/java/mage/abilities/AbilityImpl.java b/Mage/src/main/java/mage/abilities/AbilityImpl.java index 1b8ab1f5e8a..527daef39ca 100644 --- a/Mage/src/main/java/mage/abilities/AbilityImpl.java +++ b/Mage/src/main/java/mage/abilities/AbilityImpl.java @@ -937,6 +937,21 @@ public abstract class AbilityImpl implements Ability { @Override public void addMode(Mode mode) { getModes().addMode(mode); + + // runtime check: modes must have good settings + int currentMin = getModes().getMinModes(); + int currentMax = getModes().getMaxModes(null, null); + boolean isFine = true; + if (currentMin < 0 || currentMax < 0) { + isFine = false; + } + if (currentMin > 0 && currentMin > currentMax) { + isFine = false; + } + if (!isFine) { + throw new IllegalArgumentException(String.format("Wrong code usage: you must setup correct min and max modes (%d, %d) for %s", + currentMin, currentMax, this)); + } } @Override diff --git a/Mage/src/main/java/mage/abilities/Modes.java b/Mage/src/main/java/mage/abilities/Modes.java index 3be3e125bdb..06486c574c9 100644 --- a/Mage/src/main/java/mage/abilities/Modes.java +++ b/Mage/src/main/java/mage/abilities/Modes.java @@ -490,7 +490,8 @@ public class Modes extends LinkedHashMap { } else if (this.getMinModes() == this.getMaxModes(null, null)) { sb.append(CardUtil.numberToText(this.getMinModes())); } else { - throw new UnsupportedOperationException("no text available for this selection of min and max modes"); + throw new UnsupportedOperationException(String.format("no text available for this selection of min and max modes (%d and %d)", + this.getMinModes(), this.getMaxModes(null, null))); } } else { sb.append(chooseText);