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:

Nom
Type
Description

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
end

Note: Le sort est lance uniquement si le combat est actif. Les PA sont automatiquement mis a jour apres le lancer.


canCastSpellOnCell

🎮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:

Nom
Type
Description

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:

Note : Très utile pour optimiser l’IA en vérifiant la faisabilité avant de tenter le lancement. Évite les échecs inutiles.


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:

Nom
Type
Description

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:

Note: IMPORTANT: Toujours appeler passTurn() a la fin de la logique de combat pour ne pas bloquer le combat.


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:

Nom
Type
Description

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:

Nom
Type
Description

cellStart

number

Cellule de depart

cellEnd

number

Cellule d'arrivee

Retourne: number - Distance en cases (Manhattan), ou -1 si erreur

Exemple:

Note: Distance Manhattan = somme des distances horizontale et verticale. Une case adjacente = distance 1.


isHandToHand

🎮Méthode

Verifie si deux cellules sont au corps a corps (adjacentes, distance <= 1).

Paramètres:

Nom
Type
Description

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:

Nom
Type
Description

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:

Nom
Type
Description

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:

Nom
Type
Description

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:

Note: Les obstacles (murs, elements de decor) bloquent la ligne de vue. Les autres combattants peuvent aussi bloquer selon le sort.


isWalkable

🎮Méthode

Verifie si une cellule est marchable (pas un obstacle).

Paramètres:

Nom
Type
Description

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:

Nom
Type
Description

cellId

number

ID de la cellule

Retourne: boolean - true si la cellule est libre

Exemple:

Note: Combine la verification de marchabilite et d'occupation.


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:

Nom
Type
Description

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:

Nom
Type
Description

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:

Nom
Type
Description

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:

Nom
Type
Description

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:

Nom
Type
Description

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:

Nom
Type
Description

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:

Nom
Type
Description

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:

Nom
Type
Description

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:

Nom
Type
Description

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:

Nom
Type
Description

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