@v12-engine/engine 0.1.0 → 0.4.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 (951) hide show
  1. package/dist/abilities/amounts.d.ts +28 -0
  2. package/dist/abilities/amounts.js +74 -0
  3. package/dist/abilities/amounts.js.map +1 -0
  4. package/dist/abilities/buffs.d.ts +106 -6
  5. package/dist/abilities/buffs.js +443 -0
  6. package/dist/abilities/buffs.js.map +1 -0
  7. package/dist/abilities/castTold.d.ts +2 -0
  8. package/dist/abilities/castTold.js +66 -0
  9. package/dist/abilities/castTold.js.map +1 -0
  10. package/dist/abilities/chance.d.ts +38 -0
  11. package/dist/abilities/chance.js +77 -0
  12. package/dist/abilities/chance.js.map +1 -0
  13. package/dist/abilities/charges.d.ts +18 -0
  14. package/dist/abilities/charges.js +101 -0
  15. package/dist/abilities/charges.js.map +1 -0
  16. package/dist/abilities/control.d.ts +28 -0
  17. package/dist/abilities/control.js +113 -0
  18. package/dist/abilities/control.js.map +1 -0
  19. package/dist/abilities/dispel.js +51 -0
  20. package/dist/abilities/dispel.js.map +1 -0
  21. package/dist/abilities/effectFields.d.ts +1 -1
  22. package/dist/abilities/effectFields.js +676 -0
  23. package/dist/abilities/effectFields.js.map +1 -0
  24. package/dist/abilities/effectIndex.d.ts +27 -0
  25. package/dist/abilities/effectIndex.js +64 -0
  26. package/dist/abilities/effectIndex.js.map +1 -0
  27. package/dist/abilities/effects/buff.d.ts +9 -3
  28. package/dist/abilities/effects/buff.js +84 -0
  29. package/dist/abilities/effects/buff.js.map +1 -0
  30. package/dist/abilities/effects/conditions.d.ts +2 -0
  31. package/dist/abilities/effects/conditions.js +41 -0
  32. package/dist/abilities/effects/conditions.js.map +1 -0
  33. package/dist/abilities/effects/core.js +54 -0
  34. package/dist/abilities/effects/core.js.map +1 -0
  35. package/dist/abilities/effects/damage.d.ts +1 -1
  36. package/dist/abilities/effects/damage.js +43 -0
  37. package/dist/abilities/effects/damage.js.map +1 -0
  38. package/dist/abilities/effects/heal.d.ts +2 -2
  39. package/dist/abilities/effects/heal.js +51 -0
  40. package/dist/abilities/effects/heal.js.map +1 -0
  41. package/dist/abilities/effects/missile.d.ts +13 -1
  42. package/dist/abilities/effects/missile.js +104 -0
  43. package/dist/abilities/effects/missile.js.map +1 -0
  44. package/dist/abilities/effects/morph.d.ts +5 -0
  45. package/dist/abilities/effects/morph.js +43 -0
  46. package/dist/abilities/effects/morph.js.map +1 -0
  47. package/dist/abilities/effects/moves.d.ts +16 -4
  48. package/dist/abilities/effects/moves.js +212 -0
  49. package/dist/abilities/effects/moves.js.map +1 -0
  50. package/dist/abilities/effects/passives.d.ts +19 -9
  51. package/dist/abilities/effects/passives.js +131 -0
  52. package/dist/abilities/effects/passives.js.map +1 -0
  53. package/dist/abilities/effects/proxy.d.ts +5 -0
  54. package/dist/abilities/effects/proxy.js +60 -0
  55. package/dist/abilities/effects/proxy.js.map +1 -0
  56. package/dist/abilities/effects/sight.d.ts +2 -2
  57. package/dist/abilities/effects/sight.js +39 -0
  58. package/dist/abilities/effects/sight.js.map +1 -0
  59. package/dist/abilities/effects/spawn.d.ts +5 -2
  60. package/dist/abilities/effects/spawn.js +40 -0
  61. package/dist/abilities/effects/spawn.js.map +1 -0
  62. package/dist/abilities/effects/timed.d.ts +2 -2
  63. package/dist/abilities/effects/timed.js +96 -0
  64. package/dist/abilities/effects/timed.js.map +1 -0
  65. package/dist/abilities/effects/trade.d.ts +1 -1
  66. package/dist/abilities/effects/trade.js +25 -0
  67. package/dist/abilities/effects/trade.js.map +1 -0
  68. package/dist/abilities/effects.d.ts +97 -23
  69. package/dist/abilities/effects.js +860 -0
  70. package/dist/abilities/effects.js.map +1 -0
  71. package/dist/abilities/land.d.ts +38 -4
  72. package/dist/abilities/land.js +189 -0
  73. package/dist/abilities/land.js.map +1 -0
  74. package/dist/abilities/recast.d.ts +45 -0
  75. package/dist/abilities/recast.js +118 -0
  76. package/dist/abilities/recast.js.map +1 -0
  77. package/dist/abilities/scaled.js +40 -0
  78. package/dist/abilities/scaled.js.map +1 -0
  79. package/dist/abilities/screen.d.ts +6 -0
  80. package/dist/abilities/screen.js +83 -0
  81. package/dist/abilities/screen.js.map +1 -0
  82. package/dist/abilities/shapes.d.ts +66 -0
  83. package/dist/abilities/shapes.js +122 -0
  84. package/dist/abilities/shapes.js.map +1 -0
  85. package/dist/abilities/text.d.ts +14 -2
  86. package/dist/abilities/text.js +204 -0
  87. package/dist/abilities/text.js.map +1 -0
  88. package/dist/abilities/triggers.d.ts +98 -0
  89. package/dist/abilities/triggers.js +351 -0
  90. package/dist/abilities/triggers.js.map +1 -0
  91. package/dist/abilityChanges.d.ts +131 -0
  92. package/dist/abilityChanges.js +345 -0
  93. package/dist/abilityChanges.js.map +1 -0
  94. package/dist/ai/area.d.ts +4 -1
  95. package/dist/ai/brain.d.ts +4 -1
  96. package/dist/ai/brain.js +844 -0
  97. package/dist/ai/brain.js.map +1 -0
  98. package/dist/ai/budget.js +74 -0
  99. package/dist/ai/budget.js.map +1 -0
  100. package/dist/ai/checks.d.ts +9 -1
  101. package/dist/ai/checks.js +242 -0
  102. package/dist/ai/checks.js.map +1 -0
  103. package/dist/ai/computer.d.ts +11 -4
  104. package/dist/ai/computer.js +251 -0
  105. package/dist/ai/computer.js.map +1 -0
  106. package/dist/ai/defence.d.ts +4 -0
  107. package/dist/ai/defence.js +430 -0
  108. package/dist/ai/defence.js.map +1 -0
  109. package/dist/ai/define.d.ts +3 -2
  110. package/dist/ai/define.js +31 -0
  111. package/dist/ai/define.js.map +1 -0
  112. package/dist/ai/economy.d.ts +10 -7
  113. package/dist/ai/economy.js +780 -0
  114. package/dist/ai/economy.js.map +1 -0
  115. package/dist/ai/geometry.js +38 -0
  116. package/dist/ai/geometry.js.map +1 -0
  117. package/dist/ai/goals.d.ts +1 -0
  118. package/dist/ai/goals.js +560 -0
  119. package/dist/ai/goals.js.map +1 -0
  120. package/dist/ai/knowledge.d.ts +72 -7
  121. package/dist/ai/knowledge.js +804 -0
  122. package/dist/ai/knowledge.js.map +1 -0
  123. package/dist/ai/lanes.d.ts +10 -2
  124. package/dist/ai/lanes.js +715 -0
  125. package/dist/ai/lanes.js.map +1 -0
  126. package/dist/ai/melee/build.js +264 -0
  127. package/dist/ai/melee/build.js.map +1 -0
  128. package/dist/ai/melee/goals.d.ts +7 -0
  129. package/dist/ai/melee/goals.js +720 -0
  130. package/dist/ai/melee/goals.js.map +1 -0
  131. package/dist/ai/melee/heroes.js +68 -0
  132. package/dist/ai/melee/heroes.js.map +1 -0
  133. package/dist/ai/melee/index.d.ts +1 -1
  134. package/dist/ai/melee/index.js +51 -0
  135. package/dist/ai/melee/index.js.map +1 -0
  136. package/dist/ai/melee/production.js +29 -0
  137. package/dist/ai/melee/production.js.map +1 -0
  138. package/dist/ai/melee/surrender.js +64 -0
  139. package/dist/ai/melee/surrender.js.map +1 -0
  140. package/dist/ai/micro.d.ts +9 -0
  141. package/dist/ai/micro.js +1316 -0
  142. package/dist/ai/micro.js.map +1 -0
  143. package/dist/ai/mission.d.ts +9 -2
  144. package/dist/ai/mission.js +538 -0
  145. package/dist/ai/mission.js.map +1 -0
  146. package/dist/ai/missionRules.d.ts +1 -1
  147. package/dist/ai/missionRules.js +26 -0
  148. package/dist/ai/missionRules.js.map +1 -0
  149. package/dist/ai/module.d.ts +6 -2
  150. package/dist/ai/module.js +37 -0
  151. package/dist/ai/module.js.map +1 -0
  152. package/dist/ai/options.d.ts +3 -3
  153. package/dist/ai/plans/build.d.ts +20 -1
  154. package/dist/ai/plans/build.js +608 -0
  155. package/dist/ai/plans/build.js.map +1 -0
  156. package/dist/ai/plans/placement.d.ts +4 -1
  157. package/dist/ai/plans/placement.js +295 -0
  158. package/dist/ai/plans/placement.js.map +1 -0
  159. package/dist/ai/plans/plans.d.ts +9 -0
  160. package/dist/ai/plans/plans.js +110 -0
  161. package/dist/ai/plans/plans.js.map +1 -0
  162. package/dist/ai/plans/production.d.ts +14 -2
  163. package/dist/ai/plans/production.js +434 -0
  164. package/dist/ai/plans/production.js.map +1 -0
  165. package/dist/ai/plans/purse.d.ts +6 -3
  166. package/dist/ai/plans/purse.js +139 -0
  167. package/dist/ai/plans/purse.js.map +1 -0
  168. package/dist/ai/plans/tech.d.ts +6 -0
  169. package/dist/ai/plans/tech.js +122 -0
  170. package/dist/ai/plans/tech.js.map +1 -0
  171. package/dist/ai/profiles.d.ts +4 -4
  172. package/dist/{profiles-B3NS9jwk.js → ai/profiles.js} +3 -98
  173. package/dist/ai/profiles.js.map +1 -0
  174. package/dist/ai/reach.js +54 -0
  175. package/dist/ai/reach.js.map +1 -0
  176. package/dist/ai/report.d.ts +8 -0
  177. package/dist/ai/report.js +87 -0
  178. package/dist/ai/report.js.map +1 -0
  179. package/dist/ai/roles.d.ts +4 -0
  180. package/dist/ai/roles.js +207 -0
  181. package/dist/ai/roles.js.map +1 -0
  182. package/dist/ai/rules.d.ts +8 -2
  183. package/dist/ai/rules.js +416 -0
  184. package/dist/ai/rules.js.map +1 -0
  185. package/dist/ai/scouting.d.ts +6 -0
  186. package/dist/ai/scouting.js +324 -0
  187. package/dist/ai/scouting.js.map +1 -0
  188. package/dist/ai/settings.js +99 -0
  189. package/dist/ai/settings.js.map +1 -0
  190. package/dist/ai/squads.d.ts +21 -2
  191. package/dist/ai/squads.js +916 -0
  192. package/dist/ai/squads.js.map +1 -0
  193. package/dist/ai/strength.js +320 -0
  194. package/dist/ai/strength.js.map +1 -0
  195. package/dist/ai/task.d.ts +3 -1
  196. package/dist/ai/task.js +17 -0
  197. package/dist/ai/task.js.map +1 -0
  198. package/dist/ai/tasks/attack.js +24 -0
  199. package/dist/ai/tasks/attack.js.map +1 -0
  200. package/dist/ai/tasks/capture.d.ts +3 -3
  201. package/dist/ai/tasks/capture.js +37 -0
  202. package/dist/ai/tasks/capture.js.map +1 -0
  203. package/dist/ai/tasks/creep.js +29 -0
  204. package/dist/ai/tasks/creep.js.map +1 -0
  205. package/dist/ai/tasks/defend.js +61 -0
  206. package/dist/ai/tasks/defend.js.map +1 -0
  207. package/dist/ai/tasks/drop.js +81 -0
  208. package/dist/ai/tasks/drop.js.map +1 -0
  209. package/dist/ai/tasks/escort.js +59 -0
  210. package/dist/ai/tasks/escort.js.map +1 -0
  211. package/dist/ai/tasks/gather.js +48 -0
  212. package/dist/ai/tasks/gather.js.map +1 -0
  213. package/dist/ai/tasks/harass.js +39 -0
  214. package/dist/ai/tasks/harass.js.map +1 -0
  215. package/dist/ai/tasks/hold.js +32 -0
  216. package/dist/ai/tasks/hold.js.map +1 -0
  217. package/dist/ai/tasks/index.js +34 -0
  218. package/dist/ai/tasks/index.js.map +1 -0
  219. package/dist/ai/tasks/move.js +26 -0
  220. package/dist/ai/tasks/move.js.map +1 -0
  221. package/dist/ai/tasks/patrol.js +59 -0
  222. package/dist/ai/tasks/patrol.js.map +1 -0
  223. package/dist/ai/tasks/retreat.js +28 -0
  224. package/dist/ai/tasks/retreat.js.map +1 -0
  225. package/dist/ai/tasks/scout.js +73 -0
  226. package/dist/ai/tasks/scout.js.map +1 -0
  227. package/dist/ai/tasks/shared.d.ts +1 -1
  228. package/dist/ai/tasks/shared.js +137 -0
  229. package/dist/ai/tasks/shared.js.map +1 -0
  230. package/dist/ai/team.d.ts +18 -1
  231. package/dist/ai/team.js +492 -0
  232. package/dist/ai/team.js.map +1 -0
  233. package/dist/ai/threat.d.ts +6 -0
  234. package/dist/ai/threat.js +206 -0
  235. package/dist/ai/threat.js.map +1 -0
  236. package/dist/ai/view.d.ts +21 -7
  237. package/dist/ai/view.js +677 -0
  238. package/dist/ai/view.js.map +1 -0
  239. package/dist/ai/waves.d.ts +6 -0
  240. package/dist/ai/waves.js +410 -0
  241. package/dist/ai/waves.js.map +1 -0
  242. package/dist/ai.js +54 -6239
  243. package/dist/aiTesting.d.ts +6 -3
  244. package/dist/aiTesting.js +229 -0
  245. package/dist/aiTesting.js.map +1 -0
  246. package/dist/areas.d.ts +4 -1
  247. package/dist/areas.js +295 -0
  248. package/dist/areas.js.map +1 -0
  249. package/dist/attacks.d.ts +3 -3
  250. package/dist/attacks.js +127 -0
  251. package/dist/attacks.js.map +1 -0
  252. package/dist/burning.d.ts +267 -0
  253. package/dist/burning.js +795 -0
  254. package/dist/burning.js.map +1 -0
  255. package/dist/bytes.js +21 -0
  256. package/dist/bytes.js.map +1 -0
  257. package/dist/callings.d.ts +71 -0
  258. package/dist/callings.js +157 -0
  259. package/dist/callings.js.map +1 -0
  260. package/dist/cameraOrders.d.ts +78 -0
  261. package/dist/cameraOrders.js +114 -0
  262. package/dist/cameraOrders.js.map +1 -0
  263. package/dist/camps.d.ts +70 -4
  264. package/dist/camps.js +501 -0
  265. package/dist/camps.js.map +1 -0
  266. package/dist/capture.d.ts +15 -3
  267. package/dist/capture.js +304 -0
  268. package/dist/capture.js.map +1 -0
  269. package/dist/cellLayers.d.ts +78 -13
  270. package/dist/cellLayers.js +275 -0
  271. package/dist/cellLayers.js.map +1 -0
  272. package/dist/cellPatches.d.ts +24 -0
  273. package/dist/cellPatches.js +73 -0
  274. package/dist/cellPatches.js.map +1 -0
  275. package/dist/cinematics.d.ts +10 -5
  276. package/dist/cinematics.js +161 -0
  277. package/dist/cinematics.js.map +1 -0
  278. package/dist/clock.d.ts +2 -2
  279. package/dist/clock.js +78 -0
  280. package/dist/clock.js.map +1 -0
  281. package/dist/commands.d.ts +36 -4
  282. package/dist/commands.js +636 -0
  283. package/dist/commands.js.map +1 -0
  284. package/dist/components.d.ts +31 -10
  285. package/dist/components.js +74 -0
  286. package/dist/components.js.map +1 -0
  287. package/dist/computers.d.ts +4 -4
  288. package/dist/computers.js +194 -0
  289. package/dist/computers.js.map +1 -0
  290. package/dist/concealment.d.ts +25 -2
  291. package/dist/concealment.js +409 -0
  292. package/dist/concealment.js.map +1 -0
  293. package/dist/coreComponents.js +130 -0
  294. package/dist/coreComponents.js.map +1 -0
  295. package/dist/createGame.d.ts +306 -0
  296. package/dist/createGame.js +405 -0
  297. package/dist/createGame.js.map +1 -0
  298. package/dist/dashing.d.ts +18 -2
  299. package/dist/dashing.js +41 -0
  300. package/dist/dashing.js.map +1 -0
  301. package/dist/debug.d.ts +8 -0
  302. package/dist/debug.js +5 -3
  303. package/dist/debug2.js +76 -0
  304. package/dist/debug2.js.map +1 -0
  305. package/dist/debugCommands.d.ts +6 -6
  306. package/dist/debugCommands.js +537 -0
  307. package/dist/debugCommands.js.map +1 -0
  308. package/dist/debugging.d.ts +1 -0
  309. package/dist/defaultSets.d.ts +183 -0
  310. package/dist/defaultSets.js +216 -0
  311. package/dist/defaultSets.js.map +1 -0
  312. package/dist/definitions.d.ts +6 -0
  313. package/dist/definitions.js +78 -0
  314. package/dist/definitions.js.map +1 -0
  315. package/dist/defs.d.ts +1895 -165
  316. package/dist/defs.js +380 -0
  317. package/dist/defs.js.map +1 -0
  318. package/dist/denying.d.ts +4 -4
  319. package/dist/denying.js +106 -0
  320. package/dist/denying.js.map +1 -0
  321. package/dist/destructibles.d.ts +2 -2
  322. package/dist/destructibles.js +36 -0
  323. package/dist/destructibles.js.map +1 -0
  324. package/dist/determinism.d.ts +4 -4
  325. package/dist/determinism.js +247 -0
  326. package/dist/determinism.js.map +1 -0
  327. package/dist/dialog.d.ts +17 -2
  328. package/dist/dialog.js +108 -0
  329. package/dist/dialog.js.map +1 -0
  330. package/dist/effectRefs.js +28 -0
  331. package/dist/effectRefs.js.map +1 -0
  332. package/dist/effects.d.ts +27 -11
  333. package/dist/effects.js +110 -0
  334. package/dist/effects.js.map +1 -0
  335. package/dist/endings.d.ts +1 -1
  336. package/dist/endings.js +78 -0
  337. package/dist/endings.js.map +1 -0
  338. package/dist/engagement.d.ts +40 -6
  339. package/dist/engagement.js +530 -0
  340. package/dist/engagement.js.map +1 -0
  341. package/dist/engineEvents.d.ts +72 -9
  342. package/dist/engineEvents.js +520 -0
  343. package/dist/engineEvents.js.map +1 -0
  344. package/dist/entity.d.ts +275 -26
  345. package/dist/entity.js +441 -0
  346. package/dist/entity.js.map +1 -0
  347. package/dist/entityIndex.d.ts +10 -3
  348. package/dist/entityIndex.js +149 -0
  349. package/dist/entityIndex.js.map +1 -0
  350. package/dist/errors.d.ts +6 -2
  351. package/dist/errors.js +59 -0
  352. package/dist/errors.js.map +1 -0
  353. package/dist/events.d.ts +11 -5
  354. package/dist/events.js +158 -0
  355. package/dist/events.js.map +1 -0
  356. package/dist/exactMath.js +273 -0
  357. package/dist/exactMath.js.map +1 -0
  358. package/dist/features.d.ts +1 -1
  359. package/dist/features.js +127 -0
  360. package/dist/features.js.map +1 -0
  361. package/dist/fields.d.ts +25 -5
  362. package/dist/fields.js +140 -0
  363. package/dist/fields.js.map +1 -0
  364. package/dist/fixture.d.ts +3 -3
  365. package/dist/fixture.js +512 -0
  366. package/dist/fixture.js.map +1 -0
  367. package/dist/fog.d.ts +26 -3
  368. package/dist/fog.js +333 -0
  369. package/dist/fog.js.map +1 -0
  370. package/dist/foliage.d.ts +476 -0
  371. package/dist/foliage.js +1478 -0
  372. package/dist/foliage.js.map +1 -0
  373. package/dist/foliageDebug.d.ts +57 -0
  374. package/dist/foliageDebug.js +172 -0
  375. package/dist/foliageDebug.js.map +1 -0
  376. package/dist/foliageRegrowth.d.ts +20 -0
  377. package/dist/foliageRegrowth.js +332 -0
  378. package/dist/foliageRegrowth.js.map +1 -0
  379. package/dist/formState.d.ts +67 -0
  380. package/dist/formState.js +65 -0
  381. package/dist/formState.js.map +1 -0
  382. package/dist/formation.d.ts +46 -8
  383. package/dist/formation.js +297 -0
  384. package/dist/formation.js.map +1 -0
  385. package/dist/forms.d.ts +58 -0
  386. package/dist/forms.js +146 -0
  387. package/dist/forms.js.map +1 -0
  388. package/dist/friendlyFire.d.ts +2 -2
  389. package/dist/friendlyFire.js +37 -0
  390. package/dist/friendlyFire.js.map +1 -0
  391. package/dist/game.d.ts +141 -48
  392. package/dist/game.js +834 -0
  393. package/dist/game.js.map +1 -0
  394. package/dist/gameData.d.ts +96 -22
  395. package/dist/gameData.js +1690 -0
  396. package/dist/gameData.js.map +1 -0
  397. package/dist/gameFiles.d.ts +3 -3
  398. package/dist/gameFiles.js +14 -0
  399. package/dist/gameFiles.js.map +1 -0
  400. package/dist/gates.js +92 -0
  401. package/dist/gates.js.map +1 -0
  402. package/dist/generate.d.ts +28 -1
  403. package/dist/generate.js +1062 -0
  404. package/dist/generate.js.map +1 -0
  405. package/dist/generateWorker.d.ts +7 -3
  406. package/dist/generateWorker.js +86 -0
  407. package/dist/generateWorker.js.map +1 -0
  408. package/dist/grid.d.ts +9 -0
  409. package/dist/grid.js +102 -0
  410. package/dist/grid.js.map +1 -0
  411. package/dist/ground.d.ts +17 -1
  412. package/dist/ground.js +375 -0
  413. package/dist/ground.js.map +1 -0
  414. package/dist/groundObjects.d.ts +70 -0
  415. package/dist/groundObjects.js +371 -0
  416. package/dist/groundObjects.js.map +1 -0
  417. package/dist/groundSpeed.d.ts +20 -3
  418. package/dist/groundSpeed.js +117 -0
  419. package/dist/groundSpeed.js.map +1 -0
  420. package/dist/hero.d.ts +126 -10
  421. package/dist/hero.js +432 -0
  422. package/dist/hero.js.map +1 -0
  423. package/dist/holds.d.ts +94 -0
  424. package/dist/holds.js +305 -0
  425. package/dist/holds.js.map +1 -0
  426. package/dist/home.d.ts +1 -1
  427. package/dist/home.js +30 -0
  428. package/dist/home.js.map +1 -0
  429. package/dist/hooks.d.ts +339 -57
  430. package/dist/hooks.js +105 -0
  431. package/dist/hooks.js.map +1 -0
  432. package/dist/hotReload.d.ts +6 -5
  433. package/dist/hotReload.js +145 -0
  434. package/dist/hotReload.js.map +1 -0
  435. package/dist/ids.d.ts +3 -3
  436. package/dist/ids.js +30 -0
  437. package/dist/ids.js.map +1 -0
  438. package/dist/idsFile.d.ts +36 -0
  439. package/dist/idsFile.js +134 -0
  440. package/dist/idsFile.js.map +1 -0
  441. package/dist/index.d.ts +105 -68
  442. package/dist/index.js +194 -4701
  443. package/dist/inspect.d.ts +29 -2
  444. package/dist/{inspect-D9dWHmZ0.js → inspect.js} +21 -12
  445. package/dist/inspect.js.map +1 -0
  446. package/dist/inventory.d.ts +14 -1
  447. package/dist/inventory.js +84 -0
  448. package/dist/inventory.js.map +1 -0
  449. package/dist/items.d.ts +136 -8
  450. package/dist/items.js +585 -0
  451. package/dist/items.js.map +1 -0
  452. package/dist/lanes.d.ts +12 -3
  453. package/dist/lanes.js +496 -0
  454. package/dist/lanes.js.map +1 -0
  455. package/dist/life.d.ts +6 -2
  456. package/dist/life.js +287 -0
  457. package/dist/life.js.map +1 -0
  458. package/dist/log.d.ts +26 -3
  459. package/dist/log.js +192 -0
  460. package/dist/log.js.map +1 -0
  461. package/dist/manaBurn.d.ts +2 -2
  462. package/dist/manaBurn.js +75 -0
  463. package/dist/manaBurn.js.map +1 -0
  464. package/dist/map/file.d.ts +56 -3
  465. package/dist/map/file.js +264 -0
  466. package/dist/map/file.js.map +1 -0
  467. package/dist/map/images.js +61 -0
  468. package/dist/map/images.js.map +1 -0
  469. package/dist/map/look.d.ts +1 -1
  470. package/dist/map/look.js +30 -0
  471. package/dist/map/look.js.map +1 -0
  472. package/dist/map/pathProfile.js +183 -0
  473. package/dist/map/pathProfile.js.map +1 -0
  474. package/dist/map/resize.d.ts +4 -0
  475. package/dist/map/resize.js +136 -0
  476. package/dist/map/resize.js.map +1 -0
  477. package/dist/map/schema.js +257 -0
  478. package/dist/map/schema.js.map +1 -0
  479. package/dist/map/terrain.js +214 -0
  480. package/dist/map/terrain.js.map +1 -0
  481. package/dist/map/types.d.ts +92 -13
  482. package/dist/map/types.js +251 -0
  483. package/dist/map/types.js.map +1 -0
  484. package/dist/mapCheck/cells.js +94 -0
  485. package/dist/mapCheck/cells.js.map +1 -0
  486. package/dist/mapCheck/rules/foliage.d.ts +9 -0
  487. package/dist/mapCheck/rules/foliage.js +83 -0
  488. package/dist/mapCheck/rules/foliage.js.map +1 -0
  489. package/dist/mapCheck/rules/names.js +39 -0
  490. package/dist/mapCheck/rules/names.js.map +1 -0
  491. package/dist/mapCheck/rules/objects.d.ts +1 -1
  492. package/dist/mapCheck/rules/objects.js +56 -0
  493. package/dist/mapCheck/rules/objects.js.map +1 -0
  494. package/dist/mapCheck/rules/paths.js +32 -0
  495. package/dist/mapCheck/rules/paths.js.map +1 -0
  496. package/dist/mapCheck/rules/players.js +20 -0
  497. package/dist/mapCheck/rules/players.js.map +1 -0
  498. package/dist/mapCheck/rules/races.js +56 -0
  499. package/dist/mapCheck/rules/races.js.map +1 -0
  500. package/dist/mapCheck/rules/random.js +47 -0
  501. package/dist/mapCheck/rules/random.js.map +1 -0
  502. package/dist/mapCheck/rules/regions.js +30 -0
  503. package/dist/mapCheck/rules/regions.js.map +1 -0
  504. package/dist/mapCheck/rules/targets.js +31 -0
  505. package/dist/mapCheck/rules/targets.js.map +1 -0
  506. package/dist/mapCheck/rules/walking.js +45 -0
  507. package/dist/mapCheck/rules/walking.js.map +1 -0
  508. package/dist/mapCheck.d.ts +2 -2
  509. package/dist/mapCheck.js +63 -0
  510. package/dist/mapCheck.js.map +1 -0
  511. package/dist/mapFields.d.ts +25 -2
  512. package/dist/mapFields.js +134 -0
  513. package/dist/mapFields.js.map +1 -0
  514. package/dist/mapFile.js +176 -0
  515. package/dist/mapFile.js.map +1 -0
  516. package/dist/mapMeasure.d.ts +8 -0
  517. package/dist/mapMeasure.js +283 -0
  518. package/dist/mapMeasure.js.map +1 -0
  519. package/dist/mapMerge.d.ts +1 -0
  520. package/dist/mapMerge.js +172 -0
  521. package/dist/mapMerge.js.map +1 -0
  522. package/dist/mapObjectives.js +138 -0
  523. package/dist/mapObjectives.js.map +1 -0
  524. package/dist/mapObjects.js +80 -0
  525. package/dist/mapObjects.js.map +1 -0
  526. package/dist/math.d.ts +37 -7
  527. package/dist/math.js +155 -0
  528. package/dist/math.js.map +1 -0
  529. package/dist/messages.d.ts +71 -4
  530. package/dist/messages.js +29 -0
  531. package/dist/messages.js.map +1 -0
  532. package/dist/missionRules.d.ts +10 -2
  533. package/dist/{missionRules-C-bGxm0Q.js → missionRules.js} +30 -150
  534. package/dist/missionRules.js.map +1 -0
  535. package/dist/mods.d.ts +39 -20
  536. package/dist/mods.js +271 -0
  537. package/dist/mods.js.map +1 -0
  538. package/dist/moves.d.ts +87 -0
  539. package/dist/moves.js +539 -0
  540. package/dist/moves.js.map +1 -0
  541. package/dist/names.d.ts +7 -0
  542. package/dist/names.js +122 -0
  543. package/dist/names.js.map +1 -0
  544. package/dist/navigation/agentParams.js +14 -0
  545. package/dist/navigation/agentParams.js.map +1 -0
  546. package/dist/navigation/air.d.ts +7 -3
  547. package/dist/navigation/air.js +401 -0
  548. package/dist/navigation/air.js.map +1 -0
  549. package/dist/navigation/builds.d.ts +34 -2
  550. package/dist/navigation/builds.js +287 -0
  551. package/dist/navigation/builds.js.map +1 -0
  552. package/dist/navigation/groundAreas.d.ts +59 -1
  553. package/dist/navigation/groundAreas.js +407 -0
  554. package/dist/navigation/groundAreas.js.map +1 -0
  555. package/dist/navigation/navigation.d.ts +98 -9
  556. package/dist/navigation/recast.d.ts +194 -18
  557. package/dist/navigation/recast.js +1379 -0
  558. package/dist/navigation/recast.js.map +1 -0
  559. package/dist/navigation/sidePaths.d.ts +8 -3
  560. package/dist/navigation/sidePaths.js +241 -0
  561. package/dist/navigation/sidePaths.js.map +1 -0
  562. package/dist/navigation/sized.js +243 -0
  563. package/dist/navigation/sized.js.map +1 -0
  564. package/dist/nearest.js +32 -0
  565. package/dist/nearest.js.map +1 -0
  566. package/dist/noise.js +59 -0
  567. package/dist/noise.js.map +1 -0
  568. package/dist/objectives.d.ts +12 -3
  569. package/dist/objectives.js +144 -0
  570. package/dist/objectives.js.map +1 -0
  571. package/dist/orders/basic.d.ts +5 -5
  572. package/dist/orders/basic.js +417 -0
  573. package/dist/orders/basic.js.map +1 -0
  574. package/dist/orders/build.js +278 -0
  575. package/dist/orders/build.js.map +1 -0
  576. package/dist/orders/cast.d.ts +13 -3
  577. package/dist/orders/cast.js +558 -0
  578. package/dist/orders/cast.js.map +1 -0
  579. package/dist/orders/facts.js +16 -0
  580. package/dist/orders/facts.js.map +1 -0
  581. package/dist/orders/harvest.d.ts +21 -5
  582. package/dist/orders/harvest.js +540 -0
  583. package/dist/orders/harvest.js.map +1 -0
  584. package/dist/orders/idle.d.ts +3 -1
  585. package/dist/orders/idle.js +234 -0
  586. package/dist/orders/idle.js.map +1 -0
  587. package/dist/orders/items.js +92 -0
  588. package/dist/orders/items.js.map +1 -0
  589. package/dist/orders/queue.js +108 -0
  590. package/dist/orders/queue.js.map +1 -0
  591. package/dist/orders/waiting.d.ts +39 -0
  592. package/dist/orders/waiting.js +149 -0
  593. package/dist/orders/waiting.js.map +1 -0
  594. package/dist/pack.schema.js +13 -0
  595. package/dist/pack.schema.js.map +1 -0
  596. package/dist/pack.schema.json +7622 -841
  597. package/dist/packs/director/index.d.ts +13 -5
  598. package/dist/packs/director/index.js +204 -0
  599. package/dist/packs/director/index.js.map +1 -0
  600. package/dist/packs/heroes/campaign.d.ts +3 -2
  601. package/dist/packs/heroes/campaign.js +241 -0
  602. package/dist/packs/heroes/campaign.js.map +1 -0
  603. package/dist/packs/heroes/carry.d.ts +6 -0
  604. package/dist/packs/heroes/carry.js +112 -0
  605. package/dist/packs/heroes/carry.js.map +1 -0
  606. package/dist/packs/heroes/commands.js +115 -0
  607. package/dist/packs/heroes/commands.js.map +1 -0
  608. package/dist/packs/heroes/fallen.d.ts +43 -0
  609. package/dist/packs/heroes/fallen.js +61 -0
  610. package/dist/packs/heroes/fallen.js.map +1 -0
  611. package/dist/packs/heroes/hire.js +60 -0
  612. package/dist/packs/heroes/hire.js.map +1 -0
  613. package/dist/packs/heroes/index.d.ts +7 -6
  614. package/dist/packs/heroes/index.js +130 -0
  615. package/dist/packs/heroes/index.js.map +1 -0
  616. package/dist/packs/heroes/loop.d.ts +95 -0
  617. package/dist/packs/heroes/loop.js +250 -0
  618. package/dist/packs/heroes/loop.js.map +1 -0
  619. package/dist/packs/heroes/making.d.ts +6 -3
  620. package/dist/packs/heroes/making.js +55 -0
  621. package/dist/packs/heroes/making.js.map +1 -0
  622. package/dist/packs/heroes/respawn.d.ts +3 -3
  623. package/dist/packs/heroes/respawn.js +87 -0
  624. package/dist/packs/heroes/respawn.js.map +1 -0
  625. package/dist/packs/heroes/sets.d.ts +32 -0
  626. package/dist/packs/heroes/sets.js +51 -0
  627. package/dist/packs/heroes/sets.js.map +1 -0
  628. package/dist/packs/heroes/spells.d.ts +16 -0
  629. package/dist/packs/heroes/spells.js +269 -0
  630. package/dist/packs/heroes/spells.js.map +1 -0
  631. package/dist/packs/items/defaults.d.ts +43 -0
  632. package/dist/packs/items/defaults.js +1504 -0
  633. package/dist/packs/items/defaults.js.map +1 -0
  634. package/dist/packs/items/index.d.ts +27 -0
  635. package/dist/packs/items/index.js +214 -0
  636. package/dist/packs/items/index.js.map +1 -0
  637. package/dist/packs/moba/index.d.ts +3 -3
  638. package/dist/packs/moba/index.js +174 -0
  639. package/dist/packs/moba/index.js.map +1 -0
  640. package/dist/packs/pack.d.ts +15 -15
  641. package/dist/packs/pack.js +14 -0
  642. package/dist/packs/pack.js.map +1 -0
  643. package/dist/packs.d.ts +15 -7
  644. package/dist/packs.js +222 -0
  645. package/dist/packs.js.map +1 -0
  646. package/dist/paths.d.ts +2 -0
  647. package/dist/paths.js +109 -0
  648. package/dist/paths.js.map +1 -0
  649. package/dist/plain.js +57 -0
  650. package/dist/plain.js.map +1 -0
  651. package/dist/player.d.ts +33 -10
  652. package/dist/player.js +159 -0
  653. package/dist/player.js.map +1 -0
  654. package/dist/portals.d.ts +1 -1
  655. package/dist/portals.js +194 -0
  656. package/dist/portals.js.map +1 -0
  657. package/dist/prefabs.d.ts +25 -2
  658. package/dist/prefabs.js +239 -0
  659. package/dist/prefabs.js.map +1 -0
  660. package/dist/presetBuildings.js +58 -0
  661. package/dist/presetBuildings.js.map +1 -0
  662. package/dist/presetFoliage.d.ts +27 -0
  663. package/dist/presetFoliage.js +98 -0
  664. package/dist/presetFoliage.js.map +1 -0
  665. package/dist/presetGround.js +65 -0
  666. package/dist/presetGround.js.map +1 -0
  667. package/dist/proxies.d.ts +12 -0
  668. package/dist/proxies.js +79 -0
  669. package/dist/proxies.js.map +1 -0
  670. package/dist/query.d.ts +56 -0
  671. package/dist/query.js +88 -0
  672. package/dist/query.js.map +1 -0
  673. package/dist/races.d.ts +15 -14
  674. package/dist/races.js +172 -0
  675. package/dist/races.js.map +1 -0
  676. package/dist/randomGroups.js +91 -0
  677. package/dist/randomGroups.js.map +1 -0
  678. package/dist/registry.d.ts +117 -53
  679. package/dist/registry.js +323 -0
  680. package/dist/registry.js.map +1 -0
  681. package/dist/remains.d.ts +11 -9
  682. package/dist/remains.js +188 -0
  683. package/dist/remains.js.map +1 -0
  684. package/dist/replication.d.ts +12 -7
  685. package/dist/replication.js +100 -0
  686. package/dist/replication.js.map +1 -0
  687. package/dist/rng.d.ts +2 -0
  688. package/dist/rng.js +40 -0
  689. package/dist/rng.js.map +1 -0
  690. package/dist/rules.d.ts +186 -99
  691. package/dist/rules.js +179 -0
  692. package/dist/rules.js.map +1 -0
  693. package/dist/rulesCheck.d.ts +5 -4
  694. package/dist/rulesCheck.js +693 -0
  695. package/dist/rulesCheck.js.map +1 -0
  696. package/dist/runes.d.ts +2 -2
  697. package/dist/runes.js +80 -0
  698. package/dist/runes.js.map +1 -0
  699. package/dist/save.d.ts +37 -12
  700. package/dist/save.js +532 -0
  701. package/dist/save.js.map +1 -0
  702. package/dist/scenario.d.ts +2 -2
  703. package/dist/scenario.js +99 -0
  704. package/dist/scenario.js.map +1 -0
  705. package/dist/scheduler.d.ts +3 -0
  706. package/dist/scheduler.js +156 -0
  707. package/dist/scheduler.js.map +1 -0
  708. package/dist/score.d.ts +19 -19
  709. package/dist/score.js +709 -0
  710. package/dist/score.js.map +1 -0
  711. package/dist/sequences.d.ts +10 -6
  712. package/dist/sequences.js +206 -0
  713. package/dist/sequences.js.map +1 -0
  714. package/dist/server/doorman.js +154 -0
  715. package/dist/server/doorman.js.map +1 -0
  716. package/dist/server/gameServer.d.ts +16 -1
  717. package/dist/server/gameServer.js +643 -0
  718. package/dist/server/gameServer.js.map +1 -0
  719. package/dist/server/index.d.ts +1 -1
  720. package/dist/server/lobby.js +199 -0
  721. package/dist/server/lobby.js.map +1 -0
  722. package/dist/server/log.js +18 -0
  723. package/dist/server/log.js.map +1 -0
  724. package/dist/server/match.js +267 -0
  725. package/dist/server/match.js.map +1 -0
  726. package/dist/server/mode.d.ts +18 -9
  727. package/dist/server/mode.js +220 -0
  728. package/dist/server/mode.js.map +1 -0
  729. package/dist/{navigation-worker.js → server/navigation-worker.js} +1 -1
  730. package/dist/server/navigation-worker.js.map +1 -0
  731. package/dist/server/navigation.js +39 -0
  732. package/dist/server/navigation.js.map +1 -0
  733. package/dist/server/ops.d.ts +4 -0
  734. package/dist/server/ops.js +137 -0
  735. package/dist/server/ops.js.map +1 -0
  736. package/dist/server/packs.d.ts +3 -3
  737. package/dist/server/packs.js +32 -0
  738. package/dist/server/packs.js.map +1 -0
  739. package/dist/server/ratings.d.ts +5 -0
  740. package/dist/server/ratings.js +104 -0
  741. package/dist/server/ratings.js.map +1 -0
  742. package/dist/server/relay.d.ts +12 -2
  743. package/dist/server/relay.js +144 -0
  744. package/dist/server/relay.js.map +1 -0
  745. package/dist/server/rooms.d.ts +9 -2
  746. package/dist/server/rooms.js +442 -0
  747. package/dist/server/rooms.js.map +1 -0
  748. package/dist/server/seat.js +116 -0
  749. package/dist/server/seat.js.map +1 -0
  750. package/dist/server/seatSettings.d.ts +3 -3
  751. package/dist/server/seatSettings.js +63 -0
  752. package/dist/server/seatSettings.js.map +1 -0
  753. package/dist/server/secret.js +13 -0
  754. package/dist/server/secret.js.map +1 -0
  755. package/dist/server/start.d.ts +13 -6
  756. package/dist/server/start.js +76 -0
  757. package/dist/server/start.js.map +1 -0
  758. package/dist/server/websocket.d.ts +9 -1
  759. package/dist/server/websocket.js +306 -0
  760. package/dist/server/websocket.js.map +1 -0
  761. package/dist/server.js +15 -2861
  762. package/dist/session/can.js +26 -0
  763. package/dist/session/can.js.map +1 -0
  764. package/dist/session/commandReplay.d.ts +8 -2
  765. package/dist/session/commandReplay.js +293 -0
  766. package/dist/session/commandReplay.js.map +1 -0
  767. package/dist/session/debug.js +151 -0
  768. package/dist/session/debug.js.map +1 -0
  769. package/dist/session/delay.js +62 -0
  770. package/dist/session/delay.js.map +1 -0
  771. package/dist/session/delta.d.ts +14 -1
  772. package/dist/session/delta.js +407 -0
  773. package/dist/session/delta.js.map +1 -0
  774. package/dist/session/entityState.js +415 -0
  775. package/dist/session/entityState.js.map +1 -0
  776. package/dist/session/local.d.ts +47 -5
  777. package/dist/session/local.js +670 -0
  778. package/dist/session/local.js.map +1 -0
  779. package/dist/session/memory.d.ts +20 -2
  780. package/dist/session/memory.js +131 -0
  781. package/dist/session/memory.js.map +1 -0
  782. package/dist/session/protocol.d.ts +325 -31
  783. package/dist/session/protocol.js +55 -0
  784. package/dist/session/protocol.js.map +1 -0
  785. package/dist/session/remote.d.ts +74 -12
  786. package/dist/session/remote.js +1394 -0
  787. package/dist/session/remote.js.map +1 -0
  788. package/dist/session/replay.d.ts +11 -2
  789. package/dist/session/replay.js +160 -0
  790. package/dist/session/replay.js.map +1 -0
  791. package/dist/session/seed.js +12 -0
  792. package/dist/session/seed.js.map +1 -0
  793. package/dist/session/share.d.ts +5 -1
  794. package/dist/session/share.js +94 -0
  795. package/dist/session/share.js.map +1 -0
  796. package/dist/session/socket.d.ts +1 -1
  797. package/dist/session/socket.js +29 -0
  798. package/dist/session/socket.js.map +1 -0
  799. package/dist/session/wire.d.ts +5 -0
  800. package/dist/session/wire.js +84 -0
  801. package/dist/session/wire.js.map +1 -0
  802. package/dist/session/worker.d.ts +77 -12
  803. package/dist/session/worker.js +499 -0
  804. package/dist/session/worker.js.map +1 -0
  805. package/dist/shared.d.ts +31 -5
  806. package/dist/shared.js +166 -0
  807. package/dist/shared.js.map +1 -0
  808. package/dist/sides.d.ts +9 -3
  809. package/dist/sides.js +149 -0
  810. package/dist/sides.js.map +1 -0
  811. package/dist/sight.js +85 -0
  812. package/dist/sight.js.map +1 -0
  813. package/dist/simulate-worker.js +1 -1
  814. package/dist/simulate.d.ts +12 -8
  815. package/dist/{simulate-oXBiw1Ff.js → simulate.js} +10 -11
  816. package/dist/simulate.js.map +1 -0
  817. package/dist/smart.js +77 -0
  818. package/dist/smart.js.map +1 -0
  819. package/dist/spatial.d.ts +32 -16
  820. package/dist/spatial.js +234 -0
  821. package/dist/spatial.js.map +1 -0
  822. package/dist/spawning.d.ts +1 -0
  823. package/dist/spawning.js +224 -0
  824. package/dist/spawning.js.map +1 -0
  825. package/dist/stances.d.ts +6 -3
  826. package/dist/stances.js +169 -0
  827. package/dist/stances.js.map +1 -0
  828. package/dist/start.d.ts +10 -10
  829. package/dist/start.js +75 -0
  830. package/dist/start.js.map +1 -0
  831. package/dist/stats.d.ts +42 -16
  832. package/dist/stats.js +290 -0
  833. package/dist/stats.js.map +1 -0
  834. package/dist/summoned.d.ts +52 -0
  835. package/dist/summoned.js +38 -0
  836. package/dist/summoned.js.map +1 -0
  837. package/dist/summons.d.ts +10 -13
  838. package/dist/summons.js +271 -0
  839. package/dist/summons.js.map +1 -0
  840. package/dist/systems/abilities.js +224 -0
  841. package/dist/systems/abilities.js.map +1 -0
  842. package/dist/systems/combat.d.ts +35 -1
  843. package/dist/systems/combat.js +677 -0
  844. package/dist/systems/combat.js.map +1 -0
  845. package/dist/systems/combatTold.d.ts +3 -1
  846. package/dist/systems/combatTold.js +85 -0
  847. package/dist/systems/combatTold.js.map +1 -0
  848. package/dist/systems/construction.js +80 -0
  849. package/dist/systems/construction.js.map +1 -0
  850. package/dist/systems/economy.d.ts +0 -6
  851. package/dist/systems/economy.js +128 -0
  852. package/dist/systems/economy.js.map +1 -0
  853. package/dist/systems/fog.d.ts +1 -1
  854. package/dist/systems/fog.js +120 -0
  855. package/dist/systems/fog.js.map +1 -0
  856. package/dist/systems/life.js +32 -0
  857. package/dist/systems/life.js.map +1 -0
  858. package/dist/systems/movement.d.ts +24 -12
  859. package/dist/systems/movement.js +1247 -0
  860. package/dist/systems/movement.js.map +1 -0
  861. package/dist/systems/orders.js +64 -0
  862. package/dist/systems/orders.js.map +1 -0
  863. package/dist/systems/production.js +322 -0
  864. package/dist/systems/production.js.map +1 -0
  865. package/dist/systems/productionQueue.js +120 -0
  866. package/dist/systems/productionQueue.js.map +1 -0
  867. package/dist/systems/victory.d.ts +1 -1
  868. package/dist/systems/victory.js +56 -0
  869. package/dist/systems/victory.js.map +1 -0
  870. package/dist/talk.d.ts +6 -6
  871. package/dist/talk.js +153 -0
  872. package/dist/talk.js.map +1 -0
  873. package/dist/targeting.d.ts +142 -0
  874. package/dist/targeting.js +49 -0
  875. package/dist/targeting.js.map +1 -0
  876. package/dist/tech.d.ts +20 -3
  877. package/dist/tech.js +239 -0
  878. package/dist/tech.js.map +1 -0
  879. package/dist/techTree.d.ts +7 -0
  880. package/dist/techTree.js +90 -0
  881. package/dist/techTree.js.map +1 -0
  882. package/dist/terrain.d.ts +59 -7
  883. package/dist/terrain.js +389 -0
  884. package/dist/terrain.js.map +1 -0
  885. package/dist/terrainSave.d.ts +6 -0
  886. package/dist/terrainSave.js +74 -0
  887. package/dist/terrainSave.js.map +1 -0
  888. package/dist/testing.d.ts +8 -7
  889. package/dist/testing.js +13 -739
  890. package/dist/testing.js.map +1 -1
  891. package/dist/tiles.d.ts +1 -1
  892. package/dist/tiles.js +43 -0
  893. package/dist/tiles.js.map +1 -0
  894. package/dist/timers.d.ts +29 -4
  895. package/dist/timers.js +242 -0
  896. package/dist/timers.js.map +1 -0
  897. package/dist/tomes.d.ts +4 -4
  898. package/dist/tomes.js +94 -0
  899. package/dist/tomes.js.map +1 -0
  900. package/dist/trade.js +103 -0
  901. package/dist/trade.js.map +1 -0
  902. package/dist/transport.d.ts +6 -1
  903. package/dist/transport.js +281 -0
  904. package/dist/transport.js.map +1 -0
  905. package/dist/tunables.d.ts +10 -3
  906. package/dist/tunables.js +56 -0
  907. package/dist/tunables.js.map +1 -0
  908. package/dist/unitResources.d.ts +67 -0
  909. package/dist/unitResources.js +266 -0
  910. package/dist/unitResources.js.map +1 -0
  911. package/dist/upkeep.d.ts +6 -1
  912. package/dist/upkeep.js +26 -0
  913. package/dist/upkeep.js.map +1 -0
  914. package/dist/veterancy.d.ts +8 -3
  915. package/dist/veterancy.js +131 -0
  916. package/dist/veterancy.js.map +1 -0
  917. package/dist/vision.d.ts +36 -0
  918. package/dist/vision.js +133 -0
  919. package/dist/vision.js.map +1 -0
  920. package/dist/walls.d.ts +1 -1
  921. package/dist/walls.js +278 -0
  922. package/dist/walls.js.map +1 -0
  923. package/dist/world.d.ts +606 -88
  924. package/dist/world.js +1263 -0
  925. package/dist/world.js.map +1 -0
  926. package/package.json +2 -2
  927. package/dist/ai.js.map +0 -1
  928. package/dist/attributes.d.ts +0 -66
  929. package/dist/brain-BvVdUhX8.js +0 -7659
  930. package/dist/brain-BvVdUhX8.js.map +0 -1
  931. package/dist/builds-C6LfgvEU.js +0 -460
  932. package/dist/builds-C6LfgvEU.js.map +0 -1
  933. package/dist/coreComponents-syuh2fPG.js +0 -5149
  934. package/dist/coreComponents-syuh2fPG.js.map +0 -1
  935. package/dist/debugCommands-CzjrSm66.js +0 -14739
  936. package/dist/debugCommands-CzjrSm66.js.map +0 -1
  937. package/dist/determinism-BCymQwiE.js +0 -518
  938. package/dist/determinism-BCymQwiE.js.map +0 -1
  939. package/dist/game-DiJEN-Ks.js +0 -5800
  940. package/dist/game-DiJEN-Ks.js.map +0 -1
  941. package/dist/index.js.map +0 -1
  942. package/dist/inspect-D9dWHmZ0.js.map +0 -1
  943. package/dist/local-Dkovq42k.js +0 -1379
  944. package/dist/local-Dkovq42k.js.map +0 -1
  945. package/dist/missionRules-C-bGxm0Q.js.map +0 -1
  946. package/dist/navigation-worker.js.map +0 -1
  947. package/dist/packs-g5thvmGn.js +0 -3199
  948. package/dist/packs-g5thvmGn.js.map +0 -1
  949. package/dist/profiles-B3NS9jwk.js.map +0 -1
  950. package/dist/server.js.map +0 -1
  951. package/dist/simulate-oXBiw1Ff.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","names":[],"sources":["../../src/map/schema.ts"],"sourcesContent":["/*\n * The fields of a map, once (design review E8a): each with what it is (`kind`), when its file has it, what a map has\n * of it where the file has none, and the words a file that is wrong in it is told in. What reads and writes a map file\n * (`parseMap`, `serializeMap`, the parts it knows), copies one (`cloneMap`), grows one (`resizeMap`), merges two\n * (`mergeMaps`) and writes it for a person to read (`mapText`) goes by this table, so that a field is added in one place\n */\nimport type { GameMap } from './types'\n\n/**\n * What a field of a map is:\n * - `text`, `number`, `boolean`: one value\n * - `layer`: a layer of the ground, a value per cell (or per corner, `perVertex`, four bytes each: the heights), a\n * line of text a row in the file, merged cell by cell\n * - `layers`: the game's layers of cells, by id, each as a `layer` is written; merged whole\n * - `mask`: a layer that a map may have none of (what is kept off cells by hand), written where anything is set\n * - `list`: a list of plain objects, those of `byId` with an id each (merged thing by thing, a line each in `mapText`)\n * - `names`: a list of names\n * - `object`: plain data, kept as it is\n *\n * @internal\n */\nexport type MapFieldKind = 'text' | 'number' | 'boolean' | 'layer' | 'layers' | 'mask' | 'list' | 'names' | 'object'\n\n/**\n * A field of a map, as the table has it\n *\n * @internal\n */\nexport interface MapFieldSpec {\n\tkey: keyof GameMap\n\tkind: MapFieldKind\n\t/**\n\t * When the file has it: `always`; `defined` where the map has it; `filled` where it holds anything (text not empty,\n\t * a list or an object with something in it, a mask with a cell set)\n\t */\n\twritten: 'always' | 'defined' | 'filled'\n\t/**\n\t * What a map has where the file has none, or nothing of the kind asked: none (the field left out) when left out. A\n\t * `list` or a `layer` the file must have where `required`\n\t */\n\tempty?: () => unknown\n\t/** A file without it, or with something else in its place, is no map (`Map file: ... is missing`) */\n\trequired?: boolean\n\t/** For a layer: one by corner of the ground (the heights, four bytes each), not by cell */\n\tperVertex?: boolean\n\t/** For a list: of things with an id each */\n\tbyId?: boolean\n\t/** What a file that is wrong in it is told it is, for a layer: `Map file: the ground does not match the size of the map` */\n\twhat?: string\n\t/** A field kept as plain data only, said where it is not: what the game and the editor keep with a map */\n\tplain?: boolean\n}\n\n/**\n * Every field of a map, in the order its file has them (`format` before them, what the reader does not know of the\n * file before that). `satisfies` checks that none of `GameMap` is left out\n *\n * @internal\n */\nexport const MAP_FIELDS = [\n\t{ key: 'name', kind: 'text', written: 'always', empty: () => 'Untitled' },\n\t{ key: 'description', kind: 'text', written: 'always', empty: () => '' },\n\t{ key: 'game', kind: 'text', written: 'defined' },\n\t{ key: 'width', kind: 'number', written: 'always', required: true },\n\t{ key: 'depth', kind: 'number', written: 'always', required: true },\n\t{ key: 'cliffHeight', kind: 'number', written: 'always', empty: () => 3 },\n\t{ key: 'ground', kind: 'layer', written: 'always', required: true, perVertex: true, what: 'the ground' },\n\t{ key: 'levels', kind: 'layer', written: 'always', required: true, what: 'the levels' },\n\t{ key: 'ramps', kind: 'layer', written: 'always', required: true, what: 'the ramps' },\n\t{ key: 'water', kind: 'layer', written: 'always', required: true, what: 'the water' },\n\t{ key: 'tiles', kind: 'layer', written: 'always', required: true, what: 'the paint' },\n\t{ key: 'cells', kind: 'layers', written: 'filled' },\n\t{ key: 'pathing', kind: 'mask', written: 'filled', what: 'what is kept off cells' },\n\t{ key: 'tileset', kind: 'names', written: 'always', required: true, what: 'the tileset' },\n\t{ key: 'players', kind: 'list', written: 'always', required: true, byId: true },\n\t{ key: 'objects', kind: 'list', written: 'always', required: true, byId: true },\n\t{ key: 'camps', kind: 'list', written: 'always', required: true, byId: true },\n\t{ key: 'regions', kind: 'list', written: 'filled', byId: true, empty: () => [] },\n\t{ key: 'points', kind: 'list', written: 'filled', byId: true, empty: () => [] },\n\t{ key: 'paths', kind: 'list', written: 'filled', byId: true, empty: () => [] },\n\t{ key: 'doodads', kind: 'list', written: 'filled', byId: true, empty: () => [] },\n\t{ key: 'cameras', kind: 'list', written: 'filled', byId: true, empty: () => [] },\n\t{ key: 'randomGroups', kind: 'list', written: 'filled' },\n\t{ key: 'itemTables', kind: 'list', written: 'filled' },\n\t{ key: 'forces', kind: 'list', written: 'filled' },\n\t{ key: 'races', kind: 'names', written: 'filled' },\n\t{ key: 'author', kind: 'text', written: 'filled' },\n\t{ key: 'silence', kind: 'names', written: 'filled' },\n\t{ key: 'meantFor', kind: 'text', written: 'filled' },\n\t{ key: 'explored', kind: 'boolean', written: 'defined' },\n\t{ key: 'loading', kind: 'text', written: 'filled' },\n\t{ key: 'preview', kind: 'text', written: 'filled' },\n\t{ key: 'environment', kind: 'object', written: 'filled' },\n\t{ key: 'definitions', kind: 'object', written: 'filled', plain: true },\n\t{ key: 'generated', kind: 'object', written: 'defined' },\n\t{ key: 'day', kind: 'object', written: 'filled' },\n\t{ key: 'bounds', kind: 'object', written: 'defined' },\n\t{ key: 'data', kind: 'object', written: 'filled', empty: () => ({}), plain: true },\n\t{ key: 'editor', kind: 'object', written: 'filled', plain: true }\n] as const satisfies readonly MapFieldSpec[]\n\n/** The keys of `GameMap` the table has, and those it has not: none but what the reader keeps of the file (`extra`) */\ntype Missing = Exclude<keyof GameMap, (typeof MAP_FIELDS)[number]['key'] | 'extra'>\n// a field of GameMap the table does not have is a type error here\nconst everyField: [Missing] extends [never] ? true : Missing = true\nvoid everyField\n\n/** The fields as specs, for what walks them */\nexport const MAP_FIELD_SPECS: readonly MapFieldSpec[] = MAP_FIELDS\n\n/** What a reader of this format knows in a file: `format` and every field. The rest is carried along (`GameMap.extra`) */\nexport const KNOWN: ReadonlySet<string> = new Set(['format', ...MAP_FIELDS.map((field) => field.key)])\n\n/** The fields of a kind */\nexport const fieldsOf = (...kinds: MapFieldKind[]): readonly MapFieldSpec[] => MAP_FIELD_SPECS.filter((field) => kinds.includes(field.kind))\n\n/** The lists of things with ids: merged thing by thing (`mergeMaps`), an entry to a line (`mapText`) */\nexport const BY_ID: readonly string[] = MAP_FIELD_SPECS.filter((field) => field.byId).map((field) => field.key)\n\n/** The layers of the ground every map has: merged cell by cell (`mergeMaps`), a row to a line (`mapText`) */\nexport const LAYERS: readonly ('ground' | 'levels' | 'ramps' | 'water' | 'tiles')[] = fieldsOf('layer').map(\n\t(field) => field.key as 'ground' | 'levels' | 'ramps' | 'water' | 'tiles'\n)\n"],"mappings":"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"}
@@ -0,0 +1,214 @@
1
+ import { hypot } from "../exactMath.js";
2
+ import { clamp } from "../math.js";
3
+ import "./types.js";
4
+ import { Path } from "../paths.js";
5
+ import { tileRemap } from "../tiles.js";
6
+ import { Terrain } from "../terrain.js";
7
+ import { WATER_DEPTH, profiledGround } from "./pathProfile.js";
8
+ //#region src/map/terrain.ts
9
+ /** How far below the banks the water stands */
10
+ var WATER_SURFACE = .18;
11
+ /**
12
+ * The terrain a map describes
13
+ *
14
+ * @beta
15
+ */
16
+ function mapTerrain(map) {
17
+ const terrain = new Terrain(map.width, map.depth, new Float32Array(map.ground.length), new Uint8Array(map.levels.length), {
18
+ water: new Uint8Array(map.water.length),
19
+ tiles: new Uint8Array(map.tiles.length)
20
+ });
21
+ updateMapTerrain(map, terrain);
22
+ return terrain;
23
+ }
24
+ /**
25
+ * What the doodads of a map keep off its cells, and what is kept off them by hand (`GameMap.pathing`), into the
26
+ * terrain (`Terrain.blocked`): the most any of them keeps off. With `area` (cells), there alone: what the layers changed
27
+ * there (a brush's step), the doodads elsewhere as they were; the whole map where a doodad itself changed
28
+ *
29
+ * @beta
30
+ */
31
+ function blockByDoodads(map, terrain, area) {
32
+ const { blocked } = terrain;
33
+ const x0 = area ? Math.max(Math.floor(area.x), 0) : 0;
34
+ const z0 = area ? Math.max(Math.floor(area.z), 0) : 0;
35
+ const x1 = area ? Math.min(Math.ceil(area.x + area.width), map.width) : map.width;
36
+ const z1 = area ? Math.min(Math.ceil(area.z + area.depth), map.depth) : map.depth;
37
+ if (x1 <= x0 || z1 <= z0) return;
38
+ const byHand = map.pathing && map.pathing.length === blocked.length ? map.pathing : void 0;
39
+ for (let cz = z0; cz < z1; cz++) for (let c = cz * map.width + x0; c < cz * map.width + x1; c++) blocked[c] = byHand ? Math.min(byHand[c], 2) : 0;
40
+ for (const doodad of map.doodads ?? []) {
41
+ if (!doodad.radius) continue;
42
+ if (doodad.x + doodad.radius < x0 || doodad.x - doodad.radius > x1 || doodad.z + doodad.radius < z0 || doodad.z - doodad.radius > z1) continue;
43
+ const kind = doodad.bridge ? 3 : doodad.gate ? 1 : doodad.blocks === "walk" ? 2 : doodad.blocks ? 1 : 0;
44
+ if (!kind) continue;
45
+ const { radius } = doodad;
46
+ for (let cz = Math.max(Math.floor(doodad.z - radius), z0); cz < Math.min(Math.ceil(doodad.z + radius), z1); cz++) for (let cx = Math.max(Math.floor(doodad.x - radius), x0); cx < Math.min(Math.ceil(doodad.x + radius), x1); cx++) {
47
+ if (hypot(cx + .5 - doodad.x, cz + .5 - doodad.z) > radius) continue;
48
+ const c = cz * map.width + cx;
49
+ blocked[c] = kind === 3 || blocked[c] === 3 ? blocked[c] === 2 ? 2 : 3 : Math.max(blocked[c], kind);
50
+ }
51
+ }
52
+ const row = map.width + 1;
53
+ for (const doodad of map.doodads ?? []) {
54
+ if (!doodad.bridge || !doodad.radius) continue;
55
+ if (doodad.x + doodad.radius < x0 || doodad.x - doodad.radius > x1 || doodad.z + doodad.radius < z0 || doodad.z - doodad.radius > z1) continue;
56
+ for (let cz = Math.max(Math.floor(doodad.z - doodad.radius), 0); cz < Math.min(Math.ceil(doodad.z + doodad.radius), map.depth); cz++) for (let cx = Math.max(Math.floor(doodad.x - doodad.radius), 0); cx < Math.min(Math.ceil(doodad.x + doodad.radius), map.width); cx++) {
57
+ if (hypot(cx + .5 - doodad.x, cz + .5 - doodad.z) > doodad.radius) continue;
58
+ for (const v of [
59
+ cz * row + cx,
60
+ cz * row + cx + 1,
61
+ (cz + 1) * row + cx,
62
+ (cz + 1) * row + cx + 1
63
+ ]) {
64
+ const deck = Math.max(terrain.waterHeights[v], terrain.heights[v]) + (doodad.y ?? 0);
65
+ if (terrain.heights[v] < deck) terrain.heights[v] = deck;
66
+ }
67
+ }
68
+ }
69
+ }
70
+ /**
71
+ * How far a change to a cell reaches into the terrain: a ramp's slope is the average of the levels within
72
+ * `RAMP_REACH`, and a ramp cell's level is its corners'
73
+ */
74
+ var REACH = 4;
75
+ /**
76
+ * Brings a terrain of the same size in line with the layers of a map, in place, for editing. With `area`, only what
77
+ * a change to those cells can have changed: the cells and the corners of cells within reach of it. Returns the cells
78
+ * whose terrain was worked out again, for whoever draws it to draw again: their corners are the vertices that changed
79
+ *
80
+ * @beta
81
+ */
82
+ function updateMapTerrain(map, terrain, area) {
83
+ const { width, depth, cliffHeight, levels, ramps, water, ground } = map;
84
+ if (terrain.width !== width || terrain.depth !== depth) throw new Error("updateMapTerrain: the terrain is not the size of the map");
85
+ terrain.bounds = map.bounds && { ...map.bounds };
86
+ const vx = width + 1;
87
+ const x0 = area ? Math.max(Math.floor(area.x) - REACH, 0) : 0;
88
+ const z0 = area ? Math.max(Math.floor(area.z) - REACH, 0) : 0;
89
+ const x1 = area ? Math.min(Math.ceil(area.x + area.width) + REACH, width) : width;
90
+ const z1 = area ? Math.min(Math.ceil(area.z + area.depth) + REACH, depth) : depth;
91
+ const rowLength = x1 - x0 + 1;
92
+ const carved = profiledGround(map, x0, z0, x1, z1);
93
+ const cellRow = rowLength + 1;
94
+ const waterAt = (c, cx, cz) => carved?.water ? Math.max(water[c], carved.water[(cz - z0 + 1) * cellRow + (cx - x0 + 1)]) : water[c];
95
+ const vertexLevels = new Float32Array(rowLength * (z1 - z0 + 1));
96
+ for (let iz = z0; iz <= z1; iz++) for (let ix = x0; ix <= x1; ix++) {
97
+ let top = 0;
98
+ let onRamp = false;
99
+ let depthSum = 0;
100
+ let wetLevel = Infinity;
101
+ for (let cz = iz - 1; cz <= iz; cz++) for (let cx = ix - 1; cx <= ix; cx++) {
102
+ if (cx < 0 || cz < 0 || cx >= width || cz >= depth) continue;
103
+ const c = cz * width + cx;
104
+ top = Math.max(top, levels[c]);
105
+ if (ramps[c]) onRamp = true;
106
+ const wet = waterAt(c, cx, cz);
107
+ depthSum += WATER_DEPTH[wet] ?? 0;
108
+ if (wet) wetLevel = Math.min(wetLevel, levels[c]);
109
+ }
110
+ const v = iz * vx + ix;
111
+ const level = onRamp ? averageLevel(map, ix, iz) : top;
112
+ vertexLevels[(iz - z0) * rowLength + (ix - x0)] = level;
113
+ const under = carved ? carved.ground[(iz - z0) * rowLength + (ix - x0)] : ground[v];
114
+ const land = under + level * cliffHeight;
115
+ terrain.heights[v] = land - depthSum / 4;
116
+ terrain.waterHeights[v] = under + Math.min(wetLevel, level) * cliffHeight - WATER_SURFACE;
117
+ }
118
+ const levelAt = (ix, iz) => vertexLevels[(iz - z0) * rowLength + (ix - x0)];
119
+ for (let cz = z0; cz < z1; cz++) for (let cx = x0; cx < x1; cx++) {
120
+ const c = cz * width + cx;
121
+ terrain.water[c] = waterAt(c, cx, cz);
122
+ terrain.tiles[c] = map.tiles[c];
123
+ for (const id in map.cells) terrain.cellLayer(id)[c] = map.cells[id][c];
124
+ if (!ramps[c]) {
125
+ terrain.levels[c] = levels[c];
126
+ continue;
127
+ }
128
+ const middle = (levelAt(cx, cz) + levelAt(cx + 1, cz) + levelAt(cx, cz + 1) + levelAt(cx + 1, cz + 1)) / 4;
129
+ terrain.levels[c] = Math.floor(middle + .5);
130
+ }
131
+ const touched = {
132
+ x: x0,
133
+ z: z0,
134
+ width: x1 - x0,
135
+ depth: z1 - z0
136
+ };
137
+ paintPaths(map, terrain.tiles, touched);
138
+ blockByDoodads(map, terrain, area && touched);
139
+ return touched;
140
+ }
141
+ /**
142
+ * Paints the ground under the paths that say so, over the paint of the map: the tiles are those of the map's tileset.
143
+ * Within `area` only, when it is given
144
+ */
145
+ function paintPaths(map, tiles, area = {
146
+ x: 0,
147
+ z: 0,
148
+ width: map.width,
149
+ depth: map.depth
150
+ }) {
151
+ const width = area.x + area.width;
152
+ const depth = area.z + area.depth;
153
+ for (const def of map.paths) {
154
+ const bed = def.profile?.ground !== void 0;
155
+ const paint = bed ? def.profile.ground : def.paint;
156
+ const wide = bed ? def.profile.width ?? def.width : def.width;
157
+ const tile = paint === void 0 ? 0 : map.tileset.indexOf(paint) + 1;
158
+ if (!tile || !def.points.length) continue;
159
+ const path = new Path(def.points, wide);
160
+ const reach = wide / 2 + 1;
161
+ const xs = def.points.map((point) => point.x);
162
+ const zs = def.points.map((point) => point.z);
163
+ for (let cz = Math.max(Math.floor(Math.min(...zs) - reach), area.z); cz < Math.min(Math.ceil(Math.max(...zs) + reach), depth); cz++) for (let cx = Math.max(Math.floor(Math.min(...xs) - reach), area.x); cx < Math.min(Math.ceil(Math.max(...xs) + reach), width); cx++) if (path.containsCell(cx, cz)) tiles[cz * map.width + cx] = tile;
164
+ }
165
+ }
166
+ /** Average level of the cells within ramp reach of a vertex */
167
+ function averageLevel(map, ix, iz) {
168
+ const { width, depth, levels } = map;
169
+ let sum = 0;
170
+ let count = 0;
171
+ for (let cz = Math.max(iz - 3, 0); cz < Math.min(iz + 3, depth); cz++) for (let cx = Math.max(ix - 3, 0); cx < Math.min(ix + 3, width); cx++) {
172
+ sum += levels[cz * width + cx];
173
+ count++;
174
+ }
175
+ return count ? sum / count : 0;
176
+ }
177
+ /**
178
+ * Cell of a map a point is in
179
+ *
180
+ * @internal
181
+ */
182
+ var mapCell = (map, x, z) => clamp(Math.floor(z), 0, map.depth - 1) * map.width + clamp(Math.floor(x), 0, map.width - 1);
183
+ /**
184
+ * Brings the paint of a map in line with a game's tiles, in place: afterwards index 1 is the game's first tile, and
185
+ * so on. What was painted with a tile the game does not have keeps it, under an index after the game's: the map
186
+ * loses nothing, and the file has it still. Returns the names of those, which no world is given
187
+ *
188
+ * @beta
189
+ */
190
+ function adoptTileset(map, tiles) {
191
+ const used = new Set(map.tiles);
192
+ const strangers = map.tileset.filter((id, i) => !tiles.includes(id) && used.has(i + 1));
193
+ const tileset = [...tiles, ...strangers];
194
+ if (tileset.length > 255) throw new Error(`Map: ${tileset.length} tiles are more than a map can hold`);
195
+ if (tileset.length !== map.tileset.length || tileset.some((id, i) => id !== map.tileset[i])) {
196
+ const remap = tileRemap(map.tileset, tileset);
197
+ for (let c = 0; c < map.tiles.length; c++) map.tiles[c] = remap[map.tiles[c]] ?? 0;
198
+ map.tileset = tileset;
199
+ }
200
+ return strangers;
201
+ }
202
+ /**
203
+ * The paint of a map as a game's tiles have it: what is painted with a tile the game does not have is no paint
204
+ *
205
+ * @internal
206
+ */
207
+ function tilesFor(map, tiles) {
208
+ const remap = tileRemap(map.tileset, tiles);
209
+ return map.tiles.map((tile) => remap[tile] ?? 0);
210
+ }
211
+ //#endregion
212
+ export { adoptTileset, blockByDoodads, mapCell, mapTerrain, tilesFor, updateMapTerrain };
213
+
214
+ //# sourceMappingURL=terrain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terrain.js","names":[],"sources":["../../src/map/terrain.ts"],"sourcesContent":["/*\n * The terrain a map describes, made from its layers, and its paint brought in line with a game's tiles (design review E8a: `map.ts` in parts)\n */\nimport { hypot } from '../exactMath'\nimport { clamp } from '../math'\nimport { Path } from '../paths'\nimport { Terrain } from '../terrain'\nimport { MAX_TILES, tileRemap } from '../tiles'\nimport { BLOCKS_BUILD, BLOCKS_WALK, BRIDGE, type CellRect, type GameMap, RAMP_REACH } from './types'\nimport { profiledGround, WATER_DEPTH } from './pathProfile'\n/** How far below the banks the water stands */\nconst WATER_SURFACE = 0.18\n\n/**\n * The terrain a map describes\n *\n * @beta\n */\nexport function mapTerrain(map: GameMap): Terrain {\n\tconst terrain = new Terrain(map.width, map.depth, new Float32Array(map.ground.length), new Uint8Array(map.levels.length), {\n\t\twater: new Uint8Array(map.water.length),\n\t\ttiles: new Uint8Array(map.tiles.length)\n\t})\n\tupdateMapTerrain(map, terrain)\n\treturn terrain\n}\n\n/**\n * What the doodads of a map keep off its cells, and what is kept off them by hand (`GameMap.pathing`), into the\n * terrain (`Terrain.blocked`): the most any of them keeps off. With `area` (cells), there alone: what the layers changed\n * there (a brush's step), the doodads elsewhere as they were; the whole map where a doodad itself changed\n *\n * @beta\n */\nexport function blockByDoodads(map: Pick<GameMap, 'doodads' | 'width' | 'depth' | 'pathing'>, terrain: Terrain, area?: CellRect): void {\n\tconst { blocked } = terrain\n\tconst x0 = area ? Math.max(Math.floor(area.x), 0) : 0\n\tconst z0 = area ? Math.max(Math.floor(area.z), 0) : 0\n\tconst x1 = area ? Math.min(Math.ceil(area.x + area.width), map.width) : map.width\n\tconst z1 = area ? Math.min(Math.ceil(area.z + area.depth), map.depth) : map.depth\n\tif (x1 <= x0 || z1 <= z0) return\n\t// by hand first: a bridge laid over it after is still a bridge, but over a wall painted there nothing walks\n\tconst byHand = map.pathing && map.pathing.length === blocked.length ? map.pathing : undefined\n\tfor (let cz = z0; cz < z1; cz++)\n\t\tfor (let c = cz * map.width + x0; c < cz * map.width + x1; c++) blocked[c] = byHand ? Math.min(byHand[c], BLOCKS_WALK) : 0\n\tfor (const doodad of map.doodads ?? []) {\n\t\tif (!doodad.radius) continue\n\t\t// (one whose reach is all outside the area is as it was)\n\t\tif (doodad.x + doodad.radius < x0 || doodad.x - doodad.radius > x1 || doodad.z + doodad.radius < z0 || doodad.z - doodad.radius > z1) continue\n\t\t// a gate keeps building off; walking it keeps off while the game runs, as it is shut (`setGate`)\n\t\tconst kind = doodad.bridge ? BRIDGE : doodad.gate ? BLOCKS_BUILD : doodad.blocks === 'walk' ? BLOCKS_WALK : doodad.blocks ? BLOCKS_BUILD : 0\n\t\tif (!kind) continue\n\t\tconst { radius } = doodad\n\t\tfor (let cz = Math.max(Math.floor(doodad.z - radius), z0); cz < Math.min(Math.ceil(doodad.z + radius), z1); cz++) {\n\t\t\tfor (let cx = Math.max(Math.floor(doodad.x - radius), x0); cx < Math.min(Math.ceil(doodad.x + radius), x1); cx++) {\n\t\t\t\t// a cell whose middle is within reach\n\t\t\t\tif (hypot(cx + 0.5 - doodad.x, cz + 0.5 - doodad.z) > radius) continue\n\t\t\t\tconst c = cz * map.width + cx\n\t\t\t\t// a bridge over what blocks is a bridge: it is how one gets over\n\t\t\t\tblocked[c] = kind === BRIDGE || blocked[c] === BRIDGE ? (blocked[c] === BLOCKS_WALK ? BLOCKS_WALK : BRIDGE) : Math.max(blocked[c], kind)\n\t\t\t}\n\t\t}\n\t}\n\t// what is walked on a bridge is its deck: the ground under it as high as the water, and its height over that\n\tconst row = map.width + 1\n\tfor (const doodad of map.doodads ?? []) {\n\t\tif (!doodad.bridge || !doodad.radius) continue\n\t\tif (doodad.x + doodad.radius < x0 || doodad.x - doodad.radius > x1 || doodad.z + doodad.radius < z0 || doodad.z - doodad.radius > z1) continue\n\t\tfor (let cz = Math.max(Math.floor(doodad.z - doodad.radius), 0); cz < Math.min(Math.ceil(doodad.z + doodad.radius), map.depth); cz++) {\n\t\t\tfor (let cx = Math.max(Math.floor(doodad.x - doodad.radius), 0); cx < Math.min(Math.ceil(doodad.x + doodad.radius), map.width); cx++) {\n\t\t\t\tif (hypot(cx + 0.5 - doodad.x, cz + 0.5 - doodad.z) > doodad.radius) continue\n\t\t\t\tfor (const v of [cz * row + cx, cz * row + cx + 1, (cz + 1) * row + cx, (cz + 1) * row + cx + 1]) {\n\t\t\t\t\tconst deck = Math.max(terrain.waterHeights[v], terrain.heights[v]) + (doodad.y ?? 0)\n\t\t\t\t\tif (terrain.heights[v] < deck) terrain.heights[v] = deck\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * How far a change to a cell reaches into the terrain: a ramp's slope is the average of the levels within\n * `RAMP_REACH`, and a ramp cell's level is its corners'\n */\nconst REACH = RAMP_REACH + 1\n\n/**\n * Brings a terrain of the same size in line with the layers of a map, in place, for editing. With `area`, only what\n * a change to those cells can have changed: the cells and the corners of cells within reach of it. Returns the cells\n * whose terrain was worked out again, for whoever draws it to draw again: their corners are the vertices that changed\n *\n * @beta\n */\nexport function updateMapTerrain(map: GameMap, terrain: Terrain, area?: CellRect): CellRect {\n\tconst { width, depth, cliffHeight, levels, ramps, water, ground } = map\n\tif (terrain.width !== width || terrain.depth !== depth) throw new Error('updateMapTerrain: the terrain is not the size of the map')\n\tterrain.bounds = map.bounds && { ...map.bounds }\n\tconst vx = width + 1\n\t// the cells, and the vertices at their corners, that can have changed\n\tconst x0 = area ? Math.max(Math.floor(area.x) - REACH, 0) : 0\n\tconst z0 = area ? Math.max(Math.floor(area.z) - REACH, 0) : 0\n\tconst x1 = area ? Math.min(Math.ceil(area.x + area.width) + REACH, width) : width\n\tconst z1 = area ? Math.min(Math.ceil(area.z + area.depth) + REACH, depth) : depth\n\tconst rowLength = x1 - x0 + 1\n\t// the roads and rivers of the paths with a profile, carved from the land here (`MapPath.profile`)\n\tconst carved = profiledGround(map, x0, z0, x1, z1)\n\tconst cellRow = rowLength + 1\n\tconst waterAt = (c: number, cx: number, cz: number): number =>\n\t\tcarved?.water ? Math.max(water[c], carved.water[(cz - z0 + 1) * cellRow + (cx - x0 + 1)]) : water[c]\n\t// the level of each vertex: the highest cell around it, or on a ramp the average of all cells within reach\n\tconst vertexLevels = new Float32Array(rowLength * (z1 - z0 + 1))\n\tfor (let iz = z0; iz <= z1; iz++) {\n\t\tfor (let ix = x0; ix <= x1; ix++) {\n\t\t\tlet top = 0\n\t\t\tlet onRamp = false\n\t\t\tlet depthSum = 0\n\t\t\t// water lies at the foot of a cliff, never up its face\n\t\t\tlet wetLevel = Infinity\n\t\t\tfor (let cz = iz - 1; cz <= iz; cz++) {\n\t\t\t\tfor (let cx = ix - 1; cx <= ix; cx++) {\n\t\t\t\t\tif (cx < 0 || cz < 0 || cx >= width || cz >= depth) continue\n\t\t\t\t\tconst c = cz * width + cx\n\t\t\t\t\ttop = Math.max(top, levels[c])\n\t\t\t\t\tif (ramps[c]) onRamp = true\n\t\t\t\t\tconst wet = waterAt(c, cx, cz)\n\t\t\t\t\tdepthSum += WATER_DEPTH[wet] ?? 0\n\t\t\t\t\tif (wet) wetLevel = Math.min(wetLevel, levels[c])\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst v = iz * vx + ix\n\t\t\tconst level = onRamp ? averageLevel(map, ix, iz) : top\n\t\t\tvertexLevels[(iz - z0) * rowLength + (ix - x0)] = level\n\t\t\tconst under = carved ? carved.ground[(iz - z0) * rowLength + (ix - x0)] : ground[v]\n\t\t\tconst land = under + level * cliffHeight\n\t\t\tterrain.heights[v] = land - depthSum / 4\n\t\t\tterrain.waterHeights[v] = under + Math.min(wetLevel, level) * cliffHeight - WATER_SURFACE\n\t\t}\n\t}\n\tconst levelAt = (ix: number, iz: number) => vertexLevels[(iz - z0) * rowLength + (ix - x0)]\n\tfor (let cz = z0; cz < z1; cz++) {\n\t\tfor (let cx = x0; cx < x1; cx++) {\n\t\t\tconst c = cz * width + cx\n\t\t\tterrain.water[c] = waterAt(c, cx, cz)\n\t\t\tterrain.tiles[c] = map.tiles[c]\n\t\t\tfor (const id in map.cells) terrain.cellLayer(id)[c] = map.cells[id][c]\n\t\t\tif (!ramps[c]) {\n\t\t\t\tterrain.levels[c] = levels[c]\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\t// a ramp belongs to the level below until halfway up\n\t\t\tconst middle = (levelAt(cx, cz) + levelAt(cx + 1, cz) + levelAt(cx, cz + 1) + levelAt(cx + 1, cz + 1)) / 4\n\t\t\tterrain.levels[c] = Math.floor(middle + 0.5)\n\t\t}\n\t}\n\tconst touched = { x: x0, z: z0, width: x1 - x0, depth: z1 - z0 }\n\tpaintPaths(map, terrain.tiles, touched)\n\t// last: what doodads block, and the decks of bridges over the heights just worked out, where they were\n\tblockByDoodads(map, terrain, area && touched)\n\treturn touched\n}\n\n/**\n * Paints the ground under the paths that say so, over the paint of the map: the tiles are those of the map's tileset.\n * Within `area` only, when it is given\n */\nfunction paintPaths(map: GameMap, tiles: Uint8Array, area: CellRect = { x: 0, z: 0, width: map.width, depth: map.depth }): void {\n\tconst width = area.x + area.width\n\tconst depth = area.z + area.depth\n\tfor (const def of map.paths) {\n\t\t// a profile's ground over the path's paint, as wide as its bed\n\t\tconst bed = def.profile?.ground !== undefined\n\t\tconst paint = bed ? def.profile!.ground : def.paint\n\t\tconst wide = bed ? (def.profile!.width ?? def.width) : def.width\n\t\tconst tile = paint === undefined ? 0 : map.tileset.indexOf(paint) + 1\n\t\tif (!tile || !def.points.length) continue\n\t\tconst path = new Path(def.points, wide)\n\t\t// only the cells within reach of its points, not the whole map\n\t\tconst reach = wide / 2 + 1\n\t\tconst xs = def.points.map((point) => point.x)\n\t\tconst zs = def.points.map((point) => point.z)\n\t\tfor (let cz = Math.max(Math.floor(Math.min(...zs) - reach), area.z); cz < Math.min(Math.ceil(Math.max(...zs) + reach), depth); cz++) {\n\t\t\tfor (let cx = Math.max(Math.floor(Math.min(...xs) - reach), area.x); cx < Math.min(Math.ceil(Math.max(...xs) + reach), width); cx++) {\n\t\t\t\tif (path.containsCell(cx, cz)) tiles[cz * map.width + cx] = tile\n\t\t\t}\n\t\t}\n\t}\n}\n\n/** Average level of the cells within ramp reach of a vertex */\nfunction averageLevel(map: GameMap, ix: number, iz: number): number {\n\tconst { width, depth, levels } = map\n\tlet sum = 0\n\tlet count = 0\n\tfor (let cz = Math.max(iz - RAMP_REACH, 0); cz < Math.min(iz + RAMP_REACH, depth); cz++) {\n\t\tfor (let cx = Math.max(ix - RAMP_REACH, 0); cx < Math.min(ix + RAMP_REACH, width); cx++) {\n\t\t\tsum += levels[cz * width + cx]\n\t\t\tcount++\n\t\t}\n\t}\n\treturn count ? sum / count : 0\n}\n\n/**\n * Cell of a map a point is in\n *\n * @internal\n */\nexport const mapCell = (map: GameMap, x: number, z: number): number =>\n\tclamp(Math.floor(z), 0, map.depth - 1) * map.width + clamp(Math.floor(x), 0, map.width - 1)\n\n// ---- tiles\n\n/**\n * Brings the paint of a map in line with a game's tiles, in place: afterwards index 1 is the game's first tile, and\n * so on. What was painted with a tile the game does not have keeps it, under an index after the game's: the map\n * loses nothing, and the file has it still. Returns the names of those, which no world is given\n *\n * @beta\n */\nexport function adoptTileset(map: GameMap, tiles: readonly string[]): string[] {\n\tconst used = new Set(map.tiles)\n\tconst strangers = map.tileset.filter((id, i) => !tiles.includes(id) && used.has(i + 1))\n\tconst tileset = [...tiles, ...strangers]\n\tif (tileset.length > MAX_TILES) throw new Error(`Map: ${tileset.length} tiles are more than a map can hold`)\n\tif (tileset.length !== map.tileset.length || tileset.some((id, i) => id !== map.tileset[i])) {\n\t\tconst remap = tileRemap(map.tileset, tileset)\n\t\tfor (let c = 0; c < map.tiles.length; c++) map.tiles[c] = remap[map.tiles[c]] ?? 0\n\t\tmap.tileset = tileset\n\t}\n\treturn strangers\n}\n\n/**\n * The paint of a map as a game's tiles have it: what is painted with a tile the game does not have is no paint\n *\n * @internal\n */\nexport function tilesFor(map: GameMap, tiles: readonly string[]): Uint8Array {\n\tconst remap = tileRemap(map.tileset, tiles)\n\treturn map.tiles.map((tile) => remap[tile] ?? 0)\n}\n"],"mappings":"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"}
@@ -11,17 +11,21 @@ import type { MapDoodadLight, MapEnvironment } from './look';
11
11
  * cliff levels, ramps between levels, water and paint. The layers are what a map file stores, the terrain is
