mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-15 10:18:01 +00:00
Merge remote-tracking branch 'core/master'
This commit is contained in:
@@ -97,6 +97,7 @@ public class DigUntilEffect extends SpellAbilityEffect {
|
|||||||
}
|
}
|
||||||
|
|
||||||
final boolean remember = sa.hasParam("RememberFound");
|
final boolean remember = sa.hasParam("RememberFound");
|
||||||
|
final boolean imprint = sa.hasParam("ImprintFound");
|
||||||
|
|
||||||
final ZoneType foundDest = ZoneType.smartValueOf(sa.getParam("FoundDestination"));
|
final ZoneType foundDest = ZoneType.smartValueOf(sa.getParam("FoundDestination"));
|
||||||
final int foundLibPos = AbilityUtils.calculateAmount(host, sa.getParam("FoundLibraryPosition"), sa);
|
final int foundLibPos = AbilityUtils.calculateAmount(host, sa.getParam("FoundLibraryPosition"), sa);
|
||||||
@@ -135,6 +136,9 @@ public class DigUntilEffect extends SpellAbilityEffect {
|
|||||||
if (remember) {
|
if (remember) {
|
||||||
host.addRemembered(c);
|
host.addRemembered(c);
|
||||||
}
|
}
|
||||||
|
if (imprint) {
|
||||||
|
host.addImprintedCard(c);
|
||||||
|
}
|
||||||
if (found.size() == untilAmount) {
|
if (found.size() == untilAmount) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1175,6 +1175,11 @@ public class CardFactoryUtil {
|
|||||||
if (sq[0].contains("Threshold")) {
|
if (sq[0].contains("Threshold")) {
|
||||||
return doXMath(Integer.parseInt(sq[cc.hasThreshold() ? 1 : 2]), m, c);
|
return doXMath(Integer.parseInt(sq[cc.hasThreshold() ? 1 : 2]), m, c);
|
||||||
}
|
}
|
||||||
|
if (sq[0].contains("Averna")) {
|
||||||
|
if (cc.hasKeyword("As you cascade, you may put a land card from among the exiled cards onto the" +
|
||||||
|
" battlefield tapped.")) { return 1; }
|
||||||
|
else return 0;
|
||||||
|
}
|
||||||
if (sq[0].startsWith("Kicked")) {
|
if (sq[0].startsWith("Kicked")) {
|
||||||
return doXMath(Integer.parseInt(sq[c.getKickerMagnitude() > 0 ? 1 : 2]), m, c);
|
return doXMath(Integer.parseInt(sq[c.getKickerMagnitude() > 0 ? 1 : 2]), m, c);
|
||||||
}
|
}
|
||||||
@@ -2354,25 +2359,29 @@ public class CardFactoryUtil {
|
|||||||
inst.addTrigger(bushidoTrigger1);
|
inst.addTrigger(bushidoTrigger1);
|
||||||
inst.addTrigger(bushidoTrigger2);
|
inst.addTrigger(bushidoTrigger2);
|
||||||
} else if (keyword.equals("Cascade")) {
|
} else if (keyword.equals("Cascade")) {
|
||||||
final StringBuilder trigScript = new StringBuilder(
|
final StringBuilder trigScript = new StringBuilder("Mode$ SpellCast | ValidCard$ Card.Self" +
|
||||||
"Mode$ SpellCast | ValidCard$ Card.Self | Secondary$ True | " +
|
" | Secondary$ True | TriggerDescription$ Cascade - CARDNAME");
|
||||||
"TriggerDescription$ Cascade - CARDNAME");
|
|
||||||
|
|
||||||
final String abString = "DB$ DigUntil | Defined$ You | Amount$ 1 | Valid$ "
|
|
||||||
+ "Card.nonLand+cmcLTCascadeX | FoundDestination$ Exile | RevealedDestination$"
|
|
||||||
+ " Exile | ImprintRevealed$ True | RememberFound$ True";
|
|
||||||
|
|
||||||
|
final String abString = "DB$ DigUntil | Defined$ You | Amount$ 1 | Valid$ Card.nonLand+cmcLTCascadeX" +
|
||||||
|
" | FoundDestination$ Exile | RevealedDestination$ Exile | ImprintFound$ True" +
|
||||||
|
" | RememberRevealed$ True";
|
||||||
SpellAbility dig = AbilityFactory.getAbility(abString, card);
|
SpellAbility dig = AbilityFactory.getAbility(abString, card);
|
||||||
dig.setSVar("CascadeX", "Count$CardManaCost");
|
dig.setSVar("CascadeX", "Count$CardManaCost");
|
||||||
|
|
||||||
final String dbCascadeCast = "DB$ Play | Defined$ Remembered | WithoutManaCost$ True | Optional$ True";
|
final String dbLandPut = "DB$ ChangeZone | ConditionCheckSVar$ X | ConditionSVarCompare$ EQ1" +
|
||||||
AbilitySub cascadeCast = (AbilitySub)AbilityFactory.getAbility(dbCascadeCast, card);
|
" | Hidden$ True | Origin$ Exile | Destination$ Battlefield | ChangeType$ Land.IsRemembered" +
|
||||||
|
" | ChangeNum$ 1 | Tapped$ True | ForgetChanged$ True" +
|
||||||
|
" | SelectPrompt$ You may select a land to put on the battlefield tapped";
|
||||||
|
AbilitySub landPut = (AbilitySub)AbilityFactory.getAbility(dbLandPut, card);
|
||||||
|
landPut.setSVar("X", "Count$Averna");
|
||||||
|
dig.setSubAbility(landPut);
|
||||||
|
|
||||||
dig.setSubAbility(cascadeCast);
|
final String dbCascadeCast = "DB$ Play | Defined$ Imprinted | WithoutManaCost$ True | Optional$ True";
|
||||||
|
AbilitySub cascadeCast = (AbilitySub)AbilityFactory.getAbility(dbCascadeCast, card);
|
||||||
|
landPut.setSubAbility(cascadeCast);
|
||||||
|
|
||||||
final String dbMoveToLib = "DB$ ChangeZoneAll | ChangeType$ Card.IsRemembered,Card.IsImprinted"
|
final String dbMoveToLib = "DB$ ChangeZoneAll | ChangeType$ Card.IsRemembered,Card.IsImprinted"
|
||||||
+ " | Origin$ Exile | Destination$ Library | RandomOrder$ True | LibraryPosition$ -1";
|
+ " | Origin$ Exile | Destination$ Library | RandomOrder$ True | LibraryPosition$ -1";
|
||||||
|
|
||||||
AbilitySub moveToLib = (AbilitySub)AbilityFactory.getAbility(dbMoveToLib, card);
|
AbilitySub moveToLib = (AbilitySub)AbilityFactory.getAbility(dbMoveToLib, card);
|
||||||
cascadeCast.setSubAbility(moveToLib);
|
cascadeCast.setSubAbility(moveToLib);
|
||||||
|
|
||||||
|
|||||||
6
forge-gui/res/cardsfolder/upcoming/averna_the_chaos_bloom.txt
Executable file
6
forge-gui/res/cardsfolder/upcoming/averna_the_chaos_bloom.txt
Executable file
@@ -0,0 +1,6 @@
|
|||||||
|
Name:Averna, the Chaos Bloom
|
||||||
|
ManaCost:G U R
|
||||||
|
Types:Legendary Creature Elemental Shaman
|
||||||
|
PT:4/2
|
||||||
|
S:Mode$ Continuous | Affected$ You | AddKeyword$ As you cascade, you may put a land card from among the exiled cards onto the battlefield tapped. | Description$ As you cascade, you may put a land card from among the exiled cards onto the battlefield tapped. (Do this after the last card is exiled but before deciding whether to cast a nonland card.)
|
||||||
|
Oracle:As you cascade, you may put a land card from among the exiled cards onto the battlefield tapped. (Do this after the last card is exiled but before deciding whether to cast a nonland card.)
|
||||||
Reference in New Issue
Block a user