- Convert Cromat, Hanna Ships Navigator and Sakura-Tribe Elder to AFs.

This commit is contained in:
jendave
2011-08-06 13:16:02 +00:00
parent 82f95bcadd
commit 16fc37c3ee
4 changed files with 5 additions and 243 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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") {