Lire les états pendant un combat Lua
Ces fonctions nécessitent l’API de combat avancé de Jitsuri et s’utilisent dans les callbacks du moteur Lua, par exemple onTurn. En équipe, elles lisent le combat du personnage dont le callback est exécuté.
Lecture par combattant
fightAction:getEntityStateIds(actorId) renvoie deux valeurs : une liste Lua d’identifiants d’états observés et un booléen indiquant si le suivi est complet.
fightAction:hasEntityState(actorId, stateId) renvoie :
truesi l’état est présent dans le suivi ;falsesi le suivi est complet et que l’état est absent ;nilsi l’absence ne peut pas être confirmée, ou si le combattant est introuvable.
local etat = fightAction:hasEntityState(cibleId, 56)
if etat == true then
global:printMessage("Invulnérabilité générale observée : préparer le prochain tour.")
elseif etat == false then
global:printMessage("État 56 absent. Vérifier aussi les autres conditions avant de tirer.")
else
global:printMessage("États non synchronisés : ne pas supposer la cible vulnérable.")
end
L’identifiant de combattant se récupère dans fightAction:getAllEntities(), champ Id. Il s’agit de l’identifiant de l’acteur dans ce combat, pas du GID du monstre.
Champs des entités
Les entités renvoyées par fightAction:getAllEntities() contiennent aussi :
StateIds: liste des états observés ;StatesKnown: suivi complet ou incomplet ;IsInvulnerable: lecture de l’état 56, avec les mêmes valeurstrue,falseounil.
L’état 56 désigne l’invulnérabilité générale. Son absence ne garantit pas que tous les dégâts passent : les immunités de mêlée, de distance et les autres mécaniques restent distinctes.
Le suivi utilise les ajouts, retraits et instantanés d’effets reçus du serveur. Il est réinitialisé entre les combats. Une reconnexion nécessite la réception de l’instantané de reprise ; un événement de modification dont le contenu n’est pas reconnu rend le suivi incomplet. Les états déjà observés sont conservés jusqu’à leur retrait ou au prochain instantané : consulter StatesKnown pour connaître cette limite.
Les durées ne sont pas décrémentées arbitrairement au tour de l’observateur : l’expiration peut dépendre du tour d’un autre combattant.
Positions, PA et vagues
Les entités exposent également IsPositionKnown, IsInvisible et ActionPoints (PA connus, ou nil si indisponibles). Ne calculez pas un tir ou une chaîne à partir de CellId lorsque IsPositionKnown vaut false : cette cellule peut être une ancienne position.
fightAction:getCurrentWave() renvoie le dernier identifiant de vague reçu dans FightNewWaveEvent, ou 0 si aucun n’a été reçu. Ce n’est ni le numéro du tour ni une lecture de l’invulnérabilité. Une stratégie particulière peut prévoir sa préparation du premier tour indépendamment de ce compteur.