Raisons d'un refus¶
Pourquoi fight:cast n'a rien lancé : NOT_ENOUGH_AP, OUT_OF_RANGE…
Quand fight:cast renvoie false, sa deuxième valeur dit pourquoi.
- NOT_MY_TURN : ce n'est pas le tour de ton personnage.
- NOT_ENOUGH_AP : pas assez de PA.
- COOLDOWN : le sort attend encore son délai de relance.
- CAST_LIMIT : la limite de lancers par tour du jeu est atteinte.
- BLOCKED_BY_CHALLENGE : un challenge tenu interdit ce sort.
- NO_TARGET : pas de cible : cible nil ou absente, aucun ennemi, saut sans case, ou aucune case libre pour une invocation.
- OUT_OF_RANGE : aucune cible ne peut être touchée, même en marchant : portée, ligne de vue, limite de lancers sur cette cible, allié protégé dans la zone autour d'une cible donnée, ou ennemi collé qui empêche ton personnage de partir. Vers un numéro de case, ton personnage ne marche pas.
- ZONE_TOO_SMALL : aucune zone ne touche assez d'ennemis (minHit).
- ALLY_IN_ZONE : chaque zone que le bot peut viser touche un allié protégé.
- KEEP_ALIVE : le lancer toucherait le monstre à garder (fight:keepOneAlive, réglage « Garder un monstre au tour 1 » ou capture d'âme prévue).
- MOVE_FAILED : ton personnage n'a pas pu atteindre la case de tir.
- CRITICAL_FAILURE : le sort est parti en échec critique, nouvel essai compris.
- NOT_CONFIRMED : le jeu n'a pas confirmé le lancer.
- UNKNOWN_SPELL : ton personnage ne connaît pas ce sort, ou sa constante est mal écrite.
Les refus qui expliquent une décision (pas de cible, zone trop petite, allié protégé, monstre gardé, case de tir inaccessible, challenge, sort inconnu) sont aussi notés au Journal, une fois par sort et par tour.
Combat. Ces valeurs servent avec les fonctions fight:, dans le script de combat.
Écriture¶
local ok, raison = fight:cast(spell)
Valeur¶
Un texte de même nom : NOT_ENOUGH_AP vaut "NOT_ENOUGH_AP".
Exemple¶
local ok, raison = fight:cast(CRA.FLECHE_EXPLOSIVE)
if not ok and raison == ZONE_TOO_SMALL then
fight:cast(CRA.FLECHE_MAGIQUE)
end