From da9543e426477328e2dd4ea05ff51f2f1162c4dc Mon Sep 17 00:00:00 2001 From: Agetian Date: Thu, 19 Apr 2018 23:06:05 +0300 Subject: [PATCH] - MoJhoSto: somewhat more varied AI strategy when deciding between Momir and Jhoira. Also, don't spam Jhoira instant copying ability all the time. --- forge-ai/src/main/java/forge/ai/SpecialCardAi.java | 9 +++++++++ forge-ai/src/main/java/forge/ai/ability/PlayAi.java | 10 ++++++++++ .../res/cardsfolder/j/jhoira_of_the_ghitu_avatar.txt | 2 +- 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/forge-ai/src/main/java/forge/ai/SpecialCardAi.java b/forge-ai/src/main/java/forge/ai/SpecialCardAi.java index 0ea94e90725..33cf8e83c4d 100644 --- a/forge-ai/src/main/java/forge/ai/SpecialCardAi.java +++ b/forge-ai/src/main/java/forge/ai/SpecialCardAi.java @@ -25,6 +25,7 @@ import forge.card.ColorSet; import forge.card.MagicColor; import forge.card.mana.ManaCost; import forge.game.Game; +import forge.game.GameType; import forge.game.ability.AbilityFactory; import forge.game.ability.AbilityUtils; import forge.game.ability.ApiType; @@ -43,6 +44,7 @@ import forge.game.staticability.StaticAbility; import forge.game.trigger.Trigger; import forge.game.zone.ZoneType; import forge.util.Aggregates; +import forge.util.MyRandom; import forge.util.TextUtil; import forge.util.maps.LinkedHashMapToAmount; import forge.util.maps.MapToAmount; @@ -778,6 +780,13 @@ public class SpecialCardAi { if (source.getGame().getPhaseHandler().getPhase().isBefore(PhaseType.MAIN1)) { return false; } + + // In MoJhoSto, prefer Jhoira sorcery ability from time to time + if (source.getGame().getRules().hasAppliedVariant(GameType.MoJhoSto) + && ai.getLandsInPlay().size() >= 3 && MyRandom.percentTrue(50)) { + return false; + } + // Set PayX here to maximum value. int tokenSize = ComputerUtilMana.determineLeftoverMana(sa, ai); diff --git a/forge-ai/src/main/java/forge/ai/ability/PlayAi.java b/forge-ai/src/main/java/forge/ai/ability/PlayAi.java index 5d9876bd759..5004d56508e 100644 --- a/forge-ai/src/main/java/forge/ai/ability/PlayAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/PlayAi.java @@ -5,6 +5,7 @@ import forge.ai.*; import forge.card.CardStateName; import forge.card.CardTypeView; import forge.game.Game; +import forge.game.GameType; import forge.game.ability.AbilityUtils; import forge.game.card.Card; import forge.game.card.CardCollection; @@ -16,6 +17,7 @@ import forge.game.spellability.Spell; import forge.game.spellability.SpellAbility; import forge.game.spellability.TargetRestrictions; import forge.game.zone.ZoneType; +import forge.util.MyRandom; import java.util.List; @@ -54,6 +56,14 @@ public class PlayAi extends SpellAbilityAi { if ("ReplaySpell".equals(logic)) { return ComputerUtil.targetPlayableSpellCard(ai, cards, sa, sa.hasParam("WithoutManaCost")); + } else if ("JhoiraAvatarInstant".equals(logic)) { + if (game.getRules().hasAppliedVariant(GameType.MoJhoSto)) { + // Some additional logic for MoJhoSto: don't spam activate the Instant copying ability all the time + // Can probably be improved, but as random as MoJhoSto already is, probably not a huge deal for now + if (MyRandom.percentTrue(80)) { + return false; + } + } } if (source != null && source.hasKeyword("Hideaway") && source.hasRemembered()) { diff --git a/forge-gui/res/cardsfolder/j/jhoira_of_the_ghitu_avatar.txt b/forge-gui/res/cardsfolder/j/jhoira_of_the_ghitu_avatar.txt index 119e586d395..5d34abec83b 100644 --- a/forge-gui/res/cardsfolder/j/jhoira_of_the_ghitu_avatar.txt +++ b/forge-gui/res/cardsfolder/j/jhoira_of_the_ghitu_avatar.txt @@ -2,7 +2,7 @@ Name:Jhoira of the Ghitu Avatar ManaCost:no cost Types:Vanguard HandLifeModifier:+1/+0 -A:AB$ Play | Cost$ 3 Discard<1/Card> | ActivationZone$ Command | AnySupportedCard$ Instant | RandomCopied$ True | RandomNum$ 3 | ChoiceNum$ 1 | CopyCard$ True | WithoutManaCost$ True | SpellDescription$ Copy three instant cards chosen at random. You may cast one of the copies without paying its mana cost. +A:AB$ Play | Cost$ 3 Discard<1/Card> | ActivationZone$ Command | AnySupportedCard$ Instant | RandomCopied$ True | RandomNum$ 3 | ChoiceNum$ 1 | CopyCard$ True | WithoutManaCost$ True | AILogic$ JhoiraAvatarInstant | SpellDescription$ Copy three instant cards chosen at random. You may cast one of the copies without paying its mana cost. A:AB$ Play | Cost$ 3 Discard<1/Card> | ActivationZone$ Command | AnySupportedCard$ Sorcery | RandomCopied$ True | RandomNum$ 3 | ChoiceNum$ 1 | CopyCard$ True | WithoutManaCost$ True | SorcerySpeed$ True | SpellDescription$ Copy three sorcery cards chosen at random. You may cast one of the copies without paying its mana cost. Activate this ability only any time you could cast a sorcery. SVar:Picture:https://downloads.cardforge.org/images/cards/VAN/Jhoira of the Ghitu Avatar.full.jpg Oracle:Hand +1, life +0\n{3}, Discard a card: Copy three instant cards chosen at random. You may cast one of the copies without paying its mana cost.\n{3}, Discard a card: Copy three sorcery cards chosen at random. You may cast one of the copies without paying its mana cost. Activate this ability only any time you could cast a sorcery.