- Added Grave Consequences and Psychic Vortex

This commit is contained in:
swordshine
2013-06-09 05:20:15 +00:00
parent 82defd76ff
commit 6cb1fca434
6 changed files with 118 additions and 77 deletions

2
.gitattributes vendored
View File

@@ -4565,6 +4565,7 @@ res/cardsfolder/g/grasslands.txt svneol=native#text/plain
res/cardsfolder/g/gratuitous_violence.txt svneol=native#text/plain res/cardsfolder/g/gratuitous_violence.txt svneol=native#text/plain
res/cardsfolder/g/grave_betrayal.txt -text res/cardsfolder/g/grave_betrayal.txt -text
res/cardsfolder/g/grave_bramble.txt -text res/cardsfolder/g/grave_bramble.txt -text
res/cardsfolder/g/grave_consequences.txt -text
res/cardsfolder/g/grave_defiler.txt svneol=native#text/plain res/cardsfolder/g/grave_defiler.txt svneol=native#text/plain
res/cardsfolder/g/grave_exchange.txt -text res/cardsfolder/g/grave_exchange.txt -text
res/cardsfolder/g/grave_pact.txt svneol=native#text/plain res/cardsfolder/g/grave_pact.txt svneol=native#text/plain
@@ -8311,6 +8312,7 @@ res/cardsfolder/p/psychic_surgery.txt svneol=native#text/plain
res/cardsfolder/p/psychic_trance.txt -text svneol=unset#text/plain res/cardsfolder/p/psychic_trance.txt -text svneol=unset#text/plain
res/cardsfolder/p/psychic_transfer.txt -text res/cardsfolder/p/psychic_transfer.txt -text
res/cardsfolder/p/psychic_venom.txt svneol=native#text/plain res/cardsfolder/p/psychic_venom.txt svneol=native#text/plain
res/cardsfolder/p/psychic_vortex.txt -text
res/cardsfolder/p/psychogenic_probe.txt -text res/cardsfolder/p/psychogenic_probe.txt -text
res/cardsfolder/p/psychosis_crawler.txt svneol=native#text/plain res/cardsfolder/p/psychosis_crawler.txt svneol=native#text/plain
res/cardsfolder/p/psychotic_episode.txt -text svneol=unset#text/plain res/cardsfolder/p/psychotic_episode.txt -text svneol=unset#text/plain

View File

@@ -0,0 +1,16 @@
Name:Grave Consequences
ManaCost:1 B
Types:Instant
#AI will exile all cards from its graveyard currently
A:SP$ RepeatEach | Cost$ 1 B | RepeatPlayers$ Player | RepeatSubAbility$ DBChooseNum | SubAbility$ DBExile | SpellDescription$ Each player may exile any number of cards from his or her graveyard. Then each player loses 1 life for each card in his or her graveyard. Draw a card.
SVar:DBChooseNum:DB$ ChooseNumber | Defined$ Player.IsRemembered | Min$ 0 | Max$ X | References$ X | ListTitle$ Exile how many cards in your graveyard? | SubAbility$ DBChooseCard
SVar:DBChooseCard:DB$ ChooseCard | Defined$ Player.IsRemembered | Amount$ Y | References$ Y | Choices$ Card.RememberedPlayerCtrl | ChoiceZone$ Graveyard | Mandatory$ True | RememberChosen$ True
SVar:DBExile:DB$ ChangeZoneAll | ChangeType$ Card.IsRemembered | Origin$ Graveyard | Destination$ Exile | SubAbility$ DBRepeat
SVar:DBRepeat:DB$ RepeatEach | RepeatPlayers$ Player | RepeatSubAbility$ DBLoseLife | SubAbility$ DBDraw
SVar:DBLoseLife:DB$ LoseLife | Defined$ Player.IsRemembered | LifeAmount$ X | References$ X
SVar:DBDraw:DB$ Draw | NumCards$ 1
SVar:X:Count$ValidGraveyard Card.RememberedPlayerCtrl
SVar:Y:Count$ChosenNumber
SVar:RemAIDeck:True
SVar:Picture:http://www.wizards.com/global/images/magic/general/grave_consequences.jpg
Oracle:Each player may exile any number of cards from his or her graveyard. Then each player loses 1 life for each card in his or her graveyard.\nDraw a card.

