From 38d1ea649d2292ae014eb7fb176128ebbbe9059b Mon Sep 17 00:00:00 2001 From: Temba Date: Tue, 17 Mar 2015 19:09:51 +0200 Subject: [PATCH] Created 6 cards. (High probability for minor errors.) --- .../src/mage/sets/judgment/WormfangDrake.java | 127 ++++++++++++++++-- 1 file changed, 118 insertions(+), 9 deletions(-) diff --git a/Mage.Sets/src/mage/sets/judgment/WormfangDrake.java b/Mage.Sets/src/mage/sets/judgment/WormfangDrake.java index 9a4242b1552..2336776cfb8 100644 --- a/Mage.Sets/src/mage/sets/judgment/WormfangDrake.java +++ b/Mage.Sets/src/mage/sets/judgment/WormfangDrake.java @@ -27,24 +27,36 @@ */ package mage.sets.judgment; +import java.util.ArrayList; import java.util.UUID; import mage.MageInt; +import mage.MageObject; import mage.abilities.Ability; +import mage.abilities.StaticAbility; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.common.LeavesBattlefieldTriggeredAbility; -import mage.abilities.costs.common.ExileTargetCost; +import mage.abilities.costs.CostImpl; import mage.abilities.effects.common.ReturnFromExileForSourceEffect; import mage.abilities.effects.common.SacrificeSourceUnlessPaysEffect; import mage.abilities.keyword.FlyingAbility; +import mage.cards.Card; import mage.cards.CardImpl; import mage.constants.CardType; +import mage.constants.Outcome; import mage.constants.Rarity; import mage.constants.Zone; import mage.filter.common.FilterControlledCreaturePermanent; +import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.Predicate; import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; import mage.filter.predicate.mageobject.NamePredicate; -import mage.target.Target; +import mage.filter.predicate.permanent.AnotherPredicate; +import mage.game.Game; +import mage.game.permanent.Permanent; +import mage.players.Player; import mage.target.common.TargetControlledPermanent; +import mage.util.CardUtil; /** * @@ -71,14 +83,19 @@ public class WormfangDrake extends CardImpl { //When Wormfang Drake enters the battlefield, sacrifice it unless you exile a creature you control other than Wormfang Drake. - Ability ability1 = new EntersBattlefieldTriggeredAbility(new SacrificeSourceUnlessPaysEffect((new ExileTargetCost(new TargetControlledPermanent(filter)))), false); - Target target = new TargetControlledPermanent(1,1,filter,true); - ability1.addTarget(target); - this.addAbility(ability1); + - // When Wormfang Drake leaves the battlefield, return the exiled card to the battlefield under its owner's control. - Ability ability2 = new LeavesBattlefieldTriggeredAbility(new ReturnFromExileForSourceEffect(Zone.BATTLEFIELD), false); - this.addAbility(ability2); + + //Ability ability1 = new EntersBattlefieldTriggeredAbility(new SacrificeSourceUnlessPaysEffect((new ExileTargetCost(new TargetControlledPermanent(filter)))), false); + //Target target = new TargetControlledPermanent(1,1,filter,true); + //ability1.addTarget(target); + //this.addAbility(ability1); + + // When Wormfang Drake leaves the battlefield, return the exiled card to the battlefield under its owner's control. + + + //Ability ability2 = new LeavesBattlefieldTriggeredAbility(new ReturnFromExileForSourceEffect(Zone.BATTLEFIELD), false); + //this.addAbility(ability2); } @@ -90,4 +107,96 @@ public class WormfangDrake extends CardImpl { public WormfangDrake copy() { return new WormfangDrake(this); } +} + class WormfangDrakeAbility extends StaticAbility { + + protected CardType cardType; + protected String objectDescription; + + + + public WormfangDrakeAbility(Card card, CardType cardtypes) { + super(Zone.BATTLEFIELD, null); + + this.cardType = cardtypes; + + StringBuilder sb = new StringBuilder("another "); + ArrayList> cardtypesPredicates = new ArrayList<>(); + + cardtypesPredicates.add(new CardTypePredicate(cardType)); + + sb.append(cardType); + + + this.objectDescription = sb.toString(); + FilterControlledPermanent filter = new FilterControlledPermanent(objectDescription); + filter.add(Predicates.or(cardtypesPredicates)); + filter.add(new AnotherPredicate()); + + // When this permanent enters the battlefield, sacrifice it unless you exile another [object] you control. + Ability ability1 = new EntersBattlefieldTriggeredAbility(new SacrificeSourceUnlessPaysEffect(new WormfangDrakeExileCost(filter, new StringBuilder(card.getName()).append(" WormfangDrakeed permanents").toString())),false); + ability1.setRuleVisible(false); + card.addAbility(ability1); + + // When this permanent leaves the battlefield, return the exiled card to the battlefield under its owner's control. + Ability ability2 = new LeavesBattlefieldTriggeredAbility(new ReturnFromExileForSourceEffect(Zone.BATTLEFIELD), false); + ability2.setRuleVisible(false); + card.addAbility(ability2); + } + + public WormfangDrakeAbility(final WormfangDrakeAbility ability) { + super(ability); + this.cardType = ability.cardType; + this.objectDescription = ability.objectDescription; + } + + @Override + public WormfangDrakeAbility copy() { + return new WormfangDrakeAbility(this); + } +} + +class WormfangDrakeExileCost extends CostImpl { + + private String exileZone = null; + + public WormfangDrakeExileCost(FilterControlledPermanent filter, String exileZone) { + this.addTarget(new TargetControlledPermanent(1,1,filter, true)); + this.text = "exile " + filter.getMessage() + " you control"; + this.exileZone = exileZone; + } + + public WormfangDrakeExileCost(WormfangDrakeExileCost cost) { + super(cost); + this.exileZone = cost.exileZone; + } + + @Override + public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana) { + Player controller = game.getPlayer(controllerId); + MageObject sourceObject = ability.getSourceObject(game); + if (controller != null && sourceObject != null) { + if (targets.choose(Outcome.Exile, controllerId, sourceId, game)) { + UUID exileId = CardUtil.getObjectExileZoneId(game, sourceObject); + for (UUID targetId: targets.get(0).getTargets()) { + Permanent permanent = game.getPermanent(targetId); + if (permanent == null) { + return false; + } + paid |= controller.moveCardToExileWithInfo(permanent, exileId, sourceObject.getLogName() + " WormfangDrakeed permanents", sourceId, game, Zone.BATTLEFIELD); + } + } + } + return paid; + } + + @Override + public boolean canPay(Ability ability, UUID sourceId, UUID controllerId, Game game) { + return targets.canChoose(controllerId, game); + } + + @Override + public WormfangDrakeExileCost copy() { + return new WormfangDrakeExileCost(this); + } }