Aller au contenu

cast

Lance un sort ; le bot choisit la cible, marche si besoin et attend la confirmation du jeu.

Les fonctions fight: s'utilisent dans fightManagement(mapId), que le bot appelle à chaque tour de ton personnage, et dans fightPlacement(mapId, cells), avant « Prêt ». Ailleurs, elles déclenchent une erreur. Voir Le script de combat.

spell est la constante du sort (CRA.FLECHE_MAGIQUE) ou son numéro. Le lancer suit les règles des sorts du panel : PA, délai de relance, limites du jeu, portée et ligne de vue. Si besoin, ton personnage marche jusqu'à une case de tir sans finir collé à un monstre, sauf avec le placement « mêlée » du panel. Après un échec critique, le bot retente le sort une fois.

  • Sans cible, ou DEFAULT : le choix par défaut. Ton personnage pour un boost, l'allié au plus bas pourcentage de PV pour un soin, la meilleure zone pour un sort de zone. Sinon, un vrai monstre avant une invocation, puis le plus proche ; le bot cherche d'abord une cible touchable sans marcher.
  • WEAKEST : l'ennemi qui a le moins de PV parmi ceux que le sort touche sans marcher ; à défaut, parmi ceux qu'il touche en marchant.
  • MELEE : l'ennemi collé à ton personnage qui a le moins de PV, sans marcher.
  • Un combattant : un ennemi (fight:enemy…), ou un allié (fight:leader()) pour un soin ou un boost.
  • Un numéro de case : le sort part sur cette case, sans marcher.
  • Une zone de fight:zoneWith.
  • nil : rien ne part.

Un type de monstre n'est pas une cible : écris fight:cast(sort, fight:enemy(MOB.X)). Un nombre est toujours lu comme un numéro de case.

Toujours actifs : la consigne de fight:keepOneAlive, et aucun allié interdit dans une zone que le sort vise. Une zone centrée sur ton personnage (portée 0, comme Tremblement) ne se vise pas : elle touche tous les alliés présents, vérifie-le avec fight:countAlliesWithinRange.

options règle le lancer : {minHit = 2}, {retry = false}, {move = false}, {hitAllies = {ALLY.MULE}}, {zone = false}. Les options peuvent aussi remplacer la cible : fight:cast(sort, {minHit = 2}) vise la cible par défaut. Détails : Cibles et Options.

Combat uniquement. À appeler dans fightManagement ou fightPlacement ; ailleurs, l'appel provoque une erreur.

Signature

fight:cast(spell, target=DEFAULT, options=nil)

Retour

true si le sort est parti. Sinon false et la raison : NOT_ENOUGH_AP, OUT_OF_RANGE, NO_TARGET… CRITICAL_FAILURE veut dire que le sort est parti en échec critique, nouvel essai compris. Liste complète : Raisons d'un refus.

Exemple

local rat = fight:enemy(MOB.RAT_NOIR)
if rat and fight:getDistance(rat) <= 10 then
    fight:cast(CRA.FLECHE_CINGLANTE, rat)
end
local ok, raison = fight:cast(CRA.FLECHE_EXPLOSIVE, DEFAULT, {minHit = 2})
if not ok then
    global:journal("Explosive non lancée", raison)
end