Merge pull request #49 from magefree/master

Merge https://github.com/magefree/mage
This commit is contained in:
L_J 2018-04-07 11:00:25 +02:00 committed by GitHub
commit eeaa9a34b4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
615 changed files with 5927 additions and 982 deletions

View file

@ -401,6 +401,7 @@ public class MageBook extends JComponent {
cardDimension = new Dimension(Config.dimensions.frameWidth, Config.dimensions.frameHeight);
}
PermanentToken newToken = new PermanentToken(token, null, token.getOriginalExpansionSetCode(), null);
newToken.removeSummoningSickness();
PermanentView theToken = new PermanentView(newToken, null, null, null);
theToken.setInViewerOnly(true);
final MageCard cardImg = Plugins.instance.getMagePermanent(theToken, bigCard, cardDimension, gameId, true);
@ -650,7 +651,7 @@ public class MageBook extends JComponent {
}
}
public void updateSize(String size) {
public void updateSize(String size){
switch (size) {
case LAYOUT_3x3:
this.conf = new _3x3Configuration();

View file

@ -46,6 +46,7 @@ import mage.game.Game;
import mage.game.command.Emblem;
import mage.game.permanent.Permanent;
import mage.game.permanent.PermanentToken;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
import mage.game.stack.Spell;
import mage.game.stack.StackAbility;

View file

@ -43,6 +43,7 @@ import mage.constants.ColoredManaSymbol;
import mage.constants.SubType;
import mage.constants.TargetController;
import mage.filter.StaticFilters;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
/**
@ -78,7 +79,7 @@ public class AbhorrentOverlord extends CardImpl {
}
}
class AbhorrentOverlordHarpyToken extends Token {
class AbhorrentOverlordHarpyToken extends TokenImpl {
public AbhorrentOverlordHarpyToken() {
super("Harpy", "1/1 black Harpy creature tokens with flying");
@ -90,4 +91,11 @@ class AbhorrentOverlordHarpyToken extends Token {
this.addAbility(FlyingAbility.getInstance());
}
public AbhorrentOverlordHarpyToken(final AbhorrentOverlordHarpyToken token) {
super(token);
}
public AbhorrentOverlordHarpyToken copy() {
return new AbhorrentOverlordHarpyToken(this);
}
}

View file

@ -22,11 +22,12 @@ public class AcademyDrake extends CardImpl {
power = new MageInt(2);
toughness = new MageInt(2);
// Kicker {4}
this.addAbility(new KickerAbility("{4}"));
// Flying
addAbility(FlyingAbility.getInstance());
// If Academy Drake was kicked, it enters the battlefield with two +1/+1 counters on it.
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance(2)),
KickedCondition.instance, "If {this} was kicked, it enters the battlefield with two +1/+1 counters on it.", ""));

View file

@ -47,6 +47,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.common.FilterCreaturePermanent;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
import mage.players.Player;
@ -88,7 +89,7 @@ public class AjaniGoldmane extends CardImpl {
}
class AvatarToken extends Token {
class AvatarToken extends TokenImpl {
public AvatarToken() {
super("Avatar", "white Avatar creature token with \"This creature's power and toughness are each equal to your life total.\"");
@ -97,7 +98,13 @@ class AvatarToken extends Token {
color.setWhite(true);
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new AvatarTokenEffect()));
}
public AvatarToken(final AvatarToken token) {
super(token);
}
public AvatarToken copy() {
return new AvatarToken(this);
}
}
class AvatarTokenEffect extends ContinuousEffectImpl {

View file

@ -38,6 +38,7 @@ import mage.filter.common.FilterControlledEnchantmentPermanent;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.game.permanent.token.CatToken;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
import mage.players.Player;

View file

@ -19,6 +19,7 @@ import mage.game.events.DamagedPlayerEvent;
import mage.game.events.GameEvent;
import mage.game.events.GameEvent.EventType;
import mage.game.permanent.Permanent;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
/**
@ -84,7 +85,7 @@ class AkkiLavarunnerAbility extends TriggeredAbilityImpl {
}
}
class TokTokVolcanoBorn extends Token {
class TokTokVolcanoBorn extends TokenImpl {
TokTokVolcanoBorn() {
super("Tok-Tok, Volcano Born", "");
addSuperType(SuperType.LEGENDARY);
@ -97,6 +98,13 @@ class TokTokVolcanoBorn extends Token {
this.addAbility(ProtectionAbility.from(ObjectColor.RED));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new TokTokVolcanoBornEffect()));
}
public TokTokVolcanoBorn(final TokTokVolcanoBorn token) {
super(token);
}
public TokTokVolcanoBorn copy() {
return new TokTokVolcanoBorn(this);
}
}
class TokTokVolcanoBornEffect extends ReplacementEffectImpl {

View file

@ -43,6 +43,7 @@ import mage.constants.*;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.game.permanent.token.SoldierToken;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
import mage.players.Player;
import mage.target.Target;

View file

@ -43,6 +43,7 @@ import mage.constants.*;
import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.common.FilterControlledPermanent;
import mage.filter.predicate.mageobject.SubtypePredicate;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
import mage.target.common.TargetControlledCreaturePermanent;
import mage.target.common.TargetCreaturePermanent;
@ -89,7 +90,7 @@ public class AmbushCommander extends CardImpl {
}
}
class AmbushCommanderToken extends Token {
class AmbushCommanderToken extends TokenImpl {
public AmbushCommanderToken() {
super("Elf", "1/1 green Elf creatures");
@ -99,5 +100,12 @@ class AmbushCommanderToken extends Token {
toughness = new MageInt(1);
color.setGreen(true);
}
public AmbushCommanderToken(final AmbushCommanderToken token) {
super(token);
}
public AmbushCommanderToken copy() {
return new AmbushCommanderToken(this);
}
}

View file

@ -37,6 +37,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
/**
@ -62,7 +63,7 @@ public class AngelsTomb extends CardImpl {
}
}
class AngelTombToken extends Token {
class AngelTombToken extends TokenImpl {
public AngelTombToken() {
super("", "3/3 white Angel artifact creature with flying");
@ -75,4 +76,11 @@ class AngelTombToken extends Token {
toughness = new MageInt(3);
addAbility(FlyingAbility.getInstance());
}
public AngelTombToken(final AngelTombToken token) {
super(token);
}
public AngelTombToken copy() {
return new AngelTombToken(this);
}
}

View file

@ -34,6 +34,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
import mage.target.common.TargetLandPermanent;
@ -61,7 +62,7 @@ public class AnimateLand extends CardImpl {
}
}
class AnimatedLand extends Token {
class AnimatedLand extends TokenImpl {
public AnimatedLand() {
super("", "3/3 creature");
@ -69,4 +70,11 @@ class AnimatedLand extends Token {
this.power = new MageInt(3);
this.toughness = new MageInt(3);
}
public AnimatedLand(final AnimatedLand token) {
super(token);
}
public AnimatedLand copy() {
return new AnimatedLand(this);
}
}

View file

@ -39,6 +39,7 @@ import mage.constants.Duration;
import mage.constants.SubType;
import mage.constants.SuperType;
import mage.filter.common.FilterControlledLandPermanent;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
import mage.target.common.TargetControlledPermanent;
@ -73,7 +74,7 @@ public class AnthousaSetessanHero extends CardImpl {
}
}
class AnthousaWarriorToken extends Token {
class AnthousaWarriorToken extends TokenImpl {
public AnthousaWarriorToken() {
super("", "2/2 Warrior creatures");
@ -82,5 +83,12 @@ class AnthousaWarriorToken extends Token {
power = new MageInt(2);
toughness = new MageInt(2);
}
public AnthousaWarriorToken(final AnthousaWarriorToken token) {
super(token);
}
public AnthousaWarriorToken copy() {
return new AnthousaWarriorToken(this);
}
}

View file

@ -0,0 +1,85 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of BetaSteward_at_googlemail.com.
*/
package mage.cards.a;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.continuous.BoostControlledEffect;
import mage.abilities.keyword.DeathtouchAbility;
import mage.abilities.keyword.LifelinkAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SuperType;
import mage.constants.SubType;
import mage.constants.Zone;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.mageobject.SupertypePredicate;
/**
*
* @author Rystan
*/
public class ArvadTheCursed extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("legendary creatures you control");
static {
filter.add(new SupertypePredicate(SuperType.LEGENDARY));
}
public ArvadTheCursed(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}{B}");
addSuperType(SuperType.LEGENDARY);
this.subtype.add(SubType.VAMPIRE);
this.subtype.add(SubType.KNIGHT);
this.power = new MageInt(3);
this.toughness = new MageInt(3);
// Deathtouch
this.addAbility(DeathtouchAbility.getInstance());
// Lifelink
this.addAbility(LifelinkAbility.getInstance());
// Other legendary creatures you control get +2/+2.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(2, 2, Duration.WhileOnBattlefield, filter, true)));
}
public ArvadTheCursed(final ArvadTheCursed card) {
super(card);
}
@Override
public ArvadTheCursed copy() {
return new ArvadTheCursed(this);
}
}

View file

@ -41,6 +41,7 @@ import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.constants.Zone;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
/**
@ -70,7 +71,7 @@ public class AtarkaMonument extends CardImpl {
return new AtarkaMonument(this);
}
private static class AtarkaMonumentToken extends Token {
private static class AtarkaMonumentToken extends TokenImpl {
AtarkaMonumentToken() {
super("", "4/4 red and green Dragon artifact creature with flying");
cardType.add(CardType.ARTIFACT);
@ -82,5 +83,12 @@ public class AtarkaMonument extends CardImpl {
toughness = new MageInt(4);
this.addAbility(FlyingAbility.getInstance());
}
public AtarkaMonumentToken(final AtarkaMonumentToken token) {
super(token);
}
public AtarkaMonumentToken copy() {
return new AtarkaMonumentToken(this);
}
}
}

View file

@ -39,6 +39,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.filter.common.FilterLandPermanent;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
import mage.target.TargetPermanent;
import mage.target.common.TargetLandPermanent;
@ -78,7 +79,7 @@ public class AwakenTheAncient extends CardImpl {
return new AwakenTheAncient(this);
}
private static class GiantToken extends Token {
private static class GiantToken extends TokenImpl {
GiantToken() {
super("Giant", "7/7 red Giant creature with haste");
@ -89,5 +90,13 @@ public class AwakenTheAncient extends CardImpl {
toughness = new MageInt(7);
this.addAbility(HasteAbility.getInstance());
}
public GiantToken(final GiantToken token) {
super(token);
}
public GiantToken copy() {
return new GiantToken(this);
}
}
}

View file

@ -40,6 +40,7 @@ import mage.constants.*;
import mage.filter.common.FilterLandPermanent;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
import mage.target.common.TargetLandPermanent;
@ -107,7 +108,7 @@ class AwakenerDruidBecomesCreatureEffect extends BecomesCreatureTargetEffect {
}
}
class AwakenerDruidToken extends Token {
class AwakenerDruidToken extends TokenImpl {
public AwakenerDruidToken() {
super("", "4/5 green Treefolk creature as long as {this} is on the battlefield");
@ -117,5 +118,11 @@ class AwakenerDruidToken extends Token {
power = new MageInt(4);
toughness = new MageInt(5);
}
public AwakenerDruidToken(final AwakenerDruidToken token) {
super(token);
}
public AwakenerDruidToken copy() {
return new AwakenerDruidToken(this);
}
}

View file

@ -41,6 +41,7 @@ import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.constants.Zone;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
/**
@ -68,7 +69,7 @@ public class AzoriusKeyrune extends CardImpl {
return new AzoriusKeyrune(this);
}
private static class AzoriusKeyruneToken extends Token {
private static class AzoriusKeyruneToken extends TokenImpl {
AzoriusKeyruneToken() {
super("", "2/2 white and blue Bird artifact creature with flying");
cardType.add(CardType.ARTIFACT);
@ -80,5 +81,12 @@ public class AzoriusKeyrune extends CardImpl {
toughness = new MageInt(2);
this.addAbility(FlyingAbility.getInstance());
}
public AzoriusKeyruneToken(final AzoriusKeyruneToken token) {
super(token);
}
public AzoriusKeyruneToken copy() {
return new AzoriusKeyruneToken(this);
}
}
}

View file

@ -0,0 +1,74 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of BetaSteward_at_googlemail.com.
*/
package mage.cards.b;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.combat.CantAttackYouUnlessPayManaAllEffect;
import mage.abilities.keyword.VigilanceAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.SuperType;
import mage.constants.Zone;
/**
* @author JRHerlehy
* Created on 4/4/18.
*/
public class BairdStewardOfArgive extends CardImpl {
public BairdStewardOfArgive(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}{W}");
this.addSuperType(SuperType.LEGENDARY);
this.subtype.add(SubType.HUMAN, SubType.SOLDIER);
this.power = new MageInt(2);
this.toughness = new MageInt(4);
//Vigilance
this.addAbility(VigilanceAbility.getInstance());
//Creatures cant attack you or a planeswalker you control unless their controller pays {1} for each of those creatures.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantAttackYouUnlessPayManaAllEffect(new ManaCostsImpl("{1}"), true)));
}
public BairdStewardOfArgive(final BairdStewardOfArgive card) {
super(card);
}
@Override
public BairdStewardOfArgive copy() {
return new BairdStewardOfArgive(this);
}
}

