[WHO] Implement Fugitive of the Judoon (#13467)

This commit is contained in:
padfoothelix 2025-04-05 20:10:45 +02:00 committed by GitHub
parent 508c534884
commit eac265f4f7
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 157 additions and 4 deletions

View file

@ -2183,6 +2183,7 @@ public class ScryfallImageSupportTokens {
// WHO
put("WHO/Alien", "https://api.scryfall.com/cards/twho/2?format=image");
put("WHO/Alien Insect", "https://api.scryfall.com/cards/twho/19/en?format=image");
put("WHO/Alien Rhino", "https://api.scryfall.com/cards/twho/3/en?format=image");
put("WHO/Alien Salamander", "https://api.scryfall.com/cards/twho/16?format=image");
put("WHO/Alien Warrior", "https://api.scryfall.com/cards/twho/14?format=image");
put("WHO/Beast", "https://api.scryfall.com/cards/twho/17?format=image");
@ -2196,7 +2197,8 @@ public class ScryfallImageSupportTokens {
put("WHO/Food/2", "https://api.scryfall.com/cards/twho/26?format=image");
put("WHO/Food/3", "https://api.scryfall.com/cards/twho/27?format=image");
put("WHO/Horse", "https://api.scryfall.com/cards/twho/4/en?format=image");
put("WHO/Human", "https://api.scryfall.com/cards/twho/5?format=image");
put("WHO/Human/1", "https://api.scryfall.com/cards/twho/6/en?format=image");
put("WHO/Human/2", "https://api.scryfall.com/cards/twho/5/en?format=image");
put("WHO/Human Noble", "https://api.scryfall.com/cards/twho/7/en?format=image");
put("WHO/Mark of the Rani", "https://api.scryfall.com/cards/twho/15?format=image");
put("WHO/Soldier", "https://api.scryfall.com/cards/twho/8?format=image");

View file

@ -0,0 +1,82 @@
package mage.cards.f;
import java.util.UUID;
import mage.abilities.common.SagaAbility;
import mage.abilities.costs.CompositeCost;
import mage.abilities.costs.common.ExileTargetCost;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.DoIfCostPaid;
import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect;
import mage.abilities.effects.keyword.InvestigateEffect;
import mage.constants.SubType;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SagaChapter;
import mage.filter.FilterCard;
import mage.filter.common.FilterControlledArtifactPermanent;
import mage.filter.common.FilterControlledPermanent;
import mage.game.permanent.token.AlienRhinoToken;
import mage.game.permanent.token.Human11WithWard2Token;
import mage.target.common.TargetCardInLibrary;
import mage.target.common.TargetControlledPermanent;
/**
*
* @author padfoothelix
*/
public final class FugitiveOfTheJudoon extends CardImpl {
private static final FilterCard filter = new FilterCard("a Doctor card");
private static final FilterControlledPermanent filterHuman = new FilterControlledPermanent(SubType.HUMAN,"a Human you control");
private static final FilterControlledArtifactPermanent filterArtifact = new FilterControlledArtifactPermanent("an artifact you control");
static {
filter.add(SubType.DOCTOR.getPredicate());
}
public FugitiveOfTheJudoon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{4}{G}");
this.subtype.add(SubType.SAGA);
// (As this Saga enters and after your draw step, add a lore counter. Sacrifice after III.)
SagaAbility sagaAbility = new SagaAbility(this);
// I -- Create a 1/1 white Human creature token with ward {2} and a 4/4 white Alien Rhino creature token.
sagaAbility.addChapterEffect(
this, SagaChapter.CHAPTER_I,
new CreateTokenEffect(new Human11WithWard2Token()).withAdditionalTokens(new AlienRhinoToken())
);
// II -- Investigate.
sagaAbility.addChapterEffect(this, SagaChapter.CHAPTER_II, new InvestigateEffect());
// III -- You may exile a Human you control and an artifact you control. If you do, search your library for a Doctor card, put it onto the battlefield, then shuffle.
sagaAbility.addChapterEffect(
this, SagaChapter.CHAPTER_III,
new DoIfCostPaid(
new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(filter)),
new CompositeCost(
new ExileTargetCost(new TargetControlledPermanent(1, 1, filterHuman, true)),
new ExileTargetCost(new TargetControlledPermanent(1, 1, filterArtifact, true)),
"exile a Human you control and an artifact you control"
),
"Exile a Human and an artifact ?"
)
);
this.addAbility(sagaAbility);
}
private FugitiveOfTheJudoon(final FugitiveOfTheJudoon card) {
super(card);
}
@Override
public FugitiveOfTheJudoon copy() {
return new FugitiveOfTheJudoon(this);
}
}

View file

@ -376,8 +376,8 @@ public final class DoctorWho extends ExpansionSet {
cards.add(new SetCardInfo("Frostboil Snarl", 282, Rarity.RARE, mage.cards.f.FrostboilSnarl.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Frostboil Snarl", 498, Rarity.RARE, mage.cards.f.FrostboilSnarl.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Frostboil Snarl", 873, Rarity.RARE, mage.cards.f.FrostboilSnarl.class, NON_FULL_USE_VARIOUS));
//cards.add(new SetCardInfo("Fugitive of the Judoon", 103, Rarity.RARE, mage.cards.f.FugitiveOfTheJudoon.class, NON_FULL_USE_VARIOUS));
//cards.add(new SetCardInfo("Fugitive of the Judoon", 708, Rarity.RARE, mage.cards.f.FugitiveOfTheJudoon.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Fugitive of the Judoon", 103, Rarity.RARE, mage.cards.f.FugitiveOfTheJudoon.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Fugitive of the Judoon", 708, Rarity.RARE, mage.cards.f.FugitiveOfTheJudoon.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Furycalm Snarl", 1090, Rarity.RARE, mage.cards.f.FurycalmSnarl.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Furycalm Snarl", 283, Rarity.RARE, mage.cards.f.FurycalmSnarl.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Furycalm Snarl", 499, Rarity.RARE, mage.cards.f.FurycalmSnarl.class, NON_FULL_USE_VARIOUS));

View file

@ -0,0 +1,34 @@
package mage.game.permanent.token;
import mage.MageInt;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.PreventDamageToSourceEffect;
import mage.abilities.keyword.VanishingAbility;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Duration;
/**
* @author padfoothelix
*/
public final class AlienRhinoToken extends TokenImpl {
public AlienRhinoToken() {
super("Alien Rhino Token", "4/4 white Alien Rhino creature token");
cardType.add(CardType.CREATURE);
color.setWhite(true);
subtype.add(SubType.ALIEN);
subtype.add(SubType.RHINO);
power = new MageInt(4);
toughness = new MageInt(4);
}
private AlienRhinoToken(final AlienRhinoToken token) {
super(token);
}
@Override
public AlienRhinoToken copy() {
return new AlienRhinoToken(this);
}
}

View file

@ -0,0 +1,33 @@
package mage.game.permanent.token;
import mage.MageInt;
import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.keyword.WardAbility;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Duration;
/**
* @author padfoothelix
*/
public final class Human11WithWard2Token extends TokenImpl {
public Human11WithWard2Token() {
super("Human Token", "1/1 white Human creature token with ward {2}");
cardType.add(CardType.CREATURE);
color.setWhite(true);
subtype.add(SubType.HUMAN);
power = new MageInt(1);
toughness = new MageInt(1);
this.addAbility(new WardAbility(new GenericManaCost(2)));
}
private Human11WithWard2Token(final Human11WithWard2Token token) {
super(token);
}
@Override
public Human11WithWard2Token copy() {
return new Human11WithWard2Token(this);
}
}

View file

@ -2235,6 +2235,7 @@
# WHO
|Generate|TOK:WHO|Alien|||AlienToken|
|Generate|TOK:WHO|Alien Insect|||AlienInsectToken|
|Generate|TOK:WHO|Alien Rhino|||AlienRhinoToken|
|Generate|TOK:WHO|Alien Salamander|||AlienSalamanderToken|
|Generate|TOK:WHO|Alien Warrior|||AlienWarriorToken|
|Generate|TOK:WHO|Beast|||BeastToken|
@ -2248,7 +2249,8 @@
|Generate|TOK:WHO|Food|2||FoodToken|
|Generate|TOK:WHO|Food|3||FoodToken|
|Generate|TOK:WHO|Horse|||TheGirlInTheFireplaceHorseToken|
|Generate|TOK:WHO|Human|||TheEleventhHourToken|
|Generate|TOK:WHO|Human|1||Human11WithWard2Token|
|Generate|TOK:WHO|Human|2||TheEleventhHourToken|
|Generate|TOK:WHO|Human Noble|||TheGirlInTheFireplaceHumanNobleToken|
|Generate|TOK:WHO|Mark of the Rani|||MarkOfTheRaniToken|
|Generate|TOK:WHO|Soldier|||SoldierToken|