diff --git a/resources/magic/data/cards.txt b/resources/magic/data/cards.txt index 2a699dbdf8..db28ef6d44 100644 --- a/resources/magic/data/cards.txt +++ b/resources/magic/data/cards.txt @@ -16737,3 +16737,19 @@ value=4 rarity=R type=Land timing=land + +>Goblin Burrows +url=http://magiccards.info/evg/en/58.html +image=http://magiccards.info/scans/en/evg/58.jpg +value=3 +rarity=U +type=Land +timing=land + +>Gods' Eye, Gate to the Reikai +url=http://magiccards.info/bok/en/164.html +image=http://magiccards.info/scans/en/bok/164.jpg +value=3 +rarity=R +type=Legendary,Land +timing=land diff --git a/src/magic/card/Goblin_Burrows.java b/src/magic/card/Goblin_Burrows.java new file mode 100644 index 0000000000..1e348062fb --- /dev/null +++ b/src/magic/card/Goblin_Burrows.java @@ -0,0 +1,62 @@ +package magic.card; + +import magic.model.MagicGame; +import magic.model.MagicManaCost; +import magic.model.MagicManaType; +import magic.model.MagicPayedCost; +import magic.model.MagicPermanent; +import magic.model.MagicSource; +import magic.model.action.MagicChangeTurnPTAction; +import magic.model.action.MagicPermanentAction; +import magic.model.choice.MagicTargetChoice; +import magic.model.condition.MagicCondition; +import magic.model.event.MagicActivationHints; +import magic.model.event.MagicEvent; +import magic.model.event.MagicManaActivation; +import magic.model.event.MagicPayManaCostTapEvent; +import magic.model.event.MagicPermanentActivation; +import magic.model.event.MagicTapManaActivation; +import magic.model.event.MagicTiming; +import magic.model.target.MagicPumpTargetPicker; +import java.util.Arrays; + +public class Goblin_Burrows { + public static final MagicManaActivation M = new MagicTapManaActivation( + Arrays.asList(MagicManaType.Colorless),0); + + public static final MagicPermanentActivation A = new MagicPermanentActivation( + new MagicCondition[]{ + MagicCondition.CAN_TAP_CONDITION, + MagicManaCost.ONE_RED.getCondition() + }, + new MagicActivationHints(MagicTiming.Pump), + "Pump") { + + @Override + public MagicEvent[] getCostEvent(final MagicSource source) { + return new MagicEvent[]{ + new MagicPayManaCostTapEvent(source,source.getController(),MagicManaCost.ONE_RED)}; + } + + @Override + public MagicEvent getPermanentEvent(final MagicPermanent source,final MagicPayedCost payedCost) { + return new MagicEvent( + source, + source.getController(), + MagicTargetChoice.POS_TARGET_GOBLIN_CREATURE, + MagicPumpTargetPicker.getInstance(), + MagicEvent.NO_DATA, + this, + "Target Goblin creature$ gets +2/+0 until end of turn."); + } + + @Override + public void executeEvent(final MagicGame game,final MagicEvent event,final Object[] data,final Object[] choiceResults) { + event.processTargetPermanent(game,choiceResults,0,new MagicPermanentAction() { + public void doAction(final MagicPermanent creature) { + game.doAction(new MagicChangeTurnPTAction(creature,2,0)); + } + }); + } + }; +} diff --git a/src/magic/card/Gods__Eye__Gate_to_the_Reikai.java b/src/magic/card/Gods__Eye__Gate_to_the_Reikai.java new file mode 100644 index 0000000000..4bd33514a0 --- /dev/null +++ b/src/magic/card/Gods__Eye__Gate_to_the_Reikai.java @@ -0,0 +1,47 @@ +package magic.card; + +import magic.data.TokenCardDefinitions; +import magic.model.MagicGame; +import magic.model.MagicLocationType; +import magic.model.MagicManaType; +import magic.model.MagicPermanent; +import magic.model.MagicPlayer; +import magic.model.action.MagicPlayTokenAction; +import magic.model.event.MagicEvent; +import magic.model.event.MagicManaActivation; +import magic.model.event.MagicTapManaActivation; +import magic.model.trigger.MagicGraveyardTriggerData; +import magic.model.trigger.MagicWhenPutIntoGraveyardTrigger; + +import java.util.Arrays; + +public class Gods__Eye__Gate_to_the_Reikai { + public static final MagicManaActivation M = new MagicTapManaActivation( + Arrays.asList(MagicManaType.Colorless),0); + + public static final MagicWhenPutIntoGraveyardTrigger T = new MagicWhenPutIntoGraveyardTrigger() { + @Override + public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final MagicGraveyardTriggerData triggerData) { + final MagicPlayer player = permanent.getController(); + return (MagicLocationType.Play == triggerData.fromLocation) ? + new MagicEvent( + permanent, + player, + new Object[]{player}, + this, + player + " puts a 1/1 colorless Spirit creature token onto the battlefield.") : + MagicEvent.NONE; + } + + @Override + public void executeEvent( + final MagicGame game, + final MagicEvent event, + final Object data[], + final Object[] choiceResults) { + game.doAction(new MagicPlayTokenAction( + (MagicPlayer)data[0], + TokenCardDefinitions.getInstance().getTokenDefinition("Spirit1"))); + } + }; +} diff --git a/src/magic/model/choice/MagicTargetChoice.java b/src/magic/model/choice/MagicTargetChoice.java index d9063d63c7..2d05b487ef 100644 --- a/src/magic/model/choice/MagicTargetChoice.java +++ b/src/magic/model/choice/MagicTargetChoice.java @@ -233,6 +233,9 @@ public class MagicTargetChoice extends MagicChoice { public static final MagicTargetChoice POS_TARGET_KNIGHT_CREATURE = new MagicTargetChoice(MagicTargetFilter.TARGET_KNIGHT_CREATURE,true,MagicTargetHint.Positive, "target Knight creature "); + public static final MagicTargetChoice POS_TARGET_GOBLIN_CREATURE = + new MagicTargetChoice(MagicTargetFilter.TARGET_GOBLIN_CREATURE,true,MagicTargetHint.Positive, + "target Goblin creature "); private static final MagicTargetChoice SACRIFICE_PERMANENT= new MagicTargetChoice(MagicTargetFilter.TARGET_PERMANENT_YOU_CONTROL,false,MagicTargetHint.None,"a permanent to sacrifice"); public static final MagicTargetChoice SACRIFICE_CREATURE= diff --git a/src/magic/model/target/MagicTargetFilter.java b/src/magic/model/target/MagicTargetFilter.java index 59d4209c1f..6f05fc7d24 100644 --- a/src/magic/model/target/MagicTargetFilter.java +++ b/src/magic/model/target/MagicTargetFilter.java @@ -762,6 +762,17 @@ public interface MagicTargetFilter { } }; + + MagicTargetFilter TARGET_GOBLIN_CREATURE = new MagicTargetFilter() { + public boolean accept(final MagicGame game,final MagicPlayer player,final MagicTarget target) { + return ((MagicPermanent)target).isCreature(game) && + ((MagicPermanent)target).hasSubType(MagicSubType.Goblin,game); + } + public boolean acceptType(final MagicTargetType targetType) { + return targetType == MagicTargetType.Permanent; + } + }; + MagicTargetFilter TARGET_GOBLIN_YOU_CONTROL=new MagicTargetFilter() { public boolean accept(final MagicGame game,final MagicPlayer player,final MagicTarget target) { return target.getController()==player &&