diff --git a/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/ScryfallImageSupportTokens.java b/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/ScryfallImageSupportTokens.java index dbb74efb0ff..2ee0378224a 100644 --- a/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/ScryfallImageSupportTokens.java +++ b/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/ScryfallImageSupportTokens.java @@ -2693,9 +2693,10 @@ public class ScryfallImageSupportTokens { put("TDM/Reliquary Dragon", "https://api.scryfall.com/cards/ttdm/15/en?format=image"); put("TDM/Soldier/1", "https://api.scryfall.com/cards/ttdm/4/en?format=image"); put("TDM/Soldier/2", "https://api.scryfall.com/cards/ttdm/5/en?format=image"); - put("TDM/Spirit/1", "https://api.scryfall.com/cards/ttdm/9/en?format=image"); - put("TDM/Spirit/2", "https://api.scryfall.com/cards/ttdm/6/en?format=image"); - // TODO: 2/2 and 3/3 Spirit tokens (no relevant cards revealed, token not implemented) + put("TDM/Spirit/1", "https://api.scryfall.com/cards/ttdm/9/en?format=image"); // */* + put("TDM/Spirit/2", "https://api.scryfall.com/cards/ttdm/6/en?format=image"); // 1/1 + put("TDM/Spirit/3", "https://api.scryfall.com/cards/ttdm/7/en?format=image"); // 2/2 + put("TDM/Spirit/4", "https://api.scryfall.com/cards/ttdm/8/en?format=image"); // 3/3 put("TDM/Treasure", "https://api.scryfall.com/cards/ttdm/16/en?format=image"); put("TDM/Warrior", "https://api.scryfall.com/cards/ttdm/13/en?format=image"); put("TDM/Zombie Druid", "https://api.scryfall.com/cards/ttdm/10/en?format=image"); diff --git a/Mage.Sets/src/mage/cards/g/GreatArashinCity.java b/Mage.Sets/src/mage/cards/g/GreatArashinCity.java index ce375db023c..4d2d907abc2 100644 --- a/Mage.Sets/src/mage/cards/g/GreatArashinCity.java +++ b/Mage.Sets/src/mage/cards/g/GreatArashinCity.java @@ -16,7 +16,7 @@ import mage.constants.SubType; import mage.filter.FilterPermanent; import mage.filter.StaticFilters; import mage.filter.predicate.Predicates; -import mage.game.permanent.token.NoFlyingSpiritWhiteToken; +import mage.game.permanent.token.NoFlyingSpiritWhite11Token; import mage.target.common.TargetCardInYourGraveyard; import java.util.UUID; @@ -47,7 +47,7 @@ public final class GreatArashinCity extends CardImpl { this.addAbility(new BlackManaAbility()); // {1}{B}, {T}, Exile a creature card from your graveyard: Create a 1/1 white Spirit creature token. - Ability ability = new SimpleActivatedAbility(new CreateTokenEffect(new NoFlyingSpiritWhiteToken()), new ManaCostsImpl<>("{1}{B}")); + Ability ability = new SimpleActivatedAbility(new CreateTokenEffect(new NoFlyingSpiritWhite11Token()), new ManaCostsImpl<>("{1}{B}")); ability.addCost(new TapSourceCost()); ability.addCost(new ExileFromGraveCost(new TargetCardInYourGraveyard(StaticFilters.FILTER_CARD_CREATURE)).withSourceExileZone(false)); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/o/OyobiWhoSplitTheHeavens.java b/Mage.Sets/src/mage/cards/o/OyobiWhoSplitTheHeavens.java index 2840bfb6b6f..ac815edef7f 100644 --- a/Mage.Sets/src/mage/cards/o/OyobiWhoSplitTheHeavens.java +++ b/Mage.Sets/src/mage/cards/o/OyobiWhoSplitTheHeavens.java @@ -12,7 +12,7 @@ import mage.constants.CardType; import mage.constants.SubType; import mage.constants.SuperType; import mage.filter.StaticFilters; -import mage.game.permanent.token.AnotherSpiritToken; +import mage.game.permanent.token.Spirit33Token; /** * @author Loki @@ -29,7 +29,7 @@ public final class OyobiWhoSplitTheHeavens extends CardImpl { this.addAbility(FlyingAbility.getInstance()); // Whenever you cast a Spirit or Arcane spell, create a 3/3 white Spirit creature token with flying. - this.addAbility(new SpellCastControllerTriggeredAbility(new CreateTokenEffect(new AnotherSpiritToken()), StaticFilters.FILTER_SPELL_SPIRIT_OR_ARCANE, false)); + this.addAbility(new SpellCastControllerTriggeredAbility(new CreateTokenEffect(new Spirit33Token()), StaticFilters.FILTER_SPELL_SPIRIT_OR_ARCANE, false)); } private OyobiWhoSplitTheHeavens(final OyobiWhoSplitTheHeavens card) { diff --git a/Mage.Sets/src/mage/cards/r/RevivalOfTheAncestors.java b/Mage.Sets/src/mage/cards/r/RevivalOfTheAncestors.java index a706d550cb4..e1878990c11 100644 --- a/Mage.Sets/src/mage/cards/r/RevivalOfTheAncestors.java +++ b/Mage.Sets/src/mage/cards/r/RevivalOfTheAncestors.java @@ -14,7 +14,7 @@ import mage.constants.SagaChapter; import mage.constants.SubType; import mage.counters.CounterType; import mage.filter.StaticFilters; -import mage.game.permanent.token.NoFlyingSpiritWhiteToken; +import mage.game.permanent.token.NoFlyingSpiritWhite11Token; import mage.target.common.TargetPermanentAmount; import java.util.UUID; @@ -35,7 +35,7 @@ public final class RevivalOfTheAncestors extends CardImpl { // I -- Create three 1/1 white Spirit creature tokens. sagaAbility.addChapterEffect( this, SagaChapter.CHAPTER_I, - new CreateTokenEffect(new NoFlyingSpiritWhiteToken(), 3) + new CreateTokenEffect(new NoFlyingSpiritWhite11Token(), 3) ); // II -- Distribute three +1/+1 counters among one, two, or three target creatures you control. diff --git a/Mage/src/main/java/mage/abilities/effects/keyword/EndureSourceEffect.java b/Mage/src/main/java/mage/abilities/effects/keyword/EndureSourceEffect.java index a9f23f7bcea..ced9d0f8ad1 100644 --- a/Mage/src/main/java/mage/abilities/effects/keyword/EndureSourceEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/keyword/EndureSourceEffect.java @@ -9,6 +9,9 @@ import mage.counters.CounterType; import mage.game.Game; import mage.game.permanent.Permanent; import mage.game.permanent.token.SpiritXXToken; +import mage.game.permanent.token.NoFlyingSpiritWhite11Token; +import mage.game.permanent.token.NoFlyingSpiritWhite22Token; +import mage.game.permanent.token.NoFlyingSpiritWhite33Token; import mage.players.Player; import mage.util.CardUtil; @@ -69,6 +72,16 @@ public class EndureSourceEffect extends OneShotEffect { )) { return permanent.addCounters(CounterType.P1P1.createInstance(amount), source, game); } - return new SpiritXXToken(amount).putOntoBattlefield(1, game, source); + + switch (amount) { + case 1: + return new NoFlyingSpiritWhite11Token().putOntoBattlefield(1, game, source); + case 2: + return new NoFlyingSpiritWhite22Token().putOntoBattlefield(1, game, source); + case 3: + return new NoFlyingSpiritWhite33Token().putOntoBattlefield(1, game, source); + default: + return new SpiritXXToken(amount).putOntoBattlefield(1, game, source); + } } } diff --git a/Mage/src/main/java/mage/game/permanent/token/NoFlyingSpiritWhiteToken.java b/Mage/src/main/java/mage/game/permanent/token/NoFlyingSpiritWhite11Token.java similarity index 61% rename from Mage/src/main/java/mage/game/permanent/token/NoFlyingSpiritWhiteToken.java rename to Mage/src/main/java/mage/game/permanent/token/NoFlyingSpiritWhite11Token.java index 60e7644cc70..d3ce046193e 100644 --- a/Mage/src/main/java/mage/game/permanent/token/NoFlyingSpiritWhiteToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/NoFlyingSpiritWhite11Token.java @@ -7,9 +7,9 @@ import mage.constants.SubType; /** * @author PurpleCrowbar */ -public final class NoFlyingSpiritWhiteToken extends TokenImpl { +public final class NoFlyingSpiritWhite11Token extends TokenImpl { - public NoFlyingSpiritWhiteToken() { + public NoFlyingSpiritWhite11Token() { super("Spirit Token", "1/1 white Spirit creature token"); cardType.add(CardType.CREATURE); subtype.add(SubType.SPIRIT); @@ -18,12 +18,12 @@ public final class NoFlyingSpiritWhiteToken extends TokenImpl { toughness = new MageInt(1); } - private NoFlyingSpiritWhiteToken(final NoFlyingSpiritWhiteToken token) { + private NoFlyingSpiritWhite11Token(final NoFlyingSpiritWhite11Token token) { super(token); } @Override - public NoFlyingSpiritWhiteToken copy() { - return new NoFlyingSpiritWhiteToken(this); + public NoFlyingSpiritWhite11Token copy() { + return new NoFlyingSpiritWhite11Token(this); } } diff --git a/Mage/src/main/java/mage/game/permanent/token/NoFlyingSpiritWhite22Token.java b/Mage/src/main/java/mage/game/permanent/token/NoFlyingSpiritWhite22Token.java new file mode 100644 index 00000000000..fdb77e4aabc --- /dev/null +++ b/Mage/src/main/java/mage/game/permanent/token/NoFlyingSpiritWhite22Token.java @@ -0,0 +1,29 @@ +package mage.game.permanent.token; + +import mage.MageInt; +import mage.constants.CardType; +import mage.constants.SubType; + +/** + * @author muz + */ +public final class NoFlyingSpiritWhite22Token extends TokenImpl { + + public NoFlyingSpiritWhite22Token() { + super("Spirit Token", "2/2 white Spirit creature token"); + cardType.add(CardType.CREATURE); + subtype.add(SubType.SPIRIT); + color.setWhite(true); + power = new MageInt(2); + toughness = new MageInt(2); + } + + private NoFlyingSpiritWhite22Token(final NoFlyingSpiritWhite22Token token) { + super(token); + } + + @Override + public NoFlyingSpiritWhite22Token copy() { + return new NoFlyingSpiritWhite22Token(this); + } +} diff --git a/Mage/src/main/java/mage/game/permanent/token/NoFlyingSpiritWhite33Token.java b/Mage/src/main/java/mage/game/permanent/token/NoFlyingSpiritWhite33Token.java new file mode 100644 index 00000000000..7af8197fedb --- /dev/null +++ b/Mage/src/main/java/mage/game/permanent/token/NoFlyingSpiritWhite33Token.java @@ -0,0 +1,29 @@ +package mage.game.permanent.token; + +import mage.MageInt; +import mage.constants.CardType; +import mage.constants.SubType; + +/** + * @author muz + */ +public final class NoFlyingSpiritWhite33Token extends TokenImpl { + + public NoFlyingSpiritWhite33Token() { + super("Spirit Token", "3/3 white Spirit creature token"); + cardType.add(CardType.CREATURE); + subtype.add(SubType.SPIRIT); + color.setWhite(true); + power = new MageInt(3); + toughness = new MageInt(3); + } + + private NoFlyingSpiritWhite33Token(final NoFlyingSpiritWhite33Token token) { + super(token); + } + + @Override + public NoFlyingSpiritWhite33Token copy() { + return new NoFlyingSpiritWhite33Token(this); + } +} diff --git a/Mage/src/main/java/mage/game/permanent/token/AnotherSpiritToken.java b/Mage/src/main/java/mage/game/permanent/token/Spirit33Token.java similarity index 69% rename from Mage/src/main/java/mage/game/permanent/token/AnotherSpiritToken.java rename to Mage/src/main/java/mage/game/permanent/token/Spirit33Token.java index 85e933474ac..5421b4981c0 100644 --- a/Mage/src/main/java/mage/game/permanent/token/AnotherSpiritToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/Spirit33Token.java @@ -8,9 +8,9 @@ import mage.constants.SubType; /** * @author spjspj */ -public final class AnotherSpiritToken extends TokenImpl { +public final class Spirit33Token extends TokenImpl { - public AnotherSpiritToken() { + public Spirit33Token() { super("Spirit Token", "3/3 white Spirit creature token with flying"); cardType.add(CardType.CREATURE); color.setWhite(true); @@ -21,11 +21,11 @@ public final class AnotherSpiritToken extends TokenImpl { this.addAbility(FlyingAbility.getInstance()); } - private AnotherSpiritToken(final AnotherSpiritToken token) { + private Spirit33Token(final Spirit33Token token) { super(token); } - public AnotherSpiritToken copy() { - return new AnotherSpiritToken(this); + public Spirit33Token copy() { + return new Spirit33Token(this); } } diff --git a/Mage/src/main/resources/tokens-database.txt b/Mage/src/main/resources/tokens-database.txt index 71f5050b173..083455e8c11 100644 --- a/Mage/src/main/resources/tokens-database.txt +++ b/Mage/src/main/resources/tokens-database.txt @@ -1439,7 +1439,7 @@ |Generate|TOK:VOC|Bat|||BatToken| |Generate|TOK:VOC|Clue|||ClueArtifactToken| |Generate|TOK:VOC|Spirit|1||SpiritToken| -|Generate|TOK:VOC|Spirit|2||AnotherSpiritToken| +|Generate|TOK:VOC|Spirit|2||Spirit33Token| |Generate|TOK:VOC|Thopter|||ThopterColorlessToken| # VOW @@ -2732,9 +2732,9 @@ |Generate|TOK:TDM|Soldier|1||SoldierToken| |Generate|TOK:TDM|Soldier|2||Soldier22Token| |Generate|TOK:TDM|Spirit|1||SpiritXXToken| -|Generate|TOK:TDM|Spirit|2||NoFlyingSpiritWhiteToken| -# TODO: 2/2 Spirit (no relevant cards revealed, token not implemented) -# TODO: 3/3 Spirit (no relevant cards revealed, token not implemented) +|Generate|TOK:TDM|Spirit|2||NoFlyingSpiritWhite11Token| +|Generate|TOK:TDM|Spirit|3||NoFlyingSpiritWhite22Token| +|Generate|TOK:TDM|Spirit|4||NoFlyingSpiritWhite33Token| |Generate|TOK:TDM|Treasure|||TreasureToken| |Generate|TOK:TDM|Warrior|||RedWarriorToken| |Generate|TOK:TDM|Zombie Druid|||ZombieDruidToken|