Add Mentor mechanic
parent
f3d488fa37
commit
8c1901072c
|
@ -649,6 +649,12 @@ public enum MagicAbility {
|
|||
}
|
||||
}
|
||||
},
|
||||
Mentor("mentor", 0) {
|
||||
@Override
|
||||
protected void addAbilityImpl(final MagicAbilityStore card, final Matcher arg) {
|
||||
card.add(ThisAttacksTrigger.Mentor);
|
||||
}
|
||||
},
|
||||
|
||||
// abilities that involve SN
|
||||
ShockLand("As SN enters the battlefield, you may " + ARG.COST + "\\. If you don't, SN enters the battlefield tapped\\.", -10) {
|
||||
|
|
|
@ -2281,6 +2281,16 @@ public class MagicTargetFilterFactory {
|
|||
}
|
||||
};
|
||||
|
||||
public static final MagicPermanentFilterImpl MENTOR = new MagicPermanentFilterImpl() {
|
||||
@Override
|
||||
public boolean accept(final MagicSource source, final MagicPlayer player, final MagicPermanent target) {
|
||||
final MagicPermanent mentor = (MagicPermanent)source;
|
||||
return target.isCreature() &&
|
||||
target.isAttacking() &&
|
||||
target.getPower() < mentor.getPower();
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Single texts completely specifying the targeting condition.
|
||||
*/
|
||||
|
|
|
@ -1,12 +1,16 @@
|
|||
package magic.model.trigger;
|
||||
|
||||
import magic.model.MagicCounterType;
|
||||
import magic.model.MagicGame;
|
||||
import magic.model.MagicPermanent;
|
||||
import magic.model.event.MagicEvent;
|
||||
import magic.model.event.MagicSourceEvent;
|
||||
import magic.model.event.MagicExertEvent;
|
||||
import magic.model.choice.MagicMayChoice;
|
||||
import magic.model.choice.MagicTargetChoice;
|
||||
import magic.model.action.EnqueueTriggerAction;
|
||||
import magic.model.action.ChangeCountersAction;
|
||||
import magic.model.target.MagicTargetFilterFactory;
|
||||
|
||||
public abstract class ThisAttacksTrigger extends AttacksTrigger {
|
||||
public ThisAttacksTrigger(final int priority) {
|
||||
|
@ -51,4 +55,26 @@ public abstract class ThisAttacksTrigger extends AttacksTrigger {
|
|||
}
|
||||
};
|
||||
}
|
||||
|
||||
public static ThisAttacksTrigger Mentor = new ThisAttacksTrigger() {
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game, final MagicPermanent permanent, final MagicPermanent attacker) {
|
||||
return new MagicEvent(
|
||||
permanent,
|
||||
new MagicTargetChoice(
|
||||
MagicTargetFilterFactory.MENTOR,
|
||||
"an attacking creature you control with lesser power than " + permanent
|
||||
),
|
||||
this,
|
||||
"PN puts a +1/+1 counter on target attacking creature with less power than SN.$"
|
||||
);
|
||||
}
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
event.processTargetPermanent(game, permanent -> {
|
||||
game.doAction(new ChangeCountersAction(event.getPlayer(), permanent, MagicCounterType.PlusOne, 1));
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue