Aller au contenu

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


Référence

Constantes slots

fm.BOTTES, fm.CEINTURE, fm.CAPE, fm.CHAPEAU, fm.SAC, fm.ANNEAU, fm.AMULETTE

Skill IDs des ateliers FM (163..169).


fm.isOpen

fm.isOpen()

returns boolean

True si un atelier FM est ouvert (exchange type 3 + skill 163..169).


fm.currentSlot / currentSlotName

fm.currentSlot() / fm.currentSlotName()

returns number | string | nil

Skill id ou nom ("bottes", "amulette"...) de l'atelier courant.


fm.open

fm.open(slot: number | string)

returns boolean

Ouvre un atelier FM sur la map courante. slot = fm.BOTTES..fm.AMULETTE ou "bottes".."amulette". Attend ECK3 (15s max).


fm.leave

fm.leave()

returns boolean

Ferme l'atelier (envoie EV).


fm.canFuse

fm.canFuse()

returns boolean

True si un objet est pose ET au moins une rune est presente dans l'atelier.


fm.putItemByUid / putRuneByUid / removeItemByUid

fm.putItemByUid(uid) / fm.putRuneByUid(uid, qty?) / fm.removeItemByUid(uid, qty?)

returns boolean

Place/retire un objet ou une rune par uid (EMO+/EMO- brut).


fm.putItem / removeItem

fm.putItem(templateId, qty?) / fm.removeItem(templateId, qty?)

returns boolean

Place/retire par template id (resout l'uid via l'inventaire).


fm.putRunesForStat

fm.putRunesForStat(statName: string, count: number)

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

fm.clearSlots()

returns boolean

Retire tous les items et runes de l'atelier.


fm.fuseOnce / fuseAll

fm.fuseOnce() / fm.fuseAll(n?)

returns boolean

Lance une fusion (EK) ou N fusions en boucle (EMR{n} + EK, stoppe quand les runes manquent).


fm.waitForResult

fm.waitForResult(timeoutMs?: number)

returns table | nil

Attend la fin d'une batch. Retourne {successes, total, failures} ou nil si timeout (30s par defaut).


fm.lastBatch / successRate

fm.lastBatch() / fm.successRate()

returns table / number

lastBatch()→{successes, total, failures}. successRate()→% (0..100) de la derniere batch.


fm.itemEffects

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

fm.itemStat(name: string)

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

fm.slotRunes()

returns table

Runes actuellement dans l'atelier. Chaque entree: {uid, name, quantity, stat?, perFuse?}.


fm.availableRunes

fm.availableRunes(statFilter?: string)

returns table

Runes disponibles dans l'inventaire, filtrables par stat cible. Entree: {uid, templateId, name, quantity, stat?, perFuse?}.


fm.runeStat

fm.runeStat(name: string)

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

fm.fuseUntil(stat: string, target: number, maxAttempts?: number)

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.