From eee1462eba51b959b1601dd8945edc813212bf4f Mon Sep 17 00:00:00 2001 From: Oleg Agafonov Date: Mon, 1 Jul 2024 13:11:23 +0400 Subject: [PATCH] Aclazotz, Deepest Betrayal // Temple of the Dead - added card hint for second side, refactored to use standard methods --- .../src/mage/cards/t/TempleOfTheDead.java | 38 +++++-------------- .../common/CardsInHandCondition.java | 12 +++++- 2 files changed, 20 insertions(+), 30 deletions(-) diff --git a/Mage.Sets/src/mage/cards/t/TempleOfTheDead.java b/Mage.Sets/src/mage/cards/t/TempleOfTheDead.java index 7c0bf16f60b..30e05be1f76 100644 --- a/Mage.Sets/src/mage/cards/t/TempleOfTheDead.java +++ b/Mage.Sets/src/mage/cards/t/TempleOfTheDead.java @@ -3,17 +3,16 @@ package mage.cards.t; import mage.abilities.Ability; import mage.abilities.common.ActivateIfConditionActivatedAbility; import mage.abilities.condition.Condition; +import mage.abilities.condition.common.CardsInHandCondition; import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.TransformSourceEffect; +import mage.abilities.hint.ConditionHint; +import mage.abilities.hint.Hint; import mage.abilities.mana.BlackManaAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.TimingRule; -import mage.constants.Zone; -import mage.game.Game; -import mage.players.Player; +import mage.constants.*; import java.util.UUID; @@ -22,6 +21,9 @@ import java.util.UUID; */ public final class TempleOfTheDead extends CardImpl { + private static final Condition condition = new CardsInHandCondition(ComparisonType.FEWER_THAN, 2, null, TargetController.ANY); + private static final Hint hint = new ConditionHint(condition, "any player has one or fewer cards in hand"); + public TempleOfTheDead(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.LAND}, ""); this.nightCard = true; @@ -36,10 +38,11 @@ public final class TempleOfTheDead extends CardImpl { Zone.BATTLEFIELD, new TransformSourceEffect(), new ManaCostsImpl<>("{2}{B}"), - TempleOfTheDeadCondition.instance, + condition, TimingRule.SORCERY ); ability.addCost(new TapSourceCost()); + ability.addHint(hint); this.addAbility(ability); } @@ -52,26 +55,3 @@ public final class TempleOfTheDead extends CardImpl { return new TempleOfTheDead(this); } } - -enum TempleOfTheDeadCondition implements Condition { - instance; - - @Override - public boolean apply(Game game, Ability source) { - Player player = game.getPlayer(source.getControllerId()); - if (player == null) { - return false; - } - - return player - .getInRange() - .stream() - .map(game::getPlayer) - .anyMatch(p -> p != null && p.getHand().size() <= 1); - } - - @Override - public String toString() { - return "if a player has one or fewer cards in hand"; - } -} diff --git a/Mage/src/main/java/mage/abilities/condition/common/CardsInHandCondition.java b/Mage/src/main/java/mage/abilities/condition/common/CardsInHandCondition.java index 2ebf89581b7..ba339eb8089 100644 --- a/Mage/src/main/java/mage/abilities/condition/common/CardsInHandCondition.java +++ b/Mage/src/main/java/mage/abilities/condition/common/CardsInHandCondition.java @@ -11,7 +11,7 @@ import mage.util.CardUtil; import java.util.UUID; /** - * Cards in controller hand condition. This condition can decorate other + * Cards in hand condition. This condition can decorate other * conditions as well as be used standalone. * * @author LevelX @@ -58,6 +58,16 @@ public class CardsInHandCondition implements Condition { } break; case ANY: + for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) { + player = game.getPlayer(playerId); + if (player != null) { + if (ComparisonType.compare(player.getHand().size(), type, this.count)) { + conditionApplies = true; + } + } + } + break; + case EACH_PLAYER: boolean conflict = false; for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) { player = game.getPlayer(playerId);