diff --git a/forge-game/src/main/java/forge/game/ability/AbilityUtils.java b/forge-game/src/main/java/forge/game/ability/AbilityUtils.java index ab333dede5b..1620fcf3cf9 100644 --- a/forge-game/src/main/java/forge/game/ability/AbilityUtils.java +++ b/forge-game/src/main/java/forge/game/ability/AbilityUtils.java @@ -1325,7 +1325,10 @@ public class AbilityUtils { } } else if (defined.equals("SourceFirstSpell")) { - sas.add(card.getFirstSpellAbility()); + SpellAbility spell = game.getStack().getSpellMatchingHost(card); + if (spell != null) { + sas.add(spell); + } } else if (defined.startsWith("Triggered") && sa instanceof SpellAbility) { final SpellAbility root = ((SpellAbility)sa).getRootAbility(); @@ -1362,8 +1365,7 @@ public class AbilityUtils { if (instanceSA != null) { sas.add(instanceSA); } - } - else { + } else { sas.add(targetSpell); } } diff --git a/forge-game/src/main/java/forge/game/ability/SpellAbilityEffect.java b/forge-game/src/main/java/forge/game/ability/SpellAbilityEffect.java index 8bc98502144..e9483165ec8 100644 --- a/forge-game/src/main/java/forge/game/ability/SpellAbilityEffect.java +++ b/forge-game/src/main/java/forge/game/ability/SpellAbilityEffect.java @@ -579,7 +579,7 @@ public abstract class SpellAbilityEffect { PlayerCollection defendingPlayers = AbilityUtils.getDefinedPlayers(host, attacking, sa); defs = new FCollection<>(); for (Player p : defendingPlayers) { - defs.addAll(game.getCombat().getDefendersControlledBy(p)); + defs.addAll(combat.getDefendersControlledBy(p)); } } else if ("True".equalsIgnoreCase(attacking)) { defs = (FCollection) combat.getDefenders(); diff --git a/forge-game/src/main/java/forge/game/replacement/ReplaceToken.java b/forge-game/src/main/java/forge/game/replacement/ReplaceToken.java index 73486000a6c..db3242e00ac 100644 --- a/forge-game/src/main/java/forge/game/replacement/ReplaceToken.java +++ b/forge-game/src/main/java/forge/game/replacement/ReplaceToken.java @@ -68,7 +68,6 @@ public class ReplaceToken extends ReplacementEffect { sa.setReplacingObject(AbilityKey.Player, runParams.get(AbilityKey.Affected)); } - public int filterAmount(final TokenCreateTable table) { return table.getFilterAmount(getParamOrDefault("ValidPlayer", null), getParamOrDefault("ValidToken", null), this); } diff --git a/forge-game/src/main/java/forge/game/spellability/SpellAbility.java b/forge-game/src/main/java/forge/game/spellability/SpellAbility.java index 0769df7d7b2..5bfc375139f 100644 --- a/forge-game/src/main/java/forge/game/spellability/SpellAbility.java +++ b/forge-game/src/main/java/forge/game/spellability/SpellAbility.java @@ -2102,7 +2102,6 @@ public abstract class SpellAbility extends CardTraitBase implements ISpellAbilit public boolean isCumulativeupkeep() { return cumulativeupkeep; } - public void setCumulativeupkeep(boolean cumulativeupkeep0) { cumulativeupkeep = cumulativeupkeep0; } diff --git a/forge-game/src/main/java/forge/game/staticability/StaticAbilityPanharmonicon.java b/forge-game/src/main/java/forge/game/staticability/StaticAbilityPanharmonicon.java index 1bb9c64a28e..83fbc809772 100644 --- a/forge-game/src/main/java/forge/game/staticability/StaticAbilityPanharmonicon.java +++ b/forge-game/src/main/java/forge/game/staticability/StaticAbilityPanharmonicon.java @@ -81,8 +81,8 @@ public class StaticAbilityPanharmonicon { } } else if (trigMode.equals(TriggerType.ChangesZoneAll)) { // Check if the cards have a trigger at all - final String origin = stAb.hasParam("Origin") ? stAb.getParam("Origin") : null; - final String destination = stAb.hasParam("Destination") ? stAb.getParam("Destination") : null; + final String origin = stAb.getParamOrDefault("Origin", null); + final String destination = stAb.getParamOrDefault("Destination", null); final CardZoneTable table = (CardZoneTable) runParams.get(AbilityKey.Cards); if (table.filterCards(origin == null ? null : ImmutableList.of(ZoneType.smartValueOf(origin)), ZoneType.smartValueOf(destination), stAb.getParam("ValidCause"), card, stAb).isEmpty()) { diff --git a/forge-game/src/main/java/forge/game/zone/MagicStack.java b/forge-game/src/main/java/forge/game/zone/MagicStack.java index f80d241cec7..f03dd5a3760 100644 --- a/forge-game/src/main/java/forge/game/zone/MagicStack.java +++ b/forge-game/src/main/java/forge/game/zone/MagicStack.java @@ -766,6 +766,15 @@ public class MagicStack /* extends MyObservable */ implements Iterable