From 2685419a05af40385811bd60ef8709e82a256d80 Mon Sep 17 00:00:00 2001 From: swordshine Date: Tue, 6 May 2014 01:57:14 +0000 Subject: [PATCH] - Attempt to fix another crash based on getAbility of RepeatEachEffect (Experimental Kraj) --- .../src/main/java/forge/ai/ability/DelayedTriggerAi.java | 2 +- .../src/main/java/forge/game/ability/AbilityFactory.java | 6 +++++- .../java/forge/game/ability/effects/RepeatEachEffect.java | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/forge-ai/src/main/java/forge/ai/ability/DelayedTriggerAi.java b/forge-ai/src/main/java/forge/ai/ability/DelayedTriggerAi.java index 093b68e3d3d..bb8a03fecf6 100644 --- a/forge-ai/src/main/java/forge/ai/ability/DelayedTriggerAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/DelayedTriggerAi.java @@ -46,7 +46,7 @@ public class DelayedTriggerAi extends SpellAbilityAi { @Override protected boolean canPlayAI(Player ai, SpellAbility sa) { final String svarName = sa.getParam("Execute"); - final SpellAbility trigsa = AbilityFactory.getAbility(sa.getHostCard().getSVar(svarName), sa.getHostCard()); + final SpellAbility trigsa = AbilityFactory.getAbility(sa.getSVar(svarName), sa.getHostCard()); trigsa.setActivatingPlayer(ai); return AiPlayDecision.WillPlay == ((PlayerControllerAi)ai.getController()).getAi().canPlaySa(trigsa); } diff --git a/forge-game/src/main/java/forge/game/ability/AbilityFactory.java b/forge-game/src/main/java/forge/game/ability/AbilityFactory.java index 5e13f7b4a8a..74e1849ccd0 100644 --- a/forge-game/src/main/java/forge/game/ability/AbilityFactory.java +++ b/forge-game/src/main/java/forge/game/ability/AbilityFactory.java @@ -161,11 +161,15 @@ public final class AbilityFactory { spellAbility.setSVar(svar, hostCard.getSVar(svar)); } } - + if (api == ApiType.DelayedTrigger && mapParams.containsKey("Execute")) { spellAbility.setSVar(mapParams.get("Execute"), hostCard.getSVar(mapParams.get("Execute"))); } + if (api == ApiType.RepeatEach) { + spellAbility.setSVar(mapParams.get("RepeatSubAbility"), hostCard.getSVar(mapParams.get("RepeatSubAbility"))); + } + if (mapParams.containsKey("PreventionSubAbility")) { spellAbility.setSVar(mapParams.get("PreventionSubAbility"), hostCard.getSVar(mapParams.get("PreventionSubAbility"))); } diff --git a/forge-game/src/main/java/forge/game/ability/effects/RepeatEachEffect.java b/forge-game/src/main/java/forge/game/ability/effects/RepeatEachEffect.java index 7f764aef7be..90f6e25105b 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/RepeatEachEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/RepeatEachEffect.java @@ -28,7 +28,7 @@ public class RepeatEachEffect extends SpellAbilityEffect { Card source = sa.getHostCard(); // setup subability to repeat - final SpellAbility repeat = AbilityFactory.getAbility(sa.getHostCard().getSVar(sa.getParam("RepeatSubAbility")), source); + final SpellAbility repeat = AbilityFactory.getAbility(sa.getSVar(sa.getParam("RepeatSubAbility")), source); repeat.setActivatingPlayer(sa.getActivatingPlayer()); ((AbilitySub) repeat).setParent(sa);