- [XLN] Added Search for Azcanta / Azcanta, the Sunken Ruin.

- Minor fix in Welcome to the Fold.
This commit is contained in:
Agetian
2017-09-08 16:03:21 +00:00
parent 6009f097cd
commit 5264873645
5 changed files with 39 additions and 2 deletions

1
.gitattributes vendored
View File

@@ -17288,6 +17288,7 @@ forge-gui/res/cardsfolder/upcoming/ruin_raider.txt -text
forge-gui/res/cardsfolder/upcoming/sanctum_seeker.txt -text forge-gui/res/cardsfolder/upcoming/sanctum_seeker.txt -text
forge-gui/res/cardsfolder/upcoming/sanguine_sacrament.txt -text forge-gui/res/cardsfolder/upcoming/sanguine_sacrament.txt -text
forge-gui/res/cardsfolder/upcoming/savage_stomp.txt -text forge-gui/res/cardsfolder/upcoming/savage_stomp.txt -text
forge-gui/res/cardsfolder/upcoming/search_for_azcanta_azcanta_the_sunken_ruin.txt -text
forge-gui/res/cardsfolder/upcoming/sentinel_totem.txt -text forge-gui/res/cardsfolder/upcoming/sentinel_totem.txt -text
forge-gui/res/cardsfolder/upcoming/settle_the_wreckage.txt -text forge-gui/res/cardsfolder/upcoming/settle_the_wreckage.txt -text
forge-gui/res/cardsfolder/upcoming/shapers_of_the_nature.txt -text forge-gui/res/cardsfolder/upcoming/shapers_of_the_nature.txt -text

View File

@@ -13,6 +13,7 @@ import forge.game.card.CardPredicates.Presets;
import forge.game.phase.PhaseHandler; import forge.game.phase.PhaseHandler;
import forge.game.phase.PhaseType; import forge.game.phase.PhaseType;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.player.PlayerActionConfirmMode;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.game.spellability.TargetRestrictions; import forge.game.spellability.TargetRestrictions;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;
@@ -248,4 +249,9 @@ public class SetStateAi extends SpellAbilityAi {
// but for more cleaner way use Evaluate for check // but for more cleaner way use Evaluate for check
return valueCard <= valueTransformed; return valueCard <= valueTransformed;
} }
public boolean confirmAction(Player player, SpellAbility sa, PlayerActionConfirmMode mode, String message) {
// TODO: improve the AI for when it may want to transform something that's optional to transform
return true;
}
} }

View File

@@ -5,10 +5,12 @@ import forge.game.GameLogEntryType;
import forge.game.ability.SpellAbilityEffect; import forge.game.ability.SpellAbilityEffect;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.card.CounterType; import forge.game.card.CounterType;
import forge.game.zone.ZoneType;
import forge.game.event.GameEventCardStatsChanged; import forge.game.event.GameEventCardStatsChanged;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.player.PlayerActionConfirmMode;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.game.zone.ZoneType;
import forge.util.TextUtil;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
@@ -51,6 +53,7 @@ public class SetStateEffect extends SpellAbilityEffect {
final boolean morphUp = sa.hasParam("MorphUp"); final boolean morphUp = sa.hasParam("MorphUp");
final boolean manifestUp = sa.hasParam("ManifestUp"); final boolean manifestUp = sa.hasParam("ManifestUp");
final boolean hiddenAgenda = sa.hasParam("HiddenAgenda"); final boolean hiddenAgenda = sa.hasParam("HiddenAgenda");
final boolean optional = sa.hasParam("Optional");
for (final Card tgt : tgtCards) { for (final Card tgt : tgtCards) {
if (sa.usesTargeting() && !tgt.canBeTargetedBy(sa)) { if (sa.usesTargeting() && !tgt.canBeTargetedBy(sa)) {
@@ -73,6 +76,13 @@ public class SetStateEffect extends SpellAbilityEffect {
} }
} }
if (optional) {
String message = TextUtil.concatWithSpace("Transform", host.getName(), "?");
if (!p.getController().confirmAction(sa, PlayerActionConfirmMode.Random, message)) {
return;
}
}
boolean hasTransformed = false; boolean hasTransformed = false;
if (morphUp) { if (morphUp) {
hasTransformed = tgt.turnFaceUp(); hasTransformed = tgt.turnFaceUp();

View File

@@ -0,0 +1,20 @@
Name:Search for Azcanta
ManaCost:1 U
Types:Legendary Enchantment
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDig | TriggerDescription$ At the beginning of your upkeep, look at the top card of your library. You may put it into your graveyard. Then if you have seven or more cards in your graveyard, you may transform CARDNAME.
SVar:TrigDig:DB$ Dig | DigNum$ 1 | DestinationZone$ Graveyard | Optional$ True | LibraryPosition2$ 0 | SubAbility$ DBTransform | SpellDescription$ Look at the top card of your library. You may put that card into your graveyard. Then if you have seven or more cards in your graveyard, you may transform CARDNAME.
SVar:DBTransform:DB$ SetState | Defined$ Self | Mode$ Transform | Optional$ True | ConditionCheckSVar$ GraveCount | ConditionSVarCompare$ GE7 | References$ GraveCount
SVar:GraveCount:Count$ValidGraveyard Card.YouOwn
AlternateMode:DoubleFaced
SVar:Picture:http://www.wizards.com/global/images/magic/general/search_for_azcanta.jpg
Oracle:At the beginning of your upkeep, look at the top card of your library. You may put it into your graveyard. Then if you have seven or more cards in your graveyard, you may transform Search for Azcanta.
ALTERNATE
Name:Azcanta, the Sunken Ruin
ManaCost:no cost
Types:Legendary Land
A:AB$ Mana | Cost$ T | Produced$ U | Amount$ 1 | SpellDescription$ Add {U} to your mana pool.
A:AB$ Dig | Cost$ 2 U T | DigNum$ 4 | ChangeNum$ 1 | Optional$ True | ChangeValid$ Card.nonCreature+nonLand
SVar:Picture:http://www.wizards.com/global/images/magic/general/azcanta_the_sunken_ruin.jpg
Oracle:(Transforms from Search for Azcanta.)\n{T}: Add {U} to your mana pool.\n{2}{U}, {T}: Look at the top four cards of your library. You may reveal a noncreature, nonland card from among them and put it into your hand. Put the rest on the bottom of your library in any order.

View File

@@ -2,7 +2,7 @@ Name:Welcome to the Fold
ManaCost:2 U U ManaCost:2 U U
Types:Sorcery Types:Sorcery
K:Madness:X U U K:Madness:X U U
A:SP$ GainControl | Cost$ 2 U U | ValidTgts$ Creature | TgtPrompt$ Select target creature | ConditionCheckSVar$ Z | ConditionSVarCompare$ EQ1 | References$ X, Y, Z | SpellDescription$ Gain control of target creature if its toughness is 2 or less. If CARDNAME's madness cost was paid, instead gain control of that creature if its toughness is X or less. A:SP$ GainControl | Cost$ 2 U U | ValidTgts$ Creature | TgtPrompt$ Select target creature | ConditionCheckSVar$ Z | ConditionSVarCompare$ EQ1 | References$ X,Y,Z | SpellDescription$ Gain control of target creature if its toughness is 2 or less. If CARDNAME's madness cost was paid, instead gain control of that creature if its toughness is X or less.
SVar:Y:Count$Madness.X.2 SVar:Y:Count$Madness.X.2
SVar:X:Count$xPaid SVar:X:Count$xPaid
SVar:Z:Targeted$Valid Creature.toughnessLEY SVar:Z:Targeted$Valid Creature.toughnessLEY