re-attempt Ancestral Memories

master
ShawnieBoy 2016-02-06 06:00:14 +00:00
parent 4021c11e7f
commit 834e245acc
1 changed files with 36 additions and 54 deletions

View File

@ -1,69 +1,51 @@
def DrawTwo = {
def TakeTwo = {
final MagicGame game, final MagicEvent event ->
event.processChosenCards(game, {
final MagicCard card ->
game.doAction(new MagicRemoveCardAction(card,MagicLocationType.OwnersLibrary));
game.doAction(new MagicMoveCardAction(card,MagicLocationType.OwnersLibrary,MagicLocationType.OwnersHand));
});
};
def DiscardRest = {
final MagicGame game, final MagicEvent event ->
final MagicPlayer player = event.getPlayer();
final int amount = (player.getLibrary().size() < 6) ? player.getLibrary().size() : 5;
for(int i = 0; i < amount; i++) {
game.doAction(new MagicMillLibraryAction(player,1));
}
};
event.processChosenCards(game, {
final MagicCard chosen ->
final MagicPlayer player = event.getPlayer();
final MagicCardList top = new MagicCardList(player.getLibrary().getCardsFromTop(7));
for (final MagicCard card : top) {
if (card == chosen) {
game.doAction(new ShiftCardAction(
card,
MagicLocationType.OwnersLibrary,
MagicLocationType.OwnersHand
));
game.logAppendMessage(player, "A card is put into ${player.getName()}'s hand.");
} else {
game.doAction(new ShiftCardAction(
card,
MagicLocationType.OwnersLibrary,
MagicLocationType.Graveyard
));
}
}
});
}
[
new MagicSpellCardEvent() {
@Override
public MagicEvent getEvent(final MagicCardOnStack cardOnStack,final MagicPayedCost payedCost) {
public MagicEvent getEvent(final MagicCardOnStack cardOnStack, final MagicPayedCost payedCost) {
return new MagicEvent(
cardOnStack,
this,
"PN looks at the top seven cards of his or her library. Then PN puts two of them into your hand and the rest into his or her graveyard."
"PN looks at the top seven cards of his or her library. " +
"PN puts two of them into his or her hand and the rest into his or her graveyard."
);
}
@Override
public void executeEvent(final MagicGame game, final MagicEvent event) {
final MagicCardList choiceList = new MagicCardList();
final int size = event.getPlayer().getLibrary().size();
if (size == 1) game.doAction(new MagicDrawAction(event.getPlayer(),1));
else if (size == 2) game.doAction(new MagicDrawAction(event.getPlayer(),2)); //truth to be told: "index out of bounds" is something to be hated naturally
else if (8 > size && size > 2) {
for(int i = 1; i <= size; i++) {
choiceList.add(event.getPlayer().getLibrary().get(size-i));
}
game.addEvent(new MagicEvent(
event.getSource(),
new MagicFromCardListChoice(choiceList,2),
DrawTwo,
"\$"
));
game.addEvent(new MagicEvent(
event.getSource(),
DiscardRest,
""
));
} else if (size > 7) {
for(int i = 0; i < 7; i++) {
choiceList.add(event.getPlayer().getLibrary().get(7-i));
}
game.addEvent(new MagicEvent(
event.getSource(),
new MagicFromCardListChoice(choiceList,2),
DrawTwo,
"\$"
));
game.addEvent(new MagicEvent(
event.getSource(),
DiscardRest,
""
));
}
final MagicCardList topCards = event.getPlayer().getLibrary().getCardsFromTop(7);
game.addEvent(new MagicEvent(
event.getSource(),
new MagicFromCardListChoice(topCards, 2),
MagicGraveyardTargetPicker.ReturnToHand,
TakeTwo,
""
));
}
}
]
//Only processes the first card chosen