Rename Universes Within cards

Update test referencing Forge, Neverwinter Charlatan

[STX] Implement Bohn, Beguiling Balladeer

[STX] Implement Casal, Lurkwood Pathfinder

[STX] Implement Themberchaud

[STX] Implement Jurin, Leading the Charge

[STX] Implement Evin, Waterdeep Opportunist

[STX] Implement Mathise, Surge Channeler

[STX] Implement Rashel, Fist of Torm
This commit is contained in:
jmlundeen 2025-04-14 16:25:53 -05:00
parent 74d2265c12
commit b32fd1b9d7
10 changed files with 66 additions and 61 deletions

View file

@ -1,4 +1,4 @@
package mage.cards.e; package mage.cards.b;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
@ -22,9 +22,9 @@ import java.util.UUID;
/** /**
* @author TheElk801, jeffwadsworth * @author TheElk801, jeffwadsworth
*/ */
public final class EdginLarcenousLutenist extends CardImpl { public final class BohnBeguilingBalladeer extends CardImpl {
public EdginLarcenousLutenist(UUID ownerId, CardSetInfo setInfo) { public BohnBeguilingBalladeer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}{R}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}{R}");
this.supertype.add(SuperType.LEGENDARY); this.supertype.add(SuperType.LEGENDARY);
@ -42,13 +42,13 @@ public final class EdginLarcenousLutenist extends CardImpl {
this.addAbility(ability); this.addAbility(ability);
} }
private EdginLarcenousLutenist(final EdginLarcenousLutenist card) { private BohnBeguilingBalladeer(final BohnBeguilingBalladeer card) {
super(card); super(card);
} }
@Override @Override
public EdginLarcenousLutenist copy() { public BohnBeguilingBalladeer copy() {
return new EdginLarcenousLutenist(this); return new BohnBeguilingBalladeer(this);
} }
} }

View file

@ -1,4 +1,4 @@
package mage.cards.d; package mage.cards.c;
import mage.MageInt; import mage.MageInt;
import mage.abilities.common.AttacksTriggeredAbility; import mage.abilities.common.AttacksTriggeredAbility;
@ -22,7 +22,7 @@ import java.util.UUID;
/** /**
* @author TheElk801 * @author TheElk801
*/ */
public final class DoricNaturesWarden extends CardImpl { public final class CasalLurkwoodPathfinder extends CardImpl {
private static final FilterLandCard filter = new FilterLandCard("Forest card"); private static final FilterLandCard filter = new FilterLandCard("Forest card");
@ -30,7 +30,7 @@ public final class DoricNaturesWarden extends CardImpl {
filter.add(SubType.FOREST.getPredicate()); filter.add(SubType.FOREST.getPredicate());
} }
public DoricNaturesWarden(UUID ownerId, CardSetInfo setInfo) { public CasalLurkwoodPathfinder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}");
this.supertype.add(SuperType.LEGENDARY); this.supertype.add(SuperType.LEGENDARY);
@ -38,7 +38,7 @@ public final class DoricNaturesWarden extends CardImpl {
this.subtype.add(SubType.DRUID); this.subtype.add(SubType.DRUID);
this.power = new MageInt(3); this.power = new MageInt(3);
this.toughness = new MageInt(3); this.toughness = new MageInt(3);
this.secondSideCardClazz = mage.cards.d.DoricOwlbearAvenger.class; this.secondSideCardClazz = CasalPathbreakerOwlbear.class;
// Vigilance // Vigilance
this.addAbility(VigilanceAbility.getInstance()); this.addAbility(VigilanceAbility.getInstance());
@ -55,12 +55,12 @@ public final class DoricNaturesWarden extends CardImpl {
))); )));
} }
private DoricNaturesWarden(final DoricNaturesWarden card) { private CasalLurkwoodPathfinder(final CasalLurkwoodPathfinder card) {
super(card); super(card);
} }
@Override @Override
public DoricNaturesWarden copy() { public CasalLurkwoodPathfinder copy() {
return new DoricNaturesWarden(this); return new CasalLurkwoodPathfinder(this);
} }
} }

View file

