Merge branch 'master' into refactor/transforming-dfc-partial-refactor

This commit is contained in:
theelk801 2025-07-31 10:17:11 -04:00
commit 7609c3087c
6 changed files with 228 additions and 15 deletions

View file

@ -0,0 +1,144 @@
package mage.cards.k;
import mage.MageInt;
import mage.MageObject;
import mage.abilities.Ability;
import mage.abilities.common.SagaAbility;
import mage.abilities.common.delayed.ReflexiveTriggeredAbility;
import mage.abilities.dynamicvalue.DynamicValue;
import mage.abilities.effects.Effect;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.DamageTargetEffect;
import mage.abilities.effects.common.MillCardsControllerEffect;
import mage.abilities.effects.common.ReturnFromGraveyardToHandTargetEffect;
import mage.abilities.effects.common.continuous.BoostTargetEffect;
import mage.abilities.hint.Hint;
import mage.abilities.hint.ValueHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.SagaChapter;
import mage.constants.SubType;
import mage.filter.StaticFilters;
import mage.game.Game;
import mage.players.Player;
import mage.target.common.TargetCardInYourGraveyard;
import mage.target.common.TargetControlledCreaturePermanent;
import mage.target.common.TargetCreaturePermanent;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class KravensLastHunt extends CardImpl {
public KravensLastHunt(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{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 -- Mill five cards. When you do, this Saga deals damage equal to the greatest power among creature cards in your graveyard to target creature.
sagaAbility.addChapterEffect(
this, SagaChapter.CHAPTER_I,
new MillCardsControllerEffect(4), new KravensLastHuntEffect()
);
// II -- Target creature you control gets +2/+2 until end of turn.
sagaAbility.addChapterEffect(
this, SagaChapter.CHAPTER_II,
new BoostTargetEffect(2, 2),
new TargetControlledCreaturePermanent()
);
// III -- Return target creature card from your graveyard to your hand.
sagaAbility.addChapterEffect(
this, SagaChapter.CHAPTER_III, new ReturnFromGraveyardToHandTargetEffect(),
new TargetCardInYourGraveyard(StaticFilters.FILTER_CARD_CREATURE_YOUR_GRAVEYARD)
);
this.addAbility(sagaAbility.addHint(KravensLastHuntValue.getHint()));
}
private KravensLastHunt(final KravensLastHunt card) {
super(card);
}
@Override
public KravensLastHunt copy() {
return new KravensLastHunt(this);
}
}
enum KravensLastHuntValue implements DynamicValue {
instance;
private static final Hint hint = new ValueHint("Greatest power among creature cards in your graveyard", instance);
public static Hint getHint() {
return hint;
}
@Override
public int calculate(Game game, Ability sourceAbility, Effect effect) {
Player player = game.getPlayer(sourceAbility.getControllerId());
if (player == null) {
return 0;
}
return player
.getGraveyard()
.getCards(StaticFilters.FILTER_CARD_CREATURE, game)
.stream()
.map(MageObject::getPower)
.mapToInt(MageInt::getValue)
.max()
.orElse(0);
}
@Override
public KravensLastHuntValue copy() {
return this;
}
@Override
public String getMessage() {
return "";
}
@Override
public String toString() {
return "1";
}
}
class KravensLastHuntEffect extends OneShotEffect {
KravensLastHuntEffect() {
super(Outcome.Benefit);
staticText = "When you do, {this} deals damage equal to the greatest power among creature cards in your graveyard to target creature";
}
private KravensLastHuntEffect(final KravensLastHuntEffect effect) {
super(effect);
}
@Override
public KravensLastHuntEffect copy() {
return new KravensLastHuntEffect(this);
}
@Override
public boolean apply(Game game, Ability source) {
ReflexiveTriggeredAbility ability = new ReflexiveTriggeredAbility(
new DamageTargetEffect(KravensLastHuntValue.instance)
.setText("{this} deals damage equal to the greatest power " +
"among creature cards in your graveyard to target creature"), false
);
ability.addTarget(new TargetCreaturePermanent());
game.fireReflexiveTriggeredAbility(ability, source);
return true;
}
}

View file

@ -40,10 +40,12 @@ public final class MarvelsSpiderMan extends ExpansionSet {
cards.add(new SetCardInfo("Guy in the Chair", 102, Rarity.COMMON, mage.cards.g.GuyInTheChair.class)); cards.add(new SetCardInfo("Guy in the Chair", 102, Rarity.COMMON, mage.cards.g.GuyInTheChair.class));
cards.add(new SetCardInfo("Iron Spider, Stark Upgrade", 166, Rarity.RARE, mage.cards.i.IronSpiderStarkUpgrade.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Iron Spider, Stark Upgrade", 166, Rarity.RARE, mage.cards.i.IronSpiderStarkUpgrade.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Iron Spider, Stark Upgrade", 279, Rarity.RARE, mage.cards.i.IronSpiderStarkUpgrade.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Iron Spider, Stark Upgrade", 279, Rarity.RARE, mage.cards.i.IronSpiderStarkUpgrade.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Island", 190, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Island", 190, Rarity.LAND, mage.cards.basiclands.Island.class, FULL_ART_BFZ_VARIOUS));
cards.add(new SetCardInfo("Island", 195, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Island", 195, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Kapow!", 103, Rarity.COMMON, mage.cards.k.Kapow.class)); cards.add(new SetCardInfo("Kapow!", 103, Rarity.COMMON, mage.cards.k.Kapow.class));
cards.add(new SetCardInfo("Kraven's Cats", 104, Rarity.COMMON, mage.cards.k.KravensCats.class)); cards.add(new SetCardInfo("Kraven's Cats", 104, Rarity.COMMON, mage.cards.k.KravensCats.class));
cards.add(new SetCardInfo("Kraven's Last Hunt", 105, Rarity.RARE, mage.cards.k.KravensLastHunt.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Kraven's Last Hunt", 226, Rarity.RARE, mage.cards.k.KravensLastHunt.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Lurking Lizards", 107, Rarity.COMMON, mage.cards.l.LurkingLizards.class)); cards.add(new SetCardInfo("Lurking Lizards", 107, Rarity.COMMON, mage.cards.l.LurkingLizards.class));
cards.add(new SetCardInfo("Masked Meower", 82, Rarity.COMMON, mage.cards.m.MaskedMeower.class)); cards.add(new SetCardInfo("Masked Meower", 82, Rarity.COMMON, mage.cards.m.MaskedMeower.class));
cards.add(new SetCardInfo("Mechanical Mobster", 168, Rarity.COMMON, mage.cards.m.MechanicalMobster.class)); cards.add(new SetCardInfo("Mechanical Mobster", 168, Rarity.COMMON, mage.cards.m.MechanicalMobster.class));

View file

@ -5,7 +5,6 @@ import mage.constants.Rarity;
import mage.constants.SetType; import mage.constants.SetType;
/** /**
*
* @author LevelX2 * @author LevelX2
*/ */
public final class Starter1999 extends ExpansionSet { public final class Starter1999 extends ExpansionSet {
@ -114,7 +113,7 @@ public final class Starter1999 extends ExpansionSet {
cards.add(new SetCardInfo("Man-o'-War", 41, Rarity.UNCOMMON, mage.cards.m.ManOWar.class, RETRO_ART)); cards.add(new SetCardInfo("Man-o'-War", 41, Rarity.UNCOMMON, mage.cards.m.ManOWar.class, RETRO_ART));
cards.add(new SetCardInfo("Merfolk of the Pearl Trident", 42, Rarity.COMMON, mage.cards.m.MerfolkOfThePearlTrident.class, RETRO_ART)); cards.add(new SetCardInfo("Merfolk of the Pearl Trident", 42, Rarity.COMMON, mage.cards.m.MerfolkOfThePearlTrident.class, RETRO_ART));
cards.add(new SetCardInfo("Mind Rot", 83, Rarity.COMMON, mage.cards.m.MindRot.class, RETRO_ART)); cards.add(new SetCardInfo("Mind Rot", 83, Rarity.COMMON, mage.cards.m.MindRot.class, RETRO_ART));
cards.add(new SetCardInfo("Mons's Goblin Raiders", 112, Rarity.RARE, mage.cards.m.MonssGoblinRaiders.class, RETRO_ART)); cards.add(new SetCardInfo("Mons's Goblin Raiders", 112, Rarity.COMMON, mage.cards.m.MonssGoblinRaiders.class, RETRO_ART));
cards.add(new SetCardInfo("Monstrous Growth", 132, Rarity.COMMON, mage.cards.m.MonstrousGrowth.class, RETRO_ART)); cards.add(new SetCardInfo("Monstrous Growth", 132, Rarity.COMMON, mage.cards.m.MonstrousGrowth.class, RETRO_ART));
cards.add(new SetCardInfo("Moon Sprite", 133, Rarity.UNCOMMON, mage.cards.m.MoonSprite.class, RETRO_ART)); cards.add(new SetCardInfo("Moon Sprite", 133, Rarity.UNCOMMON, mage.cards.m.MoonSprite.class, RETRO_ART));
cards.add(new SetCardInfo("Mountain", 166, Rarity.LAND, mage.cards.basiclands.Mountain.class, RETRO_ART_USE_VARIOUS)); cards.add(new SetCardInfo("Mountain", 166, Rarity.LAND, mage.cards.basiclands.Mountain.class, RETRO_ART_USE_VARIOUS));

View file

@ -0,0 +1,32 @@
package org.mage.test.cards.triggers;
import mage.constants.PhaseStep;
import mage.constants.Zone;
import org.junit.Test;
import org.mage.test.serverside.base.CardTestPlayerBase;
/**
* @author TheElk801
*/
public class DrawNCardsTest extends CardTestPlayerBase {
private static final String snacker = "Sneaky Snacker";
private static final String mists = "Reach Through Mists";
private static final String looting = "Faithless Looting";
@Test
public void testSnacker() {
addCard(Zone.BATTLEFIELD, playerA, "Volcanic Island", 1 + 1);
addCard(Zone.GRAVEYARD, playerA, snacker);
addCard(Zone.HAND, playerA, mists);
addCard(Zone.HAND, playerA, looting);
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, mists);
castSpell(1, PhaseStep.POSTCOMBAT_MAIN, playerA, looting);
setStopAt(1, PhaseStep.END_TURN);
execute();
assertTapped(snacker, true);
}
}

View file

@ -6,12 +6,14 @@ import mage.abilities.effects.Effect;
import mage.abilities.hint.Hint; import mage.abilities.hint.Hint;
import mage.abilities.hint.ValueHint; import mage.abilities.hint.ValueHint;
import mage.constants.TargetController; import mage.constants.TargetController;
import mage.constants.WatcherScope;
import mage.constants.Zone; import mage.constants.Zone;
import mage.game.Game; import mage.game.Game;
import mage.game.events.GameEvent; import mage.game.events.GameEvent;
import mage.players.Player;
import mage.util.CardUtil; import mage.util.CardUtil;
import mage.watchers.common.CardsDrawnThisTurnWatcher; import mage.watchers.Watcher;
import java.util.*;
/** /**
* @author TheElk801 * @author TheElk801
@ -48,6 +50,7 @@ public class DrawNthCardTriggeredAbility extends TriggeredAbilityImpl {
this.addHint(hint); this.addHint(hint);
} }
setTriggerPhrase(generateTriggerPhrase()); setTriggerPhrase(generateTriggerPhrase());
this.addWatcher(new DrawNthCardWatcher());
} }
protected DrawNthCardTriggeredAbility(final DrawNthCardTriggeredAbility ability) { protected DrawNthCardTriggeredAbility(final DrawNthCardTriggeredAbility ability) {
@ -75,8 +78,7 @@ public class DrawNthCardTriggeredAbility extends TriggeredAbilityImpl {
} }
break; break;
case OPPONENT: case OPPONENT:
Player controller = game.getPlayer(controllerId); if (!game.getOpponents(getControllerId()).contains(event.getPlayerId())) {
if (controller == null || !controller.hasOpponent(event.getPlayerId(), game)) {
return false; return false;
} }
break; break;
@ -86,8 +88,7 @@ public class DrawNthCardTriggeredAbility extends TriggeredAbilityImpl {
default: default:
throw new IllegalArgumentException("TargetController " + targetController + " not supported"); throw new IllegalArgumentException("TargetController " + targetController + " not supported");
} }
CardsDrawnThisTurnWatcher watcher = game.getState().getWatcher(CardsDrawnThisTurnWatcher.class); return DrawNthCardWatcher.checkEvent(event.getPlayerId(), event.getId(), game) + 1 == cardNumber;
return watcher != null && watcher.getCardsDrawnThisTurn(event.getPlayerId()) == cardNumber;
} }
public String generateTriggerPhrase() { public String generateTriggerPhrase() {
@ -110,3 +111,36 @@ public class DrawNthCardTriggeredAbility extends TriggeredAbilityImpl {
return new DrawNthCardTriggeredAbility(this); return new DrawNthCardTriggeredAbility(this);
} }
} }
class DrawNthCardWatcher extends Watcher {
private final Map<UUID, List<UUID>> playerDrawEventMap = new HashMap<>();
DrawNthCardWatcher() {
super(WatcherScope.GAME);
}
@Override
public void watch(GameEvent event, Game game) {
if (event.getType() == GameEvent.EventType.DREW_CARD) {
playerDrawEventMap
.computeIfAbsent(event.getPlayerId(), x -> new ArrayList<>())
.add(event.getId());
}
}
@Override
public void reset() {
super.reset();
playerDrawEventMap.clear();
}
static int checkEvent(UUID playerId, UUID eventId, Game game) {
return game
.getState()
.getWatcher(DrawNthCardWatcher.class)
.playerDrawEventMap
.getOrDefault(playerId, Collections.emptyList())
.indexOf(eventId);
}
}

View file

@ -59720,14 +59720,14 @@ Viridescent Bog|Edge of Eternities Commander|190|R||Land|||{1}, {T}: Add {B}{G}.
Wastes|Edge of Eternities Commander|191|C||Basic Land|||{T}: Add {C}.| Wastes|Edge of Eternities Commander|191|C||Basic Land|||{T}: Add {C}.|
Avatar Aang|Avatar: The Last Airbender|363|M|{R}{G}{W}{U}|Legendary Creature - Human Avatar Ally|4|4|Flying, firebending 2$Whenever you waterbend, earthbend, firebend, or airbend, draw a card. Then if you've done all four this turn, transform Avatar Aang.| Avatar Aang|Avatar: The Last Airbender|363|M|{R}{G}{W}{U}|Legendary Creature - Human Avatar Ally|4|4|Flying, firebending 2$Whenever you waterbend, earthbend, firebend, or airbend, draw a card. Then if you've done all four this turn, transform Avatar Aang.|
Aang, Master of Elements|Avatar: The Last Airbender|363|M||Legendary Creature - Avatar Ally|6|6|Flying$Spelsl you cast cost {W}{U}{B}{R}{G} less to cast.$At the beginning of each upkeep, you may transform Aang, Master of Elements. If you do, you gain 4 life, draw four cards, put four +1/+1 counters on him, and he deals 4 damage to each opponent.| Aang, Master of Elements|Avatar: The Last Airbender|363|M||Legendary Creature - Avatar Ally|6|6|Flying$Spelsl you cast cost {W}{U}{B}{R}{G} less to cast.$At the beginning of each upkeep, you may transform Aang, Master of Elements. If you do, you gain 4 life, draw four cards, put four +1/+1 counters on him, and he deals 4 damage to each opponent.|
Anti-Venom, Horrifying Healer|Marvel's Spider-Man|1|M|{W}{W}{W}{W}{W}|Legendary Creature - Symbiote Hero|5|5|When Anti-Venom enters, if he was cast, return target creature card from your graveyard to the battlefield. If damage would be dealt to Anti-Venom, prevent that damage and put that many +1/+1 counters on him.| Anti-Venom, Horrifying Healer|Marvel's Spider-Man|1|M|{W}{W}{W}{W}{W}|Legendary Creature - Symbiote Hero|5|5|When Anti-Venom enters, if he was cast, return target creature card from your graveyard to the battlefield.$If damage would be dealt to Anti-Venom, prevent that damage and put that many +1/+1 counters on him.|
Aunt May|Marvel's Spider-Man|3|U|{W}|Legendary Creature - Human Citizen|0|2|Whenever another creature you control enters, you gain 1 life. If it's a Spider, put a +1/+1 counter on it.| Aunt May|Marvel's Spider-Man|3|U|{W}|Legendary Creature - Human Citizen|0|2|Whenever another creature you control enters, you gain 1 life. If it's a Spider, put a +1/+1 counter on it.|
Daily Bugle Reporters|Marvel's Spider-Man|6|C|{3}{W}|Creature - Human Citizen|2|3|When this creature enters, choose one --$* Puff Piece -- Put a +1/+1 counter on each of up to two target creatures.$* Investigative Journalism -- Return target creature card with mana value 2 or less from your graveyard to your hand.| Daily Bugle Reporters|Marvel's Spider-Man|6|C|{3}{W}|Creature - Human Citizen|2|3|When this creature enters, choose one --$* Puff Piece -- Put a +1/+1 counter on each of up to two target creatures.$* Investigative Journalism -- Return target creature card with mana value 2 or less from your graveyard to your hand.|
Origin of Spider-Man|Marvel's Spider-Man|9|R|{1}{W}|Enchantment - Saga|||(As this Saga enters and after your draw step, add a lore counter. Sacrifice after III.)$I -- Create a 2/1 green Spider creature token with reach.$II -- Put a +1/+1 counter on target creature you control. It becomes a legendary Spider Hero in addition to its other types.$III -- Target creature you control gains double strike until end of turn.| Origin of Spider-Man|Marvel's Spider-Man|9|R|{1}{W}|Enchantment - Saga|||(As this Saga enters and after your draw step, add a lore counter. Sacrifice after III.)$I -- Create a 2/1 green Spider creature token with reach.$II -- Put a +1/+1 counter on target creature you control. It becomes a legendary Spider Hero in addition to its other types.$III -- Target creature you control gains double strike until end of turn.|
Peter Parker|Marvel's Spider-Man|10|M|{1}{W}|Legendary Creature - Human Scientist Hero|0|1|When Peter Parker enters, create a 2/1 green Spider creature token with reach.${1}{G}{W}{U}: Transform Peter Parker. Activate only as a sorcery.| Peter Parker|Marvel's Spider-Man|10|M|{1}{W}|Legendary Creature - Human Scientist Hero|0|1|When Peter Parker enters, create a 2/1 green Spider creature token with reach.${1}{G}{W}{U}: Transform Peter Parker. Activate only as a sorcery.|
Amazing Spider-Man|Marvel's Spider-Man|10|M|{1}{G}{W}{U}|Legendary Creature - Spider Human Hero|4|4|Vigilance, reach$Each legendary spell you cast that's one or more colors has web-slinging {G}{W}{U}.| Amazing Spider-Man|Marvel's Spider-Man|10|M|{1}{G}{W}{U}|Legendary Creature - Spider Human Hero|4|4|Vigilance, reach$Each legendary spell you cast that's one or more colors has web-slinging {G}{W}{U}.|
Selfless Police Captain|Marvel's Spider-Man|12|C|{1}{W}|Creature - Human Detective|1|1|This creature enters with a +1/+1 counter on it.$When this creature leaves the battlefield, put its +1/+1 counters on target creature you control.| Selfless Police Captain|Marvel's Spider-Man|12|C|{1}{W}|Creature - Human Detective|1|1|This creature enters with a +1/+1 counter on it.$When this creature leaves the battlefield, put its +1/+1 counters on target creature you control.|
Spectacular Spider-Man|Marvel's Spider-Man|14|R|{1}{W}|Legendary Creature - Spider Human Hero|3|2|Flash 1: Spectacular Spider-Man gains flying until end of turn. 1, Sacrifice Spectacular Spider-Man: Creatures you control gain hexproof and indestructible until end of turn.| Spectacular Spider-Man|Marvel's Spider-Man|14|R|{1}{W}|Legendary Creature - Spider Human Hero|3|2|Flash${1}: Spectacular Spider-Man gains flying until end of turn.${1}, Sacrifice Spectacular Spider-Man: Creatures you control gain hexproof and indestructible until end of turn.|
Spectacular Tactics|Marvel's Spider-Man|15|C|{1}{W}|Instant|||Choose one --$* Put a +1/+1 counter on target creature you control. It gains hexproof until end of turn.$* Destroy target creature with power 4 or greater.| Spectacular Tactics|Marvel's Spider-Man|15|C|{1}{W}|Instant|||Choose one --$* Put a +1/+1 counter on target creature you control. It gains hexproof until end of turn.$* Destroy target creature with power 4 or greater.|
Spider-Man, Web-Slinger|Marvel's Spider-Man|16|C|{2}{W}|Legendary Creature - Spider Human Hero|3|3|Web-slinging {W}| Spider-Man, Web-Slinger|Marvel's Spider-Man|16|C|{2}{W}|Legendary Creature - Spider Human Hero|3|3|Web-slinging {W}|
Starling, Aerial Ally|Marvel's Spider-Man|18|C|{4}{W}|Legendary Creature - Human Hero|3|4|Flying$When Starling enters, another target creature you control gains flying until end of turn.| Starling, Aerial Ally|Marvel's Spider-Man|18|C|{4}{W}|Legendary Creature - Human Hero|3|4|Flying$When Starling enters, another target creature you control gains flying until end of turn.|
@ -59753,7 +59753,7 @@ Venom's Hunger|Marvel's Spider-Man|73|C|{4}{B}|Sorcery|||This spell costs {2} le
Angry Rabble|Marvel's Spider-Man|75|C|{1}{R}|Creature - Human Citizen|2|2|Trample$Whenever you cast a spell with mana value 4 or greater, this creature deals 1 damage to each opponent.${5}{R}: Put two +1/+1 counters on this creature. Activate only as a sorcery.| Angry Rabble|Marvel's Spider-Man|75|C|{1}{R}|Creature - Human Citizen|2|2|Trample$Whenever you cast a spell with mana value 4 or greater, this creature deals 1 damage to each opponent.${5}{R}: Put two +1/+1 counters on this creature. Activate only as a sorcery.|
Electro's Bolt|Marvel's Spider-Man|77|C|{2}{R}|Sorcery|||Electro's Bolt deals 4 damage to target creature.$Mayhem {1}{R}| Electro's Bolt|Marvel's Spider-Man|77|C|{2}{R}|Sorcery|||Electro's Bolt deals 4 damage to target creature.$Mayhem {1}{R}|
Gwen Stacy|Marvel's Spider-Man|78|M|{1}{R}|Legendary Creature - Human Performer Hero|2|1|When Gwen Stacy enters, exile the top card of your library. You may play that card for as long as you control this creature.${2}{U}{R}{W}: Transform Gwen Stacy. Activate only as a sorcery.| Gwen Stacy|Marvel's Spider-Man|78|M|{1}{R}|Legendary Creature - Human Performer Hero|2|1|When Gwen Stacy enters, exile the top card of your library. You may play that card for as long as you control this creature.${2}{U}{R}{W}: Transform Gwen Stacy. Activate only as a sorcery.|
Ghost-Spider|Marvel's Spider-Man|78|M|{2}{U}{R}{W}|Legendary Creature - Spider Human Hero|2|1 Creature|Flying, vigilance, haste$Whenever you play a land from exile or cast a spell from exile, put a +1/+1 counter on Ghost-Spider.$Remove two counters from Ghost- Spider: Exile the top card of your library. You may play that card this turn.| Ghost-Spider|Marvel's Spider-Man|78|M|{2}{U}{R}{W}|Legendary Creature - Spider Human Hero|4|4|Flying, vigilance, haste$Whenever you play a land from exile or cast a spell from exile, put a +1/+1 counter on Ghost-Spider.$Remove two counters from Ghost- Spider: Exile the top card of your library. You may play that card this turn.|
Masked Meower|Marvel's Spider-Man|82|C|{R}|Creature - Spider Cat Hero|1|1|Haste$Discard a card, Sacrifice this creature: Draw a card.| Masked Meower|Marvel's Spider-Man|82|C|{R}|Creature - Spider Cat Hero|1|1|Haste$Discard a card, Sacrifice this creature: Draw a card.|
Romantic Rendezvous|Marvel's Spider-Man|86|C|{1}{R}|Sorcery|||Discard a card, then draw two cards.| Romantic Rendezvous|Marvel's Spider-Man|86|C|{1}{R}|Sorcery|||Discard a card, then draw two cards.|
Shock|Marvel's Spider-Man|88|C|{R}|Instant|||Shock deals 2 damage to any target.| Shock|Marvel's Spider-Man|88|C|{R}|Instant|||Shock deals 2 damage to any target.|
@ -59767,6 +59767,7 @@ Grow Extra Arms|Marvel's Spider-Man|101|C|{1}{G}|Instant|||This spell costs {1}
Guy in the Chair|Marvel's Spider-Man|102|C|{2}{G}|Creature - Human Advisor|2|3|{T}: Add one mana of any color.$Web Support -- {2}{G}, {T}: Put a +1/+1 counter on target Spider. Activate only as a sorcery.| Guy in the Chair|Marvel's Spider-Man|102|C|{2}{G}|Creature - Human Advisor|2|3|{T}: Add one mana of any color.$Web Support -- {2}{G}, {T}: Put a +1/+1 counter on target Spider. Activate only as a sorcery.|
Kapow!|Marvel's Spider-Man|103|C|{2}{G}|Sorcery|||Put a +1/+1 counter on target creature you control. It fights target creature an opponent controls.| Kapow!|Marvel's Spider-Man|103|C|{2}{G}|Sorcery|||Put a +1/+1 counter on target creature you control. It fights target creature an opponent controls.|
Kraven's Cats|Marvel's Spider-Man|104|C|{1}{G}|Creature - Cat Villain|2|2|{2}{G}: This creature gets +2/+2 until end of turn. Activate only once each turn.| Kraven's Cats|Marvel's Spider-Man|104|C|{1}{G}|Creature - Cat Villain|2|2|{2}{G}: This creature gets +2/+2 until end of turn. Activate only once each turn.|
Kraven's Last Hunt|Marvel's Spider-Man|105|R|{3}{G}|Enchantment - Saga|||(As this Saga enters and after your draw step, add a lore counter. Sacrifice after III.)$I -- Mill five cards. When you do, this Saga deals damage equal to the greatest power among creature cards in your graveyard to target creature.$II -- Target creature you control gets +2/+2 until end of turn.$III -- Return target creature card from your graveyard to your hand.|
Lurking Lizards|Marvel's Spider-Man|107|C|{1}{G}|Creature - Lizard Villain|1|3|Trample$Whenever you cast a spell with mana value 4 or greater, put a +1/+1 counter on this creature.| Lurking Lizards|Marvel's Spider-Man|107|C|{1}{G}|Creature - Lizard Villain|1|3|Trample$Whenever you cast a spell with mana value 4 or greater, put a +1/+1 counter on this creature.|
Miles Morales|Marvel's Spider-Man|108|M|{1}{G}|Legendary Creature - Human Citizen Hero|1|2|When Miles Morales enters, put a +1/+1 counter on each of up to two target creatures.${3}{R}{G}{W}: Transform Miles Morales. Activate only as a sorcery.| Miles Morales|Marvel's Spider-Man|108|M|{1}{G}|Legendary Creature - Human Citizen Hero|1|2|When Miles Morales enters, put a +1/+1 counter on each of up to two target creatures.${3}{R}{G}{W}: Transform Miles Morales. Activate only as a sorcery.|
Ultimate Spider-Man|Marvel's Spider-Man|108|M|{3}{R}{G}{W}|Legendary Creature - Spider Human Hero|4|3|First strike, haste$Camouflage -- {2}: Put a +1/+1 counter on Ultimate Spider-Man. He gains hexproof and becomes colorless until end of turn.$Whenever you attack, double the number of each kind of counter on each Spider and legendary creature you control.| Ultimate Spider-Man|Marvel's Spider-Man|108|M|{3}{R}{G}{W}|Legendary Creature - Spider Human Hero|4|3|First strike, haste$Camouflage -- {2}: Put a +1/+1 counter on Ultimate Spider-Man. He gains hexproof and becomes colorless until end of turn.$Whenever you attack, double the number of each kind of counter on each Spider and legendary creature you control.|
@ -59799,7 +59800,7 @@ Miles Morales|Marvel's Spider-Man|200|M|{1}{G}|Legendary Creature - Human Citize
Ultimate Spider-Man|Marvel's Spider-Man|200|M|{3}{R}{G}{W}|Legendary Creature - Spider Human Hero|4|3|First strike, haste$Camouflage -- {2}: Put a +1/+1 counter on Ultimate Spider-Man. He gains hexproof and becomes colorless until end of turn.$Whenever you attack, double the number of each kind of counter on each Spider and legendary creature you control.| Ultimate Spider-Man|Marvel's Spider-Man|200|M|{3}{R}{G}{W}|Legendary Creature - Spider Human Hero|4|3|First strike, haste$Camouflage -- {2}: Put a +1/+1 counter on Ultimate Spider-Man. He gains hexproof and becomes colorless until end of turn.$Whenever you attack, double the number of each kind of counter on each Spider and legendary creature you control.|
Spider-Ham, Peter Porker|Marvel's Spider-Man|201|R|{1}{G}|Legendary Creature - Spider Boar Hero|2|2|When Spider-Ham enters, create a Food token.$Animal May-Ham -- Other Spiders, Boars, Bats, Bears, Birds, Cats, Dogs, Frogs, Jackals, Lizards, Mice, Otters, Rabbits, Raccoons, Rats, Squirrels, Turtles, and Wolves you control get +1/+1.| Spider-Ham, Peter Porker|Marvel's Spider-Man|201|R|{1}{G}|Legendary Creature - Spider Boar Hero|2|2|When Spider-Ham enters, create a Food token.$Animal May-Ham -- Other Spiders, Boars, Bats, Bears, Birds, Cats, Dogs, Frogs, Jackals, Lizards, Mice, Otters, Rabbits, Raccoons, Rats, Squirrels, Turtles, and Wolves you control get +1/+1.|
Gwen Stacy|Marvel's Spider-Man|202|M|{1}{R}|Legendary Creature - Human Performer Hero|2|1|When Gwen Stacy enters, exile the top card of your library. You may play that card for as long as you control this creature.${2}{U}{R}{W}: Transform Gwen Stacy. Activate only as a sorcery.| Gwen Stacy|Marvel's Spider-Man|202|M|{1}{R}|Legendary Creature - Human Performer Hero|2|1|When Gwen Stacy enters, exile the top card of your library. You may play that card for as long as you control this creature.${2}{U}{R}{W}: Transform Gwen Stacy. Activate only as a sorcery.|
Ghost-Spider|Marvel's Spider-Man|202|M|{2}{U}{R}{W}|Legendary Creature - Spider Human Hero|2|1 Creature|Flying, vigilance, haste$Whenever you play a land from exile or cast a spell from exile, put a +1/+1 counter on Ghost-Spider.$Remove two counters from Ghost- Spider: Exile the top card of your library. You may play that card this turn.| Ghost-Spider|Marvel's Spider-Man|202|M|{2}{U}{R}{W}|Legendary Creature - Spider Human Hero|4|4|Flying, vigilance, haste$Whenever you play a land from exile or cast a spell from exile, put a +1/+1 counter on Ghost-Spider.$Remove two counters from Ghost- Spider: Exile the top card of your library. You may play that card this turn.|
Web-Warriors|Marvel's Spider-Man|203|U|{4}{G/W}|Creature - Spider Hero|4|3|When this creature enters, put a +1/+1 counter on each other creature you control.| Web-Warriors|Marvel's Spider-Man|203|U|{4}{G/W}|Creature - Spider Hero|4|3|When this creature enters, put a +1/+1 counter on each other creature you control.|
Spider-Man Noir|Marvel's Spider-Man|204|U|{4}{B}|Legendary Creature - Spider Human Hero|4|4|Menace$Whenever a creature you control attacks alone, put a +1/+1 counter on it. Then surveil X, where X is the number of counters on it.| Spider-Man Noir|Marvel's Spider-Man|204|U|{4}{B}|Legendary Creature - Spider Human Hero|4|4|Menace$Whenever a creature you control attacks alone, put a +1/+1 counter on it. Then surveil X, where X is the number of counters on it.|
Spider-Man 2099|Marvel's Spider-Man|205|R|{U}{R}|Legendary Creature - Spider Human Hero|2|3|From the Future -- You can't cast Spider-Man 2099 during your first, second, or third turns of the game.$Double strike, vigilance$At the beginning of your end step, if you've played a land or cast a spell this turn from anywhere other than your hand, Spider-Man 2099 deals damage equal to his power to any target.| Spider-Man 2099|Marvel's Spider-Man|205|R|{U}{R}|Legendary Creature - Spider Human Hero|2|3|From the Future -- You can't cast Spider-Man 2099 during your first, second, or third turns of the game.$Double strike, vigilance$At the beginning of your end step, if you've played a land or cast a spell this turn from anywhere other than your hand, Spider-Man 2099 deals damage equal to his power to any target.|
@ -59808,17 +59809,18 @@ Spider-Punk|Marvel's Spider-Man|207|R|{1}{R}|Legendary Creature - Spider Human H
Peter Parker|Marvel's Spider-Man|208|M|{1}{W}|Legendary Creature - Human Scientist Hero|0|1|When Peter Parker enters, create a 2/1 green Spider creature token with reach.${1}{G}{W}{U}: Transform Peter Parker. Activate only as a sorcery.| Peter Parker|Marvel's Spider-Man|208|M|{1}{W}|Legendary Creature - Human Scientist Hero|0|1|When Peter Parker enters, create a 2/1 green Spider creature token with reach.${1}{G}{W}{U}: Transform Peter Parker. Activate only as a sorcery.|
Amazing Spider-Man|Marvel's Spider-Man|208|M|{1}{G}{W}{U}|Legendary Creature - Spider Human Hero|4|4|Vigilance, reach$Each legendary spell you cast that's one or more colors has web-slinging {G}{W}{U}.| Amazing Spider-Man|Marvel's Spider-Man|208|M|{1}{G}{W}{U}|Legendary Creature - Spider Human Hero|4|4|Vigilance, reach$Each legendary spell you cast that's one or more colors has web-slinging {G}{W}{U}.|
Gwen Stacy|Marvel's Spider-Man|209|M|{1}{R}|Legendary Creature - Human Performer Hero|2|1|When Gwen Stacy enters, exile the top card of your library. You may play that card for as long as you control this creature.${2}{U}{R}{W}: Transform Gwen Stacy. Activate only as a sorcery.| Gwen Stacy|Marvel's Spider-Man|209|M|{1}{R}|Legendary Creature - Human Performer Hero|2|1|When Gwen Stacy enters, exile the top card of your library. You may play that card for as long as you control this creature.${2}{U}{R}{W}: Transform Gwen Stacy. Activate only as a sorcery.|
Ghost-Spider|Marvel's Spider-Man|209|M|{2}{U}{R}{W}|Legendary Creature - Spider Human Hero|2|1 Creature|Flying, vigilance, haste$Whenever you play a land from exile or cast a spell from exile, put a +1/+1 counter on Ghost-Spider.$Remove two counters from Ghost- Spider: Exile the top card of your library. You may play that card this turn.| Ghost-Spider|Marvel's Spider-Man|209|M|{2}{U}{R}{W}|Legendary Creature - Spider Human Hero|4|4|Flying, vigilance, haste$Whenever you play a land from exile or cast a spell from exile, put a +1/+1 counter on Ghost-Spider.$Remove two counters from Ghost- Spider: Exile the top card of your library. You may play that card this turn.|
Spider-Punk|Marvel's Spider-Man|210|R|{1}{R}|Legendary Creature - Spider Human Hero|2|1|Riot$Other Spiders you control have riot.$Spells and abilities can't be countered.$Damage can't be prevented.| Spider-Punk|Marvel's Spider-Man|210|R|{1}{R}|Legendary Creature - Spider Human Hero|2|1|Riot$Other Spiders you control have riot.$Spells and abilities can't be countered.$Damage can't be prevented.|
Miles Morales|Marvel's Spider-Man|211|M|{1}{G}|Legendary Creature - Human Citizen Hero|1|2|When Miles Morales enters, put a +1/+1 counter on each of up to two target creatures.${3}{R}{G}{W}: Transform Miles Morales. Activate only as a sorcery.| Miles Morales|Marvel's Spider-Man|211|M|{1}{G}|Legendary Creature - Human Citizen Hero|1|2|When Miles Morales enters, put a +1/+1 counter on each of up to two target creatures.${3}{R}{G}{W}: Transform Miles Morales. Activate only as a sorcery.|
Ultimate Spider-Man|Marvel's Spider-Man|211|M|{3}{R}{G}{W}|Legendary Creature - Spider Human Hero|4|3|First strike, haste$Camouflage -- {2}: Put a +1/+1 counter on Ultimate Spider-Man. He gains hexproof and becomes colorless until end of turn.$Whenever you attack, double the number of each kind of counter on each Spider and legendary creature you control.| Ultimate Spider-Man|Marvel's Spider-Man|211|M|{3}{R}{G}{W}|Legendary Creature - Spider Human Hero|4|3|First strike, haste$Camouflage -- {2}: Put a +1/+1 counter on Ultimate Spider-Man. He gains hexproof and becomes colorless until end of turn.$Whenever you attack, double the number of each kind of counter on each Spider and legendary creature you control.|
Spider-Man 2099|Marvel's Spider-Man|216|R|{U}{R}|Legendary Creature - Spider Human Hero|2|3|From the Future -- You can't cast Spider-Man 2099 during your first, second, or third turns of the game.$Double strike, vigilance$At the beginning of your end step, if you've played a land or cast a spell this turn from anywhere other than your hand, Spider-Man 2099 deals damage equal to his power to any target.| Spider-Man 2099|Marvel's Spider-Man|216|R|{U}{R}|Legendary Creature - Spider Human Hero|2|3|From the Future -- You can't cast Spider-Man 2099 during your first, second, or third turns of the game.$Double strike, vigilance$At the beginning of your end step, if you've played a land or cast a spell this turn from anywhere other than your hand, Spider-Man 2099 deals damage equal to his power to any target.|
Symbiote Spider-Man|Marvel's Spider-Man|217|R|{2}{U/B}|Legendary Creature - Symbiote Spider Hero|2|4|Whenever this creature deals combat damage to a player, look at that many cards from the top of your library. Put one of them into your hand and the rest into your graveyard.$Find New Host -- {2}{U/B}, Exile this card from your graveyard: Put a +1/+1 counter on target creature you control. It gains this card's other abilities. Activate only as a sorcery.| Symbiote Spider-Man|Marvel's Spider-Man|217|R|{2}{U/B}|Legendary Creature - Symbiote Spider Hero|2|4|Whenever this creature deals combat damage to a player, look at that many cards from the top of your library. Put one of them into your hand and the rest into your graveyard.$Find New Host -- {2}{U/B}, Exile this card from your graveyard: Put a +1/+1 counter on target creature you control. It gains this card's other abilities. Activate only as a sorcery.|
Origin of Spider-Man|Marvel's Spider-Man|218|R|{1}{W}|Enchantment - Saga|||(As this Saga enters and after your draw step, add a lore counter. Sacrifice after III.)$I -- Create a 2/1 green Spider creature token with reach.$II -- Put a +1/+1 counter on target creature you control. It becomes a legendary Spider Hero in addition to its other types.$III -- Target creature you control gains double strike until end of turn.| Origin of Spider-Man|Marvel's Spider-Man|218|R|{1}{W}|Enchantment - Saga|||(As this Saga enters and after your draw step, add a lore counter. Sacrifice after III.)$I -- Create a 2/1 green Spider creature token with reach.$II -- Put a +1/+1 counter on target creature you control. It becomes a legendary Spider Hero in addition to its other types.$III -- Target creature you control gains double strike until end of turn.|
Kraven's Last Hunt|Marvel's Spider-Man|226|R|{3}{G}|Enchantment - Saga|||(As this Saga enters and after your draw step, add a lore counter. Sacrifice after III.)$I -- Mill five cards. When you do, this Saga deals damage equal to the greatest power among creature cards in your graveyard to target creature.$II -- Target creature you control gets +2/+2 until end of turn.$III -- Return target creature card from your graveyard to your hand.|
Doctor Octopus, Master Planner|Marvel's Spider-Man|228|M|{5}{U}{B}|Legendary Creature - Human Scientist Villain|4|8|Other Villains you control get +2/+2.$Your maximum hand size is eight.$At the beginning of your end step, if you have fewer than eight cards in hand, draw cards equal to the difference.| Doctor Octopus, Master Planner|Marvel's Spider-Man|228|M|{5}{U}{B}|Legendary Creature - Human Scientist Villain|4|8|Other Villains you control get +2/+2.$Your maximum hand size is eight.$At the beginning of your end step, if you have fewer than eight cards in hand, draw cards equal to the difference.|
Peter Parker|Marvel's Spider-Man|232|M|{1}{W}|Legendary Creature - Human Scientist Hero|0|1|When Peter Parker enters, create a 2/1 green Spider creature token with reach.${1}{G}{W}{U}: Transform Peter Parker. Activate only as a sorcery.| Peter Parker|Marvel's Spider-Man|232|M|{1}{W}|Legendary Creature - Human Scientist Hero|0|1|When Peter Parker enters, create a 2/1 green Spider creature token with reach.${1}{G}{W}{U}: Transform Peter Parker. Activate only as a sorcery.|
Amazing Spider-Man|Marvel's Spider-Man|232|M|{1}{G}{W}{U}|Legendary Creature - Spider Human Hero|4|4|Vigilance, reach$Each legendary spell you cast that's one or more colors has web-slinging {G}{W}{U}.| Amazing Spider-Man|Marvel's Spider-Man|232|M|{1}{G}{W}{U}|Legendary Creature - Spider Human Hero|4|4|Vigilance, reach$Each legendary spell you cast that's one or more colors has web-slinging {G}{W}{U}.|
Miles Morales|Marvel's Spider-Man|234|M|{1}{G}|Legendary Creature - Human Citizen Hero|1|2|When Miles Morales enters, put a +1/+1 counter on each of up to two target creatures.${3}{R}{G}{W}: Transform Miles Morales. Activate only as a sorcery.| Miles Morales|Marvel's Spider-Man|234|M|{1}{G}|Legendary Creature - Human Citizen Hero|1|2|When Miles Morales enters, put a +1/+1 counter on each of up to two target creatures.${3}{R}{G}{W}: Transform Miles Morales. Activate only as a sorcery.|
Ultimate Spider-Man|Marvel's Spider-Man|234|M|{3}{R}{G}{W}|Legendary Creature - Spider Human Hero|4|3|First strike, haste$Camouflage -- {2}: Put a +1/+1 counter on Ultimate Spider-Man. He gains hexproof and becomes colorless until end of turn.$Whenever you attack, double the number of each kind of counter on each Spider and legendary creature you control.| Ultimate Spider-Man|Marvel's Spider-Man|234|M|{3}{R}{G}{W}|Legendary Creature - Spider Human Hero|4|3|First strike, haste$Camouflage -- {2}: Put a +1/+1 counter on Ultimate Spider-Man. He gains hexproof and becomes colorless until end of turn.$Whenever you attack, double the number of each kind of counter on each Spider and legendary creature you control.|
Anti-Venom, Horrifying Healer|Marvel's Spider-Man|244|M|{W}{W}{W}{W}{W}|Legendary Creature - Symbiote Hero|5|5|When Anti-Venom enters, if he was cast, return target creature card from your graveyard to the battlefield. If damage would be dealt to Anti-Venom, prevent that damage and put that many +1/+1 counters on him.| Anti-Venom, Horrifying Healer|Marvel's Spider-Man|244|M|{W}{W}{W}{W}{W}|Legendary Creature - Symbiote Hero|5|5|When Anti-Venom enters, if he was cast, return target creature card from your graveyard to the battlefield.$If damage would be dealt to Anti-Venom, prevent that damage and put that many +1/+1 counters on him.|
Iron Spider, Stark Upgrade|Marvel's Spider-Man|279|R|{3}|Legendary Artifact Creature - Spider Hero|2|3|Vigilance${T}: Put a +1/+1 counter on each artifact creature and/or Vehicle you control.${2}, Remove two +1/+1 counters from among artifacts you control: Draw a card.| Iron Spider, Stark Upgrade|Marvel's Spider-Man|279|R|{3}|Legendary Artifact Creature - Spider Hero|2|3|Vigilance${T}: Put a +1/+1 counter on each artifact creature and/or Vehicle you control.${2}, Remove two +1/+1 counters from among artifacts you control: Draw a card.|