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/dissipate.txt -text svneol=native#text/plain
|
||||||
res/cardsfolder/dissipation_field.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/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/dive_bomber.txt -text svneol=native#text/plain
|
||||||
res/cardsfolder/divebomber_griffin.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
|
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}
|
* 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) {
|
if (hasKeyword(card, "spReturnTgt") != -1) {
|
||||||
int n = hasKeyword(card, "spReturnTgt");
|
int n = hasKeyword(card, "spReturnTgt");
|
||||||
@@ -3694,8 +3694,6 @@ public class CardFactory implements NewConstants {
|
|||||||
desc = k[5];
|
desc = k[5];
|
||||||
}
|
}
|
||||||
|
|
||||||
card.clearSpellAbility();
|
|
||||||
|
|
||||||
final SpellAbility spRtrnTgt = new Spell(card) {
|
final SpellAbility spRtrnTgt = new Spell(card) {
|
||||||
private static final long serialVersionUID = 7970018872459137897L;
|
private static final long serialVersionUID = 7970018872459137897L;
|
||||||
|
|
||||||
@@ -3848,63 +3846,34 @@ public class CardFactory implements NewConstants {
|
|||||||
}// getGraveyardList()
|
}// getGraveyardList()
|
||||||
};// spRtrnTgt
|
};// spRtrnTgt
|
||||||
|
|
||||||
Input target = new Input() {
|
spRtrnTgt.setBeforePayMana(CardFactoryUtil.spReturnTgt_input_targetCards_InGraveyard(card, spRtrnTgt, returnUpTo[0], numCardsToReturn, Tgts));
|
||||||
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
|
|
||||||
|
|
||||||
if (desc.length() > 0) {
|
if (desc.length() > 0) {
|
||||||
spRtrnTgt.setDescription(desc);
|
spRtrnTgt.setDescription(desc);
|
||||||
}
|
}
|
||||||
spRtrnTgt.setBeforePayMana(target);
|
|
||||||
|
card.clearSpellAbility();
|
||||||
card.addSpellAbility(spRtrnTgt);
|
card.addSpellAbility(spRtrnTgt);
|
||||||
|
|
||||||
if (Destination.equals("Hand")) {
|
if (Destination.equals("Hand")) {
|
||||||
card.setSVar("PlayMain1", "TRUE");
|
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
|
}// spReturnTgt
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -3007,6 +3007,57 @@ public class CardFactoryUtil {
|
|||||||
return target;
|
return target;
|
||||||
}//input_targetPlayer()
|
}//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) {
|
public static CardList AI_getHumanCreature(final Card spell, boolean targeted) {
|
||||||
CardList creature = new CardList(AllZone.Human_Play.getCards());
|
CardList creature = new CardList(AllZone.Human_Play.getCards());
|
||||||
creature = creature.getType("Creature");
|
creature = creature.getType("Creature");
|
||||||
|
|||||||
Reference in New Issue
Block a user