diff --git a/launch4j/Readme.txt b/launch4j/Readme.txt index 0fce67d609..386613b53d 100644 --- a/launch4j/Readme.txt +++ b/launch4j/Readme.txt @@ -14,16 +14,20 @@ Magarena supports the following keyboard shortcuts : - Escape or Left key : undo button - Enter : switch between graphical and text mode +The UI of Magarena can be customized with downloadable themes coming in zip files. +These files can be put into the mods folder of the Magarena data folder. +It is best to restart the application first after switching to one of these themes in preferences. + Recommended difficulty level for the best balance of AI speed and strength is the default 6. Thanks to Epiko for creating the very nice Magarena splash screen. Have fun! -Release 1.7 (January , 2011) +Release 1.7 (January 14, 2011) =========== -- 1 new card (505 total) +- 4 new cards (508 total) - new splash screen - added mana info for lands in hand and on battlefield diff --git a/resources/magic/data/cards.txt b/resources/magic/data/cards.txt index 7548dd9474..874a89464d 100644 --- a/resources/magic/data/cards.txt +++ b/resources/magic/data/cards.txt @@ -5731,3 +5731,40 @@ color=g converted=5 cost={3}{G}{G} timing=enchantment + +>Accorder Paladin +value=2 +rarity=1 +type=Creature +subtype=Human,Knight +color=w +converted=2 +cost={1}{W} +power=3 +toughness=1 +ability=battle cry +timing=main + +>Guul Draz Vampire +value=2 +rarity=2 +type=Creature +subtype=Vampire,Rogue +color=b +converted=1 +cost={B} +power=1 +toughness=1 +timing=main + +>Flayer Husk +value=2 +rarity=2 +type=Artifact +subtype=Equipment +converted=1 +cost={1} +equip={2} +power=1 +toughness=1 +timing=equipment diff --git a/resources/magic/data/cube.txt b/resources/magic/data/cube.txt index 92f4abf4aa..a9ef1d9722 100644 --- a/resources/magic/data/cube.txt +++ b/resources/magic/data/cube.txt @@ -1,5 +1,6 @@ Absorb Accorder's Shield +Accorder Paladin Acidic Slime Affa Guard Hound Air Servant @@ -138,6 +139,7 @@ Flame Slash Flame-Kin Zealot Flameblast Dragon Flametongue Kavu +Flayer Husk Flight of Fancy Followed Footsteps Force Spike @@ -180,6 +182,7 @@ Guard Gomazoa Guardian Seraph Guardian of the Guildpact Guul Draz Specter +Guul Draz Vampire Halcyon Glaze Hallowed Fountain Harmonize diff --git a/resources/magic/data/images.txt b/resources/magic/data/images.txt index 09853a0e83..a21993504f 100644 --- a/resources/magic/data/images.txt +++ b/resources/magic/data/images.txt @@ -65,6 +65,7 @@ Dragon4.jpg;http://www.wizards.com/mtg/images/daily/arcana/1688_token4.jpg Dragon5.jpg;http://www.wizards.com/mtg/images/daily/arcana/371_tk2.jpg Eldrazi Spawn.jpg;http://www.wizards.com/mtg/images/daily/arcana/421_spawn1.jpg Elephant.jpg;http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=201843&type=card +Germ.jpg;http://media.wizards.com/images/magic/tcg/products/mbs/07he2j6tbi_en.jpg Goblin Soldier.jpg;http://www.wizards.com/magic/images/mtgcom/arcana1000/1630_1.jpg Goblin1.jpg;http://forums.mtgsalvation.com/attachment.php?attachmentid=20001&d=1143672913 Goblin2.jpg;http://forums.mtgsalvation.com/attachment.php?attachmentid=30596&d=1157620938 @@ -84,6 +85,7 @@ Zombie.jpg;http://www.wizards.com/mtg/images/daily/arcana/1689_token2a.jpg Zombie Giant.jpg;http://www.wizards.com/mtg/images/daily/arcana/283_ZEN_Token6.jpg >cards Absorb.jpg;http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=23155&type=card +Accorder Paladin.jpg;http://media.wizards.com/images/magic/tcg/products/mbs/b0egpqoyqe_en.jpg Accorder's Shield.jpg;http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=209046&type=card Acidic Slime.jpg;http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=207333&type=card Affa Guard Hound.jpg;http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=198305&type=card @@ -223,6 +225,7 @@ Flame Slash.jpg;http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=193 Flame-Kin Zealot.jpg;http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=83562&type=card Flameblast Dragon.jpg;http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=220458&type=card Flametongue Kavu.jpg;http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=205392&type=card +Flayer Husk.jpg;http://media.wizards.com/images/magic/tcg/products/mbs/8zp2d3kicu_en.jpg Flight of Fancy.jpg;http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=83677&type=card Force Spike.jpg;http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=11285&type=card Followed Footsteps.jpg;http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=83699&type=card @@ -266,6 +269,7 @@ Guard Gomazoa.jpg;http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=1 Guardian Seraph.jpg;http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=193766&type=card Guardian of the Guildpact.jpg;http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=107583&type=card Guul Draz Specter.jpg;http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=183418&type=card +Guul Draz Vampire.jpg;http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=180498&type=card Halcyon Glaze.jpg;http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=83764&type=card Hallowed Fountain.jpg;http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=97071&type=card Harmonize.jpg;http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=159033&type=card @@ -595,6 +599,7 @@ Zephyr Sprite.jpg;http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=1 Zombify.jpg;http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=220580&type=card >hqcards Absorb.jpg;http://magiccards.info/scans/en/in/226.jpg +Accorder Paladin.jpg;http://media.wizards.com/images/magic/tcg/products/mbs/b0egpqoyqe_en.jpg Accorder's Shield.jpg;http://magiccards.info/scans/en/som/136.jpg Acidic Slime.jpg;http://magiccards.info/scans/en/m11/161.jpg Affa Guard Hound.jpg;http://magiccards.info/scans/en/roe/14.jpg @@ -734,6 +739,7 @@ Flame Slash.jpg;http://magiccards.info/scans/en/roe/145.jpg Flame-Kin Zealot.jpg;http://magiccards.info/scans/en/rav/206.jpg Flameblast Dragon.jpg;http://magiccards.info/scans/en/arc/38.jpg Flametongue Kavu.jpg;http://magiccards.info/scans/en/pch/54.jpg +Flayer Husk.jpg;http://media.wizards.com/images/magic/tcg/products/mbs/8zp2d3kicu_en.jpg Flight of Fancy.jpg;http://magiccards.info/scans/en/rav/49.jpg Followed Footsteps.jpg;http://magiccards.info/scans/en/rav/51.jpg Force Spike.jpg;http://magiccards.info/scans/en/7e/76.jpg @@ -777,6 +783,7 @@ Guard Gomazoa.jpg;http://magiccards.info/scans/en/roe/70.jpg Guardian Seraph.jpg;http://magiccards.info/scans/en/m10/13.jpg Guardian of the Guildpact.jpg;http://magiccards.info/scans/en/di/10.jpg Guul Draz Specter.jpg;http://magiccards.info/scans/en/zen/92.jpg +Guul Draz Vampire.jpg;http://magiccards.info/scans/en/zen/93.jpg Halcyon Glaze.jpg;http://magiccards.info/scans/en/rav/54.jpg Hallowed Fountain.jpg;http://magiccards.info/scans/en/di/174.jpg Harmonize.jpg;http://magiccards.info/scans/en/evg/22.jpg diff --git a/src/magic/data/LocalVariableDefinitions.java b/src/magic/data/LocalVariableDefinitions.java index c88c5e85e1..b9d1e17379 100644 --- a/src/magic/data/LocalVariableDefinitions.java +++ b/src/magic/data/LocalVariableDefinitions.java @@ -79,6 +79,24 @@ public class LocalVariableDefinitions { } } }; + + 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; + } + }; private static final MagicLocalVariable JUND_HACKBLADE=new MagicBladeLocalVariable(MagicAbility.Haste.getMask()); @@ -92,8 +110,7 @@ public class LocalVariableDefinitions { pt.toughness++; } } - - + @Override public long getAbilityFlags(final MagicGame game,final MagicPermanent permanent,final long flags) { @@ -231,6 +248,11 @@ public class LocalVariableDefinitions { cardDefinition=CardDefinitions.getInstance().getCard("Guul Draz Specter"); cardDefinition.addLocalVariable(MagicStaticLocalVariable.getInstance()); cardDefinition.addLocalVariable(GUUL_DRAZ_SPECTER); + + // Guul Draz Vampire + cardDefinition=CardDefinitions.getInstance().getCard("Guul Draz Vampire"); + cardDefinition.addLocalVariable(MagicStaticLocalVariable.getInstance()); + cardDefinition.addLocalVariable(GUUL_DRAZ_VAMPIRE); // Jund Hackblade cardDefinition=CardDefinitions.getInstance().getCard("Jund Hackblade"); diff --git a/src/magic/data/TokenCardDefinitions.java b/src/magic/data/TokenCardDefinitions.java index 7ef677fa3a..28ae0c34d8 100644 --- a/src/magic/data/TokenCardDefinitions.java +++ b/src/magic/data/TokenCardDefinitions.java @@ -309,6 +309,22 @@ public class TokenCardDefinitions { } }; + public static final MagicCardDefinition GERM_TOKEN_CARD=new MagicCardDefinition("Germ") { + + public void initialize() { + + setToken(); + setValue(1); + addType(MagicType.Creature); + setSubTypes(new String[]{"Germ"}); + setCost(MagicManaCost.ZERO); + setColor(MagicColor.Black); + setColoredType(); + setPower(0); + setToughness(0); + } + }; + public static final MagicCardDefinition ZOMBIE_TOKEN_CARD=new MagicCardDefinition("Zombie") { public void initialize() { @@ -462,6 +478,7 @@ public class TokenCardDefinitions { BEAST4_TOKEN_CARD, BEAST8_TOKEN_CARD, ELEPHANT_TOKEN_CARD, + GERM_TOKEN_CARD, ZOMBIE_TOKEN_CARD, ZOMBIE_GIANT_TOKEN_CARD, WOLF_TOKEN_CARD, diff --git a/src/magic/data/TriggerDefinitions.java b/src/magic/data/TriggerDefinitions.java index e7bd20f944..b9836e3741 100644 --- a/src/magic/data/TriggerDefinitions.java +++ b/src/magic/data/TriggerDefinitions.java @@ -2492,6 +2492,25 @@ public class TriggerDefinitions { } }; + private static final MagicTrigger FLAYER_HUSK=new MagicTrigger(MagicTriggerType.WhenComesIntoPlay,"Flayer Husk") { + + @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, + "You put a 0/0 black Germ creature token onto the battlefield, then attach Flayer Husk to it."); + } + + @Override + public void executeEvent(final MagicGame game,final MagicEvent event,final Object data[],final Object[] choiceResults) { + + final MagicPlayTokenAction action=new MagicPlayTokenAction((MagicPlayer)data[1],TokenCardDefinitions.GERM_TOKEN_CARD); + game.doAction(action); + game.doAction(new MagicAttachEquipmentAction((MagicPermanent)data[0],action.getPermanent())); + } + }; + private static final MagicTrigger MAGE_SLAYER=new MagicTrigger(MagicTriggerType.WhenAttacks,"Mage Slayer",1) { @Override @@ -3635,6 +3654,7 @@ public class TriggerDefinitions { WORT_BOGGART_AUNTIE, WREXIAL_THE_RISEN_DEEP, WURMCOIL_ENGINE, + FLAYER_HUSK, MAGE_SLAYER, MASK_OF_MEMORY, MASK_OF_RIDDLES, diff --git a/src/magic/test/TestGameBuilder.java b/src/magic/test/TestGameBuilder.java index 0f66e3d4be..b626114cb2 100644 --- a/src/magic/test/TestGameBuilder.java +++ b/src/magic/test/TestGameBuilder.java @@ -109,6 +109,7 @@ public class TestGameBuilder { game.setPhase(MagicMainPhase.getFirstInstance()); final MagicPlayer player=game.getPlayer(0); final MagicPlayer opponent=game.getPlayer(1); + opponent.setLife(12); addToLibrary(player,"Plains",10); addToLibrary(opponent,"Island",10); @@ -121,6 +122,9 @@ public class TestGameBuilder { addToHand(player,"Blaze",1); addToHand(player,"Asceticism",1); addToHand(player,"Pongify",1); + addToHand(player,"Accorder Paladin",1); + addToHand(player,"Guul Draz Vampire",1); + addToHand(player,"Flayer Husk",1); createPermanent(game,player,"Sigiled Paladin",false,1); createPermanent(game,player,"Hero of Bladehold",false,1); @@ -130,8 +134,6 @@ public class TestGameBuilder { createPermanent(game,player,"Rupture Spire",false,8); createPermanent(game,player,"Celestial Colonnade",false,1); createPermanent(game,opponent,"Bottle Gnomes",false,1); - createPermanent(game,opponent,"Llanowar Elves",false,1); - createPermanent(game,opponent,"Fume Spitter",false,1); createPermanent(game,opponent,"Wall of Frost",false,1); return game;