[LTC] Implement Assemble the Entmoot (#10711)

* [LTC] Implement Assemble the Entmoot

* rename ControllerGotLifeCount -> ControllerGainedLifeCount
This commit is contained in:
Susucre 2023-08-01 05:50:29 +02:00 committed by GitHub
parent 8d938926b6
commit 63d9061f6a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
32 changed files with 183 additions and 72 deletions

View file

@ -3,7 +3,7 @@ package mage.cards.a;
import mage.MageInt;
import mage.Mana;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.dynamicvalue.common.ControllerGotLifeCount;
import mage.abilities.dynamicvalue.common.ControllerGainedLifeCount;
import mage.abilities.mana.AnyColorManaAbility;
import mage.abilities.mana.DynamicManaAbility;
import mage.cards.CardImpl;
@ -32,9 +32,9 @@ public final class AccomplishedAlchemist extends CardImpl {
// {T}: Add X mana of any one color, where X is the amount of life you gained this turn.
this.addAbility(new DynamicManaAbility(
Mana.AnyMana(1), ControllerGotLifeCount.instance, new TapSourceCost(), "Add X mana " +
Mana.AnyMana(1), ControllerGainedLifeCount.instance, new TapSourceCost(), "Add X mana " +
"of any one color, where X is the amount of life you gained this turn", true
).addHint(ControllerGotLifeCount.getHint()), new PlayerGainedLifeWatcher());
).addHint(ControllerGainedLifeCount.getHint()), new PlayerGainedLifeWatcher());
}
private AccomplishedAlchemist(final AccomplishedAlchemist card) {

View file

@ -2,7 +2,7 @@ package mage.cards.a;
import mage.abilities.common.BeginningOfEndStepTriggeredAbility;
import mage.abilities.condition.common.YouGainedLifeCondition;
import mage.abilities.dynamicvalue.common.ControllerGotLifeCount;
import mage.abilities.dynamicvalue.common.ControllerGainedLifeCount;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@ -27,7 +27,7 @@ public final class AngelicAccord extends CardImpl {
this.addAbility(new BeginningOfEndStepTriggeredAbility(
Zone.BATTLEFIELD, new CreateTokenEffect(new AngelToken()), TargetController.ANY,
new YouGainedLifeCondition(ComparisonType.MORE_THAN, 3), false
).addHint(ControllerGotLifeCount.getHint()), new PlayerGainedLifeWatcher());
).addHint(ControllerGainedLifeCount.getHint()), new PlayerGainedLifeWatcher());
}
private AngelicAccord(final AngelicAccord card) {

View file

@ -0,0 +1,110 @@
package mage.cards.a;
import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.common.SacrificeSourceCost;
import mage.abilities.dynamicvalue.common.ControllerGainedLifeCount;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
import mage.abilities.keyword.ReachAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.Outcome;
import mage.counters.CounterType;
import mage.filter.StaticFilters;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.game.permanent.token.SylvanOfferingTreefolkToken;
import mage.watchers.common.PlayerGainedLifeWatcher;
import java.util.UUID;
/**
* @author Susucr
*/
public final class AssembleTheEntmoot extends CardImpl {
public AssembleTheEntmoot(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{G}");
// Creatures you control have reach.
this.addAbility(new SimpleStaticAbility(
new GainAbilityControlledEffect(
ReachAbility.getInstance(),
Duration.WhileOnBattlefield,
StaticFilters.FILTER_PERMANENT_CREATURES
)
));
// Sacrifice Assemble the Entmoot: Create three tapped X/X green Treefolk creature tokens, where X is the amount of life you gained this turn. Put a reach counter on each of them.
Ability ability = new SimpleActivatedAbility(
new AssembleTheEntmootEffect(),
new SacrificeSourceCost()
);
ability.addHint(ControllerGainedLifeCount.getHint());
ability.addWatcher(new PlayerGainedLifeWatcher());
this.addAbility(ability);
}
private AssembleTheEntmoot(final AssembleTheEntmoot card) {
super(card);
}
@Override
public AssembleTheEntmoot copy() {
return new AssembleTheEntmoot(this);
}
}
class AssembleTheEntmootEffect extends OneShotEffect {
AssembleTheEntmootEffect() {
super(Outcome.PutCreatureInPlay);
staticText = "Create three tapped X/X green Treefolk creature tokens, where X is the "
+ "amount of life you gained this turn. Put a reach counter on each of them.";
}
private AssembleTheEntmootEffect(final AssembleTheEntmootEffect effect) {
super(effect);
}
@Override
public AssembleTheEntmootEffect copy() {
return new AssembleTheEntmootEffect(this);
}
@Override
public boolean apply(Game game, Ability source) {
UUID controllerId = source.getControllerId();
PlayerGainedLifeWatcher watcher = game.getState().getWatcher(PlayerGainedLifeWatcher.class);
if (controllerId == null || watcher == null) {
return false;
}
int xValue = watcher.getLifeGained(controllerId);
CreateTokenEffect effect = new CreateTokenEffect(
new SylvanOfferingTreefolkToken(xValue),
3, true
);
effect.apply(game, source);
for (UUID addedTokenId : effect.getLastAddedTokenIds()) {
Permanent token = game.getPermanent(addedTokenId);
if (token != null) {
token.addCounters(
CounterType.REACH.createInstance(),
controllerId, source, game
);
}
}
return true;
}
}

View file

@ -5,7 +5,7 @@ import mage.abilities.Ability;
import mage.abilities.Mode;
import mage.abilities.common.BeginningOfEndStepTriggeredAbility;
import mage.abilities.dynamicvalue.DynamicValue;
import mage.abilities.dynamicvalue.common.ControllerGotLifeCount;
import mage.abilities.dynamicvalue.common.ControllerGainedLifeCount;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.GainLifeEffect;
import mage.abilities.effects.common.LoseLifeTargetEffect;
@ -55,10 +55,10 @@ public final class AstarionTheDecadent extends CardImpl {
);
ability.addTarget(new TargetOpponent());
ability.withFirstModeFlavorWord("Feed");
ability.addHint(ControllerGotLifeCount.getHint());
ability.addHint(ControllerGainedLifeCount.getHint());
// Friends You gain life equal to the amount of life you gained this turn.
ability.addMode(new Mode(new GainLifeEffect(ControllerGotLifeCount.instance)).withFlavorWord("Friends"));
ability.addMode(new Mode(new GainLifeEffect(ControllerGainedLifeCount.instance)).withFlavorWord("Friends"));
this.addAbility(ability.addHint(AstarionTheDecadentHint.instance), new PlayerGainedLifeWatcher());
}

