fightAction
Actions, sorts et déplacements en comba
castSpellOnCell
🎮Méthode
fightAction:castSpellOnCell(spell, cell)Lance un sort sur une cellule cible. Envoie une demande de lancer au serveur et attend la confirmation. Si le lancer est reussi, les PA sont automatiquement mis a jour.
Paramètres:
spell
number
ID du sort a lancer
cell
number
ID de la cellule cible (0-559)
Retourne: boolean - true si le sort a ete lance avec succes
Exemple:
-- Lancer un sort sur un ennemi
local enemyCellId = fightAction:getNearestEnemy()
local success = fightAction:castSpellOnCell(12345, enemyCellId)
if success then
global:printSuccess("Sort lance!")
else
global:printError("Echec du lancer")
end
-- Boucle d'attaque tant qu'on a des PA
while fightCharacter:getAP() >= 3 do
local enemy = fightAction:getNearestEnemy()
if enemy ~= -1 then
fightAction:castSpellOnCell(sortId, enemy)
else
break
end
endcanCastSpellOnCell
🎮Méthode
Vérifie si un sort peut être lancé sur une cellule cible depuis une position donnée. Effectue de nombreuses vérifications : PA suffisants, portée du sort, ligne de vue (LdV), temps de relance, nombre de lancers par tour/par cible, états interdisant le lancement, etc. Retourne un code d’erreur.
Paramètres:
startCell
number
Cellule de depart (position du lanceur)
spell
number
ID du sort
cell
number
Cellule cible
needToCheckInvoc
boolean
Verifier si les invocations bloquent (defaut: true)
needToCheckLOS
boolean
Verifier la ligne de vue (defaut: true)
Retourne: number - Code SpellInabilityReason: 0 = possible, autres = raison de l'impossibilite
Exemple:
moveTowardCell
🎮Méthode
Deplace le personnage vers une cellule cible. Calcule automatiquement le chemin optimal via le pathfinding. Si la cellule cible est occupee, trouve une cellule adjacente libre. Attend la confirmation du mouvement.
Paramètres:
cellid
number
ID de la cellule cible (0-559)
Retourne: boolean - true si le déplacement a été effectué.
Exemple:
Note: Le pathfinding evite automatiquement les obstacles et les autres combattants. Si la cible est occupee, le bot se place sur une case adjacente.
passTurn
🎮Méthode
Termine le tour du personnage. Envoie le signal de fin de tour au serveur. Le prochain combattant dans l'ordre de timeline prendra son tour.
Exemple:
chooseCell
🎮Méthode
Choisit une cellule de placement en phase de pre-combat. Envoie la demande au serveur et attend la confirmation avec un timeout de 50 secondes. Affiche le message "Placement sur la cellule: X" dans le chat.
Paramètres:
cell
number
ID de la cellule de placement souhaitee
Exemple:
Note: Uniquement utilisable pendant la phase de placement, avant le debut du combat.
getNearestEnemy
🎮Méthode
Retourne l'ID de cellule de l'ennemi le plus proche. Parcourt tous les combattants, filtre les ennemis et calcule la distance Manhattan. Retourne -1 si aucun ennemi trouve ou si le combat n'est pas actif.
Retourne: number - ID de la cellule de l'ennemi le plus proche, ou -1 si aucun
Exemple:
Note: Retourne la CELLULE de l'ennemi, pas son ID de combattant. Utiliser getFighter(cellId) pour obtenir le combattant.
getNearestAlly
🎮Méthode
Retourne l’ID de la cellule de l’allié le plus proche (hors soi-même). Parcourt les combattants de la même équipe et renvoie la cellule de l’allié le plus proche.
Retourne: number - ID de la cellule de l'allie le plus proche
Exemple:
Note: Utile pour les classes support qui doivent rester pres de leurs allies.
getAllEntities
🎮Méthode
Retourne la liste de tous les combattants presents dans le combat. Chaque combattant contient: Id, CellId, LifePoints, MaxLifePoints, Team, AP, MP, Level, etc.
Retourne: table - Liste de PlugCombat (tous les combattants)
Exemple:
Note: PlugCombat.Team = true pour les defenders (ennemis dans getNearestEnemy), false pour les challengers (notre equipe). ATTENTION: La logique peut varier selon le contexte de combat.
getEntitiesCount
🎮Méthode
Retourne le nombre total de combattants dans le combat.
Retourne: number - Nombre de combattants
Exemple:
getDistance
🎮Méthode
Calcule la distance Manhattan entre deux cellules (|x1-x2| + |y1-y2|). Retourne -1 si le combat n'est pas actif.
Paramètres:
cellStart
number
Cellule de depart
cellEnd
number
Cellule d'arrivee
Retourne: number - Distance en cases (Manhattan), ou -1 si erreur
Exemple:
isHandToHand
🎮Méthode
Verifie si deux cellules sont au corps a corps (adjacentes, distance <= 1).
Paramètres:
firstCell
number
Premiere cellule
secondCell
number
Deuxieme cellule
Retourne: boolean - true si les cellules sont adjacentes (CaC)
Exemple:
cellsAligned
🎮Méthode
Verifie si deux cellules sont alignees (meme ligne ou meme colonne).
Paramètres:
cell1
number
Premiere cellule
cell2
number
Deuxieme cellule
Retourne: boolean - true si les cellules sont alignees
Exemple:
Note: Important pour les sorts qui necessitent un lancer en ligne (pas de diagonale).
cellsInDiagonal
🎮Méthode
Verifie si deux cellules sont en diagonale (meme difference en X et Y).
Signature: fightAction:cellsInDiagonal(int_0, int_1)
Paramètres:
int_0
number
Premiere cellule
int_1
number
Deuxieme cellule
Retourne: boolean - true si les cellules sont en diagonale
Exemple:
Note: Utile pour les sorts qui ne peuvent etre lances qu'en diagonale.
inLineOfSight
🎮Méthode
Verifie si une ligne de vue (LOS) existe entre deux cellules. Trace une ligne entre les deux points et verifie qu'aucun obstacle ne bloque la vue. Si diagonal=true, verifie aussi que les cellules sont en diagonale.
Paramètres:
firstCell
number
Cellule de depart
secondCell
number
Cellule cible
diagonal
boolean
Exiger une diagonale stricte (defaut: false)
Retourne: boolean - true si la cible est visible
Exemple:
isWalkable
🎮Méthode
Verifie si une cellule est marchable (pas un obstacle).
Paramètres:
cellId
number
ID de la cellule a verifier
Retourne: boolean - true si la cellule est marchable
Exemple:
Note: Une cellule peut etre marchable mais occupee par un combattant. Utilisez isFreeCell() pour verifier les deux.
isFreeCell
🎮Méthode
Verifie si une cellule est libre (marchable ET non occupee par un combattant).
Signature: fightAction:isFreeCell(cellId)
Paramètres:
cellId
number
ID de la cellule
Retourne: boolean - true si la cellule est libre
Exemple:
getReachableCells
🎮Méthode
Retourne la liste des cellules atteignables avec les PM actuels. Parcourt toutes les cellules (0-559), filtre les cellules libres, et verifie que la distance Manhattan est <= PM.
Retourne: table - Liste des IDs de cellules atteignables
Exemple:
getRealReachableCells
🎮Méthode
Retourne les cellules reellement atteignables en tenant compte du pathfinding complet. Plus precis que getReachableCells() car prend en compte les obstacles et les chemins bloques.
Retourne: table - Liste des cellules reellement atteignables
Exemple:
Note: Plus lent que getReachableCells() mais plus precis.
accessibleCells
🎮Méthode
Retourne les cellules accessibles pour une entite specifique. Si id=-1, utilise le personnage actuel.
Signature: fightAction:accessibleCells(id)
Paramètres:
id
number
ID du combattant (defaut: -1 = soi-meme)
Retourne: table - Liste d'AccessibleCell avec les infos de chaque cellule
Exemple:
getAdjacentCells
🎮Méthode
Retourne les cellules adjacentes a une cellule donnee. Retourne les 4 cellules cardinales (haut, bas, gauche, droite) si elles existent sur la grille.
Paramètres:
cellId
number
Cellule centrale
Retourne: table - Liste des IDs de cellules adjacentes
Exemple:
getCells_cross
🎮Méthode
Retourne les cellules en forme de croix (+) autour d'une cellule centrale. Les cellules sont sur les axes cardinaux (haut, bas, gauche, droite) entre minRadius et radius.
Paramètres:
centerCell
number
Cellule centrale
minRadius
number
Rayon minimum (distance minimale)
radius
number
Rayon maximum (distance maximale)
Retourne: table - Liste des cellules en croix
Exemple:
getCells_diagonal
🎮Méthode
Retourne les cellules en diagonale (X) autour d'une cellule centrale. Les cellules sont sur les axes diagonaux entre minRadius et radius.
Paramètres:
centerCell
number
Cellule centrale
minRadius
number
Rayon minimum
radius
number
Rayon maximum
Retourne: table - Liste des cellules en diagonale
Exemple:
getCells_lozenge
🎮Méthode
Retourne les cellules en losange autour d'une cellule centrale. Le losange est la zone classique de Dofus (toutes les cellules a distance Manhattan entre minRadius et radius).
Paramètres:
centerCell
number
Cellule centrale
minRadius
number
Rayon minimum
radius
number
Rayon maximum
Retourne: table - Liste des cellules en losange
Exemple:
Note: Le losange est la forme de zone la plus courante dans Dofus.
getCells_square
🎮Méthode
Retourne les cellules en carre autour d'une cellule centrale. Le carre inclut toutes les cellules dont la distance Chebyshev (max de |dx| et |dy|) est entre minRadius et radius.
Paramètres:
centerCell
number
Cellule centrale
minRadius
number
Rayon minimum
radius
number
Rayon maximum
Retourne: table - Liste des cellules en carre
Exemple:
getSpellZone
🎮Méthode
Retourne la zone d'effet d'un sort lance sur une cellule. Calcule les cellules affectees selon le type de zone et le rayon definis dans les effets du sort.
Paramètres:
spellId
number
ID du sort
cellId
number
Cellule cible du sort
Retourne: table - Liste des cellules affectees par le sort
Exemple:
Note: Utile pour optimiser les sorts de zone en ciblant la cellule qui touche le plus d'ennemis.
getFighter
🎮Méthode
Retourne l'ID du combattant sur une cellule donnee. Retourne -1 si la cellule est vide.
Paramètres:
cellId
number
ID de la cellule
Retourne: number - ID du combattant, ou -1 si cellule vide
Exemple:
GetShortestPath
🎮Méthode
Calcule le chemin le plus court entre deux cellules en evitant les obstacles. Utilise le Pathfinder interne pour trouver le chemin optimal.
Paramètres:
int_0
number
Cellule de depart
int_1
number
Cellule d'arrivee
list_0
table
Liste de cellules a eviter (obstacles additionnels)
Retourne: table - Liste des cellules du chemin, ou nil si impossible
Exemple:
getCurrentTurn
🎮Méthode
Retourne le numero du tour actuel du combat. Incremente a chaque nouveau tour.
Retourne: number - Numero du tour (commence a 1)
Exemple:
getCurrentMapId
🎮Méthode
Retourne l'ID de la map de combat.
Retourne: number - ID de la carte de combat
Exemple:
forceCellidEntity
🎮Méthode
Force la position d'une entite localement. ATTENTION: Modification locale uniquement, n'affecte pas le serveur.
Paramètres:
entity
number
ID du combattant
newCellid
number
Nouvelle cellule
Exemple:
Note: ATTENTION: Ne modifie pas la position reelle sur le serveur. Utile pour des simulations ou du debug.
Mis à jour

