convert Assembly-Worker, Magus of the Library, Master Transmuter and one of Molten Hydra's abilities to AFs.

This commit is contained in:
jendave
2011-08-06 13:45:56 +00:00
parent 52d7ab877e
commit 003f31ddfc
5 changed files with 5 additions and 356 deletions

View File

@@ -3,6 +3,7 @@ ManaCost:3
Types:Artifact Creature Assembly-Worker
Text:no text
PT:2/2
A:AB$Pump | Cost$ T | ValidTgts$ Creature.Assembly-Worker | TgtPrompt$ Select target Assembly-Worker creature | NumAtt$ +1 |NumDef$+1 | SpellDescription$ Target Assembly-Worker creature gets +1/+1 until end of turn.
SVar:Rarity:Uncommon
SVar:Picture:http://www.wizards.com/global/images/magic/general/assembly_worker.jpg
SetInfo:TSP|Uncommon|http://magiccards.info/scans/en/ts/248.jpg

View File

@@ -4,6 +4,7 @@ Types:Creature Human Wizard
Text:no text
PT:1/1
K:tap: add 1
A:AB$Draw | Cost$ T | NumCards$ 1 | ActivatingCardsInHand$ 7 | SpellDescription$ Draw a card. Activate this ability only if you have exactly seven cards in hand.
SVar:RemAIDeck:True
SVar:Rarity:Rare
SVar:Picture:http://resources.wizards.com/magic/cards/plc/en-us/card134741.jpg

View File

@@ -3,6 +3,7 @@ ManaCost:3 U
Types:Artifact Creature Human Artificer
Text:no text
PT:1/2
A:AB$ChangeZone | Cost$ U T Return<1/Artifact> | Origin$ Hand | Destination$ Battlefield | ChangeType$ Artifact | ChangeNum$ 1 | SpellDescription$ You may put an artifact card from your hand onto the battlefield.
SVar:Rarity:Rare
SVar:Picture:http://www.wizards.com/global/images/magic/general/master_transmuter.jpg
SetInfo:CFX|Rare|http://magiccards.info/scans/en/cfx/31.jpg

View File

@@ -3,6 +3,7 @@ ManaCost:1 R
Types:Creature Hydra
Text:no text
PT:1/1
A:AB$PutCounter | Cost$ 1 R R | CounterType$ P1P1 | CounterNum$ 1 | SpellDescription$ Put a +1/+1 counter on CARDNAME.
SVar:Rarity:Rare
SVar:Picture:http://www.wizards.com/global/images/magic/general/molten_hydra.jpg
SetInfo:ULG|Rare|http://magiccards.info/scans/en/ul/85.jpg

View File