View file

@ -3,7 +3,7 @@ package mage.cards.b;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.AttacksTriggeredAbility;
import mage.abilities.dynamicvalue.common.ControllerGotLifeCount;
import mage.abilities.dynamicvalue.common.ControllerGainedLifeCount;
import mage.abilities.effects.common.GainLifeEffect;
import mage.abilities.effects.common.continuous.BoostControlledEffect;
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
@ -37,10 +37,10 @@ public final class BlossomingBogbeast extends CardImpl {
StaticFilters.FILTER_CONTROLLED_CREATURE
).setText("Then creatures you control gain trample"));
ability.addEffect(new BoostControlledEffect(
ControllerGotLifeCount.instance, ControllerGotLifeCount.instance, Duration.EndOfTurn,
ControllerGainedLifeCount.instance, ControllerGainedLifeCount.instance, Duration.EndOfTurn,
StaticFilters.FILTER_PERMANENT_CREATURES, false, true
).setText("and get +X/+X until end of turn, where X is the amount of life you gained this turn"));
this.addAbility(ability.addHint(ControllerGotLifeCount.getHint()), new PlayerGainedLifeWatcher());
this.addAbility(ability.addHint(ControllerGainedLifeCount.getHint()), new PlayerGainedLifeWatcher());
}
private BlossomingBogbeast(final BlossomingBogbeast card) {

View file

@ -3,7 +3,7 @@ package mage.cards.c;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.BeginningOfEndStepTriggeredAbility;
import mage.abilities.dynamicvalue.common.ControllerGotLifeCount;
import mage.abilities.dynamicvalue.common.ControllerGainedLifeCount;
import mage.abilities.effects.common.ReturnFromGraveyardToBattlefieldTargetEffect;
import mage.abilities.keyword.FlyingAbility;
import mage.abilities.keyword.LifelinkAbility;
@ -59,7 +59,7 @@ public final class CelestineTheLivingSaint extends CardImpl {
ability.addTarget(new TargetCardInYourGraveyard(filter));
this.addAbility(
ability.withFlavorWord("Healing Tears")
.addHint(ControllerGotLifeCount.getHint()),
.addHint(ControllerGainedLifeCount.getHint()),
new PlayerGainedLifeWatcher()
);
}

View file

@ -5,7 +5,7 @@ import mage.abilities.common.BeginningOfEndStepTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.YouGainedLifeCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.dynamicvalue.common.ControllerGotLifeCount;
import mage.abilities.dynamicvalue.common.ControllerGainedLifeCount;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.continuous.GainAbilityAllEffect;
import mage.abilities.keyword.IndestructibleAbility;
@ -49,7 +49,7 @@ public final class CrestedSunmare extends CardImpl {
), new YouGainedLifeCondition(ComparisonType.MORE_THAN, 0),
"At the beginning of each end step, if you gained life this turn, " +
"create a 5/5 white Horse creature token."
).addHint(ControllerGotLifeCount.getHint()), new PlayerGainedLifeWatcher());
).addHint(ControllerGainedLifeCount.getHint()), new PlayerGainedLifeWatcher());
}
private CrestedSunmare(final CrestedSunmare card) {

View file

@ -1,7 +1,7 @@
package mage.cards.e;
import mage.abilities.dynamicvalue.DynamicValue;
import mage.abilities.dynamicvalue.common.ControllerGotLifeCount;
import mage.abilities.dynamicvalue.common.ControllerGainedLifeCount;
import mage.abilities.dynamicvalue.common.SignInversionDynamicValue;
import mage.abilities.effects.common.GainLifeEffect;
import mage.abilities.effects.common.continuous.BoostAllEffect;
@ -18,7 +18,7 @@ import java.util.UUID;
*/
public final class EssencePulse extends CardImpl {
private static final DynamicValue xValue = new SignInversionDynamicValue(ControllerGotLifeCount.instance);
private static final DynamicValue xValue = new SignInversionDynamicValue(ControllerGainedLifeCount.instance);
public EssencePulse(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{B}");
@ -29,7 +29,7 @@ public final class EssencePulse extends CardImpl {
xValue, xValue, Duration.EndOfTurn
).setText("Each creature gets -X/-X until end of turn, where X is the amount of life you gained this turn"));
this.getSpellAbility().addWatcher(new PlayerGainedLifeWatcher());
this.getSpellAbility().addHint(ControllerGotLifeCount.getHint());
this.getSpellAbility().addHint(ControllerGainedLifeCount.getHint());
}
private EssencePulse(final EssencePulse card) {

View file

@ -6,7 +6,7 @@ import mage.abilities.SpellAbility;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.dynamicvalue.common.ControllerGotLifeCount;
import mage.abilities.dynamicvalue.common.ControllerGainedLifeCount;
import mage.abilities.effects.common.GainLifeEffect;
import mage.abilities.effects.common.cost.CostModificationEffectImpl;
import mage.abilities.keyword.ReachAbility;
@ -38,7 +38,7 @@ public final class EzzarootChanneler extends CardImpl {
// Creature spells you cast cost {X} less to cast, where X is the amount of life you gained this turn.
this.addAbility(
new SimpleStaticAbility(new EzzarootChannelerEffect())
.addHint(ControllerGotLifeCount.getHint()),
.addHint(ControllerGainedLifeCount.getHint()),
new PlayerGainedLifeWatcher()
);
@ -70,7 +70,7 @@ class EzzarootChannelerEffect extends CostModificationEffectImpl {
@Override
public boolean apply(Game game, Ability source, Ability abilityToModify) {
CardUtil.reduceCost(abilityToModify, Math.max(0, ControllerGotLifeCount.instance.calculate(game, source, this)));
CardUtil.reduceCost(abilityToModify, Math.max(0, ControllerGainedLifeCount.instance.calculate(game, source, this)));
return true;
}

View file

@ -1,6 +1,6 @@
package mage.cards.f;
import mage.abilities.dynamicvalue.common.ControllerGotLifeCount;
import mage.abilities.dynamicvalue.common.ControllerGainedLifeCount;
import mage.abilities.effects.common.GainLifeEffect;
import mage.abilities.effects.common.continuous.BoostTargetEffect;
import mage.cards.CardImpl;
@ -23,12 +23,12 @@ public final class FortifyingDraught extends CardImpl {
// You gain 2 life. Target creature gets +X/+X until end of turn, where X is the amount of life you gained this turn.
this.getSpellAbility().addEffect(new GainLifeEffect(2));
this.getSpellAbility().addEffect(new BoostTargetEffect(
ControllerGotLifeCount.instance,
ControllerGotLifeCount.instance,
ControllerGainedLifeCount.instance,
ControllerGainedLifeCount.instance,
Duration.EndOfTurn));
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
this.getSpellAbility().addWatcher(new PlayerGainedLifeWatcher());
this.getSpellAbility().addHint(ControllerGotLifeCount.getHint());
this.getSpellAbility().addHint(ControllerGainedLifeCount.getHint());
}
private FortifyingDraught(final FortifyingDraught card) {

View file

@ -8,7 +8,7 @@ import mage.abilities.condition.common.SourceIsRingBearerCondition;
import mage.abilities.condition.common.YouGainedLifeCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.decorator.ConditionalOneShotEffect;
import mage.abilities.dynamicvalue.common.ControllerGotLifeCount;
import mage.abilities.dynamicvalue.common.ControllerGainedLifeCount;
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.effects.keyword.TheRingTemptsYouEffect;
import mage.abilities.keyword.PartnerWithAbility;
@ -58,7 +58,7 @@ public final class FrodoAdventurousHobbit extends CardImpl {
new DrawCardSourceControllerEffect(1),
FrodoAdventurousHobbitCondition.instance
));
this.addAbility(ability.addHint(ControllerGotLifeCount.getHint()), new PlayerGainedLifeWatcher());
this.addAbility(ability.addHint(ControllerGainedLifeCount.getHint()), new PlayerGainedLifeWatcher());
}
private FrodoAdventurousHobbit(final FrodoAdventurousHobbit card) {

View file

@ -5,7 +5,7 @@ import mage.abilities.Ability;
import mage.abilities.common.AttacksTriggeredAbility;
import mage.abilities.common.BeginningOfEndStepTriggeredAbility;
import mage.abilities.condition.common.YouGainedLifeCondition;
import mage.abilities.dynamicvalue.common.ControllerGotLifeCount;
import mage.abilities.dynamicvalue.common.ControllerGainedLifeCount;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
import mage.abilities.keyword.FlyingAbility;
@ -43,7 +43,7 @@ public final class GwaihirGreatestOfTheEagles extends CardImpl {
this.addAbility(new BeginningOfEndStepTriggeredAbility(
Zone.BATTLEFIELD, new CreateTokenEffect(new GwaihirBirdToken()), TargetController.ANY,
new YouGainedLifeCondition(ComparisonType.MORE_THAN, 2), false
).addHint(ControllerGotLifeCount.getHint()), new PlayerGainedLifeWatcher());
).addHint(ControllerGainedLifeCount.getHint()), new PlayerGainedLifeWatcher());
}
private GwaihirGreatestOfTheEagles(final GwaihirGreatestOfTheEagles card) {

View file

@ -7,7 +7,7 @@ import mage.abilities.common.LimitedTimesPerTurnActivatedAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.MyTurnCondition;
import mage.abilities.costs.common.PayLifeCost;
import mage.abilities.dynamicvalue.common.ControllerGotLifeCount;
import mage.abilities.dynamicvalue.common.ControllerGainedLifeCount;
import mage.abilities.effects.common.cost.CostModificationEffectImpl;
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.abilities.hint.common.MyTurnHint;
@ -41,7 +41,7 @@ public final class LiciaSanguineTribune extends CardImpl {
// Licia, Sanguine Tribune costs 1 less to cast for each 1 life you gained this turn.
this.addAbility(new SimpleStaticAbility(
Zone.ALL, new LiciaSanguineTribuneCostReductionEffect()
).addHint(ControllerGotLifeCount.getHint()), new PlayerGainedLifeWatcher());
).addHint(ControllerGainedLifeCount.getHint()), new PlayerGainedLifeWatcher());
// First strike
this.addAbility(FirstStrikeAbility.getInstance());
@ -82,7 +82,7 @@ class LiciaSanguineTribuneCostReductionEffect extends CostModificationEffectImpl
public boolean apply(Game game, Ability source, Ability abilityToModify) {
Player player = game.getPlayer(source.getControllerId());
if (player != null) {
CardUtil.reduceCost(abilityToModify, ControllerGotLifeCount.instance.calculate(game, source, this));
CardUtil.reduceCost(abilityToModify, ControllerGainedLifeCount.instance.calculate(game, source, this));
return true;
}
return false;

View file

@ -3,7 +3,7 @@ package mage.cards.m;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.Condition;
import mage.abilities.condition.common.YouGainedLifeCondition;
import mage.abilities.dynamicvalue.common.ControllerGotLifeCount;
import mage.abilities.dynamicvalue.common.ControllerGainedLifeCount;
import mage.abilities.effects.common.DestroyTargetEffect;
import mage.abilities.effects.common.cost.SpellCostReductionSourceEffect;
import mage.cards.CardImpl;
@ -29,7 +29,7 @@ public final class MortalitySpear extends CardImpl {
// This spell costs {2} less to cast if you gained life this turn.
this.addAbility(new SimpleStaticAbility(
Zone.ALL, new SpellCostReductionSourceEffect(2, condition).setCanWorksOnStackOnly(true)
).setRuleAtTheTop(true).addHint(ControllerGotLifeCount.getHint()), new PlayerGainedLifeWatcher());
).setRuleAtTheTop(true).addHint(ControllerGainedLifeCount.getHint()), new PlayerGainedLifeWatcher());
// Destroy target nonland permanent.
this.getSpellAbility().addEffect(new DestroyTargetEffect());

View file

@ -1,7 +1,7 @@
package mage.cards.n;
import mage.abilities.dynamicvalue.DynamicValue;
import mage.abilities.dynamicvalue.common.ControllerGotLifeCount;
import mage.abilities.dynamicvalue.common.ControllerGainedLifeCount;
import mage.abilities.dynamicvalue.common.SignInversionDynamicValue;
import mage.abilities.effects.common.GainLifeEffect;
import mage.abilities.effects.common.continuous.BoostTargetEffect;
@ -19,7 +19,7 @@ import java.util.UUID;
*/
public final class NightmaresThirst extends CardImpl {
private static final DynamicValue xValue = new SignInversionDynamicValue(ControllerGotLifeCount.instance);
private static final DynamicValue xValue = new SignInversionDynamicValue(ControllerGainedLifeCount.instance);
public NightmaresThirst(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{B}");
@ -29,7 +29,7 @@ public final class NightmaresThirst extends CardImpl {
this.getSpellAbility().addEffect(new BoostTargetEffect(xValue, xValue, Duration.EndOfTurn));
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
this.getSpellAbility().addWatcher(new PlayerGainedLifeWatcher());
this.getSpellAbility().addHint(ControllerGotLifeCount.getHint());
this.getSpellAbility().addHint(ControllerGainedLifeCount.getHint());
}
private NightmaresThirst(final NightmaresThirst card) {

View file

@ -4,7 +4,7 @@ import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldTappedAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.dynamicvalue.common.ControllerGotLifeCount;
import mage.abilities.dynamicvalue.common.ControllerGainedLifeCount;
import mage.abilities.effects.AsThoughEffectImpl;
import mage.cards.Card;
import mage.cards.CardImpl;
@ -34,7 +34,7 @@ public final class OathswornVampire extends CardImpl {
// You may cast Oathsworn Vampire from your graveyard if you gained life this turn.
this.addAbility(new SimpleStaticAbility(
Zone.ALL, new OathswornVampirePlayEffect()
).addHint(ControllerGotLifeCount.getHint()), new PlayerGainedLifeWatcher());
).addHint(ControllerGainedLifeCount.getHint()), new PlayerGainedLifeWatcher());
}
private OathswornVampire(final OathswornVampire card) {

View file

@ -5,7 +5,7 @@ import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.DiscardCardCost;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.dynamicvalue.common.ControllerGotLifeCount;
import mage.abilities.dynamicvalue.common.ControllerGainedLifeCount;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.*;
import mage.cards.CardSetInfo;
@ -62,11 +62,11 @@ public final class PestilentCauldron extends ModalDoubleFacedCard {
// {1}, {T}: Each opponent mills cards equal to the amount of life you gained this turn.
ability = new SimpleActivatedAbility(new MillCardsEachPlayerEffect(
ControllerGotLifeCount.instance, TargetController.OPPONENT
ControllerGainedLifeCount.instance, TargetController.OPPONENT
).setText("each opponent mills cards equal to the amount of life you gained this turn"), new GenericManaCost(1));
ability.addCost(new TapSourceCost());
ability.addWatcher(new PlayerGainedLifeWatcher());
this.getLeftHalfCard().addAbility(ability.addHint(ControllerGotLifeCount.getHint()));
this.getLeftHalfCard().addAbility(ability.addHint(ControllerGainedLifeCount.getHint()));
// {4}, {T}: Exile four target cards from a single graveyard. Draw a card.
ability = new SimpleActivatedAbility(new ExileTargetEffect(), new GenericManaCost(4));

View file

@ -4,7 +4,7 @@ import mage.MageInt;
import mage.abilities.common.BeginningOfEndStepTriggeredAbility;
import mage.abilities.condition.common.YouGainedLifeCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.dynamicvalue.common.ControllerGotLifeCount;
import mage.abilities.dynamicvalue.common.ControllerGainedLifeCount;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl;
@ -44,7 +44,7 @@ public final class RegalBloodlord extends CardImpl {
"At the beginning of each end step, "
+ "if you gained life this turn, "
+ "create a 1/1 black Bat creature token with flying."
).addHint(ControllerGotLifeCount.getHint()), new PlayerGainedLifeWatcher());
).addHint(ControllerGainedLifeCount.getHint()), new PlayerGainedLifeWatcher());
}
private RegalBloodlord(final RegalBloodlord card) {

View file

@ -6,7 +6,7 @@ import mage.abilities.common.BeginningOfEndStepTriggeredAbility;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.condition.common.YouGainedLifeCondition;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.dynamicvalue.common.ControllerGotLifeCount;
import mage.abilities.dynamicvalue.common.ControllerGainedLifeCount;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
@ -39,7 +39,7 @@ public final class ResplendentAngel extends CardImpl {
this.addAbility(new BeginningOfEndStepTriggeredAbility(
Zone.BATTLEFIELD, new CreateTokenEffect(new AngelVigilanceToken()),
TargetController.ANY, new YouGainedLifeCondition(ComparisonType.MORE_THAN, 4), false
).addHint(ControllerGotLifeCount.getHint()), new PlayerGainedLifeWatcher());
).addHint(ControllerGainedLifeCount.getHint()), new PlayerGainedLifeWatcher());
// {3}{W}{W}{W}: Until end of turn, Resplendent Angel gets +2/+2 and gains lifelink.
Ability ability = new SimpleActivatedAbility(new BoostSourceEffect(

View file

@ -5,7 +5,7 @@ import mage.abilities.common.BeginningOfEndStepTriggeredAbility;
import mage.abilities.common.GainLifeControllerTriggeredAbility;
import mage.abilities.common.delayed.ReflexiveTriggeredAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.dynamicvalue.common.ControllerGotLifeCount;
import mage.abilities.dynamicvalue.common.ControllerGainedLifeCount;
import mage.abilities.effects.common.DoWhenCostPaid;
import mage.abilities.effects.common.ReturnFromGraveyardToBattlefieldTargetEffect;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
@ -71,7 +71,7 @@ public final class RodolfDuskbringer extends CardImpl {
ability.addTarget(new TargetCardInYourGraveyard(filter));
this.addAbility(new BeginningOfEndStepTriggeredAbility(new DoWhenCostPaid(
ability, new ManaCostsImpl<>("{1}{W/B}"), "Pay {1}{W/B}?"
), TargetController.YOU, false).addHint(ControllerGotLifeCount.getHint()), new PlayerGainedLifeWatcher());
), TargetController.YOU, false).addHint(ControllerGainedLifeCount.getHint()), new PlayerGainedLifeWatcher());
}
private RodolfDuskbringer(final RodolfDuskbringer card) {

View file

@ -3,7 +3,7 @@ package mage.cards.s;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.BeginningOfEndStepTriggeredAbility;
import mage.abilities.dynamicvalue.common.ControllerGotLifeCount;
import mage.abilities.dynamicvalue.common.ControllerGainedLifeCount;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.keyword.LifelinkAbility;
import mage.cards.CardImpl;
@ -36,7 +36,7 @@ public final class ShannaPurifyingBlade extends CardImpl {
// At the beginning of your end step, you may pay {X}. If you do, draw X cards. X can't be greater than the amount of life you gained this turn.
this.addAbility(new BeginningOfEndStepTriggeredAbility(
new ShannaPurifyingBladeEffect(), TargetController.YOU, false
).addHint(ControllerGotLifeCount.getHint()), new PlayerGainedLifeWatcher());
).addHint(ControllerGainedLifeCount.getHint()), new PlayerGainedLifeWatcher());
}
private ShannaPurifyingBlade(final ShannaPurifyingBlade card) {
@ -72,7 +72,7 @@ class ShannaPurifyingBladeEffect extends OneShotEffect {
if (player == null) {
return false;
}
int lifeGained = ControllerGotLifeCount.instance.calculate(game, source, this);
int lifeGained = ControllerGainedLifeCount.instance.calculate(game, source, this);
if (lifeGained < 1) {
return false;
}

View file

@ -8,7 +8,7 @@ import mage.abilities.common.BeginningOfEndStepTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.Condition;
import mage.abilities.condition.common.YouGainedLifeCondition;
import mage.abilities.dynamicvalue.common.ControllerGotLifeCount;
import mage.abilities.dynamicvalue.common.ControllerGainedLifeCount;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.cost.SpellCostReductionSourceEffect;
import mage.abilities.keyword.TrampleAbility;
@ -39,8 +39,8 @@ public final class SproutbackTrudge extends CardImpl {
// This spell costs {X} less to cast, where X is the amount of life you gained this turn.
this.addAbility(new SimpleStaticAbility(
Zone.ALL, new SpellCostReductionSourceEffect(ControllerGotLifeCount.instance)
).addHint(ControllerGotLifeCount.getHint()).setRuleAtTheTop(true), new PlayerGainedLifeWatcher());
Zone.ALL, new SpellCostReductionSourceEffect(ControllerGainedLifeCount.instance)
).addHint(ControllerGainedLifeCount.getHint()).setRuleAtTheTop(true), new PlayerGainedLifeWatcher());
// Trample
this.addAbility(TrampleAbility.getInstance());

View file

@ -4,7 +4,7 @@ import mage.MageInt;
import mage.abilities.common.BeginningOfEndStepTriggeredAbility;
import mage.abilities.condition.Condition;
import mage.abilities.condition.common.YouGainedLifeCondition;
import mage.abilities.dynamicvalue.common.ControllerGotLifeCount;
import mage.abilities.dynamicvalue.common.ControllerGainedLifeCount;
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@ -32,7 +32,7 @@ public final class TheGaffer extends CardImpl {
// At the beginning of each end step, if you gained 3 or more life this turn, draw a card.
this.addAbility(new BeginningOfEndStepTriggeredAbility(
new DrawCardSourceControllerEffect(1), TargetController.ANY, condition, false
).addHint(ControllerGotLifeCount.getHint()), new PlayerGainedLifeWatcher());
).addHint(ControllerGainedLifeCount.getHint()), new PlayerGainedLifeWatcher());
}
private TheGaffer(final TheGaffer card) {

View file

@ -7,7 +7,7 @@ import mage.abilities.condition.Condition;
import mage.abilities.condition.common.YouGainedLifeCondition;
import mage.abilities.costs.Cost;
import mage.abilities.costs.common.PayLifeCost;
import mage.abilities.dynamicvalue.common.ControllerGotLifeCount;
import mage.abilities.dynamicvalue.common.ControllerGainedLifeCount;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.keyword.LifelinkAbility;
import mage.cards.CardImpl;
@ -43,7 +43,7 @@ public final class TivashGloomSummoner extends CardImpl {
this.addAbility(new BeginningOfEndStepTriggeredAbility(
Zone.BATTLEFIELD, new TivashGloomSummonerEffect(),
TargetController.YOU, condition, false
).addHint(ControllerGotLifeCount.getHint()), new PlayerGainedLifeWatcher());
).addHint(ControllerGainedLifeCount.getHint()), new PlayerGainedLifeWatcher());
}
private TivashGloomSummoner(final TivashGloomSummoner card) {

View file

@ -5,7 +5,7 @@ import mage.abilities.common.BeginningOfEndStepTriggeredAbility;
import mage.abilities.condition.Condition;
import mage.abilities.condition.common.YouGainedLifeCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.dynamicvalue.common.ControllerGotLifeCount;
import mage.abilities.dynamicvalue.common.ControllerGainedLifeCount;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.keyword.FlyingAbility;
import mage.abilities.keyword.LifelinkAbility;
@ -48,7 +48,7 @@ public final class ValkyrieHarbinger extends CardImpl {
TargetController.ANY, false
), condition, "At the beginning of each end step, if you gained 4 or more life this turn, " +
"create a 4/4 white Angel creature token with flying and vigilance."
).addHint(ControllerGotLifeCount.getHint()), new PlayerGainedLifeWatcher());
).addHint(ControllerGainedLifeCount.getHint()), new PlayerGainedLifeWatcher());
}
private ValkyrieHarbinger(final ValkyrieHarbinger card) {

View file

@ -2,7 +2,7 @@ package mage.cards.v;
import mage.MageInt;
import mage.abilities.common.EntersBattlefieldAbility;
import mage.abilities.dynamicvalue.common.ControllerGotLifeCount;
import mage.abilities.dynamicvalue.common.ControllerGainedLifeCount;
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@ -27,9 +27,9 @@ public final class VoraciousWurm extends CardImpl {
// Voracious Wurm enters the battlefield with X +1/+1 counters on it, where X is the amount of life you've gained this turn.
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(
CounterType.P1P1.createInstance(0), ControllerGotLifeCount.instance, true
CounterType.P1P1.createInstance(0), ControllerGainedLifeCount.instance, true
), "with X +1/+1 counters on it, where X is the amount of life you've gained this turn")
.addHint(ControllerGotLifeCount.getHint()), new PlayerGainedLifeWatcher());
.addHint(ControllerGainedLifeCount.getHint()), new PlayerGainedLifeWatcher());
}
private VoraciousWurm(final VoraciousWurm card) {

View file

@ -6,7 +6,7 @@ import mage.abilities.common.ActivateAsSorceryActivatedAbility;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.dynamicvalue.DynamicValue;
import mage.abilities.dynamicvalue.common.ControllerGotLifeCount;
import mage.abilities.dynamicvalue.common.ControllerGainedLifeCount;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.counter.AddCountersTargetEffect;
import mage.abilities.hint.Hint;
@ -46,7 +46,7 @@ public final class WillowduskEssenceSeer extends CardImpl {
"life you lost this turn, whichever is greater"), new GenericManaCost(1));
ability.addCost(new TapSourceCost());
ability.addTarget(new TargetPermanent(StaticFilters.FILTER_ANOTHER_TARGET_CREATURE));
ability.addHint(ControllerGotLifeCount.getHint());
ability.addHint(ControllerGainedLifeCount.getHint());
ability.addHint(WillowduskEssenceSeerHint.instance);
this.addAbility(ability, new PlayerGainedLifeWatcher());
}

