From 296f71536ac4c5f9a3d5bef728764d01a3d6bfee Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Fri, 17 Jan 2014 01:44:55 +0100 Subject: [PATCH] Fixed some wrong card numbers of 6th edition cards. Fixed some tooltip bugs. --- .../mage/sets/fifthedition/AshnodsAltar.java | 3 +- .../mage/sets/fifthedition/RadjanSpirit.java | 5 +- .../mage/sets/limitedalpha/PsychicVenom.java | 20 ++++--- .../src/mage/sets/sixthedition/IronStar.java | 4 +- .../src/mage/sets/sixthedition/IvoryCup.java | 4 +- .../src/mage/sets/sixthedition/JalumTome.java | 2 +- .../src/mage/sets/sixthedition/LeadGolem.java | 2 +- .../src/mage/sets/sixthedition/ManaPrism.java | 2 +- .../mage/sets/sixthedition/MarbleDiamond.java | 2 +- .../mage/sets/sixthedition/PatagiaGolem.java | 2 +- .../mage/sets/weatherlight/DenseFoliage.java | 2 +- .../effects/common/CantTargetEffect.java | 22 ++++---- .../common/DrawDiscardControllerEffect.java | 2 +- .../continious/LoseAbilityTargetEffect.java | 24 +++++++++ Utils/mtg-cards-data.txt | 52 +++++++++---------- 15 files changed, 88 insertions(+), 60 deletions(-) diff --git a/Mage.Sets/src/mage/sets/fifthedition/AshnodsAltar.java b/Mage.Sets/src/mage/sets/fifthedition/AshnodsAltar.java index ef641c3204c..577932d9b9b 100644 --- a/Mage.Sets/src/mage/sets/fifthedition/AshnodsAltar.java +++ b/Mage.Sets/src/mage/sets/fifthedition/AshnodsAltar.java @@ -35,6 +35,7 @@ import mage.cards.CardImpl; import mage.constants.CardType; import mage.constants.Rarity; import mage.constants.Zone; +import mage.filter.common.FilterControlledCreaturePermanent; import mage.target.common.TargetControlledCreaturePermanent; /** @@ -48,7 +49,7 @@ public class AshnodsAltar extends CardImpl { this.expansionSetCode = "5ED"; // Sacrifice a creature: Add {2} to your mana pool. - SacrificeTargetCost cost = new SacrificeTargetCost(new TargetControlledCreaturePermanent()); + SacrificeTargetCost cost = new SacrificeTargetCost(new TargetControlledCreaturePermanent(1,1,new FilterControlledCreaturePermanent("a creature"), true)); this.addAbility(new SimpleManaAbility(Zone.BATTLEFIELD, Mana.ColorlessMana(2), cost)); } diff --git a/Mage.Sets/src/mage/sets/fifthedition/RadjanSpirit.java b/Mage.Sets/src/mage/sets/fifthedition/RadjanSpirit.java index afff38effaf..4968d8cc0bd 100644 --- a/Mage.Sets/src/mage/sets/fifthedition/RadjanSpirit.java +++ b/Mage.Sets/src/mage/sets/fifthedition/RadjanSpirit.java @@ -36,6 +36,7 @@ import mage.abilities.effects.common.continious.LoseAbilityTargetEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.constants.CardType; +import mage.constants.Duration; import mage.constants.Rarity; import mage.constants.Zone; import mage.target.common.TargetCreaturePermanent; @@ -56,8 +57,8 @@ public class RadjanSpirit extends CardImpl { this.toughness = new MageInt(2); // {tap}: Target creature loses flying until end of turn. - Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new LoseAbilityTargetEffect(FlyingAbility.getInstance()), new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent()); + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new LoseAbilityTargetEffect(FlyingAbility.getInstance(), Duration.EndOfTurn), new TapSourceCost()); + ability.addTarget(new TargetCreaturePermanent(true)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/sets/limitedalpha/PsychicVenom.java b/Mage.Sets/src/mage/sets/limitedalpha/PsychicVenom.java index f1c86d15b73..e67f0dc0143 100644 --- a/Mage.Sets/src/mage/sets/limitedalpha/PsychicVenom.java +++ b/Mage.Sets/src/mage/sets/limitedalpha/PsychicVenom.java @@ -29,22 +29,22 @@ package mage.sets.limitedalpha; import java.util.UUID; import mage.abilities.Ability; +import mage.abilities.TriggeredAbilityImpl; +import mage.abilities.effects.Effect; import mage.abilities.effects.common.AttachEffect; +import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.keyword.EnchantAbility; import mage.cards.CardImpl; import mage.constants.CardType; import mage.constants.Outcome; import mage.constants.Rarity; import mage.constants.Zone; -import mage.target.TargetPermanent; -import mage.target.common.TargetLandPermanent; -import mage.abilities.TriggeredAbilityImpl; -import mage.abilities.effects.common.LoseLifeTargetEffect; -import mage.target.targetpointer.FixedTarget; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.permanent.Permanent; -import mage.abilities.effects.Effect; +import mage.target.TargetPermanent; +import mage.target.common.TargetLandPermanent; +import mage.target.targetpointer.FixedTarget; /** * @@ -61,14 +61,12 @@ public class PsychicVenom extends CardImpl { this.color.setBlue(true); // Enchant land - // Whenever enchanted land becomes tapped, Psychic Venom deals 2 damage to that land's controller. - // Enchant land TargetPermanent auraTarget = new TargetLandPermanent(); this.getSpellAbility().addTarget(auraTarget); this.getSpellAbility().addEffect(new AttachEffect(Outcome.Detriment)); Ability ability = new EnchantAbility(auraTarget.getTargetName()); this.addAbility(ability); - // Whenever enchanted land becomes tapped, its controller loses 2 life. + // Whenever enchanted land becomes tapped, Psychic Venom deals 2 damage to that land's controller.. this.addAbility(new PsychicVenomAbility()); } @@ -84,7 +82,7 @@ public class PsychicVenom extends CardImpl { class PsychicVenomAbility extends TriggeredAbilityImpl { PsychicVenomAbility() { - super(Zone.BATTLEFIELD, new LoseLifeTargetEffect(2)); + super(Zone.BATTLEFIELD, new DamageTargetEffect(2)); } PsychicVenomAbility(final PsychicVenomAbility ability) { @@ -116,6 +114,6 @@ class PsychicVenomAbility extends TriggeredAbilityImpl { @Override public String getRule() { - return "Whenever enchanted land becomes tapped, its controller loses 2 life."; + return "Whenever enchanted land becomes tapped, " + super.getRule(); } } diff --git a/Mage.Sets/src/mage/sets/sixthedition/IronStar.java b/Mage.Sets/src/mage/sets/sixthedition/IronStar.java index dae62400455..2b16db72f44 100644 --- a/Mage.Sets/src/mage/sets/sixthedition/IronStar.java +++ b/Mage.Sets/src/mage/sets/sixthedition/IronStar.java @@ -31,14 +31,14 @@ import java.util.UUID; /** * - * @author KholdFuzion + * @author KholdFuzion */ public class IronStar extends mage.sets.limitedalpha.IronStar { public IronStar(UUID ownerId) { super(ownerId); - this.cardNumber = 290; + this.cardNumber = 291; this.expansionSetCode = "6ED"; } diff --git a/Mage.Sets/src/mage/sets/sixthedition/IvoryCup.java b/Mage.Sets/src/mage/sets/sixthedition/IvoryCup.java index be6138442b8..0b546c8d8c9 100644 --- a/Mage.Sets/src/mage/sets/sixthedition/IvoryCup.java +++ b/Mage.Sets/src/mage/sets/sixthedition/IvoryCup.java @@ -31,14 +31,14 @@ import java.util.UUID; /** * - * @author KholdFuzion + * @author KholdFuzion */ public class IvoryCup extends mage.sets.limitedalpha.IvoryCup { public IvoryCup(UUID ownerId) { super(ownerId); - this.cardNumber = 291; + this.cardNumber = 292; this.expansionSetCode = "6ED"; } diff --git a/Mage.Sets/src/mage/sets/sixthedition/JalumTome.java b/Mage.Sets/src/mage/sets/sixthedition/JalumTome.java index c943300fb2a..8b1b1d0a01f 100644 --- a/Mage.Sets/src/mage/sets/sixthedition/JalumTome.java +++ b/Mage.Sets/src/mage/sets/sixthedition/JalumTome.java @@ -37,7 +37,7 @@ public class JalumTome extends mage.sets.seventhedition.JalumTome { public JalumTome(UUID ownerId) { super(ownerId); - this.cardNumber = 293; + this.cardNumber = 294; this.expansionSetCode = "6ED"; } diff --git a/Mage.Sets/src/mage/sets/sixthedition/LeadGolem.java b/Mage.Sets/src/mage/sets/sixthedition/LeadGolem.java index 32159cfc7d8..6de3771ee72 100644 --- a/Mage.Sets/src/mage/sets/sixthedition/LeadGolem.java +++ b/Mage.Sets/src/mage/sets/sixthedition/LeadGolem.java @@ -37,7 +37,7 @@ public class LeadGolem extends mage.sets.mirage.LeadGolem { public LeadGolem(UUID ownerId) { super(ownerId); - this.cardNumber = 295; + this.cardNumber = 296; this.expansionSetCode = "6ED"; } diff --git a/Mage.Sets/src/mage/sets/sixthedition/ManaPrism.java b/Mage.Sets/src/mage/sets/sixthedition/ManaPrism.java index 91403e60891..c602423249b 100644 --- a/Mage.Sets/src/mage/sets/sixthedition/ManaPrism.java +++ b/Mage.Sets/src/mage/sets/sixthedition/ManaPrism.java @@ -37,7 +37,7 @@ public class ManaPrism extends mage.sets.mirage.ManaPrism { public ManaPrism(UUID ownerId) { super(ownerId); - this.cardNumber = 296; + this.cardNumber = 297; this.expansionSetCode = "6ED"; } diff --git a/Mage.Sets/src/mage/sets/sixthedition/MarbleDiamond.java b/Mage.Sets/src/mage/sets/sixthedition/MarbleDiamond.java index 88e20672e2d..65cf29937d5 100644 --- a/Mage.Sets/src/mage/sets/sixthedition/MarbleDiamond.java +++ b/Mage.Sets/src/mage/sets/sixthedition/MarbleDiamond.java @@ -37,7 +37,7 @@ public class MarbleDiamond extends mage.sets.seventhedition.MarbleDiamond { public MarbleDiamond(UUID ownerId) { super(ownerId); - this.cardNumber = 297; + this.cardNumber = 298; this.expansionSetCode = "6ED"; } diff --git a/Mage.Sets/src/mage/sets/sixthedition/PatagiaGolem.java b/Mage.Sets/src/mage/sets/sixthedition/PatagiaGolem.java index adb8acec779..2301e1d4eaa 100644 --- a/Mage.Sets/src/mage/sets/sixthedition/PatagiaGolem.java +++ b/Mage.Sets/src/mage/sets/sixthedition/PatagiaGolem.java @@ -37,7 +37,7 @@ public class PatagiaGolem extends mage.sets.seventhedition.PatagiaGolem { public PatagiaGolem(UUID ownerId) { super(ownerId); - this.cardNumber = 304; + this.cardNumber = 305; this.expansionSetCode = "6ED"; } diff --git a/Mage.Sets/src/mage/sets/weatherlight/DenseFoliage.java b/Mage.Sets/src/mage/sets/weatherlight/DenseFoliage.java index b0218811913..5b8b434c9b2 100644 --- a/Mage.Sets/src/mage/sets/weatherlight/DenseFoliage.java +++ b/Mage.Sets/src/mage/sets/weatherlight/DenseFoliage.java @@ -51,7 +51,7 @@ public class DenseFoliage extends CardImpl { this.color.setGreen(true); // Creatures can't be the targets of spells. - CantTargetEffect cantTargetEffect = new CantTargetEffect(new FilterCreaturePermanent("Creatures"), new FilterSpell(), Duration.WhileOnBattlefield); + CantTargetEffect cantTargetEffect = new CantTargetEffect(new FilterCreaturePermanent("Creatures"), new FilterSpell("spells"), Duration.WhileOnBattlefield); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, cantTargetEffect)); } diff --git a/Mage/src/mage/abilities/effects/common/CantTargetEffect.java b/Mage/src/mage/abilities/effects/common/CantTargetEffect.java index 5e7e4149cbc..0a2086960eb 100644 --- a/Mage/src/mage/abilities/effects/common/CantTargetEffect.java +++ b/Mage/src/mage/abilities/effects/common/CantTargetEffect.java @@ -30,12 +30,10 @@ package mage.abilities.effects.common; import mage.constants.Duration; import mage.constants.Outcome; -import mage.constants.TargetController; import mage.abilities.Ability; import mage.abilities.effects.ReplacementEffectImpl; import mage.filter.FilterPermanent; import mage.filter.FilterStackObject; -import mage.filter.predicate.permanent.ControllerPredicate; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.events.GameEvent.EventType; @@ -51,6 +49,10 @@ public class CantTargetEffect extends ReplacementEffectImpl { private FilterPermanent filterTarget; private FilterStackObject filterSource; + public CantTargetEffect(FilterPermanent filterTarget, Duration duration) { + this(filterTarget, null, duration); + } + public CantTargetEffect(FilterPermanent filterTarget, FilterStackObject filterSource, Duration duration) { super(duration, Outcome.Benefit); this.filterTarget = filterTarget; @@ -58,16 +60,15 @@ public class CantTargetEffect extends ReplacementEffectImpl { setText(); } - public CantTargetEffect(FilterPermanent filterTarget, Duration duration) { - this(filterTarget, null, duration); - } public CantTargetEffect(final CantTargetEffect effect) { super(effect); - if (effect.filterTarget != null) + if (effect.filterTarget != null) { this.filterTarget = effect.filterTarget.copy(); - if (effect.filterSource != null) + } + if (effect.filterSource != null) { this.filterSource = effect.filterSource.copy(); + } } @Override @@ -90,8 +91,9 @@ public class CantTargetEffect extends ReplacementEffectImpl { if (event.getType() == EventType.TARGET) { Permanent permanent = game.getPermanent(event.getTargetId()); if (permanent != null && filterTarget.match(permanent, source.getSourceId(), source.getControllerId(), game)) { - if (filterSource == null) + if (filterSource == null) { return true; + } else { StackObject sourceObject = game.getStack().getStackObject(event.getSourceId()); if (sourceObject != null && filterSource.match(sourceObject, sourceObject.getSourceId(), game)) { @@ -112,7 +114,9 @@ public class CantTargetEffect extends ReplacementEffectImpl { else { sb.append("spells"); } - sb.append(" ").append(duration.toString()); + if (!duration.toString().isEmpty()) { + sb.append(" ").append(duration.toString()); + } staticText = sb.toString(); } diff --git a/Mage/src/mage/abilities/effects/common/DrawDiscardControllerEffect.java b/Mage/src/mage/abilities/effects/common/DrawDiscardControllerEffect.java index 251843ae5c3..08027a7f419 100644 --- a/Mage/src/mage/abilities/effects/common/DrawDiscardControllerEffect.java +++ b/Mage/src/mage/abilities/effects/common/DrawDiscardControllerEffect.java @@ -57,7 +57,7 @@ public class DrawDiscardControllerEffect extends OneShotEffect 1){ + if (target.getNumberOfTargets() < target.getMaxNumberOfTargets()) { + sb.append("Up to"); + } + sb.append(target.getMaxNumberOfTargets()).append(" target ").append(target.getTargetName()).append(" loses "); + } else { + sb.append("Target ").append(target.getTargetName()).append(" loses "); + } + sb.append(ability.getRule()); + if (!duration.toString().isEmpty()) { + sb.append(" ").append(duration.toString()); + } + return sb.toString(); + } } diff --git a/Utils/mtg-cards-data.txt b/Utils/mtg-cards-data.txt index b98cb3f2cb0..85b927ddc1b 100644 --- a/Utils/mtg-cards-data.txt +++ b/Utils/mtg-cards-data.txt @@ -2133,35 +2133,35 @@ Glasses of Urza|Classic Sixth Edition|287|U|{1}|Artifact|||{tap}: Look at target Grinning Totem|Classic Sixth Edition|288|R|{4}|Artifact|||{2}, {tap}, Sacrifice Grinning Totem: Search target opponent's library for a card and exile it. Then that player shuffles his or her library. Until the beginning of your next upkeep, you may play that card. At the beginning of your next upkeep, if you haven't played it, put it into its owner's graveyard.| Howling Mine|Classic Sixth Edition|289|R|{2}|Artifact|||At the beginning of each player's draw step, if Howling Mine is untapped, that player draws an additional card.| Light of Day|Classic Sixth Edition|29|U|{3}{W}|Enchantment|||Black creatures can't attack or block.| -Iron Star|Classic Sixth Edition|290|U|{1}|Artifact|||Whenever a player casts a red spell, you may pay {1}. If you do, you gain 1 life.| -Ivory Cup|Classic Sixth Edition|291|U|{1}|Artifact|||Whenever a player casts a white spell, you may pay {1}. If you do, you gain 1 life.| -Jade Monolith|Classic Sixth Edition|292|R|{4}|Artifact|||{1}: The next time a source of your choice would deal damage to target creature this turn, that source deals that damage to you instead.| -Jalum Tome|Classic Sixth Edition|293|R|{3}|Artifact|||{2}, {tap}: Draw a card, then discard a card.| -Jayemdae Tome|Classic Sixth Edition|294|R|{4}|Artifact|||{4}, {tap}: Draw a card.| -Lead Golem|Classic Sixth Edition|295|U|{5}|Artifact Creature - Golem|3|5|Whenever Lead Golem attacks, it doesn't untap during its controller's next untap step.| -Mana Prism|Classic Sixth Edition|296|U|{3}|Artifact|||{tap}: Add {1} to your mana pool.$${1}, {tap}: Add one mana of any color to your mana pool.| -Marble Diamond|Classic Sixth Edition|297|U|{2}|Artifact|||Marble Diamond enters the battlefield tapped.${tap}: Add {W} to your mana pool.| -Meekstone|Classic Sixth Edition|298|R|{1}|Artifact|||Creatures with power 3 or greater don't untap during their controllers' untap steps.| -Millstone|Classic Sixth Edition|299|R|{2}|Artifact|||{2}, {tap}: Target player puts the top two cards of his or her library into his or her graveyard.| +Iron Star|Classic Sixth Edition|291|U|{1}|Artifact|||Whenever a player casts a red spell, you may pay {1}. If you do, you gain 1 life.| +Ivory Cup|Classic Sixth Edition|292|U|{1}|Artifact|||Whenever a player casts a white spell, you may pay {1}. If you do, you gain 1 life.| +Jade Monolith|Classic Sixth Edition|293|R|{4}|Artifact|||{1}: The next time a source of your choice would deal damage to target creature this turn, that source deals that damage to you instead.| +Jalum Tome|Classic Sixth Edition|294|R|{3}|Artifact|||{2}, {tap}: Draw a card, then discard a card.| +Jayemdae Tome|Classic Sixth Edition|295|R|{4}|Artifact|||{4}, {tap}: Draw a card.| +Lead Golem|Classic Sixth Edition|296|U|{5}|Artifact Creature - Golem|3|5|Whenever Lead Golem attacks, it doesn't untap during its controller's next untap step.| +Mana Prism|Classic Sixth Edition|297|U|{3}|Artifact|||{tap}: Add {1} to your mana pool.$${1}, {tap}: Add one mana of any color to your mana pool.| +Marble Diamond|Classic Sixth Edition|298|U|{2}|Artifact|||Marble Diamond enters the battlefield tapped.${tap}: Add {W} to your mana pool.| +Meekstone|Classic Sixth Edition|299|R|{1}|Artifact|||Creatures with power 3 or greater don't untap during their controllers' untap steps.| +Millstone|Classic Sixth Edition|300|R|{2}|Artifact|||{2}, {tap}: Target player puts the top two cards of his or her library into his or her graveyard.| Ardent Militia|Classic Sixth Edition|3|U|{4}{W}|Creature - Human Soldier|2|5|Vigilance| Longbow Archer|Classic Sixth Edition|30|U|{W}{W}|Creature - Human Soldier Archer|2|2|First strike; reach (This creature can block creatures with flying.)| -Moss Diamond|Classic Sixth Edition|300|U|{2}|Artifact|||Moss Diamond enters the battlefield tapped.${tap}: Add {G} to your mana pool.| -Mystic Compass|Classic Sixth Edition|301|U|{2}|Artifact|||{1}, {tap}: Target land becomes the basic land type of your choice until end of turn.| -Obsianus Golem|Classic Sixth Edition|302|U|{6}|Artifact Creature - Golem|4|6|| -Ornithopter|Classic Sixth Edition|303|U|{0}|Artifact Creature - Thopter|0|2|Flying| -Patagia Golem|Classic Sixth Edition|304|U|{4}|Artifact Creature - Golem|2|3|{3}: Patagia Golem gains flying until end of turn.| -Pentagram of the Ages|Classic Sixth Edition|305|R|{4}|Artifact|||{4}, {tap}: The next time a source of your choice would deal damage to you this turn, prevent that damage.| -Phyrexian Vault|Classic Sixth Edition|306|U|{3}|Artifact|||{2}, {tap}, Sacrifice a creature: Draw a card.| -Primal Clay|Classic Sixth Edition|307|R|{4}|Artifact Creature - Shapeshifter|*|*|As Primal Clay enters the battlefield, it becomes your choice of a 3/3 artifact creature, a 2/2 artifact creature with flying, or a 1/6 Wall artifact creature with defender in addition to its other types. (A creature with defender can't attack.)| -Rod of Ruin|Classic Sixth Edition|308|U|{4}|Artifact|||{3}, {tap}: Rod of Ruin deals 1 damage to target creature or player.| -Skull Catapult|Classic Sixth Edition|309|U|{4}|Artifact|||{1}, {tap}, Sacrifice a creature: Skull Catapult deals 2 damage to target creature or player.| +Moss Diamond|Classic Sixth Edition|301|U|{2}|Artifact|||Moss Diamond enters the battlefield tapped.${tap}: Add {G} to your mana pool.| +Mystic Compass|Classic Sixth Edition|302|U|{2}|Artifact|||{1}, {tap}: Target land becomes the basic land type of your choice until end of turn.| +Obsianus Golem|Classic Sixth Edition|303|U|{6}|Artifact Creature - Golem|4|6|| +Ornithopter|Classic Sixth Edition|304|U|{0}|Artifact Creature - Thopter|0|2|Flying| +Patagia Golem|Classic Sixth Edition|305|U|{4}|Artifact Creature - Golem|2|3|{3}: Patagia Golem gains flying until end of turn.| +Pentagram of the Ages|Classic Sixth Edition|306|R|{4}|Artifact|||{4}, {tap}: The next time a source of your choice would deal damage to you this turn, prevent that damage.| +Phyrexian Vault|Classic Sixth Edition|307|U|{3}|Artifact|||{2}, {tap}, Sacrifice a creature: Draw a card.| +Primal Clay|Classic Sixth Edition|308|R|{4}|Artifact Creature - Shapeshifter|*|*|As Primal Clay enters the battlefield, it becomes your choice of a 3/3 artifact creature, a 2/2 artifact creature with flying, or a 1/6 Wall artifact creature with defender in addition to its other types. (A creature with defender can't attack.)| +Rod of Ruin|Classic Sixth Edition|309|U|{4}|Artifact|||{3}, {tap}: Rod of Ruin deals 1 damage to target creature or player.| +Skull Catapult|Classic Sixth Edition|310|U|{4}|Artifact|||{1}, {tap}, Sacrifice a creature: Skull Catapult deals 2 damage to target creature or player.| Mesa Falcon|Classic Sixth Edition|31|C|{1}{W}|Creature - Bird|1|1|Flying${1}{W}: Mesa Falcon gets +0/+1 until end of turn.| -Sky Diamond|Classic Sixth Edition|310|U|{2}|Artifact|||Sky Diamond enters the battlefield tapped.${tap}: Add {U} to your mana pool.| -Snake Basket|Classic Sixth Edition|311|R|{4}|Artifact|||{X}, Sacrifice Snake Basket: Put X 1/1 green Snake creature tokens onto the battlefield. Activate this ability only any time you could cast a sorcery.| -Soul Net|Classic Sixth Edition|312|U|{1}|Artifact|||Whenever a creature dies, you may pay {1}. If you do, you gain 1 life.| -Storm Cauldron|Classic Sixth Edition|313|R|{5}|Artifact|||Each player may play an additional land during each of his or her turns.$Whenever a land is tapped for mana, return it to its owner's hand.| -Teferi's Puzzle Box|Classic Sixth Edition|314|R|{4}|Artifact|||At the beginning of each player's draw step, that player puts the cards in his or her hand on the bottom of his or her library in any order, then draws that many cards.| -The Hive|Classic Sixth Edition|315|R|{5}|Artifact|||{5}, {tap}: Put a 1/1 colorless Insect artifact creature token with flying named Wasp onto the battlefield. (It can't be blocked except by creatures with flying or reach.)| +Sky Diamond|Classic Sixth Edition|311|U|{2}|Artifact|||Sky Diamond enters the battlefield tapped.${tap}: Add {U} to your mana pool.| +Snake Basket|Classic Sixth Edition|312|R|{4}|Artifact|||{X}, Sacrifice Snake Basket: Put X 1/1 green Snake creature tokens onto the battlefield. Activate this ability only any time you could cast a sorcery.| +Soul Net|Classic Sixth Edition|313|U|{1}|Artifact|||Whenever a creature dies, you may pay {1}. If you do, you gain 1 life.| +Storm Cauldron|Classic Sixth Edition|314|R|{5}|Artifact|||Each player may play an additional land during each of his or her turns.$Whenever a land is tapped for mana, return it to its owner's hand.| +Teferi's Puzzle Box|Classic Sixth Edition|315|R|{4}|Artifact|||At the beginning of each player's draw step, that player puts the cards in his or her hand on the bottom of his or her library in any order, then draws that many cards.| +The Hive|Classic Sixth Edition|289|R|{5}|Artifact|||{5}, {tap}: Put a 1/1 colorless Insect artifact creature token with flying named Wasp onto the battlefield. (It can't be blocked except by creatures with flying or reach.)| Throne of Bone|Classic Sixth Edition|316|U|{1}|Artifact|||Whenever a player casts a black spell, you may pay {1}. If you do, you gain 1 life.| Wand of Denial|Classic Sixth Edition|317|R|{2}|Artifact|||{tap}: Look at the top card of target player's library. If it's a nonland card, you may pay 2 life. If you do, put it into that player's graveyard.| Wooden Sphere|Classic Sixth Edition|318|U|{1}|Artifact|||Whenever a player casts a green spell, you may pay {1}. If you do, you gain 1 life.|