mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 04:38:00 +00:00
- Implemented a better fix for Explorer's Scope that does not break a ton of other AB Dig abilities. Also fixes Quest for Ula's Temple.
- Note, however, that this fix as it is introduces an additional complication for card scripting in the form of extra parameters ForcedRevealToController / ShowOptionalAbilityPrompt. I tried making these global and based on card logic but there are enough card scripts that utilize ChangeNum$ All + NumToDig$ 1 in different ways that making it global in different ways tends to break different card scripts. Better ideas are welcome.
This commit is contained in:
@@ -189,18 +189,24 @@ public class DigEffect extends SpellAbilityEffect {
|
|||||||
andOrCards = new CardCollection();
|
andOrCards = new CardCollection();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!sa.hasParam("Reveal")) {
|
if (sa.hasParam("ForcedRevealToController")) {
|
||||||
// make sure at least the controller gets to see the card
|
// TODO: this parameter is used on Explorer's Scope to ensure the card is shown to the ability controller
|
||||||
|
// (making this global for ChangeNum=All,NumToDig=1 causes cards like Quest for Ula's Temple to reveal the card multiple times,
|
||||||
|
// but something has to be done about this to make it more universal)
|
||||||
game.getAction().revealTo(top, player);
|
game.getAction().revealTo(top, player);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Optional ability
|
|
||||||
String message = sa.hasParam("OptionalMessage") ? sa.getParam("OptionalMessage") : "Would you like to proceed with the optional ability for " + host.getName() + "?\n\n(" + sa.getDescription() + ")";
|
|
||||||
if ( !valid.isEmpty() && sa.hasParam("Optional") && !p.getController().confirmAction(sa, null, message) )
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (changeAll) {
|
if (changeAll) {
|
||||||
movedCards = new CardCollection(valid);
|
movedCards = new CardCollection(valid);
|
||||||
|
|
||||||
|
if (optional && !valid.isEmpty() && sa.hasParam("ShowOptionalAbilityPrompt")) {
|
||||||
|
// TODO: Without ShowOptionalAbilityPrompt, ChangeAll mode with NumToDig = 1 does not give the player any confirmation request
|
||||||
|
// (however, making it global for this mode causes it to appear for cards with subabilities which do not require extra
|
||||||
|
// prompting, e.g. Write into Being or Quest for Ula's Temple).
|
||||||
|
if (!p.getController().confirmAction(sa, null, sa.getParam("ShowOptionalAbilityPrompt"))) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (sa.hasParam("RandomChange")) {
|
else if (sa.hasParam("RandomChange")) {
|
||||||
int numChanging = Math.min(destZone1ChangeNum, valid.size());
|
int numChanging = Math.min(destZone1ChangeNum, valid.size());
|
||||||
|
|||||||
@@ -3,6 +3,6 @@ ManaCost:1
|
|||||||
Types:Artifact Equipment
|
Types:Artifact Equipment
|
||||||
K:Equip 1
|
K:Equip 1
|
||||||
T:Mode$ Attacks | ValidCard$ Card.AttachedBy | Execute$ TrigDig | TriggerDescription$ Whenever equipped creature attacks, look at the top card of your library. If it's a land card, you may put it onto the battlefield tapped.
|
T:Mode$ Attacks | ValidCard$ Card.AttachedBy | Execute$ TrigDig | TriggerDescription$ Whenever equipped creature attacks, look at the top card of your library. If it's a land card, you may put it onto the battlefield tapped.
|
||||||
SVar:TrigDig:AB$Dig | Cost$ 0 | DigNum$ 1 | ChangeNum$ All | Optional$ True | OptionalMessage$ Would you like to put the land onto the battlefield tapped? | ChangeValid$ Land | DestinationZone$ Battlefield | Tapped$ True | LibraryPosition2$ 0
|
SVar:TrigDig:AB$Dig | Cost$ 0 | DigNum$ 1 | ChangeNum$ All | ForcedRevealToController$ True | Optional$ True | ShowOptionalAbilityPrompt$ Would you like to put the land onto the battlefield tapped? | ChangeValid$ Land | DestinationZone$ Battlefield | Tapped$ True | LibraryPosition2$ 0
|
||||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/explorers_scope.jpg
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/explorers_scope.jpg
|
||||||
Oracle:Whenever equipped creature attacks, look at the top card of your library. If it's a land card, you may put it onto the battlefield tapped.\nEquip {1} ({1}: Attach to target creature you control. Equip only as a sorcery.)
|
Oracle:Whenever equipped creature attacks, look at the top card of your library. If it's a land card, you may put it onto the battlefield tapped.\nEquip {1} ({1}: Attach to target creature you control. Equip only as a sorcery
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ ManaCost:U
|
|||||||
Types:Enchantment
|
Types:Enchantment
|
||||||
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ TrigDig | TriggerZones$ Battlefield | OptionalDecider$ You | TriggerDescription$ At the beginning of your upkeep, you may look at the top card of your library. If it's a creature card, you may reveal it and put a quest counter on Quest for CARDNAME.
|
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ TrigDig | TriggerZones$ Battlefield | OptionalDecider$ You | TriggerDescription$ At the beginning of your upkeep, you may look at the top card of your library. If it's a creature card, you may reveal it and put a quest counter on Quest for CARDNAME.
|
||||||
SVar:TrigDig:AB$ Dig | Cost$ 0 | DigNum$ 1 | DestinationZone$ Library | LibraryPosition$ 0 | LibraryPosition2$ 0 | SubAbility$ TrigDig2
|
SVar:TrigDig:AB$ Dig | Cost$ 0 | DigNum$ 1 | DestinationZone$ Library | LibraryPosition$ 0 | LibraryPosition2$ 0 | SubAbility$ TrigDig2
|
||||||
SVar:TrigDig2:DB$ Dig | Cost$ 0 | DigNum$ 1 | ChangeNum$ All | RevealValid$ Creature | ChangeValid$ Creature | Optional$ True | DestinationZone$ Library | LibraryPosition$ 0 | LibraryPosition2$ 0 | RememberChanged$ True | SubAbility$ DBPutCounter
|
SVar:TrigDig2:DB$ Dig | Cost$ 0 | DigNum$ 1 | ChangeNum$ All | RevealValid$ Creature | ChangeValid$ Creature | Optional$ True | ShowOptionalAbilityPrompt$ Would you like to reveal the creature and put a quest counter on Quest for Ula's Temple? | DestinationZone$ Library | LibraryPosition$ 0 | LibraryPosition2$ 0 | RememberChanged$ True | SubAbility$ DBPutCounter
|
||||||
SVar:DBPutCounter:DB$ PutCounter | CounterType$ QUEST | CounterNum$ 1 | Defined$ Self | ConditionDefined$ Remembered | ConditionPresent$ Creature | ConditionCompare$ EQ1 | SubAbility$ DBCleanup
|
SVar:DBPutCounter:DB$ PutCounter | CounterType$ QUEST | CounterNum$ 1 | Defined$ Self | ConditionDefined$ Remembered | ConditionPresent$ Creature | ConditionCompare$ EQ1 | SubAbility$ DBCleanup
|
||||||
T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ Player | Execute$ TrigChangeZone | OptionalDecider$ You | TriggerZones$ Battlefield | IsPresent$ Card.Self+counters_GE3_QUEST | PresentCompare$ EQ1 | TriggerDescription$ At the beginning of each end step, if there are three or more quest counters on Quest for CARDNAME, you may put a Kraken, Leviathan, Octopus, or Serpent creature card from your hand onto the battlefield.
|
T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ Player | Execute$ TrigChangeZone | OptionalDecider$ You | TriggerZones$ Battlefield | IsPresent$ Card.Self+counters_GE3_QUEST | PresentCompare$ EQ1 | TriggerDescription$ At the beginning of each end step, if there are three or more quest counters on Quest for CARDNAME, you may put a Kraken, Leviathan, Octopus, or Serpent creature card from your hand onto the battlefield.
|
||||||
SVar:TrigChangeZone:AB$ ChangeZone | Cost$ 0 | Origin$ Hand | Destination$ Battlefield | ChangeType$ Creature.Kraken,Creature.Leviathan,Creature.Octopus,Creature.Serpent | ChangeNum$ 1 | Hidden$ True
|
SVar:TrigChangeZone:AB$ ChangeZone | Cost$ 0 | Origin$ Hand | Destination$ Battlefield | ChangeType$ Creature.Kraken,Creature.Leviathan,Creature.Octopus,Creature.Serpent | ChangeNum$ 1 | Hidden$ True
|
||||||
|
|||||||
Reference in New Issue
Block a user