- Added the parameter "UnlessSwitched" to SpellAbilities (to switch paid and unpaid commands).

- Added Dash Hopes.
This commit is contained in:
Sloth
2012-12-03 10:04:05 +00:00
parent 0d2f953698
commit fdbabf7c53
5 changed files with 26 additions and 19 deletions

1
.gitattributes vendored
View File

@@ -2221,6 +2221,7 @@ res/cardsfolder/d/daru_sanctifier.txt svneol=native#text/plain
res/cardsfolder/d/daru_spiritualist.txt -text res/cardsfolder/d/daru_spiritualist.txt -text
res/cardsfolder/d/daru_stinger.txt -text res/cardsfolder/d/daru_stinger.txt -text
res/cardsfolder/d/daru_warchief.txt svneol=native#text/plain res/cardsfolder/d/daru_warchief.txt svneol=native#text/plain
res/cardsfolder/d/dash_hopes.txt -text
res/cardsfolder/d/daunting_defender.txt svneol=native#text/plain res/cardsfolder/d/daunting_defender.txt svneol=native#text/plain
res/cardsfolder/d/dauntless_dourbark.txt svneol=native#text/plain res/cardsfolder/d/dauntless_dourbark.txt svneol=native#text/plain
res/cardsfolder/d/dauntless_escort.txt svneol=native#text/plain res/cardsfolder/d/dauntless_escort.txt svneol=native#text/plain

View File

@@ -0,0 +1,12 @@
Name:Dash Hopes
ManaCost:B B
Types:Instant
Text:no text
T:Mode$ SpellCast | ValidCard$ Card.Self | Execute$ TrigCounter | TriggerDescription$ When you cast CARDNAME, any player may pay 5 life. If a player does, counter CARDNAME.
SVar:TrigCounter:DB$ Counter | Cost$ 0 | UnlessCost$ PayLife<5> | Defined$ TriggeredSpellAbility | UnlessPayer$ Player | UnlessSwitched$ True
A:SP$ Counter | Cost$ B B | TargetType$ Spell | ValidTgts$ Card | SpellDescription$ Counter target spell.
SVar:Rarity:Common
SVar:Picture:http://www.wizards.com/global/images/magic/general/dash_hopes.jpg
SetInfo:PLC|Common|http://magiccards.info/scans/en/pc/68.jpg
Oracle:When you cast Dash Hopes, any player may pay 5 life. If a player does, counter Dash Hopes.\nCounter target spell.
End

View File

@@ -10,7 +10,7 @@ K:Annihilator 6
T:Mode$ ChangesZone | Origin$ Any | Destination$ Graveyard | ValidCard$ Creature.Self | Execute$ TrigShuffle | TriggerDescription$ When CARDNAME is put into a graveyard from anywhere, its owner shuffles his or her graveyard into his or her library. T:Mode$ ChangesZone | Origin$ Any | Destination$ Graveyard | ValidCard$ Creature.Self | Execute$ TrigShuffle | TriggerDescription$ When CARDNAME is put into a graveyard from anywhere, its owner shuffles his or her graveyard into his or her library.
SVar:TrigShuffle:AB$ChangeZoneAll | Cost$ 0 | Defined$ TriggeredCardController | ChangeType$ Card | Origin$ Graveyard | Destination$ Library | Shuffle$ True SVar:TrigShuffle:AB$ChangeZoneAll | Cost$ 0 | Defined$ TriggeredCardController | ChangeType$ Card | Origin$ Graveyard | Destination$ Library | Shuffle$ True
T:Mode$ SpellCast | ValidCard$ Card.Self | Execute$ TrigAddTurn | TriggerDescription$ When you cast CARDNAME, take an extra turn after this one. T:Mode$ SpellCast | ValidCard$ Card.Self | Execute$ TrigAddTurn | TriggerDescription$ When you cast CARDNAME, take an extra turn after this one.
SVar:TrigAddTurn:AB$AddTurn | Cost$ 0 | Defined$ You | NumTurns$ 1 SVar:TrigAddTurn:AB$ AddTurn | Cost$ 0 | Defined$ You | NumTurns$ 1
SVar:Rarity:Mythic SVar:Rarity:Mythic
SVar:Picture:http://www.wizards.com/global/images/magic/general/emrakul_the_aeons_torn.jpg SVar:Picture:http://www.wizards.com/global/images/magic/general/emrakul_the_aeons_torn.jpg
SetInfo:ROE|Mythic|http://magiccards.info/scans/en/roe/4.jpg SetInfo:ROE|Mythic|http://magiccards.info/scans/en/roe/4.jpg

