simplified and consolidated werewolf triggered abilities

This commit is contained in:
Evan Kranzler 2021-03-03 22:13:16 -05:00
parent 378d596e3c
commit afcdc0f23a
68 changed files with 472 additions and 859 deletions

View file

@ -1,20 +1,14 @@
package mage.cards.a; package mage.cards.a;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.TriggeredAbility; import mage.abilities.common.WerewolfFrontTriggeredAbility;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.condition.common.NoSpellsWereCastLastTurnCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.keyword.TransformAbility; import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.TargetController;
import java.util.UUID;
/** /**
* @author BetaSteward * @author BetaSteward
@ -34,8 +28,7 @@ public final class AfflictedDeserter extends CardImpl {
// At the beginning of each upkeep, if no spells were cast last turn, transform Afflicted Deserter. // At the beginning of each upkeep, if no spells were cast last turn, transform Afflicted Deserter.
this.addAbility(new TransformAbility()); this.addAbility(new TransformAbility());
TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(true), TargetController.ANY, false); this.addAbility(new WerewolfFrontTriggeredAbility());
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, NoSpellsWereCastLastTurnCondition.instance, TransformAbility.NO_SPELLS_TRANSFORM_RULE));
} }
private AfflictedDeserter(final AfflictedDeserter card) { private AfflictedDeserter(final AfflictedDeserter card) {

View file

@ -1,20 +1,14 @@
package mage.cards.b; package mage.cards.b;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.TriggeredAbility;
import mage.abilities.common.AttacksEachCombatStaticAbility; import mage.abilities.common.AttacksEachCombatStaticAbility;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.common.WerewolfBackTriggeredAbility;
import mage.abilities.condition.common.TwoOrMoreSpellsWereCastLastTurnCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.TargetController;
import java.util.UUID;
/** /**
* @author nantuko * @author nantuko
@ -22,7 +16,7 @@ import mage.constants.TargetController;
public final class BaneOfHanweir extends CardImpl { public final class BaneOfHanweir extends CardImpl {
public BaneOfHanweir(UUID ownerId, CardSetInfo setInfo) { public BaneOfHanweir(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},""); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
this.subtype.add(SubType.WEREWOLF); this.subtype.add(SubType.WEREWOLF);
this.color.setRed(true); this.color.setRed(true);
@ -37,8 +31,7 @@ public final class BaneOfHanweir extends CardImpl {
this.addAbility(new AttacksEachCombatStaticAbility()); this.addAbility(new AttacksEachCombatStaticAbility());
// At the beginning of each upkeep, if a player cast two or more spells last turn, transform Bane of Hanweir. // At the beginning of each upkeep, if a player cast two or more spells last turn, transform Bane of Hanweir.
TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(false), TargetController.ANY, false); this.addAbility(new WerewolfBackTriggeredAbility());
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, TwoOrMoreSpellsWereCastLastTurnCondition.instance, TransformAbility.TWO_OR_MORE_SPELLS_TRANSFORM_RULE));
} }
private BaneOfHanweir(final BaneOfHanweir card) { private BaneOfHanweir(final BaneOfHanweir card) {

View file

@ -1,10 +1,10 @@
package mage.cards.b; package mage.cards.b;
import java.util.UUID; import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.TriggeredAbility; import mage.abilities.TriggeredAbility;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.common.WerewolfBackTriggeredAbility;
import mage.abilities.condition.common.TwoOrMoreSpellsWereCastLastTurnCondition; import mage.abilities.condition.common.TwoOrMoreSpellsWereCastLastTurnCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.TransformSourceEffect; import mage.abilities.effects.common.TransformSourceEffect;
@ -33,8 +33,7 @@ public final class BrandedHowler extends CardImpl {
this.transformable = true; this.transformable = true;
// At the beginning of each upkeep, if a player cast two or more spells last turn, transform Branded Howler. // At the beginning of each upkeep, if a player cast two or more spells last turn, transform Branded Howler.
TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(false), TargetController.ANY, false); this.addAbility(new WerewolfBackTriggeredAbility());
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, TwoOrMoreSpellsWereCastLastTurnCondition.instance, TransformAbility.TWO_OR_MORE_SPELLS_TRANSFORM_RULE));
} }
private BrandedHowler(final BrandedHowler card) { private BrandedHowler(final BrandedHowler card) {

View file

@ -1,20 +1,14 @@
package mage.cards.b; package mage.cards.b;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.TriggeredAbility; import mage.abilities.common.WerewolfFrontTriggeredAbility;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.condition.common.NoSpellsWereCastLastTurnCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.keyword.TransformAbility; import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.TargetController;
import java.util.UUID;
/** /**
* @author fireshoes * @author fireshoes
@ -32,8 +26,7 @@ public final class BreakneckRider extends CardImpl {
// At the beginning of each upkeep, if no spells were cast last turn, transform Breakneck Rider. // At the beginning of each upkeep, if no spells were cast last turn, transform Breakneck Rider.
this.addAbility(new TransformAbility()); this.addAbility(new TransformAbility());
TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(true), TargetController.ANY, false); this.addAbility(new WerewolfFrontTriggeredAbility());
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, NoSpellsWereCastLastTurnCondition.instance, TransformAbility.NO_SPELLS_TRANSFORM_RULE));
} }
private BreakneckRider(final BreakneckRider card) { private BreakneckRider(final BreakneckRider card) {

View file

@ -1,4 +1,3 @@
package mage.cards.c; package mage.cards.c;
import java.util.UUID; import java.util.UUID;
@ -6,6 +5,7 @@ import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.TriggeredAbility; import mage.abilities.TriggeredAbility;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.common.WerewolfFrontTriggeredAbility;
import mage.abilities.condition.common.NoSpellsWereCastLastTurnCondition; import mage.abilities.condition.common.NoSpellsWereCastLastTurnCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.TransformSourceEffect; import mage.abilities.effects.common.TransformSourceEffect;
@ -33,8 +33,7 @@ public final class ConvictedKiller extends CardImpl {
// At the beginning of each upkeep, if no spells were cast last turn, transform Convicted Killer. // At the beginning of each upkeep, if no spells were cast last turn, transform Convicted Killer.
this.addAbility(new TransformAbility()); this.addAbility(new TransformAbility());
TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(true), TargetController.ANY, false); this.addAbility(new WerewolfFrontTriggeredAbility());
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, NoSpellsWereCastLastTurnCondition.instance, TransformAbility.NO_SPELLS_TRANSFORM_RULE));
} }
private ConvictedKiller(final ConvictedKiller card) { private ConvictedKiller(final ConvictedKiller card) {

View file

@ -1,30 +1,24 @@
package mage.cards.d; package mage.cards.d;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.TriggeredAbility;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.condition.common.NoSpellsWereCastLastTurnCondition; import mage.abilities.common.WerewolfFrontTriggeredAbility;
import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.DamageTargetEffect;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.FlyingAbility;
import mage.abilities.keyword.TransformAbility; import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.TargetController;
import mage.constants.Zone; import mage.constants.Zone;
import mage.filter.common.FilterCreaturePermanent; import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.mageobject.AbilityPredicate; import mage.filter.predicate.mageobject.AbilityPredicate;
import mage.target.common.TargetCreaturePermanent; import mage.target.common.TargetCreaturePermanent;
import java.util.UUID;
/** /**
* @author North * @author North
*/ */
@ -54,8 +48,7 @@ public final class DaybreakRanger extends CardImpl {
this.addAbility(activatedAbility); this.addAbility(activatedAbility);
// At the beginning of each upkeep, if no spells were cast last turn, transform Daybreak Ranger. // At the beginning of each upkeep, if no spells were cast last turn, transform Daybreak Ranger.
this.addAbility(new TransformAbility()); this.addAbility(new TransformAbility());
TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(true), TargetController.ANY, false); this.addAbility(new WerewolfFrontTriggeredAbility());
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, NoSpellsWereCastLastTurnCondition.instance, TransformAbility.NO_SPELLS_TRANSFORM_RULE));
} }
private DaybreakRanger(final DaybreakRanger card) { private DaybreakRanger(final DaybreakRanger card) {

View file

@ -1,4 +1,3 @@
package mage.cards.d; package mage.cards.d;
import java.util.UUID; import java.util.UUID;
@ -7,6 +6,7 @@ import mage.MageInt;
import mage.abilities.TriggeredAbility; import mage.abilities.TriggeredAbility;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.common.WerewolfFrontTriggeredAbility;
import mage.abilities.condition.common.NoSpellsWereCastLastTurnCondition; import mage.abilities.condition.common.NoSpellsWereCastLastTurnCondition;
import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
@ -48,8 +48,7 @@ public final class DuskwatchRecruiter extends CardImpl {
// At the beginning of each upkeep, if no spells were cast last turn, transform Duskwatch Recruiter. // At the beginning of each upkeep, if no spells were cast last turn, transform Duskwatch Recruiter.
this.addAbility(new TransformAbility()); this.addAbility(new TransformAbility());
TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(true), TargetController.ANY, false); this.addAbility(new WerewolfFrontTriggeredAbility());
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, NoSpellsWereCastLastTurnCondition.instance, TransformAbility.NO_SPELLS_TRANSFORM_RULE));
} }
private DuskwatchRecruiter(final DuskwatchRecruiter card) { private DuskwatchRecruiter(final DuskwatchRecruiter card) {

View file

@ -1,25 +1,18 @@
package mage.cards.f; package mage.cards.f;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.TriggeredAbility;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.common.BlocksOrBecomesBlockedSourceTriggeredAbility; import mage.abilities.common.BlocksOrBecomesBlockedSourceTriggeredAbility;
import mage.abilities.condition.common.TwoOrMoreSpellsWereCastLastTurnCondition; import mage.abilities.common.WerewolfBackTriggeredAbility;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.DamageTargetEffect;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.TargetController;
import mage.filter.StaticFilters; import mage.filter.StaticFilters;
import java.util.UUID;
/** /**
*
* @author LevelX2 * @author LevelX2
*/ */
public final class FlameheartWerewolf extends CardImpl { public final class FlameheartWerewolf extends CardImpl {
@ -40,8 +33,7 @@ public final class FlameheartWerewolf extends CardImpl {
StaticFilters.FILTER_PERMANENT_CREATURE, false, null, true)); StaticFilters.FILTER_PERMANENT_CREATURE, false, null, true));
// At the beginning of each upkeep, if a player cast two or more spells last turn, transform Flameheart Werewolf. // At the beginning of each upkeep, if a player cast two or more spells last turn, transform Flameheart Werewolf.
TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(false), TargetController.ANY, false); this.addAbility(new WerewolfBackTriggeredAbility());
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, TwoOrMoreSpellsWereCastLastTurnCondition.instance, TransformAbility.TWO_OR_MORE_SPELLS_TRANSFORM_RULE));
} }
private FlameheartWerewolf(final FlameheartWerewolf card) { private FlameheartWerewolf(final FlameheartWerewolf card) {

View file

@ -1,10 +1,10 @@
package mage.cards.g; package mage.cards.g;
import java.util.UUID; import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.TriggeredAbility; import mage.abilities.TriggeredAbility;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.common.WerewolfFrontTriggeredAbility;
import mage.abilities.condition.common.NoSpellsWereCastLastTurnCondition; import mage.abilities.condition.common.NoSpellsWereCastLastTurnCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.TransformSourceEffect; import mage.abilities.effects.common.TransformSourceEffect;
@ -33,8 +33,7 @@ public final class GatstafArsonists extends CardImpl {
// At the beginning of each upkeep, if no spells were cast last turn, transform Gatstaf Arsonists. // At the beginning of each upkeep, if no spells were cast last turn, transform Gatstaf Arsonists.
this.addAbility(new TransformAbility()); this.addAbility(new TransformAbility());
TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(true), TargetController.ANY, false); this.addAbility(new WerewolfFrontTriggeredAbility());
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, NoSpellsWereCastLastTurnCondition.instance, TransformAbility.NO_SPELLS_TRANSFORM_RULE));
} }
private GatstafArsonists(final GatstafArsonists card) { private GatstafArsonists(final GatstafArsonists card) {

View file

@ -1,20 +1,14 @@
package mage.cards.g; package mage.cards.g;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.TriggeredAbility; import mage.abilities.common.WerewolfBackTriggeredAbility;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.condition.common.TwoOrMoreSpellsWereCastLastTurnCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.keyword.IntimidateAbility; import mage.abilities.keyword.IntimidateAbility;
import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.TargetController;
import java.util.UUID;
/** /**
* @author nantuko * @author nantuko
@ -22,7 +16,7 @@ import mage.constants.TargetController;
public final class GatstafHowler extends CardImpl { public final class GatstafHowler extends CardImpl {
public GatstafHowler(UUID ownerId, CardSetInfo setInfo) { public GatstafHowler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},""); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
this.subtype.add(SubType.WEREWOLF); this.subtype.add(SubType.WEREWOLF);
this.color.setGreen(true); this.color.setGreen(true);
@ -36,8 +30,7 @@ public final class GatstafHowler extends CardImpl {
this.addAbility(IntimidateAbility.getInstance()); this.addAbility(IntimidateAbility.getInstance());
// At the beginning of each upkeep, if a player cast two or more spells last turn, transform Gatstaf Howler. // At the beginning of each upkeep, if a player cast two or more spells last turn, transform Gatstaf Howler.
TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(false), TargetController.ANY, false); this.addAbility(new WerewolfBackTriggeredAbility());
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, TwoOrMoreSpellsWereCastLastTurnCondition.instance, TransformAbility.TWO_OR_MORE_SPELLS_TRANSFORM_RULE));
} }
private GatstafHowler(final GatstafHowler card) { private GatstafHowler(final GatstafHowler card) {

View file

@ -1,29 +1,22 @@
package mage.cards.g; package mage.cards.g;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.TriggeredAbility; import mage.abilities.common.WerewolfBackTriggeredAbility;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.condition.common.TwoOrMoreSpellsWereCastLastTurnCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.keyword.MenaceAbility; import mage.abilities.keyword.MenaceAbility;
import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.TargetController;
import java.util.UUID;
/** /**
*
* @author LevelX2 * @author LevelX2
*/ */
public final class GatstafRavagers extends CardImpl { public final class GatstafRavagers extends CardImpl {
public GatstafRavagers(UUID ownerId, CardSetInfo setInfo) { public GatstafRavagers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},""); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
this.subtype.add(SubType.WEREWOLF); this.subtype.add(SubType.WEREWOLF);
this.power = new MageInt(6); this.power = new MageInt(6);
this.toughness = new MageInt(5); this.toughness = new MageInt(5);
@ -35,9 +28,9 @@ public final class GatstafRavagers extends CardImpl {
// Menace // Menace
this.addAbility(new MenaceAbility()); this.addAbility(new MenaceAbility());
// At the beginning of each upkeep, if a player cast two or more spells last turn, transform Gatstaf Ravagers. // At the beginning of each upkeep, if a player cast two or more spells last turn, transform Gatstaf Ravagers.
TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(false), TargetController.ANY, false); this.addAbility(new WerewolfBackTriggeredAbility());
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, TwoOrMoreSpellsWereCastLastTurnCondition.instance, TransformAbility.TWO_OR_MORE_SPELLS_TRANSFORM_RULE));
} }
private GatstafRavagers(final GatstafRavagers card) { private GatstafRavagers(final GatstafRavagers card) {

View file

@ -1,19 +1,14 @@
package mage.cards.g; package mage.cards.g;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.TriggeredAbility; import mage.abilities.common.WerewolfFrontTriggeredAbility;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.condition.common.NoSpellsWereCastLastTurnCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.keyword.TransformAbility; import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.TargetController;
import java.util.UUID;
/** /**
* @author nantuko * @author nantuko
@ -21,7 +16,7 @@ import mage.constants.TargetController;
public final class GatstafShepherd extends CardImpl { public final class GatstafShepherd extends CardImpl {
public GatstafShepherd(UUID ownerId, CardSetInfo setInfo) { public GatstafShepherd(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}");
this.subtype.add(SubType.HUMAN); this.subtype.add(SubType.HUMAN);
this.subtype.add(SubType.WEREWOLF); this.subtype.add(SubType.WEREWOLF);
@ -33,8 +28,7 @@ public final class GatstafShepherd extends CardImpl {
// At the beginning of each upkeep, if no spells were cast last turn, transform Gatstaf Shepherd. // At the beginning of each upkeep, if no spells were cast last turn, transform Gatstaf Shepherd.
this.addAbility(new TransformAbility()); this.addAbility(new TransformAbility());
TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(true), TargetController.ANY, false); this.addAbility(new WerewolfFrontTriggeredAbility());
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, NoSpellsWereCastLastTurnCondition.instance, TransformAbility.NO_SPELLS_TRANSFORM_RULE));
} }
private GatstafShepherd(final GatstafShepherd card) { private GatstafShepherd(final GatstafShepherd card) {

View file

@ -1,21 +1,15 @@
package mage.cards.g; package mage.cards.g;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.TriggeredAbility; import mage.abilities.common.WerewolfFrontTriggeredAbility;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.condition.common.NoSpellsWereCastLastTurnCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.keyword.HasteAbility; import mage.abilities.keyword.HasteAbility;
import mage.abilities.keyword.TransformAbility; import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.TargetController;
import java.util.UUID;
/** /**
* @author LevelX2 * @author LevelX2
@ -38,8 +32,7 @@ public final class GeierReachBandit extends CardImpl {
// At the beginning of each upkeep, if no spells were cast last turn, transform Geier Reach Bandit. // At the beginning of each upkeep, if no spells were cast last turn, transform Geier Reach Bandit.
this.addAbility(new TransformAbility()); this.addAbility(new TransformAbility());
TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(true), TargetController.ANY, false); this.addAbility(new WerewolfFrontTriggeredAbility());
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, NoSpellsWereCastLastTurnCondition.instance, TransformAbility.NO_SPELLS_TRANSFORM_RULE));
} }
private GeierReachBandit(final GeierReachBandit card) { private GeierReachBandit(final GeierReachBandit card) {

View file

@ -1,20 +1,14 @@
package mage.cards.g; package mage.cards.g;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.TriggeredAbility; import mage.abilities.common.WerewolfFrontTriggeredAbility;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.condition.common.NoSpellsWereCastLastTurnCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.keyword.TransformAbility; import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.TargetController;
import java.util.UUID;
/** /**
* @author nantuko * @author nantuko
@ -34,8 +28,7 @@ public final class GrizzledOutcasts extends CardImpl {
// At the beginning of each upkeep, if no spells were cast last turn, transform Grizzled Outcasts. // At the beginning of each upkeep, if no spells were cast last turn, transform Grizzled Outcasts.
this.addAbility(new TransformAbility()); this.addAbility(new TransformAbility());
TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(true), TargetController.ANY, false); this.addAbility(new WerewolfFrontTriggeredAbility());
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, NoSpellsWereCastLastTurnCondition.instance, TransformAbility.NO_SPELLS_TRANSFORM_RULE));
} }
private GrizzledOutcasts(final GrizzledOutcasts card) { private GrizzledOutcasts(final GrizzledOutcasts card) {

View file

@ -1,21 +1,15 @@
package mage.cards.h; package mage.cards.h;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.TriggeredAbility; import mage.abilities.common.WerewolfFrontTriggeredAbility;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.condition.common.NoSpellsWereCastLastTurnCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.keyword.DefenderAbility; import mage.abilities.keyword.DefenderAbility;
import mage.abilities.keyword.TransformAbility; import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.TargetController;
import java.util.UUID;
/** /**
* @author nantuko * @author nantuko
@ -37,8 +31,7 @@ public final class HanweirWatchkeep extends CardImpl {
this.addAbility(DefenderAbility.getInstance()); this.addAbility(DefenderAbility.getInstance());
// At the beginning of each upkeep, if no spells were cast last turn, transform Hanweir Watchkeep. // At the beginning of each upkeep, if no spells were cast last turn, transform Hanweir Watchkeep.
this.addAbility(new TransformAbility()); this.addAbility(new TransformAbility());
TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(true), TargetController.ANY, false); this.addAbility(new WerewolfFrontTriggeredAbility());
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, NoSpellsWereCastLastTurnCondition.instance, TransformAbility.NO_SPELLS_TRANSFORM_RULE));
} }
private HanweirWatchkeep(final HanweirWatchkeep card) { private HanweirWatchkeep(final HanweirWatchkeep card) {

View file

@ -1,22 +1,17 @@
package mage.cards.h; package mage.cards.h;
import mage.MageInt; import mage.MageInt;
import mage.abilities.TriggeredAbility;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.common.SpellCastOpponentTriggeredAbility; import mage.abilities.common.SpellCastOpponentTriggeredAbility;
import mage.abilities.common.WerewolfFrontTriggeredAbility;
import mage.abilities.condition.common.MyTurnCondition; import mage.abilities.condition.common.MyTurnCondition;
import mage.abilities.condition.common.NoSpellsWereCastLastTurnCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.decorator.ConditionalTriggeredAbility; import mage.abilities.decorator.ConditionalTriggeredAbility;
import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.hint.common.MyTurnHint; import mage.abilities.hint.common.MyTurnHint;
import mage.abilities.keyword.TransformAbility; import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.TargetController;
import mage.filter.FilterSpell; import mage.filter.FilterSpell;
import java.util.UUID; import java.util.UUID;
@ -45,8 +40,7 @@ public final class HermitOfTheNatterknolls extends CardImpl {
// At the beginning of each upkeep, if no spells were cast last turn, transform Hermit of the Natterknolls. // At the beginning of each upkeep, if no spells were cast last turn, transform Hermit of the Natterknolls.
this.addAbility(new TransformAbility()); this.addAbility(new TransformAbility());
TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(true), TargetController.ANY, false); this.addAbility(new WerewolfFrontTriggeredAbility());
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, NoSpellsWereCastLastTurnCondition.instance, TransformAbility.NO_SPELLS_TRANSFORM_RULE));
} }
private HermitOfTheNatterknolls(final HermitOfTheNatterknolls card) { private HermitOfTheNatterknolls(final HermitOfTheNatterknolls card) {

View file

@ -1,28 +1,22 @@
package mage.cards.h; package mage.cards.h;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.TriggeredAbility; import mage.abilities.common.WerewolfFrontTriggeredAbility;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.condition.common.NoSpellsWereCastLastTurnCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.keyword.TransformAbility; import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.TargetController;
import java.util.UUID;
/** /**
*
* @author BetaSteward * @author BetaSteward
*/ */
public final class HinterlandHermit extends CardImpl { public final class HinterlandHermit extends CardImpl {
public HinterlandHermit(UUID ownerId, CardSetInfo setInfo) { public HinterlandHermit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
this.subtype.add(SubType.HUMAN); this.subtype.add(SubType.HUMAN);
this.subtype.add(SubType.WEREWOLF); this.subtype.add(SubType.WEREWOLF);
@ -34,8 +28,7 @@ public final class HinterlandHermit extends CardImpl {
// At the beginning of each upkeep, if no spells were cast last turn, transform Hinterland Hermit. // At the beginning of each upkeep, if no spells were cast last turn, transform Hinterland Hermit.
this.addAbility(new TransformAbility()); this.addAbility(new TransformAbility());
TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(true), TargetController.ANY, false); this.addAbility(new WerewolfFrontTriggeredAbility());
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, NoSpellsWereCastLastTurnCondition.instance, TransformAbility.NO_SPELLS_TRANSFORM_RULE));
} }
private HinterlandHermit(final HinterlandHermit card) { private HinterlandHermit(final HinterlandHermit card) {

View file

@ -1,20 +1,14 @@
package mage.cards.h; package mage.cards.h;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.TriggeredAbility; import mage.abilities.common.WerewolfFrontTriggeredAbility;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.condition.common.NoSpellsWereCastLastTurnCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.keyword.TransformAbility; import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.TargetController;
import java.util.UUID;
/** /**
* @author fireshoes * @author fireshoes
@ -33,8 +27,7 @@ public final class HinterlandLogger extends CardImpl {
// At the beginning of each upkeep, if no spells were cast last turn, transform Hinterland Logger. // At the beginning of each upkeep, if no spells were cast last turn, transform Hinterland Logger.
this.addAbility(new TransformAbility()); this.addAbility(new TransformAbility());
TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(true), TargetController.ANY, false); this.addAbility(new WerewolfFrontTriggeredAbility());
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, NoSpellsWereCastLastTurnCondition.instance, TransformAbility.NO_SPELLS_TRANSFORM_RULE));
} }
private HinterlandLogger(final HinterlandLogger card) { private HinterlandLogger(final HinterlandLogger card) {

View file

@ -1,32 +1,25 @@
package mage.cards.h; package mage.cards.h;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.TriggeredAbility;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.TwoOrMoreSpellsWereCastLastTurnCondition; import mage.abilities.common.WerewolfBackTriggeredAbility;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.effects.common.combat.MustBeBlockedByAtLeastOneSourceEffect; import mage.abilities.effects.common.combat.MustBeBlockedByAtLeastOneSourceEffect;
import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.Duration; import mage.constants.Duration;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.TargetController;
import mage.constants.Zone; import mage.constants.Zone;
import java.util.UUID;
/** /**
*
* @author BetaSteward * @author BetaSteward
*/ */
public final class HinterlandScourge extends CardImpl { public final class HinterlandScourge extends CardImpl {
public HinterlandScourge(UUID ownerId, CardSetInfo setInfo) { public HinterlandScourge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},""); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
this.subtype.add(SubType.WEREWOLF); this.subtype.add(SubType.WEREWOLF);
this.color.setRed(true); this.color.setRed(true);
@ -41,8 +34,7 @@ public final class HinterlandScourge extends CardImpl {
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new MustBeBlockedByAtLeastOneSourceEffect(Duration.WhileOnBattlefield))); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new MustBeBlockedByAtLeastOneSourceEffect(Duration.WhileOnBattlefield)));
// At the beginning of each upkeep, if a player cast two or more spells last turn, transform Hinterland Scourge. // At the beginning of each upkeep, if a player cast two or more spells last turn, transform Hinterland Scourge.
TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(false), TargetController.ANY, false); this.addAbility(new WerewolfBackTriggeredAbility());
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, TwoOrMoreSpellsWereCastLastTurnCondition.instance, TransformAbility.TWO_OR_MORE_SPELLS_TRANSFORM_RULE));
} }
private HinterlandScourge(final HinterlandScourge card) { private HinterlandScourge(final HinterlandScourge card) {

View file

@ -1,45 +1,41 @@
package mage.cards.h; package mage.cards.h;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.TriggeredAbility;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.common.BeginningOfYourEndStepTriggeredAbility; import mage.abilities.common.BeginningOfYourEndStepTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.TransformedCondition; import mage.abilities.common.WerewolfBackTriggeredAbility;
import mage.abilities.condition.common.TwoOrMoreSpellsWereCastLastTurnCondition;
import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.decorator.ConditionalTriggeredAbility;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.effects.common.continuous.BoostControlledEffect; import mage.abilities.effects.common.continuous.BoostControlledEffect;
import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.*; import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.filter.common.FilterCreaturePermanent; import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.Predicates; import mage.filter.predicate.Predicates;
import mage.game.permanent.token.WolfToken; import mage.game.permanent.token.WolfToken;
import java.util.UUID;
/** /**
*
* @author North, noxx * @author North, noxx
*/ */
public final class HowlpackAlpha extends CardImpl { public final class HowlpackAlpha extends CardImpl {
private static final String ruleText = "At the beginning of your end step, create a 2/2 green Wolf creature token"; private static final String ruleText = "At the beginning of your end step, create a 2/2 green Wolf creature token";
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Werewolf and Wolf creatures"); private static final FilterCreaturePermanent filter
= new FilterCreaturePermanent("Werewolf and Wolf creatures");
static { static {
filter.add(Predicates.or(SubType.WEREWOLF.getPredicate(), SubType.WOLF.getPredicate())); filter.add(Predicates.or(
SubType.WEREWOLF.getPredicate(),
SubType.WOLF.getPredicate()
));
} }
public HowlpackAlpha(UUID ownerId, CardSetInfo setInfo) { public HowlpackAlpha(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},""); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
this.subtype.add(SubType.WEREWOLF); this.subtype.add(SubType.WEREWOLF);
// this card is the second face of double-faced card // this card is the second face of double-faced card
@ -51,15 +47,15 @@ public final class HowlpackAlpha extends CardImpl {
this.toughness = new MageInt(3); this.toughness = new MageInt(3);
// Other Werewolf and Wolf creatures you control get +1/+1. // Other Werewolf and Wolf creatures you control get +1/+1.
Effect effect = new ConditionalContinuousEffect(new BoostControlledEffect(1, 1, Duration.WhileOnBattlefield, filter, true), new TransformedCondition(), null); this.addAbility(new SimpleStaticAbility(new BoostControlledEffect(
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect)); 1, 1, Duration.WhileOnBattlefield, filter, true
)));
// At the beginning of your end step, create a 2/2 green Wolf creature token. // At the beginning of your end step, create a 2/2 green Wolf creature token.
this.addAbility(new ConditionalTriggeredAbility(new BeginningOfYourEndStepTriggeredAbility(new CreateTokenEffect(new WolfToken()), false), new TransformedCondition(), ruleText)); this.addAbility(new BeginningOfYourEndStepTriggeredAbility(new CreateTokenEffect(new WolfToken()), false));
// At the beginning of each upkeep, if a player cast two or more spells last turn, transform Howlpack Alpha. // At the beginning of each upkeep, if a player cast two or more spells last turn, transform Howlpack Alpha.
TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(false), TargetController.ANY, false); this.addAbility(new WerewolfBackTriggeredAbility());
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, TwoOrMoreSpellsWereCastLastTurnCondition.instance, TransformAbility.TWO_OR_MORE_SPELLS_TRANSFORM_RULE));
} }
private HowlpackAlpha(final HowlpackAlpha card) { private HowlpackAlpha(final HowlpackAlpha card) {

View file

@ -1,19 +1,13 @@
package mage.cards.h; package mage.cards.h;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.TriggeredAbility; import mage.abilities.common.WerewolfBackTriggeredAbility;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.condition.common.TwoOrMoreSpellsWereCastLastTurnCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.TargetController;
import java.util.UUID;
/** /**
* @author nantuko * @author nantuko
@ -21,7 +15,7 @@ import mage.constants.TargetController;
public final class HowlpackOfEstwald extends CardImpl { public final class HowlpackOfEstwald extends CardImpl {
public HowlpackOfEstwald(UUID ownerId, CardSetInfo setInfo) { public HowlpackOfEstwald(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},""); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
this.subtype.add(SubType.WEREWOLF); this.subtype.add(SubType.WEREWOLF);
this.color.setGreen(true); this.color.setGreen(true);
@ -33,8 +27,7 @@ public final class HowlpackOfEstwald extends CardImpl {
this.toughness = new MageInt(6); this.toughness = new MageInt(6);
// At the beginning of each upkeep, if a player cast two or more spells last turn, transform Howlpack of Estwald. // At the beginning of each upkeep, if a player cast two or more spells last turn, transform Howlpack of Estwald.
TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(false), TargetController.ANY, false); this.addAbility(new WerewolfBackTriggeredAbility());
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, TwoOrMoreSpellsWereCastLastTurnCondition.instance, TransformAbility.TWO_OR_MORE_SPELLS_TRANSFORM_RULE));
} }
private HowlpackOfEstwald(final HowlpackOfEstwald card) { private HowlpackOfEstwald(final HowlpackOfEstwald card) {

View file

@ -1,26 +1,23 @@
package mage.cards.h; package mage.cards.h;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.TriggeredAbility;
import mage.abilities.TriggeredAbilityImpl; import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.common.WerewolfFrontTriggeredAbility;
import mage.abilities.condition.common.NoSpellsWereCastLastTurnCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.GainLifeEffect; import mage.abilities.effects.common.GainLifeEffect;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.keyword.TransformAbility; import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.*; import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Zone;
import mage.game.Game; import mage.game.Game;
import mage.game.events.GameEvent; import mage.game.events.GameEvent;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
import mage.game.permanent.token.WolfToken; import mage.game.permanent.token.WolfToken;
import java.util.UUID;
/** /**
* @author BetaSteward * @author BetaSteward
*/ */
@ -42,8 +39,7 @@ public final class HuntmasterOfTheFells extends CardImpl {
// At the beginning of each upkeep, if no spells were cast last turn, transform Huntmaster of the Fells. // At the beginning of each upkeep, if no spells were cast last turn, transform Huntmaster of the Fells.
this.addAbility(new TransformAbility()); this.addAbility(new TransformAbility());
TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(true), TargetController.ANY, false); this.addAbility(new WerewolfFrontTriggeredAbility());
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, NoSpellsWereCastLastTurnCondition.instance, TransformAbility.NO_SPELLS_TRANSFORM_RULE));
} }
private HuntmasterOfTheFells(final HuntmasterOfTheFells card) { private HuntmasterOfTheFells(final HuntmasterOfTheFells card) {

View file

@ -1,23 +1,18 @@
package mage.cards.i; package mage.cards.i;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.TriggeredAbility;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.NoSpellsWereCastLastTurnCondition; import mage.abilities.common.WerewolfFrontTriggeredAbility;
import mage.abilities.condition.common.TransformedCondition;
import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.effects.common.continuous.BoostControlledEffect; import mage.abilities.effects.common.continuous.BoostControlledEffect;
import mage.abilities.keyword.TransformAbility; import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.*; import mage.constants.CardType;
import mage.filter.common.FilterAttackingCreature; import mage.constants.Duration;
import mage.constants.SubType;
import mage.filter.StaticFilters;
import java.util.UUID;
/** /**
* @author nantuko * @author nantuko
@ -36,15 +31,14 @@ public final class InstigatorGang extends CardImpl {
this.toughness = new MageInt(3); this.toughness = new MageInt(3);
// Attacking creatures you control get +1/+0. // Attacking creatures you control get +1/+0.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, this.addAbility(new SimpleStaticAbility(new BoostControlledEffect(
new ConditionalContinuousEffect(new BoostControlledEffect(1, 0, Duration.WhileOnBattlefield, new FilterAttackingCreature()), 1, 0, Duration.WhileOnBattlefield,
new TransformedCondition(true), "Attacking creatures you control get +1/+0"))); StaticFilters.FILTER_ATTACKING_CREATURES
)));
// At the beginning of each upkeep, if no spells were cast last turn, transform Instigator Gang. // At the beginning of each upkeep, if no spells were cast last turn, transform Instigator Gang.
this.addAbility(new TransformAbility()); this.addAbility(new TransformAbility());
TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(true), TargetController.ANY, false); this.addAbility(new WerewolfFrontTriggeredAbility());
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, NoSpellsWereCastLastTurnCondition.instance, TransformAbility.NO_SPELLS_TRANSFORM_RULE));
} }
private InstigatorGang(final InstigatorGang card) { private InstigatorGang(final InstigatorGang card) {

View file

@ -1,20 +1,14 @@
package mage.cards.i; package mage.cards.i;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.TriggeredAbility; import mage.abilities.common.WerewolfBackTriggeredAbility;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.condition.common.TwoOrMoreSpellsWereCastLastTurnCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.keyword.FirstStrikeAbility; import mage.abilities.keyword.FirstStrikeAbility;
import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.TargetController;
import java.util.UUID;
/** /**
* @author nantuko * @author nantuko
@ -22,7 +16,7 @@ import mage.constants.TargetController;
public final class Ironfang extends CardImpl { public final class Ironfang extends CardImpl {
public Ironfang(UUID ownerId, CardSetInfo setInfo) { public Ironfang(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},""); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
this.subtype.add(SubType.WEREWOLF); this.subtype.add(SubType.WEREWOLF);
this.color.setRed(true); this.color.setRed(true);
@ -36,8 +30,7 @@ public final class Ironfang extends CardImpl {
this.addAbility(FirstStrikeAbility.getInstance()); this.addAbility(FirstStrikeAbility.getInstance());
// At the beginning of each upkeep, if a player cast two or more spells last turn, transform Ironfang. // At the beginning of each upkeep, if a player cast two or more spells last turn, transform Ironfang.
TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(false), TargetController.ANY, false); this.addAbility(new WerewolfBackTriggeredAbility());
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, TwoOrMoreSpellsWereCastLastTurnCondition.instance, TransformAbility.TWO_OR_MORE_SPELLS_TRANSFORM_RULE));
} }
private Ironfang(final Ironfang card) { private Ironfang(final Ironfang card) {

View file

@ -1,24 +1,18 @@
package mage.cards.k; package mage.cards.k;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.TriggeredAbility;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.common.BlocksOrBecomesBlockedSourceTriggeredAbility; import mage.abilities.common.BlocksOrBecomesBlockedSourceTriggeredAbility;
import mage.abilities.condition.common.NoSpellsWereCastLastTurnCondition; import mage.abilities.common.WerewolfFrontTriggeredAbility;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.DamageTargetEffect;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.keyword.TransformAbility; import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.TargetController;
import mage.filter.StaticFilters; import mage.filter.StaticFilters;
import java.util.UUID;
/** /**
* @author LevelX2 * @author LevelX2
*/ */
@ -41,8 +35,7 @@ public final class KessigForgemaster extends CardImpl {
// At the beginning of each upkeep, if no spells were cast last turn, transform Kessig Forgemaster. // At the beginning of each upkeep, if no spells were cast last turn, transform Kessig Forgemaster.
this.addAbility(new TransformAbility()); this.addAbility(new TransformAbility());
TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(true), TargetController.ANY, false); this.addAbility(new WerewolfFrontTriggeredAbility());
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, NoSpellsWereCastLastTurnCondition.instance, TransformAbility.NO_SPELLS_TRANSFORM_RULE));
} }

