diff --git a/Mage.Sets/src/mage/cards/s/SyrVondamSunstarExemplar.java b/Mage.Sets/src/mage/cards/s/SyrVondamSunstarExemplar.java new file mode 100644 index 00000000000..7f8662a830d --- /dev/null +++ b/Mage.Sets/src/mage/cards/s/SyrVondamSunstarExemplar.java @@ -0,0 +1,146 @@ +package mage.cards.s; + +import mage.MageInt; +import mage.MageItem; +import mage.MageObject; +import mage.abilities.TriggeredAbilityImpl; +import mage.abilities.effects.common.DestroyTargetEffect; +import mage.abilities.effects.common.GainLifeEffect; +import mage.abilities.effects.common.counter.AddCountersSourceEffect; +import mage.abilities.keyword.MenaceAbility; +import mage.abilities.keyword.VigilanceAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.SubType; +import mage.constants.SuperType; +import mage.constants.Zone; +import mage.counters.CounterType; +import mage.filter.StaticFilters; +import mage.game.Game; +import mage.game.events.GameEvent; +import mage.game.events.ZoneChangeEvent; +import mage.target.common.TargetNonlandPermanent; + +import java.util.Optional; +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class SyrVondamSunstarExemplar extends CardImpl { + + public SyrVondamSunstarExemplar(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}{B}"); + + this.supertype.add(SuperType.LEGENDARY); + this.subtype.add(SubType.HUMAN); + this.subtype.add(SubType.KNIGHT); + this.power = new MageInt(2); + this.toughness = new MageInt(2); + + // Vigilance + this.addAbility(VigilanceAbility.getInstance()); + + // Menace + this.addAbility(new MenaceAbility()); + + // Whenever another creature you control dies or is put into exile, put a +1/+1 counter on Syr Vondam and you gain 1 life. + this.addAbility(new SyrVondamSunstarExemplarFirstTriggeredAbility()); + + // When Syr Vondam dies or is put into exile while its power is 4 or greater, destroy up to one target nonland permanent. + this.addAbility(new SyrVondamSunstarExemplarSecondTriggeredAbility()); + } + + private SyrVondamSunstarExemplar(final SyrVondamSunstarExemplar card) { + super(card); + } + + @Override + public SyrVondamSunstarExemplar copy() { + return new SyrVondamSunstarExemplar(this); + } +} + +class SyrVondamSunstarExemplarFirstTriggeredAbility extends TriggeredAbilityImpl { + + SyrVondamSunstarExemplarFirstTriggeredAbility() { + super(Zone.BATTLEFIELD, new AddCountersSourceEffect(CounterType.P1P1.createInstance())); + this.addEffect(new GainLifeEffect(1).concatBy("and")); + this.setTriggerPhrase("Whenever another creature you control dies or is put into exile, "); + this.setLeavesTheBattlefieldTrigger(true); + } + + private SyrVondamSunstarExemplarFirstTriggeredAbility(final SyrVondamSunstarExemplarFirstTriggeredAbility ability) { + super(ability); + } + + @Override + public SyrVondamSunstarExemplarFirstTriggeredAbility copy() { + return new SyrVondamSunstarExemplarFirstTriggeredAbility(this); + } + + @Override + public boolean checkEventType(GameEvent event, Game game) { + return event.getType() == GameEvent.EventType.ZONE_CHANGE; + } + + @Override + public boolean checkTrigger(GameEvent event, Game game) { + ZoneChangeEvent zEvent = (ZoneChangeEvent) event; + return Zone.BATTLEFIELD.match(zEvent.getFromZone()) + && (Zone.GRAVEYARD.match(zEvent.getToZone()) || Zone.EXILED.match(zEvent.getToZone())) + && StaticFilters + .FILTER_ANOTHER_CREATURE_YOU_CONTROL + .match(zEvent.getTarget(), getControllerId(), this, game); + } + + @Override + public boolean isInUseableZone(Game game, MageObject sourceObject, GameEvent event) { + return TriggeredAbilityImpl.isInUseableZoneDiesTrigger(this, sourceObject, event, game); + } +} + + +class SyrVondamSunstarExemplarSecondTriggeredAbility extends TriggeredAbilityImpl { + + SyrVondamSunstarExemplarSecondTriggeredAbility() { + super(Zone.BATTLEFIELD, new DestroyTargetEffect()); + this.addTarget(new TargetNonlandPermanent(0, 1)); + this.setTriggerPhrase("When {this} dies or is put into exile while its power is 4 or greater, "); + this.setLeavesTheBattlefieldTrigger(true); + } + + private SyrVondamSunstarExemplarSecondTriggeredAbility(final SyrVondamSunstarExemplarSecondTriggeredAbility ability) { + super(ability); + } + + @Override + public SyrVondamSunstarExemplarSecondTriggeredAbility copy() { + return new SyrVondamSunstarExemplarSecondTriggeredAbility(this); + } + + @Override + public boolean checkEventType(GameEvent event, Game game) { + return event.getType() == GameEvent.EventType.ZONE_CHANGE; + } + + @Override + public boolean checkTrigger(GameEvent event, Game game) { + ZoneChangeEvent zEvent = (ZoneChangeEvent) event; + return Zone.BATTLEFIELD.match(zEvent.getFromZone()) + && (Zone.GRAVEYARD.match(zEvent.getToZone()) || Zone.EXILED.match(zEvent.getToZone())) + && Optional + .ofNullable(zEvent) + .map(ZoneChangeEvent::getTarget) + .filter(permanent -> permanent.getPower().getValue() >= 4) + .map(MageItem::getId) + .filter(getSourceId()::equals) + .isPresent(); + } + + @Override + public boolean isInUseableZone(Game game, MageObject sourceObject, GameEvent event) { + return TriggeredAbilityImpl.isInUseableZoneDiesTrigger(this, sourceObject, event, game); + } +} diff --git a/Mage.Sets/src/mage/sets/EdgeOfEternities.java b/Mage.Sets/src/mage/sets/EdgeOfEternities.java index 294dffe4f46..08fb9388a25 100644 --- a/Mage.Sets/src/mage/sets/EdgeOfEternities.java +++ b/Mage.Sets/src/mage/sets/EdgeOfEternities.java @@ -222,6 +222,8 @@ public final class EdgeOfEternities extends ExpansionSet { cards.add(new SetCardInfo("Swamp", 271, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Swamp", 272, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Swamp", 369, Rarity.LAND, mage.cards.basiclands.Swamp.class, FULL_ART_BFZ_VARIOUS)); + cards.add(new SetCardInfo("Syr Vondam, Sunstar Exemplar", 231, Rarity.RARE, mage.cards.s.SyrVondamSunstarExemplar.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Syr Vondam, Sunstar Exemplar", 302, Rarity.RARE, mage.cards.s.SyrVondamSunstarExemplar.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Syr Vondam, the Lucent", 232, Rarity.UNCOMMON, mage.cards.s.SyrVondamTheLucent.class)); cards.add(new SetCardInfo("Systems Override", 161, Rarity.UNCOMMON, mage.cards.s.SystemsOverride.class)); cards.add(new SetCardInfo("Tannuk, Memorial Ensign", 233, Rarity.UNCOMMON, mage.cards.t.TannukMemorialEnsign.class)); diff --git a/Utils/mtg-cards-data.txt b/Utils/mtg-cards-data.txt index 28743cca929..cf16e45e90b 100644 --- a/Utils/mtg-cards-data.txt +++ b/Utils/mtg-cards-data.txt @@ -59221,6 +59221,7 @@ Sami, Ship's Engineer|Edge of Eternities|225|U|{2}{R}{W}|Legendary Creature - Hu Sami, Wildcat Captain|Edge of Eternities|226|M|{4}{R}{W}|Legendary Creature - Human Artificer Rogue|4|4|Double strike, vigilance$Spells you cast have affinity for artifacts.| Seedship Broodtender|Edge of Eternities|227|U|{B}{G}|Creature - Insect Citizen|2|3|When this creature enters, mill three cards.${3}{B}{G}, Sacrifice this creature: Return target creature or Spacecraft card from your graveyard to the battlefield. Activate only as a sorcery.| Singularity Rupture|Edge of Eternities|228|R|{3}{U}{B}{B}|Sorcery|||Destroy all creatures, then any number of target players each mill half their library, rounded down.| +Syr Vondam, Sunstar Exemplar|Edge of Eternities|231|R|{W}{B}|Legendary Creature - Human Knight|2|2|Vigilance, menace$Whenever another creature you control dies or is put into exile, put a +1/+1 counter on Syr Vondam and you gain 1 life.$When Syr Vondam dies or is put into exile while its power is 4 or greater, destroy up to one target nonland permanent.| Syr Vondam, the Lucent|Edge of Eternities|232|U|{2}{W}{B}{B}|Legendary Creature - Human Knight|4|4|Deathtouch, lifelink$Whenever Syr Vondam enters or attacks, other creatures you control get +1/+0 and gain deathtouch until end of turn.| Tannuk, Memorial Ensign|Edge of Eternities|233|U|{1}{R}{G}|Legendary Creature - Kavu Pilot|2|4|Landfall -- Whenever a land you control enters, Tannuk deals 1 damage to each opponent. If this is the second time this ability has resolved this turn, draw a card.| All-Fates Scroll|Edge of Eternities|234|U|{3}|Artifact|||{T}: Add one mana of any color.${7}, {T}, Sacrifice this artifact: Draw X cards, where X is the number of differently named lands you control.| @@ -59285,6 +59286,7 @@ Dyadrine, Synthesis Amalgam|Edge of Eternities|298|R|{X}{G}{W}|Legendary Artifac Genemorph Imago|Edge of Eternities|299|R|{G}{U}|Creature - Insect Druid|1|3|Flying$Landfall -- Whenever a land you control enters, target creature has base power and toughness 3/3 until end of turn. If you control six or more lands, that creature has base power and toughness 6/6 until end of turn instead.| Ragost, Deft Gastronaut|Edge of Eternities|300|R|{R}{W}|Legendary Creature - Lobster Citizen|2|2|Artifacts you control are Foods in addition to their other types and have "{2}, {T}, Sacrifice this artifact: You gain 3 life."${1}, {T}, Sacrifice a Food: Ragost deals 3 damage to each opponent.$At the beginning of each end step, if you gained life this turn, untap Ragost.| Sami, Wildcat Captain|Edge of Eternities|301|M|{4}{R}{W}|Legendary Creature - Human Artificer Rogue|4|4|Double strike, vigilance$Spells you cast have affinity for artifacts.| +Syr Vondam, Sunstar Exemplar|Edge of Eternities|302|R|{W}{B}|Legendary Creature - Human Knight|2|2|Vigilance, menace$Whenever another creature you control dies or is put into exile, put a +1/+1 counter on Syr Vondam and you gain 1 life.$When Syr Vondam dies or is put into exile while its power is 4 or greater, destroy up to one target nonland permanent.| Cosmogrand Zenith|Edge of Eternities|304|M|{2}{W}|Creature - Human Soldier|2|4|Whenever you cast your second spell each turn, choose one --$* Create two 1/1 white Human Soldier creature tokens.$* Put a +1/+1 counter on each creature you control.| Quantum Riddler|Edge of Eternities|305|M|{3}{U}{U}|Creature - Sphinx|4|6|Flying$When this creature enters, draw a card.$As long as you have one or fewer cards in hand, if you would draw one or more cards, you draw that many cards plus one instead.$Warp {1}{U}| Archenemy's Charm|Edge of Eternities|307|R|{B}{B}{B}|Instant|||Choose one --$* Exile target creature or planeswalker.$* Return one or two target creature and/or planeswalker cards from your graveyard to your hand.$* Put two +1/+1 counters on target creature you control. It gains lifelink until end of turn.|