From 97d59c21c9e970a09a2d0720b478af36796b01fc Mon Sep 17 00:00:00 2001 From: beholder Date: Wed, 28 Sep 2011 17:03:18 +0200 Subject: [PATCH] added Hamlet Captain and Hollowhenge Scavenger --- resources/magic/data/cards2.txt | 24 ++++++ src/magic/card/Hamlet_Captain.java | 74 +++++++++++++++++++ src/magic/card/Hollowhenge_Scavenger.java | 32 ++++++++ src/magic/model/target/MagicTargetFilter.java | 11 +++ 4 files changed, 141 insertions(+) create mode 100644 src/magic/card/Hamlet_Captain.java create mode 100644 src/magic/card/Hollowhenge_Scavenger.java diff --git a/resources/magic/data/cards2.txt b/resources/magic/data/cards2.txt index 663637d7df..69e86ba8e0 100644 --- a/resources/magic/data/cards2.txt +++ b/resources/magic/data/cards2.txt @@ -4417,6 +4417,30 @@ converted=4 cost={4} timing=artifact +>Hamlet Captain +image=http://magiccards.info/scans/en/isd/187.jpg +value=2 +rarity=U +type=Creature +subtype=Human,Warrior +color=g +converted=2 +cost={1}{G} +pt=2/2 +timing=main + +>Hollowhenge Scavenger +image=http://magiccards.info/scans/en/isd/188.jpg +value=4 +rarity=U +type=Creature +subtype=Elemental +color=g +converted=5 +cost={3}{G}{G} +pt=4/5 +timing=main + >Morkrut Banshee image=http://magiccards.info/scans/en/isd/110.jpg value=4 diff --git a/src/magic/card/Hamlet_Captain.java b/src/magic/card/Hamlet_Captain.java new file mode 100644 index 0000000000..4af3f8ddb9 --- /dev/null +++ b/src/magic/card/Hamlet_Captain.java @@ -0,0 +1,74 @@ +package magic.card; + +import java.util.Collection; + +import magic.model.MagicGame; +import magic.model.MagicPermanent; +import magic.model.MagicPlayer; +import magic.model.action.MagicChangeTurnPTAction; +import magic.model.event.MagicEvent; +import magic.model.target.MagicTarget; +import magic.model.target.MagicTargetFilter; +import magic.model.trigger.MagicWhenAttacksTrigger; +import magic.model.trigger.MagicWhenBlocksTrigger; + + +public class Hamlet_Captain { + public static final MagicWhenAttacksTrigger T1 = new MagicWhenAttacksTrigger() { + @Override + public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final MagicPermanent creature) { + return (permanent == creature) ? + new MagicEvent( + permanent, + permanent.getController(), + new Object[]{permanent,permanent.getController()}, + this, + "Other Human creatures you control get +1/+1 until end of turn."): + MagicEvent.NONE; + } + @Override + public void executeEvent( + final MagicGame game, + final MagicEvent event, + final Object data[], + final Object[] choiceResults) { + final Collection targets = + game.filterTargets((MagicPlayer)data[1],MagicTargetFilter.TARGET_HUMAN_YOU_CONTROL); + for (final MagicTarget target : targets) { + final MagicPermanent creature = (MagicPermanent)target; + if (creature != (MagicPermanent)data[0]) { + game.doAction(new MagicChangeTurnPTAction(creature,1,1)); + } + } + } + }; + + public static final MagicWhenBlocksTrigger T2 = new MagicWhenBlocksTrigger() { + @Override + public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final MagicPermanent creature) { + return (permanent == creature) ? + new MagicEvent( + permanent, + permanent.getController(), + new Object[]{permanent,permanent.getController()}, + this, + "Other Human creatures you control get +1/+1 until end of turn."): + MagicEvent.NONE; + } + @Override + public void executeEvent( + final MagicGame game, + final MagicEvent event, + final Object data[], + final Object[] choiceResults) { + final Collection targets = + game.filterTargets((MagicPlayer)data[1],MagicTargetFilter.TARGET_HUMAN_YOU_CONTROL); + for (final MagicTarget target : targets) { + final MagicPermanent creature = (MagicPermanent)target; + if (creature != (MagicPermanent)data[0]) { + game.doAction(new MagicChangeTurnPTAction(creature,1,1)); + } + } + } + }; +} diff --git a/src/magic/card/Hollowhenge_Scavenger.java b/src/magic/card/Hollowhenge_Scavenger.java new file mode 100644 index 0000000000..9de37bd829 --- /dev/null +++ b/src/magic/card/Hollowhenge_Scavenger.java @@ -0,0 +1,32 @@ +package magic.card; + +import magic.model.MagicGame; +import magic.model.MagicPlayer; +import magic.model.MagicPermanent; +import magic.model.action.MagicChangeLifeAction; +import magic.model.event.MagicEvent; +import magic.model.trigger.MagicWhenComesIntoPlayTrigger; + +public class Hollowhenge_Scavenger { + public static final MagicWhenComesIntoPlayTrigger T = new MagicWhenComesIntoPlayTrigger() { + @Override + public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent, final MagicPlayer player) { + return game.getCreatureDiedThisTurn() ? + new MagicEvent( + permanent, + player, + new Object[]{player}, + this, + player + " gains 5 life.") : + MagicEvent.NONE; + } + @Override + public void executeEvent( + final MagicGame game, + final MagicEvent event, + final Object data[], + final Object[] choiceResults) { + game.doAction(new MagicChangeLifeAction((MagicPlayer)data[0],5)); + } + }; +} diff --git a/src/magic/model/target/MagicTargetFilter.java b/src/magic/model/target/MagicTargetFilter.java index 6f2bb8e200..db111f0aaa 100644 --- a/src/magic/model/target/MagicTargetFilter.java +++ b/src/magic/model/target/MagicTargetFilter.java @@ -707,6 +707,17 @@ public interface MagicTargetFilter { } }; + MagicTargetFilter TARGET_HUMAN_YOU_CONTROL = new MagicTargetFilter() { + public boolean accept(final MagicGame game,final MagicPlayer player,final MagicTarget target) { + return target.getController() == player && + ((MagicPermanent)target).isCreature(game) && + ((MagicPermanent)target).hasSubType(MagicSubType.Human,game); + } + public boolean acceptType(final MagicTargetType targetType) { + return targetType == MagicTargetType.Permanent; + } + }; + MagicTargetFilter TARGET_NONHUMAN_CREATURE = new MagicTargetFilter() { public boolean accept(final MagicGame game,final MagicPlayer player,final MagicTarget target) { return !((MagicPermanent)target).hasSubType(MagicSubType.Human,game);