View file

@ -1,39 +1,27 @@
package mage.cards.k; package mage.cards.k;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.TriggeredAbility;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.TwoOrMoreSpellsWereCastLastTurnCondition; import mage.abilities.common.WerewolfBackTriggeredAbility;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.effects.common.cost.SpellsCostReductionControllerEffect; import mage.abilities.effects.common.cost.SpellsCostReductionControllerEffect;
import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.TargetController;
import mage.constants.Zone;
import mage.filter.FilterCard; import mage.filter.FilterCard;
import mage.filter.predicate.Predicates; import mage.filter.common.FilterCreatureCard;
import java.util.UUID;
/** /**
*
* @author fireshoes * @author fireshoes
*/ */
public final class KrallenhordeHowler extends CardImpl { public final class KrallenhordeHowler extends CardImpl {
private static final FilterCard FILTER = new FilterCard("Creature spells"); private static final FilterCard FILTER = new FilterCreatureCard("creature spells");
static {
FILTER.add(Predicates.or(CardType.CREATURE.getPredicate()));
}
public KrallenhordeHowler(UUID ownerId, CardSetInfo setInfo) { public KrallenhordeHowler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},""); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
this.subtype.add(SubType.WEREWOLF); this.subtype.add(SubType.WEREWOLF);
this.power = new MageInt(3); this.power = new MageInt(3);
this.toughness = new MageInt(3); this.toughness = new MageInt(3);
@ -44,11 +32,10 @@ public final class KrallenhordeHowler extends CardImpl {
this.transformable = true; this.transformable = true;
// Creature spells you cast cost {1} less to cast. // Creature spells you cast cost {1} less to cast.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SpellsCostReductionControllerEffect(FILTER, 1))); this.addAbility(new SimpleStaticAbility(new SpellsCostReductionControllerEffect(FILTER, 1)));
// At the beginning of each upkeep, if a player cast two or more spells last turn, transform Krallenhorde Howler. // At the beginning of each upkeep, if a player cast two or more spells last turn, transform Krallenhorde Howler.
TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(false), TargetController.ANY, false); this.addAbility(new WerewolfBackTriggeredAbility());
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, TwoOrMoreSpellsWereCastLastTurnCondition.instance, TransformAbility.TWO_OR_MORE_SPELLS_TRANSFORM_RULE));
} }
private KrallenhordeHowler(final KrallenhordeHowler card) { private KrallenhordeHowler(final KrallenhordeHowler card) {

View file

@ -1,29 +1,26 @@
package mage.cards.k; package mage.cards.k;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.TriggeredAbility;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.common.LimitedTimesPerTurnActivatedAbility; import mage.abilities.common.LimitedTimesPerTurnActivatedAbility;
import mage.abilities.condition.common.TwoOrMoreSpellsWereCastLastTurnCondition; import mage.abilities.common.WerewolfBackTriggeredAbility;
import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.*; import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.constants.Zone;
import java.util.UUID;
/** /**
*
* @author Loki * @author Loki
*/ */
public final class KrallenhordeKiller extends CardImpl { public final class KrallenhordeKiller extends CardImpl {
public KrallenhordeKiller(UUID ownerId, CardSetInfo setInfo) { public KrallenhordeKiller(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},""); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
this.subtype.add(SubType.WEREWOLF); this.subtype.add(SubType.WEREWOLF);
this.color.setGreen(true); this.color.setGreen(true);
@ -37,8 +34,7 @@ public final class KrallenhordeKiller extends CardImpl {
this.addAbility(new LimitedTimesPerTurnActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(4, 4, Duration.EndOfTurn), new ManaCostsImpl("{3}{G}"))); this.addAbility(new LimitedTimesPerTurnActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(4, 4, Duration.EndOfTurn), new ManaCostsImpl("{3}{G}")));
// At the beginning of each upkeep, if a player cast two or more spells last turn, transform Krallenhorde Killer. // At the beginning of each upkeep, if a player cast two or more spells last turn, transform Krallenhorde Killer.
TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(false), TargetController.ANY, false); this.addAbility(new WerewolfBackTriggeredAbility());
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, TwoOrMoreSpellsWereCastLastTurnCondition.instance, TransformAbility.TWO_OR_MORE_SPELLS_TRANSFORM_RULE));
} }
private KrallenhordeKiller(final KrallenhordeKiller card) { private KrallenhordeKiller(final KrallenhordeKiller card) {

View file

@ -1,28 +1,21 @@
package mage.cards.k; package mage.cards.k;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.TriggeredAbility; import mage.abilities.common.WerewolfBackTriggeredAbility;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.condition.common.TwoOrMoreSpellsWereCastLastTurnCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.TargetController;
import java.util.UUID;
/** /**
* @author nantuko * @author nantuko
*/ */
public final class KrallenhordeWantons extends CardImpl { public final class KrallenhordeWantons extends CardImpl {
public KrallenhordeWantons(UUID ownerId, CardSetInfo setInfo) { public KrallenhordeWantons(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},""); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
this.subtype.add(SubType.WEREWOLF); this.subtype.add(SubType.WEREWOLF);
this.color.setGreen(true); this.color.setGreen(true);
@ -34,8 +27,7 @@ public final class KrallenhordeWantons extends CardImpl {
this.toughness = new MageInt(7); this.toughness = new MageInt(7);
// At the beginning of each upkeep, if a player cast two or more spells last turn, transform Krallenhorde Wantons. // At the beginning of each upkeep, if a player cast two or more spells last turn, transform Krallenhorde Wantons.
TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(false), TargetController.ANY, false); this.addAbility(new WerewolfBackTriggeredAbility());
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, TwoOrMoreSpellsWereCastLastTurnCondition.instance, TransformAbility.TWO_OR_MORE_SPELLS_TRANSFORM_RULE));
} }
private KrallenhordeWantons(final KrallenhordeWantons card) { private KrallenhordeWantons(final KrallenhordeWantons card) {

View file

@ -1,21 +1,15 @@
package mage.cards.k; package mage.cards.k;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.TriggeredAbility; import mage.abilities.common.WerewolfFrontTriggeredAbility;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.condition.common.NoSpellsWereCastLastTurnCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.keyword.FirstStrikeAbility; import mage.abilities.keyword.FirstStrikeAbility;
import mage.abilities.keyword.TransformAbility; import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.TargetController;
import java.util.UUID;
/** /**
* @author North * @author North
@ -37,8 +31,7 @@ public final class KruinOutlaw extends CardImpl {
this.addAbility(FirstStrikeAbility.getInstance()); this.addAbility(FirstStrikeAbility.getInstance());
// At the beginning of each upkeep, if no spells were cast last turn, transform Kruin Outlaw. // At the beginning of each upkeep, if no spells were cast last turn, transform Kruin Outlaw.
this.addAbility(new TransformAbility()); this.addAbility(new TransformAbility());
TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(true), TargetController.ANY, false); this.addAbility(new WerewolfFrontTriggeredAbility());
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, NoSpellsWereCastLastTurnCondition.instance, TransformAbility.NO_SPELLS_TRANSFORM_RULE));
} }
private KruinOutlaw(final KruinOutlaw card) { private KruinOutlaw(final KruinOutlaw card) {

View file

@ -1,10 +1,10 @@
package mage.cards.l; package mage.cards.l;
import java.util.UUID; import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.TriggeredAbility; import mage.abilities.TriggeredAbility;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.common.WerewolfBackTriggeredAbility;
import mage.abilities.condition.common.TwoOrMoreSpellsWereCastLastTurnCondition; import mage.abilities.condition.common.TwoOrMoreSpellsWereCastLastTurnCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.TransformSourceEffect; import mage.abilities.effects.common.TransformSourceEffect;
@ -33,8 +33,7 @@ public final class LambholtButcher extends CardImpl {
this.transformable = true; this.transformable = true;
// At the beginning of each upkeep, if a player cast two or more spells last turn, transform Lambholt Butcher. // At the beginning of each upkeep, if a player cast two or more spells last turn, transform Lambholt Butcher.
TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(false), TargetController.ANY, false); this.addAbility(new WerewolfBackTriggeredAbility());
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, TwoOrMoreSpellsWereCastLastTurnCondition.instance, TransformAbility.TWO_OR_MORE_SPELLS_TRANSFORM_RULE));
} }
private LambholtButcher(final LambholtButcher card) { private LambholtButcher(final LambholtButcher card) {

View file

@ -1,20 +1,14 @@
package mage.cards.l; package mage.cards.l;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.TriggeredAbility; import mage.abilities.common.WerewolfFrontTriggeredAbility;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.condition.common.NoSpellsWereCastLastTurnCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.keyword.TransformAbility; import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.TargetController;
import java.util.UUID;
/** /**
* @author Loki * @author Loki
@ -34,8 +28,7 @@ public final class LambholtElder extends CardImpl {
// At the beginning of each upkeep, if no spells were cast last turn, transform Lambholt Elder. // At the beginning of each upkeep, if no spells were cast last turn, transform Lambholt Elder.
this.addAbility(new TransformAbility()); this.addAbility(new TransformAbility());
TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(true), TargetController.ANY, false); this.addAbility(new WerewolfFrontTriggeredAbility());
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, NoSpellsWereCastLastTurnCondition.instance, TransformAbility.NO_SPELLS_TRANSFORM_RULE));
} }
private LambholtElder(final LambholtElder card) { private LambholtElder(final LambholtElder card) {

View file

@ -2,13 +2,9 @@ package mage.cards.l;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.TriggeredAbility;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.NoSpellsWereCastLastTurnCondition; import mage.abilities.common.WerewolfFrontTriggeredAbility;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.RestrictionEffect; import mage.abilities.effects.RestrictionEffect;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.keyword.TransformAbility; import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
@ -41,8 +37,7 @@ public final class LambholtPacifist extends CardImpl {
// At the beginning of each upkeep, if no spells were cast last turn, transform Lambholt Pacifist. // At the beginning of each upkeep, if no spells were cast last turn, transform Lambholt Pacifist.
this.addAbility(new TransformAbility()); this.addAbility(new TransformAbility());
TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(true), TargetController.ANY, false); this.addAbility(new WerewolfFrontTriggeredAbility());
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, NoSpellsWereCastLastTurnCondition.instance, TransformAbility.NO_SPELLS_TRANSFORM_RULE));
} }
private LambholtPacifist(final LambholtPacifist card) { private LambholtPacifist(final LambholtPacifist card) {

View file

@ -1,22 +1,16 @@
package mage.cards.l; package mage.cards.l;
import mage.MageInt; import mage.MageInt;
import mage.abilities.TriggeredAbility;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.common.SpellCastOpponentTriggeredAbility; import mage.abilities.common.SpellCastOpponentTriggeredAbility;
import mage.abilities.common.WerewolfBackTriggeredAbility;
import mage.abilities.condition.common.MyTurnCondition; import mage.abilities.condition.common.MyTurnCondition;
import mage.abilities.condition.common.TwoOrMoreSpellsWereCastLastTurnCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.decorator.ConditionalTriggeredAbility; import mage.abilities.decorator.ConditionalTriggeredAbility;
import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.hint.common.MyTurnHint; import mage.abilities.hint.common.MyTurnHint;
import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.TargetController;
import mage.filter.FilterSpell; import mage.filter.FilterSpell;
import java.util.UUID; import java.util.UUID;
@ -44,8 +38,7 @@ public final class LoneWolfOfTheNatterknolls extends CardImpl {
).addHint(MyTurnHint.instance)); ).addHint(MyTurnHint.instance));
// At the beginning of each upkeep, if a player cast two or more spells last turn, transform Lone Wolf of the Natterknolls. // At the beginning of each upkeep, if a player cast two or more spells last turn, transform Lone Wolf of the Natterknolls.
TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(false), TargetController.ANY, false); this.addAbility(new WerewolfBackTriggeredAbility());
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, TwoOrMoreSpellsWereCastLastTurnCondition.instance, TransformAbility.TWO_OR_MORE_SPELLS_TRANSFORM_RULE));
} }
private LoneWolfOfTheNatterknolls(final LoneWolfOfTheNatterknolls card) { private LoneWolfOfTheNatterknolls(final LoneWolfOfTheNatterknolls card) {

View file

@ -1,33 +1,24 @@
package mage.cards.m; package mage.cards.m;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.TriggeredAbility;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.InvertCondition; import mage.abilities.common.WerewolfFrontTriggeredAbility;
import mage.abilities.condition.common.NoSpellsWereCastLastTurnCondition;
import mage.abilities.condition.common.TransformedCondition;
import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.effects.common.continuous.BoostControlledEffect; import mage.abilities.effects.common.continuous.BoostControlledEffect;
import mage.abilities.keyword.TransformAbility; import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.*; import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.filter.common.FilterCreaturePermanent; import mage.filter.common.FilterCreaturePermanent;
import java.util.UUID;
/** /**
* @author North, noxx * @author North, noxx
*/ */
public final class MayorOfAvabruck extends CardImpl { public final class MayorOfAvabruck extends CardImpl {
private static final String ruleText = "Other Human creatures you control get +1/+1";
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Human creatures"); private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Human creatures");
static { static {
@ -47,13 +38,13 @@ public final class MayorOfAvabruck extends CardImpl {
this.toughness = new MageInt(1); this.toughness = new MageInt(1);
// Other Human creatures you control get +1/+1. // Other Human creatures you control get +1/+1.
Effect effect = new ConditionalContinuousEffect(new BoostControlledEffect(1, 1, Duration.WhileOnBattlefield, filter, true), new InvertCondition(new TransformedCondition()), ruleText); this.addAbility(new SimpleStaticAbility(new BoostControlledEffect(
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect)); 1, 1, Duration.WhileOnBattlefield, filter, true
)));
// At the beginning of each upkeep, if no spells were cast last turn, transform Mayor of Avabruck. // At the beginning of each upkeep, if no spells were cast last turn, transform Mayor of Avabruck.
this.addAbility(new TransformAbility()); this.addAbility(new TransformAbility());
TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(true), TargetController.ANY, false); this.addAbility(new WerewolfFrontTriggeredAbility());
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, NoSpellsWereCastLastTurnCondition.instance, TransformAbility.NO_SPELLS_TRANSFORM_RULE));
} }
private MayorOfAvabruck(final MayorOfAvabruck card) { private MayorOfAvabruck(final MayorOfAvabruck card) {

View file

@ -1,19 +1,13 @@
package mage.cards.m; package mage.cards.m;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.TriggeredAbility; import mage.abilities.common.WerewolfBackTriggeredAbility;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.condition.common.TwoOrMoreSpellsWereCastLastTurnCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.TargetController;
import java.util.UUID;
/** /**
* @author nantuko * @author nantuko
@ -21,7 +15,7 @@ import mage.constants.TargetController;
public final class MercilessPredator extends CardImpl { public final class MercilessPredator extends CardImpl {
public MercilessPredator(UUID ownerId, CardSetInfo setInfo) { public MercilessPredator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},""); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
this.subtype.add(SubType.WEREWOLF); this.subtype.add(SubType.WEREWOLF);
this.color.setRed(true); this.color.setRed(true);
@ -33,8 +27,7 @@ public final class MercilessPredator extends CardImpl {
this.toughness = new MageInt(2); this.toughness = new MageInt(2);
// At the beginning of each upkeep, if a player cast two or more spells last turn, transform Merciless Predator. // At the beginning of each upkeep, if a player cast two or more spells last turn, transform Merciless Predator.
TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(false), TargetController.ANY, false); this.addAbility(new WerewolfBackTriggeredAbility());
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, TwoOrMoreSpellsWereCastLastTurnCondition.instance, TransformAbility.TWO_OR_MORE_SPELLS_TRANSFORM_RULE));
} }
private MercilessPredator(final MercilessPredator card) { private MercilessPredator(final MercilessPredator card) {

View file

@ -1,20 +1,14 @@
package mage.cards.m; package mage.cards.m;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.TriggeredAbility; import mage.abilities.common.WerewolfFrontTriggeredAbility;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.condition.common.NoSpellsWereCastLastTurnCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.keyword.TransformAbility; import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.TargetController;
import java.util.UUID;
/** /**
* @author North * @author North
@ -35,10 +29,7 @@ public final class MondronenShaman extends CardImpl {
// At the beginning of each upkeep, if no spells were cast last turn, transform Mondronen Shaman. // At the beginning of each upkeep, if no spells were cast last turn, transform Mondronen Shaman.
this.addAbility(new TransformAbility()); this.addAbility(new TransformAbility());
TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(true), TargetController.ANY, false); this.addAbility(new WerewolfFrontTriggeredAbility());
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability,
NoSpellsWereCastLastTurnCondition.instance,
TransformAbility.NO_SPELLS_TRANSFORM_RULE));
} }
private MondronenShaman(final MondronenShaman card) { private MondronenShaman(final MondronenShaman card) {

View file

@ -1,29 +1,22 @@
package mage.cards.m; package mage.cards.m;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.TriggeredAbility; import mage.abilities.common.WerewolfBackTriggeredAbility;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.condition.common.TwoOrMoreSpellsWereCastLastTurnCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.keyword.MenaceAbility; import mage.abilities.keyword.MenaceAbility;
import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.TargetController;
import java.util.UUID;
/** /**
*
* @author fireshoes * @author fireshoes
*/ */
public final class MoonriseIntruder extends CardImpl { public final class MoonriseIntruder extends CardImpl {
public MoonriseIntruder(UUID ownerId, CardSetInfo setInfo) { public MoonriseIntruder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},""); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
this.subtype.add(SubType.WEREWOLF); this.subtype.add(SubType.WEREWOLF);
this.power = new MageInt(2); this.power = new MageInt(2);
this.toughness = new MageInt(2); this.toughness = new MageInt(2);
@ -37,8 +30,7 @@ public final class MoonriseIntruder extends CardImpl {
this.addAbility(new MenaceAbility()); this.addAbility(new MenaceAbility());
// At the beginning of each upkeep, if a player cast two or more spells last turn, transform Moonrise Intruder. // At the beginning of each upkeep, if a player cast two or more spells last turn, transform Moonrise Intruder.
TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(false), TargetController.ANY, false); this.addAbility(new WerewolfBackTriggeredAbility());
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, TwoOrMoreSpellsWereCastLastTurnCondition.instance, TransformAbility.TWO_OR_MORE_SPELLS_TRANSFORM_RULE));
} }
private MoonriseIntruder(final MoonriseIntruder card) { private MoonriseIntruder(final MoonriseIntruder card) {

View file

@ -1,33 +1,26 @@
package mage.cards.m; package mage.cards.m;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.Mana; import mage.Mana;
import mage.abilities.TriggeredAbility; import mage.abilities.common.WerewolfBackTriggeredAbility;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.condition.common.TwoOrMoreSpellsWereCastLastTurnCondition;
import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.keyword.TransformAbility;
import mage.abilities.keyword.VigilanceAbility; import mage.abilities.keyword.VigilanceAbility;
import mage.abilities.mana.SimpleManaAbility; import mage.abilities.mana.SimpleManaAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.TargetController;
import mage.constants.Zone; import mage.constants.Zone;
import java.util.UUID;
/** /**
*
* @author North * @author North
*/ */
public final class MoonscarredWerewolf extends CardImpl { public final class MoonscarredWerewolf extends CardImpl {
public MoonscarredWerewolf(UUID ownerId, CardSetInfo setInfo) { public MoonscarredWerewolf(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},""); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
this.subtype.add(SubType.WEREWOLF); this.subtype.add(SubType.WEREWOLF);
this.color.setGreen(true); this.color.setGreen(true);
@ -39,13 +32,12 @@ public final class MoonscarredWerewolf extends CardImpl {
this.transformable = true; this.transformable = true;
this.addAbility(VigilanceAbility.getInstance()); this.addAbility(VigilanceAbility.getInstance());
// {tap}: Add {G}{G}. // {tap}: Add {G}{G}.
this.addAbility(new SimpleManaAbility(Zone.BATTLEFIELD, Mana.GreenMana(2), new TapSourceCost())); this.addAbility(new SimpleManaAbility(Zone.BATTLEFIELD, Mana.GreenMana(2), new TapSourceCost()));
// At the beginning of each upkeep, if a player cast two or more spells last turn, transform Moonscarred Werewolf. // At the beginning of each upkeep, if a player cast two or more spells last turn, transform Moonscarred Werewolf.
TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(false), TargetController.ANY, false); this.addAbility(new WerewolfBackTriggeredAbility());
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability,
TwoOrMoreSpellsWereCastLastTurnCondition.instance,
TransformAbility.TWO_OR_MORE_SPELLS_TRANSFORM_RULE));
} }
private MoonscarredWerewolf(final MoonscarredWerewolf card) { private MoonscarredWerewolf(final MoonscarredWerewolf card) {

View file

@ -1,37 +1,28 @@
package mage.cards.n; package mage.cards.n;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.TriggeredAbility; import mage.abilities.Ability;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.TransformedCondition; import mage.abilities.common.WerewolfBackTriggeredAbility;
import mage.abilities.condition.common.TwoOrMoreSpellsWereCastLastTurnCondition;
import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.effects.common.continuous.BoostControlledEffect; import mage.abilities.effects.common.continuous.BoostControlledEffect;
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect; import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
import mage.abilities.keyword.TrampleAbility; import mage.abilities.keyword.TrampleAbility;
import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Duration; import mage.constants.Duration;
import mage.constants.TargetController; import mage.constants.SubType;
import mage.constants.Zone; import mage.filter.StaticFilters;
import mage.filter.common.FilterAttackingCreature;
import java.util.UUID;
/** /**
*
* @author fireshoes * @author fireshoes
*/ */
public final class NeckBreaker extends CardImpl { public final class NeckBreaker extends CardImpl {
public NeckBreaker(UUID ownerId, CardSetInfo setInfo) { public NeckBreaker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},""); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
this.subtype.add(SubType.WEREWOLF); this.subtype.add(SubType.WEREWOLF);
this.power = new MageInt(4); this.power = new MageInt(4);
this.toughness = new MageInt(3); this.toughness = new MageInt(3);
@ -42,15 +33,18 @@ public final class NeckBreaker extends CardImpl {
this.transformable = true; this.transformable = true;
// Attacking creatures you control get +1/+0 and have trample. // Attacking creatures you control get +1/+0 and have trample.
SimpleStaticAbility boostAbility = new SimpleStaticAbility(Zone.BATTLEFIELD, Ability ability = new SimpleStaticAbility(new BoostControlledEffect(
new ConditionalContinuousEffect(new BoostControlledEffect(1, 0, Duration.WhileOnBattlefield, new FilterAttackingCreature()), 1, 0, Duration.WhileOnBattlefield,
new TransformedCondition(false), "Attacking creatures you control get +1/+0")); StaticFilters.FILTER_ATTACKING_CREATURES
boostAbility.addEffect(new GainAbilityControlledEffect(TrampleAbility.getInstance(), Duration.WhileOnBattlefield, new FilterAttackingCreature())); ));
this.addAbility(boostAbility); ability.addEffect(new GainAbilityControlledEffect(
TrampleAbility.getInstance(), Duration.WhileOnBattlefield,
StaticFilters.FILTER_ATTACKING_CREATURES
).setText("and have trample"));
this.addAbility(ability);
// At the beginning of each upkeep, if a player cast two or more spells last turn, transform Neck Breaker. // At the beginning of each upkeep, if a player cast two or more spells last turn, transform Neck Breaker.
TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(false), TargetController.ANY, false); this.addAbility(new WerewolfBackTriggeredAbility());
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, TwoOrMoreSpellsWereCastLastTurnCondition.instance, TransformAbility.TWO_OR_MORE_SPELLS_TRANSFORM_RULE));
} }
private NeckBreaker(final NeckBreaker card) { private NeckBreaker(final NeckBreaker card) {

View file

@ -1,38 +1,27 @@
package mage.cards.n; package mage.cards.n;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.TriggeredAbility;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.condition.common.TwoOrMoreSpellsWereCastLastTurnCondition; import mage.abilities.common.WerewolfBackTriggeredAbility;
import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; import mage.abilities.effects.common.FightTargetSourceEffect;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.Outcome;
import mage.constants.TargetController;
import mage.constants.Zone;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.target.common.TargetCreaturePermanent; import mage.target.common.TargetCreaturePermanent;
import java.util.UUID;
/** /**
*
* @author North * @author North
*/ */
public final class NightfallPredator extends CardImpl { public final class NightfallPredator extends CardImpl {
public NightfallPredator(UUID ownerId, CardSetInfo setInfo) { public NightfallPredator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},""); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
this.subtype.add(SubType.WEREWOLF); this.subtype.add(SubType.WEREWOLF);
this.color.setGreen(true); this.color.setGreen(true);
@ -44,13 +33,15 @@ public final class NightfallPredator extends CardImpl {
this.transformable = true; this.transformable = true;
// {R}, {tap}: Nightfall Predator fights target creature. // {R}, {tap}: Nightfall Predator fights target creature.
Ability activatedAbility = new SimpleActivatedAbility(Zone.BATTLEFIELD, new NightfallPredatorEffect(), new ManaCostsImpl("{R}")); Ability activatedAbility = new SimpleActivatedAbility(
new FightTargetSourceEffect().setText("{this} fights target creature"), new ManaCostsImpl("{R}")
);
activatedAbility.addCost(new TapSourceCost()); activatedAbility.addCost(new TapSourceCost());
activatedAbility.addTarget(new TargetCreaturePermanent()); activatedAbility.addTarget(new TargetCreaturePermanent());
this.addAbility(activatedAbility); this.addAbility(activatedAbility);
// At the beginning of each upkeep, if a player cast two or more spells last turn, transform Nightfall Predator. // At the beginning of each upkeep, if a player cast two or more spells last turn, transform Nightfall Predator.
TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(false), TargetController.ANY, false); this.addAbility(new WerewolfBackTriggeredAbility());
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, TwoOrMoreSpellsWereCastLastTurnCondition.instance, TransformAbility.TWO_OR_MORE_SPELLS_TRANSFORM_RULE));
} }
private NightfallPredator(final NightfallPredator card) { private NightfallPredator(final NightfallPredator card) {
@ -62,33 +53,3 @@ public final class NightfallPredator extends CardImpl {
return new NightfallPredator(this); return new NightfallPredator(this);
} }
} }
class NightfallPredatorEffect extends OneShotEffect {
public NightfallPredatorEffect() {
super(Outcome.Damage);
this.staticText = "{this} fights target creature";
}
public NightfallPredatorEffect(final NightfallPredatorEffect effect) {
super(effect);
}
@Override
public NightfallPredatorEffect copy() {
return new NightfallPredatorEffect(this);
}
@Override
public boolean apply(Game game, Ability source) {
Permanent creature1 = game.getPermanent(source.getSourceId());
Permanent creature2 = game.getPermanent(source.getFirstTarget());
// 20110930 - 701.10
if (creature1 != null && creature2 != null) {
if (creature1.isCreature() && creature2.isCreature()) {
return creature1.fight(creature2, source, game);
}
}
return false;
}
}

