forked from External/mage
[LTC] Implementations part 1/4 (#11469)
* Anduril, Narsil Reforged * Gimli's Reckless Might * Nazgul Battle-Mace * Rally the Galadhrim * Rammas Echor, Ancient Shield
This commit is contained in:
parent
1af601bf11
commit
5adc350eed
6 changed files with 269 additions and 0 deletions
55
Mage.Sets/src/mage/cards/a/AndurilNarsilReforged.java
Normal file
55
Mage.Sets/src/mage/cards/a/AndurilNarsilReforged.java
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
package mage.cards.a;
|
||||
|
||||
import mage.abilities.common.AttacksAttachedTriggeredAbility;
|
||||
import mage.abilities.condition.common.CitysBlessingCondition;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.counter.AddCountersAllEffect;
|
||||
import mage.abilities.hint.common.CitysBlessingHint;
|
||||
import mage.abilities.keyword.AscendAbility;
|
||||
import mage.abilities.keyword.EquipAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.AttachmentType;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.SuperType;
|
||||
import mage.counters.CounterType;
|
||||
import mage.filter.StaticFilters;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author notgreat
|
||||
*/
|
||||
public final class AndurilNarsilReforged extends CardImpl {
|
||||
|
||||
public AndurilNarsilReforged(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
|
||||
|
||||
this.supertype.add(SuperType.LEGENDARY);
|
||||
this.subtype.add(SubType.EQUIPMENT);
|
||||
|
||||
// Ascend
|
||||
this.addAbility(new AscendAbility());
|
||||
|
||||
// Whenever equipped creature attacks, put a +1/+1 counter on each creature you control. If you have the city's blessing, put two +1/+1 counters on each creature you control instead.
|
||||
this.addAbility(new AttacksAttachedTriggeredAbility(
|
||||
new ConditionalOneShotEffect(new AddCountersAllEffect(CounterType.P1P1.createInstance(2), StaticFilters.FILTER_CONTROLLED_CREATURE),
|
||||
new AddCountersAllEffect(CounterType.P1P1.createInstance(), StaticFilters.FILTER_CONTROLLED_CREATURE), CitysBlessingCondition.instance,
|
||||
"put a +1/+1 counter on each creature you control. If you have the city's blessing, put two +1/+1 counters on each creature you control instead"),
|
||||
AttachmentType.EQUIPMENT, false)
|
||||
.addHint(CitysBlessingHint.instance));
|
||||
// Equip {3}
|
||||
this.addAbility(new EquipAbility(3, false));
|
||||
}
|
||||
|
||||
private AndurilNarsilReforged(final AndurilNarsilReforged card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AndurilNarsilReforged copy() {
|
||||
return new AndurilNarsilReforged(this);
|
||||
}
|
||||
}
|
||||
56
Mage.Sets/src/mage/cards/g/GimlisRecklessMight.java
Normal file
56
Mage.Sets/src/mage/cards/g/GimlisRecklessMight.java
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
package mage.cards.g;
|
||||
|
||||
import mage.abilities.TriggeredAbility;
|
||||
import mage.abilities.common.AttacksWithCreaturesTriggeredAbility;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.condition.common.FormidableCondition;
|
||||
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
|
||||
import mage.abilities.effects.common.FightTargetsEffect;
|
||||
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
|
||||
import mage.abilities.keyword.HasteAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.*;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.filter.common.FilterAttackingCreature;
|
||||
import mage.filter.common.FilterCreaturePermanent;
|
||||
import mage.target.TargetPermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author notgreat
|
||||
*/
|
||||
public final class GimlisRecklessMight extends CardImpl {
|
||||
|
||||
private static final FilterCreaturePermanent filter = new FilterAttackingCreature("attacking creature you control");
|
||||
|
||||
static {
|
||||
filter.add(TargetController.YOU.getControllerPredicate());
|
||||
}
|
||||
|
||||
public GimlisRecklessMight(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{R}");
|
||||
|
||||
// Creatures you control have haste.
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityControlledEffect(
|
||||
HasteAbility.getInstance(), Duration.WhileOnBattlefield, StaticFilters.FILTER_PERMANENT_CREATURES)));
|
||||
// Formidable -- Whenever you attack, if creatures you control have total power 8 or greater, target attacking creature you control fights up to one target creature you don't control.
|
||||
TriggeredAbility ability = new AttacksWithCreaturesTriggeredAbility(new FightTargetsEffect(),1);
|
||||
ability.addTarget(new TargetPermanent(filter));
|
||||
ability.addTarget(new TargetPermanent(0, 1, StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL));
|
||||
ability.setAbilityWord(AbilityWord.FORMIDABLE);
|
||||
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, FormidableCondition.instance,
|
||||
"<i>Formidable</i> — Whenever you attack, if creatures you control have total power 8 or greater, target attacking creature you control fights up to one target creature you don't control."));
|
||||
}
|
||||
|
||||
private GimlisRecklessMight(final GimlisRecklessMight card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public GimlisRecklessMight copy() {
|
||||
return new GimlisRecklessMight(this);
|
||||
}
|
||||
}
|
||||
60
Mage.Sets/src/mage/cards/n/NazgulBattleMace.java
Normal file
60
Mage.Sets/src/mage/cards/n/NazgulBattleMace.java
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
package mage.cards.n;
|
||||
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.OpponentSacrificesNonTokenPermanentTriggeredAbility;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.costs.common.PayLifeCost;
|
||||
import mage.abilities.effects.common.DoUnlessTargetPlayerOrTargetsControllerPaysEffect;
|
||||
import mage.abilities.effects.common.ReturnToBattlefieldUnderYourControlTargetEffect;
|
||||
import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect;
|
||||
import mage.abilities.keyword.AnnihilatorAbility;
|
||||
import mage.abilities.keyword.DeathtouchAbility;
|
||||
import mage.abilities.keyword.EquipAbility;
|
||||
import mage.abilities.keyword.MenaceAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.AttachmentType;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.Zone;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author notgreat
|
||||
*/
|
||||
public final class NazgulBattleMace extends CardImpl {
|
||||
|
||||
public NazgulBattleMace(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{5}");
|
||||
|
||||
this.subtype.add(SubType.EQUIPMENT);
|
||||
//String abilityText = "Whenever an opponent sacrifices a nontoken permanent, put that card onto the battlefield under your control unless that player pays 3 life";
|
||||
// Equipped creature has menace, deathtouch, annihilator 1, and
|
||||
// "Whenever an opponent sacrifices a nontoken permanent, put that card onto the battlefield under your control unless that player pays 3 life."
|
||||
Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(new MenaceAbility(false), AttachmentType.EQUIPMENT));
|
||||
ability.addEffect(new GainAbilityAttachedEffect(DeathtouchAbility.getInstance(), AttachmentType.EQUIPMENT).setText(", deathtouch"));
|
||||
ability.addEffect(new GainAbilityAttachedEffect(new AnnihilatorAbility(1), AttachmentType.EQUIPMENT).setText(", annihilator 1"));
|
||||
Ability sacTriggerAbility = new OpponentSacrificesNonTokenPermanentTriggeredAbility(
|
||||
new DoUnlessTargetPlayerOrTargetsControllerPaysEffect(
|
||||
new ReturnToBattlefieldUnderYourControlTargetEffect(),
|
||||
new PayLifeCost(3)
|
||||
).setText("put that card onto the battlefield under your control unless that player pays 3 life"));
|
||||
ability.addEffect(new GainAbilityAttachedEffect(sacTriggerAbility, AttachmentType.EQUIPMENT)
|
||||
.setText(", and \""+sacTriggerAbility.getRule()+"\"")
|
||||
);
|
||||
this.addAbility(ability);
|
||||
// Equip {3}
|
||||
this.addAbility(new EquipAbility(3, false));
|
||||
}
|
||||
|
||||
private NazgulBattleMace(final NazgulBattleMace card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public NazgulBattleMace copy() {
|
||||
return new NazgulBattleMace(this);
|
||||
}
|
||||
}
|
||||
37
Mage.Sets/src/mage/cards/r/RallyTheGaladhrim.java
Normal file
37
Mage.Sets/src/mage/cards/r/RallyTheGaladhrim.java
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
package mage.cards.r;
|
||||
|
||||
import mage.abilities.effects.common.CreateTokenCopyTargetEffect;
|
||||
import mage.abilities.keyword.ConspireAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.target.common.TargetControlledCreaturePermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author notgreat
|
||||
*/
|
||||
public final class RallyTheGaladhrim extends CardImpl {
|
||||
|
||||
public RallyTheGaladhrim(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{G}{U}");
|
||||
|
||||
// Create a token that's a copy of target creature you control.
|
||||
this.getSpellAbility().addEffect(new CreateTokenCopyTargetEffect());
|
||||
this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent());
|
||||
// Conspire
|
||||
this.addAbility(new ConspireAbility(ConspireAbility.ConspireTargets.ONE));
|
||||
|
||||
}
|
||||
|
||||
private RallyTheGaladhrim(final RallyTheGaladhrim card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public RallyTheGaladhrim copy() {
|
||||
return new RallyTheGaladhrim(this);
|
||||
}
|
||||
}
|
||||
56
Mage.Sets/src/mage/cards/r/RammasEchorAncientShield.java
Normal file
56
Mage.Sets/src/mage/cards/r/RammasEchorAncientShield.java
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
package mage.cards.r;
|
||||
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.BeginningOfCombatTriggeredAbility;
|
||||
import mage.abilities.common.CastSecondSpellTriggeredAbility;
|
||||
import mage.abilities.effects.common.CreateTokenEffect;
|
||||
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
|
||||
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
|
||||
import mage.abilities.keyword.DefenderAbility;
|
||||
import mage.abilities.keyword.ExaltedAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.SuperType;
|
||||
import mage.constants.TargetController;
|
||||
import mage.filter.common.FilterControlledCreaturePermanent;
|
||||
import mage.filter.predicate.mageobject.AbilityPredicate;
|
||||
import mage.game.permanent.token.TeyoToken;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author notgreat
|
||||
*/
|
||||
public final class RammasEchorAncientShield extends CardImpl {
|
||||
|
||||
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("creatures you control with defender");
|
||||
|
||||
static {
|
||||
filter.add(new AbilityPredicate(DefenderAbility.class));
|
||||
}
|
||||
public RammasEchorAncientShield(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}{W}");
|
||||
|
||||
this.supertype.add(SuperType.LEGENDARY);
|
||||
|
||||
// Whenever you cast your second spell each turn, draw a card, then create a 0/3 white Wall creature token with defender.
|
||||
Ability ability = new CastSecondSpellTriggeredAbility(new DrawCardSourceControllerEffect(1));
|
||||
ability.addEffect(new CreateTokenEffect(new TeyoToken()).concatBy(", then"));
|
||||
this.addAbility(ability);
|
||||
|
||||
// At the beginning of combat on your turn, creatures you control with defender gain exalted until end of turn.
|
||||
this.addAbility(new BeginningOfCombatTriggeredAbility(new GainAbilityControlledEffect(new ExaltedAbility(), Duration.EndOfTurn, filter), TargetController.YOU, false));
|
||||
}
|
||||
|
||||
private RammasEchorAncientShield(final RammasEchorAncientShield card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public RammasEchorAncientShield copy() {
|
||||
return new RammasEchorAncientShield(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -19,6 +19,7 @@ public final class TalesOfMiddleEarthCommander extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Abyssal Persecutor", 525, Rarity.MYTHIC, mage.cards.a.AbyssalPersecutor.class));
|
||||
cards.add(new SetCardInfo("Access Tunnel", 294, Rarity.UNCOMMON, mage.cards.a.AccessTunnel.class));
|
||||
cards.add(new SetCardInfo("Ancient Tomb", 357, Rarity.MYTHIC, mage.cards.a.AncientTomb.class));
|
||||
cards.add(new SetCardInfo("Anduril, Narsil Reforged", 491, Rarity.RARE, mage.cards.a.AndurilNarsilReforged.class));
|
||||
cards.add(new SetCardInfo("Anger", 210, Rarity.UNCOMMON, mage.cards.a.Anger.class));
|
||||
cards.add(new SetCardInfo("Anguished Unmaking", 265, Rarity.RARE, mage.cards.a.AnguishedUnmaking.class));
|
||||
cards.add(new SetCardInfo("Aragorn, King of Gondor", 5, Rarity.MYTHIC, mage.cards.a.AragornKingOfGondor.class));
|
||||
|
|
@ -139,6 +140,7 @@ public final class TalesOfMiddleEarthCommander extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Gilded Goose", 246, Rarity.RARE, mage.cards.g.GildedGoose.class));
|
||||
cards.add(new SetCardInfo("Gilraen, Dunedain Protector", 13, Rarity.RARE, mage.cards.g.GilraenDunedainProtector.class));
|
||||
cards.add(new SetCardInfo("Gimli of the Glittering Caves", 32, Rarity.RARE, mage.cards.g.GimliOfTheGlitteringCaves.class));
|
||||
cards.add(new SetCardInfo("Gimli's Reckless Might", 494, Rarity.RARE, mage.cards.g.GimlisRecklessMight.class));
|
||||
cards.add(new SetCardInfo("Glacial Fortress", 315, Rarity.RARE, mage.cards.g.GlacialFortress.class));
|
||||
cards.add(new SetCardInfo("Go for the Throat", 201, Rarity.UNCOMMON, mage.cards.g.GoForTheThroat.class));
|
||||
cards.add(new SetCardInfo("Goblin Cratermaker", 218, Rarity.UNCOMMON, mage.cards.g.GoblinCratermaker.class));
|
||||
|
|
@ -204,6 +206,7 @@ public final class TalesOfMiddleEarthCommander extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Murmuring Bosk", 320, Rarity.RARE, mage.cards.m.MurmuringBosk.class));
|
||||
cards.add(new SetCardInfo("Myriad Landscape", 534, Rarity.UNCOMMON, mage.cards.m.MyriadLandscape.class));
|
||||
cards.add(new SetCardInfo("Mystic Confluence", 193, Rarity.RARE, mage.cards.m.MysticConfluence.class));
|
||||
cards.add(new SetCardInfo("Nazgul Battle-Mace", 510, Rarity.RARE, mage.cards.n.NazgulBattleMace.class));
|
||||
cards.add(new SetCardInfo("Necroblossom Snarl", 321, Rarity.RARE, mage.cards.n.NecroblossomSnarl.class));
|
||||
cards.add(new SetCardInfo("Night's Whisper", 205, Rarity.COMMON, mage.cards.n.NightsWhisper.class));
|
||||
cards.add(new SetCardInfo("Notion Thief", 270, Rarity.RARE, mage.cards.n.NotionThief.class));
|
||||
|
|
@ -230,6 +233,8 @@ public final class TalesOfMiddleEarthCommander extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Prosperous Innkeeper", 256, Rarity.UNCOMMON, mage.cards.p.ProsperousInnkeeper.class));
|
||||
cards.add(new SetCardInfo("Radagast, Wizard of Wilds", 66, Rarity.RARE, mage.cards.r.RadagastWizardOfWilds.class));
|
||||
cards.add(new SetCardInfo("Raise the Palisade", 23, Rarity.RARE, mage.cards.r.RaiseThePalisade.class));
|
||||
cards.add(new SetCardInfo("Rally the Galadhrim", 499, Rarity.RARE, mage.cards.r.RallyTheGaladhrim.class));
|
||||
cards.add(new SetCardInfo("Rammas Echor, Ancient Shield", 505, Rarity.RARE, mage.cards.r.RammasEchorAncientShield.class));
|
||||
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));
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue