mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-15 18:28:00 +00:00
Added a simple logic for ChooseColor based on devotion (Nyx Lotus)
This commit is contained in:
@@ -964,6 +964,22 @@ public class ComputerUtilCard {
|
|||||||
}
|
}
|
||||||
chosen.add(chosenColor);
|
chosen.add(chosenColor);
|
||||||
}
|
}
|
||||||
|
else if (logic.equals("HighestDevotionToColor")) {
|
||||||
|
int curDevotion = 0;
|
||||||
|
String chosenColor = MagicColor.Constant.WHITE;
|
||||||
|
CardCollectionView hand = ai.getCardsIn(ZoneType.Hand);
|
||||||
|
for(byte c : MagicColor.WUBRG) {
|
||||||
|
String devotionCode = "Count$Devotion." + MagicColor.toLongString(c);
|
||||||
|
|
||||||
|
int devotion = CardFactoryUtil.xCount(sa.getHostCard(), devotionCode);
|
||||||
|
if (devotion > curDevotion && !CardLists.filter(hand, CardPredicates.isColor(c)).isEmpty()) {
|
||||||
|
curDevotion = devotion;
|
||||||
|
chosenColor = MagicColor.toLongString(c);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
chosen.add(chosenColor);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
if (chosen.isEmpty()) {
|
if (chosen.isEmpty()) {
|
||||||
chosen.add(MagicColor.Constant.GREEN);
|
chosen.add(MagicColor.Constant.GREEN);
|
||||||
|
|||||||
@@ -8,10 +8,7 @@ import forge.ai.SpecialCardAi;
|
|||||||
import forge.ai.SpellAbilityAi;
|
import forge.ai.SpellAbilityAi;
|
||||||
import forge.card.MagicColor;
|
import forge.card.MagicColor;
|
||||||
import forge.game.Game;
|
import forge.game.Game;
|
||||||
import forge.game.card.Card;
|
import forge.game.card.*;
|
||||||
import forge.game.card.CardCollectionView;
|
|
||||||
import forge.game.card.CardLists;
|
|
||||||
import forge.game.card.CardPredicates;
|
|
||||||
import forge.game.phase.PhaseHandler;
|
import forge.game.phase.PhaseHandler;
|
||||||
import forge.game.phase.PhaseType;
|
import forge.game.phase.PhaseType;
|
||||||
import forge.game.player.Player;
|
import forge.game.player.Player;
|
||||||
@@ -69,9 +66,7 @@ public class ChooseColorAi extends SpellAbilityAi {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
} else if (logic.equals("MostProminentInComputerDeck")) {
|
||||||
|
|
||||||
if (logic.equals("MostProminentInComputerDeck")) {
|
|
||||||
if ("Astral Cornucopia".equals(sourceName)) {
|
if ("Astral Cornucopia".equals(sourceName)) {
|
||||||
// activate in Main 2 hoping that the extra mana surplus will make a difference
|
// activate in Main 2 hoping that the extra mana surplus will make a difference
|
||||||
// if there are some nonland permanents in hand
|
// if there are some nonland permanents in hand
|
||||||
@@ -80,6 +75,11 @@ public class ChooseColorAi extends SpellAbilityAi {
|
|||||||
|
|
||||||
return permanents.size() > 0 && ph.is(PhaseType.MAIN2, ai);
|
return permanents.size() > 0 && ph.is(PhaseType.MAIN2, ai);
|
||||||
}
|
}
|
||||||
|
} else if (logic.equals("HighestDevotionToColor")) {
|
||||||
|
// currently only works more or less reliably in Main2 to cast own spells
|
||||||
|
if (!ph.is(PhaseType.MAIN2, ai)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean chance = MyRandom.getRandom().nextFloat() <= Math.pow(.6667, sa.getActivationsThisTurn());
|
boolean chance = MyRandom.getRandom().nextFloat() <= Math.pow(.6667, sa.getActivationsThisTurn());
|
||||||
|
|||||||
Reference in New Issue
Block a user