- Convert Memory Erosion, Mindwrack Liege, Xiahou Dun, the One-Eyed, Loyal Retainers, Order of Whiteclay to AFs

- moveTo Tweaks
This commit is contained in:
jendave
2011-08-06 15:48:18 +00:00
parent 9ae800b197
commit 7d3169d2cf
7 changed files with 16 additions and 363 deletions

View File

@@ -3,6 +3,7 @@ ManaCost:2 W
Types:Creature Human Advisor Types:Creature Human Advisor
Text:no text Text:no text
PT:1/1 PT:1/1
A:AB$ChangeZone | Cost$ Sac<1/CARDNAME> | Origin$ Graveyard | Destination$ Battlefield | ValidTgts$ Creature.Legendary+YouCtrl | TgtPrompt$ Select a target legendary creature card from your graveyard | ChangeNum$ 1 | PlayerTurn$ True | ActivatingPhases$ Upkeep->BeginCombat | SpellDescription$ Return target legendary creature card from your graveyard to the battlefield. Activate this ability only during your turn, before attackers are declared.
SVar:Rarity:Uncommon SVar:Rarity:Uncommon
SVar:Picture:http://www.wizards.com/global/images/magic/general/loyal_retainers.jpg SVar:Picture:http://www.wizards.com/global/images/magic/general/loyal_retainers.jpg
SetInfo:PTK|Uncommon|http://magiccards.info/scans/en/p3k/12.jpg SetInfo:PTK|Uncommon|http://magiccards.info/scans/en/p3k/12.jpg

View File

@@ -1,7 +1,9 @@
Name:Memory Erosion Name:Memory Erosion
ManaCost:1 U U ManaCost:1 U U
Types:Enchantment Types:Enchantment
Text:Whenever an opponent casts a spell, that player puts the top two cards of his or her library into his or her graveyard. Text:no text
T:Mode$ SpellCast | ValidActivatingPlayer$ Opponent | TriggerZones$ Battlefield | Execute$ TrigMill | TriggerDescription$ Whenever an opponent casts a spell, that player puts the top two cards of his or her library into his or her graveyard.
SVar:TrigMill:AB$Mill | Cost$ 0 | Defined$ Opponent | NumCards$ 2
SVar:Rarity:Rare SVar:Rarity:Rare
SVar:Picture:http://www.wizards.com/global/images/magic/general/memory_erosion.jpg SVar:Picture:http://www.wizards.com/global/images/magic/general/memory_erosion.jpg
SetInfo:ALA|Rare|http://magiccards.info/scans/en/ala/50.jpg SetInfo:ALA|Rare|http://magiccards.info/scans/en/ala/50.jpg

View File

@@ -1,10 +1,11 @@
Name:Mindwrack Liege Name:Mindwrack Liege
ManaCost:3 UR UR UR ManaCost:3 UR UR UR
Types:Creature Horror Types:Creature Horror
Text:UR UR UR UR: You may put a blue or red creature card from your hand onto the battlefield. Text:no text
PT:4/4 PT:4/4
K:stPumpAll:Creature.Blue+Other+YouCtrl:1/1:No Condition:Other blue creatures you control get +1/+1. K:stPumpAll:Creature.Blue+Other+YouCtrl:1/1:No Condition:Other blue creatures you control get +1/+1.
K:stPumpAll:Creature.Red+Other+YouCtrl:1/1:No Condition:Other red creatures you control get +1/+1. K:stPumpAll:Creature.Red+Other+YouCtrl:1/1:No Condition:Other red creatures you control get +1/+1.
A:AB$ChangeZone | Cost$ UR UR UR UR | Origin$ Hand | Destination$ Battlefield | ChangeType$ Creature.Blue,Creature.Red | ChangeNum$ 1 | SpellDescription$ You may put a blue or red creature card from your hand onto the battlefield.
SVar:PlayMain1:TRUE SVar:PlayMain1:TRUE
SVar:Rarity:Rare SVar:Rarity:Rare
SVar:Picture:http://www.wizards.com/global/images/magic/general/mindwrack_liege.jpg SVar:Picture:http://www.wizards.com/global/images/magic/general/mindwrack_liege.jpg

View File

@@ -3,6 +3,7 @@ ManaCost:1 W W
Types:Creature Kithkin Cleric Types:Creature Kithkin Cleric
Text:no text Text:no text
PT:1/4 PT:1/4
A:AB$ChangeZone | Cost$ 1 W W Untap | Origin$ Graveyard | Destination$ Battlefield | ValidTgts$ Creature.cmcLE3+YouCtrl | TgtPrompt$ Select a creature card with converted mana cost 3 or less from your graveyard | ChangeNum$ 1 | SpellDescription$ Return target creature card with converted mana cost 3 or less from your graveyard to the battlefield.
SVar:Rarity:Rare SVar:Rarity:Rare
SVar:Picture:http://www.wizards.com/global/images/magic/general/order_of_whiteclay.jpg SVar:Picture:http://www.wizards.com/global/images/magic/general/order_of_whiteclay.jpg
SetInfo:SHM|Rare|http://magiccards.info/scans/en/shm/16.jpg SetInfo:SHM|Rare|http://magiccards.info/scans/en/shm/16.jpg

