title: fm — Forgemagie | MoonBot API description: API forgemagie MoonBot Lua : améliorer un item, runes, scripts d'FM automatique.
fm — Forgemagie¶
API forgemagie MoonBot Lua : améliorer un item, runes, scripts d'FM automatique.
19 fonctions dans ce namespace.
Index¶
Constantes slotsfm.isOpenfm.currentSlot / currentSlotNamefm.openfm.leavefm.canFusefm.putItemByUid / putRuneByUid / removeItemByUidfm.putItem / removeItemfm.putRunesForStatfm.clearSlotsfm.fuseOnce / fuseAllfm.waitForResultfm.lastBatch / successRatefm.itemEffectsfm.itemStatfm.slotRunesfm.availableRunesfm.runeStatfm.fuseUntil
Référence¶
Constantes slots¶
Skill IDs des ateliers FM (163..169).
fm.isOpen¶
returns boolean
True si un atelier FM est ouvert (exchange type 3 + skill 163..169).
fm.currentSlot / currentSlotName¶
returns number | string | nil
Skill id ou nom ("bottes", "amulette"...) de l'atelier courant.
fm.open¶
returns boolean
Ouvre un atelier FM sur la map courante. slot = fm.BOTTES..fm.AMULETTE ou "bottes".."amulette". Attend ECK3 (15s max).
fm.leave¶
returns boolean
Ferme l'atelier (envoie EV).
fm.canFuse¶
returns boolean
True si un objet est pose ET au moins une rune est presente dans l'atelier.
fm.putItemByUid / putRuneByUid / removeItemByUid¶
returns boolean
Place/retire un objet ou une rune par uid (EMO+/EMO- brut).
fm.putItem / removeItem¶
returns boolean
Place/retire par template id (resout l'uid via l'inventaire).
fm.putRunesForStat¶
returns number
Auto-selection : trouve la meilleure rune dispo ciblant statName et en place count. Ex: fm.putRunesForStat("vitalite", 50). Retourne le nombre pose (0 si aucune rune trouvee).
fm.clearSlots¶
returns boolean
Retire tous les items et runes de l'atelier.
fm.fuseOnce / fuseAll¶
returns boolean
Lance une fusion (EK) ou N fusions en boucle (EMR{n} + EK, stoppe quand les runes manquent).
fm.waitForResult¶
returns table | nil
Attend la fin d'une batch. Retourne {successes, total, failures} ou nil si timeout (30s par defaut).
fm.lastBatch / successRate¶
returns table / number
lastBatch()→{successes, total, failures}. successRate()→% (0..100) de la derniere batch.
fm.itemEffects¶
returns table
Parse le jet actuel de l'objet pose. Chaque entree: {id, label, value, max}. Labels normalises: "vitalite", "force", "intelligence", "sagesse", "chance", "agilite", "pa", "pm", "portee", "cc", "dommages", "prospection", "soins", "invocations", "res_per_feu", etc.
fm.itemStat¶
returns number
Valeur actuelle d'un stat precis sur l'objet pose. Accepte les alias : "vitalite"/"vita"/"vi", "force"/"fo", "intelligence"/"int"/"ine", etc. Retourne 0 si le stat est absent.
fm.slotRunes¶
returns table
Runes actuellement dans l'atelier. Chaque entree: {uid, name, quantity, stat?, perFuse?}.
fm.availableRunes¶
returns table
Runes disponibles dans l'inventaire, filtrables par stat cible. Entree: {uid, templateId, name, quantity, stat?, perFuse?}.
fm.runeStat¶
returns table | nil
Decode une rune par son nom. Ex: fm.runeStat("Rune Pa Vi") → {stat="vitalite", perFuse=1}. Retourne nil si inconnue.
fm.fuseUntil¶
returns table
Fusionne en boucle jusqu'a ce qu'un stat atteigne target (ou manque de runes). Retourne {reached: bool, attempts: number, final: number}. maxAttempts par defaut = 500.