From 8101af1fa22c0c5cc2668dc13237d4d782840b69 Mon Sep 17 00:00:00 2001 From: Agetian Date: Sat, 25 May 2019 19:02:33 +0300 Subject: [PATCH 1/3] - Fixed Mox Tantalite. --- forge-gui/res/cardsfolder/upcoming/mox_tantalite.txt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/forge-gui/res/cardsfolder/upcoming/mox_tantalite.txt b/forge-gui/res/cardsfolder/upcoming/mox_tantalite.txt index 5720e5e7dd0..67549cbd7aa 100644 --- a/forge-gui/res/cardsfolder/upcoming/mox_tantalite.txt +++ b/forge-gui/res/cardsfolder/upcoming/mox_tantalite.txt @@ -1,7 +1,6 @@ Name:Mox Tantalite -ManaCost: +ManaCost:no cost Types:Artifact K:Suspend:3:0 -AI:RemoveDeck:All A:AB$ Mana | Cost$ T | Produced$ Any | SpellDescription$ Add one mana of any color. Oracle:Suspend 3—{0} (Rather than cast this card from your hand, pay {0} and exile it with three time counters on it. At the beginning of your upkeep, remove a time counter. When the last is removed, cast it without paying its mana cost.)\n{T}: Add one mana of any color. From a7ee1fa5b16d5ab05358eb90fb2e8d82547c93e6 Mon Sep 17 00:00:00 2001 From: Agetian Date: Tue, 28 May 2019 07:38:26 +0300 Subject: [PATCH 2/3] - Added puzzle PS_WAR4. --- forge-gui/res/puzzle/PS_WAR4.pzl | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 forge-gui/res/puzzle/PS_WAR4.pzl diff --git a/forge-gui/res/puzzle/PS_WAR4.pzl b/forge-gui/res/puzzle/PS_WAR4.pzl new file mode 100644 index 00000000000..915d3ab31e9 --- /dev/null +++ b/forge-gui/res/puzzle/PS_WAR4.pzl @@ -0,0 +1,17 @@ +[metadata] +Name:Possibility Storm - War of the Spark #04 +URL:http://www.possibilitystorm.com/wp-content/uploads/2019/05/114.-WAR4.jpg +Goal:Win +Turns:1 +Difficulty:Mythic +Description:Win this turn. Assume your opponent has no cards in hand. Assume your library has 6 lands remaining, all of which are basics in your colors. All other cards in your library are irrelevant. +[state] +humanlife=20 +ailife=19 +turn=1 +activeplayer=human +activephase=MAIN1 +humanhand=Vivien Reid;Forest;Sylvan Awakening;Scapeshift;Kaya's Ghostform +humanlibrary=Swamp;Swamp;Mountain;Mountain;Forest;Forest;No Escape;No Escape;No Escape;No Escape +humanbattlefield=Evolution Sage;Angrath, the Flame-Chained|Counters:LOYALTY=4;Vraska, Relic Seeker|Counters:LOYALTY=1;Marwyn, the Nurturer|Counters:P1P1=1;Overgrown Tomb|NoETBTrigs;Overgrown Tomb|NoETBTrigs;Overgrown Tomb|NoETBTrigs;Stomping Ground|NoETBTrigs;Stomping Ground|NoETBTrigs +aibattlefield=World Shaper;Benalish Marshal;Pelt Collector;Siegehorn Ceratops From 2da373b119bd50a1fec06c1e5741fef70cbb56a6 Mon Sep 17 00:00:00 2001 From: Agetian Date: Tue, 28 May 2019 07:53:30 +0300 Subject: [PATCH 3/3] - Fix DamageDealAi PayX setup --- .../src/main/java/forge/ai/ability/DamageDealAi.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/forge-ai/src/main/java/forge/ai/ability/DamageDealAi.java b/forge-ai/src/main/java/forge/ai/ability/DamageDealAi.java index 32a604679d2..021a7a6639c 100644 --- a/forge-ai/src/main/java/forge/ai/ability/DamageDealAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/DamageDealAi.java @@ -75,7 +75,7 @@ public class DamageDealAi extends DamageAiBase { // Set PayX here to maximum value. dmg = ComputerUtilMana.determineLeftoverMana(sa, ai); - sa.setSVar("PayX", Integer.toString(dmg)); + source.setSVar("PayX", Integer.toString(dmg)); } else if (sa.getSVar(damage).equals("Count$CardsInYourHand") && source.getZone().is(ZoneType.Hand)) { dmg--; // the card will be spent casting the spell, so actual damage is 1 less } @@ -115,7 +115,7 @@ public class DamageDealAi extends DamageAiBase { } // Set PayX here to maximum value. It will be adjusted later depending on the target. - sa.setSVar("PayX", Integer.toString(dmg)); + source.setSVar("PayX", Integer.toString(dmg)); } else if (sa.getSVar(damage).contains("InYourHand") && source.getZone().is(ZoneType.Hand)) { dmg = CardFactoryUtil.xCount(source, sa.getSVar(damage)) - 1; // the card will be spent casting the spell, so actual damage is 1 less } else if (sa.getSVar(damage).equals("TargetedPlayer$CardsInHand")) { @@ -283,7 +283,7 @@ public class DamageDealAi extends DamageAiBase { if (sourceName.equals("Crater's Claws") && ai.hasFerocious()) { actualPay = actualPay > 2 ? actualPay - 2 : 0; } - sa.setSVar("PayX", Integer.toString(actualPay)); + source.setSVar("PayX", Integer.toString(actualPay)); } } @@ -941,7 +941,7 @@ public class DamageDealAi extends DamageAiBase { if (damage.equals("X") && sa.getSVar(damage).equals("Count$xPaid")) { // Set PayX here to maximum value. dmg = ComputerUtilMana.determineLeftoverMana(sa, ai); - sa.setSVar("PayX", Integer.toString(dmg)); + source.setSVar("PayX", Integer.toString(dmg)); } final TargetRestrictions tgt = sa.getTargetRestrictions(); @@ -971,7 +971,7 @@ public class DamageDealAi extends DamageAiBase { } } - sa.setSVar("PayX", Integer.toString(actualPay)); + source.setSVar("PayX", Integer.toString(actualPay)); } } @@ -1031,7 +1031,7 @@ public class DamageDealAi extends DamageAiBase { saTgt.resetTargets(); saTgt.getTargets().add(tgtCreature != null && dmg < opponent.getLife() ? tgtCreature : opponent); - sa.setSVar("PayX", Integer.toString(dmg)); + source.setSVar("PayX", Integer.toString(dmg)); return true; }