@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
package/dist/rules.d.ts CHANGED
@@ -1,12 +1,14 @@
1
- import type { DamageType, Stats, UnitTypeDef } from './defs';
1
+ import { type DamageType, type ItemDef, type Stats, type UnitTypeDef } from './defs';
2
+ import type { MessageRef } from './messages';
2
3
  import type { Registry } from './registry';
4
+ import { type CleaveNow } from './systems/combat';
3
5
  import type { Entity, PlayerId } from './entity';
4
6
  import { type Upkeep } from './upkeep';
5
7
  import type { World } from './world';
6
8
  import type { OrderInit } from './registry';
7
- import type { GameModule } from './game';
8
- import type { ScoreRules } from './score';
9
- import { type HeroRules } from './hero';
9
+ import type { ScoreSettings } from './score';
10
+ import { type HeroSettings } from './hero';
11
+ import { type AttackModifier } from './abilities/triggers';
10
12
  /**
11
13
  * A rule of `HudSharing`: one value for every unit, or a function deciding it for each (only heroes', only a boss's)
12
14
  *
@@ -14,7 +16,7 @@ import { type HeroRules } from './hero';
14
16
  */
15
17
  export type HudShareRule<T> = T | ((world: World, entity: Entity) => T);
16
18
  /**
17
- * What of a unit the players who see it are told beyond what they always are (`GameRules.hud`), each for the plates
19
+ * What of a unit the players who see it are told beyond what they always are (`RuleSettings.hud`), each for the plates
18
20
  * over it to show. What is not shared never reaches a player, so no screen can show it. A game's own data goes in a
19
21
  * component with `replicate` (the client's `hudData` reads it)
20
22
  *
@@ -36,21 +38,24 @@ export interface HudSharing {
36
38
  shareXp?: HudShareRule<boolean>;
37
39
  }
38
40
  /**
39
- * A unit in a queue, not made yet, as the supply it will take is asked of it (`GameRules.supply.of`)
41
+ * A unit in a queue, not made yet, as the supply it will take is asked of it (`RuleSettings.supply.of`)
40
42
  *
41
43
  * @beta
42
44
  */
43
45
  export interface QueuedUnit {
46
+ /** The unit type being queued */
44
47
  readonly def: UnitTypeDef;
48
+ /** The player who queued it */
45
49
  readonly owner: PlayerId;
50
+ /** Always true: tells a queued unit from an `Entity` where the supply it takes is asked */
46
51
  readonly queued: true;
47
52
  }
48
53
  /**
49
- * How the fog of war keeps what was seen (`GameRules.fog`)
54
+ * How the fog of war keeps what was seen (`RuleSettings.fog`)
50
55
  *
51
56
  * @beta
52
57
  */