@ -1,4 +1,4 @@
package mage.cards.d; package mage.cards.c;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
@ -19,7 +19,7 @@ import java.util.UUID;
/** /**
* @author TheElk801 * @author TheElk801
*/ */
public final class DoricOwlbearAvenger extends CardImpl { public final class CasalPathbreakerOwlbear extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent(); private static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
@ -27,7 +27,7 @@ public final class DoricOwlbearAvenger extends CardImpl {
filter.add(SuperType.LEGENDARY.getPredicate()); filter.add(SuperType.LEGENDARY.getPredicate());
} }
public DoricOwlbearAvenger(UUID ownerId, CardSetInfo setInfo) { public CasalPathbreakerOwlbear(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, ""); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
this.supertype.add(SuperType.LEGENDARY); this.supertype.add(SuperType.LEGENDARY);
@ -57,12 +57,12 @@ public final class DoricOwlbearAvenger extends CardImpl {
this.addAbility(new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect())); this.addAbility(new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect()));
} }
private DoricOwlbearAvenger(final DoricOwlbearAvenger card) { private CasalPathbreakerOwlbear(final CasalPathbreakerOwlbear card) {
super(card); super(card);
} }
@Override @Override
public DoricOwlbearAvenger copy() { public CasalPathbreakerOwlbear copy() {
return new DoricOwlbearAvenger(this); return new CasalPathbreakerOwlbear(this);
} }
} }

View file

@ -1,4 +1,4 @@
package mage.cards.f; package mage.cards.e;
import mage.MageInt; import mage.MageInt;
import mage.abilities.common.SacrificeOneOrMorePermanentsTriggeredAbility; import mage.abilities.common.SacrificeOneOrMorePermanentsTriggeredAbility;
@ -26,13 +26,13 @@ import java.util.UUID;
/** /**
* @author TheElk801 * @author TheElk801
*/ */
public final class ForgeNeverwinterCharlatan extends CardImpl { public final class EvinWaterdeepOpportunist extends CardImpl {
private static final DynamicValue xValue = new PermanentsOnBattlefieldCount(new FilterControlledPermanent(SubType.TREASURE)); private static final DynamicValue xValue = new PermanentsOnBattlefieldCount(new FilterControlledPermanent(SubType.TREASURE));
private static final DynamicValue twiceXValue = new MultipliedValue(xValue, 2); private static final DynamicValue twiceXValue = new MultipliedValue(xValue, 2);
private static final Hint hint = new ValueHint("Treasures you control", xValue); private static final Hint hint = new ValueHint("Treasures you control", xValue);
public ForgeNeverwinterCharlatan(UUID ownerId, CardSetInfo setInfo) { public EvinWaterdeepOpportunist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}");
this.supertype.add(SuperType.LEGENDARY); this.supertype.add(SuperType.LEGENDARY);
@ -60,12 +60,12 @@ public final class ForgeNeverwinterCharlatan extends CardImpl {
).setTriggersLimitEachTurn(1)); ).setTriggersLimitEachTurn(1));
} }
private ForgeNeverwinterCharlatan(final ForgeNeverwinterCharlatan card) { private EvinWaterdeepOpportunist(final EvinWaterdeepOpportunist card) {
super(card); super(card);
} }
@Override @Override
public ForgeNeverwinterCharlatan copy() { public EvinWaterdeepOpportunist copy() {
return new ForgeNeverwinterCharlatan(this); return new EvinWaterdeepOpportunist(this);
} }
} }

View file

