mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 20:58:03 +00:00
- Convert Cromat, Hanna Ships Navigator and Sakura-Tribe Elder to AFs.
This commit is contained in:
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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") {
|
||||
|
||||
Reference in New Issue
Block a user