From 80ca466a0df64369c7725a395270ed7e7b90e1e4 Mon Sep 17 00:00:00 2001 From: xenohedron Date: Sat, 28 Oct 2023 18:55:23 -0400 Subject: [PATCH] implement [LCI] Bedrock Tortoise common ToughnessGreaterThanPowerPredicate --- .../src/mage/cards/a/AncientLumberknot.java | 15 +---- .../src/mage/cards/b/BedrockTortoise.java | 59 +++++++++++++++++++ .../src/mage/cards/i/ImmobilizerEldrazi.java | 25 ++------ .../src/mage/sets/TheLostCavernsOfIxalan.java | 1 + .../ToughnessGreaterThanPowerPredicate.java | 22 +++++++ 5 files changed, 89 insertions(+), 33 deletions(-) create mode 100644 Mage.Sets/src/mage/cards/b/BedrockTortoise.java create mode 100644 Mage/src/main/java/mage/filter/predicate/mageobject/ToughnessGreaterThanPowerPredicate.java diff --git a/Mage.Sets/src/mage/cards/a/AncientLumberknot.java b/Mage.Sets/src/mage/cards/a/AncientLumberknot.java index 8d8224ae9a6..6dc600e309d 100644 --- a/Mage.Sets/src/mage/cards/a/AncientLumberknot.java +++ b/Mage.Sets/src/mage/cards/a/AncientLumberknot.java @@ -8,9 +8,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; -import mage.filter.predicate.Predicate; -import mage.game.Game; -import mage.game.permanent.Permanent; +import mage.filter.predicate.mageobject.ToughnessGreaterThanPowerPredicate; import java.util.UUID; @@ -23,7 +21,7 @@ public final class AncientLumberknot extends CardImpl { = new FilterCreaturePermanent("creature you control with toughness greater than its power"); static { - filter.add(AncientLumberknotPredicate.instance); + filter.add(ToughnessGreaterThanPowerPredicate.instance); } public AncientLumberknot(UUID ownerId, CardSetInfo setInfo) { @@ -46,12 +44,3 @@ public final class AncientLumberknot extends CardImpl { return new AncientLumberknot(this); } } - -enum AncientLumberknotPredicate implements Predicate { - instance; - - @Override - public boolean apply(Permanent input, Game game) { - return input.getToughness().getValue() > input.getPower().getValue(); - } -} diff --git a/Mage.Sets/src/mage/cards/b/BedrockTortoise.java b/Mage.Sets/src/mage/cards/b/BedrockTortoise.java new file mode 100644 index 00000000000..d72b3845df0 --- /dev/null +++ b/Mage.Sets/src/mage/cards/b/BedrockTortoise.java @@ -0,0 +1,59 @@ +package mage.cards.b; + +import mage.MageInt; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.condition.common.MyTurnCondition; +import mage.abilities.decorator.ConditionalContinuousEffect; +import mage.abilities.effects.common.continuous.GainAbilityControlledEffect; +import mage.abilities.effects.common.ruleModifying.CombatDamageByToughnessControlledEffect; +import mage.abilities.keyword.HexproofAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.SubType; +import mage.filter.StaticFilters; +import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.ToughnessGreaterThanPowerPredicate; + +import java.util.UUID; + +/** + * @author xenohedron + */ +public final class BedrockTortoise extends CardImpl { + + private static final FilterCreaturePermanent filter + = new FilterCreaturePermanent("creature you control with toughness greater than its power"); + + static { + filter.add(ToughnessGreaterThanPowerPredicate.instance); + } + + public BedrockTortoise(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}"); + + this.subtype.add(SubType.TURTLE); + this.power = new MageInt(0); + this.toughness = new MageInt(6); + + // As long as it's your turn, creatures you control have hexproof. + this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect( + new GainAbilityControlledEffect(HexproofAbility.getInstance(), Duration.WhileOnBattlefield, StaticFilters.FILTER_CONTROLLED_CREATURES), + MyTurnCondition.instance, + "As long as it's your turn, creatures you control have hexproof" + ))); + + // Each creature you control with toughness greater than its power assigns combat damage equal to its toughness rather than its power. + this.addAbility(new SimpleStaticAbility(new CombatDamageByToughnessControlledEffect(filter))); + } + + private BedrockTortoise(final BedrockTortoise card) { + super(card); + } + + @Override + public BedrockTortoise copy() { + return new BedrockTortoise(this); + } +} diff --git a/Mage.Sets/src/mage/cards/i/ImmobilizerEldrazi.java b/Mage.Sets/src/mage/cards/i/ImmobilizerEldrazi.java index 1ccf402ecf7..47177e71c57 100644 --- a/Mage.Sets/src/mage/cards/i/ImmobilizerEldrazi.java +++ b/Mage.Sets/src/mage/cards/i/ImmobilizerEldrazi.java @@ -1,9 +1,6 @@ - package mage.cards.i; -import java.util.UUID; import mage.MageInt; -import mage.MageObject; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.mana.ManaCostsImpl; @@ -12,12 +9,13 @@ import mage.abilities.keyword.DevoidAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.SubType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; -import mage.filter.predicate.Predicate; -import mage.game.Game; +import mage.filter.predicate.mageobject.ToughnessGreaterThanPowerPredicate; + +import java.util.UUID; /** * @@ -28,7 +26,7 @@ public final class ImmobilizerEldrazi extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Each creature with toughness greater than its power"); static { - filter.add(new ImmobilizerEldraziPredicate()); + filter.add(ToughnessGreaterThanPowerPredicate.instance); } public ImmobilizerEldrazi(UUID ownerId, CardSetInfo setInfo) { @@ -57,16 +55,3 @@ public final class ImmobilizerEldrazi extends CardImpl { return new ImmobilizerEldrazi(this); } } - -class ImmobilizerEldraziPredicate implements Predicate { - - @Override - public boolean apply(MageObject input, Game game) { - return input.getToughness().getValue() > input.getPower().getValue(); - } - - @Override - public String toString() { - return "toughness greater than its power"; - } -} diff --git a/Mage.Sets/src/mage/sets/TheLostCavernsOfIxalan.java b/Mage.Sets/src/mage/sets/TheLostCavernsOfIxalan.java index 4444a9b4e8b..ec2d8f75453 100644 --- a/Mage.Sets/src/mage/sets/TheLostCavernsOfIxalan.java +++ b/Mage.Sets/src/mage/sets/TheLostCavernsOfIxalan.java @@ -25,6 +25,7 @@ public final class TheLostCavernsOfIxalan extends ExpansionSet { cards.add(new SetCardInfo("Aclazotz, Deepest Betrayal", 88, Rarity.MYTHIC, mage.cards.a.AclazotzDeepestBetrayal.class)); cards.add(new SetCardInfo("Amalia Benavides Aguirre", 221, Rarity.RARE, mage.cards.a.AmaliaBenavidesAguirre.class)); cards.add(new SetCardInfo("Bartolome del Presidio", 224, Rarity.UNCOMMON, mage.cards.b.BartolomeDelPresidio.class)); + cards.add(new SetCardInfo("Bedrock Tortoise", 176, Rarity.RARE, mage.cards.b.BedrockTortoise.class)); cards.add(new SetCardInfo("Bladewheel Chariot", 36, Rarity.UNCOMMON, mage.cards.b.BladewheelChariot.class)); cards.add(new SetCardInfo("Bloodletter of Aclazotz", 92, Rarity.MYTHIC, mage.cards.b.BloodletterOfAclazotz.class)); cards.add(new SetCardInfo("Breeches, Eager Pillager", 137, Rarity.RARE, mage.cards.b.BreechesEagerPillager.class)); diff --git a/Mage/src/main/java/mage/filter/predicate/mageobject/ToughnessGreaterThanPowerPredicate.java b/Mage/src/main/java/mage/filter/predicate/mageobject/ToughnessGreaterThanPowerPredicate.java new file mode 100644 index 00000000000..9a539683894 --- /dev/null +++ b/Mage/src/main/java/mage/filter/predicate/mageobject/ToughnessGreaterThanPowerPredicate.java @@ -0,0 +1,22 @@ +package mage.filter.predicate.mageobject; + +import mage.MageObject; +import mage.filter.predicate.Predicate; +import mage.game.Game; + +/** + * @author xenohedron + */ +public enum ToughnessGreaterThanPowerPredicate implements Predicate { + instance; + + @Override + public boolean apply(MageObject input, Game game) { + return input.getToughness().getValue() > input.getPower().getValue(); + } + + @Override + public String toString() { + return "toughness greater than its power"; + } +}