@ -1,4 +1,4 @@
package mage.cards.h; package mage.cards.j;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
@ -24,9 +24,9 @@ import java.util.UUID;
/** /**
* @author TheElk801 * @author TheElk801
*/ */
public final class HolgaRelentlessRager extends CardImpl { public final class JurinLeadingTheCharge extends CardImpl {
public HolgaRelentlessRager(UUID ownerId, CardSetInfo setInfo) { public JurinLeadingTheCharge(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{R}{R}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{R}{R}");
this.supertype.add(SuperType.LEGENDARY); this.supertype.add(SuperType.LEGENDARY);
@ -45,13 +45,13 @@ public final class HolgaRelentlessRager extends CardImpl {
this.addAbility(new AttacksTriggeredAbility(new HolgaRelentlessRagerEffect())); this.addAbility(new AttacksTriggeredAbility(new HolgaRelentlessRagerEffect()));
} }
private HolgaRelentlessRager(final HolgaRelentlessRager card) { private JurinLeadingTheCharge(final JurinLeadingTheCharge card) {
super(card); super(card);
} }
@Override @Override
public HolgaRelentlessRager copy() { public JurinLeadingTheCharge copy() {
return new HolgaRelentlessRager(this); return new JurinLeadingTheCharge(this);
} }
} }

View file

@ -1,4 +1,4 @@
package mage.cards.s; package mage.cards.m;
import mage.MageInt; import mage.MageInt;
import mage.abilities.common.SpellCastControllerTriggeredAbility; import mage.abilities.common.SpellCastControllerTriggeredAbility;
@ -8,10 +8,7 @@ import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.effects.common.RollDieWithResultTableEffect; import mage.abilities.effects.common.RollDieWithResultTableEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.*;
import mage.constants.ComparisonType;
import mage.constants.SubType;
import mage.constants.SuperType;
import mage.filter.FilterSpell; import mage.filter.FilterSpell;
import mage.filter.common.FilterInstantOrSorcerySpell; import mage.filter.common.FilterInstantOrSorcerySpell;
import mage.filter.predicate.mageobject.ManaValuePredicate; import mage.filter.predicate.mageobject.ManaValuePredicate;
@ -21,7 +18,7 @@ import java.util.UUID;
/** /**
* @author TheElk801 * @author TheElk801
*/ */
public final class SimonWildMagicSorcerer extends CardImpl { public final class MathiseSurgeChanneler extends CardImpl {
private static final FilterSpell filter = new FilterInstantOrSorcerySpell("an instant or sorcery spell with mana value 3 or greater"); private static final FilterSpell filter = new FilterInstantOrSorcerySpell("an instant or sorcery spell with mana value 3 or greater");
@ -29,7 +26,7 @@ public final class SimonWildMagicSorcerer extends CardImpl {
filter.add(new ManaValuePredicate(ComparisonType.MORE_THAN, 2)); filter.add(new ManaValuePredicate(ComparisonType.MORE_THAN, 2));
} }
public SimonWildMagicSorcerer(UUID ownerId, CardSetInfo setInfo) { public MathiseSurgeChanneler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}");
this.supertype.add(SuperType.LEGENDARY); this.supertype.add(SuperType.LEGENDARY);
@ -41,7 +38,7 @@ public final class SimonWildMagicSorcerer extends CardImpl {
// Whenever you cast an instant or sorcery spell with mana value 3 or greater, roll a d20. // Whenever you cast an instant or sorcery spell with mana value 3 or greater, roll a d20.
RollDieWithResultTableEffect effect = new RollDieWithResultTableEffect(20); RollDieWithResultTableEffect effect = new RollDieWithResultTableEffect(20);
this.addAbility(new SpellCastControllerTriggeredAbility(effect, filter, false)); this.addAbility(new SpellCastControllerTriggeredAbility(effect, filter, false, SetTargetPointer.SPELL));
// 1-9 | Each player draws a card. // 1-9 | Each player draws a card.
effect.addTableEntry(1, 9, new DrawCardAllEffect(1)); effect.addTableEntry(1, 9, new DrawCardAllEffect(1));
@ -50,15 +47,15 @@ public final class SimonWildMagicSorcerer extends CardImpl {
effect.addTableEntry(10, 19, new DrawCardSourceControllerEffect(1, true)); effect.addTableEntry(10, 19, new DrawCardSourceControllerEffect(1, true));
// 20 | Copy that spell. You may choose new targets for the copy. // 20 | Copy that spell. You may choose new targets for the copy.
effect.addTableEntry(20, 20, new CopyTargetStackObjectEffect()); effect.addTableEntry(20, 20, new CopyTargetStackObjectEffect(true));
} }
private SimonWildMagicSorcerer(final SimonWildMagicSorcerer card) { private MathiseSurgeChanneler(final MathiseSurgeChanneler card) {
super(card); super(card);
} }
@Override @Override
public SimonWildMagicSorcerer copy() { public MathiseSurgeChanneler copy() {
return new SimonWildMagicSorcerer(this); return new MathiseSurgeChanneler(this);
} }
} }

