[MB2] Implement Hish of the Snake Cult (#13102)

This commit is contained in:
PurpleCrowbar 2024-12-02 23:44:58 +00:00 committed by GitHub
parent 695f8e5c4d
commit 9ddafd16ed
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 79 additions and 4 deletions

View file

@ -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. " +
"<i>(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.)</i>"));
this.addAbility(ability);
}
private HishOfTheSnakeCult(final HishOfTheSnakeCult card) {
super(card);
}
@Override
public HishOfTheSnakeCult copy() {
return new HishOfTheSnakeCult(this);
}
}

View file

@ -119,6 +119,7 @@ public class MysteryBooster2 extends ExpansionSet {
cards.add(new SetCardInfo("Greater Good", 207, Rarity.RARE, mage.cards.g.GreaterGood.class)); 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("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("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("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("Hollow One", 95, Rarity.RARE, mage.cards.h.HollowOne.class));
cards.add(new SetCardInfo("Hoodwink", 123, Rarity.COMMON, mage.cards.h.Hoodwink.class)); cards.add(new SetCardInfo("Hoodwink", 123, Rarity.COMMON, mage.cards.h.Hoodwink.class));

View file

@ -13,9 +13,10 @@ import mage.filter.predicate.mageobject.PowerPredicate;
public class DauntAbility extends SimpleEvasionAbility { public class DauntAbility extends SimpleEvasionAbility {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures with power 2 or less"); private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures with power 2 or less");
private final boolean asKeyword;
static { static {
filter.add(new PowerPredicate(ComparisonType.FEWER_THAN, 3)); filter.add(new PowerPredicate(ComparisonType.OR_LESS, 2));
} }
public static FilterCreaturePermanent getFilter() { public static FilterCreaturePermanent getFilter() {
@ -23,11 +24,17 @@ public class DauntAbility extends SimpleEvasionAbility {
} }
public DauntAbility() { public DauntAbility() {
this(false);
}
public DauntAbility(boolean asKeyword) {
super(new CantBeBlockedByCreaturesSourceEffect(filter, Duration.WhileOnBattlefield)); super(new CantBeBlockedByCreaturesSourceEffect(filter, Duration.WhileOnBattlefield));
this.asKeyword = asKeyword;
} }
private DauntAbility(final DauntAbility ability) { private DauntAbility(final DauntAbility ability) {
super(ability); super(ability);
this.asKeyword = ability.asKeyword;
} }
@Override @Override
@ -37,6 +44,7 @@ public class DauntAbility extends SimpleEvasionAbility {
@Override @Override
public String getRule() { public String getRule() {
return "{this} can't be blocked by creatures with power 2 or less."; return this.asKeyword ? "Daunt <i>({this} can't be blocked by creatures with power 2 or less.)</i>" :
"{this} can't be blocked by creatures with power 2 or less.";
} }
} }

View file

@ -29,7 +29,7 @@ public class PoisonousAbility extends DealsCombatDamageToAPlayerTriggeredAbility
@Override @Override
public String getRule() { public String getRule() {
return String.format("Poisonous %d. <i>(%s)</i>", n, super.getRule()); return String.format("Poisonous %d <i>(%s)</i>", n, super.getRule());
} }
@Override @Override
@ -53,4 +53,4 @@ class AddPoisonCountersEffect extends AddCountersTargetEffect {
public AddPoisonCountersEffect copy() { public AddPoisonCountersEffect copy() {
return new AddPoisonCountersEffect(this); return new AddPoisonCountersEffect(this);
} }
} }