mirror of
https://github.com/correl/mage.git
synced 2025-04-06 01:04:10 -09:00
Clean up some code for Marneus Calgar and Elesh Norn, Mother of Machines
This commit is contained in:
parent
a315171ca4
commit
05443fb3f4
2 changed files with 15 additions and 49 deletions
Mage.Sets/src/mage/cards
|
@ -73,14 +73,13 @@ class EleshNornMotherOfMachinesDoublingEffect extends ReplacementEffectImpl {
|
||||||
public boolean applies(GameEvent event, Ability source, Game game) {
|
public boolean applies(GameEvent event, Ability source, Game game) {
|
||||||
if (event instanceof NumberOfTriggersEvent) {
|
if (event instanceof NumberOfTriggersEvent) {
|
||||||
NumberOfTriggersEvent numberOfTriggersEvent = (NumberOfTriggersEvent) event;
|
NumberOfTriggersEvent numberOfTriggersEvent = (NumberOfTriggersEvent) event;
|
||||||
// Only triggers of the controller of Elesh Norn
|
// Only triggers for the controller of Elesh Norn
|
||||||
if (source.isControlledBy(event.getPlayerId())) {
|
if (source.isControlledBy(event.getPlayerId())) {
|
||||||
GameEvent sourceEvent = numberOfTriggersEvent.getSourceEvent();
|
GameEvent sourceEvent = numberOfTriggersEvent.getSourceEvent();
|
||||||
// Only EtB triggers
|
// Only EtB triggers
|
||||||
if (sourceEvent != null
|
if (sourceEvent != null
|
||||||
&& sourceEvent.getType() == GameEvent.EventType.ENTERS_THE_BATTLEFIELD
|
&& sourceEvent.getType() == GameEvent.EventType.ENTERS_THE_BATTLEFIELD
|
||||||
&& sourceEvent instanceof EntersTheBattlefieldEvent) {
|
&& sourceEvent instanceof EntersTheBattlefieldEvent) {
|
||||||
EntersTheBattlefieldEvent entersTheBattlefieldEvent = (EntersTheBattlefieldEvent) sourceEvent;
|
|
||||||
// Only for triggers of permanents
|
// Only for triggers of permanents
|
||||||
if (game.getPermanent(numberOfTriggersEvent.getSourceId()) != null) {
|
if (game.getPermanent(numberOfTriggersEvent.getSourceId()) != null) {
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
package mage.cards.m;
|
package mage.cards.m;
|
||||||
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.TriggeredAbilityImpl;
|
import mage.abilities.common.EntersBattlefieldOneOrMoreTriggeredAbility;
|
||||||
import mage.abilities.common.SimpleActivatedAbility;
|
import mage.abilities.common.SimpleActivatedAbility;
|
||||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||||
import mage.abilities.effects.common.CreateTokenEffect;
|
import mage.abilities.effects.common.CreateTokenEffect;
|
||||||
|
@ -9,16 +9,10 @@ import mage.abilities.effects.common.DrawCardSourceControllerEffect;
|
||||||
import mage.abilities.keyword.DoubleStrikeAbility;
|
import mage.abilities.keyword.DoubleStrikeAbility;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.*;
|
||||||
import mage.constants.SubType;
|
import mage.filter.FilterPermanent;
|
||||||
import mage.constants.SuperType;
|
import mage.filter.predicate.permanent.TokenPredicate;
|
||||||
import mage.constants.Zone;
|
|
||||||
import mage.game.Game;
|
|
||||||
import mage.game.events.GameEvent;
|
|
||||||
import mage.game.events.ZoneChangeGroupEvent;
|
|
||||||
import mage.game.permanent.PermanentImpl;
|
|
||||||
|
|
||||||
import java.util.Objects;
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import mage.game.permanent.token.WhiteAstartesWarriorToken;
|
import mage.game.permanent.token.WhiteAstartesWarriorToken;
|
||||||
|
|
||||||
|
@ -27,6 +21,12 @@ import mage.game.permanent.token.WhiteAstartesWarriorToken;
|
||||||
*/
|
*/
|
||||||
public final class MarneusCalgar extends CardImpl {
|
public final class MarneusCalgar extends CardImpl {
|
||||||
|
|
||||||
|
static final FilterPermanent filter = new FilterPermanent("tokens");
|
||||||
|
|
||||||
|
static {
|
||||||
|
filter.add(TokenPredicate.TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
public MarneusCalgar(UUID ownerId, CardSetInfo setInfo) {
|
public MarneusCalgar(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}{U}{B}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}{U}{B}");
|
||||||
|
|
||||||
|
@ -39,7 +39,10 @@ public final class MarneusCalgar extends CardImpl {
|
||||||
this.addAbility(DoubleStrikeAbility.getInstance());
|
this.addAbility(DoubleStrikeAbility.getInstance());
|
||||||
|
|
||||||
// Master Tactician — Whenever one or more tokens enter the battlefield under your control, draw a card.
|
// Master Tactician — Whenever one or more tokens enter the battlefield under your control, draw a card.
|
||||||
this.addAbility(new MarneusCalgarTriggeredAbility());
|
//this.addAbility(new MarneusCalgarTriggeredAbility());
|
||||||
|
this.addAbility(new EntersBattlefieldOneOrMoreTriggeredAbility(
|
||||||
|
new DrawCardSourceControllerEffect(1), filter, TargetController.YOU
|
||||||
|
).withFlavorWord("Master Tactician"));
|
||||||
|
|
||||||
// Chapter Master — {6}: Create two 2/2 white Astartes Warrior creature tokens with vigilance.
|
// Chapter Master — {6}: Create two 2/2 white Astartes Warrior creature tokens with vigilance.
|
||||||
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD,
|
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD,
|
||||||
|
@ -57,39 +60,3 @@ public final class MarneusCalgar extends CardImpl {
|
||||||
return new MarneusCalgar(this);
|
return new MarneusCalgar(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class MarneusCalgarTriggeredAbility extends TriggeredAbilityImpl {
|
|
||||||
|
|
||||||
MarneusCalgarTriggeredAbility() {
|
|
||||||
super(Zone.BATTLEFIELD, new DrawCardSourceControllerEffect(1), false);
|
|
||||||
this.withFlavorWord("Master Tactician");
|
|
||||||
setTriggerPhrase("Whenever one or more tokens enter the battlefield under your control, ");
|
|
||||||
}
|
|
||||||
|
|
||||||
private MarneusCalgarTriggeredAbility(final MarneusCalgarTriggeredAbility ability) {
|
|
||||||
super(ability);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean checkEventType(GameEvent event, Game game) {
|
|
||||||
return event.getType() == GameEvent.EventType.ZONE_CHANGE_GROUP;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean checkTrigger(GameEvent event, Game game) {
|
|
||||||
ZoneChangeGroupEvent zEvent = (ZoneChangeGroupEvent) event;
|
|
||||||
return Zone.BATTLEFIELD == zEvent.getToZone()
|
|
||||||
&& zEvent.getTokens() != null
|
|
||||||
&& zEvent
|
|
||||||
.getTokens()
|
|
||||||
.stream()
|
|
||||||
.filter(Objects::nonNull)
|
|
||||||
.map(PermanentImpl::getControllerId)
|
|
||||||
.anyMatch(this::isControlledBy);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public MarneusCalgarTriggeredAbility copy() {
|
|
||||||
return new MarneusCalgarTriggeredAbility(this);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue