JavaScript Support: Difference between revisions
Jump to navigation
Jump to search
Initial write. Some of this is premature. |
m add revision |
||
Line 1: | Line 1: | ||
As of revision 20509, KoLmafia supports scripting in JavaScript! You can run JS code from the CLI using <code>js <nowiki><code></nowiki></code>, and you can call scripts through any of the normal methods. Consult and "lifecycle" scripts (e.g. <code>betweenBattleScript</code>) are supported as well as of revision | As of revision 20509, KoLmafia supports scripting in JavaScript! You can run JS code from the CLI using <code>js <nowiki><code></nowiki></code>, and you can call scripts through any of the normal methods. Consult and "lifecycle" scripts (e.g. <code>betweenBattleScript</code>) are supported as well as of revision 20519. | ||
* All the methods in the ASH runtime library are available on the <code>Lib</code> global object in JS, with names of methods converted to camelCase. So, for example, <code>print_html</code> in ASH becomes <code>Lib.printHtml</code> in JS. | * All the methods in the ASH runtime library are available on the <code>Lib</code> global object in JS, with names of methods converted to camelCase. So, for example, <code>print_html</code> in ASH becomes <code>Lib.printHtml</code> in JS. |
Revision as of 19:40, 23 November 2020
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
Lib
global object in JS, with names of methods converted to camelCase. So, for example,print_html
in ASH becomesLib.printHtml
in 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
Lib
withjsref
, which works just likeashref
. - Objects like monsters and items can be constructed via the
Monster
andItem
global objects, along with the rest of ASH's enumerated types (stat, phylum, location, etc.).Monster.get
takes a number or a string, just like$monster
in ASH, or an array of numbers and strings to construct an array of monsters.Monster.all
works like$monsters[]
in ASH; it takes no arguments and returns an array of all monsters. - Mafia supports
require
for both ASH and JS scripts. For ASH scripts, it will execute top-level code but only export functions, not variables, in the top scope.