diff --git a/resources/magic/data/cards.txt b/resources/magic/data/cards.txt index 7782355692..456beea7ec 100644 --- a/resources/magic/data/cards.txt +++ b/resources/magic/data/cards.txt @@ -11536,3 +11536,27 @@ converted=3 cost={3} pt=2/2 timing=main + +>Vedalken Certarch +image=http://magiccards.info/scans/en/som/52.jpg +value=1 +rarity=C +type=Creature +subtype=Vedalken,Wizard +color=u +converted=1 +cost={U} +pt=1/1 +timing=main + +>Barrage Ogre +image=http://magiccards.info/scans/en/som/83.jpg +value=3 +rarity=U +type=Creature +subtype=Ogre,Warrior +color=r +converted=5 +cost={3}{R}{R} +pt=3/3 +timing=main diff --git a/src/magic/card/Barrage_Ogre.java b/src/magic/card/Barrage_Ogre.java new file mode 100644 index 0000000000..f7af5af881 --- /dev/null +++ b/src/magic/card/Barrage_Ogre.java @@ -0,0 +1,65 @@ +package magic.card; + +import magic.model.MagicDamage; +import magic.model.MagicGame; +import magic.model.MagicManaCost; +import magic.model.MagicPayedCost; +import magic.model.MagicPermanent; +import magic.model.MagicPlayer; +import magic.model.MagicSource; +import magic.model.action.MagicDealDamageAction; +import magic.model.action.MagicTargetAction; +import magic.model.choice.MagicTargetChoice; +import magic.model.condition.MagicCondition; +import magic.model.event.MagicActivationHints; +import magic.model.event.MagicEvent; +import magic.model.event.MagicPayManaCostEvent; +import magic.model.event.MagicPermanentActivation; +import magic.model.event.MagicSacrificePermanentEvent; +import magic.model.event.MagicTapEvent; +import magic.model.event.MagicTiming; +import magic.model.target.MagicDamageTargetPicker; +import magic.model.target.MagicTarget; + + +public class Barrage_Ogre { + public static final MagicPermanentActivation A =new MagicPermanentActivation( + new MagicCondition[]{ + MagicCondition.CAN_TAP_CONDITION, + MagicCondition.CONTROL_ARTIFACT_CONDITION + }, + new MagicActivationHints(MagicTiming.Removal,false,1), + "Damage") { + @Override + public MagicEvent[] getCostEvent(final MagicSource source) { + final MagicPlayer player = source.getController(); + return new MagicEvent[]{ + new MagicTapEvent((MagicPermanent)source), + new MagicSacrificePermanentEvent(source,player,MagicTargetChoice.SACRIFICE_ARTIFACT)}; + } + @Override + public MagicEvent getPermanentEvent(final MagicPermanent source,final MagicPayedCost payedCost) { + return new MagicEvent( + source, + source.getController(), + MagicTargetChoice.NEG_TARGET_CREATURE_OR_PLAYER, + new MagicDamageTargetPicker(2), + new Object[]{source}, + this, + source + " deals 2 damage to target creature or player$."); + } + @Override + public void executeEvent( + final MagicGame game, + final MagicEvent event, + final Object[] data, + final Object[] choiceResults) { + event.processTarget(game,choiceResults,0,new MagicTargetAction() { + public void doAction(final MagicTarget target) { + final MagicDamage damage = new MagicDamage((MagicSource)data[0],target,2,false); + game.doAction(new MagicDealDamageAction(damage)); + } + }); + } + }; +} diff --git a/src/magic/card/Vedalken_Certarch.java b/src/magic/card/Vedalken_Certarch.java new file mode 100644 index 0000000000..98d2b47df4 --- /dev/null +++ b/src/magic/card/Vedalken_Certarch.java @@ -0,0 +1,55 @@ +package magic.card; + +import magic.model.MagicGame; +import magic.model.MagicPayedCost; +import magic.model.MagicPermanent; +import magic.model.MagicSource; +import magic.model.action.MagicPermanentAction; +import magic.model.action.MagicTapAction; +import magic.model.choice.MagicTargetChoice; +import magic.model.condition.MagicCondition; +import magic.model.event.MagicActivationHints; +import magic.model.event.MagicEvent; +import magic.model.event.MagicPermanentActivation; +import magic.model.event.MagicTapEvent; +import magic.model.event.MagicTiming; +import magic.model.target.MagicTapTargetPicker; + + +public class Vedalken_Certarch { + public static final MagicPermanentActivation A = new MagicPermanentActivation( + new MagicCondition[]{ + MagicCondition.CAN_TAP_CONDITION, + MagicCondition.METALCRAFT_CONDITION}, + new MagicActivationHints(MagicTiming.Tapping), + "Tap") { + @Override + public MagicEvent[] getCostEvent(final MagicSource source) { + final MagicPermanent permanent=(MagicPermanent)source; + return new MagicEvent[]{new MagicTapEvent(permanent)}; + } + @Override + public MagicEvent getPermanentEvent(final MagicPermanent source,final MagicPayedCost payedCost) { + return new MagicEvent( + source, + source.getController(), + MagicTargetChoice.NEG_TARGET_ARTIFACT_OR_CREATURE_OR_LAND, + new MagicTapTargetPicker(true,false), + MagicEvent.NO_DATA, + this, + "Tap target artifact, creature, or land$."); + } + @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 MagicTapAction(creature,true)); + } + }); + } + }; +} diff --git a/src/magic/model/choice/MagicTargetChoice.java b/src/magic/model/choice/MagicTargetChoice.java index 7c0457605f..2edd1cb960 100644 --- a/src/magic/model/choice/MagicTargetChoice.java +++ b/src/magic/model/choice/MagicTargetChoice.java @@ -206,6 +206,8 @@ public class MagicTargetChoice extends MagicChoice { new MagicTargetChoice(MagicTargetFilter.TARGET_PERMANENT_YOU_CONTROL,false,MagicTargetHint.None,"a permanent to sacrifice"); public static final MagicTargetChoice SACRIFICE_CREATURE= new MagicTargetChoice(MagicTargetFilter.TARGET_CREATURE_YOU_CONTROL,false,MagicTargetHint.None,"a creature to sacrifice"); + public static final MagicTargetChoice SACRIFICE_ARTIFACT= + new MagicTargetChoice(MagicTargetFilter.TARGET_ARTIFACT_YOU_CONTROL,false,MagicTargetHint.None,"an artifact to sacrifice"); public static final MagicTargetChoice SACRIFICE_BAT= new MagicTargetChoice(MagicTargetFilter.TARGET_BAT_YOU_CONTROL,false,MagicTargetHint.None,"a Bat to sacrifice"); public static final MagicTargetChoice SACRIFICE_BEAST= diff --git a/src/magic/model/condition/MagicCondition.java b/src/magic/model/condition/MagicCondition.java index d44fc7424b..8524c09753 100644 --- a/src/magic/model/condition/MagicCondition.java +++ b/src/magic/model/condition/MagicCondition.java @@ -180,6 +180,12 @@ public interface MagicCondition { } }; + MagicCondition CONTROL_ARTIFACT_CONDITION = new MagicCondition() { + public boolean accept(final MagicGame game,final MagicSource source) { + return source.getController().controlsPermanentWithType(MagicType.Artifact,game); + } + }; + MagicCondition ONE_CREATURE_CONDITION=new MagicCondition() { public boolean accept(final MagicGame game,final MagicSource source) { return source.getController().getNrOfPermanentsWithType(MagicType.Creature,game)>=1;