title: fight — Combat | MoonBot API description: API combat MoonBot Lua : lancer un sort, déplacement en combat, ciblage, IA de combat (72 fonctions).
fight — Combat¶
API combat MoonBot Lua : lancer un sort, déplacement en combat, ciblage, IA de combat (72 fonctions).
72 fonctions dans ce namespace.
Index¶
fight.isInFightfight.isMyTurnfight.getTurnNumberfight.getCurrentFighterIdfight.getTurnOrderfight.myIdfight.myCellfight.myAPfight.myMPfight.myHPfight.myLifePercentfight.myRangefight.myLevelfight.myBreedfight.myTeamIdfight.getEnemiesfight.getAlliesfight.getAllFightersfight.getFighterfight.getFighterOnCellfight.getNearestEnemyfight.getWeakestEnemyfight.enemyCountfight.allyCountFiltrer les invocationsInvisibiliteLimitations protocolefight.castSpellfight.movefight.passTurnfight.readyfight.abandonfight.placeOnCellfight.getPlacementCellsfight.getEnemyPlacementCellsfight.getSpellsfight.getSpellfight.spellCooldownfight.canCastSpellfight.canCastSpellOnCellfight.getTargetableCellsfight.getSpellZoneCellsfight.getEnemiesInZonefight.getBestZoneTargetfight.cellDistancefight.distanceTofight.getReachableCellsfight.getPathfight.pathLengthfight.isLineOfSightfight.adjacentCellsfight.isCellWalkablefight.isCellFreefight.getSummonsfight.hasSummonsfight.getSummonByIdfight.summonfight.summonCountfight.summonMaxfight.hasChallengesfight.getChallengeIdsfight.getChallengeCountfight.isChallengeActivefight.challengeNamefight.getActiveChallengesfight.addSpellfight.clearSpellsfight.playTurnfight.waitForTurnfight.waitForFightEndfight.delayfight.log
Référence¶
fight.isInFight¶
returns boolean
True si en combat.
fight.isMyTurn¶
returns boolean
True si c'est notre tour.
fight.getTurnNumber¶
returns number
Numero du tour (1, 2, 3...).
fight.getCurrentFighterId¶
returns number
ID de l'entite dont c'est le tour.
fight.getTurnOrder¶
returns table of number
IDs des combattants dans l'ordre de jeu.
fight.myId¶
returns number
ID de notre personnage en combat.
fight.myCell¶
returns number
Cellule de notre personnage (depuis les donnees fighter, plus precis).
fight.myAP¶
returns number
PA actuels.
fight.myMP¶
returns number
PM actuels.
fight.myHP¶
returns number, number
Retourne 2 valeurs : (pv_actuels, pv_max). Exemple : local hp, hpMax = fight.myHP()
fight.myLifePercent¶
returns number
Pourcentage de PV (0-100).
fight.myRange¶
returns number
Portee du personnage.
fight.myLevel¶
returns number
Niveau du personnage.
fight.myBreed¶
returns number
Classe (1=Feca, 2=Osa, 3=Enu, 4=Sram, 5=Xelor, 6=Eca, 7=Eni, 8=Iop, 9=Cra, 10=Sadi, 11=Sacri, 12=Panda).
fight.myTeamId¶
returns number
Equipe (0 ou 1).
fight.getEnemies¶
returns table of fighter
Ennemis vivants. Chaque fighter : {id, cellId, hp, hpMax, hpPercent, ap, mp, isEnemy, alive, name, teamId, level, summonerId, isSummon, invisible, templateId, distance}.
fight.getAllies¶
returns table of fighter
Allies vivants (y compris nous).
fight.getAllFighters¶
returns table of fighter
Tous les combattants (vivants et morts).
fight.getFighter¶
returns fighter | nil
Combattant par ID.
fight.getFighterOnCell¶
returns fighter | nil
Combattant vivant sur une cellule.
fight.getNearestEnemy¶
returns fighter | nil
Ennemi vivant le plus proche en cases.
fight.getWeakestEnemy¶
returns fighter | nil
Ennemi vivant avec le moins de PV.
fight.enemyCount¶
returns number
Nombre d'ennemis vivants.
fight.allyCount¶
returns number
Nombre d'allies vivants (y compris nous).
Filtrer les invocations¶
for _, e in ipairs(fight.getAllFighters()) do
if e.isSummon and e.summonerId == fight.myId() then
-- c'est notre invoc
end
end
isSummon=true si invocation, summonerId=ID de l'invocateur. Permet de distinguer les invocations de chaque joueur/monstre.
Invisibilite¶
returns boolean
true si l'entite est invisible. Les entites invisibles ne bloquent pas la ligne de vue.
Limitations protocole¶
Le protocole ne transmet PAS : resistances/stats elementaires des monstres, etats actifs (empoisonne, porte...), etats requis pour lancer un sort. Si un sort necessite un etat, le serveur refusera silencieusement. Seuls HP, PA, PM, position, niveau, invisibilite et invocations sont fiables.
fight.castSpell¶
returns boolean
Lance un sort sur une cellule.
fight.move¶
returns boolean
Deplacement en combat vers une cellule.
fight.passTurn¶
returns boolean
Passe le tour.
fight.ready¶
returns boolean
Signal pret (phase de placement).
fight.abandon¶
returns boolean
Abandonne le combat. Le personnage quitte immediatement.
fight.placeOnCell¶
returns boolean
Se placer sur une cellule pendant la phase de placement.
fight.getPlacementCells¶
returns table of number
Cellules de placement de notre equipe.
fight.getEnemyPlacementCells¶
returns table of number
Cellules de placement ennemies.
fight.getSpells¶
returns table of spell
Tous nos sorts. Chaque spell : {id, name, level, position, cdRemaining, castsThisTurn, apCost, minRange, maxRange, needLos, needLine, freeCell, rangeBoostable, maxPerTurn, maxPerTarget, cooldown, isSummon, zoneType ('P'=point, 'X'=croix, 'C'=cercle, 'L'=ligne, 'D'=anneau), zoneSize}.
fight.getSpell¶
returns spell | nil
Donnees d'un sort.
fight.spellCooldown¶
returns number
Tours de recharge restants (0 = pret).
fight.canCastSpell¶
returns boolean, string
Retourne (true, "ok") ou (false, raison). Raisons : "spell_not_found", "no_spell_data", "not_enough_ap", "cooldown", "max_per_turn", "summon_limit".
fight.canCastSpellOnCell¶
returns string
Retourne "ok" ou la raison du refus : "not_enough_ap", "cooldown_N", "max_per_turn", "max_per_target", "too_close", "out_of_range", "not_in_line", "no_los", "cell_occupied", "summon_limit".
fight.getTargetableCells¶
returns table of number
Toutes les cellules ciblables par ce sort actuellement.
fight.getSpellZoneCells¶
returns table of number
Cellules dans la zone d'effet du sort.
fight.getEnemiesInZone¶
returns table of fighter
Ennemis touches par la zone d'effet.
fight.getBestZoneTarget¶
returns number, number
Retourne (cellId, count) : cellule optimale pour toucher le plus d'ennemis. nil si aucun ennemi.
fight.cellDistance¶
returns number
Distance Manhattan isometrique entre deux cellules.
fight.distanceTo¶
returns number
Distance depuis notre cellule.
fight.getReachableCells¶
returns table of number
Cellules accessibles avec nos PM (BFS).
fight.getPath¶
returns table of number
Chemin A* entre deux cellules. Table vide si aucun chemin.
fight.pathLength¶
returns number
Nombre de cases du chemin (0 = inaccessible).
fight.isLineOfSight¶
returns boolean
True si vue degagee (pas de combattant bloquant).
fight.adjacentCells¶
returns table of number
4 cellules voisines.
fight.isCellWalkable¶
returns boolean
True si la cellule est marchable.
fight.isCellFree¶
returns boolean
True si marchable ET aucune entite vivante dessus.
fight.getSummons¶
returns table of fighter
Nos invocations vivantes (allies avec ID negatif).
fight.hasSummons¶
returns boolean
True si on a des invocations en vie.
fight.getSummonById¶
returns fighter | nil
Invocation par ID.
fight.summon¶
returns boolean
Lance un sort d'invocation sur une cellule.
fight.summonCount¶
returns number
Nombre d'invocations actuelles.
fight.summonMax¶
returns number
Nombre max d'invocations.
fight.hasChallenges¶
returns boolean
True si des defis sont actifs.
fight.getChallengeIds¶
returns table of number
IDs des defis actifs.
fight.getChallengeCount¶
returns number
Nombre de defis.
fight.isChallengeActive¶
returns boolean
True si le defi est actif.
fight.challengeName¶
returns string
Nom du defi.
fight.getActiveChallenges¶
returns table of {id, name, active}
Tous les defis avec nom et statut.
fight.addSpell¶
Ajoute un sort a la liste auto-play.
fight.clearSpells¶
Vide la liste auto-play.
fight.playTurn¶
Lance tous les sorts de la liste sur l'ennemi le plus proche puis passe le tour.
fight.waitForTurn¶
blocking · returns boolean
Bloque jusqu'a ce que ce soit notre tour. False si timeout ou fin de combat. Defaut 60s.
fight.waitForFightEnd¶
blocking · returns boolean
Bloque jusqu'a la fin du combat. Retourne true si victoire. Defaut 5min.
fight.delay¶
blocking
Pause de ms millisecondes.
fight.log¶
Log un message pendant le combat.