diff --git a/Mage.Sets/src/mage/cards/c/ChargingHooligan.java b/Mage.Sets/src/mage/cards/c/ChargingHooligan.java new file mode 100644 index 00000000000..a0031772520 --- /dev/null +++ b/Mage.Sets/src/mage/cards/c/ChargingHooligan.java @@ -0,0 +1,77 @@ +package mage.cards.c; + +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.AttacksTriggeredAbility; +import mage.abilities.condition.Condition; +import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition; +import mage.abilities.decorator.ConditionalOneShotEffect; +import mage.abilities.dynamicvalue.DynamicValue; +import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; +import mage.abilities.dynamicvalue.common.StaticValue; +import mage.abilities.effects.common.AddContinuousEffectToGame; +import mage.abilities.effects.common.continuous.BoostSourceEffect; +import mage.abilities.effects.common.continuous.GainAbilitySourceEffect; +import mage.abilities.keyword.TrampleAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.ComparisonType; +import mage.constants.Duration; +import mage.constants.SubType; +import mage.filter.FilterPermanent; +import mage.filter.StaticFilters; +import mage.filter.predicate.permanent.AttackingPredicate; + +import java.util.UUID; + +/** + * @author Susucr + */ +public final class ChargingHooligan extends CardImpl { + + private static final DynamicValue xValue = + new PermanentsOnBattlefieldCount(StaticFilters.FILTER_ATTACKING_CREATURE); + + private static final FilterPermanent filterForCondition = new FilterPermanent(SubType.RAT, "a Rat is attacking"); + + static { + filterForCondition.add(AttackingPredicate.instance); + } + + private static final Condition condition = + new PermanentsOnTheBattlefieldCondition( + filterForCondition, ComparisonType.MORE_THAN, + 0, false + ); + + public ChargingHooligan(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}"); + + this.subtype.add(SubType.HUMAN); + this.subtype.add(SubType.PEASANT); + this.power = new MageInt(3); + this.toughness = new MageInt(3); + + // Whenever Charging Hooligan attacks, it gets +1/+0 until end of turn for each attacking creature. If a Rat is attacking, Charging Hooligan gains trample until end of turn. + Ability ability = new AttacksTriggeredAbility( + new BoostSourceEffect(xValue, StaticValue.get(0), Duration.EndOfTurn, true, "it") + ); + ability.addEffect(new ConditionalOneShotEffect( + new AddContinuousEffectToGame( + new GainAbilitySourceEffect(TrampleAbility.getInstance(), Duration.EndOfTurn) + ), condition + )); + + this.addAbility(ability); + } + + private ChargingHooligan(final ChargingHooligan card) { + super(card); + } + + @Override + public ChargingHooligan copy() { + return new ChargingHooligan(this); + } +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/WildsOfEldraine.java b/Mage.Sets/src/mage/sets/WildsOfEldraine.java index bd5f401e428..d213a17d728 100644 --- a/Mage.Sets/src/mage/sets/WildsOfEldraine.java +++ b/Mage.Sets/src/mage/sets/WildsOfEldraine.java @@ -52,6 +52,7 @@ public final class WildsOfEldraine extends ExpansionSet { cards.add(new SetCardInfo("Candy Grapple", 83, Rarity.COMMON, mage.cards.c.CandyGrapple.class)); cards.add(new SetCardInfo("Candy Trail", 243, Rarity.COMMON, mage.cards.c.CandyTrail.class)); cards.add(new SetCardInfo("Chancellor of Tales", 45, Rarity.UNCOMMON, mage.cards.c.ChancellorOfTales.class)); + cards.add(new SetCardInfo("Charging Hooligan", 318, Rarity.UNCOMMON, mage.cards.c.ChargingHooligan.class)); cards.add(new SetCardInfo("Charmed Clothier", 6, Rarity.COMMON, mage.cards.c.CharmedClothier.class)); cards.add(new SetCardInfo("Charming Scoundrel", 124, Rarity.RARE, mage.cards.c.CharmingScoundrel.class)); cards.add(new SetCardInfo("Cheeky House-Mouse", 7, Rarity.UNCOMMON, mage.cards.c.CheekyHouseMouse.class));