From d5d33adbb83ba3d79e920f170e53b9fb8b0e1272 Mon Sep 17 00:00:00 2001 From: Evan Kranzler Date: Sun, 2 Oct 2022 21:37:23 -0400 Subject: [PATCH] [40K] Implemented Commissar Severina Raine --- .../mage/cards/c/CommissarSeverinaRaine.java | 67 +++++++++++++++++++ Mage.Sets/src/mage/sets/Warhammer40000.java | 1 + 2 files changed, 68 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/c/CommissarSeverinaRaine.java diff --git a/Mage.Sets/src/mage/cards/c/CommissarSeverinaRaine.java b/Mage.Sets/src/mage/cards/c/CommissarSeverinaRaine.java new file mode 100644 index 00000000000..6f21fe2506b --- /dev/null +++ b/Mage.Sets/src/mage/cards/c/CommissarSeverinaRaine.java @@ -0,0 +1,67 @@ +package mage.cards.c; + +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.AttacksTriggeredAbility; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.common.SacrificeTargetCost; +import mage.abilities.costs.mana.GenericManaCost; +import mage.abilities.dynamicvalue.DynamicValue; +import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; +import mage.abilities.effects.common.DrawCardSourceControllerEffect; +import mage.abilities.effects.common.GainLifeEffect; +import mage.abilities.effects.common.LoseLifeOpponentsEffect; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.SubType; +import mage.constants.SuperType; +import mage.filter.FilterPermanent; +import mage.filter.StaticFilters; +import mage.filter.common.FilterAttackingCreature; +import mage.filter.predicate.mageobject.AnotherPredicate; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class CommissarSeverinaRaine extends CardImpl { + + private static final FilterPermanent filter = new FilterAttackingCreature("other attacking creatures"); + + static { + filter.add(AnotherPredicate.instance); + } + + private static final DynamicValue xValue = new PermanentsOnBattlefieldCount(filter, null); + + public CommissarSeverinaRaine(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}{B}"); + + this.addSuperType(SuperType.LEGENDARY); + this.subtype.add(SubType.HUMAN); + this.subtype.add(SubType.SOLDIER); + this.power = new MageInt(2); + this.toughness = new MageInt(2); + + // Leading from the Front -- Whenever Commissar Severina Raine attacks, each opponent loses X life, where X is the number of other attacking creatures. + this.addAbility(new AttacksTriggeredAbility(new LoseLifeOpponentsEffect(xValue)) + .withFlavorWord("Leading from the Front")); + + // Summary Execution -- {2}, Sacrifice another creature: You gain 2 life and draw a card. + Ability ability = new SimpleActivatedAbility(new GainLifeEffect(2), new GenericManaCost(2)); + ability.addCost(new SacrificeTargetCost(StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE)); + ability.addEffect(new DrawCardSourceControllerEffect(1).concatBy("and")); + this.addAbility(ability.withFlavorWord("Summary Execution")); + } + + private CommissarSeverinaRaine(final CommissarSeverinaRaine card) { + super(card); + } + + @Override + public CommissarSeverinaRaine copy() { + return new CommissarSeverinaRaine(this); + } +} diff --git a/Mage.Sets/src/mage/sets/Warhammer40000.java b/Mage.Sets/src/mage/sets/Warhammer40000.java index debd590d5dd..b70dbefabc3 100644 --- a/Mage.Sets/src/mage/sets/Warhammer40000.java +++ b/Mage.Sets/src/mage/sets/Warhammer40000.java @@ -68,6 +68,7 @@ public final class Warhammer40000 extends ExpansionSet { cards.add(new SetCardInfo("Collective Effort", 183, Rarity.RARE, mage.cards.c.CollectiveEffort.class)); cards.add(new SetCardInfo("Command Tower", 270, Rarity.COMMON, mage.cards.c.CommandTower.class)); cards.add(new SetCardInfo("Commander's Sphere", 233, Rarity.COMMON, mage.cards.c.CommandersSphere.class)); + cards.add(new SetCardInfo("Commissar Severina Raine", 112, Rarity.RARE, mage.cards.c.CommissarSeverinaRaine.class)); cards.add(new SetCardInfo("Cranial Plating", 236, Rarity.UNCOMMON, mage.cards.c.CranialPlating.class)); cards.add(new SetCardInfo("Crumbling Necropolis", 273, Rarity.UNCOMMON, mage.cards.c.CrumblingNecropolis.class)); cards.add(new SetCardInfo("Cryptothrall", 155, Rarity.RARE, mage.cards.c.Cryptothrall.class));