From d6e8a96b19adf04b113338a907ae74fa7c40213a Mon Sep 17 00:00:00 2001 From: Agetian Date: Mon, 31 Jul 2017 12:00:02 +0000 Subject: [PATCH] - Script execution in GameState: do not iterate over all SVars, just grab the necessary SVar directly. --- .../src/main/java/forge/ai/GameState.java | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/forge-ai/src/main/java/forge/ai/GameState.java b/forge-ai/src/main/java/forge/ai/GameState.java index b4f7933fccc..ab17b328ff3 100644 --- a/forge-ai/src/main/java/forge/ai/GameState.java +++ b/forge-ai/src/main/java/forge/ai/GameState.java @@ -384,19 +384,19 @@ public abstract class GameState { sPtr = sPtr.substring(0, sPtr.indexOf("->")); } - for (Entry svar : c.getSVars().entrySet()) { - String svarName = svar.getKey(); - String svarValue = svar.getValue(); - - if (svarName.equals(sPtr)) { - SpellAbility sa = AbilityFactory.getAbility(svarValue, c); - sa.setActivatingPlayer(c.getController()); - if (tgtID != -1) { - sa.getTargets().add(idToCard.get(tgtID)); - } - sa.resolve(); - } + if (!c.hasSVar(sPtr)) { + System.out.println("ERROR: Unable to find SVar " + sPtr + " on card " + c + " + to execute!"); + return; } + + String svarValue = c.getSVar(sPtr); + + SpellAbility sa = AbilityFactory.getAbility(svarValue, c); + sa.setActivatingPlayer(c.getController()); + if (tgtID != -1) { + sa.getTargets().add(idToCard.get(tgtID)); + } + sa.resolve(); } }