moved static ability into individual cards

master
melvin 2011-09-15 21:38:22 +08:00
parent 7709f87825
commit a6563fa1dd
38 changed files with 856 additions and 268 deletions

View File

@ -0,0 +1,26 @@
package magic.card;
import magic.model.MagicGame;
import magic.model.MagicPermanent;
import magic.model.MagicLayer;
import magic.model.mstatic.MagicStatic;
import magic.model.target.MagicTargetFilter;
import magic.model.MagicAbility;
public class Akroma_s_Memorial {
public static final MagicStatic S = new MagicStatic(
MagicLayer.Ability,
MagicTargetFilter.TARGET_CREATURE_YOU_CONTROL) {
@Override
public long getAbilityFlags(final MagicGame game,final MagicPermanent permanent,final long flags) {
return flags |
MagicAbility.Flying.getMask() |
MagicAbility.FirstStrike.getMask() |
MagicAbility.Vigilance.getMask() |
MagicAbility.Trample.getMask() |
MagicAbility.Haste.getMask() |
MagicAbility.ProtectionFromBlack.getMask() |
MagicAbility.ProtectionFromRed.getMask();
}
};
}

View File

@ -15,9 +15,22 @@ import magic.model.event.MagicPayManaCostEvent;
import magic.model.event.MagicPermanentActivation; import magic.model.event.MagicPermanentActivation;
import magic.model.event.MagicTiming; import magic.model.event.MagicTiming;
import magic.model.target.MagicRegenerateTargetPicker; import magic.model.target.MagicRegenerateTargetPicker;
import magic.model.MagicAbility;
import magic.model.MagicLayer;
import magic.model.mstatic.MagicStatic;
import magic.model.target.MagicTargetFilter;
public class Asceticism { public class Asceticism {
public static final MagicStatic S1 = new MagicStatic(
MagicLayer.Ability,
MagicTargetFilter.TARGET_CREATURE_YOU_CONTROL) {
@Override
public long getAbilityFlags(final MagicGame game,final MagicPermanent permanent,final long flags) {
return flags | MagicAbility.CannotBeTheTarget.getMask();
}
};
public static final MagicPermanentActivation A1 = new MagicPermanentActivation( public static final MagicPermanentActivation A1 = new MagicPermanentActivation(
new MagicCondition[]{MagicManaCost.ONE_GREEN.getCondition()}, new MagicCondition[]{MagicManaCost.ONE_GREEN.getCondition()},
new MagicActivationHints(MagicTiming.Pump,true), new MagicActivationHints(MagicTiming.Pump,true),

View File

@ -7,8 +7,38 @@ import magic.model.action.MagicChangeLifeAction;
import magic.model.event.MagicEvent; import magic.model.event.MagicEvent;
import magic.model.stack.MagicItemOnStack; import magic.model.stack.MagicItemOnStack;
import magic.model.trigger.MagicWhenTargetedTrigger; import magic.model.trigger.MagicWhenTargetedTrigger;
import magic.model.MagicPowerToughness;
import magic.model.MagicLayer;
import magic.model.mstatic.MagicStatic;
import magic.model.target.MagicTargetFilter;
public class Ashenmoor_Liege { public class Ashenmoor_Liege {
public static final MagicStatic S1 = new MagicStatic(
MagicLayer.ModPT,
MagicTargetFilter.TARGET_BLACK_CREATURE_YOU_CONTROL) {
@Override
public void getPowerToughness(final MagicGame game,final MagicPermanent permanent,final MagicPowerToughness pt) {
pt.add(1);
}
@Override
public boolean condition(final MagicGame game,final MagicPermanent source,final MagicPermanent target) {
return source != target;
}
};
public static final MagicStatic S2 = new MagicStatic(
MagicLayer.ModPT,
MagicTargetFilter.TARGET_RED_CREATURE_YOU_CONTROL) {
@Override
public void getPowerToughness(final MagicGame game,final MagicPermanent permanent,final MagicPowerToughness pt) {
pt.add(1);
}
@Override
public boolean condition(final MagicGame game,final MagicPermanent source,final MagicPermanent target) {
return source != target;
}
};
public static final MagicWhenTargetedTrigger T = new MagicWhenTargetedTrigger() { public static final MagicWhenTargetedTrigger T = new MagicWhenTargetedTrigger() {
@Override @Override
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final MagicItemOnStack target) { public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final MagicItemOnStack target) {

View File

@ -3,16 +3,23 @@ package magic.card;
import magic.model.MagicCounterType; import magic.model.MagicCounterType;
import magic.model.MagicGame; import magic.model.MagicGame;
import magic.model.MagicPlayer; import magic.model.MagicPlayer;
import magic.model.MagicAbility;
import magic.model.MagicPermanent; import magic.model.MagicPermanent;
import magic.model.action.MagicChangeCountersAction; import magic.model.action.MagicChangeCountersAction;
import magic.model.action.MagicPermanentAction; import magic.model.action.MagicPermanentAction;
import magic.model.action.MagicAddStaticAction;
import magic.model.choice.MagicMayChoice; import magic.model.choice.MagicMayChoice;
import magic.model.choice.MagicTargetChoice; import magic.model.choice.MagicTargetChoice;
import magic.model.event.MagicEvent; import magic.model.event.MagicEvent;
import magic.model.target.MagicBecomeTargetPicker; import magic.model.target.MagicBecomeTargetPicker;
import magic.model.trigger.MagicAtUpkeepTrigger; import magic.model.trigger.MagicAtUpkeepTrigger;
import magic.model.MagicPowerToughness;
import magic.model.MagicLayer;
import magic.model.mstatic.MagicStatic;
import magic.model.target.MagicTargetFilter;
public class Aven_Mimeomancer { public class Aven_Mimeomancer {
public static final MagicAtUpkeepTrigger T = new MagicAtUpkeepTrigger() { public static final MagicAtUpkeepTrigger T = new MagicAtUpkeepTrigger() {
@Override @Override
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final MagicPlayer data) { public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final MagicPlayer data) {
@ -31,11 +38,52 @@ public class Aven_Mimeomancer {
} }
@Override @Override
public void executeEvent(final MagicGame game,final MagicEvent event,final Object data[],final Object[] choiceResults) { public void executeEvent(
final MagicGame game,
final MagicEvent event,
final Object data[],
final Object[] choiceResults) {
if (MagicMayChoice.isYesChoice(choiceResults[0])) { if (MagicMayChoice.isYesChoice(choiceResults[0])) {
event.processTargetPermanent(game,choiceResults,1,new MagicPermanentAction() { event.processTargetPermanent(game,choiceResults,1,new MagicPermanentAction() {
public void doAction(final MagicPermanent creature) { public void doAction(final MagicPermanent creature) {
game.doAction(new MagicChangeCountersAction(creature,MagicCounterType.Feather,1,true)); game.doAction(new MagicChangeCountersAction(creature,MagicCounterType.Feather,1,true));
game.doAction(new MagicAddStaticAction(creature, new MagicStatic(
MagicLayer.SetPT,
MagicTargetFilter.TARGET_CREATURE) {
@Override
public void getPowerToughness(
final MagicGame game,
final MagicPermanent permanent,
final MagicPowerToughness pt) {
pt.power = 3;
pt.toughness = 1;
}
@Override
public boolean accept(
final MagicGame game,
final MagicPermanent source,
final MagicPermanent target) {
return target.getId() == creature.getId() && target.getCounters(MagicCounterType.Feather) > 0;
}
}));
game.doAction(new MagicAddStaticAction(creature, new MagicStatic(
MagicLayer.Ability,
MagicTargetFilter.TARGET_CREATURE) {
@Override
public long getAbilityFlags(
final MagicGame game,
final MagicPermanent permanent,
final long flags) {
return flags | MagicAbility.Flying.getMask();
}
@Override
public boolean accept(
final MagicGame game,
final MagicPermanent source,
final MagicPermanent target) {
return target.getId() == creature.getId() && target.getCounters(MagicCounterType.Feather) > 0;
}
}));
} }
}); });
} }

View File

@ -13,9 +13,36 @@ import magic.model.choice.MagicTargetChoice;
import magic.model.event.MagicEvent; import magic.model.event.MagicEvent;
import magic.model.stack.MagicCardOnStack; import magic.model.stack.MagicCardOnStack;
import magic.model.trigger.MagicWhenSpellIsPlayedTrigger; import magic.model.trigger.MagicWhenSpellIsPlayedTrigger;
import magic.model.MagicPowerToughness;
import magic.model.MagicLayer;
import magic.model.mstatic.MagicStatic;
import magic.model.target.MagicTargetFilter;
public class Balefire_Liege { public class Balefire_Liege {
public static final MagicStatic S1 = new MagicStatic(
MagicLayer.ModPT,
MagicTargetFilter.TARGET_RED_CREATURE_YOU_CONTROL) {
@Override
public void getPowerToughness(final MagicGame game,final MagicPermanent permanent,final MagicPowerToughness pt) {
pt.add(1);
}
@Override
public boolean condition(final MagicGame game,final MagicPermanent source,final MagicPermanent target) {
return source != target;
}
};
public static final MagicStatic S2 = new MagicStatic(
MagicLayer.ModPT,
MagicTargetFilter.TARGET_WHITE_CREATURE_YOU_CONTROL) {
@Override
public void getPowerToughness(final MagicGame game,final MagicPermanent permanent,final MagicPowerToughness pt) {
pt.add(1);
}
@Override
public boolean condition(final MagicGame game,final MagicPermanent source,final MagicPermanent target) {
return source != target;
}
};
public static final MagicWhenSpellIsPlayedTrigger T = new MagicWhenSpellIsPlayedTrigger() { public static final MagicWhenSpellIsPlayedTrigger T = new MagicWhenSpellIsPlayedTrigger() {
@Override @Override
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final MagicCardOnStack data) { public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final MagicCardOnStack data) {

View File

@ -0,0 +1,19 @@
package magic.card;
import magic.model.MagicGame;
import magic.model.MagicPermanent;
import magic.model.MagicLayer;
import magic.model.mstatic.MagicStatic;
import magic.model.target.MagicTargetFilter;
import magic.model.MagicAbility;
public class Bellowing_Tanglewurm {
public static final MagicStatic S = new MagicStatic(
MagicLayer.Ability,
MagicTargetFilter.TARGET_GREEN_CREATURE_YOU_CONTROL) {
@Override
public long getAbilityFlags(final MagicGame game,final MagicPermanent permanent,final long flags) {
return flags | MagicAbility.Intimidate.getMask();
}
};
}

View File

@ -0,0 +1,19 @@
package magic.card;
import magic.model.MagicGame;
import magic.model.MagicPermanent;
import magic.model.MagicLayer;
import magic.model.mstatic.MagicStatic;
import magic.model.target.MagicTargetFilter;
import magic.model.MagicAbility;
public class Bloodmark_Mentor {
public static final MagicStatic S = new MagicStatic(
MagicLayer.Ability,
MagicTargetFilter.TARGET_RED_CREATURE_YOU_CONTROL) {
@Override
public long getAbilityFlags(final MagicGame game,final MagicPermanent permanent,final long flags) {
return flags | MagicAbility.FirstStrike.getMask();
}
};
}

View File

@ -0,0 +1,35 @@
package magic.card;
import magic.model.MagicPowerToughness;
import magic.model.MagicGame;
import magic.model.MagicPermanent;
import magic.model.MagicLayer;
import magic.model.mstatic.MagicStatic;
import magic.model.target.MagicTargetFilter;
public class Boartusk_Liege {
public static final MagicStatic S1 = new MagicStatic(
MagicLayer.ModPT,
MagicTargetFilter.TARGET_RED_CREATURE_YOU_CONTROL) {
@Override
public void getPowerToughness(final MagicGame game,final MagicPermanent permanent,final MagicPowerToughness pt) {
pt.add(1);
}
@Override
public boolean condition(final MagicGame game,final MagicPermanent source,final MagicPermanent target) {
return source != target;
}
};
public static final MagicStatic S2 = new MagicStatic(
MagicLayer.ModPT,
MagicTargetFilter.TARGET_GREEN_CREATURE_YOU_CONTROL) {
@Override
public void getPowerToughness(final MagicGame game,final MagicPermanent permanent,final MagicPowerToughness pt) {
pt.add(1);
}
@Override
public boolean condition(final MagicGame game,final MagicPermanent source,final MagicPermanent target) {
return source != target;
}
};
}

View File

@ -4,12 +4,43 @@ import magic.data.TokenCardDefinitions;
import magic.model.MagicGame; import magic.model.MagicGame;
import magic.model.MagicPermanent; import magic.model.MagicPermanent;
import magic.model.MagicPlayer; import magic.model.MagicPlayer;
import magic.model.MagicSubType;
import magic.model.MagicPowerToughness;
import magic.model.action.MagicPlayTokenAction; import magic.model.action.MagicPlayTokenAction;
import magic.model.event.MagicEvent; import magic.model.event.MagicEvent;
import magic.model.trigger.MagicWhenComesIntoPlayTrigger; import magic.model.trigger.MagicWhenComesIntoPlayTrigger;
import magic.model.MagicLayer;
import magic.model.mstatic.MagicStatic;
import magic.model.target.MagicTargetFilter;
import magic.model.MagicAbility;
public class Captain_of_the_Watch { public class Captain_of_the_Watch {
public static final MagicStatic S1 = new MagicStatic(
MagicLayer.ModPT,
MagicTargetFilter.TARGET_SOLDIER_YOU_CONTROL) {
@Override
public void getPowerToughness(final MagicGame game,final MagicPermanent permanent,final MagicPowerToughness pt) {
pt.add(1);
}
@Override
public boolean condition(final MagicGame game,final MagicPermanent source,final MagicPermanent target) {
return source != target;
}
};
public static final MagicStatic S2 = new MagicStatic(
MagicLayer.Ability,
MagicTargetFilter.TARGET_SOLDIER_YOU_CONTROL) {
@Override
public long getAbilityFlags(final MagicGame game,final MagicPermanent permanent,final long flags) {
return flags | MagicAbility.Vigilance.getMask();
}
@Override
public boolean condition(final MagicGame game,final MagicPermanent source,final MagicPermanent target) {
return source != target;
}
};
public static final MagicWhenComesIntoPlayTrigger T = new MagicWhenComesIntoPlayTrigger() { public static final MagicWhenComesIntoPlayTrigger T = new MagicWhenComesIntoPlayTrigger() {
@Override @Override
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent, final MagicPlayer player) { public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent, final MagicPlayer player) {

View File

@ -21,8 +21,24 @@ import magic.model.event.MagicPayManaCostTapEvent;
import magic.model.event.MagicPermanentActivation; import magic.model.event.MagicPermanentActivation;
import magic.model.event.MagicTiming; import magic.model.event.MagicTiming;
import magic.model.target.MagicGraveyardTargetPicker; import magic.model.target.MagicGraveyardTargetPicker;
import magic.model.MagicPowerToughness;
import magic.model.MagicLayer;
import magic.model.mstatic.MagicStatic;
import magic.model.target.MagicTargetFilter;
public class Cemetery_Reaper { public class Cemetery_Reaper {
public static final MagicStatic S = new MagicStatic(
MagicLayer.ModPT,
MagicTargetFilter.TARGET_ZOMBIE_YOU_CONTROL) {
@Override
public void getPowerToughness(final MagicGame game,final MagicPermanent permanent,final MagicPowerToughness pt) {
pt.add(1);
}
@Override
public boolean condition(final MagicGame game,final MagicPermanent source,final MagicPermanent target) {
return source != target;
}
};
public static final MagicPermanentActivation A = new MagicPermanentActivation( public static final MagicPermanentActivation A = new MagicPermanentActivation(
new MagicCondition[]{MagicCondition.CAN_TAP_CONDITION,MagicManaCost.TWO_BLACK.getCondition()}, new MagicCondition[]{MagicCondition.CAN_TAP_CONDITION,MagicManaCost.TWO_BLACK.getCondition()},
new MagicActivationHints(MagicTiming.Token), new MagicActivationHints(MagicTiming.Token),

View File

@ -7,9 +7,37 @@ import magic.model.MagicPlayer;
import magic.model.action.MagicPlayTokenAction; import magic.model.action.MagicPlayTokenAction;
import magic.model.event.MagicEvent; import magic.model.event.MagicEvent;
import magic.model.trigger.MagicAtUpkeepTrigger; import magic.model.trigger.MagicAtUpkeepTrigger;
import magic.model.MagicPowerToughness;
import magic.model.MagicLayer;
import magic.model.mstatic.MagicStatic;
import magic.model.target.MagicTargetFilter;
public class Creakwood_Liege { public class Creakwood_Liege {
public static final MagicStatic S1 = new MagicStatic(
MagicLayer.ModPT,
MagicTargetFilter.TARGET_BLACK_CREATURE_YOU_CONTROL) {
@Override
public void getPowerToughness(final MagicGame game,final MagicPermanent permanent,final MagicPowerToughness pt) {
pt.add(1);
}
@Override
public boolean condition(final MagicGame game,final MagicPermanent source,final MagicPermanent target) {
return source != target;
}
};
public static final MagicStatic S2 = new MagicStatic(
MagicLayer.ModPT,
MagicTargetFilter.TARGET_GREEN_CREATURE_YOU_CONTROL) {
@Override
public void getPowerToughness(final MagicGame game,final MagicPermanent permanent,final MagicPowerToughness pt) {
pt.add(1);
}
@Override
public boolean condition(final MagicGame game,final MagicPermanent source,final MagicPermanent target) {
return source != target;
}
};
public static final MagicAtUpkeepTrigger T = new MagicAtUpkeepTrigger() { public static final MagicAtUpkeepTrigger T = new MagicAtUpkeepTrigger() {
@Override @Override
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final MagicPlayer data) { public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final MagicPlayer data) {

View File

@ -0,0 +1,19 @@
package magic.card;
import magic.model.MagicGame;
import magic.model.MagicPermanent;
import magic.model.MagicPowerToughness;
import magic.model.MagicLayer;
import magic.model.mstatic.MagicStatic;
import magic.model.target.MagicTargetFilter;
public class Cumber_Stone {
public static final MagicStatic S = new MagicStatic(
MagicLayer.ModPT,
MagicTargetFilter.TARGET_CREATURE_YOUR_OPPONENT_CONTROLS) {
@Override
public void getPowerToughness(final MagicGame game,final MagicPermanent permanent,final MagicPowerToughness pt) {
pt.power -= 1;
}
};
}

View File

@ -0,0 +1,26 @@
package magic.card;
import magic.model.MagicGame;
import magic.model.MagicPermanent;
import magic.model.MagicPowerToughness;
import magic.model.MagicLayer;
import magic.model.MagicSubType;
import magic.model.mstatic.MagicStatic;
import magic.model.target.MagicTargetFilter;
public class Death_Baron {
public static final MagicStatic S = new MagicStatic(
MagicLayer.ModPT,
MagicTargetFilter.TARGET_CREATURE_YOU_CONTROL) {
@Override
public void getPowerToughness(final MagicGame game,final MagicPermanent permanent,final MagicPowerToughness pt) {
pt.add(1);
}
@Override
public boolean accept(final MagicGame game,final MagicPermanent source,final MagicPermanent target) {
return filter.accept(game, source.getController(), target) &&
(target.hasSubType(MagicSubType.Skeleton) ||
(source != target && target.hasSubType(MagicSubType.Zombie)));
}
};
}

View File

@ -15,9 +15,36 @@ import magic.model.stack.MagicCardOnStack;
import magic.model.target.MagicDestroyTargetPicker; import magic.model.target.MagicDestroyTargetPicker;
import magic.model.target.MagicTapTargetPicker; import magic.model.target.MagicTapTargetPicker;
import magic.model.trigger.MagicWhenSpellIsPlayedTrigger; import magic.model.trigger.MagicWhenSpellIsPlayedTrigger;
import magic.model.MagicPowerToughness;
import magic.model.MagicLayer;
import magic.model.mstatic.MagicStatic;
import magic.model.target.MagicTargetFilter;
public class Deathbringer_Liege { public class Deathbringer_Liege {
public static final MagicStatic S1 = new MagicStatic(
MagicLayer.ModPT,
MagicTargetFilter.TARGET_BLACK_CREATURE_YOU_CONTROL) {
@Override
public void getPowerToughness(final MagicGame game,final MagicPermanent permanent,final MagicPowerToughness pt) {
pt.add(1);
}
@Override
public boolean condition(final MagicGame game,final MagicPermanent source,final MagicPermanent target) {
return source != target;
}
};
public static final MagicStatic S2 = new MagicStatic(
MagicLayer.ModPT,
MagicTargetFilter.TARGET_WHITE_CREATURE_YOU_CONTROL) {
@Override
public void getPowerToughness(final MagicGame game,final MagicPermanent permanent,final MagicPowerToughness pt) {
pt.add(1);
}
@Override
public boolean condition(final MagicGame game,final MagicPermanent source,final MagicPermanent target) {
return source != target;
}
};
public static final MagicWhenSpellIsPlayedTrigger T = new MagicWhenSpellIsPlayedTrigger() { public static final MagicWhenSpellIsPlayedTrigger T = new MagicWhenSpellIsPlayedTrigger() {
@Override @Override
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final MagicCardOnStack data) { public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final MagicCardOnStack data) {

View File

@ -4,14 +4,38 @@ import magic.model.MagicGame;
import magic.model.MagicPermanent; import magic.model.MagicPermanent;
import magic.model.MagicPlayer; import magic.model.MagicPlayer;
import magic.model.MagicType; import magic.model.MagicType;
import magic.model.MagicLayer;
import magic.model.MagicPowerToughness;
import magic.model.action.MagicSacrificeAction; import magic.model.action.MagicSacrificeAction;
import magic.model.choice.MagicTargetChoice; import magic.model.choice.MagicTargetChoice;
import magic.model.event.MagicEvent; import magic.model.event.MagicEvent;
import magic.model.event.MagicSacrificePermanentEvent; import magic.model.event.MagicSacrificePermanentEvent;
import magic.model.trigger.MagicAtUpkeepTrigger; import magic.model.trigger.MagicAtUpkeepTrigger;
import magic.model.target.MagicTargetFilter;
import magic.model.mstatic.MagicStatic;
import magic.model.MagicAbility;
public class Eldrazi_Monument { public class Eldrazi_Monument {
public static final MagicStatic S1 = new MagicStatic(
MagicLayer.Ability,
MagicTargetFilter.TARGET_CREATURE_YOU_CONTROL) {
@Override
public long getAbilityFlags(final MagicGame game,final MagicPermanent permanent,final long flags) {
return flags |
MagicAbility.Flying.getMask() |
MagicAbility.Indestructible.getMask();
}
};
public static final MagicStatic S2 = new MagicStatic(
MagicLayer.ModPT,
MagicTargetFilter.TARGET_CREATURE_YOU_CONTROL) {
@Override
public void getPowerToughness(final MagicGame game,final MagicPermanent permanent,final MagicPowerToughness pt) {
pt.add(1);
}
};
public static final MagicAtUpkeepTrigger T = new MagicAtUpkeepTrigger() { public static final MagicAtUpkeepTrigger T = new MagicAtUpkeepTrigger() {
@Override @Override
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final MagicPlayer data) { public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final MagicPlayer data) {

View File

@ -0,0 +1,27 @@
package magic.card;
import magic.model.MagicGame;
import magic.model.MagicPermanent;
import magic.model.MagicPowerToughness;
import magic.model.MagicLayer;
import magic.model.mstatic.MagicStatic;
import magic.model.target.MagicTargetFilter;
public class Elesh_Norn__Grand_Cenobite {
public static final MagicStatic S1 = new MagicStatic(
MagicLayer.ModPT,
MagicTargetFilter.TARGET_CREATURE_YOU_CONTROL) {
@Override
public void getPowerToughness(final MagicGame game,final MagicPermanent permanent,final MagicPowerToughness pt) {
pt.add(2);
}
};
public static final MagicStatic S2 = new MagicStatic(
MagicLayer.ModPT,
MagicTargetFilter.TARGET_CREATURE_YOUR_OPPONENT_CONTROLS) {
@Override
public void getPowerToughness(final MagicGame game,final MagicPermanent permanent,final MagicPowerToughness pt) {
pt.add(-2);
}
};
}

View File

@ -14,8 +14,20 @@ import magic.model.event.MagicPermanentActivation;
import magic.model.event.MagicSacrificeEvent; import magic.model.event.MagicSacrificeEvent;
import magic.model.event.MagicTiming; import magic.model.event.MagicTiming;
import magic.model.target.MagicPumpTargetPicker; import magic.model.target.MagicPumpTargetPicker;
import magic.model.MagicLayer;
import magic.model.MagicAbility;
import magic.model.mstatic.MagicStatic;
import magic.model.target.MagicTargetFilter;
public class Fires_of_Yavimaya { public class Fires_of_Yavimaya {
public static final MagicStatic S = new MagicStatic(
MagicLayer.Ability,
MagicTargetFilter.TARGET_CREATURE_YOU_CONTROL) {
@Override
public long getAbilityFlags(final MagicGame game,final MagicPermanent permanent,final long flags) {
return flags | MagicAbility.Haste.getMask();
}
};
public static final MagicPermanentActivation A = new MagicPermanentActivation( public static final MagicPermanentActivation A = new MagicPermanentActivation(
MagicCondition.NONE, MagicCondition.NONE,
new MagicActivationHints(MagicTiming.Pump), new MagicActivationHints(MagicTiming.Pump),

View File

@ -0,0 +1,35 @@
package magic.card;
import magic.model.MagicGame;
import magic.model.MagicPermanent;
import magic.model.MagicPowerToughness;
import magic.model.MagicLayer;
import magic.model.mstatic.MagicStatic;
import magic.model.target.MagicTargetFilter;
public class Glen_Elendra_Liege {
public static final MagicStatic S1 = new MagicStatic(
MagicLayer.ModPT,
MagicTargetFilter.TARGET_BLACK_CREATURE_YOU_CONTROL) {
@Override
public void getPowerToughness(final MagicGame game,final MagicPermanent permanent,final MagicPowerToughness pt) {
pt.add(1);
}
@Override
public boolean condition(final MagicGame game,final MagicPermanent source,final MagicPermanent target) {
return source != target;
}
};
public static final MagicStatic S2 = new MagicStatic(
MagicLayer.ModPT,
MagicTargetFilter.TARGET_BLUE_CREATURE_YOU_CONTROL) {
@Override
public void getPowerToughness(final MagicGame game,final MagicPermanent permanent,final MagicPowerToughness pt) {
pt.add(1);
}
@Override
public boolean condition(final MagicGame game,final MagicPermanent source,final MagicPermanent target) {
return source != target;
}
};
}

View File

@ -0,0 +1,23 @@
package magic.card;
import magic.model.MagicGame;
import magic.model.MagicPermanent;
import magic.model.MagicPowerToughness;
import magic.model.MagicLayer;
import magic.model.mstatic.MagicStatic;
import magic.model.target.MagicTargetFilter;
public class Glory_of_Warfare {
public static final MagicStatic S = new MagicStatic(
MagicLayer.ModPT,
MagicTargetFilter.TARGET_CREATURE_YOU_CONTROL) {
@Override
public void getPowerToughness(final MagicGame game,final MagicPermanent permanent,final MagicPowerToughness pt) {
if (game.hasTurn(permanent.getController())) {
pt.power += 2;
} else {
pt.toughness += 2;
}
}
};
}

View File

@ -0,0 +1,37 @@
package magic.card;
import magic.model.MagicGame;
import magic.model.MagicPermanent;
import magic.model.MagicPowerToughness;
import magic.model.MagicLayer;
import magic.model.MagicAbility;
import magic.model.mstatic.MagicStatic;
import magic.model.target.MagicTargetFilter;
public class Goblin_Chieftain {
public static final MagicStatic S2 = new MagicStatic(
MagicLayer.Ability,
MagicTargetFilter.TARGET_GOBLIN_YOU_CONTROL) {
@Override
public long getAbilityFlags(final MagicGame game,final MagicPermanent permanent,final long flags) {
return flags | MagicAbility.Haste.getMask();
}
@Override
public boolean condition(final MagicGame game,final MagicPermanent source,final MagicPermanent target) {
return source != target;
}
};
public static final MagicStatic S1 = new MagicStatic(
MagicLayer.ModPT,
MagicTargetFilter.TARGET_GOBLIN_YOU_CONTROL) {
@Override
public void getPowerToughness(final MagicGame game,final MagicPermanent permanent,final MagicPowerToughness pt) {
pt.add(1);
}
@Override
public boolean condition(final MagicGame game,final MagicPermanent source,final MagicPermanent target) {
return source != target;
}
};
}

View File

@ -18,8 +18,8 @@ public class Godhead_of_Awe {
pt.toughness = 1; pt.toughness = 1;
} }
@Override @Override
public boolean accept(final MagicGame game,final MagicPermanent source,final MagicPermanent target) { public boolean condition(final MagicGame game,final MagicPermanent source,final MagicPermanent target) {
return source != target && filter.accept(game, source.getController(), target); return source != target;
} }
}; };
} }

View File

@ -0,0 +1,20 @@
package magic.card;
import magic.model.MagicGame;
import magic.model.MagicPermanent;
import magic.model.MagicPowerToughness;
import magic.model.MagicLayer;
import magic.model.mstatic.MagicStatic;
import magic.model.target.MagicTargetFilter;
public class Honor_of_the_Pure {
public static final MagicStatic S = new MagicStatic(
MagicLayer.ModPT,
MagicTargetFilter.TARGET_WHITE_CREATURE_YOU_CONTROL) {
@Override
public void getPowerToughness(final MagicGame game,final MagicPermanent permanent,final MagicPowerToughness pt) {
pt.add(1);
}
};
}

View File

@ -0,0 +1,19 @@
package magic.card;
import magic.model.MagicGame;
import magic.model.MagicPermanent;
import magic.model.MagicLayer;
import magic.model.MagicAbility;
import magic.model.mstatic.MagicStatic;
import magic.model.target.MagicTargetFilter;
public class Kinsbaile_Cavalier {
public static final MagicStatic S = new MagicStatic(
MagicLayer.Ability,
MagicTargetFilter.TARGET_KNIGHT_YOU_CONTROL) {
@Override
public long getAbilityFlags(final MagicGame game,final MagicPermanent permanent,final long flags) {
return flags | MagicAbility.DoubleStrike.getMask();
}
};
}

View File

@ -0,0 +1,36 @@
package magic.card;
import magic.model.MagicGame;
import magic.model.MagicPermanent;
import magic.model.MagicPowerToughness;
import magic.model.MagicLayer;
import magic.model.MagicAbility;
import magic.model.mstatic.MagicStatic;
import magic.model.target.MagicTargetFilter;
public class Knight_Exemplar {
public static final MagicStatic S = new MagicStatic(
MagicLayer.ModPT,
MagicTargetFilter.TARGET_KNIGHT_YOU_CONTROL) {
@Override
public void getPowerToughness(final MagicGame game,final MagicPermanent permanent,final MagicPowerToughness pt) {
pt.add(1);
}
@Override
public boolean condition(final MagicGame game,final MagicPermanent source,final MagicPermanent target) {
return source != target;
}
};
public static final MagicStatic S2 = new MagicStatic(
MagicLayer.Ability,
MagicTargetFilter.TARGET_KNIGHT_YOU_CONTROL) {
@Override
public long getAbilityFlags(final MagicGame game,final MagicPermanent permanent,final long flags) {
return flags | MagicAbility.Indestructible.getMask();
}
@Override
public boolean condition(final MagicGame game,final MagicPermanent source,final MagicPermanent target) {
return source != target;
}
};
}

View File

@ -0,0 +1,23 @@
package magic.card;
import magic.model.MagicGame;
import magic.model.MagicPermanent;
import magic.model.MagicLayer;
import magic.model.MagicAbility;
import magic.model.mstatic.MagicStatic;
import magic.model.target.MagicTargetFilter;
public class Kulrath_Knight {
public static final MagicStatic S2 = new MagicStatic(
MagicLayer.Ability,
MagicTargetFilter.TARGET_CREATURE_YOUR_OPPONENT_CONTROLS) {
@Override
public long getAbilityFlags(final MagicGame game,final MagicPermanent permanent,final long flags) {
return flags | MagicAbility.CannotAttackOrBlock.getMask();
}
@Override
public boolean condition(final MagicGame game,final MagicPermanent source,final MagicPermanent target) {
return target.hasCounters();
}
};
}

View File

@ -0,0 +1,19 @@
package magic.card;
import magic.model.MagicGame;
import magic.model.MagicPermanent;
import magic.model.MagicLayer;
import magic.model.MagicAbility;
import magic.model.mstatic.MagicStatic;
import magic.model.target.MagicTargetFilter;
public class Levitation {
public static final MagicStatic S = new MagicStatic(
MagicLayer.Ability,
MagicTargetFilter.TARGET_CREATURE_YOU_CONTROL) {
@Override
public long getAbilityFlags(final MagicGame game,final MagicPermanent permanent,final long flags) {
return flags | MagicAbility.Flying.getMask();
}
};
}

View File

@ -0,0 +1,28 @@
package magic.card;
import magic.model.MagicGame;
import magic.model.MagicPermanent;
import magic.model.MagicPowerToughness;
import magic.model.MagicLayer;
import magic.model.MagicAbility;
import magic.model.mstatic.MagicStatic;
import magic.model.target.MagicTargetFilter;
public class Lord_of_the_Unreal {
public static final MagicStatic S = new MagicStatic(
MagicLayer.ModPT,
MagicTargetFilter.TARGET_ILLUSION_YOU_CONTROL) {
@Override
public void getPowerToughness(final MagicGame game,final MagicPermanent permanent,final MagicPowerToughness pt) {
pt.add(1);
}
};
public static final MagicStatic S2 = new MagicStatic(
MagicLayer.Ability,
MagicTargetFilter.TARGET_ILLUSION_YOU_CONTROL) {
@Override
public long getAbilityFlags(final MagicGame game,final MagicPermanent permanent,final long flags) {
return flags | MagicAbility.CannotBeTheTarget.getMask();
}
};
}

View File

@ -0,0 +1,19 @@
package magic.card;
import magic.model.MagicGame;
import magic.model.MagicPermanent;
import magic.model.MagicLayer;
import magic.model.MagicAbility;
import magic.model.mstatic.MagicStatic;
import magic.model.target.MagicTargetFilter;
public class Madrush_Cyclops {
public static final MagicStatic S = new MagicStatic(
MagicLayer.Ability,
MagicTargetFilter.TARGET_CREATURE_YOU_CONTROL) {
@Override
public long getAbilityFlags(final MagicGame game,final MagicPermanent permanent,final long flags) {
return flags | MagicAbility.Haste.getMask();
}
};
}

View File

@ -4,6 +4,7 @@ import magic.model.MagicAbility;
import magic.model.MagicGame; import magic.model.MagicGame;
import magic.model.MagicPayedCost; import magic.model.MagicPayedCost;
import magic.model.MagicPermanent; import magic.model.MagicPermanent;
import magic.model.MagicPowerToughness;
import magic.model.MagicSource; import magic.model.MagicSource;
import magic.model.action.MagicPermanentAction; import magic.model.action.MagicPermanentAction;
import magic.model.action.MagicSetAbilityAction; import magic.model.action.MagicSetAbilityAction;
@ -15,8 +16,23 @@ import magic.model.event.MagicPermanentActivation;
import magic.model.event.MagicTapEvent; import magic.model.event.MagicTapEvent;
import magic.model.event.MagicTiming; import magic.model.event.MagicTiming;
import magic.model.target.MagicUnblockableTargetPicker; import magic.model.target.MagicUnblockableTargetPicker;
import magic.model.MagicLayer;
import magic.model.mstatic.MagicStatic;
import magic.model.target.MagicTargetFilter;
public class Merfolk_Sovereign { public class Merfolk_Sovereign {
public static final MagicStatic S = new MagicStatic(
MagicLayer.ModPT,
MagicTargetFilter.TARGET_MERFOLK_YOU_CONTROL) {
@Override
public void getPowerToughness(final MagicGame game,final MagicPermanent permanent,final MagicPowerToughness pt) {
pt.add(1);
}
@Override
public boolean condition(final MagicGame game,final MagicPermanent source,final MagicPermanent target) {
return source != target;
}
};
public static final MagicPermanentActivation A = new MagicPermanentActivation( public static final MagicPermanentActivation A = new MagicPermanentActivation(
new MagicCondition[]{MagicCondition.CAN_TAP_CONDITION}, new MagicCondition[]{MagicCondition.CAN_TAP_CONDITION},
new MagicActivationHints(MagicTiming.Attack), new MagicActivationHints(MagicTiming.Attack),

View File

@ -9,11 +9,38 @@ import magic.model.event.MagicEvent;
import magic.model.target.MagicTarget; import magic.model.target.MagicTarget;
import magic.model.target.MagicTargetFilter; import magic.model.target.MagicTargetFilter;
import magic.model.trigger.MagicAtUpkeepTrigger; import magic.model.trigger.MagicAtUpkeepTrigger;
import magic.model.MagicPowerToughness;
import magic.model.MagicLayer;
import magic.model.mstatic.MagicStatic;
import magic.model.target.MagicTargetFilter;
import java.util.Collection; import java.util.Collection;
public class Murkfiend_Liege { public class Murkfiend_Liege {
public static final MagicStatic S1 = new MagicStatic(
MagicLayer.ModPT,
MagicTargetFilter.TARGET_GREEN_CREATURE_YOU_CONTROL) {
@Override
public void getPowerToughness(final MagicGame game,final MagicPermanent permanent,final MagicPowerToughness pt) {
pt.add(1);
}
@Override
public boolean condition(final MagicGame game,final MagicPermanent source,final MagicPermanent target) {
return source != target;
}
};
public static final MagicStatic S2 = new MagicStatic(
MagicLayer.ModPT,
MagicTargetFilter.TARGET_BLUE_CREATURE_YOU_CONTROL) {
@Override
public void getPowerToughness(final MagicGame game,final MagicPermanent permanent,final MagicPowerToughness pt) {
pt.add(1);
}
@Override
public boolean condition(final MagicGame game,final MagicPermanent source,final MagicPermanent target) {
return source != target;
}
};
public static final MagicAtUpkeepTrigger T = new MagicAtUpkeepTrigger() { public static final MagicAtUpkeepTrigger T = new MagicAtUpkeepTrigger() {
@Override @Override
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final MagicPlayer data) { public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final MagicPlayer data) {

View File

@ -0,0 +1,19 @@
package magic.card;
import magic.model.MagicGame;
import magic.model.MagicPermanent;
import magic.model.MagicLayer;
import magic.model.MagicAbility;
import magic.model.mstatic.MagicStatic;
import magic.model.target.MagicTargetFilter;
public class Razorjaw_Oni {
public static final MagicStatic S = new MagicStatic(
MagicLayer.Ability,
MagicTargetFilter.TARGET_BLACK_CREATURE) {
@Override
public long getAbilityFlags(final MagicGame game,final MagicPermanent permanent,final long flags) {
return flags | MagicAbility.CannotBlock.getMask();
}
};
}

View File

@ -13,8 +13,36 @@ import magic.model.event.MagicEvent;
import magic.model.event.MagicPermanentActivation; import magic.model.event.MagicPermanentActivation;
import magic.model.event.MagicTapEvent; import magic.model.event.MagicTapEvent;
import magic.model.event.MagicTiming; import magic.model.event.MagicTiming;
import magic.model.MagicPowerToughness;
import magic.model.MagicLayer;
import magic.model.mstatic.MagicStatic;
import magic.model.target.MagicTargetFilter;
public class Tolsimir_Wolfblood { public class Tolsimir_Wolfblood {
public static final MagicStatic S1 = new MagicStatic(
MagicLayer.ModPT,
MagicTargetFilter.TARGET_GREEN_CREATURE_YOU_CONTROL) {
@Override
public void getPowerToughness(final MagicGame game,final MagicPermanent permanent,final MagicPowerToughness pt) {
pt.add(1);
}
@Override
public boolean condition(final MagicGame game,final MagicPermanent source,final MagicPermanent target) {
return source != target;
}
};
public static final MagicStatic S2 = new MagicStatic(
MagicLayer.ModPT,
MagicTargetFilter.TARGET_WHITE_CREATURE_YOU_CONTROL) {
@Override
public void getPowerToughness(final MagicGame game,final MagicPermanent permanent,final MagicPowerToughness pt) {
pt.add(1);
}
@Override
public boolean condition(final MagicGame game,final MagicPermanent source,final MagicPermanent target) {
return source != target;
}
};
public static final MagicPermanentActivation A = new MagicPermanentActivation( public static final MagicPermanentActivation A = new MagicPermanentActivation(
new MagicCondition[]{MagicCondition.CAN_TAP_CONDITION}, new MagicCondition[]{MagicCondition.CAN_TAP_CONDITION},
new MagicActivationHints(MagicTiming.Token), new MagicActivationHints(MagicTiming.Token),

View File

@ -0,0 +1,21 @@
package magic.card;
import magic.model.MagicGame;
import magic.model.MagicPermanent;
import magic.model.MagicLayer;
import magic.model.mstatic.MagicStatic;
import magic.model.target.MagicTargetFilter;
import magic.model.MagicAbility;
public class True_Conviction {
public static final MagicStatic S = new MagicStatic(
MagicLayer.Ability,
MagicTargetFilter.TARGET_CREATURE_YOU_CONTROL) {
@Override
public long getAbilityFlags(final MagicGame game,final MagicPermanent permanent,final long flags) {
return flags |
MagicAbility.DoubleStrike.getMask() |
MagicAbility.LifeLink.getMask();
}
};
}

View File

@ -5,8 +5,20 @@ import magic.model.MagicPermanent;
import magic.model.event.MagicEvent; import magic.model.event.MagicEvent;
import magic.model.event.MagicTapEvent; import magic.model.event.MagicTapEvent;
import magic.model.trigger.MagicWhenOtherComesIntoPlayTrigger; import magic.model.trigger.MagicWhenOtherComesIntoPlayTrigger;
import magic.model.MagicLayer;
import magic.model.MagicAbility;
import magic.model.mstatic.MagicStatic;
import magic.model.target.MagicTargetFilter;
public class Urabrask_the_Hidden { public class Urabrask_the_Hidden {
public static final MagicStatic S = new MagicStatic(
MagicLayer.Ability,
MagicTargetFilter.TARGET_CREATURE_YOU_CONTROL) {
@Override
public long getAbilityFlags(final MagicGame game,final MagicPermanent permanent,final long flags) {
return flags | MagicAbility.Haste.getMask();
}
};
public static final MagicWhenOtherComesIntoPlayTrigger T = new MagicWhenOtherComesIntoPlayTrigger() { public static final MagicWhenOtherComesIntoPlayTrigger T = new MagicWhenOtherComesIntoPlayTrigger() {
@Override @Override
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final MagicPermanent otherPermanent) { public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final MagicPermanent otherPermanent) {

View File

@ -16,8 +16,8 @@ public class Veteran_Armorer {
pt.toughness += 1; pt.toughness += 1;
} }
@Override @Override
public boolean accept(final MagicGame game,final MagicPermanent source,final MagicPermanent target) { public boolean condition(final MagicGame game,final MagicPermanent source,final MagicPermanent target) {
return source != target && filter.accept(game, source.getController(), target); return source != target;
} }
}; };
} }

View File

@ -0,0 +1,19 @@
package magic.card;
import magic.model.MagicGame;
import magic.model.MagicPermanent;
import magic.model.MagicLayer;
import magic.model.MagicAbility;
import magic.model.mstatic.MagicStatic;
import magic.model.target.MagicTargetFilter;
public class Windbrisk_Raptor {
public static final MagicStatic S = new MagicStatic(
MagicLayer.Ability,
MagicTargetFilter.TARGET_ATTACKING_CREATURE_YOU_CONTROL) {
@Override
public long getAbilityFlags(final MagicGame game,final MagicPermanent permanent,final long flags) {
return flags | MagicAbility.LifeLink.getMask();
}
};
}

View File

@ -20,236 +20,41 @@ import java.util.EnumSet;
public class MagicStaticLocalVariable extends MagicDummyLocalVariable { public class MagicStaticLocalVariable extends MagicDummyLocalVariable {
private static final MagicLocalVariable INSTANCE=new MagicStaticLocalVariable(); private static final MagicLocalVariable INSTANCE=new MagicStaticLocalVariable();
public static final MagicLocalVariable getInstance() {
return INSTANCE;
}
private static int akromasMemorial;
private static int angelicShield;
private static int asceticism;
private static int ashenmoorLiege;
private static int balefireLiege;
private static int bellowingTanglewurm;
private static int bloodmarkMentor;
private static int boartuskLiege;
private static int captainOfTheWatch;
private static int cemeteryReaper;
private static int creakwoodLiege;
private static int cumberStone;
private static int deathBaron;
private static int deathbringerLiege;
private static int eldraziMonument;
private static int eleshNorn;
private static int firesOfYavimaya;
private static int glenElendraLiege;
private static int gloriousAnthem;
private static int gloryOfWarfare;
private static int goblinChieftain;
private static int godheadOfAwe;
private static int honorOfThePure;
private static int kinsbaileCavalier;
private static int knightExemplar;
private static int kulrathKnight;
private static int levitation;
private static int lordOfTheUnreal;
private static int madrushCyclops;
private static int merfolkSovereign;
private static int murkfiendLiege;
private static int razorjawOni;
// You can't be target of spells or abilities your opponent controls. // You can't be target of spells or abilities your opponent controls.
private static int spiritOfTheHearth; private static int spiritOfTheHearth;
private static int tolsimirWolfblood;
private static int trueConviction; public static void initializeCardDefinitions() {
private static int urabraskTheHidden; final CardDefinitions definitions=CardDefinitions.getInstance();
private static int veteranArmorer; spiritOfTheHearth=definitions.getCard("Spirit of the Hearth").getIndex();
private static int windbriskRaptor; }
public static boolean canTarget(final MagicPlayer controller) { public static boolean canTarget(final MagicPlayer controller) {
return controller.getCount(spiritOfTheHearth) == 0; return controller.getCount(spiritOfTheHearth) == 0;
} }
private static int getOtherCount(final int cardDefinitionIndex,final MagicPermanent permanent,final int count) { @Override
return permanent.getCardDefinition().getIndex() != cardDefinitionIndex ? count : count - 1;
}
private static int getOtherCount(final int cardDefinitionIndex,final MagicPermanent permanent,final MagicPlayer controller) {
final int count = controller.getCount(cardDefinitionIndex);
return count == 0 ? 0 : getOtherCount(cardDefinitionIndex,permanent,count);
}
@Override
public void getPowerToughness(final MagicGame game,final MagicPermanent permanent,final MagicPowerToughness pt) { public void getPowerToughness(final MagicGame game,final MagicPermanent permanent,final MagicPowerToughness pt) {
final MagicPlayer controller=permanent.getController();
final MagicPlayer opponent=game.getOpponent(controller);
for (final MagicPermanentStatic mpstatic : game.getStatics()) { for (final MagicPermanentStatic mpstatic : game.getStatics()) {
final MagicStatic mstatic = mpstatic.getStatic(); final MagicStatic mstatic = mpstatic.getStatic();
if (mstatic.accept(game, mpstatic.getPermanent(), permanent)) { if (mstatic.accept(game, mpstatic.getPermanent(),permanent)) {
mstatic.getPowerToughness(game, permanent, pt); mstatic.getPowerToughness(game, permanent, pt);
} }
} }
}
// Power and toughness change.
if (permanent.getCounters(MagicCounterType.Feather)>0) {
pt.power=3;
pt.toughness=1;
}
// Power or toughness increase.
//pt.toughness += controller.getCount(angelicShield);
//pt.toughness += getOtherCount(veteranArmorer,permanent,controller);
int count = controller.getCount(gloryOfWarfare);
if (count > 0) {
if (game.hasTurn(controller)) {
pt.power += count * 2;
} else {
pt.toughness += count * 2;
}
}
pt.power -= opponent.getCount(cumberStone);
// Power and toughness increase.
int both = permanent.getCounters(MagicCounterType.PlusOne)-permanent.getCounters(MagicCounterType.MinusOne);
both += controller.getCount(eldraziMonument);
//both += controller.getCount(gloriousAnthem);
count = controller.getCount(captainOfTheWatch);
if (count > 0 && permanent.hasSubType(MagicSubType.Soldier)) {
both += getOtherCount(captainOfTheWatch,permanent,count);
}
count = controller.getCount(deathBaron);
if (count > 0 ) {
if (permanent.hasSubType(MagicSubType.Skeleton)) {
both += controller.getCount(deathBaron);
}
if (count > 0 && permanent.hasSubType(MagicSubType.Zombie)) {
both += getOtherCount(deathBaron,permanent,count);
}
}
count = controller.getCount(cemeteryReaper);
if (count > 0 && permanent.hasSubType(MagicSubType.Zombie)) {
both += getOtherCount(cemeteryReaper,permanent,count);
}
count = controller.getCount(goblinChieftain);
if (count > 0 && permanent.hasSubType(MagicSubType.Goblin)) {
both += getOtherCount(goblinChieftain,permanent,count);
}
count=controller.getCount(knightExemplar);
if (count > 0 && permanent.hasSubType(MagicSubType.Knight)) {
both += getOtherCount(knightExemplar,permanent,count);
}
count = controller.getCount(lordOfTheUnreal);
if (count > 0 && permanent.hasSubType(MagicSubType.Illusion)) {
both += controller.getCount(lordOfTheUnreal);
}
count = controller.getCount(merfolkSovereign);
if (count > 0 && permanent.hasSubType(MagicSubType.Merfolk)) {
both += getOtherCount(merfolkSovereign,permanent,count);
}
count = controller.getCount(eleshNorn);
both += getOtherCount(eleshNorn,permanent,count) * 2;
both -= opponent.getCount(eleshNorn) * 2;
final int colorFlags=permanent.getColorFlags();
if (MagicColor.Black.hasColor(colorFlags)) {
both += getOtherCount(ashenmoorLiege,permanent,controller);
both += getOtherCount(creakwoodLiege,permanent,controller);
both += getOtherCount(deathbringerLiege,permanent,controller);
both += getOtherCount(glenElendraLiege,permanent,controller);
}
if (MagicColor.Blue.hasColor(colorFlags)) {
both += getOtherCount(glenElendraLiege,permanent,controller);
both += getOtherCount(murkfiendLiege,permanent,controller);
}
if (MagicColor.Green.hasColor(colorFlags)) {
both += getOtherCount(boartuskLiege,permanent,controller);
both += getOtherCount(creakwoodLiege,permanent,controller);
both += getOtherCount(murkfiendLiege,permanent,controller);
both += getOtherCount(tolsimirWolfblood,permanent,controller);
}
if (MagicColor.Red.hasColor(colorFlags)) {
both += getOtherCount(ashenmoorLiege,permanent,controller);
both += getOtherCount(boartuskLiege,permanent,controller);
both += getOtherCount(balefireLiege,permanent,controller);
}
if (MagicColor.White.hasColor(colorFlags)) {
both += getOtherCount(balefireLiege,permanent,controller);
both += getOtherCount(deathbringerLiege,permanent,controller);
both += getOtherCount(tolsimirWolfblood,permanent,controller);
both += controller.getCount(honorOfThePure);
}
pt.power += both;
pt.toughness += both;
}
@Override @Override
public long getAbilityFlags(final MagicGame game,final MagicPermanent permanent,long flags) { public long getAbilityFlags(final MagicGame game,final MagicPermanent permanent,long flags) {
if (permanent.isCreature()) { for (final MagicPermanentStatic mpstatic : game.getStatics()) {
final MagicPlayer controller=permanent.getController(); final MagicStatic mstatic = mpstatic.getStatic();
if (mstatic.accept(game, mpstatic.getPermanent(), permanent)) {
for (final MagicPermanentStatic mpstatic : game.getStatics()) { flags = mstatic.getAbilityFlags(game, permanent, flags);
final MagicStatic mstatic = mpstatic.getStatic();
if (mstatic.accept(game, mpstatic.getPermanent(), permanent)) {
flags = mstatic.getAbilityFlags(game, permanent, flags);
}
} }
}
if (controller.getCount(akromasMemorial)>0) {
flags|=MagicAbility.Flying.getMask() |
MagicAbility.FirstStrike.getMask()|
MagicAbility.Vigilance.getMask()|
MagicAbility.Trample.getMask()|
MagicAbility.Haste.getMask()|
MagicAbility.ProtectionFromBlack.getMask()|
MagicAbility.ProtectionFromRed.getMask();
}
if (controller.getCount(eldraziMonument)>0) {
flags|=MagicAbility.Flying.getMask() |
MagicAbility.Indestructible.getMask();
}
if (controller.getCount(trueConviction)>0) {
flags|=MagicAbility.DoubleStrike.getMask() |
MagicAbility.LifeLink.getMask();
}
if (controller.getCount(asceticism) > 0 ||
(controller.getCount(lordOfTheUnreal) > 0 && permanent.hasSubType(MagicSubType.Illusion))) {
flags |= MagicAbility.CannotBeTheTarget.getMask();
}
if (controller.getCount(bellowingTanglewurm)>0&&MagicColor.Green.hasColor(permanent.getColorFlags())) {
flags|=MagicAbility.Intimidate.getMask();
}
if (controller.getCount(bloodmarkMentor)>0&&MagicColor.Red.hasColor(permanent.getColorFlags())) {
flags|=MagicAbility.FirstStrike.getMask();
}
if (controller.getCount(captainOfTheWatch)>0&&permanent.hasSubType(MagicSubType.Soldier)) {
flags|=MagicAbility.Vigilance.getMask();
}
if (controller.getCount(firesOfYavimaya)>0||
controller.getCount(madrushCyclops)>0||
controller.getCount(urabraskTheHidden)>0||
(controller.getCount(goblinChieftain)>0&&permanent.hasSubType(MagicSubType.Goblin))) {
flags|=MagicAbility.Haste.getMask();
}
if (getOtherCount(knightExemplar,permanent,controller)>0&&permanent.hasSubType(MagicSubType.Knight)) {
flags|=MagicAbility.Indestructible.getMask();
}
if (game.getOtherPlayerCount(kulrathKnight,controller)>0&&permanent.hasCounters()) {
flags|=MagicAbility.CannotAttackOrBlock.getMask();
}
if (controller.getCount(levitation)>0||permanent.getCounters(MagicCounterType.Feather)>0) {
flags|=MagicAbility.Flying.getMask();
}
if ((controller.getCount(kinsbaileCavalier)>0&&permanent.hasSubType(MagicSubType.Knight))) {
flags|=MagicAbility.DoubleStrike.getMask();
}
if (game.getCount(razorjawOni)>0&&MagicColor.Black.hasColor(permanent.getColorFlags())) {
flags|=MagicAbility.CannotBlock.getMask();
}
if (controller.getCount(windbriskRaptor)>0&&permanent.isAttacking()) {
flags|=MagicAbility.LifeLink.getMask();
}
}
return flags; return flags;
} }
@ -262,50 +67,4 @@ public class MagicStaticLocalVariable extends MagicDummyLocalVariable {
} }
return flags; return flags;
} }
public static final MagicLocalVariable getInstance() {
return INSTANCE;
}
public static void initializeCardDefinitions() {
final CardDefinitions definitions=CardDefinitions.getInstance();
akromasMemorial=definitions.getCard("Akroma's Memorial").getIndex();
angelicShield=definitions.getCard("Angelic Shield").getIndex();
asceticism=definitions.getCard("Asceticism").getIndex();
ashenmoorLiege=definitions.getCard("Ashenmoor Liege").getIndex();
balefireLiege=definitions.getCard("Balefire Liege").getIndex();
bellowingTanglewurm=definitions.getCard("Bellowing Tanglewurm").getIndex();
bloodmarkMentor=definitions.getCard("Bloodmark Mentor").getIndex();
boartuskLiege=definitions.getCard("Boartusk Liege").getIndex();
captainOfTheWatch=definitions.getCard("Captain of the Watch").getIndex();
cemeteryReaper=definitions.getCard("Cemetery Reaper").getIndex();
creakwoodLiege=definitions.getCard("Creakwood Liege").getIndex();
cumberStone=definitions.getCard("Cumber Stone").getIndex();
deathBaron=definitions.getCard("Death Baron").getIndex();
deathbringerLiege=definitions.getCard("Deathbringer Liege").getIndex();
eldraziMonument=definitions.getCard("Eldrazi Monument").getIndex();
eleshNorn=definitions.getCard("Elesh Norn, Grand Cenobite").getIndex();
firesOfYavimaya=definitions.getCard("Fires of Yavimaya").getIndex();
glenElendraLiege=definitions.getCard("Glen Elendra Liege").getIndex();
gloriousAnthem=definitions.getCard("Glorious Anthem").getIndex();
gloryOfWarfare=definitions.getCard("Glory of Warfare").getIndex();
goblinChieftain=definitions.getCard("Goblin Chieftain").getIndex();
godheadOfAwe=definitions.getCard("Godhead of Awe").getIndex();
honorOfThePure=definitions.getCard("Honor of the Pure").getIndex();
kinsbaileCavalier=definitions.getCard("Kinsbaile Cavalier").getIndex();
knightExemplar=definitions.getCard("Knight Exemplar").getIndex();
kulrathKnight=definitions.getCard("Kulrath Knight").getIndex();
levitation=definitions.getCard("Levitation").getIndex();
lordOfTheUnreal=definitions.getCard("Lord of the Unreal").getIndex();
madrushCyclops=definitions.getCard("Madrush Cyclops").getIndex();
merfolkSovereign=definitions.getCard("Merfolk Sovereign").getIndex();
murkfiendLiege=definitions.getCard("Murkfiend Liege").getIndex();
razorjawOni=definitions.getCard("Razorjaw Oni").getIndex();
spiritOfTheHearth=definitions.getCard("Spirit of the Hearth").getIndex();
tolsimirWolfblood=definitions.getCard("Tolsimir Wolfblood").getIndex();
trueConviction=definitions.getCard("True Conviction").getIndex();
urabraskTheHidden=definitions.getCard("Urabrask the Hidden").getIndex();
veteranArmorer=definitions.getCard("Veteran Armorer").getIndex();
windbriskRaptor=definitions.getCard("Windbrisk Raptor").getIndex();
}
} }

View File

@ -32,6 +32,7 @@ class TestStatics extends TestGameBuilder {
createPermanent(game,P,"Phyrexian Crusader",false,3); createPermanent(game,P,"Phyrexian Crusader",false,3);
addToHand(P,"Glorious Anthem",2); addToHand(P,"Glorious Anthem",2);
addToHand(P,"Godhead of Awe",2); addToHand(P,"Godhead of Awe",2);
addToHand(P,"Tolsimir Wolfblood",1);
P = opponent; P = opponent;