[DSK] Implement Overlord of the Floodpits

This commit is contained in:
theelk801 2024-09-04 16:09:51 -04:00
parent 83d937e17c
commit a090349100
4 changed files with 96 additions and 0 deletions

View file

@ -0,0 +1,46 @@
package mage.cards.o;
import mage.MageInt;
import mage.abilities.common.EntersBattlefieldOrAttacksSourceTriggeredAbility;
import mage.abilities.effects.common.DrawDiscardControllerEffect;
import mage.abilities.keyword.FlyingAbility;
import mage.abilities.keyword.ImpendingAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class OverlordOfTheFloodpits extends CardImpl {
public OverlordOfTheFloodpits(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT, CardType.CREATURE}, "{3}{U}{U}");
this.subtype.add(SubType.AVATAR);
this.subtype.add(SubType.HORROR);
this.power = new MageInt(5);
this.toughness = new MageInt(3);
// Impending 4--{1}{U}{U}
this.addAbility(new ImpendingAbility("{1}{U}{U}"));
// Flying
this.addAbility(FlyingAbility.getInstance());
// Whenever Overlord of the Floodpits enters or attacks, draw two cards, then discard a card.
this.addAbility(new EntersBattlefieldOrAttacksSourceTriggeredAbility(new DrawDiscardControllerEffect(2, 1)));
}
private OverlordOfTheFloodpits(final OverlordOfTheFloodpits card) {
super(card);
}
@Override
public OverlordOfTheFloodpits copy() {
return new OverlordOfTheFloodpits(this);
}
}

View file

@ -55,6 +55,7 @@ public final class DuskmournHouseOfHorror extends ExpansionSet {
cards.add(new SetCardInfo("Mountain", 275, Rarity.LAND, mage.cards.basiclands.Mountain.class, FULL_ART_BFZ_VARIOUS));
cards.add(new SetCardInfo("Murky Sewer", 263, Rarity.COMMON, mage.cards.m.MurkySewer.class));
cards.add(new SetCardInfo("Neglected Manor", 264, Rarity.COMMON, mage.cards.n.NeglectedManor.class));
cards.add(new SetCardInfo("Overlord of the Floodpits", 68, Rarity.MYTHIC, mage.cards.o.OverlordOfTheFloodpits.class));
cards.add(new SetCardInfo("Patched Plaything", 24, Rarity.UNCOMMON, mage.cards.p.PatchedPlaything.class));
cards.add(new SetCardInfo("Patchwork Beastie", 195, Rarity.UNCOMMON, mage.cards.p.PatchworkBeastie.class));
cards.add(new SetCardInfo("Peculiar Lighthouse", 265, Rarity.COMMON, mage.cards.p.PeculiarLighthouse.class));
@ -88,5 +89,7 @@ public final class DuskmournHouseOfHorror extends ExpansionSet {
cards.add(new SetCardInfo("Veteran Survivor", 40, Rarity.UNCOMMON, mage.cards.v.VeteranSurvivor.class));
cards.add(new SetCardInfo("Winter, Misanthropic Guide", 240, Rarity.RARE, mage.cards.w.WinterMisanthropicGuide.class));
cards.add(new SetCardInfo("Zimone, All-Questioning", 241, Rarity.RARE, mage.cards.z.ZimoneAllQuestioning.class));
cards.removeIf(setCardInfo -> setCardInfo.getName().startsWith("Overlord"));
}
}

View file

@ -0,0 +1,46 @@
package mage.abilities.keyword;
import mage.abilities.Ability;
import mage.abilities.costs.AlternativeSourceCostsImpl;
import mage.game.Game;
import mage.util.CardUtil;
/**
* TODO: Implement this
*
* @author TheElk801
*/
public class ImpendingAbility extends AlternativeSourceCostsImpl {
private static final String IMPENDING_KEYWORD = "Impending";
private static final String IMPENDING_REMINDER = "If you cast this spell for its impending cost, " +
"it enters with %s time counters and isn't a creature until the last is removed. " +
"At the beginning of your end step, remove a time counter from it.";
public ImpendingAbility(String manaString) {
this(manaString, 4);
}
public ImpendingAbility(String manaString, int amount) {
super(IMPENDING_KEYWORD + ' ' + amount, String.format(IMPENDING_REMINDER, CardUtil.numberToText(amount)), manaString);
this.setRuleAtTheTop(true);
}
private ImpendingAbility(final ImpendingAbility ability) {
super(ability);
}
@Override
public ImpendingAbility copy() {
return new ImpendingAbility(this);
}
@Override
public boolean isAvailable(Ability source, Game game) {
return true;
}
public static String getActivationKey() {
return getActivationKey(IMPENDING_KEYWORD);
}
}

View file

@ -65,6 +65,7 @@ Gift|card|
Haste|instance|
Hexproof|instance|
Hideaway|number|
Impending|manaString|
Improvise|new|
Indestructible|instance|
Infect|instance|