mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-19 04:08:01 +00:00
- FogAi update from Seravy (updated for style consistency).
This commit is contained in:
@@ -40,8 +40,6 @@ import forge.util.Expressions;
|
|||||||
import forge.util.MyRandom;
|
import forge.util.MyRandom;
|
||||||
import forge.util.collect.FCollectionView;
|
import forge.util.collect.FCollectionView;
|
||||||
|
|
||||||
import static forge.ai.AiCardMemory.isMemorySetEmpty;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -265,8 +263,8 @@ public class AiAttackController {
|
|||||||
if (ai.getGame().getPhaseHandler().getNextTurn().equals(ai)) {
|
if (ai.getGame().getPhaseHandler().getNextTurn().equals(ai)) {
|
||||||
return attackers;
|
return attackers;
|
||||||
}
|
}
|
||||||
// no need to block is already holding mana to cast fog next turn
|
// no need to block (already holding mana to cast fog next turn)
|
||||||
if (!isMemorySetEmpty(ai, AiCardMemory.MemorySet.CHOSEN_FOG_EFFECT)) {
|
if (!AiCardMemory.isMemorySetEmpty(ai, AiCardMemory.MemorySet.CHOSEN_FOG_EFFECT)) {
|
||||||
// Don't send the card that'll do the fog effect to attack, it's unsafe!
|
// Don't send the card that'll do the fog effect to attack, it's unsafe!
|
||||||
if (attackers.contains(AiCardMemory.MemorySet.CHOSEN_FOG_EFFECT)) {
|
if (attackers.contains(AiCardMemory.MemorySet.CHOSEN_FOG_EFFECT)) {
|
||||||
attackers.remove(AiCardMemory.MemorySet.CHOSEN_FOG_EFFECT);
|
attackers.remove(AiCardMemory.MemorySet.CHOSEN_FOG_EFFECT);
|
||||||
|
|||||||
@@ -30,11 +30,9 @@ public class FogAi extends SpellAbilityAi {
|
|||||||
|
|
||||||
// if card would be destroyed, react and use immediately if it's not own turn
|
// if card would be destroyed, react and use immediately if it's not own turn
|
||||||
if ((AiCardMemory.isRememberedCard(ai, hostCard, AiCardMemory.MemorySet.CHOSEN_FOG_EFFECT))
|
if ((AiCardMemory.isRememberedCard(ai, hostCard, AiCardMemory.MemorySet.CHOSEN_FOG_EFFECT))
|
||||||
&& (!game.getStack().isEmpty()) &&
|
&& (!game.getStack().isEmpty())
|
||||||
(!game.getPhaseHandler().isPlayerTurn(sa.getActivatingPlayer()))
|
&& (!game.getPhaseHandler().isPlayerTurn(sa.getActivatingPlayer()))) {
|
||||||
) {
|
final List<GameObject> objects = ComputerUtil.predictThreatenedObjects(ai, null);
|
||||||
final List<GameObject> objects = ComputerUtil
|
|
||||||
.predictThreatenedObjects(ai, null);
|
|
||||||
if (objects.contains(hostCard)) {
|
if (objects.contains(hostCard)) {
|
||||||
AiCardMemory.clearMemorySet(ai, AiCardMemory.MemorySet.HELD_MANA_SOURCES_FOR_ENEMY_DECLBLK);
|
AiCardMemory.clearMemorySet(ai, AiCardMemory.MemorySet.HELD_MANA_SOURCES_FOR_ENEMY_DECLBLK);
|
||||||
return true;
|
return true;
|
||||||
@@ -42,15 +40,12 @@ public class FogAi extends SpellAbilityAi {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Reserve mana to cast this card if it will be likely needed
|
// Reserve mana to cast this card if it will be likely needed
|
||||||
if (((game.getPhaseHandler().isPlayerTurn(sa.getActivatingPlayer())) ||
|
if (((game.getPhaseHandler().isPlayerTurn(sa.getActivatingPlayer()))
|
||||||
(game.getPhaseHandler().getPhase().isBefore(PhaseType.COMBAT_DECLARE_BLOCKERS)))
|
|| (game.getPhaseHandler().getPhase().isBefore(PhaseType.COMBAT_DECLARE_BLOCKERS)))
|
||||||
&& (AiCardMemory.isMemorySetEmpty(ai, AiCardMemory.MemorySet.CHOSEN_FOG_EFFECT))
|
&& (AiCardMemory.isMemorySetEmpty(ai, AiCardMemory.MemorySet.CHOSEN_FOG_EFFECT))
|
||||||
&& (ComputerUtil.aiLifeInDanger(ai, false, 0))
|
&& (ComputerUtil.aiLifeInDanger(ai, false, 0))) {
|
||||||
) {
|
|
||||||
((PlayerControllerAi) ai.getController()).getAi().reserveManaSources(sa, PhaseType.COMBAT_DECLARE_BLOCKERS, true);
|
((PlayerControllerAi) ai.getController()).getAi().reserveManaSources(sa, PhaseType.COMBAT_DECLARE_BLOCKERS, true);
|
||||||
|
|
||||||
AiCardMemory.rememberCard(ai, hostCard, AiCardMemory.MemorySet.CHOSEN_FOG_EFFECT);
|
AiCardMemory.rememberCard(ai, hostCard, AiCardMemory.MemorySet.CHOSEN_FOG_EFFECT);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// AI should only activate this during Human's Declare Blockers phase
|
// AI should only activate this during Human's Declare Blockers phase
|
||||||
|
|||||||
Reference in New Issue
Block a user