From a4d34bb85894199fbbc7112a4ba3b0882cfd6238 Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Tue, 3 Sep 2019 11:20:10 +0800 Subject: [PATCH] Retained some schemas --- .../java/forge/ai/AiAttackController.java | 12 +- .../src/main/java/forge/ai/AiController.java | 18 +- .../src/main/java/forge/ai/ComputerUtil.java | 46 +++-- .../main/java/forge/ai/ComputerUtilCard.java | 10 +- .../java/forge/ai/ComputerUtilCombat.java | 31 ++-- .../main/java/forge/ai/ComputerUtilMana.java | 16 +- .../src/main/java/forge/ai/SpecialCardAi.java | 39 ++-- .../main/java/forge/ai/SpellAbilityAi.java | 5 +- .../main/java/forge/ai/ability/AnimateAi.java | 9 +- .../java/forge/ai/ability/CountersMoveAi.java | 12 +- .../forge/ai/ability/CountersMultiplyAi.java | 15 +- .../java/forge/ai/ability/CountersPutAi.java | 18 +- .../java/forge/ai/ability/DamageAllAi.java | 16 +- .../java/forge/ai/ability/DamageDealAi.java | 5 +- .../main/java/forge/ai/ability/DestroyAi.java | 8 +- .../java/forge/ai/ability/DestroyAllAi.java | 15 +- .../main/java/forge/ai/ability/DrawAi.java | 24 ++- .../main/java/forge/ai/ability/FightAi.java | 14 +- .../java/forge/ai/ability/FlipACoinAi.java | 4 +- .../ai/ability/LifeExchangeVariantAi.java | 4 +- .../java/forge/ai/ability/LifeGainAi.java | 8 +- .../java/forge/ai/ability/LifeLoseAi.java | 8 +- .../java/forge/ai/ability/ManifestAi.java | 8 +- .../forge/ai/ability/PeekAndRevealAi.java | 6 +- .../main/java/forge/ai/ability/PoisonAi.java | 14 +- .../main/java/forge/ai/ability/RevealAi.java | 6 +- .../java/forge/ai/ability/SetStateAi.java | 5 +- forge-core/src/main/java/forge/ImageKeys.java | 4 +- .../src/main/java/forge/LobbyPlayer.java | 9 +- .../src/main/java/forge/card/CardType.java | 5 +- .../main/java/forge/deck/DeckRecognizer.java | 5 +- .../src/main/java/forge/item/PaperCard.java | 6 +- .../java/forge/game/combat/CombatUtil.java | 6 +- .../java/forge/game/cost/CostDiscard.java | 8 +- .../java/forge/game/cost/CostPayLife.java | 6 +- .../main/java/forge/game/player/Player.java | 10 +- .../forge/game/player/PlayerProperty.java | 172 +++++++++++++----- .../game/replacement/ReplaceAddCounter.java | 4 +- .../game/replacement/ReplaceCounter.java | 4 +- .../game/replacement/ReplaceDestroy.java | 4 +- .../game/replacement/ReplaceDiscard.java | 4 +- .../forge/game/replacement/ReplaceDraw.java | 8 +- .../game/replacement/ReplaceDrawCards.java | 4 +- .../game/replacement/ReplaceGainLife.java | 4 +- .../game/replacement/ReplaceGameLoss.java | 4 +- .../forge/game/replacement/ReplaceMoved.java | 4 +- .../game/replacement/ReplaceProduceMana.java | 4 +- .../game/replacement/ReplaceSetInMotion.java | 4 +- .../game/replacement/ReplaceSurveil.java | 4 +- .../forge/game/replacement/ReplaceToken.java | 4 +- .../game/replacement/ReplaceTurnFaceUp.java | 4 +- .../forge/game/replacement/ReplaceUntap.java | 4 +- .../forge/game/spellability/SpellAbility.java | 5 +- .../spellability/SpellAbilityCondition.java | 4 +- .../spellability/SpellAbilityRestriction.java | 22 ++- .../game/staticability/StaticAbility.java | 12 +- .../StaticAbilityCantAttach.java | 4 +- .../StaticAbilityCantAttackBlock.java | 4 +- .../StaticAbilityCantBeCast.java | 20 +- .../StaticAbilityCantPutCounter.java | 22 ++- .../main/java/forge/game/trigger/Trigger.java | 22 ++- .../forge/game/trigger/TriggerAbandoned.java | 6 +- .../java/forge/game/trigger/TriggerAdapt.java | 6 +- .../forge/game/trigger/TriggerAttached.java | 4 +- .../game/trigger/TriggerAttackerBlocked.java | 4 +- .../TriggerAttackerBlockedByCreature.java | 8 +- .../trigger/TriggerAttackerUnblocked.java | 6 +- .../trigger/TriggerAttackerUnblockedOnce.java | 6 +- .../trigger/TriggerAttackersDeclared.java | 4 +- .../forge/game/trigger/TriggerAttacks.java | 4 +- .../game/trigger/TriggerBecomeMonarch.java | 6 +- .../game/trigger/TriggerBecomeMonstrous.java | 6 +- .../game/trigger/TriggerBecomeRenowned.java | 6 +- .../game/trigger/TriggerBecomesTarget.java | 4 +- .../trigger/TriggerBecomesTargetOnce.java | 4 +- .../forge/game/trigger/TriggerBlocks.java | 4 +- .../forge/game/trigger/TriggerChampioned.java | 6 +- .../trigger/TriggerChangesController.java | 6 +- .../forge/game/trigger/TriggerClashed.java | 4 +- .../game/trigger/TriggerCounterAdded.java | 4 +- .../game/trigger/TriggerCounterAddedOnce.java | 6 +- .../game/trigger/TriggerCounterRemoved.java | 4 +- .../trigger/TriggerCounterRemovedOnce.java | 4 +- .../forge/game/trigger/TriggerCountered.java | 4 +- .../game/trigger/TriggerDamageDealtOnce.java | 4 +- .../game/trigger/TriggerDamageDoneOnce.java | 4 +- .../forge/game/trigger/TriggerDestroyed.java | 4 +- .../forge/game/trigger/TriggerDiscarded.java | 4 +- .../java/forge/game/trigger/TriggerDrawn.java | 6 +- .../forge/game/trigger/TriggerExiled.java | 6 +- .../forge/game/trigger/TriggerExploited.java | 6 +- .../game/trigger/TriggerFlippedCoin.java | 4 +- .../forge/game/trigger/TriggerHandler.java | 4 +- .../game/trigger/TriggerInvestigated.java | 4 +- .../forge/game/trigger/TriggerLandPlayed.java | 4 +- .../forge/game/trigger/TriggerLifeGained.java | 4 +- .../forge/game/trigger/TriggerLifeLost.java | 4 +- .../trigger/TriggerPayCumulativeUpkeep.java | 6 +- .../forge/game/trigger/TriggerPayEcho.java | 6 +- .../forge/game/trigger/TriggerPhaseOut.java | 10 +- .../forge/game/trigger/TriggerPlanarDice.java | 4 +- .../game/trigger/TriggerRegenerated.java | 4 +- .../forge/game/trigger/TriggerRevealed.java | 4 +- .../forge/game/trigger/TriggerSacrificed.java | 3 +- .../game/trigger/TriggerSearchedLibrary.java | 4 +- .../game/trigger/TriggerSetInMotion.java | 8 +- .../forge/game/trigger/TriggerShuffled.java | 4 +- .../game/trigger/TriggerSpellAbilityCast.java | 4 +- .../game/trigger/TriggerSpellAbilityCopy.java | 6 +- .../forge/game/trigger/TriggerSurveil.java | 4 +- .../java/forge/game/trigger/TriggerTaps.java | 8 +- .../game/trigger/TriggerTapsForMana.java | 4 +- .../forge/game/trigger/TriggerUnattach.java | 6 +- .../forge/game/trigger/TriggerUntaps.java | 6 +- .../java/forge/achievement/VariantWins.java | 4 +- .../java/forge/card/CardScriptParser.java | 5 +- .../src/main/java/forge/model/CardBlock.java | 5 +- .../src/main/java/forge/player/HumanPlay.java | 4 +- .../java/forge/quest/data/StarRating.java | 6 +- 119 files changed, 783 insertions(+), 292 deletions(-) diff --git a/forge-ai/src/main/java/forge/ai/AiAttackController.java b/forge-ai/src/main/java/forge/ai/AiAttackController.java index 35b2d140432..fa658e72bbe 100644 --- a/forge-ai/src/main/java/forge/ai/AiAttackController.java +++ b/forge-ai/src/main/java/forge/ai/AiAttackController.java @@ -602,7 +602,12 @@ public class AiAttackController { return true; } - return totalPoisonDamage >= 10 - opp.getPoisonCounters(); + if (totalPoisonDamage >= 10 - opp.getPoisonCounters()) { + return true; + } + + return false; + } private final GameEntity chooseDefender(final Combat c, final boolean bAssault) { @@ -1450,7 +1455,10 @@ public class AiAttackController { if (color != null) { return color; } - return artifact;//should never get here + if (artifact != null) { + return artifact; + } + return null;//should never get here } private void doLightmineFieldAttackLogic(List attackersLeft, int numForcedAttackers, boolean playAggro) { diff --git a/forge-ai/src/main/java/forge/ai/AiController.java b/forge-ai/src/main/java/forge/ai/AiController.java index 3a10b030309..f9a6de01010 100644 --- a/forge-ai/src/main/java/forge/ai/AiController.java +++ b/forge-ai/src/main/java/forge/ai/AiController.java @@ -1516,9 +1516,13 @@ public class AiController { // Hopefully there's not much to do with the extra mana immediately, can wait for Main 2 return true; } - // Might need an extra land to cast something, or for some kind of an ETB ability with a cost or an - // alternative cost (if we cast it in Main 1), or to use an activated ability on the battlefield - return (predictedMana > totalCMCInHand || !canCastWithLandDrop) && (!hasRelevantAbsOTB || isTapLand) && !hasLandBasedEffect; + if ((predictedMana <= totalCMCInHand && canCastWithLandDrop) || (hasRelevantAbsOTB && !isTapLand) || hasLandBasedEffect) { + // Might need an extra land to cast something, or for some kind of an ETB ability with a cost or an + // alternative cost (if we cast it in Main 1), or to use an activated ability on the battlefield + return false; + } + + return true; } private final SpellAbility getSpellAbilityToPlay() { @@ -1637,8 +1641,12 @@ public class AiController { return SpellApiToAi.Converter.get(spell.getApi()).doTriggerAI(player, spell, mandatory); if (spell instanceof WrappedAbility) return doTrigger(((WrappedAbility)spell).getWrappedAbility(), mandatory); - // For non-converted triggers (such as Cumulative Upkeep) that don't have costs or targets to worry about - return spell.getPayCosts() == Cost.Zero && spell.getTargetRestrictions() == null; + if (spell.getPayCosts() == Cost.Zero && spell.getTargetRestrictions() == null) { + // For non-converted triggers (such as Cumulative Upkeep) that don't have costs or targets to worry about + return true; + } + + return false; } /** diff --git a/forge-ai/src/main/java/forge/ai/ComputerUtil.java b/forge-ai/src/main/java/forge/ai/ComputerUtil.java index ffc4d8815dd..b21cc4435e4 100644 --- a/forge-ai/src/main/java/forge/ai/ComputerUtil.java +++ b/forge-ai/src/main/java/forge/ai/ComputerUtil.java @@ -795,7 +795,11 @@ public class ComputerUtil { return true; } - return ComputerUtilCard.hasActiveUndyingOrPersist(c); + if (ComputerUtilCard.hasActiveUndyingOrPersist(c)) { + return true; + } + + return false; } }); } @@ -1155,25 +1159,30 @@ public class ComputerUtil { final int highestCMC = Math.max(6, Aggregates.max(nonLandsInHand, CardPredicates.Accessors.fnGetCmc)); final int discardCMC = discard.getCMC(); if (discard.isLand()) { - // Don't need more land. - return landsInPlay.size() >= highestCMC + if (landsInPlay.size() >= highestCMC || (landsInPlay.size() + landsInHand.size() > 6 && landsInHand.size() > 1) - || (landsInPlay.size() > 3 && nonLandsInHand.size() == 0); + || (landsInPlay.size() > 3 && nonLandsInHand.size() == 0)) { + // Don't need more land. + return true; + } } else { //non-land if (discardCMC > landsInPlay.size() + landsInHand.size() + 2) { // not castable for some time. return true; - } else // Probably don't need small stuff now. - if (!game.getPhaseHandler().isPlayerTurn(ai) + } else if (!game.getPhaseHandler().isPlayerTurn(ai) && game.getPhaseHandler().getPhase().isAfter(PhaseType.MAIN2) && discardCMC > landsInPlay.size() + landsInHand.size() && discardCMC > landsInPlay.size() + 1 && nonLandsInHand.size() > 1) { // not castable for at least one other turn. return true; - } else return landsInPlay.size() > 5 && discard.getCMC() <= 1 - && !discard.hasProperty("hasXCost", ai, null, null); + } else if (landsInPlay.size() > 5 && discard.getCMC() <= 1 + && !discard.hasProperty("hasXCost", ai, null, null)) { + // Probably don't need small stuff now. + return true; + } } + return false; } // returns true if it's better to wait until blockers are declared @@ -1914,12 +1923,16 @@ public class ComputerUtil { if (predictThreatenedObjects(ai, null).contains(source)) { return true; } - return game.getPhaseHandler().inCombat() && - ComputerUtilCombat.combatantWouldBeDestroyed(ai, source, game.getCombat()); + if (game.getPhaseHandler().inCombat() && + ComputerUtilCombat.combatantWouldBeDestroyed(ai, source, game.getCombat())) { + return true; + } } else if (zone.getZoneType() == ZoneType.Exile && sa.getMayPlay() != null) { // play cards in exile that can only be played that turn if (game.getPhaseHandler().getPhase() == PhaseType.MAIN2) { - return source.mayPlay(sa.getMayPlay()) != null; + if (source.mayPlay(sa.getMayPlay()) != null) { + return true; + } } } return false; @@ -2847,8 +2860,10 @@ public class ComputerUtil { return false; } else if (Iterables.any(list, CardTraitPredicates.hasParam("AiLogic", "LoseLife"))) { return false; - } else return !Iterables.any(list, CardTraitPredicates.hasParam("AiLogic", "LichDraw")); - + } else if (Iterables.any(list, CardTraitPredicates.hasParam("AiLogic", "LichDraw"))) { + return false; + } + return true; } public static boolean lifegainNegative(final Player player, final Card source) { @@ -3046,7 +3061,10 @@ public class ComputerUtil { if ((serious) && (ComputerUtilCombat.lifeInSeriousDanger(ai, combat, payment))) { return true; } - return (!serious) && (ComputerUtilCombat.lifeInDanger(ai, combat, payment)); + if ((!serious) && (ComputerUtilCombat.lifeInDanger(ai, combat, payment))) { + return true; + } + return false; } } diff --git a/forge-ai/src/main/java/forge/ai/ComputerUtilCard.java b/forge-ai/src/main/java/forge/ai/ComputerUtilCard.java index b00dccd66b5..21197757d99 100644 --- a/forge-ai/src/main/java/forge/ai/ComputerUtilCard.java +++ b/forge-ai/src/main/java/forge/ai/ComputerUtilCard.java @@ -1742,14 +1742,20 @@ public class ComputerUtilCard { if (!c.isCreature()) { return false; } - return c.hasKeyword("CARDNAME can't attack or block.") || (c.hasKeyword("CARDNAME doesn't untap during your untap step.") && c.isTapped()) || (c.getOwner() == ai && ai.getOpponents().contains(c.getController())); + if (c.hasKeyword("CARDNAME can't attack or block.") || (c.hasKeyword("CARDNAME doesn't untap during your untap step.") && c.isTapped()) || (c.getOwner() == ai && ai.getOpponents().contains(c.getController()))) { + return true; + } + return false; } public static boolean hasActiveUndyingOrPersist(final Card c) { if (c.hasKeyword(Keyword.UNDYING) && c.getCounters(CounterType.P1P1) == 0) { return true; } - return c.hasKeyword(Keyword.PERSIST) && c.getCounters(CounterType.M1M1) == 0; + if (c.hasKeyword(Keyword.PERSIST) && c.getCounters(CounterType.M1M1) == 0) { + return true; + } + return false; } public static boolean isPresentOnBattlefield(final Game game, final String cardName) { diff --git a/forge-ai/src/main/java/forge/ai/ComputerUtilCombat.java b/forge-ai/src/main/java/forge/ai/ComputerUtilCombat.java index 5c56a8f84a6..9c030f3a2d4 100644 --- a/forge-ai/src/main/java/forge/ai/ComputerUtilCombat.java +++ b/forge-ai/src/main/java/forge/ai/ComputerUtilCombat.java @@ -879,18 +879,19 @@ public class ComputerUtilCombat { } else if (mode == TriggerType.DamageDone) { willTrigger = true; if (trigParams.containsKey("ValidSource")) { - if (CardTraitBase.matchesValid(defender, trigParams.get("ValidSource").split(","), source) + if (!(CardTraitBase.matchesValid(defender, trigParams.get("ValidSource").split(","), source) && defender.getNetCombatDamage() > 0 && (!trigParams.containsKey("ValidTarget") - || CardTraitBase.matchesValid(attacker, trigParams.get("ValidTarget").split(","), source))) { - return true; + || CardTraitBase.matchesValid(attacker, trigParams.get("ValidTarget").split(","), source)))) { + return false; } - return CardTraitBase.matchesValid(attacker, trigParams.get("ValidSource").split(","), source) + if (!(CardTraitBase.matchesValid(attacker, trigParams.get("ValidSource").split(","), source) && attacker.getNetCombatDamage() > 0 && (!trigParams.containsKey("ValidTarget") - || CardTraitBase.matchesValid(defender, trigParams.get("ValidTarget").split(","), source)); + || CardTraitBase.matchesValid(defender, trigParams.get("ValidTarget").split(","), source)))) { + return false; + } } - return false; } return willTrigger; @@ -1789,7 +1790,11 @@ public class ComputerUtilCombat { } // all damage will be prevented - return attacker.hasKeyword("PreventAllDamageBy Creature.blockingSource"); + if (attacker.hasKeyword("PreventAllDamageBy Creature.blockingSource")) { + return true; + } + + return false; } // can the blocker destroy the attacker? @@ -1912,7 +1917,9 @@ public class ComputerUtilCombat { return false; } } - return attackerLife <= 2 * defenderDamage; + if (attackerLife <= 2 * defenderDamage) { + return true; + } } // defender double strike else { // no double strike for defender @@ -1936,7 +1943,7 @@ public class ComputerUtilCombat { return defenderDamage >= attackerLife; } // defender no double strike - // should never arrive here + return false;// should never arrive here } // canDestroyAttacker // For AI safety measures like Regeneration @@ -2157,7 +2164,9 @@ public class ComputerUtilCombat { return false; } } - return defenderLife <= 2 * attackerDamage; + if (defenderLife <= 2 * attackerDamage) { + return true; + } } // attacker double strike else { // no double strike for attacker @@ -2181,7 +2190,7 @@ public class ComputerUtilCombat { return attackerDamage >= defenderLife; } // attacker no double strike - // should never arrive here + return false;// should never arrive here } // canDestroyBlocker diff --git a/forge-ai/src/main/java/forge/ai/ComputerUtilMana.java b/forge-ai/src/main/java/forge/ai/ComputerUtilMana.java index 5ac65671de7..8e9c0f84e2d 100644 --- a/forge-ai/src/main/java/forge/ai/ComputerUtilMana.java +++ b/forge-ai/src/main/java/forge/ai/ComputerUtilMana.java @@ -880,10 +880,12 @@ public class ComputerUtilMana { // For combat tricks, always obey mana reservation if (curPhase == PhaseType.COMBAT_DECLARE_BLOCKERS || curPhase == PhaseType.CLEANUP) { - AiCardMemory.clearMemorySet(ai, AiCardMemory.MemorySet.HELD_MANA_SOURCES_FOR_DECLBLK); - } else if (!(ai.getGame().getPhaseHandler().isPlayerTurn(ai)) && (curPhase == PhaseType.COMBAT_DECLARE_BLOCKERS || curPhase == PhaseType.CLEANUP)) { - AiCardMemory.clearMemorySet(ai, AiCardMemory.MemorySet.HELD_MANA_SOURCES_FOR_ENEMY_DECLBLK); - AiCardMemory.clearMemorySet(ai, AiCardMemory.MemorySet.CHOSEN_FOG_EFFECT); + if (!(ai.getGame().getPhaseHandler().isPlayerTurn(ai))) { + AiCardMemory.clearMemorySet(ai, AiCardMemory.MemorySet.HELD_MANA_SOURCES_FOR_ENEMY_DECLBLK); + AiCardMemory.clearMemorySet(ai, AiCardMemory.MemorySet.CHOSEN_FOG_EFFECT); + } + else + AiCardMemory.clearMemorySet(ai, AiCardMemory.MemorySet.HELD_MANA_SOURCES_FOR_DECLBLK); } else { if ((AiCardMemory.isRememberedCard(ai, sourceCard, AiCardMemory.MemorySet.HELD_MANA_SOURCES_FOR_DECLBLK)) || (AiCardMemory.isRememberedCard(ai, sourceCard, AiCardMemory.MemorySet.HELD_MANA_SOURCES_FOR_ENEMY_DECLBLK))) { @@ -905,8 +907,10 @@ public class ComputerUtilMana { AiCardMemory.clearMemorySet(ai, AiCardMemory.MemorySet.HELD_MANA_SOURCES_FOR_MAIN2); } else { - // This mana source is held elsewhere for a Main Phase 2 spell. - return AiCardMemory.isRememberedCard(ai, sourceCard, AiCardMemory.MemorySet.HELD_MANA_SOURCES_FOR_MAIN2); + if (AiCardMemory.isRememberedCard(ai, sourceCard, AiCardMemory.MemorySet.HELD_MANA_SOURCES_FOR_MAIN2)) { + // This mana source is held elsewhere for a Main Phase 2 spell. + return true; + } } return false; diff --git a/forge-ai/src/main/java/forge/ai/SpecialCardAi.java b/forge-ai/src/main/java/forge/ai/SpecialCardAi.java index 6124365e7f8..27700e2455b 100644 --- a/forge-ai/src/main/java/forge/ai/SpecialCardAi.java +++ b/forge-ai/src/main/java/forge/ai/SpecialCardAi.java @@ -377,12 +377,15 @@ public class SpecialCardAi { // Already enough to kill the blockers and survive, don't overpump return false; } - // Can't kill or cripple anyone, as well as can't Trample over, so don't pump - return !oppCantDie || source.hasKeyword(Keyword.TRAMPLE) || source.hasKeyword(Keyword.WITHER) - || source.hasKeyword(Keyword.INFECT) || predictedPT.getLeft() > oppT; + if (oppCantDie && !source.hasKeyword(Keyword.TRAMPLE) && !source.hasKeyword(Keyword.WITHER) + && !source.hasKeyword(Keyword.INFECT) && predictedPT.getLeft() <= oppT) { + // Can't kill or cripple anyone, as well as can't Trample over, so don't pump + return false; + } // If we got here, it should be a favorable combat pump, resulting in at least one // opposing creature dying, and hopefully with the Pummeler surviving combat. + return true; } public static boolean predictOverwhelmingDamage(final Player ai, final SpellAbility sa) { @@ -471,13 +474,15 @@ public class SpecialCardAi { } if (isExileMode) { - // We probably need a low-CMC card to exile to it, exiling a higher CMC spell may be suboptimal - // since the AI does not prioritize/value cards vs. permission at the moment. if (blueCards.size() < 2) { // Need to have something else in hand that is blue in addition to Force of Will itself, // otherwise the AI will fail to play the card and the card will disappear from the pool return false; - } else return !CardLists.filter(blueCards, CardPredicates.lessCMC(3)).isEmpty(); + } else if (CardLists.filter(blueCards, CardPredicates.lessCMC(3)).isEmpty()) { + // We probably need a low-CMC card to exile to it, exiling a higher CMC spell may be suboptimal + // since the AI does not prioritize/value cards vs. permission at the moment. + return false; + } } return true; @@ -891,13 +896,15 @@ public class SpecialCardAi { } } else if (blackViseOTB && computerHandSize + exiledWithNecro - 1 >= 4) { // try not to overdraw in presence of Black Vise - return false; - } else // Only activate in AI's own turn (sans the exception above) - if (computerHandSize + exiledWithNecro - 1 >= maxHandSize) { + return false; + } else if (computerHandSize + exiledWithNecro - 1 >= maxHandSize) { // Only draw until we reach max hand size return false; - } else return ph.isPlayerTurn(ai) && ph.is(PhaseType.MAIN2); - + } else if (!ph.isPlayerTurn(ai) || !ph.is(PhaseType.MAIN2)) { + // Only activate in AI's own turn (sans the exception above) + return false; + } + return true; } } @@ -1426,12 +1433,14 @@ public class SpecialCardAi { } else if (blackViseOTB && computerHandSize + 1 > 4) { // try not to overdraw in presence of Black Vise return false; - } else // Only activate in AI's own turn (sans the exception above) - if (computerHandSize + 1 > maxHandSize) { + } else if (computerHandSize + 1 > maxHandSize) { // Only draw until we reach max hand size return false; - } else return ph.isPlayerTurn(ai); - + } else if (!ph.isPlayerTurn(ai)) { + // Only activate in AI's own turn (sans the exception above) + return false; + } + return true; } } diff --git a/forge-ai/src/main/java/forge/ai/SpellAbilityAi.java b/forge-ai/src/main/java/forge/ai/SpellAbilityAi.java index b2f95d717fe..d86989d87a8 100644 --- a/forge-ai/src/main/java/forge/ai/SpellAbilityAi.java +++ b/forge-ai/src/main/java/forge/ai/SpellAbilityAi.java @@ -133,7 +133,10 @@ public abstract class SpellAbilityAi { if (!ComputerUtilCost.checkSacrificeCost(ai, cost, source, sa)) { return false; } - return ComputerUtilCost.checkRemoveCounterCost(cost, source, sa); + if (!ComputerUtilCost.checkRemoveCounterCost(cost, source, sa)) { + return false; + } + return true; } /** diff --git a/forge-ai/src/main/java/forge/ai/ability/AnimateAi.java b/forge-ai/src/main/java/forge/ai/ability/AnimateAi.java index 5270bea95d1..17748584c9f 100644 --- a/forge-ai/src/main/java/forge/ai/ability/AnimateAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/AnimateAi.java @@ -117,9 +117,12 @@ public class AnimateAi extends SpellAbilityAi { boolean activateAsPotentialBlocker = sa.hasParam("UntilYourNextTurn") && ai.getGame().getPhaseHandler().getNextTurn() != ai && source.isPermanent(); - return !ph.isPlayerTurn(ai) || ai.getLife() >= 6 || opponent.getLife() <= 6 - || !Iterables.any(opponent.getCardsIn(ZoneType.Battlefield), CardPredicates.Presets.CREATURES) - || sa.hasParam("AILogic") || sa.hasParam("Permanent") || activateAsPotentialBlocker; + if (ph.isPlayerTurn(ai) && ai.getLife() < 6 && opponent.getLife() > 6 + && Iterables.any(opponent.getCardsIn(ZoneType.Battlefield), CardPredicates.Presets.CREATURES) + && !sa.hasParam("AILogic") && !sa.hasParam("Permanent") && !activateAsPotentialBlocker) { + return false; + } + return true; } @Override diff --git a/forge-ai/src/main/java/forge/ai/ability/CountersMoveAi.java b/forge-ai/src/main/java/forge/ai/ability/CountersMoveAi.java index 7c973b99d45..bf142184a33 100644 --- a/forge-ai/src/main/java/forge/ai/ability/CountersMoveAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/CountersMoveAi.java @@ -327,7 +327,11 @@ public class CountersMoveAi extends SpellAbilityAi { return true; } } - return CounterType.M1M1.equals(cType) && card.hasKeyword(Keyword.PERSIST); + if (CounterType.M1M1.equals(cType) && card.hasKeyword(Keyword.PERSIST)) { + return true; + } + + return false; } }); @@ -421,7 +425,11 @@ public class CountersMoveAi extends SpellAbilityAi { } // source would leave the game - return !card.hasSVar("EndOfTurnLeavePlay"); + if (!card.hasSVar("EndOfTurnLeavePlay")) { + return true; + } + + return false; } }); diff --git a/forge-ai/src/main/java/forge/ai/ability/CountersMultiplyAi.java b/forge-ai/src/main/java/forge/ai/ability/CountersMultiplyAi.java index 78dec0f8c0a..b20e99ace3b 100644 --- a/forge-ai/src/main/java/forge/ai/ability/CountersMultiplyAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/CountersMultiplyAi.java @@ -45,7 +45,10 @@ public class CountersMultiplyAi extends SpellAbilityAi { if (c.getCounters(counterType) <= 0) { return false; } - return c.canReceiveCounters(counterType); + if (!c.canReceiveCounters(counterType)) { + return false; + } + } else { for (Map.Entry e : c.getCounters().entrySet()) { // has negative counter it would double @@ -85,7 +88,11 @@ public class CountersMultiplyAi extends SpellAbilityAi { } } } - return !ComputerUtil.waitForBlocking(sa); + if (ComputerUtil.waitForBlocking(sa)) { + return false; + } + + return true; } @Override @@ -126,7 +133,9 @@ public class CountersMultiplyAi extends SpellAbilityAi { if (c.getCounters(counterType) <= 0) { return false; } - return c.canReceiveCounters(counterType); + if (!c.canReceiveCounters(counterType)) { + return false; + } } return true; diff --git a/forge-ai/src/main/java/forge/ai/ability/CountersPutAi.java b/forge-ai/src/main/java/forge/ai/ability/CountersPutAi.java index 30e8e0f8b0f..d139920d0a4 100644 --- a/forge-ai/src/main/java/forge/ai/ability/CountersPutAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/CountersPutAi.java @@ -592,7 +592,11 @@ public class CountersPutAi extends SpellAbilityAi { } } - return !ComputerUtil.waitForBlocking(sa); + if (ComputerUtil.waitForBlocking(sa)) { + return false; + } + + return true; } @Override @@ -1067,8 +1071,10 @@ public class CountersPutAi extends SpellAbilityAi { } int totBlkPower = Aggregates.sum(combat.getBlockers(source), CardPredicates.Accessors.fnGetNetPower); - return source.getNetToughness() <= totBlkPower - && source.getNetToughness() + amount > totBlkPower; + if (source.getNetToughness() <= totBlkPower + && source.getNetToughness() + amount > totBlkPower) { + return true; + } } } else if (combat.isBlocking(source)) { for (Card blocked : combat.getAttackersBlockedBy(source)) { @@ -1079,8 +1085,10 @@ public class CountersPutAi extends SpellAbilityAi { } int totAtkPower = Aggregates.sum(combat.getAttackersBlockedBy(source), CardPredicates.Accessors.fnGetNetPower); - return source.getNetToughness() <= totAtkPower - && source.getNetToughness() + amount > totAtkPower; + if (source.getNetToughness() <= totAtkPower + && source.getNetToughness() + amount > totAtkPower) { + return true; + } } return false; } diff --git a/forge-ai/src/main/java/forge/ai/ability/DamageAllAi.java b/forge-ai/src/main/java/forge/ai/ability/DamageAllAi.java index addba35d061..cbede1c1a11 100644 --- a/forge-ai/src/main/java/forge/ai/ability/DamageAllAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/DamageAllAi.java @@ -233,8 +233,12 @@ public class DamageAllAi extends SpellAbilityAi { return true; } - return computerList.isEmpty() || ComputerUtilCard.evaluateCreatureList(computerList) <= ComputerUtilCard - .evaluateCreatureList(humanList); + if (!computerList.isEmpty() && ComputerUtilCard.evaluateCreatureList(computerList) > ComputerUtilCard + .evaluateCreatureList(humanList)) { + return false; + } + + return true; } /** @@ -316,7 +320,11 @@ public class DamageAllAi extends SpellAbilityAi { return true; } - return computerList.isEmpty() || ComputerUtilCard.evaluateCreatureList(computerList) + 50 < ComputerUtilCard - .evaluateCreatureList(humanList); + if (!computerList.isEmpty() && ComputerUtilCard.evaluateCreatureList(computerList) + 50 >= ComputerUtilCard + .evaluateCreatureList(humanList)) { + return false; + } + + return true; } } diff --git a/forge-ai/src/main/java/forge/ai/ability/DamageDealAi.java b/forge-ai/src/main/java/forge/ai/ability/DamageDealAi.java index c683d8a14bf..f4af5ec56dc 100644 --- a/forge-ai/src/main/java/forge/ai/ability/DamageDealAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/DamageDealAi.java @@ -845,7 +845,10 @@ public class DamageDealAi extends DamageAiBase { if (!positive && !(saMe instanceof AbilitySub)) { return false; } - return urgent || SpellAbilityAi.playReusable(ai, saMe); + if (!urgent && !SpellAbilityAi.playReusable(ai, saMe)) { + return false; + } + return true; } /** diff --git a/forge-ai/src/main/java/forge/ai/ability/DestroyAi.java b/forge-ai/src/main/java/forge/ai/ability/DestroyAi.java index b229dd1ca51..69c5bf22fc0 100644 --- a/forge-ai/src/main/java/forge/ai/ability/DestroyAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/DestroyAi.java @@ -295,9 +295,11 @@ public class DestroyAi extends SpellAbilityAi { return false; } - return !list.isEmpty() - && CardLists.filterControlledBy(list, ai).isEmpty() - && !CardLists.getNotKeyword(list, Keyword.INDESTRUCTIBLE).isEmpty(); + if (list.isEmpty() + || !CardLists.filterControlledBy(list, ai).isEmpty() + || CardLists.getNotKeyword(list, Keyword.INDESTRUCTIBLE).isEmpty()) { + return false; + } } return true; } diff --git a/forge-ai/src/main/java/forge/ai/ability/DestroyAllAi.java b/forge-ai/src/main/java/forge/ai/ability/DestroyAllAi.java index 3e36251b077..a84aa9d8643 100644 --- a/forge-ai/src/main/java/forge/ai/ability/DestroyAllAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/DestroyAllAi.java @@ -146,7 +146,10 @@ public class DestroyAllAi extends SpellAbilityAi { AiBlockController block = new AiBlockController(ai); block.assignBlockersForCombat(combat); - return ComputerUtilCombat.lifeInSeriousDanger(ai, combat); + if (ComputerUtilCombat.lifeInSeriousDanger(ai, combat)) { + return true; + } + return false; } // only lands involved else if (CardLists.getNotType(opplist, "Land").isEmpty() && CardLists.getNotType(ailist, "Land").isEmpty()) { if (ai.isCardInPlay("Crucible of Worlds") && !opponent.isCardInPlay("Crucible of Worlds") && !opplist.isEmpty()) { @@ -161,9 +164,13 @@ public class DestroyAllAi extends SpellAbilityAi { } } // check if the AI would lose more lands than the opponent would - return ComputerUtilCard.evaluatePermanentList(ailist) <= ComputerUtilCard.evaluatePermanentList(opplist) + 1; + if (ComputerUtilCard.evaluatePermanentList(ailist) > ComputerUtilCard.evaluatePermanentList(opplist) + 1) { + return false; + } } // otherwise evaluate both lists by CMC and pass only if human permanents are more valuable - else return (ComputerUtilCard.evaluatePermanentList(ailist) + 3) < ComputerUtilCard.evaluatePermanentList(opplist); - + else if ((ComputerUtilCard.evaluatePermanentList(ailist) + 3) >= ComputerUtilCard.evaluatePermanentList(opplist)) { + return false; + } + return true; } } diff --git a/forge-ai/src/main/java/forge/ai/ability/DrawAi.java b/forge-ai/src/main/java/forge/ai/ability/DrawAi.java index 5bd958880c1..212f0bbdab6 100644 --- a/forge-ai/src/main/java/forge/ai/ability/DrawAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/DrawAi.java @@ -68,7 +68,10 @@ public class DrawAi extends SpellAbilityAi { return false; } - return canLoot(ai, sa); + if (!canLoot(ai, sa)) { + return false; + } + return true; } /* @@ -104,7 +107,11 @@ public class DrawAi extends SpellAbilityAi { } } - return ComputerUtilCost.checkRemoveCounterCost(cost, source, sa); + if (!ComputerUtilCost.checkRemoveCounterCost(cost, source, sa)) { + return false; + } + + return true; } /* @@ -195,7 +202,9 @@ public class DrawAi extends SpellAbilityAi { if (numHand == 0 && numDraw == numDiscard) { return false; // no looting since everything is dumped } - return numHand + numDraw >= numDiscard; // net loss of cards + if (numHand + numDraw < numDiscard) { + return false; // net loss of cards + } } return true; } @@ -477,8 +486,11 @@ public class DrawAi extends SpellAbilityAi { // ability is not targeted if (numCards >= computerLibrarySize) { - return ai.isCardInPlay("Laboratory Maniac"); + if (ai.isCardInPlay("Laboratory Maniac")) { + return true; + } // Don't deck yourself + return false; } if (numCards == 0 && !drawback) { @@ -491,7 +503,9 @@ public class DrawAi extends SpellAbilityAi { && !assumeSafeX) { // Don't draw too many cards and then risk discarding cards at // EOT - return drawback; + if (!drawback) { + return false; + } } } return true; diff --git a/forge-ai/src/main/java/forge/ai/ability/FightAi.java b/forge-ai/src/main/java/forge/ai/ability/FightAi.java index 94549a872b8..9a3b0965c42 100644 --- a/forge-ai/src/main/java/forge/ai/ability/FightAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/FightAi.java @@ -273,9 +273,10 @@ public class FightAi extends SpellAbilityAi { if (!canKill(opponent, fighter, -pumpDefense)) { // can survive return true; } else { - // trade - return MyRandom.getRandom().nextInt(20) < (opponent.getCMC() - fighter.getCMC()); - } + if (MyRandom.getRandom().nextInt(20)<(opponent.getCMC() - fighter.getCMC())) { // trade + return true; + } + } } return false; } @@ -288,7 +289,10 @@ public class FightAi extends SpellAbilityAi { || ComputerUtil.canRegenerate(opponent.getController(), opponent)) { return false; } - return fighter.hasKeyword(Keyword.DEATHTOUCH) - || ComputerUtilCombat.getDamageToKill(opponent) <= fighter.getNetPower() + pumpAttack; + if (fighter.hasKeyword(Keyword.DEATHTOUCH) + || ComputerUtilCombat.getDamageToKill(opponent) <= fighter.getNetPower() + pumpAttack) { + return true; + } + return false; } } diff --git a/forge-ai/src/main/java/forge/ai/ability/FlipACoinAi.java b/forge-ai/src/main/java/forge/ai/ability/FlipACoinAi.java index 2afefc36f03..7d61025c40d 100644 --- a/forge-ai/src/main/java/forge/ai/ability/FlipACoinAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/FlipACoinAi.java @@ -20,7 +20,9 @@ public class FlipACoinAi extends SpellAbilityAi { if (AILogic.equals("Never")) { return false; } else if (AILogic.equals("PhaseOut")) { - return ComputerUtil.predictThreatenedObjects(sa.getActivatingPlayer(), sa).contains(sa.getHostCard()); + if (!ComputerUtil.predictThreatenedObjects(sa.getActivatingPlayer(), sa).contains(sa.getHostCard())) { + return false; + } } else if (AILogic.equals("KillOrcs")) { if (ai.getGame().getPhaseHandler().getPhase().isBefore(PhaseType.END_OF_TURN) ) { return false; diff --git a/forge-ai/src/main/java/forge/ai/ability/LifeExchangeVariantAi.java b/forge-ai/src/main/java/forge/ai/ability/LifeExchangeVariantAi.java index a01bcf4ce67..e1432844d01 100644 --- a/forge-ai/src/main/java/forge/ai/ability/LifeExchangeVariantAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/LifeExchangeVariantAi.java @@ -120,7 +120,9 @@ public class LifeExchangeVariantAi extends SpellAbilityAi { MagicStack stack = game.getStack(); if (!stack.isEmpty()) { SpellAbility saTop = stack.peekAbility(); - return ComputerUtil.predictDamageFromSpell(saTop, ai) >= aiLife; + if (ComputerUtil.predictDamageFromSpell(saTop, ai) >= aiLife) { + return true; + } } } diff --git a/forge-ai/src/main/java/forge/ai/ability/LifeGainAi.java b/forge-ai/src/main/java/forge/ai/ability/LifeGainAi.java index 981c5f10d7b..41751f85882 100644 --- a/forge-ai/src/main/java/forge/ai/ability/LifeGainAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/LifeGainAi.java @@ -49,7 +49,9 @@ public class LifeGainAi extends SpellAbilityAi { return false; } - return ComputerUtilCost.checkRemoveCounterCost(cost, source); + if (!ComputerUtilCost.checkRemoveCounterCost(cost, source)) { + return false; + } } else { // don't sac possible blockers if (!ph.getPhase().equals(PhaseType.COMBAT_DECLARE_BLOCKERS) @@ -61,7 +63,9 @@ public class LifeGainAi extends SpellAbilityAi { skipCheck |= ComputerUtilCost.isSacrificeSelfCost(cost) && !source.isCreature(); if (!skipCheck) { - return ComputerUtilCost.checkSacrificeCost(ai, cost, source, sa, false); + if (!ComputerUtilCost.checkSacrificeCost(ai, cost, source, sa,false)) { + return false; + } } } } diff --git a/forge-ai/src/main/java/forge/ai/ability/LifeLoseAi.java b/forge-ai/src/main/java/forge/ai/ability/LifeLoseAi.java index a4a6a80981f..087261271c2 100644 --- a/forge-ai/src/main/java/forge/ai/ability/LifeLoseAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/LifeLoseAi.java @@ -146,8 +146,12 @@ public class LifeLoseAi extends SpellAbilityAi { return false; } - return SpellAbilityAi.isSorcerySpeed(sa) || sa.hasParam("ActivationPhases") || SpellAbilityAi.playReusable(ai, sa) - || ComputerUtil.activateForCost(sa, ai); + if (SpellAbilityAi.isSorcerySpeed(sa) || sa.hasParam("ActivationPhases") || SpellAbilityAi.playReusable(ai, sa) + || ComputerUtil.activateForCost(sa, ai)) { + return true; + } + + return false; } /* diff --git a/forge-ai/src/main/java/forge/ai/ability/ManifestAi.java b/forge-ai/src/main/java/forge/ai/ability/ManifestAi.java index 947db225886..57e70f7fe58 100644 --- a/forge-ai/src/main/java/forge/ai/ability/ManifestAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/ManifestAi.java @@ -80,7 +80,9 @@ public class ManifestAi extends SpellAbilityAi { // Set PayX here to maximum value. int x = ComputerUtilMana.determineLeftoverMana(sa, ai); source.setSVar("PayX", Integer.toString(x)); - return x > 0; + if (x <= 0) { + return false; + } } return true; @@ -119,7 +121,9 @@ public class ManifestAi extends SpellAbilityAi { return false; // card has ETBTrigger or ETBReplacement - return !card.hasETBTrigger(false) && !card.hasETBReplacement(); + if (card.hasETBTrigger(false) || card.hasETBReplacement()) { + return false; + } } return true; } diff --git a/forge-ai/src/main/java/forge/ai/ability/PeekAndRevealAi.java b/forge-ai/src/main/java/forge/ai/ability/PeekAndRevealAi.java index 008172bebcc..bd6dedc12ec 100644 --- a/forge-ai/src/main/java/forge/ai/ability/PeekAndRevealAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/PeekAndRevealAi.java @@ -24,8 +24,10 @@ public class PeekAndRevealAi extends SpellAbilityAi { return false; } if ("Main2".equals(sa.getParam("AILogic"))) { - return !aiPlayer.getGame().getPhaseHandler().getPhase().isBefore(PhaseType.MAIN2); - } + if (aiPlayer.getGame().getPhaseHandler().getPhase().isBefore(PhaseType.MAIN2)) { + return false; + } + } // So far this only appears on Triggers, but will expand // once things get converted from Dig + NoMove return true; diff --git a/forge-ai/src/main/java/forge/ai/ability/PoisonAi.java b/forge-ai/src/main/java/forge/ai/ability/PoisonAi.java index 5161d672432..0eba3082f50 100644 --- a/forge-ai/src/main/java/forge/ai/ability/PoisonAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/PoisonAi.java @@ -75,10 +75,12 @@ public class PoisonAi extends SpellAbilityAi { } Player max = players.max(PlayerPredicates.compareByPoison()); - // ai is one of the max - return ai.getPoisonCounters() != max.getPoisonCounters(); + if (ai.getPoisonCounters() == max.getPoisonCounters()) { + // ai is one of the max + return false; + } } - + return true; } private boolean tgtPlayer(Player ai, SpellAbility sa, boolean mandatory) { @@ -90,8 +92,10 @@ public class PoisonAi extends SpellAbilityAi { public boolean apply(Player input) { if (input.cantLose()) { return false; - } else return input.canReceiveCounters(CounterType.POISON); - + } else if (!input.canReceiveCounters(CounterType.POISON)) { + return false; + } + return true; } }); diff --git a/forge-ai/src/main/java/forge/ai/ability/RevealAi.java b/forge-ai/src/main/java/forge/ai/ability/RevealAi.java index 7598d45a700..676d706d06b 100644 --- a/forge-ai/src/main/java/forge/ai/ability/RevealAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/RevealAi.java @@ -80,7 +80,11 @@ public class RevealAi extends RevealAiBase { } - return revealHandTargetAI(ai, sa/*, false, mandatory*/); + if (!revealHandTargetAI(ai, sa/*, false, mandatory*/)) { + return false; + } + + return true; } } diff --git a/forge-ai/src/main/java/forge/ai/ability/SetStateAi.java b/forge-ai/src/main/java/forge/ai/ability/SetStateAi.java index 408fa9a62a4..79104d062a6 100644 --- a/forge-ai/src/main/java/forge/ai/ability/SetStateAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/SetStateAi.java @@ -33,7 +33,10 @@ public class SetStateAi extends SpellAbilityAi { return false; } - return "Transform".equals(mode) || "Flip".equals(mode); + if("Transform".equals(mode) || "Flip".equals(mode)) { + return true; + } + return false; } @Override diff --git a/forge-core/src/main/java/forge/ImageKeys.java b/forge-core/src/main/java/forge/ImageKeys.java index ee1bca83312..3e5192ba642 100644 --- a/forge-core/src/main/java/forge/ImageKeys.java +++ b/forge-core/src/main/java/forge/ImageKeys.java @@ -133,7 +133,7 @@ public final class ImageKeys { // if there's an art variant try without it if (setlessFilename.matches(".*[0-9]*$")) { file = findFile(dir, setlessFilename.replaceAll("[0-9]*$", "")); - return file; + if (file != null) { return file; } } } } else if (filename.contains("/")) { @@ -144,7 +144,7 @@ public final class ImageKeys { // try lowering the art index to the minimum for regular cards if (setlessFilename.contains(".full")) { file = findFile(dir, setlessFilename.replaceAll("[0-9]*[.]full", "1.full")); - return file; + if (file != null) { return file; } } } diff --git a/forge-core/src/main/java/forge/LobbyPlayer.java b/forge-core/src/main/java/forge/LobbyPlayer.java index 171d4e04e96..79139ec3a75 100644 --- a/forge-core/src/main/java/forge/LobbyPlayer.java +++ b/forge-core/src/main/java/forge/LobbyPlayer.java @@ -47,8 +47,13 @@ public abstract class LobbyPlayer { } LobbyPlayer other = (LobbyPlayer) obj; if (name == null) { - return other.name == null; - } else return name.equals(other.name); + if (other.name != null) { + return false; + } + } else if (!name.equals(other.name)) { + return false; + } + return true; } public int getAvatarIndex() { diff --git a/forge-core/src/main/java/forge/card/CardType.java b/forge-core/src/main/java/forge/card/CardType.java index f7c85f94bb7..21cd142f63a 100644 --- a/forge-core/src/main/java/forge/card/CardType.java +++ b/forge-core/src/main/java/forge/card/CardType.java @@ -598,7 +598,10 @@ public final class CardType implements Comparable, CardTypeView { if (multiWordTypes[0].startsWith(type) && !multiWordTypes[0].equals(type)) { return true; } - return multiWordTypes[1].startsWith(type) && !multiWordTypes[1].equals(type); + if (multiWordTypes[1].startsWith(type) && !multiWordTypes[1].equals(type)) { + return true; + } + return false; } public static class Constant { diff --git a/forge-core/src/main/java/forge/deck/DeckRecognizer.java b/forge-core/src/main/java/forge/deck/DeckRecognizer.java index 52d2005fd3f..0cae2a03261 100644 --- a/forge-core/src/main/java/forge/deck/DeckRecognizer.java +++ b/forge-core/src/main/java/forge/deck/DeckRecognizer.java @@ -216,7 +216,10 @@ public class DeckRecognizer { if (line.toLowerCase().contains("schemes")) { return true; } - return line.toLowerCase().contains("vanguard"); + if (line.toLowerCase().contains("vanguard")) { + return true; + } + return false; } public void setDateConstraint(int month, Integer year) { diff --git a/forge-core/src/main/java/forge/item/PaperCard.java b/forge-core/src/main/java/forge/item/PaperCard.java index f69036aa1c9..4200b240e4d 100644 --- a/forge-core/src/main/java/forge/item/PaperCard.java +++ b/forge-core/src/main/java/forge/item/PaperCard.java @@ -159,7 +159,11 @@ public final class PaperCard implements Comparable, InventoryItemFro if (!edition.equals(other.edition)) { return false; } - return (other.foil == foil) && (other.artIndex == artIndex); + if ((other.foil != foil) || (other.artIndex != artIndex)) { + return false; + } + + return true; } /* diff --git a/forge-game/src/main/java/forge/game/combat/CombatUtil.java b/forge-game/src/main/java/forge/game/combat/CombatUtil.java index 0273d3a03cb..5f020665993 100644 --- a/forge-game/src/main/java/forge/game/combat/CombatUtil.java +++ b/forge-game/src/main/java/forge/game/combat/CombatUtil.java @@ -1069,7 +1069,11 @@ public class CombatUtil { return false; } - return !attacker.hasKeyword(Keyword.INTIMIDATE) || blocker.isArtifact() || blocker.sharesColorWith(attacker); + if (attacker.hasKeyword(Keyword.INTIMIDATE) && !blocker.isArtifact() && !blocker.sharesColorWith(attacker)) { + return false; + } + + return true; } // canBlock() public static boolean canAttackerBeBlockedWithAmount(Card attacker, int amount, Combat combat) { diff --git a/forge-game/src/main/java/forge/game/cost/CostDiscard.java b/forge-game/src/main/java/forge/game/cost/CostDiscard.java index b8073001756..517b374b6b8 100644 --- a/forge-game/src/main/java/forge/game/cost/CostDiscard.java +++ b/forge-game/src/main/java/forge/game/cost/CostDiscard.java @@ -149,11 +149,13 @@ public class CostDiscard extends CostPartWithList { } } - // not enough cards in hand to pay - return (amount == null) || (amount <= handList.size() - adjustment); + if ((amount != null) && (amount > handList.size() - adjustment)) { + // not enough cards in hand to pay + return false; + } } } - + return true; } /* (non-Javadoc) diff --git a/forge-game/src/main/java/forge/game/cost/CostPayLife.java b/forge-game/src/main/java/forge/game/cost/CostPayLife.java index 39f59048685..c0394e31bc4 100644 --- a/forge-game/src/main/java/forge/game/cost/CostPayLife.java +++ b/forge-game/src/main/java/forge/game/cost/CostPayLife.java @@ -78,7 +78,11 @@ public class CostPayLife extends CostPart { return false; } - return !payer.hasKeyword("You can't pay life to cast spells or activate abilities."); + if (payer.hasKeyword("You can't pay life to cast spells or activate abilities.")) { + return false; + } + + return true; } @Override diff --git a/forge-game/src/main/java/forge/game/player/Player.java b/forge-game/src/main/java/forge/game/player/Player.java index 9e42220c143..d4214940983 100644 --- a/forge-game/src/main/java/forge/game/player/Player.java +++ b/forge-game/src/main/java/forge/game/player/Player.java @@ -2476,7 +2476,10 @@ public class Player extends GameEntity implements Comparable { "Skip all combat phases of this turn."); return true; } - return hasKeyword("Skip all combat phases of this turn."); + if (hasKeyword("Skip all combat phases of this turn.")) { + return true; + } + return false; } public boolean isSkippingMain() { @@ -2596,7 +2599,10 @@ public class Player extends GameEntity implements Comparable { removeKeyword("Skip your next draw step."); return true; } - return hasKeyword("Skip your draw step."); + if (hasKeyword("Skip your draw step.")) { + return true; + } + return false; } public CardCollectionView getInboundTokens() { diff --git a/forge-game/src/main/java/forge/game/player/PlayerProperty.java b/forge-game/src/main/java/forge/game/player/PlayerProperty.java index 73aebdbd1c0..f1c17abdf59 100644 --- a/forge-game/src/main/java/forge/game/player/PlayerProperty.java +++ b/forge-game/src/main/java/forge/game/player/PlayerProperty.java @@ -23,9 +23,13 @@ public class PlayerProperty { Game game = player.getGame(); if (property.equals("You")) { - return player.equals(sourceController); + if (!player.equals(sourceController)) { + return false; + } } else if (property.equals("Opponent")) { - return !player.equals(sourceController) && player.isOpponentOf(sourceController); + if (player.equals(sourceController) || !player.isOpponentOf(sourceController)) { + return false; + } } else if (property.startsWith("OpponentOf ")) { final String v = property.split(" ")[1]; final List players = AbilityUtils.getDefinedPlayers(source, v, spellAbility); @@ -35,24 +39,42 @@ public class PlayerProperty { } } } else if (property.equals("YourTeam")) { - return player.sameTeam(sourceController); + if (!player.sameTeam(sourceController)) { + return false; + } } else if (property.equals("Allies")) { - return !player.equals(sourceController) && !player.isOpponentOf(sourceController); + if (player.equals(sourceController) || player.isOpponentOf(sourceController)) { + return false; + } } else if (property.equals("Active")) { - return player.equals(game.getPhaseHandler().getPlayerTurn()); + if (!player.equals(game.getPhaseHandler().getPlayerTurn())) { + return false; + } } else if (property.equals("NonActive")) { - return !player.equals(game.getPhaseHandler().getPlayerTurn()); + if (player.equals(game.getPhaseHandler().getPlayerTurn())) { + return false; + } } else if (property.equals("OpponentToActive")) { final Player active = game.getPhaseHandler().getPlayerTurn(); - return !player.equals(active) && player.isOpponentOf(active); + if (player.equals(active) || !player.isOpponentOf(active)) { + return false; + } } else if (property.equals("Other")) { - return !player.equals(sourceController); + if (player.equals(sourceController)) { + return false; + } } else if (property.equals("OtherThanSourceOwner")) { - return !player.equals(source.getOwner()); + if (player.equals(source.getOwner())) { + return false; + } } else if (property.equals("isMonarch")) { - return player.equals(game.getMonarch()); + if (!player.equals(game.getMonarch())) { + return false; + } } else if (property.equals("hasBlessing")) { - return player.hasBlessing(); + if (!player.hasBlessing()) { + return false; + } } else if (property.startsWith("wasDealtCombatDamageThisCombatBy ")) { String v = property.split(" ")[1]; @@ -69,7 +91,9 @@ public class PlayerProperty { found++; } } - return found >= count; + if (found < count) { + return false; + } } else if (property.startsWith("wasDealtDamageThisGameBy ")) { String v = property.split(" ")[1]; @@ -86,7 +110,9 @@ public class PlayerProperty { found++; } } - return found >= count; + if (found < count) { + return false; + } } else if (property.startsWith("wasDealtDamageThisTurnBy ")) { String v = property.split(" ")[1]; int count = 1; @@ -103,7 +129,9 @@ public class PlayerProperty { found++; } } - return found >= count; + if (found < count) { + return false; + } } else if (property.startsWith("wasDealtCombatDamageThisTurnBy ")) { String v = property.split(" ")[1]; @@ -121,54 +149,90 @@ public class PlayerProperty { found++; } } - return found >= count; + if (found < count) { + return false; + } } else if (property.equals("attackedBySourceThisCombat")) { - return game.getCombat() != null && player.equals(game.getCombat().getDefenderPlayerByAttacker(source)); + if (game.getCombat() == null || !player.equals(game.getCombat().getDefenderPlayerByAttacker(source))) { + return false; + } } else if (property.equals("wasDealtDamageThisTurn")) { - return player.getAssignedDamage() != 0; + if (player.getAssignedDamage() == 0) { + return false; + } } else if (property.equals("wasDealtCombatDamageThisTurn")) { - return player.getAssignedCombatDamage() != 0; + if (player.getAssignedCombatDamage() == 0) { + return false; + } } else if (property.equals("LostLifeThisTurn")) { - return player.getLifeLostThisTurn() > 0; + if (player.getLifeLostThisTurn() <= 0) { + return false; + } } else if (property.equals("DeclaredAttackerThisTurn")) { - return player.getAttackersDeclaredThisTurn() > 0; + if (player.getAttackersDeclaredThisTurn() <= 0) { + return false; + } } else if (property.equals("TappedLandForManaThisTurn")) { - return player.hasTappedLandForManaThisTurn(); + if (!player.hasTappedLandForManaThisTurn()) { + return false; + } } else if (property.equals("NoCardsInHandAtBeginningOfTurn")) { - return player.getNumCardsInHandStartedThisTurnWith() <= 0; + if (player.getNumCardsInHandStartedThisTurnWith() > 0) { + return false; + } } else if (property.equals("CardsInHandAtBeginningOfTurn")) { - return player.getNumCardsInHandStartedThisTurnWith() > 0; + if (player.getNumCardsInHandStartedThisTurnWith() <= 0) { + return false; + } } else if (property.startsWith("WithCardsInHand")) { if (property.contains("AtLeast")) { int amount = Integer.parseInt(property.split("AtLeast")[1]); - return player.getCardsIn(ZoneType.Hand).size() >= amount; + if (player.getCardsIn(ZoneType.Hand).size() < amount) { + return false; + } } } else if (property.equals("IsRemembered")) { - return source.isRemembered(player); + if (!source.isRemembered(player)) { + return false; + } } else if (property.equals("IsNotRemembered")) { - return !source.isRemembered(player); + if (source.isRemembered(player)) { + return false; + } } else if (property.equals("EnchantedBy")) { - return player.isEnchantedBy(source); + if (!player.isEnchantedBy(source)) { + return false; + } } else if (property.equals("Chosen")) { - return source.getChosenPlayer() != null && source.getChosenPlayer().equals(player); + if (source.getChosenPlayer() == null || !source.getChosenPlayer().equals(player)) { + return false; + } } else if (property.startsWith("LifeEquals_")) { int life = AbilityUtils.calculateAmount(source, property.substring(11), null); - return player.getLife() == life; + if (player.getLife() != life) { + return false; + } } else if (property.equals("IsPoisoned")) { - return player.getPoisonCounters() > 0; + if (player.getPoisonCounters() <= 0) { + return false; + } } else if (property.startsWith("controls")) { final String[] type = property.substring(8).split("_"); final CardCollectionView list = CardLists.getValidCards(player.getCardsIn(ZoneType.Battlefield), type[0], sourceController, source); String comparator = type[1]; String compareTo = comparator.substring(2); int y = StringUtils.isNumeric(compareTo) ? Integer.parseInt(compareTo) : 0; - return Expressions.compare(list.size(), comparator, y); + if (!Expressions.compare(list.size(), comparator, y)) { + return false; + } } else if (property.startsWith("withMore")) { final String cardType = property.split("sThan")[0].substring(8); final Player controller = "Active".equals(property.split("sThan")[1]) ? game.getPhaseHandler().getPlayerTurn() : sourceController; final CardCollectionView oppList = CardLists.filter(player.getCardsIn(ZoneType.Battlefield), CardPredicates.isType(cardType)); final CardCollectionView yourList = CardLists.filter(controller.getCardsIn(ZoneType.Battlefield), CardPredicates.isType(cardType)); - return oppList.size() > yourList.size(); + if (oppList.size() <= yourList.size()) { + return false; + } } else if (property.startsWith("withAtLeast")) { final String cardType = property.split("More")[1].split("sThan")[0]; final int amount = Integer.parseInt(property.substring(11, 12)); @@ -176,19 +240,25 @@ public class PlayerProperty { final CardCollectionView oppList = CardLists.filter(player.getCardsIn(ZoneType.Battlefield), CardPredicates.isType(cardType)); final CardCollectionView yourList = CardLists.filter(controller.getCardsIn(ZoneType.Battlefield), CardPredicates.isType(cardType)); System.out.println(yourList.size()); - return oppList.size() >= yourList.size() + amount; + if (oppList.size() < yourList.size() + amount) { + return false; + } } else if (property.startsWith("hasMore")) { final Player controller = property.contains("Than") && "Active".equals(property.split("Than")[1]) ? game.getPhaseHandler().getPlayerTurn() : sourceController; if (property.substring(7).startsWith("Life") && player.getLife() <= controller.getLife()) { return false; - } else return !property.substring(7).startsWith("CardsInHand") - || player.getCardsIn(ZoneType.Hand).size() > controller.getCardsIn(ZoneType.Hand).size(); + } else if (property.substring(7).startsWith("CardsInHand") + && player.getCardsIn(ZoneType.Hand).size() <= controller.getCardsIn(ZoneType.Hand).size()) { + return false; + } } else if (property.startsWith("hasFewer")) { final Player controller = "Active".equals(property.split("Than")[1]) ? game.getPhaseHandler().getPlayerTurn() : sourceController; final ZoneType zt = property.substring(8).startsWith("CreaturesInYard") ? ZoneType.Graveyard : ZoneType.Battlefield; final CardCollectionView oppList = CardLists.filter(player.getCardsIn(zt), Presets.CREATURES); final CardCollectionView yourList = CardLists.filter(controller.getCardsIn(zt), Presets.CREATURES); - return oppList.size() < yourList.size(); + if (oppList.size() >= yourList.size()) { + return false; + } } else if (property.startsWith("withMost")) { final String kind = property.substring(8); if (kind.equals("Life")) { @@ -198,7 +268,9 @@ public class PlayerProperty { highestLife = p.getLife(); } } - return player.getLife() == highestLife; + if (player.getLife() != highestLife) { + return false; + } } else if (kind.equals("PermanentInPlay")) { int typeNum = 0; @@ -214,7 +286,9 @@ public class PlayerProperty { } } - return controlmost.size() == 1 && controlmost.contains(player); + if (controlmost.size() != 1 || !controlmost.contains(player)) { + return false; + } } else if (kind.equals("CardsInHand")) { int largestHand = 0; @@ -225,7 +299,9 @@ public class PlayerProperty { withLargestHand = p; } } - return player.equals(withLargestHand); + if (!player.equals(withLargestHand)) { + return false; + } } else if (kind.startsWith("Type")) { String type = property.split("Type")[1]; @@ -249,7 +325,9 @@ public class PlayerProperty { if (checkOnly && controlmost.size() != 1) { return false; } - return controlmost.contains(player); + if (!controlmost.contains(player)) { + return false; + } } } else if (property.startsWith("withLowest")) { if (property.substring(10).equals("Life")) { @@ -264,14 +342,20 @@ public class PlayerProperty { lowestlifep.add(p); } } - return lowestlifep.contains(player); + if (!lowestlifep.contains(player)) { + return false; + } } } else if (property.startsWith("LessThanHalfStartingLifeTotal")) { - return player.getLife() < (int) Math.ceil(player.getStartingLife() / 2.0); + if (player.getLife() >= (int) Math.ceil(player.getStartingLife() / 2.0)) { + return false; + } } else if (property.startsWith("Triggered")) { - return AbilityUtils.getDefinedPlayers(source, property, spellAbility).contains(player); + if (!AbilityUtils.getDefinedPlayers(source, property, spellAbility).contains(player)) { + return false; + } } return true; } -} +} \ No newline at end of file diff --git a/forge-game/src/main/java/forge/game/replacement/ReplaceAddCounter.java b/forge-game/src/main/java/forge/game/replacement/ReplaceAddCounter.java index 882dd783bcc..05bf6c1627d 100644 --- a/forge-game/src/main/java/forge/game/replacement/ReplaceAddCounter.java +++ b/forge-game/src/main/java/forge/game/replacement/ReplaceAddCounter.java @@ -59,7 +59,9 @@ public class ReplaceAddCounter extends ReplacementEffect { if (mapParams.containsKey("ValidCounterType")) { String type = this.getMapParams().get("ValidCounterType"); - return CounterType.getType(type) == runParams.get("CounterType"); + if (CounterType.getType(type) != runParams.get("CounterType")) { + return false; + } } return true; diff --git a/forge-game/src/main/java/forge/game/replacement/ReplaceCounter.java b/forge-game/src/main/java/forge/game/replacement/ReplaceCounter.java index e1e92a84ae0..6708d29b7ed 100644 --- a/forge-game/src/main/java/forge/game/replacement/ReplaceCounter.java +++ b/forge-game/src/main/java/forge/game/replacement/ReplaceCounter.java @@ -59,7 +59,9 @@ public class ReplaceCounter extends ReplacementEffect { } if (this.getMapParams().containsKey("ValidType")) { String type = this.getMapParams().get("ValidType"); - return !type.equals("Spell") || spellAbility.isSpell(); + if (type.equals("Spell") && !spellAbility.isSpell()) { + return false; + } } return true; } diff --git a/forge-game/src/main/java/forge/game/replacement/ReplaceDestroy.java b/forge-game/src/main/java/forge/game/replacement/ReplaceDestroy.java index 5aa9da41132..fa61c0e1123 100644 --- a/forge-game/src/main/java/forge/game/replacement/ReplaceDestroy.java +++ b/forge-game/src/main/java/forge/game/replacement/ReplaceDestroy.java @@ -74,7 +74,9 @@ public class ReplaceDestroy extends ReplacementEffect { } } if (hasParam("ValidSource")) { - return matchesValid(runParams.get("Source"), getParam("ValidSource").split(","), getHostCard()); + if (!matchesValid(runParams.get("Source"), getParam("ValidSource").split(","), getHostCard())) { + return false; + } } return true; diff --git a/forge-game/src/main/java/forge/game/replacement/ReplaceDiscard.java b/forge-game/src/main/java/forge/game/replacement/ReplaceDiscard.java index 8354cf6418b..20499fc1de2 100644 --- a/forge-game/src/main/java/forge/game/replacement/ReplaceDiscard.java +++ b/forge-game/src/main/java/forge/game/replacement/ReplaceDiscard.java @@ -62,7 +62,9 @@ public class ReplaceDiscard extends ReplacementEffect { } } if (this.getMapParams().containsKey("DiscardFromEffect")) { - return null != runParams.get("Source"); + if (null == runParams.get("Source")) { + return false; + } } return true; diff --git a/forge-game/src/main/java/forge/game/replacement/ReplaceDraw.java b/forge-game/src/main/java/forge/game/replacement/ReplaceDraw.java index a6547e66d49..4b7b2d80f38 100644 --- a/forge-game/src/main/java/forge/game/replacement/ReplaceDraw.java +++ b/forge-game/src/main/java/forge/game/replacement/ReplaceDraw.java @@ -55,9 +55,11 @@ public class ReplaceDraw extends ReplacementEffect { } if (this.getMapParams().containsKey("NotFirstCardInDrawStep")) { final Player p = (Player)runParams.get("Affected"); - return p.numDrawnThisDrawStep() != 0 - || !this.getHostCard().getGame().getPhaseHandler().is(PhaseType.DRAW) - || !this.getHostCard().getGame().getPhaseHandler().isPlayerTurn(p); + if (p.numDrawnThisDrawStep() == 0 + && this.getHostCard().getGame().getPhaseHandler().is(PhaseType.DRAW) + && this.getHostCard().getGame().getPhaseHandler().isPlayerTurn(p)) { + return false; + } } return true; diff --git a/forge-game/src/main/java/forge/game/replacement/ReplaceDrawCards.java b/forge-game/src/main/java/forge/game/replacement/ReplaceDrawCards.java index fffc08855ed..30f56eceb9d 100644 --- a/forge-game/src/main/java/forge/game/replacement/ReplaceDrawCards.java +++ b/forge-game/src/main/java/forge/game/replacement/ReplaceDrawCards.java @@ -57,7 +57,9 @@ public class ReplaceDrawCards extends ReplacementEffect { String comparator = this.getMapParams().get("Number"); final String operator = comparator.substring(0, 2); final int operandValue = Integer.parseInt(comparator.substring(2)); - return Expressions.compare(n, operator, operandValue); + if (!Expressions.compare(n, operator, operandValue)) { + return false; + } } return true; diff --git a/forge-game/src/main/java/forge/game/replacement/ReplaceGainLife.java b/forge-game/src/main/java/forge/game/replacement/ReplaceGainLife.java index aa95a7a8862..d269f9c044f 100644 --- a/forge-game/src/main/java/forge/game/replacement/ReplaceGainLife.java +++ b/forge-game/src/main/java/forge/game/replacement/ReplaceGainLife.java @@ -57,7 +57,9 @@ public class ReplaceGainLife extends ReplacementEffect { } } if ("True".equals(this.getMapParams().get("SourceController"))) { - return runParams.get("Source") != null && runParams.get("Affected").equals(((Card) runParams.get("Source")).getController()); + if (runParams.get("Source") == null || !runParams.get("Affected").equals(((Card)runParams.get("Source")).getController())) { + return false; + } } return true; diff --git a/forge-game/src/main/java/forge/game/replacement/ReplaceGameLoss.java b/forge-game/src/main/java/forge/game/replacement/ReplaceGameLoss.java index d6cc1b84cf2..298f6cf470b 100644 --- a/forge-game/src/main/java/forge/game/replacement/ReplaceGameLoss.java +++ b/forge-game/src/main/java/forge/game/replacement/ReplaceGameLoss.java @@ -29,7 +29,9 @@ public class ReplaceGameLoss extends ReplacementEffect { return false; } if (this.getMapParams().containsKey("ValidPlayer")) { - return matchesValid(runParams.get("Affected"), this.getMapParams().get("ValidPlayer").split(","), this.getHostCard()); + if (!matchesValid(runParams.get("Affected"), this.getMapParams().get("ValidPlayer").split(","), this.getHostCard())) { + return false; + } } return true; diff --git a/forge-game/src/main/java/forge/game/replacement/ReplaceMoved.java b/forge-game/src/main/java/forge/game/replacement/ReplaceMoved.java index a7af2db3f2e..162d87bca99 100644 --- a/forge-game/src/main/java/forge/game/replacement/ReplaceMoved.java +++ b/forge-game/src/main/java/forge/game/replacement/ReplaceMoved.java @@ -105,7 +105,9 @@ public class ReplaceMoved extends ReplacementEffect { if (runParams.containsKey("Cause")) { SpellAbility cause = (SpellAbility) runParams.get("Cause"); if (cause != null) { - return !cause.isValid(getParam("NotCause").split(","), controller, getHostCard(), null); + if (cause.isValid(getParam("NotCause").split(","), controller, getHostCard(), null)) { + return false; + } } } } diff --git a/forge-game/src/main/java/forge/game/replacement/ReplaceProduceMana.java b/forge-game/src/main/java/forge/game/replacement/ReplaceProduceMana.java index dc7c218e750..90abfa87fd6 100644 --- a/forge-game/src/main/java/forge/game/replacement/ReplaceProduceMana.java +++ b/forge-game/src/main/java/forge/game/replacement/ReplaceProduceMana.java @@ -58,7 +58,9 @@ public class ReplaceProduceMana extends ReplacementEffect { } if (this.getMapParams().containsKey("ValidCard")) { - return matchesValid(runParams.get("Affected"), this.getMapParams().get("ValidCard").split(","), this.getHostCard()); + if (!matchesValid(runParams.get("Affected"), this.getMapParams().get("ValidCard").split(","), this.getHostCard())) { + return false; + } } return true; diff --git a/forge-game/src/main/java/forge/game/replacement/ReplaceSetInMotion.java b/forge-game/src/main/java/forge/game/replacement/ReplaceSetInMotion.java index 7cfb4413ce8..d4c2c7a2c1f 100644 --- a/forge-game/src/main/java/forge/game/replacement/ReplaceSetInMotion.java +++ b/forge-game/src/main/java/forge/game/replacement/ReplaceSetInMotion.java @@ -46,7 +46,9 @@ public class ReplaceSetInMotion extends ReplacementEffect { return false; } if (this.getMapParams().containsKey("ValidPlayer")) { - return matchesValid(runParams.get("Affected"), this.getMapParams().get("ValidPlayer").split(","), this.getHostCard()); + if (!matchesValid(runParams.get("Affected"), this.getMapParams().get("ValidPlayer").split(","), this.getHostCard())) { + return false; + } } return true; diff --git a/forge-game/src/main/java/forge/game/replacement/ReplaceSurveil.java b/forge-game/src/main/java/forge/game/replacement/ReplaceSurveil.java index 809dd8a00a8..ad6a9478245 100644 --- a/forge-game/src/main/java/forge/game/replacement/ReplaceSurveil.java +++ b/forge-game/src/main/java/forge/game/replacement/ReplaceSurveil.java @@ -31,7 +31,9 @@ public class ReplaceSurveil extends ReplacementEffect { } if (hasParam("ValidPlayer")) { - return matchesValid(runParams.get("Affected"), getParam("ValidPlayer").split(","), getHostCard()); + if (!matchesValid(runParams.get("Affected"), this.getMapParams().get("ValidPlayer").split(","), this.getHostCard())) { + return false; + } } return true; diff --git a/forge-game/src/main/java/forge/game/replacement/ReplaceToken.java b/forge-game/src/main/java/forge/game/replacement/ReplaceToken.java index f8b5d4ebe78..d58cd697b4a 100644 --- a/forge-game/src/main/java/forge/game/replacement/ReplaceToken.java +++ b/forge-game/src/main/java/forge/game/replacement/ReplaceToken.java @@ -45,7 +45,9 @@ public class ReplaceToken extends ReplacementEffect { if (hasParam("ValidToken")) { if (runParams.containsKey("Token")) { - return matchesValid(runParams.get("Token"), getParam("ValidToken").split(","), getHostCard()); + if (!matchesValid(runParams.get("Token"), getParam("ValidToken").split(","), getHostCard())) { + return false; + } } else { // in case RE is not updated yet return false; diff --git a/forge-game/src/main/java/forge/game/replacement/ReplaceTurnFaceUp.java b/forge-game/src/main/java/forge/game/replacement/ReplaceTurnFaceUp.java index 67feac6bdbd..d1d4bbe2845 100644 --- a/forge-game/src/main/java/forge/game/replacement/ReplaceTurnFaceUp.java +++ b/forge-game/src/main/java/forge/game/replacement/ReplaceTurnFaceUp.java @@ -30,7 +30,9 @@ public class ReplaceTurnFaceUp extends ReplacementEffect { return false; } if (this.getMapParams().containsKey("ValidCard")) { - return matchesValid(runParams.get("Affected"), this.getMapParams().get("ValidCard").split(","), this.getHostCard()); + if (!matchesValid(runParams.get("Affected"), this.getMapParams().get("ValidCard").split(","), this.getHostCard())) { + return false; + } } return true; } diff --git a/forge-game/src/main/java/forge/game/replacement/ReplaceUntap.java b/forge-game/src/main/java/forge/game/replacement/ReplaceUntap.java index 898ec36bfea..d336af27279 100644 --- a/forge-game/src/main/java/forge/game/replacement/ReplaceUntap.java +++ b/forge-game/src/main/java/forge/game/replacement/ReplaceUntap.java @@ -63,7 +63,9 @@ public class ReplaceUntap extends ReplacementEffect { final Card card = (Card) o; // all replace untap with untapStep does have "your untap step" final Player player = card.getController(); - return player.getGame().getPhaseHandler().is(PhaseType.UNTAP, player); + if (!player.getGame().getPhaseHandler().is(PhaseType.UNTAP, player)) { + return false; + } } return true; diff --git a/forge-game/src/main/java/forge/game/spellability/SpellAbility.java b/forge-game/src/main/java/forge/game/spellability/SpellAbility.java index 2ec5dac8bc2..cfa028365c6 100644 --- a/forge-game/src/main/java/forge/game/spellability/SpellAbility.java +++ b/forge-game/src/main/java/forge/game/spellability/SpellAbility.java @@ -1720,7 +1720,10 @@ public abstract class SpellAbility extends CardTraitBase implements ISpellAbilit if (isSpell() && text.contains("was spent to cast")) { return true; } - return isAbility() && text.contains("mana spent to pay"); + if (isAbility() && text.contains("mana spent to pay")) { + return true; + } + return false; } public void checkActivationResloveSubs() { 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 80fe9bedd26..c53c34bd3ce 100644 --- a/forge-game/src/main/java/forge/game/spellability/SpellAbilityCondition.java +++ b/forge-game/src/main/java/forge/game/spellability/SpellAbilityCondition.java @@ -444,7 +444,9 @@ public class SpellAbilityCondition extends SpellAbilityVariables { final int svarValue = AbilityUtils.calculateAmount(host, this.getsVarToCheck(), sa); final int operandValue = AbilityUtils.calculateAmount(host, this.getsVarOperand(), sa); - return Expressions.compare(svarValue, this.getsVarOperator(), operandValue); + if (!Expressions.compare(svarValue, this.getsVarOperator(), operandValue)) { + return false; + } } diff --git a/forge-game/src/main/java/forge/game/spellability/SpellAbilityRestriction.java b/forge-game/src/main/java/forge/game/spellability/SpellAbilityRestriction.java index 01c1b2ea326..bc3e6649da4 100644 --- a/forge-game/src/main/java/forge/game/spellability/SpellAbilityRestriction.java +++ b/forge-game/src/main/java/forge/game/spellability/SpellAbilityRestriction.java @@ -270,7 +270,11 @@ public class SpellAbilityRestriction extends SpellAbilityVariables { } // TODO: this is an exception for Aftermath. Needs to be somehow generalized. - return this.getZone() == ZoneType.Graveyard || !sa.isAftermath() || !sa.isRightSplit(); + if (this.getZone() != ZoneType.Graveyard && sa.isAftermath() && sa.isRightSplit()) { + return false; + } + + return true; } } return false; @@ -311,7 +315,9 @@ public class SpellAbilityRestriction extends SpellAbilityVariables { } } - return isPhase; + if (!isPhase) { + return false; + } } return true; } @@ -350,7 +356,9 @@ public class SpellAbilityRestriction extends SpellAbilityVariables { if (sa.isSpell()) { final CardPlayOption o = c.mayPlay(sa.getMayPlay()); - return o != null && o.getPlayer() == activator; + if (o != null && o.getPlayer() == activator) { + return true; + } } return false; @@ -507,7 +515,9 @@ public class SpellAbilityRestriction extends SpellAbilityVariables { final int svarValue = AbilityUtils.calculateAmount(sa.getHostCard(), this.getsVarToCheck(), sa); final int operandValue = AbilityUtils.calculateAmount(sa.getHostCard(), this.getsVarOperand(), sa); - return Expressions.compare(svarValue, this.getsVarOperator(), operandValue); + if (!Expressions.compare(svarValue, this.getsVarOperator(), operandValue)) { + return false; + } } return true; } @@ -572,7 +582,9 @@ public class SpellAbilityRestriction extends SpellAbilityVariables { int gameActivationLimit = AbilityUtils.calculateAmount(c, limit, sa); this.setGameActivationLimit(gameActivationLimit); - return (this.getGameActivationLimit() == -1) || (sa.getActivationsThisGame() < this.getGameActivationLimit()); + if ((this.getGameActivationLimit() != -1) && (sa.getActivationsThisGame() >= this.getGameActivationLimit())) { + return false; + } } return true; diff --git a/forge-game/src/main/java/forge/game/staticability/StaticAbility.java b/forge-game/src/main/java/forge/game/staticability/StaticAbility.java index bb4a0f6e37b..d429b7e3d70 100644 --- a/forge-game/src/main/java/forge/game/staticability/StaticAbility.java +++ b/forge-game/src/main/java/forge/game/staticability/StaticAbility.java @@ -516,8 +516,12 @@ public class StaticAbility extends CardTraitBase implements Comparable thisTurnCast = CardUtil.getThisTurnCast(valid, card); - return CardLists.filterControlledBy(thisTurnCast, activator).size() >= limit; + if (CardLists.filterControlledBy(thisTurnCast, activator).size() < limit) { + return false; + } } return true; @@ -136,8 +138,12 @@ public class StaticAbilityCantBeCast { return false; } - return !params.containsKey("NonActivatorTurn") || (activator == null) - || !activator.getGame().getPhaseHandler().isPlayerTurn(activator); + if (params.containsKey("NonActivatorTurn") && (activator != null) + && activator.getGame().getPhaseHandler().isPlayerTurn(activator)) { + return false; + } + + return true; } /** @@ -168,8 +174,12 @@ public class StaticAbilityCantBeCast { } } - return !params.containsKey("Player") || (player == null) - || player.isValid(params.get("Player"), hostCard.getController(), hostCard, null); + if (params.containsKey("Player") && (player != null) + && !player.isValid(params.get("Player"), hostCard.getController(), hostCard, null)) { + return false; + } + + return true; } } diff --git a/forge-game/src/main/java/forge/game/staticability/StaticAbilityCantPutCounter.java b/forge-game/src/main/java/forge/game/staticability/StaticAbilityCantPutCounter.java index e43f48cb517..c66923a5168 100644 --- a/forge-game/src/main/java/forge/game/staticability/StaticAbilityCantPutCounter.java +++ b/forge-game/src/main/java/forge/game/staticability/StaticAbilityCantPutCounter.java @@ -19,9 +19,14 @@ public class StaticAbilityCantPutCounter { // for the other part if (staticAbility.hasParam("ValidCard")) { - return card.isValid(staticAbility.getParam("ValidCard").split(","), hostCard.getController(), hostCard, null); - } else return !staticAbility.hasParam("ValidPlayer"); - + if (!card.isValid(staticAbility.getParam("ValidCard").split(","), hostCard.getController(), hostCard, null)) { + return false; + } + } else if (staticAbility.hasParam("ValidPlayer")) { + // for the other part + return false; + } + return true; } public static boolean applyCantPutCounter(final StaticAbility staticAbility, final Player player, @@ -37,8 +42,13 @@ public class StaticAbilityCantPutCounter { // for the other part if (staticAbility.hasParam("ValidPlayer")) { - return player.isValid(staticAbility.getParam("ValidPlayer").split(","), hostCard.getController(), hostCard, null); - } else return !staticAbility.hasParam("ValidCard"); - + if (!player.isValid(staticAbility.getParam("ValidPlayer").split(","), hostCard.getController(), hostCard, null)) { + return false; + } + } else if (staticAbility.hasParam("ValidCard")) { + // for the other part + return false; + } + return true; } } diff --git a/forge-game/src/main/java/forge/game/trigger/Trigger.java b/forge-game/src/main/java/forge/game/trigger/Trigger.java index 1ff3deaf234..e901efcb665 100644 --- a/forge-game/src/main/java/forge/game/trigger/Trigger.java +++ b/forge-game/src/main/java/forge/game/trigger/Trigger.java @@ -284,7 +284,9 @@ public abstract class Trigger extends TriggerReplacementBase { if (this.mapParams.containsKey("TurnCount")) { int turn = Integer.parseInt(this.mapParams.get("TurnCount")); - return phaseHandler.getTurn() == turn; + if (phaseHandler.getTurn() != turn) { + return false; + } } return true; @@ -354,7 +356,10 @@ public abstract class Trigger extends TriggerReplacementBase { } } - return meetsCommonRequirements(this.mapParams); + if ( !meetsCommonRequirements(this.mapParams)) + return false; + + return true; } @@ -377,7 +382,8 @@ public abstract class Trigger extends TriggerReplacementBase { String condition = this.mapParams.get("Condition"); if ("AltCost".equals(condition)) { final Card moved = (Card) runParams.get("Card"); - return null == moved || moved.isOptionalCostPaid(OptionalCost.AltCost); + if( null != moved && !moved.isOptionalCostPaid(OptionalCost.AltCost)) + return false; } else if ("AttackedPlayerWithMostLife".equals(condition)) { GameEntity attacked = (GameEntity) runParams.get("Attacked"); if (attacked == null) { @@ -385,8 +391,10 @@ public abstract class Trigger extends TriggerReplacementBase { // ends up being in Defender at that point. attacked = (GameEntity) runParams.get("Defender"); } - return attacked != null && attacked.isValid("Player.withMostLife", - this.getHostCard().getController(), this.getHostCard(), null); + if (attacked == null || !attacked.isValid("Player.withMostLife", + this.getHostCard().getController(), this.getHostCard(), null)) { + return false; + } } else if ("AttackedPlayerWhoAttackedYouLastTurn".equals(condition)) { GameEntity attacked = (GameEntity) runParams.get("Attacked"); if (attacked == null) { @@ -403,7 +411,9 @@ public abstract class Trigger extends TriggerReplacementBase { } } - return attacked != null && valid; + if (attacked == null || !valid) { + return false; + } } return true; } diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerAbandoned.java b/forge-game/src/main/java/forge/game/trigger/TriggerAbandoned.java index 4aba396ab93..a07aff661d8 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerAbandoned.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerAbandoned.java @@ -49,8 +49,10 @@ public class TriggerAbandoned extends Trigger { @Override public final boolean performTest(final java.util.Map runParams2) { if (this.mapParams.containsKey("ValidCard")) { - return matchesValid(runParams2.get("Scheme"), this.mapParams.get("ValidCard").split(","), - this.getHostCard()); + if (!matchesValid(runParams2.get("Scheme"), this.mapParams.get("ValidCard").split(","), + this.getHostCard())) { + return false; + } } return true; diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerAdapt.java b/forge-game/src/main/java/forge/game/trigger/TriggerAdapt.java index efd19c6340c..5a603b715c8 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerAdapt.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerAdapt.java @@ -52,8 +52,10 @@ public class TriggerAdapt extends Trigger { public final boolean performTest(final Map runParams2) { final Card sac = (Card) runParams2.get("Card"); if (hasParam("ValidCard")) { - return sac.isValid(getParam("ValidCard").split(","), getHostCard().getController(), - getHostCard(), null); + if (!sac.isValid(getParam("ValidCard").split(","), getHostCard().getController(), + getHostCard(), null)) { + return false; + } } return true; } diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerAttached.java b/forge-game/src/main/java/forge/game/trigger/TriggerAttached.java index a4051152221..f185d57a441 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerAttached.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerAttached.java @@ -60,7 +60,9 @@ public class TriggerAttached extends Trigger { } if (this.mapParams.containsKey("ValidTarget")) { - return matchesValid(tgt, this.mapParams.get("ValidTarget").split(","), this.getHostCard()); + if (!matchesValid(tgt, this.mapParams.get("ValidTarget").split(","), this.getHostCard())) { + return false; + } } return true; diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerAttackerBlocked.java b/forge-game/src/main/java/forge/game/trigger/TriggerAttackerBlocked.java index d8a57921a46..89136658f35 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerAttackerBlocked.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerAttackerBlocked.java @@ -73,7 +73,9 @@ public class TriggerAttackerBlocked extends Trigger { getHostCard().getController(), getHostCard() ); - return count != 0; + if ( count == 0 ) { + return false; + } } return true; diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerAttackerBlockedByCreature.java b/forge-game/src/main/java/forge/game/trigger/TriggerAttackerBlockedByCreature.java index 8edc3ad202c..be66cc09438 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerAttackerBlockedByCreature.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerAttackerBlockedByCreature.java @@ -73,8 +73,12 @@ public class TriggerAttackerBlockedByCreature extends Trigger { if (this.mapParams.containsKey("ValidBlocker")) { final String validBlocker = this.mapParams.get("ValidBlocker"); if (validBlocker.equals("LessPowerThanAttacker")) { - return blocker.getNetPower() < attacker.getNetPower(); - } else return matchesValid(blocker, validBlocker.split(","), this.getHostCard()); + if (blocker.getNetPower() >= attacker.getNetPower()) { + return false; + } + } else if (!matchesValid(blocker, validBlocker.split(","), this.getHostCard())) { + return false; + } } return true; diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerAttackerUnblocked.java b/forge-game/src/main/java/forge/game/trigger/TriggerAttackerUnblocked.java index ec0bfa5c95b..c9ac21fc4bd 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerAttackerUnblocked.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerAttackerUnblocked.java @@ -58,8 +58,10 @@ public class TriggerAttackerUnblocked extends Trigger { } } if (this.mapParams.containsKey("ValidDefender")) { - return matchesValid(runParams2.get("Defender"), this.mapParams.get("ValidDefender").split(","), - this.getHostCard()); + if (!matchesValid(runParams2.get("Defender"), this.mapParams.get("ValidDefender").split(","), + this.getHostCard())) { + return false; + } } return true; } diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerAttackerUnblockedOnce.java b/forge-game/src/main/java/forge/game/trigger/TriggerAttackerUnblockedOnce.java index 06f7e06590f..66ed8f5c01b 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerAttackerUnblockedOnce.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerAttackerUnblockedOnce.java @@ -73,8 +73,10 @@ public class TriggerAttackerUnblockedOnce extends Trigger { */ } if (hasParam("ValidAttackingPlayer")) { - return matchesValid(runParams2.get("AttackingPlayer"), - this.mapParams.get("ValidAttackingPlayer").split(","), this.getHostCard()); + if (!matchesValid(runParams2.get("AttackingPlayer"), + this.mapParams.get("ValidAttackingPlayer").split(","), this.getHostCard())) { + return false; + } } return true; } diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerAttackersDeclared.java b/forge-game/src/main/java/forge/game/trigger/TriggerAttackersDeclared.java index 8f00fbf3d33..72f9649bba1 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerAttackersDeclared.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerAttackersDeclared.java @@ -76,7 +76,9 @@ public class TriggerAttackersDeclared extends Trigger { valid = true; } } - return valid; + if (!valid) { + return false; + } } return true; } diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerAttacks.java b/forge-game/src/main/java/forge/game/trigger/TriggerAttacks.java index 971d4299bd7..0f28b513ce6 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerAttacks.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerAttacks.java @@ -113,7 +113,9 @@ public class TriggerAttacks extends Trigger { } } } - return found; + if (!found) { + return false; + } } return true; diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerBecomeMonarch.java b/forge-game/src/main/java/forge/game/trigger/TriggerBecomeMonarch.java index 26a0deae9ef..17d9840f804 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerBecomeMonarch.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerBecomeMonarch.java @@ -24,8 +24,10 @@ public class TriggerBecomeMonarch extends Trigger { } if (this.mapParams.containsKey("BeginTurn")) { - return matchesValid(game.getMonarchBeginTurn(), this.mapParams.get("BeginTurn").split(","), - host); + if (!matchesValid(game.getMonarchBeginTurn(), this.mapParams.get("BeginTurn").split(","), + host)) { + return false; + } } return true; } diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerBecomeMonstrous.java b/forge-game/src/main/java/forge/game/trigger/TriggerBecomeMonstrous.java index 9b914392737..5a70ce99648 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerBecomeMonstrous.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerBecomeMonstrous.java @@ -52,8 +52,10 @@ public class TriggerBecomeMonstrous extends Trigger { @Override public final boolean performTest(Map runParams2) { if (hasParam("ValidCard")) { - return matchesValid(runParams2.get("Card"), getParam("ValidCard").split(","), - this.getHostCard()); + if (!matchesValid(runParams2.get("Card"), getParam("ValidCard").split(","), + this.getHostCard())) { + return false; + } } return true; diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerBecomeRenowned.java b/forge-game/src/main/java/forge/game/trigger/TriggerBecomeRenowned.java index f0da7bc86b9..ab84910d4cf 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerBecomeRenowned.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerBecomeRenowned.java @@ -50,8 +50,10 @@ public class TriggerBecomeRenowned extends Trigger { @Override public final boolean performTest(final java.util.Map runParams2) { if (this.mapParams.containsKey("ValidCard")) { - return matchesValid(runParams2.get("Card"), this.mapParams.get("ValidCard").split(","), - this.getHostCard()); + if (!matchesValid(runParams2.get("Card"), this.mapParams.get("ValidCard").split(","), + this.getHostCard())) { + return false; + } } return true; diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerBecomesTarget.java b/forge-game/src/main/java/forge/game/trigger/TriggerBecomesTarget.java index 3bdfa10004f..097262f0c51 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerBecomesTarget.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerBecomesTarget.java @@ -77,7 +77,9 @@ public class TriggerBecomesTarget extends Trigger { } } if (this.mapParams.containsKey("FirstTime")) { - return runParams2.containsKey("FirstTime"); + if (!runParams2.containsKey("FirstTime")) { + return false; + } } return true; diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerBecomesTargetOnce.java b/forge-game/src/main/java/forge/game/trigger/TriggerBecomesTargetOnce.java index 6707812b470..bd8a2868c51 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerBecomesTargetOnce.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerBecomesTargetOnce.java @@ -70,7 +70,9 @@ public class TriggerBecomesTargetOnce extends Trigger { break; } } - return valid; + if (!valid) { + return false; + } } return true; } diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerBlocks.java b/forge-game/src/main/java/forge/game/trigger/TriggerBlocks.java index 06f7e300693..441348ace95 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerBlocks.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerBlocks.java @@ -77,7 +77,9 @@ public class TriggerBlocks extends Trigger { } } - return foundMatch; + if (!foundMatch) { + return false; + } } return true; diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerChampioned.java b/forge-game/src/main/java/forge/game/trigger/TriggerChampioned.java index 1611f9c7595..2604e2d55c7 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerChampioned.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerChampioned.java @@ -60,8 +60,10 @@ public class TriggerChampioned extends Trigger { } } if (this.mapParams.containsKey("ValidSource")) { - return source.isValid(this.mapParams.get("ValidSource").split(","), - this.getHostCard().getController(), this.getHostCard(), null); + if (!source.isValid(this.mapParams.get("ValidSource").split(","), + this.getHostCard().getController(), this.getHostCard(), null)) { + return false; + } } return true; } diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerChangesController.java b/forge-game/src/main/java/forge/game/trigger/TriggerChangesController.java index b394980a87d..31a073b8508 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerChangesController.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerChangesController.java @@ -58,8 +58,10 @@ public class TriggerChangesController extends Trigger { } } if (this.mapParams.containsKey("ValidOriginalController")) { - return matchesValid(runParams2.get("OriginalController"), this.mapParams.get("ValidOriginalController").split(","), - this.getHostCard()); + if (!matchesValid(runParams2.get("OriginalController"), this.mapParams.get("ValidOriginalController").split(","), + this.getHostCard())) { + return false; + } } return true; diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerClashed.java b/forge-game/src/main/java/forge/game/trigger/TriggerClashed.java index a2eec1db4d7..8caaf85c7ef 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerClashed.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerClashed.java @@ -59,7 +59,9 @@ public class TriggerClashed extends Trigger { } if (this.mapParams.containsKey("Won")) { - return this.mapParams.get("Won").equals(runParams2.get("Won")); + if (!this.mapParams.get("Won").equals(runParams2.get("Won"))) { + return false; + } } return true; diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerCounterAdded.java b/forge-game/src/main/java/forge/game/trigger/TriggerCounterAdded.java index 9e8e0b4d288..26f64523bdc 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerCounterAdded.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerCounterAdded.java @@ -109,7 +109,9 @@ public class TriggerCounterAdded extends Trigger { final int operand = Integer.parseInt(fullParam.substring(2)); final int actualAmount = (Integer) runParams2.get("CounterAmount"); - return Expressions.compare(actualAmount, operator, operand); + if (!Expressions.compare(actualAmount, operator, operand)) { + return false; + } } return true; diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerCounterAddedOnce.java b/forge-game/src/main/java/forge/game/trigger/TriggerCounterAddedOnce.java index 65ea6cc7e18..549a3d81670 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerCounterAddedOnce.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerCounterAddedOnce.java @@ -93,8 +93,10 @@ public class TriggerCounterAddedOnce extends Trigger { return false; } - return source.isValid(getParam("ValidSource").split(","), getHostCard().getController(), - getHostCard(), null); + if (!source.isValid(getParam("ValidSource").split(","), getHostCard().getController(), + getHostCard(), null)) { + return false; + } } return true; diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerCounterRemoved.java b/forge-game/src/main/java/forge/game/trigger/TriggerCounterRemoved.java index eec54b27f2f..46e0bc5fa41 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerCounterRemoved.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerCounterRemoved.java @@ -71,7 +71,9 @@ public class TriggerCounterRemoved extends Trigger { if (hasParam("NewCounterAmount")) { final String amtString = getParam("NewCounterAmount"); int amt = Integer.parseInt(amtString); - return amt == addedNewCounterAmount.intValue(); + if(amt != addedNewCounterAmount.intValue()) { + return false; + } } return true; diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerCounterRemovedOnce.java b/forge-game/src/main/java/forge/game/trigger/TriggerCounterRemovedOnce.java index 888ab7027dc..4e02b6d8df4 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerCounterRemovedOnce.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerCounterRemovedOnce.java @@ -62,7 +62,9 @@ public class TriggerCounterRemovedOnce extends Trigger { if (hasParam("CounterType")) { final String type = getParam("CounterType"); - return type.equals(removedType.toString()); + if (!type.equals(removedType.toString())) { + return false; + } } return true; diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerCountered.java b/forge-game/src/main/java/forge/game/trigger/TriggerCountered.java index a31fab2f15e..0b11585be24 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerCountered.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerCountered.java @@ -80,7 +80,9 @@ public class TriggerCountered extends Trigger { if (ctrdSA != null) { if (validType.equals("Spell") && !ctrdSA.isSpell()) { return false; - } else return !validType.equals("Ability") || ctrdSA.isAbility(); + } else if (validType.equals("Ability") && !ctrdSA.isAbility()) { + return false; + } } } diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerDamageDealtOnce.java b/forge-game/src/main/java/forge/game/trigger/TriggerDamageDealtOnce.java index 88e9ea45135..7b4331ddb06 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerDamageDealtOnce.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerDamageDealtOnce.java @@ -94,7 +94,9 @@ public class TriggerDamageDealtOnce extends Trigger { final int operand = Integer.parseInt(fullParam.substring(2)); final int actualAmount = (Integer) runParams2.get("DamageAmount"); - return Expressions.compare(actualAmount, operator, operand); + if (!Expressions.compare(actualAmount, operator, operand)) { + return false; + } } return true; diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerDamageDoneOnce.java b/forge-game/src/main/java/forge/game/trigger/TriggerDamageDoneOnce.java index bed6d6bc1a3..d5a9634cc39 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerDamageDoneOnce.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerDamageDoneOnce.java @@ -45,7 +45,9 @@ public class TriggerDamageDoneOnce extends Trigger { } if (this.mapParams.containsKey("ValidTarget")) { - return matchesValid(tgt, this.mapParams.get("ValidTarget").split(","), this.getHostCard()); + if (!matchesValid(tgt, this.mapParams.get("ValidTarget").split(","), this.getHostCard())) { + return false; + } } diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerDestroyed.java b/forge-game/src/main/java/forge/game/trigger/TriggerDestroyed.java index 9686ea9fd29..cd533694d4f 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerDestroyed.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerDestroyed.java @@ -57,7 +57,9 @@ public class TriggerDestroyed extends Trigger { } } if (hasParam("ValidCard")) { - return matchesValid(runParams2.get("Card"), getParam("ValidCard").split(","), getHostCard()); + if (!matchesValid(runParams2.get("Card"), getParam("ValidCard").split(","), getHostCard())) { + return false; + } } return true; } diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerDiscarded.java b/forge-game/src/main/java/forge/game/trigger/TriggerDiscarded.java index f8a5f7d8d7a..0c60b064149 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerDiscarded.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerDiscarded.java @@ -74,7 +74,9 @@ public class TriggerDiscarded extends Trigger { } if (this.mapParams.containsKey("IsMadness")) { Boolean madness = (Boolean) runParams2.get("IsMadness"); - return !(this.mapParams.get("IsMadness").equals("True") ^ madness); + if (this.mapParams.get("IsMadness").equals("True") ^ madness) { + return false; + } } return true; } diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerDrawn.java b/forge-game/src/main/java/forge/game/trigger/TriggerDrawn.java index c9a761ac3ec..7e236166d20 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerDrawn.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerDrawn.java @@ -70,7 +70,11 @@ public class TriggerDrawn extends Trigger { } // trigger should not happen while Mulligan - return game.getAge() != GameStage.Mulligan; + if (game.getAge() == GameStage.Mulligan) { + return false; + } + + return true; } /** {@inheritDoc} */ diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerExiled.java b/forge-game/src/main/java/forge/game/trigger/TriggerExiled.java index e12e4320903..3592a8d0adf 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerExiled.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerExiled.java @@ -84,8 +84,10 @@ public class TriggerExiled extends Trigger { if (cause == null) { return false; } - return cause.getHostCard().isValid(getParam("ValidCause").split(","), getHostCard().getController(), - getHostCard(), null); + if (!cause.getHostCard().isValid(getParam("ValidCause").split(","), getHostCard().getController(), + getHostCard(), null)) { + return false; + } } return true; diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerExploited.java b/forge-game/src/main/java/forge/game/trigger/TriggerExploited.java index 2a4093ff1b2..dd566071c3c 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerExploited.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerExploited.java @@ -60,8 +60,10 @@ public class TriggerExploited extends Trigger { } } if (this.mapParams.containsKey("ValidSource")) { - return source.isValid(this.mapParams.get("ValidSource").split(","), - this.getHostCard().getController(), this.getHostCard(), null); + if (!source.isValid(this.mapParams.get("ValidSource").split(","), + this.getHostCard().getController(), this.getHostCard(), null)) { + return false; + } } return true; } diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerFlippedCoin.java b/forge-game/src/main/java/forge/game/trigger/TriggerFlippedCoin.java index 3137c5cd83f..3d4795f9be7 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerFlippedCoin.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerFlippedCoin.java @@ -58,7 +58,9 @@ public class TriggerFlippedCoin extends Trigger { if (this.mapParams.containsKey("ValidResult")) { final boolean result = (Boolean) runParams2.get("Result"); final boolean valid = "Win".equals(this.mapParams.get("ValidResult")); - return !(result ^ valid); + if (result ^ valid) { + return false; + } } return true; diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerHandler.java b/forge-game/src/main/java/forge/game/trigger/TriggerHandler.java index bd43d722a0d..85a7d8a1d6c 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerHandler.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerHandler.java @@ -536,7 +536,9 @@ public class TriggerHandler { final String dest = (String) runParams.get("Destination"); if (dest.equals("Battlefield") && runParams.get("Card") instanceof Card) { final Card card = (Card) runParams.get("Card"); - return !card.isCreature(); + if (card.isCreature()) { + return false; + } } } } // Torpor Orb check diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerInvestigated.java b/forge-game/src/main/java/forge/game/trigger/TriggerInvestigated.java index cb82452b8a5..89f3a10341d 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerInvestigated.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerInvestigated.java @@ -73,7 +73,9 @@ public class TriggerInvestigated extends Trigger { } if (this.mapParams.containsKey("OnlyFirst")) { - return (int) runParams2.get("Num") == 1; + if ((int) runParams2.get("Num") != 1) { + return false; + } } return true; } diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerLandPlayed.java b/forge-game/src/main/java/forge/game/trigger/TriggerLandPlayed.java index 2498fb1d58f..0622263bdce 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerLandPlayed.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerLandPlayed.java @@ -72,7 +72,9 @@ public class TriggerLandPlayed extends Trigger { } if (this.mapParams.containsKey("NotFirstLand")) { - return land.getController().getLandsPlayedThisTurn() >= 1; + if (land.getController().getLandsPlayedThisTurn() < 1) { + return false; + } } return true; } diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerLifeGained.java b/forge-game/src/main/java/forge/game/trigger/TriggerLifeGained.java index 8c44cee9063..599594075a5 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerLifeGained.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerLifeGained.java @@ -62,7 +62,9 @@ public class TriggerLifeGained extends Trigger { } if (hasParam("Spell")) { final SpellAbility spellAbility = (SpellAbility) runParams2.get("SourceSA"); - return spellAbility != null && spellAbility.getRootAbility().isSpell(); + if (spellAbility == null || !spellAbility.getRootAbility().isSpell()) { + return false; + } } return true; diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerLifeLost.java b/forge-game/src/main/java/forge/game/trigger/TriggerLifeLost.java index 60998db1fdb..d905e1c8b07 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerLifeLost.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerLifeLost.java @@ -59,7 +59,9 @@ public class TriggerLifeLost extends Trigger { } if (this.mapParams.containsKey("FirstTime")) { - return (boolean) runParams2.get("FirstTime"); + if (!(boolean)runParams2.get("FirstTime")) { + return false; + } } return true; diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerPayCumulativeUpkeep.java b/forge-game/src/main/java/forge/game/trigger/TriggerPayCumulativeUpkeep.java index 365aecf8b92..bf13399f36e 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerPayCumulativeUpkeep.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerPayCumulativeUpkeep.java @@ -57,8 +57,10 @@ public class TriggerPayCumulativeUpkeep extends Trigger { } final Card card = (Card) runParams2.get("Card"); if (this.mapParams.containsKey("ValidCard")) { - return card.isValid(this.mapParams.get("ValidCard").split(","), this.getHostCard().getController(), - this.getHostCard(), null); + if (!card.isValid(this.mapParams.get("ValidCard").split(","), this.getHostCard().getController(), + this.getHostCard(), null)) { + return false; + } } return true; } diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerPayEcho.java b/forge-game/src/main/java/forge/game/trigger/TriggerPayEcho.java index c6a9c567f8e..f9e7ecabf45 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerPayEcho.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerPayEcho.java @@ -57,8 +57,10 @@ public class TriggerPayEcho extends Trigger { } final Card card = (Card) runParams2.get("Card"); if (this.mapParams.containsKey("ValidCard")) { - return card.isValid(this.mapParams.get("ValidCard").split(","), this.getHostCard().getController(), - this.getHostCard(), null); + if (!card.isValid(this.mapParams.get("ValidCard").split(","), this.getHostCard().getController(), + this.getHostCard(), null)) { + return false; + } } return true; } diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerPhaseOut.java b/forge-game/src/main/java/forge/game/trigger/TriggerPhaseOut.java index 530544ea3c4..d0abe3e4747 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerPhaseOut.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerPhaseOut.java @@ -20,9 +20,13 @@ public class TriggerPhaseOut extends Trigger { if (this.mapParams.get("ValidCard").equals("Card.Self")) { // Since Phased out cards aren't visible in .isValid, use a special check here. // NOTE: All Phase Out Triggers should use ValidCard$ Card.Self - return phaser == this.getHostCard(); - } else return phaser.isValid(this.mapParams.get("ValidCard").split(","), this.getHostCard().getController(), - this.getHostCard(), null); + if (phaser != this.getHostCard()) { + return false; + } + } else if (!phaser.isValid(this.mapParams.get("ValidCard").split(","), this.getHostCard().getController(), + this.getHostCard(), null)) { + return false; + } } return true; diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerPlanarDice.java b/forge-game/src/main/java/forge/game/trigger/TriggerPlanarDice.java index 87ed5e4666e..55bbcbd4b5c 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerPlanarDice.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerPlanarDice.java @@ -42,7 +42,9 @@ public class TriggerPlanarDice extends Trigger { if (this.mapParams.containsKey("Result")) { PlanarDice cond = PlanarDice.smartValueOf(this.mapParams.get("Result")); - return cond == runParams2.get("Result"); + if (cond != runParams2.get("Result")) { + return false; + } } return true; diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerRegenerated.java b/forge-game/src/main/java/forge/game/trigger/TriggerRegenerated.java index 42483ab6abc..cd9f836c466 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerRegenerated.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerRegenerated.java @@ -57,7 +57,9 @@ public class TriggerRegenerated extends Trigger { } } if (hasParam("ValidCard")) { - return matchesValid(runParams2.get("Card"), getParam("ValidCard").split(","), getHostCard()); + if (!matchesValid(runParams2.get("Card"), getParam("ValidCard").split(","), getHostCard())) { + return false; + } } return true; } diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerRevealed.java b/forge-game/src/main/java/forge/game/trigger/TriggerRevealed.java index e75ff3c88c0..c7614ca9d95 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerRevealed.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerRevealed.java @@ -22,7 +22,9 @@ public class TriggerRevealed extends Trigger { } if (this.mapParams.containsKey("Miracle")) { Boolean madness = (Boolean) runParams2.get("Miracle"); - return !(this.mapParams.get("Miracle").equals("True") ^ madness); + if (!matchesValid(runParams2.get("Card"), getParam("ValidCard").split(","), getHostCard())) { + return false; + } } return true; } diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerSacrificed.java b/forge-game/src/main/java/forge/game/trigger/TriggerSacrificed.java index 4ece31285c7..64e545483fb 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerSacrificed.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerSacrificed.java @@ -114,7 +114,8 @@ public class TriggerSacrificed extends Trigger { } } - return withKeyword; + if (!withKeyword) + return false; } return true; diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerSearchedLibrary.java b/forge-game/src/main/java/forge/game/trigger/TriggerSearchedLibrary.java index 52dc26d35bb..538b82670ff 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerSearchedLibrary.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerSearchedLibrary.java @@ -61,7 +61,9 @@ public class TriggerSearchedLibrary extends Trigger { if (this.mapParams.containsKey("SearchOwnLibrary")) { @SuppressWarnings("unchecked") List targets = (List) runParams2.get("Target"); - return targets.contains(runParams2.get("Player")); + if (!targets.contains(runParams2.get("Player"))) { + return false; + } } return true; diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerSetInMotion.java b/forge-game/src/main/java/forge/game/trigger/TriggerSetInMotion.java index 6b3bd7fa926..0cebd807951 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerSetInMotion.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerSetInMotion.java @@ -59,9 +59,13 @@ public class TriggerSetInMotion extends Trigger { if (this.mapParams.containsKey("SchemeType")) { if (this.mapParams.get("SchemeType").equals("NonOngoing")) { - return !((Card) runParams2.get("Scheme")).getType().hasSupertype(CardType.Supertype.Ongoing); + if (((Card) runParams2.get("Scheme")).getType().hasSupertype(CardType.Supertype.Ongoing)) { + return false; + } } else if (this.mapParams.get("SchemeType").equals("Ongoing")) { - return ((Card) runParams2.get("Scheme")).getType().hasSupertype(CardType.Supertype.Ongoing); + if (((Card) runParams2.get("Scheme")).getType().hasSupertype(CardType.Supertype.Ongoing)) { + return false; + } } } diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerShuffled.java b/forge-game/src/main/java/forge/game/trigger/TriggerShuffled.java index a351e9b31b6..e8abae4f522 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerShuffled.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerShuffled.java @@ -62,7 +62,9 @@ public class TriggerShuffled extends Trigger { } if (this.mapParams.containsKey("ShuffleBySelfControlled")) { SpellAbility source = (SpellAbility) runParams2.get("Source"); - return source.getActivatingPlayer().equals(runParams2.get("Player")); + if (!source.getActivatingPlayer().equals(runParams2.get("Player"))) { + return false; + } } return true; } diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerSpellAbilityCast.java b/forge-game/src/main/java/forge/game/trigger/TriggerSpellAbilityCast.java index 14312a228a3..43fde3f60c0 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerSpellAbilityCast.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerSpellAbilityCast.java @@ -252,7 +252,9 @@ public class TriggerSpellAbilityCast extends Trigger { break; } } - return sameNameFound; + if (!sameNameFound) { + return false; + } } return true; } diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerSpellAbilityCopy.java b/forge-game/src/main/java/forge/game/trigger/TriggerSpellAbilityCopy.java index cd0ee3d47f4..26bb022c137 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerSpellAbilityCopy.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerSpellAbilityCopy.java @@ -78,8 +78,10 @@ public class TriggerSpellAbilityCopy extends Trigger { } } if (hasParam("ValidActivatingPlayer")) { - return si != null && matchesValid(si.getSpellAbility(true).getActivatingPlayer(), getParam("ValidActivatingPlayer") - .split(","), getHostCard()); + if (si == null || !matchesValid(si.getSpellAbility(true).getActivatingPlayer(), getParam("ValidActivatingPlayer") + .split(","), getHostCard())) { + return false; + } } return true; } diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerSurveil.java b/forge-game/src/main/java/forge/game/trigger/TriggerSurveil.java index a0d16afa570..2d3ee1dbb19 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerSurveil.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerSurveil.java @@ -69,7 +69,9 @@ public class TriggerSurveil extends Trigger { } if (hasParam("OnlyFirst")) { - return (int) runParams2.get("NumThisTurn") == 1; + if ((int) runParams2.get("NumThisTurn") != 1) { + return false; + } } return true; } diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerTaps.java b/forge-game/src/main/java/forge/game/trigger/TriggerTaps.java index 70ec3905557..44185a79ef7 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerTaps.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerTaps.java @@ -60,9 +60,13 @@ public class TriggerTaps extends Trigger { } if (hasParam("Attacker")) { if ("True".equalsIgnoreCase(getParam("Attacker"))) { - return (Boolean) runParams2.get("Attacker"); + if (!(Boolean)runParams2.get("Attacker")) { + return false; + } } else if ("False".equalsIgnoreCase(getParam("Attacker"))) { - return !((Boolean) runParams2.get("Attacker")); + if ((Boolean)runParams2.get("Attacker")) { + return false; + } } } diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerTapsForMana.java b/forge-game/src/main/java/forge/game/trigger/TriggerTapsForMana.java index 293f2abbdaa..348492cb775 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerTapsForMana.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerTapsForMana.java @@ -91,7 +91,9 @@ public class TriggerTapsForMana extends Trigger { } String produced = (String) prod; if ("ChosenColor".equals(mapParams.get("Produced"))) { - return this.getHostCard().hasChosenColor() && produced.contains(MagicColor.toShortString(this.getHostCard().getChosenColor())); + if (!this.getHostCard().hasChosenColor() || !produced.contains(MagicColor.toShortString(this.getHostCard().getChosenColor()))) { + return false; + } } } diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerUnattach.java b/forge-game/src/main/java/forge/game/trigger/TriggerUnattach.java index 51b07e3c862..8b96b06fd3f 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerUnattach.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerUnattach.java @@ -60,8 +60,10 @@ public class TriggerUnattach extends Trigger { } if (hasParam("ValidAttachment")) { - return attach.isValid(getParam("ValidAttachment").split(","), getHostCard() - .getController(), getHostCard(), null); + if (!attach.isValid(getParam("ValidAttachment").split(","), getHostCard() + .getController(), getHostCard(), null)) { + return false; + } } return true; diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerUntaps.java b/forge-game/src/main/java/forge/game/trigger/TriggerUntaps.java index 3029fa3177f..7c583f1467d 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerUntaps.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerUntaps.java @@ -54,8 +54,10 @@ public class TriggerUntaps extends Trigger { final Card untapper = (Card) runParams2.get("Card"); if (this.mapParams.containsKey("ValidCard")) { - return untapper.isValid(this.mapParams.get("ValidCard").split(","), this.getHostCard().getController(), - this.getHostCard(), null); + if (!untapper.isValid(this.mapParams.get("ValidCard").split(","), this.getHostCard().getController(), + this.getHostCard(), null)) { + return false; + } } return true; diff --git a/forge-gui/src/main/java/forge/achievement/VariantWins.java b/forge-gui/src/main/java/forge/achievement/VariantWins.java index a1124b95e17..77a7e38f71d 100644 --- a/forge-gui/src/main/java/forge/achievement/VariantWins.java +++ b/forge-gui/src/main/java/forge/achievement/VariantWins.java @@ -23,7 +23,9 @@ public class VariantWins extends ProgressiveAchievement { if (game.getRules().hasAppliedVariant(variant)) { return true; } - return variant == GameType.Archenemy && game.getRules().hasAppliedVariant(GameType.ArchenemyRumble); //lump Archenemy Rumble into same achievement as Archenemy + if (variant == GameType.Archenemy && game.getRules().hasAppliedVariant(GameType.ArchenemyRumble)) { + return true; //lump Archenemy Rumble into same achievement as Archenemy + } } return false; } diff --git a/forge-gui/src/main/java/forge/card/CardScriptParser.java b/forge-gui/src/main/java/forge/card/CardScriptParser.java index c171329f248..55947f13095 100644 --- a/forge-gui/src/main/java/forge/card/CardScriptParser.java +++ b/forge-gui/src/main/java/forge/card/CardScriptParser.java @@ -119,7 +119,10 @@ public final class CardScriptParser { if (!(part.startsWith("P") || part.startsWith("2") || isManaSymbol(part.charAt(0)))) { return false; } - return (isManaSymbol(part.charAt(1))) && part.charAt(0) != part.charAt(1); + if ((!isManaSymbol(part.charAt(1))) || part.charAt(0) == part.charAt(1)) { + return false; + } + return true; } return false; } diff --git a/forge-gui/src/main/java/forge/model/CardBlock.java b/forge-gui/src/main/java/forge/model/CardBlock.java index ba8d16b08d9..a3893102354 100644 --- a/forge-gui/src/main/java/forge/model/CardBlock.java +++ b/forge-gui/src/main/java/forge/model/CardBlock.java @@ -181,7 +181,10 @@ public final class CardBlock implements Comparable { if (!this.landSet.equals(other.landSet)) { return false; } - return this.name.equals(other.name); + if (!this.name.equals(other.name)) { + return false; + } + return true; } /* diff --git a/forge-gui/src/main/java/forge/player/HumanPlay.java b/forge-gui/src/main/java/forge/player/HumanPlay.java index 93b4b31678a..fec7ac0844a 100644 --- a/forge-gui/src/main/java/forge/player/HumanPlay.java +++ b/forge-gui/src/main/java/forge/player/HumanPlay.java @@ -562,7 +562,9 @@ public class HumanPlay { } else { // Tainted Specter, Gurzigost, etc. boolean hasPaid = payCostPart(controller, sourceAbility, (CostPartWithList)part, amount, list, "put into library." + orString); - return hasPaid; + if (!hasPaid) { + return false; + } } return true; } diff --git a/forge-gui/src/main/java/forge/quest/data/StarRating.java b/forge-gui/src/main/java/forge/quest/data/StarRating.java index 1c91b4ed4d7..37f5f30213b 100644 --- a/forge-gui/src/main/java/forge/quest/data/StarRating.java +++ b/forge-gui/src/main/java/forge/quest/data/StarRating.java @@ -44,6 +44,10 @@ public class StarRating { return false; } - return rating == other.rating; + if (rating != other.rating) { + return false; + } + + return true; } }