Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[MB2] Implement Hish of the Snake Cult #13102

Merged
merged 1 commit into from
Dec 2, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
66 changes: 66 additions & 0 deletions Mage.Sets/src/mage/cards/h/HishOfTheSnakeCult.java
Original file line number Diff line number Diff line change
@@ -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);
}
}
1 change: 1 addition & 0 deletions Mage.Sets/src/mage/sets/MysteryBooster2.java
Original file line number Diff line number Diff line change
Expand Up @@ -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));
Expand Down
12 changes: 10 additions & 2 deletions Mage/src/main/java/mage/abilities/keyword/DauntAbility.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,21 +13,28 @@
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() {
return filter;
}

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
Expand All @@ -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 <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.";
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ public PoisonousAbility(PoisonousAbility ability) {

@Override
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
Expand All @@ -53,4 +53,4 @@ private AddPoisonCountersEffect(final AddPoisonCountersEffect effect) {
public AddPoisonCountersEffect copy() {
return new AddPoisonCountersEffect(this);
}
}
}
Loading