View file

@ -37,6 +37,7 @@ import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.filter.common.FilterLandPermanent;
import mage.filter.predicate.mageobject.SupertypePredicate;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
import mage.target.TargetPermanent;
@ -77,7 +78,7 @@ public class BalduvianConjurer extends CardImpl {
}
}
class AnimatedLand extends Token {
class AnimatedLand extends TokenImpl {
public AnimatedLand() {
super("", "2/2 creature");
@ -85,4 +86,11 @@ class AnimatedLand extends Token {
this.power = new MageInt(2);
this.toughness = new MageInt(2);
}
public AnimatedLand(final AnimatedLand token) {
super(token);
}
public AnimatedLand copy() {
return new AnimatedLand(this);
}
}

View file

@ -40,6 +40,7 @@ import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.filter.common.FilterLandPermanent;
import mage.filter.predicate.mageobject.SupertypePredicate;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
import mage.target.TargetPermanent;
@ -79,7 +80,7 @@ public class BalduvianFrostwaker extends CardImpl {
}
}
class BalduvianFrostwakerToken extends Token {
class BalduvianFrostwakerToken extends TokenImpl {
public BalduvianFrostwakerToken() {
super("Elemental", "2/2 blue Elemental creature with flying");
@ -90,4 +91,11 @@ class BalduvianFrostwakerToken extends Token {
this.toughness = new MageInt(2);
this.addAbility(FlyingAbility.getInstance());
}
public BalduvianFrostwakerToken(final BalduvianFrostwakerToken token) {
super(token);
}
public BalduvianFrostwakerToken copy() {
return new BalduvianFrostwakerToken(this);
}
}

View file

@ -49,6 +49,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
import mage.filter.predicate.permanent.ControllerPredicate;
import mage.game.Game;
import mage.game.permanent.token.BaruFistOfKrosaToken;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
/**

View file

@ -46,6 +46,7 @@ import mage.constants.SubType;
import mage.constants.Zone;
import mage.filter.FilterPermanent;
import mage.filter.predicate.mageobject.SubtypePredicate;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
import mage.target.TargetPermanent;
@ -88,7 +89,7 @@ public class BlinkmothNexus extends CardImpl {
}
class BlinkmothNexusToken extends Token {
class BlinkmothNexusToken extends TokenImpl {
public BlinkmothNexusToken() {
super("Blinkmoth", "1/1 Blinkmoth artifact creature with flying");
cardType.add(CardType.ARTIFACT);
@ -98,4 +99,11 @@ class BlinkmothNexusToken extends Token {
toughness = new MageInt(1);
this.addAbility(FlyingAbility.getInstance());
}
public BlinkmothNexusToken(final BlinkmothNexusToken token) {
super(token);
}
public BlinkmothNexusToken copy() {
return new BlinkmothNexusToken(this);
}
}

View file

@ -41,6 +41,7 @@ import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.constants.Zone;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
/**
@ -69,7 +70,7 @@ public class BorosKeyrune extends CardImpl {
return new BorosKeyrune(this);
}
private static class BorosKeyruneToken extends Token {
private static class BorosKeyruneToken extends TokenImpl {
BorosKeyruneToken() {
super("Soldier", "1/1 red and white Soldier artifact creature with double strike");
cardType.add(CardType.ARTIFACT);
@ -81,5 +82,12 @@ public class BorosKeyrune extends CardImpl {
toughness = new MageInt(1);
this.addAbility(DoubleStrikeAbility.getInstance());
}
public BorosKeyruneToken(final BorosKeyruneToken token) {
super(token);
}
public BorosKeyruneToken copy() {
return new BorosKeyruneToken(this);
}
}
}

View file

@ -45,6 +45,7 @@ import mage.game.Game;
import mage.game.combat.CombatGroup;
import mage.game.permanent.Permanent;
import mage.game.permanent.token.CatSoldierCreatureToken;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
import mage.players.Player;

View file

@ -43,6 +43,7 @@ import mage.filter.common.FilterControlledLandPermanent;
import mage.filter.common.FilterControlledPermanent;
import mage.game.Game;
import mage.game.permanent.token.DokaiWeaverofLifeToken;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
import mage.players.Player;
@ -111,7 +112,7 @@ class BudokaGardenerEffect extends OneShotEffect {
}
class DokaiWeaverofLife extends Token {
class DokaiWeaverofLife extends TokenImpl {
DokaiWeaverofLife() {
super("Dokai, Weaver of Life", "");
@ -127,4 +128,11 @@ class DokaiWeaverofLife extends Token {
ability.addCost(new TapSourceCost());
this.addAbility(ability);
}
public DokaiWeaverofLife(final DokaiWeaverofLife token) {
super(token);
}
public DokaiWeaverofLife copy() {
return new DokaiWeaverofLife(this);
}
}

View file

@ -45,6 +45,7 @@ import mage.constants.*;
import mage.counters.CounterType;
import mage.filter.StaticFilters;
import mage.game.events.GameEvent;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
import mage.target.common.TargetCreaturePermanent;
@ -85,7 +86,7 @@ public class BudokaPupil extends CardImpl {
}
}
class IchigaWhoTopplesOaks extends Token {
class IchigaWhoTopplesOaks extends TokenImpl {
IchigaWhoTopplesOaks() {
super("Ichiga, Who Topples Oaks", "");
@ -107,4 +108,11 @@ class IchigaWhoTopplesOaks extends Token {
ability.addTarget(new TargetCreaturePermanent());
this.addAbility(ability);
}
public IchigaWhoTopplesOaks(final IchigaWhoTopplesOaks token) {
super(token);
}
public IchigaWhoTopplesOaks copy() {
return new IchigaWhoTopplesOaks(this);
}
}

View file

@ -43,6 +43,7 @@ import mage.constants.SubType;
import mage.constants.SuperType;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.permanent.WasDealtDamageThisTurnPredicate;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
import java.util.UUID;
@ -83,7 +84,7 @@ public class BushiTenderfoot extends CardImpl {
}
}
class KenzoTheHardhearted extends Token {
class KenzoTheHardhearted extends TokenImpl {
KenzoTheHardhearted() {
super("Kenzo the Hardhearted", "");
@ -98,4 +99,11 @@ class KenzoTheHardhearted extends Token {
this.addAbility(DoubleStrikeAbility.getInstance());
this.addAbility(new BushidoAbility(2));
}
public KenzoTheHardhearted(final KenzoTheHardhearted token) {
super(token);
}
public KenzoTheHardhearted copy() {
return new KenzoTheHardhearted(this);
}
}

View file

@ -0,0 +1,60 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of BetaSteward_at_googlemail.com.
*/
package mage.cards.c;
import java.util.UUID;
import mage.MageInt;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
/**
*
* @author Rystan
*/
public class CabalEvangel extends CardImpl {
public CabalEvangel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
this.subtype.add(SubType.HUMAN);
this.subtype.add(SubType.CLERIC);
this.power = new MageInt(2);
this.toughness = new MageInt(2);
}
public CabalEvangel(final CabalEvangel card) {
super(card);
}
@Override
public CabalEvangel copy() {
return new CabalEvangel(this);
}
}

View file

@ -49,6 +49,7 @@ import mage.constants.Zone;
import mage.counters.CounterType;
import mage.filter.StaticFilters;
import mage.game.events.GameEvent;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
import mage.target.TargetSpell;
@ -88,7 +89,7 @@ public class CallowJushi extends CardImpl {
}
}
class JarakuTheInterloper extends Token {
class JarakuTheInterloper extends TokenImpl {
JarakuTheInterloper() {
super("Jaraku the Interloper", "");
@ -107,4 +108,11 @@ class JarakuTheInterloper extends Token {
ability.addTarget(new TargetSpell());
this.addAbility(ability);
}
public JarakuTheInterloper(final JarakuTheInterloper token) {
super(token);
}
public JarakuTheInterloper copy() {
return new JarakuTheInterloper(this);
}
}

View file

@ -43,6 +43,7 @@ import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Duration;
import mage.constants.Zone;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
/**
@ -71,7 +72,7 @@ public class CelestialColonnade extends CardImpl {
}
class CelestialColonnadeToken extends Token {
class CelestialColonnadeToken extends TokenImpl {
public CelestialColonnadeToken() {
super("", "4/4 white and blue Elemental creature with flying and vigilance");
@ -84,5 +85,12 @@ class CelestialColonnadeToken extends Token {
addAbility(FlyingAbility.getInstance());
addAbility(VigilanceAbility.getInstance());
}
public CelestialColonnadeToken(final CelestialColonnadeToken token) {
super(token);
}
public CelestialColonnadeToken copy() {
return new CelestialColonnadeToken(this);
}
}

View file

@ -46,6 +46,7 @@ import mage.counters.CounterType;
import mage.filter.FilterSpell;
import mage.filter.predicate.Predicates;
import mage.filter.predicate.mageobject.CardTypePredicate;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
@ -82,7 +83,7 @@ public class ChimericEgg extends CardImpl {
return new ChimericEgg(this);
}
private static class ChimericEggToken extends Token {
private static class ChimericEggToken extends TokenImpl {
ChimericEggToken() {
super("", "6/6 Construct artifact creature with trample");
cardType.add(CardType.ARTIFACT);
@ -92,5 +93,12 @@ public class ChimericEgg extends CardImpl {
toughness = new MageInt(6);
this.addAbility(TrampleAbility.getInstance());
}
public ChimericEggToken(final ChimericEggToken token) {
super(token);
}
public ChimericEggToken copy() {
return new ChimericEggToken(this);
}
}
}

View file

@ -41,6 +41,7 @@ import mage.constants.SubType;
import mage.constants.Duration;
import mage.constants.Zone;
import mage.filter.common.FilterControlledLandPermanent;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
/**
@ -69,7 +70,7 @@ public class ChimericIdol extends CardImpl {
}
}
class ChimericIdolToken extends Token {
class ChimericIdolToken extends TokenImpl {
public ChimericIdolToken() {
super("Turtle", "3/3 Turtle artifact creature token");
@ -79,4 +80,11 @@ class ChimericIdolToken extends Token {
power = new MageInt(3);
toughness = new MageInt(3);
}
public ChimericIdolToken(final ChimericIdolToken token) {
super(token);
}
public ChimericIdolToken copy() {
return new ChimericIdolToken(this);
}
}

View file

@ -44,6 +44,7 @@ import mage.constants.SubType;
import mage.constants.Duration;
import mage.constants.Zone;
import mage.counters.CounterType;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
/**
@ -73,7 +74,7 @@ public class ChimericMass extends CardImpl {
}
class ChimericMassToken extends Token {
class ChimericMassToken extends TokenImpl {
public ChimericMassToken() {
super("", "Construct artifact creature with \"This creature's power and toughness are each equal to the number of charge counters on it.\"");
@ -83,4 +84,11 @@ class ChimericMassToken extends Token {
toughness = new MageInt(0);
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SetPowerToughnessSourceEffect(new CountersSourceCount(CounterType.CHARGE), Duration.WhileOnBattlefield)));
}
public ChimericMassToken(final ChimericMassToken token) {
super(token);
}
public ChimericMassToken copy() {
return new ChimericMassToken(this);
}
}

View file

@ -38,6 +38,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.Zone;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
/**
@ -67,7 +68,7 @@ public class ChimericSphere extends CardImpl {
}
}
class ChimericSphereCreature1 extends Token {
class ChimericSphereCreature1 extends TokenImpl {
public ChimericSphereCreature1() {
super("Chimeric Sphere", "2/1 Construct artifact creature with flying");
@ -78,9 +79,16 @@ class ChimericSphereCreature1 extends Token {
this.addAbility(FlyingAbility.getInstance());
}
public ChimericSphereCreature1(final ChimericSphereCreature1 token) {
super(token);
}
public ChimericSphereCreature1 copy() {
return new ChimericSphereCreature1(this);
}
}
class ChimericSphereCreature2 extends Token {
class ChimericSphereCreature2 extends TokenImpl {
public ChimericSphereCreature2() {
super("Chimeric Sphere", "3/2 Construct artifact creature without flying");
@ -89,5 +97,12 @@ class ChimericSphereCreature2 extends Token {
power = new MageInt(3);
toughness = new MageInt(2);
}
public ChimericSphereCreature2(final ChimericSphereCreature2 token) {
super(token);
}
public ChimericSphereCreature2 copy() {
return new ChimericSphereCreature2(this);
}
}

View file

@ -50,6 +50,7 @@ import mage.constants.EffectType;
import mage.constants.Zone;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
/**
@ -122,7 +123,7 @@ class ChronatogTotemAbility extends LimitedTimesPerTurnActivatedAbility {
}
}
class ChronatogTotemToken extends Token {
class ChronatogTotemToken extends TokenImpl {
ChronatogTotemToken() {
super("Atog", "1/2 blue Atog artifact creature");
@ -133,6 +134,13 @@ class ChronatogTotemToken extends Token {
toughness = new MageInt(2);
color.setBlue(true);
}
public ChronatogTotemToken(final ChronatogTotemToken token) {
super(token);
}
public ChronatogTotemToken copy() {
return new ChronatogTotemToken(this);
}
}
class ChronatogTotemCondition implements Condition {

View file

@ -43,6 +43,7 @@ import mage.constants.SubType;
import mage.constants.Duration;
import mage.constants.Outcome;
import mage.constants.Zone;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
import mage.target.TargetPermanent;
import mage.target.common.TargetLandPermanent;
@ -85,7 +86,7 @@ public class CorruptedZendikon extends CardImpl {
}
}
class CorruptedZendikonOozeToken extends Token {
class CorruptedZendikonOozeToken extends TokenImpl {
public CorruptedZendikonOozeToken() {
super("Ooze", "3/3 black Ooze creature");
@ -95,5 +96,12 @@ class CorruptedZendikonOozeToken extends Token {
this.power = new MageInt(3);
this.toughness = new MageInt(3);
}
public CorruptedZendikonOozeToken(final CorruptedZendikonOozeToken token) {
super(token);
}
public CorruptedZendikonOozeToken copy() {
return new CorruptedZendikonOozeToken(this);
}
}

View file

@ -43,6 +43,7 @@ import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Duration;
import mage.constants.Zone;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
/**
@ -76,7 +77,7 @@ public class CreepingTarPit extends CardImpl {
}
class CreepingTarPitToken extends Token {
class CreepingTarPitToken extends TokenImpl {
public CreepingTarPitToken() {
super("", "3/2 blue and black Elemental creature and can't be blocked");
cardType.add(CardType.CREATURE);
@ -87,4 +88,11 @@ class CreepingTarPitToken extends Token {
toughness = new MageInt(2);
this.addAbility(new CantBeBlockedSourceAbility());
}
public CreepingTarPitToken(final CreepingTarPitToken token) {
super(token);
}
public CreepingTarPitToken copy() {
return new CreepingTarPitToken(this);
}
}

View file

@ -44,6 +44,7 @@ import mage.constants.SubType;
import mage.constants.Duration;
import mage.constants.Outcome;
import mage.constants.Zone;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
import mage.target.TargetPermanent;
import mage.target.common.TargetLandPermanent;
@ -83,7 +84,7 @@ public class CrusherZendikon extends CardImpl {
}
}
class BeastToken extends Token {
class BeastToken extends TokenImpl {
BeastToken() {
super("", "4/2 red Beast creature with trample");
@ -94,4 +95,11 @@ class BeastToken extends Token {
toughness = new MageInt(2);
this.addAbility(TrampleAbility.getInstance());
}
public BeastToken(final BeastToken token) {
super(token);
}
public BeastToken copy() {
return new BeastToken(this);
}
}

View file

@ -49,6 +49,7 @@ import mage.constants.Zone;
import mage.counters.CounterType;
import mage.filter.StaticFilters;
import mage.game.events.GameEvent;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
import mage.target.common.TargetCreaturePermanent;
@ -88,7 +89,7 @@ public class CunningBandit extends CardImpl {
}
}
class AzamukiTreacheryIncarnate extends Token {
class AzamukiTreacheryIncarnate extends TokenImpl {
AzamukiTreacheryIncarnate() {
super("Azamuki, Treachery Incarnate", "");
@ -107,4 +108,11 @@ class AzamukiTreacheryIncarnate extends Token {
ability.addTarget(new TargetCreaturePermanent());
this.addAbility(ability);
}
public AzamukiTreacheryIncarnate(final AzamukiTreacheryIncarnate token) {
super(token);
}
public AzamukiTreacheryIncarnate copy() {
return new AzamukiTreacheryIncarnate(this);
}
}

View file

@ -37,6 +37,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Duration;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
import mage.target.common.TargetControlledCreaturePermanent;
@ -65,7 +66,7 @@ public class DanceOfTheSkywise extends CardImpl {
return new DanceOfTheSkywise(this);
}
private static class DragonIllusionToken extends Token {
private static class DragonIllusionToken extends TokenImpl {
public DragonIllusionToken() {
super("Dragon", "blue Dragon Illusion with base power and toughness 4/4 and with flying");
@ -77,6 +78,13 @@ public class DanceOfTheSkywise extends CardImpl {
toughness = new MageInt(4);
this.addAbility(FlyingAbility.getInstance());
}
public DragonIllusionToken(final DragonIllusionToken token) {
super(token);
}
public DragonIllusionToken copy() {
return new DragonIllusionToken(this);
}
}
}

View file

@ -39,6 +39,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.Zone;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
/**
@ -64,7 +65,7 @@ public class DarksteelBrute extends CardImpl {
}
class DarksteelBruteToken extends Token {
class DarksteelBruteToken extends TokenImpl {
public DarksteelBruteToken() {
super("", "2/2 Beast artifact creature");
cardType.add(CardType.ARTIFACT);
@ -72,4 +73,11 @@ class DarksteelBruteToken extends Token {
power = new MageInt(2);
toughness = new MageInt(2);
}
public DarksteelBruteToken(final DarksteelBruteToken token) {
super(token);
}
public DarksteelBruteToken copy() {
return new DarksteelBruteToken(this);
}
}

View file

@ -42,6 +42,7 @@ import mage.constants.SubType;
import mage.constants.Duration;
import mage.constants.Outcome;
import mage.constants.Zone;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
import mage.target.TargetPermanent;
import mage.target.common.TargetCreaturePermanent;
@ -81,7 +82,7 @@ public class DarksteelMutation extends CardImpl {
}
}
class DarksteelMutationInsectToken extends Token {
class DarksteelMutationInsectToken extends TokenImpl {
public DarksteelMutationInsectToken() {
super("Insect", "Insect artifact creature with base power and toughness 0/1");
@ -93,5 +94,12 @@ class DarksteelMutationInsectToken extends Token {
this.addAbility(IndestructibleAbility.getInstance());
}
public DarksteelMutationInsectToken(final DarksteelMutationInsectToken token) {
super(token);
}
public DarksteelMutationInsectToken copy() {
return new DarksteelMutationInsectToken(this);
}
}

View file

@ -38,6 +38,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Duration;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
/**
@ -63,7 +64,7 @@ public class DaxossTorment extends CardImpl {
}
}
class DaxossTormentToken extends Token {
class DaxossTormentToken extends TokenImpl {
public DaxossTormentToken() {
super("", "5/5 Demon creature with flying and haste");
@ -75,4 +76,11 @@ class DaxossTormentToken extends Token {
addAbility(FlyingAbility.getInstance());
addAbility(HasteAbility.getInstance());
}
public DaxossTormentToken(final DaxossTormentToken token) {
super(token);
}
public DaxossTormentToken copy() {
return new DaxossTormentToken(this);
}
}

View file

@ -36,6 +36,7 @@ import mage.constants.CardType;
import mage.constants.Outcome;
import mage.game.Game;
import mage.game.permanent.token.DragonToken2;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
import mage.players.Player;
import mage.target.TargetPlayer;

View file

@ -44,6 +44,7 @@ import mage.constants.Outcome;
import mage.game.Game;
import mage.game.permanent.token.AngelToken;
import mage.game.permanent.token.SoldierToken;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
import mage.players.Player;

View file

@ -41,6 +41,7 @@ import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Duration;
import mage.constants.Zone;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
/**
@ -69,7 +70,7 @@ public class DimirKeyrune extends CardImpl {
return new DimirKeyrune(this);
}
private static class DimirKeyruneToken extends Token {
private static class DimirKeyruneToken extends TokenImpl {
DimirKeyruneToken() {
super("Horror", "2/2 blue and black Horror until end of turn and can't be blocked this turn");
cardType.add(CardType.ARTIFACT);
@ -81,5 +82,12 @@ public class DimirKeyrune extends CardImpl {
toughness = new MageInt(2);
this.addAbility(new CantBeBlockedSourceAbility());
}
public DimirKeyruneToken(final DimirKeyruneToken token) {
super(token);
}
public DimirKeyruneToken copy() {
return new DimirKeyruneToken(this);
}
}
}

View file

@ -42,6 +42,7 @@ import mage.filter.common.FilterControlledLandPermanent;
import mage.filter.predicate.mageobject.ColorPredicate;
import mage.game.Game;
import mage.game.permanent.token.DinOfTheFireherdToken;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
import mage.players.Player;
import mage.target.common.TargetOpponent;

View file

@ -41,6 +41,7 @@ import mage.filter.predicate.Predicates;
import mage.filter.predicate.mageobject.CardTypePredicate;
import mage.game.Game;
import mage.game.permanent.token.DovescapeToken;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
import mage.game.stack.Spell;

View file

@ -46,6 +46,7 @@ import mage.constants.TargetController;
import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.permanent.ControllerPredicate;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
import mage.target.common.TargetControlledCreaturePermanent;
@ -85,7 +86,7 @@ public class Dragonshift extends CardImpl {
return new Dragonshift(this);
}
private class DragonToken extends Token {
private class DragonToken extends TokenImpl {
public DragonToken() {
super("Dragon", "blue and red Dragon with base power and toughness 4/4 and with flying");
@ -97,6 +98,13 @@ public class Dragonshift extends CardImpl {
toughness = new MageInt(4);
this.addAbility(FlyingAbility.getInstance());
}
public DragonToken(final DragonToken token) {
super(token);
}
public DragonToken copy() {
return new DragonToken(this);
}
}
}

View file

@ -40,6 +40,7 @@ import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Duration;
import mage.constants.Zone;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
/**
@ -65,7 +66,7 @@ public class DreadStatuary extends CardImpl {
}
class DreadStatuaryToken extends Token {
class DreadStatuaryToken extends TokenImpl {
public DreadStatuaryToken() {
super("", "4/2 Golem artifact creature");
@ -75,5 +76,11 @@ class DreadStatuaryToken extends Token {
power = new MageInt(4);
toughness = new MageInt(2);
}
public DreadStatuaryToken(final DreadStatuaryToken token) {
super(token);
}
public DreadStatuaryToken copy() {
return new DreadStatuaryToken(this);
}
}

View file

@ -41,6 +41,7 @@ import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Duration;
import mage.constants.Zone;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
/**
@ -70,7 +71,7 @@ public class DromokaMonument extends CardImpl {
return new DromokaMonument(this);
}
private class DromokaMonumentToken extends Token {
private class DromokaMonumentToken extends TokenImpl {
DromokaMonumentToken() {
super("", "4/4 green and white Dragon artifact creature with flying");
cardType.add(CardType.ARTIFACT);
@ -82,5 +83,12 @@ public class DromokaMonument extends CardImpl {
toughness = new MageInt(4);
this.addAbility(FlyingAbility.getInstance());
}
public DromokaMonumentToken(final DromokaMonumentToken token) {
super(token);
}
public DromokaMonumentToken copy() {
return new DromokaMonumentToken(this);
}
}
}

View file

@ -39,6 +39,7 @@ import mage.constants.Outcome;
import mage.constants.Zone;
import mage.game.Game;
import mage.game.permanent.token.SaprolingToken;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
import mage.players.Player;

View file

@ -0,0 +1,63 @@
package mage.cards.d;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.AttachEffect;
import mage.abilities.effects.common.continuous.AddCardSubtypeAttachedEffect;
import mage.abilities.effects.common.continuous.BoostEnchantedEffect;
import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect;
import mage.abilities.keyword.EnchantAbility;
import mage.abilities.keyword.FirstStrikeAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.AttachmentType;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.Outcome;
import mage.constants.SubType;
import mage.constants.Zone;
import mage.target.TargetPermanent;
import mage.target.common.TargetCreaturePermanent;
/**
* @author JRHerlehy
* Created on 4/6/18.
*/
public class Dub extends CardImpl {
public Dub(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}");
this.subtype.add(SubType.AURA);
// Enchant creature
TargetPermanent auraTarget = new TargetCreaturePermanent();
this.getSpellAbility().addTarget(auraTarget);
this.getSpellAbility().addEffect(new AttachEffect(Outcome.BoostCreature));
Ability ability = new EnchantAbility(auraTarget.getTargetName());
this.addAbility(ability);
// Enchanted creature gets +2/+2, has first strike, and is a Knight in addition to its other types.
Effect effect = new BoostEnchantedEffect(2, 2);
ability = new SimpleStaticAbility(Zone.BATTLEFIELD, effect);
effect = new GainAbilityAttachedEffect(FirstStrikeAbility.getInstance(), AttachmentType.AURA);
effect.setText(", has first strike");
ability.addEffect(effect);
effect = new AddCardSubtypeAttachedEffect(SubType.KNIGHT, Duration.WhileOnBattlefield, AttachmentType.AURA);
effect.setText(", and is a Knight in addition to its other types");
ability.addEffect(effect);
this.addAbility(ability);
}
public Dub(final Dub card) {
super(card);
}
@Override
public Dub copy() {
return new Dub(this);
}
}

View file

@ -39,6 +39,7 @@ import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Duration;
import mage.filter.common.FilterControlledLandPermanent;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
import mage.target.TargetPermanent;
@ -69,7 +70,7 @@ public class ElementalUprising extends CardImpl {
}
}
class ElementalUprisingToken extends Token {
class ElementalUprisingToken extends TokenImpl {
public ElementalUprisingToken() {
super("", "4/4 Elemental creature with haste");
@ -81,4 +82,11 @@ class ElementalUprisingToken extends Token {
this.addAbility(HasteAbility.getInstance());
}
public ElementalUprisingToken(final ElementalUprisingToken token) {
super(token);
}
public ElementalUprisingToken copy() {
return new ElementalUprisingToken(this);
}
}

View file

@ -45,6 +45,7 @@ import mage.constants.Duration;
import mage.constants.SuperType;
import mage.game.command.emblems.ElspethKnightErrantEmblem;
import mage.game.permanent.token.SoldierToken;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
import mage.target.common.TargetCreaturePermanent;

View file

@ -43,6 +43,7 @@ import mage.filter.FilterPermanent;
import mage.filter.common.FilterControlledPermanent;
import mage.filter.predicate.mageobject.SubtypePredicate;
import mage.game.Game;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
import mage.target.TargetPermanent;
@ -112,7 +113,7 @@ class ElvishBranchbenderEffect extends OneShotEffect {
}
}
class ElvishBranchbenderToken extends Token {
class ElvishBranchbenderToken extends TokenImpl {
ElvishBranchbenderToken(int xValue) {
super("Treefolk", "X/X Treefolk creature in addition to its other types, where X is the number of Elves you control");
@ -121,4 +122,11 @@ class ElvishBranchbenderToken extends Token {
power = new MageInt(xValue);
toughness = new MageInt(xValue);
}
public ElvishBranchbenderToken(final ElvishBranchbenderToken token) {
super(token);
}
public ElvishBranchbenderToken copy() {
return new ElvishBranchbenderToken(this);
}
}

View file

@ -45,6 +45,7 @@ import mage.constants.Zone;
import mage.filter.FilterPermanent;
import mage.filter.common.FilterControlledLandPermanent;
import mage.filter.predicate.mageobject.CardTypePredicate;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
import mage.target.TargetPermanent;
@ -90,7 +91,7 @@ public class EmbodimentOfFury extends CardImpl {
}
}
class EmbodimentOfFuryToken extends Token {
class EmbodimentOfFuryToken extends TokenImpl {
public EmbodimentOfFuryToken() {
super("", "3/3 Elemental creature with haste");
@ -101,4 +102,11 @@ class EmbodimentOfFuryToken extends Token {
this.toughness = new MageInt(3);
this.addAbility(HasteAbility.getInstance());
}
public EmbodimentOfFuryToken(final EmbodimentOfFuryToken token) {
super(token);
}
public EmbodimentOfFuryToken copy() {
return new EmbodimentOfFuryToken(this);
}
}

View file

@ -45,6 +45,7 @@ import mage.constants.Zone;
import mage.filter.FilterPermanent;
import mage.filter.common.FilterControlledLandPermanent;
import mage.filter.predicate.mageobject.CardTypePredicate;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
import mage.target.TargetPermanent;
@ -90,7 +91,7 @@ public class EmbodimentOfInsight extends CardImpl {
}
}
class EmbodimentOfInsightToken extends Token {
class EmbodimentOfInsightToken extends TokenImpl {
public EmbodimentOfInsightToken() {
super("", "3/3 Elemental creature with haste");
@ -101,4 +102,11 @@ class EmbodimentOfInsightToken extends Token {
this.toughness = new MageInt(3);
this.addAbility(HasteAbility.getInstance());
}
public EmbodimentOfInsightToken(final EmbodimentOfInsightToken token) {
super(token);
}
public EmbodimentOfInsightToken copy() {
return new EmbodimentOfInsightToken(this);
}
}

View file

@ -41,6 +41,7 @@ import mage.constants.SubType;
import mage.constants.Duration;
import mage.constants.Outcome;
import mage.constants.Zone;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
import mage.target.TargetPermanent;
import mage.target.common.TargetArtifactPermanent;
@ -80,7 +81,7 @@ public class EnsoulArtifact extends CardImpl {
}
}
class EnsoulArtifactToken extends Token {
class EnsoulArtifactToken extends TokenImpl {
EnsoulArtifactToken() {
super("", "5/5");
@ -88,4 +89,11 @@ class EnsoulArtifactToken extends Token {
power = new MageInt(5);
toughness = new MageInt(5);
}
public EnsoulArtifactToken(final EnsoulArtifactToken token) {
super(token);
}
public EnsoulArtifactToken copy() {
return new EnsoulArtifactToken(this);
}
}

View file

@ -43,6 +43,7 @@ import mage.constants.SubType;
import mage.constants.Duration;
import mage.constants.Outcome;
import mage.constants.Zone;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
/**
@ -73,7 +74,7 @@ public class EnsouledScimitar extends CardImpl {
}
}
class EnsouledScimitarToken extends Token {
class EnsouledScimitarToken extends TokenImpl {
public EnsouledScimitarToken() {
super("Pincher", "1/5 Spirit artifact creature with flying");
@ -86,4 +87,11 @@ class EnsouledScimitarToken extends Token {
}
public EnsouledScimitarToken(final EnsouledScimitarToken token) {
super(token);
}
public EnsouledScimitarToken copy() {
return new EnsouledScimitarToken(this);
}
}

View file

@ -43,6 +43,7 @@ import mage.constants.Zone;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.game.events.GameEvent.EventType;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
import mage.target.targetpointer.FixedTarget;
import mage.watchers.common.CastSpellLastTurnWatcher;
@ -119,7 +120,7 @@ class ErayoSoratamiAscendantTriggeredAbility extends TriggeredAbilityImpl {
}
}
class ErayosEssence extends Token {
class ErayosEssence extends TokenImpl {
ErayosEssence() {
super("Erayo's Essence", "");
@ -133,6 +134,13 @@ class ErayosEssence extends Token {
effect.setText("counter that spell");
this.addAbility(new ErayosEssenceTriggeredAbility(effect));
}
public ErayosEssence(final ErayosEssence token) {
super(token);
}
public ErayosEssence copy() {
return new ErayosEssence(this);
}
}
class ErayosEssenceTriggeredAbility extends TriggeredAbilityImpl {

View file

@ -41,6 +41,7 @@ import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Duration;
import mage.constants.Zone;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
/**
@ -66,7 +67,7 @@ public class FaerieConclave extends CardImpl {
}
}
class FaerieConclaveToken extends Token {
class FaerieConclaveToken extends TokenImpl {
FaerieConclaveToken() {
super("Faerie", "2/1 blue Faerie creature with flying");
cardType.add(CardType.CREATURE);
@ -76,4 +77,11 @@ class FaerieConclaveToken extends Token {
toughness = new MageInt(1);
this.addAbility(FlyingAbility.getInstance());
}
public FaerieConclaveToken(final FaerieConclaveToken token) {
super(token);
}
public FaerieConclaveToken copy() {
return new FaerieConclaveToken(this);
}
}

View file

@ -52,6 +52,7 @@ import mage.constants.Zone;
import mage.counters.CounterType;
import mage.filter.StaticFilters;
import mage.game.events.GameEvent;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
import mage.target.common.TargetCreaturePermanent;
@ -91,7 +92,7 @@ public class FaithfulSquire extends CardImpl {
}
}
class KaisoMemoryOfLoyalty extends Token {
class KaisoMemoryOfLoyalty extends TokenImpl {
KaisoMemoryOfLoyalty() {
super("Kaiso, Memory of Loyalty", "");
@ -113,4 +114,11 @@ class KaisoMemoryOfLoyalty extends Token {
ability.addTarget(new TargetCreaturePermanent());
this.addAbility(ability);
}
public KaisoMemoryOfLoyalty(final KaisoMemoryOfLoyalty token) {
super(token);
}
public KaisoMemoryOfLoyalty copy() {
return new KaisoMemoryOfLoyalty(this);
}
}

View file

@ -41,6 +41,7 @@ import mage.constants.SubType;
import mage.constants.Zone;
import mage.filter.common.FilterLandPermanent;
import mage.filter.predicate.mageobject.SubtypePredicate;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
import mage.target.common.TargetLandPermanent;
@ -79,7 +80,7 @@ public class FendeepSummoner extends CardImpl {
}
}
class FendeepSummonerToken extends Token {
class FendeepSummonerToken extends TokenImpl {
public FendeepSummonerToken() {
super("", "3/5 Treefolk Warrior");
@ -89,4 +90,11 @@ class FendeepSummonerToken extends Token {
this.power = new MageInt(3);
this.toughness = new MageInt(5);
}
public FendeepSummonerToken(final FendeepSummonerToken token) {
super(token);
}
public FendeepSummonerToken copy() {
return new FendeepSummonerToken(this);
}
}

View file

@ -45,6 +45,7 @@ import mage.constants.SubType;
import mage.constants.Zone;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.mageobject.SubtypePredicate;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
/**
@ -101,7 +102,7 @@ public class FigureOfDestiny extends CardImpl {
return new FigureOfDestiny(this);
}
private class FigureOfDestinyToken1 extends Token {
private class FigureOfDestinyToken1 extends TokenImpl {
public FigureOfDestinyToken1() {
super("Figure of Destiny", "Kithkin Spirit with base power and toughness 2/2");
@ -114,9 +115,17 @@ public class FigureOfDestiny extends CardImpl {
this.power = new MageInt(2);
this.toughness = new MageInt(2);
}
public FigureOfDestinyToken1(final FigureOfDestinyToken1 token) {
super(token);
}
public FigureOfDestinyToken1 copy() {
return new FigureOfDestinyToken1(this);
}
}
private class FigureOfDestinyToken2 extends Token {
private class FigureOfDestinyToken2 extends TokenImpl {
public FigureOfDestinyToken2() {
super("Figure of Destiny", "Kithkin Spirit Warrior with base power and toughness 4/4");
@ -130,9 +139,17 @@ public class FigureOfDestiny extends CardImpl {
this.power = new MageInt(4);
this.toughness = new MageInt(4);
}
public FigureOfDestinyToken2(final FigureOfDestinyToken2 token) {
super(token);
}
public FigureOfDestinyToken2 copy() {
return new FigureOfDestinyToken2(this);
}
}
private class FigureOfDestinyToken3 extends Token {
private class FigureOfDestinyToken3 extends TokenImpl {
public FigureOfDestinyToken3() {
super("Figure of Destiny", "Kithkin Spirit Warrior Avatar with base power and toughness 8/8, flying, and first strike");
@ -149,5 +166,13 @@ public class FigureOfDestiny extends CardImpl {
this.addAbility(FlyingAbility.getInstance());
this.addAbility(FirstStrikeAbility.getInstance());
}
public FigureOfDestinyToken3(final FigureOfDestinyToken3 token) {
super(token);
}
public FigureOfDestinyToken3 copy() {
return new FigureOfDestinyToken3(this);
}
}
}

View file

@ -34,6 +34,7 @@ import mage.abilities.condition.common.SourceIsSpellCondition;
import mage.abilities.costs.AlternativeCostSourceAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.ContinuousEffectImpl;
import mage.abilities.effects.common.continuous.WUBRGInsteadEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
@ -50,7 +51,7 @@ public class FistOfSuns extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
// You may pay {W}{U}{B}{R}{G} rather than pay the mana cost for spells that you cast.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new FistOfSunsRuleEffect()));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new WUBRGInsteadEffect()));
}
public FistOfSuns(final FistOfSuns card) {
@ -63,42 +64,3 @@ public class FistOfSuns extends CardImpl {
}
}
class FistOfSunsRuleEffect extends ContinuousEffectImpl {
static AlternativeCostSourceAbility alternativeCastingCostAbility = new AlternativeCostSourceAbility(new ManaCostsImpl("{W}{U}{B}{R}{G}"), SourceIsSpellCondition.instance);
public FistOfSunsRuleEffect() {
super(Duration.WhileOnBattlefield, Outcome.Detriment);
staticText = "You may pay {W}{U}{B}{R}{G} rather than pay the mana cost for spells that you cast";
}
public FistOfSunsRuleEffect(final FistOfSunsRuleEffect effect) {
super(effect);
}
@Override
public FistOfSunsRuleEffect copy() {
return new FistOfSunsRuleEffect(this);
}
@Override
public boolean apply(Layer layer, SubLayer sublayer, Ability source, Game game) {
Player controller = game.getPlayer(source.getControllerId());
if (controller != null) {
controller.getAlternativeSourceCosts().add(alternativeCastingCostAbility);
return true;
}
return false;
}
@Override
public boolean apply(Game game, Ability source) {
return false;
}
@Override
public boolean hasLayer(Layer layer) {
return layer == Layer.RulesEffects;
}
}

View file

@ -50,6 +50,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
import mage.game.ExileZone;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
import mage.target.Target;
import mage.target.TargetPermanent;

View file

@ -40,6 +40,7 @@ import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Duration;
import mage.constants.Zone;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
/**
@ -71,7 +72,7 @@ public class ForbiddingWatchtower extends CardImpl {
}
}
class ForbiddingWatchtowerToken extends Token {
class ForbiddingWatchtowerToken extends TokenImpl {
ForbiddingWatchtowerToken() {
super("Soldier", "1/5 white Soldier creature");
cardType.add(CardType.CREATURE);
@ -81,4 +82,11 @@ class ForbiddingWatchtowerToken extends Token {
power = new MageInt(1);
toughness = new MageInt(5);
}
public ForbiddingWatchtowerToken(final ForbiddingWatchtowerToken token) {
super(token);
}
public ForbiddingWatchtowerToken copy() {
return new ForbiddingWatchtowerToken(this);
}
}

View file

@ -45,6 +45,7 @@ import mage.constants.SubType;
import mage.constants.Duration;
import mage.constants.Zone;
import mage.filter.common.FilterCreaturePermanent;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
/**
@ -79,7 +80,7 @@ public class ForiysianTotem extends CardImpl {
}
class ForiysianTotemToken extends Token {
class ForiysianTotemToken extends TokenImpl {
public ForiysianTotemToken() {
super("", "4/4 red Giant artifact creature with trample");
@ -91,4 +92,11 @@ class ForiysianTotemToken extends Token {
toughness = new MageInt(4);
this.addAbility(TrampleAbility.getInstance());
}
public ForiysianTotemToken(final ForiysianTotemToken token) {
super(token);
}
public ForiysianTotemToken copy() {
return new ForiysianTotemToken(this);
}
}

View file

@ -42,6 +42,7 @@ import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.constants.Zone;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
import mage.target.common.TargetCreaturePermanent;
@ -80,7 +81,7 @@ public class FowlPlay extends CardImpl {
}
}
class FowlPlayToken extends Token {
class FowlPlayToken extends TokenImpl {
public FowlPlayToken() {
super("Chicken", "a Chicken with base power and toughness 1/1 with no abilities");
@ -89,4 +90,11 @@ class FowlPlayToken extends Token {
power = new MageInt(1);
toughness = new MageInt(1);
}
public FowlPlayToken(final FowlPlayToken token) {
super(token);
}
public FowlPlayToken copy() {
return new FowlPlayToken(this);
}
}

View file

@ -37,6 +37,7 @@ import mage.constants.CardType;
import mage.constants.Outcome;
import mage.game.Game;
import mage.game.permanent.token.SpiritWhiteToken;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
import mage.players.Player;
import mage.target.common.TargetCardInGraveyard;

View file

@ -42,6 +42,7 @@ import mage.filter.FilterPermanent;
import mage.filter.predicate.permanent.CounterPredicate;
import mage.game.Game;
import mage.game.permanent.token.GoblinToken;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
import mage.players.Player;

View file

@ -37,6 +37,7 @@ import mage.constants.Outcome;
import mage.filter.StaticFilters;
import mage.game.Game;
import mage.game.permanent.token.SpiritBlueToken;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
import mage.target.TargetSpell;

View file

@ -43,6 +43,7 @@ import mage.constants.Outcome;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.game.permanent.token.GeminiEngineTwinToken;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
import mage.players.Player;
import mage.target.targetpointer.FixedTarget;

View file

@ -42,6 +42,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.filter.common.FilterLandPermanent;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
import mage.target.TargetPermanent;
import mage.target.common.TargetLandPermanent;
@ -85,7 +86,7 @@ public class GenjuOfTheCedars extends CardImpl {
return new GenjuOfTheCedars(this);
}
private static class SpiritToken extends Token {
private static class SpiritToken extends TokenImpl {
SpiritToken() {
super("", "4/4 green Spirit creature");
@ -95,5 +96,13 @@ public class GenjuOfTheCedars extends CardImpl {
power = new MageInt(4);
toughness = new MageInt(4);
}
public SpiritToken(final SpiritToken token) {
super(token);
}
public SpiritToken copy() {
return new SpiritToken(this);
}
}
}

View file

@ -42,6 +42,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.filter.common.FilterLandPermanent;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
import mage.target.TargetPermanent;
import mage.target.common.TargetLandPermanent;
@ -83,7 +84,7 @@ public class GenjuOfTheFalls extends CardImpl {
return new GenjuOfTheFalls(this);
}
private static class SpiritToken extends Token {
private static class SpiritToken extends TokenImpl {
SpiritToken() {
super("Spirit", "3/2 blue Spirit creature with flying");
@ -94,5 +95,13 @@ public class GenjuOfTheFalls extends CardImpl {
toughness = new MageInt(2);
addAbility(FlyingAbility.getInstance());
}
public SpiritToken(final SpiritToken token) {
super(token);
}
public SpiritToken copy() {
return new SpiritToken(this);
}
}
}

View file

@ -43,6 +43,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.filter.common.FilterLandPermanent;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
import mage.target.TargetPermanent;
import mage.target.common.TargetLandPermanent;
@ -84,7 +85,7 @@ public class GenjuOfTheFens extends CardImpl {
return new GenjuOfTheFens(this);
}
private static class SpiritToken extends Token {
private static class SpiritToken extends TokenImpl {
SpiritToken() {
super("Spirit", "2/2 black Spirit creature with \"{B}: This creature gets +1/+1 until end of turn.\"");
@ -95,5 +96,13 @@ public class GenjuOfTheFens extends CardImpl {
toughness = new MageInt(2);
addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(1, 1, Duration.EndOfTurn), new ManaCostsImpl("{B}")));
}
public SpiritToken(final SpiritToken token) {
super(token);
}
public SpiritToken copy() {
return new SpiritToken(this);
}
}
}

View file

@ -44,6 +44,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.filter.common.FilterLandPermanent;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
import mage.target.TargetPermanent;
import mage.target.common.TargetLandPermanent;
@ -90,7 +91,7 @@ public class GenjuOfTheFields extends CardImpl {
return new GenjuOfTheFields(this);
}
private static class SpiritToken extends Token {
private static class SpiritToken extends TokenImpl {
SpiritToken() {
super("Spirit", "2/5 white Spirit creature");
@ -100,5 +101,12 @@ public class GenjuOfTheFields extends CardImpl {
power = new MageInt(2);
toughness = new MageInt(5);
}
public SpiritToken(final SpiritToken token) {
super(token);
}
public SpiritToken copy() {
return new SpiritToken(this);
}
}
}

View file

@ -41,6 +41,7 @@ import mage.abilities.keyword.TrampleAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
import mage.target.TargetPermanent;
import mage.target.common.TargetLandPermanent;
@ -81,7 +82,7 @@ public class GenjuOfTheRealm extends CardImpl {
return new GenjuOfTheRealm(this);
}
private static class SpiritToken extends Token {
private static class SpiritToken extends TokenImpl {
SpiritToken() {
super("Spirit", "legendary 8/12 Spirit creature with trample");
@ -97,5 +98,13 @@ public class GenjuOfTheRealm extends CardImpl {
toughness = new MageInt(12);
this.addAbility(TrampleAbility.getInstance());
}
public SpiritToken(final SpiritToken token) {
super(token);
}
public SpiritToken copy() {
return new SpiritToken(this);
}
}
}

View file

@ -41,6 +41,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.filter.common.FilterLandPermanent;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
import mage.target.TargetPermanent;
import mage.target.common.TargetLandPermanent;
@ -82,7 +83,7 @@ public class GenjuOfTheSpires extends CardImpl {
return new GenjuOfTheSpires(this);
}
private static class SpiritToken extends Token {
private static class SpiritToken extends TokenImpl {
SpiritToken() {
super("Spirit", "6/1 red Spirit creature");
@ -92,5 +93,12 @@ public class GenjuOfTheSpires extends CardImpl {
power = new MageInt(6);
toughness = new MageInt(1);
}
public SpiritToken(final SpiritToken token) {
super(token);
}
public SpiritToken copy() {
return new SpiritToken(this);
}
}
}

View file

@ -41,6 +41,7 @@ import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Duration;
import mage.constants.Zone;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
/**
@ -69,7 +70,7 @@ public class GhituEncampment extends CardImpl {
}
}
class GhituEncampmentToken extends Token {
class GhituEncampmentToken extends TokenImpl {
public GhituEncampmentToken() {
super("Warrior", "2/1 red Warrior creature with first strike");
@ -82,4 +83,11 @@ class GhituEncampmentToken extends Token {
this.addAbility(FirstStrikeAbility.getInstance());
}
public GhituEncampmentToken(final GhituEncampmentToken token) {
super(token);
}
public GhituEncampmentToken copy() {
return new GhituEncampmentToken(this);
}
}

View file

@ -45,6 +45,7 @@ import mage.constants.SubType;
import mage.constants.SuperType;
import mage.constants.Zone;
import mage.filter.StaticFilters;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
import mage.game.permanent.token.ZombieToken;
import mage.target.common.TargetControlledCreaturePermanent;

View file

@ -45,6 +45,7 @@ import mage.constants.Duration;
import mage.constants.SuperType;
import mage.game.command.emblems.GideonAllyOfZendikarEmblem;
import mage.game.permanent.token.KnightAllyToken;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
/**
@ -84,7 +85,7 @@ public class GideonAllyOfZendikar extends CardImpl {
}
}
class GideonAllyOfZendikarToken extends Token {
class GideonAllyOfZendikarToken extends TokenImpl {
public GideonAllyOfZendikarToken() {
super("", "5/5 Human Soldier Ally creature with indestructible");
@ -97,4 +98,11 @@ class GideonAllyOfZendikarToken extends Token {
addAbility(IndestructibleAbility.getInstance());
}
public GideonAllyOfZendikarToken(final GideonAllyOfZendikarToken token) {
super(token);
}
public GideonAllyOfZendikarToken copy() {
return new GideonAllyOfZendikarToken(this);
}
}

View file

@ -52,6 +52,7 @@ import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.permanent.ControllerPredicate;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
import mage.target.common.TargetCreaturePermanent;
@ -113,7 +114,7 @@ public class GideonBattleForged extends CardImpl {
}
}
class GideonBattleForgedToken extends Token {
class GideonBattleForgedToken extends TokenImpl {
public GideonBattleForgedToken() {
super("", "4/4 Human Soldier creature with indestructible");
@ -124,7 +125,13 @@ class GideonBattleForgedToken extends Token {
toughness = new MageInt(4);
this.addAbility(IndestructibleAbility.getInstance());
}
public GideonBattleForgedToken(final GideonBattleForgedToken token) {
super(token);
}
public GideonBattleForgedToken copy() {
return new GideonBattleForgedToken(this);
}
}
class GideonBattleForgedAttacksIfAbleTargetEffect extends RequirementEffect {

View file

@ -51,6 +51,7 @@ import mage.counters.CounterType;
import mage.filter.common.FilterCreaturePermanent;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
import mage.target.common.TargetOpponent;
@ -122,7 +123,7 @@ class GideonExileAllOtherPermanentsEffect extends OneShotEffect {
}
}
class GideonChampionOfJusticeToken extends Token {
class GideonChampionOfJusticeToken extends TokenImpl {
public GideonChampionOfJusticeToken() {
super("", "indestructible Human Soldier creature with power and toughness each equal to the number of loyalty counters on him");
@ -135,5 +136,11 @@ class GideonChampionOfJusticeToken extends Token {
this.addAbility(IndestructibleAbility.getInstance());
}
public GideonChampionOfJusticeToken(final GideonChampionOfJusticeToken token) {
super(token);
}
public GideonChampionOfJusticeToken copy() {
return new GideonChampionOfJusticeToken(this);
}
}

View file

@ -49,6 +49,7 @@ import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.permanent.TappedPredicate;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
import mage.target.common.TargetCreaturePermanent;
import mage.target.common.TargetOpponent;
@ -101,7 +102,7 @@ public class GideonJura extends CardImpl {
}
class GideonJuraToken extends Token {
class GideonJuraToken extends TokenImpl {
public GideonJuraToken() {
super("", "6/6 Human Soldier creature");
@ -111,7 +112,13 @@ class GideonJuraToken extends Token {
power = new MageInt(6);
toughness = new MageInt(6);
}
public GideonJuraToken(final GideonJuraToken token) {
super(token);
}
public GideonJuraToken copy() {
return new GideonJuraToken(this);
}
}
class GideonJuraEffect extends RequirementEffect {

View file

@ -46,6 +46,7 @@ import mage.constants.Duration;
import mage.constants.SuperType;
import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.common.FilterOpponentsCreaturePermanent;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
/**
@ -95,7 +96,7 @@ public class GideonMartialParagon extends CardImpl {
}
}
class GideonMartialParagonToken extends Token {
class GideonMartialParagonToken extends TokenImpl {
public GideonMartialParagonToken() {
super("", "5/5 Human Soldier creature with indestructible");
@ -107,4 +108,11 @@ class GideonMartialParagonToken extends Token {
addAbility(IndestructibleAbility.getInstance());
}
public GideonMartialParagonToken(final GideonMartialParagonToken token) {
super(token);
}
public GideonMartialParagonToken copy() {
return new GideonMartialParagonToken(this);
}
}

View file

@ -44,6 +44,7 @@ import mage.constants.SubType;
import mage.constants.Duration;
import mage.constants.SuperType;
import mage.game.command.emblems.GideonOfTheTrialsEmblem;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
import mage.target.TargetPermanent;
@ -90,7 +91,7 @@ public class GideonOfTheTrials extends CardImpl {
}
}
class GideonOfTheTrialsToken extends Token {
class GideonOfTheTrialsToken extends TokenImpl {
public GideonOfTheTrialsToken() {
super("", "a 4/4 Human Soldier creature with indestructible");
@ -101,4 +102,11 @@ class GideonOfTheTrialsToken extends Token {
toughness = new MageInt(4);
this.addAbility(IndestructibleAbility.getInstance());
}
public GideonOfTheTrialsToken(final GideonOfTheTrialsToken token) {
super(token);
}
public GideonOfTheTrialsToken copy() {
return new GideonOfTheTrialsToken(this);
}
}

View file

@ -42,6 +42,7 @@ import mage.filter.FilterPermanent;
import mage.filter.common.FilterArtifactPermanent;
import mage.filter.predicate.permanent.AnotherPredicate;
import mage.filter.predicate.permanent.ControllerPredicate;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
/**
@ -78,7 +79,7 @@ public class GlintHawkIdol extends CardImpl {
}
class GlintHawkIdolToken extends Token {
class GlintHawkIdolToken extends TokenImpl {
GlintHawkIdolToken() {
super("", "2/2 Bird artifact creature with flying");
cardType.add(CardType.ARTIFACT);
@ -88,4 +89,11 @@ class GlintHawkIdolToken extends Token {
toughness = new MageInt(2);
addAbility(FlyingAbility.getInstance());
}
public GlintHawkIdolToken(final GlintHawkIdolToken token) {
super(token);
}
public GlintHawkIdolToken copy() {
return new GlintHawkIdolToken(this);
}
}

View file

@ -38,6 +38,7 @@ import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.game.Game;
import mage.game.permanent.token.SpyMasterGoblinToken;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
import mage.players.Player;

View file

@ -41,6 +41,7 @@ import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Duration;
import mage.constants.Zone;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
/**
@ -68,7 +69,7 @@ public class GolgariKeyrune extends CardImpl {
return new GolgariKeyrune(this);
}
private static class GolgariKeyruneToken extends Token {
private static class GolgariKeyruneToken extends TokenImpl {
GolgariKeyruneToken() {
super("", "2/2 black and green Insect artifact creature with deathtouch");
cardType.add(CardType.ARTIFACT);
@ -80,5 +81,12 @@ public class GolgariKeyrune extends CardImpl {
toughness = new MageInt(2);
this.addAbility(DeathtouchAbility.getInstance());
}
public GolgariKeyruneToken(final GolgariKeyruneToken token) {
super(token);
}
public GolgariKeyruneToken copy() {
return new GolgariKeyruneToken(this);
}
}
}

View file

@ -47,6 +47,7 @@ import mage.constants.Zone;
import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.predicate.Predicates;
import mage.filter.predicate.permanent.TappedPredicate;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
import mage.target.common.TargetControlledCreaturePermanent;
@ -84,7 +85,7 @@ public class GroveOfTheGuardian extends CardImpl {
return new GroveOfTheGuardian(this);
}
private static class ElementalToken extends Token {
private static class ElementalToken extends TokenImpl {
ElementalToken() {
super("Elemental", "8/8 green and white Elemental creature token with vigilance");
@ -97,5 +98,12 @@ public class GroveOfTheGuardian extends CardImpl {
toughness = new MageInt(8);
this.addAbility(VigilanceAbility.getInstance());
}
public ElementalToken(final ElementalToken token) {
super(token);
}
public ElementalToken copy() {
return new ElementalToken(this);
}
}
}

View file

@ -0,0 +1,60 @@
package mage.cards.g;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.AttacksAloneTriggeredAbility;
import mage.abilities.common.EntersBattlefieldAbility;
import mage.abilities.condition.common.KickedCondition;
import mage.abilities.decorator.ConditionalOneShotEffect;
import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount;
import mage.abilities.dynamicvalue.common.SourcePermanentToughnessValue;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.abilities.keyword.KickerAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.constants.SuperType;
import mage.counters.CounterType;
/**
* @author JRHerlehy
* Created on 4/5/18.
*/
public class GrunnTheLonelyKing extends CardImpl {
public GrunnTheLonelyKing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{G}{G}");
this.addSuperType(SuperType.LEGENDARY);
this.subtype.add(SubType.APE, SubType.WARRIOR);
this.power = new MageInt(5);
this.toughness = new MageInt(5);
//Kicker {3} (You may pay an additional {3} as you cast this spell.)
this.addAbility(new KickerAbility("{3}"));
//If Grunn, the Lonely King was kicked, it enters the battlefield with five +1/+1 counters on it.
this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new AddCountersSourceEffect(CounterType.P1P1.createInstance(5)), KickedCondition.instance)));
//Whenever Grunn attacks alone, double its power and toughness until end of turn.
SourcePermanentPowerCount power = new SourcePermanentPowerCount();
SourcePermanentToughnessValue toughness = new SourcePermanentToughnessValue();
Effect effect = new BoostSourceEffect(power, toughness, Duration.EndOfTurn, true);
effect.setText("double its power and toughness until end of turn");
this.addAbility(new AttacksAloneTriggeredAbility(effect));
}
public GrunnTheLonelyKing(final GrunnTheLonelyKing card) {
super(card);
}
@Override
public GrunnTheLonelyKing copy() {
return new GrunnTheLonelyKing(this);
}
}

View file

@ -41,6 +41,7 @@ import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Duration;
import mage.constants.Zone;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
/**
@ -69,7 +70,7 @@ public class GruulKeyrune extends CardImpl {
return new GruulKeyrune(this);
}
private static class GruulKeyruneToken extends Token {
private static class GruulKeyruneToken extends TokenImpl {
GruulKeyruneToken() {
super("Beast", "3/2 red and green Beast artifact creature with trample");
cardType.add(CardType.ARTIFACT);
@ -81,5 +82,13 @@ public class GruulKeyrune extends CardImpl {
toughness = new MageInt(2);
this.addAbility(TrampleAbility.getInstance());
}
public GruulKeyruneToken(final GruulKeyruneToken token) {
super(token);
}
public GruulKeyruneToken copy() {
return new GruulKeyruneToken(this);
}
}
}

View file

@ -42,6 +42,7 @@ import mage.constants.SubType;
import mage.constants.Duration;
import mage.constants.Zone;
import mage.filter.StaticFilters;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
/**
@ -69,7 +70,7 @@ public class GruulWarPlow extends CardImpl {
}
}
class GruulWarPlowToken extends Token {
class GruulWarPlowToken extends TokenImpl {
GruulWarPlowToken() {
super("Juggernaut", "4/4 Juggernaut artifact creature");
@ -79,4 +80,11 @@ class GruulWarPlowToken extends Token {
power = new MageInt(4);
toughness = new MageInt(4);
}
public GruulWarPlowToken(final GruulWarPlowToken token) {
super(token);
}
public GruulWarPlowToken copy() {
return new GruulWarPlowToken(this);
}
}

View file

@ -40,6 +40,7 @@ import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Duration;
import mage.constants.Zone;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
/**
@ -69,7 +70,7 @@ public class GuardianIdol extends CardImpl {
}
}
class GuardianIdolGolemToken extends Token {
class GuardianIdolGolemToken extends TokenImpl {
public GuardianIdolGolemToken() {
super("Golem", "2/2 Golem artifact creature token");
@ -79,4 +80,11 @@ class GuardianIdolGolemToken extends Token {
power = new MageInt(2);
toughness = new MageInt(2);
}
public GuardianIdolGolemToken(final GuardianIdolGolemToken token) {
super(token);
}
public GuardianIdolGolemToken copy() {
return new GuardianIdolGolemToken(this);
}
}

View file

@ -44,6 +44,7 @@ import mage.constants.SubType;
import mage.constants.Duration;
import mage.constants.Outcome;
import mage.constants.Zone;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
import mage.target.TargetPermanent;
import mage.target.common.TargetLandPermanent;
@ -86,7 +87,7 @@ public class GuardianZendikon extends CardImpl {
}
}
class WallToken extends Token {
class WallToken extends TokenImpl {
WallToken() {
super("", "2/6 white wall creature with defender");
@ -97,4 +98,11 @@ class WallToken extends Token {
toughness = new MageInt(6);
this.addAbility(DefenderAbility.getInstance());
}
public WallToken(final WallToken token) {
super(token);
}
public WallToken copy() {
return new WallToken(this);
}
}

View file

@ -39,6 +39,7 @@ import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Duration;
import mage.filter.StaticFilters;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
/**
@ -66,7 +67,7 @@ public class HalcyonGlaze extends CardImpl {
}
}
class HalcyonGlazeToken extends Token {
class HalcyonGlazeToken extends TokenImpl {
HalcyonGlazeToken() {
super("", "4/4 Illusion creature with flying");
@ -76,4 +77,11 @@ class HalcyonGlazeToken extends Token {
toughness = new MageInt(4);
this.addAbility(FlyingAbility.getInstance());
}
public HalcyonGlazeToken(final HalcyonGlazeToken token) {
super(token);
}
public HalcyonGlazeToken copy() {
return new HalcyonGlazeToken(this);
}
}

View file

@ -46,6 +46,7 @@ import mage.constants.Duration;
import mage.constants.Outcome;
import mage.constants.Zone;
import mage.filter.StaticFilters;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
/**
@ -82,7 +83,7 @@ public class HauntedPlateMail extends CardImpl {
}
}
class HauntedPlateMailToken extends Token {
class HauntedPlateMailToken extends TokenImpl {
public HauntedPlateMailToken() {
super("Spirit", "4/4 Spirit artifact creature that's no longer an Equipment");
@ -92,4 +93,11 @@ class HauntedPlateMailToken extends Token {
power = new MageInt(4);
toughness = new MageInt(4);
}
public HauntedPlateMailToken(final HauntedPlateMailToken token) {
super(token);
}
public HauntedPlateMailToken copy() {
return new HauntedPlateMailToken(this);
}
}

View file

@ -41,6 +41,7 @@ import mage.constants.Duration;
import mage.filter.FilterSpell;
import mage.filter.StaticFilters;
import mage.filter.predicate.mageobject.CardTypePredicate;
import mage.game.permanent.token.TokenImpl;
import mage.game.permanent.token.Token;
import java.util.UUID;
@ -78,7 +79,7 @@ public class HiddenAncients extends CardImpl {
}
}
class HiddenAncientsTreefolk extends Token {
class HiddenAncientsTreefolk extends TokenImpl {
public HiddenAncientsTreefolk() {
super("Treefolk", "5/5 Treefolk creature");
@ -87,4 +88,11 @@ class HiddenAncientsTreefolk extends Token {
power = new MageInt(5);
toughness = new MageInt(5);
}
public HiddenAncientsTreefolk(final HiddenAncientsTreefolk token) {
super(token);
}
public HiddenAncientsTreefolk copy() {
return new HiddenAncientsTreefolk(this);
}
}

Some files were not shown because too many files have changed in this diff Show more