- Moved the input for spReturnTgt to CardFactoryUtil and added Buyback code to the spReturnTgt keyword.

- Added Disturbed Burial.
This commit is contained in:
jendave
2011-08-06 09:11:08 +00:00
parent 853ee2e6be
commit e9e400e1e6
4 changed files with 82 additions and 52 deletions

1
.gitattributes vendored
View File

@@ -1060,6 +1060,7 @@ res/cardsfolder/disperse.txt -text svneol=native#text/plain
res/cardsfolder/dissipate.txt -text svneol=native#text/plain
res/cardsfolder/dissipation_field.txt -text svneol=native#text/plain
res/cardsfolder/distress.txt -text svneol=native#text/plain
res/cardsfolder/disturbed_burial.txt -text svneol=native#text/plain
res/cardsfolder/dive_bomber.txt -text svneol=native#text/plain
res/cardsfolder/divebomber_griffin.txt -text svneol=native#text/plain
res/cardsfolder/diversionary_tactics.txt -text svneol=native#text/plain

View File

@@ -0,0 +1,9 @@
Name:Disturbed Burial
ManaCost:1 B
Types:Sorcery
Text:no text
K:spReturnTgt:1:Creature:Hand:Return target creature card from your graveyard to your hand.
SVar:Buyback:3
SVar:Rarity:Common
SVar:Picture:http://www.wizards.com/global/images/magic/general/disturbed_burial.jpg
End

View File

@@ -3647,10 +3647,10 @@ public class CardFactory implements NewConstants {
/**
* Generic return target card(s) from graveyard to Hand or Battlefield cards
* Generic return target card(s) from graveyard to Hand, Battlefield or Top of Library
* spReturnTgt:{Num Cards/Parameters}:{Type}:{To Zone}:{DrawBack}:{Spell Desc}
*
* DrawBack and Buyback is not yet implemented.
* DrawBack and X Count/Costs are not yet implemented.
*/
if (hasKeyword(card, "spReturnTgt") != -1) {
int n = hasKeyword(card, "spReturnTgt");
@@ -3694,8 +3694,6 @@ public class CardFactory implements NewConstants {
desc = k[5];
}
card.clearSpellAbility();
final SpellAbility spRtrnTgt = new Spell(card) {
private static final long serialVersionUID = 7970018872459137897L;
@@ -3848,63 +3846,34 @@ public class CardFactory implements NewConstants {
}// getGraveyardList()
};// spRtrnTgt
Input target = new Input() {
private static final long serialVersionUID = 816838038180106359L;
@Override
public void showMessage() {
CardList grave = getGraveyardList();
CardList targets = new CardList();
if (returnUpTo[0]) {
for (int i = 0; i < numCardsToReturn; i++) {
if (grave.size() > 0) {
Object o = AllZone.Display.getChoiceOptional("Select a card", grave.toArray());
if (o == null) break;
Card c = (Card) o;
targets.add(c);
grave.remove(c);
}
}
} else if (grave.size() > numCardsToReturn) {
for (int i = 0; i < numCardsToReturn; i++) {
Object o = AllZone.Display.getChoice("Select a card", grave.toArray());
Card c = (Card) o;
targets.add(c);
grave.remove(c);
}
} else if (grave.size() == numCardsToReturn) {
targets = grave;
}
if (targets.size() > 0) {
spRtrnTgt.setTargetList(targets);
stopSetNext(new Input_PayManaCost(spRtrnTgt));
} else stop();
}// showMessage()
public CardList getGraveyardList() {
CardList list = new CardList();
PlayerZone zone = AllZone.getZone(Constant.Zone.Graveyard, card.getController());
list.addAll(zone.getCards());
list = list.getValidCards(Tgts);
return list;
}
};// Input
spRtrnTgt.setBeforePayMana(CardFactoryUtil.spReturnTgt_input_targetCards_InGraveyard(card, spRtrnTgt, returnUpTo[0], numCardsToReturn, Tgts));
if (desc.length() > 0) {
spRtrnTgt.setDescription(desc);
}
spRtrnTgt.setBeforePayMana(target);
card.clearSpellAbility();
card.addSpellAbility(spRtrnTgt);
if (Destination.equals("Hand")) {
card.setSVar("PlayMain1", "TRUE");
}
String bbCost = card.getSVar("Buyback");
if (!bbCost.equals("")) {
SpellAbility bbRtrnTgt = spRtrnTgt.copy();
bbRtrnTgt.setManaCost(CardUtil.addManaCosts(card.getManaCost(), bbCost));
StringBuilder sb = new StringBuilder();
sb.append("Buyback ").append(bbCost).append(" (You may pay an additional ").append(bbCost);
sb.append(" as you cast this spell. If you do, put this card into your hand as it resolves.)");
bbRtrnTgt.setDescription(sb.toString());
bbRtrnTgt.setIsBuyBackAbility(true);
bbRtrnTgt.setBeforePayMana(CardFactoryUtil.spReturnTgt_input_targetCards_InGraveyard(card, bbRtrnTgt, returnUpTo[0], numCardsToReturn, Tgts));
card.addSpellAbility(bbRtrnTgt);
}
}// spReturnTgt

View File

@@ -3007,6 +3007,57 @@ public class CardFactoryUtil {
return target;
}//input_targetPlayer()
public static Input spReturnTgt_input_targetCards_InGraveyard(final Card card, final SpellAbility spell, final boolean UpTo, final int numCards, final String Tgts[]) {
Input target = new Input() {
private static final long serialVersionUID = 816838038180106359L;
@Override
public void showMessage() {
CardList grave = getGraveyardList();
CardList targets = new CardList();
if (UpTo) {
for (int i = 0; i < numCards; i++) {
if (grave.size() > 0) {
Object o = AllZone.Display.getChoiceOptional("Select a card", grave.toArray());
if (o == null) break;
Card c = (Card) o;
targets.add(c);
grave.remove(c);
}
}
} else if (grave.size() > numCards) {
for (int i = 0; i < numCards; i++) {
Object o = AllZone.Display.getChoice("Select a card", grave.toArray());
Card c = (Card) o;
targets.add(c);
grave.remove(c);
}
} else if (grave.size() == numCards) {
targets = grave;
}
if (targets.size() > 0) {
spell.setTargetList(targets);
stopSetNext(new Input_PayManaCost(spell));
} else stop();
}// showMessage()
public CardList getGraveyardList() {
CardList list = new CardList();
PlayerZone zone = AllZone.getZone(Constant.Zone.Graveyard, card.getController());
list.addAll(zone.getCards());
list = list.getValidCards(Tgts);
return list;
}
};// Input
return target;
}//spReturnTgt_input_targetCards_InGraveyard()
public static CardList AI_getHumanCreature(final Card spell, boolean targeted) {
CardList creature = new CardList(AllZone.Human_Play.getCards());
creature = creature.getType("Creature");