53
- export interface FogRules {
58
+ export interface FogSettings {
54
59
  /** Part of its sight a unit has at night, for types that do not say (`UnitTypeDef.sightNight`) */
55
60
  nightSight: number;
56
61
  /**
@@ -73,39 +78,53 @@ export interface FogRules {
73
78
  * The numbers and formulas of a kind of game that are not about any one unit: the supply cap, what selling gives
74
79
  * back, how a hit is mitigated. In groups, each about one thing: supply, production, the economy, combat, movement,
75
80
  * the fog, talk, the camps, heroes, what the HUD is told, the score. A game module changes the ones it wants
76
- * (`GameModule.rules`: any of a group, the rest of it the engine's) and a pack the ones it brings (`GamePack.rules`).
81
+ * (`Rules.settings`: any of a group, the rest of it the engine's) and a pack the ones it brings (`GamePack.settings`).
77
82
  *
78
- * Read them from `world.rules` in the simulation, and from `session.registry.rules` on a player's screen.
83
+ * Read them from `world.settings` in the simulation, and from `session.registry.settings` on a player's screen.
79
84
  *
80
85
  * @beta
81
86
  */
82
- export interface GameRules {
83
- /** What armies cost in supply, and how much a player may have (`SupplyRules`) */
84
- supply: SupplyRules;
85
- /** What buildings make and how they go up (`ProductionRules`) */
86
- production: ProductionRules;
87
- /** What is paid back, paid for and given away (`EconomyRules`) */
88
- economy: EconomyRules;
89
- /** How a hit lands and how much of it is felt, and who fights whom (`CombatRules`) */
90
- combat: CombatRules;
91
- /** How units find their way among each other (`MovementRules`) */
92
- movement: MovementRules;
93
- /** What is seen and kept of what was (`FogRules`) */
94
- fog: FogRules;
95
- /** Pings, chat and pauses (`TalkRules`) */
96
- talk: TalkRules;
97
- /**
98
- * Creeps' camps (`camps.ts`): how far creeps chase away from their camp (`leash`), whether they sleep at home at night
99
- * until attacked (`sleep`), and the seconds after a camp is cleared that it comes back, for every camp (`respawn`, see
100
- * `Camp.respawn`; never when left out). What makes creeps keep to them, sleep and come back is the heroes pack's
101
- * (`withHeroes`)
102
- */
103
- camps: CampRules;
104
- /**
105
- * Heroes' numbers (`HeroRules`): how many a player may have, the experience a level takes, what bringing one back
106
- * costs. The heroes pack's to change (`withHeroes(rules)`); the classic RTS numbers when left out
107
- */
108
- heroes: HeroRules;
87
+ export interface RuleSettings {
88
+ /** What armies cost in supply, and how much a player may have (`SupplySettings`) */
89
+ supply: SupplySettings;
90
+ /** What buildings make and how they go up (`ProductionSettings`) */
91
+ production: ProductionSettings;
92
+ /** What is paid back, paid for and given away (`EconomySettings`) */
93
+ economy: EconomySettings;
94
+ /**
95
+ * What a hero may carry and how what it carries works (`ItemSettings`): the limits of groups of items (one pair of
96
+ * boots), unique passives counted once, the game's own rule of what may be carried
97
+ *
98
+ * @beta
99
+ */
100
+ items: ItemSettings;
101
+ /**
102
+ * Shops (`ShopSettings`): the seconds within which a purchase is taken back
103
+ *
104
+ * @beta
105
+ */
106
+ shop: ShopSettings;
107
+ /** How a hit lands and how much of it is felt, and who fights whom (`CombatSettings`) */
108
+ combat: CombatSettings;
109
+ /** How units find their way among each other (`MovementSettings`) */
110
+ movement: MovementSettings;
111
+ /** What is seen and kept of what was (`FogSettings`) */
112
+ fog: FogSettings;
113
+ /** Pings, chat and pauses (`TalkSettings`) */
114
+ talk: TalkSettings;
115
+ /**
116
+ * Creeps' camps (`camps.ts`, `CampSettings`): how far from its centre a camp fights (`leash`), how long a creep chases
117
+ * without a blow (`chaseTime`), how long after the last blow the camp goes home (`resetAfter`), whether all of it
118
+ * answers a hit at once (`helpAtOnce`), whether creeps sleep at home at night until attacked (`sleep`), and the
119
+ * seconds after a camp is cleared that it comes back (`respawn`; never when left out). What makes creeps keep to them,
120
+ * sleep and come back is the heroes pack's (`heroesPack`). See docs/creeps.md
121
+ */
122
+ camps: CampSettings;
123
+ /**
124
+ * Heroes' numbers (`HeroSettings`): how many a player may have, the experience a level takes, what bringing one back
125
+ * costs. The heroes pack's to change (`heroesPack(rules)`); the classic RTS numbers when left out
126
+ */
127
+ heroes: HeroSettings;
109
128
  /**
110
129
  * What of a unit the players who see it are told beyond what they always are (its health, mana, level, buffs and
111
130
  * their stacks), for the plates over it to show (indicators-plan U3): the seconds left of its buffs, its abilities,
@@ -116,12 +135,12 @@ export interface GameRules {
116
135
  hud: HudSharing;
117
136
  /**
118
137
  * What the game counts of its players for its score (a classic RTS score screen): kills, losses, damage, healing,
119
- * resources, its own (`ScoreRules`, `presetScore()`, `defineStat`). Counted by the rules as the game goes, kept in
138
+ * resources, its own (`ScoreSettings`, `presetScore()`, `defineStat`). Counted by the rules as the game goes, kept in
120
139
  * saves, told to the players as it says. Nothing is counted when left out
121
140
  *
122
141
  * @beta
123
142
  */
124
- score?: ScoreRules;
143
+ score?: ScoreSettings;
125
144
  /**
126
145
  * Whether a player may command an entity: its owner, and whoever the owner shares control with
127
146
  * (`world.sides.shareControl`, a force's `sharedControl`), when left out. What every command is checked against, and
@@ -130,17 +149,17 @@ export interface GameRules {
130
149
  mayCommand(world: World, player: PlayerId, entity: Entity): boolean;
131
150
  }
132
151
  /**
133
- * Supply (`GameRules.supply`)
152
+ * Supply (`RuleSettings.supply`)
134
153
  *
135
154
  * @beta
136
155
  */
137
- export interface SupplyRules {
156
+ export interface SupplySettings {
138
157
  /** Supply no player can go past, however much they build to provide it */
139
158
  max: number;
140
159
  /**
141
160
  * Pools of supply besides the one there always is (`supply`, food), by name, each with what it is called and its
142
- * most: a cap on commanders, on vehicles. A unit takes of one with `supplies`, a building provides with
143
- * `suppliesProvided`. None when left out
161
+ * most: a cap on commanders, on vehicles. A unit takes of one with `supply`, a building provides with
162
+ * `supplyGiven`. None when left out
144
163
  */
145
164
  pools?: Record<string, {
146
165
  name: string;
@@ -153,11 +172,11 @@ export interface SupplyRules {
153
172
  of(world: World, unit: Entity | QueuedUnit): number;
154
173
  }
155
174
  /**
156
- * Production and construction (`GameRules.production`)
175
+ * Production and construction (`RuleSettings.production`)
157
176
  *
158
177
  * @beta
159
178
  */
160
- export interface ProductionRules {
179
+ export interface ProductionSettings {
161
180
  /** Things a building can have waiting to be made */
162
181
  queue: number;
163
182
  /** Part of what a structure cost that comes back when it is called off while being built */
@@ -168,11 +187,11 @@ export interface ProductionRules {
168
187
  buildRate(world: World, structure: Entity, builders: number): number;
169
188
  }
170
189
  /**
171
- * Selling, repairing, giving and upkeep (`GameRules.economy`)
190
+ * Selling, repairing, giving and upkeep (`RuleSettings.economy`)
172
191
  *
173
192
  * @beta
174
193
  */
175
- export interface EconomyRules {
194
+ export interface EconomySettings {
176
195
  /** Part of an item's price a shop pays for it */
177
196
  sellPrice: number;
178
197
  /** Part of what a building cost that mending all of its health costs */
@@ -183,15 +202,48 @@ export interface EconomyRules {
183
202
  upkeep(world: World, player: PlayerId): Upkeep;
184
203
  }
185
204
  /**
186
- * Fighting (`GameRules.combat`)
205
+ * What a hero may carry, and how what it carries works (`RuleSettings.items`)
206
+ *
207
+ * @beta
208
+ */
209
+ export interface ItemSettings {
210
+ /**
211
+ * The most of a group of items (`ItemDef.group`) one carrier may have, by group: `{ boots: 1 }` when left out. An
212
+ * item's own `groupLimit` comes first; a group named nowhere is 1
213
+ */
214
+ groups: Record<string, number>;
215
+ /** Whether the passives of items sharing a `unique` name work once for all of them (yes), or each (no) */
216
+ unique: boolean;
217
+ /**
218
+ * The game's own rule of what a carrier may take, asked after the engine's (a group's limit) as it buys an item, picks
219
+ * one up or is handed one: a reason to refuse (a `MessageRef`, told to the player), nothing to let it. `uses` are
220
+ * the parts buying it uses up, by id (none for a pick-up or a hand-over). Everything may when left out
221
+ */
222
+ mayCarry?: (world: World, carrier: Entity, item: ItemDef, uses: readonly string[]) => MessageRef | undefined;
223
+ }
224
+ /**
225
+ * Shops (`RuleSettings.shop`): taking a purchase back
187
226
  *
188
227
  * @beta
189
228
  */
190
- export interface CombatRules {
229
+ export interface ShopSettings {
230
+ /**
231
+ * Seconds within which a purchase is undone (`undoBuy`, the `undoBuy` command: the shop window's Undo) for all it
232
+ * cost, as long as the buyer stands at the shop still and has not used the item: what it took is given back, the
233
+ * parts it used up come back, the shop has it back in stock. 10 when left out; 0 for no undoing
234
+ */
235
+ undo: number;
236
+ }
237
+ /**
238
+ * Fighting (`RuleSettings.combat`)
239
+ *
240
+ * @beta
241
+ */
242
+ export interface CombatSettings {
191
243
  /**
192
244
  * Whether a basic attack of `attacker` strikes critically, and what it multiplies the damage by then: a number for a
193
245
  * critical strike, nothing for none. Asked as the attack goes off, before whether it misses. None when left out (a
194
- * game's crits: `withMobaStats`, or its own)
246
+ * game's crits: `mobaStatsPack`, or its own)
195
247
  */
196
248
  critical(world: World, attacker: Entity, stats: Readonly<Stats>): number | undefined;
197
249
  /**
@@ -199,11 +251,22 @@ export interface CombatRules {
199
251
  * of whoever deals it, when someone does. Armor and magic resist, with penetration, when left out
200
252
  */
201
253
  mitigation(type: DamageType, target: Readonly<Stats>, source?: Readonly<Stats>): number;
254
+ /**
255
+ * What damage is multiplied by once mitigated, before shields, for the stats of who takes it and of who deals it
256
+ * (when someone does): their `incomingDamage` (and of the type: `incomingMagicDamage`) and `outgoingDamage`, never
257
+ * below none, when left out (`damageScale`)
258
+ */
259
+ damageScale(type: DamageType, target: Readonly<Stats>, source?: Readonly<Stats>): number;
260
+ /**
261
+ * What healing is multiplied by, for the stats of who gets it, before the `beforeHeal` hook: its `incomingHealing`,
262
+ * never below none, when left out (`healingScale`)
263
+ */
264
+ healingScale(target: Readonly<Stats>, source?: Readonly<Stats>): number;
202
265
  /**
203
266
  * Keeps stats within what the game allows, once everything that changes them was added up. Changes them in place.
204
267
  * The default keeps attack speed within its limits (below)
205
268
  */
206
- clampStats(stats: Stats, rules: Readonly<GameRules>): void;
269
+ clampStats(stats: Stats, rules: Readonly<RuleSettings>): void;
207
270
  /** Seconds an ability takes to be ready again, for a unit with these stats. Its cooldown as it is, when left out */
208
271
  cooldown(seconds: number, stats: Readonly<Stats>): number;
209
272
  /**
@@ -213,6 +276,18 @@ export interface CombatRules {
213
276
  slowTaken(stats: Readonly<Stats>, slow: number): number;
214
277
  /** What the heals and shields `source` gives are multiplied by. 1, when left out */
215
278
  healPower(world: World, source: Entity): number;
279
+ /**
280
+ * What a blow from up close of `attacker`'s weapon at that place cleaves: the part of its damage the enemies round
281
+ * `target` take, how far round it, how wide a cone. Its attack's own or a buff's, the larger part, when left out
282
+ * (`cleaveOf`); nothing for none
283
+ */
284
+ cleave(world: World, attacker: Entity, target: Entity, weapon: number): CleaveNow | undefined;
285
+ /**
286
+ * Which of what an attack of `attacker` sets off go off (its attack modifiers: the `onHit` of its abilities, items
287
+ * and buffs that can now), of those it is given, in their order. One a slot, the highest `priority`, and all of
288
+ * those of no slot, when left out (`bySlot`); `(world, attacker, target, modifiers) => modifiers` for all of them
289
+ */
290
+ attackModifiers(world: World, attacker: Entity, target: Entity, modifiers: readonly AttackModifier[]): readonly AttackModifier[];
216
291
  /** Nobody attacks slower or faster than this, whatever they carry: [lowest, highest] attack speed */
217
292
  attackSpeedLimits: [number, number];
218
293
  /** Seconds a corpse lies where a unit of flesh died, for spells to use (see `raiseDead`). None at all for 0 */
@@ -233,13 +308,6 @@ export interface CombatRules {
233
308
  * weapon for what is on the ground, a second for the air. Asked for every target looked at: keep it cheap
234
309
  */
235
310
  pickAttack(world: World, attacker: Entity, target: Entity): number;
236
- /**
237
- * What a hit is multiplied by for the attack's type against the target's armour type, as classic RTS games have it
238
- * (pierce against light, siege against fortified), before armour and shields: none when left out. Attacks name
239
- * their type (`AttackDef.attackType`), abilities as they deal damage (`DamageOptions.attackType`), unit types their
240
- * armour (`UnitTypeDef.armourType`); a type the table has not got is refused as the game is made
241
- */
242
- damageTable?: DamageTable;
243
311
  /**
244
312
  * The layer an attacker fights from, around a target: room is counted apart for each (see `engageRoom`). The air
245
313
  * for what flies, the water for boats, the ground for the rest, when left out; any name of the game's own besides
@@ -257,13 +325,32 @@ export interface CombatRules {
257
325
  * when left out; Infinity never
258
326
  */
259
327
  giveUpChase(world: World, attacker: Entity, target: Entity): number;
328
+ /**
329
+ * How far from the middle of a target an attacker waits for room there, when it was told to attack it and it has no
330
+ * room for it or no way to it (`holdOff`): on its own side, out of the way of those fighting it. Just behind them
331
+ * when left out (`defaultQueueDistance`): the target's size, two of the attacker, its reach and half a cell
332
+ */
333
+ queueDistance(world: World, attacker: Entity, target: Entity): number;
334
+ /**
335
+ * Whether an order given to a unit in the recovery after its blow (`AttackDef.recovery`) cuts the recovery short and
336
+ * is carried out at once. Nothing is given back of the attack: its cooldown runs on. Never, when left out: the order
337
+ * waits until the recovery is over
338
+ */
339
+ recoveryCancels(world: World, entity: Entity): boolean;
340
+ /**
341
+ * How far from an ally that is hit an idle unit of the same owner comes to its help: it takes the attacker, as a
342
+ * camp's creeps do (`helpAtOnce`). Asked of each helper, with the ally hit: how far apart they are (centre to centre)
343
+ * it must be at most. Never more than `HELP_SEARCH` (20) is looked for. 0 turns it off. The helper's acquisition range
344
+ * and 4 more, when left out
345
+ */
346
+ helpRange(world: World, helper: Entity, victim: Entity): number;
260
347
  }
261
348
  /**
262
- * How units move among each other (`GameRules.movement`)
349
+ * How units move among each other (`RuleSettings.movement`)
263
350
  *
264
351
  * @beta
265
352
  */
266
- export interface MovementRules {
353
+ export interface MovementSettings {
267
354
  /**
268
355
  * Whether an ally standing in the way of a unit on its way steps aside when asked (see `makeWay`). Those standing
269
356
  * about with nothing to do, or waiting by a fight for a spot in it, when left out: not those fighting, walking or
@@ -298,13 +385,19 @@ export interface MovementRules {
298
385
  * tick for every unit that moves: keep it cheap. Its speed as it is, when left out
299
386
  */
300
387
  moveSpeed(world: World, entity: Entity, speed: number): number;
388
+ /**
389
+ * How fast a unit turns, in radians a second, where its type says nothing of its own (`UnitTypeDef.turnRate`): on
390
+ * its way, to face what it attacks, works on or casts at. 12 when left out, which is all but at once (a half turn
391
+ * in a quarter of a second); 2 or 3 for units that visibly come round, as a classic RTS's do, less for ships
392
+ */
393
+ turnRate: number;
301
394
  }
302
395
  /**
303
- * Pings, chat and pauses (`GameRules.talk`)
396
+ * Pings, chat and pauses (`RuleSettings.talk`)
304
397
  *
305
398
  * @beta
306
399
  */
307
- export interface TalkRules {
400
+ export interface TalkSettings {
308
401
  /**
309
402
  * Pings (see `ping`): how many a player may send `within` so many seconds, the kinds there are (a hero arena game's
310
403
  * when left out; a game adds its own), and what each kind asks of a computer ally (indicators-plan P4): a request on
@@ -331,65 +424,59 @@ export interface TalkRules {
331
424
  seconds: number;
332
425
  };
333
426
  }
334
- /**
335
- * A damage table: what a hit of each attack type is multiplied by against each armour type (`GameRules.combat.damageTable`).
336
- * `table[attack][armour]`, the rows the attacks in their order, the columns the armours in theirs
337
- *
338
- * @beta
339
- */
340
- export interface DamageTable {
341
- attacks: readonly string[];
342
- armours: readonly string[];
343
- table: readonly (readonly number[])[];
344
- }
345
- /**
346
- * What a hit is multiplied by, by a damage table: 1 for no table, no attack type, no armour type, or one the table
347
- * has not got
348
- *
349
- * @beta
350
- */
351
- export declare function damageMultiplier(table: DamageTable | undefined, attackType: string | undefined, armourType: string | undefined): number;
352
- /**
353
- * Refuses a damage table that is not one, and a unit type whose attack or armour names a type the table has not got:
354
- * as the game is made, so that a misspelling fails then and not in a fight. A game without a table is checked for
355
- * nothing
356
- *
357
- * @beta
358
- */
359
- export declare function checkDamageTable(game: GameModule): void;
360
427
  /**
361
428
  * The engine's rules: those of a classic RTS melee game
362
429
  *
363
430
  * @beta
364
431
  */
365
- export declare const defaultRules: Readonly<GameRules>;
432
+ export declare const defaultSettings: Readonly<RuleSettings>;
366
433
  /**
367
- * Creeps' camps' rules (`GameRules.camps`)
434
+ * Creeps' camps' rules (`RuleSettings.camps`)
368
435
  *
369
436
  * @beta
370
437
  */
371
- export interface CampRules {
372
- /** How far creeps chase away from their camp */
438
+ export interface CampSettings {
439
+ /**
440
+ * How far from the camp's centre its creeps fight, in cells: what goes past it is let go of, and a creep led past it
441
+ * turns back. 14 by default. A camp's own is `Camp.leash` (`spawnCamp`'s `leash`)
442
+ */
373
443
  leash: number;
444
+ /**
445
+ * Seconds a creep chases what has neither hit it nor been hit by it before it lets it go for the next of the camp's
446
+ * list (`Camp.aggro`): a kiting archer is not followed round the camp for ever. 5 by default. A camp's own is
447
+ * `Camp.chaseTime`
448
+ */
449
+ chaseTime: number;
450
+ /**
451
+ * Seconds without a blow (none of the camp's creeps hitting or hit) before the camp gives up the fight and goes home:
452
+ * until then its creeps wait where they stand for what comes next. 6 by default. A camp's own is `Camp.resetAfter`;
453
+ * `resetCamp` sends one home now
454
+ */
455
+ resetAfter: number;
456
+ /**
457
+ * Whether every creep of a camp answers a hit on one of them at once, as it lands, rather than at its next look round
458
+ * (every fourth tick). True by default. A camp's own is `Camp.helpAtOnce`
459
+ */
460
+ helpAtOnce: boolean;
374
461
  /** Whether creeps sleep at home at night, until attacked */
375
462
  sleep: boolean;
376
463
  /** Seconds after a camp is cleared that it comes back, for every camp (see `Camp.respawn`). Never when left out */
377
464
  respawn?: number;
378
465
  }
379
466
  /** What is said of a group of the rules: any of it, a group in it in part as well. A function, a list and a table whole */
380
- export type RulesPart<T> = T extends (...args: never[]) => unknown ? T : T extends readonly unknown[] ? T : T extends object ? {
381
- [K in keyof T]?: RulesPart<T[K]>;
467
+ export type SettingsPart<T> = T extends (...args: never[]) => unknown ? T : T extends readonly unknown[] ? T : T extends object ? {
468
+ [K in keyof T]?: SettingsPart<T[K]>;
382
469
  } : T;
383
470
  /**
384
- * What a game says of its rules (`GameModule.rules`), or a pack (`GamePack.rules`): any of them, a group in part
385
- * (`{ supply: { max: 200 } }`), the engine's for the rest. The damage table, the score and the HUD's sharing are
471
+ * What a game says of its rules (`Rules.settings`), or a pack (`GamePack.settings`): any of them, a group in part
472
+ * (`{ supply: { max: 200 } }`), the engine's for the rest. The score and the HUD's sharing are
386
473
  * given whole
387
474
  *
388
475
  * @beta
389
476
  */
390
- export type RulesInit = {
391
- [K in Exclude<keyof GameRules, 'score' | 'hud'>]?: RulesPart<GameRules[K]>;
477
+ export type RuleSettingsInit = {
478
+ [K in Exclude<keyof RuleSettings, 'score' | 'hud'>]?: SettingsPart<RuleSettings[K]>;
392
479
  } & {
393
- score?: ScoreRules;
480
+ score?: ScoreSettings;
394
481
  hud?: HudSharing;
395
482
  };
package/dist/rules.js ADDED
@@ -0,0 +1,179 @@
1
+ import { clamp } from "./math.js";
2
+ import { supplyOf } from "./defs.js";
3
+ import { orderSays } from "./orders/facts.js";
4
+ import { damageScale, healingScale, mitigation } from "./stats.js";
5
+ import { moving } from "./entity.js";
6
+ import { defaultHeroSettings } from "./hero.js";
7
+ import { defaultPickAttack, farthestAcquisition } from "./attacks.js";
8
+ import { defaultEngageLayer, defaultEngageRoom, defaultQueueDistance } from "./engagement.js";
9
+ import { UPHILL_MISS, cleaveOf, shootsUphill } from "./systems/combat.js";
10
+ import { upkeepOf } from "./upkeep.js";
11
+ import { groundSpeedAt } from "./groundSpeed.js";
12
+ import { bySlot } from "./abilities/triggers.js";
13
+ //#region src/rules.ts
14
+ /**
15
+ * The engine's rules: those of a classic RTS melee game
16
+ *
17
+ * @beta
18
+ */
19
+ var defaultSettings = Object.freeze({
20
+ supply: {
21
+ max: 100,
22
+ pools: void 0,
23
+ of: (_world, unit) => supplyOf(unit.def)
24
+ },
25
+ production: {
26
+ queue: 7,
27
+ cancelRefund: .75,
28
+ constructionHealth: .1,
29
+ buildRate: (_world, _structure, builders) => 1 + (builders - 1) * .5
30
+ },
31
+ economy: {
32
+ sellPrice: .7,
33
+ repairCost: .35,
34
+ tradeTax: 0,
35
+ upkeep: (world, player) => upkeepOf(world, player)
36
+ },
37
+ items: {
38
+ groups: { boots: 1 },
39
+ unique: true,
40
+ mayCarry: void 0
41
+ },
42
+ shop: { undo: 10 },
43
+ combat: {
44
+ critical: () => void 0,
45
+ mitigation,
46
+ damageScale,
47
+ healingScale,
48
+ clampStats(stats, rules) {
49
+ const { attackSpeedLimits } = rules.combat;
50
+ if (stats.attackSpeed > 0) stats.attackSpeed = clamp(stats.attackSpeed, attackSpeedLimits[0], attackSpeedLimits[1]);
51
+ },
52
+ cooldown: (seconds) => seconds,
53
+ slowTaken: (_stats, slow) => slow,
54
+ healPower: () => 1,
55
+ cleave: cleaveOf,
56
+ attackModifiers: bySlot,
57
+ attackSpeedLimits: [.1, 5],
58
+ corpseTime: 60,
59
+ missChance: (world, attacker, target) => shootsUphill(world, attacker, target) ? UPHILL_MISS : 0,
60
+ splash: (_world, source, other, distance, radius) => other === source ? 0 : distance <= radius / 2 ? 1 : .5,
61
+ acquisitionRange: (_world, entity) => farthestAcquisition(entity.def),
62
+ pickAttack: defaultPickAttack,
63
+ engageLayer: defaultEngageLayer,
64
+ engageRoom: defaultEngageRoom,
65
+ giveUpChase: () => 1,
66
+ queueDistance: defaultQueueDistance,
67
+ recoveryCancels: () => false,
68
+ helpRange: (world, helper) => world.settings.combat.acquisitionRange(world, helper) + 4
69
+ },
70
+ movement: {
71
+ makesWay: (world, _mover, other) => other.get(moving)?.status !== "moving" && !other.get(moving)?.anchored && (other.orders.length === 0 || orderSays(world, other, "waiting")),
72
+ lookAhead: () => 3,
73
+ goesAround: (_world, _mover, _around, longer, straight) => longer <= 1.5 + straight * .25,
74
+ formation: () => "rows",
75
+ moveSpeed: (world, entity, speed) => speed * groundSpeedAt(world, entity),
76
+ turnRate: 12,
77
+ together: false
78
+ },
79
+ fog: {
80
+ nightSight: .6,
81
+ explored: void 0,
82
+ startExplored: void 0,
83
+ mask: void 0
84
+ },
85
+ talk: {
86
+ pings: {
87
+ most: 4,
88
+ within: 5,
89
+ kinds: [
90
+ "look",
91
+ "danger",
92
+ "assist",
93
+ "onMyWay"
94
+ ],
95
+ meanings: {
96
+ danger: "help",
97
+ assist: "help",
98
+ push: "attack",
99
+ hold: "defend",
100
+ retreat: "rally"
101
+ }
102
+ },
103
+ lines: {
104
+ most: 5,
105
+ within: 5,
106
+ length: 160
107
+ },
108
+ pauses: {
109
+ each: 3,
110
+ seconds: 60
111
+ }
112
+ },
113
+ camps: {
114
+ leash: 14,
115
+ chaseTime: 5,
116
+ resetAfter: 6,
117
+ helpAtOnce: true,
118
+ sleep: true,
119
+ respawn: void 0
120
+ },
121
+ heroes: defaultHeroSettings,
122
+ hud: {},
123
+ score: void 0,
124
+ mayCommand: (world, player, entity) => entity.owner === player || world.sides.controlOf(entity.owner).includes(player)
125
+ });
126
+ /** Whether a value is a group of the rules to be laid over in part: a plain object of named parts, not a table or a list */
127
+ var isGroup = (value) => typeof value === "object" && value !== null && !Array.isArray(value) && Object.getPrototypeOf(value) === Object.prototype;
128
+ /**
129
+ * Lays what is said of rules over rules, group by group: a group of named parts (`supply`, `talk.pings`) part by part,
130
+ * everything else whole. A name the rules have not got is refused: a typo would otherwise change nothing, without a word
131
+ *
132
+ * @internal
133
+ */
134
+ function laySettings(under, over, path = "") {
135
+ const laid = { ...under };
136
+ for (const [key, value] of Object.entries(over)) {
137
+ if (value === void 0) continue;
138
+ if (!(key in under)) throw new Error(`"${path}${key}" is not a game rule`);
139
+ const before = under[key];
140
+ laid[key] = isGroup(before) && Object.keys(before).length && isGroup(value) ? laySettings(before, value, `${path}${key}.`) : value;
141
+ }
142
+ return laid;
143
+ }
144
+ /**
145
+ * What is said of rules laid over what was said before (a pack's over the game's, a mod's over the game's), group by
146
+ * group as `laySettings` does, neither of them whole
147
+ *
148
+ * @internal
149
+ */
150
+ function overSettings(under, over) {
151
+ const laid = { ...under };
152
+ for (const [key, value] of Object.entries(over)) {
153
+ if (value === void 0) continue;
154
+ const before = laid[key];
155
+ laid[key] = isGroup(before) && isGroup(value) ? overSettings(before, value) : value;
156
+ }
157
+ return laid;
158
+ }
159
+ /**
160
+ * The names of the rules what is said of them changes, group by group (`supply.max`, `talk.pings.most`): what two
161
+ * mods are found to both change by
162
+ *
163
+ * @internal
164
+ */
165
+ function rulesSaid(said, path = "") {
166
+ return Object.entries(said).flatMap(([key, value]) => value === void 0 ? [] : isGroup(value) && Object.keys(value).length ? rulesSaid(value, `${path}${key}.`) : [`${path}${key}`]);
167
+ }
168
+ /**
169
+ * The rules of a game: what its module changes, over the engine's
170
+ *
171
+ * @internal
172
+ */
173
+ function resolveSettings(changes = {}) {
174
+ return Object.freeze(laySettings(defaultSettings, changes));
175
+ }
176
+ //#endregion
177
+ export { defaultSettings, laySettings, overSettings, resolveSettings, rulesSaid };
178
+
179
+ //# sourceMappingURL=rules.js.map