12
12
  * derived from them whenever one changes.
13
13
  *
14
- * @beta
14
+ * @public
15
15
  */
16
16
  export interface GameMap {
17
+ /** The map's name, as lists and the editor show it */
17
18
  name: string;
19
+ /** A line about the map, for lists of maps */
18
20
  description: string;
19
21
  /**
20
- * The game the map was made for, by the id of its module (`GameModule.id`): a world is not made from it for
22
+ * The game the map was made for, by the id of its module (`Rules.id`): a world is not made from it for
21
23
  * another. For any game when left out, like the maps made before maps said
22
24
  */
23
25
  game?: string;
26
+ /** The map's width in cells */
24
27
  width: number;
28
+ /** The map's depth in cells */
25
29
  depth: number;
26
30
  /** How much higher a level stands than the one below */
27
31
  cliffHeight: number;
@@ -54,7 +58,9 @@ export interface GameMap {
54
58
  tileset: string[];
55
59
  /** The players who can take part. Neutral and the creeps are always there on top of these */
56
60
  players: MapPlayer[];
61
+ /** What stands on the map when the game begins: units, buildings, trees, mines */
57
62
  objects: MapObject[];
63
+ /** The creep camps of the map */
58
64
  camps: MapCamp[];
59
65
  /** Parts of the map the rules watch by name: who walks in and out (see `MapRegion`) */
60
66
  regions: MapRegion[];
@@ -68,6 +74,7 @@ export interface GameMap {
68
74
  cameras: MapCamera[];
69
75
  /** Groups what is placed can be drawn from when the game starts, and tables of what drops (see `MapRandomGroup`) */
70
76
  randomGroups?: MapRandomGroup[];
77
+ /** The tables of what dropped things come from, by name (`MapObject.drops`) */
71
78
  itemTables?: MapItemTable[];
72
79
  /**
73
80
  * The map's own definitions (campaign plan RC8), a `data.json` as the game's has it (`GameData`): laid over the
@@ -88,7 +95,7 @@ export interface GameMap {
88
95
  /**
89
96
  * Whether the whole map starts explored for everyone, the fog over it all the same: its ground, and what stands on it
90
97
  * and belongs to no player (trees, mines, neutral buildings), seen from the first moment. Yes or no over the game's
91
- * (`FogRules.startExplored`); the game's when left out
98
+ * (`FogSettings.startExplored`); the game's when left out
92
99
  */
93
100
  explored?: boolean;
94
101
  /** What the loading screen says while it loads */
@@ -123,11 +130,19 @@ export interface GameMap {
123
130
  */
124
131
  extra?: Record<string, unknown>;
125
132
  }
126
- /** @beta */
133
+ /**
134
+ * A seat for a player of the map: the player's id, name, team and colour with the options for what they start with
135
+ *
136
+ * @beta
137
+ */
127
138
  export interface MapPlayer {
139
+ /** The player's id, the number units and entities are owned by */
128
140
  id: PlayerId;
141
+ /** The player's name as lobbies show it */
129
142
  name: string;
143
+ /** The player's team number; players of the same number are allies */
130
144
  team: number;
145
+ /** The player's colour as red, green and blue in 0..1 */
131
146
  color: [number, number, number];
132
147
  /** Where their base goes, for a game that gives everyone a start */
133
148
  start?: Vec2;
@@ -141,7 +156,7 @@ export interface MapPlayer {
141
156
  /** What they start with, by resource id, over what the game gives everyone */
142
157
  resources?: Record<string, number>;
143
158
  /**
144
- * The race they play, fixed by the map (a campaign's), of the game's races (`GameModule.races`), or `random`: not
159
+ * The race they play, fixed by the map (a campaign's), of the game's races (`Rules.races`), or `random`: not
145
160
  * chosen in a lobby. Left to the lobby, or the game's first, when left out
146
161
  */
147
162
  race?: string;
@@ -156,6 +171,7 @@ export interface MapPlayer {
156
171
  export interface MapForce {
157
172
  /** The team, as its players have it (`MapPlayer.team`) */
158
173
  team: number;
174
+ /** The team's name, shown in lobbies and for the game to read */
159
175
  name: string;
160
176
  /** Its players see what each other sees. Teams always do in this engine: kept for the game to read */
161
177
  sharedVision?: boolean;
@@ -171,12 +187,17 @@ export interface MapForce {
171
187
  export interface MapCamera {
172
188
  /** The editor's, see `MapRegion.id` */
173
189
  id: number;
190
+ /** The camera's name, which cinematics and code find it by */
174
191
  name: string;
192
+ /** The camera's target on the map's x axis, in cells */
175
193
  x: number;
194
+ /** The camera's target on the map's z axis, in cells */
176
195
  z: number;
196
+ /** How far the camera is from what it looks at */
177
197
  distance: number;
178
198
  /** Radians around the vertical axis, 0 looking north, and between the view and the ground */
179
199
  yaw: number;
200
+ /** The angle between the view and the ground, in radians */
180
201
  pitch: number;
181
202
  }
182
203
  /**
@@ -185,11 +206,17 @@ export interface MapCamera {
185
206
  * @beta
186
207
  */
187
208
  export interface MapObject {
209
+ /** The object's id on the map, used by the editor */
188
210
  id: number;
211
+ /** The id of the unit type placed */
189
212
  type: string;
213
+ /** The player that owns it (`MAP_NEUTRAL` or `MAP_CREEPS` for the neutral and the creeps) */
190
214
  owner: PlayerId;
215
+ /** Where it stands on the map's x axis, in cells */
191
216
  x: number;
217
+ /** Where it stands on the map's z axis, in cells */
192
218
  z: number;
219
+ /** The way it faces in radians, the way entities do (0 is along +z) */
193
220
  facing: number;
194
221
  /** How big it is drawn */
195
222
  scale: number;
@@ -243,8 +270,11 @@ export interface MapObject {
243
270
  * @beta
244
271
  */
245
272
  export interface MapObjectOrder {
273
+ /** What the order is: `move` to a point or along a path, `patrol`, `guard` or `hold` */
246
274
  kind: 'move' | 'patrol' | 'guard' | 'hold';
275
+ /** The name of a path of the map it follows, bend after bend */
247
276
  path?: string;
277
+ /** The point it goes to, or guards */
248
278
  point?: Vec2;
249
279
  }
250
280
  /**
@@ -258,6 +288,7 @@ export interface MapRegion {
258
288
  id: number;
259
289
  /** What the rules know it by. No two things on a map have the same, whatever they are */
260
290
  name: string;
291
+ /** The shape of the region: a circle or a rectangle (`AreaShape`) */
261
292
  shape: AreaShape;
262
293
  /** What it is drawn in, in the editor, to tell it from the others. The editor picks one when left out */
263
294
  color?: [number, number, number];
@@ -292,7 +323,9 @@ export interface MapPoint {
292
323
  id: number;
293
324
  /** What the rules know it by. No two things on a map have the same, whatever they are */
294
325
  name: string;
326
+ /** Where it stands on the map's x axis, in cells */
295
327
  x: number;
328
+ /** Where it stands on the map's z axis, in cells */
296
329
  z: number;
297
330
  /** Radians, the way entities face: 0 is along +z */
298
331
  facing: number;
@@ -311,13 +344,17 @@ export interface MapDoodad {
311
344
  id: number;
312
345
  /** The model, by its path in `models/`: the map's own, the game's, or a shared one */
313
346
  model: string;
347
+ /** Where it stands on the map's x axis, in cells */
314
348
  x: number;
349
+ /** Where it stands on the map's z axis, in cells */
315
350
  z: number;
316
351
  /** How high above the ground under it */
317
352
  y?: number;
318
353
  /** Radians: which way it faces, the way entities do (0 is along +z), then how far it leans forward and to the side */
319
354
  yaw: number;
355
+ /** How far it leans forward in radians; 0 when left out */
320
356
  pitch?: number;
357
+ /** How far it leans to the side in radians; 0 when left out */
321
358
  roll?: number;
322
359
  /** How much bigger or smaller it is drawn than it was made, across, up and deep */
323
360
  scale: [number, number, number];
@@ -337,6 +374,7 @@ export interface MapDoodad {
337
374
  * name while the game runs (`setGate`). Shut when the game starts, unless `open`
338
375
  */
339
376
  gate?: boolean;
377
+ /** Whether the gate starts open; shut when left out */
340
378
  open?: boolean;
341
379
  /** How far around its middle it blocks, in cells */
342
380
  radius?: number;
@@ -407,7 +445,7 @@ export interface MapDoodadDetail {
407
445
  }
408
446
  /**
409
447
  * How much detail things are drawn with by their distance on a map (`MapEnvironment.detail`), over the game's
410
- * (`GameView.scene.detail`): a forest map drawn lighter. The screen's: the rules never see it
448
+ * (`GameView.world.detail`): a forest map drawn lighter. The screen's: the rules never see it
411
449
  *
412
450
  * @beta
413
451
  */
@@ -416,12 +454,18 @@ export interface MapDetail {
416
454
  scale?: number;
417
455
  /** Past this far from the camera, in cells, no scenery, tree or mine is drawn at all, nor casts a shadow. None when left out */
418
456
  cull?: number;
457
+ /**
458
+ * How many cells past the edges of the view what is there is drawn already, so that it is ready (its pictures, its
459
+ * shaders, its scenery merged) before the camera brings it in: no trees coming in as the view moves, for a little more
460
+ * drawn off the screen. The game's when left out
461
+ */
462
+ preload?: number;
419
463
  /**
420
464
  * How many levels coarser than it is drawn at a thing casts its shadow, where its level does not say (`shadow`): 1
421
465
  * draws a tree's shadow at its next lighter level. The game's when left out
422
466
  */
423
467
  shadowBias?: number;
424
- /** The levels of every model that has none said of it, over the game's (`GameView.scene.detail.levels`) */
468
+ /** The levels of every model that has none said of it, over the game's (`GameView.world.detail.levels`) */
425
469
  levels?: MapDetailLevel[];
426
470
  /** A model's levels, by its path in `models/`, over its own and the game's */
427
471
  models?: Record<string, MapDetailLevel[]>;
@@ -433,6 +477,7 @@ export interface MapDetail {
433
477
  * @beta
434
478
  */
435
479
  export interface MapRandomGroup {
480
+ /** The group's name, which `MapObject.random` names it by */
436
481
  name: string;
437
482
  /** One of these, more likely by its weight */
438
483
  choices?: {
@@ -448,7 +493,9 @@ export interface MapRandomGroup {
448
493
  * @beta
449
494
  */
450
495
  export interface MapItemTable {
496
+ /** The table's name, which `MapObject.drops` names it by */
451
497
  name: string;
498
+ /** The lines of the table, one of which is picked by weight */
452
499
  items: MapItemTableEntry[];
453
500
  /** How likely it is to drop anything, 0..1. Always when left out */
454
501
  chance?: number;
@@ -460,9 +507,13 @@ export interface MapItemTable {
460
507
  * @beta
461
508
  */
462
509
  export interface MapItemTableEntry {
510
+ /** The item's id, for a line that names one */
463
511
  item?: string;
512
+ /** The level of item it stands for, for a line that does not name one */
464
513
  level?: number;
514
+ /** The class of item it stands for, for a line that does not name one */
465
515
  class?: string;
516
+ /** How likely this line is among the table's, relative to the others' weights */
466
517
  weight: number;
467
518
  }
468
519
  /**
@@ -471,7 +522,11 @@ export interface MapItemTableEntry {
471
522
  * @beta
472
523
  */
473
524
  export declare const BLOCKS_BUILD = 1;
474
- /** @beta */
525
+ /**
526
+ * The `Terrain.blocked` value for a cell where walking and building are both kept off
527
+ *
528
+ * @beta
529
+ */
475
530
  export declare const BLOCKS_WALK = 2;
476
531
  /**
477
532
  * A named line of the map, through points in order, with a width: `world.map.path('road')` (see `Path`)
@@ -483,6 +538,7 @@ export interface MapPath {
483
538
  id: number;
484
539
  /** What the rules know it by. No two things on a map have the same, whatever they are */
485
540
  name: string;
541
+ /** The points of the path in order, in cells */
486
542
  points: Vec2[];
487
543
  /** How wide it is, in cells: what it paints and keeps clear, and what `Path.contains` says is on it */
488
544
  width: number;
@@ -518,7 +574,7 @@ export interface PathProfile {
518
574
  water?: boolean;
519
575
  }
520
576
  /**
521
- * The time of day of a map, in a game with days (`GameModule.day`). The rules': what is done at night is done by it
577
+ * The time of day of a map, in a game with days (`Rules.day`). The rules': what is done at night is done by it
522
578
  *
523
579
  * @beta
524
580
  */
@@ -534,8 +590,11 @@ export interface MapDay {
534
590
  * @beta
535
591
  */
536
592
  export interface MapCamp {
593
+ /** The map's id for the camp, used by the editor */
537
594
  id: number;
595
+ /** Where the camp stands on the map's x axis, in cells */
538
596
  x: number;
597
+ /** Where the camp stands on the map's z axis, in cells */
539
598
  z: number;
540
599
  /** Unit types, the first one stands in the middle */
541
600
  units: string[];
@@ -560,7 +619,7 @@ export declare const MAP_NEUTRAL: PlayerId;
560
619
  export declare const MAP_CREEPS: PlayerId;
561
620
  /**
562
621
  * Players a map may have at most, whatever the game: each could be a team of its own, and the fog of war keeps 32
563
- * teams apart (`MAX_FOG_TEAMS`). How many a game allows is its own (`GameModule.maxPlayers`, 8 when it says nothing)
622
+ * teams apart (`MAX_FOG_TEAMS`). How many a game allows is its own (`Rules.maxPlayers`, 8 when it says nothing)
564
623
  *
565
624
  * @beta
566
625
  */
@@ -571,17 +630,33 @@ export declare const MAX_MAP_PLAYERS = 32;
571
630
  * @beta
572
631
  */
573
632
  export declare const MAX_LEVEL = 4;
574
- /** @beta */
633
+ /**
634
+ * The colours players are given by their number, in 0..1; past the end they start again
635
+ *
636
+ * @beta
637
+ */
575
638
  export declare const PLAYER_COLORS: [number, number, number][];
576
- /** @beta */
639
+ /**
640
+ * Makes the `MapPlayer` for a player's id, with the default name `Player <id>`, its own team and the colour from `PLAYER_COLORS`
641
+ *
642
+ * @beta
643
+ */
577
644
  export declare const playerSlot: (id: number) => MapPlayer;
578
- /** @beta */
645
+ /**
646
+ * The options `createMap` makes a map with
647
+ *
648
+ * @beta
649
+ */
579
650
  export interface NewMapOptions {
651
+ /** The map's name: `New map` when left out */
580
652
  name?: string;
653
+ /** The map's width in cells */
581
654
  width: number;
655
+ /** The map's depth in cells */
582
656
  depth: number;
583
657
  /** Height of the land everywhere */
584
658
  height?: number;
659
+ /** How many player slots the map has: 2 when left out */
585
660
  players?: number;
586
661
  /** The game it is for, see `GameMap.game` */
587
662
  game?: string;
@@ -600,9 +675,13 @@ export declare function createMap(options: NewMapOptions): GameMap;
600
675
  * @beta
601
676
  */
602
677
  export interface CellRect {
678
+ /** The rectangle's first cell on the x axis */
603
679
  x: number;
680
+ /** The rectangle's first cell on the z axis */
604
681
  z: number;
682
+ /** How many cells across it is */
605
683
  width: number;
684
+ /** How many cells down it is */
606
685
  depth: number;
607
686
  }
608
687
  /**