@@ -8432,106 +8432,7 @@ public class CardFactory_Creatures {
}//*************** END ************ END **************************
//*************** START *********** START **************************
else if(cardName.equals("Master Transmuter")) {
final Ability_Tap ability = new Ability_Tap(card, "U") {
private static final long serialVersionUID = -9076784333448226913L;
@Override
public void resolve() {
PlayerZone hand = AllZone.getZone(Constant.Zone.Hand, card.getController());
PlayerZone play = AllZone.getZone(Constant.Zone.Battlefield, card.getController());
CardList artifacts = new CardList(hand.getCards());
artifacts = artifacts.getType("Artifact");
if(card.getController().equals(AllZone.HumanPlayer)) {
Object o = AllZone.Display.getChoiceOptional(
"Select artifact to put onto the battlefield: ", artifacts.toArray());
if(o != null) {
Card c = (Card) o;
hand.remove(c);
play.add(c);
}
} else {
//CardList arts = new CardList(play.getCards());
//arts = arts.getType("Artifact");
Card c = getTargetCard();
AllZone.GameAction.moveTo(hand, c);
Card crd = CardFactoryUtil.AI_getMostExpensivePermanent(artifacts, card, false);
hand.remove(crd);
play.add(crd);
}
}
@Override
public boolean canPlayAI() {
PlayerZone hand = AllZone.getZone(Constant.Zone.Hand, AllZone.ComputerPlayer);
PlayerZone play = AllZone.getZone(Constant.Zone.Battlefield, AllZone.ComputerPlayer);
CardList handArts = new CardList(hand.getCards());
handArts = handArts.getType("Artifact");
CardList playArts = new CardList(play.getCards());
playArts = playArts.getType("Artifact");
if(handArts.size() > 0 && playArts.size() > 0) {
if(CardUtil.getConvertedManaCost(CardFactoryUtil.AI_getCheapestPermanent(playArts, card,
false).getManaCost()) < CardUtil.getConvertedManaCost(CardFactoryUtil.AI_getMostExpensivePermanent(
handArts, card, false).getManaCost())) {
setTargetCard(CardFactoryUtil.AI_getCheapestPermanent(playArts, card, false));
return true;
}
}
return false;
}
};
Input target = new Input() {
private static final long serialVersionUID = 4246650335595231655L;
@Override
public void showMessage() {
AllZone.Display.showMessage("Select artifact to return to hand");
ButtonUtil.enableOnlyCancel();
}
@Override
public void selectButtonCancel() {
stop();
}
@Override
public void selectCard(Card c, PlayerZone zone) {
PlayerZone play = AllZone.getZone(Constant.Zone.Battlefield, card.getController());
if(c.isArtifact() && AllZone.GameAction.isCardInZone(c, play)) {
PlayerZone hand = AllZone.getZone(Constant.Zone.Hand, card.getController());
AllZone.GameAction.moveTo(hand, c);
AllZone.Stack.add(ability);
stop();
}
}//selectCard()
};//Input
card.addSpellAbility(ability);
StringBuilder sbDesc = new StringBuilder();
sbDesc.append("U, tap, Return an artifact you control to its owner's hand: ");
sbDesc.append("You may put an artifact card from your hand onto the battlefield.");
ability.setDescription(sbDesc.toString());
StringBuilder sbStack = new StringBuilder();
sbStack.append(card).append("You may put an artifact card from your hand onto the battlefield");
ability.setStackDescription(sbStack.toString());
ability.setAfterPayMana(target);
}//*************** END ************ END **************************
//*************** START *********** START **************************
else if(cardName.equals("Cromat")) {
@@ -10009,21 +9910,6 @@ public class CardFactory_Creatures {
//*************** START *********** START **************************
else if(cardName.equals("Lich Lord of Unx")) {
/*
final SpellAbility ability = new Ability_Tap(card, "U B") {
private static final long serialVersionUID = 8909297504020264315L;
@Override
public void resolve() {
CardFactoryUtil.makeToken("Zombie Wizard", "UB 1 1 Zombie Wizard", card, "UB", new String[] {
"Creature", "Zombie", "Wizard"}, 1, 1, new String[] {""});
}//resolve()
};
ability.setDescription("U B, Tap: Put a 1/1 blue and black Zombie Wizard creature token onto the battlefield.");
ability.setStackDescription(card.getName() + " - " + card.getController()
+ "puts a 1/1 blue and black Zombie Wizard creature token onto the battlefield.");
*/
final Ability ability2 = new Ability(card, "U U B B") {
@Override
public boolean canPlayAI() {
@@ -10057,8 +9943,6 @@ public class CardFactory_Creatures {
ability2.setDescription(sb.toString());
ability2.setBeforePayMana(CardFactoryUtil.input_targetPlayer(ability2));
//card.addSpellAbility(ability);
card.addSpellAbility(ability2);
}//*************** END ************ END **************************
@@ -10255,30 +10139,6 @@ public class CardFactory_Creatures {
}
//*************** END ************ END **************************
//*************** START *********** START **************************
else if(cardName.equals("Magus of the Library")) {
final Ability_Tap ability2 = new Ability_Tap(card) {
private static final long serialVersionUID = 6567685794684744457L;
@Override
public boolean canPlay() {
PlayerZone hand = AllZone.getZone(Constant.Zone.Hand, card.getController());
return hand.getCards().length == 7 && super.canPlay();
}
@Override
public void resolve() {
getActivatingPlayer().drawCard();
}
};//SpellAbility
card.addSpellAbility(ability2);
ability2.setDescription("tap: Draw a card. Play this ability only if you have exactly 7 cards in hand.");
ability2.setStackDescription("Magus of the Library - draw a card.");
ability2.setBeforePayMana(new Input_NoCost_TapAbility(ability2));
}//*************** END ************ END **************************
//*************** START *********** START **************************
else if(cardName.equals("Stern Judge")) {
@@ -10581,19 +10441,6 @@ public class CardFactory_Creatures {
//*************** START *********** START **************************
else if(cardName.equals("Molten Hydra")) {
final Ability ability1 = new Ability(card, "1 R R") {
@Override
public void resolve() {
card.addCounter(Counters.P1P1,1);
}//resolve()
};//SpellAbility
ability1.setDescription("1 R R: put a +1/+1 counter on Molten Hydra. ");
ability1.setStackDescription("Molten Hydra gets a +1/+1 counter. ");
card.addSpellAbility(ability1);
final Ability_Tap ability2 = new Ability_Tap(card,"0") {
private static final long serialVersionUID = 2626619319289064289L;
@@ -10616,7 +10463,6 @@ public class CardFactory_Creatures {
list.shuffle();
setTargetCard(list.get(0));
}
// card.subtractCounter(Counters.P1P1, total);
}//chooseTargetAI()
CardList getCreature() {
@@ -10690,77 +10536,6 @@ public class CardFactory_Creatures {
ability2.setStackDescription("Molten Hydra deals damage to number of counters on it to target creature or player.");
}//*************** END ************ END **************************
/*
//*************** START *********** START **************************
else if(cardName.equals("Windreaver")) {
final SpellAbility a1 = new Ability(card, "U") {
@Override
public boolean canPlayAI() {
return false;
}
@Override
public void resolve() {
PlayerZone hand = AllZone.getZone(Constant.Zone.Hand, card.getOwner());
AllZone.getZone(card).remove(card);
hand.add(card);
if(card.isToken()) AllZone.getZone(card).remove(card);
else AllZone.GameAction.moveTo(hand, card);
}
};//a1
//card.clearSpellAbility();
card.addSpellAbility(a1);
StringBuilder sb1 = new StringBuilder();
sb1.append(card.getController()).append(" returns Windreaver back to its owner's hand.");
a1.setStackDescription(sb1.toString());
a1.setDescription("U: return Windreaver to its owner's hand.");
final SpellAbility a2 = new Ability(card, "U") {
@Override
public void resolve() {
final Command EOT = new Command() {
private static final long serialVersionUID = 6437163765161964445L;
public void execute() {
int power = card.getNetAttack();
int tough = card.getNetDefense();
card.addTempAttackBoost(tough - power);
card.addTempDefenseBoost(power - tough);
}
};
if(AllZone.GameAction.isCardInPlay(card)) {
int power = card.getNetAttack();
int tough = card.getNetDefense();
card.addTempAttackBoost(tough - power);
card.addTempDefenseBoost(power - tough);
AllZone.EndOfTurn.addUntil(EOT);
}
}
};//a2
card.addSpellAbility(a2);
StringBuilder sb2 = new StringBuilder();
sb2.append(card.getController()).append(" switches Windreaver's power and toughness until EOT.");
a2.setStackDescription(sb2.toString());
a2.setDescription("U: Switch Windreaver's power and toughness until end of turn. ");
}//*************** END ************ END **************************
*/
//*************** START *********** START **************************
else if(cardName.equals("Academy Rector")) {
@@ -11682,136 +11457,6 @@ public class CardFactory_Creatures {
}//*************** END ************ END **************************
//*************** START *********** START **************************
else if(cardName.equals("Assembly-Worker")) {
final SpellAbility[] a2 = new SpellAbility[1];
final Command eot2 = new Command() {
private static final long serialVersionUID = 6180724472470740160L;
public void execute() {
Card c = a2[0].getTargetCard();
if(AllZone.GameAction.isCardInPlay(c)) {
c.addTempAttackBoost(-1);
c.addTempDefenseBoost(-1);
}
}
};
a2[0] = new Ability_Tap(card) {
private static final long serialVersionUID = 3561450525225198222L;
@Override
public boolean canPlayAI() {
return getAttacker() != null;
}
@Override
public void chooseTargetAI() {
setTargetCard(getAttacker());
}
/*
* getAttacker() will now filter out non-Assembly-Worker and non-Changelings
*/
public Card getAttacker() {
//target creature that is going to attack
Combat attackers = ComputerUtil.getAttackers();
CardList list = new CardList(attackers.getAttackers());
list = list.filter(new CardListFilter() {
public boolean addCard(Card c) {
return CardFactoryUtil.canTarget(card, c) &&
(c.getType().contains("Assembly-Worker") || c.getKeyword().contains("Changeling"));
}
});
// list = list.getType("Assembly-Worker"); // Should return only Assembly-Workers
list.remove(card);
list.shuffle();
if (list.size() != 0 &&
(AllZone.Phase.getPhase().equals(Constant.Phase.Main1)) &&
CardFactoryUtil.canTarget(card, list.get(0))) return list.get(0);
else return null;
}//getAttacker()
@Override
public void resolve() {
Card c = a2[0].getTargetCard();
if(AllZone.GameAction.isCardInPlay(c) && CardFactoryUtil.canTarget(card, c)) {
c.addTempAttackBoost(1);
c.addTempDefenseBoost(1);
AllZone.EndOfTurn.addUntil(eot2);
}
}//resolve()
};//SpellAbility
card.addSpellAbility(a2[0]);
a2[0].setDescription("tap: Target Assembly-Worker creature gets +1/+1 until end of turn.");
/*
@SuppressWarnings("unused") // target unused
inal Input target = new Input()
{
private static final long serialVersionUID = 8913477363141356082L;
public void showMessage()
{
ButtonUtil.enableOnlyCancel();
AllZone.Display.showMessage("Select Assembly-Worker to get +1/+1");
}
public void selectCard(Card c, PlayerZone zone)
{
if(!CardFactoryUtil.canTarget(card, c)){
AllZone.Display.showMessage("Cannot target this card (Shroud? Protection?).");
}
else if(c.isCreature() && c.getType().contains("Assembly-Worker"))
{
card.tap();
AllZone.Human_Play.updateObservers();
a2[0].setTargetCard(c);//since setTargetCard() changes stack description
a2[0].setStackDescription(c +" gets +1/+1 until EOT");
AllZone.InputControl.resetInput();
AllZone.Stack.add(a2[0]);
}
}//selectCard()
public void selectButtonCancel()
{
card.untap();
stop();
}
};//Input target
*/
/*
* This input method will allow the human to select both Assembly-Workers and Changelings
*/
Input runtime = new Input() {
private static final long serialVersionUID = -2520339470741575052L;
@Override
public void showMessage() {
PlayerZone comp = AllZone.getZone(Constant.Zone.Battlefield, AllZone.ComputerPlayer);
PlayerZone hum = AllZone.getZone(Constant.Zone.Battlefield, AllZone.HumanPlayer);
CardList creatures = new CardList();
creatures.addAll(comp.getCards());
creatures.addAll(hum.getCards());
creatures = creatures.filter(new CardListFilter() {
public boolean addCard(Card c) {
return c.isCreature() && CardFactoryUtil.canTarget(card, c) &&
(c.getType().contains("Assembly-Worker") || c.getKeyword().contains("Changeling"));
}
});
stopSetNext(CardFactoryUtil.input_targetSpecific(a2[0], creatures, "Select target Assembly-Worker", true, false));
}
};//Input target
a2[0].setBeforePayMana(runtime);
// a2[0].setBeforePayMana(CardFactoryUtil.input_targetType(a2[0], "Assembly-Worker"));
}//*************** END ************ END **************************
//*************** START *********** START **************************
else if(cardName.equals("Wood Elves")) {
final SpellAbility ability = new Ability(card, "0") {