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; } 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