diff --git a/resources/magic/data/cards.txt b/resources/magic/data/cards.txt index 3dc074a7db..49f8863f7d 100644 --- a/resources/magic/data/cards.txt +++ b/resources/magic/data/cards.txt @@ -12175,6 +12175,7 @@ type=Artifact,Creature subtype=Golem converted=5 cost={5} +ability=modular timing=main >Arcbound Hybrid @@ -12185,7 +12186,7 @@ type=Artifact,Creature subtype=Beast converted=4 cost={4} -ability=haste +ability=haste,modular timing=main >Arcbound Crusher @@ -12196,7 +12197,7 @@ type=Artifact,Creature subtype=Juggernaut converted=4 cost={4} -ability=trample +ability=trample,modular timing=fmain >Arcbound Fiend @@ -12207,7 +12208,7 @@ type=Artifact,Creature subtype=Horror converted=6 cost={6} -ability=fear +ability=fear,modular timing=main >Arcbound Lancer @@ -12218,7 +12219,7 @@ type=Artifact,Creature subtype=Beast converted=7 cost={7} -ability=first strike +ability=first strike,modular timing=main >Arcbound Ravager @@ -12229,4 +12230,16 @@ type=Artifact,Creature subtype=Beast converted=2 cost={2} +ability=modular +timing=main + +>Arcbound Overseer +image=http://magiccards.info/scans/en/ds/99.jpg +value=5 +rarity=R +type=Artifact,Creature +subtype=Golem +converted=8 +cost={8} +ability=modular timing=main diff --git a/src/magic/card/Arcbound_Overseer.java b/src/magic/card/Arcbound_Overseer.java new file mode 100644 index 0000000000..ab4f46ef7a --- /dev/null +++ b/src/magic/card/Arcbound_Overseer.java @@ -0,0 +1,55 @@ +package magic.card; + +import java.util.Collection; + +import magic.model.MagicCounterType; +import magic.model.MagicGame; +import magic.model.MagicPermanent; +import magic.model.MagicPlayer; +import magic.model.action.MagicChangeCountersAction; +import magic.model.event.MagicEvent; +import magic.model.target.MagicTarget; +import magic.model.target.MagicTargetFilter; +import magic.model.trigger.MagicAtUpkeepTrigger; +import magic.model.trigger.MagicComesIntoPlayWithCounterTrigger; +import magic.model.trigger.MagicModularTrigger; + +public class Arcbound_Overseer { + public static final MagicComesIntoPlayWithCounterTrigger T1 = + new MagicComesIntoPlayWithCounterTrigger(MagicCounterType.PlusOne,"+1/+1",6); + + public static final MagicModularTrigger T2 = new MagicModularTrigger(); + + public static final MagicAtUpkeepTrigger T3 = new MagicAtUpkeepTrigger() { + @Override + public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final MagicPlayer data) { + final MagicPlayer player = permanent.getController(); + return (player == data) ? + new MagicEvent( + permanent, + player, + new Object[]{player}, + this, + player + " puts a +1/+1 counter on each creature " + + "with modular he or she controls."): + MagicEvent.NONE; + } + @Override + public void executeEvent( + final MagicGame game, + final MagicEvent event, + final Object data[], + final Object[] choiceResults) { + final MagicPlayer player = (MagicPlayer)data[0]; + final Collection targets = + game.filterTargets(player,MagicTargetFilter.TARGET_MODULAR_CREATURE_YOU_CONTROL); + for (final MagicTarget target : targets) { + game.doAction(new MagicChangeCountersAction( + (MagicPermanent)target, + MagicCounterType.PlusOne, + 1, + true)); + } + } + }; +} diff --git a/src/magic/model/MagicAbility.java b/src/magic/model/MagicAbility.java index 217b8d5134..02f080236f 100644 --- a/src/magic/model/MagicAbility.java +++ b/src/magic/model/MagicAbility.java @@ -55,7 +55,8 @@ public enum MagicAbility { Intimidate("intimidate",45), BattleCry("battle cry",0), Infect("infect",35), - LivingWeapon("living weapon", 10); + LivingWeapon("living weapon", 10), + Modular("modular",0); ; public static final long PROTECTION_FLAGS= diff --git a/src/magic/model/target/MagicTargetFilter.java b/src/magic/model/target/MagicTargetFilter.java index fb3eb1296d..c8367dcc2e 100644 --- a/src/magic/model/target/MagicTargetFilter.java +++ b/src/magic/model/target/MagicTargetFilter.java @@ -959,6 +959,17 @@ public interface MagicTargetFilter { } }; + MagicTargetFilter TARGET_MODULAR_CREATURE_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).hasAbility(game,MagicAbility.Modular); + } + public boolean acceptType(final MagicTargetType targetType) { + return targetType == MagicTargetType.Permanent; + } + }; + MagicTargetFilter TARGET_CREATURE_YOUR_OPPONENT_CONTROLS=new MagicTargetFilter() { public boolean accept(final MagicGame game,final MagicPlayer player,final MagicTarget target) {