Implemented Garruk, Cursed Huntsman

This commit is contained in:
Evan Kranzler 2019-09-05 18:07:52 -04:00
parent d99e77d944
commit 39ce76f82a
4 changed files with 131 additions and 0 deletions

View file

@ -0,0 +1,54 @@
package mage.cards.g;
import mage.abilities.Ability;
import mage.abilities.LoyaltyAbility;
import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.DestroyTargetEffect;
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.effects.common.GetEmblemEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.SuperType;
import mage.game.command.emblems.GarrukCursedHuntsmanEmblem;
import mage.game.permanent.token.GarrukCursedHuntsmanToken;
import mage.target.common.TargetCreaturePermanent;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class GarrukCursedHuntsman extends CardImpl {
public GarrukCursedHuntsman(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{4}{B}{G}");
this.addSuperType(SuperType.LEGENDARY);
this.subtype.add(SubType.GARRUK);
this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5));
// 0: Create two 2/2 black and green Wolf creature tokens with "When this creature dies, put a loyalty counter on each Garruk you control."
this.addAbility(new LoyaltyAbility(new CreateTokenEffect(new GarrukCursedHuntsmanToken(), 2), 0));
// 3: Destroy target creature. Draw a card.
Ability ability = new LoyaltyAbility(new DestroyTargetEffect(), -3);
ability.addEffect(new DrawCardSourceControllerEffect(1).setText("Draw a card"));
ability.addTarget(new TargetCreaturePermanent());
this.addAbility(ability);
// 6: You get an emblem with "Creatures you control get +3/+3 and have trample."
this.addAbility(new LoyaltyAbility(new GetEmblemEffect(new GarrukCursedHuntsmanEmblem()), -6));
}
private GarrukCursedHuntsman(final GarrukCursedHuntsman card) {
super(card);
}
@Override
public GarrukCursedHuntsman copy() {
return new GarrukCursedHuntsman(this);
}
}

View file

@ -39,6 +39,7 @@ public final class ThroneOfEldraine extends ExpansionSet {
cards.add(new SetCardInfo("Embereth Skyblazer", 321, Rarity.RARE, mage.cards.e.EmberethSkyblazer.class));
cards.add(new SetCardInfo("Eye Collector", 86, Rarity.COMMON, mage.cards.e.EyeCollector.class));
cards.add(new SetCardInfo("Fireborn Knight", 210, Rarity.UNCOMMON, mage.cards.f.FirebornKnight.class));
cards.add(new SetCardInfo("Garruk, Cursed Huntsman", 270, Rarity.MYTHIC, mage.cards.g.GarrukCursedHuntsman.class));
cards.add(new SetCardInfo("Gilded Goose", 160, Rarity.RARE, mage.cards.g.GildedGoose.class));
cards.add(new SetCardInfo("Golden Egg", 220, Rarity.COMMON, mage.cards.g.GoldenEgg.class));
cards.add(new SetCardInfo("Heraldic Banner", 222, Rarity.UNCOMMON, mage.cards.h.HeraldicBanner.class));

View file

@ -0,0 +1,37 @@
package mage.game.command.emblems;
import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.continuous.BoostControlledEffect;
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
import mage.abilities.keyword.TrampleAbility;
import mage.constants.Duration;
import mage.constants.Zone;
import mage.filter.StaticFilters;
import mage.game.command.Emblem;
/**
* @author TheElk801
*/
public final class GarrukCursedHuntsmanEmblem extends Emblem {
// -6: You get an emblem with "Creatures you control get +3/+3 and have trample."
public GarrukCursedHuntsmanEmblem() {
this.setName("Emblem Garruk");
this.setExpansionSetCodeForImage("ELD");
Ability ability = new SimpleStaticAbility(
Zone.COMMAND,
new BoostControlledEffect(
3, 3, Duration.EndOfGame,
StaticFilters.FILTER_PERMANENT_CREATURES,
false
).setText("creatures you control get +3/+3")
);
ability.addEffect(new GainAbilityControlledEffect(
TrampleAbility.getInstance(),
Duration.EndOfGame,
StaticFilters.FILTER_PERMANENT_CREATURES
).setText("and have trample"));
this.getAbilities().add(ability);
}
}

View file

@ -0,0 +1,39 @@
package mage.game.permanent.token;
import mage.MageInt;
import mage.abilities.common.DiesTriggeredAbility;
import mage.abilities.effects.common.counter.AddCountersAllEffect;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.counters.CounterType;
import mage.filter.FilterPermanent;
import mage.filter.common.FilterControlledPermanent;
/**
* @author TheElk801
*/
public final class GarrukCursedHuntsmanToken extends TokenImpl {
private static final FilterPermanent filter
= new FilterControlledPermanent(SubType.GARRUK, "Garruk you control");
public GarrukCursedHuntsmanToken() {
super("Wolf", "2/2 black and green Wolf creature token with \"When this creature dies, put a loyalty counter on each Garruk you control.\"");
cardType.add(CardType.CREATURE);
color.setBlack(true);
color.setGreen(true);
subtype.add(SubType.WOLF);
power = new MageInt(2);
toughness = new MageInt(2);
this.addAbility(new DiesTriggeredAbility(new AddCountersAllEffect(CounterType.LOYALTY.createInstance(), filter)));
}
public GarrukCursedHuntsmanToken(final GarrukCursedHuntsmanToken token) {
super(token);
}
public GarrukCursedHuntsmanToken copy() {
return new GarrukCursedHuntsmanToken(this);
}
}