diff --git a/forge-game/src/main/java/forge/game/spellability/SpellAbilityCondition.java b/forge-game/src/main/java/forge/game/spellability/SpellAbilityCondition.java index f716b899fbf..8b3a2dce074 100644 --- a/forge-game/src/main/java/forge/game/spellability/SpellAbilityCondition.java +++ b/forge-game/src/main/java/forge/game/spellability/SpellAbilityCondition.java @@ -215,6 +215,16 @@ public class SpellAbilityCondition extends SpellAbilityVariables { this.setSvarOperator(params.get("ConditionSVarCompare").substring(0, 2)); this.setSvarOperand(params.get("ConditionSVarCompare").substring(2)); } + if (params.containsKey("OrOtherConditionSVarCompare")) { + //unless another SVar is specified, check against the same one + if (params.containsKey("OrConditionCheckSVar")) { + this.setSvarToCheck2(params.get("OrConditionCheckSVar")); + } else { + this.setSvarToCheck2(params.get("ConditionCheckSVar")); + } + this.setSvarOperator2(params.get("OrOtherConditionSVarCompare").substring(0, 2)); + this.setSvarOperand2(params.get("OrOtherConditionSVarCompare").substring(2)); + } if (params.containsKey("ConditionTargetValidTargeting")) { this.setTargetValidTargeting(params.get("ConditionTargetValidTargeting")); } @@ -455,8 +465,16 @@ public class SpellAbilityCondition extends SpellAbilityVariables { if (this.getsVarToCheck() != null) { final int svarValue = AbilityUtils.calculateAmount(host, this.getsVarToCheck(), sa); final int operandValue = AbilityUtils.calculateAmount(host, this.getsVarOperand(), sa); + boolean secondCheck = false; + if (this.getsVarToCheck2() != null) { + final int svarValue2 = AbilityUtils.calculateAmount(host, this.getsVarToCheck2(), sa); + final int operandValue2 = AbilityUtils.calculateAmount(host, this.getsVarOperand2(), sa); + if (Expressions.compare(svarValue2, this.getsVarOperator2(), operandValue2)) { + secondCheck = true; + } + } - if (!Expressions.compare(svarValue, this.getsVarOperator(), operandValue)) { + if (!Expressions.compare(svarValue, this.getsVarOperator(), operandValue) && !secondCheck) { return false; } diff --git a/forge-game/src/main/java/forge/game/spellability/SpellAbilityVariables.java b/forge-game/src/main/java/forge/game/spellability/SpellAbilityVariables.java index 4351d360139..0856cc4bb9d 100644 --- a/forge-game/src/main/java/forge/game/spellability/SpellAbilityVariables.java +++ b/forge-game/src/main/java/forge/game/spellability/SpellAbilityVariables.java @@ -81,8 +81,11 @@ public class SpellAbilityVariables implements Cloneable { this.playerContains = sav.getPlayerContains(); this.presentZone = sav.getPresentZone(); this.sVarToCheck = sav.getsVarToCheck(); + this.sVarToCheck2 = sav.getsVarToCheck2(); this.sVarOperator = sav.getsVarOperator(); + this.sVarOperator2 = sav.getsVarOperator2(); this.sVarOperand = sav.getsVarOperand(); + this.sVarOperand2 = sav.getsVarOperand2(); this.lifeTotal = sav.getLifeTotal(); this.lifeAmount = sav.getLifeAmount(); this.manaSpent = sav.getManaSpent(); @@ -164,12 +167,15 @@ public class SpellAbilityVariables implements Cloneable { /** The svar to check. */ private String sVarToCheck = null; + private String sVarToCheck2 = null; /** The svar operator. */ private String sVarOperator = "GE"; + private String sVarOperator2 = "GE"; /** The svar operand. */ private String sVarOperand = "1"; + private String sVarOperand2 = "1"; /** The life total. */ private String lifeTotal = null; @@ -491,6 +497,9 @@ public class SpellAbilityVariables implements Cloneable { public final void setSvarToCheck(final String sVar) { this.setsVarToCheck(sVar); } + public final void setSvarToCheck2(final String sVar) { + this.setsVarToCheck2(sVar); + } /** *

@@ -516,6 +525,14 @@ public class SpellAbilityVariables implements Cloneable { this.setsVarOperand(operand); } + //for second possible SVar condition + public final void setSvarOperator2(final String operator) { + this.setsVarOperator2(operator); + } + public final void setSvarOperand2(final String operand) { + this.setsVarOperand2(operand); + } + /** * Gets the activation limit. * @@ -729,6 +746,9 @@ public class SpellAbilityVariables implements Cloneable { public final String getsVarOperand() { return this.sVarOperand; } + public final String getsVarOperand2() { + return this.sVarOperand2; + } /** * Sets the s var operand. @@ -739,6 +759,9 @@ public class SpellAbilityVariables implements Cloneable { public final void setsVarOperand(final String sVarOperand0) { this.sVarOperand = sVarOperand0; } + public final void setsVarOperand2(final String sVarOperand0) { + this.sVarOperand2 = sVarOperand0; + } /** * Gets the s var to check. @@ -748,6 +771,9 @@ public class SpellAbilityVariables implements Cloneable { public final String getsVarToCheck() { return this.sVarToCheck; } + public final String getsVarToCheck2() { + return this.sVarToCheck2; + } /** * Sets the s var to check. @@ -758,6 +784,9 @@ public class SpellAbilityVariables implements Cloneable { public final void setsVarToCheck(final String sVarToCheck) { this.sVarToCheck = sVarToCheck; } + public final void setsVarToCheck2(final String sVarToCheck) { + this.sVarToCheck2 = sVarToCheck; + } /** * Gets the s var operator. @@ -767,6 +796,9 @@ public class SpellAbilityVariables implements Cloneable { public final String getsVarOperator() { return this.sVarOperator; } + public final String getsVarOperator2() { + return this.sVarOperator2; + } /** * Sets the s var operator. @@ -777,6 +809,9 @@ public class SpellAbilityVariables implements Cloneable { public final void setsVarOperator(final String sVarOperator0) { this.sVarOperator = sVarOperator0; } + public final void setsVarOperator2(final String sVarOperator0) { + this.sVarOperator2 = sVarOperator0; + } /** * Checks if is opponent turn.