@datamoc/mw_games 0.31.0 → 0.34.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/CHANGELOG.md +84 -0
  2. package/api-surface.json +312 -0
  3. package/dist/assets/index.d.ts +2 -0
  4. package/dist/assets/index.d.ts.map +1 -1
  5. package/dist/assets/index.js +1 -0
  6. package/dist/assets/index.js.map +1 -1
  7. package/dist/assets/svg.d.ts +87 -0
  8. package/dist/assets/svg.d.ts.map +1 -0
  9. package/dist/assets/svg.js +162 -0
  10. package/dist/assets/svg.js.map +1 -0
  11. package/dist/index.d.ts +1 -0
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +1 -0
  14. package/dist/index.js.map +1 -1
  15. package/dist/mw_games.global.js +60 -60
  16. package/dist/mwl/fengari.d.ts +12 -6
  17. package/dist/mwl/fengari.d.ts.map +1 -1
  18. package/dist/mwl/fengari.js +69 -85
  19. package/dist/mwl/fengari.js.map +1 -1
  20. package/dist/mwl/runtime.d.ts +13 -0
  21. package/dist/mwl/runtime.d.ts.map +1 -1
  22. package/dist/mwl/runtime.js +72 -4
  23. package/dist/mwl/runtime.js.map +1 -1
  24. package/dist/mwl/schema.d.ts.map +1 -1
  25. package/dist/mwl/schema.js +4 -1
  26. package/dist/mwl/schema.js.map +1 -1
  27. package/dist/roguelike/Cave.d.ts +124 -0
  28. package/dist/roguelike/Cave.d.ts.map +1 -0
  29. package/dist/roguelike/Cave.js +216 -0
  30. package/dist/roguelike/Cave.js.map +1 -0
  31. package/dist/roguelike/Overworld.d.ts +89 -0
  32. package/dist/roguelike/Overworld.d.ts.map +1 -0
  33. package/dist/roguelike/Overworld.js +325 -0
  34. package/dist/roguelike/Overworld.js.map +1 -0
  35. package/dist/roguelike/generate.d.ts +8 -2
  36. package/dist/roguelike/generate.d.ts.map +1 -1
  37. package/dist/roguelike/generate.js +13 -3
  38. package/dist/roguelike/generate.js.map +1 -1
  39. package/dist/roguelike/index.d.ts +4 -0
  40. package/dist/roguelike/index.d.ts.map +1 -1
  41. package/dist/roguelike/index.js +2 -0
  42. package/dist/roguelike/index.js.map +1 -1
  43. package/dist/skeleton/index.d.ts +131 -0
  44. package/dist/skeleton/index.d.ts.map +1 -0
  45. package/dist/skeleton/index.js +206 -0
  46. package/dist/skeleton/index.js.map +1 -0
  47. package/dist/testing/SceneControls.d.ts +35 -0
  48. package/dist/testing/SceneControls.d.ts.map +1 -0
  49. package/dist/testing/SceneControls.js +49 -0
  50. package/dist/testing/SceneControls.js.map +1 -0
  51. package/dist/testing/index.d.ts +2 -0
  52. package/dist/testing/index.d.ts.map +1 -1
  53. package/dist/testing/index.js +1 -0
  54. package/dist/testing/index.js.map +1 -1
  55. package/dist/two-d/render/SkeletalSprite.d.ts +118 -0
  56. package/dist/two-d/render/SkeletalSprite.d.ts.map +1 -0
  57. package/dist/two-d/render/SkeletalSprite.js +189 -0
  58. package/dist/two-d/render/SkeletalSprite.js.map +1 -0
  59. package/dist/two-d/render/index.d.ts +2 -0
  60. package/dist/two-d/render/index.d.ts.map +1 -1
  61. package/dist/two-d/render/index.js +1 -0
  62. package/dist/two-d/render/index.js.map +1 -1
  63. package/dist/version.d.ts +1 -1
  64. package/dist/version.js +1 -1
  65. package/package.json +7 -2
  66. package/sbom.cdx.json +222 -222
@@ -6,13 +6,19 @@ export interface FengariScriptHostOptions {
6
6
  readonly seed?: number;
7
7
  }
8
8
  /**
9
- * Optional Lua 5.3 host. Fengari is loaded only by this subpath, never by `mwg/mwl`.
9
+ * Optional Lua 5.4 host. Fengari is loaded only by this subpath, never by `mwg/mwl`.
10
10
  *
11
- * Sandboxed for untrusted scripts: `os`, `io`, `debug`, `package`, `require`, `load`, `dofile`
12
- * and `loadfile` are removed, `math.random` is the host's seeded stream, and every call is
13
- * bounded by `instructionLimit` and by `memoryLimit` (bytes of string data allocated during the
14
- * call). Globals persist between calls on one host, so scripts that must not influence each
15
- * other need a host each.
11
+ * Sandboxed for untrusted scripts: only the base, coroutine, math, string, table and utf8
12
+ * libraries are opened (`io`, `os`, `debug` and `package` with its `require` are never
13
+ * constructed, identically in Node and the browser), the base library's `load`, `loadfile`
14
+ * and `dofile` are removed, every chunk is compiled in text mode so binary bytecode is
15
+ * rejected, `math.random` is the host's seeded stream, and every call is bounded by
16
+ * `instructionLimit` and by `memoryLimit` (bytes of string and buffer data the call
17
+ * allocates, parsing included). The byte budget is enforced through the fork's per-state
18
+ * allocation hook, so a refused allocation surfaces to scripts as Lua's standard
19
+ * `not enough memory` even under a script-level `pcall`, but the host rejects the whole
20
+ * call regardless. Globals persist between calls on one host, so scripts that must not
21
+ * influence each other need a host each.
16
22
  *
17
23
  * @example
18
24
  * ```ts
@@ -1 +1 @@
1
- {"version":3,"file":"fengari.d.ts","sourceRoot":"","sources":["../../src/mwl/fengari.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAA6B,UAAU,EAAe,MAAM,cAAc,CAAC;AAEvF,MAAM,WAAW,wBAAwB;IACxC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,+EAA+E;IAC/E,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACvB;AAyDD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,GAAE,wBAA6B,GAAG,UAAU,CA4I1F"}
1
+ {"version":3,"file":"fengari.d.ts","sourceRoot":"","sources":["../../src/mwl/fengari.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAA6B,UAAU,EAAe,MAAM,cAAc,CAAC;AAEvF,MAAM,WAAW,wBAAwB;IACxC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,+EAA+E;IAC/E,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACvB;AAaD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,GAAE,wBAA6B,GAAG,UAAU,CAqK1F"}
@@ -1,71 +1,31 @@
1
- // Fengari 0.1 intentionally ships JavaScript without TypeScript declarations.
2
- // The checked subset is documented in fengari.d.ts.
1
+ // @datamoc/fengari intentionally ships JavaScript without TypeScript declarations.
3
2
  // @ts-expect-error Fengari has no declarations in its npm package.
4
- import { lauxlib, lua, lualib, to_luastring } from 'fengari';
3
+ import fengari from '@datamoc/fengari';
4
+ const { lauxlib, lua, lualib } = fengari;
5
+ const to_luastring = (str) => new TextEncoder().encode(str);
5
6
  const DEFAULT_INSTRUCTION_LIMIT = 100_000;
6
7
  const DEFAULT_MEMORY_LIMIT = 32 * 1024 * 1024;
7
- const NativeUint8Array = Uint8Array;
8
+ /** only the sandbox-safe standard libraries: `io`, `os`, `debug` and `package` are never opened */
9
+ const SAFE_LIBRARIES = lualib.LUA_GLIBK |
10
+ lualib.LUA_COLIBK |
11
+ lualib.LUA_MATHLIBK |
12
+ lualib.LUA_STRLIBK |
13
+ lualib.LUA_TABLIBK |
14
+ lualib.LUA_UTF8LIBK;
8
15
  /**
9
- * Runs `work` with every `new Uint8Array` charged against `budget` bytes. Fengari stores every
10
- * Lua string and buffer in a `Uint8Array` it constructs through the global name, so this is
11
- * the one place a concatenation (`s = s .. s` doubles in one instruction), `string.rep`,
12
- * `table.concat` or `string.gsub` can be bounded: the instruction limit alone let
13
- * `string.rep("x", 2^28)` allocate 268 MB in a single instruction. Views (`subarray`) are
14
- * not charged, since they allocate nothing.
15
- */
16
- function withMemoryBudget(budget, work) {
17
- let remaining = budget;
18
- let exceeded = false;
19
- class Counted extends NativeUint8Array {
20
- static get [Symbol.species]() {
21
- return NativeUint8Array;
22
- }
23
- //fengari's own `instanceof Uint8Array` checks resolve to this class while it is installed
24
- static [Symbol.hasInstance](value) {
25
- return value instanceof NativeUint8Array;
26
- }
27
- constructor(...args) {
28
- super(...args);
29
- remaining -= this.byteLength;
30
- if (remaining < 0) {
31
- exceeded = true;
32
- throw new Error('Lua memory limit exceeded');
33
- }
34
- }
35
- }
36
- const previous = globalThis.Uint8Array;
37
- globalThis.Uint8Array = Counted;
38
- try {
39
- return { result: work(), exceeded };
40
- }
41
- catch (error) {
42
- if (exceeded)
43
- return { result: undefined, exceeded };
44
- throw error;
45
- }
46
- finally {
47
- globalThis.Uint8Array = previous;
48
- }
49
- }
50
- /** runs host-side code (a game's `emit` callback) outside the budget and with the real constructor */
51
- function outsideBudget(work) {
52
- const previous = globalThis.Uint8Array;
53
- globalThis.Uint8Array = NativeUint8Array;
54
- try {
55
- return work();
56
- }
57
- finally {
58
- globalThis.Uint8Array = previous;
59
- }
60
- }
61
- /**
62
- * Optional Lua 5.3 host. Fengari is loaded only by this subpath, never by `mwg/mwl`.
16
+ * Optional Lua 5.4 host. Fengari is loaded only by this subpath, never by `mwg/mwl`.
63
17
  *
64
- * Sandboxed for untrusted scripts: `os`, `io`, `debug`, `package`, `require`, `load`, `dofile`
65
- * and `loadfile` are removed, `math.random` is the host's seeded stream, and every call is
66
- * bounded by `instructionLimit` and by `memoryLimit` (bytes of string data allocated during the
67
- * call). Globals persist between calls on one host, so scripts that must not influence each
68
- * other need a host each.
18
+ * Sandboxed for untrusted scripts: only the base, coroutine, math, string, table and utf8
19
+ * libraries are opened (`io`, `os`, `debug` and `package` with its `require` are never
20
+ * constructed, identically in Node and the browser), the base library's `load`, `loadfile`
21
+ * and `dofile` are removed, every chunk is compiled in text mode so binary bytecode is
22
+ * rejected, `math.random` is the host's seeded stream, and every call is bounded by
23
+ * `instructionLimit` and by `memoryLimit` (bytes of string and buffer data the call
24
+ * allocates, parsing included). The byte budget is enforced through the fork's per-state
25
+ * allocation hook, so a refused allocation surfaces to scripts as Lua's standard
26
+ * `not enough memory` even under a script-level `pcall`, but the host rejects the whole
27
+ * call regardless. Globals persist between calls on one host, so scripts that must not
28
+ * influence each other need a host each.
69
29
  *
70
30
  * @example
71
31
  * ```ts
@@ -78,7 +38,7 @@ function outsideBudget(work) {
78
38
  */
79
39
  export function createFengariScriptHost(options = {}) {
80
40
  const state = lauxlib.luaL_newstate();
81
- lualib.luaL_openlibs(state);
41
+ lualib.luaL_openselectedlibs(state, SAFE_LIBRARIES, 0);
82
42
  const limit = options.instructionLimit ?? DEFAULT_INSTRUCTION_LIMIT;
83
43
  if (!Number.isInteger(limit) || limit < 1)
84
44
  throw new RangeError('instructionLimit must be a positive integer');
@@ -87,6 +47,21 @@ export function createFengariScriptHost(options = {}) {
87
47
  throw new RangeError('memoryLimit must be a positive integer');
88
48
  let randomState = (options.seed ?? 0x6d7767) >>> 0;
89
49
  let emit;
50
+ //the per-call byte budget, charged by the fork's allocation hook: every internal string or
51
+ //buffer allocation decrements `remaining`, and the first to cross zero refuses the
52
+ //allocation exactly like a failing C allocator (LUA_ERRMEM, "not enough memory")
53
+ const budget = { remaining: memoryLimit, exceeded: false };
54
+ lua.lua_setallocf(state, (_ud, nsize) => {
55
+ budget.remaining -= nsize;
56
+ if (budget.remaining < 0) {
57
+ budget.exceeded = true;
58
+ throw new Error('Lua memory limit exceeded');
59
+ }
60
+ }, budget);
61
+ const resetBudget = () => {
62
+ budget.remaining = memoryLimit;
63
+ budget.exceeded = false;
64
+ };
90
65
  const push = (value) => {
91
66
  if (value === null)
92
67
  return lua.lua_pushnil(state);
@@ -110,31 +85,29 @@ export function createFengariScriptHost(options = {}) {
110
85
  }
111
86
  }
112
87
  };
113
- const read = (index, depth = 0) => {
114
- const type = lua.lua_type(state, index);
88
+ const read = (L, index, depth = 0) => {
89
+ const type = lua.lua_type(L, index);
115
90
  if (type === lua.LUA_TNIL)
116
91
  return null;
117
92
  if (type === lua.LUA_TBOOLEAN)
118
- return lua.lua_toboolean(state, index);
93
+ return lua.lua_toboolean(L, index);
119
94
  if (type === lua.LUA_TNUMBER)
120
- return lua.lua_tonumber(state, index);
95
+ return lua.lua_tonumber(L, index);
121
96
  if (type === lua.LUA_TSTRING)
122
- return lua.lua_tojsstring(state, index) ?? '';
97
+ return lua.lua_tojsstring(L, index) ?? '';
123
98
  if (type !== lua.LUA_TTABLE)
124
99
  throw new Error('Lua result must be a JSON-compatible value');
125
100
  if (depth > 20)
126
101
  throw new Error('Lua result is nested too deeply');
127
102
  const result = {};
128
- const tableIndex = index < 0 ? lua.lua_gettop(state) + index + 1 : index;
129
- lua.lua_pushnil(state);
130
- while (lua.lua_next(state, tableIndex) !== 0) {
131
- const key = lua.lua_isinteger(state, -2)
132
- ? String(lua.lua_tointeger(state, -2))
133
- : lua.lua_tojsstring(state, -2);
103
+ const tableIndex = index < 0 ? lua.lua_gettop(L) + index + 1 : index;
104
+ lua.lua_pushnil(L);
105
+ while (lua.lua_next(L, tableIndex) !== 0) {
106
+ const key = lua.lua_isinteger(L, -2) ? String(lua.lua_tointeger(L, -2)) : lua.lua_tojsstring(L, -2);
134
107
  if (key === null)
135
108
  throw new Error('Lua table keys must be strings or integers');
136
- result[key] = read(-1, depth + 1);
137
- lua.lua_settop(state, -2);
109
+ result[key] = read(L, -1, depth + 1);
110
+ lua.lua_settop(L, -2);
138
111
  }
139
112
  return result;
140
113
  };
@@ -155,21 +128,30 @@ export function createFengariScriptHost(options = {}) {
155
128
  lua.lua_error(state);
156
129
  }
157
130
  }, lua.LUA_MASKCOUNT, limit > 1000 ? 1000 : 1);
158
- const { result: status, exceeded } = withMemoryBudget(memoryLimit, () => lua.lua_pcall(state, args, results, 0));
131
+ //the memory budget is reset by the caller (run/call), not here, so the parse of a
132
+ //chunk is charged against the same budget as its execution
133
+ const status = lua.lua_pcall(state, args, results, 0);
159
134
  lua.lua_sethook(state, null, 0, 0);
160
- if (exceeded) {
135
+ if (budget.exceeded) {
161
136
  lua.lua_settop(state, 0);
162
137
  throw new Error('Lua memory limit exceeded');
163
138
  }
164
139
  if (status !== lua.LUA_OK)
165
140
  throw new Error(lua.lua_tojsstring(state, -1) ?? 'Lua execution error');
166
- return results === 0 ? null : read(-1);
141
+ return results === 0 ? null : read(state, -1);
167
142
  };
168
143
  const run = (source, results) => {
169
144
  lua.lua_settop(state, 0);
170
- const loadStatus = lauxlib.luaL_loadstring(state, to_luastring(source));
171
- if (loadStatus !== lua.LUA_OK)
145
+ resetBudget();
146
+ const bytes = to_luastring(source);
147
+ //'t' compiles text only: a '\x1bLua' binary dump must never reach the bytecode undumper
148
+ const loadStatus = lauxlib.luaL_loadbufferx(state, bytes, bytes.length, bytes, to_luastring('t'));
149
+ if (loadStatus !== lua.LUA_OK) {
150
+ //a budget exhausted by parsing itself is a limit error, not a syntax error
151
+ if (budget.exceeded)
152
+ throw new Error('Lua memory limit exceeded');
172
153
  throw new Error(lua.lua_tojsstring(state, -1) ?? 'Lua syntax error');
154
+ }
173
155
  return protectedCall(0, results);
174
156
  };
175
157
  const install = (context, callback) => {
@@ -177,8 +159,9 @@ export function createFengariScriptHost(options = {}) {
177
159
  setContext(context);
178
160
  lua.lua_pushjsfunction(state, (currentState) => {
179
161
  const name = lua.lua_tojsstring(currentState, 1) ?? '';
180
- const payload = lua.lua_gettop(currentState) > 1 ? read(2) : undefined;
181
- outsideBudget(() => emit?.(name, payload));
162
+ const payload = lua.lua_gettop(currentState) > 1 ? read(currentState, 2) : undefined;
163
+ //host-side code: the allocation hook charges only the VM's own strings and buffers
164
+ emit?.(name, payload);
182
165
  return 0;
183
166
  });
184
167
  lua.lua_setglobal(state, to_luastring('mwg_emit'));
@@ -188,7 +171,7 @@ export function createFengariScriptHost(options = {}) {
188
171
  return 1;
189
172
  });
190
173
  lua.lua_setglobal(state, to_luastring('__mwg_random'));
191
- const sandbox = 'os=nil; io=nil; debug=nil; package=nil; require=nil; dofile=nil; loadfile=nil; load=nil; math.random=__mwg_random; math.randomseed=function() end';
174
+ const sandbox = 'load=nil; loadfile=nil; dofile=nil; math.random=__mwg_random; math.randomseed=function() end';
192
175
  run(sandbox, 0);
193
176
  };
194
177
  //hides the string metatable (the `string` library itself) from `getmetatable("")`
@@ -205,6 +188,7 @@ export function createFengariScriptHost(options = {}) {
205
188
  call(name, args = [], context = {}, callback) {
206
189
  install(context, callback);
207
190
  lua.lua_settop(state, 0);
191
+ resetBudget();
208
192
  lua.lua_getglobal(state, to_luastring(name));
209
193
  args.forEach(push);
210
194
  return protectedCall(args.length, 1);
@@ -1 +1 @@
1
- {"version":3,"file":"fengari.js","sourceRoot":"","sources":["../../src/mwl/fengari.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fengari.js","sourceRoot":"","sources":["../../src/mwl/fengari.ts"],"names":[],"mappings":"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"}
@@ -168,6 +168,9 @@ export type MwlTraceEvent = {
168
168
  readonly type: 'error';
169
169
  readonly message: string;
170
170
  readonly event?: string;
171
+ } | {
172
+ readonly type: 'while_limit';
173
+ readonly iterations: number;
171
174
  };
172
175
  /** One public MWL runtime operation, retained for deterministic replay and diagnostics. */
173
176
  export type MwlRuntimeAction = {
@@ -311,6 +314,8 @@ export declare class MwlRuntime {
311
314
  private readonly resolveMap?;
312
315
  private readonly hooks?;
313
316
  private readonly onTrace?;
317
+ private testHelpers?;
318
+ /** the helpers a `test=` expression may call, built once from the hook registry */
314
319
  private readonly persistence;
315
320
  private readonly random;
316
321
  private readonly unitTypes;
@@ -494,6 +499,14 @@ export declare class MwlRuntime {
494
499
  */
495
500
  private conditionMatches;
496
501
  private nodeConditionMatches;
502
+ /**
503
+ * The helpers a `test=` expression may call (item 406): the built-in `have_unit` and
504
+ * `have_location` queries over this world, plus one entry per registered predicate
505
+ * hook, so a compound predicate no longer has to detour through `condition=hook` with
506
+ * a `[condition]` tree. Each argument is one `key=value` pair (a bare argument names
507
+ * `value`), matching the string-shaped context predicates already receive.
508
+ */
509
+ private conditionHelpers;
497
510
  /**
498
511
  * A `filter_condition` child holds `variable` comparisons (same operators
499
512
  * as `condition`) and `have_unit` existence checks (an alive unit matching
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/mwl/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/mwl/runtime.ts"],"names":[],"mappings":"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"}
@@ -594,19 +594,24 @@ export class MwlRuntime {
594
594
  const starts = this.world.map?.starts[sideId];
595
595
  if (!starts?.length)
596
596
  continue;
597
+ //a leader naming a declared [unit] is that unit, not a type to spawn a second one of
598
+ if (this.world.units[leader])
599
+ continue;
597
600
  const stats = this.unitTypes.get(leader);
601
+ if (!stats)
602
+ throw new Error(`MWL side ${sideId} leader "${leader}" is neither a unit nor a unit type`);
598
603
  for (const start of starts) {
599
604
  if (this.unitAt(start.x, start.y))
600
605
  continue;
601
606
  const id = `${leader} ${sideId} (${start.x},${start.y})`;
602
607
  this.world.units[id] = {
603
- hp: stats?.hitpoints ?? 1,
608
+ hp: stats.hitpoints,
604
609
  x: start.x,
605
610
  y: start.y,
606
611
  alive: true,
607
612
  type: leader,
608
613
  side: sideId,
609
- moves: stats?.movement ?? 0,
614
+ moves: stats.movement,
610
615
  can_recruit: true,
611
616
  leader: true,
612
617
  };
@@ -770,8 +775,18 @@ export class MwlRuntime {
770
775
  const limit = integer(node, 'max_iterations', 1000);
771
776
  if (limit < 1 || limit > 100_000)
772
777
  throw new Error('MWL while max_iterations must be between 1 and 100000');
773
- for (let iteration = 0; iteration < limit && this.nodeConditionMatches(node); iteration++)
778
+ let iteration = 0;
779
+ while (iteration < limit && this.nodeConditionMatches(node)) {
774
780
  this.runBlock(this.commandChildren(node));
781
+ iteration++;
782
+ }
783
+ //the cap is observable: reaching it with the condition still true traces a
784
+ //while_limit, and on_limit=error turns that into a hard failure instead
785
+ if (iteration === limit && this.nodeConditionMatches(node)) {
786
+ if (node.attributes.on_limit === 'error')
787
+ throw new Error(`MWL while reached its max_iterations cap of ${limit}`);
788
+ this.onTrace?.({ type: 'while_limit', iterations: limit });
789
+ }
775
790
  }
776
791
  cmdForeach(node) {
777
792
  const source = this.variableAt(required(node, 'variable'));
@@ -1116,9 +1131,62 @@ export class MwlRuntime {
1116
1131
  }
1117
1132
  nodeConditionMatches(node) {
1118
1133
  if (node.attributes.test !== undefined)
1119
- return evaluateCondition(node.attributes.test, primitiveVariables(this.world.variables));
1134
+ return evaluateCondition(node.attributes.test, primitiveVariables(this.world.variables), {
1135
+ helpers: this.conditionHelpers(),
1136
+ });
1120
1137
  return this.conditionMatches(node);
1121
1138
  }
1139
+ /**
1140
+ * The helpers a `test=` expression may call (item 406): the built-in `have_unit` and
1141
+ * `have_location` queries over this world, plus one entry per registered predicate
1142
+ * hook, so a compound predicate no longer has to detour through `condition=hook` with
1143
+ * a `[condition]` tree. Each argument is one `key=value` pair (a bare argument names
1144
+ * `value`), matching the string-shaped context predicates already receive.
1145
+ */
1146
+ conditionHelpers() {
1147
+ if (this.testHelpers)
1148
+ return this.testHelpers;
1149
+ const filterFromArgs = (args) => {
1150
+ const filter = {};
1151
+ for (const arg of args) {
1152
+ const text = String(arg);
1153
+ const split = text.indexOf('=');
1154
+ if (split <= 0)
1155
+ filter.value = text;
1156
+ else
1157
+ filter[text.slice(0, split)] = text.slice(split + 1);
1158
+ }
1159
+ return filter;
1160
+ };
1161
+ const helpers = {
1162
+ have_unit: (...args) => {
1163
+ const filter = filterFromArgs(args);
1164
+ return Object.entries(this.world.units).some(([id, unit]) => unit.alive &&
1165
+ (filter.id === undefined || id === filter.id) &&
1166
+ unitMatchesFilter(unit, id, filter));
1167
+ },
1168
+ have_location: (...args) => {
1169
+ const filter = filterFromArgs(args);
1170
+ const map = this.world.map;
1171
+ const x = Number(filter.x);
1172
+ const y = Number(filter.y);
1173
+ if (!map ||
1174
+ !Number.isInteger(x) ||
1175
+ !Number.isInteger(y) ||
1176
+ x < 0 ||
1177
+ y < 0 ||
1178
+ x >= map.width ||
1179
+ y >= map.height)
1180
+ return false;
1181
+ const code = map.codes[y * map.width + x];
1182
+ return filter.terrain === undefined || code === filter.terrain;
1183
+ },
1184
+ };
1185
+ for (const [name, predicate] of Object.entries(this.hooks?.predicate ?? {}))
1186
+ helpers[name] = (...args) => Boolean(predicate(this.worldView(), filterFromArgs(args)));
1187
+ this.testHelpers = helpers;
1188
+ return helpers;
1189
+ }
1122
1190
  /**
1123
1191
  * A `filter_condition` child holds `variable` comparisons (same operators
1124
1192
  * as `condition`) and `have_unit` existence checks (an alive unit matching