[LTC] Implement Crown of Gondor (#10722)

This commit is contained in:
Susucre 2023-08-01 05:52:43 +02:00 committed by GitHub
parent d61e454e77
commit 61a6657127
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 84 additions and 4 deletions

View file

@ -0,0 +1,79 @@
package mage.cards.c;
import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.MonarchIsNotSetCondition;
import mage.abilities.condition.common.MonarchIsSourceControllerCondition;
import mage.abilities.costs.CostAdjuster;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.dynamicvalue.DynamicValue;
import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
import mage.abilities.effects.common.BecomesMonarchSourceEffect;
import mage.abilities.effects.common.continuous.BoostEquippedEffect;
import mage.abilities.keyword.EquipAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.SuperType;
import mage.constants.Zone;
import mage.filter.StaticFilters;
import mage.game.Game;
import mage.util.CardUtil;
import java.util.UUID;
/**
* @author Susucr
*/
public final class CrownOfGondor extends CardImpl {
private final static DynamicValue xValue = new PermanentsOnBattlefieldCount(StaticFilters.FILTER_CONTROLLED_CREATURE);
public CrownOfGondor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
this.supertype.add(SuperType.LEGENDARY);
this.subtype.add(SubType.EQUIPMENT);
// Equipped creature gets +1/+1 for each creature you control.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEquippedEffect(xValue, xValue)));
// When a legendary creature enters the battlefield under your control, if there is no monarch, you become the monarch.
this.addAbility(new ConditionalInterveningIfTriggeredAbility(
new EntersBattlefieldControlledTriggeredAbility(
new BecomesMonarchSourceEffect(),
StaticFilters.FILTER_CREATURE_LEGENDARY
),
MonarchIsNotSetCondition.instance,
"When a legendary creature enters the battlefield under your control, if there is no monarch, you become the monarch."
));
// Equip {4}. This ability costs {3} less to activate if you're the monarch.
EquipAbility equip = new EquipAbility(4, false);
equip.setCostReduceText("This ability costs {3} less to activate if you're the monarch");
equip.setCostAdjuster(CrownOfGondorAdjuster.instance);
this.addAbility(equip);
}
private CrownOfGondor(final CrownOfGondor card) {
super(card);
}
@Override
public CrownOfGondor copy() {
return new CrownOfGondor(this);
}
}
enum CrownOfGondorAdjuster implements CostAdjuster {
instance;
@Override
public void adjustCosts(Ability ability, Game game) {
if (MonarchIsSourceControllerCondition.instance.apply(game, ability)) {
CardUtil.reduceCost(ability, 3);
}
}
}

View file

@ -61,6 +61,7 @@ public final class TalesOfMiddleEarthCommander extends ExpansionSet {
cards.add(new SetCardInfo("Consider", 187, Rarity.COMMON, mage.cards.c.Consider.class));
cards.add(new SetCardInfo("Corsairs of Umbar", 19, Rarity.RARE, mage.cards.c.CorsairsOfUmbar.class));
cards.add(new SetCardInfo("Court of Ire", 213, Rarity.RARE, mage.cards.c.CourtOfIre.class));
cards.add(new SetCardInfo("Crown of Gondor", 75, Rarity.RARE, mage.cards.c.CrownOfGondor.class));
cards.add(new SetCardInfo("Crumbling Necropolis", 302, Rarity.UNCOMMON, mage.cards.c.CrumblingNecropolis.class));
cards.add(new SetCardInfo("Crypt Incursion", 198, Rarity.COMMON, mage.cards.c.CryptIncursion.class));
cards.add(new SetCardInfo("Cultivate", 236, Rarity.COMMON, mage.cards.c.Cultivate.class));

View file

@ -45,7 +45,7 @@ public class EntersBattlefieldControlledTriggeredAbility extends EntersBattlefie
super(zone, effect, filter, optional, setTargetPointer, rule, true);
}
public EntersBattlefieldControlledTriggeredAbility(final EntersBattlefieldControlledTriggeredAbility ability) {
protected EntersBattlefieldControlledTriggeredAbility(final EntersBattlefieldControlledTriggeredAbility ability) {
super(ability);
}

View file

@ -45,7 +45,7 @@ public class ConditionalInterveningIfTriggeredAbility extends TriggeredAbilityIm
this.abilityText = text;
}
public ConditionalInterveningIfTriggeredAbility(final ConditionalInterveningIfTriggeredAbility triggered) {
protected ConditionalInterveningIfTriggeredAbility(final ConditionalInterveningIfTriggeredAbility triggered) {
super(triggered);
this.ability = triggered.ability.copy();
this.condition = triggered.condition;

View file

@ -45,7 +45,7 @@ public class EquipAbility extends ActivatedAbilityImpl {
this.showAbilityHint = showAbilityHint;
}
public EquipAbility(final EquipAbility ability) {
protected EquipAbility(final EquipAbility ability) {
super(ability);
this.costReduceText = ability.costReduceText;
this.showAbilityHint = ability.showAbilityHint;

View file

@ -438,7 +438,7 @@ class SuspendBeginningOfUpkeepInterveningIfTriggeredAbility extends ConditionalI
}
public SuspendBeginningOfUpkeepInterveningIfTriggeredAbility(final SuspendBeginningOfUpkeepInterveningIfTriggeredAbility effect) {
private SuspendBeginningOfUpkeepInterveningIfTriggeredAbility(final SuspendBeginningOfUpkeepInterveningIfTriggeredAbility effect) {
super(effect);
}