The Magarena cubes now contain 555 and 875 cards. That's all folks.

master
ubeefx 2011-04-09 19:43:33 +00:00
parent 8280ebb2ec
commit 6737805b1a
8 changed files with 377 additions and 18 deletions

View File

@ -7296,17 +7296,142 @@ power=2
toughness=1
timing=main
>Koth's Courier
image=http://magiccards.info/scans/en/mbs/68.jpg
>Vindicate
image=http://magiccards.info/scans/en/jr/33.jpg
cube=default
value=4
removal=5
rarity=2
type=Sorcery
color=wb
converted=3
cost={1}{W}{B}
timing=removal
>Juniper Order Ranger
image=http://magiccards.info/scans/en/cs/130.jpg
cube=default
value=4
rarity=2
type=Creature
subtype=Human,Knight
color=gw
converted=5
cost={3}{G}{W}
power=2
toughness=4
timing=fmain
>Dragon Fodder
image=http://magiccards.info/scans/en/arc/34.jpg
cube=default
value=3
rarity=1
type=Creature
subtype=Human,Rogue
type=Sorcery
color=r
converted=3
cost={1}{R}{R}
power=2
toughness=3
ability=forestwalk
converted=2
cost={1}{R}
timing=main
>Knight Exemplar
image=http://magiccards.info/scans/en/m11/20.jpg
cube=default
value=4
rarity=2
type=Creature
subtype=Human,Knight
color=w
converted=3
cost={1}{W}{W}
power=2
toughness=2
ability=first strike
static=player
timing=fmain
>Silvos, Rogue Elemental
image=http://magiccards.info/scans/en/on/282.jpg
cube=default
value=5
rarity=3
type=Legendary,Creature
subtype=Elemental
color=g
converted=6
cost={3}{G}{G}{G}
power=8
toughness=5
ability=trample
timing=main
>Visara the Dreadful
image=http://magiccards.info/scans/en/on/179.jpg
cube=default
value=5
rarity=3
type=Legendary,Creature
subtype=Gorgon
color=b
converted=6
cost={3}{B}{B}{B}
power=5
toughness=5
ability=flying
timing=main
>Havoc Demon
image=http://magiccards.info/scans/en/le/74.jpg
cube=default
value=5
rarity=3
type=Creature
subtype=Demon
color=b
converted=7
cost={5}{B}{B}
power=5
toughness=5
ability=flying
timing=main
>Thunder Dragon
image=http://magiccards.info/scans/en/fvd/14.jpg
cube=default
value=5
rarity=3
type=Creature
subtype=Dragon
color=r
converted=7
cost={5}{R}{R}
power=5
toughness=5
ability=flying
timing=main
>Perilous Myr
image=http://magiccards.info/scans/en/som/192.jpg
cube=default
value=3
rarity=2
type=Artifact,Creature
subtype=Myr
converted=2
cost={2}
power=1
toughness=1
timing=main
>Arcanis the Omnipotent
image=http://magiccards.info/scans/en/10e/66.jpg
cube=default
value=5
rarity=3
type=Legendary,Creature
subtype=Wizard
color=u
converted=6
cost={3}{U}{U}{U}
power=3
toughness=4
timing=smain

View File

