diff --git a/Mage.Sets/src/mage/cards/s/SixSidedDie.java b/Mage.Sets/src/mage/cards/s/SixSidedDie.java index 83d1fe6912d..9f1e16cee85 100644 --- a/Mage.Sets/src/mage/cards/s/SixSidedDie.java +++ b/Mage.Sets/src/mage/cards/s/SixSidedDie.java @@ -1,15 +1,12 @@ package mage.cards.s; import mage.abilities.Ability; +import mage.abilities.effects.ContinuousEffectImpl; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.continuous.BoostTargetEffect; -import mage.abilities.effects.common.continuous.SetBasePowerToughnessTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.Outcome; -import mage.constants.Zone; +import mage.constants.*; import mage.counters.CounterType; import mage.game.Game; import mage.game.permanent.Permanent; @@ -25,20 +22,13 @@ public final class SixSidedDie extends CardImpl { public SixSidedDie(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{B}"); - // Choose target creature. Roll a six-sided die. - // - //1 — It has base toughness 1 until end of turn. - // - //2 — Put two -1/-1 counters on it. - // - //3 — Six-Sided Die deals 3 damage to it, and you gain 3 life. - // - //4 — It gets -4/-4 until end of turn. - // - //5 — Destroy it. - // - //6 — Exile it. + // 1 — It has base toughness 1 until end of turn. + // 2 — Put two -1/-1 counters on it. + // 3 — Six-Sided Die deals 3 damage to it, and you gain 3 life. + // 4 — It gets -4/-4 until end of turn. + // 5 — Destroy it. + // 6 — Exile it. this.getSpellAbility().addTarget(new TargetCreaturePermanent()); this.getSpellAbility().addEffect(new SixSidedDieEffect()); } @@ -56,7 +46,8 @@ public final class SixSidedDie extends CardImpl { class SixSidedDieEffect extends OneShotEffect { SixSidedDieEffect() { - super(Outcome.Benefit); + super(Outcome.Detriment); + setText("choose target creature. Roll a six-sided die." + "
1 — It has base toughness 1 until end of turn." + "
2 — Put two -1/-1 counters on it." + @@ -82,10 +73,11 @@ class SixSidedDieEffect extends OneShotEffect { if (player == null || permanent == null) { return false; } - int result = player.rollDice(outcome, source, game, 1); + int result = player.rollDice(outcome, source, game, 6); switch (result) { - case 6: - game.addEffect(new SetBasePowerToughnessTargetEffect(1, 1, Duration.EndOfTurn), source); + case 1: + //Based on Chariot of the Sun + game.addEffect(new SixSidedDieToughnessEffect(), source); break; case 2: permanent.addCounters(CounterType.M1M1.createInstance(2), source, game); @@ -100,10 +92,34 @@ class SixSidedDieEffect extends OneShotEffect { case 5: permanent.destroy(source, game); break; - case 1: + case 6: + player.moveCards(permanent, Zone.EXILED, source, game); break; } return true; } } + +class SixSidedDieToughnessEffect extends ContinuousEffectImpl { + + SixSidedDieToughnessEffect() { + super(Duration.EndOfTurn, Layer.PTChangingEffects_7, SubLayer.SetPT_7b, Outcome.UnboostCreature); + } + + private SixSidedDieToughnessEffect(final SixSidedDieToughnessEffect effect) { + super(effect); + } + + @Override + public SixSidedDieToughnessEffect copy() { + return new SixSidedDieToughnessEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + Permanent permanent = game.getPermanent(getTargetPointer().getFirst(game, source)); + permanent.getToughness().setModifiedBaseValue(1); + return true; + } +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/cards/s/StrengthTestingHammer.java b/Mage.Sets/src/mage/cards/s/StrengthTestingHammer.java new file mode 100644 index 00000000000..a3c56ecdb5b --- /dev/null +++ b/Mage.Sets/src/mage/cards/s/StrengthTestingHammer.java @@ -0,0 +1,105 @@ +package mage.cards.s; + +import mage.abilities.Ability; +import mage.abilities.TriggeredAbility; +import mage.abilities.common.AttacksAttachedTriggeredAbility; +import mage.abilities.condition.Condition; +import mage.abilities.decorator.ConditionalOneShotEffect; +import mage.abilities.effects.OneShotEffect; +import mage.abilities.effects.common.DrawCardSourceControllerEffect; +import mage.abilities.effects.common.continuous.BoostEquippedEffect; +import mage.abilities.keyword.EquipAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.*; +import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.PowerPredicate; +import mage.game.Game; +import mage.game.permanent.Permanent; +import mage.players.Player; + +import java.util.UUID; + +/** + * @author Sidorovich77 + */ +public final class StrengthTestingHammer extends CardImpl { + + + public StrengthTestingHammer(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{1}"); + + this.subtype.add(SubType.EQUIPMENT); + + //Whenever equipped creature attacks, roll a six-sided die. + // That creature gets +X/+0 until end of turn, where X is the result. + // Then, if it has the greatest power or is tied for greatest power among creatures on the battlefield, draw a card. + + + TriggeredAbility ability = new AttacksAttachedTriggeredAbility(new StrengthTestingHammerEffect()); + ability.addEffect(new ConditionalOneShotEffect(new DrawCardSourceControllerEffect(1), StrengthTestingHammerCondition.instance).setText("Then if it has the greatest power or is tied for greatest power among creatures on the battlefield, draw a card.")); + this.addAbility(ability); + + // Equip {3} + this.addAbility(new EquipAbility(3)); + } + + private StrengthTestingHammer(final StrengthTestingHammer card) { + super(card); + } + + @Override + public StrengthTestingHammer copy() { + return new StrengthTestingHammer(this); + } +} + +//Based on Historian's Wisdom +enum StrengthTestingHammerCondition implements Condition { + instance; + + @Override + public boolean apply(Game game, Ability source) { + Permanent hammer = source.getSourcePermanentIfItStillExists(game); + if (hammer == null) { + return false; + } + Permanent creature = game.getPermanent(hammer.getAttachedTo()); + if (creature == null) { + return false; + } + FilterCreaturePermanent filter = new FilterCreaturePermanent(); + filter.add(new PowerPredicate(ComparisonType.MORE_THAN, creature.getPower().getValue())); + return game.getBattlefield().getActivePermanents(filter, source.getControllerId(), source, game).isEmpty(); + } +} + +class StrengthTestingHammerEffect extends OneShotEffect { + + StrengthTestingHammerEffect() { + super(Outcome.Benefit); + staticText = "roll a six-sided die. That creature gets +X/+0 until end of turn, where X is the result."; + } + + private StrengthTestingHammerEffect(final StrengthTestingHammerEffect effect) { + super(effect); + } + + @Override + public StrengthTestingHammerEffect copy() { + return new StrengthTestingHammerEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + Player player = game.getPlayer(source.getControllerId()); + if (player != null) { + int result = player.rollDice(outcome, source, game, 6); + game.addEffect(new BoostEquippedEffect(result, 0, Duration.EndOfTurn), source); + } + return false; + } +} + + + diff --git a/Mage.Sets/src/mage/sets/Unfinity.java b/Mage.Sets/src/mage/sets/Unfinity.java index b6afc3459e9..cf31e282786 100644 --- a/Mage.Sets/src/mage/sets/Unfinity.java +++ b/Mage.Sets/src/mage/sets/Unfinity.java @@ -56,6 +56,7 @@ public final class Unfinity extends ExpansionSet { cards.add(new SetCardInfo("Slight Malfunction", 123, Rarity.COMMON, mage.cards.s.SlightMalfunction.class)); cards.add(new SetCardInfo("Starlight Spectacular", 28, Rarity.RARE, mage.cards.s.StarlightSpectacular.class)); cards.add(new SetCardInfo("Steam Vents", 283, Rarity.RARE, mage.cards.s.SteamVents.class)); + cards.add(new SetCardInfo("Strength-Testing Hammer", 193, Rarity.UNCOMMON, mage.cards.s.StrengthTestingHammer.class)); cards.add(new SetCardInfo("Stomping Ground", 280, Rarity.RARE, mage.cards.s.StompingGround.class)); cards.add(new SetCardInfo("Swamp", 237, Rarity.LAND, mage.cards.basiclands.Swamp.class, FULL_ART_UST_VARIOUS)); cards.add(new SetCardInfo("Swamp", 242, Rarity.LAND, mage.cards.basiclands.Swamp.class, FULL_ART_UST_VARIOUS));