Retourne les Points d'Action (PA) actuels du personnage en combat. Les PA sont mis a jour en temps reel par le serveur et sont utilises pour lancer des sorts.
Retourne:number - Nombre de PA disponibles ce tour
Exemple:
-- Verifier si on peut lancer un sort coutant 4 PAlocalap=fightCharacter:getAP()ifap>=4thenfightAction:castSpellOnCell(12345, enemyCellId)end-- Gestion intelligente des PAlocalpa=fightCharacter:getAP()whilepa>=3dofightAction:castSpellOnCell(sortId, cible)pa=fightCharacter:getAP() -- Rafraichir apres chaque sortend-- Afficher les PA restantsglobal:printMessage("PA restants: " ..fightCharacter:getAP())
Les PA sont recharges au debut de chaque tour. Valeur mise a jour apres chaque action (sort, mouvement avec cout PA, etc.).
getMP
🎮Méthode
Retourne les Points de Mouvement (PM) actuels du personnage en combat. Les PM sont utilises pour se deplacer sur les cellules du combat.
Retourne:number - Nombre de PM disponibles ce tour
Exemple:
Les PM sont recharges au debut de chaque tour. Valeur mise a jour apres chaque deplacement.
getPO
🎮Méthode
Retourne la Portee (PO) actuelle du personnage en combat. La portee determine la distance maximale a laquelle le personnage peut lancer certains sorts.
Signature:
Retourne:number - Portee actuelle du personnage
Exemple:
La portee peut etre modifiee par des buffs, des etats ou de l'equipement.
forceAP
🎮Méthode
Force/modifie la valeur des Points d'Action stockee localement. ATTENTION: Cette modification est locale uniquement - elle ne change pas les PA reels sur le serveur. Utile pour des tests ou des ajustements d'IA.
Paramètres:
Nom
Type
Description
ap
number
Nouveau nombre de PA a definir localement
Exemple:
ATTENTION: Modification locale uniquement! N'affecte pas le serveur. A utiliser avec precaution, principalement pour le debug ou des scenarios de test.
forceMP
🎮Méthode
Force/modifie la valeur des Points de Mouvement stockee localement. ATTENTION: Modification locale uniquement, n'affecte pas le serveur.
Paramètres:
Nom
Type
Description
mp
number
Nouveau nombre de PM a definir localement
Exemple:
ATTENTION: Modification locale uniquement! N'affecte pas le serveur.
forcePO
🎮Méthode
Force/modifie la valeur de la Portee stockee localement. ATTENTION: Modification locale uniquement, n'affecte pas le serveur.
Paramètres:
Nom
Type
Description
po
number
Nouvelle portee a definir localement
Exemple:
ATTENTION: Modification locale uniquement! N'affecte pas le serveur.
getLifePoints
🎮Méthode
Retourne les Points de Vie (PV) actuels du personnage en combat.
Retourne:number - PV actuels du personnage
Exemple:
Les PV sont mis a jour apres chaque action affectant la vie (degats recus, soins, etc.).
getLifePointsMax
🎮Méthode
Retourne les Points de Vie maximum du personnage en combat.
Retourne:number - PV maximum du personnage
Exemple:
getLifePointsP
🎮Méthode
Retourne le pourcentage de vie actuel du personnage. Calcule automatiquement: (LifePoints * 100) / MaxLifePoints via une division entiere.
Retourne:number - Pourcentage de vie (0-100, entier)
Exemple:
Retourne un entier (division entiere). Pour plus de precision, calculez manuellement avec getLifePoints() / getLifePointsMax() * 100.
getCellId
🎮Méthode
Retourne l'ID de la cellule actuelle du personnage sur la grille de combat.
Retourne:number - ID de la cellule (0-559)
Exemple:
Les cellules de combat vont de 0 a 559 (grille 14x40). La position est mise a jour apres chaque deplacement.
getId
🎮Méthode
Retourne l'ID contextuel du personnage en combat. Cet ID est unique pour chaque combattant dans le combat actuel.
Retourne:number - ID contextuel du combattant
Exemple:
L'ID contextuel change a chaque combat. Ne pas confondre avec l'ID permanent du personnage (character:getId()).
getLevel
🎮Méthode
Retourne le niveau du personnage en combat.
Retourne:number - Niveau du personnage
Exemple:
getBreed
🎮Méthode
Retourne l'ID de la classe du personnage. Les classes sont identifiees par un ID numerique (1=Feca, 2=Osamodas, 3=Enutrof, etc.).
Retourne:number - ID de la classe (1-19)
Exemple:
Utile pour creer des scripts d'IA adaptes a chaque classe.
getRange
🎮Méthode
Retourne la portee de base du personnage. Cette valeur prend en compte les bonus de portee de l'equipement et des buffs.
Retourne:number - Portee de base calculee
Exemple:
Peut differer de getPO() selon les buffs/debuffs temporaires appliques en combat.
isItMyTurn
🎮Méthode
Verifie si c'est actuellement le tour du personnage. Cette valeur est mise a jour automatiquement au debut de chaque tour.
Retourne:boolean - true si c'est le tour du personnage, false sinon
Exemple:
IMPORTANT: Toujours verifier isItMyTurn() avant d'effectuer des actions de combat pour eviter des erreurs.
isMule
🎮Méthode
Verifie si le personnage est une mule (membre d'equipe non-chef). Les mules suivent generalement des comportements simplifies en combat.
Retourne:boolean - true si le personnage est une mule d'equipe, false sinon
Exemple:
Une mule est un personnage en equipe qui n'est pas le chef. Le chef (ChefTeam=true) dirige le combat.
-- Verifier si on peut se deplacer
local mp = fightCharacter:getMP()
if mp > 0 then
fightAction:moveToCell(cellCible)
end
-- Strategie de mouvement
local pm = fightCharacter:getMP()
local distance = fightAction:getDistanceToCell(enemyCellId)
if pm >= distance then
fightAction:moveToCell(enemyCellId)
else
global:printMessage("Pas assez de PM pour atteindre l'ennemi")
end
fightCharacter:getPO()
-- Verifier la portee pour un sort
local po = fightCharacter:getPO()
local distance = fightAction:getDistanceToCell(enemyCellId)
if distance <= po then
global:printMessage("Ennemi a portee!")
end
-- Afficher les stats de combat
global:printMessage("PA: " .. fightCharacter:getAP() ..
" | PM: " .. fightCharacter:getMP() ..
" | PO: " .. fightCharacter:getPO())
fightCharacter:forceAP(ap)
-- Forcer les PA pour un test
fightCharacter:forceAP(12)
global:printMessage("PA forces a: " .. fightCharacter:getAP())
-- Reset des PA (utile apres un bug de synchro)
fightCharacter:forceAP(0)
fightCharacter:forceMP(mp)
-- Forcer les PM pour un test
fightCharacter:forceMP(6)
-- Simuler un personnage immobilise
fightCharacter:forceMP(0)
fightCharacter:forcePO(po)
-- Forcer la portee pour un test
fightCharacter:forcePO(8)
-- Simuler un buff de portee
local poActuelle = fightCharacter:getPO()
fightCharacter:forcePO(poActuelle + 2)
fightCharacter:getLifePoints()
-- Verifier si on a besoin de se soigner
local hp = fightCharacter:getLifePoints()
local hpMax = fightCharacter:getLifePointsMax()
if hp < hpMax * 0.3 then
global:printWarning("Vie critique! " .. hp .. "/" .. hpMax)
-- Lancer un sort de soin
end
-- Afficher la vie
global:printMessage("Vie: " .. fightCharacter:getLifePoints())
fightCharacter:getLifePointsMax()
-- Calculer le pourcentage de vie manuellement
local hp = fightCharacter:getLifePoints()
local hpMax = fightCharacter:getLifePointsMax()
local pourcentage = (hp / hpMax) * 100
global:printMessage("Vie: " .. hp .. "/" .. hpMax .. " (" .. pourcentage .. "%)")
-- Verifier si a pleine vie
if fightCharacter:getLifePoints() == fightCharacter:getLifePointsMax() then
global:printMessage("Pleine vie!")
end
fightCharacter:getLifePointsP()
-- Logique de survie basee sur le pourcentage
local hpPercent = fightCharacter:getLifePointsP()
if hpPercent < 20 then
global:printError("DANGER! Vie a " .. hpPercent .. "%")
-- Fuir ou utiliser une potion
elseif hpPercent < 50 then
global:printWarning("Vie moyenne: " .. hpPercent .. "%")
-- Se soigner si possible
else
global:printSuccess("Vie OK: " .. hpPercent .. "%")
end
-- Priorite au soin selon le pourcentage
if fightCharacter:getLifePointsP() <= 30 then
-- Priorite absolue: se soigner
fightAction:castSpellOnCell(sortSoin, fightCharacter:getCellId())
end
fightCharacter:getCellId()
-- Connaitre sa position
local maCell = fightCharacter:getCellId()
global:printMessage("Je suis sur la cellule: " .. maCell)
-- Calculer la distance a un ennemi
local maCellule = fightCharacter:getCellId()
local celluleEnnemi = enemy.cellId
local distance = fightAction:getDistanceBetweenCells(maCellule, celluleEnnemi)
global:printMessage("Distance a l'ennemi: " .. distance)
-- Cibler ma propre cellule pour un sort de zone
fightAction:castSpellOnCell(sortZone, fightCharacter:getCellId())
fightCharacter:getId()
-- Recuperer mon ID de combat
local monId = fightCharacter:getId()
global:printMessage("Mon ID de combat: " .. monId)
-- Utiliser l'ID pour des verifications
local fighters = fightAction:getAllFighters()
for _, fighter in ipairs(fighters) do
if fighter.id == fightCharacter:getId() then
global:printMessage("C'est moi!")
end
end
fightCharacter:getLevel()
-- Afficher le niveau
local niveau = fightCharacter:getLevel()
global:printMessage("Niveau: " .. niveau)
-- Adapter la strategie au niveau
if fightCharacter:getLevel() < 50 then
-- Strategie debutant: jouer safe
elseif fightCharacter:getLevel() < 150 then
-- Strategie intermediaire
else
-- Strategie avancee
end
fightCharacter:getBreed()
-- Adapter l'IA selon la classe
local classe = fightCharacter:getBreed()
if classe == 1 then
global:printMessage("Je suis un Feca - Mode Tank")
elseif classe == 11 then
global:printMessage("Je suis un Sacrieur - Mode Berserker")
elseif classe == 12 then
global:printMessage("Je suis un Pandawa - Mode Support")
end
-- Classes: 1=Feca, 2=Osa, 3=Enu, 4=Sram, 5=Xelor, 6=Eca, 7=Eni,
-- 8=Iop, 9=Cra, 10=Sadida, 11=Sacri, 12=Panda, 13=Roub,
-- 14=Zobal, 15=Steamer, 16=Elio, 17=Huppermage, 18=Ouginak, 19=Forgelance
fightCharacter:getRange()
-- Comparer portee de base et actuelle
local rangeBase = fightCharacter:getRange()
local rangeActuel = fightCharacter:getPO()
global:printMessage("Portee base: " .. rangeBase .. ", actuelle: " .. rangeActuel)
fightCharacter:isItMyTurn()
-- Verifier avant d'agir
if fightCharacter:isItMyTurn() then
global:printMessage("C'est mon tour!")
-- Executer l'IA de combat
fightAction:castSpellOnCell(sortId, cibleCellId)
else
global:printMessage("En attente de mon tour...")
end
-- Boucle d'IA principale
function fightManagement()
if not fightCharacter:isItMyTurn() then
return -- Pas mon tour, on sort
end
-- Logique de combat ici
while fightCharacter:getAP() >= 3 do
-- Actions de combat
end
fightAction:endTurn()
end
fightCharacter:isMule()
-- Adapter le comportement selon le role
if fightCharacter:isMule() then
global:printMessage("Je suis une mule - Mode support")
-- Comportement de mule: buff, heal, protection du chef
else
global:printMessage("Je suis le chef - Mode attaque")
-- Comportement du chef: focus DPS
end
-- Logique de mule simplifiee
function fightManagement()
if fightCharacter:isMule() then
-- La mule suit le chef et le protege
local chefCellId = getChefPosition()
if chefCellId then
fightAction:moveCloseTo(chefCellId)
end
else
-- Logique d'attaque complete
attackNearestEnemy()
end
end