diff --git a/Mage.Sets/src/mage/cards/r/RapaciousGuest.java b/Mage.Sets/src/mage/cards/r/RapaciousGuest.java new file mode 100644 index 00000000000..1cd5107f80a --- /dev/null +++ b/Mage.Sets/src/mage/cards/r/RapaciousGuest.java @@ -0,0 +1,71 @@ +package mage.cards.r; + +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.DealCombatDamageControlledTriggeredAbility; +import mage.abilities.common.LeavesBattlefieldTriggeredAbility; +import mage.abilities.common.SacrificePermanentTriggeredAbility; +import mage.abilities.dynamicvalue.DynamicValue; +import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount; +import mage.abilities.effects.common.CreateTokenEffect; +import mage.abilities.effects.common.LoseLifeTargetEffect; +import mage.abilities.effects.common.counter.AddCountersSourceEffect; +import mage.abilities.keyword.MenaceAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.SubType; +import mage.counters.CounterType; +import mage.filter.StaticFilters; +import mage.game.permanent.token.FoodToken; +import mage.target.common.TargetOpponent; + +import java.util.UUID; + +/** + * @author Susucr + */ +public final class RapaciousGuest extends CardImpl { + + private static final DynamicValue xValue = new SourcePermanentPowerCount(false); + + public RapaciousGuest(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}"); + + this.subtype.add(SubType.HALFLING); + this.subtype.add(SubType.CITIZEN); + this.power = new MageInt(2); + this.toughness = new MageInt(2); + + // Menace + this.addAbility(new MenaceAbility(false)); + + // Whenever one or more creatures you control deal combat damage to a player, create a Food token. + this.addAbility(new DealCombatDamageControlledTriggeredAbility( + new CreateTokenEffect(new FoodToken()) + )); + + // Whenever you sacrifice a Food, put a +1/+1 counter on Rapacious Guest. + this.addAbility(new SacrificePermanentTriggeredAbility( + new AddCountersSourceEffect(CounterType.P1P1.createInstance()), + StaticFilters.FILTER_CONTROLLED_FOOD + )); + + // When Rapacious Guest leaves the battlefield, target opponent loses life equal to its power. + Ability ability = new LeavesBattlefieldTriggeredAbility( + new LoseLifeTargetEffect(xValue).setText("target opponent loses life equal to its power."), + false + ); + ability.addTarget(new TargetOpponent()); + this.addAbility(ability); + } + + private RapaciousGuest(final RapaciousGuest card) { + super(card); + } + + @Override + public RapaciousGuest copy() { + return new RapaciousGuest(this); + } +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/TalesOfMiddleEarthCommander.java b/Mage.Sets/src/mage/sets/TalesOfMiddleEarthCommander.java index 971b7d3cdb8..43965d2f779 100644 --- a/Mage.Sets/src/mage/sets/TalesOfMiddleEarthCommander.java +++ b/Mage.Sets/src/mage/sets/TalesOfMiddleEarthCommander.java @@ -212,6 +212,7 @@ public final class TalesOfMiddleEarthCommander extends ExpansionSet { cards.add(new SetCardInfo("Raise the Palisade", 106, Rarity.RARE, mage.cards.r.RaiseThePalisade.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Rampaging War Mammoth", 34, Rarity.RARE, mage.cards.r.RampagingWarMammoth.class)); cards.add(new SetCardInfo("Rampant Growth", 257, Rarity.COMMON, mage.cards.r.RampantGrowth.class)); + cards.add(new SetCardInfo("Rapacious Guest", 28, Rarity.RARE, mage.cards.r.RapaciousGuest.class)); cards.add(new SetCardInfo("Realm Seekers", 258, Rarity.RARE, mage.cards.r.RealmSeekers.class)); cards.add(new SetCardInfo("Reanimate", 206, Rarity.RARE, mage.cards.r.Reanimate.class)); cards.add(new SetCardInfo("Reclamation Sage", 259, Rarity.UNCOMMON, mage.cards.r.ReclamationSage.class)); diff --git a/Mage/src/main/java/mage/abilities/common/LeavesBattlefieldTriggeredAbility.java b/Mage/src/main/java/mage/abilities/common/LeavesBattlefieldTriggeredAbility.java index df4cf2527eb..7216e9b5a73 100644 --- a/Mage/src/main/java/mage/abilities/common/LeavesBattlefieldTriggeredAbility.java +++ b/Mage/src/main/java/mage/abilities/common/LeavesBattlefieldTriggeredAbility.java @@ -16,7 +16,7 @@ public class LeavesBattlefieldTriggeredAbility extends ZoneChangeTriggeredAbilit super(Zone.ALL, Zone.BATTLEFIELD, null, effect, "When {this} leaves the battlefield, ", optional); } - public LeavesBattlefieldTriggeredAbility(LeavesBattlefieldTriggeredAbility ability) { + protected LeavesBattlefieldTriggeredAbility(LeavesBattlefieldTriggeredAbility ability) { super(ability); } diff --git a/Mage/src/main/java/mage/abilities/common/SacrificePermanentTriggeredAbility.java b/Mage/src/main/java/mage/abilities/common/SacrificePermanentTriggeredAbility.java index 3ccd1359ac7..c82b3ab92f3 100644 --- a/Mage/src/main/java/mage/abilities/common/SacrificePermanentTriggeredAbility.java +++ b/Mage/src/main/java/mage/abilities/common/SacrificePermanentTriggeredAbility.java @@ -39,7 +39,7 @@ public class SacrificePermanentTriggeredAbility extends TriggeredAbilityImpl { setTriggerPhrase("Whenever you sacrifice " + CardUtil.addArticle(filter.getMessage()) + ", "); } - public SacrificePermanentTriggeredAbility(final SacrificePermanentTriggeredAbility ability) { + protected SacrificePermanentTriggeredAbility(final SacrificePermanentTriggeredAbility ability) { super(ability); this.filter = ability.filter; this.setTargetPointer = ability.setTargetPointer;