mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-18 11:48:02 +00:00
- 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:
1
.gitattributes
vendored
1
.gitattributes
vendored
@@ -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/RevealAi.java -text
|
||||||
src/main/java/forge/card/ability/ai/RevealAiBase.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/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/SacrificeAi.java -text
|
||||||
src/main/java/forge/card/ability/ai/SacrificeAllAi.java -text
|
src/main/java/forge/card/ability/ai/SacrificeAllAi.java -text
|
||||||
src/main/java/forge/card/ability/ai/ScryAi.java -text
|
src/main/java/forge/card/ability/ai/ScryAi.java -text
|
||||||
|
|||||||
@@ -85,6 +85,7 @@ import forge.card.ability.ai.RepeatEachAi;
|
|||||||
import forge.card.ability.ai.RestartGameAi;
|
import forge.card.ability.ai.RestartGameAi;
|
||||||
import forge.card.ability.ai.RevealAi;
|
import forge.card.ability.ai.RevealAi;
|
||||||
import forge.card.ability.ai.RevealHandAi;
|
import forge.card.ability.ai.RevealHandAi;
|
||||||
|
import forge.card.ability.ai.RollPlanarDiceAi;
|
||||||
import forge.card.ability.ai.SacrificeAi;
|
import forge.card.ability.ai.SacrificeAi;
|
||||||
import forge.card.ability.ai.SacrificeAllAi;
|
import forge.card.ability.ai.SacrificeAllAi;
|
||||||
import forge.card.ability.ai.ScryAi;
|
import forge.card.ability.ai.ScryAi;
|
||||||
@@ -198,7 +199,7 @@ public enum ApiType {
|
|||||||
RestartGame (RestartGameEffect.class, RestartGameAi.class),
|
RestartGame (RestartGameEffect.class, RestartGameAi.class),
|
||||||
Reveal (RevealEffect.class, RevealAi.class),
|
Reveal (RevealEffect.class, RevealAi.class),
|
||||||
RevealHand (RevealHandEffect.class, RevealHandAi.class),
|
RevealHand (RevealHandEffect.class, RevealHandAi.class),
|
||||||
RollPlanarDice (RollPlanarDiceEffect.class, CannotPlayAi.class),
|
RollPlanarDice (RollPlanarDiceEffect.class, RollPlanarDiceAi.class),
|
||||||
Sacrifice (SacrificeEffect.class, SacrificeAi.class),
|
Sacrifice (SacrificeEffect.class, SacrificeAi.class),
|
||||||
SacrificeAll (SacrificeAllEffect.class, SacrificeAllAi.class),
|
SacrificeAll (SacrificeAllEffect.class, SacrificeAllAi.class),
|
||||||
Scry (ScryEffect.class, ScryAi.class),
|
Scry (ScryEffect.class, ScryAi.class),
|
||||||
|
|||||||
42
src/main/java/forge/card/ability/ai/RollPlanarDiceAi.java
Normal file
42
src/main/java/forge/card/ability/ai/RollPlanarDiceAi.java
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Reference in New Issue
Block a user