added life gain hints to various cards

This commit is contained in:
Evan Kranzler 2021-04-10 15:57:22 -04:00
parent 1e67899098
commit 4528663f1a
8 changed files with 61 additions and 75 deletions

View file

@ -2,6 +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.effects.common.CreateTokenEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@ -23,9 +24,10 @@ public final class AngelicAccord extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{W}");
// 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.
this.addAbility(new BeginningOfEndStepTriggeredAbility(Zone.BATTLEFIELD, new CreateTokenEffect(new AngelToken()), TargetController.ANY,
new YouGainedLifeCondition(ComparisonType.MORE_THAN, 3), false),
new PlayerGainedLifeWatcher());
this.addAbility(new BeginningOfEndStepTriggeredAbility(
Zone.BATTLEFIELD, new CreateTokenEffect(new AngelToken()), TargetController.ANY,
new YouGainedLifeCondition(ComparisonType.MORE_THAN, 3), false
).addHint(ControllerGotLifeCount.getHint()), new PlayerGainedLifeWatcher());
}
private AngelicAccord(final AngelicAccord card) {

View file

@ -1,29 +1,24 @@
package mage.cards.c;
import java.util.UUID;
import mage.MageInt;
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.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.continuous.GainAbilityAllEffect;
import mage.abilities.keyword.IndestructibleAbility;
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.constants.TargetController;
import mage.constants.Zone;
import mage.constants.*;
import mage.filter.common.FilterControlledPermanent;
import mage.game.permanent.token.CrestedSunmareToken;
import mage.watchers.common.PlayerGainedLifeWatcher;
import java.util.UUID;
/**
*
* @author emerald000
*/
public final class CrestedSunmare extends CardImpl {
@ -42,15 +37,19 @@ public final class CrestedSunmare extends CardImpl {
this.toughness = new MageInt(5);
// Other Horses you control have indestructible.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAllEffect(IndestructibleAbility.getInstance(), Duration.WhileOnBattlefield, filter, true)));
this.addAbility(new SimpleStaticAbility(new GainAbilityAllEffect(
IndestructibleAbility.getInstance(), Duration.WhileOnBattlefield, filter, true
)));
// At the beginning of each end step, if you gained life this turn, create a 5/5 white Horse creature token.
this.addAbility(
new ConditionalInterveningIfTriggeredAbility(
new BeginningOfEndStepTriggeredAbility(new CreateTokenEffect(new CrestedSunmareToken()), TargetController.ANY, false),
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."),
new PlayerGainedLifeWatcher());
this.addAbility(new ConditionalInterveningIfTriggeredAbility(
new BeginningOfEndStepTriggeredAbility(
new CreateTokenEffect(new CrestedSunmareToken()),
TargetController.ANY, false
), 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());
}
private CrestedSunmare(final CrestedSunmare card) {

View file

@ -1,29 +1,21 @@
package mage.cards.o;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldTappedAbility;
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.effects.AsThoughEffectImpl;
import mage.cards.Card;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.AsThoughEffectType;
import mage.constants.CardType;
import mage.constants.ComparisonType;
import mage.constants.Duration;
import mage.constants.Outcome;
import mage.constants.SubType;
import mage.constants.Zone;
import mage.constants.*;
import mage.game.Game;
import mage.watchers.common.PlayerGainedLifeWatcher;
import java.util.UUID;
/**
*
* @author LevelX2
*/
public final class OathswornVampire extends CardImpl {
@ -40,7 +32,9 @@ public final class OathswornVampire extends CardImpl {
this.addAbility(new EntersBattlefieldTappedAbility());
// You may cast Oathsworn Vampire from your graveyard if you gained life this turn.
this.addAbility(new SimpleStaticAbility(Zone.ALL, new OathswornVampirePlayEffect()), new PlayerGainedLifeWatcher());
this.addAbility(new SimpleStaticAbility(
Zone.ALL, new OathswornVampirePlayEffect()
).addHint(ControllerGotLifeCount.getHint()), new PlayerGainedLifeWatcher());
}
private OathswornVampire(final OathswornVampire card) {
@ -55,17 +49,13 @@ public final class OathswornVampire extends CardImpl {
class OathswornVampirePlayEffect extends AsThoughEffectImpl {
private Condition condition;
public OathswornVampirePlayEffect() {
OathswornVampirePlayEffect() {
super(AsThoughEffectType.PLAY_FROM_NOT_OWN_HAND_ZONE, Duration.EndOfGame, Outcome.Benefit);
staticText = "You may cast {this} from your graveyard if you gained life this turn";
condition = new YouGainedLifeCondition(ComparisonType.MORE_THAN, 0);
}
public OathswornVampirePlayEffect(final OathswornVampirePlayEffect effect) {
private OathswornVampirePlayEffect(final OathswornVampirePlayEffect effect) {
super(effect);
this.condition = effect.condition;
}
@Override
@ -80,13 +70,15 @@ class OathswornVampirePlayEffect extends AsThoughEffectImpl {
@Override
public boolean applies(UUID sourceId, Ability source, UUID affectedControllerId, Game game) {
if (sourceId.equals(source.getSourceId()) && source.isControlledBy(affectedControllerId)) {
Card card = game.getCard(source.getSourceId());
if (card != null && game.getState().getZone(source.getSourceId()) == Zone.GRAVEYARD) {
return condition.apply(game, source);
}
}
PlayerGainedLifeWatcher watcher = game.getState().getWatcher(PlayerGainedLifeWatcher.class);
if (watcher == null
|| watcher.getLifeGained(source.getControllerId()) < 1
|| !sourceId.equals(source.getSourceId())
|| !source.isControlledBy(affectedControllerId)) {
return false;
}
Card card = game.getCard(source.getSourceId());
return card != null && game.getState().getZone(source.getSourceId()) == Zone.GRAVEYARD;
}
}

View file

@ -1,23 +1,24 @@
package mage.cards.r;
import java.util.UUID;
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.effects.common.CreateTokenEffect;
import mage.constants.SubType;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.ComparisonType;
import mage.constants.SubType;
import mage.constants.TargetController;
import mage.game.permanent.token.BatToken;
import mage.watchers.common.PlayerGainedLifeWatcher;
import java.util.UUID;
/**
*
* @author TheElk801
*/
public final class RegalBloodlord extends CardImpl {
@ -43,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."
), new PlayerGainedLifeWatcher());
).addHint(ControllerGotLifeCount.getHint()), new PlayerGainedLifeWatcher());
}
private RegalBloodlord(final RegalBloodlord card) {

View file

@ -1,30 +1,26 @@
package mage.cards.r;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
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.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
import mage.constants.SubType;
import mage.abilities.keyword.FlyingAbility;
import mage.abilities.keyword.LifelinkAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.ComparisonType;
import mage.constants.Duration;
import mage.constants.TargetController;
import mage.constants.Zone;
import mage.constants.*;
import mage.game.permanent.token.AngelVigilanceToken;
import mage.watchers.common.PlayerGainedLifeWatcher;
import java.util.UUID;
/**
*
* @author TheElk801
*/
public final class ResplendentAngel extends CardImpl {
@ -41,23 +37,16 @@ public final class ResplendentAngel extends CardImpl {
// At the beginning of each end step, if you gained 5 or more life this turn, create a 4/4 white Angel creature token with flying and vigilance.
this.addAbility(new BeginningOfEndStepTriggeredAbility(
Zone.BATTLEFIELD,
new CreateTokenEffect(new AngelVigilanceToken()),
TargetController.ANY,
new YouGainedLifeCondition(ComparisonType.MORE_THAN, 4),
false
), new PlayerGainedLifeWatcher());
Zone.BATTLEFIELD, new CreateTokenEffect(new AngelVigilanceToken()),
TargetController.ANY, new YouGainedLifeCondition(ComparisonType.MORE_THAN, 4), false
).addHint(ControllerGotLifeCount.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(
Ability ability = new SimpleActivatedAbility(new BoostSourceEffect(
2, 2, Duration.EndOfTurn
).setText("until end of turn, {this} gets +2/+2"),
new ManaCostsImpl("{3}{W}{W}{W}")
);
).setText("until end of turn, {this} gets +2/+2"), new ManaCostsImpl("{3}{W}{W}{W}"));
ability.addEffect(new GainAbilitySourceEffect(
LifelinkAbility.getInstance(),
Duration.EndOfTurn
LifelinkAbility.getInstance(), Duration.EndOfTurn
).setText("and gains lifelink"));
this.addAbility(ability);
}

View file

@ -7,6 +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.effects.OneShotEffect;
import mage.abilities.keyword.LifelinkAbility;
import mage.cards.CardImpl;
@ -42,7 +43,7 @@ public final class TivashGloomSummoner extends CardImpl {
this.addAbility(new BeginningOfEndStepTriggeredAbility(
Zone.BATTLEFIELD, new TivashGloomSummonerEffect(),
TargetController.YOU, condition, false
), new PlayerGainedLifeWatcher());
).addHint(ControllerGotLifeCount.getHint()), new PlayerGainedLifeWatcher());
}
private TivashGloomSummoner(final TivashGloomSummoner card) {

View file

@ -5,6 +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.effects.common.CreateTokenEffect;
import mage.abilities.keyword.FlyingAbility;
import mage.abilities.keyword.LifelinkAbility;
@ -47,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."
), new PlayerGainedLifeWatcher());
).addHint(ControllerGotLifeCount.getHint()), new PlayerGainedLifeWatcher());
}
private ValkyrieHarbinger(final ValkyrieHarbinger card) {

View file

@ -6,6 +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.effects.common.ReturnFromGraveyardToHandTargetEffect;
import mage.abilities.effects.common.SacrificeOpponentsEffect;
import mage.abilities.keyword.DeathtouchAbility;
@ -53,7 +54,7 @@ public final class WitchOfTheMoors extends CardImpl {
ability.addTarget(new TargetCardInYourGraveyard(
0, 1, StaticFilters.FILTER_CARD_CREATURE_YOUR_GRAVEYARD
));
this.addAbility(ability, new PlayerGainedLifeWatcher());
this.addAbility(ability.addHint(ControllerGotLifeCount.getHint()), new PlayerGainedLifeWatcher());
}
private WitchOfTheMoors(final WitchOfTheMoors card) {