View File

@@ -4,6 +4,7 @@ Types:Legendary Creature Human Soldier
Text:no text Text:no text
PT:3/2 PT:3/2
K:Horsemanship K:Horsemanship
A:AB$ChangeZone | Cost$ Sac<1/CARDNAME> | Origin$ Graveyard | Destination$ Hand | ValidTgts$ Card.Black+YouCtrl | TgtPrompt$ Select a target black card from your graveyard | ChangeNum$ 1 | PlayerTurn$ True | ActivatingPhases$ Upkeep->BeginCombat | SpellDescription$ Return target black card from your graveyard to your hand. Activate this ability only during your turn, before attackers are declared.
SVar:Rarity:Rare SVar:Rarity:Rare
SVar:Picture:http://www.wizards.com/global/images/magic/general/xiahou_dun_the_one_eyed.jpg SVar:Picture:http://www.wizards.com/global/images/magic/general/xiahou_dun_the_one_eyed.jpg
SetInfo:PTK|Rare|http://magiccards.info/scans/en/p3k/92.jpg SetInfo:PTK|Rare|http://magiccards.info/scans/en/p3k/92.jpg

View File

@@ -427,71 +427,6 @@ public class CardFactory_Creatures {
}//*************** END ************ END ************************** }//*************** END ************ END **************************
//*************** START *********** START **************************
else if(cardName.equals("Order of Whiteclay")) {
final SpellAbility a1 = new Ability(card, "1 W W") {
@Override
public void resolve() {
PlayerZone grave = AllZone.getZone(Constant.Zone.Graveyard, card.getController());
PlayerZone play = AllZone.getZone(Constant.Zone.Battlefield, card.getController());
CardList creats = new CardList(grave.getCards());
creats = creats.filter(new CardListFilter() {
public boolean addCard(Card c) {
return CardUtil.getConvertedManaCost(c.getManaCost()) <= 3;
}
});
if(card.getController().equals(AllZone.HumanPlayer)) {
Object o = GuiUtils.getChoiceOptional("Choose a creature", creats.toArray());
if(o != null) {
Card c = (Card) o;
grave.remove(c);
play.add(c);
card.untap();
}
} else //Computer
{
Card c = creats.get(0);
grave.remove(c);
play.add(c);
card.untap();
}
}
@Override
public boolean canPlay() {
PlayerZone grave = AllZone.getZone(Constant.Zone.Graveyard, card.getController());
CardList creats = new CardList(grave.getCards());
creats = creats.filter(new CardListFilter() {
public boolean addCard(Card c) {
return CardUtil.getConvertedManaCost(c.getManaCost()) <= 3;
}
});
if(card.isTapped() && !card.hasSickness() && creats.size() > 0 && super.canPlay()) return true;
else return false;
}
@Override
public boolean canPlayAI() {
return true;
}
};//SpellAbility
a1.makeUntapAbility();
card.addSpellAbility(a1);
a1.setDescription("1 W W, Untap: Return target creature card with converted mana cost 3 or less from your graveyard to the battlefield.");
StringBuilder sb = new StringBuilder();
sb.append(card.getName()).append(" - return target creature card with converted mana cost 3 or less from your graveyard to the battlefield.");
a1.setStackDescription(sb.toString());
a1.setBeforePayMana(new Input_PayManaCost(a1));
}//*************** END ************ END **************************
//*************** START *********** START ************************** //*************** START *********** START **************************
else if(cardName.equals("Mudbutton Torchrunner")) { else if(cardName.equals("Mudbutton Torchrunner")) {
final SpellAbility ability = new Ability(card, "0") { final SpellAbility ability = new Ability(card, "0") {
@@ -3413,62 +3348,6 @@ public class CardFactory_Creatures {
}//*************** END ************ END ************************** }//*************** END ************ END **************************
//*************** START *********** START **************************
else if(cardName.equals("Mindwrack Liege")) {
final SpellAbility ability = new Ability(card, "UR UR UR UR") {
private static final long serialVersionUID = 3978560192382921056L;
@Override
public boolean canPlayAI() {
return getCreature().size() != 0;
}
@Override
public void chooseTargetAI() {
card.tap();
Card target = CardFactoryUtil.AI_getBestCreature(getCreature());
setTargetCard(target);
}
CardList getCreature() {
CardList list = new CardList(AllZone.Computer_Hand.getCards());
list = list.getType("Creature");
CardList list2 = list.getColor("Blue");
list2.add(list.getColor("Red"));
return list2;
}
@Override
public void resolve() {
Card c = getTargetCard();
PlayerZone hand = AllZone.getZone(Constant.Zone.Hand, card.getController());
PlayerZone play = AllZone.getZone(Constant.Zone.Battlefield, card.getController());
if(AllZone.GameAction.isCardInZone(c, hand)) {
hand.remove(c);
play.add(c);
}
}
};
ability.setBeforePayMana(new Input() {
private static final long serialVersionUID = -1038409328463518290L;
@Override
public void showMessage() {
Player controller = card.getController();
CardList creats = new CardList(AllZone.getZone(Constant.Zone.Hand, controller).getCards());
creats = creats.getType("Creature");
CardList creats2 = creats.getColor("U");
creats2.add(creats.getColor("R"));
stopSetNext(CardFactoryUtil.input_targetSpecific(ability, creats2, "Select a creature", false,
false));
}
});
card.addSpellAbility(ability);
}//*************** END ************ END **************************
//*************** START *********** START ************************** //*************** START *********** START **************************
else if (cardName.equals("Disciple of Kangee")) { else if (cardName.equals("Disciple of Kangee")) {
Ability_Cost abCost = new Ability_Cost("U T", cardName, true); Ability_Cost abCost = new Ability_Cost("U T", cardName, true);
@@ -7549,217 +7428,6 @@ public class CardFactory_Creatures {
card.addComesIntoPlayCommand(intoPlay); card.addComesIntoPlayCommand(intoPlay);
}//*************** END ************ END ************************** }//*************** END ************ END **************************
//*************** START *********** START **************************
else if(cardName.equals("Loyal Retainers")) {
final Ability ability = new Ability(card, "0") {
@Override
public void resolve() {
if(AllZone.GameAction.isCardInPlay(card)) {
AllZone.GameAction.sacrifice(card);
PlayerZone play = AllZone.getZone(Constant.Zone.Battlefield, 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(AllZone.HumanPlayer)) {
Object o = GuiUtils.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);
}
}
}
}
@Override
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 < AllZone.Stack.size(); i++) {
sa = AllZone.Stack.peek(i);
if(sa.getSourceCard().equals(card)) return false;
}
return super.canPlay() && list.size() > 0
&& AllZone.Phase.getPhase().equals(Constant.Phase.Main1)
&& AllZone.Phase.getPlayerTurn().equals(card.getController());
}
@Override
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
StringBuilder sbDesc = new StringBuilder();
sbDesc.append("Sacrifice Loyal Retainers: Return target legendary creature card from your graveyard to the battlefield. ");
sbDesc.append("Activate this ability only during your turn, before attackers are declared.");
ability.setDescription(sbDesc.toString());
StringBuilder sbStack = new StringBuilder();
sbStack.append(cardName).append(" - Return target legendary creature card from your graveyard to the battlefield.");
ability.setStackDescription(sbStack.toString());
card.addSpellAbility(ability);
}//*************** END ************ END **************************
//*************** START *********** START **************************
else if(cardName.equals("Xiahou Dun, the One-Eyed")) {
final Ability ability = new Ability(card, "0") {
@Override
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(AllZoneUtil.black);
if(list.size() > 0) {
if(card.getController().equals(AllZone.HumanPlayer)) {
Object o = GuiUtils.getChoiceOptional("Select black card", list.toArray());
if(o != null) {
Card c = (Card) o;
grave.remove(c);
hand.add(c);
}
} else //computer
{
//TODO
}
}
}
}
@Override
public boolean canPlay() {
PlayerZone grave = AllZone.getZone(Constant.Zone.Graveyard, card.getController());
CardList list = new CardList(grave.getCards());
list = list.filter(AllZoneUtil.black);
SpellAbility sa;
for(int i = 0; i < AllZone.Stack.size(); i++) {
sa = AllZone.Stack.peek(i);
if(sa.getSourceCard().equals(card)) return false;
}
return super.canPlay() && list.size() > 0
&& AllZone.Phase.getPhase().equals(Constant.Phase.Main1)
&& AllZone.Phase.getPlayerTurn().equals(card.getController());
}
@Override
public boolean canPlayAI() {
return false;
}
};
StringBuilder sbDesc = new StringBuilder();
sbDesc.append("Sacrifice Xiahou Dun, the One-Eyed: Return target black card from your graveyard to your hand. ");
sbDesc.append("Activate this ability only during your turn, before attackers are declared.");
ability.setDescription(sbDesc.toString());
StringBuilder sbStack = new StringBuilder();
sbStack.append(cardName).append(" - Return target black card from your graveyard to your hand.");
ability.setStackDescription(sbStack.toString());
card.addSpellAbility(ability);
}//*************** END ************ END **************************
/*
//*************** START *********** START **************************
else if(cardName.equals("Fire Bowman")) {
final Ability ability = new Ability(card, "0") {
@Override
public boolean canPlayAI() {
return getCreature().size() != 0;
}
@Override
public void chooseTargetAI() {
if(AllZone.HumanPlayer.getLife() < 3) setTargetPlayer(AllZone.HumanPlayer);
else {
CardList list = getCreature();
list.shuffle();
setTargetCard(list.get(0));
}
AllZone.GameAction.sacrifice(card);
}//chooseTargetAI()
CardList getCreature() {
//toughness of 1
CardList list = CardFactoryUtil.AI_getHumanCreature(1, card, true);
list = list.filter(new CardListFilter() {
public boolean addCard(Card c) {
//only get 1/1 flyers or 2/1 creatures
return (2 <= c.getNetAttack()) || c.getKeyword().contains("Flying");
}
});
return list;
}//getCreature()
@Override
public void resolve() {
if(getTargetCard() != null) {
if(AllZone.GameAction.isCardInPlay(getTargetCard())
&& CardFactoryUtil.canTarget(card, getTargetCard())) getTargetCard().addDamage(1,
card);
} else getTargetPlayer().addDamage(1, card);
}//resolve()
};//SpellAbility
card.addSpellAbility(ability);
StringBuilder sb = new StringBuilder();
sb.append("Sacrifice Fire Bowman: Fire Bowman deals 1 damage to target creature or player. ");
sb.append("Activate this ability only during your turn, before attackers are declared.");
ability.setDescription(sb.toString());
ability.setBeforePayMana(CardFactoryUtil.input_targetCreaturePlayer(ability, new Command() {
private static final long serialVersionUID = -3283051501556347775L;
public void execute() {
AllZone.GameAction.sacrifice(card);
}
}, true, false));
}//*************** END ************ END **************************
*/
//*************** START *********** START ************************** //*************** START *********** START **************************
else if(cardName.equals("Sygg, River Guide")) { else if(cardName.equals("Sygg, River Guide")) {

View File

@@ -1516,25 +1516,16 @@ public class GameActionUtil {
}//Thistledown Duo }//Thistledown Duo
public static void playCard_Demigod_of_Revenge(Card c) { public static void playCard_Demigod_of_Revenge(final Card c) {
// not enough boom stick references in this block of code
if(c.getName().equals("Demigod of Revenge")) { if(c.getName().equals("Demigod of Revenge")) {
Ability ability2 = new Ability(c, "0") { Ability ability2 = new Ability(c, "0") {
@Override @Override
public void resolve() { public void resolve() {
PlayerZone Grave = AllZone.getZone(Constant.Zone.Graveyard, AllZone.Phase.getPlayerTurn()); CardList evildead = AllZoneUtil.getPlayerGraveyard(c.getController(), "Demigod of Revenge");
PlayerZone Play = AllZone.getZone(Constant.Zone.Battlefield, AllZone.Phase.getPlayerTurn());
CardList evildead = new CardList(); for(Card c : evildead){
evildead.addAll(Grave.getCards()); AllZone.GameAction.moveToPlay(c);
evildead = evildead.filter(new CardListFilter() {
public boolean addCard(Card card) {
return (card.getName().contains("Demigod of Revenge"));
}
});
for(int i = 0; i < evildead.size(); i++) {
Card c = evildead.get(i);
Grave.remove(c);
Play.add(c);
} }
} }
}; // ability2 }; // ability2
@@ -1737,20 +1728,8 @@ public class GameActionUtil {
else if(!choice.equals("None")) target = AllZone.HumanPlayer; // check for target of spell/abilities should be here else if(!choice.equals("None")) target = AllZone.HumanPlayer; // check for target of spell/abilities should be here
else target = null; else target = null;
} else target = AllZone.HumanPlayer; // check for target of spell/abilities should be here } else target = AllZone.HumanPlayer; // check for target of spell/abilities should be here
if(!(null == target)) { if(null != target) {
PlayerZone lib = AllZone.getZone(Constant.Zone.Library, target); target.mill(converted);
PlayerZone grave = AllZone.getZone(Constant.Zone.Graveyard, target);
CardList libList = new CardList(lib.getCards());
int max = converted;
if(libList.size() < max) max = libList.size();
for(int i = 0; i < max; i++) {
Card c = libList.get(i);
lib.remove(c);
grave.add(c);
}
} //if } //if
} //resolve } //resolve
}; //ability }; //ability