forked from External/mage
implement [EOE] Sami, Wildcat Captain
This commit is contained in:
parent
4f4b77d369
commit
a75a95a7f1
3 changed files with 101 additions and 0 deletions
56
Mage.Sets/src/mage/cards/s/SamiWildcatCaptain.java
Normal file
56
Mage.Sets/src/mage/cards/s/SamiWildcatCaptain.java
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
package mage.cards.s;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.effects.common.continuous.GainAbilityControlledSpellsEffect;
|
||||
import mage.abilities.keyword.AffinityForArtifactsAbility;
|
||||
import mage.abilities.keyword.DoubleStrikeAbility;
|
||||
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.filter.StaticFilters;
|
||||
import mage.filter.common.FilterNonlandCard;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author Susucr
|
||||
*/
|
||||
public final class SamiWildcatCaptain extends CardImpl {
|
||||
|
||||
private static final FilterNonlandCard filter = new FilterNonlandCard("Spells you cast");
|
||||
|
||||
public SamiWildcatCaptain(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{R}{W}");
|
||||
|
||||
this.supertype.add(SuperType.LEGENDARY);
|
||||
this.subtype.add(SubType.HUMAN);
|
||||
this.subtype.add(SubType.ARTIFICER);
|
||||
this.subtype.add(SubType.ROGUE);
|
||||
this.power = new MageInt(4);
|
||||
this.toughness = new MageInt(4);
|
||||
|
||||
// Double strike
|
||||
this.addAbility(DoubleStrikeAbility.getInstance());
|
||||
|
||||
// Vigilance
|
||||
this.addAbility(VigilanceAbility.getInstance());
|
||||
|
||||
// Spells you cast have affinity for artifacts.
|
||||
this.addAbility(new SimpleStaticAbility(new GainAbilityControlledSpellsEffect(
|
||||
new AffinityForArtifactsAbility(), StaticFilters.FILTER_CARD_NON_LAND
|
||||
)));
|
||||
}
|
||||
|
||||
private SamiWildcatCaptain(final SamiWildcatCaptain card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public SamiWildcatCaptain copy() {
|
||||
return new SamiWildcatCaptain(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -110,6 +110,8 @@ public final class EdgeOfEternities extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Sacred Foundry", 282, Rarity.RARE, mage.cards.s.SacredFoundry.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Sacred Foundry", 377, Rarity.RARE, mage.cards.s.SacredFoundry.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Sami, Ship's Engineer", 225, Rarity.UNCOMMON, mage.cards.s.SamiShipsEngineer.class));
|
||||
cards.add(new SetCardInfo("Sami, Wildcat Captain", 226, Rarity.MYTHIC, mage.cards.s.SamiWildcatCaptain.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Sami, Wildcat Captain", 301, Rarity.MYTHIC, mage.cards.s.SamiWildcatCaptain.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Shattered Wings", 206, Rarity.COMMON, mage.cards.s.ShatteredWings.class));
|
||||
cards.add(new SetCardInfo("Singularity Rupture", 228, Rarity.RARE, mage.cards.s.SingularityRupture.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Singularity Rupture", 350, Rarity.RARE, mage.cards.s.SingularityRupture.class, NON_FULL_USE_VARIOUS));
|
||||
|
|
|
|||
|
|
@ -0,0 +1,43 @@
|
|||
package org.mage.test.cards.single.eoe;
|
||||
|
||||
import mage.constants.PhaseStep;
|
||||
import mage.constants.Zone;
|
||||
import org.junit.Test;
|
||||
import org.mage.test.serverside.base.CardTestPlayerBase;
|
||||
|
||||
/**
|
||||
* @author Susucr
|
||||
*/
|
||||
public class SamiWildcatCaptainTest extends CardTestPlayerBase {
|
||||
|
||||
/**
|
||||
* {@link mage.cards.s.SamiWildcatCaptain Sami, Wildcat Captain} {4}{R}{W}
|
||||
* Legendary Creature — Human Artificer Rogue
|
||||
* Double strike, vigilance
|
||||
* Spells you cast have affinity for artifacts. (They cost {1} less to cast for each artifact you control.)
|
||||
* 4/4
|
||||
*/
|
||||
private static final String sami = "Sami, Wildcat Captain";
|
||||
|
||||
@Test
|
||||
public void test_Simple() {
|
||||
addCard(Zone.BATTLEFIELD, playerA, sami);
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Chrome Steed"); // Artifact
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Mountain", 2);
|
||||
addCard(Zone.HAND, playerA, "Mountain", 1);
|
||||
addCard(Zone.HAND, playerA, "Arcane Encyclopedia"); // {3} Artifact
|
||||
addCard(Zone.HAND, playerA, "Fearless Halberdier"); // {2}{R}
|
||||
|
||||
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Arcane Encyclopedia", true);
|
||||
playLand(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Mountain");
|
||||
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Fearless Halberdier");
|
||||
|
||||
setStopAt(1, PhaseStep.BEGIN_COMBAT);
|
||||
setStrictChooseMode(true);
|
||||
execute();
|
||||
|
||||
assertTappedCount("Mountain", true, 3);
|
||||
assertPermanentCount(playerA, "Arcane Encyclopedia", 1);
|
||||
assertPermanentCount(playerA, "Fearless Halberdier", 1);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue