@datamoc/mw_games 0.7.4 → 0.7.7

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 (288) hide show
  1. package/CHANGELOG.md +287 -2
  2. package/README.md +15 -2
  3. package/dist/actors/Inventory.d.ts +7 -1
  4. package/dist/actors/Inventory.d.ts.map +1 -1
  5. package/dist/actors/Inventory.js.map +1 -1
  6. package/dist/actors/craft.d.ts +35 -14
  7. package/dist/actors/craft.d.ts.map +1 -1
  8. package/dist/actors/craft.js +56 -24
  9. package/dist/actors/craft.js.map +1 -1
  10. package/dist/actors/index.d.ts +1 -1
  11. package/dist/actors/index.d.ts.map +1 -1
  12. package/dist/ai/Heuristics.d.ts +232 -0
  13. package/dist/ai/Heuristics.d.ts.map +1 -0
  14. package/dist/ai/Heuristics.js +298 -0
  15. package/dist/ai/Heuristics.js.map +1 -0
  16. package/dist/ai/index.d.ts +4 -0
  17. package/dist/ai/index.d.ts.map +1 -1
  18. package/dist/ai/index.js +2 -0
  19. package/dist/ai/index.js.map +1 -1
  20. package/dist/ai/score.d.ts +126 -0
  21. package/dist/ai/score.d.ts.map +1 -0
  22. package/dist/ai/score.js +121 -0
  23. package/dist/ai/score.js.map +1 -0
  24. package/dist/assets/loader.d.ts +18 -4
  25. package/dist/assets/loader.d.ts.map +1 -1
  26. package/dist/assets/loader.js +40 -11
  27. package/dist/assets/loader.js.map +1 -1
  28. package/dist/audio/Positional.d.ts +125 -0
  29. package/dist/audio/Positional.d.ts.map +1 -0
  30. package/dist/audio/Positional.js +135 -0
  31. package/dist/audio/Positional.js.map +1 -0
  32. package/dist/audio/Sound.d.ts +7 -1
  33. package/dist/audio/Sound.d.ts.map +1 -1
  34. package/dist/audio/Sound.js +8 -2
  35. package/dist/audio/Sound.js.map +1 -1
  36. package/dist/audio/index.d.ts +2 -0
  37. package/dist/audio/index.d.ts.map +1 -1
  38. package/dist/audio/index.js +1 -0
  39. package/dist/audio/index.js.map +1 -1
  40. package/dist/battle/AttackDialog.d.ts +75 -0
  41. package/dist/battle/AttackDialog.d.ts.map +1 -0
  42. package/dist/battle/AttackDialog.js +115 -0
  43. package/dist/battle/AttackDialog.js.map +1 -0
  44. package/dist/battle/AttackPreview.d.ts +70 -0
  45. package/dist/battle/AttackPreview.d.ts.map +1 -0
  46. package/dist/battle/AttackPreview.js +78 -0
  47. package/dist/battle/AttackPreview.js.map +1 -0
  48. package/dist/battle/BattleStats.d.ts +45 -0
  49. package/dist/battle/BattleStats.d.ts.map +1 -0
  50. package/dist/battle/BattleStats.js +63 -0
  51. package/dist/battle/BattleStats.js.map +1 -0
  52. package/dist/battle/UnitSelector.d.ts +72 -0
  53. package/dist/battle/UnitSelector.d.ts.map +1 -0
  54. package/dist/battle/UnitSelector.js +117 -0
  55. package/dist/battle/UnitSelector.js.map +1 -0
  56. package/dist/battle/Whiteboard.d.ts +50 -0
  57. package/dist/battle/Whiteboard.d.ts.map +1 -0
  58. package/dist/battle/Whiteboard.js +94 -0
  59. package/dist/battle/Whiteboard.js.map +1 -0
  60. package/dist/battle/index.d.ts +10 -0
  61. package/dist/battle/index.d.ts.map +1 -1
  62. package/dist/battle/index.js +5 -0
  63. package/dist/battle/index.js.map +1 -1
  64. package/dist/board/FogOfWar.d.ts +32 -2
  65. package/dist/board/FogOfWar.d.ts.map +1 -1
  66. package/dist/board/FogOfWar.js +70 -6
  67. package/dist/board/FogOfWar.js.map +1 -1
  68. package/dist/core/Achievements.d.ts +40 -7
  69. package/dist/core/Achievements.d.ts.map +1 -1
  70. package/dist/core/Achievements.js +51 -7
  71. package/dist/core/Achievements.js.map +1 -1
  72. package/dist/core/Blob.d.ts +13 -2
  73. package/dist/core/Blob.d.ts.map +1 -1
  74. package/dist/core/Blob.js +16 -2
  75. package/dist/core/Blob.js.map +1 -1
  76. package/dist/core/Hex.d.ts +26 -6
  77. package/dist/core/Hex.d.ts.map +1 -1
  78. package/dist/core/Hex.js +40 -13
  79. package/dist/core/Hex.js.map +1 -1
  80. package/dist/core/Input.d.ts +36 -0
  81. package/dist/core/Input.d.ts.map +1 -1
  82. package/dist/core/Input.js +63 -1
  83. package/dist/core/Input.js.map +1 -1
  84. package/dist/core/Random.d.ts +93 -0
  85. package/dist/core/Random.d.ts.map +1 -1
  86. package/dist/core/Random.js +177 -0
  87. package/dist/core/Random.js.map +1 -1
  88. package/dist/core/SyncGuard.d.ts +57 -0
  89. package/dist/core/SyncGuard.d.ts.map +1 -0
  90. package/dist/core/SyncGuard.js +116 -0
  91. package/dist/core/SyncGuard.js.map +1 -0
  92. package/dist/core/index.d.ts +3 -1
  93. package/dist/core/index.d.ts.map +1 -1
  94. package/dist/core/index.js +2 -1
  95. package/dist/core/index.js.map +1 -1
  96. package/dist/i18n/Po.d.ts +51 -0
  97. package/dist/i18n/Po.d.ts.map +1 -0
  98. package/dist/i18n/Po.js +176 -0
  99. package/dist/i18n/Po.js.map +1 -0
  100. package/dist/i18n/index.d.ts +2 -0
  101. package/dist/i18n/index.d.ts.map +1 -1
  102. package/dist/i18n/index.js +1 -0
  103. package/dist/i18n/index.js.map +1 -1
  104. package/dist/mw_games.global.js +104 -98
  105. package/dist/mwl/MapFile.d.ts +41 -0
  106. package/dist/mwl/MapFile.d.ts.map +1 -0
  107. package/dist/mwl/MapFile.js +43 -0
  108. package/dist/mwl/MapFile.js.map +1 -0
  109. package/dist/mwl/campaign.d.ts +51 -0
  110. package/dist/mwl/campaign.d.ts.map +1 -0
  111. package/dist/mwl/campaign.js +58 -0
  112. package/dist/mwl/campaign.js.map +1 -0
  113. package/dist/mwl/carryover.d.ts +79 -0
  114. package/dist/mwl/carryover.d.ts.map +1 -0
  115. package/dist/mwl/carryover.js +63 -0
  116. package/dist/mwl/carryover.js.map +1 -0
  117. package/dist/mwl/content.d.ts +10 -0
  118. package/dist/mwl/content.d.ts.map +1 -1
  119. package/dist/mwl/content.js +8 -0
  120. package/dist/mwl/content.js.map +1 -1
  121. package/dist/mwl/hooks.d.ts +6 -5
  122. package/dist/mwl/hooks.d.ts.map +1 -1
  123. package/dist/mwl/hooks.js.map +1 -1
  124. package/dist/mwl/index.d.ts +8 -2
  125. package/dist/mwl/index.d.ts.map +1 -1
  126. package/dist/mwl/index.js +4 -1
  127. package/dist/mwl/index.js.map +1 -1
  128. package/dist/mwl/runtime.d.ts +140 -7
  129. package/dist/mwl/runtime.d.ts.map +1 -1
  130. package/dist/mwl/runtime.js +427 -33
  131. package/dist/mwl/runtime.js.map +1 -1
  132. package/dist/mwl/schema.d.ts.map +1 -1
  133. package/dist/mwl/schema.js +97 -18
  134. package/dist/mwl/schema.js.map +1 -1
  135. package/dist/roguelike/MultiTurnBeam.d.ts +50 -12
  136. package/dist/roguelike/MultiTurnBeam.d.ts.map +1 -1
  137. package/dist/roguelike/MultiTurnBeam.js +100 -53
  138. package/dist/roguelike/MultiTurnBeam.js.map +1 -1
  139. package/dist/roguelike/Targeting.d.ts +94 -0
  140. package/dist/roguelike/Targeting.d.ts.map +1 -1
  141. package/dist/roguelike/Targeting.js +123 -0
  142. package/dist/roguelike/Targeting.js.map +1 -1
  143. package/dist/roguelike/index.d.ts +3 -1
  144. package/dist/roguelike/index.d.ts.map +1 -1
  145. package/dist/roguelike/index.js +1 -0
  146. package/dist/roguelike/index.js.map +1 -1
  147. package/dist/simulation/CampaignSave.d.ts +68 -0
  148. package/dist/simulation/CampaignSave.d.ts.map +1 -0
  149. package/dist/simulation/CampaignSave.js +54 -0
  150. package/dist/simulation/CampaignSave.js.map +1 -0
  151. package/dist/simulation/EventPresentation.d.ts +111 -0
  152. package/dist/simulation/EventPresentation.d.ts.map +1 -0
  153. package/dist/simulation/EventPresentation.js +120 -0
  154. package/dist/simulation/EventPresentation.js.map +1 -0
  155. package/dist/simulation/index.d.ts +4 -0
  156. package/dist/simulation/index.d.ts.map +1 -1
  157. package/dist/simulation/index.js +2 -0
  158. package/dist/simulation/index.js.map +1 -1
  159. package/dist/two-d/pixi-interop.d.ts +18 -6
  160. package/dist/two-d/pixi-interop.d.ts.map +1 -1
  161. package/dist/two-d/pixi-interop.js +18 -6
  162. package/dist/two-d/pixi-interop.js.map +1 -1
  163. package/dist/two-d/render/AnimatedSprite.d.ts +74 -7
  164. package/dist/two-d/render/AnimatedSprite.d.ts.map +1 -1
  165. package/dist/two-d/render/AnimatedSprite.js +88 -26
  166. package/dist/two-d/render/AnimatedSprite.js.map +1 -1
  167. package/dist/two-d/render/Camera.d.ts +64 -4
  168. package/dist/two-d/render/Camera.d.ts.map +1 -1
  169. package/dist/two-d/render/Camera.js +132 -11
  170. package/dist/two-d/render/Camera.js.map +1 -1
  171. package/dist/two-d/render/Halo.d.ts +58 -0
  172. package/dist/two-d/render/Halo.d.ts.map +1 -0
  173. package/dist/two-d/render/Halo.js +48 -0
  174. package/dist/two-d/render/Halo.js.map +1 -0
  175. package/dist/two-d/render/ImageModifiers.d.ts +174 -0
  176. package/dist/two-d/render/ImageModifiers.d.ts.map +1 -1
  177. package/dist/two-d/render/ImageModifiers.js +438 -1
  178. package/dist/two-d/render/ImageModifiers.js.map +1 -1
  179. package/dist/two-d/render/LightningArc.d.ts +57 -0
  180. package/dist/two-d/render/LightningArc.d.ts.map +1 -0
  181. package/dist/two-d/render/LightningArc.js +91 -0
  182. package/dist/two-d/render/LightningArc.js.map +1 -0
  183. package/dist/two-d/render/PaletteRemap.d.ts +135 -0
  184. package/dist/two-d/render/PaletteRemap.d.ts.map +1 -0
  185. package/dist/two-d/render/PaletteRemap.js +181 -0
  186. package/dist/two-d/render/PaletteRemap.js.map +1 -0
  187. package/dist/two-d/render/Particles.d.ts +26 -0
  188. package/dist/two-d/render/Particles.d.ts.map +1 -1
  189. package/dist/two-d/render/Particles.js +23 -2
  190. package/dist/two-d/render/Particles.js.map +1 -1
  191. package/dist/two-d/render/SpriteAttachment.d.ts +55 -0
  192. package/dist/two-d/render/SpriteAttachment.d.ts.map +1 -0
  193. package/dist/two-d/render/SpriteAttachment.js +60 -0
  194. package/dist/two-d/render/SpriteAttachment.js.map +1 -0
  195. package/dist/two-d/render/TerrainGraphics.d.ts +142 -0
  196. package/dist/two-d/render/TerrainGraphics.d.ts.map +1 -0
  197. package/dist/two-d/render/TerrainGraphics.js +161 -0
  198. package/dist/two-d/render/TerrainGraphics.js.map +1 -0
  199. package/dist/two-d/render/index.d.ts +13 -3
  200. package/dist/two-d/render/index.d.ts.map +1 -1
  201. package/dist/two-d/render/index.js +6 -1
  202. package/dist/two-d/render/index.js.map +1 -1
  203. package/dist/two-d/stage/StoryScreen.d.ts +110 -0
  204. package/dist/two-d/stage/StoryScreen.d.ts.map +1 -0
  205. package/dist/two-d/stage/StoryScreen.js +178 -0
  206. package/dist/two-d/stage/StoryScreen.js.map +1 -0
  207. package/dist/two-d/stage/index.d.ts +2 -0
  208. package/dist/two-d/stage/index.d.ts.map +1 -1
  209. package/dist/two-d/stage/index.js +1 -0
  210. package/dist/two-d/stage/index.js.map +1 -1
  211. package/dist/two-d/ui/Checkbox.d.ts +44 -0
  212. package/dist/two-d/ui/Checkbox.d.ts.map +1 -0
  213. package/dist/two-d/ui/Checkbox.js +89 -0
  214. package/dist/two-d/ui/Checkbox.js.map +1 -0
  215. package/dist/two-d/ui/DataTable.d.ts +79 -0
  216. package/dist/two-d/ui/DataTable.d.ts.map +1 -0
  217. package/dist/two-d/ui/DataTable.js +164 -0
  218. package/dist/two-d/ui/DataTable.js.map +1 -0
  219. package/dist/two-d/ui/Dropdown.d.ts +72 -0
  220. package/dist/two-d/ui/Dropdown.d.ts.map +1 -0
  221. package/dist/two-d/ui/Dropdown.js +126 -0
  222. package/dist/two-d/ui/Dropdown.js.map +1 -0
  223. package/dist/two-d/ui/FloatingText.d.ts +43 -4
  224. package/dist/two-d/ui/FloatingText.d.ts.map +1 -1
  225. package/dist/two-d/ui/FloatingText.js +52 -5
  226. package/dist/two-d/ui/FloatingText.js.map +1 -1
  227. package/dist/two-d/ui/FloatingTextStack.d.ts +86 -13
  228. package/dist/two-d/ui/FloatingTextStack.d.ts.map +1 -1
  229. package/dist/two-d/ui/FloatingTextStack.js +89 -18
  230. package/dist/two-d/ui/FloatingTextStack.js.map +1 -1
  231. package/dist/two-d/ui/Layout.d.ts +105 -0
  232. package/dist/two-d/ui/Layout.d.ts.map +1 -0
  233. package/dist/two-d/ui/Layout.js +174 -0
  234. package/dist/two-d/ui/Layout.js.map +1 -0
  235. package/dist/two-d/ui/ScrollBox.d.ts +67 -0
  236. package/dist/two-d/ui/ScrollBox.d.ts.map +1 -0
  237. package/dist/two-d/ui/ScrollBox.js +127 -0
  238. package/dist/two-d/ui/ScrollBox.js.map +1 -0
  239. package/dist/two-d/ui/Skins.d.ts +59 -0
  240. package/dist/two-d/ui/Skins.d.ts.map +1 -0
  241. package/dist/two-d/ui/Skins.js +77 -0
  242. package/dist/two-d/ui/Skins.js.map +1 -0
  243. package/dist/two-d/ui/Slider.d.ts +91 -0
  244. package/dist/two-d/ui/Slider.d.ts.map +1 -0
  245. package/dist/two-d/ui/Slider.js +170 -0
  246. package/dist/two-d/ui/Slider.js.map +1 -0
  247. package/dist/two-d/ui/Spinner.d.ts +67 -0
  248. package/dist/two-d/ui/Spinner.d.ts.map +1 -0
  249. package/dist/two-d/ui/Spinner.js +137 -0
  250. package/dist/two-d/ui/Spinner.js.map +1 -0
  251. package/dist/two-d/ui/TabbedList.d.ts +118 -0
  252. package/dist/two-d/ui/TabbedList.d.ts.map +1 -0
  253. package/dist/two-d/ui/TabbedList.js +221 -0
  254. package/dist/two-d/ui/TabbedList.js.map +1 -0
  255. package/dist/two-d/ui/TextModel.d.ts +65 -0
  256. package/dist/two-d/ui/TextModel.d.ts.map +1 -0
  257. package/dist/two-d/ui/TextModel.js +126 -0
  258. package/dist/two-d/ui/TextModel.js.map +1 -0
  259. package/dist/two-d/ui/TreeView.d.ts +68 -0
  260. package/dist/two-d/ui/TreeView.d.ts.map +1 -0
  261. package/dist/two-d/ui/TreeView.js +133 -0
  262. package/dist/two-d/ui/TreeView.js.map +1 -0
  263. package/dist/two-d/ui/Window.d.ts +13 -0
  264. package/dist/two-d/ui/Window.d.ts.map +1 -1
  265. package/dist/two-d/ui/Window.js +23 -0
  266. package/dist/two-d/ui/Window.js.map +1 -1
  267. package/dist/two-d/ui/WindowStack.d.ts.map +1 -1
  268. package/dist/two-d/ui/WindowStack.js +2 -0
  269. package/dist/two-d/ui/WindowStack.js.map +1 -1
  270. package/dist/two-d/ui/index.d.ts +27 -3
  271. package/dist/two-d/ui/index.d.ts.map +1 -1
  272. package/dist/two-d/ui/index.js +14 -2
  273. package/dist/two-d/ui/index.js.map +1 -1
  274. package/dist/two-d/ui/markup.d.ts +127 -0
  275. package/dist/two-d/ui/markup.d.ts.map +1 -0
  276. package/dist/two-d/ui/markup.js +322 -0
  277. package/dist/two-d/ui/markup.js.map +1 -0
  278. package/dist/version.d.ts +1 -1
  279. package/dist/version.js +1 -1
  280. package/dist/world/SideTurns.d.ts +115 -0
  281. package/dist/world/SideTurns.d.ts.map +1 -0
  282. package/dist/world/SideTurns.js +138 -0
  283. package/dist/world/SideTurns.js.map +1 -0
  284. package/dist/world/index.d.ts +2 -0
  285. package/dist/world/index.d.ts.map +1 -1
  286. package/dist/world/index.js +1 -0
  287. package/dist/world/index.js.map +1 -1
  288. package/package.json +8 -3
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/actors/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/actors/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,232 @@
1
+ /** A single aspect's value: the shapes a game authors in content without inventing a type. */
2
+ export type AspectValue = number | string | boolean | readonly string[];
3
+ export interface AspectValues {
4
+ readonly [name: string]: AspectValue | undefined;
5
+ }
6
+ /**
7
+ * The named tuning knobs of a heuristic AI - Wesnoth's "aspects" - read by whatever stage is
8
+ * scoring candidates. `mwg` ships no values, because the numbers are game content: a side sets
9
+ * `aggression`, `caution`, `village_value`, `keep_away` and the rest to whatever its own balance
10
+ * wants, and a difficulty level overrides a few of them.
11
+ *
12
+ * Typed readers give a stage a usable number without every caller casting: a missing aspect reads
13
+ * as the fallback (`1` for a weight, so an unset aspect is neutral rather than zeroing a score).
14
+ *
15
+ * @example
16
+ * ```ts
17
+ * import { Aspects } from '@datamoc/mw_games/ai';
18
+ *
19
+ * const aspects = new Aspects({ aggression: 2, keep_away: 3 });
20
+ * console.log(aspects.number('aggression')); // 2
21
+ * console.log(aspects.number('caution')); // 0 - the fallback
22
+ * ```
23
+ */
24
+ export declare class Aspects {
25
+ private values;
26
+ constructor(defaults?: AspectValues);
27
+ has(name: string): boolean;
28
+ get(name: string): AspectValue | undefined;
29
+ set(name: string, value: AspectValue): void;
30
+ /** a numeric aspect, or `fallback` when it is missing or not a number */
31
+ number(name: string, fallback?: number): number;
32
+ flag(name: string, fallback?: boolean): boolean;
33
+ /** a list aspect; a bare string reads as a one-entry list, anything else as empty */
34
+ list(name: string): readonly string[];
35
+ names(): string[];
36
+ /** a new store with `overrides` laid over this one, leaving this one untouched */
37
+ with(overrides: AspectValues): Aspects;
38
+ toJSON(): Record<string, AspectValue>;
39
+ static fromJSON(values: Readonly<Record<string, AspectValue>>): Aspects;
40
+ }
41
+ export interface DifficultyLevel {
42
+ id: string;
43
+ name?: string;
44
+ /** the aspects this level changes from the game's base set */
45
+ aspects?: AspectValues;
46
+ }
47
+ /**
48
+ * Named difficulty levels, each a set of aspect overrides - Wesnoth's native difficulty ladder,
49
+ * which is really "the same AI with different numbers". A level is applied on top of a base aspect
50
+ * set, so a game writes its normal AI once and a level only lists what it changes.
51
+ *
52
+ * @example
53
+ * ```ts
54
+ * import { Aspects, Difficulty } from '@datamoc/mw_games/ai';
55
+ *
56
+ * const difficulty = new Difficulty(
57
+ * [{ id: 'hard', aspects: { aggression: 2, keep_away: 3 } }],
58
+ * { aggression: 1 },
59
+ * );
60
+ * console.log(difficulty.aspectsFor('hard').number('aggression')); // 2
61
+ * ```
62
+ */
63
+ export declare class Difficulty {
64
+ private readonly levels;
65
+ private readonly base;
66
+ constructor(levels?: readonly DifficultyLevel[], base?: AspectValues);
67
+ get ids(): string[];
68
+ get(id: string): DifficultyLevel | undefined;
69
+ /** the base aspects with a level's overrides applied; throws for an unknown level */
70
+ aspectsFor(id: string): Aspects;
71
+ }
72
+ export type GoalKind = 'attack' | 'defend' | 'retreat' | 'capture' | 'scout';
73
+ export interface Goal {
74
+ unit: string;
75
+ kind: GoalKind;
76
+ /** what the goal is about: the enemy to attack, the village to hold */
77
+ target?: string;
78
+ /** a tiebreaker between goals, read by a stage's own `weigh`; defaults to 1 */
79
+ priority?: number;
80
+ }
81
+ /**
82
+ * Per-unit goals - "hold this village", "attack that leader" - kept as a small registry for a
83
+ * stage's `weigh` to read. `mwg` does not decide what a goal is worth, the same way it ships no
84
+ * damage formula: the registry answers *what* a unit has been told to do, and a game's weigh
85
+ * decides how much that matters.
86
+ *
87
+ * @example
88
+ * ```ts
89
+ * import { Goals } from '@datamoc/mw_games/ai';
90
+ *
91
+ * const goals = new Goals();
92
+ * goals.set({ unit: 'hero', kind: 'attack', target: 'rat', priority: 3 });
93
+ * console.log(goals.get('hero')?.kind); // 'attack'
94
+ * ```
95
+ */
96
+ export declare class Goals {
97
+ private readonly byUnit;
98
+ set(goal: Goal): void;
99
+ clear(unit: string): void;
100
+ get(unit: string): Goal | undefined;
101
+ all(): readonly Goal[];
102
+ get isEmpty(): boolean;
103
+ }
104
+ /**
105
+ * The order a side recruits in - Wesnoth's `recruitment_pattern`, e.g. `scout, fighter, archer` -
106
+ * cycled by turn. A side with nothing left to recruit falls back to its `fallback`, and a side
107
+ * with neither recruits nothing.
108
+ *
109
+ * @example
110
+ * ```ts
111
+ * import { RecruitmentPattern } from '@datamoc/mw_games/ai';
112
+ *
113
+ * const pattern = new RecruitmentPattern(['scout', 'fighter'], 'fighter');
114
+ * console.log(pattern.at(0), pattern.at(1), pattern.at(2)); // scout fighter scout
115
+ * ```
116
+ */
117
+ export declare class RecruitmentPattern {
118
+ private readonly order;
119
+ private readonly fallback;
120
+ constructor(order: readonly string[], fallback?: string | null);
121
+ get length(): number;
122
+ /** the unit type at a position in the cycle, or the fallback when the pattern is empty */
123
+ at(index: number): string | null;
124
+ /** the entry after `after` in the cycle, or the first when `after` is not in it */
125
+ next(after: string | null): string | null;
126
+ }
127
+ export interface HeuristicCandidate<A = unknown> {
128
+ /** an id for tracing which candidate won */
129
+ id: string;
130
+ action: A;
131
+ /** the unit the action belongs to, matched against `Goals` by a stage's own `weigh` */
132
+ unit?: string;
133
+ /**
134
+ * Aspect-named weights this candidate contributes, e.g. `{ aggression: 3, village_value: 2 }`.
135
+ * `distance` is special: with a `keep_away` aspect it is penalised by `keepAwayScore`.
136
+ */
137
+ factors?: Readonly<Record<string, number>>;
138
+ }
139
+ export interface HeuristicContext {
140
+ aspects: Aspects;
141
+ goals?: Goals;
142
+ turn?: number;
143
+ }
144
+ export interface HeuristicStage<A = unknown> {
145
+ id: string;
146
+ /** whether this stage runs at all; it always does when omitted */
147
+ when?: (context: HeuristicContext) => boolean;
148
+ /** score one candidate; higher wins. Defaults to `defaultWeigh` */
149
+ weigh?: (candidate: HeuristicCandidate<A>, context: HeuristicContext) => number;
150
+ }
151
+ export interface HeuristicDecision<A = unknown> {
152
+ candidate: HeuristicCandidate<A>;
153
+ stage: string;
154
+ score: number;
155
+ }
156
+ /**
157
+ * The candidate-action pipeline at the heart of a Wesnoth-style AI: stages run in order, the first
158
+ * one whose `when` passes scores every candidate with its `weigh`, and the highest score wins (the
159
+ * earlier candidate on a tie, so a decision is stable across equal scores).
160
+ *
161
+ * The default `weigh` is the aspect-weighted sum of each candidate's `factors`, which is what makes
162
+ * the aspects worth having: a game sets `aggression: 2` once and every candidate naming
163
+ * `aggression` is worth twice as much. `keep_away` is honoured through a candidate's `distance`
164
+ * factor. A stage that needs more - goal priorities, terrain, this turn's state - brings its own
165
+ * `weigh`, and `mwg` stays out of the rules.
166
+ *
167
+ * @example
168
+ * ```ts
169
+ * import { Aspects, HeuristicAI } from '@datamoc/mw_games/ai';
170
+ *
171
+ * const ai = new HeuristicAI<{ kind: string }>({ stages: [{ id: 'best' }] });
172
+ * const decision = ai.decide(
173
+ * [
174
+ * { id: 'wait', action: { kind: 'wait' }, factors: { caution: 2 } },
175
+ * { id: 'charge', action: { kind: 'attack' }, factors: { aggression: 3 } },
176
+ * ],
177
+ * { aspects: new Aspects({ aggression: 1, caution: 1 }) },
178
+ * );
179
+ * console.log(decision?.candidate.id); // 'charge'
180
+ * ```
181
+ */
182
+ export declare class HeuristicAI<A = unknown> {
183
+ private readonly stages;
184
+ constructor(options: {
185
+ stages: readonly HeuristicStage<A>[];
186
+ });
187
+ /** the first stage's best candidate, or `null` when nothing applies or no candidate is given */
188
+ decide(candidates: readonly HeuristicCandidate<A>[], context: HeuristicContext): HeuristicDecision<A> | null;
189
+ }
190
+ /**
191
+ * The default stage weight: each factor times the aspect of the same name (an unset aspect weighs
192
+ * 1, so a factor on its own is not erased), minus a `keepAwayScore` penalty for a candidate's
193
+ * `distance`.
194
+ *
195
+ * @example
196
+ * ```ts
197
+ * import { Aspects, defaultWeigh } from '@datamoc/mw_games/ai';
198
+ *
199
+ * const score = defaultWeigh(
200
+ * { id: 'charge', action: {}, factors: { aggression: 3 } },
201
+ * { aspects: new Aspects({ aggression: 2 }) },
202
+ * );
203
+ * console.log(score); // 6
204
+ * ```
205
+ */
206
+ export declare function defaultWeigh<A>(candidate: HeuristicCandidate<A>, context: HeuristicContext): number;
207
+ /**
208
+ * How much a candidate at `distance` loses for being inside a `keepAway` radius: 0 when there is no
209
+ * radius or the candidate is outside it, otherwise the shortfall as a negative score.
210
+ *
211
+ * @example
212
+ * ```ts
213
+ * import { keepAwayScore } from '@datamoc/mw_games/ai';
214
+ *
215
+ * console.log(keepAwayScore(1, 3)); // -2, two tiles inside the radius
216
+ * console.log(keepAwayScore(5, 3)); // 0, outside it
217
+ * ```
218
+ */
219
+ export declare function keepAwayScore(distance: number, keepAway: number): number;
220
+ /**
221
+ * What a stage's own weigh can add for a goal: its `priority`, or 1 when it has none.
222
+ *
223
+ * @example
224
+ * ```ts
225
+ * import { goalScore } from '@datamoc/mw_games/ai';
226
+ *
227
+ * console.log(goalScore({ unit: 'u1', kind: 'attack', priority: 3 })); // 3
228
+ * console.log(goalScore(undefined)); // 0, no goal at all
229
+ * ```
230
+ */
231
+ export declare function goalScore(goal: Goal | undefined): number;
232
+ //# sourceMappingURL=Heuristics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Heuristics.d.ts","sourceRoot":"","sources":["../../src/ai/Heuristics.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,298 @@
1
+ /**
2
+ * The named tuning knobs of a heuristic AI - Wesnoth's "aspects" - read by whatever stage is
3
+ * scoring candidates. `mwg` ships no values, because the numbers are game content: a side sets
4
+ * `aggression`, `caution`, `village_value`, `keep_away` and the rest to whatever its own balance
5
+ * wants, and a difficulty level overrides a few of them.
6
+ *
7
+ * Typed readers give a stage a usable number without every caller casting: a missing aspect reads
8
+ * as the fallback (`1` for a weight, so an unset aspect is neutral rather than zeroing a score).
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * import { Aspects } from '@datamoc/mw_games/ai';
13
+ *
14
+ * const aspects = new Aspects({ aggression: 2, keep_away: 3 });
15
+ * console.log(aspects.number('aggression')); // 2
16
+ * console.log(aspects.number('caution')); // 0 - the fallback
17
+ * ```
18
+ */
19
+ export class Aspects {
20
+ constructor(defaults = {}) {
21
+ this.values = {};
22
+ for (const [name, value] of Object.entries(defaults)) {
23
+ if (value !== undefined)
24
+ this.values[name] = value;
25
+ }
26
+ }
27
+ has(name) {
28
+ return this.values[name] !== undefined;
29
+ }
30
+ get(name) {
31
+ return this.values[name];
32
+ }
33
+ set(name, value) {
34
+ this.values[name] = value;
35
+ }
36
+ /** a numeric aspect, or `fallback` when it is missing or not a number */
37
+ number(name, fallback = 0) {
38
+ const value = this.values[name];
39
+ if (typeof value === 'number' && Number.isFinite(value))
40
+ return value;
41
+ if (typeof value === 'boolean')
42
+ return value ? 1 : 0;
43
+ return fallback;
44
+ }
45
+ flag(name, fallback = false) {
46
+ const value = this.values[name];
47
+ return typeof value === 'boolean' ? value : fallback;
48
+ }
49
+ /** a list aspect; a bare string reads as a one-entry list, anything else as empty */
50
+ list(name) {
51
+ const value = this.values[name];
52
+ if (Array.isArray(value))
53
+ return value;
54
+ if (typeof value === 'string')
55
+ return [value];
56
+ return [];
57
+ }
58
+ names() {
59
+ return Object.keys(this.values);
60
+ }
61
+ /** a new store with `overrides` laid over this one, leaving this one untouched */
62
+ with(overrides) {
63
+ const next = new Aspects(this.values);
64
+ for (const [name, value] of Object.entries(overrides)) {
65
+ if (value !== undefined)
66
+ next.set(name, value);
67
+ }
68
+ return next;
69
+ }
70
+ toJSON() {
71
+ return { ...this.values };
72
+ }
73
+ static fromJSON(values) {
74
+ return new Aspects(values);
75
+ }
76
+ }
77
+ /**
78
+ * Named difficulty levels, each a set of aspect overrides - Wesnoth's native difficulty ladder,
79
+ * which is really "the same AI with different numbers". A level is applied on top of a base aspect
80
+ * set, so a game writes its normal AI once and a level only lists what it changes.
81
+ *
82
+ * @example
83
+ * ```ts
84
+ * import { Aspects, Difficulty } from '@datamoc/mw_games/ai';
85
+ *
86
+ * const difficulty = new Difficulty(
87
+ * [{ id: 'hard', aspects: { aggression: 2, keep_away: 3 } }],
88
+ * { aggression: 1 },
89
+ * );
90
+ * console.log(difficulty.aspectsFor('hard').number('aggression')); // 2
91
+ * ```
92
+ */
93
+ export class Difficulty {
94
+ constructor(levels = [], base = {}) {
95
+ this.levels = new Map();
96
+ this.base = new Aspects(base);
97
+ for (const level of levels) {
98
+ if (this.levels.has(level.id))
99
+ throw new Error(`duplicate difficulty level: ${level.id}`);
100
+ this.levels.set(level.id, level);
101
+ }
102
+ }
103
+ get ids() {
104
+ return [...this.levels.keys()];
105
+ }
106
+ get(id) {
107
+ return this.levels.get(id);
108
+ }
109
+ /** the base aspects with a level's overrides applied; throws for an unknown level */
110
+ aspectsFor(id) {
111
+ const level = this.levels.get(id);
112
+ if (!level)
113
+ throw new Error(`unknown difficulty level: ${id}`);
114
+ return this.base.with(level.aspects ?? {});
115
+ }
116
+ }
117
+ /**
118
+ * Per-unit goals - "hold this village", "attack that leader" - kept as a small registry for a
119
+ * stage's `weigh` to read. `mwg` does not decide what a goal is worth, the same way it ships no
120
+ * damage formula: the registry answers *what* a unit has been told to do, and a game's weigh
121
+ * decides how much that matters.
122
+ *
123
+ * @example
124
+ * ```ts
125
+ * import { Goals } from '@datamoc/mw_games/ai';
126
+ *
127
+ * const goals = new Goals();
128
+ * goals.set({ unit: 'hero', kind: 'attack', target: 'rat', priority: 3 });
129
+ * console.log(goals.get('hero')?.kind); // 'attack'
130
+ * ```
131
+ */
132
+ export class Goals {
133
+ constructor() {
134
+ this.byUnit = new Map();
135
+ }
136
+ set(goal) {
137
+ this.byUnit.set(goal.unit, { ...goal });
138
+ }
139
+ clear(unit) {
140
+ this.byUnit.delete(unit);
141
+ }
142
+ get(unit) {
143
+ return this.byUnit.get(unit);
144
+ }
145
+ all() {
146
+ return [...this.byUnit.values()];
147
+ }
148
+ get isEmpty() {
149
+ return this.byUnit.size === 0;
150
+ }
151
+ }
152
+ /**
153
+ * The order a side recruits in - Wesnoth's `recruitment_pattern`, e.g. `scout, fighter, archer` -
154
+ * cycled by turn. A side with nothing left to recruit falls back to its `fallback`, and a side
155
+ * with neither recruits nothing.
156
+ *
157
+ * @example
158
+ * ```ts
159
+ * import { RecruitmentPattern } from '@datamoc/mw_games/ai';
160
+ *
161
+ * const pattern = new RecruitmentPattern(['scout', 'fighter'], 'fighter');
162
+ * console.log(pattern.at(0), pattern.at(1), pattern.at(2)); // scout fighter scout
163
+ * ```
164
+ */
165
+ export class RecruitmentPattern {
166
+ constructor(order, fallback = null) {
167
+ this.order = order;
168
+ this.fallback = fallback;
169
+ }
170
+ get length() {
171
+ return this.order.length;
172
+ }
173
+ /** the unit type at a position in the cycle, or the fallback when the pattern is empty */
174
+ at(index) {
175
+ if (this.order.length === 0)
176
+ return this.fallback;
177
+ const wrapped = ((index % this.order.length) + this.order.length) % this.order.length;
178
+ return this.order[wrapped];
179
+ }
180
+ /** the entry after `after` in the cycle, or the first when `after` is not in it */
181
+ next(after) {
182
+ if (this.order.length === 0)
183
+ return this.fallback;
184
+ if (after === null)
185
+ return this.order[0];
186
+ const index = this.order.indexOf(after);
187
+ return this.at(index < 0 ? 0 : index + 1);
188
+ }
189
+ }
190
+ /**
191
+ * The candidate-action pipeline at the heart of a Wesnoth-style AI: stages run in order, the first
192
+ * one whose `when` passes scores every candidate with its `weigh`, and the highest score wins (the
193
+ * earlier candidate on a tie, so a decision is stable across equal scores).
194
+ *
195
+ * The default `weigh` is the aspect-weighted sum of each candidate's `factors`, which is what makes
196
+ * the aspects worth having: a game sets `aggression: 2` once and every candidate naming
197
+ * `aggression` is worth twice as much. `keep_away` is honoured through a candidate's `distance`
198
+ * factor. A stage that needs more - goal priorities, terrain, this turn's state - brings its own
199
+ * `weigh`, and `mwg` stays out of the rules.
200
+ *
201
+ * @example
202
+ * ```ts
203
+ * import { Aspects, HeuristicAI } from '@datamoc/mw_games/ai';
204
+ *
205
+ * const ai = new HeuristicAI<{ kind: string }>({ stages: [{ id: 'best' }] });
206
+ * const decision = ai.decide(
207
+ * [
208
+ * { id: 'wait', action: { kind: 'wait' }, factors: { caution: 2 } },
209
+ * { id: 'charge', action: { kind: 'attack' }, factors: { aggression: 3 } },
210
+ * ],
211
+ * { aspects: new Aspects({ aggression: 1, caution: 1 }) },
212
+ * );
213
+ * console.log(decision?.candidate.id); // 'charge'
214
+ * ```
215
+ */
216
+ export class HeuristicAI {
217
+ constructor(options) {
218
+ this.stages = options.stages;
219
+ }
220
+ /** the first stage's best candidate, or `null` when nothing applies or no candidate is given */
221
+ decide(candidates, context) {
222
+ if (candidates.length === 0)
223
+ return null;
224
+ for (const stage of this.stages) {
225
+ if (stage.when && !stage.when(context))
226
+ continue;
227
+ const weigh = stage.weigh ?? defaultWeigh;
228
+ let best = null;
229
+ for (const candidate of candidates) {
230
+ const score = weigh(candidate, context);
231
+ if (!best || score > best.score)
232
+ best = { candidate, stage: stage.id, score };
233
+ }
234
+ return best;
235
+ }
236
+ return null;
237
+ }
238
+ }
239
+ /**
240
+ * The default stage weight: each factor times the aspect of the same name (an unset aspect weighs
241
+ * 1, so a factor on its own is not erased), minus a `keepAwayScore` penalty for a candidate's
242
+ * `distance`.
243
+ *
244
+ * @example
245
+ * ```ts
246
+ * import { Aspects, defaultWeigh } from '@datamoc/mw_games/ai';
247
+ *
248
+ * const score = defaultWeigh(
249
+ * { id: 'charge', action: {}, factors: { aggression: 3 } },
250
+ * { aspects: new Aspects({ aggression: 2 }) },
251
+ * );
252
+ * console.log(score); // 6
253
+ * ```
254
+ */
255
+ export function defaultWeigh(candidate, context) {
256
+ let score = 0;
257
+ for (const [name, weight] of Object.entries(candidate.factors ?? {})) {
258
+ if (name === 'distance')
259
+ continue;
260
+ score += weight * context.aspects.number(name, 1);
261
+ }
262
+ const distance = candidate.factors?.distance;
263
+ if (distance !== undefined)
264
+ score += keepAwayScore(distance, context.aspects.number('keep_away', 0));
265
+ return score;
266
+ }
267
+ /**
268
+ * How much a candidate at `distance` loses for being inside a `keepAway` radius: 0 when there is no
269
+ * radius or the candidate is outside it, otherwise the shortfall as a negative score.
270
+ *
271
+ * @example
272
+ * ```ts
273
+ * import { keepAwayScore } from '@datamoc/mw_games/ai';
274
+ *
275
+ * console.log(keepAwayScore(1, 3)); // -2, two tiles inside the radius
276
+ * console.log(keepAwayScore(5, 3)); // 0, outside it
277
+ * ```
278
+ */
279
+ export function keepAwayScore(distance, keepAway) {
280
+ if (!(keepAway > 0) || distance >= keepAway)
281
+ return 0;
282
+ return -(keepAway - distance);
283
+ }
284
+ /**
285
+ * What a stage's own weigh can add for a goal: its `priority`, or 1 when it has none.
286
+ *
287
+ * @example
288
+ * ```ts
289
+ * import { goalScore } from '@datamoc/mw_games/ai';
290
+ *
291
+ * console.log(goalScore({ unit: 'u1', kind: 'attack', priority: 3 })); // 3
292
+ * console.log(goalScore(undefined)); // 0, no goal at all
293
+ * ```
294
+ */
295
+ export function goalScore(goal) {
296
+ return goal ? Math.max(0, goal.priority ?? 1) : 0;
297
+ }
298
+ //# sourceMappingURL=Heuristics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Heuristics.js","sourceRoot":"","sources":["../../src/ai/Heuristics.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,10 @@
1
1
  import type { AlphaBetaGame, AlphaBetaOptions, AlphaBetaResult } from './search.ts';
2
2
  export { alphaBetaSearch } from './search.ts';
3
3
  export type { AlphaBetaGame, AlphaBetaOptions, AlphaBetaResult, LuaAlphaBetaFunctions, LuaSearchValueAdapter, } from './search.ts';
4
+ export { personalScoreView, scoreWith, sideScoreView } from './score.ts';
5
+ export { Aspects, Difficulty, Goals, HeuristicAI, RecruitmentPattern, defaultWeigh, goalScore, keepAwayScore, } from './Heuristics.ts';
6
+ export type { AspectValue, AspectValues, DifficultyLevel, Goal, GoalKind, HeuristicCandidate, HeuristicContext, HeuristicDecision, HeuristicStage, } from './Heuristics.ts';
7
+ export type { ScorePersonality, ScoreSubject, ScoreView } from './score.ts';
4
8
  /** JSON-shaped values are the only values that cross the AI boundary. */
5
9
  export type AIValue = null | boolean | number | string | AIValue[] | {
6
10
  readonly [key: string]: AIValue;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ai/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ai/index.ts"],"names":[],"mappings":"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"}
package/dist/ai/index.js CHANGED
@@ -1,5 +1,7 @@
1
1
  import { alphaBetaSearch } from './search.js';
2
2
  export { alphaBetaSearch } from './search.js';
3
+ export { personalScoreView, scoreWith, sideScoreView } from './score.js';
4
+ export { Aspects, Difficulty, Goals, HeuristicAI, RecruitmentPattern, defaultWeigh, goalScore, keepAwayScore, } from './Heuristics.js';
3
5
  const DEFAULT_MAX_STEPS = 10_000;
4
6
  const DEFAULT_MAX_MILLISECONDS = 16;
5
7
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ai/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ai/index.ts"],"names":[],"mappings":"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"}