From 87abcbb189febed0f85693411bc3402a5af8a411 Mon Sep 17 00:00:00 2001 From: PurpleCrowbar <26198472+PurpleCrowbar@users.noreply.github.com> Date: Mon, 2 Dec 2024 02:15:33 +0000 Subject: [PATCH] [MB2] Implement Hish of the Snake Cult --- .../src/mage/cards/h/HishOfTheSnakeCult.java | 66 +++++++++++++++++++ Mage.Sets/src/mage/sets/MysteryBooster2.java | 1 + .../mage/abilities/keyword/DauntAbility.java | 12 +++- .../abilities/keyword/PoisonousAbility.java | 4 +- 4 files changed, 79 insertions(+), 4 deletions(-) create mode 100644 Mage.Sets/src/mage/cards/h/HishOfTheSnakeCult.java diff --git a/Mage.Sets/src/mage/cards/h/HishOfTheSnakeCult.java b/Mage.Sets/src/mage/cards/h/HishOfTheSnakeCult.java new file mode 100644 index 000000000000..d3a2b1f9b809 --- /dev/null +++ b/Mage.Sets/src/mage/cards/h/HishOfTheSnakeCult.java @@ -0,0 +1,66 @@ +package mage.cards.h; + +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.effects.common.continuous.BecomesSubtypeAllEffect; +import mage.abilities.effects.common.continuous.GainAbilityControlledEffect; +import mage.abilities.keyword.DauntAbility; +import mage.abilities.keyword.DeathtouchAbility; +import mage.abilities.keyword.PoisonousAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.*; +import mage.filter.common.FilterControlledCreaturePermanent; +import mage.filter.common.FilterCreaturePermanent; + +import java.util.Arrays; +import java.util.UUID; + +/** + * @author PurpleCrowbar + */ +public final class HishOfTheSnakeCult extends CardImpl { + + private static final FilterCreaturePermanent filter = new FilterCreaturePermanent(SubType.SERPENT, "Serpents you control"); + private static final FilterControlledCreaturePermanent filter2 = new FilterControlledCreaturePermanent(SubType.SNAKE, "Snakes you control"); + + static { + filter.add(TargetController.YOU.getControllerPredicate()); + } + + public HishOfTheSnakeCult(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}{G}{U}"); + this.supertype.add(SuperType.LEGENDARY); + this.subtype.add(SubType.SNAKE); + this.power = new MageInt(2); + this.toughness = new MageInt(5); + + // Serpents you control are Snakes. + this.addAbility(new SimpleStaticAbility(new BecomesSubtypeAllEffect( + Duration.WhileOnBattlefield, Arrays.asList(SubType.SNAKE), filter, true + ).setText("Serpents you control are Snakes."))); + + // Snakes you control have daunt, deathtouch, and poisonous 2. + Ability ability = new SimpleStaticAbility(new GainAbilityControlledEffect( + new DauntAbility(true), Duration.WhileOnBattlefield, filter2 + ).setText("Snakes you control have daunt")); + ability.addEffect(new GainAbilityControlledEffect( + DeathtouchAbility.getInstance(), Duration.WhileOnBattlefield, filter2 + ).concatBy(", ").setText("deathtouch")); + ability.addEffect(new GainAbilityControlledEffect( + new PoisonousAbility(2), Duration.WhileOnBattlefield, filter2 + ).concatBy(", and").setText("poisonous 2. " + + "(A creature with daunt can't be blocked by creatures with power 2 or less. Whenever a creature with poisonous 2 deals combat damage to a player, that player gets two poison counters.)")); + this.addAbility(ability); + } + + private HishOfTheSnakeCult(final HishOfTheSnakeCult card) { + super(card); + } + + @Override + public HishOfTheSnakeCult copy() { + return new HishOfTheSnakeCult(this); + } +} diff --git a/Mage.Sets/src/mage/sets/MysteryBooster2.java b/Mage.Sets/src/mage/sets/MysteryBooster2.java index 3a97c5f3c87c..62a03702c84a 100644 --- a/Mage.Sets/src/mage/sets/MysteryBooster2.java +++ b/Mage.Sets/src/mage/sets/MysteryBooster2.java @@ -119,6 +119,7 @@ private MysteryBooster2() { cards.add(new SetCardInfo("Greater Good", 207, Rarity.RARE, mage.cards.g.GreaterGood.class)); cards.add(new SetCardInfo("Grinding Station", 223, Rarity.UNCOMMON, mage.cards.g.GrindingStation.class)); cards.add(new SetCardInfo("Gush", 164, Rarity.COMMON, mage.cards.g.Gush.class)); + cards.add(new SetCardInfo("Hish of the Snake Cult", 356, Rarity.RARE, mage.cards.h.HishOfTheSnakeCult.class)); cards.add(new SetCardInfo("Hogaak, Arisen Necropolis", 136, Rarity.RARE, mage.cards.h.HogaakArisenNecropolis.class)); cards.add(new SetCardInfo("Hollow One", 95, Rarity.RARE, mage.cards.h.HollowOne.class)); cards.add(new SetCardInfo("Hoodwink", 123, Rarity.COMMON, mage.cards.h.Hoodwink.class)); diff --git a/Mage/src/main/java/mage/abilities/keyword/DauntAbility.java b/Mage/src/main/java/mage/abilities/keyword/DauntAbility.java index f2cc938c5477..f2781027d2d9 100644 --- a/Mage/src/main/java/mage/abilities/keyword/DauntAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/DauntAbility.java @@ -13,9 +13,10 @@ public class DauntAbility extends SimpleEvasionAbility { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures with power 2 or less"); + private final boolean asKeyword; static { - filter.add(new PowerPredicate(ComparisonType.FEWER_THAN, 3)); + filter.add(new PowerPredicate(ComparisonType.OR_LESS, 2)); } public static FilterCreaturePermanent getFilter() { @@ -23,11 +24,17 @@ public static FilterCreaturePermanent getFilter() { } public DauntAbility() { + this(false); + } + + public DauntAbility(boolean asKeyword) { super(new CantBeBlockedByCreaturesSourceEffect(filter, Duration.WhileOnBattlefield)); + this.asKeyword = asKeyword; } private DauntAbility(final DauntAbility ability) { super(ability); + this.asKeyword = ability.asKeyword; } @Override @@ -37,6 +44,7 @@ public DauntAbility copy() { @Override public String getRule() { - return "{this} can't be blocked by creatures with power 2 or less."; + return this.asKeyword ? "Daunt ({this} can't be blocked by creatures with power 2 or less.)" : + "{this} can't be blocked by creatures with power 2 or less."; } } diff --git a/Mage/src/main/java/mage/abilities/keyword/PoisonousAbility.java b/Mage/src/main/java/mage/abilities/keyword/PoisonousAbility.java index 069208cd12fc..75d4fdf70564 100644 --- a/Mage/src/main/java/mage/abilities/keyword/PoisonousAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/PoisonousAbility.java @@ -29,7 +29,7 @@ public PoisonousAbility(PoisonousAbility ability) { @Override public String getRule() { - return String.format("Poisonous %d. (%s)", n, super.getRule()); + return String.format("Poisonous %d (%s)", n, super.getRule()); } @Override @@ -53,4 +53,4 @@ private AddPoisonCountersEffect(final AddPoisonCountersEffect effect) { public AddPoisonCountersEffect copy() { return new AddPoisonCountersEffect(this); } -} \ No newline at end of file +}