@v12-engine/engine 0.1.1 → 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,795 @@
1
+ import { cos, exp, sin } from "./exactMath.js";
2
+ import { defineComponent } from "./components.js";
3
+ import { defineEvent } from "./events.js";
4
+ import { deposit, edgeDistance } from "./entity.js";
5
+ import { defineHook, defineHookType } from "./hooks.js";
6
+ import { areaReach, effectArea, inArea } from "./abilities/shapes.js";
7
+ import { defineEffect, effectFilter } from "./abilities/effects.js";
8
+ import { mapInfo } from "./names.js";
9
+ import { foliageFireOf } from "./foliage.js";
10
+ //#region src/burning.ts
11
+ /**
12
+ * The burning pack's id (`burningPack`), for `hasPack`
13
+ *
14
+ * @beta
15
+ */
16
+ var BURNING = "burning";
17
+ /**
18
+ * Asked before a thing catches fire (`BurnStart`): a handler refuses it or changes its chance. Once for every try:
19
+ * of a call, a spread, or grass burning beside it; so a handler does little
20
+ *
21
+ * @beta
22
+ */
23
+ var burnStart = /* @__PURE__ */ defineHookType({ id: "burning.start" });
24
+ /**
25
+ * Something caught fire: how, who lit the fire it is of, what kind of burning it is. What a game's rules and its computer
26
+ * players hear; the screens are told by what burns (`onFire`)
27
+ *
28
+ * @beta
29
+ */
30
+ var burnStarted = defineEvent({ id: "burning.started" });
31
+ /**
32
+ * Something burnt down: what kind of burning it was, who lit it, and what it left where it stood (`BurnsDef.leaves`), where
33
+ * it left a thing
34
+ *
35
+ * @beta
36
+ */
37
+ var burnt = defineEvent({ id: "burning.burnt" });
38
+ /**
39
+ * Something that burnt was put out (`putOut`, an ability): it stands, charred as far as it burnt
40
+ *
41
+ * @beta
42
+ */
43
+ var burnPutOut = defineEvent({ id: "burning.putOut" });
44
+ /**
45
+ * What burns or burnt and was put out, on the thing itself (`FireShown`): told to everyone who sees it as it is (no
46
+ * part of it one player's, so that what a team remembers of a tree is the same for each of them), kept by a save.
47
+ * `snapshotOf(entity.state, onFire)` on a screen; `isBurning` and `burningOf` in the rules
48
+ *
49
+ * @beta
50
+ */
51
+ var onFire = /* @__PURE__ */ defineComponent({
52
+ id: "burning",
53
+ replicate: "everyone",
54
+ same: (a, b) => a.how === b.how && a.since === b.since && a.ends === b.ends && a.out === b.out
55
+ });
56
+ /** What burns in a world (`FireList`), kept by a save */
57
+ var fireList = /* @__PURE__ */ defineComponent({
58
+ id: "burning.list",
59
+ default: () => ({
60
+ ids: [],
61
+ by: [],
62
+ ends: []
63
+ })
64
+ });
65
+ /** How much a gale makes a try downwind likelier (`BurningSpread.wind` 1, the wind's strength 1: e² ≈ 7.4 times), and upwind less */
66
+ var WIND = 2;
67
+ /** How often a burning thing that tries nothing is looked at, to see it still stands, in seconds */
68
+ var LOOK_EVERY = 1;
69
+ /** How often who stands by a burning thing is hurt (`BurningOptions.damage`), in seconds */
70
+ var SCORCH_EVERY = .5;
71
+ /**
72
+ * How likely a burning cell of grass is to light a thing that burns on it or beside it at one of its tries (four a
73
+ * second, `FoliageFire.every`, `FoliageFire.lights`): of grass of `fuel` 1, in still air and dry. A tree a front
74
+ * reaches, three or four cells about it burning, catches in a second or two, seldom in the first tick
75
+ */
76
+ var FROM_GRASS = .05;
77
+ /** Where the pack keeps its rules, on the pack, for the calls made on a world of its game */
78
+ var RULES = Symbol("burning rules");
79
+ /**
80
+ * The pack's rules: its settings, and what a tick and the calls do with a world's `fireList` and `onFire`. One a pack,
81
+ * for every world of its game: what it keeps of a world is scratch, emptied as each call ends
82
+ */
83
+ var BurningRules = class {
84
+ /** What burns, as the pack was told, before its type is asked */
85
+ decides;
86
+ /** The defaults of `BurnsDef` */
87
+ base;
88
+ /** Whether fire passes from one thing to the next, and how: none for never */
89
+ spread;
90
+ /** Damage a second to who stands by */
91
+ damage;
92
+ /** How far that reaches */
93
+ damageReach;
94
+ /** The type it is dealt as */
95
+ damageType;
96
+ /** The most that burns at once */
97
+ maxBurning;
98
+ /** Whether what burns tries the grass about it: the layers named, or every layer of the foliage pack (`true`) */
99
+ lightsFoliage;
100
+ /** The system that runs it */
101
+ system;
102
+ /** The air as last worked out (`airOf`) */
103
+ air;
104
+ /** How each type burns where the game decides nothing in code, by its definition: null for one that does not */
105
+ typed = /* @__PURE__ */ new WeakMap();
106
+ /** Scratch of a call: what a search found */
107
+ found = [];
108
+ /** Scratch of a call: what of it may catch, or be hurt, in order of their ids */
109
+ near = [];
110
+ /** Scratch of a tick: what caught in it, how, and who lit the fire it caught from */
111
+ fresh = [];
112
+ /** Scratch of a tick: the cells of grass that caught from what burns in it (`lightsFoliage`), by layer, cell and whose */
113
+ grassCaught = {
114
+ layers: [],
115
+ cells: [],
116
+ by: [],
117
+ keys: /* @__PURE__ */ new Set()
118
+ };
119
+ /** The link to the grass of each game seen, by its packs: none where neither way is on, or the game has no grass that burns */
120
+ links = /* @__PURE__ */ new WeakMap();
121
+ /** Scratch of a tick: who is hurt in it, and by whom */
122
+ hurt = [];
123
+ /** The thing being burnt down right now: its death is given its `how` (the `death` hook) */
124
+ ending;
125
+ constructor(options) {
126
+ this.decides = options.burns;
127
+ this.base = {
128
+ seconds: Math.max(0, options.seconds ?? 20),
129
+ leaves: options.leaves ?? "felled",
130
+ wood: options.wood ?? false,
131
+ how: options.how ?? "burnt"
132
+ };
133
+ const spread = options.spread === true ? {} : options.spread || void 0;
134
+ this.spread = spread && {
135
+ reach: Math.max(0, spread.reach ?? 1.5),
136
+ chance: Math.min(1, Math.max(0, spread.chance ?? .15)),
137
+ wind: Math.max(0, spread.wind ?? 1),
138
+ every: Math.max(0, spread.every ?? 1)
139
+ };
140
+ this.damage = Math.max(0, options.damage ?? 0);
141
+ this.damageReach = Math.max(0, options.damageReach ?? 1);
142
+ this.damageType = options.damageType ?? "magic";
143
+ this.maxBurning = Math.max(0, Math.floor(options.maxBurning ?? 2e3));
144
+ this.lightsFoliage = options.lightsFoliage ?? false;
145
+ this.system = {
146
+ name: "burning",
147
+ phase: "resolve",
148
+ update: (world) => {
149
+ const list = world.states.has(fireList) ? world.state(fireList) : void 0;
150
+ const grass = this.linkOf(world);
151
+ if (list?.ids.length || grass?.fromGrass && grass.fire.anyBurning(world)) this.tick(world, list, grass);
152
+ }
153
+ };
154
+ }
155
+ /** The link to the grass of a world's game (`GrassLink`): none where neither way is on or it has no grass that burns */
156
+ linkOf(world) {
157
+ const packs = world.registry.assembly?.rules.packs;
158
+ if (!packs) return void 0;
159
+ let link = this.links.get(packs);
160
+ if (link === void 0) {
161
+ const fire = foliageFireOf(world);
162
+ const lights = this.lightsFoliage;
163
+ const toGrass = !fire ? [] : fire.layers.flatMap((layer, l) => lights === true || Array.isArray(lights) && lights.includes(layer) ? [l] : []);
164
+ link = fire && (fire.lights || toGrass.length) ? {
165
+ fire,
166
+ toGrass,
167
+ fromGrass: fire.lights
168
+ } : null;
169
+ this.links.set(packs, link);
170
+ }
171
+ return link ?? void 0;
172
+ }
173
+ /** How a thing burns (`Burns`): none for what does not */
174
+ burnsOf(world, entity) {
175
+ const decided = this.decides?.(world, entity);
176
+ if (decided === void 0) {
177
+ let typed = this.typed.get(entity.def);
178
+ if (typed === void 0) this.typed.set(entity.def, typed = this.burnsBy(entity, void 0) ?? null);
179
+ return typed ?? void 0;
180
+ }
181
+ return this.burnsBy(entity, decided);
182
+ }
183
+ /** How a thing burns, as the game decided in code (`decided`) over its type, over the pack */
184
+ burnsBy(entity, decided) {
185
+ const own = decided ?? entity.def.burns ?? (entity.def.fellable ? true : void 0);
186
+ if (!own) return void 0;
187
+ const def = entity.def.burns;
188
+ const typed = typeof def === "object" ? def : void 0;
189
+ const said = typeof own === "object" ? own : void 0;
190
+ return {
191
+ seconds: Math.max(0, said?.seconds ?? typed?.seconds ?? this.base.seconds),
192
+ leaves: said?.leaves ?? typed?.leaves ?? this.base.leaves,
193
+ wood: said?.wood ?? typed?.wood ?? this.base.wood,
194
+ how: said?.how ?? typed?.how ?? this.base.how
195
+ };
196
+ }
197
+ /** The air over the map now (`Air`), worked out again as the map's environment changes */
198
+ airOf(world) {
199
+ const environment = world.state(mapInfo).environment;
200
+ if (this.air && this.air.of === environment) return this.air;
201
+ const wind = environment?.wind;
202
+ const strength = Math.min(1, Math.max(0, wind?.strength ?? 0));
203
+ const turn = (wind?.around ?? 0) % 360 * Math.PI / 180;
204
+ return this.air = {
205
+ of: environment,
206
+ strength,
207
+ x: strength ? sin(turn) : 0,
208
+ z: strength ? -cos(turn) : 0
209
+ };
210
+ }
211
+ /** Whether something with a chance happens: by the world's numbers where it is neither sure nor never */
212
+ happens(world, chance) {
213
+ return chance >= 1 || chance > 0 && world.rng.next() < chance;
214
+ }
215
+ /** How many ticks a stretch of seconds is: at least one */
216
+ ticks(world, seconds) {
217
+ return Math.max(1, Math.round(seconds / world.dt));
218
+ }
219
+ /**
220
+ * Sets a thing alight, as `setAlight` says: asked of the game (`burnStart`) at `chance`, once, rolled where it is not
221
+ * sure, under the most that may burn; started (`start`). Whether it caught
222
+ */
223
+ light(world, entity, cause, by, from, chance, options = {}) {
224
+ if (!entity.alive || isBurning(entity)) return false;
225
+ const burns = this.burnsOf(world, entity);
226
+ if (!burns) return false;
227
+ if (world.states.has(fireList) && world.state(fireList).ids.length >= this.maxBurning) return false;
228
+ if (world.hooks.has(burnStart)) {
229
+ const asked = world.hooks.run(burnStart, {
230
+ entity,
231
+ cause,
232
+ ...from ? { from } : {},
233
+ ...by ? { by: world.entities.get(by) } : {},
234
+ how: options.how ?? burns.how,
235
+ chance,
236
+ cancelled: false
237
+ });
238
+ if (asked.cancelled) return false;
239
+ chance = held(asked.chance);
240
+ }
241
+ if (!this.happens(world, chance)) return false;
242
+ return this.start(world, entity, cause, by, options);
243
+ }
244
+ /**
245
+ * A thing catches, asked and rolled already (by `light`, or at a try of a spread or of the grass): set burning for
246
+ * its time, under the most that may burn, and told (`burnStarted`). Into the list first, then marked (`onFire`):
247
+ * what is marked is never outside the list, whatever throws (one listed and not marked is dropped at its next
248
+ * turn). Whether it caught
249
+ */
250
+ start(world, entity, cause, by, options = {}) {
251
+ if (!entity.alive || isBurning(entity)) return false;
252
+ const burns = this.burnsOf(world, entity);
253
+ if (!burns) return false;
254
+ const list = world.state(fireList);
255
+ if (list.ids.length >= this.maxBurning) return false;
256
+ const how = options.how ?? burns.how;
257
+ const { tick } = world;
258
+ const length = this.ticks(world, options.seconds ?? burns.seconds);
259
+ const was = entity.get(onFire);
260
+ const done = was?.out !== void 0 && was.ends > was.since ? Math.min(1, (was.out - was.since) / (was.ends - was.since)) : 0;
261
+ const since = tick - Math.round(done * length);
262
+ const ends = Math.max(tick + 1, since + length);
263
+ insertId(list, entity.id, by, ends);
264
+ entity.set(onFire, {
265
+ how,
266
+ since,
267
+ ends
268
+ });
269
+ world.events.emit(burnStarted, {
270
+ entity: entity.id,
271
+ cause,
272
+ how,
273
+ ...by ? { by } : {}
274
+ });
275
+ return true;
276
+ }
277
+ /** Puts out a thing that burns: it stands, charred as far as it burnt. Whether it burnt */
278
+ putOut(world, entity) {
279
+ const state = entity.get(onFire);
280
+ if (!state || state.out !== void 0) return false;
281
+ entity.set(onFire, {
282
+ ...state,
283
+ out: world.tick
284
+ });
285
+ if (world.states.has(fireList)) removeId(world.state(fireList), entity.id);
286
+ world.events.emit(burnPutOut, { entity: entity.id });
287
+ return true;
288
+ }
289
+ /**
290
+ * A tick: what burns out burns down, what tries its neighbours this tick tries them (things, and the grass about it
291
+ * once a second where the pack says), burning grass whose turn it is tries what stands beside it
292
+ * (`FoliageFire.lights`), who stands by is hurt. What caught is set alight at the end, in order (things by their
293
+ * ids, cells by layer and index), and tries nothing this tick: nothing lights within what lit it
294
+ */
295
+ tick(world, list, grass) {
296
+ const { tick } = world;
297
+ const spread = this.spread;
298
+ const stride = spread ? this.ticks(world, spread.every) : 1;
299
+ const look = this.ticks(world, LOOK_EVERY);
300
+ const tries = !!spread && spread.chance > 0;
301
+ const scorch = this.ticks(world, SCORCH_EVERY);
302
+ const toGrass = grass?.toGrass.length ? grass : void 0;
303
+ const fresh = this.fresh;
304
+ const hurt = this.hurt;
305
+ const caught = this.grassCaught;
306
+ fresh.length = 0;
307
+ hurt.length = 0;
308
+ caught.layers.length = caught.cells.length = caught.by.length = 0;
309
+ caught.keys.clear();
310
+ let out;
311
+ if (list?.ids.length) {
312
+ const { ids, by, ends } = list;
313
+ let kept = 0;
314
+ for (let i = 0; i < ids.length; i++) {
315
+ const id = ids[i];
316
+ const whose = by[i];
317
+ const end = ends[i];
318
+ const trying = tries && turnOf(id, stride) === tick % stride;
319
+ const looking = turnOf(id, look) === tick % look;
320
+ if (end > tick && !trying && !looking) {
321
+ ids[kept] = id;
322
+ by[kept] = whose;
323
+ ends[kept++] = end;
324
+ continue;
325
+ }
326
+ const entity = world.entities.get(id);
327
+ const state = entity?.get(onFire);
328
+ if (!entity || !entity.alive || !state || state.out !== void 0) continue;
329
+ if (end <= tick) {
330
+ (out ??= []).push({
331
+ entity,
332
+ by: whose
333
+ });
334
+ continue;
335
+ }
336
+ ids[kept] = id;
337
+ by[kept] = whose;
338
+ ends[kept++] = end;
339
+ if (trying && ids.length + fresh.length < this.maxBurning) this.tryAround(world, entity, whose, spread);
340
+ if (toGrass && looking) this.tryGrass(world, entity, whose, toGrass);
341
+ }
342
+ ids.length = kept;
343
+ by.length = kept;
344
+ ends.length = kept;
345
+ if (this.damage && ids.length) this.scorch(world, list, scorch);
346
+ }
347
+ if (grass?.fromGrass) this.fromGrass(world, grass.fire, list?.ids.length ?? 0);
348
+ if (fresh.length) {
349
+ fresh.sort((a, b) => a.entity.id - b.entity.id);
350
+ let last = -1;
351
+ for (const each of fresh) {
352
+ if (each.entity.id === last) continue;
353
+ last = each.entity.id;
354
+ this.start(world, each.entity, each.cause, each.by);
355
+ }
356
+ fresh.length = 0;
357
+ }
358
+ if (caught.cells.length) {
359
+ grass.fire.lightCaught(world, caught.layers, caught.cells, caught.by);
360
+ caught.layers.length = caught.cells.length = caught.by.length = 0;
361
+ caught.keys.clear();
362
+ }
363
+ if (hurt.length) {
364
+ const amount = this.damage * scorch * world.dt;
365
+ hurt.sort((a, b) => a.unit.id - b.unit.id);
366
+ let last = -1;
367
+ for (const each of hurt) {
368
+ const { unit } = each;
369
+ if (unit.id === last || !unit.alive) continue;
370
+ last = unit.id;
371
+ world.damage(unit, amount, each.by ? world.entities.get(each.by) : void 0, {
372
+ damageType: this.damageType,
373
+ tags: ["fire"],
374
+ how: "burnt"
375
+ });
376
+ }
377
+ hurt.length = 0;
378
+ }
379
+ if (out) for (const each of out) this.burnDown(world, each.entity, each.by);
380
+ }
381
+ /**
382
+ * A burning thing's try at what burns within its reach (`BurningSpread`): each by the spread's chance, likelier
383
+ * downwind and less upwind, asked of the game (`burnStart`, once a try) and rolled in order of their ids. Into the
384
+ * tick's fresh
385
+ */
386
+ tryAround(world, entity, by, spread) {
387
+ const near = this.near;
388
+ near.length = 0;
389
+ const { x, z } = entity.pos;
390
+ for (const other of world.spatial.queryStatic(x, z, spread.reach + entity.def.radius, this.found)) if (other !== entity && other.alive && !other.hidden && !isBurning(other)) near.push(other);
391
+ if (!near.length) return;
392
+ near.sort((a, b) => a.id - b.id);
393
+ const air = this.airOf(world);
394
+ const hooked = world.hooks.has(burnStart);
395
+ for (const other of near) {
396
+ if (edgeDistance(entity, other) > spread.reach) continue;
397
+ const burns = this.burnsOf(world, other);
398
+ if (!burns) continue;
399
+ let chance = spread.chance;
400
+ if (air.strength && spread.wind) {
401
+ const dx = other.pos.x - x;
402
+ const dz = other.pos.z - z;
403
+ const far = Math.sqrt(dx * dx + dz * dz);
404
+ if (far > 0) chance *= exp(WIND * spread.wind * air.strength * (dx * air.x + dz * air.z) / far);
405
+ }
406
+ chance = Math.min(1, chance);
407
+ if (hooked) {
408
+ const asked = world.hooks.run(burnStart, {
409
+ entity: other,
410
+ cause: "spread",
411
+ from: entity,
412
+ ...by ? { by: world.entities.get(by) } : {},
413
+ how: burns.how,
414
+ chance,
415
+ cancelled: false
416
+ });
417
+ if (asked.cancelled) continue;
418
+ chance = held(asked.chance);
419
+ }
420
+ if (this.happens(world, chance)) this.fresh.push({
421
+ entity: other,
422
+ by,
423
+ cause: "spread"
424
+ });
425
+ }
426
+ near.length = 0;
427
+ }
428
+ /**
429
+ * A burning thing's try at the grass under it and one cell round (`lightsFoliage`), once a second: each cell of the
430
+ * layers it lights that may catch, by the grass's chance (`FoliageFireRules.chanceFrom`: its style, the wet, the
431
+ * wind by this pack's `wind`), asked of the game (`foliageIgnite`, `burning`, once a try) and rolled, in order of
432
+ * the layers and the cells. Into the tick's grass caught, as many as the grass has room for
433
+ */
434
+ tryGrass(world, entity, by, link) {
435
+ const { fire, toGrass } = link;
436
+ const caught = this.grassCaught;
437
+ let room = fire.room(world) - caught.cells.length;
438
+ if (room <= 0) return;
439
+ const { width, depth } = world.terrain;
440
+ const size = width * depth;
441
+ const { x, z, hw, hd } = entity.rect;
442
+ const weight = this.spread?.wind ?? 1;
443
+ for (const l of toGrass) for (let cz = Math.max(Math.floor(z - hd) - 1, 0); cz <= Math.min(Math.ceil(z + hd), depth - 1); cz++) for (let cx = Math.max(Math.floor(x - hw) - 1, 0); cx <= Math.min(Math.ceil(x + hw), width - 1); cx++) {
444
+ const cell = cz * width + cx;
445
+ const key = l * size + cell;
446
+ if (caught.keys.has(key)) continue;
447
+ const chance = fire.chanceFrom(world, l, cell, entity.pos.x, entity.pos.z, weight);
448
+ if (!(chance > 0) || !this.happens(world, fire.ask(world, l, cell, "burning", void 0, by, chance, entity))) continue;
449
+ caught.keys.add(key);
450
+ caught.layers.push(l);
451
+ caught.cells.push(cell);
452
+ caught.by.push(by);
453
+ if (--room <= 0) return;
454
+ }
455
+ }
456
+ /**
457
+ * The burning grass whose turn it is this tick (`FoliageFire.every`), at what burns and stands on its cell or one
458
+ * next to it (`FoliageFire.lights`): each by `FROM_GRASS` and the cell's heat, likelier downwind (by the grass's
459
+ * `wind`), asked of the game (`burnStart`, `foliage`, once a try) and rolled, cell by cell in order and what stands
460
+ * by each in order of their ids. Into the tick's fresh, under the most that may burn
461
+ */
462
+ fromGrass(world, fire, burning) {
463
+ if (burning + this.fresh.length >= this.maxBurning) return;
464
+ const { width } = world.terrain;
465
+ const { grid } = world;
466
+ const air = this.airOf(world);
467
+ const weight = fire.wind;
468
+ const hooked = world.hooks.has(burnStart);
469
+ const near = this.near;
470
+ fire.eachTrying(world, (l, cell, by, heat) => {
471
+ if (burning + this.fresh.length >= this.maxBurning) return;
472
+ const cx = cell % width;
473
+ const cz = (cell - cx) / width;
474
+ const x = cx + .5;
475
+ const z = cz + .5;
476
+ near.length = 0;
477
+ for (let dz = -1; dz <= 1; dz++) for (let dx = -1; dx <= 1; dx++) {
478
+ const id = grid.occupantAt(cx + dx, cz + dz);
479
+ if (id <= 0 || near.some((each) => each.id === id)) continue;
480
+ const other = world.entities.get(id);
481
+ if (other && other.alive && !other.hidden && !isBurning(other)) near.push(other);
482
+ }
483
+ if (!near.length) return;
484
+ near.sort((a, b) => a.id - b.id);
485
+ for (const other of near) {
486
+ const burns = this.burnsOf(world, other);
487
+ if (!burns) continue;
488
+ let chance = FROM_GRASS * heat;
489
+ if (air.strength && weight) {
490
+ const dx = other.pos.x - x;
491
+ const dz = other.pos.z - z;
492
+ const far = Math.sqrt(dx * dx + dz * dz);
493
+ if (far > 0) chance *= exp(WIND * weight * air.strength * (dx * air.x + dz * air.z) / far);
494
+ }
495
+ chance = Math.min(1, chance);
496
+ if (hooked) {
497
+ const asked = world.hooks.run(burnStart, {
498
+ entity: other,
499
+ cause: "foliage",
500
+ layer: fire.layers[l],
501
+ cell,
502
+ ...by ? { by: world.entities.get(by) } : {},
503
+ how: burns.how,
504
+ chance,
505
+ cancelled: false
506
+ });
507
+ if (asked.cancelled) continue;
508
+ chance = held(asked.chance);
509
+ }
510
+ if (this.happens(world, chance)) this.fresh.push({
511
+ entity: other,
512
+ by,
513
+ cause: "foliage"
514
+ });
515
+ }
516
+ near.length = 0;
517
+ });
518
+ }
519
+ /**
520
+ * Who stands by what burns, into the tick's hurt: units on the ground, each on its turn (once in `stride` ticks, by a
521
+ * hash of its id), looked at for something burning within `damageReach` of it; hurt once, by whoever lit the first
522
+ * of those in order of their ids. Done from the units, of which there are fewer than trees in a forest fire
523
+ */
524
+ scorch(world, list, stride) {
525
+ const turn = world.tick % stride;
526
+ const reach = this.damageReach;
527
+ for (const unit of world.units.values()) {
528
+ if (turnOf(unit.id, stride) !== turn) continue;
529
+ if (!unit.alive || unit.hidden || unit.flying || unit.def.kind !== "unit" || unit.def.footprint) continue;
530
+ let first;
531
+ for (const thing of world.spatial.queryStatic(unit.pos.x, unit.pos.z, reach + unit.def.radius, this.found)) {
532
+ if (thing === unit || !isBurning(thing) || first && first.id < thing.id || edgeDistance(thing, unit) > reach) continue;
533
+ first = thing;
534
+ }
535
+ if (!first) continue;
536
+ const at = placeOf(list.ids, first.id);
537
+ this.hurt.push({
538
+ unit,
539
+ by: list.ids[at] === first.id ? list.by[at] : 0
540
+ });
541
+ }
542
+ }
543
+ /**
544
+ * A thing burnt down: told (`burnt`), killed as its `leaves` says (`felled`, or `burnt`, its death's `how` the kind of
545
+ * burning), and what it leaves put down where it stood, with its wood where it keeps it
546
+ */
547
+ burnDown(world, entity, whose) {
548
+ const state = entity.get(onFire);
549
+ if (!entity.alive || !state) return;
550
+ const burns = this.burnsOf(world, entity) ?? this.base;
551
+ const by = whose ? world.entities.get(whose) : void 0;
552
+ const at = {
553
+ x: entity.pos.x,
554
+ z: entity.pos.z
555
+ };
556
+ const { owner } = entity;
557
+ const wood = entity.get(deposit)?.amount;
558
+ const leaves = burns.leaves;
559
+ this.ending = {
560
+ entity,
561
+ how: state.how
562
+ };
563
+ try {
564
+ world.kill(entity, by, false, leaves === "felled" ? "felled" : "burnt");
565
+ } finally {
566
+ this.ending = void 0;
567
+ }
568
+ let left;
569
+ if (leaves !== "felled" && leaves !== "nothing" && world.registry.units.has(leaves)) {
570
+ left = world.spawn(leaves, owner, at);
571
+ const holds = left.get(deposit);
572
+ if (burns.wood && holds && wood !== void 0) holds.amount = wood;
573
+ }
574
+ world.events.emit(burnt, {
575
+ entity: entity.id,
576
+ how: state.how,
577
+ ...whose ? { by: whose } : {},
578
+ ...left ? { left: left.id } : {}
579
+ });
580
+ }
581
+ };
582
+ /** A chance a handler of `burnStart` left, held to 0 to 1 */
583
+ var held = (chance) => Math.min(1, Math.max(0, chance || 0));
584
+ /**
585
+ * Which tick of every `stride` a burning thing tries those about it on: of a hash of its id, so that a forest's trees
586
+ * take their turns spread over the ticks
587
+ */
588
+ var turnOf = (id, stride) => (Math.imul(id, 2654435761) >>> 16) % stride;
589
+ /** Where an id is, or would go, in a list of ids in order */
590
+ function placeOf(ids, id) {
591
+ let low = 0;
592
+ let high = ids.length;
593
+ while (low < high) {
594
+ const middle = low + high >> 1;
595
+ if (ids[middle] < id) low = middle + 1;
596
+ else high = middle;
597
+ }
598
+ return low;
599
+ }
600
+ /** A thing put into what burns, in order of the ids, once, with who lit it and when it burns down */
601
+ function insertId(list, id, by, ends) {
602
+ const at = placeOf(list.ids, id);
603
+ if (list.ids[at] === id) return;
604
+ list.ids.splice(at, 0, id);
605
+ list.by.splice(at, 0, by);
606
+ list.ends.splice(at, 0, ends);
607
+ }
608
+ /** A thing taken out of what burns, where it is there */
609
+ function removeId(list, id) {
610
+ const at = placeOf(list.ids, id);
611
+ if (list.ids[at] !== id) return;
612
+ list.ids.splice(at, 1);
613
+ list.by.splice(at, 1);
614
+ list.ends.splice(at, 1);
615
+ }
616
+ /** The pack's rules of a world's game: none where it has no burning pack. `what` names the call that asks, which throws then */
617
+ function rulesOf(world, what) {
618
+ const pack = world.registry.assembly?.rules.packs?.find((each) => each.id === BURNING);
619
+ if (!pack) throw new Error(`${what}: the game has no burning pack (burningPack)`);
620
+ return pack[RULES] ??= new BurningRules(pack.options);
621
+ }
622
+ /** The pack's rules of a world's game, where it has the pack */
623
+ function rulesIfAny(world) {
624
+ const pack = world.registry.assembly?.rules.packs?.find((each) => each.id === BURNING);
625
+ return pack && (pack[RULES] ??= new BurningRules(pack.options));
626
+ }
627
+ /**
628
+ * Sets a thing alight: it burns for its time (`BurnsDef.seconds`), then burns down and leaves what it leaves
629
+ * (`BurnsDef.leaves`). `by`: who lit it, whom its damage and its kill are by; `how`: another kind of burning than its
630
+ * own; `seconds`: another time. The game is asked first (`burnStart`). One that burns already, does not burn, or is
631
+ * past the most that may burn at once (`BurningOptions.maxBurning`) does not catch. One put out before goes on from
632
+ * as far as it had burnt. Whether it caught
633
+ *
634
+ * @beta
635
+ */
636
+ function setAlight(world, entity, options = {}) {
637
+ const { by, ...rest } = options;
638
+ return rulesOf(world, "setAlight").light(world, entity, "light", by?.id ?? 0, void 0, 1, rest);
639
+ }
640
+ /**
641
+ * Puts out a thing that burns: it stands, charred as far as it burnt, and may be set alight again. Whether it burnt
642
+ *
643
+ * @beta
644
+ */
645
+ function putOut(world, entity) {
646
+ return rulesOf(world, "putOut").putOut(world, entity);
647
+ }
648
+ /**
649
+ * Whether a thing burns now: not one put out, nor one burnt down (or killed by other means while it burnt)
650
+ *
651
+ * @beta
652
+ */
653
+ function isBurning(entity) {
654
+ if (!entity.alive) return false;
655
+ const state = entity.get(onFire);
656
+ return !!state && state.out === void 0;
657
+ }
658
+ /**
659
+ * What the rules know of a thing that burns or burnt (`BurningInfo`): none for one that never caught
660
+ *
661
+ * @beta
662
+ */
663
+ function burningOf(world, entity) {
664
+ const state = entity.get(onFire);
665
+ if (!state) return void 0;
666
+ const now = state.out ?? world.tick;
667
+ const length = Math.max(1, state.ends - state.since);
668
+ const burning = isBurning(entity);
669
+ const info = {
670
+ burning,
671
+ how: state.how,
672
+ share: Math.min(1, Math.max(0, (now - state.since) / length)),
673
+ left: burning ? Math.max(0, state.ends - world.tick) * world.dt : 0
674
+ };
675
+ const list = world.states.has(fireList) ? world.state(fireList) : void 0;
676
+ const at = list && state.out === void 0 ? placeOf(list.ids, entity.id) : -1;
677
+ if (list && at >= 0 && list.ids[at] === entity.id && list.by[at]) info.by = list.by[at];
678
+ return info;
679
+ }
680
+ /** What `burningThings` gives where nothing burns */
681
+ var NONE = Object.freeze([]);
682
+ /**
683
+ * The ids of what burns now, in order: for a game's rules and its computer players (one killed by other means, a
684
+ * catapult's blast, is taken out within a second). Not to be kept or changed: the pack's own list
685
+ *
686
+ * @beta
687
+ */
688
+ function burningThings(world) {
689
+ rulesOf(world, "burningThings");
690
+ return world.states.has(fireList) ? world.state(fireList).ids : NONE;
691
+ }
692
+ /**
693
+ * Whether a thing burns at all in a world's game (`BurningOptions.burns`, `UnitTypeDef.burns`, trees): false in a game
694
+ * without the burning pack
695
+ *
696
+ * @beta
697
+ */
698
+ function canBurn(world, entity) {
699
+ return !!rulesIfAny(world)?.burnsOf(world, entity);
700
+ }
701
+ /**
702
+ * The `burn` effect (`EffectTypes.burn`): sets alight what burns where it lands, by the caster (`light`), or puts it
703
+ * out (`putOut`). Over its area (`radius`, `shape`), else the unit it was cast on, else what stands where it landed;
704
+ * of those, what its fields of whom say (`affects`, `kinds`, `tags`, `layers`, `ifBuff`, `only`, `where`, `sort`,
705
+ * `limit`: everything that burns, trees and what is the neutral player's among it, when it says none), and what the
706
+ * game lets it reach (`beforeEffect`)
707
+ */
708
+ var burnEffect = /* @__PURE__ */ defineEffect({
709
+ type: "burn",
710
+ run(context, effect) {
711
+ const { world, caster, target, point } = context;
712
+ const rules = rulesOf(world, "burn effect");
713
+ const area = effectArea(context, effect);
714
+ let things;
715
+ if (area) {
716
+ const reach = areaReach(area);
717
+ things = world.spatial.query(area.x, area.z, reach, []).filter((thing) => thing.alive && !thing.hidden && inArea(area, thing.pos, thing.def.radius));
718
+ } else if (target) things = [target];
719
+ else things = world.spatial.queryStatic(point.x, point.z, .5, []).filter((thing) => {
720
+ const { x, z, hw, hd } = thing.rect;
721
+ return thing.alive && Math.abs(point.x - x) < hw && Math.abs(point.z - z) < hd;
722
+ });
723
+ const putting = effect.act === "putOut";
724
+ things = things.filter((thing) => putting ? isBurning(thing) : !!rules.burnsOf(world, thing));
725
+ things = effectFilter(context, effect, things, "all").sort((a, b) => a.id - b.id);
726
+ for (const thing of things) if (putting) rules.putOut(world, thing);
727
+ else rules.light(world, thing, "light", caster.id, void 0, 1, {
728
+ ...effect.how !== void 0 ? { how: effect.how } : {},
729
+ ...effect.seconds !== void 0 ? { seconds: effect.seconds } : {}
730
+ });
731
+ },
732
+ fields: [
733
+ {
734
+ path: "act",
735
+ kind: "choice",
736
+ options: ["light", "putOut"],
737
+ hint: "What it does to what burns where it lands: sets it alight, or puts it out"
738
+ },
739
+ {
740
+ path: "how",
741
+ kind: "text",
742
+ hint: "What kind of burning it sets off, for the screen and the death: its own (burnt) when left out"
743
+ },
744
+ {
745
+ path: "seconds",
746
+ kind: "number",
747
+ min: 0,
748
+ hint: "Seconds what it sets alight burns: its own when left out"
749
+ }
750
+ ]
751
+ });
752
+ /** A death of a thing burnt down given its kind of burning (`DeathEvent.how`): what its look's `death.how` goes by */
753
+ var burntDeath = /* @__PURE__ */ defineHook({
754
+ hook: "death",
755
+ id: "burning",
756
+ run(world, death) {
757
+ const ending = rulesIfAny(world)?.ending;
758
+ if (ending && ending.entity === death.entity) death.how = ending.how;
759
+ }
760
+ });
761
+ /**
762
+ * Things that burn (`BurningOptions`): trees by default (what can be felled), any type that says `burns`
763
+ * (`UnitTypeDef.burns`: a wooden wall, a hut), or what the game decides in code. Set alight by `setAlight`, an ability
764
+ * (`{ type: 'burn', act: 'light' }`), the grass's fire (`FoliageFire.lights`) or one another (`spread`), a thing burns
765
+ * for its seconds and burns down: felled, burnt away, or leaving a thing of its own (a charred stump), with or
766
+ * without its wood. Put out with `putOut`. Its look says what plays on it while it burns (`UnitLook.burning`: fire
767
+ * by default, or a game's own effect for its own kind of burning, `how`). Off unless a game turns it on:
768
+ *
769
+ * export const rules = { ...myGame, packs: [burningPack({ spread: { chance: 0.2 }, damage: 10 })] }
770
+ *
771
+ * What burns is not woken (`world.wake`): a forest costs nothing a tick while nothing in it burns
772
+ *
773
+ * @beta
774
+ */
775
+ function burningPack(options = {}) {
776
+ const rules = new BurningRules(options);
777
+ return {
778
+ id: BURNING,
779
+ options,
780
+ systems: [rules.system],
781
+ hooks: [burntDeath],
782
+ components: [onFire, fireList],
783
+ events: [
784
+ burnStarted,
785
+ burnt,
786
+ burnPutOut
787
+ ],
788
+ effects: [burnEffect],
789
+ [RULES]: rules
790
+ };
791
+ }
792
+ //#endregion
793
+ export { BURNING, burnPutOut, burnStart, burnStarted, burningOf, burningPack, burningThings, burnt, canBurn, isBurning, onFire, putOut, setAlight };
794
+
795
+ //# sourceMappingURL=burning.js.map