- Turned CheckCondition into a generic top-level AILogic, used it for both Repeating Barrage and Sasaya, Orochi Ascendant at the same time.

This commit is contained in:
Agetian
2017-09-27 15:02:36 +00:00
parent 64a6c3c5bb
commit 5c295e9080
4 changed files with 11 additions and 14 deletions

View File

@@ -1,12 +1,7 @@
package forge.ai;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
import forge.card.ICardFace;
import forge.card.mana.ManaCost;
import forge.card.mana.ManaCostParser;
@@ -25,6 +20,10 @@ import forge.game.spellability.SpellAbility;
import forge.game.spellability.SpellAbilityCondition;
import forge.util.MyRandom;
import java.util.Collection;
import java.util.List;
import java.util.Map;
/**
* Base class for API-specific AI logic
* <p>
@@ -103,6 +102,12 @@ public abstract class SpellAbilityAi {
* Checks if the AI will play a SpellAbility with the specified AiLogic
*/
protected boolean checkAiLogic(final Player ai, final SpellAbility sa, final String aiLogic) {
if (aiLogic.equals("CheckCondition")) {
SpellAbility saCopy = sa.copy();
saCopy.setActivatingPlayer(ai);
return saCopy.getConditions().areMet(saCopy);
}
return !("Never".equals(aiLogic));
}

View File

@@ -70,8 +70,6 @@ public class ChangeZoneAi extends SpellAbilityAi {
return false;
}
}
} else if (aiLogic.equals("RaidOnly")) {
return ai.getAttackedWithCreatureThisTurn();
}
return super.checkAiLogic(ai, sa, aiLogic);

View File

@@ -67,12 +67,6 @@ public class SetStateAi extends SpellAbilityAi {
protected boolean checkAiLogic(final Player aiPlayer, final SpellAbility sa, final String aiLogic) {
final Card source = sa.getHostCard();
if (aiLogic.equals("CheckCondition")) {
SpellAbility saCopy = sa.copy();
saCopy.setActivatingPlayer(aiPlayer);
return saCopy.getConditions().areMet(saCopy);
}
return super.checkAiLogic(aiPlayer, sa, aiLogic);
}