diff --git a/Mage.Sets/src/mage/cards/d/DawnstrikeVanguard.java b/Mage.Sets/src/mage/cards/d/DawnstrikeVanguard.java new file mode 100644 index 00000000000..89229a7b49f --- /dev/null +++ b/Mage.Sets/src/mage/cards/d/DawnstrikeVanguard.java @@ -0,0 +1,56 @@ +package mage.cards.d; + +import mage.MageInt; +import mage.abilities.condition.common.TwoTappedCreaturesCondition; +import mage.abilities.effects.common.counter.AddCountersAllEffect; +import mage.abilities.keyword.LifelinkAbility; +import mage.abilities.triggers.BeginningOfEndStepTriggeredAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.SubType; +import mage.counters.CounterType; +import mage.filter.FilterPermanent; +import mage.filter.common.FilterControlledCreaturePermanent; +import mage.filter.predicate.mageobject.AnotherPredicate; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class DawnstrikeVanguard extends CardImpl { + + private static final FilterPermanent filter + = new FilterControlledCreaturePermanent("creature you control other than this creature"); + + static { + filter.add(AnotherPredicate.instance); + } + + public DawnstrikeVanguard(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{W}"); + + this.subtype.add(SubType.HUMAN); + this.subtype.add(SubType.KNIGHT); + this.power = new MageInt(4); + this.toughness = new MageInt(5); + + // Lifelink + this.addAbility(LifelinkAbility.getInstance()); + + // At the beginning of your end step, if you control two or more tapped creatures, put a +1/+1 counter on each creature you control other than this creature. + this.addAbility(new BeginningOfEndStepTriggeredAbility( + new AddCountersAllEffect(CounterType.P1P1.createInstance(), filter) + ).withInterveningIf(TwoTappedCreaturesCondition.instance).addHint(TwoTappedCreaturesCondition.getHint())); + } + + private DawnstrikeVanguard(final DawnstrikeVanguard card) { + super(card); + } + + @Override + public DawnstrikeVanguard copy() { + return new DawnstrikeVanguard(this); + } +} diff --git a/Mage.Sets/src/mage/cards/s/SamiShipsEngineer.java b/Mage.Sets/src/mage/cards/s/SamiShipsEngineer.java index 18e9fda5562..0927546c35e 100644 --- a/Mage.Sets/src/mage/cards/s/SamiShipsEngineer.java +++ b/Mage.Sets/src/mage/cards/s/SamiShipsEngineer.java @@ -1,21 +1,14 @@ package mage.cards.s; import mage.MageInt; -import mage.abilities.condition.Condition; -import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition; -import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; +import mage.abilities.condition.common.TwoTappedCreaturesCondition; import mage.abilities.effects.common.CreateTokenEffect; -import mage.abilities.hint.Hint; -import mage.abilities.hint.ValueHint; import mage.abilities.triggers.BeginningOfEndStepTriggeredAbility; 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.common.FilterControlledCreaturePermanent; -import mage.filter.predicate.permanent.TappedPredicate; import mage.game.permanent.token.RobotToken; import java.util.UUID; @@ -25,18 +18,6 @@ import java.util.UUID; */ public final class SamiShipsEngineer extends CardImpl { - private static final FilterPermanent filter - = new FilterControlledCreaturePermanent("you control two or more tapped creatures"); - - static { - filter.add(TappedPredicate.TAPPED); - } - - private static final Condition condition = new PermanentsOnTheBattlefieldCondition(filter); - private static final Hint hint = new ValueHint( - "Tapped creatures you control", new PermanentsOnBattlefieldCount(filter) - ); - public SamiShipsEngineer(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}{W}"); @@ -49,7 +30,7 @@ public final class SamiShipsEngineer extends CardImpl { // At the beginning of your end step, if you control two or more tapped creatures, create a tapped 2/2 colorless Robot artifact creature token. this.addAbility(new BeginningOfEndStepTriggeredAbility( new CreateTokenEffect(new RobotToken(), 1, true) - ).withInterveningIf(condition).addHint(hint)); + ).withInterveningIf(TwoTappedCreaturesCondition.instance).addHint(TwoTappedCreaturesCondition.getHint())); } private SamiShipsEngineer(final SamiShipsEngineer card) { diff --git a/Mage.Sets/src/mage/cards/s/SunstarChaplain.java b/Mage.Sets/src/mage/cards/s/SunstarChaplain.java index 7d7f214d031..8af764494f6 100644 --- a/Mage.Sets/src/mage/cards/s/SunstarChaplain.java +++ b/Mage.Sets/src/mage/cards/s/SunstarChaplain.java @@ -3,8 +3,7 @@ package mage.cards.s; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; -import mage.abilities.condition.Condition; -import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition; +import mage.abilities.condition.common.TwoTappedCreaturesCondition; import mage.abilities.costs.common.RemoveCounterCost; import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.effects.common.TapTargetEffect; @@ -13,13 +12,9 @@ import mage.abilities.triggers.BeginningOfEndStepTriggeredAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.ComparisonType; import mage.constants.SubType; import mage.counters.CounterType; -import mage.filter.FilterPermanent; import mage.filter.StaticFilters; -import mage.filter.common.FilterControlledCreaturePermanent; -import mage.filter.predicate.permanent.TappedPredicate; import mage.target.TargetPermanent; import mage.target.common.TargetControlledCreaturePermanent; @@ -30,15 +25,6 @@ import java.util.UUID; */ public final class SunstarChaplain extends CardImpl { - private static final FilterPermanent filter - = new FilterControlledCreaturePermanent("you control two or more tapped creatures"); - - static { - filter.add(TappedPredicate.TAPPED); - } - - private static final Condition condition = new PermanentsOnTheBattlefieldCondition(filter, ComparisonType.MORE_THAN,1); - public SunstarChaplain(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}"); @@ -50,9 +36,9 @@ public final class SunstarChaplain extends CardImpl { // At the beginning of your end step, if you control two or more tapped creatures, put a +1/+1 counter on target creature you control. Ability ability = new BeginningOfEndStepTriggeredAbility( new AddCountersTargetEffect(CounterType.P1P1.createInstance()) - ).withInterveningIf(condition); + ).withInterveningIf(TwoTappedCreaturesCondition.instance); ability.addTarget(new TargetControlledCreaturePermanent()); - this.addAbility(ability); + this.addAbility(ability.addHint(TwoTappedCreaturesCondition.getHint())); // {2}, Remove a +1/+1 counter from a creature you control: Tap target artifact or creature. ability = new SimpleActivatedAbility(new TapTargetEffect(), new GenericManaCost(2)); diff --git a/Mage.Sets/src/mage/sets/EdgeOfEternities.java b/Mage.Sets/src/mage/sets/EdgeOfEternities.java index c4ddf0186fb..0b1e31b134f 100644 --- a/Mage.Sets/src/mage/sets/EdgeOfEternities.java +++ b/Mage.Sets/src/mage/sets/EdgeOfEternities.java @@ -75,6 +75,7 @@ public final class EdgeOfEternities extends ExpansionSet { cards.add(new SetCardInfo("Dauntless Scrapbot", 237, Rarity.UNCOMMON, mage.cards.d.DauntlessScrapbot.class)); cards.add(new SetCardInfo("Dawnsire, Sunstar Dreadnought", 238, Rarity.MYTHIC, mage.cards.d.DawnsireSunstarDreadnought.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Dawnsire, Sunstar Dreadnought", 351, Rarity.MYTHIC, mage.cards.d.DawnsireSunstarDreadnought.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Dawnstrike Vanguard", 10, Rarity.UNCOMMON, mage.cards.d.DawnstrikeVanguard.class)); cards.add(new SetCardInfo("Debris Field Crusher", 131, Rarity.UNCOMMON, mage.cards.d.DebrisFieldCrusher.class)); cards.add(new SetCardInfo("Decode Transmissions", 94, Rarity.COMMON, mage.cards.d.DecodeTransmissions.class)); cards.add(new SetCardInfo("Desculpting Blast", 54, Rarity.UNCOMMON, mage.cards.d.DesculptingBlast.class)); diff --git a/Mage/src/main/java/mage/abilities/condition/common/TwoTappedCreaturesCondition.java b/Mage/src/main/java/mage/abilities/condition/common/TwoTappedCreaturesCondition.java new file mode 100644 index 00000000000..76c6288d5b2 --- /dev/null +++ b/Mage/src/main/java/mage/abilities/condition/common/TwoTappedCreaturesCondition.java @@ -0,0 +1,41 @@ +package mage.abilities.condition.common; + +import mage.abilities.Ability; +import mage.abilities.condition.Condition; +import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; +import mage.abilities.hint.Hint; +import mage.abilities.hint.ValueHint; +import mage.filter.FilterPermanent; +import mage.filter.common.FilterControlledCreaturePermanent; +import mage.filter.predicate.permanent.TappedPredicate; +import mage.game.Game; + +/** + * @author TheElk801 + */ +public enum TwoTappedCreaturesCondition implements Condition { + instance; + private static final FilterPermanent filter = new FilterControlledCreaturePermanent(); + + static { + filter.add(TappedPredicate.TAPPED); + } + + private static final Hint hint = new ValueHint( + "Tapped creatures you control", new PermanentsOnBattlefieldCount(filter) + ); + + public static Hint getHint() { + return hint; + } + + @Override + public boolean apply(Game game, Ability source) { + return game.getBattlefield().contains(filter, source.getControllerId(), source, game, 2); + } + + @Override + public String toString() { + return "you control two or more tapped creatures"; + } +} diff --git a/Utils/mtg-cards-data.txt b/Utils/mtg-cards-data.txt index 32a7c350fed..9e3b0586f4d 100644 --- a/Utils/mtg-cards-data.txt +++ b/Utils/mtg-cards-data.txt @@ -59115,6 +59115,7 @@ Astelli Reclaimer|Edge of Eternities|4|R|{3}{W}{W}|Creature - Angel Warrior|5|4| Banishing Light|Edge of Eternities|6|C|{2}{W}|Enchantment|||When this enchantment enters, exile target nonland permanent an opponent controls until this enchantment leaves the battlefield.| Beyond the Quiet|Edge of Eternities|7|R|{3}{W}{W}|Sorcery|||Exile all creatures and Spacecraft.| Cosmogrand Zenith|Edge of Eternities|9|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.| +Dawnstrike Vanguard|Edge of Eternities|10|U|{5}{W}|Creature - Human Knight|4|5|Lifelink$At the beginning of your end step, if you control two or more tapped creatures, put a +1/+1 counter on each creature you control other than this creature.| Dual-Sun Technique|Edge of Eternities|13|U|{1}{W}|Instant|||Target creature you control gains double strike until end of turn. If it has a +1/+1 counter on it, draw a card.| Emergency Eject|Edge of Eternities|14|U|{2}{W}|Instant|||Destroy target nonland permanent. Its controller creates a Lander token.| Exalted Sunborn|Edge of Eternities|15|M|{3}{W}{W}|Creature - Angel Wizard|4|5|Flying, lifelink$If one or more tokens would be created under your control, twice that many of those tokens are created instead.$Warp {1}{W}|