@ -2119,6 +2119,26 @@ public class CardEventDefinitions {
}
};
private static final MagicSpellCardEvent DRAGON_FODDER=new MagicSpellCardEvent("Dragon Fodder") {
@Override
public MagicEvent getEvent(final MagicCardOnStack cardOnStack,final MagicPayedCost payedCost) {
final MagicPlayer player=cardOnStack.getController();
return new MagicEvent(cardOnStack.getCard(),player,new Object[]{cardOnStack,player},this,
"Put two 1/1 red Goblin creature tokens onto the battlefield.");
}
@Override
public void executeEvent(final MagicGame game,final MagicEvent event,final Object[] data,final Object[] choiceResults) {
game.doAction(new MagicMoveCardAction((MagicCardOnStack)data[0]));
final MagicPlayer player=(MagicPlayer)data[1];
game.doAction(new MagicPlayTokenAction(player,TokenCardDefinitions.GOBLIN1_TOKEN_CARD));
game.doAction(new MagicPlayTokenAction(player,TokenCardDefinitions.GOBLIN1_TOKEN_CARD));
}
};
private static final MagicSpellCardEvent EARTHQUAKE=new MagicSpellCardEvent("Earthquake") {
@Override
@ -2791,6 +2811,26 @@ public class CardEventDefinitions {
}
}
};
private static final MagicSpellCardEvent VINDICATE=new MagicSpellCardEvent("Vindicate") {
@Override
public MagicEvent getEvent(final MagicCardOnStack cardOnStack,final MagicPayedCost payedCost) {
return new MagicEvent(cardOnStack.getCard(),cardOnStack.getController(),MagicTargetChoice.NEG_TARGET_PERMANENT,
new MagicDestroyTargetPicker(false),new Object[]{cardOnStack},this,"Destroy target permanent$.");
}
@Override
public void executeEvent(final MagicGame game,final MagicEvent event,final Object[] data,final Object[] choiceResults) {
game.doAction(new MagicMoveCardAction((MagicCardOnStack)data[0]));
final MagicPermanent permanent=event.getTarget(game,choiceResults,0);
if (permanent!=null) {
game.doAction(new MagicDestroyAction(permanent));
}
}
};
private static final MagicSpellCardEvent ZOMBIFY=new MagicSpellCardEvent("Zombify") {
@ -3210,6 +3250,7 @@ public class CardEventDefinitions {
DAY_OF_JUDGMENT,
DEATH_GRASP,
DIVINATION,
DRAGON_FODDER,
EARTHQUAKE,
EXHAUSTION,
FLAME_SLASH,
@ -3238,6 +3279,7 @@ public class CardEventDefinitions {
TIME_EBB,
TIME_WARP,
TITANIC_ULTIMATUM,
VINDICATE,
ZOMBIFY,
GOBLIN_BUSHWHACKER,
GOBLIN_RUINBLASTER,

View File

@ -95,7 +95,7 @@ import magic.model.variable.MagicDummyLocalVariable;
import magic.model.variable.MagicLocalVariable;
public class PermanentActivationDefinitions {
private static final MagicPermanentActivation AIR_SERVANT=new MagicPermanentActivation("Air Servant",
new MagicCondition[]{MagicManaCost.TWO_BLUE.getCondition()},new MagicActivationHints(MagicTiming.Tapping)) {
@ -122,6 +122,51 @@ public class PermanentActivationDefinitions {
}
};
private static final MagicPermanentActivation ARCANIS_THE_OMNIPOTENT1=new MagicPermanentActivation("Arcanis the Omnipotent",
new MagicCondition[]{MagicCondition.CAN_TAP_CONDITION},new MagicActivationHints(MagicTiming.Token)) {
@Override
public MagicEvent[] getCostEvent(final MagicSource source) {
return new MagicEvent[]{new MagicTapEvent((MagicPermanent)source)};
}
@Override
public MagicEvent getPermanentEvent(final MagicPermanent source,final MagicPayedCost payedCost) {
final MagicPlayer player=source.getController();
return new MagicEvent(source,player,new Object[]{player},this,"You draw three cards.");
}
@Override
public void executeEvent(final MagicGame game,final MagicEvent event,final Object[] data,final Object[] choiceResults) {
game.doAction(new MagicDrawAction((MagicPlayer)data[0],3));
}
};
private static final MagicPermanentActivation ARCANIS_THE_OMNIPOTENT2=new MagicPermanentActivation("Arcanis the Omnipotent",
new MagicCondition[]{MagicManaCost.TWO_BLUE_BLUE.getCondition()},new MagicActivationHints(MagicTiming.Removal)) {
@Override
public MagicEvent[] getCostEvent(final MagicSource source) {
return new MagicEvent[]{new MagicPayManaCostEvent(source,source.getController(),MagicManaCost.TWO_BLUE_BLUE)};
}
@Override
public MagicEvent getPermanentEvent(final MagicPermanent source,final MagicPayedCost payedCost) {
return new MagicEvent(source,source.getController(),new Object[]{source},this,"Return Arcanis the Omnipotent to its owner's hand.");
}
@Override
public void executeEvent(final MagicGame game,final MagicEvent event,final Object[] data,final Object[] choiceResults) {
game.doAction(new MagicRemoveFromPlayAction((MagicPermanent)data[0],MagicLocationType.OwnersHand));
}
};
private static final MagicPermanentActivation BOROS_GUILDMAGE1=new MagicPermanentActivation(
"Boros Guildmage",new MagicCondition[]{MagicManaCost.ONE_RED.getCondition()},new MagicActivationHints(MagicTiming.Pump,true)) {
@ -1492,6 +1537,8 @@ public class PermanentActivationDefinitions {
}
}
};
private static final MagicPermanentActivation SILVOS_ROGUE_ELEMENTAL=new MagicRegenerationActivation("Silvos, Rogue Elemental",MagicManaCost.GREEN);
private static final MagicPermanentActivation SKELETAL_VAMPIRE1=new MagicPermanentActivation("Skeletal Vampire",
new MagicCondition[]{MagicManaCost.THREE_BLACK_BLACK.getCondition(),MagicCondition.CONTROL_BAT_CONDITION},
@ -1845,6 +1892,33 @@ public class PermanentActivationDefinitions {
}
};
private static final MagicPermanentActivation VISARA_THE_DREADFUL=new MagicPermanentActivation("Visara the Dreadful",
new MagicCondition[]{MagicCondition.CAN_TAP_CONDITION},new MagicActivationHints(MagicTiming.Removal)) {
@Override
public MagicEvent[] getCostEvent(final MagicSource source) {
return new MagicEvent[]{new MagicTapEvent((MagicPermanent)source)};
}
@Override
public MagicEvent getPermanentEvent(final MagicPermanent source,final MagicPayedCost payedCost) {
return new MagicEvent(source,source.getController(),MagicTargetChoice.NEG_TARGET_CREATURE,new MagicDestroyTargetPicker(true),
MagicEvent.NO_DATA,this,"Destroy target creature$. It can't be regenerated.");
}
@Override
public void executeEvent(final MagicGame game,final MagicEvent event,final Object[] data,final Object[] choiceResults) {
final MagicPermanent creature=event.getTarget(game,choiceResults,0);
if (creature!=null) {
game.doAction(new MagicChangeStateAction(creature,MagicPermanentState.CannotBeRegenerated,true));
game.doAction(new MagicDestroyAction(creature));
}
}
};
private static final MagicPermanentActivation WALL_OF_BONE=new MagicRegenerationActivation("Wall of Bone",MagicManaCost.BLACK);
private static final MagicPermanentActivation ANGELIC_SHIELD=new MagicPermanentActivation(
@ -2538,6 +2612,8 @@ public class PermanentActivationDefinitions {
private static Collection<MagicPermanentActivation> ACTIVATIONS=Arrays.asList(
AIR_SERVANT,
ARCANIS_THE_OMNIPOTENT1,
ARCANIS_THE_OMNIPOTENT2,
BOROS_GUILDMAGE1,
BOROS_GUILDMAGE2,
BOTTLE_GNOMES,
@ -2598,6 +2674,7 @@ public class PermanentActivationDefinitions {
SCATTERSHOT_ARCHER,
SIEGE_GANG_COMMANDER,
SILKBIND_FAERIE,
SILVOS_ROGUE_ELEMENTAL,
SKELETAL_VAMPIRE1,
SKELETAL_VAMPIRE2,
SKITHIRYX1,
@ -2617,6 +2694,7 @@ public class PermanentActivationDefinitions {
URSAPINE,
VAMPIRE_HEXMAGE,
VEDALKEN_MASTERMIND,
VISARA_THE_DREADFUL,
WALL_OF_BONE,
ANGELIC_SHIELD,
ASCETICISM,

View File

@ -999,6 +999,30 @@ public class TriggerDefinitions {
private static final MagicTrigger GUUL_DRAZ_SPECTER=new MagicSpecterTrigger("Guul Draz Specter",true,false);
private static final MagicTrigger HAVOC_DEMON=new MagicTrigger(MagicTriggerType.WhenPutIntoGraveyard,"Havoc Demon") {
@Override
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final Object data) {
final MagicGraveyardTriggerData triggerData=(MagicGraveyardTriggerData)data;
if (MagicLocationType.Play==triggerData.fromLocation) {
final MagicPlayer player=permanent.getController();
return new MagicEvent(permanent,player,new Object[]{player},this,"All creatures get -5/-5 until end of turn.");
}
return null;
}
@Override
public void executeEvent(final MagicGame game,final MagicEvent event,final Object data[],final Object[] choiceResults) {
final Collection<MagicTarget> targets=game.filterTargets((MagicPlayer)data[0],MagicTargetFilter.TARGET_CREATURE);
for (final MagicTarget target : targets) {
game.doAction(new MagicChangeTurnPTAction((MagicPermanent)target,-5,-5));
}
}
};
private static final MagicTrigger HERO_OF_BLADEHOLD=new MagicTrigger(MagicTriggerType.WhenAttacks,"Hero of Bladehold") {
@Override
@ -1044,6 +1068,28 @@ public class TriggerDefinitions {
private static final MagicTrigger HYPNOTIC_SPECTER=new MagicSpecterTrigger("Hypnotic Specter",false,true);
private static final MagicTrigger JUNIPER_ORDER_RANGER=new MagicTrigger(MagicTriggerType.WhenOtherComesIntoPlay,"Juniper Order Ranger") {
@Override
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final Object data) {
final MagicPermanent otherPermanent=(MagicPermanent)data;
final MagicPlayer player=permanent.getController();
if (otherPermanent!=permanent&&otherPermanent.isCreature()&&otherPermanent.getController()==player) {
return new MagicEvent(permanent,player,new Object[]{otherPermanent,permanent},this,
"Put a +1/+1 counter on "+otherPermanent.getName()+" and a +1/+1 counter on Juniper Order Ranger.");
}
return null;
}
@Override
public void executeEvent(final MagicGame game,final MagicEvent event,final Object data[],final Object[] choiceResults) {
game.doAction(new MagicChangeCountersAction((MagicPermanent)data[0],MagicCounterType.PlusOne,1,true));
game.doAction(new MagicChangeCountersAction((MagicPermanent)data[1],MagicCounterType.PlusOne,1,true));
}
};
private static final MagicTrigger KAERVEK_THE_MERCILESS=new MagicTrigger(MagicTriggerType.WhenSpellIsPlayed,"Kaervek the Merciless") {
@Override
@ -1764,6 +1810,30 @@ public class TriggerDefinitions {
}
};
private static final MagicTrigger PERILOUS_MYR=new MagicTrigger(MagicTriggerType.WhenPutIntoGraveyard,"Perilous Myr") {
@Override
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final Object data) {
final MagicGraveyardTriggerData triggerData=(MagicGraveyardTriggerData)data;
if (MagicLocationType.Play==triggerData.fromLocation) {
return new MagicEvent(permanent,permanent.getController(),MagicTargetChoice.TARGET_CREATURE_OR_PLAYER,new MagicDamageTargetPicker(2),
new Object[]{permanent},this,"Perilous Myr deals 2 damage to target creature or player$.");
}
return null;
}
@Override
public void executeEvent(final MagicGame game,final MagicEvent event,final Object data[],final Object[] choiceResults) {
final MagicTarget target=event.getTarget(game,choiceResults,0);
if (target!=null) {
final MagicDamage damage=new MagicDamage((MagicPermanent)data[0],target,2,false);
game.doAction(new MagicDealDamageAction(damage));
}
}
};
private static final MagicTrigger PERIMETER_CAPTAIN=new MagicTrigger(MagicTriggerType.WhenBlocks,"Perimeter Captain") {
@Override
@ -2376,6 +2446,28 @@ public class TriggerDefinitions {
private static final MagicTrigger THIEVING_MAGPIE=new MagicThiefTrigger("Thieving Magpie",false,1);
private static final MagicTrigger THUNDER_DRAGON=new MagicTrigger(MagicTriggerType.WhenComesIntoPlay,"Thunder Dragon") {
@Override
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final Object data) {
final MagicPlayer player=permanent.getController();
return new MagicEvent(permanent,player,new Object[]{permanent,player},this,"Thunder Dragon deals 3 damage to each creature without flying.");
}
@Override
public void executeEvent(final MagicGame game,final MagicEvent event,final Object data[],final Object[] choiceResults) {
final MagicSource source=(MagicSource)data[0];
final Collection<MagicTarget> creatures=game.filterTargets((MagicPlayer)data[1],MagicTargetFilter.TARGET_CREATURE_WITHOUT_FLYING);
for (final MagicTarget creature : creatures) {
final MagicDamage damage=new MagicDamage(source,creature,3,false);
game.doAction(new MagicDealDamageAction(damage));
}
}
};
private static final MagicTrigger TREVA_THE_RENEWER=new MagicTrigger(MagicTriggerType.WhenDamageIsDealt,"Treva, the Renewer") {
@Override
@ -3807,9 +3899,11 @@ public class TriggerDefinitions {
GUARD_GOMAZOA,
GUARDIAN_SERAPH,
GUUL_DRAZ_SPECTER,
HAVOC_DEMON,
HERO_OF_BLADEHOLD,
HUNGRY_SPRIGGAN,
HYPNOTIC_SPECTER,
JUNIPER_ORDER_RANGER,
KAERVEK_THE_MERCILESS,
KAZUUL_TYRANT_OF_THE_CLIFFS,
KEENING_BANSHEE,
@ -3844,6 +3938,7 @@ public class TriggerDefinitions {
NULLTREAD_GARGANTUAN,
PELAKKA_WURM1,
PELAKKA_WURM2,
PERILOUS_MYR,
PERIMETER_CAPTAIN,
OROS_THE_AVENGER,
PHYREXIAN_VATMOTHER,
@ -3877,6 +3972,7 @@ public class TriggerDefinitions {
TAUREAN_MAULER,
TENEB_THE_HARVESTER,
THIEVING_MAGPIE,
THUNDER_DRAGON,
TREVA_THE_RENEWER,
TRYGON_PREDATOR,
TUKTUK_THE_EXPLORER,

View File

@ -53,6 +53,7 @@ public class MagicManaCost {
public static final MagicManaCost ONE_BLUE=MagicManaCost.createCost("{1}{U}");
public static final MagicManaCost TWO_BLUE=MagicManaCost.createCost("{2}{U}");
public static final MagicManaCost BLUE_BLUE=MagicManaCost.createCost("{U}{U}");
public static final MagicManaCost TWO_BLUE_BLUE=MagicManaCost.createCost("{2}{U}{U}");
public static final MagicManaCost ONE_GREEN=MagicManaCost.createCost("{1}{G}");
public static final MagicManaCost TWO_GREEN=MagicManaCost.createCost("{2}{G}");
public static final MagicManaCost TWO_GREEN_GREEN=MagicManaCost.createCost("{2}{G}{G}");

View File

@ -43,6 +43,8 @@ public class MagicTargetChoice extends MagicChoice {
new MagicTargetChoice(MagicTargetFilter.TARGET_PERMANENT,true,MagicTargetHint.None,"target permanent");
public static final MagicTargetChoice TARGET_PERMANENT_YOU_CONTROL=
new MagicTargetChoice(MagicTargetFilter.TARGET_PERMANENT_YOU_CONTROL,true,MagicTargetHint.None,"target permanent you control");
public static final MagicTargetChoice NEG_TARGET_PERMANENT=
new MagicTargetChoice(MagicTargetFilter.TARGET_PERMANENT,true,MagicTargetHint.Negative,"target permanent");
public static final MagicTargetChoice TARGET_NONBASIC_LAND=
new MagicTargetChoice(MagicTargetFilter.TARGET_NONBASIC_LAND,true,MagicTargetHint.None,"target non basic land");
public static final MagicTargetChoice TARGET_NONLAND_PERMANENT=

View File

@ -35,6 +35,7 @@ public class MagicStaticLocalVariable implements MagicLocalVariable {
private static int goblinChieftain;
private static int godheadOfAwe;
private static int kinsbaileCavalier;
private static int knightExemplar;
private static int kulrathKnight;
private static int levitation;
private static int madrushCyclops;
@ -99,6 +100,10 @@ public class MagicStaticLocalVariable implements MagicLocalVariable {
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(eleshNorn);
both+=getOtherCount(eleshNorn,permanent,count)*2;
both-=opponent.getCount(eleshNorn)*2;
@ -165,6 +170,9 @@ public class MagicStaticLocalVariable implements MagicLocalVariable {
(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();
}
@ -228,6 +236,7 @@ public class MagicStaticLocalVariable implements MagicLocalVariable {
goblinChieftain=definitions.getCard("Goblin Chieftain").getIndex();
godheadOfAwe=definitions.getCard("Godhead of Awe").getIndex();
kinsbaileCavalier=definitions.getCard("Kinsbaile Cavalier").getIndex();
knightExemplar=definitions.getCard("Knight Exemplar").getIndex();
kulrathKnight=definitions.getCard("Kulrath Knight").getIndex();
levitation=definitions.getCard("Levitation").getIndex();
madrushCyclops=definitions.getCard("Madrush Cyclops").getIndex();

View File

@ -118,20 +118,26 @@ public class TestGameBuilder {
addToGraveyard(player,"Mogg Fanatic",2);
addToGraveyard(opponent,"Island",2);
addToHand(opponent,"Zephyr Sprite",3);
addToHand(player,"Lightning Helix",1);
addToHand(player,"Lightning Greaves",1);
addToHand(player,"Barbed Battlegear",1);
addToHand(player,"Go for the Throat",1);
addToHand(player,"Cumber Stone",1);
addToHand(player,"Phyrexian Digester",1);
addToHand(player,"Suture Priest",1);
addToHand(player,"Elesh Norn, Grand Cenobite",1);
addToHand(player,"Vulshok Battlegear",1);
addToHand(player,"Vindicate",1);
addToHand(player,"Dragon Fodder",1);
addToHand(player,"Juniper Order Ranger",1);
addToHand(player,"Knight Exemplar",1);
addToHand(player,"Silver Knight",1);
addToHand(player,"Silvos, Rogue Elemental",1);
addToHand(player,"Visara the Dreadful",1);
addToHand(player,"Havoc Demon",1);
addToHand(player,"Thunder Dragon",1);
addToHand(player,"Arcanis the Omnipotent",1);
addToHand(player,"Perilous Myr",1);
createPermanent(game,player,"Watchwolf",false,1);
createPermanent(game,player,"Bonesplitter",false,1);
createPermanent(game,player,"Rupture Spire",false,7);
createPermanent(game,opponent,"Bloodrock Cyclops",false,1);
createPermanent(game,opponent,"Suture Priest",false,1);
createPermanent(game,opponent,"Silver Knight",false,1);
return game;
}