View File

@@ -0,0 +1,10 @@
Name:Psychic Vortex
ManaCost:2 U U
Types:Enchantment
K:Cumulative upkeep:DrawYou<1>:Draw a card.
T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | Execute$ TrigSac | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of your end step, sacrifice a land and discard your hand.
SVar:TrigSac:AB$ Sacrifice | Cost$ 0 | SacValid$ Land | SubAbility$ DBDiscard
SVar:DBDiscard:DB$ Discard | Mode$ Hand
SVar:RemAIDeck:True
SVar:Picture:http://www.wizards.com/global/images/magic/general/psychic_vortex.jpg
Oracle:Cumulative upkeep-Draw a card. (At the beginning of your upkeep, put an age counter on this permanent, then sacrifice it unless you pay its upkeep cost for each age counter on it.)\nAt the beginning of your end step, sacrifice a land and discard your hand.

View File

@@ -36,8 +36,6 @@ public class ReorderZoneEffect extends SpellAbilityEffect {
* </p> * </p>
* @param sa * @param sa
* a {@link forge.card.spellability.SpellAbility} object. * a {@link forge.card.spellability.SpellAbility} object.
* @param af
* a {@link forge.card.ability.AbilityFactory} object.
*/ */
@Override @Override

View File

@@ -111,8 +111,6 @@ public class Cost {
* <p> * <p>
* Constructor for Cost. * Constructor for Cost.
* </p> * </p>
* @param card
* a Card object that the Cost is associated with
* @param parse * @param parse
* a {@link java.lang.String} object. * a {@link java.lang.String} object.
* @param bAbility * @param bAbility
@@ -161,7 +159,6 @@ public class Cost {
this.costParts.add(0, parsedMana); this.costParts.add(0, parsedMana);
} }
// inspect parts to set Sac, {T} and {Q} flags // inspect parts to set Sac, {T} and {Q} flags
for (int iCp = 0; iCp < costParts.size(); iCp++) { for (int iCp = 0; iCp < costParts.size(); iCp++) {
CostPart cp = costParts.get(iCp); CostPart cp = costParts.get(iCp);
@@ -316,6 +313,10 @@ public class Cost {
final String description = splitStr.length > 2 ? splitStr[2] : null; final String description = splitStr.length > 2 ? splitStr[2] : null;
return new CostReveal(splitStr[0], splitStr[1], description); return new CostReveal(splitStr[0], splitStr[1], description);
} }
if (parse.startsWith("DrawYou<")) {
final String[] splitStr = abCostParse(parse, 1);
return new CostDraw(splitStr[0], "You");
}
if (parse.startsWith("PutCardToLibFromHand<")) { if (parse.startsWith("PutCardToLibFromHand<")) {
final String[] splitStr = abCostParse(parse, 4); final String[] splitStr = abCostParse(parse, 4);

View File

@@ -20,6 +20,7 @@ import forge.card.cardfactory.CardFactoryUtil;
import forge.card.cost.Cost; import forge.card.cost.Cost;
import forge.card.cost.CostDamage; import forge.card.cost.CostDamage;
import forge.card.cost.CostDiscard; import forge.card.cost.CostDiscard;
import forge.card.cost.CostDraw;
import forge.card.cost.CostExile; import forge.card.cost.CostExile;
import forge.card.cost.CostMill; import forge.card.cost.CostMill;
import forge.card.cost.CostPart; import forge.card.cost.CostPart;
@@ -320,6 +321,19 @@ public class HumanPlay {
p.payLife(amount, null); p.payLife(amount, null);
} }
else if (part instanceof CostDraw) {
final int amount = getAmountFromPart(part, source, sourceAbility);
if (!p.canDraw()) {
return false;
}
if (false == GuiDialog.confirm(source, "Do you want to draw " + amount + " card(s)?" + orString)) {
return false;
}
p.drawCards(amount);
}
else if (part instanceof CostMill) { else if (part instanceof CostMill) {
final int amount = getAmountFromPart(part, source, sourceAbility); final int amount = getAmountFromPart(part, source, sourceAbility);
final List<Card> list = p.getCardsIn(ZoneType.Library); final List<Card> list = p.getCardsIn(ZoneType.Library);