diff --git a/res/cardsfolder/cromat.txt b/res/cardsfolder/cromat.txt index 9a360f8f4db..1b13e55b9cc 100644 --- a/res/cardsfolder/cromat.txt +++ b/res/cardsfolder/cromat.txt @@ -6,7 +6,8 @@ PT:5/5 A:AB$Pump | Cost$ U R | KW$ Flying | SpellDescription$ Cromat gains flying until end of turn. A:AB$Regenerate | Cost$ B G | SpellDescription$ Regenerate CARDNAME. A:AB$Pump | Cost$ R W | NumAtt$ +1 | NumDef$ +1 | SpellDescription$ Cromat gets +1/+1 until end of turn. +A:AB$Bounce | Cost$ G U | Destination$ TopOfLibrary | SpellDescription$ Put Cromat on top of its owner's library. SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/cromat.jpg SetInfo:APC|Rare|http://magiccards.info/scans/en/ap/94.jpg -End +End \ No newline at end of file diff --git a/res/cardsfolder/hanna_ships_navigator.txt b/res/cardsfolder/hanna_ships_navigator.txt index 61605e048a2..d9067c11554 100644 --- a/res/cardsfolder/hanna_ships_navigator.txt +++ b/res/cardsfolder/hanna_ships_navigator.txt @@ -1,8 +1,9 @@ Name:Hanna, Ship's Navigator -ManaCost:1 U W +ManaCost:1 W U Types:Legendary Creature Human Artificer Text:no text PT:1/2 +A:AB$Retrieve | Cost$1 W U T | TgtPrompt$ Choose target artifact or enchantment in your graveyard | ValidTgts$ Artifact,Enchantment | Destination$ Hand | SpellDescription$ Return target artifact or enchantment card from your graveyard to your hand. SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/hanna_ships_navigator.jpg SetInfo:INV|Rare|http://magiccards.info/scans/en/in/249.jpg diff --git a/res/cardsfolder/sakura_tribe_elder.txt b/res/cardsfolder/sakura_tribe_elder.txt index e74e24440a6..f7774cff582 100644 --- a/res/cardsfolder/sakura_tribe_elder.txt +++ b/res/cardsfolder/sakura_tribe_elder.txt @@ -3,6 +3,7 @@ ManaCost:1 G Types:Creature Snake Shaman Text:no text PT:1/1 +A:AB$Fetch | Cost$ Sac<1/CARDNAME> | Destination$ Battlefield | Tapped$ True | FetchType$ Land.Basic | FetchNum$ 1 | SpellDescription$ Search your library for a basic land card and put it onto the battlefield tapped. Then shuffle your library. SVar:Rarity:Common SVar:Picture:http://resources.wizards.com/magic/cards/chk/en-us/card50510.jpg SetInfo:CHK|Common|http://magiccards.info/scans/en/chk/239.jpg diff --git a/src/forge/CardFactory_Creatures.java b/src/forge/CardFactory_Creatures.java index f8d487aace9..b69fe07be78 100644 --- a/src/forge/CardFactory_Creatures.java +++ b/src/forge/CardFactory_Creatures.java @@ -7558,107 +7558,6 @@ public class CardFactory_Creatures { ability.setBeforePayMana(runtime); }//*************** END ************ END ************************** - - - //*************** START *********** START ************************** - else if(cardName.equals("Sakura-Tribe Elder")) { - Ability_Cost abCost = new Ability_Cost("Sac<1/CARDNAME>", cardName, true); - - //tap sacrifice - final SpellAbility ability = new Ability_Activated(card, abCost, null) { - private static final long serialVersionUID = 1135117614484689768L; - - @Override - public boolean canPlayAI() { - //sacrifice Sakura-Tribe Elder if Human has any creatures - CardList creature = new CardList(AllZone.Human_Play.getCards()); - creature = creature.getType("Creature"); - PlayerZone library = AllZone.getZone(Constant.Zone.Library, card.getController()); - CardList basic = new CardList(library.getCards()); - basic = basic.getType("Basic"); - return creature.size() > 0 && basic.size() != 0; - } - - @Override - public void chooseTargetAI() { - //AllZone.GameAction.sacrifice(card); - } - - @Override - public boolean canPlay() { - return super.canPlay(); - }//canPlay() - - @Override - public void resolve() { - if(card.getController().equals(AllZone.HumanPlayer)) humanResolve(); - else computerResolve(); - } - - public void computerResolve() { - CardList play = new CardList(AllZone.Computer_Play.getCards()); - play = play.getType("Basic"); - - CardList library = new CardList(AllZone.Computer_Library.getCards()); - library = library.getType("Basic"); - - //this shouldn't happen, but it is defensive programming, haha - if(library.isEmpty()) return; - - Card land = null; - - //try to find a basic land that isn't in play - for(int i = 0; i < library.size(); i++) - if(!play.containsName(library.get(i))) { - land = library.get(i); - break; - } - - //if not found - //library will have at least 1 basic land because canPlay() checks that - if(land == null) land = library.get(0); - - land.tap(); - AllZone.Computer_Library.remove(land); - AllZone.Computer_Play.add(land); - - AllZone.ComputerPlayer.shuffle(); - }//computerResolve() - - public void humanResolve() { - PlayerZone library = AllZone.getZone(Constant.Zone.Library, card.getController()); - PlayerZone play = AllZone.getZone(Constant.Zone.Play, card.getController()); - - CardList basicLand = new CardList(library.getCards()); - basicLand = basicLand.getType("Basic"); - if(basicLand.isEmpty()) return; - - Object o = AllZone.Display.getChoiceOptional("Choose a basic land", basicLand.toArray()); - if(o != null) { - Card land = (Card) o; - land.tap(); - - library.remove(land); - play.add(land); - } - - card.getController().shuffle(); - }//resolve() - };//SpellAbility - - card.addSpellAbility(ability); - - StringBuilder sbDesc = new StringBuilder(); - sbDesc.append("Sacrifice Sakura-Tribe Elder: Search your library for a basic "); - sbDesc.append("land card, put that card into play tapped, then shuffle your library."); - ability.setDescription(sbDesc.toString()); - - StringBuilder sbStack = new StringBuilder(); - sbStack.append("Search your library for a basic land card, put that "); - sbStack.append("card into play tapped, then shuffle your library."); - ability.setStackDescription(sbStack.toString()); - }//*************** END ************ END ************************** - //*************** START *********** START ************************** else if(cardName.equals("Transluminant")) { @@ -10217,149 +10116,9 @@ public class CardFactory_Creatures { ability.setAfterPayMana(target); }//*************** END ************ END ************************** - - - //*************** START *********** START ************************** - else if(cardName.equals("Hanna, Ship's Navigator")) { - final Ability_Tap ability = new Ability_Tap(card, "1 U W") { - private static final long serialVersionUID = 7959233413572648987L; - - @Override - public void resolve() { - Player player = card.getController(); - if(player.equals(AllZone.HumanPlayer)) humanResolve(); - else computerResolve(); - }//resolve() - - public void humanResolve() { - CardList cards = new CardList(AllZone.Human_Graveyard.getCards()); - //legends = legends.getType().contains("Legendary"); - CardList list = new CardList(); - - for(int i = 0; i < cards.size(); i++) { - //System.out.println("type: " +cards.get(i).getType()); - if(cards.get(i).getType().contains("Artifact") - || cards.get(i).getType().contains("Enchantment")) { - //System.out.println(cards.get(i).getName()); - Card c = cards.get(i); - list.add(c); - - } - } - - if(list.size() != 0) { - Object check = AllZone.Display.getChoiceOptional("Select Artifact or Enchantment", - list.toArray()); - if(check != null) { - PlayerZone hand = AllZone.getZone(Constant.Zone.Hand, card.getController()); - AllZone.GameAction.moveTo(hand, (Card) check); - } - } - } - - public void computerResolve() { - Card[] grave = AllZone.Computer_Graveyard.getCards(); - CardList list = new CardList(grave); - CardList artenchants = new CardList(); - //list = list.getType("Creature"); - - for(int i = 0; i < list.size(); i++) { - if(list.get(i).getType().contains("Artifact") - || list.get(i).getType().contains("Enchantment")) { - Card k = list.get(i); - artenchants.add(k); - } - - } - - //pick best artifact / enchantment - if(artenchants.size() != 0) { - Card c = CardFactoryUtil.AI_getBestArtifact(list); - if(c == null) c = CardFactoryUtil.AI_getBestEnchantment(list, card, true); - if(c == null) c = grave[0]; - Log.debug("Hanna, Ship's Navigator", "computer picked - " + c); - AllZone.Computer_Graveyard.remove(c); - AllZone.Computer_Hand.add(c); - } - }//computerResolve - - @Override - public boolean canPlay() { - Player controller = card.getController(); - - PlayerZone grave = AllZone.getZone(Constant.Zone.Graveyard, controller); - CardList list = new CardList(grave.getCards()); - CardList cards = new CardList(); - - for(int i = 0; i < list.size(); i++) { - if(list.get(i).getType().contains("Artifact") - || list.get(i).getType().contains("Enchantment")) { - cards.add(list.get(i)); - } - } - - //System.out.println("cards.size(): " + cards.size()); - //hasSickness is a little hack, I'm not sure about the setBeforeMana input - if(cards.size() > 0 && AllZone.GameAction.isCardInPlay(card) && !card.hasSickness() - && card.isUntapped() && super.canPlay()) return true; - else return false; - } - - };//SpellAbility - //card.addSpellAbility(ability); - ability.setDescription("1 U W, tap: Return target artifact or enchantment card from your graveyard to your hand."); - ability.setBeforePayMana(new Input_PayManaCost(ability)); - ability.setStackDescription("Hanna, Ship's Navigator - Returns an artifact or enchantment card from graveyard to hand."); - card.addSpellAbility(ability); - - }//*************** END ************ END ************************** - - //*************** START *********** START ************************** else if(cardName.equals("Cromat")) { - - //LibBounce Ability - final Ability a1 = new Ability(card, "G U") { - @Override - public boolean canPlayAI() { - return false; - } - - @Override - public void resolve() { - if(AllZone.GameAction.isCardInPlay(card)) { - card.setBaseAttack(5); - card.setBaseDefense(5); - - card.clearAssignedDamage(); - card.setDamage(0); - card.untap(); - AllZone.getZone(card).remove(card); - - //put card on top of library - PlayerZone library = AllZone.getZone(Constant.Zone.Library, card.getOwner()); - library.add(card, 0); - } - }//resolve() - };//SpellAbility - - Input runtime1 = new Input() { - private static final long serialVersionUID = 1469011418219527227L; - - @Override - public void showMessage() { - StringBuilder sb = new StringBuilder(); - sb.append("Put ").append(card).append(" on top of its owner's library"); - a1.setStackDescription(sb.toString()); - - stopSetNext(new Input_PayManaCost(a1)); - } - }; - a1.setDescription("G U: Put Cromat on top of its owner's library."); - a1.setStackDescription("Put Cromat on top of its owner's library."); - card.addSpellAbility(a1); - a1.setBeforePayMana(runtime1); //Kill ability final Ability a2 = new Ability(card, "W B") {