convert Jenara, Asura of War and Nullmage Shepherd to AF

This commit is contained in:
jendave
2011-08-06 13:29:38 +00:00
parent 74fd95e8f4
commit 07c864032e
3 changed files with 46 additions and 518 deletions

View File

@@ -4,7 +4,8 @@ Types:Legendary Creature Angel
Text:no text
PT:3/3
K:Flying
SVar:Rarity:Rare
A:AB$PutCounter | Cost$ 1 W |CounterType$ P1P1 | CounterNum$ 1 | SpellDescription$ Put a +1/+1 counter on CARDNAME.
SVar:Rarity:Mythic
SVar:Picture:http://www.wizards.com/global/images/magic/general/jenara_asura_of_war.jpg
SetInfo:ARB|Mythic|http://magiccards.info/scans/en/arb/128.jpg
End

View File

@@ -3,6 +3,7 @@ ManaCost:3 G
Types:Creature Elf Shaman
Text:no text
PT:2/4
A:SP$Destroy | Cost$ tapXType<4/Creature> | ValidTgts$ Artifact,Enchantment | TgtPrompt$ Select target artifact or enchantment | SpellDescription$ Destroy target artifact or enchantment.
SVar:Rarity:Uncommon
SVar:Picture:http://www.wizards.com/global/images/magic/general/nullmage_shepherd.jpg
SetInfo:RAV|Uncommon|http://magiccards.info/scans/en/rav/174.jpg

View File

