diff --git a/resources/magic/data/cards.txt b/resources/magic/data/cards.txt index 3d2ce9dad3..2db59d4299 100644 --- a/resources/magic/data/cards.txt +++ b/resources/magic/data/cards.txt @@ -786,6 +786,18 @@ cost={2}{W} pt=2/2 timing=main +>Treasure Hunter +image=http://magiccards.info/scans/en/10e/52.jpg +value=3 +rarity=U +type=Creature +subtype=Human +color=w +converted=3 +cost={2}{W} +pt=2/2 +timing=main + >Aven Fleetwing image=http://magiccards.info/scans/en/m12/44.jpg value=3 @@ -4575,6 +4587,16 @@ converted=5 cost={3}{U}{U} timing=draw +>Tidings +image=http://magiccards.info/scans/en/10e/116.jpg +value=4 +rarity=U +type=Sorcery +color=u +converted=5 +cost={3}{U}{U} +timing=draw + >Visions of Beyond image=http://magiccards.info/scans/en/m12/80.jpg value=2 diff --git a/src/magic/card/Tidings.java b/src/magic/card/Tidings.java new file mode 100644 index 0000000000..49c1665916 --- /dev/null +++ b/src/magic/card/Tidings.java @@ -0,0 +1,34 @@ +package magic.card; + +import magic.model.MagicGame; +import magic.model.MagicPayedCost; +import magic.model.MagicPlayer; +import magic.model.action.MagicDrawAction; +import magic.model.action.MagicMoveCardAction; +import magic.model.event.MagicEvent; +import magic.model.event.MagicSpellCardEvent; +import magic.model.stack.MagicCardOnStack; + +public class Tidings { + 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, + new Object[]{cardOnStack,player}, + this, + "Draw four cards."); + } + @Override + public void executeEvent( + final MagicGame game, + final MagicEvent event, + final Object[] data, + final Object[] choiceResults) { + game.doAction(new MagicMoveCardAction((MagicCardOnStack)data[0])); + game.doAction(new MagicDrawAction((MagicPlayer)data[1],4)); + } + }; +} diff --git a/src/magic/card/Treasure_Hunter.java b/src/magic/card/Treasure_Hunter.java new file mode 100644 index 0000000000..c958b13126 --- /dev/null +++ b/src/magic/card/Treasure_Hunter.java @@ -0,0 +1,46 @@ +package magic.card; + +import magic.model.MagicCard; +import magic.model.MagicGame; +import magic.model.MagicLocationType; +import magic.model.MagicPermanent; +import magic.model.MagicPlayer; +import magic.model.action.MagicCardAction; +import magic.model.action.MagicMoveCardAction; +import magic.model.action.MagicRemoveCardAction; +import magic.model.choice.MagicMayChoice; +import magic.model.choice.MagicTargetChoice; +import magic.model.event.MagicEvent; +import magic.model.target.MagicGraveyardTargetPicker; +import magic.model.trigger.MagicWhenComesIntoPlayTrigger; + + +public class Treasure_Hunter { + public static final MagicWhenComesIntoPlayTrigger T = new MagicWhenComesIntoPlayTrigger() { + @Override + public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent, final MagicPlayer player) { + return new MagicEvent( + permanent, + player, + new MagicMayChoice( + "You may return target artifact card from your graveyard to your hand.", + MagicTargetChoice.TARGET_ARTIFACT_CARD_FROM_GRAVEYARD), + new MagicGraveyardTargetPicker(false), + MagicEvent.NO_DATA, + this, + "You may$ return target artifact card$ from your graveyard to your hand."); + } + + @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) { + game.doAction(new MagicRemoveCardAction(card,MagicLocationType.Graveyard)); + game.doAction(new MagicMoveCardAction(card,MagicLocationType.Graveyard,MagicLocationType.OwnersHand)); + } + }); + } + } + }; +} diff --git a/src/magic/model/choice/MagicTargetChoice.java b/src/magic/model/choice/MagicTargetChoice.java index fae721a37d..c76c6081e6 100644 --- a/src/magic/model/choice/MagicTargetChoice.java +++ b/src/magic/model/choice/MagicTargetChoice.java @@ -210,7 +210,11 @@ public class MagicTargetChoice extends MagicChoice { public static final MagicTargetChoice TARGET_INSTANT_OR_SORCERY_CARD_FROM_OPPONENTS_GRAVEYARD= new MagicTargetChoice(MagicTargetFilter.TARGET_INSTANT_OR_SORCERY_CARD_FROM_OPPONENTS_GRAVEYARD,false,MagicTargetHint.None,"target instant or sorcery card from your opponent's graveyard"); public static final MagicTargetChoice TARGET_ENCHANTMENT_CARD_FROM_GRAVEYARD = - new MagicTargetChoice(MagicTargetFilter.TARGET_ENCHANTMENT_CARD_FROM_GRAVEYARD,false,MagicTargetHint.None,"target enchantment card from your graveyard"); + new MagicTargetChoice(MagicTargetFilter.TARGET_ENCHANTMENT_CARD_FROM_GRAVEYARD,false,MagicTargetHint.None, + "target enchantment card from your graveyard"); + public static final MagicTargetChoice TARGET_ARTIFACT_CARD_FROM_GRAVEYARD = + new MagicTargetChoice(MagicTargetFilter.TARGET_ARTIFACT_CARD_FROM_GRAVEYARD,false,MagicTargetHint.None, + "target artifact card from your graveyard"); public static final MagicTargetChoice TARGET_CREATURE_CARD_FROM_ALL_GRAVEYARDS= new MagicTargetChoice(MagicTargetFilter.TARGET_CREATURE_CARD_FROM_ALL_GRAVEYARDS,false,MagicTargetHint.None,"target creature card from a graveyard"); public static final MagicTargetChoice TARGET_ARTIFACT_OR_CREATURE_CARD_FROM_ALL_GRAVEYARDS= diff --git a/src/magic/model/target/MagicTargetFilter.java b/src/magic/model/target/MagicTargetFilter.java index aec928dc04..e0037c525b 100644 --- a/src/magic/model/target/MagicTargetFilter.java +++ b/src/magic/model/target/MagicTargetFilter.java @@ -1139,6 +1139,15 @@ public interface MagicTargetFilter { } }; + MagicTargetFilter TARGET_ARTIFACT_CARD_FROM_GRAVEYARD = new MagicTargetFilter() { + public boolean accept(final MagicGame game,final MagicPlayer player,final MagicTarget target) { + return ((MagicCard)target).getCardDefinition().hasType(MagicType.Artifact); + } + public boolean acceptType(final MagicTargetType targetType) { + return targetType == MagicTargetType.Graveyard; + } + }; + MagicTargetFilter TARGET_CREATURE_CARD_FROM_ALL_GRAVEYARDS=new MagicTargetFilter() { public boolean accept(final MagicGame game,final MagicPlayer player,final MagicTarget target) { return ((MagicCard)target).getCardDefinition().isCreature();