diff --git a/Mage.Sets/src/mage/cards/t/TyranidHarridan.java b/Mage.Sets/src/mage/cards/t/TyranidHarridan.java new file mode 100644 index 00000000000..08673eec020 --- /dev/null +++ b/Mage.Sets/src/mage/cards/t/TyranidHarridan.java @@ -0,0 +1,79 @@ +package mage.cards.t; + +import mage.MageInt; +import mage.abilities.common.DealsDamageToAPlayerAllTriggeredAbility; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.effects.common.CreateTokenEffect; +import mage.abilities.keyword.FlyingAbility; +import mage.abilities.keyword.WardAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.SetTargetPointer; +import mage.constants.SubType; +import mage.filter.FilterPermanent; +import mage.filter.common.FilterControlledPermanent; +import mage.game.Game; +import mage.game.events.GameEvent; +import mage.game.permanent.token.TyranidGargoyleToken; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class TyranidHarridan extends CardImpl { + + public TyranidHarridan(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{G}{U}"); + + this.subtype.add(SubType.TYRANID); + this.power = new MageInt(4); + this.toughness = new MageInt(4); + + // Flying + this.addAbility(FlyingAbility.getInstance()); + + // Ward {4} + this.addAbility(new WardAbility(new ManaCostsImpl<>("{4}"))); + + // Shrieking Gargoyles -- Whenever Tyranid Harridan or another Tyranid you control deals combat damage to a player, create a 1/1 blue Tyranid Gargoyle creature token with flying. + this.addAbility(new TyranidHarridanTriggeredAbility()); + } + + private TyranidHarridan(final TyranidHarridan card) { + super(card); + } + + @Override + public TyranidHarridan copy() { + return new TyranidHarridan(this); + } +} + +class TyranidHarridanTriggeredAbility extends DealsDamageToAPlayerAllTriggeredAbility { + + private static final FilterPermanent filter = new FilterControlledPermanent( + SubType.TYRANID, "{this} or another Tyranid you control" + ); + + TyranidHarridanTriggeredAbility() { + super(new CreateTokenEffect(new TyranidGargoyleToken()), filter, false, SetTargetPointer.NONE, true); + this.setTriggerPhrase("Shrieking Gargoyles"); + } + + private TyranidHarridanTriggeredAbility(final TyranidHarridanTriggeredAbility ability) { + super(ability); + } + + @Override + public TyranidHarridanTriggeredAbility copy() { + return new TyranidHarridanTriggeredAbility(this); + } + + @Override + public boolean checkTrigger(GameEvent event, Game game) { + return super.checkTrigger(event, game) + && event.getSourceId().equals(this.getSourceId()); + } +} diff --git a/Mage.Sets/src/mage/sets/Warhammer40000.java b/Mage.Sets/src/mage/sets/Warhammer40000.java index f6a30b20073..2b92aa75922 100644 --- a/Mage.Sets/src/mage/sets/Warhammer40000.java +++ b/Mage.Sets/src/mage/sets/Warhammer40000.java @@ -267,6 +267,7 @@ public final class Warhammer40000 extends ExpansionSet { cards.add(new SetCardInfo("Trazyn the Infinite", 65, Rarity.RARE, mage.cards.t.TrazynTheInfinite.class)); cards.add(new SetCardInfo("Triarch Praetorian", 66, Rarity.UNCOMMON, mage.cards.t.TriarchPraetorian.class)); cards.add(new SetCardInfo("Trygon Prime", 143, Rarity.UNCOMMON, mage.cards.t.TrygonPrime.class)); + cards.add(new SetCardInfo("Tyranid Harridan", 144, Rarity.RARE, mage.cards.t.TyranidHarridan.class)); cards.add(new SetCardInfo("Tyranid Invasion", 102, Rarity.UNCOMMON, mage.cards.t.TyranidInvasion.class)); 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));