[FIN] Implement Hope Estheim

This commit is contained in:
theelk801 2025-05-23 13:49:05 -04:00 committed by Failure
parent 81b084970a
commit f97a59a379
3 changed files with 63 additions and 5 deletions

View file

@ -0,0 +1,48 @@
package mage.cards.h;
import mage.MageInt;
import mage.abilities.dynamicvalue.common.ControllerGainedLifeCount;
import mage.abilities.effects.common.MillCardsEachPlayerEffect;
import mage.abilities.keyword.LifelinkAbility;
import mage.abilities.triggers.BeginningOfEndStepTriggeredAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.SuperType;
import mage.constants.TargetController;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class HopeEstheim extends CardImpl {
public HopeEstheim(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}{U}");
this.supertype.add(SuperType.LEGENDARY);
this.subtype.add(SubType.HUMAN);
this.subtype.add(SubType.WIZARD);
this.power = new MageInt(2);
this.toughness = new MageInt(2);
// Lifelink
this.addAbility(LifelinkAbility.getInstance());
// At the beginning of your end step, each opponent mills X cards, where X is the amount of life you gained this turn.
this.addAbility(new BeginningOfEndStepTriggeredAbility(new MillCardsEachPlayerEffect(
ControllerGainedLifeCount.instance, TargetController.OPPONENT
)));
}
private HopeEstheim(final HopeEstheim card) {
super(card);
}
@Override
public HopeEstheim copy() {
return new HopeEstheim(this);
}
}

View file

@ -174,6 +174,10 @@ public final class FinalFantasy extends ExpansionSet {
cards.add(new SetCardInfo("Hades, Sorcerer of Eld", 483, Rarity.MYTHIC, mage.cards.h.HadesSorcererOfEld.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Hades, Sorcerer of Eld", 539, Rarity.MYTHIC, mage.cards.h.HadesSorcererOfEld.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Haste Magic", 140, Rarity.COMMON, mage.cards.h.HasteMagic.class));
cards.add(new SetCardInfo("Hope Estheim", 226, Rarity.RARE, mage.cards.h.HopeEstheim.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Hope Estheim", 396, Rarity.RARE, mage.cards.h.HopeEstheim.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Hope Estheim", 491, Rarity.RARE, mage.cards.h.HopeEstheim.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Hope Estheim", 541, Rarity.RARE, mage.cards.h.HopeEstheim.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Ice Flan", 55, Rarity.COMMON, mage.cards.i.IceFlan.class));
cards.add(new SetCardInfo("Ice Magic", 56, Rarity.COMMON, mage.cards.i.IceMagic.class));
cards.add(new SetCardInfo("Ifrit, Warden of Inferno", 133, Rarity.MYTHIC, mage.cards.i.IfritWardenOfInferno.class, NON_FULL_USE_VARIOUS));

View file

@ -97,11 +97,17 @@ public class MillCardsEachPlayerEffect extends OneShotEffect {
throw new UnsupportedOperationException("TargetController type not supported.");
}
sb.append("mills ");
if (numberCards.toString().equals("1")) {
sb.append("a card");
} else {
sb.append(CardUtil.numberToText(numberCards.toString()));
sb.append(" cards");
switch (numberCards.toString()) {
case "1":
sb.append("a card");
break;
case "X":
sb.append("X cards, where X is ");
sb.append(numberCards.getMessage());
break;
default:
sb.append(CardUtil.numberToText(numberCards.toString()));
sb.append(" cards");
}
return sb.toString();
}