Merge pull request #9008 from Grath/grath/refactor-hondens-with-hints

Add hints to Go-Shintai of Boundless Vigor and all five Hondens.
This commit is contained in:
Oleg Agafonov 2022-05-27 09:45:49 +04:00 committed by GitHub
commit 062e38a08f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 45 additions and 31 deletions

View file

@ -8,6 +8,8 @@ import mage.abilities.dynamicvalue.DynamicValue;
import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
import mage.abilities.effects.common.DoWhenCostPaid; import mage.abilities.effects.common.DoWhenCostPaid;
import mage.abilities.effects.common.counter.AddCountersTargetEffect; import mage.abilities.effects.common.counter.AddCountersTargetEffect;
import mage.abilities.hint.Hint;
import mage.abilities.hint.ValueHint;
import mage.abilities.keyword.TrampleAbility; import mage.abilities.keyword.TrampleAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
@ -31,6 +33,7 @@ public final class GoShintaiOfBoundlessVigor extends CardImpl {
= new FilterPermanent(SubType.SHRINE, "Shrine"); = new FilterPermanent(SubType.SHRINE, "Shrine");
private static final DynamicValue xValue private static final DynamicValue xValue
= new PermanentsOnBattlefieldCount(new FilterControlledPermanent(SubType.SHRINE)); = new PermanentsOnBattlefieldCount(new FilterControlledPermanent(SubType.SHRINE));
private static final Hint hint = new ValueHint("Shrines you control", xValue);
public GoShintaiOfBoundlessVigor(UUID ownerId, CardSetInfo setInfo) { public GoShintaiOfBoundlessVigor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT, CardType.CREATURE}, "{1}{G}"); super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT, CardType.CREATURE}, "{1}{G}");
@ -52,7 +55,7 @@ public final class GoShintaiOfBoundlessVigor extends CardImpl {
ability.addTarget(new TargetPermanent(filter)); ability.addTarget(new TargetPermanent(filter));
this.addAbility(new BeginningOfEndStepTriggeredAbility(new DoWhenCostPaid( this.addAbility(new BeginningOfEndStepTriggeredAbility(new DoWhenCostPaid(
ability, new GenericManaCost(1), "Pay {1}?" ability, new GenericManaCost(1), "Pay {1}?"
), TargetController.YOU, false)); ), TargetController.YOU, false).addHint(hint));
} }
private GoShintaiOfBoundlessVigor(final GoShintaiOfBoundlessVigor card) { private GoShintaiOfBoundlessVigor(final GoShintaiOfBoundlessVigor card) {

View file

@ -3,8 +3,12 @@
package mage.cards.h; package mage.cards.h;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.dynamicvalue.DynamicValue;
import mage.abilities.dynamicvalue.MultipliedValue;
import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
import mage.abilities.effects.common.GainLifeEffect; import mage.abilities.effects.common.GainLifeEffect;
import mage.abilities.hint.Hint;
import mage.abilities.hint.ValueHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
@ -20,11 +24,10 @@ import java.util.UUID;
*/ */
public final class HondenOfCleansingFire extends CardImpl { public final class HondenOfCleansingFire extends CardImpl {
static final FilterControlledPermanent filter = new FilterControlledPermanent("Shrine"); private static final DynamicValue xValue = new PermanentsOnBattlefieldCount(
new FilterControlledPermanent(SubType.SHRINE)
static { );
filter.add(SubType.SHRINE.getPredicate()); private static final Hint hint = new ValueHint("Shrines you control", xValue);
}
public HondenOfCleansingFire(UUID ownerId, CardSetInfo setInfo) { public HondenOfCleansingFire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{W}"); super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{W}");
@ -33,7 +36,7 @@ public final class HondenOfCleansingFire extends CardImpl {
// At the beginning of your upkeep, you gain 2 life for each Shrine you control. // At the beginning of your upkeep, you gain 2 life for each Shrine you control.
this.addAbility(new BeginningOfUpkeepTriggeredAbility(new GainLifeEffect(new PermanentsOnBattlefieldCount(filter, 2)), TargetController.YOU, false)); this.addAbility(new BeginningOfUpkeepTriggeredAbility(new GainLifeEffect(new MultipliedValue(xValue, 2)), TargetController.YOU, false).addHint(hint));
} }
private HondenOfCleansingFire(final HondenOfCleansingFire card) { private HondenOfCleansingFire(final HondenOfCleansingFire card) {

View file

@ -3,8 +3,11 @@ package mage.cards.h;
import java.util.UUID; import java.util.UUID;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.dynamicvalue.DynamicValue;
import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.DamageTargetEffect;
import mage.abilities.hint.Hint;
import mage.abilities.hint.ValueHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
@ -20,11 +23,10 @@ import mage.target.common.TargetAnyTarget;
*/ */
public final class HondenOfInfiniteRage extends CardImpl { public final class HondenOfInfiniteRage extends CardImpl {
static final FilterControlledPermanent filter = new FilterControlledPermanent("Shrine you control"); private static final DynamicValue xValue = new PermanentsOnBattlefieldCount(
new FilterControlledPermanent(SubType.SHRINE)
static { );
filter.add(SubType.SHRINE.getPredicate()); private static final Hint hint = new ValueHint("Shrines you control", xValue);
}
public HondenOfInfiniteRage(UUID ownerId, CardSetInfo setInfo) { public HondenOfInfiniteRage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{R}"); super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{R}");
@ -32,7 +34,7 @@ public final class HondenOfInfiniteRage extends CardImpl {
this.subtype.add(SubType.SHRINE); this.subtype.add(SubType.SHRINE);
// At the beginning of your upkeep, Honden of Infinite Rage deals damage to any target equal to the number of Shrines you control. // At the beginning of your upkeep, Honden of Infinite Rage deals damage to any target equal to the number of Shrines you control.
Ability ability = new BeginningOfUpkeepTriggeredAbility(new DamageTargetEffect(new PermanentsOnBattlefieldCount(filter)), TargetController.YOU, false); Ability ability = new BeginningOfUpkeepTriggeredAbility(new DamageTargetEffect(xValue), TargetController.YOU, false).addHint(hint);
ability.addTarget(new TargetAnyTarget()); ability.addTarget(new TargetAnyTarget());
this.addAbility(ability); this.addAbility(ability);
} }

View file

@ -3,8 +3,11 @@
package mage.cards.h; package mage.cards.h;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.dynamicvalue.DynamicValue;
import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.hint.Hint;
import mage.abilities.hint.ValueHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
@ -21,18 +24,17 @@ import java.util.UUID;
*/ */
public final class HondenOfLifesWeb extends CardImpl { public final class HondenOfLifesWeb extends CardImpl {
static final FilterControlledPermanent filter = new FilterControlledPermanent("Shrine"); private static final DynamicValue xValue = new PermanentsOnBattlefieldCount(
new FilterControlledPermanent(SubType.SHRINE)
static { );
filter.add(SubType.SHRINE.getPredicate()); private static final Hint hint = new ValueHint("Shrines you control", xValue);
}
public HondenOfLifesWeb(UUID ownerId, CardSetInfo setInfo) { public HondenOfLifesWeb(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{4}{G}"); super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{4}{G}");
addSuperType(SuperType.LEGENDARY); addSuperType(SuperType.LEGENDARY);
this.subtype.add(SubType.SHRINE); this.subtype.add(SubType.SHRINE);
this.addAbility(new BeginningOfUpkeepTriggeredAbility(new CreateTokenEffect(new SpiritToken(), new PermanentsOnBattlefieldCount(filter)), TargetController.YOU, false)); this.addAbility(new BeginningOfUpkeepTriggeredAbility(new CreateTokenEffect(new SpiritToken(), xValue), TargetController.YOU, false).addHint(hint));
} }
private HondenOfLifesWeb(final HondenOfLifesWeb card) { private HondenOfLifesWeb(final HondenOfLifesWeb card) {

View file

@ -3,8 +3,11 @@ package mage.cards.h;
import java.util.UUID; import java.util.UUID;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.dynamicvalue.DynamicValue;
import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
import mage.abilities.effects.common.discard.DiscardTargetEffect; import mage.abilities.effects.common.discard.DiscardTargetEffect;
import mage.abilities.hint.Hint;
import mage.abilities.hint.ValueHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
@ -19,11 +22,10 @@ import mage.target.common.TargetOpponent;
*/ */
public final class HondenOfNightsReach extends CardImpl { public final class HondenOfNightsReach extends CardImpl {
static final FilterControlledPermanent filter = new FilterControlledPermanent("Shrine you control"); private static final DynamicValue xValue = new PermanentsOnBattlefieldCount(
new FilterControlledPermanent(SubType.SHRINE)
static { );
filter.add(SubType.SHRINE.getPredicate()); private static final Hint hint = new ValueHint("Shrines you control", xValue);
}
public HondenOfNightsReach(UUID ownerId, CardSetInfo setInfo) { public HondenOfNightsReach(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{B}"); super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{B}");
@ -31,7 +33,7 @@ public final class HondenOfNightsReach extends CardImpl {
this.subtype.add(SubType.SHRINE); this.subtype.add(SubType.SHRINE);
// At the beginning of your upkeep, target opponent discards a card for each Shrine you control. // At the beginning of your upkeep, target opponent discards a card for each Shrine you control.
Ability ability = new BeginningOfUpkeepTriggeredAbility(new DiscardTargetEffect(new PermanentsOnBattlefieldCount(filter)), TargetController.YOU, false); Ability ability = new BeginningOfUpkeepTriggeredAbility(new DiscardTargetEffect(xValue), TargetController.YOU, false).addHint(hint);
ability.addTarget(new TargetOpponent()); ability.addTarget(new TargetOpponent());
this.addAbility(ability); this.addAbility(ability);
} }

View file

@ -3,8 +3,11 @@
package mage.cards.h; package mage.cards.h;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.dynamicvalue.DynamicValue;
import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.hint.Hint;
import mage.abilities.hint.ValueHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
@ -20,11 +23,10 @@ import java.util.UUID;
*/ */
public final class HondenOfSeeingWinds extends CardImpl { public final class HondenOfSeeingWinds extends CardImpl {
static final FilterControlledPermanent filter = new FilterControlledPermanent("Shrine"); private static final DynamicValue xValue = new PermanentsOnBattlefieldCount(
new FilterControlledPermanent(SubType.SHRINE)
static { );
filter.add(SubType.SHRINE.getPredicate()); private static final Hint hint = new ValueHint("Shrines you control", xValue);
}
public HondenOfSeeingWinds(UUID ownerId, CardSetInfo setInfo) { public HondenOfSeeingWinds(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{4}{U}"); super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{4}{U}");
@ -33,7 +35,7 @@ public final class HondenOfSeeingWinds extends CardImpl {
// At the beginning of your upkeep, draw a card for each Shrine you control. // At the beginning of your upkeep, draw a card for each Shrine you control.
this.addAbility(new BeginningOfUpkeepTriggeredAbility(new DrawCardSourceControllerEffect(new PermanentsOnBattlefieldCount(filter)), TargetController.YOU, false)); this.addAbility(new BeginningOfUpkeepTriggeredAbility(new DrawCardSourceControllerEffect(xValue), TargetController.YOU, false).addHint(hint));
} }
private HondenOfSeeingWinds(final HondenOfSeeingWinds card) { private HondenOfSeeingWinds(final HondenOfSeeingWinds card) {