diff --git a/.gitattributes b/.gitattributes index 6a1d1c4598d..bea3b94eb27 100644 --- a/.gitattributes +++ b/.gitattributes @@ -14169,6 +14169,7 @@ src/main/java/forge/card/ability/ai/RestartGameAi.java -text src/main/java/forge/card/ability/ai/RevealAi.java -text src/main/java/forge/card/ability/ai/RevealAiBase.java -text src/main/java/forge/card/ability/ai/RevealHandAi.java -text +src/main/java/forge/card/ability/ai/RollPlanarDiceAi.java -text src/main/java/forge/card/ability/ai/SacrificeAi.java -text src/main/java/forge/card/ability/ai/SacrificeAllAi.java -text src/main/java/forge/card/ability/ai/ScryAi.java -text diff --git a/src/main/java/forge/card/ability/ApiType.java b/src/main/java/forge/card/ability/ApiType.java index dbce168c9fd..5aa5cc66852 100644 --- a/src/main/java/forge/card/ability/ApiType.java +++ b/src/main/java/forge/card/ability/ApiType.java @@ -85,6 +85,7 @@ import forge.card.ability.ai.RepeatEachAi; import forge.card.ability.ai.RestartGameAi; import forge.card.ability.ai.RevealAi; import forge.card.ability.ai.RevealHandAi; +import forge.card.ability.ai.RollPlanarDiceAi; import forge.card.ability.ai.SacrificeAi; import forge.card.ability.ai.SacrificeAllAi; import forge.card.ability.ai.ScryAi; @@ -198,7 +199,7 @@ public enum ApiType { RestartGame (RestartGameEffect.class, RestartGameAi.class), Reveal (RevealEffect.class, RevealAi.class), RevealHand (RevealHandEffect.class, RevealHandAi.class), - RollPlanarDice (RollPlanarDiceEffect.class, CannotPlayAi.class), + RollPlanarDice (RollPlanarDiceEffect.class, RollPlanarDiceAi.class), Sacrifice (SacrificeEffect.class, SacrificeAi.class), SacrificeAll (SacrificeAllEffect.class, SacrificeAllAi.class), Scry (ScryEffect.class, ScryAi.class), diff --git a/src/main/java/forge/card/ability/ai/RollPlanarDiceAi.java b/src/main/java/forge/card/ability/ai/RollPlanarDiceAi.java new file mode 100644 index 00000000000..6d19615fd77 --- /dev/null +++ b/src/main/java/forge/card/ability/ai/RollPlanarDiceAi.java @@ -0,0 +1,42 @@ +package forge.card.ability.ai; + + +import forge.Card; +import forge.card.ability.SpellAbilityAi; +import forge.card.spellability.SpellAbility; +import forge.game.player.Player; +import forge.util.MyRandom; + +public class RollPlanarDiceAi extends SpellAbilityAi { + /* (non-Javadoc) + * @see forge.card.abilityfactory.SpellAiLogic#canPlayAI(forge.game.player.Player, java.util.Map, forge.card.spellability.SpellAbility) + */ + @Override + protected boolean canPlayAI(Player aiPlayer, SpellAbility sa) { + Card plane = sa.getSourceCard(); + boolean decideToRoll = false; + + if (plane.hasSVar("AIRollHint")) { + switch (plane.getSVar("AIRollHint")) { + case "Always": + decideToRoll = true; + break; + case "Random": + int chance = 50; + if (plane.hasSVar("AIRollHintParam")) { + chance = Integer.parseInt(plane.getSVar("AIRollHintParam")); + } + if (MyRandom.getRandom().nextInt(chance) >= chance) { + decideToRoll = true; + } + break; + case "Never": + default: + break; + } + } + + return decideToRoll ? true : false; + } +} +