diff --git a/Mage.Sets/src/mage/cards/h/HurskaSweetTooth.java b/Mage.Sets/src/mage/cards/h/HurskaSweetTooth.java new file mode 100644 index 00000000000..750dcf27cc4 --- /dev/null +++ b/Mage.Sets/src/mage/cards/h/HurskaSweetTooth.java @@ -0,0 +1,57 @@ +package mage.cards.h; + +import mage.MageInt; +import mage.abilities.common.AttacksTriggeredAbility; +import mage.abilities.common.GainLifeControllerTriggeredAbility; +import mage.abilities.common.delayed.ReflexiveTriggeredAbility; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.dynamicvalue.common.SavedGainedLifeValue; +import mage.abilities.effects.common.CreateTokenEffect; +import mage.abilities.effects.common.DoWhenCostPaid; +import mage.abilities.effects.common.continuous.BoostTargetEffect; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.SubType; +import mage.constants.SuperType; +import mage.game.permanent.token.FoodToken; +import mage.target.common.TargetCreaturePermanent; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class HurskaSweetTooth extends CardImpl { + + public HurskaSweetTooth(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}"); + + this.supertype.add(SuperType.LEGENDARY); + this.subtype.add(SubType.BEAR); + this.power = new MageInt(3); + this.toughness = new MageInt(3); + + // Whenever Hurska Sweet-Tooth attacks, create a Food token. + this.addAbility(new AttacksTriggeredAbility(new CreateTokenEffect(new FoodToken()))); + + // Whenever you gain life, you may pay {G/W}. When you do, target creature gets +X/+X until end of turn, where X is the amount of life you gained. + ReflexiveTriggeredAbility ability = new ReflexiveTriggeredAbility( + new BoostTargetEffect(SavedGainedLifeValue.MANY, SavedGainedLifeValue.MANY) + .setText("target creature gets +X/+X until end of turn, where X is the amount of life you gained"), false + ); + ability.addTarget(new TargetCreaturePermanent()); + this.addAbility(new GainLifeControllerTriggeredAbility( + new DoWhenCostPaid(ability, new ManaCostsImpl<>("{G/W}"), "Pay {G/W}?") + )); + } + + private HurskaSweetTooth(final HurskaSweetTooth card) { + super(card); + } + + @Override + public HurskaSweetTooth copy() { + return new HurskaSweetTooth(this); + } +} diff --git a/Mage.Sets/src/mage/sets/FoundationsJumpstart.java b/Mage.Sets/src/mage/sets/FoundationsJumpstart.java index 3e6e9764420..e6f38368138 100644 --- a/Mage.Sets/src/mage/sets/FoundationsJumpstart.java +++ b/Mage.Sets/src/mage/sets/FoundationsJumpstart.java @@ -349,6 +349,7 @@ public final class FoundationsJumpstart extends ExpansionSet { cards.add(new SetCardInfo("Howling Banshee", 119, Rarity.UNCOMMON, mage.cards.h.HowlingBanshee.class)); cards.add(new SetCardInfo("Hungry Megasloth", 21, Rarity.UNCOMMON, mage.cards.h.HungryMegasloth.class)); cards.add(new SetCardInfo("Hunter's Edge", 671, Rarity.COMMON, mage.cards.h.HuntersEdge.class)); + cards.add(new SetCardInfo("Hurska Sweet-Tooth", 53, Rarity.MYTHIC, mage.cards.h.HurskaSweetTooth.class)); cards.add(new SetCardInfo("Impeccable Timing", 209, Rarity.COMMON, mage.cards.i.ImpeccableTiming.class)); cards.add(new SetCardInfo("Incorrigible Youths", 564, Rarity.UNCOMMON, mage.cards.i.IncorrigibleYouths.class)); cards.add(new SetCardInfo("Indomitable Will", 210, Rarity.COMMON, mage.cards.i.IndomitableWill.class)); diff --git a/Mage/src/main/java/mage/abilities/common/GainLifeControllerTriggeredAbility.java b/Mage/src/main/java/mage/abilities/common/GainLifeControllerTriggeredAbility.java index 638c519bdc5..54ab264189e 100644 --- a/Mage/src/main/java/mage/abilities/common/GainLifeControllerTriggeredAbility.java +++ b/Mage/src/main/java/mage/abilities/common/GainLifeControllerTriggeredAbility.java @@ -46,13 +46,13 @@ public class GainLifeControllerTriggeredAbility extends TriggeredAbilityImpl { @Override public boolean checkTrigger(GameEvent event, Game game) { - if (event.getPlayerId().equals(this.getControllerId())) { - this.getEffects().setValue(SavedGainedLifeValue.VALUE_KEY, event.getAmount()); - if (setTargetPointer) { - this.getEffects().setTargetPointer(new FixedTarget(event.getPlayerId())); - } - return true; + if (!isControlledBy(event.getPlayerId())) { + return false; } - return false; + this.getEffects().setValue(SavedGainedLifeValue.VALUE_KEY, event.getAmount()); + if (setTargetPointer) { + this.getEffects().setTargetPointer(new FixedTarget(event.getPlayerId())); + } + return true; } }