- Added the foundation of the AI for rolling planar dice. By default it does nothing and behaves as the old functionality (never roll the planar die). SVars can be specified signaling if and how often the AI should roll the planar die. Currently limited as I have no idea how to make the AI, for instance, to only use the ability to roll the die once per turn. Feel free to expand this AI as necessary.

This commit is contained in:
Agetian
2013-07-04 07:30:32 +00:00
parent 816c5bb040
commit 2a46a6a9d0
3 changed files with 45 additions and 1 deletions

1
.gitattributes vendored
View File

@@ -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

View File

@@ -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),

View File

@@ -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;
}
}