View File

@@ -1580,7 +1580,7 @@ public class AbilityFactory {
} }
}; };
final Command paidCommand = new Command() { Command paidCommand = new Command() {
private static final long serialVersionUID = 8094833091127334678L; private static final long serialVersionUID = 8094833091127334678L;
@Override @Override
@@ -1601,6 +1601,13 @@ public class AbilityFactory {
AbilityFactory.resolveSubAbilities(sa, usedStack); AbilityFactory.resolveSubAbilities(sa, usedStack);
} }
}; };
if (sa.hasParam("UnlessSwitched")) {
final Command dummy = paidCommand;
paidCommand = unpaidCommand;
unpaidCommand = dummy;
}
boolean paid = false; boolean paid = false;
for (Player payer : payers) { for (Player payer : payers) {
if (payer.isComputer()) { if (payer.isComputer()) {

View File

@@ -420,18 +420,17 @@ public class TriggerHandler {
} }
// Torpor Orb check // Torpor Orb check
if (!regtrig.isStatic() && mode.equals(TriggerType.ChangesZone)) { if (game.getStaticEffects().getGlobalRuleChange(GlobalRuleChange.noCreatureETBTriggers)
&& !regtrig.isStatic() && mode.equals(TriggerType.ChangesZone)) {
if (runParams.get("Destination") instanceof String) { if (runParams.get("Destination") instanceof String) {
String dest = (String) runParams.get("Destination"); String dest = (String) runParams.get("Destination");
if (dest.equals("Battlefield") && runParams.get("Card") instanceof Card) { if (dest.equals("Battlefield") && runParams.get("Card") instanceof Card) {
Card card = (Card) runParams.get("Card"); Card card = (Card) runParams.get("Card");
if (card.isCreature() if (card.isCreature()) {
&& game.getStaticEffects().getGlobalRuleChange(GlobalRuleChange.noCreatureETBTriggers)) {
return false; return false;
} }
} }
} }
} // Torpor Orb check } // Torpor Orb check
// Any trigger should cause the phase not to skip // Any trigger should cause the phase not to skip
@@ -484,12 +483,10 @@ public class TriggerHandler {
} }
sa.setStackDescription(sa.toString()); sa.setStackDescription(sa.toString());
// ---TODO - for Charms to supports AI, this needs to be removed
//if (sa[0].getActivatingPlayer().isHuman()) {
if (sa.getApi() == ApiType.Charm && !sa.isWrapper()) { if (sa.getApi() == ApiType.Charm && !sa.isWrapper()) {
CharmEffect.makeChoices(sa); CharmEffect.makeChoices(sa);
} }
//}
Player decider = null; Player decider = null;
boolean mand = false; boolean mand = false;
if (triggerParams.containsKey("OptionalDecider")) { if (triggerParams.containsKey("OptionalDecider")) {
@@ -515,15 +512,6 @@ public class TriggerHandler {
wrapperAbility.setTrigger(true); wrapperAbility.setTrigger(true);
wrapperAbility.setMandatory(isMandatory); wrapperAbility.setMandatory(isMandatory);
wrapperAbility.setDescription(wrapperAbility.getStackDescription()); wrapperAbility.setDescription(wrapperAbility.getStackDescription());
/*
* if(host.getController().isHuman()) {
* Singletons.getModel().getGameAction().playSpellAbility(wrapperAbility); } else {
* wrapperAbility.doTrigger(isMandatory);
* ComputerUtil.playStack(wrapperAbility); }
*/
// Card src = (Card)(sa[0].getSourceCard().getTriggeringObject("Card"));
// System.out.println("Trigger going on stack for "+mode+". Card = "+src);
if (regtrig.isStatic()) { if (regtrig.isStatic()) {
if (wrapperAbility.getActivatingPlayer().isHuman()) { if (wrapperAbility.getActivatingPlayer().isHuman()) {
@@ -532,7 +520,6 @@ public class TriggerHandler {
wrapperAbility.doTrigger(isMandatory); wrapperAbility.doTrigger(isMandatory);
ComputerUtil.playNoStack(wrapperAbility.getActivatingPlayer(), wrapperAbility); ComputerUtil.playNoStack(wrapperAbility.getActivatingPlayer(), wrapperAbility);
} }
//Singletons.getModel().getGameAction().playSpellAbilityNoStack(wrapperAbility, false);
} else { } else {
game.getStack().addSimultaneousStackEntry(wrapperAbility); game.getStack().addSimultaneousStackEntry(wrapperAbility);
} }