From 1d47b30e0be45105964d13059abd2fc2f439573b Mon Sep 17 00:00:00 2001 From: beholder Date: Sun, 9 Oct 2011 08:03:28 +0200 Subject: [PATCH] added Amphibious Kavu. Arcbound Fiend should only target creatures with +1/+1 counters --- resources/magic/data/cards.txt | 12 +++ src/magic/card/Amphibious_Kavu.java | 82 +++++++++++++++++++ src/magic/card/Arcbound_Fiend.java | 2 +- src/magic/model/choice/MagicTargetChoice.java | 3 + src/magic/model/target/MagicTargetFilter.java | 12 +++ 5 files changed, 110 insertions(+), 1 deletion(-) create mode 100644 src/magic/card/Amphibious_Kavu.java diff --git a/resources/magic/data/cards.txt b/resources/magic/data/cards.txt index 5ffb4571b8..06a997fc03 100644 --- a/resources/magic/data/cards.txt +++ b/resources/magic/data/cards.txt @@ -12965,3 +12965,15 @@ converted=3 cost={1}{B}{B} pt=2/2 timing=main + +>Amphibious Kavu +image=http://magiccards.info/scans/en/ps/78.jpg +value=3 +rarity=C +type=Creature +subtype=Kavu +color=g +converted=3 +cost={2}{G} +pt=2/2 +timing=main diff --git a/src/magic/card/Amphibious_Kavu.java b/src/magic/card/Amphibious_Kavu.java new file mode 100644 index 0000000000..d61b080064 --- /dev/null +++ b/src/magic/card/Amphibious_Kavu.java @@ -0,0 +1,82 @@ +package magic.card; + +import magic.model.MagicColor; +import magic.model.MagicGame; +import magic.model.MagicPermanent; +import magic.model.MagicPermanentList; +import magic.model.MagicPlayer; +import magic.model.action.MagicChangeTurnPTAction; +import magic.model.action.MagicDestroyAction; +import magic.model.event.MagicEvent; +import magic.model.trigger.MagicWhenBecomesBlockedTrigger; +import magic.model.trigger.MagicWhenBlocksTrigger; + +public class Amphibious_Kavu { + public static final MagicWhenBecomesBlockedTrigger T1 = new MagicWhenBecomesBlockedTrigger() { + @Override + public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final MagicPermanent creature) { + final MagicPlayer player = permanent.getController(); + if (creature == permanent) { + final MagicPermanentList plist = permanent.getBlockingCreatures(); + boolean pump = false; + for (final MagicPermanent blocker : plist) { + final int colorFlags = blocker.getColorFlags(game); + if (MagicColor.Blue.hasColor(colorFlags) || + MagicColor.Black.hasColor(colorFlags)) { + pump = true; + } + } + if (pump) { + return new MagicEvent( + permanent, + player, + new Object[]{permanent}, + this, + permanent + " gets +3/+3 until end of turn."); + } + } + return MagicEvent.NONE; + } + + @Override + public void executeEvent( + final MagicGame game, + final MagicEvent event, + final Object data[], + final Object[] choiceResults) { + game.doAction(new MagicChangeTurnPTAction( + (MagicPermanent)data[0], + 3, + 3)); + } + }; + + public static final MagicWhenBlocksTrigger T2 = new MagicWhenBlocksTrigger() { + @Override + public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final MagicPermanent data) { + final MagicPermanent blocked = permanent.getBlockedCreature(); + return (permanent == data && + blocked.isValid() && + (MagicColor.Blue.hasColor(blocked.getColorFlags(game)) || + MagicColor.Black.hasColor(blocked.getColorFlags(game)))) ? + new MagicEvent( + permanent, + permanent.getController(), + new Object[]{permanent}, + this, + permanent + " gets +3/+3 until end of turn."): + MagicEvent.NONE; + } + @Override + public void executeEvent( + final MagicGame game, + final MagicEvent event, + final Object data[], + final Object[] choiceResults) { + game.doAction(new MagicChangeTurnPTAction( + (MagicPermanent)data[0], + 3, + 3)); + } + }; +} diff --git a/src/magic/card/Arcbound_Fiend.java b/src/magic/card/Arcbound_Fiend.java index 9174359da3..14219fcffb 100644 --- a/src/magic/card/Arcbound_Fiend.java +++ b/src/magic/card/Arcbound_Fiend.java @@ -30,7 +30,7 @@ public class Arcbound_Fiend { new MagicMayChoice( player + " may move a +1/+1 counter from " + "target creature onto " + permanent + ".", - MagicTargetChoice.NEG_TARGET_CREATURE), + MagicTargetChoice.NEG_TARGET_CREATURE_PLUSONE_COUNTER), new Object[]{permanent}, this, player + " may$ move a +1/+1 counter from " + diff --git a/src/magic/model/choice/MagicTargetChoice.java b/src/magic/model/choice/MagicTargetChoice.java index 601ae36621..8784c5cc15 100644 --- a/src/magic/model/choice/MagicTargetChoice.java +++ b/src/magic/model/choice/MagicTargetChoice.java @@ -154,6 +154,9 @@ public class MagicTargetChoice extends MagicChoice { public static final MagicTargetChoice NEG_TARGET_CREATURE_POWER_4_OR_MORE = new MagicTargetChoice(MagicTargetFilter.TARGET_CREATURE_POWER_4_OR_MORE,true,MagicTargetHint.Negative, "target creature with power 4 or greater"); + public static final MagicTargetChoice NEG_TARGET_CREATURE_PLUSONE_COUNTER = + new MagicTargetChoice(MagicTargetFilter.TARGET_CREATURE_PLUSONE_COUNTER,true,MagicTargetHint.Negative, + "target creature"); public static final MagicTargetChoice NEG_TARGET_CREATURE_WITH_FLYING= new MagicTargetChoice(MagicTargetFilter.TARGET_CREATURE_WITH_FLYING,true,MagicTargetHint.Negative,"target creature with flying"); public static final MagicTargetChoice NEG_TARGET_CREATURE_WITHOUT_FLYING= diff --git a/src/magic/model/target/MagicTargetFilter.java b/src/magic/model/target/MagicTargetFilter.java index d4127f92a3..fba34aa89a 100644 --- a/src/magic/model/target/MagicTargetFilter.java +++ b/src/magic/model/target/MagicTargetFilter.java @@ -4,6 +4,7 @@ import magic.model.MagicAbility; import magic.model.MagicCard; import magic.model.MagicCardDefinition; import magic.model.MagicColor; +import magic.model.MagicCounterType; import magic.model.MagicGame; import magic.model.MagicPermanent; import magic.model.MagicPlayer; @@ -1177,6 +1178,17 @@ public interface MagicTargetFilter { } }; + MagicTargetFilter TARGET_CREATURE_PLUSONE_COUNTER = new MagicTargetFilter() { + public boolean accept(final MagicGame game,final MagicPlayer player,final MagicTarget target) { + final MagicPermanent permanent = (MagicPermanent)target; + return permanent.isCreature(game) && + permanent.getCounters(MagicCounterType.PlusOne) > 0; + } + public boolean acceptType(final MagicTargetType targetType) { + return targetType == MagicTargetType.Permanent; + } + }; + MagicTargetFilter TARGET_ATTACKING_CREATURE=new MagicTargetFilter() { public boolean accept(final MagicGame game,final MagicPlayer player,final MagicTarget target) { final MagicPermanent permanent=(MagicPermanent)target;