mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-19 20:28:00 +00:00
- Moved the input for spReturnTgt to CardFactoryUtil and added Buyback code to the spReturnTgt keyword.
- Added Disturbed Burial.
This commit is contained in:
1
.gitattributes
vendored
1
.gitattributes
vendored
@@ -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
|
||||
|
||||
9
res/cardsfolder/disturbed_burial.txt
Normal file
9
res/cardsfolder/disturbed_burial.txt
Normal 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
|
||||
@@ -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
|
||||
|
||||
|
||||
|
||||
@@ -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");
|
||||
|
||||
Reference in New Issue
Block a user