added Seance and Sudden Disappearance

master
beholder 2012-03-03 11:09:26 +01:00
parent 9aa6678acc
commit 2690760b72
4 changed files with 169 additions and 0 deletions

View File

@ -0,0 +1,11 @@
>Seance
url=http://magiccards.info/dka/en/20.html
image=http://magiccards.info/scans/en/dka/20.jpg
value=3
rarity=R
type=Enchantment
color=w
converted=4
cost={2}{W}{W}
timing=enchantment
requires_card_code

View File

@ -0,0 +1,11 @@
>Sudden Disappearance
url=http://magiccards.info/dka/en/23.html
image=http://magiccards.info/scans/en/dka/23.jpg
value=4
rarity=R
type=Sorcery
color=w
converted=6
cost={5}{W}
timing=removal
requires_card_code

View File

@ -0,0 +1,92 @@
package magic.card;
import java.util.EnumSet;
import magic.model.MagicCard;
import magic.model.MagicGame;
import magic.model.MagicLocationType;
import magic.model.MagicPermanent;
import magic.model.MagicPermanentState;
import magic.model.MagicPlayer;
import magic.model.MagicSubType;
import magic.model.action.MagicAction;
import magic.model.action.MagicAddStaticAction;
import magic.model.action.MagicCardAction;
import magic.model.action.MagicChangeStateAction;
import magic.model.action.MagicMoveCardAction;
import magic.model.action.MagicPlayTokenAction;
import magic.model.action.MagicPutIntoPlayAction;
import magic.model.action.MagicRemoveCardAction;
import magic.model.choice.MagicMayChoice;
import magic.model.choice.MagicTargetChoice;
import magic.model.event.MagicEvent;
import magic.model.mstatic.MagicLayer;
import magic.model.mstatic.MagicStatic;
import magic.model.target.MagicGraveyardTargetPicker;
import magic.model.trigger.MagicAtUpkeepTrigger;
public class Seance {
private static final MagicStatic Spirit = new MagicStatic(MagicLayer.Type) {
@Override
public EnumSet<MagicSubType> getSubTypeFlags(final MagicPermanent permanent,final EnumSet<MagicSubType> flags) {
final EnumSet<MagicSubType> mod = flags.clone();
mod.add(MagicSubType.Spirit);
return mod;
}
};
public static final MagicAtUpkeepTrigger T = new MagicAtUpkeepTrigger() {
@Override
public MagicEvent executeTrigger(
final MagicGame game,
final MagicPermanent permanent,
final MagicPlayer data) {
final MagicPlayer player = permanent.getController();
return new MagicEvent(
permanent,
player,
new MagicMayChoice(
player + " may exile target creature card from your graveyard.",
MagicTargetChoice.TARGET_CREATURE_CARD_FROM_GRAVEYARD),
new MagicGraveyardTargetPicker(true),
new Object[]{player},
this,
player + " may$ exile target creature card$ from his or her graveyard. " +
"If he or she does, put a token onto the battlefield that's a copy " +
"of that card except it's a Spirit in addition to its other types. " +
"Exile it at the beginning of the next end step.");
}
@Override
public void executeEvent(
final MagicGame game,
final MagicEvent event,
final Object data[],
final Object[] choiceResults) {
if (MagicMayChoice.isYesChoice(choiceResults[0])) {
event.processTargetCard(game,choiceResults,1,new MagicCardAction() {
public void doAction(final MagicCard card) {
final MagicPlayer player=(MagicPlayer)data[0];
game.doAction(new MagicRemoveCardAction(
card,
MagicLocationType.Graveyard));
game.doAction(new MagicMoveCardAction(
card,
MagicLocationType.Graveyard,
MagicLocationType.Exile));
final MagicAction action = new MagicPlayTokenAction(
player,
card.getCardDefinition());
game.doAction(action);
final MagicPermanent permanent = ((MagicPutIntoPlayAction)action).getPermanent();
game.doAction(new MagicChangeStateAction(
permanent,
MagicPermanentState.SacrificeAtEndOfTurn,
true));
game.doAction(new MagicAddStaticAction(permanent,Spirit));
}
});
}
}
};
}

View File

@ -0,0 +1,55 @@
package magic.card;
import java.util.Collection;
import magic.model.MagicGame;
import magic.model.MagicPayedCost;
import magic.model.MagicPermanent;
import magic.model.MagicPlayer;
import magic.model.action.MagicExileUntilEndOfTurnAction;
import magic.model.action.MagicMoveCardAction;
import magic.model.action.MagicPlayerAction;
import magic.model.choice.MagicTargetChoice;
import magic.model.event.MagicEvent;
import magic.model.event.MagicSpellCardEvent;
import magic.model.stack.MagicCardOnStack;
import magic.model.target.MagicTarget;
import magic.model.target.MagicTargetFilter;
public class Sudden_Disappearance {
public static final MagicSpellCardEvent S = new MagicSpellCardEvent() {
@Override
public MagicEvent getEvent(
final MagicCardOnStack cardOnStack,
final MagicPayedCost payedCost) {
final MagicPlayer player = cardOnStack.getController();
return new MagicEvent(
cardOnStack.getCard(),
player,
MagicTargetChoice.TARGET_PLAYER,
new Object[]{cardOnStack},
this,
"Exile all nonland permanents target player$ controls.");
}
@Override
public void executeEvent(
final MagicGame game,
final MagicEvent event,
final Object[] data,
final Object[] choiceResults) {
game.doAction(new MagicMoveCardAction((MagicCardOnStack)data[0]));
event.processTargetPlayer(game,choiceResults,0,new MagicPlayerAction() {
public void doAction(final MagicPlayer player) {
final Collection<MagicTarget> targets =
game.filterTargets(player,MagicTargetFilter.TARGET_PERMANENT_YOU_CONTROL);
for (final MagicTarget target : targets) {
final MagicPermanent permanent = (MagicPermanent)target;
if (!permanent.isLand()) {
game.doAction(new MagicExileUntilEndOfTurnAction(permanent));
}
}
}
});
}
};
}