diff --git a/Mage.Sets/src/mage/cards/v/VanguardSuppressor.java b/Mage.Sets/src/mage/cards/v/VanguardSuppressor.java new file mode 100644 index 00000000000..8a4c81cb802 --- /dev/null +++ b/Mage.Sets/src/mage/cards/v/VanguardSuppressor.java @@ -0,0 +1,49 @@ +package mage.cards.v; + +import mage.MageInt; +import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.effects.common.DrawCardSourceControllerEffect; +import mage.abilities.keyword.FlyingAbility; +import mage.abilities.keyword.SquadAbility; +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 VanguardSuppressor extends CardImpl { + + public VanguardSuppressor(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}"); + + this.subtype.add(SubType.ASTARTES); + this.subtype.add(SubType.WARRIOR); + this.power = new MageInt(3); + this.toughness = new MageInt(2); + + // Squad {2} + this.addAbility(new SquadAbility(new ManaCostsImpl<>("{2}"))); + + // Flying + this.addAbility(FlyingAbility.getInstance()); + + // Suppressing Fire -- Whenever Vanguard Suppressor deals combat damage to a player, draw a card. + this.addAbility(new DealsCombatDamageToAPlayerTriggeredAbility( + new DrawCardSourceControllerEffect(1), false + ).withFlavorWord("Suppressing Fire")); + } + + private VanguardSuppressor(final VanguardSuppressor card) { + super(card); + } + + @Override + public VanguardSuppressor copy() { + return new VanguardSuppressor(this); + } +} diff --git a/Mage.Sets/src/mage/sets/Warhammer40000.java b/Mage.Sets/src/mage/sets/Warhammer40000.java index fd42c6bcbfa..0f19b71ba69 100644 --- a/Mage.Sets/src/mage/sets/Warhammer40000.java +++ b/Mage.Sets/src/mage/sets/Warhammer40000.java @@ -4,11 +4,16 @@ import mage.cards.ExpansionSet; import mage.constants.Rarity; import mage.constants.SetType; +import java.util.Arrays; +import java.util.List; + /** * @author TheElk801 */ public final class Warhammer40000 extends ExpansionSet { + private static final List unfinished = Arrays.asList("Vanguard Suppressor"); + private static final Warhammer40000 instance = new Warhammer40000(); public static Warhammer40000 getInstance() { @@ -146,6 +151,7 @@ public final class Warhammer40000 extends ExpansionSet { cards.add(new SetCardInfo("Tyranid Prime", 145, Rarity.RARE, mage.cards.t.TyranidPrime.class)); cards.add(new SetCardInfo("Tyrant Guard", 103, Rarity.RARE, mage.cards.t.TyrantGuard.class)); cards.add(new SetCardInfo("Unclaimed Territory", 304, Rarity.UNCOMMON, mage.cards.u.UnclaimedTerritory.class)); + cards.add(new SetCardInfo("Vanguard Suppressor", 27, Rarity.RARE, mage.cards.v.VanguardSuppressor.class)); cards.add(new SetCardInfo("Venomcrawler", 68, Rarity.RARE, mage.cards.v.Venomcrawler.class)); cards.add(new SetCardInfo("Venomthrope", 147, Rarity.UNCOMMON, mage.cards.v.Venomthrope.class)); cards.add(new SetCardInfo("Warstorm Surge", 209, Rarity.RARE, mage.cards.w.WarstormSurge.class)); @@ -153,5 +159,7 @@ public final class Warhammer40000 extends ExpansionSet { cards.add(new SetCardInfo("Winged Hive Tyrant", 148, Rarity.RARE, mage.cards.w.WingedHiveTyrant.class)); cards.add(new SetCardInfo("Worn Powerstone", 263, Rarity.UNCOMMON, mage.cards.w.WornPowerstone.class)); cards.add(new SetCardInfo("Zoanthrope", 149, Rarity.RARE, mage.cards.z.Zoanthrope.class)); + + cards.removeIf(setCardInfo -> unfinished.contains(setCardInfo.getName())); // remove when mechanic is implemented } } diff --git a/Mage/src/main/java/mage/abilities/keyword/SquadAbility.java b/Mage/src/main/java/mage/abilities/keyword/SquadAbility.java new file mode 100644 index 00000000000..27be07c2069 --- /dev/null +++ b/Mage/src/main/java/mage/abilities/keyword/SquadAbility.java @@ -0,0 +1,30 @@ +package mage.abilities.keyword; + +import mage.abilities.StaticAbility; +import mage.abilities.costs.Cost; +import mage.constants.Zone; + +/** + * @author TheElk801 + */ +public class SquadAbility extends StaticAbility { + + public SquadAbility(Cost cost) { + super(Zone.STACK, null); + // TODO: implement this + } + + private SquadAbility(final SquadAbility ability) { + super(ability); + } + + @Override + public SquadAbility copy() { + return new SquadAbility(this); + } + + @Override + public String getRule() { + return "Squad"; + } +} diff --git a/Utils/keywords.txt b/Utils/keywords.txt index 499d4fa0ee7..546643461fa 100644 --- a/Utils/keywords.txt +++ b/Utils/keywords.txt @@ -105,6 +105,7 @@ Soulbond|new| Soulshift|number| Skulk|new| Spectacle|card, cost| +Squad|cost| Storm|new| Sunburst|new| Suspend|number, cost, card|