@@ -9287,98 +9287,6 @@ public class CardFactory_Creatures {
});
}//*************** END ************ END **************************
/*
//*************** START *********** START **************************
else if(cardName.equals("Elvish Farmer") || cardName.equals("Mycologist")) {
Command intoPlay = new Command() {
private static final long serialVersionUID = 882942955555047018L;
public boolean firstTime = true;
public void execute() {
if(firstTime) {
card.setCounter(Counters.SPORE, 0, false);
}
firstTime = false;
}
};
card.addComesIntoPlayCommand(intoPlay);
final SpellAbility a2 = new Ability(card, "0") {
@Override
public void chooseTargetAI() {
PlayerZone play = AllZone.getZone(Constant.Zone.Play, AllZone.ComputerPlayer);
CardList saps = new CardList(play.getCards());
saps = saps.filter(new CardListFilter() {
public boolean addCard(Card c) {
if((c.getType().contains("Saproling") || c.getKeyword().contains("Changeling"))
&& AllZone.GameAction.isCardInPlay(c)) return true;
return false;
}
});
if(saps.size() != 0) setTargetCard(saps.getCard(0));
}
@Override
public void resolve() {
//get all saprolings:
Card c = getTargetCard();
if(c == null) return;
if(!AllZone.GameAction.isCardInPlay(c)) return;
if(AllZone.GameAction.isCardInPlay(c)) {
AllZone.GameAction.sacrifice(c);
c.getController().gainLife(2, card);
}
}//resolve
@Override
public boolean canPlayAI() {
PlayerZone play = AllZone.getZone(Constant.Zone.Play, AllZone.ComputerPlayer);
CardList saps = new CardList(play.getCards());
saps = saps.filter(new CardListFilter() {
public boolean addCard(Card c) {
if(c.getType().contains("Saproling") || c.getKeyword().contains("Changeling")
&& AllZone.GameAction.isCardInPlay(c)) return true;
return false;
}
});
if(AllZone.ComputerPlayer.getLife() < 6 && saps.size() > 0) return true;
else return false;
}
};//SpellAbility
Input runtime = new Input() {
private static final long serialVersionUID = -4803541385354247499L;
@Override
public void showMessage() {
CardList saps = new CardList(
AllZone.getZone(Constant.Zone.Play, card.getController()).getCards());
saps = saps.getType("Saproling");
stopSetNext(CardFactoryUtil.input_targetSpecific(a2, saps, "Select a Saproling to sacrifice.",
false, false));
}
};
card.addSpellAbility(a2);
a2.setDescription("Sacrifice a Saproling: You gain 2 life.");
StringBuilder sb = new StringBuilder();
sb.append(card.getController()).append(" gains 2 life.");
a2.setStackDescription(sb.toString());
a2.setBeforePayMana(runtime);
}//*************** END ************ END **************************
*/
//*************** START *********** START **************************
else if(cardName.equals("Pallid Mycoderm")) {
@@ -9399,44 +9307,39 @@ public class CardFactory_Creatures {
card.addComesIntoPlayCommand(intoPlay);
final SpellAbility a2 = new Ability(card, "0") {
final Command eot1 = new Command() {
private static final long serialVersionUID = -4485431571276851181L;
public void execute() {
Player player = card.getController();
PlayerZone play = AllZone.getZone(Constant.Zone.Battlefield, player);
CardList creats = new CardList(play.getCards());
creats = creats.getType("Creature");
for(int i = 0; i < creats.size(); i++) {
Card creat = creats.get(i);
if(creat.getType().contains("Fungus")
|| creat.getType().contains("Saproling")
|| creat.getKeyword().contains("Changeling")) {
creat.addTempAttackBoost(-1);
creat.addTempDefenseBoost(-1);
}
}
}
};
final Command eot1 = new Command() {
private static final long serialVersionUID = -4485431571276851181L;
public void execute() {
Player player = card.getController();
PlayerZone play = AllZone.getZone(Constant.Zone.Battlefield, player);
CardList creats = new CardList(play.getCards());
creats = creats.getType("Creature");
for(int i = 0; i < creats.size(); i++) {
Card creat = creats.get(i);
if(creat.getType().contains("Fungus")
|| creat.getType().contains("Saproling")
|| creat.getKeyword().contains("Changeling")) {
creat.addTempAttackBoost(-1);
creat.addTempDefenseBoost(-1);
}
}
}
};
@Override
public void resolve() {
//get all player controls saprolings:
Player player = card.getController();
PlayerZone play = AllZone.getZone(Constant.Zone.Battlefield, player);
CardList creats = new CardList(play.getCards());
creats = creats.getType("Creature");
CardList creats = AllZoneUtil.getCreaturesInPlay(player);
Card c = getTargetCard();
if(AllZone.GameAction.isCardInPlay(c)) {
//AllZone.getZone(c).remove(c);
AllZone.GameAction.sacrifice(c);
@@ -9480,75 +9383,9 @@ public class CardFactory_Creatures {
a2.setBeforePayMana(runtime);
}//*************** END ************ END **************************
/*
//*************** START *********** START **************************
else if(cardName.equals("Psychotrope Thallid")) {
Command intoPlay = new Command() {
private static final long serialVersionUID = 8020106056714209199L;
public boolean firstTime = true;
public void execute() {
if(firstTime) {
card.setCounter(Counters.SPORE, 0, false);
}
firstTime = false;
}
};
card.addComesIntoPlayCommand(intoPlay);
final SpellAbility a2 = new Ability(card, "1") {
@Override
public void resolve() {
Card c = getTargetCard();
if(AllZone.GameAction.isCardInPlay(c)) {
//AllZone.getZone(c).remove(c);
AllZone.GameAction.sacrifice(c);
card.getController().drawCard();
}
}//resolve
@Override
public boolean canPlayAI() {
//TODO: make AI able to use this
return false;
}
};//SpellAbility
Input runtime = new Input() {
private static final long serialVersionUID = -6388866343458002392L;
@Override
public void showMessage() {
CardList saps = new CardList(
AllZone.getZone(Constant.Zone.Play, card.getController()).getCards());
saps = saps.getType("Saproling");
stopSetNext(CardFactoryUtil.input_targetSpecific(a2, saps, "Select a Saproling to sacrifice.",
false, false));
}
};
card.addSpellAbility(a2);
a2.setDescription("1, Sacrifice a Saproling: You draw a card.");
StringBuilder sb = new StringBuilder();
sb.append(card.getController()).append(" draws a card.");
a2.setStackDescription(sb.toString());
a2.setBeforePayMana(runtime);
}//*************** END ************ END **************************
*/
//*************** START *********** START **************************
else if(cardName.equals("Rootwater Thief")) {
//final String player = card.getController();
//final String opponent = AllZone.GameAction.getOpponent(player);
final Ability ability2 = new Ability(card, "2") {
@Override
public void resolve() {
@@ -9578,7 +9415,6 @@ public class CardFactory_Creatures {
return false;
}
};// ability2
//card.clearSpellAbility();
card.addSpellAbility(ability2);
StringBuilder sb2 = new StringBuilder();
@@ -10084,27 +9920,6 @@ public class CardFactory_Creatures {
a2.setDescription("W B: Destroy target creature blocking or blocked by Cromat.");
}//*************** END ************ END **************************
/*
//*************** START *********** START **************************
else if(cardName.equals("Energizer")) {
Ability_Tap ability = new Ability_Tap(card, "2") {
private static final long serialVersionUID = 6444406158364728638L;
@Override
public void resolve() {
card.addCounter(Counters.P1P1, 1);
}
@Override
public boolean canPlayAI() {
return (true);
}
};
ability.setDescription("2, tap: Put a +1/+1 counter on Energizer.");
ability.setStackDescription("Put a +1/+1 counter on target Energizer.");
card.addSpellAbility(ability);
}//*************** END ************ END **************************
*/
//*************** START *********** START **************************
else if(cardName.equals("Sphinx of Jwar Isle")) {
@@ -10562,32 +10377,6 @@ public class CardFactory_Creatures {
}//*************** END ************ END **************************
//*************** START *********** START **************************
else if (cardName.equals("Crovax, Ascendant Hero"))
{
final SpellAbility a1 = new Ability(card, "0") {
@Override
public void resolve() {
card.getController().loseLife(2,card);
PlayerZone hand = AllZone.getZone(Constant.Zone.Hand, card.getOwner());
if(card.isToken()) AllZone.getZone(card).remove(card);
else AllZone.GameAction.moveTo(hand, card);
}
@Override
public boolean canPlayAI() {
return false;
}
};
card.addSpellAbility(a1);
a1.setDescription("Pay 2 life: Return Crovax, Ascendant Hero to its owner's hand.");
StringBuilder sb1 = new StringBuilder();
sb1.append(card.getController()).append(" pays 2 life and returns Crovax, Ascendant Hero back to owner's hand.");
a1.setStackDescription(sb1.toString());
}//*************** END ************ END **************************
//*************** START *********** START **************************
else if(cardName.equals("Cavern Harpy")) {
@@ -10674,73 +10463,31 @@ public class CardFactory_Creatures {
//*************** START *********** START **************************
else if(cardName.equals("Nemata, Grove Guardian")) {
/*
final SpellAbility a1 = new Ability(card, "2 G") {
@Override
public boolean canPlayAI() {
return MyRandom.random.nextBoolean();
}
@Override
public boolean canPlay() {
SpellAbility sa;
//this is a hack, check the stack to see if this card has an ability on the stack
//if so, we can't use the ability
for(int i = 0; i < AllZone.Stack.size(); i++) {
sa = AllZone.Stack.peek(i);
if(sa.getSourceCard().equals(card)) return false;
}
return AllZone.GameAction.isCardInPlay(card) && super.canPlay();
}
@Override
public void resolve() {
makeToken();
}
void makeToken() {
CardFactoryUtil.makeToken("Saproling", "G 1 1 Saproling", card, "G", new String[] {
"Creature", "Saproling"}, 1, 1, new String[] {""});
}//makeToken()
};//SpellAbility
*/
final SpellAbility a2 = new Ability(card, "0") {
final Command eot1 = new Command() {
private static final long serialVersionUID = -389286901477839863L;
public void execute() {
CardList saps = new CardList();
saps.addAll(AllZone.Human_Battlefield.getCards());
saps.addAll(AllZone.Computer_Battlefield.getCards());
saps = saps.getType("Saproling");
for(int i = 0; i < saps.size(); i++) {
Card sap = saps.get(i);
sap.addTempAttackBoost(-1);
sap.addTempDefenseBoost(-1);
}
}
};
final SpellAbility a2 = new Ability(card, "0") {
final Command eot1 = new Command() {
private static final long serialVersionUID = -389286901477839863L;
public void execute() {
CardList saps = AllZoneUtil.getTypeInPlay("Saproling");
for(int i = 0; i < saps.size(); i++) {
Card sap = saps.get(i);
sap.addTempAttackBoost(-1);
sap.addTempDefenseBoost(-1);
}
}
};
@Override
public void resolve() {
//get all saprolings:
CardList saps = new CardList();
saps.addAll(AllZone.Human_Battlefield.getCards());
saps.addAll(AllZone.Computer_Battlefield.getCards());
saps = saps.getType("Saproling");
CardList saps = AllZoneUtil.getTypeInPlay("Saproling");
Card c = getTargetCard();
if(AllZone.GameAction.isCardInPlay(c)) {
//AllZone.getZone(c).remove(c);
AllZone.GameAction.sacrifice(c);
for(int i = 0; i < saps.size(); i++) {
@@ -10810,11 +10557,7 @@ public class CardFactory_Creatures {
}
};
CardList saps = new CardList();
saps.addAll(AllZone.Human_Battlefield.getCards());
saps.addAll(AllZone.Computer_Battlefield.getCards());
saps = saps.getType("Saproling");
CardList saps = AllZoneUtil.getTypeInPlay("Saproling");
for(int i = 0; i < saps.size(); i++) {
Card sap = saps.get(i);
@@ -10838,10 +10581,6 @@ public class CardFactory_Creatures {
return list.size() > 1 && super.canPlay();
}
};
//a1.setDescription("2G: Put a 1/1 green Saproling creature token into play.");
//a1.setStackDescription("Put a 1/1 Saproling into play.");
//card.addSpellAbility(a1);
//a1.setBeforePayMana(new Input_PayManaCost(a1));
card.addSpellAbility(a2);
a2.setDescription("Sacrifice a Saproling: Saproling creatures get +1/+1 until end of turn");
@@ -11349,12 +11088,8 @@ public class CardFactory_Creatures {
@Override
public boolean canPlay() {
Player controller = card.getController();
PlayerZone play = AllZone.getZone(Constant.Zone.Battlefield, controller);
CardList creats = new CardList();
creats.addAll(play.getCards());
creats = creats.getType("Creature");
CardList creats = AllZoneUtil.getCreaturesInPlay(controller);
creats = creats.filter(new CardListFilter() {
public boolean addCard(Card c) {
return c.isUntapped() && !c.equals(card);
@@ -11384,196 +11119,6 @@ public class CardFactory_Creatures {
card.addSpellAbility(bounce);
}//*************** END ************ END **************************
//*************** START *********** START **************************
else if(cardName.equals("Nullmage Shepherd")) {
final SpellAbility a1 = new Ability(card, "0") {
@Override
public void chooseTargetAI() {
if(getEnchantment().size() != 0) {
Card bestEnchantment = CardFactoryUtil.AI_getBestEnchantment(getEnchantment(), card, true);
if(getArtifact().size() != 0) {
Card bestArtifact = CardFactoryUtil.AI_getBestArtifact(getArtifact());
if(CardUtil.getConvertedManaCost(bestArtifact.getManaCost()) > CardUtil.getConvertedManaCost(bestEnchantment.getManaCost())) {
setTargetCard(bestArtifact);
} else {
setTargetCard(bestEnchantment);
}
} else {
setTargetCard(bestEnchantment);
}
} else if(getArtifact().size() != 0) {
Card bestArtifact = CardFactoryUtil.AI_getBestArtifact(getArtifact());
setTargetCard(bestArtifact);
}
}
CardList getEnchantment() {
CardList list = CardFactoryUtil.AI_getHumanEnchantment(card, true);
return list;
}//getEnchantment()
CardList getArtifact() {
CardList list = CardFactoryUtil.AI_getHumanArtifact(card, true);
return list;
}//getArtifact()
@Override
public boolean canPlayAI() {
PlayerZone play = AllZone.getZone(Constant.Zone.Battlefield, AllZone.HumanPlayer);
CardList cards = new CardList();
cards.addAll(play.getCards());
cards = cards.filter(new CardListFilter() {
public boolean addCard(Card c) {
return (c.isArtifact() || c.isEnchantment()) && CardFactoryUtil.canTarget(card, c);
}
});
return cards.size() > 0;
}
@Override
public boolean canPlay() {
SpellAbility sa;
for(int i = 0; i < AllZone.Stack.size(); i++) {
sa = AllZone.Stack.peek(i);
if(sa.getSourceCard().equals(card)) return false;
}
Player controller = card.getController();
PlayerZone play = AllZone.getZone(Constant.Zone.Battlefield, controller);
CardList creats = new CardList();
creats.addAll(play.getCards());
creats = creats.getType("Creature");
creats = creats.filter(new CardListFilter() {
public boolean addCard(Card c) {
return c.isUntapped();
}
});
if(creats.size() > 3 && AllZone.GameAction.isCardInPlay(card) && super.canPlay()) return true;
else return false;
}
@Override
public void resolve() {
if(getTargetCard() == null) return;
Player player = card.getController();
if(player.equals(AllZone.HumanPlayer)) humanResolve();
else computerResolve();
}
public void humanResolve() {
Player controller = card.getController();
PlayerZone play = AllZone.getZone(Constant.Zone.Battlefield, controller);
CardList creats = new CardList();
creats.addAll(play.getCards());
creats = creats.getType("Creature");
creats = creats.filter(new CardListFilter() {
public boolean addCard(Card c) {
return c.isUntapped();
}
});
CardList tappedCreats = new CardList();
Object o = AllZone.Display.getChoice("Pick first creature to tap", creats.toArray());
if(o != null) {
Card c1 = (Card) o;
creats.remove(c1);
tappedCreats.add(c1);
} else return;
o = AllZone.Display.getChoice("Pick second creature to tap", creats.toArray());
if(o != null) {
Card c2 = (Card) o;
creats.remove(c2);
tappedCreats.add(c2);
} else return;
o = AllZone.Display.getChoice("Pick third creature to tap", creats.toArray());
if(o != null) {
Card c3 = (Card) o;
creats.remove(c3);
tappedCreats.add(c3);
} else return;
o = AllZone.Display.getChoice("Pick fourth creature to tap", creats.toArray());
if(o != null) {
Card c4 = (Card) o;
creats.remove(c4);
tappedCreats.add(c4);
} else return;
for(int i = 0; i < tappedCreats.size(); i++) {
Card tapCreat = tappedCreats.get(i);
tapCreat.tap();
}
AllZone.GameAction.destroy(getTargetCard());
}//humanResolve
public void computerResolve() {
Player controller = card.getController();
PlayerZone play = AllZone.getZone(Constant.Zone.Battlefield, controller);
CardList creats = new CardList();
creats.addAll(play.getCards());
creats = creats.getType("Creature");
for(int i = 0; i < 4; i++) {
Card c = creats.get(i);
c.tap();
}
AllZone.GameAction.destroy(getTargetCard());
}//computerResolve
};//a1
//card.clearSpellAbility();
card.addSpellAbility(a1);
a1.setDescription("Tap four untapped creatures you control: Destroy target artifact or enchantment.");
Input runtime = new Input() {
private static final long serialVersionUID = -7702308833923538927L;
@Override
public void showMessage() {
CardList all = new CardList();
all.addAll(AllZone.Human_Battlefield.getCards());
all.addAll(AllZone.Computer_Battlefield.getCards());
all = all.filter(new CardListFilter() {
public boolean addCard(Card c) {
return (c.isEnchantment() || c.isArtifact()) && CardFactoryUtil.canTarget(card, c);
}
});
stopSetNext(CardFactoryUtil.input_targetSpecific(a1, all,
"Destroy target artifact or enchantment.", true, false));
}
};
a1.setBeforePayMana(runtime);
}//*************** END ************ END **************************
//*************** START *********** START **************************
else if(cardName.equals("Gilt-Leaf Archdruid")) {
final SpellAbility a1 = new Ability(card, "0") {
@@ -11901,25 +11446,6 @@ public class CardFactory_Creatures {
}//*************** END ************ END **************************
//*************** START *********** START **************************
else if(cardName.equals("Jenara, Asura of War")) {
Ability ability2 = new Ability(card, "1 W") {
@Override
public void resolve() {
card.addCounter(Counters.P1P1, 1);
}
};// ability2
StringBuilder sb2 = new StringBuilder();
sb2.append(card.getName()).append(" - gets a +1/+1 counter.");
ability2.setStackDescription(sb2.toString());
ability2.setDescription("1 W: Put a +1/+1 counter on Jenara, Asura of War.");
card.addSpellAbility(ability2);
}//*************** END ************ END **************************
//*************** START ************ START **************************
else if(cardName.equals("Rats of Rath")) {
final Ability ability = new Ability(card, "B") {