Full Control

This commit is contained in:
tool4EvEr
2023-10-25 21:58:39 +02:00
parent 0ed6a133e2
commit ebbbbc847b
20 changed files with 119 additions and 23 deletions

View File

@@ -36,6 +36,7 @@ import forge.game.phase.PhaseType;
import forge.game.player.*;
import forge.game.replacement.ReplacementEffect;
import forge.game.spellability.*;
import forge.game.staticability.StaticAbility;
import forge.game.trigger.WrappedAbility;
import forge.game.zone.ZoneType;
import forge.item.PaperCard;
@@ -980,6 +981,12 @@ public class PlayerControllerAi extends PlayerController {
return brains.chooseSingleReplacementEffect(possibleReplacers);
}
@Override
public StaticAbility chooseSingleStaticAbility(String prompt, List<StaticAbility> possibleStatics) {
// only matters in corner cases
return Iterables.getFirst(possibleStatics, null);
}
@Override
public String chooseProtectionType(String string, SpellAbility sa, List<String> choices) {
String choice = choices.get(0);
@@ -1436,7 +1443,6 @@ public class PlayerControllerAi extends PlayerController {
@Override
public int chooseNumberForKeywordCost(SpellAbility sa, Cost cost, KeywordInterface keyword, String prompt, int max) {
// TODO: improve the logic depending on the keyword and the playability of the cost-modified SA (enough targets present etc.)
if (keyword.getKeyword() == Keyword.CASUALTY
&& "true".equalsIgnoreCase(sa.getHostCard().getSVar("AINoCasualtyPayment"))) {
// TODO: Grisly Sigil - currently will be misplayed if Casualty is paid (the cost is always paid, targeting is wrong).
@@ -1460,6 +1466,11 @@ public class PlayerControllerAi extends PlayerController {
return chosenAmount;
}
@Override
public int chooseNumberForCostReduction(final SpellAbility sa, final int min, final int max) {
return max;
}
@Override
public CardCollection chooseCardsForEffectMultiple(Map<String, CardCollection> validMap, SpellAbility sa, String title, boolean isOptional) {
CardCollection choices = new CardCollection();