magarena/release/Magarena/scripts/Gideon__Champion_of_Justice...

108 lines
4.2 KiB
Groovy
Raw Normal View History

2013-02-25 21:22:10 -08:00
def AB = new MagicStatic(MagicLayer.Ability, MagicStatic.UntilEOT) {
@Override
public void modAbilityFlags(final MagicPermanent source,final MagicPermanent permanent,final Set<MagicAbility> flags) {
flags.add(MagicAbility.Indestructible);
}
};
2013-06-23 18:29:26 -07:00
2013-02-25 21:22:10 -08:00
def ST = new MagicStatic(MagicLayer.Type, MagicStatic.UntilEOT) {
@Override
public void modSubTypeFlags(final MagicPermanent permanent,final Set<MagicSubType> flags) {
flags.add(MagicSubType.Human);
flags.add(MagicSubType.Soldier);
}
@Override
public int getTypeFlags(final MagicPermanent permanent,final int flags) {
return flags|MagicType.Creature.getMask();
}
};
def PreventAllDamage = new MagicIfDamageWouldBeDealtTrigger(MagicTrigger.PREVENT_DAMAGE) {
2013-02-25 21:22:10 -08:00
@Override
public MagicEvent executeTrigger(
final MagicGame game,
final MagicPermanent permanent,
final MagicDamage damage) {
if (permanent == damage.getTarget()) {
// Replacement effect. Generates no event or action.
damage.prevent();
2013-02-25 21:22:10 -08:00
}
return MagicEvent.NONE;
}
};
[
new MagicPlaneswalkerActivation(1) {
2013-02-25 21:22:10 -08:00
@Override
public MagicEvent getPermanentEvent(final MagicPermanent source,final MagicPayedCost payedCost) {
return new MagicEvent(
source,
2013-02-25 21:42:19 -08:00
MagicTargetChoice.TARGET_OPPONENT,
2013-02-25 21:22:10 -08:00
this,
2013-02-25 21:42:19 -08:00
"Put a loyalty counter on SN for each creature target opponent\$ controls."
2013-02-25 21:22:10 -08:00
);
}
@Override
public void executeEvent(final MagicGame game, final MagicEvent event) {
final int amt = event.getPlayer().getOpponent().getNrOfPermanents(MagicType.Creature);
2013-02-25 21:22:10 -08:00
game.doAction(new MagicChangeCountersAction(
event.getPermanent(),
MagicCounterType.Charge,
amt,
true
));
}
},
new MagicPlaneswalkerActivation(0) {
2013-02-25 21:22:10 -08:00
@Override
public MagicEvent getPermanentEvent(final MagicPermanent source,final MagicPayedCost payedCost) {
return new MagicEvent(
source,
this,
2013-09-27 18:51:03 -07:00
"Until end of turn, Gideon, Champion of Justice becomes a Human Soldier creature " +
"with power and toughness each equal to the number of loyalty counters on him and gains indestructible. " +
2013-02-25 21:22:10 -08:00
"He's still a planeswalker. Prevent all damage that would be dealt to him this turn."
);
}
@Override
public void executeEvent(final MagicGame game, final MagicEvent event) {
2013-02-25 21:42:19 -08:00
2013-06-23 18:29:26 -07:00
final int amt = event.getPermanent().getCounters(MagicCounterType.Charge);
2013-02-25 21:42:19 -08:00
def PT = new MagicStatic(MagicLayer.SetPT, MagicStatic.UntilEOT) {
@Override
public void modPowerToughness(final MagicPermanent source,final MagicPermanent permanent,final MagicPowerToughness pt) {
pt.set(amt,amt);
}
};
2013-06-23 18:29:26 -07:00
2013-02-25 21:22:10 -08:00
game.doAction(new MagicBecomesCreatureAction(event.getPermanent(),PT,AB,ST));
2013-06-23 18:29:26 -07:00
game.doAction(new MagicAddTurnTriggerAction(event.getPermanent(), PreventAllDamage));
2013-02-25 21:22:10 -08:00
}
},
new MagicPlaneswalkerActivation(-15) {
2013-02-25 21:22:10 -08:00
@Override
public MagicEvent getPermanentEvent(final MagicPermanent source,final MagicPayedCost payedCost) {
return new MagicEvent(
source,
this,
"Exile all other permanents."
);
}
@Override
public void executeEvent(final MagicGame game, final MagicEvent event) {
final MagicTargetFilter<MagicPermanent> AllOtherPermanent = new MagicOtherPermanentTargetFilter(
2013-06-23 18:29:26 -07:00
MagicTargetFilter.TARGET_PERMANENT,
2013-02-25 21:22:10 -08:00
event.getPermanent()
);
final Collection<MagicPermanent> targets = game.filterPermanents(event.getPlayer(), AllOtherPermanent);
for (final MagicPermanent target : targets) {
game.doAction(new MagicRemoveFromPlayAction(
target,
MagicLocationType.Exile
));
2013-06-23 18:29:26 -07:00
}
2013-02-25 21:22:10 -08:00
}
}
]