diff --git a/Mage.Sets/src/mage/cards/h/HeraldOfHadar.java b/Mage.Sets/src/mage/cards/h/HeraldOfHadar.java new file mode 100644 index 0000000000..4de23647bf --- /dev/null +++ b/Mage.Sets/src/mage/cards/h/HeraldOfHadar.java @@ -0,0 +1,67 @@ +package mage.cards.h; + +import mage.MageInt; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.effects.common.CreateTokenEffect; +import mage.abilities.effects.common.GainLifeEffect; +import mage.abilities.effects.common.LoseLifeOpponentsEffect; +import mage.abilities.effects.common.RollDieWithResultTableEffect; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.SubType; +import mage.game.permanent.token.TreasureToken; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class HeraldOfHadar extends CardImpl { + + public HeraldOfHadar(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{B}"); + + this.subtype.add(SubType.HUMAN); + this.subtype.add(SubType.WARLOCK); + this.power = new MageInt(4); + this.toughness = new MageInt(4); + + // Circle of Death - {5}{B}: Roll a d20. + RollDieWithResultTableEffect effect = new RollDieWithResultTableEffect(); + this.addAbility(new SimpleActivatedAbility( + effect, new ManaCostsImpl<>("{5}{B}") + ).withFlavorWord("Circle of Death")); + + // 1-9 | Each opponent loses 2 life. + effect.addTableEntry( + 1, 9, + new LoseLifeOpponentsEffect(2) + ); + + // 10-19 | Each opponent loses 2 life and you gain 2 life. + effect.addTableEntry( + 10, 19, + new LoseLifeOpponentsEffect(2), + new GainLifeEffect(2).concatBy("and") + ); + + // 20 | Each opponent loses 2 life and you gain 2 life. Create two Treasure tokens. + effect.addTableEntry( + 20, 20, + new LoseLifeOpponentsEffect(2), + new GainLifeEffect(2).concatBy("and"), + new CreateTokenEffect(new TreasureToken(), 2).concatBy(".") + ); + } + + private HeraldOfHadar(final HeraldOfHadar card) { + super(card); + } + + @Override + public HeraldOfHadar copy() { + return new HeraldOfHadar(this); + } +} diff --git a/Mage.Sets/src/mage/sets/AdventuresInTheForgottenRealms.java b/Mage.Sets/src/mage/sets/AdventuresInTheForgottenRealms.java index 329a75edd4..805ddc7d4b 100644 --- a/Mage.Sets/src/mage/sets/AdventuresInTheForgottenRealms.java +++ b/Mage.Sets/src/mage/sets/AdventuresInTheForgottenRealms.java @@ -85,6 +85,7 @@ public final class AdventuresInTheForgottenRealms extends ExpansionSet { cards.add(new SetCardInfo("Guild Thief", 61, Rarity.UNCOMMON, mage.cards.g.GuildThief.class)); cards.add(new SetCardInfo("Half-Elf Monk", 19, Rarity.COMMON, mage.cards.h.HalfElfMonk.class)); cards.add(new SetCardInfo("Hama Pashar, Ruin Seeker", 224, Rarity.UNCOMMON, mage.cards.h.HamaPasharRuinSeeker.class)); + cards.add(new SetCardInfo("Herald of Hadar", 108, Rarity.COMMON, mage.cards.h.HeraldOfHadar.class)); cards.add(new SetCardInfo("Hill Giant Herdgorger", 187, Rarity.COMMON, mage.cards.h.HillGiantHerdgorger.class)); cards.add(new SetCardInfo("Hive of the Eye Tyrant", 258, Rarity.RARE, mage.cards.h.HiveOfTheEyeTyrant.class)); cards.add(new SetCardInfo("Hoarding Ogre", 146, Rarity.COMMON, mage.cards.h.HoardingOgre.class)); diff --git a/Mage/src/main/java/mage/abilities/effects/common/RollDieWithResultTableEffect.java b/Mage/src/main/java/mage/abilities/effects/common/RollDieWithResultTableEffect.java index df6bca614c..238055810a 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/RollDieWithResultTableEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/RollDieWithResultTableEffect.java @@ -11,6 +11,7 @@ import mage.game.Game; import mage.players.Player; import mage.util.CardUtil; +import java.io.Serializable; import java.util.ArrayList; import java.util.List; @@ -95,7 +96,7 @@ public class RollDieWithResultTableEffect extends OneShotEffect { return sb.toString(); } - private static final class TableEntry { + private static final class TableEntry implements Serializable { private final int min; private final int max; private final Effects effects;