JavaScript Support
As of revision 20509, KoLmafia supports scripting in JavaScript! You can run JS code from the CLI using js <code>, and you can call scripts through any of the normal methods. Consult and "lifecycle" scripts (e.g. betweenBattleScript) are supported as well as of revision 20519.
- All the methods in the ASH runtime library are available on the
Libglobal object in JS, with names of methods converted to camelCase. So, for example,print_htmlin ASH becomesLib.printHtmlin JS. - ASH maps are converted to plain JS objects, and ASH arrays are converted to JS arrays.
- You can look at the type reference for the JS
Libwithjsref, which works just likeashref. - Objects like monsters and items can be constructed via the
MonsterandItemglobal objects, along with the rest of ASH's enumerated types (stat, phylum, location, etc.).Monster.gettakes a number or a string, just like$monsterin ASH, or an array of numbers and strings to construct an array of monsters.Monster.allworks like$monsters[]in ASH; it takes no arguments and returns an array of all monsters. - Mafia supports
requirefor both ASH and JS scripts. For ASH scripts, it will execute top-level code but only export functions, not variables, in the top scope. - If you want Mafia to run your
mainfunction, you must export it by adding it to module.exports, just as you would for a Node module.