mirror of
https://github.com/magefree/mage.git
synced 2026-01-22 19:29:59 -08:00
* Reworked some parts of transform handling. Fixes #2396.
This commit is contained in:
parent
e57da7598e
commit
86648c7190
157 changed files with 246 additions and 204 deletions
|
|
@ -52,7 +52,7 @@ public class AfflictedDeserter extends CardImpl {
|
|||
this.subtype.add("Human");
|
||||
this.subtype.add("Werewolf");
|
||||
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
this.secondSideCard = new WerewolfRansacker(ownerId);
|
||||
|
||||
this.power = new MageInt(3);
|
||||
|
|
|
|||
|
|
@ -68,7 +68,7 @@ public class ArchdemonOfGreed extends CardImpl {
|
|||
this.color.setBlack(true);
|
||||
|
||||
this.nightCard = true;
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
|
||||
this.power = new MageInt(9);
|
||||
this.toughness = new MageInt(9);
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@ public class ChaliceOfLife extends CardImpl {
|
|||
super(ownerId, 146, "Chalice of Life", Rarity.UNCOMMON, new CardType[]{CardType.ARTIFACT}, "{3}");
|
||||
this.expansionSetCode = "DKA";
|
||||
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
this.secondSideCard = new ChaliceOfDeath(ownerId);
|
||||
this.addAbility(new TransformAbility());
|
||||
|
||||
|
|
|
|||
|
|
@ -66,7 +66,7 @@ public class ChosenOfMarkov extends CardImpl {
|
|||
this.power = new MageInt(2);
|
||||
this.toughness = new MageInt(2);
|
||||
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
this.secondSideCard = new MarkovsServant(ownerId);
|
||||
|
||||
// {tap}, Tap an untapped Vampire you control: Transform Chosen of Markov.
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@ public class ElbrusTheBindingBlade extends CardImpl {
|
|||
this.supertype.add("Legendary");
|
||||
this.subtype.add("Equipment");
|
||||
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
this.secondSideCard = new WithengarUnbound(ownerId);
|
||||
this.addAbility(new TransformAbility());
|
||||
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ public class GhastlyHaunting extends CardImpl {
|
|||
|
||||
// this card is the second face of double-faced card
|
||||
this.nightCard = true;
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
|
||||
// Enchant creature
|
||||
TargetPermanent auraTarget = new TargetCreaturePermanent();
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@ public class HinterlandHermit extends CardImpl {
|
|||
this.subtype.add("Human");
|
||||
this.subtype.add("Werewolf");
|
||||
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
this.secondSideCard = new HinterlandScourge(ownerId);
|
||||
|
||||
this.power = new MageInt(2);
|
||||
|
|
|
|||
|
|
@ -58,7 +58,7 @@ public class HinterlandScourge extends CardImpl {
|
|||
|
||||
// this card is the second face of double-faced card of Hinterland Hermit
|
||||
this.nightCard = true;
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
|
||||
this.power = new MageInt(3);
|
||||
this.toughness = new MageInt(2);
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@ public class HuntmasterOfTheFells extends CardImpl {
|
|||
this.subtype.add("Human");
|
||||
this.subtype.add("Werewolf");
|
||||
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
this.secondSideCard = new RavagerOfTheFells(ownerId);
|
||||
|
||||
this.power = new MageInt(2);
|
||||
|
|
|
|||
|
|
@ -58,7 +58,7 @@ public class KrallenhordeKiller extends CardImpl {
|
|||
this.toughness = new MageInt(2);
|
||||
|
||||
this.nightCard = true;
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
|
||||
// {3}{G}: Krallenhorde Killer gets +4/+4 until end of turn. Activate this ability only once each turn.
|
||||
this.addAbility(new LimitedTimesPerTurnActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(4, 4, Duration.EndOfTurn), new ManaCostsImpl("{3}{G}")));
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@ public class LambholtElder extends CardImpl {
|
|||
this.power = new MageInt(1);
|
||||
this.toughness = new MageInt(2);
|
||||
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
this.secondSideCard = new SilverpeltWerewolf(ownerId);
|
||||
|
||||
// At the beginning of each upkeep, if no spells were cast last turn, transform Lambholt Elder.
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@ public class LoyalCathar extends CardImpl {
|
|||
this.subtype.add("Human");
|
||||
this.subtype.add("Soldier");
|
||||
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
this.secondSideCard = new UnhallowedCathar(ownerId);
|
||||
|
||||
this.power = new MageInt(2);
|
||||
|
|
@ -133,7 +133,7 @@ class ReturnLoyalCatharEffect extends OneShotEffect {
|
|||
if (card != null) {
|
||||
card.putOntoBattlefield(game, Zone.GRAVEYARD, source.getSourceId(), source.getControllerId());
|
||||
Permanent perm = game.getPermanent(cardId);
|
||||
if (perm != null && perm.canTransform()) {
|
||||
if (perm != null && perm.isTransformable()) {
|
||||
perm.transform(game);
|
||||
return true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@ public class MarkovsServant extends CardImpl {
|
|||
this.power = new MageInt(4);
|
||||
this.toughness = new MageInt(4);
|
||||
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
this.nightCard = true;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@ public class MondronenShaman extends CardImpl {
|
|||
this.power = new MageInt(3);
|
||||
this.toughness = new MageInt(2);
|
||||
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
this.secondSideCard = new TovolarsMagehunter(ownerId);
|
||||
|
||||
// At the beginning of each upkeep, if no spells were cast last turn, transform Mondronen Shaman.
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@ public class MoonscarredWerewolf extends CardImpl {
|
|||
|
||||
// this card is the second face of double-faced card
|
||||
this.nightCard = true;
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
|
||||
this.addAbility(VigilanceAbility.getInstance());
|
||||
// {tap}: Add {G}{G} to your mana pool.
|
||||
|
|
|
|||
|
|
@ -73,7 +73,7 @@ public class RavagerOfTheFells extends CardImpl {
|
|||
|
||||
// this card is the second face of double-faced card
|
||||
this.nightCard = true;
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
|
||||
this.power = new MageInt(4);
|
||||
this.toughness = new MageInt(4);
|
||||
|
|
|
|||
|
|
@ -58,7 +58,7 @@ public class RavenousDemon extends CardImpl {
|
|||
this.expansionSetCode = "DKA";
|
||||
this.subtype.add("Demon");
|
||||
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
this.secondSideCard = new ArchdemonOfGreed(ownerId);
|
||||
|
||||
this.power = new MageInt(4);
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@ public class ScornedVillager extends CardImpl {
|
|||
this.power = new MageInt(1);
|
||||
this.toughness = new MageInt(1);
|
||||
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
this.secondSideCard = new MoonscarredWerewolf(ownerId);
|
||||
|
||||
// {tap}: Add {G} to your mana pool.
|
||||
|
|
|
|||
|
|
@ -58,7 +58,7 @@ public class SilverpeltWerewolf extends CardImpl {
|
|||
this.power = new MageInt(4);
|
||||
this.toughness = new MageInt(5);
|
||||
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
this.nightCard = true;
|
||||
|
||||
// Whenever Silverpelt Werewolf deals combat damage to a player, draw a card.
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@ public class SoulSeizer extends CardImpl {
|
|||
this.expansionSetCode = "DKA";
|
||||
this.subtype.add("Spirit");
|
||||
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
this.secondSideCard = new GhastlyHaunting(ownerId);
|
||||
|
||||
this.power = new MageInt(1);
|
||||
|
|
@ -139,7 +139,7 @@ class SoulSeizerEffect extends OneShotEffect {
|
|||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
Permanent permanent = game.getPermanent(source.getSourceId());
|
||||
if (permanent != null && permanent.canTransform()) {
|
||||
if (permanent != null && permanent.isTransformable()) {
|
||||
if (permanent.transform(game)) {
|
||||
game.informPlayers(new StringBuilder(permanent.getName()).append(" transforms into ").append(permanent.getSecondCardFace().getName()).toString());
|
||||
Permanent attachTo = game.getPermanent(targetPointer.getFirst(game, source));
|
||||
|
|
|
|||
|
|
@ -64,7 +64,7 @@ public class TovolarsMagehunter extends CardImpl {
|
|||
|
||||
// this card is the second face of double-faced card
|
||||
this.nightCard = true;
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
|
||||
// Whenever an opponent casts a spell, Tovolar's Magehunter deals 2 damage to that player.
|
||||
this.addAbility(new TovolarsMagehunterTriggeredAbility());
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ public class UnhallowedCathar extends CardImpl {
|
|||
|
||||
// this card is the second face of double-faced card
|
||||
this.nightCard = true;
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
|
||||
this.power = new MageInt(2);
|
||||
this.toughness = new MageInt(1);
|
||||
|
|
|
|||
|
|
@ -67,7 +67,7 @@ public class WerewolfRansacker extends CardImpl {
|
|||
|
||||
// this card is the second face of double-faced card
|
||||
this.nightCard = true;
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
|
||||
this.power = new MageInt(5);
|
||||
this.toughness = new MageInt(4);
|
||||
|
|
|
|||
|
|
@ -58,7 +58,7 @@ public class WithengarUnbound extends CardImpl {
|
|||
|
||||
// this card is the second face of double-faced card
|
||||
this.nightCard = true;
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
|
||||
this.power = new MageInt(13);
|
||||
this.toughness = new MageInt(13);
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@ public class WolfbittenCaptive extends CardImpl {
|
|||
this.power = new MageInt(1);
|
||||
this.toughness = new MageInt(1);
|
||||
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
this.secondSideCard = new KrallenhordeKiller(ownerId);
|
||||
|
||||
// {1}{G}: Wolfbitten Captive gets +2/+2 until end of turn. Activate this ability only once each turn.
|
||||
|
|
|
|||
|
|
@ -59,7 +59,7 @@ public class ConduitOfStorms extends CardImpl {
|
|||
this.power = new MageInt(2);
|
||||
this.toughness = new MageInt(3);
|
||||
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
this.secondSideCard = new ConduitOfEmrakul(ownerId);
|
||||
|
||||
// Whenever Conduit of Storms attacks, add {R} to your mana pool at the beginning of your next main phase this turn.
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ public class CryptolithFragment extends CardImpl {
|
|||
super(ownerId, 193, "Cryptolith Fragment", Rarity.UNCOMMON, new CardType[]{CardType.ARTIFACT}, "{3}");
|
||||
this.expansionSetCode = "EMN";
|
||||
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
this.secondSideCard = new AuroraOfEmrakul(ownerId);
|
||||
|
||||
// Cryptolith Fragment enters the battlefield tapped.
|
||||
|
|
|
|||
|
|
@ -65,7 +65,7 @@ public class CuriousHomunculus extends CardImpl {
|
|||
this.power = new MageInt(1);
|
||||
this.toughness = new MageInt(1);
|
||||
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
this.secondSideCard = new VoraciousReader(ownerId);
|
||||
|
||||
// {T}: Add {C} to your mana pool. Spend this mana only to cast an instant or sorcery spell.
|
||||
|
|
|
|||
|
|
@ -74,7 +74,7 @@ public class DocentOfPerfection extends CardImpl {
|
|||
this.power = new MageInt(5);
|
||||
this.toughness = new MageInt(4);
|
||||
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
this.secondSideCard = new FinalIteration(ownerId);
|
||||
|
||||
// Flying
|
||||
|
|
|
|||
|
|
@ -67,7 +67,7 @@ public class ExtricatorOfSin extends CardImpl {
|
|||
this.power = new MageInt(0);
|
||||
this.toughness = new MageInt(3);
|
||||
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
this.secondSideCard = new ExtricatorOfFlesh(ownerId);
|
||||
|
||||
// When Extricator of Sin enters the battlefield, you may sacrifice another permanent. If you do, put a 3/2 colorless Eldrazi Horror creature token onto the battlefield.
|
||||
|
|
|
|||
|
|
@ -58,7 +58,7 @@ public class GrizzledAngler extends CardImpl {
|
|||
this.power = new MageInt(2);
|
||||
this.toughness = new MageInt(3);
|
||||
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
this.secondSideCard = new GrislyAnglerfish(ownerId);
|
||||
|
||||
// {T}: Put the top two cards of your library into your graveyard. Then if there is a colorless creature card in your graveyard, transform Grizzled Angler.
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ public class KessigProwler extends CardImpl {
|
|||
this.power = new MageInt(2);
|
||||
this.toughness = new MageInt(1);
|
||||
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
this.secondSideCard = new SinuousPredator(ownerId);
|
||||
|
||||
// {4}{G}: Transform Kessig Prowler.
|
||||
|
|
|
|||
|
|
@ -62,7 +62,7 @@ public class LoneRider extends CardImpl {
|
|||
this.power = new MageInt(1);
|
||||
this.toughness = new MageInt(1);
|
||||
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
this.secondSideCard = new ItThatRidesAsOne(ownerId);
|
||||
|
||||
// First strike
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ public class ShrillHowler extends CardImpl {
|
|||
this.power = new MageInt(3);
|
||||
this.toughness = new MageInt(1);
|
||||
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
this.secondSideCard = new HowlingChorus(ownerId);
|
||||
|
||||
// Creatures with power less than Shrill Howler's power can't block it.
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@ public class SmolderingWerewolf extends CardImpl {
|
|||
this.power = new MageInt(3);
|
||||
this.toughness = new MageInt(2);
|
||||
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
this.secondSideCard = new EruptingDreadwolf(ownerId);
|
||||
|
||||
// When Smoldering Werewolf enters the battlefield, it deals 1 damage to each of up to two target creatures.
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ public class TangleclawWerewolf extends CardImpl {
|
|||
this.power = new MageInt(2);
|
||||
this.toughness = new MageInt(4);
|
||||
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
this.secondSideCard = new FibrousEntangler(ownerId);
|
||||
|
||||
// Tangleclaw Werewolf can block an additional creature each combat.
|
||||
|
|
|
|||
|
|
@ -64,7 +64,7 @@ public class UlrichOfTheKrallenhorde extends CardImpl {
|
|||
this.toughness = new MageInt(4);
|
||||
|
||||
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
this.secondSideCard = new UlrichUncontestedAlpha(ownerId);
|
||||
|
||||
// Whenever this creature enters the battlefield or transforms into Ulrich of the Krallenhorde, target creature gets +4/+4 until end of turn.
|
||||
|
|
|
|||
|
|
@ -70,7 +70,7 @@ public class UlrichUncontestedAlpha extends CardImpl {
|
|||
|
||||
// this card is the second face of double-faced card
|
||||
this.nightCard = true;
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
|
||||
// Whenever this creature transforms into Ulrich, Uncontested Alpha, you may have it fight target non-Werewolf creature you don't control.
|
||||
this.addAbility(new UlrichUncontestedAlphaAbility());
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ public class UlvenwaldCaptive extends CardImpl {
|
|||
this.power = new MageInt(1);
|
||||
this.toughness = new MageInt(2);
|
||||
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
this.secondSideCard = new UlvenwaldAbomination(ownerId);
|
||||
|
||||
// Defender
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ public class VildinPackOutcast extends CardImpl {
|
|||
this.power = new MageInt(4);
|
||||
this.toughness = new MageInt(4);
|
||||
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
this.secondSideCard = new DronepackKindred(ownerId);
|
||||
|
||||
// Trample
|
||||
|
|
|
|||
|
|
@ -64,7 +64,7 @@ public class VoldarenPariah extends CardImpl {
|
|||
this.power = new MageInt(3);
|
||||
this.toughness = new MageInt(3);
|
||||
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
this.secondSideCard = new AbolisherOfBloodlines(ownerId);
|
||||
|
||||
// Flying
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ public class BaneOfHanweir extends CardImpl {
|
|||
|
||||
// this card is the second face of double-faced card
|
||||
this.nightCard = true;
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
|
||||
this.power = new MageInt(5);
|
||||
this.toughness = new MageInt(5);
|
||||
|
|
|
|||
|
|
@ -68,7 +68,7 @@ public class BloodlineKeeper extends CardImpl {
|
|||
this.power = new MageInt(3);
|
||||
this.toughness = new MageInt(3);
|
||||
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
this.secondSideCard = new LordOfLineage(ownerId);
|
||||
|
||||
this.addAbility(FlyingAbility.getInstance());
|
||||
|
|
|
|||
|
|
@ -58,7 +58,7 @@ public class CivilizedScholar extends CardImpl {
|
|||
this.subtype.add("Human");
|
||||
this.subtype.add("Advisor");
|
||||
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
this.secondSideCard = new HomicidalBrute(ownerId);
|
||||
|
||||
this.power = new MageInt(0);
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ public class CloisteredYouth extends CardImpl {
|
|||
this.power = new MageInt(1);
|
||||
this.toughness = new MageInt(1);
|
||||
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
this.secondSideCard = new UnholyFiend(ownerId);
|
||||
|
||||
// At the beginning of your upkeep, you may transform Cloistered Youth.
|
||||
|
|
|
|||
|
|
@ -68,7 +68,7 @@ public class DaybreakRanger extends CardImpl {
|
|||
this.subtype.add("Archer");
|
||||
this.subtype.add("Werewolf");
|
||||
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
this.secondSideCard = new NightfallPredator(ownerId);
|
||||
|
||||
this.power = new MageInt(2);
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@ public class DelverOfSecrets extends CardImpl {
|
|||
this.power = new MageInt(1);
|
||||
this.toughness = new MageInt(1);
|
||||
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
this.secondSideCard = new InsectileAberration(ownerId);
|
||||
|
||||
// At the beginning of your upkeep, look at the top card of your library. You may reveal that card. If an instant or sorcery card is revealed this way, transform Delver of Secrets.
|
||||
|
|
|
|||
|
|
@ -59,7 +59,7 @@ public class GarrukRelentless extends CardImpl {
|
|||
this.expansionSetCode = "ISD";
|
||||
this.subtype.add("Garruk");
|
||||
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
this.secondSideCard = new GarrukTheVeilCursed(ownerId);
|
||||
|
||||
this.addAbility(new PlanswalkerEntersWithLoyalityCountersAbility(3));
|
||||
|
|
|
|||
|
|
@ -67,7 +67,7 @@ public class GarrukTheVeilCursed extends CardImpl {
|
|||
|
||||
// this card is the second face of double-faced card
|
||||
this.nightCard = true;
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
|
||||
this.color.setGreen(true);
|
||||
this.color.setBlack(true);
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ public class GatstafHowler extends CardImpl {
|
|||
|
||||
// this card is the second face of double-faced card
|
||||
this.nightCard = true;
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
|
||||
this.power = new MageInt(3);
|
||||
this.toughness = new MageInt(3);
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ public class GatstafShepherd extends CardImpl {
|
|||
this.subtype.add("Human");
|
||||
this.subtype.add("Werewolf");
|
||||
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
this.secondSideCard = new GatstafHowler(ownerId);
|
||||
|
||||
this.power = new MageInt(2);
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ public class GrizzledOutcasts extends CardImpl {
|
|||
this.subtype.add("Human");
|
||||
this.subtype.add("Werewolf");
|
||||
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
this.secondSideCard = new KrallenhordeWantons(ownerId);
|
||||
|
||||
this.power = new MageInt(4);
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ public class HanweirWatchkeep extends CardImpl {
|
|||
this.subtype.add("Warrior");
|
||||
this.subtype.add("Werewolf");
|
||||
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
this.secondSideCard = new BaneOfHanweir(ownerId);
|
||||
|
||||
this.power = new MageInt(1);
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ public class HomicidalBrute extends CardImpl {
|
|||
|
||||
// this card is the second face of double-faced card
|
||||
this.nightCard = true;
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
|
||||
this.color.setRed(true);
|
||||
this.power = new MageInt(5);
|
||||
|
|
|
|||
|
|
@ -71,7 +71,7 @@ public class HowlpackAlpha extends CardImpl {
|
|||
|
||||
// this card is the second face of double-faced card
|
||||
this.nightCard = true;
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
|
||||
this.color.setGreen(true);
|
||||
this.power = new MageInt(3);
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ public class HowlpackOfEstwald extends CardImpl {
|
|||
|
||||
// this card is the second face of double-faced card
|
||||
this.nightCard = true;
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
|
||||
this.power = new MageInt(4);
|
||||
this.toughness = new MageInt(6);
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ public class InstigatorGang extends CardImpl {
|
|||
this.subtype.add("Human");
|
||||
this.subtype.add("Werewolf");
|
||||
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
this.secondSideCard = new WildbloodPack(ownerId);
|
||||
|
||||
this.power = new MageInt(2);
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ public class Ironfang extends CardImpl {
|
|||
|
||||
// this card is the second face of double-faced card
|
||||
this.nightCard = true;
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
|
||||
this.power = new MageInt(3);
|
||||
this.toughness = new MageInt(1);
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ public class KrallenhordeWantons extends CardImpl {
|
|||
|
||||
// this card is the second face of double-faced card
|
||||
this.nightCard = true;
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
|
||||
this.power = new MageInt(7);
|
||||
this.toughness = new MageInt(7);
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ public class KruinOutlaw extends CardImpl {
|
|||
this.subtype.add("Rogue");
|
||||
this.subtype.add("Werewolf");
|
||||
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
this.secondSideCard = new TerrorOfKruinPass(ownerId);
|
||||
|
||||
this.power = new MageInt(2);
|
||||
|
|
|
|||
|
|
@ -66,7 +66,7 @@ public class LordOfLineage extends CardImpl {
|
|||
|
||||
// this card is the second face of double-faced card
|
||||
this.nightCard = true;
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
|
||||
this.addAbility(FlyingAbility.getInstance());
|
||||
// Other Vampire creatures you control get +2/+2.
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ public class LudevicsAbomination extends CardImpl {
|
|||
|
||||
// this card is the second face of double-faced card
|
||||
this.nightCard = true;
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
|
||||
this.power = new MageInt(13);
|
||||
this.toughness = new MageInt(13);
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@ public class LudevicsTestSubject extends CardImpl {
|
|||
this.power = new MageInt(0);
|
||||
this.toughness = new MageInt(3);
|
||||
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
this.secondSideCard = new LudevicsAbomination(ownerId);
|
||||
|
||||
this.addAbility(DefenderAbility.getInstance());
|
||||
|
|
|
|||
|
|
@ -68,7 +68,7 @@ public class MayorOfAvabruck extends CardImpl {
|
|||
this.subtype.add("Advisor");
|
||||
this.subtype.add("Werewolf");
|
||||
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
this.secondSideCard = new HowlpackAlpha(ownerId);
|
||||
|
||||
this.power = new MageInt(1);
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ public class MercilessPredator extends CardImpl {
|
|||
|
||||
// this card is the second face of double-faced card
|
||||
this.nightCard = true;
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
|
||||
this.power = new MageInt(3);
|
||||
this.toughness = new MageInt(2);
|
||||
|
|
|
|||
|
|
@ -95,7 +95,7 @@ class MoonmistEffect extends OneShotEffect {
|
|||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
for (Permanent permanent: game.getBattlefield().getActivePermanents(filter, source.getControllerId(), game)) {
|
||||
if (permanent.canTransform()) {
|
||||
if (permanent.isTransformable()) {
|
||||
permanent.transform(game);
|
||||
game.informPlayers(new StringBuilder(permanent.getName()).append(" transforms into ").append(permanent.getSecondCardFace().getName()).toString());
|
||||
}
|
||||
|
|
|
|||
|
|
@ -67,7 +67,7 @@ public class NightfallPredator extends CardImpl {
|
|||
|
||||
// this card is the second face of double-faced card
|
||||
this.nightCard = true;
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
|
||||
// {R}, {tap}: Nightfall Predator fights target creature.
|
||||
Ability activatedAbility = new SimpleActivatedAbility(Zone.BATTLEFIELD, new NightfallPredatorEffect(), new ManaCostsImpl("{R}"));
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ public class RampagingWerewolf extends CardImpl {
|
|||
|
||||
// this card is the second face of double-faced card
|
||||
this.nightCard = true;
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
|
||||
this.power = new MageInt(6);
|
||||
this.toughness = new MageInt(4);
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@ public class RecklessWaif extends CardImpl {
|
|||
this.subtype.add("Rogue");
|
||||
this.subtype.add("Werewolf");
|
||||
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
this.secondSideCard = new MercilessPredator(ownerId);
|
||||
|
||||
this.power = new MageInt(1);
|
||||
|
|
|
|||
|
|
@ -58,7 +58,7 @@ public class ScreechingBat extends CardImpl {
|
|||
this.expansionSetCode = "ISD";
|
||||
this.subtype.add("Bat");
|
||||
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
this.secondSideCard = new StalkingVampire(ownerId);
|
||||
|
||||
this.power = new MageInt(2);
|
||||
|
|
@ -134,7 +134,7 @@ class ScreechingBatTransformSourceEffect extends OneShotEffect {
|
|||
if (permanent != null) {
|
||||
Cost cost = new ManaCostsImpl("{2}{B}{B}");
|
||||
if (cost.pay(source, game, permanent.getControllerId(), permanent.getControllerId(), false, null)) {
|
||||
if (permanent.canTransform()) {
|
||||
if (permanent.isTransformable()) {
|
||||
permanent.setTransformed(!permanent.isTransformed());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ public class StalkingVampire extends CardImpl {
|
|||
this.color.setBlack(true);
|
||||
|
||||
this.nightCard = true;
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
|
||||
this.power = new MageInt(5);
|
||||
this.toughness = new MageInt(5);
|
||||
|
|
|
|||
|
|
@ -72,7 +72,7 @@ public class TerrorOfKruinPass extends CardImpl {
|
|||
|
||||
// this card is the second face of double-faced card
|
||||
this.nightCard = true;
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
|
||||
this.color.setRed(true);
|
||||
this.power = new MageInt(3);
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ public class ThrabenMilitia extends CardImpl {
|
|||
|
||||
// this card is the second face of double-faced card
|
||||
this.nightCard = true;
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
|
||||
this.power = new MageInt(5);
|
||||
this.toughness = new MageInt(4);
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@ public class ThrabenSentry extends CardImpl {
|
|||
this.subtype.add("Human");
|
||||
this.subtype.add("Soldier");
|
||||
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
this.secondSideCard = new ThrabenMilitia(ownerId);
|
||||
|
||||
this.power = new MageInt(2);
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@ public class TormentedPariah extends CardImpl {
|
|||
this.subtype.add("Warrior");
|
||||
this.subtype.add("Werewolf");
|
||||
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
this.secondSideCard = new RampagingWerewolf(ownerId);
|
||||
|
||||
this.power = new MageInt(3);
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@ public class UlvenwaldMystics extends CardImpl {
|
|||
this.subtype.add("Shaman");
|
||||
this.subtype.add("Werewolf");
|
||||
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
this.secondSideCard = new UlvenwaldPrimordials(ownerId);
|
||||
|
||||
this.power = new MageInt(3);
|
||||
|
|
|
|||
|
|
@ -58,7 +58,7 @@ public class UlvenwaldPrimordials extends CardImpl {
|
|||
|
||||
// this card is the second face of double-faced card
|
||||
this.nightCard = true;
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
|
||||
this.power = new MageInt(5);
|
||||
this.toughness = new MageInt(5);
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@ public class VillageIronsmith extends CardImpl {
|
|||
this.subtype.add("Human");
|
||||
this.subtype.add("Werewolf");
|
||||
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
this.secondSideCard = new Ironfang(ownerId);
|
||||
|
||||
this.power = new MageInt(1);
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ public class VillagersOfEstwald extends CardImpl {
|
|||
this.subtype.add("Human");
|
||||
this.subtype.add("Werewolf");
|
||||
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
this.secondSideCard = new HowlpackOfEstwald(ownerId);
|
||||
|
||||
this.power = new MageInt(2);
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@ public class WildbloodPack extends CardImpl {
|
|||
|
||||
// this card is the second face of double-faced card
|
||||
this.nightCard = true;
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
|
||||
this.power = new MageInt(5);
|
||||
this.toughness = new MageInt(5);
|
||||
|
|
|
|||
|
|
@ -70,7 +70,7 @@ public class ChandraFireOfKaladesh extends CardImpl {
|
|||
this.power = new MageInt(2);
|
||||
this.toughness = new MageInt(2);
|
||||
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
this.secondSideCard = new ChandraRoaringFlame(ownerId);
|
||||
|
||||
// Whenever you cast a red spell, untap Chandra, Fire of Kaladesh.
|
||||
|
|
|
|||
|
|
@ -62,7 +62,7 @@ public class ChandraRoaringFlame extends CardImpl {
|
|||
this.color.setRed(true);
|
||||
|
||||
this.nightCard = true;
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
|
||||
this.addAbility(new PlanswalkerEntersWithLoyalityCountersAbility(4));
|
||||
|
||||
|
|
|
|||
|
|
@ -73,7 +73,7 @@ public class GideonBattleForged extends CardImpl {
|
|||
this.color.setWhite(true);
|
||||
|
||||
this.nightCard = true;
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
|
||||
this.addAbility(new PlanswalkerEntersWithLoyalityCountersAbility(3));
|
||||
|
||||
|
|
|
|||
|
|
@ -73,7 +73,7 @@ public class JaceTelepathUnbound extends CardImpl {
|
|||
|
||||
this.color.setBlue(true);
|
||||
this.nightCard = true;
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
|
||||
this.addAbility(new PlanswalkerEntersWithLoyalityCountersAbility(5));
|
||||
|
||||
|
|
|
|||
|
|
@ -59,7 +59,7 @@ public class JaceVrynsProdigy extends CardImpl {
|
|||
this.power = new MageInt(0);
|
||||
this.toughness = new MageInt(2);
|
||||
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
this.secondSideCard = new JaceTelepathUnbound(ownerId);
|
||||
|
||||
// {T}: Draw a card, then discard a card. If there are five or more cards in your graveyard, exile Jace, Vryn's Prodigy, then return him to the battefield transformed under his owner's control.
|
||||
|
|
|
|||
|
|
@ -65,7 +65,7 @@ public class KytheonHeroOfAkros extends CardImpl {
|
|||
this.power = new MageInt(2);
|
||||
this.toughness = new MageInt(1);
|
||||
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
this.secondSideCard = new GideonBattleForged(ownerId);
|
||||
|
||||
// At end of combat, if Kytheon, Hero of Akros and at least two other creatures attacked this combat, exile Kytheon,
|
||||
|
|
|
|||
|
|
@ -68,7 +68,7 @@ public class LilianaHereticalHealer extends CardImpl {
|
|||
this.power = new MageInt(2);
|
||||
this.toughness = new MageInt(3);
|
||||
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
this.secondSideCard = new LilianaDefiantNecromancer(ownerId);
|
||||
this.addAbility(new TransformAbility());
|
||||
|
||||
|
|
|
|||
|
|
@ -68,7 +68,7 @@ public class NissaVastwoodSeer extends CardImpl {
|
|||
this.power = new MageInt(2);
|
||||
this.toughness = new MageInt(2);
|
||||
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
this.secondSideCard = new NissaSageAnimist(ownerId);
|
||||
|
||||
// When Nissa, Vastwood Seer enters the battlefield, you may search your library for a basic Forest card, reveal it, put it into your hand, then shuffle your library.
|
||||
|
|
|
|||
|
|
@ -59,7 +59,7 @@ public class AberrantResearcher extends CardImpl {
|
|||
this.power = new MageInt(3);
|
||||
this.toughness = new MageInt(2);
|
||||
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
this.secondSideCard = new PerfectedForm(ownerId);
|
||||
|
||||
// Flying
|
||||
|
|
|
|||
|
|
@ -65,7 +65,7 @@ public class AccursedWitch extends CardImpl {
|
|||
this.power = new MageInt(4);
|
||||
this.toughness = new MageInt(2);
|
||||
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
this.secondSideCard = new InfectiousCurse(ownerId);
|
||||
|
||||
// Spells your opponents cast that target Accursed Witch cost {1} less to cast.
|
||||
|
|
|
|||
|
|
@ -79,7 +79,7 @@ public class ArchangelAvacyn extends CardImpl {
|
|||
this.power = new MageInt(4);
|
||||
this.toughness = new MageInt(4);
|
||||
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
this.secondSideCard = new AvacynThePurifier(ownerId);
|
||||
|
||||
// Flash
|
||||
|
|
|
|||
|
|
@ -70,7 +70,7 @@ public class ArlinnEmbracedByTheMoon extends CardImpl {
|
|||
this.color.setGreen(true);
|
||||
|
||||
this.nightCard = true;
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
|
||||
// +1: Creatures you control get +1/+1 and gain trample until end of turn.
|
||||
Effect effect = new BoostControlledEffect(1, 1, Duration.EndOfTurn, filter);
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@ public class ArlinnKord extends CardImpl {
|
|||
this.expansionSetCode = "SOI";
|
||||
this.subtype.add("Arlinn");
|
||||
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
this.secondSideCard = new ArlinnEmbracedByTheMoon(ownerId);
|
||||
|
||||
this.addAbility(new PlanswalkerEntersWithLoyalityCountersAbility(3));
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ public class AutumnalGloom extends CardImpl {
|
|||
public AutumnalGloom(UUID ownerId) {
|
||||
super(ownerId, 194, "Autumnal Gloom", Rarity.UNCOMMON, new CardType[]{CardType.ENCHANTMENT}, "{2}{G}");
|
||||
this.expansionSetCode = "SOI";
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
this.secondSideCard = new AncientOfTheEquinox(ownerId);
|
||||
|
||||
// {B}: Put the top card of your library into your graveyard.
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@ public class AvacynianMissionaries extends CardImpl {
|
|||
this.power = new MageInt(3);
|
||||
this.toughness = new MageInt(3);
|
||||
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
this.secondSideCard = new LunarchInquisitors(ownerId);
|
||||
|
||||
// At the beginning of your end step, if Avacynian Missionaries is equipped, transform it.
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@ public class BrandedHowler extends CardImpl {
|
|||
|
||||
// this card is the second face of double-faced card
|
||||
this.nightCard = true;
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
|
||||
// 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);
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ public class BreakneckRider extends CardImpl {
|
|||
this.power = new MageInt(3);
|
||||
this.toughness = new MageInt(3);
|
||||
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
this.secondSideCard = new NeckBreaker(ownerId);
|
||||
|
||||
// At the beginning of each upkeep, if no spells were cast last turn, transform Breakneck Rider.
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ public class ConvictedKiller extends CardImpl {
|
|||
this.power = new MageInt(2);
|
||||
this.toughness = new MageInt(2);
|
||||
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
this.secondSideCard = new BrandedHowler(ownerId);
|
||||
|
||||
// At the beginning of each upkeep, if no spells were cast last turn, transform Convicted Killer.
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ public class DaringSleuth extends CardImpl {
|
|||
this.power = new MageInt(2);
|
||||
this.toughness = new MageInt(1);
|
||||
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
this.secondSideCard = new BearerOfOverwhelmingTruths(ownerId);
|
||||
|
||||
// When you sacrifice a Clue, transform Daring Sleuth.
|
||||
|
|
|
|||
|
|
@ -59,7 +59,7 @@ public class DuskwatchRecruiter extends CardImpl {
|
|||
this.subtype.add("Warrior");
|
||||
this.subtype.add("Werewolf");
|
||||
|
||||
this.canTransform = true;
|
||||
this.transformable = true;
|
||||
this.secondSideCard = new KrallenhordeHowler(ownerId);
|
||||
|
||||
this.power = new MageInt(2);
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue