diff --git a/launch4j/Readme.txt b/launch4j/Readme.txt index 1e473c991f..4a44cb4567 100644 --- a/launch4j/Readme.txt +++ b/launch4j/Readme.txt @@ -5,6 +5,7 @@ There must be a Java Runtime 6 (java.com) installed on your computer to play. Installing on Windows is quite simple, just put Magarena.exe on your desktop and execute. To obtain the Java jar, Magarena.exe can simply be renamed to Magarena.jar because it is also an archive. To execute the Java jar, use java -Xmx256m -jar Magarena.jar. +If a Magarena folder is present where the program is executed, that folder is used as data folder. Do not forget to execute "Download images" in the Arena menu the first time you run a new release. Otherwise you will see a lot of question marks. The application stops automatically when downloading is finished. @@ -28,13 +29,22 @@ Recommended difficulty level for the best balance of AI speed and strength is th Have fun! +Release 1.10 (April 1, 2011) +============ + +- ubeefx cube (544 cards) +- singularity cube (865 cards) + +- redesigned card image loading (low quality images are no longer needed) +- high quality random card at startup if enabled in settings + Release 1.9 (March 22, 2011) =========== - ubeefx cube (542 cards) - singularita cube (862 cards) -- when a folder Magarena is present in the same folder as where Magarena is started, that is used as the Magarena data folder +- if a folder Magarena is present in the same folder as where Magarena is started, that is used as the Magarena data folder - added extra settings to themes (see customizing Wiki page) - added support for infect keyword and poison counters diff --git a/resources/magic/data/cards.txt b/resources/magic/data/cards.txt index 986af34ff5..59220a63bc 100644 --- a/resources/magic/data/cards.txt +++ b/resources/magic/data/cards.txt @@ -6117,3 +6117,28 @@ power=2 toughness=2 ability=protection from black,protection from green timing=equipment + +>Suture Priest +value=2 +rarity=2 +type=Creature +subtype=Cleric +color=w +converted=2 +cost={1}{W} +power=1 +toughness=1 +timing=fmain + +>Elesh Norn, Grand Cenobite +value=5 +rarity=3 +type=Legendary,Creature +subtype=Praetor +color=w +converted=7 +cost={5}{W}{W} +power=4 +toughness=7 +ability=vigilance +timing=fmain diff --git a/resources/magic/data/cards2.txt b/resources/magic/data/cards2.txt index 13f5fe9b31..45c1f7cd84 100644 --- a/resources/magic/data/cards2.txt +++ b/resources/magic/data/cards2.txt @@ -4102,3 +4102,15 @@ cost={2}{G} power=2 toughness=3 timing=main + +>Phyrexian Digester +value=2 +ability=infect +rarity=1 +type=Artifact,Creature +subtype=Construct +converted=3 +cost={3} +power=2 +toughness=1 +timing=main diff --git a/resources/magic/data/images.txt b/resources/magic/data/images.txt index b69b709fd6..97a6fdf773 100644 --- a/resources/magic/data/images.txt +++ b/resources/magic/data/images.txt @@ -950,4 +950,7 @@ Blightwidow.jpg;http://magiccards.info/scans/en/mbs/77.jpg Contagious Nim.jpg;http://magiccards.info/scans/en/som/58.jpg Cystbearer.jpg;http://magiccards.info/scans/en/som/117.jpg Go for the Throat.jpg;http://magiccards.info/scans/en/mbs/43.jpg -Sword of Feast and Famine.jpg;http://magiccards.info/scans/en/mbs/138.jpg \ No newline at end of file +Sword of Feast and Famine.jpg;http://magiccards.info/scans/en/mbs/138.jpg +Phyrexian Digester.jpg;http://magiccards.info/scans/en/mbs/120.jpg +Suture Priest.jpg;http://forums.mtgsalvation.com/attachment.php?attachmentid=115363&d=1297746104 +Elesh Norn, Grand Cenobite.jpg;http://forums.mtgsalvation.com/attachment.php?attachmentid=116363&stc=1&d=1301374681 \ No newline at end of file diff --git a/resources/magic/data/singularita_cube.txt b/resources/magic/data/singularita_cube.txt index b400341839..52a7213f34 100644 --- a/resources/magic/data/singularita_cube.txt +++ b/resources/magic/data/singularita_cube.txt @@ -859,4 +859,7 @@ Blightwidow Contagious Nim Cystbearer Go for the Throat -Sword of Feast and Famine \ No newline at end of file +Sword of Feast and Famine +Phyrexian Digester +Suture Priest +Elesh Norn, Grand Cenobite \ No newline at end of file diff --git a/resources/magic/data/ubeefx_cube.txt b/resources/magic/data/ubeefx_cube.txt index fe0f63a724..f24a83c6a5 100644 --- a/resources/magic/data/ubeefx_cube.txt +++ b/resources/magic/data/ubeefx_cube.txt @@ -539,4 +539,6 @@ Plague Stinger Skithiryx, the Blight Dragon Phyrexian Juggernaut Go for the Throat -Sword of Feast and Famine \ No newline at end of file +Sword of Feast and Famine +Suture Priest +Elesh Norn, Grand Cenobite \ No newline at end of file diff --git a/src/magic/data/TriggerDefinitions.java b/src/magic/data/TriggerDefinitions.java index da1b56439e..56dcb9088b 100644 --- a/src/magic/data/TriggerDefinitions.java +++ b/src/magic/data/TriggerDefinitions.java @@ -2134,6 +2134,29 @@ public class TriggerDefinitions { } }; + private static final MagicTrigger SUTURE_PRIEST=new MagicTrigger(MagicTriggerType.WhenOtherComesIntoPlay,"Suture Priest") { + + @Override + public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final Object data) { + + final MagicPermanent otherPermanent=(MagicPermanent)data; + if (otherPermanent!=permanent&&otherPermanent.isCreature()) { + final MagicPlayer player=permanent.getController(); + final MagicPlayer controller=otherPermanent.getController(); + final boolean same=controller==player; + return new MagicEvent(permanent,player,new Object[]{controller,same?1:-1},this, + controller.getName()+(same?" gains 1 life.":" loses 1 life.")); + } + return null; + } + + @Override + public void executeEvent(final MagicGame game,final MagicEvent event,final Object data[],final Object[] choiceResults) { + + game.doAction(new MagicChangeLifeAction((MagicPlayer)data[0],(Integer)data[1])); + } + }; + private static final MagicTrigger RUMBLING_SLUM=new MagicTrigger(MagicTriggerType.AtUpkeep,"Rumbling Slum") { @Override @@ -3849,6 +3872,7 @@ public class TriggerDefinitions { SUNBLAST_ANGEL, STUFFY_DOLL, SURVEILLING_SPRITE, + SUTURE_PRIEST, SZADEK_LORD_OF_SECRETS, TAUREAN_MAULER, TENEB_THE_HARVESTER, diff --git a/src/magic/model/variable/MagicStaticLocalVariable.java b/src/magic/model/variable/MagicStaticLocalVariable.java index 0c36a6b03f..13c7ad6a68 100644 --- a/src/magic/model/variable/MagicStaticLocalVariable.java +++ b/src/magic/model/variable/MagicStaticLocalVariable.java @@ -27,6 +27,7 @@ public class MagicStaticLocalVariable implements MagicLocalVariable { private static int cumberStone; private static int deathbringerLiege; private static int eldraziMonument; + private static int eleshNorn; private static int firesOfYavimaya; private static int glenElendraLiege; private static int gloriousAnthem; @@ -61,6 +62,7 @@ public class MagicStaticLocalVariable implements MagicLocalVariable { public void getPowerToughness(final MagicGame game,final MagicPermanent permanent,final MagicPowerToughness pt) { final MagicPlayer controller=permanent.getController(); + final MagicPlayer opponent=game.getOpponent(controller); // Power and toughness change. if (getOtherCount(godheadOfAwe,permanent,game.getCount(godheadOfAwe))>0) { @@ -82,7 +84,7 @@ public class MagicStaticLocalVariable implements MagicLocalVariable { pt.toughness+=count*2; } } - pt.power-=game.getOpponent(controller).getCount(cumberStone); + pt.power-=opponent.getCount(cumberStone); // Power and toughness increase. int both=permanent.getCounters(MagicCounterType.PlusOne)-permanent.getCounters(MagicCounterType.MinusOne); @@ -97,6 +99,9 @@ public class MagicStaticLocalVariable implements MagicLocalVariable { if (count>0&&permanent.hasSubType(MagicSubType.Goblin)) { both+=getOtherCount(goblinChieftain,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)) { @@ -215,6 +220,7 @@ public class MagicStaticLocalVariable implements MagicLocalVariable { cumberStone=definitions.getCard("Cumber Stone").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(); diff --git a/src/magic/test/TestGameBuilder.java b/src/magic/test/TestGameBuilder.java index 1514938767..eb5fb025c1 100644 --- a/src/magic/test/TestGameBuilder.java +++ b/src/magic/test/TestGameBuilder.java @@ -117,20 +117,19 @@ public class TestGameBuilder { addToLibrary(opponent,"Island",10); addToGraveyard(player,"Mogg Fanatic",2); addToGraveyard(opponent,"Island",2); - addToHand(player,"Flensermite",1); - addToHand(player,"Blightwidow",1); - addToHand(player,"Contagious Nim",1); - addToHand(player,"Cystbearer",1); + addToHand(opponent,"Zephyr Sprite",3); addToHand(player,"Go for the Throat",1); - addToHand(player,"Sword of Feast and Famine",1); - addToHand(opponent,"Island",3); + addToHand(player,"Cumber Stone",1); + addToHand(player,"Phyrexian Digester",1); + addToHand(player,"Suture Priest",1); + addToHand(player,"Elesh Norn, Grand Cenobite",1); createPermanent(game,player,"Watchwolf",false,1); createPermanent(game,player,"Bonesplitter",false,1); - createPermanent(game,player,"Rupture Spire",false,6); + createPermanent(game,player,"Rupture Spire",false,7); createPermanent(game,opponent,"Bloodrock Cyclops",false,1); - createPermanent(game,opponent,"Memnite",false,1); - + createPermanent(game,opponent,"Suture Priest",false,1); + return game; } } \ No newline at end of file