View file

@ -6,7 +6,7 @@ import mage.abilities.common.BeginningOfEndStepTriggeredAbility;
import mage.abilities.condition.Condition;
import mage.abilities.condition.common.YouGainedLifeCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.dynamicvalue.common.ControllerGotLifeCount;
import mage.abilities.dynamicvalue.common.ControllerGainedLifeCount;
import mage.abilities.effects.common.ReturnFromGraveyardToHandTargetEffect;
import mage.abilities.effects.common.SacrificeOpponentsEffect;
import mage.abilities.keyword.DeathtouchAbility;
@ -54,7 +54,7 @@ public final class WitchOfTheMoors extends CardImpl {
ability.addTarget(new TargetCardInYourGraveyard(
0, 1, StaticFilters.FILTER_CARD_CREATURE_YOUR_GRAVEYARD
));
this.addAbility(ability.addHint(ControllerGotLifeCount.getHint()), new PlayerGainedLifeWatcher());
this.addAbility(ability.addHint(ControllerGainedLifeCount.getHint()), new PlayerGainedLifeWatcher());
}
private WitchOfTheMoors(final WitchOfTheMoors card) {

View file

@ -28,6 +28,7 @@ public final class TalesOfMiddleEarthCommander extends ExpansionSet {
cards.add(new SetCardInfo("Arwen, Weaver of Hope", 35, Rarity.RARE, mage.cards.a.ArwenWeaverOfHope.class));
cards.add(new SetCardInfo("Asceticism", 233, Rarity.RARE, mage.cards.a.Asceticism.class));
cards.add(new SetCardInfo("Ash Barrens", 295, Rarity.UNCOMMON, mage.cards.a.AshBarrens.class));
cards.add(new SetCardInfo("Assemble the Entmoot", 36, Rarity.RARE, mage.cards.a.AssembleTheEntmoot.class));
cards.add(new SetCardInfo("Banishing Light", 161, Rarity.UNCOMMON, mage.cards.b.BanishingLight.class));
cards.add(new SetCardInfo("Banquet Guests", 47, Rarity.RARE, mage.cards.b.BanquetGuests.class));
cards.add(new SetCardInfo("Basalt Monolith", 274, Rarity.UNCOMMON, mage.cards.b.BasaltMonolith.class));

View file

@ -34,7 +34,7 @@ public class SimpleActivatedAbility extends ActivatedAbilityImpl {
super(zone, effect, cost);
}
public SimpleActivatedAbility(SimpleActivatedAbility ability) {
protected SimpleActivatedAbility(SimpleActivatedAbility ability) {
super(ability);
}

View file

@ -9,11 +9,11 @@ import mage.game.Game;
import mage.watchers.common.PlayerGainedLifeWatcher;
/**
* Amount of life the controller got this turn.
* Amount of life the controller gained this turn.
*
* @author LevelX2
*/
public enum ControllerGotLifeCount implements DynamicValue {
public enum ControllerGainedLifeCount implements DynamicValue {
instance;
private static final Hint hint = new ValueHint("Life gained this turn", instance);
@ -28,7 +28,7 @@ public enum ControllerGotLifeCount implements DynamicValue {
}
@Override
public ControllerGotLifeCount copy() {
public ControllerGainedLifeCount copy() {
return instance;
}

View file

@ -22,7 +22,7 @@ public final class SylvanOfferingTreefolkToken extends TokenImpl {
toughness = new MageInt(xValue);
}
public SylvanOfferingTreefolkToken(final SylvanOfferingTreefolkToken token) {
private SylvanOfferingTreefolkToken(final SylvanOfferingTreefolkToken token) {
super(token);
}