From 06c9d7941c82addb3498f309d3d88120f0d8d020 Mon Sep 17 00:00:00 2001 From: Oleg Agafonov Date: Tue, 14 May 2019 15:03:25 +0400 Subject: [PATCH] * Ascend ability - added card hint with permanents count; --- .../src/mage/cards/e/ExpelFromOrazca.java | 11 +++--- Mage.Sets/src/mage/cards/g/GoldenDemise.java | 6 ++-- .../src/mage/cards/p/PrideOfConquerors.java | 4 ++- .../mage/cards/s/SecretsOfTheGoldenCity.java | 4 ++- Mage.Sets/src/mage/cards/v/VonasHunger.java | 4 ++- .../common/PermanentsYouControlCount.java | 35 +++++++++++++++++++ .../hint/common/PermanentsYouControlHint.java | 26 ++++++++++++++ 7 files changed, 81 insertions(+), 9 deletions(-) create mode 100644 Mage/src/main/java/mage/abilities/dynamicvalue/common/PermanentsYouControlCount.java create mode 100644 Mage/src/main/java/mage/abilities/hint/common/PermanentsYouControlHint.java diff --git a/Mage.Sets/src/mage/cards/e/ExpelFromOrazca.java b/Mage.Sets/src/mage/cards/e/ExpelFromOrazca.java index 8feec699189..9c979fb627b 100644 --- a/Mage.Sets/src/mage/cards/e/ExpelFromOrazca.java +++ b/Mage.Sets/src/mage/cards/e/ExpelFromOrazca.java @@ -1,10 +1,10 @@ - package mage.cards.e; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.keyword.AscendEffect; +import mage.abilities.hint.common.CitysBlessingHint; +import mage.abilities.hint.common.PermanentsYouControlHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -16,8 +16,9 @@ import mage.game.permanent.Permanent; import mage.players.Player; import mage.target.common.TargetNonlandPermanent; +import java.util.UUID; + /** - * * @author LevelX2 */ public final class ExpelFromOrazca extends CardImpl { @@ -25,8 +26,10 @@ public final class ExpelFromOrazca extends CardImpl { public ExpelFromOrazca(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{U}"); - // Ascend + // Ascend (If you control ten or more permanents, you get the city’s blessing for the rest of the game.) this.getSpellAbility().addEffect(new AscendEffect()); + this.getSpellAbility().addHint(CitysBlessingHint.instance); + this.getSpellAbility().addHint(PermanentsYouControlHint.instance); // Return target nonland permanent to its owner's hand. If you have the city's blessing, you may put that permanent on top of its owner's library instead. this.getSpellAbility().addEffect(new ExpelFromOrazcaEffect()); diff --git a/Mage.Sets/src/mage/cards/g/GoldenDemise.java b/Mage.Sets/src/mage/cards/g/GoldenDemise.java index 91641ac77da..f4a14a8c98a 100644 --- a/Mage.Sets/src/mage/cards/g/GoldenDemise.java +++ b/Mage.Sets/src/mage/cards/g/GoldenDemise.java @@ -5,6 +5,7 @@ import mage.abilities.decorator.ConditionalContinuousEffect; import mage.abilities.effects.common.continuous.BoostAllEffect; import mage.abilities.effects.keyword.AscendEffect; import mage.abilities.hint.common.CitysBlessingHint; +import mage.abilities.hint.common.PermanentsYouControlHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -23,8 +24,10 @@ public final class GoldenDemise extends CardImpl { public GoldenDemise(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{B}{B}"); - // Ascend + // Ascend (If you control ten or more permanents, you get the city’s blessing for the rest of the game.) this.getSpellAbility().addEffect(new AscendEffect()); + this.getSpellAbility().addHint(CitysBlessingHint.instance); + this.getSpellAbility().addHint(PermanentsYouControlHint.instance); // All creatures get -2/-2 until end of turn. If you have the city's blessing, instead only creatures your opponents control get -2/-2 until end of turn. FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures your opponents control"); @@ -35,7 +38,6 @@ public final class GoldenDemise extends CardImpl { CitysBlessingCondition.instance, "All creatures get -2/-2 until end of turn. If you have the city's blessing, instead only creatures your opponents control get -2/-2 until end of turn" )); - this.getSpellAbility().addHint(CitysBlessingHint.instance); } public GoldenDemise(final GoldenDemise card) { diff --git a/Mage.Sets/src/mage/cards/p/PrideOfConquerors.java b/Mage.Sets/src/mage/cards/p/PrideOfConquerors.java index 00b7eefb386..02a41fe5383 100644 --- a/Mage.Sets/src/mage/cards/p/PrideOfConquerors.java +++ b/Mage.Sets/src/mage/cards/p/PrideOfConquerors.java @@ -5,6 +5,7 @@ import mage.abilities.decorator.ConditionalContinuousEffect; import mage.abilities.effects.common.continuous.BoostControlledEffect; import mage.abilities.effects.keyword.AscendEffect; import mage.abilities.hint.common.CitysBlessingHint; +import mage.abilities.hint.common.PermanentsYouControlHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -22,12 +23,13 @@ public final class PrideOfConquerors extends CardImpl { // Ascend (If you control ten or more permanents, you get the city's blessing for the rest of the game.) this.getSpellAbility().addEffect(new AscendEffect()); + this.getSpellAbility().addHint(CitysBlessingHint.instance); + this.getSpellAbility().addHint(PermanentsYouControlHint.instance); // Creatures you control get +1/+1 until end of turn. If you have the city's blessing, those creatures get +2/+2 until end of turn instead. this.getSpellAbility().addEffect(new ConditionalContinuousEffect(new BoostControlledEffect(2, 2, Duration.EndOfTurn), new BoostControlledEffect(1, 1, Duration.EndOfTurn), CitysBlessingCondition.instance, "Creatures you control get +1/+1 until end of turn. If you have the city's blessing, those creatures get +2/+2 until end of turn instead")); - this.getSpellAbility().addHint(CitysBlessingHint.instance); } public PrideOfConquerors(final PrideOfConquerors card) { diff --git a/Mage.Sets/src/mage/cards/s/SecretsOfTheGoldenCity.java b/Mage.Sets/src/mage/cards/s/SecretsOfTheGoldenCity.java index 705800cd94b..02245199ab0 100644 --- a/Mage.Sets/src/mage/cards/s/SecretsOfTheGoldenCity.java +++ b/Mage.Sets/src/mage/cards/s/SecretsOfTheGoldenCity.java @@ -5,6 +5,7 @@ import mage.abilities.decorator.ConditionalOneShotEffect; import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.keyword.AscendEffect; import mage.abilities.hint.common.CitysBlessingHint; +import mage.abilities.hint.common.PermanentsYouControlHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -21,6 +22,8 @@ public final class SecretsOfTheGoldenCity extends CardImpl { // Ascend this.getSpellAbility().addEffect(new AscendEffect()); + this.getSpellAbility().addHint(CitysBlessingHint.instance); + this.getSpellAbility().addHint(PermanentsYouControlHint.instance); // Draw two cards. If you have the city's blessing, draw three cards instead. this.getSpellAbility().addEffect(new ConditionalOneShotEffect( @@ -28,7 +31,6 @@ public final class SecretsOfTheGoldenCity extends CardImpl { new DrawCardSourceControllerEffect(2), CitysBlessingCondition.instance, "Draw two cards. If you have the city's blessing, draw three cards instead")); - this.getSpellAbility().addHint(CitysBlessingHint.instance); } public SecretsOfTheGoldenCity(final SecretsOfTheGoldenCity card) { diff --git a/Mage.Sets/src/mage/cards/v/VonasHunger.java b/Mage.Sets/src/mage/cards/v/VonasHunger.java index 3d4c435349b..ce015602733 100644 --- a/Mage.Sets/src/mage/cards/v/VonasHunger.java +++ b/Mage.Sets/src/mage/cards/v/VonasHunger.java @@ -8,6 +8,7 @@ import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.SacrificeOpponentsEffect; import mage.abilities.effects.keyword.AscendEffect; import mage.abilities.hint.common.CitysBlessingHint; +import mage.abilities.hint.common.PermanentsYouControlHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -32,6 +33,8 @@ public final class VonasHunger extends CardImpl { // Ascend (If you control ten or more permanents, you get the city's blessing for the rest of the game.) this.getSpellAbility().addEffect(new AscendEffect()); + this.getSpellAbility().addHint(CitysBlessingHint.instance); + this.getSpellAbility().addHint(PermanentsYouControlHint.instance); // Each opponent sacrifices a creature. this.getSpellAbility().addEffect(new ConditionalOneShotEffect( @@ -43,7 +46,6 @@ public final class VonasHunger extends CardImpl { new VonasHungerEffect(), CitysBlessingCondition.instance, "If you have the city's blessing, instead each opponent sacrifices half the creatures he or she controls rounded up")); - this.getSpellAbility().addHint(CitysBlessingHint.instance); } public VonasHunger(final VonasHunger card) { diff --git a/Mage/src/main/java/mage/abilities/dynamicvalue/common/PermanentsYouControlCount.java b/Mage/src/main/java/mage/abilities/dynamicvalue/common/PermanentsYouControlCount.java new file mode 100644 index 00000000000..8eef2b5ca7a --- /dev/null +++ b/Mage/src/main/java/mage/abilities/dynamicvalue/common/PermanentsYouControlCount.java @@ -0,0 +1,35 @@ +package mage.abilities.dynamicvalue.common; + +import mage.abilities.Ability; +import mage.abilities.dynamicvalue.DynamicValue; +import mage.abilities.effects.Effect; +import mage.filter.StaticFilters; +import mage.game.Game; + +/** + * @author JayDi85 + */ +public enum PermanentsYouControlCount implements DynamicValue { + + instance; + + @Override + public int calculate(Game game, Ability sourceAbility, Effect effect) { + return game.getBattlefield().count(StaticFilters.FILTER_CONTROLLED_PERMANENT, sourceAbility.getSourceId(), sourceAbility.getControllerId(), game); + } + + @Override + public PermanentsYouControlCount copy() { + return instance; + } + + @Override + public String toString() { + return "X"; + } + + @Override + public String getMessage() { + return "permanents you control"; + } +} diff --git a/Mage/src/main/java/mage/abilities/hint/common/PermanentsYouControlHint.java b/Mage/src/main/java/mage/abilities/hint/common/PermanentsYouControlHint.java new file mode 100644 index 00000000000..cf47e835cd6 --- /dev/null +++ b/Mage/src/main/java/mage/abilities/hint/common/PermanentsYouControlHint.java @@ -0,0 +1,26 @@ +package mage.abilities.hint.common; + +import mage.abilities.Ability; +import mage.abilities.dynamicvalue.common.PermanentsYouControlCount; +import mage.abilities.hint.Hint; +import mage.abilities.hint.ValueHint; +import mage.game.Game; + +/** + * @author JayDi85 + */ +public enum PermanentsYouControlHint implements Hint { + + instance; + private static final Hint hint = new ValueHint("Permanents you control", PermanentsYouControlCount.instance); + + @Override + public String getText(Game game, Ability ability) { + return hint.getText(game, ability); + } + + @Override + public Hint copy() { + return instance; + } +}