View file

@ -1,28 +1,21 @@
package mage.cards.o; package mage.cards.o;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.TriggeredAbility; import mage.abilities.common.WerewolfBackTriggeredAbility;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.condition.common.TwoOrMoreSpellsWereCastLastTurnCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.TargetController;
import java.util.UUID;
/** /**
*
* @author LevelX2 * @author LevelX2
*/ */
public final class OneOfThePack extends CardImpl { public final class OneOfThePack extends CardImpl {
public OneOfThePack(UUID ownerId, CardSetInfo setInfo) { public OneOfThePack(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},""); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
this.subtype.add(SubType.WEREWOLF); this.subtype.add(SubType.WEREWOLF);
this.power = new MageInt(5); this.power = new MageInt(5);
this.toughness = new MageInt(6); this.toughness = new MageInt(6);
@ -32,8 +25,7 @@ public final class OneOfThePack extends CardImpl {
this.transformable = true; this.transformable = true;
// At the beginning of each upkeep, if a player cast two or more spells last turn, transform One of the Pack. // At the beginning of each upkeep, if a player cast two or more spells last turn, transform One of the Pack.
TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(false), TargetController.ANY, false); this.addAbility(new WerewolfBackTriggeredAbility());
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, TwoOrMoreSpellsWereCastLastTurnCondition.instance, TransformAbility.TWO_OR_MORE_SPELLS_TRANSFORM_RULE));
} }
private OneOfThePack(final OneOfThePack card) { private OneOfThePack(final OneOfThePack card) {

View file

@ -1,19 +1,13 @@
package mage.cards.r; package mage.cards.r;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.TriggeredAbility; import mage.abilities.common.WerewolfBackTriggeredAbility;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.condition.common.TwoOrMoreSpellsWereCastLastTurnCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.TargetController;
import java.util.UUID;
/** /**
* @author nantuko * @author nantuko
@ -21,7 +15,7 @@ import mage.constants.TargetController;
public final class RampagingWerewolf extends CardImpl { public final class RampagingWerewolf extends CardImpl {
public RampagingWerewolf(UUID ownerId, CardSetInfo setInfo) { public RampagingWerewolf(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},""); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
this.subtype.add(SubType.WEREWOLF); this.subtype.add(SubType.WEREWOLF);
this.color.setRed(true); this.color.setRed(true);
@ -33,9 +27,7 @@ public final class RampagingWerewolf extends CardImpl {
this.toughness = new MageInt(4); this.toughness = new MageInt(4);
// At the beginning of each upkeep, if a player cast two or more spells last turn, transform Rampaging Werewolf. // At the beginning of each upkeep, if a player cast two or more spells last turn, transform Rampaging Werewolf.
TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(false), TargetController.ANY, false); this.addAbility(new WerewolfBackTriggeredAbility());
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, TwoOrMoreSpellsWereCastLastTurnCondition.instance, TransformAbility.TWO_OR_MORE_SPELLS_TRANSFORM_RULE));
} }
private RampagingWerewolf(final RampagingWerewolf card) { private RampagingWerewolf(final RampagingWerewolf card) {

View file

@ -1,27 +1,17 @@
package mage.cards.r; package mage.cards.r;
import java.util.HashSet;
import java.util.Set;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.MageObject; import mage.MageObject;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.TriggeredAbility;
import mage.abilities.TriggeredAbilityImpl; import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.common.WerewolfBackTriggeredAbility;
import mage.abilities.condition.common.TwoOrMoreSpellsWereCastLastTurnCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.keyword.TrampleAbility; import mage.abilities.keyword.TrampleAbility;
import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Outcome; import mage.constants.Outcome;
import mage.constants.TargetController; import mage.constants.SubType;
import mage.constants.Zone; import mage.constants.Zone;
import mage.filter.StaticFilters; import mage.filter.StaticFilters;
import mage.game.Game; import mage.game.Game;
@ -33,8 +23,11 @@ import mage.target.Target;
import mage.target.TargetPermanent; import mage.target.TargetPermanent;
import mage.target.common.TargetOpponentOrPlaneswalker; import mage.target.common.TargetOpponentOrPlaneswalker;
import java.util.HashSet;
import java.util.Set;
import java.util.UUID;
/** /**
*
* @author BetaSteward * @author BetaSteward
*/ */
public final class RavagerOfTheFells extends CardImpl { public final class RavagerOfTheFells extends CardImpl {
@ -58,12 +51,7 @@ public final class RavagerOfTheFells extends CardImpl {
this.addAbility(new RavagerOfTheFellsAbility()); this.addAbility(new RavagerOfTheFellsAbility());
// At the beginning of each upkeep, if a player cast two or more spells last turn, transform Ravager of the Fells. // At the beginning of each upkeep, if a player cast two or more spells last turn, transform Ravager of the Fells.
TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(false), TargetController.ANY, false); this.addAbility(new WerewolfBackTriggeredAbility());
this.addAbility(new ConditionalInterveningIfTriggeredAbility(
ability,
TwoOrMoreSpellsWereCastLastTurnCondition.instance,
TransformAbility.TWO_OR_MORE_SPELLS_TRANSFORM_RULE
));
} }
private RavagerOfTheFells(final RavagerOfTheFells card) { private RavagerOfTheFells(final RavagerOfTheFells card) {
@ -78,14 +66,14 @@ public final class RavagerOfTheFells extends CardImpl {
class RavagerOfTheFellsAbility extends TriggeredAbilityImpl { class RavagerOfTheFellsAbility extends TriggeredAbilityImpl {
public RavagerOfTheFellsAbility() { RavagerOfTheFellsAbility() {
super(Zone.BATTLEFIELD, new RavagerOfTheFellsEffect(), false); super(Zone.BATTLEFIELD, new RavagerOfTheFellsEffect(), false);
Target target1 = new TargetOpponentOrPlaneswalker(); Target target1 = new TargetOpponentOrPlaneswalker();
this.addTarget(target1); this.addTarget(target1);
this.addTarget(new RavagerOfTheFellsTarget()); this.addTarget(new RavagerOfTheFellsTarget());
} }
public RavagerOfTheFellsAbility(final RavagerOfTheFellsAbility ability) { private RavagerOfTheFellsAbility(final RavagerOfTheFellsAbility ability) {
super(ability); super(ability);
} }
@ -121,11 +109,11 @@ class RavagerOfTheFellsAbility extends TriggeredAbilityImpl {
class RavagerOfTheFellsEffect extends OneShotEffect { class RavagerOfTheFellsEffect extends OneShotEffect {
public RavagerOfTheFellsEffect() { RavagerOfTheFellsEffect() {
super(Outcome.Damage); super(Outcome.Damage);
} }
public RavagerOfTheFellsEffect(final RavagerOfTheFellsEffect effect) { private RavagerOfTheFellsEffect(final RavagerOfTheFellsEffect effect) {
super(effect); super(effect);
} }
@ -148,11 +136,11 @@ class RavagerOfTheFellsEffect extends OneShotEffect {
class RavagerOfTheFellsTarget extends TargetPermanent { class RavagerOfTheFellsTarget extends TargetPermanent {
public RavagerOfTheFellsTarget() { RavagerOfTheFellsTarget() {
super(0, 1, StaticFilters.FILTER_PERMANENT_CREATURE, false); super(0, 1, StaticFilters.FILTER_PERMANENT_CREATURE, false);
} }
public RavagerOfTheFellsTarget(final RavagerOfTheFellsTarget target) { private RavagerOfTheFellsTarget(final RavagerOfTheFellsTarget target) {
super(target); super(target);
} }

View file

@ -1,20 +1,14 @@
package mage.cards.r; package mage.cards.r;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.TriggeredAbility; import mage.abilities.common.WerewolfFrontTriggeredAbility;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.condition.common.NoSpellsWereCastLastTurnCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.keyword.TransformAbility; import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.TargetController;
import java.util.UUID;
/** /**
* @author nantuko * @author nantuko
@ -35,8 +29,7 @@ public final class RecklessWaif extends CardImpl {
// At the beginning of each upkeep, if no spells were cast last turn, transform Reckless Waif. // At the beginning of each upkeep, if no spells were cast last turn, transform Reckless Waif.
this.addAbility(new TransformAbility()); this.addAbility(new TransformAbility());
TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(true), TargetController.ANY, false); this.addAbility(new WerewolfFrontTriggeredAbility());
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, NoSpellsWereCastLastTurnCondition.instance, TransformAbility.NO_SPELLS_TRANSFORM_RULE));
} }
private RecklessWaif(final RecklessWaif card) { private RecklessWaif(final RecklessWaif card) {

View file

@ -1,31 +1,25 @@
package mage.cards.s; package mage.cards.s;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.TriggeredAbility;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.NoSpellsWereCastLastTurnCondition; import mage.abilities.common.WerewolfFrontTriggeredAbility;
import mage.abilities.condition.common.TransformedCondition; import mage.abilities.condition.common.TransformedCondition;
import mage.abilities.decorator.ConditionalContinuousEffect; import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.dynamicvalue.DynamicValue; import mage.abilities.dynamicvalue.DynamicValue;
import mage.abilities.dynamicvalue.common.CardsInControllerHandCount; import mage.abilities.dynamicvalue.common.CardsInControllerHandCount;
import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.effects.common.continuous.SetPowerToughnessSourceEffect; import mage.abilities.effects.common.continuous.SetPowerToughnessSourceEffect;
import mage.abilities.keyword.TransformAbility; import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Duration; import mage.constants.Duration;
import mage.constants.TargetController; import mage.constants.SubType;
import mage.constants.Zone; import mage.constants.Zone;
import java.util.UUID;
/** /**
* @author fireshoes * @author fireshoes
*/ */
@ -53,8 +47,7 @@ public final class SageOfAncientLore extends CardImpl {
// At the beginning of each upkeep, if no spells were cast last turn, transform Sage of Ancient Lore. // At the beginning of each upkeep, if no spells were cast last turn, transform Sage of Ancient Lore.
this.addAbility(new TransformAbility()); this.addAbility(new TransformAbility());
TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(true), TargetController.ANY, false); this.addAbility(new WerewolfFrontTriggeredAbility());
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, NoSpellsWereCastLastTurnCondition.instance, TransformAbility.NO_SPELLS_TRANSFORM_RULE));
} }
private SageOfAncientLore(final SageOfAncientLore card) { private SageOfAncientLore(final SageOfAncientLore card) {

View file

@ -1,21 +1,15 @@
package mage.cards.s; package mage.cards.s;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.TriggeredAbility; import mage.abilities.common.WerewolfFrontTriggeredAbility;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.condition.common.NoSpellsWereCastLastTurnCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.keyword.TransformAbility; import mage.abilities.keyword.TransformAbility;
import mage.abilities.mana.GreenManaAbility; import mage.abilities.mana.GreenManaAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.TargetController;
import java.util.UUID;
/** /**
* @author North * @author North
@ -35,12 +29,10 @@ public final class ScornedVillager extends CardImpl {
// {tap}: Add {G}. // {tap}: Add {G}.
this.addAbility(new GreenManaAbility()); this.addAbility(new GreenManaAbility());
// At the beginning of each upkeep, if no spells were cast last turn, transform Scorned Villager. // At the beginning of each upkeep, if no spells were cast last turn, transform Scorned Villager.
this.addAbility(new TransformAbility()); this.addAbility(new TransformAbility());
TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(true), TargetController.ANY, false); this.addAbility(new WerewolfFrontTriggeredAbility());
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability,
NoSpellsWereCastLastTurnCondition.instance,
TransformAbility.NO_SPELLS_TRANSFORM_RULE));
} }
private ScornedVillager(final ScornedVillager card) { private ScornedVillager(final ScornedVillager card) {

View file

@ -1,30 +1,23 @@
package mage.cards.s; package mage.cards.s;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.TriggeredAbility;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility; import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility;
import mage.abilities.condition.common.TwoOrMoreSpellsWereCastLastTurnCondition; import mage.abilities.common.WerewolfBackTriggeredAbility;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.TargetController;
import java.util.UUID;
/** /**
*
* @author Loki * @author Loki
*/ */
public final class SilverpeltWerewolf extends CardImpl { public final class SilverpeltWerewolf extends CardImpl {
public SilverpeltWerewolf(UUID ownerId, CardSetInfo setInfo) { public SilverpeltWerewolf(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},null); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, null);
this.subtype.add(SubType.WEREWOLF); this.subtype.add(SubType.WEREWOLF);
this.color.setGreen(true); this.color.setGreen(true);
@ -38,8 +31,7 @@ public final class SilverpeltWerewolf extends CardImpl {
this.addAbility(new DealsCombatDamageToAPlayerTriggeredAbility(new DrawCardSourceControllerEffect(1), false)); this.addAbility(new DealsCombatDamageToAPlayerTriggeredAbility(new DrawCardSourceControllerEffect(1), false));
// At the beginning of each upkeep, if a player cast two or more spells last turn, transform Silverpelt Werewolf. // At the beginning of each upkeep, if a player cast two or more spells last turn, transform Silverpelt Werewolf.
TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(false), TargetController.ANY, false); this.addAbility(new WerewolfBackTriggeredAbility());
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, TwoOrMoreSpellsWereCastLastTurnCondition.instance, TransformAbility.TWO_OR_MORE_SPELLS_TRANSFORM_RULE));
} }
private SilverpeltWerewolf(final SilverpeltWerewolf card) { private SilverpeltWerewolf(final SilverpeltWerewolf card) {

View file

@ -1,20 +1,14 @@
package mage.cards.s; package mage.cards.s;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.TriggeredAbility; import mage.abilities.common.WerewolfFrontTriggeredAbility;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.condition.common.NoSpellsWereCastLastTurnCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.keyword.TransformAbility; import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.TargetController;
import java.util.UUID;
/** /**
* @author LevelX2 * @author LevelX2
@ -35,8 +29,7 @@ public final class SolitaryHunter extends CardImpl {
// At the beginning of each upkeep, if no spells were cast last turn, transform Solitary Hunter. // At the beginning of each upkeep, if no spells were cast last turn, transform Solitary Hunter.
this.addAbility(new TransformAbility()); this.addAbility(new TransformAbility());
TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(true), TargetController.ANY, false); this.addAbility(new WerewolfFrontTriggeredAbility());
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, NoSpellsWereCastLastTurnCondition.instance, TransformAbility.NO_SPELLS_TRANSFORM_RULE));
} }
private SolitaryHunter(final SolitaryHunter card) { private SolitaryHunter(final SolitaryHunter card) {

View file

@ -1,41 +1,29 @@
package mage.cards.t; package mage.cards.t;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.TriggeredAbility;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.TransformedCondition; import mage.abilities.common.WerewolfBackTriggeredAbility;
import mage.abilities.condition.common.TwoOrMoreSpellsWereCastLastTurnCondition; import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.effects.common.continuous.GainAbilityAllEffect;
import mage.abilities.keyword.DoubleStrikeAbility; import mage.abilities.keyword.DoubleStrikeAbility;
import mage.abilities.keyword.MenaceAbility; import mage.abilities.keyword.MenaceAbility;
import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.*; import mage.constants.CardType;
import mage.filter.common.FilterCreaturePermanent; import mage.constants.Duration;
import mage.constants.SubType;
import mage.filter.FilterPermanent;
import java.util.UUID;
/** /**
*
* @author North * @author North
*/ */
public final class TerrorOfKruinPass extends CardImpl { public final class TerrorOfKruinPass extends CardImpl {
private static final String ruleText = "Werewolves you control have menace. (They can't be blocked except by two or more creatures.)"; private static final FilterPermanent filter = new FilterPermanent(SubType.WEREWOLF, "Werewolves");
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Werewolf you control");
static {
filter.add(TargetController.YOU.getControllerPredicate());
filter.add(SubType.WEREWOLF.getPredicate());
}
public TerrorOfKruinPass(UUID ownerId, CardSetInfo setInfo) { public TerrorOfKruinPass(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},""); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
this.subtype.add(SubType.WEREWOLF); this.subtype.add(SubType.WEREWOLF);
// this card is the second face of double-faced card // this card is the second face of double-faced card
@ -47,13 +35,14 @@ public final class TerrorOfKruinPass extends CardImpl {
this.toughness = new MageInt(3); this.toughness = new MageInt(3);
this.addAbility(DoubleStrikeAbility.getInstance()); this.addAbility(DoubleStrikeAbility.getInstance());
// Werewolves you control have menace. (They can't be blocked except by two or more creatures.) // Werewolves you control have menace. (They can't be blocked except by two or more creatures.)
Effect effect = new ConditionalContinuousEffect(new GainAbilityAllEffect(new MenaceAbility(), Duration.Custom, filter), new TransformedCondition(), ruleText); this.addAbility(new SimpleStaticAbility(new GainAbilityControlledEffect(
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect)); new MenaceAbility(false), Duration.WhileOnBattlefield, filter, false
)));
// At the beginning of each upkeep, if a player cast two or more spells last turn, transform Terror of Kruin Pass. // At the beginning of each upkeep, if a player cast two or more spells last turn, transform Terror of Kruin Pass.
TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(false), TargetController.ANY, false); this.addAbility(new WerewolfBackTriggeredAbility());
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, TwoOrMoreSpellsWereCastLastTurnCondition.instance, TransformAbility.TWO_OR_MORE_SPELLS_TRANSFORM_RULE));
} }
private TerrorOfKruinPass(final TerrorOfKruinPass card) { private TerrorOfKruinPass(final TerrorOfKruinPass card) {

View file

@ -1,29 +1,22 @@
package mage.cards.t; package mage.cards.t;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.TriggeredAbility; import mage.abilities.common.WerewolfBackTriggeredAbility;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.condition.common.TwoOrMoreSpellsWereCastLastTurnCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.keyword.TrampleAbility; import mage.abilities.keyword.TrampleAbility;
import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.TargetController;
import java.util.UUID;
/** /**
*
* @author fireshoes * @author fireshoes
*/ */
public final class TimberShredder extends CardImpl { public final class TimberShredder extends CardImpl {
public TimberShredder(UUID ownerId, CardSetInfo setInfo) { public TimberShredder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},""); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
this.subtype.add(SubType.WEREWOLF); this.subtype.add(SubType.WEREWOLF);
this.power = new MageInt(4); this.power = new MageInt(4);
this.toughness = new MageInt(2); this.toughness = new MageInt(2);
@ -37,8 +30,7 @@ public final class TimberShredder extends CardImpl {
this.addAbility(TrampleAbility.getInstance()); this.addAbility(TrampleAbility.getInstance());
// At the beginning of each upkeep, if a player cast two or more spells last turn, transform Timber Shredder. // At the beginning of each upkeep, if a player cast two or more spells last turn, transform Timber Shredder.
TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(false), TargetController.ANY, false); this.addAbility(new WerewolfBackTriggeredAbility());
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, TwoOrMoreSpellsWereCastLastTurnCondition.instance, TransformAbility.TWO_OR_MORE_SPELLS_TRANSFORM_RULE));
} }
private TimberShredder(final TimberShredder card) { private TimberShredder(final TimberShredder card) {

View file

@ -1,20 +1,14 @@
package mage.cards.t; package mage.cards.t;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.TriggeredAbility; import mage.abilities.common.WerewolfFrontTriggeredAbility;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.condition.common.NoSpellsWereCastLastTurnCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.keyword.TransformAbility; import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.TargetController;
import java.util.UUID;
/** /**
* @author nantuko * @author nantuko
@ -35,8 +29,7 @@ public final class TormentedPariah extends CardImpl {
// At the beginning of each upkeep, if no spells were cast last turn, transform Tormented Pariah. // At the beginning of each upkeep, if no spells were cast last turn, transform Tormented Pariah.
this.addAbility(new TransformAbility()); this.addAbility(new TransformAbility());
TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(true), TargetController.ANY, false); this.addAbility(new WerewolfFrontTriggeredAbility());
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, NoSpellsWereCastLastTurnCondition.instance, TransformAbility.NO_SPELLS_TRANSFORM_RULE));
} }
private TormentedPariah(final TormentedPariah card) { private TormentedPariah(final TormentedPariah card) {

View file

@ -1,35 +1,27 @@
package mage.cards.t; package mage.cards.t;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.TriggeredAbility;
import mage.abilities.TriggeredAbilityImpl; import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.common.WerewolfBackTriggeredAbility;
import mage.abilities.condition.common.TwoOrMoreSpellsWereCastLastTurnCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.DamageTargetEffect;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.TargetController;
import mage.constants.Zone; import mage.constants.Zone;
import mage.game.Game; import mage.game.Game;
import mage.game.events.GameEvent; import mage.game.events.GameEvent;
import mage.game.events.GameEvent.EventType;
import mage.target.targetpointer.FixedTarget; import mage.target.targetpointer.FixedTarget;
import java.util.UUID;
/** /**
*
* @author North * @author North
*/ */
public final class TovolarsMagehunter extends CardImpl { public final class TovolarsMagehunter extends CardImpl {
public TovolarsMagehunter(UUID ownerId, CardSetInfo setInfo) { public TovolarsMagehunter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},""); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
this.subtype.add(SubType.WEREWOLF); this.subtype.add(SubType.WEREWOLF);
this.color.setRed(true); this.color.setRed(true);
@ -42,11 +34,9 @@ public final class TovolarsMagehunter extends CardImpl {
// Whenever an opponent casts a spell, Tovolar's Magehunter deals 2 damage to that player. // Whenever an opponent casts a spell, Tovolar's Magehunter deals 2 damage to that player.
this.addAbility(new TovolarsMagehunterTriggeredAbility()); this.addAbility(new TovolarsMagehunterTriggeredAbility());
// At the beginning of each upkeep, if a player cast two or more spells last turn, transform Tovolar's Magehunter. // At the beginning of each upkeep, if a player cast two or more spells last turn, transform Tovolar's Magehunter.
TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(false), TargetController.ANY, false); this.addAbility(new WerewolfBackTriggeredAbility());
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability,
TwoOrMoreSpellsWereCastLastTurnCondition.instance,
TransformAbility.TWO_OR_MORE_SPELLS_TRANSFORM_RULE));
} }
private TovolarsMagehunter(final TovolarsMagehunter card) { private TovolarsMagehunter(final TovolarsMagehunter card) {
@ -61,11 +51,11 @@ public final class TovolarsMagehunter extends CardImpl {
class TovolarsMagehunterTriggeredAbility extends TriggeredAbilityImpl { class TovolarsMagehunterTriggeredAbility extends TriggeredAbilityImpl {
public TovolarsMagehunterTriggeredAbility() { TovolarsMagehunterTriggeredAbility() {
super(Zone.BATTLEFIELD, new DamageTargetEffect(2), false); super(Zone.BATTLEFIELD, new DamageTargetEffect(2), false);
} }
public TovolarsMagehunterTriggeredAbility(final TovolarsMagehunterTriggeredAbility ability) { private TovolarsMagehunterTriggeredAbility(final TovolarsMagehunterTriggeredAbility ability) {
super(ability); super(ability);
} }
@ -82,7 +72,7 @@ class TovolarsMagehunterTriggeredAbility extends TriggeredAbilityImpl {
@Override @Override
public boolean checkTrigger(GameEvent event, Game game) { public boolean checkTrigger(GameEvent event, Game game) {
if (game.getOpponents(controllerId).contains(event.getPlayerId())) { if (game.getOpponents(controllerId).contains(event.getPlayerId())) {
this.getEffects().get(0).setTargetPointer(new FixedTarget(event.getPlayerId())); this.getEffects().setTargetPointer(new FixedTarget(event.getPlayerId()));
return true; return true;
} }
return false; return false;

View file

@ -1,14 +1,8 @@
package mage.cards.u; package mage.cards.u;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.TriggeredAbility;
import mage.abilities.TriggeredAbilityImpl; import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.common.WerewolfFrontTriggeredAbility;
import mage.abilities.condition.common.NoSpellsWereCastLastTurnCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.effects.common.continuous.BoostTargetEffect; import mage.abilities.effects.common.continuous.BoostTargetEffect;
import mage.abilities.keyword.TransformAbility; import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
@ -19,14 +13,15 @@ import mage.game.events.GameEvent;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
import mage.target.common.TargetCreaturePermanent; import mage.target.common.TargetCreaturePermanent;
import java.util.UUID;
/** /**
*
* @author fireshoes * @author fireshoes
*/ */
public final class UlrichOfTheKrallenhorde extends CardImpl { public final class UlrichOfTheKrallenhorde extends CardImpl {
public UlrichOfTheKrallenhorde(UUID ownerId, CardSetInfo setInfo) { public UlrichOfTheKrallenhorde(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{G}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}{G}");
addSuperType(SuperType.LEGENDARY); addSuperType(SuperType.LEGENDARY);
this.subtype.add(SubType.HUMAN); this.subtype.add(SubType.HUMAN);
this.subtype.add(SubType.WEREWOLF); this.subtype.add(SubType.WEREWOLF);
@ -42,8 +37,7 @@ public final class UlrichOfTheKrallenhorde extends CardImpl {
// At the beginning of each upkeep, if no spells were cast last turn, transform Ulrich of the Krallenhorde. // At the beginning of each upkeep, if no spells were cast last turn, transform Ulrich of the Krallenhorde.
this.addAbility(new TransformAbility()); this.addAbility(new TransformAbility());
TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(true), TargetController.ANY, false); this.addAbility(new WerewolfFrontTriggeredAbility());
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, NoSpellsWereCastLastTurnCondition.instance, TransformAbility.NO_SPELLS_TRANSFORM_RULE));
} }
private UlrichOfTheKrallenhorde(final UlrichOfTheKrallenhorde card) { private UlrichOfTheKrallenhorde(final UlrichOfTheKrallenhorde card) {

View file

@ -1,16 +1,9 @@
package mage.cards.u; package mage.cards.u;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.TriggeredAbility;
import mage.abilities.TriggeredAbilityImpl; import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.common.WerewolfBackTriggeredAbility;
import mage.abilities.condition.common.TwoOrMoreSpellsWereCastLastTurnCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.FightTargetSourceEffect; import mage.abilities.effects.common.FightTargetSourceEffect;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.*; import mage.constants.*;
@ -22,14 +15,15 @@ import mage.game.permanent.Permanent;
import mage.target.Target; import mage.target.Target;
import mage.target.common.TargetCreaturePermanent; import mage.target.common.TargetCreaturePermanent;
import java.util.UUID;
/** /**
*
* @author fireshoes * @author fireshoes
*/ */
public final class UlrichUncontestedAlpha extends CardImpl { public final class UlrichUncontestedAlpha extends CardImpl {
public UlrichUncontestedAlpha(UUID ownerId, CardSetInfo setInfo) { public UlrichUncontestedAlpha(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},""); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
addSuperType(SuperType.LEGENDARY); addSuperType(SuperType.LEGENDARY);
this.subtype.add(SubType.WEREWOLF); this.subtype.add(SubType.WEREWOLF);
this.power = new MageInt(6); this.power = new MageInt(6);
@ -45,8 +39,7 @@ public final class UlrichUncontestedAlpha extends CardImpl {
this.addAbility(new UlrichUncontestedAlphaAbility()); this.addAbility(new UlrichUncontestedAlphaAbility());
// At the beginning of each upkeep, if a player cast two or more spells last turn, transform Ulrich, Uncontested Alpha. // At the beginning of each upkeep, if a player cast two or more spells last turn, transform Ulrich, Uncontested Alpha.
TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(false), TargetController.ANY, false); this.addAbility(new WerewolfBackTriggeredAbility());
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, TwoOrMoreSpellsWereCastLastTurnCondition.instance, TransformAbility.TWO_OR_MORE_SPELLS_TRANSFORM_RULE));
} }
private UlrichUncontestedAlpha(final UlrichUncontestedAlpha card) { private UlrichUncontestedAlpha(final UlrichUncontestedAlpha card) {

View file

@ -1,19 +1,14 @@
package mage.cards.u; package mage.cards.u;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.TriggeredAbility; import mage.abilities.common.WerewolfFrontTriggeredAbility;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.condition.common.NoSpellsWereCastLastTurnCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.keyword.TransformAbility; import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.TargetController;
import java.util.UUID;
/** /**
* @author nantuko * @author nantuko
@ -21,7 +16,7 @@ import mage.constants.TargetController;
public final class UlvenwaldMystics extends CardImpl { public final class UlvenwaldMystics extends CardImpl {
public UlvenwaldMystics(UUID ownerId, CardSetInfo setInfo) { public UlvenwaldMystics(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}{G}");
this.subtype.add(SubType.HUMAN); this.subtype.add(SubType.HUMAN);
this.subtype.add(SubType.SHAMAN); this.subtype.add(SubType.SHAMAN);
this.subtype.add(SubType.WEREWOLF); this.subtype.add(SubType.WEREWOLF);
@ -34,8 +29,7 @@ public final class UlvenwaldMystics extends CardImpl {
// At the beginning of each upkeep, if no spells were cast last turn, transform Ulvenwald Mystics. // At the beginning of each upkeep, if no spells were cast last turn, transform Ulvenwald Mystics.
this.addAbility(new TransformAbility()); this.addAbility(new TransformAbility());
TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(true), TargetController.ANY, false); this.addAbility(new WerewolfFrontTriggeredAbility());
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, NoSpellsWereCastLastTurnCondition.instance, TransformAbility.NO_SPELLS_TRANSFORM_RULE));
} }
private UlvenwaldMystics(final UlvenwaldMystics card) { private UlvenwaldMystics(final UlvenwaldMystics card) {

View file

@ -1,23 +1,16 @@
package mage.cards.u; package mage.cards.u;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.TriggeredAbility;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.condition.common.TwoOrMoreSpellsWereCastLastTurnCondition; import mage.abilities.common.WerewolfBackTriggeredAbility;
import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.RegenerateSourceEffect; import mage.abilities.effects.common.RegenerateSourceEffect;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.TargetController;
import mage.constants.Zone; import java.util.UUID;
/** /**
* @author nantuko * @author nantuko
@ -25,7 +18,7 @@ import mage.constants.Zone;
public final class UlvenwaldPrimordials extends CardImpl { public final class UlvenwaldPrimordials extends CardImpl {
public UlvenwaldPrimordials(UUID ownerId, CardSetInfo setInfo) { public UlvenwaldPrimordials(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},""); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
this.subtype.add(SubType.WEREWOLF); this.subtype.add(SubType.WEREWOLF);
this.color.setGreen(true); this.color.setGreen(true);
@ -37,11 +30,10 @@ public final class UlvenwaldPrimordials extends CardImpl {
this.toughness = new MageInt(5); this.toughness = new MageInt(5);
// {G}: Regenerate Ulvenwald Primordials. // {G}: Regenerate Ulvenwald Primordials.
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new RegenerateSourceEffect(), new ManaCostsImpl("{G}"))); this.addAbility(new SimpleActivatedAbility(new RegenerateSourceEffect(), new ManaCostsImpl("{G}")));
// At the beginning of each upkeep, if a player cast two or more spells last turn, transform Ulvenwald Primordials. // At the beginning of each upkeep, if a player cast two or more spells last turn, transform Ulvenwald Primordials.
TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(false), TargetController.ANY, false); this.addAbility(new WerewolfBackTriggeredAbility());
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, TwoOrMoreSpellsWereCastLastTurnCondition.instance, TransformAbility.TWO_OR_MORE_SPELLS_TRANSFORM_RULE));
} }
private UlvenwaldPrimordials(final UlvenwaldPrimordials card) { private UlvenwaldPrimordials(final UlvenwaldPrimordials card) {

View file

@ -1,17 +1,10 @@
package mage.cards.v; package mage.cards.v;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.TriggeredAbility;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
import mage.abilities.condition.common.TwoOrMoreSpellsWereCastLastTurnCondition; import mage.abilities.common.WerewolfBackTriggeredAbility;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.*; import mage.constants.*;
@ -20,14 +13,15 @@ import mage.game.Game;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
import mage.players.Player; import mage.players.Player;
import java.util.UUID;
/** /**
*
* @author LevelX2 * @author LevelX2
*/ */
public final class VildinPackAlpha extends CardImpl { public final class VildinPackAlpha extends CardImpl {
public VildinPackAlpha(UUID ownerId, CardSetInfo setInfo) { public VildinPackAlpha(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},""); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
this.subtype.add(SubType.WEREWOLF); this.subtype.add(SubType.WEREWOLF);
this.power = new MageInt(4); this.power = new MageInt(4);
this.toughness = new MageInt(3); this.toughness = new MageInt(3);
@ -40,9 +34,7 @@ public final class VildinPackAlpha extends CardImpl {
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD, new VildinPackAlphaEffect(), new FilterCreaturePermanent(SubType.WEREWOLF, "a Werewolf"), true, SetTargetPointer.PERMANENT, null)); this.addAbility(new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD, new VildinPackAlphaEffect(), new FilterCreaturePermanent(SubType.WEREWOLF, "a Werewolf"), true, SetTargetPointer.PERMANENT, null));
// At the beginning of each upkeep, if a player cast two or more spells last turn, transform Vildin-Pack Alpha. // At the beginning of each upkeep, if a player cast two or more spells last turn, transform Vildin-Pack Alpha.
TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(false), TargetController.ANY, false); this.addAbility(new WerewolfBackTriggeredAbility());
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, TwoOrMoreSpellsWereCastLastTurnCondition.instance, TransformAbility.TWO_OR_MORE_SPELLS_TRANSFORM_RULE));
} }
private VildinPackAlpha(final VildinPackAlpha card) { private VildinPackAlpha(final VildinPackAlpha card) {

View file

@ -1,21 +1,15 @@
package mage.cards.v; package mage.cards.v;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.TriggeredAbility; import mage.abilities.common.WerewolfFrontTriggeredAbility;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.condition.common.NoSpellsWereCastLastTurnCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.keyword.FirstStrikeAbility; import mage.abilities.keyword.FirstStrikeAbility;
import mage.abilities.keyword.TransformAbility; import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.TargetController;
import java.util.UUID;
/** /**
* @author nantuko * @author nantuko
@ -37,8 +31,7 @@ public final class VillageIronsmith extends CardImpl {
// At the beginning of each upkeep, if no spells were cast last turn, transform Village Ironsmith. // At the beginning of each upkeep, if no spells were cast last turn, transform Village Ironsmith.
this.addAbility(new TransformAbility()); this.addAbility(new TransformAbility());
TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(true), TargetController.ANY, false); this.addAbility(new WerewolfFrontTriggeredAbility());
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, NoSpellsWereCastLastTurnCondition.instance, TransformAbility.NO_SPELLS_TRANSFORM_RULE));
} }
private VillageIronsmith(final VillageIronsmith card) { private VillageIronsmith(final VillageIronsmith card) {

View file

@ -1,21 +1,15 @@
package mage.cards.v; package mage.cards.v;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.TriggeredAbility; import mage.abilities.common.WerewolfFrontTriggeredAbility;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.condition.common.NoSpellsWereCastLastTurnCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.keyword.HasteAbility; import mage.abilities.keyword.HasteAbility;
import mage.abilities.keyword.TransformAbility; import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.TargetController;
import java.util.UUID;
/** /**
* @author fireshoes * @author fireshoes
@ -37,8 +31,7 @@ public final class VillageMessenger extends CardImpl {
// At the beginning of each upkeep, if no spells were cast last turn, transform Village Messenger. // At the beginning of each upkeep, if no spells were cast last turn, transform Village Messenger.
this.addAbility(new TransformAbility()); this.addAbility(new TransformAbility());
TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(true), TargetController.ANY, false); this.addAbility(new WerewolfFrontTriggeredAbility());
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, NoSpellsWereCastLastTurnCondition.instance, TransformAbility.NO_SPELLS_TRANSFORM_RULE));
} }
private VillageMessenger(final VillageMessenger card) { private VillageMessenger(final VillageMessenger card) {

View file

@ -1,20 +1,14 @@
package mage.cards.v; package mage.cards.v;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.TriggeredAbility; import mage.abilities.common.WerewolfFrontTriggeredAbility;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.condition.common.NoSpellsWereCastLastTurnCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.keyword.TransformAbility; import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.TargetController;
import java.util.UUID;
/** /**
* @author nantuko * @author nantuko
@ -34,8 +28,7 @@ public final class VillagersOfEstwald extends CardImpl {
// At the beginning of each upkeep, if no spells were cast last turn, transform Villagers of Estwald. // At the beginning of each upkeep, if no spells were cast last turn, transform Villagers of Estwald.
this.addAbility(new TransformAbility()); this.addAbility(new TransformAbility());
TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(true), TargetController.ANY, false); this.addAbility(new WerewolfFrontTriggeredAbility());
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, NoSpellsWereCastLastTurnCondition.instance, TransformAbility.NO_SPELLS_TRANSFORM_RULE));
} }
private VillagersOfEstwald(final VillagersOfEstwald card) { private VillagersOfEstwald(final VillagersOfEstwald card) {

View file

@ -1,37 +1,30 @@
package mage.cards.w; package mage.cards.w;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.TriggeredAbility;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.common.WerewolfBackTriggeredAbility;
import mage.abilities.condition.common.TransformedCondition; import mage.abilities.condition.common.TransformedCondition;
import mage.abilities.condition.common.TwoOrMoreSpellsWereCastLastTurnCondition;
import mage.abilities.decorator.ConditionalContinuousEffect; import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.dynamicvalue.common.CardsInAllHandsCount; import mage.abilities.dynamicvalue.common.CardsInAllHandsCount;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.effects.common.continuous.SetPowerToughnessSourceEffect; import mage.abilities.effects.common.continuous.SetPowerToughnessSourceEffect;
import mage.abilities.keyword.TrampleAbility; import mage.abilities.keyword.TrampleAbility;
import mage.abilities.keyword.TransformAbility;
import mage.abilities.keyword.VigilanceAbility; import mage.abilities.keyword.VigilanceAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Duration; import mage.constants.Duration;
import mage.constants.TargetController; import mage.constants.SubType;
import mage.constants.Zone; import mage.constants.Zone;
import java.util.UUID;
/** /**
*
* @author fireshoes * @author fireshoes
*/ */
public final class WerewolfOfAncientHunger extends CardImpl { public final class WerewolfOfAncientHunger extends CardImpl {
public WerewolfOfAncientHunger(UUID ownerId, CardSetInfo setInfo) { public WerewolfOfAncientHunger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},""); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
this.subtype.add(SubType.WEREWOLF); this.subtype.add(SubType.WEREWOLF);
this.power = new MageInt(0); this.power = new MageInt(0);
this.toughness = new MageInt(0); this.toughness = new MageInt(0);
@ -49,11 +42,10 @@ public final class WerewolfOfAncientHunger extends CardImpl {
// Werewolf of Ancient Hunger's power and toughness are each equal to the total number of cards in all players' hands. // Werewolf of Ancient Hunger's power and toughness are each equal to the total number of cards in all players' hands.
this.addAbility(new SimpleStaticAbility(Zone.ALL, this.addAbility(new SimpleStaticAbility(Zone.ALL,
new ConditionalContinuousEffect(new SetPowerToughnessSourceEffect(CardsInAllHandsCount.instance, Duration.EndOfGame), new ConditionalContinuousEffect(new SetPowerToughnessSourceEffect(CardsInAllHandsCount.instance, Duration.EndOfGame),
new TransformedCondition(false), "{this}'s power and toughness are each equal to the total number of cards in all players' hands"))); new TransformedCondition(false), "{this}'s power and toughness are each equal to the total number of cards in all players' hands")));
// At the beginning of each upkeep, if a player cast two or more spells last turn, transform Werewolf of Ancient Hunger. // At the beginning of each upkeep, if a player cast two or more spells last turn, transform Werewolf of Ancient Hunger.
TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(false), TargetController.ANY, false); this.addAbility(new WerewolfBackTriggeredAbility());
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, TwoOrMoreSpellsWereCastLastTurnCondition.instance, TransformAbility.TWO_OR_MORE_SPELLS_TRANSFORM_RULE));
} }
private WerewolfOfAncientHunger(final WerewolfOfAncientHunger card) { private WerewolfOfAncientHunger(final WerewolfOfAncientHunger card) {

View file

@ -2,20 +2,17 @@ package mage.cards.w;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.TriggeredAbility;
import mage.abilities.TriggeredAbilityImpl; import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.common.WerewolfBackTriggeredAbility;
import mage.abilities.condition.common.TwoOrMoreSpellsWereCastLastTurnCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.*; import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.SubType;
import mage.constants.Zone;
import mage.game.Game; import mage.game.Game;
import mage.game.events.GameEvent; import mage.game.events.GameEvent;
import mage.game.events.GameEvent.EventType;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
import mage.players.Player; import mage.players.Player;
import mage.target.common.TargetArtifactPermanent; import mage.target.common.TargetArtifactPermanent;
@ -43,8 +40,7 @@ public final class WerewolfRansacker extends CardImpl {
this.addAbility(new WerewolfRansackerAbility()); this.addAbility(new WerewolfRansackerAbility());
// At the beginning of each upkeep, if a player cast two or more spells last turn, transform Werewolf Ransacker. // At the beginning of each upkeep, if a player cast two or more spells last turn, transform Werewolf Ransacker.
TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(false), TargetController.ANY, false); this.addAbility(new WerewolfBackTriggeredAbility());
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, TwoOrMoreSpellsWereCastLastTurnCondition.instance, TransformAbility.TWO_OR_MORE_SPELLS_TRANSFORM_RULE));
} }
private WerewolfRansacker(final WerewolfRansacker card) { private WerewolfRansacker(final WerewolfRansacker card) {
@ -59,14 +55,12 @@ public final class WerewolfRansacker extends CardImpl {
class WerewolfRansackerAbility extends TriggeredAbilityImpl { class WerewolfRansackerAbility extends TriggeredAbilityImpl {
static final String RULE_TEXT = "Whenever this creature transforms into Werewolf Ransacker, you may destroy target artifact. If that artifact is put into a graveyard this way, Werewolf Ransacker deals 3 damage to that artifact's controller"; WerewolfRansackerAbility() {
public WerewolfRansackerAbility() {
super(Zone.BATTLEFIELD, new WerewolfRansackerEffect(), true); super(Zone.BATTLEFIELD, new WerewolfRansackerEffect(), true);
this.addTarget(new TargetArtifactPermanent()); this.addTarget(new TargetArtifactPermanent());
} }
public WerewolfRansackerAbility(final WerewolfRansackerAbility ability) { private WerewolfRansackerAbility(final WerewolfRansackerAbility ability) {
super(ability); super(ability);
} }
@ -91,17 +85,18 @@ class WerewolfRansackerAbility extends TriggeredAbilityImpl {
@Override @Override
public String getRule() { public String getRule() {
return RULE_TEXT + '.'; return "Whenever this creature transforms into {this}, you may destroy target artifact. If that artifact " +
"is put into a graveyard this way, {this} deals 3 damage to that artifact's controller";
} }
} }
class WerewolfRansackerEffect extends OneShotEffect { class WerewolfRansackerEffect extends OneShotEffect {
public WerewolfRansackerEffect() { WerewolfRansackerEffect() {
super(Outcome.DestroyPermanent); super(Outcome.DestroyPermanent);
} }
public WerewolfRansackerEffect(final WerewolfRansackerEffect effect) { private WerewolfRansackerEffect(final WerewolfRansackerEffect effect) {
super(effect); super(effect);
} }
@ -112,23 +107,16 @@ class WerewolfRansackerEffect extends OneShotEffect {
@Override @Override
public boolean apply(Game game, Ability source) { public boolean apply(Game game, Ability source) {
int affectedTargets = 0; Permanent permanent = game.getPermanent(source.getFirstTarget());
if (this.targetPointer != null && !this.targetPointer.getTargets(game, source).isEmpty()) { if (permanent == null) {
for (UUID permanentId : this.targetPointer.getTargets(game, source)) { return false;
Permanent permanent = game.getPermanent(permanentId);
if (permanent != null) {
if (permanent.destroy(source, game, false)) {
affectedTargets++;
if (game.getState().getZone(permanent.getId()) == Zone.GRAVEYARD) {
Player player = game.getPlayer(permanent.getControllerId());
if (player != null) {
player.damage(3, source.getSourceId(), source, game);
}
}
}
}
}
} }
return affectedTargets > 0; Player player = game.getPlayer(permanent.getControllerId());
permanent.destroy(source, game, false);
if (game.getState().getZone(permanent.getId()) != Zone.GRAVEYARD || player == null) {
return true;
}
player.damage(3, source.getSourceId(), source, game);
return true;
} }
} }

View file

@ -1,21 +1,18 @@
package mage.cards.w; package mage.cards.w;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.TriggeredAbility;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.TwoOrMoreSpellsWereCastLastTurnCondition; import mage.abilities.common.WerewolfBackTriggeredAbility;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.effects.common.continuous.BoostControlledEffect; import mage.abilities.effects.common.continuous.BoostControlledEffect;
import mage.abilities.keyword.TrampleAbility; import mage.abilities.keyword.TrampleAbility;
import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.*; import mage.constants.CardType;
import mage.filter.common.FilterAttackingCreature; import mage.constants.Duration;
import mage.constants.SubType;
import mage.filter.StaticFilters;
import java.util.UUID;
/** /**
* @author nantuko * @author nantuko
@ -23,7 +20,7 @@ import mage.filter.common.FilterAttackingCreature;
public final class WildbloodPack extends CardImpl { public final class WildbloodPack extends CardImpl {
public WildbloodPack(UUID ownerId, CardSetInfo setInfo) { public WildbloodPack(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},""); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
this.subtype.add(SubType.WEREWOLF); this.subtype.add(SubType.WEREWOLF);
this.color.setRed(true); this.color.setRed(true);
@ -37,11 +34,13 @@ public final class WildbloodPack extends CardImpl {
this.addAbility(TrampleAbility.getInstance()); this.addAbility(TrampleAbility.getInstance());
// Attacking creatures you control get +3/+0. // Attacking creatures you control get +3/+0.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(3, 0, Duration.WhileOnBattlefield, new FilterAttackingCreature(), false))); this.addAbility(new SimpleStaticAbility(new BoostControlledEffect(
3, 0, Duration.WhileOnBattlefield,
StaticFilters.FILTER_ATTACKING_CREATURES, false
)));
// At the beginning of each upkeep, if a player cast two or more spells last turn, transform Wildblood Pack. // At the beginning of each upkeep, if a player cast two or more spells last turn, transform Wildblood Pack.
TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(false), TargetController.ANY, false); this.addAbility(new WerewolfBackTriggeredAbility());
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, TwoOrMoreSpellsWereCastLastTurnCondition.instance, TransformAbility.TWO_OR_MORE_SPELLS_TRANSFORM_RULE));
} }

View file

@ -1,21 +1,19 @@
package mage.cards.w; package mage.cards.w;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.TriggeredAbility;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.common.LimitedTimesPerTurnActivatedAbility; import mage.abilities.common.LimitedTimesPerTurnActivatedAbility;
import mage.abilities.condition.common.NoSpellsWereCastLastTurnCondition; import mage.abilities.common.WerewolfFrontTriggeredAbility;
import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.abilities.keyword.TransformAbility; import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.*; import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.constants.Zone;
import java.util.UUID;
/** /**
* @author Loki * @author Loki
@ -38,8 +36,7 @@ public final class WolfbittenCaptive extends CardImpl {
// At the beginning of each upkeep, if no spells were cast last turn, transform Wolfbitten Captive. // At the beginning of each upkeep, if no spells were cast last turn, transform Wolfbitten Captive.
this.addAbility(new TransformAbility()); this.addAbility(new TransformAbility());
TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(true), TargetController.ANY, false); this.addAbility(new WerewolfFrontTriggeredAbility());
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, NoSpellsWereCastLastTurnCondition.instance, TransformAbility.NO_SPELLS_TRANSFORM_RULE));
} }
private WolfbittenCaptive(final WolfbittenCaptive card) { private WolfbittenCaptive(final WolfbittenCaptive card) {

View file

@ -4,6 +4,8 @@ import com.google.common.base.CharMatcher;
import mage.ObjectColor; import mage.ObjectColor;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.SagaAbility; import mage.abilities.common.SagaAbility;
import mage.abilities.common.WerewolfBackTriggeredAbility;
import mage.abilities.common.WerewolfFrontTriggeredAbility;
import mage.abilities.effects.keyword.ScryEffect; import mage.abilities.effects.keyword.ScryEffect;
import mage.abilities.keyword.MenaceAbility; import mage.abilities.keyword.MenaceAbility;
import mage.abilities.keyword.MultikickerAbility; import mage.abilities.keyword.MultikickerAbility;
@ -1281,6 +1283,14 @@ public class VerifyCardDataTest {
fail(card, "abilities", "card is a Saga but is missing this.addAbility(sagaAbility)"); fail(card, "abilities", "card is a Saga but is missing this.addAbility(sagaAbility)");
} }
// special check: Werewolves front ability should only be on front and vice versa
if (card.getAbilities().containsClass(WerewolfFrontTriggeredAbility.class) && card.isNightCard()) {
fail(card, "abilities", "card is a back face werewolf with a front face ability");
}
if (card.getAbilities().containsClass(WerewolfBackTriggeredAbility.class) && !card.isNightCard()) {
fail(card, "abilities", "card is a front face werewolf with a back face ability");
}
// special check: missing or wrong ability/effect hints // special check: missing or wrong ability/effect hints
Map<Class, String> hints = new HashMap<>(); Map<Class, String> hints = new HashMap<>();
hints.put(MenaceAbility.class, "can't be blocked except by two or more"); hints.put(MenaceAbility.class, "can't be blocked except by two or more");

View file

@ -0,0 +1,35 @@
package mage.abilities.common;
import mage.abilities.condition.common.TwoOrMoreSpellsWereCastLastTurnCondition;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.constants.TargetController;
import mage.game.Game;
/**
* @author TheElk801
*/
public class WerewolfBackTriggeredAbility extends BeginningOfUpkeepTriggeredAbility {
public WerewolfBackTriggeredAbility() {
super(new TransformSourceEffect(false), TargetController.ANY, false);
}
private WerewolfBackTriggeredAbility(final WerewolfBackTriggeredAbility ability) {
super(ability);
}
@Override
public boolean checkInterveningIfClause(Game game) {
return TwoOrMoreSpellsWereCastLastTurnCondition.instance.apply(game, this);
}
@Override
public WerewolfBackTriggeredAbility copy() {
return new WerewolfBackTriggeredAbility(this);
}
@Override
public String getRule() {
return "At the beginning of each upkeep, if a player cast two or more spells last turn, transform {this}.";
}
}

View file

@ -0,0 +1,35 @@
package mage.abilities.common;
import mage.abilities.condition.common.NoSpellsWereCastLastTurnCondition;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.constants.TargetController;
import mage.game.Game;
/**
* @author TheElk801
*/
public class WerewolfFrontTriggeredAbility extends BeginningOfUpkeepTriggeredAbility {
public WerewolfFrontTriggeredAbility() {
super(new TransformSourceEffect(true), TargetController.ANY, false);
}
private WerewolfFrontTriggeredAbility(final WerewolfFrontTriggeredAbility ability) {
super(ability);
}
@Override
public boolean checkInterveningIfClause(Game game) {
return NoSpellsWereCastLastTurnCondition.instance.apply(game, this);
}
@Override
public WerewolfFrontTriggeredAbility copy() {
return new WerewolfFrontTriggeredAbility(this);
}
@Override
public String getRule() {
return "At the beginning of each upkeep, if no spells were cast last turn, transform {this}.";
}
}

View file

@ -14,9 +14,6 @@ import mage.game.permanent.Permanent;
*/ */
public class TransformAbility extends SimpleStaticAbility { public class TransformAbility extends SimpleStaticAbility {
public static final String NO_SPELLS_TRANSFORM_RULE = "At the beginning of each upkeep, if no spells were cast last turn, transform {this}.";
public static final String TWO_OR_MORE_SPELLS_TRANSFORM_RULE = "At the beginning of each upkeep, if a player cast two or more spells last turn, transform {this}.";
// this state value controls if a permanent enters the battlefield already transformed // this state value controls if a permanent enters the battlefield already transformed
public static final String VALUE_KEY_ENTER_TRANSFORMED = "EnterTransformed"; public static final String VALUE_KEY_ENTER_TRANSFORMED = "EnterTransformed";
@ -24,7 +21,7 @@ public class TransformAbility extends SimpleStaticAbility {
super(Zone.BATTLEFIELD, new TransformEffect()); super(Zone.BATTLEFIELD, new TransformEffect());
} }
public TransformAbility(final TransformAbility ability) { private TransformAbility(final TransformAbility ability) {
super(ability); super(ability);
} }
@ -73,12 +70,12 @@ public class TransformAbility extends SimpleStaticAbility {
class TransformEffect extends ContinuousEffectImpl { class TransformEffect extends ContinuousEffectImpl {
public TransformEffect() { TransformEffect() {
super(Duration.WhileOnBattlefield, Layer.CopyEffects_1, SubLayer.NA, Outcome.BecomeCreature); super(Duration.WhileOnBattlefield, Layer.CopyEffects_1, SubLayer.NA, Outcome.BecomeCreature);
staticText = ""; staticText = "";
} }
public TransformEffect(final TransformEffect effect) { private TransformEffect(final TransformEffect effect) {
super(effect); super(effect);
} }
@ -120,5 +117,4 @@ class TransformEffect extends ContinuousEffectImpl {
public String getText(Mode mode) { public String getText(Mode mode) {
return ""; return "";
} }
} }