Implement liliana4 and necromentia (#6616)

* LilianaWakerOfTheDead init commit

* Necromentia init commit

* benefit outcome

* fix text

* fix Liliana

* don't change VerifyCardDataTest

* use hasOpponent

* add hint and fix name chooser

* use positive # for hint

* don't change test
This commit is contained in:
htrajan 2020-06-07 18:16:53 -07:00 committed by GitHub
parent 64625654f4
commit 5185d71638
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 330 additions and 52 deletions

View file

@ -0,0 +1,53 @@
package mage.abilities.effects.common;
import mage.abilities.Ability;
import mage.abilities.effects.ContinuousEffect;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
import mage.abilities.keyword.HasteAbility;
import mage.cards.Card;
import mage.constants.Duration;
import mage.constants.Outcome;
import mage.constants.Zone;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.players.Player;
import mage.target.targetpointer.FixedTarget;
public class ReturnCreatureFromGraveyardToBattlefieldAndGainHasteEffect extends OneShotEffect {
public ReturnCreatureFromGraveyardToBattlefieldAndGainHasteEffect() {
super(Outcome.PutCreatureInPlay);
this.staticText = "put target creature card from a graveyard onto the battlefield under your control. It gains haste";
}
public ReturnCreatureFromGraveyardToBattlefieldAndGainHasteEffect(final ReturnCreatureFromGraveyardToBattlefieldAndGainHasteEffect effect) {
super(effect);
}
@Override
public ReturnCreatureFromGraveyardToBattlefieldAndGainHasteEffect copy() {
return new ReturnCreatureFromGraveyardToBattlefieldAndGainHasteEffect(this);
}
@Override
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
if (controller == null) {
return false;
}
Card card = game.getCard(source.getFirstTarget());
if (card != null) {
controller.moveCards(card, Zone.BATTLEFIELD, source, game);
Permanent permanent = game.getPermanent(card.getId());
if (permanent != null) {
ContinuousEffect effect = new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.Custom);
effect.setTargetPointer(new FixedTarget(permanent, game));
game.addEffect(effect, source);
}
return true;
}
return false;
}
}

View file

@ -0,0 +1,30 @@
package mage.game.command.emblems;
import mage.abilities.Ability;
import mage.abilities.common.BeginningOfCombatTriggeredAbility;
import mage.abilities.effects.common.ReturnCreatureFromGraveyardToBattlefieldAndGainHasteEffect;
import mage.constants.TargetController;
import mage.constants.Zone;
import mage.filter.FilterCard;
import mage.filter.StaticFilters;
import mage.filter.common.FilterCreatureCard;
import mage.game.command.Emblem;
import mage.target.common.TargetCardInGraveyard;
public final class LilianaWakerOfTheDeadEmblem extends Emblem {
/**
* Emblem with "At the beginning of combat on your turn, put target creature card from a graveyard onto the battlefield under your control. It gains haste."
*/
private static final FilterCard filter = new FilterCreatureCard("creature card from a graveyard");
public LilianaWakerOfTheDeadEmblem() {
setName("Emblem Liliana");
Ability ability = new BeginningOfCombatTriggeredAbility(
Zone.COMMAND,
new ReturnCreatureFromGraveyardToBattlefieldAndGainHasteEffect(),
TargetController.YOU, false, false);
ability.addTarget(new TargetCardInGraveyard(StaticFilters.FILTER_CARD_CREATURE));
this.getAbilities().add(ability);
}
}