From 46a1b66f04b89255c8bd15bc19c54ce3fc7755f4 Mon Sep 17 00:00:00 2001 From: melvin Date: Wed, 10 Aug 2011 20:40:17 +0800 Subject: [PATCH] moved local variables to card specific class --- src/magic/card/Bant_Sureblade.java | 24 ++++++++++++ src/magic/card/Cairn_Wanderer.java | 39 +++++++++++++++++++ src/magic/card/Echo_Mage.java | 28 +++++++++++-- src/magic/card/Esper_Stormblade.java | 24 ++++++++++++ src/magic/card/Goblin_Gaveleer.java | 33 ++++++++++++++++ src/magic/card/Grixis_Grimblade.java | 24 ++++++++++++ src/magic/card/Guul_Draz_Specter.java | 18 +++++++++ src/magic/card/Guul_Draz_Vampire.java | 38 ++++++++++++++++++ src/magic/card/Jund_Hackblade.java | 24 ++++++++++++ src/magic/card/Kitesail_Apprentice.java | 39 +++++++++++++++++++ src/magic/card/Lord_of_Extinction.java | 33 ++++++++++++++++ src/magic/card/Lord_of_Shatterskull_Pass.java | 24 ++++++++++-- src/magic/card/Naya_Hushblade.java | 25 ++++++++++++ src/magic/card/Nirkana_Cutthroat.java | 35 ++++++++++++++++- src/magic/card/Ruthless_Cullblade.java | 35 +++++++++++++++++ src/magic/card/Student_of_Warfare.java | 37 +++++++++++++++++- 16 files changed, 471 insertions(+), 9 deletions(-) create mode 100644 src/magic/card/Bant_Sureblade.java create mode 100644 src/magic/card/Cairn_Wanderer.java create mode 100644 src/magic/card/Esper_Stormblade.java create mode 100644 src/magic/card/Goblin_Gaveleer.java create mode 100644 src/magic/card/Grixis_Grimblade.java create mode 100644 src/magic/card/Guul_Draz_Vampire.java create mode 100644 src/magic/card/Jund_Hackblade.java create mode 100644 src/magic/card/Kitesail_Apprentice.java create mode 100644 src/magic/card/Lord_of_Extinction.java create mode 100644 src/magic/card/Naya_Hushblade.java create mode 100644 src/magic/card/Ruthless_Cullblade.java diff --git a/src/magic/card/Bant_Sureblade.java b/src/magic/card/Bant_Sureblade.java new file mode 100644 index 0000000000..447b541ebd --- /dev/null +++ b/src/magic/card/Bant_Sureblade.java @@ -0,0 +1,24 @@ +package magic.card; + +import java.util.Arrays; + +import magic.model.event.*; +import magic.model.stack.*; +import magic.model.choice.*; +import magic.model.target.*; +import magic.model.action.*; +import magic.model.trigger.*; +import magic.model.condition.*; +import magic.model.variable.*; +import magic.model.*; + +public class Bant_Sureblade { + private static final MagicLocalVariable BANT_SUREBLADE=new MagicBladeLocalVariable(MagicAbility.FirstStrike.getMask()); + public static final MagicChangeCardDefinition SET = new MagicChangeCardDefinition() { + @Override + public void change(MagicCardDefinition cdef) { + cdef.addLocalVariable(MagicStaticLocalVariable.getInstance()); + cdef.addLocalVariable(BANT_SUREBLADE); + } + }; +} diff --git a/src/magic/card/Cairn_Wanderer.java b/src/magic/card/Cairn_Wanderer.java new file mode 100644 index 0000000000..d77f175dcc --- /dev/null +++ b/src/magic/card/Cairn_Wanderer.java @@ -0,0 +1,39 @@ +package magic.card; + +import java.util.Arrays; + +import magic.model.event.*; +import magic.model.stack.*; +import magic.model.choice.*; +import magic.model.target.*; +import magic.model.action.*; +import magic.model.trigger.*; +import magic.model.condition.*; +import magic.model.variable.*; +import magic.model.*; + +public class Cairn_Wanderer { + private static final MagicLocalVariable CAIRN_WANDERER=new MagicDummyLocalVariable() { + @Override + public long getAbilityFlags(MagicGame game,MagicPermanent permanent,long flags) { + long newFlags=0; + for (final MagicPlayer player : game.getPlayers()) { + for (final MagicCard card : player.getGraveyard()) { + final MagicCardDefinition cardDefinition=card.getCardDefinition(); + if (cardDefinition.isCreature()) { + newFlags|=cardDefinition.getAbilityFlags(); + } + } + } + return flags|(newFlags&MagicAbility.CAIRN_WANDERER_FLAGS); + } + }; + + public static final MagicChangeCardDefinition SET = new MagicChangeCardDefinition() { + @Override + public void change(MagicCardDefinition cdef) { + cdef.addLocalVariable(MagicStaticLocalVariable.getInstance()); + cdef.addLocalVariable(CAIRN_WANDERER); + } + }; +} diff --git a/src/magic/card/Echo_Mage.java b/src/magic/card/Echo_Mage.java index da285f558c..01e31b0dad 100644 --- a/src/magic/card/Echo_Mage.java +++ b/src/magic/card/Echo_Mage.java @@ -12,10 +12,24 @@ import magic.data.*; import magic.model.variable.*; public class Echo_Mage { - - public static final MagicPermanentActivation V615 = new MagicLevelUpActivation("Echo Mage",MagicManaCost.ONE_BLUE,4); - public static final MagicPermanentActivation V617 =new MagicPermanentActivation("Echo Mage", + private static final MagicLocalVariable ECHO_MAGE=new MagicDummyLocalVariable() { + @Override + public void getPowerToughness(final MagicGame game,final MagicPermanent permanent,final MagicPowerToughness pt) { + final int charges=permanent.getCounters(MagicCounterType.Charge); + if (charges>=4) { + pt.power=2; + pt.toughness=5; + } else if (charges>=2) { + pt.power=2; + pt.toughness=4; + } + } + }; + + public static final MagicPermanentActivation V615 = new MagicLevelUpActivation("Echo Mage",MagicManaCost.ONE_BLUE,4); + + public static final MagicPermanentActivation V617 = new MagicPermanentActivation("Echo Mage", new MagicCondition[]{ MagicCondition.TWO_CHARGE_COUNTERS_CONDITION, MagicCondition.CAN_TAP_CONDITION,MagicManaCost.BLUE_BLUE.getCondition()}, @@ -57,4 +71,12 @@ public class Echo_Mage { } }; + public static final MagicChangeCardDefinition SET = new MagicChangeCardDefinition() { + @Override + public void change(MagicCardDefinition cdef) { + cdef.addLocalVariable(ECHO_MAGE); + cdef.addLocalVariable(MagicStaticLocalVariable.getInstance()); + cdef.setVariablePT(); + } + }; } diff --git a/src/magic/card/Esper_Stormblade.java b/src/magic/card/Esper_Stormblade.java new file mode 100644 index 0000000000..4f71a5e114 --- /dev/null +++ b/src/magic/card/Esper_Stormblade.java @@ -0,0 +1,24 @@ +package magic.card; + +import java.util.Arrays; + +import magic.model.event.*; +import magic.model.stack.*; +import magic.model.choice.*; +import magic.model.target.*; +import magic.model.action.*; +import magic.model.trigger.*; +import magic.model.condition.*; +import magic.model.variable.*; +import magic.model.*; + +public class Esper_Stormblade { + private static final MagicLocalVariable ESPER_STORMBLADE=new MagicBladeLocalVariable(MagicAbility.Flying.getMask()); + public static final MagicChangeCardDefinition SET = new MagicChangeCardDefinition() { + @Override + public void change(MagicCardDefinition cdef) { + cdef.addLocalVariable(MagicStaticLocalVariable.getInstance()); + cdef.addLocalVariable(ESPER_STORMBLADE); + } + }; +} diff --git a/src/magic/card/Goblin_Gaveleer.java b/src/magic/card/Goblin_Gaveleer.java new file mode 100644 index 0000000000..a68ec2507a --- /dev/null +++ b/src/magic/card/Goblin_Gaveleer.java @@ -0,0 +1,33 @@ +package magic.card; + +import java.util.Arrays; + +import magic.model.event.*; +import magic.model.stack.*; +import magic.model.choice.*; +import magic.model.target.*; +import magic.model.action.*; +import magic.model.trigger.*; +import magic.model.condition.*; +import magic.model.variable.*; +import magic.model.*; + +public class Goblin_Gaveleer { + + private static final MagicLocalVariable GOBLIN_GAVELEER=new MagicDummyLocalVariable() { + @Override + public void getPowerToughness(final MagicGame game,final MagicPermanent permanent,final MagicPowerToughness pt) { + if (permanent.isEquipped()) { + pt.power+=permanent.getEquipmentPermanents().size()<<1; + } + } + }; + + public static final MagicChangeCardDefinition SET = new MagicChangeCardDefinition() { + @Override + public void change(MagicCardDefinition cdef) { + cdef.addLocalVariable(MagicStaticLocalVariable.getInstance()); + cdef.addLocalVariable(GOBLIN_GAVELEER); + } + }; +} diff --git a/src/magic/card/Grixis_Grimblade.java b/src/magic/card/Grixis_Grimblade.java new file mode 100644 index 0000000000..a075efba17 --- /dev/null +++ b/src/magic/card/Grixis_Grimblade.java @@ -0,0 +1,24 @@ +package magic.card; + +import java.util.Arrays; + +import magic.model.event.*; +import magic.model.stack.*; +import magic.model.choice.*; +import magic.model.target.*; +import magic.model.action.*; +import magic.model.trigger.*; +import magic.model.condition.*; +import magic.model.variable.*; +import magic.model.*; + +public class Grixis_Grimblade { + private static final MagicLocalVariable GRIXIS_GRIMBLADE=new MagicBladeLocalVariable(MagicAbility.Deathtouch.getMask()); + public static final MagicChangeCardDefinition SET = new MagicChangeCardDefinition() { + @Override + public void change(MagicCardDefinition cdef) { + cdef.addLocalVariable(MagicStaticLocalVariable.getInstance()); + cdef.addLocalVariable(GRIXIS_GRIMBLADE); + } + }; +} diff --git a/src/magic/card/Guul_Draz_Specter.java b/src/magic/card/Guul_Draz_Specter.java index 7c662aac22..035439ba6e 100644 --- a/src/magic/card/Guul_Draz_Specter.java +++ b/src/magic/card/Guul_Draz_Specter.java @@ -12,7 +12,25 @@ import magic.data.*; import magic.model.variable.*; public class Guul_Draz_Specter { + + private static final MagicLocalVariable GUUL_DRAZ_SPECTER=new MagicDummyLocalVariable() { + @Override + public void getPowerToughness(final MagicGame game,final MagicPermanent permanent,final MagicPowerToughness pt) { + if (game.getOpponent(permanent.getController()).getHand().isEmpty()) { + pt.power+=3; + pt.toughness+=3; + } + } + }; public static final MagicTrigger V7579 =new MagicSpecterTrigger("Guul Draz Specter",true,false); + public static final MagicChangeCardDefinition SET = new MagicChangeCardDefinition() { + @Override + public void change(MagicCardDefinition cdef) { + cdef.addLocalVariable(MagicStaticLocalVariable.getInstance()); + cdef.addLocalVariable(GUUL_DRAZ_SPECTER); + } + }; + } diff --git a/src/magic/card/Guul_Draz_Vampire.java b/src/magic/card/Guul_Draz_Vampire.java new file mode 100644 index 0000000000..e241456ca1 --- /dev/null +++ b/src/magic/card/Guul_Draz_Vampire.java @@ -0,0 +1,38 @@ +package magic.card; +import java.util.*; +import magic.model.event.*; +import magic.model.stack.*; +import magic.model.choice.*; +import magic.model.target.*; +import magic.model.action.*; +import magic.model.trigger.*; +import magic.model.condition.*; +import magic.model.*; +import magic.data.*; +import magic.model.variable.*; + +public class Guul_Draz_Vampire { + + private static final MagicLocalVariable GUUL_DRAZ_VAMPIRE=new MagicDummyLocalVariable() { + @Override + public void getPowerToughness(final MagicGame game,final MagicPermanent permanent,final MagicPowerToughness pt) { + if (game.getOpponent(permanent.getController()).getLife()<=10) { + pt.power+=2; + pt.toughness++; + } + } + @Override + public long getAbilityFlags(final MagicGame game,final MagicPermanent permanent,final long flags) { + return game.getOpponent(permanent.getController()).getLife()<=10?flags|MagicAbility.Intimidate.getMask():flags; + } + }; + + public static final MagicChangeCardDefinition SET = new MagicChangeCardDefinition() { + @Override + public void change(MagicCardDefinition cdef) { + cdef.addLocalVariable(MagicStaticLocalVariable.getInstance()); + cdef.addLocalVariable(GUUL_DRAZ_VAMPIRE); + } + }; + +} diff --git a/src/magic/card/Jund_Hackblade.java b/src/magic/card/Jund_Hackblade.java new file mode 100644 index 0000000000..6e76e14d13 --- /dev/null +++ b/src/magic/card/Jund_Hackblade.java @@ -0,0 +1,24 @@ +package magic.card; + +import java.util.Arrays; + +import magic.model.event.*; +import magic.model.stack.*; +import magic.model.choice.*; +import magic.model.target.*; +import magic.model.action.*; +import magic.model.trigger.*; +import magic.model.condition.*; +import magic.model.variable.*; +import magic.model.*; + +public class Jund_Hackblade { + private static final MagicLocalVariable JUND_HACKBLADE=new MagicBladeLocalVariable(MagicAbility.Haste.getMask()); + public static final MagicChangeCardDefinition SET = new MagicChangeCardDefinition() { + @Override + public void change(MagicCardDefinition cdef) { + cdef.addLocalVariable(MagicStaticLocalVariable.getInstance()); + cdef.addLocalVariable(JUND_HACKBLADE); + } + }; +} diff --git a/src/magic/card/Kitesail_Apprentice.java b/src/magic/card/Kitesail_Apprentice.java new file mode 100644 index 0000000000..8a468563f4 --- /dev/null +++ b/src/magic/card/Kitesail_Apprentice.java @@ -0,0 +1,39 @@ + +package magic.card; + +import java.util.Arrays; + +import magic.model.event.*; +import magic.model.stack.*; +import magic.model.choice.*; +import magic.model.target.*; +import magic.model.action.*; +import magic.model.trigger.*; +import magic.model.condition.*; +import magic.model.variable.*; +import magic.model.*; + +public class Kitesail_Apprentice { + + private static final MagicLocalVariable KITESAIL_APPRENTICE=new MagicDummyLocalVariable() { + @Override + public void getPowerToughness(final MagicGame game,final MagicPermanent permanent,final MagicPowerToughness pt) { + if (permanent.isEquipped()) { + pt.power++; + pt.toughness++; + } + } + @Override + public long getAbilityFlags(final MagicGame game,final MagicPermanent permanent,final long flags) { + return permanent.isEquipped()?flags|MagicAbility.Flying.getMask():flags; + } + }; + + public static final MagicChangeCardDefinition SET = new MagicChangeCardDefinition() { + @Override + public void change(MagicCardDefinition cdef) { + cdef.addLocalVariable(MagicStaticLocalVariable.getInstance()); + cdef.addLocalVariable(KITESAIL_APPRENTICE); + } + }; +} diff --git a/src/magic/card/Lord_of_Extinction.java b/src/magic/card/Lord_of_Extinction.java new file mode 100644 index 0000000000..3aa2610553 --- /dev/null +++ b/src/magic/card/Lord_of_Extinction.java @@ -0,0 +1,33 @@ +package magic.card; +import java.util.*; +import magic.model.event.*; +import magic.model.stack.*; +import magic.model.choice.*; +import magic.model.target.*; +import magic.model.action.*; +import magic.model.trigger.*; +import magic.model.condition.*; +import magic.model.*; +import magic.data.*; +import magic.model.variable.*; + +public class Lord_of_Extinction { + + private static final MagicLocalVariable LORD_OF_EXTINCTION=new MagicDummyLocalVariable() { + @Override + public void getPowerToughness(final MagicGame game,final MagicPermanent permanent,final MagicPowerToughness pt) { + final int amount=game.getPlayer(0).getGraveyard().size()+game.getPlayer(1).getGraveyard().size(); + pt.power=amount; + pt.toughness=amount; + } + }; + + public static final MagicChangeCardDefinition SET = new MagicChangeCardDefinition() { + @Override + public void change(MagicCardDefinition cdef) { + cdef.addLocalVariable(LORD_OF_EXTINCTION); + cdef.addLocalVariable(MagicStaticLocalVariable.getInstance()); + cdef.setVariablePT(); + } + }; +} diff --git a/src/magic/card/Lord_of_Shatterskull_Pass.java b/src/magic/card/Lord_of_Shatterskull_Pass.java index 0bbc64e273..cac02780f1 100644 --- a/src/magic/card/Lord_of_Shatterskull_Pass.java +++ b/src/magic/card/Lord_of_Shatterskull_Pass.java @@ -12,10 +12,29 @@ import magic.data.*; import magic.model.variable.*; public class Lord_of_Shatterskull_Pass { + + private static final MagicLocalVariable LORD_OF_SHATTERSKULL_PASS = new MagicDummyLocalVariable() { + @Override + public void getPowerToughness(final MagicGame game,final MagicPermanent permanent,final MagicPowerToughness pt) { + if (permanent.getCounters(MagicCounterType.Charge)>0) { + pt.power=6; + pt.toughness=6; + } + } + }; - public static final MagicPermanentActivation V1260 =new MagicLevelUpActivation("Lord of Shatterskull Pass",MagicManaCost.ONE_RED,6); + public static final MagicPermanentActivation V1260 = new MagicLevelUpActivation("Lord of Shatterskull Pass",MagicManaCost.ONE_RED,6); - public static final MagicTrigger V7917 =new MagicTrigger(MagicTriggerType.WhenAttacks,"Lord of Shatterskull Pass") { + public static final MagicChangeCardDefinition SET = new MagicChangeCardDefinition() { + @Override + public void change(MagicCardDefinition cdef) { + cdef.addLocalVariable(LORD_OF_SHATTERSKULL_PASS); + cdef.addLocalVariable(MagicStaticLocalVariable.getInstance()); + cdef.setVariablePT(); + } + }; + + public static final MagicTrigger V7917 = new MagicTrigger(MagicTriggerType.WhenAttacks,"Lord of Shatterskull Pass") { @Override public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final Object data) { @@ -41,5 +60,4 @@ public class Lord_of_Shatterskull_Pass { } } }; - } diff --git a/src/magic/card/Naya_Hushblade.java b/src/magic/card/Naya_Hushblade.java new file mode 100644 index 0000000000..79d87e5b6d --- /dev/null +++ b/src/magic/card/Naya_Hushblade.java @@ -0,0 +1,25 @@ + +package magic.card; + +import java.util.Arrays; + +import magic.model.event.*; +import magic.model.stack.*; +import magic.model.choice.*; +import magic.model.target.*; +import magic.model.action.*; +import magic.model.trigger.*; +import magic.model.condition.*; +import magic.model.variable.*; +import magic.model.*; + +public class Naya_Hushblade { + private static final MagicLocalVariable NAYA_HUSHBLADE=new MagicBladeLocalVariable(MagicAbility.Shroud.getMask()); + public static final MagicChangeCardDefinition SET = new MagicChangeCardDefinition() { + @Override + public void change(MagicCardDefinition cdef) { + cdef.addLocalVariable(MagicStaticLocalVariable.getInstance()); + cdef.addLocalVariable(NAYA_HUSHBLADE); + } + }; +} diff --git a/src/magic/card/Nirkana_Cutthroat.java b/src/magic/card/Nirkana_Cutthroat.java index 72f90c4413..fd4997a6f0 100644 --- a/src/magic/card/Nirkana_Cutthroat.java +++ b/src/magic/card/Nirkana_Cutthroat.java @@ -13,6 +13,39 @@ import magic.model.variable.*; public class Nirkana_Cutthroat { - public static final MagicPermanentActivation V1413 = new MagicLevelUpActivation("Nirkana Cutthroat",MagicManaCost.TWO_BLACK,3); + private static final MagicLocalVariable NIRKANA_CUTTHROAT=new MagicDummyLocalVariable() { + @Override + public void getPowerToughness(final MagicGame game,final MagicPermanent permanent,final MagicPowerToughness pt) { + final int charges=permanent.getCounters(MagicCounterType.Charge); + if (charges>=3) { + pt.power=5; + pt.toughness=4; + } else if (charges>=1) { + pt.power=4; + pt.toughness=3; + } + } + + @Override + public long getAbilityFlags(final MagicGame game,final MagicPermanent permanent,final long flags) { + final int charges=permanent.getCounters(MagicCounterType.Charge); + if (charges>=3) { + return flags|MagicAbility.FirstStrike.getMask()|MagicAbility.Deathtouch.getMask(); + } else if (charges>=1) { + return flags|MagicAbility.Deathtouch.getMask(); + } + return flags; + } + }; + + public static final MagicPermanentActivation V1413 = new MagicLevelUpActivation("Nirkana Cutthroat",MagicManaCost.TWO_BLACK,3); + public static final MagicChangeCardDefinition SET = new MagicChangeCardDefinition() { + @Override + public void change(MagicCardDefinition cdef) { + cdef.addLocalVariable(NIRKANA_CUTTHROAT); + cdef.addLocalVariable(MagicStaticLocalVariable.getInstance()); + cdef.setVariablePT(); + } + }; } diff --git a/src/magic/card/Ruthless_Cullblade.java b/src/magic/card/Ruthless_Cullblade.java new file mode 100644 index 0000000000..4ca1075e52 --- /dev/null +++ b/src/magic/card/Ruthless_Cullblade.java @@ -0,0 +1,35 @@ + +package magic.card; + +import java.util.Arrays; + +import magic.model.event.*; +import magic.model.stack.*; +import magic.model.choice.*; +import magic.model.target.*; +import magic.model.action.*; +import magic.model.trigger.*; +import magic.model.condition.*; +import magic.model.variable.*; +import magic.model.*; + +public class Ruthless_Cullblade { + + private static final MagicLocalVariable RUTHLESS_CULLBLADE=new MagicDummyLocalVariable() { + @Override + public void getPowerToughness(final MagicGame game,final MagicPermanent permanent,final MagicPowerToughness pt) { + if (game.getOpponent(permanent.getController()).getLife()<=10) { + pt.power+=2; + pt.toughness++; + } + } + }; + + public static final MagicChangeCardDefinition SET = new MagicChangeCardDefinition() { + @Override + public void change(MagicCardDefinition cdef) { + cdef.addLocalVariable(MagicStaticLocalVariable.getInstance()); + cdef.addLocalVariable(RUTHLESS_CULLBLADE); + } + }; +} diff --git a/src/magic/card/Student_of_Warfare.java b/src/magic/card/Student_of_Warfare.java index 86c92e7b09..569959ed5e 100644 --- a/src/magic/card/Student_of_Warfare.java +++ b/src/magic/card/Student_of_Warfare.java @@ -12,7 +12,40 @@ import magic.data.*; import magic.model.variable.*; public class Student_of_Warfare { - - public static final MagicPermanentActivation V1891 = new MagicLevelUpActivation("Student of Warfare",MagicManaCost.WHITE,7); + private static final MagicLocalVariable STUDENT_OF_WARFARE=new MagicDummyLocalVariable() { + @Override + public void getPowerToughness(final MagicGame game,final MagicPermanent permanent,final MagicPowerToughness pt) { + final int charges=permanent.getCounters(MagicCounterType.Charge); + if (charges>=7) { + pt.power=4; + pt.toughness=4; + } else if (charges>=2) { + pt.power=3; + pt.toughness=3; + } + } + + @Override + public long getAbilityFlags(final MagicGame game,final MagicPermanent permanent,final long flags) { + final int charges=permanent.getCounters(MagicCounterType.Charge); + if (charges>=7) { + return flags|MagicAbility.DoubleStrike.getMask(); + } else if (charges>=2) { + return flags|MagicAbility.FirstStrike.getMask(); + } + return flags; + } + }; + + public static final MagicPermanentActivation V1891 = new MagicLevelUpActivation("Student of Warfare",MagicManaCost.WHITE,7); + + public static final MagicChangeCardDefinition SET = new MagicChangeCardDefinition() { + @Override + public void change(MagicCardDefinition cdef) { + cdef.addLocalVariable(STUDENT_OF_WARFARE); + cdef.addLocalVariable(MagicStaticLocalVariable.getInstance()); + cdef.setVariablePT(); + } + }; }