diff --git a/Mage.Sets/src/mage/cards/a/AcererakTheArchlich.java b/Mage.Sets/src/mage/cards/a/AcererakTheArchlich.java index 75ff120cfff..11eda4d0318 100644 --- a/Mage.Sets/src/mage/cards/a/AcererakTheArchlich.java +++ b/Mage.Sets/src/mage/cards/a/AcererakTheArchlich.java @@ -10,6 +10,7 @@ import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.ReturnToHandSourceEffect; import mage.abilities.effects.keyword.VentureIntoTheDungeonEffect; +import mage.abilities.hint.common.CurrentDungeonHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -50,7 +51,9 @@ public final class AcererakTheArchlich extends CardImpl { "to its owner's hand and venture into the dungeon." ); ability.addEffect(new VentureIntoTheDungeonEffect()); - this.addAbility(ability.addHint(CompletedDungeonCondition.getHint()), new CompletedDungeonWatcher()); + ability.addHint(CurrentDungeonHint.instance); + ability.addHint(CompletedDungeonCondition.getHint()); + this.addAbility(ability, new CompletedDungeonWatcher()); // Whenever Acererak the Archlich attacks, for each opponent, you create a 2/2 black Zombie creature token unless that player sacrifices a creature. this.addAbility(new AttacksTriggeredAbility(new AcererakTheArchlichEffect())); diff --git a/Mage.Sets/src/mage/cards/b/BarTheGate.java b/Mage.Sets/src/mage/cards/b/BarTheGate.java index 5abaaa4d337..498a85471f6 100644 --- a/Mage.Sets/src/mage/cards/b/BarTheGate.java +++ b/Mage.Sets/src/mage/cards/b/BarTheGate.java @@ -4,6 +4,7 @@ import java.util.UUID; import mage.abilities.effects.common.CounterTargetEffect; import mage.abilities.effects.keyword.VentureIntoTheDungeonEffect; +import mage.abilities.hint.common.CurrentDungeonHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -33,6 +34,7 @@ public final class BarTheGate extends CardImpl { this.getSpellAbility().addTarget(new TargetSpell(filter)); this.getSpellAbility().addEffect(new CounterTargetEffect()); this.getSpellAbility().addEffect(new VentureIntoTheDungeonEffect()); + this.getSpellAbility().addHint(CurrentDungeonHint.instance); } private BarTheGate(final BarTheGate card) { diff --git a/Mage.Sets/src/mage/cards/b/BarrowinOfClanUndurr.java b/Mage.Sets/src/mage/cards/b/BarrowinOfClanUndurr.java index d5a478178b9..4179fe20e0f 100644 --- a/Mage.Sets/src/mage/cards/b/BarrowinOfClanUndurr.java +++ b/Mage.Sets/src/mage/cards/b/BarrowinOfClanUndurr.java @@ -8,6 +8,7 @@ import mage.abilities.condition.common.CompletedDungeonCondition; import mage.abilities.decorator.ConditionalOneShotEffect; import mage.abilities.effects.common.ReturnFromGraveyardToBattlefieldTargetEffect; import mage.abilities.effects.keyword.VentureIntoTheDungeonEffect; +import mage.abilities.hint.common.CurrentDungeonHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -44,7 +45,8 @@ public final class BarrowinOfClanUndurr extends CardImpl { this.toughness = new MageInt(3); // When Barrowin of Clan Undurr enters the battlefield, venture into the dungeon. - this.addAbility(new EntersBattlefieldTriggeredAbility(new VentureIntoTheDungeonEffect())); + this.addAbility(new EntersBattlefieldTriggeredAbility(new VentureIntoTheDungeonEffect()) + .addHint(CurrentDungeonHint.instance)); // Whenever Barrowin of Clan Undurr attacks, return up to one creature card with mana value 3 or less from your graveyard to the battlefield if you've completed a dungeon. Ability ability = new AttacksTriggeredAbility(new ConditionalOneShotEffect( diff --git a/Mage.Sets/src/mage/cards/c/ClatteringSkeletons.java b/Mage.Sets/src/mage/cards/c/ClatteringSkeletons.java index ca58abf9247..54ea1ebc4a1 100644 --- a/Mage.Sets/src/mage/cards/c/ClatteringSkeletons.java +++ b/Mage.Sets/src/mage/cards/c/ClatteringSkeletons.java @@ -3,6 +3,7 @@ package mage.cards.c; import mage.MageInt; import mage.abilities.common.DiesSourceTriggeredAbility; import mage.abilities.effects.keyword.VentureIntoTheDungeonEffect; +import mage.abilities.hint.common.CurrentDungeonHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -23,7 +24,8 @@ public final class ClatteringSkeletons extends CardImpl { this.toughness = new MageInt(3); // When Clattering Skeletons dies, venture into the dungeon. - this.addAbility(new DiesSourceTriggeredAbility(new VentureIntoTheDungeonEffect())); + this.addAbility(new DiesSourceTriggeredAbility(new VentureIntoTheDungeonEffect()) + .addHint(CurrentDungeonHint.instance)); } private ClatteringSkeletons(final ClatteringSkeletons card) { diff --git a/Mage.Sets/src/mage/cards/c/CloisterGargoyle.java b/Mage.Sets/src/mage/cards/c/CloisterGargoyle.java index f524a0d514e..accffe32c7c 100644 --- a/Mage.Sets/src/mage/cards/c/CloisterGargoyle.java +++ b/Mage.Sets/src/mage/cards/c/CloisterGargoyle.java @@ -9,6 +9,7 @@ import mage.abilities.decorator.ConditionalContinuousEffect; import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.abilities.effects.common.continuous.GainAbilitySourceEffect; import mage.abilities.effects.keyword.VentureIntoTheDungeonEffect; +import mage.abilities.hint.common.CurrentDungeonHint; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -32,7 +33,8 @@ public final class CloisterGargoyle extends CardImpl { this.toughness = new MageInt(4); // When Cloister Gargoyle enters the battlefield, venture into the dungeon. - this.addAbility(new EntersBattlefieldTriggeredAbility(new VentureIntoTheDungeonEffect())); + this.addAbility(new EntersBattlefieldTriggeredAbility(new VentureIntoTheDungeonEffect()) + .addHint(CurrentDungeonHint.instance)); // As long as you've completed a dungeon, Cloister Gargoyle gets +3/+0 and has flying. Ability ability = new SimpleStaticAbility(new ConditionalContinuousEffect( diff --git a/Mage.Sets/src/mage/cards/d/DelversTorch.java b/Mage.Sets/src/mage/cards/d/DelversTorch.java index 6f16ceb6485..9bddb32a41b 100644 --- a/Mage.Sets/src/mage/cards/d/DelversTorch.java +++ b/Mage.Sets/src/mage/cards/d/DelversTorch.java @@ -6,6 +6,7 @@ import mage.abilities.common.AttacksAttachedTriggeredAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.continuous.BoostEquippedEffect; import mage.abilities.effects.keyword.VentureIntoTheDungeonEffect; +import mage.abilities.hint.common.CurrentDungeonHint; import mage.abilities.keyword.EquipAbility; import mage.constants.SubType; import mage.cards.CardImpl; @@ -27,7 +28,8 @@ public final class DelversTorch extends CardImpl { this.addAbility(new SimpleStaticAbility(new BoostEquippedEffect(1, 1))); // Whenever equipped creature attacks, venture into the dungeon. - this.addAbility(new AttacksAttachedTriggeredAbility(new VentureIntoTheDungeonEffect())); + this.addAbility(new AttacksAttachedTriggeredAbility(new VentureIntoTheDungeonEffect()) + .addHint(CurrentDungeonHint.instance)); // Equip {3} this.addAbility(new EquipAbility(3)); diff --git a/Mage.Sets/src/mage/cards/d/DisplacerBeast.java b/Mage.Sets/src/mage/cards/d/DisplacerBeast.java index a93e64427a8..1f2adbf595a 100644 --- a/Mage.Sets/src/mage/cards/d/DisplacerBeast.java +++ b/Mage.Sets/src/mage/cards/d/DisplacerBeast.java @@ -6,6 +6,7 @@ import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.ReturnToHandSourceEffect; import mage.abilities.effects.keyword.VentureIntoTheDungeonEffect; +import mage.abilities.hint.common.CurrentDungeonHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -27,7 +28,8 @@ public final class DisplacerBeast extends CardImpl { this.toughness = new MageInt(2); // When Displacer Beast enters the battlefield, venture into the dungeon. - this.addAbility(new EntersBattlefieldTriggeredAbility(new VentureIntoTheDungeonEffect())); + this.addAbility(new EntersBattlefieldTriggeredAbility(new VentureIntoTheDungeonEffect()) + .addHint(CurrentDungeonHint.instance)); // Displacement — {3}{U}: Return Displacer Beast to its owner's hand. this.addAbility(new SimpleActivatedAbility( diff --git a/Mage.Sets/src/mage/cards/d/DungeonDescent.java b/Mage.Sets/src/mage/cards/d/DungeonDescent.java index 38d9030d41e..265a5dde952 100644 --- a/Mage.Sets/src/mage/cards/d/DungeonDescent.java +++ b/Mage.Sets/src/mage/cards/d/DungeonDescent.java @@ -9,6 +9,7 @@ import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.common.TapTargetCost; import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.effects.keyword.VentureIntoTheDungeonEffect; +import mage.abilities.hint.common.CurrentDungeonHint; import mage.abilities.mana.ColorlessManaAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -45,6 +46,7 @@ public final class DungeonDescent extends CardImpl { Ability ability = new ActivateAsSorceryActivatedAbility(new VentureIntoTheDungeonEffect(), new GenericManaCost(4)); ability.addCost(new TapSourceCost()); ability.addCost(new TapTargetCost(new TargetControlledCreaturePermanent(filter))); + ability.addHint(CurrentDungeonHint.instance); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/d/DungeonMap.java b/Mage.Sets/src/mage/cards/d/DungeonMap.java index 9a264aa828f..4aea25494da 100644 --- a/Mage.Sets/src/mage/cards/d/DungeonMap.java +++ b/Mage.Sets/src/mage/cards/d/DungeonMap.java @@ -5,6 +5,7 @@ import mage.abilities.common.ActivateAsSorceryActivatedAbility; import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.effects.keyword.VentureIntoTheDungeonEffect; +import mage.abilities.hint.common.CurrentDungeonHint; import mage.abilities.mana.ColorlessManaAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -28,6 +29,7 @@ public final class DungeonMap extends CardImpl { new VentureIntoTheDungeonEffect(), new GenericManaCost(3) ); ability.addCost(new TapSourceCost()); + ability.addHint(CurrentDungeonHint.instance); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/e/EccentricApprentice.java b/Mage.Sets/src/mage/cards/e/EccentricApprentice.java index 0e8155a41a9..457d86a2d46 100644 --- a/Mage.Sets/src/mage/cards/e/EccentricApprentice.java +++ b/Mage.Sets/src/mage/cards/e/EccentricApprentice.java @@ -8,6 +8,7 @@ import mage.abilities.condition.common.CompletedDungeonCondition; import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; import mage.abilities.effects.ContinuousEffectImpl; import mage.abilities.effects.keyword.VentureIntoTheDungeonEffect; +import mage.abilities.hint.common.CurrentDungeonHint; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -36,7 +37,8 @@ public final class EccentricApprentice extends CardImpl { this.addAbility(FlyingAbility.getInstance()); // When Eccentric Apprentice enters the battlefield, venture into the dungeon. - this.addAbility(new EntersBattlefieldTriggeredAbility(new VentureIntoTheDungeonEffect())); + this.addAbility(new EntersBattlefieldTriggeredAbility(new VentureIntoTheDungeonEffect()) + .addHint(CurrentDungeonHint.instance)); // At the beginning of combat on your turn, if you've completed a dungeon, up to one target creature becomes a Bird with base power and toughness 1/1 and flying until end of turn. Ability ability = new ConditionalInterveningIfTriggeredAbility( diff --git a/Mage.Sets/src/mage/cards/e/EllywickTumblestrum.java b/Mage.Sets/src/mage/cards/e/EllywickTumblestrum.java index 57d83603cfa..89517ab492f 100644 --- a/Mage.Sets/src/mage/cards/e/EllywickTumblestrum.java +++ b/Mage.Sets/src/mage/cards/e/EllywickTumblestrum.java @@ -5,6 +5,7 @@ import mage.abilities.LoyaltyAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.GetEmblemEffect; import mage.abilities.effects.keyword.VentureIntoTheDungeonEffect; +import mage.abilities.hint.common.CurrentDungeonHint; import mage.cards.*; import mage.constants.*; import mage.filter.StaticFilters; @@ -29,7 +30,8 @@ public final class EllywickTumblestrum extends CardImpl { this.setStartingLoyalty(4); // +1: Venture into the dungeon. - this.addAbility(new LoyaltyAbility(new VentureIntoTheDungeonEffect(), 1)); + this.addAbility(new LoyaltyAbility(new VentureIntoTheDungeonEffect(), 1) + .addHint(CurrentDungeonHint.instance)); // −2: Look at the top six cards of your library. You may reveal a creature card from among them and put it into your hand. If it's legendary, you gain 3 life. Put the rest on the bottom of your library in a random order. this.addAbility(new LoyaltyAbility(new EllywickTumblestrumEffect(), -2)); diff --git a/Mage.Sets/src/mage/cards/f/FatesReversal.java b/Mage.Sets/src/mage/cards/f/FatesReversal.java index 81beb254959..b501db13cd0 100644 --- a/Mage.Sets/src/mage/cards/f/FatesReversal.java +++ b/Mage.Sets/src/mage/cards/f/FatesReversal.java @@ -2,6 +2,7 @@ package mage.cards.f; import mage.abilities.effects.common.ReturnFromGraveyardToHandTargetEffect; import mage.abilities.effects.keyword.VentureIntoTheDungeonEffect; +import mage.abilities.hint.common.CurrentDungeonHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -24,6 +25,7 @@ public final class FatesReversal extends CardImpl { 0, 1, StaticFilters.FILTER_CARD_CREATURE_YOUR_GRAVEYARD )); this.getSpellAbility().addEffect(new VentureIntoTheDungeonEffect().concatBy(".")); + this.getSpellAbility().addHint(CurrentDungeonHint.instance); } private FatesReversal(final FatesReversal card) { diff --git a/Mage.Sets/src/mage/cards/f/FiftyFeetOfRope.java b/Mage.Sets/src/mage/cards/f/FiftyFeetOfRope.java index 3145447945a..2d7ff655e9c 100644 --- a/Mage.Sets/src/mage/cards/f/FiftyFeetOfRope.java +++ b/Mage.Sets/src/mage/cards/f/FiftyFeetOfRope.java @@ -10,6 +10,7 @@ import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.DontUntapInControllersNextUntapStepTargetEffect; import mage.abilities.effects.common.combat.CantBlockTargetEffect; import mage.abilities.effects.keyword.VentureIntoTheDungeonEffect; +import mage.abilities.hint.common.CurrentDungeonHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -44,6 +45,7 @@ public final class FiftyFeetOfRope extends CardImpl { // Rappel Down — {4}, {T}: Venture into the dungeon. Activate only as a sorcery. ability = new ActivateAsSorceryActivatedAbility(new VentureIntoTheDungeonEffect(), new ManaCostsImpl<>("{4}")); ability.addCost(new TapSourceCost()); + ability.addHint(CurrentDungeonHint.instance); this.addAbility(ability.withFlavorWord("Rappel Down")); } diff --git a/Mage.Sets/src/mage/cards/f/FindThePath.java b/Mage.Sets/src/mage/cards/f/FindThePath.java index 9f3464fb630..27478871c66 100644 --- a/Mage.Sets/src/mage/cards/f/FindThePath.java +++ b/Mage.Sets/src/mage/cards/f/FindThePath.java @@ -8,6 +8,7 @@ import mage.abilities.costs.common.TapSourceCost; import mage.abilities.effects.common.AttachEffect; import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect; import mage.abilities.effects.keyword.VentureIntoTheDungeonEffect; +import mage.abilities.hint.common.CurrentDungeonHint; import mage.abilities.keyword.EnchantAbility; import mage.abilities.mana.SimpleManaAbility; import mage.cards.CardImpl; @@ -36,7 +37,8 @@ public final class FindThePath extends CardImpl { this.addAbility(ability); // When Find the Path enters the battlefield, venture into the dungeon. - this.addAbility(new EntersBattlefieldTriggeredAbility(new VentureIntoTheDungeonEffect())); + this.addAbility(new EntersBattlefieldTriggeredAbility(new VentureIntoTheDungeonEffect()) + .addHint(CurrentDungeonHint.instance)); // Enchanted land has "{T}: Add {G}{G}." this.addAbility(new SimpleStaticAbility(new GainAbilityAttachedEffect( diff --git a/Mage.Sets/src/mage/cards/f/Fly.java b/Mage.Sets/src/mage/cards/f/Fly.java index b45ef4297eb..5eec8db2729 100644 --- a/Mage.Sets/src/mage/cards/f/Fly.java +++ b/Mage.Sets/src/mage/cards/f/Fly.java @@ -6,6 +6,7 @@ import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect; import mage.abilities.effects.keyword.VentureIntoTheDungeonEffect; +import mage.abilities.hint.common.CurrentDungeonHint; import mage.abilities.keyword.FlyingAbility; import mage.constants.AttachmentType; import mage.constants.SubType; @@ -43,6 +44,7 @@ public final class Fly extends CardImpl { new DealsCombatDamageToAPlayerTriggeredAbility(new VentureIntoTheDungeonEffect(), false), AttachmentType.AURA).setText("and \"Whenever this creature deals combat damage to a player, venture into the dungeon.\"") ); + ability.addHint(CurrentDungeonHint.instance); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/i/ImmovableRod.java b/Mage.Sets/src/mage/cards/i/ImmovableRod.java index 9b07b152a39..49cc0385d2d 100644 --- a/Mage.Sets/src/mage/cards/i/ImmovableRod.java +++ b/Mage.Sets/src/mage/cards/i/ImmovableRod.java @@ -8,6 +8,7 @@ import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.ContinuousEffectImpl; import mage.abilities.effects.RestrictionEffect; import mage.abilities.effects.keyword.VentureIntoTheDungeonEffect; +import mage.abilities.hint.common.CurrentDungeonHint; import mage.abilities.keyword.InspiredAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -38,7 +39,8 @@ public final class ImmovableRod extends CardImpl { this.addAbility(new SkipUntapOptionalAbility()); // Whenever Immovable Rod becomes untapped, venture into the dungeon. - this.addAbility(new InspiredAbility(new VentureIntoTheDungeonEffect(), false, false)); + this.addAbility(new InspiredAbility(new VentureIntoTheDungeonEffect(), false, false) + .addHint(CurrentDungeonHint.instance)); // {3}{W}, {T}: For as long as Immovable Rod remains tapped, another target permanent loses all abilities and can't attack or block. Ability ability = new SimpleActivatedAbility(new ImmovableRodAbilityEffect(), new ManaCostsImpl<>("{3}{W}")); diff --git a/Mage.Sets/src/mage/cards/i/IntrepidOutlander.java b/Mage.Sets/src/mage/cards/i/IntrepidOutlander.java index 1d148762908..be3dfbcc45c 100644 --- a/Mage.Sets/src/mage/cards/i/IntrepidOutlander.java +++ b/Mage.Sets/src/mage/cards/i/IntrepidOutlander.java @@ -2,6 +2,7 @@ package mage.cards.i; import mage.MageInt; import mage.abilities.effects.keyword.VentureIntoTheDungeonEffect; +import mage.abilities.hint.common.CurrentDungeonHint; import mage.abilities.keyword.PackTacticsAbility; import mage.abilities.keyword.ReachAbility; import mage.cards.CardImpl; @@ -28,7 +29,8 @@ public final class IntrepidOutlander extends CardImpl { this.addAbility(ReachAbility.getInstance()); // Pack tactics — Whenever Intrepid Outlander attacks, if you attacked with creatures with total power 6 or greater this combat, venture into the dungeon. - this.addAbility(new PackTacticsAbility(new VentureIntoTheDungeonEffect())); + this.addAbility(new PackTacticsAbility(new VentureIntoTheDungeonEffect()) + .addHint(CurrentDungeonHint.instance)); } private IntrepidOutlander(final IntrepidOutlander card) { diff --git a/Mage.Sets/src/mage/cards/k/KeenEaredSentry.java b/Mage.Sets/src/mage/cards/k/KeenEaredSentry.java index a2025f4ff5b..21c170a4ecc 100644 --- a/Mage.Sets/src/mage/cards/k/KeenEaredSentry.java +++ b/Mage.Sets/src/mage/cards/k/KeenEaredSentry.java @@ -6,6 +6,7 @@ import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.ContinuousRuleModifyingEffectImpl; import mage.abilities.effects.common.continuous.GainAbilityControllerEffect; +import mage.abilities.hint.common.CurrentDungeonHint; import mage.abilities.keyword.HexproofAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -35,7 +36,7 @@ public final class KeenEaredSentry extends CardImpl { this.addAbility(new SimpleStaticAbility(new GainAbilityControllerEffect(HexproofAbility.getInstance()))); // Your opponents can't venture into the dungeon more than once each turn. - this.addAbility(new SimpleStaticAbility(new KeenEaredSentryEffect()), new KeenEaredSentryWatcher()); + this.addAbility(new SimpleStaticAbility(new KeenEaredSentryEffect()).addHint(CurrentDungeonHint.instance), new KeenEaredSentryWatcher()); } private KeenEaredSentry(final KeenEaredSentry card) { diff --git a/Mage.Sets/src/mage/cards/k/KickInTheDoor.java b/Mage.Sets/src/mage/cards/k/KickInTheDoor.java index 75bb61a535e..2810a08ba31 100644 --- a/Mage.Sets/src/mage/cards/k/KickInTheDoor.java +++ b/Mage.Sets/src/mage/cards/k/KickInTheDoor.java @@ -6,6 +6,7 @@ import mage.abilities.effects.common.combat.CantBeBlockedTargetEffect; import mage.abilities.effects.common.continuous.GainAbilityTargetEffect; import mage.abilities.effects.common.counter.AddCountersTargetEffect; import mage.abilities.effects.keyword.VentureIntoTheDungeonEffect; +import mage.abilities.hint.common.CurrentDungeonHint; import mage.abilities.keyword.HasteAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -40,6 +41,7 @@ public final class KickInTheDoor extends CardImpl { .setText("and can't be blocked by Walls this turn") ); this.getSpellAbility().addEffect(new VentureIntoTheDungeonEffect()); + this.getSpellAbility().addHint(CurrentDungeonHint.instance); } private KickInTheDoor(final KickInTheDoor card) { diff --git a/Mage.Sets/src/mage/cards/m/MidnightPathlighter.java b/Mage.Sets/src/mage/cards/m/MidnightPathlighter.java index 8699dbf7eb2..827584eb51b 100644 --- a/Mage.Sets/src/mage/cards/m/MidnightPathlighter.java +++ b/Mage.Sets/src/mage/cards/m/MidnightPathlighter.java @@ -5,6 +5,7 @@ import mage.abilities.common.DealCombatDamageControlledTriggeredAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.combat.CantBeBlockedByCreaturesAllEffect; import mage.abilities.effects.keyword.VentureIntoTheDungeonEffect; +import mage.abilities.hint.common.CurrentDungeonHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -44,7 +45,8 @@ public final class MidnightPathlighter extends CardImpl { ))); // Whenever one or more creatures you control deal combat damage to a player, venture into the dungeon. - this.addAbility(new DealCombatDamageControlledTriggeredAbility(new VentureIntoTheDungeonEffect())); + this.addAbility(new DealCombatDamageControlledTriggeredAbility(new VentureIntoTheDungeonEffect()) + .addHint(CurrentDungeonHint.instance)); } private MidnightPathlighter(final MidnightPathlighter card) { diff --git a/Mage.Sets/src/mage/cards/n/NadaarSelflessPaladin.java b/Mage.Sets/src/mage/cards/n/NadaarSelflessPaladin.java index 5d18921c76e..1f164dea3fc 100644 --- a/Mage.Sets/src/mage/cards/n/NadaarSelflessPaladin.java +++ b/Mage.Sets/src/mage/cards/n/NadaarSelflessPaladin.java @@ -7,6 +7,7 @@ import mage.abilities.condition.common.CompletedDungeonCondition; import mage.abilities.decorator.ConditionalContinuousEffect; import mage.abilities.effects.common.continuous.BoostControlledEffect; import mage.abilities.effects.keyword.VentureIntoTheDungeonEffect; +import mage.abilities.hint.common.CurrentDungeonHint; import mage.abilities.keyword.VigilanceAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -36,7 +37,8 @@ public final class NadaarSelflessPaladin extends CardImpl { this.addAbility(VigilanceAbility.getInstance()); // Whenever Nadaar, Selfless Paladin enters the battlefield or attacks, venture into the dungeon. - this.addAbility(new EntersBattlefieldOrAttacksSourceTriggeredAbility(new VentureIntoTheDungeonEffect())); + this.addAbility(new EntersBattlefieldOrAttacksSourceTriggeredAbility(new VentureIntoTheDungeonEffect()) + .addHint(CurrentDungeonHint.instance)); // Other creatures you control get +1/+1 as long as you've completed a dungeon. this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect( diff --git a/Mage.Sets/src/mage/cards/p/PlanarAlly.java b/Mage.Sets/src/mage/cards/p/PlanarAlly.java index 77bacc0f9e5..d4bfad8d524 100644 --- a/Mage.Sets/src/mage/cards/p/PlanarAlly.java +++ b/Mage.Sets/src/mage/cards/p/PlanarAlly.java @@ -3,6 +3,7 @@ package mage.cards.p; import mage.MageInt; import mage.abilities.common.AttacksTriggeredAbility; import mage.abilities.effects.keyword.VentureIntoTheDungeonEffect; +import mage.abilities.hint.common.CurrentDungeonHint; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -27,7 +28,8 @@ public final class PlanarAlly extends CardImpl { this.addAbility(FlyingAbility.getInstance()); // Whenever Planar Ally attacks, venture into the dungeon. - this.addAbility(new AttacksTriggeredAbility(new VentureIntoTheDungeonEffect(), false)); + this.addAbility(new AttacksTriggeredAbility(new VentureIntoTheDungeonEffect(), false) + .addHint(CurrentDungeonHint.instance)); } private PlanarAlly(final PlanarAlly card) { diff --git a/Mage.Sets/src/mage/cards/p/PrecipitousDrop.java b/Mage.Sets/src/mage/cards/p/PrecipitousDrop.java index daf04fd43e1..f4f12f45a01 100644 --- a/Mage.Sets/src/mage/cards/p/PrecipitousDrop.java +++ b/Mage.Sets/src/mage/cards/p/PrecipitousDrop.java @@ -8,6 +8,7 @@ import mage.abilities.decorator.ConditionalContinuousEffect; import mage.abilities.effects.common.AttachEffect; import mage.abilities.effects.common.continuous.BoostEnchantedEffect; import mage.abilities.effects.keyword.VentureIntoTheDungeonEffect; +import mage.abilities.hint.common.CurrentDungeonHint; import mage.abilities.keyword.EnchantAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -38,7 +39,8 @@ public final class PrecipitousDrop extends CardImpl { this.addAbility(ability); // When Precipitous Drop enters the battlefield, venture into the dungeon. - this.addAbility(new EntersBattlefieldTriggeredAbility(new VentureIntoTheDungeonEffect())); + this.addAbility(new EntersBattlefieldTriggeredAbility(new VentureIntoTheDungeonEffect()) + .addHint(CurrentDungeonHint.instance)); // Enchanted creature gets -2/-2. It gets -5/-5 instead as long as you've completed a dungeon. this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect( diff --git a/Mage.Sets/src/mage/cards/r/RadiantSolar.java b/Mage.Sets/src/mage/cards/r/RadiantSolar.java index fab09162a6e..609b33c0b4a 100644 --- a/Mage.Sets/src/mage/cards/r/RadiantSolar.java +++ b/Mage.Sets/src/mage/cards/r/RadiantSolar.java @@ -8,6 +8,7 @@ import mage.abilities.costs.common.DiscardSourceCost; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.GainLifeEffect; import mage.abilities.effects.keyword.VentureIntoTheDungeonEffect; +import mage.abilities.hint.common.CurrentDungeonHint; import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.LifelinkAbility; import mage.cards.CardImpl; @@ -48,7 +49,7 @@ public final class RadiantSolar extends CardImpl { // Whenever Radiant Solar or another nontoken creature you control enters, venture into the dungeon. this.addAbility(new EntersBattlefieldThisOrAnotherTriggeredAbility( new VentureIntoTheDungeonEffect(), filter, false, true - )); + ).addHint(CurrentDungeonHint.instance)); // {W}, Discard Radiant Solar: Venture into the dungeon and you gain 3 life. Ability ability = new SimpleActivatedAbility( diff --git a/Mage.Sets/src/mage/cards/r/RangersHawk.java b/Mage.Sets/src/mage/cards/r/RangersHawk.java index b0d4157bbe3..e2b3bd2c173 100644 --- a/Mage.Sets/src/mage/cards/r/RangersHawk.java +++ b/Mage.Sets/src/mage/cards/r/RangersHawk.java @@ -7,6 +7,7 @@ import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.common.TapTargetCost; import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.effects.keyword.VentureIntoTheDungeonEffect; +import mage.abilities.hint.common.CurrentDungeonHint; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -49,6 +50,7 @@ public final class RangersHawk extends CardImpl { ); ability.addCost(new TapSourceCost()); ability.addCost(new TapTargetCost(new TargetControlledPermanent(filter))); + ability.addHint(CurrentDungeonHint.instance); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/SecretDoor.java b/Mage.Sets/src/mage/cards/s/SecretDoor.java index 524bff4490f..acb9af22fc7 100644 --- a/Mage.Sets/src/mage/cards/s/SecretDoor.java +++ b/Mage.Sets/src/mage/cards/s/SecretDoor.java @@ -4,6 +4,7 @@ import mage.MageInt; import mage.abilities.common.ActivateAsSorceryActivatedAbility; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.keyword.VentureIntoTheDungeonEffect; +import mage.abilities.hint.common.CurrentDungeonHint; import mage.abilities.keyword.DefenderAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -30,7 +31,7 @@ public final class SecretDoor extends CardImpl { // {4}{U}: Venture into the dungeon. Activate only as a sorcery. this.addAbility(new ActivateAsSorceryActivatedAbility( new VentureIntoTheDungeonEffect(), new ManaCostsImpl<>("{4}{U}") - )); + ).addHint(CurrentDungeonHint.instance)); } private SecretDoor(final SecretDoor card) { diff --git a/Mage.Sets/src/mage/cards/s/SefrisOfTheHiddenWays.java b/Mage.Sets/src/mage/cards/s/SefrisOfTheHiddenWays.java index b68dcce7311..c84c56f4333 100644 --- a/Mage.Sets/src/mage/cards/s/SefrisOfTheHiddenWays.java +++ b/Mage.Sets/src/mage/cards/s/SefrisOfTheHiddenWays.java @@ -6,6 +6,7 @@ import mage.abilities.common.CompletedDungeonTriggeredAbility; import mage.abilities.common.PutCardIntoGraveFromAnywhereAllTriggeredAbility; import mage.abilities.effects.common.ReturnFromGraveyardToBattlefieldTargetEffect; import mage.abilities.effects.keyword.VentureIntoTheDungeonEffect; +import mage.abilities.hint.common.CurrentDungeonHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -38,7 +39,7 @@ public final class SefrisOfTheHiddenWays extends CardImpl { // Whenever one or more creature cards are put into your graveyard from anywhere, venture into the dungeon. This ability triggers only once each turn. this.addAbility(new PutCardIntoGraveFromAnywhereAllTriggeredAbility( new VentureIntoTheDungeonEffect(), false, filter, TargetController.YOU - ).setTriggersLimitEachTurn(1)); + ).setTriggersLimitEachTurn(1).addHint(CurrentDungeonHint.instance)); // Create Undead — Whenever you complete a dungeon, return target creature card from your graveyard to the battlefield. Ability ability = new CompletedDungeonTriggeredAbility(new ReturnFromGraveyardToBattlefieldTargetEffect()); diff --git a/Mage.Sets/src/mage/cards/s/ShortcutSeeker.java b/Mage.Sets/src/mage/cards/s/ShortcutSeeker.java index 755321924ca..4b987104cfe 100644 --- a/Mage.Sets/src/mage/cards/s/ShortcutSeeker.java +++ b/Mage.Sets/src/mage/cards/s/ShortcutSeeker.java @@ -3,6 +3,7 @@ package mage.cards.s; import mage.MageInt; import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility; import mage.abilities.effects.keyword.VentureIntoTheDungeonEffect; +import mage.abilities.hint.common.CurrentDungeonHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -26,7 +27,7 @@ public final class ShortcutSeeker extends CardImpl { // Whenever Shortcut Seeker deals combat damage to a player, venture into the dungeon. this.addAbility(new DealsCombatDamageToAPlayerTriggeredAbility( new VentureIntoTheDungeonEffect(), false - )); + ).addHint(CurrentDungeonHint.instance)); } private ShortcutSeeker(final ShortcutSeeker card) { diff --git a/Mage.Sets/src/mage/cards/t/ThoroughInvestigation.java b/Mage.Sets/src/mage/cards/t/ThoroughInvestigation.java index af6067f8b5d..37091da9657 100644 --- a/Mage.Sets/src/mage/cards/t/ThoroughInvestigation.java +++ b/Mage.Sets/src/mage/cards/t/ThoroughInvestigation.java @@ -4,6 +4,7 @@ import mage.abilities.common.AttacksWithCreaturesTriggeredAbility; import mage.abilities.common.SacrificePermanentTriggeredAbility; import mage.abilities.effects.keyword.InvestigateEffect; import mage.abilities.effects.keyword.VentureIntoTheDungeonEffect; +import mage.abilities.hint.common.CurrentDungeonHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -23,7 +24,8 @@ public final class ThoroughInvestigation extends CardImpl { this.addAbility(new AttacksWithCreaturesTriggeredAbility(new InvestigateEffect(), 1)); // Whenever you sacrifice a Clue, venture into the dungeon. - this.addAbility(new SacrificePermanentTriggeredAbility(new VentureIntoTheDungeonEffect(), StaticFilters.FILTER_CONTROLLED_CLUE)); + this.addAbility(new SacrificePermanentTriggeredAbility(new VentureIntoTheDungeonEffect(), StaticFilters.FILTER_CONTROLLED_CLUE) + .addHint(CurrentDungeonHint.instance)); } private ThoroughInvestigation(final ThoroughInvestigation card) { diff --git a/Mage.Sets/src/mage/cards/t/TriumphantAdventurer.java b/Mage.Sets/src/mage/cards/t/TriumphantAdventurer.java index 03c7406dee0..6a562cf14b9 100644 --- a/Mage.Sets/src/mage/cards/t/TriumphantAdventurer.java +++ b/Mage.Sets/src/mage/cards/t/TriumphantAdventurer.java @@ -8,6 +8,7 @@ import mage.abilities.condition.common.MyTurnCondition; import mage.abilities.decorator.ConditionalContinuousEffect; import mage.abilities.effects.common.continuous.GainAbilitySourceEffect; import mage.abilities.effects.keyword.VentureIntoTheDungeonEffect; +import mage.abilities.hint.common.CurrentDungeonHint; import mage.abilities.hint.common.MyTurnHint; import mage.abilities.keyword.FirstStrikeAbility; import mage.constants.Duration; @@ -42,7 +43,8 @@ public final class TriumphantAdventurer extends CardImpl { ).addHint(MyTurnHint.instance)); // Whenever Triumphant Adventurer attacks, venture into the dungeon. - this.addAbility(new AttacksTriggeredAbility(new VentureIntoTheDungeonEffect(), false)); + this.addAbility(new AttacksTriggeredAbility(new VentureIntoTheDungeonEffect(), false) + .addHint(CurrentDungeonHint.instance)); } private TriumphantAdventurer(final TriumphantAdventurer card) { diff --git a/Mage.Sets/src/mage/cards/v/VarisSilverymoonRanger.java b/Mage.Sets/src/mage/cards/v/VarisSilverymoonRanger.java index 636e004bd05..a4822f7517a 100644 --- a/Mage.Sets/src/mage/cards/v/VarisSilverymoonRanger.java +++ b/Mage.Sets/src/mage/cards/v/VarisSilverymoonRanger.java @@ -6,6 +6,7 @@ import mage.abilities.common.SpellCastControllerTriggeredAbility; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.keyword.VentureIntoTheDungeonEffect; +import mage.abilities.hint.common.CurrentDungeonHint; import mage.abilities.keyword.ReachAbility; import mage.abilities.keyword.WardAbility; import mage.cards.CardImpl; @@ -52,7 +53,7 @@ public final class VarisSilverymoonRanger extends CardImpl { // Whenever you cast a creature or planeswalker spell, venture into the dungeon. This ability triggers only once each turn. this.addAbility(new SpellCastControllerTriggeredAbility( new VentureIntoTheDungeonEffect(), filter, false - ).setTriggersLimitEachTurn(1)); + ).setTriggersLimitEachTurn(1).addHint(CurrentDungeonHint.instance)); // Whenever you complete a dungeon, create a 2/2 green Wolf creature token. this.addAbility(new CompletedDungeonTriggeredAbility(new CreateTokenEffect(new WolfToken()))); diff --git a/Mage.Sets/src/mage/cards/v/VeteranDungeoneer.java b/Mage.Sets/src/mage/cards/v/VeteranDungeoneer.java index e3c42eefed8..b0d5f86142f 100644 --- a/Mage.Sets/src/mage/cards/v/VeteranDungeoneer.java +++ b/Mage.Sets/src/mage/cards/v/VeteranDungeoneer.java @@ -3,6 +3,7 @@ package mage.cards.v; import mage.MageInt; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.effects.keyword.VentureIntoTheDungeonEffect; +import mage.abilities.hint.common.CurrentDungeonHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -24,7 +25,8 @@ public final class VeteranDungeoneer extends CardImpl { this.toughness = new MageInt(4); // When Veteran Dungeoneer enters the battlefield, venture into the dungeon. - this.addAbility(new EntersBattlefieldTriggeredAbility(new VentureIntoTheDungeonEffect())); + this.addAbility(new EntersBattlefieldTriggeredAbility(new VentureIntoTheDungeonEffect()) + .addHint(CurrentDungeonHint.instance)); } private VeteranDungeoneer(final VeteranDungeoneer card) { diff --git a/Mage.Sets/src/mage/cards/w/WanderingTroubadour.java b/Mage.Sets/src/mage/cards/w/WanderingTroubadour.java index c7de5e80060..b04a532746a 100644 --- a/Mage.Sets/src/mage/cards/w/WanderingTroubadour.java +++ b/Mage.Sets/src/mage/cards/w/WanderingTroubadour.java @@ -6,6 +6,7 @@ import mage.abilities.common.BeginningOfYourEndStepTriggeredAbility; import mage.abilities.condition.common.LandfallCondition; import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; import mage.abilities.effects.keyword.VentureIntoTheDungeonEffect; +import mage.abilities.hint.common.CurrentDungeonHint; import mage.constants.SubType; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -31,7 +32,7 @@ public final class WanderingTroubadour extends CardImpl { new BeginningOfYourEndStepTriggeredAbility(new VentureIntoTheDungeonEffect(), false), LandfallCondition.instance, "At the beginning of your end step, if you had a land enter the battlefield under your control this turn, venture into the dungeon." - ), new LandfallWatcher()); + ).addHint(CurrentDungeonHint.instance), new LandfallWatcher()); } private WanderingTroubadour(final WanderingTroubadour card) { diff --git a/Mage.Sets/src/mage/cards/y/YouFindACursedIdol.java b/Mage.Sets/src/mage/cards/y/YouFindACursedIdol.java index a275b9292ea..95d30ba7bcb 100644 --- a/Mage.Sets/src/mage/cards/y/YouFindACursedIdol.java +++ b/Mage.Sets/src/mage/cards/y/YouFindACursedIdol.java @@ -4,6 +4,7 @@ import mage.abilities.Mode; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.effects.keyword.VentureIntoTheDungeonEffect; +import mage.abilities.hint.common.CurrentDungeonHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -36,6 +37,7 @@ public final class YouFindACursedIdol extends CardImpl { mode = new Mode(new CreateTokenEffect(new TreasureToken())); mode.addEffect(new VentureIntoTheDungeonEffect().concatBy("and")); this.getSpellAbility().addMode(mode.withFlavorWord("Steal Its Eyes")); + this.getSpellAbility().addHint(CurrentDungeonHint.instance); } private YouFindACursedIdol(final YouFindACursedIdol card) { diff --git a/Mage.Sets/src/mage/cards/y/YuanTiFangBlade.java b/Mage.Sets/src/mage/cards/y/YuanTiFangBlade.java index e33ca95618c..74752e85caf 100644 --- a/Mage.Sets/src/mage/cards/y/YuanTiFangBlade.java +++ b/Mage.Sets/src/mage/cards/y/YuanTiFangBlade.java @@ -3,6 +3,7 @@ package mage.cards.y; import mage.MageInt; import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility; import mage.abilities.effects.keyword.VentureIntoTheDungeonEffect; +import mage.abilities.hint.common.CurrentDungeonHint; import mage.abilities.keyword.DeathtouchAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -30,7 +31,7 @@ public final class YuanTiFangBlade extends CardImpl { // Whenever Yuan-Ti Fang-Blade deals combat damage to a player, venture into the dungeon. this.addAbility(new DealsCombatDamageToAPlayerTriggeredAbility( new VentureIntoTheDungeonEffect(), false - )); + ).addHint(CurrentDungeonHint.instance)); } private YuanTiFangBlade(final YuanTiFangBlade card) { diff --git a/Mage.Sets/src/mage/cards/y/YuanTiMalison.java b/Mage.Sets/src/mage/cards/y/YuanTiMalison.java index b146543c87f..5e946677a36 100644 --- a/Mage.Sets/src/mage/cards/y/YuanTiMalison.java +++ b/Mage.Sets/src/mage/cards/y/YuanTiMalison.java @@ -8,6 +8,7 @@ import mage.abilities.condition.common.SourceAttackingAloneCondition; import mage.abilities.decorator.ConditionalRestrictionEffect; import mage.abilities.effects.common.combat.CantBeBlockedSourceEffect; import mage.abilities.effects.keyword.VentureIntoTheDungeonEffect; +import mage.abilities.hint.common.CurrentDungeonHint; import mage.constants.SubType; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -35,7 +36,8 @@ public final class YuanTiMalison extends CardImpl { ))); // Whenever Yuan-Ti Malison deals combat damage to a player, venture into the dungeon. - this.addAbility(new DealsCombatDamageToAPlayerTriggeredAbility(new VentureIntoTheDungeonEffect(), false)); + this.addAbility(new DealsCombatDamageToAPlayerTriggeredAbility(new VentureIntoTheDungeonEffect(), false) + .addHint(CurrentDungeonHint.instance)); } private YuanTiMalison(final YuanTiMalison card) { diff --git a/Mage.Sets/src/mage/cards/z/ZaltoFireGiantDuke.java b/Mage.Sets/src/mage/cards/z/ZaltoFireGiantDuke.java index ae3cb993916..641b230a9d7 100644 --- a/Mage.Sets/src/mage/cards/z/ZaltoFireGiantDuke.java +++ b/Mage.Sets/src/mage/cards/z/ZaltoFireGiantDuke.java @@ -3,6 +3,7 @@ package mage.cards.z; import mage.MageInt; import mage.abilities.common.DealtDamageToSourceTriggeredAbility; import mage.abilities.effects.keyword.VentureIntoTheDungeonEffect; +import mage.abilities.hint.common.CurrentDungeonHint; import mage.abilities.keyword.TrampleAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -30,7 +31,8 @@ public final class ZaltoFireGiantDuke extends CardImpl { this.addAbility(TrampleAbility.getInstance()); // Whenever Zalto, Fire Giant Duke is dealt damage, venture into the dungeon. - this.addAbility(new DealtDamageToSourceTriggeredAbility(new VentureIntoTheDungeonEffect(), false)); + this.addAbility(new DealtDamageToSourceTriggeredAbility(new VentureIntoTheDungeonEffect(), false) + .addHint(CurrentDungeonHint.instance)); } private ZaltoFireGiantDuke(final ZaltoFireGiantDuke card) { diff --git a/Mage.Sets/src/mage/cards/z/ZombieOgre.java b/Mage.Sets/src/mage/cards/z/ZombieOgre.java index 43f04c185f0..89ff6becde8 100644 --- a/Mage.Sets/src/mage/cards/z/ZombieOgre.java +++ b/Mage.Sets/src/mage/cards/z/ZombieOgre.java @@ -4,6 +4,7 @@ import mage.MageInt; import mage.abilities.common.BeginningOfEndStepTriggeredAbility; import mage.abilities.condition.common.MorbidCondition; import mage.abilities.effects.keyword.VentureIntoTheDungeonEffect; +import mage.abilities.hint.common.CurrentDungeonHint; import mage.abilities.hint.common.MorbidHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -31,7 +32,7 @@ public final class ZombieOgre extends CardImpl { this.addAbility(new BeginningOfEndStepTriggeredAbility( Zone.BATTLEFIELD, new VentureIntoTheDungeonEffect(), TargetController.YOU, MorbidCondition.instance, false - ).addHint(MorbidHint.instance)); + ).addHint(MorbidHint.instance).addHint(CurrentDungeonHint.instance)); } private ZombieOgre(final ZombieOgre card) { diff --git a/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java b/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java index d7d8717eb27..400605b0428 100644 --- a/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java +++ b/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java @@ -16,6 +16,7 @@ import mage.abilities.effects.common.FightTargetsEffect; import mage.abilities.effects.common.counter.ProliferateEffect; import mage.abilities.effects.keyword.ScryEffect; import mage.abilities.hint.common.CitysBlessingHint; +import mage.abilities.hint.common.CurrentDungeonHint; import mage.abilities.hint.common.InitiativeHint; import mage.abilities.hint.common.MonarchHint; import mage.abilities.keyword.*; @@ -2070,6 +2071,7 @@ public class VerifyCardDataTest { cardHints.put(CitysBlessingHint.class, "city's blessing"); cardHints.put(MonarchHint.class, "the monarch"); cardHints.put(InitiativeHint.class, "the initiative"); + cardHints.put(CurrentDungeonHint.class, "venture into"); for (Class hintClass : cardHints.keySet()) { String lookupText = cardHints.get(hintClass); boolean needHint = ref.text.contains(lookupText); diff --git a/Mage/src/main/java/mage/abilities/hint/common/CurrentDungeonHint.java b/Mage/src/main/java/mage/abilities/hint/common/CurrentDungeonHint.java new file mode 100644 index 00000000000..5ce7d0763de --- /dev/null +++ b/Mage/src/main/java/mage/abilities/hint/common/CurrentDungeonHint.java @@ -0,0 +1,43 @@ +package mage.abilities.hint.common; + +import mage.abilities.Ability; +import mage.abilities.condition.common.CitysBlessingCondition; +import mage.abilities.hint.ConditionHint; +import mage.abilities.hint.Hint; +import mage.game.Game; +import mage.game.command.Dungeon; +import mage.players.Player; + +/** + * @author JayDi85 + */ +public enum CurrentDungeonHint implements Hint { + + instance; + private static final ConditionHint hint = new ConditionHint(CitysBlessingCondition.instance, "You have city's blessing"); + + @Override + public String getText(Game game, Ability ability) { + Player player = game.getPlayer(ability.getControllerId()); + if (player == null) { + return ""; + } + + Dungeon dungeon = game.getPlayerDungeon(ability.getControllerId()); + if (dungeon == null) { + return "Current dungeon: not yet entered"; + } + + String dungeonInfo = "Current dungeon: " + dungeon.getLogName(); + if (dungeon.getCurrentRoom() != null) { + dungeonInfo += ", room: " + dungeon.getCurrentRoom().getName(); + } + + return dungeonInfo; + } + + @Override + public Hint copy() { + return instance; + } +} diff --git a/Mage/src/main/java/mage/designations/Initiative.java b/Mage/src/main/java/mage/designations/Initiative.java index da72667065a..244ac075bfe 100644 --- a/Mage/src/main/java/mage/designations/Initiative.java +++ b/Mage/src/main/java/mage/designations/Initiative.java @@ -3,6 +3,7 @@ package mage.designations; import mage.abilities.Ability; import mage.abilities.TriggeredAbilityImpl; import mage.abilities.effects.OneShotEffect; +import mage.abilities.hint.common.CurrentDungeonHint; import mage.constants.Outcome; import mage.constants.Zone; import mage.game.Controllable; @@ -113,6 +114,7 @@ class InitiativeVentureTriggeredAbility extends TriggeredAbilityImpl { InitiativeVentureTriggeredAbility() { super(Zone.ALL, new InitiativeUndercityEffect()); + addHint(CurrentDungeonHint.instance); } private InitiativeVentureTriggeredAbility(final InitiativeVentureTriggeredAbility ability) { diff --git a/Mage/src/main/java/mage/game/Game.java b/Mage/src/main/java/mage/game/Game.java index 5e5f5b58ca5..c6d8c2b0aa0 100644 --- a/Mage/src/main/java/mage/game/Game.java +++ b/Mage/src/main/java/mage/game/Game.java @@ -88,7 +88,7 @@ public interface Game extends MageItem, Serializable, Copyable { Dungeon getDungeon(UUID objectId); - Dungeon getPlayerDungeon(UUID objectId); + Dungeon getPlayerDungeon(UUID playerId); UUID getControllerId(UUID objectId); @@ -456,7 +456,12 @@ public interface Game extends MageItem, Serializable, Copyable { Dungeon addDungeon(Dungeon dungeon, UUID playerId); - void ventureIntoDungeon(UUID playerId, boolean undercity); + /** + * Enter to dungeon or go to next room + * + * @param isEnterToUndercity - enter to Undercity instead choose a new dungeon + */ + void ventureIntoDungeon(UUID playerId, boolean isEnterToUndercity); void temptWithTheRing(UUID playerId); diff --git a/Mage/src/main/java/mage/game/GameImpl.java b/Mage/src/main/java/mage/game/GameImpl.java index 4631cb50f98..8c122146d71 100644 --- a/Mage/src/main/java/mage/game/GameImpl.java +++ b/Mage/src/main/java/mage/game/GameImpl.java @@ -560,14 +560,14 @@ public abstract class GameImpl implements Game { } @Override - public void ventureIntoDungeon(UUID playerId, boolean undercity) { + public void ventureIntoDungeon(UUID playerId, boolean isEnterToUndercity) { if (playerId == null) { return; } if (replaceEvent(GameEvent.getEvent(GameEvent.EventType.VENTURE, playerId, null, playerId))) { return; } - this.getOrCreateDungeon(playerId, undercity).moveToNextRoom(playerId, this); + this.getOrCreateDungeon(playerId, isEnterToUndercity).moveToNextRoom(playerId, this); fireEvent(GameEvent.getEvent(GameEvent.EventType.VENTURED, playerId, null, playerId)); }