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
+}