View file

@ -1,4 +1,4 @@
package mage.cards.x; package mage.cards.r;
import mage.MageInt; import mage.MageInt;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
@ -18,11 +18,11 @@ import java.util.UUID;
/** /**
* @author TheElk801 * @author TheElk801
*/ */
public final class XenkPaladinUnbroken extends CardImpl { public final class RashelFistOfTorm extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent(SubType.AURA, "Auras"); private static final FilterPermanent filter = new FilterPermanent(SubType.AURA, "Auras");
public XenkPaladinUnbroken(UUID ownerId, CardSetInfo setInfo) { public RashelFistOfTorm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}{W}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}{W}");
this.supertype.add(SuperType.LEGENDARY); this.supertype.add(SuperType.LEGENDARY);
@ -40,12 +40,12 @@ public final class XenkPaladinUnbroken extends CardImpl {
))); )));
} }
private XenkPaladinUnbroken(final XenkPaladinUnbroken card) { private RashelFistOfTorm(final RashelFistOfTorm card) {
super(card); super(card);
} }
@Override @Override
public XenkPaladinUnbroken copy() { public RashelFistOfTorm copy() {
return new XenkPaladinUnbroken(this); return new RashelFistOfTorm(this);
} }
} }

View file

@ -1085,13 +1085,13 @@ public class SecretLairDrop extends ExpansionSet {
cards.add(new SetCardInfo("Azusa, Lost but Seeking", 1234, Rarity.RARE, mage.cards.a.AzusaLostButSeeking.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Azusa, Lost but Seeking", 1234, Rarity.RARE, mage.cards.a.AzusaLostButSeeking.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Teysa Karlov", 1235, Rarity.RARE, mage.cards.t.TeysaKarlov.class)); cards.add(new SetCardInfo("Teysa Karlov", 1235, Rarity.RARE, mage.cards.t.TeysaKarlov.class));
cards.add(new SetCardInfo("Paradise Mantle", 1236, Rarity.RARE, mage.cards.p.ParadiseMantle.class)); cards.add(new SetCardInfo("Paradise Mantle", 1236, Rarity.RARE, mage.cards.p.ParadiseMantle.class));
cards.add(new SetCardInfo("Xenk, Paladin Unbroken", 1237, Rarity.RARE, mage.cards.x.XenkPaladinUnbroken.class)); cards.add(new SetCardInfo("Rashel, Fist of Torm", 1237, Rarity.RARE, mage.cards.r.RashelFistOfTorm.class));
cards.add(new SetCardInfo("Simon, Wild Magic Sorcerer", 1238, Rarity.RARE, mage.cards.s.SimonWildMagicSorcerer.class)); cards.add(new SetCardInfo("Mathise, Surge Channeler", 1238, Rarity.RARE, mage.cards.m.MathiseSurgeChanneler.class));
cards.add(new SetCardInfo("Forge, Neverwinter Charlatan", 1239, Rarity.RARE, mage.cards.f.ForgeNeverwinterCharlatan.class)); cards.add(new SetCardInfo("Evin, Waterdeep Opportunist", 1239, Rarity.RARE, mage.cards.e.EvinWaterdeepOpportunist.class));
cards.add(new SetCardInfo("Holga, Relentless Rager", 1240, Rarity.RARE, mage.cards.h.HolgaRelentlessRager.class)); cards.add(new SetCardInfo("Jurin, Leading the Charge", 1240, Rarity.RARE, mage.cards.j.JurinLeadingTheCharge.class));
cards.add(new SetCardInfo("Doric, Nature's Warden", 1241, Rarity.RARE, mage.cards.d.DoricNaturesWarden.class)); cards.add(new SetCardInfo("Casal, Lurkwood Pathfinder", 1241, Rarity.RARE, mage.cards.c.CasalLurkwoodPathfinder.class));
cards.add(new SetCardInfo("Doric, Owlbear Avenger", 1241, Rarity.RARE, mage.cards.d.DoricOwlbearAvenger.class)); cards.add(new SetCardInfo("Casal, Pathbreaker Owlbear", 1241, Rarity.RARE, mage.cards.c.CasalPathbreakerOwlbear.class));
cards.add(new SetCardInfo("Edgin, Larcenous Lutenist", 1242, Rarity.RARE, mage.cards.e.EdginLarcenousLutenist.class)); cards.add(new SetCardInfo("Bohn, Beguiling Balladeer", 1242, Rarity.RARE, mage.cards.b.BohnBeguilingBalladeer.class));
cards.add(new SetCardInfo("Ugin, the Ineffable", 1243, Rarity.RARE, mage.cards.u.UginTheIneffable.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Ugin, the Ineffable", 1243, Rarity.RARE, mage.cards.u.UginTheIneffable.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Sorin, Imperious Bloodlord", 1244, Rarity.MYTHIC, mage.cards.s.SorinImperiousBloodlord.class)); cards.add(new SetCardInfo("Sorin, Imperious Bloodlord", 1244, Rarity.MYTHIC, mage.cards.s.SorinImperiousBloodlord.class));
cards.add(new SetCardInfo("Sarkhan, Dragonsoul", 1245, Rarity.MYTHIC, mage.cards.s.SarkhanDragonsoul.class)); cards.add(new SetCardInfo("Sarkhan, Dragonsoul", 1245, Rarity.MYTHIC, mage.cards.s.SarkhanDragonsoul.class));

View file

@ -23,10 +23,14 @@ public final class UniversesWithin extends ExpansionSet {
cards.add(new SetCardInfo("Aisha of Sparks and Smoke", 12, Rarity.RARE, mage.cards.a.AishaOfSparksAndSmoke.class)); cards.add(new SetCardInfo("Aisha of Sparks and Smoke", 12, Rarity.RARE, mage.cards.a.AishaOfSparksAndSmoke.class));
cards.add(new SetCardInfo("Arvinox, the Mind Flail", 1, Rarity.MYTHIC, mage.cards.a.ArvinoxTheMindFlail.class)); cards.add(new SetCardInfo("Arvinox, the Mind Flail", 1, Rarity.MYTHIC, mage.cards.a.ArvinoxTheMindFlail.class));
cards.add(new SetCardInfo("Baldin, Century Herdmaster", 10, Rarity.RARE, mage.cards.b.BaldinCenturyHerdmaster.class)); cards.add(new SetCardInfo("Baldin, Century Herdmaster", 10, Rarity.RARE, mage.cards.b.BaldinCenturyHerdmaster.class));
cards.add(new SetCardInfo("Bohn, Beguiling Balladeer", 30, Rarity.RARE, mage.cards.b.BohnBeguilingBalladeer.class));
cards.add(new SetCardInfo("Bjorna, Nightfall Alchemist", 2, Rarity.RARE, mage.cards.b.BjornaNightfallAlchemist.class)); cards.add(new SetCardInfo("Bjorna, Nightfall Alchemist", 2, Rarity.RARE, mage.cards.b.BjornaNightfallAlchemist.class));
cards.add(new SetCardInfo("Casal, Lurkwood Pathfinder", 29, Rarity.RARE, mage.cards.c.CasalLurkwoodPathfinder.class));
cards.add(new SetCardInfo("Casal, Pathbreaker Owlbear", 29, Rarity.RARE, mage.cards.c.CasalPathbreakerOwlbear.class));
cards.add(new SetCardInfo("Cecily, Haunted Mage", 3, Rarity.RARE, mage.cards.c.CecilyHauntedMage.class)); cards.add(new SetCardInfo("Cecily, Haunted Mage", 3, Rarity.RARE, mage.cards.c.CecilyHauntedMage.class));
cards.add(new SetCardInfo("Elmar, Ulvenwald Informant", 4, Rarity.RARE, mage.cards.e.ElmarUlvenwaldInformant.class)); cards.add(new SetCardInfo("Elmar, Ulvenwald Informant", 4, Rarity.RARE, mage.cards.e.ElmarUlvenwaldInformant.class));
cards.add(new SetCardInfo("Enkira, Hostile Scavenger", 20, Rarity.MYTHIC, mage.cards.e.EnkiraHostileScavenger.class)); cards.add(new SetCardInfo("Enkira, Hostile Scavenger", 20, Rarity.MYTHIC, mage.cards.e.EnkiraHostileScavenger.class));
cards.add(new SetCardInfo("Evin, Waterdeep Opportunist", 26, Rarity.RARE, mage.cards.e.EvinWaterdeepOpportunist.class));
cards.add(new SetCardInfo("Gisa's Favorite Shovel", 19, Rarity.MYTHIC, mage.cards.g.GisasFavoriteShovel.class)); cards.add(new SetCardInfo("Gisa's Favorite Shovel", 19, Rarity.MYTHIC, mage.cards.g.GisasFavoriteShovel.class));
cards.add(new SetCardInfo("Gregor, Shrewd Magistrate", 21, Rarity.MYTHIC, mage.cards.g.GregorShrewdMagistrate.class)); cards.add(new SetCardInfo("Gregor, Shrewd Magistrate", 21, Rarity.MYTHIC, mage.cards.g.GregorShrewdMagistrate.class));
cards.add(new SetCardInfo("Greymond, Avacyn's Stalwart", 18, Rarity.MYTHIC, mage.cards.g.GreymondAvacynsStalwart.class)); cards.add(new SetCardInfo("Greymond, Avacyn's Stalwart", 18, Rarity.MYTHIC, mage.cards.g.GreymondAvacynsStalwart.class));
@ -35,11 +39,15 @@ public final class UniversesWithin extends ExpansionSet {
cards.add(new SetCardInfo("Havengul Laboratory", 9, Rarity.RARE, mage.cards.h.HavengulLaboratory.class)); cards.add(new SetCardInfo("Havengul Laboratory", 9, Rarity.RARE, mage.cards.h.HavengulLaboratory.class));
cards.add(new SetCardInfo("Havengul Mystery", 9, Rarity.RARE, mage.cards.h.HavengulMystery.class)); cards.add(new SetCardInfo("Havengul Mystery", 9, Rarity.RARE, mage.cards.h.HavengulMystery.class));
cards.add(new SetCardInfo("Immard, the Stormcleaver", 14, Rarity.RARE, mage.cards.i.ImmardTheStormcleaver.class)); cards.add(new SetCardInfo("Immard, the Stormcleaver", 14, Rarity.RARE, mage.cards.i.ImmardTheStormcleaver.class));
cards.add(new SetCardInfo("Jurin, Leading the Charge", 27, Rarity.RARE, mage.cards.j.JurinLeadingTheCharge.class));
cards.add(new SetCardInfo("Maarika, Brutal Gladiator", 15, Rarity.RARE, mage.cards.m.MaarikaBrutalGladiator.class)); cards.add(new SetCardInfo("Maarika, Brutal Gladiator", 15, Rarity.RARE, mage.cards.m.MaarikaBrutalGladiator.class));
cards.add(new SetCardInfo("Malik, Grim Manipulator", 23, Rarity.MYTHIC, mage.cards.m.MalikGrimManipulator.class)); cards.add(new SetCardInfo("Malik, Grim Manipulator", 23, Rarity.MYTHIC, mage.cards.m.MalikGrimManipulator.class));
cards.add(new SetCardInfo("Mathise, Surge Channeler", 25, Rarity.RARE, mage.cards.m.MathiseSurgeChanneler.class));
cards.add(new SetCardInfo("Othelm, Sigardian Outcast", 6, Rarity.RARE, mage.cards.o.OthelmSigardianOutcast.class)); cards.add(new SetCardInfo("Othelm, Sigardian Outcast", 6, Rarity.RARE, mage.cards.o.OthelmSigardianOutcast.class));
cards.add(new SetCardInfo("Rashel, Fist of Torm", 24, Rarity.RARE, mage.cards.r.RashelFistOfTorm.class));
cards.add(new SetCardInfo("Sophina, Spearsage Deserter", 7, Rarity.RARE, mage.cards.s.SophinaSpearsageDeserter.class)); cards.add(new SetCardInfo("Sophina, Spearsage Deserter", 7, Rarity.RARE, mage.cards.s.SophinaSpearsageDeserter.class));
cards.add(new SetCardInfo("Tadeas, Juniper Ascendant", 16, Rarity.RARE, mage.cards.t.TadeasJuniperAscendant.class)); cards.add(new SetCardInfo("Tadeas, Juniper Ascendant", 16, Rarity.RARE, mage.cards.t.TadeasJuniperAscendant.class));
cards.add(new SetCardInfo("Themberchaud", 28, Rarity.RARE, mage.cards.t.Themberchaud.class));
cards.add(new SetCardInfo("The Howling Abomination", 13, Rarity.RARE, mage.cards.t.TheHowlingAbomination.class)); cards.add(new SetCardInfo("The Howling Abomination", 13, Rarity.RARE, mage.cards.t.TheHowlingAbomination.class));
cards.add(new SetCardInfo("Vikya, Scorching Stalwart", 11, Rarity.RARE, mage.cards.v.VikyaScorchingStalwart.class)); cards.add(new SetCardInfo("Vikya, Scorching Stalwart", 11, Rarity.RARE, mage.cards.v.VikyaScorchingStalwart.class));
cards.add(new SetCardInfo("Wernog, Rider's Chaplain", 8, Rarity.RARE, mage.cards.w.WernogRidersChaplain.class)); cards.add(new SetCardInfo("Wernog, Rider's Chaplain", 8, Rarity.RARE, mage.cards.w.WernogRidersChaplain.class));

View file

@ -491,10 +491,10 @@ public class SacrificeDiesTriggerTest extends CardTestPlayerBase {
} }
@Test @Test
public void test_BatchEvent_ForgeNeverwinterCharlatan_SacrificeAnother() { public void test_BatchEvent_EvinWaterdeepOpportunist_SacrificeAnother() {
// Whenever one or more players sacrifice one or more creatures, you create a tapped Treasure token. // Whenever one or more players sacrifice one or more creatures, you create a tapped Treasure token.
// This ability triggers only once each turn. // This ability triggers only once each turn.
addCard(Zone.BATTLEFIELD, playerA, "Forge, Neverwinter Charlatan"); addCard(Zone.BATTLEFIELD, playerA, "Evin, Waterdeep Opportunist");
// //
// {2}, {T}, Sacrifice a creature: Draw a card. // {2}, {T}, Sacrifice a creature: Draw a card.
addCard(Zone.BATTLEFIELD, playerA, "Phyrexian Vault", 1); addCard(Zone.BATTLEFIELD, playerA, "Phyrexian Vault", 1);
@ -514,10 +514,10 @@ public class SacrificeDiesTriggerTest extends CardTestPlayerBase {
} }
@Test @Test
public void test_BatchEvent_ForgeNeverwinterCharlatan_SacrificeItself() { public void test_BatchEvent_EvinWaterdeepOpportunist_SacrificeItself() {
// Whenever one or more players sacrifice one or more creatures, you create a tapped Treasure token. // Whenever one or more players sacrifice one or more creatures, you create a tapped Treasure token.
// This ability triggers only once each turn. // This ability triggers only once each turn.
addCard(Zone.BATTLEFIELD, playerA, "Forge, Neverwinter Charlatan"); addCard(Zone.BATTLEFIELD, playerA, "Evin, Waterdeep Opportunist");
// //
// {2}, {T}, Sacrifice a creature: Draw a card. // {2}, {T}, Sacrifice a creature: Draw a card.
addCard(Zone.BATTLEFIELD, playerA, "Phyrexian Vault", 1); addCard(Zone.BATTLEFIELD, playerA, "Phyrexian Vault", 1);
@ -525,7 +525,7 @@ public class SacrificeDiesTriggerTest extends CardTestPlayerBase {
// sacrifice itself // sacrifice itself
activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, "{2}, {T}, Sacrifice"); activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, "{2}, {T}, Sacrifice");
setChoice(playerA, "Forge, Neverwinter Charlatan"); // to sacrifice setChoice(playerA, "Evin, Waterdeep Opportunist"); // to sacrifice
setStrictChooseMode(true); setStrictChooseMode(true);
setStopAt(1, PhaseStep.END_TURN); setStopAt(1, PhaseStep.END_TURN);