diff --git a/res/card-pictures.txt b/res/card-pictures.txt index e6d38c6eb98..d02f942162a 100644 --- a/res/card-pictures.txt +++ b/res/card-pictures.txt @@ -18,6 +18,81 @@ forest.jpg http://resources.wizards.com/magic/cards/unh/en-us/card73946.jpg forest1.jpg http://gatherer.wizards.com/handlers/image.ashx?type=card&multiverseid=2748 forest2.jpg http://gatherer.wizards.com/handlers/image.ashx?type=card&multiverseid=587 forest3.jpg http://gatherer.wizards.com/handlers/image.ashx?type=card&multiverseid=586 +door_to_nothingness.jpg http://www.wizards.com/global/images/magic/general/door_to_nothingness.jpg +kazuul_warlord.jpg http://www.wizards.com/global/images/magic/general/kazuul_warlord.jpg +seascape_aerialist.jpg http://www.wizards.com/global/images/magic/general/seascape_aerialist.jpg +ondu_cleric.jpg http://www.wizards.com/global/images/magic/general/ondu_cleric.jpg +joraga_bard.jpg http://www.wizards.com/global/images/magic/general/ondu_cleric.jpg +highland_berserker.jpg http://www.wizards.com/global/images/magic/general/highland_berserker.jpg +cruel_edict.jpg http://www.wizards.com/global/images/magic/general/cruel_edict.jpg +imperial_edict.jpg http://www.wizards.com/global/images/magic/general/imperial_edict.jpg +chainers_edict.jpg http://www.wizards.com/global/images/magic/general/chainers_edict.jpg +diabolic_edict.jpg http://www.wizards.com/global/images/magic/general/diabolic_edict.jpg +innocent_blood.jpg http://www.wizards.com/global/images/magic/general/innocent_blood.jpg +transguild_courier.jpg http://www.wizards.com/global/images/magic/general/transguild_courier.jpg +oran_rief_the_vastwood.jpg http://www.wizards.com/global/images/magic/general/oran_rief_the_vastwood.jpg +academy_rector.jpg http://www.wizards.com/global/images/magic/general/academy_rector.jpg +acolyte_of_xathrid.jpg http://www.wizards.com/global/images/magic/general/acolyte_of_xathrid.jpg +ajani_vengeant.jpg http://www.wizards.com/global/images/magic/general/ajani_vengeant.jpg +armored_galleon.jpg http://www.magickartenmarkt.de/img/cards/Portal_Second_Age/armored_galleon.jpg +auramancer.jpg http://www.wizards.com/global/images/magic/general/auramancer.jpg +barren_glory.jpg http://www.wizards.com/global/images/magic/general/barren_glory.jpg +boggart_harbinger.jpg http://www.wizards.com/global/images/magic/general/boggart_harbinger.jpg +capashen_unicorn.jpg http://www.wizards.com/global/images/magic/general/capashen_unicorn.jpg +capture_of_jingzhou.jpg http://www.wizards.com/global/images/magic/general/capture_of_jingzhou.jpg +cartographer.jpg http://www.wizards.com/global/images/magic/general/cartographer.jpg +conquerors_pledge.jpg http://www.wizards.com/global/images/magic/general/conquerors_pledge.jpg +deep_sea_serpent.jpg http://www.magickartenmarkt.de/img/cards/Portal/deep_sea_serpent.jpg +dwarven_pony.jpg http://www.wizards.com/global/images/magic/general/dwarven_pony.jpg +elvish_harbinger.jpg http://www.wizards.com/global/images/magic/general/elvish_harbinger.jpg +ethereal_whiskergill.jpg http://www.wizards.com/global/images/magic/general/ethereal_whiskergill.jpg +faerie_harbinger.jpg http://www.wizards.com/global/images/magic/general/faerie_harbinger.jpg +femeref_enchantress.jpg http://www.wizards.com/global/images/magic/general/femeref_enchantress.jpg +flamekin_harbinger.jpg http://www.wizards.com/global/images/magic/general/flamekin_harbinger.jpg +fleeting_image.jpg http://www.wizards.com/global/images/magic/general/fleeting_image.jpg +giant_harbinger.jpg http://www.wizards.com/global/images/magic/general/giant_harbinger.jpg +goblin_charbelcher.jpg http://www.wizards.com/global/images/magic/general/goblin_charbelcher.jpg +goblin_chieftain.jpg http://www.wizards.com/global/images/magic/general/goblin_chieftain.jpg +jace_beleren.jpg http://www.wizards.com/global/images/magic/general/jace_beleren.jpg +kaerveks_spite.jpg http://www.wizards.com/global/images/magic/general/kaerveks_spite.jpg +kami_of_ancient_law.jpg http://www.wizards.com/global/images/magic/general/kami_of_ancient_law.jpg +manta_ray.jpg http://www.wizards.com/global/images/magic/general/manta_ray.jpg +meekstone.jpg http://www.wizards.com/global/images/magic/general/meekstone.jpg +merfolk_sovereign.jpg http://www.wizards.com/global/images/magic/general/merfolk_sovereign.jpg +merrow_harbinger.jpg http://www.wizards.com/global/images/magic/general/merrow_harbinger.jpg +pirate_ship.jpg http://www.wizards.com/global/images/magic/general/pirate_ship.jpg +qasali_pridemage.jpg http://www.wizards.com/global/images/magic/general/qasali_pridemage.jpg +red_cliffs_armada.jpg http://www.wizards.com/global/images/magic/general/red_cliffs_armada.jpg +ronom_unicorn.jpg http://www.wizards.com/global/images/magic/general/ronom_unicorn.jpg +scarland_thrinax.jpg http://www.wizards.com/global/images/magic/general/scarland_thrinax.jpg +sea_monster.jpg http://www.wizards.com/global/images/magic/general/sea_monster.jpg +sea_serpent.jpg http://www.wizards.com/global/images/magic/general/sea_serpent.jpg +seal_of_cleansing.jpg http://www.wizards.com/global/images/magic/general/seal_of_cleansing.jpg +seal_of_fire.jpg http://www.wizards.com/global/images/magic/general/seal_of_fire.jpg +seal_of_primordium.jpg http://www.wizards.com/global/images/magic/general/seal_of_primordium.jpg +seal_of_removal.jpg http://www.wizards.com/global/images/magic/general/seal_of_removal.jpg +serendib_sorcerer.jpg http://www.wizards.com/global/images/magic/general/serendib_sorcerer.jpg +silhana_ledgewalker.jpg http://www.wizards.com/global/images/magic/general/silhana_ledgewalker.jpg +slipstream_eel.jpg http://www.wizards.com/global/images/magic/general/slipstream_eel.jpg +slipstream_serpent.jpg http://www.wizards.com/global/images/magic/general/slipstream_serpent.jpg +spell_snare.jpg http://www.wizards.com/global/images/magic/general/spell_snare.jpg +staff_of_domination.jpg http://www.wizards.com/global/images/magic/general/staff_of_domination.jpg +steam_frigate.jpg http://www.wizards.com/global/images/magic/general/steam_frigate.jpg +sword_of_the_meek.jpg http://www.wizards.com/global/images/magic/general/sword_of_the_meek.jpg +temporal_manipulation.jpg http://www.wizards.com/global/images/magic/general/temporal_manipulation.jpg +thopter_foundry.jpg http://www.wizards.com/global/images/magic/general/thopter_foundry.jpg +timber_protector.jpg http://www.wizards.com/global/images/magic/general/timber_protector.jpg +time_walk.jpg http://www.wizards.com/global/images/magic/general/time_walk.jpg +tinker.jpg http://www.wizards.com/global/images/magic/general/tinker.jpg +treetop_bracers.jpg http://www.wizards.com/global/images/magic/general/treetop_bracers.jpg +treetop_rangers.jpg http://www.wizards.com/global/images/magic/general/treetop_rangers.jpg +treetop_scout.jpg http://www.wizards.com/global/images/magic/general/treetop_scout.jpg +umezawas_jitte.jpg http://www.wizards.com/global/images/magic/general/umezawas_jitte.jpg +vendilion_clique.jpg http://www.wizards.com/global/images/magic/general/vendilion_clique.jpg +viridian_zealot.jpg http://www.wizards.com/global/images/magic/general/viridian_zealot.jpg +vodalian_knights.jpg http://www.wizards.com/global/images/magic/general/vodalian_knights.jpg +wu_warship.jpg http://www.wizards.com/global/images/magic/general/wu_warship.jpg +zhou_yu_chief_commander.jpg http://www.wizards.com/global/images/magic/general/zhou_yu_chief_commander.jpg boreal_griffin.jpg http://www.wizards.com/global/images/magic/general/boreal_griffin.jpg frost_raptor.jpg http://www.wizards.com/global/images/magic/general/frost_raptor.jpg goblin_rimerunner.jpg http://www.wizards.com/global/images/magic/general/goblin_rimerunner.jpg diff --git a/res/cards.txt b/res/cards.txt index b26f07947a6..4dafccf888a 100644 --- a/res/cards.txt +++ b/res/cards.txt @@ -1,7 +1,20 @@ +Xiahou Dun, the One-Eyed +2 B B +Legendary Creature Human Soldier +no text +3/2 +Horsemanship + +Loyal Retainers +2 W +Creature Human Advisor +no text +1/1 + Kor Cartographer 3 W Creature Kor Scout -When Kor Cartographer enters the field, you may search your library for a plains card, put it onto the battlefield tapped, then shuffle your library. +When Kor Cartographer enters the battlefield, you may search your library for a plains card, put it onto the battlefield tapped, then shuffle your library. 2/2 Celestial Purge @@ -126,7 +139,7 @@ Umezawa's Jitte Artifact Equipment Whenever equipped creature deals combat damage, put two charge counters on Umezawa's Jitte. -Vendillion Clique +Vendilion Clique 1 U U Legendary Creature Faerie Wizard When Vendilion Clique enters the battlefield, look at target player's hand. You may choose a nonland card from it. If you do, that player reveals the chosen card, puts it on the bottom of his or her library, then draws a card. @@ -294,7 +307,7 @@ no text This creature can't attack unless defending player controls an Island When you control no Islands, sacrifice this creature -Zhou You, Chief Commander +Zhou Yu, Chief Commander 5 U U Legendary Creature Human Soldier no text diff --git a/res/main.properties b/res/main.properties index d88f0e0d9bd..72112e17c7e 100644 --- a/res/main.properties +++ b/res/main.properties @@ -1,6 +1,6 @@ program/mail=mtgerror@yahoo.com program/forum=http://www.slightlymagic.net/forum/viewforum.php?f=26 -program/version=MTG Forge -- official beta: 09/11/02, SVN revision: 100 +program/version=MTG Forge -- official beta: 09/11/25, SVN revision: 101 tokens--file=AllTokens.txt diff --git a/res/quest/questData b/res/quest/questData index d102644935b..4a0a7751bf8 100644 Binary files a/res/quest/questData and b/res/quest/questData differ diff --git a/src/forge/CardFactory.java b/src/forge/CardFactory.java index 23a0b2686d5..996dd8ab69e 100644 --- a/src/forge/CardFactory.java +++ b/src/forge/CardFactory.java @@ -16723,6 +16723,7 @@ return land.size() > 1 && CardFactoryUtil.AI_isMainPhase(); AllZone.GameAction.getPlayerLife(getTargetPlayer()).subtractLife(damage); } }; + ability.setDescription("3, tap: Reveal cards from the top of your library until you reveal a land card. Goblin Charbelcher deals damage equal to the number of nonland cards revealed this way to target creature or player. If the revealed land card was a Mountain, Goblin Charbelcher deals double that damage instead. Put the revealed cards on the bottom of your library in any order."); ability.setChooseTargetAI(CardFactoryUtil.AI_targetHuman()); ability.setBeforePayMana(CardFactoryUtil.input_targetCreaturePlayer(ability, true)); card.addSpellAbility(ability); diff --git a/src/forge/CardFactory_Creatures.java b/src/forge/CardFactory_Creatures.java index 7c7b7a3928f..6d04cfc44cf 100644 --- a/src/forge/CardFactory_Creatures.java +++ b/src/forge/CardFactory_Creatures.java @@ -16899,6 +16899,174 @@ public class CardFactory_Creatures { }}; card.addComesIntoPlayCommand(cip); }//*************** END ************ END ************************** + + + //*************** START *********** START ************************** + else if (cardName.equals("Loyal Retainers")) + { + final Ability ability = new Ability(card, "0") + { + + public void resolve() { + if (AllZone.GameAction.isCardInPlay(card)) { + AllZone.GameAction.sacrifice(card); + + PlayerZone play = AllZone.getZone(Constant.Zone.Play, card.getController()); + PlayerZone grave = AllZone.getZone(Constant.Zone.Graveyard, card.getController()); + CardList list = new CardList(grave.getCards()); + list = list.filter(new CardListFilter() + { + public boolean addCard(Card c) + { + return c.isCreature() && c.getType().contains("Legendary"); + } + }); + + if (list.size() >0) { + if (card.getController().equals(Constant.Player.Human)) + { + Object o = AllZone.Display.getChoiceOptional("Select Legendary creature", list.toArray()); + if (o!=null) + { + Card c = (Card)o; + grave.remove(c); + play.add(c); + } + + } + else //computer + { + Card c = CardFactoryUtil.AI_getBestCreature(list); + grave.remove(c); + play.add(c); + } + } + } + } + + public boolean canPlay() + { + PlayerZone grave = AllZone.getZone(Constant.Zone.Graveyard, card.getController()); + CardList list = new CardList(grave.getCards()); + list = list.filter(new CardListFilter() + { + public boolean addCard(Card c) + { + return c.isCreature() && c.getType().contains("Legendary"); + } + }); + + SpellAbility sa; + for (int i=0; i 0 && + AllZone.Phase.getPhase().equals(Constant.Phase.Main1) && + AllZone.Phase.getActivePlayer().equals(card.getController()); + } + + public boolean canPlayAI() + { + PlayerZone grave = AllZone.getZone(Constant.Zone.Graveyard, card.getController()); + CardList list = new CardList(grave.getCards()); + list = list.filter(new CardListFilter() + { + public boolean addCard(Card c) + { + return c.isCreature() && c.getType().contains("Legendary") && CardUtil.getConvertedManaCost(c.getManaCost()) > 4; + } + }); + return list.size()>0; + } + + + }; + ability.setDescription("Sacrifice Loyal Retainers: Return target legendary creature card from your graveyard to the battlefield. Activate this ability only during your turn, before attackers are declared."); + ability.setStackDescription(cardName + " - Return target legendary creature card from your graveyard to the battlefield."); + + card.addSpellAbility(ability); + }//*************** END ************ END ************************** + + + //*************** START *********** START ************************** + else if (cardName.equals("Xiahou Dun, the One-Eyed")) + { + final Ability ability = new Ability(card, "0") + { + + public void resolve() { + if (AllZone.GameAction.isCardInPlay(card)) { + AllZone.GameAction.sacrifice(card); + + PlayerZone hand = AllZone.getZone(Constant.Zone.Hand, card.getController()); + PlayerZone grave = AllZone.getZone(Constant.Zone.Graveyard, card.getController()); + CardList list = new CardList(grave.getCards()); + list = list.filter(new CardListFilter() + { + public boolean addCard(Card c) + { + return CardUtil.getColors(c).contains(Constant.Color.Black); + } + }); + + if (list.size() >0) { + if (card.getController().equals(Constant.Player.Human)) + { + Object o = AllZone.Display.getChoiceOptional("Select black card", list.toArray()); + if (o!=null) + { + Card c = (Card)o; + grave.remove(c); + hand.add(c); + } + + } + else //computer + { + //TODO + } + } + } + } + public boolean canPlay() + { + PlayerZone grave = AllZone.getZone(Constant.Zone.Graveyard, card.getController()); + CardList list = new CardList(grave.getCards()); + list = list.filter(new CardListFilter() + { + public boolean addCard(Card c) + { + return CardUtil.getColors(c).contains(Constant.Color.Black); + } + }); + + SpellAbility sa; + for (int i=0; i 0 && + AllZone.Phase.getPhase().equals(Constant.Phase.Main1) && + AllZone.Phase.getActivePlayer().equals(card.getController()); + } + + public boolean canPlayAI() + { + return false; + } + }; + ability.setDescription("Sacrifice Xiahou Dun, the One-Eyed: Return target black card from your graveyard to your hand. Activate this ability only during your turn, before attackers are declared."); + ability.setStackDescription(cardName + " - Return target black card from your graveyard to your hand."); + + card.addSpellAbility(ability); + }//*************** END ************ END ************************** // Cards with Cycling abilities // -1 means keyword "Cycling" not found diff --git a/src/forge/ComputerAI_General.java b/src/forge/ComputerAI_General.java index ec5ab4076a1..b3bcaf889a9 100644 --- a/src/forge/ComputerAI_General.java +++ b/src/forge/ComputerAI_General.java @@ -8,6 +8,7 @@ import java.util.TreeSet; public class ComputerAI_General implements Computer { //private boolean playLand = true; + //private int numberPlayLand = 1; private int numberPlayLand = CardFactoryUtil.getCanPlayNumberOfLands(Constant.Player.Computer); private Collection playMain1Cards;