@jgengine/core 0.9.0 → 0.11.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 (631) hide show
  1. package/CHANGELOG.md +34 -3
  2. package/LICENSE +203 -661
  3. package/README.md +1 -1
  4. package/dist/ai/crowd.d.ts +55 -0
  5. package/dist/ai/crowd.js +114 -0
  6. package/dist/ai/flock.d.ts +5 -2
  7. package/dist/ai/flock.js +5 -2
  8. package/dist/ai/groupAssist.d.ts +1 -0
  9. package/dist/ai/groupAssist.js +1 -0
  10. package/dist/ai/heatSystem.d.ts +76 -0
  11. package/dist/ai/heatSystem.js +97 -0
  12. package/dist/ai/interestScheduler.d.ts +107 -0
  13. package/dist/ai/interestScheduler.js +118 -0
  14. package/dist/ai/jobBoard.d.ts +1 -0
  15. package/dist/ai/jobBoard.js +1 -0
  16. package/dist/ai/laneSelect.d.ts +5 -2
  17. package/dist/ai/laneSelect.js +5 -2
  18. package/dist/ai/mobBrain.d.ts +1 -0
  19. package/dist/ai/mobBrain.js +1 -0
  20. package/dist/ai/spawnDirector.d.ts +19 -1
  21. package/dist/ai/spawnDirector.js +53 -26
  22. package/dist/ai/spawnPoint.d.ts +7 -0
  23. package/dist/ai/spawnPoint.js +7 -0
  24. package/dist/ai/targetAcquisition.d.ts +84 -0
  25. package/dist/ai/targetAcquisition.js +92 -0
  26. package/dist/anim/easing.d.ts +19 -0
  27. package/dist/anim/easing.js +19 -0
  28. package/dist/anim/oscillator.d.ts +12 -0
  29. package/dist/anim/oscillator.js +25 -0
  30. package/dist/area/areaEffectField.d.ts +127 -0
  31. package/dist/area/areaEffectField.js +175 -0
  32. package/dist/area/stackPolicy.d.ts +47 -0
  33. package/dist/area/stackPolicy.js +99 -0
  34. package/dist/audio/audioFalloff.d.ts +5 -2
  35. package/dist/audio/music.d.ts +53 -0
  36. package/dist/audio/music.js +34 -0
  37. package/dist/audio/synth.d.ts +60 -0
  38. package/dist/audio/synth.js +8 -0
  39. package/dist/authoring.d.ts +15 -0
  40. package/dist/authoring.js +15 -0
  41. package/dist/board/laneBoard.d.ts +13 -0
  42. package/dist/board/laneBoard.js +13 -0
  43. package/dist/board/timelineBoard.d.ts +10 -0
  44. package/dist/board/timelineBoard.js +10 -0
  45. package/dist/combat/abilityKit.d.ts +18 -0
  46. package/dist/combat/abilityKit.js +24 -9
  47. package/dist/combat/animationState.d.ts +5 -0
  48. package/dist/combat/animationState.js +5 -0
  49. package/dist/combat/breakMeters.d.ts +10 -0
  50. package/dist/combat/breakMeters.js +10 -0
  51. package/dist/combat/castRunner.d.ts +5 -0
  52. package/dist/combat/castRunner.js +5 -0
  53. package/dist/combat/comboPoints.d.ts +5 -0
  54. package/dist/combat/comboPoints.js +5 -0
  55. package/dist/combat/comboString.d.ts +5 -0
  56. package/dist/combat/comboString.js +5 -0
  57. package/dist/combat/damageInterceptors.d.ts +192 -0
  58. package/dist/combat/damageInterceptors.js +251 -0
  59. package/dist/combat/damageMatchup.d.ts +68 -0
  60. package/dist/combat/damageMatchup.js +42 -0
  61. package/dist/combat/damageResolution.d.ts +63 -0
  62. package/dist/combat/damageResolution.js +50 -0
  63. package/dist/combat/death.d.ts +7 -1
  64. package/dist/combat/death.js +5 -0
  65. package/dist/combat/deathReason.d.ts +14 -0
  66. package/dist/combat/deathReason.js +1 -0
  67. package/dist/combat/defensiveWindow.d.ts +5 -0
  68. package/dist/combat/defensiveWindow.js +5 -0
  69. package/dist/combat/dotField.d.ts +47 -0
  70. package/dist/combat/dotField.js +52 -0
  71. package/dist/combat/downed.d.ts +5 -0
  72. package/dist/combat/downed.js +5 -0
  73. package/dist/combat/effects.d.ts +5 -0
  74. package/dist/combat/effects.js +5 -0
  75. package/dist/combat/encounterSequence.d.ts +258 -0
  76. package/dist/combat/encounterSequence.js +426 -0
  77. package/dist/combat/hitReaction.d.ts +57 -1
  78. package/dist/combat/hitReaction.js +45 -5
  79. package/dist/combat/magazine.d.ts +54 -0
  80. package/dist/combat/magazine.js +96 -0
  81. package/dist/combat/projectiles.d.ts +7 -2
  82. package/dist/combat/projectiles.js +48 -17
  83. package/dist/combat/receivedDamage.d.ts +117 -0
  84. package/dist/combat/receivedDamage.js +92 -0
  85. package/dist/combat/regenShield.d.ts +39 -0
  86. package/dist/combat/regenShield.js +49 -0
  87. package/dist/combat/renderCues.d.ts +51 -0
  88. package/dist/combat/renderCues.js +44 -0
  89. package/dist/combat/resourcePool.d.ts +5 -0
  90. package/dist/combat/resourcePool.js +5 -0
  91. package/dist/combat/rewardAllocation.d.ts +121 -0
  92. package/dist/combat/rewardAllocation.js +251 -0
  93. package/dist/combat/shotOrigin.d.ts +30 -1
  94. package/dist/combat/shotOrigin.js +70 -2
  95. package/dist/combat/statusApplication.d.ts +96 -0
  96. package/dist/combat/statusApplication.js +81 -0
  97. package/dist/combat/telegraph.d.ts +11 -2
  98. package/dist/combat/telegraph.js +11 -2
  99. package/dist/combat/thresholdCrossings.d.ts +85 -0
  100. package/dist/combat/thresholdCrossings.js +116 -0
  101. package/dist/combat.d.ts +34 -0
  102. package/dist/combat.js +34 -0
  103. package/dist/commands/commandRegistry.d.ts +11 -0
  104. package/dist/commands/commandRegistry.js +9 -2
  105. package/dist/crafting/crop.d.ts +18 -0
  106. package/dist/crafting/crop.js +18 -0
  107. package/dist/crafting/production.d.ts +5 -0
  108. package/dist/crafting/production.js +5 -0
  109. package/dist/devtools/rewriteTunables.d.ts +17 -0
  110. package/dist/devtools/rewriteTunables.js +276 -0
  111. package/dist/devtools/saveEndpoint.d.ts +46 -0
  112. package/dist/devtools/saveEndpoint.js +48 -0
  113. package/dist/devtools/transformTunables.d.ts +3 -0
  114. package/dist/devtools/transformTunables.js +3 -0
  115. package/dist/devtools/tunableSchema.d.ts +31 -0
  116. package/dist/devtools/tunableSchema.js +31 -0
  117. package/dist/economy/currency.d.ts +12 -1
  118. package/dist/economy/currency.js +12 -1
  119. package/dist/economy/listingBook.d.ts +91 -0
  120. package/dist/economy/listingBook.js +144 -0
  121. package/dist/economy/resourceLedger.d.ts +222 -0
  122. package/dist/economy/resourceLedger.js +353 -0
  123. package/dist/economy/sharedWallet.d.ts +14 -0
  124. package/dist/economy/sharedWallet.js +14 -0
  125. package/dist/economy/techTree.d.ts +12 -0
  126. package/dist/economy/techTree.js +12 -0
  127. package/dist/economy/wallet.d.ts +26 -2
  128. package/dist/economy/wallet.js +35 -6
  129. package/dist/editor/commands.d.ts +248 -0
  130. package/dist/editor/commands.js +865 -0
  131. package/dist/editor/document.d.ts +186 -0
  132. package/dist/editor/document.js +884 -0
  133. package/dist/editor/grid.d.ts +229 -0
  134. package/dist/editor/grid.js +366 -0
  135. package/dist/editor/gridAdapters.d.ts +80 -0
  136. package/dist/editor/gridAdapters.js +134 -0
  137. package/dist/editor/index.d.ts +97 -0
  138. package/dist/editor/index.js +10 -0
  139. package/dist/editor/liveSync.d.ts +127 -0
  140. package/dist/editor/liveSync.js +249 -0
  141. package/dist/editor/runtimeInspector.d.ts +88 -0
  142. package/dist/editor/runtimeInspector.js +239 -0
  143. package/dist/editor/types.d.ts +175 -0
  144. package/dist/editor/types.js +29 -0
  145. package/dist/faction/reputation.d.ts +5 -0
  146. package/dist/faction/reputation.js +5 -0
  147. package/dist/format/distance.d.ts +17 -0
  148. package/dist/format/distance.js +18 -0
  149. package/dist/format/duration.d.ts +27 -0
  150. package/dist/format/duration.js +45 -0
  151. package/dist/format/speed.d.ts +17 -0
  152. package/dist/format/speed.js +25 -0
  153. package/dist/game/connectedPlayers.d.ts +30 -0
  154. package/dist/game/connectedPlayers.js +21 -0
  155. package/dist/game/cosmetics.d.ts +9 -0
  156. package/dist/game/cosmetics.js +16 -0
  157. package/dist/game/defineGame.d.ts +141 -2
  158. package/dist/game/defineGame.js +39 -1
  159. package/dist/game/defineSystem.d.ts +88 -0
  160. package/dist/game/defineSystem.js +45 -0
  161. package/dist/game/dialogue.d.ts +33 -0
  162. package/dist/game/dialogue.js +21 -0
  163. package/dist/game/events.d.ts +50 -13
  164. package/dist/game/events.js +5 -0
  165. package/dist/game/feed.d.ts +33 -0
  166. package/dist/game/feed.js +35 -2
  167. package/dist/game/gamePhase.d.ts +11 -0
  168. package/dist/game/gamePhase.js +16 -0
  169. package/dist/game/keyValueStore.d.ts +25 -0
  170. package/dist/game/keyValueStore.js +61 -0
  171. package/dist/game/leaderboard.d.ts +5 -0
  172. package/dist/game/leaderboard.js +5 -0
  173. package/dist/game/levelSequence.d.ts +24 -2
  174. package/dist/game/levelSequence.js +51 -2
  175. package/dist/game/loadout.d.ts +5 -0
  176. package/dist/game/loadout.js +5 -0
  177. package/dist/game/lootFilter.d.ts +2 -0
  178. package/dist/game/lootFilter.js +2 -0
  179. package/dist/game/lootPipeline.d.ts +164 -0
  180. package/dist/game/lootPipeline.js +216 -0
  181. package/dist/game/lootTable.d.ts +21 -0
  182. package/dist/game/lootTable.js +15 -4
  183. package/dist/game/modelAnimation.d.ts +8 -0
  184. package/dist/game/modelAnimation.js +18 -0
  185. package/dist/game/objectives.d.ts +43 -0
  186. package/dist/game/objectives.js +36 -0
  187. package/dist/game/paramLayers.d.ts +148 -0
  188. package/dist/game/paramLayers.js +185 -0
  189. package/dist/game/ping.d.ts +5 -0
  190. package/dist/game/ping.js +5 -0
  191. package/dist/game/playableGame.d.ts +160 -12
  192. package/dist/game/quest.d.ts +8 -0
  193. package/dist/game/quest.js +29 -0
  194. package/dist/game/race.d.ts +141 -0
  195. package/dist/game/race.js +169 -0
  196. package/dist/game/recordBook.d.ts +5 -5
  197. package/dist/game/recordBook.js +4 -1
  198. package/dist/game/ruleSelection.d.ts +75 -0
  199. package/dist/game/ruleSelection.js +127 -0
  200. package/dist/game/runDraft.d.ts +5 -0
  201. package/dist/game/runDraft.js +5 -0
  202. package/dist/game/saveStore.d.ts +111 -0
  203. package/dist/game/saveStore.js +312 -0
  204. package/dist/game/snapshotHistory.d.ts +67 -0
  205. package/dist/game/snapshotHistory.js +95 -0
  206. package/dist/game/social.d.ts +38 -1
  207. package/dist/game/social.js +71 -0
  208. package/dist/game/spawnPoints.d.ts +5 -0
  209. package/dist/game/spawnPoints.js +5 -0
  210. package/dist/game/systemRuntime.d.ts +50 -0
  211. package/dist/game/systemRuntime.js +157 -0
  212. package/dist/game/systemSchedule.d.ts +72 -0
  213. package/dist/game/systemSchedule.js +242 -0
  214. package/dist/game/toasts.d.ts +43 -0
  215. package/dist/game/toasts.js +44 -0
  216. package/dist/game/trade.d.ts +10 -0
  217. package/dist/game/trade.js +10 -0
  218. package/dist/game/unlocks.d.ts +8 -0
  219. package/dist/game/unlocks.js +16 -0
  220. package/dist/game/vfxInstance.d.ts +138 -0
  221. package/dist/game/vfxInstance.js +96 -0
  222. package/dist/game/worldItem.d.ts +17 -4
  223. package/dist/game/worldItem.js +17 -4
  224. package/dist/gameplay.d.ts +91 -0
  225. package/dist/gameplay.js +91 -0
  226. package/dist/index.d.ts +5 -7
  227. package/dist/index.js +5 -7
  228. package/dist/input/actionBindings.d.ts +24 -5
  229. package/dist/input/actionBindings.js +23 -5
  230. package/dist/input/axisInput.d.ts +13 -1
  231. package/dist/input/axisInput.js +22 -1
  232. package/dist/input/controlGroups.d.ts +67 -0
  233. package/dist/input/controlGroups.js +41 -0
  234. package/dist/input/touchScheme.d.ts +82 -6
  235. package/dist/input/touchScheme.js +123 -10
  236. package/dist/interaction/contextMenu.d.ts +1 -0
  237. package/dist/interaction/contextMenu.js +1 -0
  238. package/dist/interaction/lockpick.d.ts +61 -0
  239. package/dist/interaction/lockpick.js +168 -0
  240. package/dist/interaction/proximityPrompt.d.ts +5 -1
  241. package/dist/interaction/proximityPrompt.js +5 -3
  242. package/dist/interaction/qte.d.ts +5 -0
  243. package/dist/interaction/qte.js +5 -0
  244. package/dist/interaction/skillCheck.d.ts +5 -0
  245. package/dist/interaction/skillCheck.js +5 -0
  246. package/dist/inventory/inventoryModel.d.ts +12 -0
  247. package/dist/inventory/inventoryModel.js +12 -0
  248. package/dist/inventory/shapedGrid.d.ts +16 -0
  249. package/dist/inventory/shapedGrid.js +16 -0
  250. package/dist/inventory/slotModel.d.ts +10 -0
  251. package/dist/inventory/slotModel.js +10 -0
  252. package/dist/item/durability.d.ts +5 -0
  253. package/dist/item/durability.js +5 -0
  254. package/dist/item/itemIdentity.d.ts +171 -0
  255. package/dist/item/itemIdentity.js +138 -0
  256. package/dist/item/itemInstanceRegistry.d.ts +32 -0
  257. package/dist/item/itemInstanceRegistry.js +34 -0
  258. package/dist/item/itemgen.d.ts +163 -0
  259. package/dist/item/itemgen.js +151 -0
  260. package/dist/item/modularItem.d.ts +5 -0
  261. package/dist/item/modularItem.js +5 -0
  262. package/dist/item/use.d.ts +5 -0
  263. package/dist/item/use.js +5 -0
  264. package/dist/item/useBehavior.d.ts +142 -0
  265. package/dist/item/useBehavior.js +105 -0
  266. package/dist/item/weapon.d.ts +5 -0
  267. package/dist/item/weapon.js +5 -0
  268. package/dist/math/scalar.d.ts +25 -0
  269. package/dist/math/scalar.js +47 -0
  270. package/dist/meta/changelog.d.ts +4 -1
  271. package/dist/meta/changelog.js +36 -1
  272. package/dist/movement/avoidance.d.ts +45 -0
  273. package/dist/movement/avoidance.js +123 -0
  274. package/dist/movement/cameraRig.d.ts +8 -0
  275. package/dist/movement/cameraRig.js +8 -0
  276. package/dist/movement/dash.d.ts +11 -0
  277. package/dist/movement/dash.js +11 -0
  278. package/dist/movement/formation.d.ts +135 -0
  279. package/dist/movement/formation.js +194 -0
  280. package/dist/movement/glideModel.d.ts +5 -0
  281. package/dist/movement/glideModel.js +5 -0
  282. package/dist/movement/grappleSwing.d.ts +5 -0
  283. package/dist/movement/grappleSwing.js +5 -0
  284. package/dist/movement/leaderTrail.d.ts +5 -0
  285. package/dist/movement/leaderTrail.js +5 -0
  286. package/dist/movement/movementModel.d.ts +38 -7
  287. package/dist/movement/movementModel.js +54 -13
  288. package/dist/movement/playerMovement.d.ts +41 -0
  289. package/dist/movement/playerMovement.js +236 -0
  290. package/dist/movement/poseState.d.ts +13 -0
  291. package/dist/movement/poseState.js +16 -0
  292. package/dist/movement/steering.d.ts +8 -0
  293. package/dist/movement/steering.js +18 -0
  294. package/dist/multiplayer/combatSnapshot.d.ts +3 -0
  295. package/dist/multiplayer/combatSnapshot.js +3 -0
  296. package/dist/multiplayer/lagCompensation.d.ts +5 -0
  297. package/dist/multiplayer/lagCompensation.js +5 -0
  298. package/dist/multiplayer/presenceModel.d.ts +9 -1
  299. package/dist/multiplayer/presenceModel.js +9 -1
  300. package/dist/multiplayer/simultaneousCommit.d.ts +3 -0
  301. package/dist/multiplayer/simultaneousCommit.js +3 -0
  302. package/dist/multiplayer.d.ts +11 -0
  303. package/dist/multiplayer.js +11 -0
  304. package/dist/nav/pathFollow.d.ts +57 -0
  305. package/dist/nav/pathFollow.js +109 -0
  306. package/dist/orders/orderKinds.d.ts +156 -0
  307. package/dist/orders/orderKinds.js +197 -0
  308. package/dist/orders/orderQueue.d.ts +208 -0
  309. package/dist/orders/orderQueue.js +211 -0
  310. package/dist/physics/drivableVehicle.d.ts +29 -0
  311. package/dist/physics/drivableVehicle.js +16 -0
  312. package/dist/physics/kinematicVehicle.d.ts +21 -1
  313. package/dist/physics/kinematicVehicle.js +23 -8
  314. package/dist/physics/physicsWorld.d.ts +24 -12
  315. package/dist/physics/physicsWorld.js +11 -5
  316. package/dist/physics/radialImpulse.d.ts +25 -0
  317. package/dist/physics/radialImpulse.js +27 -0
  318. package/dist/procedural.d.ts +3 -0
  319. package/dist/procedural.js +3 -0
  320. package/dist/progression/statGraph.d.ts +116 -0
  321. package/dist/progression/statGraph.js +318 -0
  322. package/dist/puzzle/cellGrid.d.ts +9 -0
  323. package/dist/puzzle/cellGrid.js +9 -0
  324. package/dist/puzzle/fallingPiece.d.ts +9 -0
  325. package/dist/puzzle/fallingPiece.js +9 -0
  326. package/dist/puzzle/nonogram.d.ts +39 -0
  327. package/dist/puzzle/nonogram.js +136 -0
  328. package/dist/random/nameGen.d.ts +5 -0
  329. package/dist/random/nameGen.js +5 -0
  330. package/dist/random/pick.d.ts +8 -0
  331. package/dist/random/pick.js +31 -0
  332. package/dist/random/rng.d.ts +24 -0
  333. package/dist/random/rng.js +30 -8
  334. package/dist/random/seedLink.d.ts +4 -0
  335. package/dist/random/seedLink.js +4 -0
  336. package/dist/relation/keyedValues.d.ts +54 -0
  337. package/dist/relation/keyedValues.js +115 -0
  338. package/dist/relation/thresholds.d.ts +62 -0
  339. package/dist/relation/thresholds.js +62 -0
  340. package/dist/render/color.d.ts +12 -0
  341. package/dist/render/color.js +26 -0
  342. package/dist/render/lookPreset.d.ts +41 -0
  343. package/dist/render/lookPreset.js +29 -0
  344. package/dist/render/postProcessing.d.ts +76 -0
  345. package/dist/render/postProcessing.js +21 -0
  346. package/dist/rules/predicate.d.ts +53 -0
  347. package/dist/rules/predicate.js +64 -0
  348. package/dist/rules/ruleEffects.d.ts +38 -0
  349. package/dist/rules/ruleEffects.js +37 -0
  350. package/dist/rules/triggeredRules.d.ts +160 -0
  351. package/dist/rules/triggeredRules.js +241 -0
  352. package/dist/runtime/adapter.d.ts +58 -0
  353. package/dist/runtime/adapter.js +54 -5
  354. package/dist/runtime/cameraDirector.d.ts +1 -0
  355. package/dist/runtime/cameraDirector.js +1 -0
  356. package/dist/runtime/commandRunner.d.ts +1 -0
  357. package/dist/runtime/commandRunner.js +1 -0
  358. package/dist/runtime/context/combatFx.d.ts +23 -0
  359. package/dist/runtime/context/combatFx.js +161 -0
  360. package/dist/runtime/context/registries.d.ts +13 -0
  361. package/dist/runtime/context/registries.js +84 -0
  362. package/dist/runtime/context/worldItems.d.ts +21 -0
  363. package/dist/runtime/context/worldItems.js +37 -0
  364. package/dist/runtime/descriptors/baseline.d.ts +48 -0
  365. package/dist/runtime/descriptors/baseline.js +134 -0
  366. package/dist/runtime/descriptors/features.d.ts +74 -0
  367. package/dist/runtime/descriptors/features.js +281 -0
  368. package/dist/runtime/gameContext.d.ts +163 -19
  369. package/dist/runtime/gameContext.js +385 -339
  370. package/dist/runtime/gameRuntime.d.ts +1 -0
  371. package/dist/runtime/gameRuntime.js +1 -0
  372. package/dist/runtime/headlessRunner.d.ts +60 -0
  373. package/dist/runtime/headlessRunner.js +44 -0
  374. package/dist/runtime/hostPersistence.d.ts +12 -0
  375. package/dist/runtime/hostPersistence.js +12 -0
  376. package/dist/runtime/hostedGameRunner.d.ts +54 -0
  377. package/dist/runtime/hostedGameRunner.js +85 -0
  378. package/dist/runtime/hostedWorldSession.d.ts +73 -0
  379. package/dist/runtime/hostedWorldSession.js +64 -0
  380. package/dist/runtime/inputSnapshot.d.ts +21 -3
  381. package/dist/runtime/inputSnapshot.js +8 -2
  382. package/dist/runtime/motionIntents.d.ts +12 -1
  383. package/dist/runtime/motionIntents.js +26 -1
  384. package/dist/runtime/perContext.d.ts +15 -0
  385. package/dist/runtime/perContext.js +21 -0
  386. package/dist/runtime/runtimeSave.d.ts +79 -0
  387. package/dist/runtime/runtimeSave.js +105 -0
  388. package/dist/runtime/save.d.ts +4 -0
  389. package/dist/runtime/save.js +4 -0
  390. package/dist/runtime/snapshot.d.ts +7 -0
  391. package/dist/runtime/snapshot.js +7 -0
  392. package/dist/runtime/visibility.d.ts +2 -1
  393. package/dist/runtime/visibility.js +2 -1
  394. package/dist/runtime/worldChannel.d.ts +62 -0
  395. package/dist/runtime/worldChannel.js +114 -0
  396. package/dist/runtime/worldMirror.d.ts +36 -0
  397. package/dist/runtime/worldMirror.js +44 -0
  398. package/dist/runtime/worldProjection.d.ts +47 -0
  399. package/dist/runtime/worldProjection.js +52 -0
  400. package/dist/runtime/worldReplication.d.ts +69 -0
  401. package/dist/runtime/worldReplication.js +217 -0
  402. package/dist/runtime/worldSnapshot.d.ts +44 -0
  403. package/dist/runtime/worldSnapshot.js +30 -0
  404. package/dist/scene/assetCatalog.d.ts +22 -0
  405. package/dist/scene/assetCatalog.js +4 -0
  406. package/dist/scene/assetDiagnostics.d.ts +69 -0
  407. package/dist/scene/assetDiagnostics.js +110 -0
  408. package/dist/scene/assetGenerator.d.ts +65 -0
  409. package/dist/scene/assetGenerator.js +64 -0
  410. package/dist/scene/assetSpace.d.ts +137 -0
  411. package/dist/scene/assetSpace.js +259 -0
  412. package/dist/scene/authoredTriggers.d.ts +169 -0
  413. package/dist/scene/authoredTriggers.js +340 -0
  414. package/dist/scene/behaviorRuntime.d.ts +75 -0
  415. package/dist/scene/behaviorRuntime.js +217 -0
  416. package/dist/scene/behaviors.d.ts +14 -2
  417. package/dist/scene/behaviors.js +7 -2
  418. package/dist/scene/bodyBind.d.ts +60 -0
  419. package/dist/scene/bodyBind.js +51 -0
  420. package/dist/scene/builtinSceneKinds.d.ts +5 -0
  421. package/dist/scene/builtinSceneKinds.js +62 -0
  422. package/dist/scene/colliders.d.ts +18 -0
  423. package/dist/scene/colliders.js +61 -1
  424. package/dist/scene/entityStats.d.ts +13 -0
  425. package/dist/scene/entityStats.js +30 -0
  426. package/dist/scene/entityStore.d.ts +41 -1
  427. package/dist/scene/entityStore.js +75 -0
  428. package/dist/scene/facing.d.ts +18 -0
  429. package/dist/scene/facing.js +26 -0
  430. package/dist/scene/modelSockets.d.ts +33 -0
  431. package/dist/scene/modelSockets.js +29 -0
  432. package/dist/scene/objectQuery.d.ts +2 -0
  433. package/dist/scene/objectQuery.js +2 -0
  434. package/dist/scene/objectStore.d.ts +4 -0
  435. package/dist/scene/objectStore.js +6 -0
  436. package/dist/scene/possession.d.ts +8 -0
  437. package/dist/scene/possession.js +14 -0
  438. package/dist/scene/roster.d.ts +3 -0
  439. package/dist/scene/roster.js +12 -0
  440. package/dist/scene/sceneKinds.d.ts +240 -0
  441. package/dist/scene/sceneKinds.js +214 -0
  442. package/dist/scene/sceneOwnership.d.ts +169 -0
  443. package/dist/scene/sceneOwnership.js +179 -0
  444. package/dist/scene/selectionBookmarks.d.ts +93 -0
  445. package/dist/scene/selectionBookmarks.js +122 -0
  446. package/dist/scene/vehicleSeat.d.ts +68 -0
  447. package/dist/scene/vehicleSeat.js +59 -0
  448. package/dist/sensor/concealment.d.ts +3 -0
  449. package/dist/sensor/concealment.js +3 -0
  450. package/dist/sensor/freezeMonitor.d.ts +1 -0
  451. package/dist/sensor/freezeMonitor.js +1 -0
  452. package/dist/sensor/frustumSensor.d.ts +7 -3
  453. package/dist/sensor/frustumSensor.js +7 -3
  454. package/dist/sensor/hiddenStateProbe.d.ts +5 -2
  455. package/dist/sensor/hiddenStateProbe.js +5 -2
  456. package/dist/sensor/recordingBuffer.d.ts +2 -1
  457. package/dist/sensor/recordingBuffer.js +2 -1
  458. package/dist/sensor/replayLoop.d.ts +6 -2
  459. package/dist/sensor/replayLoop.js +6 -2
  460. package/dist/sensor/revealQuery.d.ts +2 -1
  461. package/dist/sensor/revealQuery.js +2 -1
  462. package/dist/sensor/visionCone.d.ts +10 -3
  463. package/dist/sensor/visionCone.js +10 -3
  464. package/dist/session/contestedChannel.d.ts +1 -0
  465. package/dist/session/contestedChannel.js +1 -0
  466. package/dist/session/extraction.d.ts +1 -0
  467. package/dist/session/extraction.js +1 -0
  468. package/dist/session/roles.d.ts +6 -0
  469. package/dist/session/roles.js +6 -0
  470. package/dist/session/roundState.d.ts +8 -0
  471. package/dist/session/roundState.js +2 -0
  472. package/dist/settings/settingsModel.d.ts +1 -0
  473. package/dist/settings/settingsModel.js +1 -0
  474. package/dist/stats/accumulatorMeter.d.ts +6 -0
  475. package/dist/stats/accumulatorMeter.js +6 -0
  476. package/dist/stats/eventMeter.d.ts +5 -0
  477. package/dist/stats/eventMeter.js +5 -0
  478. package/dist/stats/rollCheck.d.ts +5 -0
  479. package/dist/stats/rollCheck.js +5 -0
  480. package/dist/stats/statModifiers.d.ts +5 -0
  481. package/dist/stats/statModifiers.js +5 -0
  482. package/dist/store/defineKeyedStore.d.ts +38 -0
  483. package/dist/store/defineKeyedStore.js +42 -0
  484. package/dist/store/defineStore.d.ts +33 -0
  485. package/dist/store/defineStore.js +35 -0
  486. package/dist/store/observableKeyedStore.d.ts +9 -0
  487. package/dist/store/observableKeyedStore.js +43 -2
  488. package/dist/survival/decayMeter.d.ts +55 -0
  489. package/dist/survival/decayMeter.js +130 -55
  490. package/dist/survival/moodle.d.ts +2 -0
  491. package/dist/survival/regionHealth.d.ts +6 -0
  492. package/dist/survival/regionHealth.js +5 -0
  493. package/dist/tactics/fallingGrid.d.ts +6 -4
  494. package/dist/tactics/fallingGrid.js +6 -4
  495. package/dist/tactics/predictiveQuery.d.ts +3 -0
  496. package/dist/tactics/predictiveQuery.js +3 -0
  497. package/dist/tactics/snapshot.d.ts +2 -0
  498. package/dist/tactics/snapshot.js +2 -0
  499. package/dist/tactics/surface.d.ts +1 -0
  500. package/dist/tactics/surface.js +1 -0
  501. package/dist/tactics/tacticalGrid.d.ts +1 -0
  502. package/dist/tactics/tacticalGrid.js +1 -0
  503. package/dist/time/beatClock.d.ts +14 -4
  504. package/dist/time/beatClock.js +14 -4
  505. package/dist/time/calendarClock.d.ts +3 -0
  506. package/dist/time/calendarClock.js +3 -0
  507. package/dist/time/idleProgress.d.ts +4 -0
  508. package/dist/time/idleProgress.js +4 -0
  509. package/dist/time/simClock.d.ts +2 -0
  510. package/dist/time/simClock.js +20 -5
  511. package/dist/ui/actionModel.d.ts +110 -0
  512. package/dist/ui/actionModel.js +159 -0
  513. package/dist/ui/gameLayout.d.ts +144 -0
  514. package/dist/ui/gameLayout.js +148 -0
  515. package/dist/ui/hudDocument.d.ts +114 -0
  516. package/dist/ui/hudDocument.js +220 -0
  517. package/dist/ui/hudLayout.d.ts +33 -1
  518. package/dist/ui/hudLayout.js +204 -17
  519. package/dist/ui/orientation.d.ts +39 -0
  520. package/dist/ui/orientation.js +49 -0
  521. package/dist/ui/selectionModel.d.ts +92 -0
  522. package/dist/ui/selectionModel.js +88 -0
  523. package/dist/ui/swingTimer.d.ts +42 -0
  524. package/dist/ui/swingTimer.js +38 -0
  525. package/dist/ui/tooltipModel.d.ts +63 -0
  526. package/dist/ui/tooltipModel.js +82 -0
  527. package/dist/ui.d.ts +15 -0
  528. package/dist/ui.js +15 -0
  529. package/dist/visibility/bounds.d.ts +8 -1
  530. package/dist/visibility/bounds.js +8 -1
  531. package/dist/visibility/frustum.d.ts +12 -3
  532. package/dist/visibility/frustum.js +12 -3
  533. package/dist/visibility/spatialIndex.js +34 -20
  534. package/dist/work/jobQueue.d.ts +201 -0
  535. package/dist/work/jobQueue.js +253 -0
  536. package/dist/work/unitTraining.d.ts +58 -0
  537. package/dist/work/unitTraining.js +52 -0
  538. package/dist/world/authoredObjects.d.ts +58 -0
  539. package/dist/world/authoredObjects.js +69 -0
  540. package/dist/world/buildingGenerator.d.ts +18 -0
  541. package/dist/world/buildingGenerator.js +62 -0
  542. package/dist/world/buildings.d.ts +5 -0
  543. package/dist/world/buildings.js +5 -0
  544. package/dist/world/catenary.d.ts +22 -0
  545. package/dist/world/catenary.js +69 -0
  546. package/dist/world/environmentSummary.d.ts +11 -2
  547. package/dist/world/environmentSummary.js +11 -1
  548. package/dist/world/features.d.ts +244 -7
  549. package/dist/world/features.js +92 -4
  550. package/dist/world/footprintGrid.d.ts +59 -0
  551. package/dist/world/footprintGrid.js +141 -0
  552. package/dist/world/geometry.d.ts +64 -0
  553. package/dist/world/geometry.js +94 -0
  554. package/dist/world/grassKind.d.ts +51 -0
  555. package/dist/world/grassKind.js +101 -0
  556. package/dist/world/pathInstances.d.ts +27 -0
  557. package/dist/world/pathInstances.js +27 -0
  558. package/dist/world/pathTerrain.d.ts +80 -0
  559. package/dist/world/pathTerrain.js +142 -0
  560. package/dist/world/placeAsset.d.ts +81 -0
  561. package/dist/world/placeAsset.js +77 -0
  562. package/dist/world/placement.d.ts +4 -0
  563. package/dist/world/placement.js +4 -0
  564. package/dist/world/placementController.d.ts +6 -0
  565. package/dist/world/placementController.js +6 -0
  566. package/dist/world/polyline.d.ts +34 -0
  567. package/dist/world/polyline.js +81 -0
  568. package/dist/world/roads.d.ts +55 -0
  569. package/dist/world/roads.js +184 -0
  570. package/dist/world/scatterRegion.d.ts +164 -0
  571. package/dist/world/scatterRegion.js +409 -0
  572. package/dist/world/sceneShapes.d.ts +43 -0
  573. package/dist/world/sceneShapes.js +1 -0
  574. package/dist/world/segment.d.ts +27 -0
  575. package/dist/world/segment.js +43 -0
  576. package/dist/world/soilKind.d.ts +48 -0
  577. package/dist/world/soilKind.js +92 -0
  578. package/dist/world/spatialSample.d.ts +241 -0
  579. package/dist/world/spatialSample.js +465 -0
  580. package/dist/world/streets.d.ts +80 -0
  581. package/dist/world/streets.js +144 -0
  582. package/dist/world/terraform.d.ts +213 -1
  583. package/dist/world/terraform.js +655 -20
  584. package/dist/world/terrain.d.ts +138 -12
  585. package/dist/world/terrain.js +346 -28
  586. package/dist/world/terrainGuides.d.ts +182 -0
  587. package/dist/world/terrainGuides.js +343 -0
  588. package/dist/world/vec2.d.ts +81 -0
  589. package/dist/world/vec2.js +128 -0
  590. package/dist/world/vec3.d.ts +49 -0
  591. package/dist/world/vec3.js +76 -0
  592. package/dist/world/vegetation.d.ts +71 -0
  593. package/dist/world/vegetation.js +151 -0
  594. package/dist/world/visibilityField.d.ts +154 -0
  595. package/dist/world/visibilityField.js +271 -0
  596. package/dist/world/volumetricClouds.d.ts +52 -0
  597. package/dist/world/volumetricClouds.js +43 -0
  598. package/dist/world/walls.d.ts +9 -0
  599. package/dist/world/walls.js +9 -0
  600. package/dist/world/waterKind.d.ts +55 -0
  601. package/dist/world/waterKind.js +99 -0
  602. package/dist/world.d.ts +132 -0
  603. package/dist/world.js +132 -0
  604. package/package.json +32 -8
  605. package/skills/jgengine/SKILL.md +51 -0
  606. package/skills/jgengine/api.md +434 -0
  607. package/skills/jgengine/capabilities.md +29 -0
  608. package/skills/jgengine/reference-cartridge.md +72 -0
  609. package/skills/jgengine-combat/SKILL.md +34 -0
  610. package/skills/jgengine-combat/api.md +549 -0
  611. package/skills/jgengine-combat/capabilities.md +169 -0
  612. package/skills/jgengine-combat/reference.md +98 -0
  613. package/skills/jgengine-gameplay/SKILL.md +39 -0
  614. package/skills/jgengine-gameplay/api.md +1794 -0
  615. package/skills/jgengine-gameplay/capabilities.md +378 -0
  616. package/skills/jgengine-gameplay/reference-systems.md +60 -0
  617. package/skills/jgengine-world/SKILL.md +38 -0
  618. package/skills/jgengine-world/api.md +2652 -0
  619. package/skills/jgengine-world/capabilities.md +370 -0
  620. package/skills/jgengine-world/reference.md +222 -0
  621. package/dist/cartridge/runtime.d.ts +0 -15
  622. package/dist/cartridge/runtime.js +0 -556
  623. package/dist/cartridge/spec.d.ts +0 -188
  624. package/dist/cartridge/spec.js +0 -19
  625. package/dist/cartridge/validate.d.ts +0 -2
  626. package/dist/cartridge/validate.js +0 -78
  627. package/dist/store/engineStore.d.ts +0 -22
  628. package/dist/store/engineStore.js +0 -50
  629. package/dist/store/features.d.ts +0 -10
  630. package/dist/store/features.js +0 -23
  631. package/llms.txt +0 -4983
@@ -0,0 +1,138 @@
1
+ import type { RetainedVfxKind, VfxRef } from "./events.js";
2
+ /**
3
+ * The serializable specification for creating (or replacing) a retained VFX instance. Unlike a one-shot
4
+ * `combat.vfx` burst this describes a long-lived effect whose endpoints and parameters are updated over
5
+ * time. `id` is caller-stable so repeated `upsert` calls address the same effect; omit it to mint one.
6
+ * `from`/`to` are {@link VfxRef}s (an entity instance id or a world point) that a renderer resolves each
7
+ * frame, so an endpoint bound to a moving entity follows it without any per-frame command traffic.
8
+ */
9
+ export interface VfxInstanceSpec {
10
+ /** Caller-stable handle. Repeated `upsert` with the same id replaces the instance; omitted mints a fresh id. */
11
+ id?: string;
12
+ /** Open effect archetype (e.g. `"beam"`). Renderers register kinds, so new visuals need no central branch. */
13
+ kind: RetainedVfxKind;
14
+ /** `0xRRGGBB` tint. */
15
+ color: number;
16
+ /** Origin endpoint: an entity instance id (followed live) or a fixed world point. */
17
+ from?: VfxRef;
18
+ /** Target endpoint: an entity instance id (followed live) or a fixed world point. */
19
+ to?: VfxRef;
20
+ /** Effect radius/thickness in world units, interpreted per kind. */
21
+ radius?: number;
22
+ /** Extra numeric knobs a renderer reads by name (intensity, spin, width, ...), kept a flat serializable bag. */
23
+ params?: Readonly<Record<string, number>>;
24
+ /** Optional time-to-live in ms: the instance auto-stops if `tick` runs past `ttlMs` since its last touch (heartbeat). */
25
+ ttlMs?: number;
26
+ }
27
+ /**
28
+ * The stored, fully-resolved form of a retained VFX instance. It is a plain serializable record so hosts can
29
+ * replicate it and debug tooling can inspect it; renderers receive it verbatim and never merge partial state
30
+ * themselves. `updatedAtMs` is the last create/update time and drives TTL heartbeat eviction.
31
+ */
32
+ export interface VfxInstanceState {
33
+ /** Stable instance id. */
34
+ readonly id: string;
35
+ /** Effect archetype. */
36
+ readonly kind: RetainedVfxKind;
37
+ /** `0xRRGGBB` tint. */
38
+ readonly color: number;
39
+ /** Origin endpoint, if any. */
40
+ readonly from?: VfxRef;
41
+ /** Target endpoint, if any. */
42
+ readonly to?: VfxRef;
43
+ /** Effect radius/thickness. */
44
+ readonly radius?: number;
45
+ /** Renderer knobs. */
46
+ readonly params?: Readonly<Record<string, number>>;
47
+ /** TTL in ms, if the instance heartbeats. */
48
+ readonly ttlMs?: number;
49
+ /** Clock time (ms) of the last create/update; the TTL heartbeat measures staleness from here. */
50
+ readonly updatedAtMs: number;
51
+ }
52
+ /**
53
+ * A partial update to a live retained VFX instance. Only the provided fields change; `params` is shallow-merged
54
+ * so a caller can nudge one knob without resending the whole bag. Setting a field to `undefined` clears it.
55
+ * Applying a patch refreshes the instance heartbeat.
56
+ */
57
+ export interface VfxInstancePatch {
58
+ /** New tint. */
59
+ color?: number;
60
+ /** New origin endpoint. */
61
+ from?: VfxRef;
62
+ /** New target endpoint. */
63
+ to?: VfxRef;
64
+ /** New radius/thickness. */
65
+ radius?: number;
66
+ /** Knobs shallow-merged into the current `params`. */
67
+ params?: Readonly<Record<string, number>>;
68
+ }
69
+ /** Options for {@link VfxInstanceStore.stop}. */
70
+ export interface VfxInstanceStopOptions {
71
+ /** Fade-out duration in ms handed to the renderer; `0` (default) disposes immediately. */
72
+ fadeMs?: number;
73
+ }
74
+ /**
75
+ * The lifecycle op a {@link VfxInstanceStore} emits to its renderer sink. `upsert`/`update` carry the full merged
76
+ * {@link VfxInstanceState} (the renderer applies it directly, no merge); `stop` carries the id plus a fade duration.
77
+ * This is the payload of the `combat.vfxInstance` game event when the store is wired to the event bus.
78
+ */
79
+ export interface CombatVfxInstanceEvent {
80
+ /** `upsert` creates/replaces, `update` mutates dynamic params, `stop` disposes (with optional fade). */
81
+ readonly op: "upsert" | "update" | "stop";
82
+ /** The affected instance id. */
83
+ readonly id: string;
84
+ /** The full merged state, present for `upsert` and `update`. */
85
+ readonly instance?: VfxInstanceState;
86
+ /** Fade-out duration in ms, present for `stop`. */
87
+ readonly fadeMs?: number;
88
+ }
89
+ /**
90
+ * A headless registry of retained VFX instances: create/replace, partially update, and stop long-lived effects
91
+ * addressed by stable id, independent of any renderer. It owns the authoritative serializable state and exposes
92
+ * inspection counts; wire {@link VfxInstanceStoreOptions.onOp} to a renderer (via the `combat.vfxInstance` event)
93
+ * to drive visuals.
94
+ */
95
+ export interface VfxInstanceStore {
96
+ /**
97
+ * Create the instance, or replace it in place when its id already exists (idempotent by id). Returns the id
98
+ * (minted when the spec omits one). Refreshes the heartbeat.
99
+ */
100
+ upsert(spec: VfxInstanceSpec): string;
101
+ /**
102
+ * Merge `patch` into the live instance and refresh its heartbeat. Returns `false` for an unknown id (a missing
103
+ * update is a no-op, never a throw), `true` otherwise.
104
+ */
105
+ update(id: string, patch: VfxInstancePatch): boolean;
106
+ /** Dispose the instance, emitting a `stop` op with the resolved fade. Returns `false` for an unknown id. */
107
+ stop(id: string, options?: VfxInstanceStopOptions): boolean;
108
+ /** The current state of `id`, or `null` if absent. */
109
+ get(id: string): VfxInstanceState | null;
110
+ /** Every live instance, insertion-ordered. */
111
+ list(): readonly VfxInstanceState[];
112
+ /** Live instance count, for debug/inspection HUDs. */
113
+ count(): number;
114
+ /** Auto-stop instances whose TTL has elapsed as of `nowMs` (defaults to the store clock). Returns the number stopped. */
115
+ tick(nowMs?: number): number;
116
+ /** Dispose every instance (scene change / reset), emitting a `stop` op for each. */
117
+ clear(): void;
118
+ }
119
+ /** Options for {@link createVfxInstanceStore}. */
120
+ export interface VfxInstanceStoreOptions {
121
+ /** Sink for lifecycle ops; wire to `events.emit("combat.vfxInstance", op)` so the shell renders them. */
122
+ onOp?: (op: CombatVfxInstanceEvent) => void;
123
+ /** Injected clock (ms) for heartbeat timestamps and TTL; defaults to `Date.now`. Pass a sim clock for determinism. */
124
+ now?: () => number;
125
+ /** Prefix for minted instance ids. Defaults to `"vfx"`. */
126
+ idPrefix?: string;
127
+ }
128
+ /**
129
+ * Build a headless retained-VFX registry. The store is the serializable source of truth for long-lived effects
130
+ * (beams, tethers, zones, target lines, looping emitters) that must move and mutate without one-shot re-emit
131
+ * flicker: `upsert` creates or replaces by stable id, `update` nudges dynamic params, `stop` disposes with an
132
+ * optional fade, and `tick` enforces TTL heartbeats. It stays independent of renderer availability, so simulation
133
+ * and tests run without a shell; a wired `onOp` sink turns each op into a `combat.vfxInstance` event the shell
134
+ * binds to render resources.
135
+ *
136
+ * @capability retained-vfx create/update/stop long-lived dynamic visual effects (beam, tether, zone, target line) by stable id
137
+ */
138
+ export declare function createVfxInstanceStore(options?: VfxInstanceStoreOptions): VfxInstanceStore;
@@ -0,0 +1,96 @@
1
+ function cloneParams(params) {
2
+ return params === undefined ? undefined : { ...params };
3
+ }
4
+ /**
5
+ * Build a headless retained-VFX registry. The store is the serializable source of truth for long-lived effects
6
+ * (beams, tethers, zones, target lines, looping emitters) that must move and mutate without one-shot re-emit
7
+ * flicker: `upsert` creates or replaces by stable id, `update` nudges dynamic params, `stop` disposes with an
8
+ * optional fade, and `tick` enforces TTL heartbeats. It stays independent of renderer availability, so simulation
9
+ * and tests run without a shell; a wired `onOp` sink turns each op into a `combat.vfxInstance` event the shell
10
+ * binds to render resources.
11
+ *
12
+ * @capability retained-vfx create/update/stop long-lived dynamic visual effects (beam, tether, zone, target line) by stable id
13
+ */
14
+ export function createVfxInstanceStore(options = {}) {
15
+ const onOp = options.onOp;
16
+ const now = options.now ?? (() => Date.now());
17
+ const idPrefix = options.idPrefix ?? "vfx";
18
+ const instances = new Map();
19
+ let seq = 0;
20
+ function emit(op) {
21
+ onOp?.(op);
22
+ }
23
+ function upsert(spec) {
24
+ const id = spec.id ?? `${idPrefix}-${seq++}`;
25
+ const state = {
26
+ id,
27
+ kind: spec.kind,
28
+ color: spec.color,
29
+ ...(spec.from === undefined ? {} : { from: spec.from }),
30
+ ...(spec.to === undefined ? {} : { to: spec.to }),
31
+ ...(spec.radius === undefined ? {} : { radius: spec.radius }),
32
+ ...(spec.params === undefined ? {} : { params: cloneParams(spec.params) }),
33
+ ...(spec.ttlMs === undefined ? {} : { ttlMs: spec.ttlMs }),
34
+ updatedAtMs: now(),
35
+ };
36
+ instances.set(id, state);
37
+ emit({ op: "upsert", id, instance: state });
38
+ return id;
39
+ }
40
+ function update(id, patch) {
41
+ const current = instances.get(id);
42
+ if (current === undefined)
43
+ return false;
44
+ const mergedParams = patch.params === undefined ? current.params : { ...(current.params ?? {}), ...patch.params };
45
+ const nextFrom = "from" in patch ? patch.from : current.from;
46
+ const nextTo = "to" in patch ? patch.to : current.to;
47
+ const nextRadius = "radius" in patch ? patch.radius : current.radius;
48
+ const next = {
49
+ id: current.id,
50
+ kind: current.kind,
51
+ color: patch.color ?? current.color,
52
+ ...(nextFrom === undefined ? {} : { from: nextFrom }),
53
+ ...(nextTo === undefined ? {} : { to: nextTo }),
54
+ ...(nextRadius === undefined ? {} : { radius: nextRadius }),
55
+ ...(mergedParams === undefined ? {} : { params: cloneParams(mergedParams) }),
56
+ ...(current.ttlMs === undefined ? {} : { ttlMs: current.ttlMs }),
57
+ updatedAtMs: now(),
58
+ };
59
+ instances.set(id, next);
60
+ emit({ op: "update", id, instance: next });
61
+ return true;
62
+ }
63
+ function stop(id, stopOptions = {}) {
64
+ if (!instances.has(id))
65
+ return false;
66
+ instances.delete(id);
67
+ emit({ op: "stop", id, fadeMs: stopOptions.fadeMs ?? 0 });
68
+ return true;
69
+ }
70
+ function get(id) {
71
+ return instances.get(id) ?? null;
72
+ }
73
+ function list() {
74
+ return [...instances.values()];
75
+ }
76
+ function count() {
77
+ return instances.size;
78
+ }
79
+ function tick(nowMs = now()) {
80
+ let stopped = 0;
81
+ for (const state of [...instances.values()]) {
82
+ if (state.ttlMs === undefined)
83
+ continue;
84
+ if (nowMs - state.updatedAtMs >= state.ttlMs) {
85
+ if (stop(state.id))
86
+ stopped += 1;
87
+ }
88
+ }
89
+ return stopped;
90
+ }
91
+ function clear() {
92
+ for (const id of [...instances.keys()])
93
+ stop(id);
94
+ }
95
+ return { upsert, update, stop, get, list, count, tick, clear };
96
+ }
@@ -11,8 +11,11 @@ export interface ScatterOptions {
11
11
  height?: number;
12
12
  }
13
13
  export declare const DEFAULT_SCATTER: ScatterOptions;
14
- /** Random offset within an annulus `[minRadius, radius]` around the origin — the on-death scatter impulse. */
14
+ /** Random offset within an annulus `[minRadius, radius]` around the origin — the on-death scatter impulse.
15
+ * @internal
16
+ */
15
17
  export declare function scatterOffset(rng: () => number, options?: ScatterOptions): EntityPosition;
18
+ /** @internal */
16
19
  export declare function scatterPosition(origin: EntityPosition, rng: () => number, options?: ScatterOptions): EntityPosition;
17
20
  export interface WorldItemRecord {
18
21
  instanceId: string;
@@ -49,11 +52,19 @@ export interface WorldItemStore {
49
52
  /** Consumes/destroys the record with no grant implied (decay, an explosion, a cleanup sweep) — same despawn path as `take`, leaves no orphaned record. */
50
53
  remove(instanceId: string): WorldItemRecord | null;
51
54
  }
52
- /** Pure pickup-radius + nearest-item selection, usable without a live store (click-to-grab, proximity prompts). */
55
+ /** Pure pickup-radius + nearest-item selection, usable without a live store (click-to-grab, proximity prompts).
56
+ * @internal
57
+ */
53
58
  export declare function selectNearestWorldItem(candidates: readonly {
54
59
  instanceId: string;
55
60
  position: EntityPosition;
56
61
  }[], from: EntityPosition, radius: number): string | null;
62
+ /**
63
+ * Spawn and track pickup-able items scattered in the world, including drops that scatter on death.
64
+ *
65
+ * @capability world-drops spawn pickup-able items in the world, including death drops
66
+ * @internal
67
+ */
57
68
  export declare function createWorldItemStore(deps: WorldItemStoreDeps): WorldItemStore;
58
69
  export interface ResolveDeathDropsOptions {
59
70
  mode: "grant" | "world";
@@ -73,7 +84,8 @@ export interface ResolvedDeathDrops {
73
84
  * `mode: "grant"` is the legacy behavior (loot straight to inventory); `mode:
74
85
  * "world"` routes item drops through a scatter impulse and leaves currency
75
86
  * drops granting directly (coins fly to the killer, gear hits the ground).
76
- */
87
+ * @internal
88
+ */
77
89
  export declare function resolveDeathDrops(drops: readonly Drop[], options: ResolveDeathDropsOptions): ResolvedDeathDrops;
78
90
  export interface RarityStyle {
79
91
  color?: string;
@@ -91,5 +103,6 @@ export interface WorldItemPresentation {
91
103
  * data the game supplies) with the loot-filter rule overrides (#33). A
92
104
  * matching rule wins field-by-field; unmatched fields fall back to the
93
105
  * rarity's baseline style.
94
- */
106
+ * @internal
107
+ */
95
108
  export declare function resolveWorldItemPresentation(item: LootFilterItem, rarityStyle: Record<string, RarityStyle> | undefined, rules: readonly LootFilterRule[] | undefined): WorldItemPresentation;
@@ -5,7 +5,9 @@ export const WORLD_ITEM_ENTITY_NAME = "world_item";
5
5
  export const DEFAULT_RARITY = "common";
6
6
  export const DEFAULT_PICKUP_RADIUS = 2;
7
7
  export const DEFAULT_SCATTER = { radius: 1.5, minRadius: 0.4, height: 0 };
8
- /** Random offset within an annulus `[minRadius, radius]` around the origin — the on-death scatter impulse. */
8
+ /** Random offset within an annulus `[minRadius, radius]` around the origin — the on-death scatter impulse.
9
+ * @internal
10
+ */
9
11
  export function scatterOffset(rng, options = DEFAULT_SCATTER) {
10
12
  const angle = rng() * Math.PI * 2;
11
13
  const min = options.minRadius ?? 0;
@@ -13,11 +15,14 @@ export function scatterOffset(rng, options = DEFAULT_SCATTER) {
13
15
  const distance = min + rng() * span;
14
16
  return [Math.cos(angle) * distance, options.height ?? 0, Math.sin(angle) * distance];
15
17
  }
18
+ /** @internal */
16
19
  export function scatterPosition(origin, rng, options = DEFAULT_SCATTER) {
17
20
  const offset = scatterOffset(rng, options);
18
21
  return [origin[0] + offset[0], origin[1] + offset[1], origin[2] + offset[2]];
19
22
  }
20
- /** Pure pickup-radius + nearest-item selection, usable without a live store (click-to-grab, proximity prompts). */
23
+ /** Pure pickup-radius + nearest-item selection, usable without a live store (click-to-grab, proximity prompts).
24
+ * @internal
25
+ */
21
26
  export function selectNearestWorldItem(candidates, from, radius) {
22
27
  let bestId = null;
23
28
  let bestDistance = Number.POSITIVE_INFINITY;
@@ -30,6 +35,12 @@ export function selectNearestWorldItem(candidates, from, radius) {
30
35
  }
31
36
  return bestId;
32
37
  }
38
+ /**
39
+ * Spawn and track pickup-able items scattered in the world, including drops that scatter on death.
40
+ *
41
+ * @capability world-drops spawn pickup-able items in the world, including death drops
42
+ * @internal
43
+ */
33
44
  export function createWorldItemStore(deps) {
34
45
  const records = new Map();
35
46
  const now = deps.now ?? Date.now;
@@ -89,7 +100,8 @@ export function createWorldItemStore(deps) {
89
100
  * `mode: "grant"` is the legacy behavior (loot straight to inventory); `mode:
90
101
  * "world"` routes item drops through a scatter impulse and leaves currency
91
102
  * drops granting directly (coins fly to the killer, gear hits the ground).
92
- */
103
+ * @internal
104
+ */
93
105
  export function resolveDeathDrops(drops, options) {
94
106
  if (options.mode !== "world")
95
107
  return { worldSpawns: [], grants: [...drops] };
@@ -120,7 +132,8 @@ export function resolveDeathDrops(drops, options) {
120
132
  * data the game supplies) with the loot-filter rule overrides (#33). A
121
133
  * matching rule wins field-by-field; unmatched fields fall back to the
122
134
  * rarity's baseline style.
123
- */
135
+ * @internal
136
+ */
124
137
  export function resolveWorldItemPresentation(item, rarityStyle, rules) {
125
138
  const base = rarityStyle?.[item.rarity];
126
139
  const override = rules === undefined || rules.length === 0 ? {} : evaluateLootFilter(rules, item);
@@ -0,0 +1,91 @@
1
+ export { Behaviour, BehaviourModule, createBehaviourWorld, type BehaviourWorld } from "./behaviour/behaviour.js";
2
+ export { type LaneRule } from "./board/laneBoard.js";
3
+ export { createCardPile, createCardPileState, draw, moveCards, peek, pileRng, shuffleWithRng, type CardPile, type CardPileState, } from "./cards/cardPile.js";
4
+ export { runPipeline } from "./cards/modifierPipeline.js";
5
+ export { type CropDef, type CropTileState } from "./crafting/crop.js";
6
+ export { advanceTransport, createProductionState, drainOutput, feedProduction, productionBuilding, resolvePowerGrid, tickProduction, } from "./crafting/production.js";
7
+ export { canCraft, craft, craftSeconds, createRecipeGraph, stationSatisfied, type RecipeDef, type RecipeItem, } from "./crafting/recipe.js";
8
+ export { createListingBook, type Listing } from "./economy/listingBook.js";
9
+ export { addScheduledRule, advanceLedger, annotate, balanceOf, cancelRule, capAmount, createResourceLedger, curveScale, pauseRule, redirect, rejectWhen, resumeRule, taxFraction, thresholdScale, type AdvanceOptions, type AdvanceResult, type AppliedTransaction, type CatchUpPolicy, type LedgerEvent, type LedgerEventKind, type PolicyContext, type PolicyRead, type Precision, type ResourceLedger, type ResourcePolicy, type ResourceTransaction, type RuleCursor, type ScheduledRule, type ThresholdBand, } from "./economy/resourceLedger.js";
10
+ export { type TechNodeDef } from "./economy/techTree.js";
11
+ export { balance, charge, chargeAll, createEmptyWallet, grant, isOverdrawn } from "./economy/wallet.js";
12
+ export { DEFAULT_CHAT_BODY_LENGTH, DEFAULT_CHAT_HISTORY_LIMIT, DEFAULT_CHAT_RATE_LIMIT, createChatRateLimiter, type Chat, type ChatMessage, type ChatRateLimit, type ChatSendResult, } from "./game/chat.js";
13
+ export { playControlsActive } from "./game/controlGate.js";
14
+ export { createCosmetics } from "./game/cosmetics.js";
15
+ export { defineGame, type GameDefinition, type GameDefinitionConfig, type GameLoop, type InventoryDeclaration, type LifecycleConfig, type PhysicsConfig, } from "./game/defineGame.js";
16
+ export { defineSystem, type SystemDefinition, type SystemEventHandlers, type SystemTick } from "./game/defineSystem.js";
17
+ export { createGameDialogue, dialogueSlot } from "./game/dialogue.js";
18
+ export { createGameEvents, type CombatTelegraphEvent, type CombatVfxEvent, type EntityDiedEvent, type EntityFloatTextEvent, type GameEventMap, type GameEvents, type RetainedVfxKind, type StatLevelUpEvent, type VfxKind, type VfxRef, } from "./game/events.js";
19
+ export { appendFeed, createGameFeed, pruneFeed, type FeedEntry, type FeedWindow, type TimedFeedEntry, } from "./game/feed.js";
20
+ export { gamePhase, setGamePhase, type GamePhase } from "./game/gamePhase.js";
21
+ export { createKeyValueStore, type KeyValueStorage } from "./game/keyValueStore.js";
22
+ export { createLeaderboard, type LeaderboardRow, type LeaderboardScope } from "./game/leaderboard.js";
23
+ export { createLevelSequence, type LevelSequence } from "./game/levelSequence.js";
24
+ export { createLoadouts, type LoadoutDef } from "./game/loadout.js";
25
+ export { evaluateLootFilter, lootFilter, type LootFilterRule } from "./game/lootFilter.js";
26
+ export { createLootPipeline, defineLootPipeline, type LootDropProvenance, type LootModifier, type LootPipeline, type LootPipelineDef, type LootPipelineDeps, type LootPlanEntry, type LootResolution, type LootResolveContext, type LootRollPlan, type LootStage, type LootStageKind, type LootStageStatus, type LootStageTrace, } from "./game/lootPipeline.js";
27
+ export { createLootRegistry, lootTable, type Drop, type LootTableDef } from "./game/lootTable.js";
28
+ export { resolveOneShotClip } from "./game/modelAnimation.js";
29
+ export { evaluateObjective } from "./game/objectives.js";
30
+ export { createLayerRegistry, diffParams, orderLayers, resolveParams, resolveSelection, validateLayers, type LayerConflict, type LayerOps, type LayerRegistry, type LayerSelection, type ParamContribution, type ParamDelta, type ParamLayer, type ParamOp, type ParamSnapshot, } from "./game/paramLayers.js";
31
+ export { DEFAULT_PING_CATEGORIES, PING_FEED_ACTION, createPingSystem, type PingCategory, type PingSystem, } from "./game/ping.js";
32
+ export { CAMERA_FRUSTUM_DEFAULTS, worldHealthBarAllowsRole, type BackdropConfig, type CameraKeyframe, type CameraRigKind, type ChaseCameraConfig, type CinematicCameraConfig, type DirectionalLightingConfig, type EntitySpriteConfig, type FirstPersonCameraConfig, type GameCameraConfig, type InspectionCameraConfig, type InspectionZoomAnchor, type LightingConfig, type LockOnCameraConfig, type ModelConfig, type ModelMaterialMaps, type ModelMaterialOverride, type ObjectStyle, type ObserverCameraConfig, type PlayableGame, type PointerConfig, type RtsCameraConfig, type ShoulderCameraConfig, type SideScrollCameraConfig, type TopDownCameraConfig, type WorldItemRenderConfig, type WorldOverlayProps, } from "./game/playableGame.js";
33
+ export { curve, evalCurve, leveling, type Curve, type LevelProgress, type LevelingConfig, type LevelingTrack, } from "./game/progression.js";
34
+ export { createQuestJournal, type QuestDef, type QuestInstance, type QuestRewards } from "./game/quest.js";
35
+ export { RaceState, createLapTimer, createRaceState, finishRaceSession, firstPastPost, idleRaceSession, lapDurations, parDelta, placementOf, raceOutcomeOf, racePlacements, raceTrack, splitSegments, startRaceCountdown, tickRaceSession, } from "./game/race.js";
36
+ export { createRecordBook } from "./game/recordBook.js";
37
+ export { createRuleRegistry, rerollRules, selectRules, type RuleDef, type RuleRegistry, type RuleSelection, type RuleSelectionConfig, } from "./game/ruleSelection.js";
38
+ export { createRunDraft, type RunDraft, type RunModifierOffer } from "./game/runDraft.js";
39
+ export { createSaveStore, localSaveBackend, memorySaveBackend, remoteSaveBackend, type SaveBackend, type SaveStatus, type SaveStore, } from "./game/saveStore.js";
40
+ export { createSocial, type FriendEntry, type FriendRequestEntry, type Friends, type Party, type PartyInviteEntry, type PartyMemberEntry, type PresenceInfo, type Social, type SocialDeps, type WorldInvite, type WorldInviteTarget, } from "./game/social.js";
41
+ export { createSpawnPoints } from "./game/spawnPoints.js";
42
+ export { composeGameLoop } from "./game/systemRuntime.js";
43
+ export { DEFAULT_FIXED_STAGES, DEFAULT_FRAME_STAGES, compileSystemSchedule, type CompiledSystemSchedule, } from "./game/systemSchedule.js";
44
+ export { createTalentTree, type TalentNodeDef, type TalentTree } from "./game/talents.js";
45
+ export { appendToast, createToastQueue, pruneToasts, type Toast } from "./game/toasts.js";
46
+ export { createUnlockCatalog, createUnlocks, type UnlockDef } from "./game/unlocks.js";
47
+ export { createVfxInstanceStore, type CombatVfxInstanceEvent, type VfxInstancePatch, type VfxInstanceSpec, type VfxInstanceState, type VfxInstanceStopOptions, type VfxInstanceStore, type VfxInstanceStoreOptions, } from "./game/vfxInstance.js";
48
+ export { DEFAULT_PICKUP_RADIUS, WORLD_ITEM_ENTITY_NAME, type RarityStyle, type WorldItemRecord, } from "./game/worldItem.js";
49
+ export { type ActionCodes, type ActionCodesMap, type ActionStateTracker } from "./input/actionBindings.js";
50
+ export { NEUTRAL_AXIS, type AxisBindingMap, type AxisChannelConfig, type AxisInput } from "./input/axisInput.js";
51
+ export { applyBindingOverrides, clearBindingOverride, loadBindingOverrides, saveBindingOverride, type BindingOverrides, } from "./input/bindingOverrides.js";
52
+ export { createGestureSurfaceTracker } from "./input/gestureSurface.js";
53
+ export { aimToPoint, type PointerHit, type PointerVec3 } from "./input/pointer.js";
54
+ export { normalizePointerToAxis, type PointerAxisState } from "./input/pointerAxis.js";
55
+ export { createTouchGestureTracker } from "./input/touchGestures.js";
56
+ export { DEFAULT_TOUCH_STYLE, TOUCH_STYLES, TOUCH_STYLE_OPTIONS, deriveTouchScheme, touchButtonShape, touchCode, withTouchCodes, type TouchAnchor, type TouchButton, type TouchButtonShape, type TouchJoystick, type TouchScheme, type TouchStyle, } from "./input/touchScheme.js";
57
+ export { type InventorySlot, type InventoryState } from "./inventory/inventoryModel.js";
58
+ export { type Cell, type Rotation } from "./inventory/shapedGrid.js";
59
+ export { type SlotGrid } from "./inventory/slotModel.js";
60
+ export { createDeliveryQueue, insureLost, partitionOnDeath, resolveConsolation, type DeliveryEntry, type DeliveryQueue, type ScheduledDelivery, } from "./inventory/storageTier.js";
61
+ export { createAffixRoller, seededRng, type AffixPool } from "./item/affix.js";
62
+ export { applyWear, createDurability, createDurabilityTracker, durabilityFraction, isDisabled, repairQuote, wear, type DurabilitySpec, type DurabilityState, } from "./item/durability.js";
63
+ export { activeSetBonuses, applySetBonuses, candidateViolatesForbid, captureProvenance, countSetMembers, identityOf, isIdentityValid, matchesQuery, validateIdentity, type CandidatePlacement, type CompatibilityRule, type ConstraintViolation, type ForbidRule, type IdentityQuery, type ItemIdentity, type ItemProvenance, type RequireRule, type SetBonus, } from "./item/itemIdentity.js";
64
+ export { createItemInstanceRegistry, proceduralLootEntry } from "./item/itemInstanceRegistry.js";
65
+ export { generate, type GenChoiceRecord, type GenChoices, type GenDraft, type GenFieldRecord, type GenOption, type GenOutcome, type GenPool, type GenProvenance, type GenResult, type GenSchema, type GenStep, type GenTransform, type GenValidator, type GenerateOptions, type TransformApi, } from "./item/itemgen.js";
66
+ export { computeEffectiveStats, createModularItem, install, isComplete, missingRequiredSlots, partInSlot, slotAccepts, uninstall, type InstalledPart, type ModularItemDef, type MountSlotDef, type PartDef, } from "./item/modularItem.js";
67
+ export { createItemUse, type ItemUseHandler, type ItemUseInput } from "./item/use.js";
68
+ export { createUseBehaviorRegistry, type BehaviorConfig, type BehaviorState, type ComposedUse, type CompositionResult, type SerializedBehaviorState, type UseBehaviorContext, type UseBehaviorDef, type UseBehaviorOutcome, type UseBehaviorRef, type UseBehaviorRegistry, type UseBehaviorRejection, } from "./item/useBehavior.js";
69
+ export { createWeaponStats } from "./item/weapon.js";
70
+ export { createStatGraph, statModifierContributions, type StatContribution, type StatContributionStep, type StatDeriveContext, type StatDerivedDef, type StatExplanation, type StatGraph, type StatGraphDef, type StatInputDef, type StatModEntry, type StatOp, type StatSheet, type StatSheetState, } from "./progression/statGraph.js";
71
+ export { type CellGrid } from "./puzzle/cellGrid.js";
72
+ export { type ShapeTable } from "./puzzle/fallingPiece.js";
73
+ export { createNameGenerator } from "./random/nameGen.js";
74
+ export { pickUniform, pickWeighted } from "./random/pick.js";
75
+ export { seededStreams } from "./random/rng.js";
76
+ export { addValue, clampValue, createPairKeyCodec, driftValue, getValue, setValue, towardValue, type NumericBounds, type PairKeyCodec, type PairKeyOptions, } from "./relation/keyedValues.js";
77
+ export { crossThresholds, tierAt, type CrossThresholdsOptions, type ThresholdBoundary, type ThresholdCrossing, type ThresholdDirection, } from "./relation/thresholds.js";
78
+ export { evaluatePredicate, readPath, type Predicate, type PredicateFacts, type PredicatePath, type PredicateValue, } from "./rules/predicate.js";
79
+ export { getRuleEffect, listRuleEffects, registerRuleEffect, type RuleEffectDefinition } from "./rules/ruleEffects.js";
80
+ export { createTriggeredRuleEngine, type ActiveEffect, type EffectRef, type FiringBlock, type RateLimit, type RuleEvent, type RuleFiring, type StackPolicy, type TargetRole, type TargetSelector, type TriggeredRule, type TriggeredRuleEngine, type TriggeredRuleState, } from "./rules/triggeredRules.js";
81
+ export { createRing, ringSampleAt, type Ring, type RingConfig, type RingPhase } from "./session/ring.js";
82
+ export { type RoleSpec } from "./session/roles.js";
83
+ export { type RoundConfig, type RoundSnapshot } from "./session/roundState.js";
84
+ export { createDecayMeterSet, decayMeterMoodles, decayMeterSnapshot, decayMeterState, decayMeters, initDecayMeters, refillMeter, type DecayMeterSet, type DecayMeterValues, type DecayModifier, } from "./survival/decayMeter.js";
85
+ export { createMoodleStack, stackMoodles, type Moodle, type MoodleStack } from "./survival/moodle.js";
86
+ export { createMultiRegionHealth, type MultiRegionHealth } from "./survival/regionHealth.js";
87
+ export { createCommitController } from "./turn/commit.js";
88
+ export { createIntentBoard } from "./turn/intent.js";
89
+ export { createTurnLoop, type TurnLoop } from "./turn/turnLoop.js";
90
+ export { activeJobs, cancelJob, createWorkQueue, enqueue, fifoOrdering, jobById, jobProgress, pauseJob, priorityOrdering, queueSize, queuedJobs, resumeJob, tick, type CancelResult, type EnqueueOptions, type EnqueueResult, type Job, type JobId, type JobOrdering, type JobStatus, type JobValidation, type TickResult, type WorkQueueConfig, type WorkQueueEvent, type WorkQueueState, } from "./work/jobQueue.js";
91
+ export { unitTrainingConfig, type ResourceCost, type TrainableUnitDef, type UnitReservation, type UnitSpawnOrder, type UnitTrainingOptions, type UnitTrainingSpec, } from "./work/unitTraining.js";
@@ -0,0 +1,91 @@
1
+ export { Behaviour, BehaviourModule, createBehaviourWorld } from "./behaviour/behaviour.js";
2
+ export {} from "./board/laneBoard.js";
3
+ export { createCardPile, createCardPileState, draw, moveCards, peek, pileRng, shuffleWithRng, } from "./cards/cardPile.js";
4
+ export { runPipeline } from "./cards/modifierPipeline.js";
5
+ export {} from "./crafting/crop.js";
6
+ export { advanceTransport, createProductionState, drainOutput, feedProduction, productionBuilding, resolvePowerGrid, tickProduction, } from "./crafting/production.js";
7
+ export { canCraft, craft, craftSeconds, createRecipeGraph, stationSatisfied, } from "./crafting/recipe.js";
8
+ export { createListingBook } from "./economy/listingBook.js";
9
+ export { addScheduledRule, advanceLedger, annotate, balanceOf, cancelRule, capAmount, createResourceLedger, curveScale, pauseRule, redirect, rejectWhen, resumeRule, taxFraction, thresholdScale, } from "./economy/resourceLedger.js";
10
+ export {} from "./economy/techTree.js";
11
+ export { balance, charge, chargeAll, createEmptyWallet, grant, isOverdrawn } from "./economy/wallet.js";
12
+ export { DEFAULT_CHAT_BODY_LENGTH, DEFAULT_CHAT_HISTORY_LIMIT, DEFAULT_CHAT_RATE_LIMIT, createChatRateLimiter, } from "./game/chat.js";
13
+ export { playControlsActive } from "./game/controlGate.js";
14
+ export { createCosmetics } from "./game/cosmetics.js";
15
+ export { defineGame, } from "./game/defineGame.js";
16
+ export { defineSystem } from "./game/defineSystem.js";
17
+ export { createGameDialogue, dialogueSlot } from "./game/dialogue.js";
18
+ export { createGameEvents, } from "./game/events.js";
19
+ export { appendFeed, createGameFeed, pruneFeed, } from "./game/feed.js";
20
+ export { gamePhase, setGamePhase } from "./game/gamePhase.js";
21
+ export { createKeyValueStore } from "./game/keyValueStore.js";
22
+ export { createLeaderboard } from "./game/leaderboard.js";
23
+ export { createLevelSequence } from "./game/levelSequence.js";
24
+ export { createLoadouts } from "./game/loadout.js";
25
+ export { evaluateLootFilter, lootFilter } from "./game/lootFilter.js";
26
+ export { createLootPipeline, defineLootPipeline, } from "./game/lootPipeline.js";
27
+ export { createLootRegistry, lootTable } from "./game/lootTable.js";
28
+ export { resolveOneShotClip } from "./game/modelAnimation.js";
29
+ export { evaluateObjective } from "./game/objectives.js";
30
+ export { createLayerRegistry, diffParams, orderLayers, resolveParams, resolveSelection, validateLayers, } from "./game/paramLayers.js";
31
+ export { DEFAULT_PING_CATEGORIES, PING_FEED_ACTION, createPingSystem, } from "./game/ping.js";
32
+ export { CAMERA_FRUSTUM_DEFAULTS, worldHealthBarAllowsRole, } from "./game/playableGame.js";
33
+ export { curve, evalCurve, leveling, } from "./game/progression.js";
34
+ export { createQuestJournal } from "./game/quest.js";
35
+ export { RaceState, createLapTimer, createRaceState, finishRaceSession, firstPastPost, idleRaceSession, lapDurations, parDelta, placementOf, raceOutcomeOf, racePlacements, raceTrack, splitSegments, startRaceCountdown, tickRaceSession, } from "./game/race.js";
36
+ export { createRecordBook } from "./game/recordBook.js";
37
+ export { createRuleRegistry, rerollRules, selectRules, } from "./game/ruleSelection.js";
38
+ export { createRunDraft } from "./game/runDraft.js";
39
+ export { createSaveStore, localSaveBackend, memorySaveBackend, remoteSaveBackend, } from "./game/saveStore.js";
40
+ export { createSocial, } from "./game/social.js";
41
+ export { createSpawnPoints } from "./game/spawnPoints.js";
42
+ export { composeGameLoop } from "./game/systemRuntime.js";
43
+ export { DEFAULT_FIXED_STAGES, DEFAULT_FRAME_STAGES, compileSystemSchedule, } from "./game/systemSchedule.js";
44
+ export { createTalentTree } from "./game/talents.js";
45
+ export { appendToast, createToastQueue, pruneToasts } from "./game/toasts.js";
46
+ export { createUnlockCatalog, createUnlocks } from "./game/unlocks.js";
47
+ export { createVfxInstanceStore, } from "./game/vfxInstance.js";
48
+ export { DEFAULT_PICKUP_RADIUS, WORLD_ITEM_ENTITY_NAME, } from "./game/worldItem.js";
49
+ export {} from "./input/actionBindings.js";
50
+ export { NEUTRAL_AXIS } from "./input/axisInput.js";
51
+ export { applyBindingOverrides, clearBindingOverride, loadBindingOverrides, saveBindingOverride, } from "./input/bindingOverrides.js";
52
+ export { createGestureSurfaceTracker } from "./input/gestureSurface.js";
53
+ export { aimToPoint } from "./input/pointer.js";
54
+ export { normalizePointerToAxis } from "./input/pointerAxis.js";
55
+ export { createTouchGestureTracker } from "./input/touchGestures.js";
56
+ export { DEFAULT_TOUCH_STYLE, TOUCH_STYLES, TOUCH_STYLE_OPTIONS, deriveTouchScheme, touchButtonShape, touchCode, withTouchCodes, } from "./input/touchScheme.js";
57
+ export {} from "./inventory/inventoryModel.js";
58
+ export {} from "./inventory/shapedGrid.js";
59
+ export {} from "./inventory/slotModel.js";
60
+ export { createDeliveryQueue, insureLost, partitionOnDeath, resolveConsolation, } from "./inventory/storageTier.js";
61
+ export { createAffixRoller, seededRng } from "./item/affix.js";
62
+ export { applyWear, createDurability, createDurabilityTracker, durabilityFraction, isDisabled, repairQuote, wear, } from "./item/durability.js";
63
+ export { activeSetBonuses, applySetBonuses, candidateViolatesForbid, captureProvenance, countSetMembers, identityOf, isIdentityValid, matchesQuery, validateIdentity, } from "./item/itemIdentity.js";
64
+ export { createItemInstanceRegistry, proceduralLootEntry } from "./item/itemInstanceRegistry.js";
65
+ export { generate, } from "./item/itemgen.js";
66
+ export { computeEffectiveStats, createModularItem, install, isComplete, missingRequiredSlots, partInSlot, slotAccepts, uninstall, } from "./item/modularItem.js";
67
+ export { createItemUse } from "./item/use.js";
68
+ export { createUseBehaviorRegistry, } from "./item/useBehavior.js";
69
+ export { createWeaponStats } from "./item/weapon.js";
70
+ export { createStatGraph, statModifierContributions, } from "./progression/statGraph.js";
71
+ export {} from "./puzzle/cellGrid.js";
72
+ export {} from "./puzzle/fallingPiece.js";
73
+ export { createNameGenerator } from "./random/nameGen.js";
74
+ export { pickUniform, pickWeighted } from "./random/pick.js";
75
+ export { seededStreams } from "./random/rng.js";
76
+ export { addValue, clampValue, createPairKeyCodec, driftValue, getValue, setValue, towardValue, } from "./relation/keyedValues.js";
77
+ export { crossThresholds, tierAt, } from "./relation/thresholds.js";
78
+ export { evaluatePredicate, readPath, } from "./rules/predicate.js";
79
+ export { getRuleEffect, listRuleEffects, registerRuleEffect } from "./rules/ruleEffects.js";
80
+ export { createTriggeredRuleEngine, } from "./rules/triggeredRules.js";
81
+ export { createRing, ringSampleAt } from "./session/ring.js";
82
+ export {} from "./session/roles.js";
83
+ export {} from "./session/roundState.js";
84
+ export { createDecayMeterSet, decayMeterMoodles, decayMeterSnapshot, decayMeterState, decayMeters, initDecayMeters, refillMeter, } from "./survival/decayMeter.js";
85
+ export { createMoodleStack, stackMoodles } from "./survival/moodle.js";
86
+ export { createMultiRegionHealth } from "./survival/regionHealth.js";
87
+ export { createCommitController } from "./turn/commit.js";
88
+ export { createIntentBoard } from "./turn/intent.js";
89
+ export { createTurnLoop } from "./turn/turnLoop.js";
90
+ export { activeJobs, cancelJob, createWorkQueue, enqueue, fifoOrdering, jobById, jobProgress, pauseJob, priorityOrdering, queueSize, queuedJobs, resumeJob, tick, } from "./work/jobQueue.js";
91
+ export { unitTrainingConfig, } from "./work/unitTraining.js";
package/dist/index.d.ts CHANGED
@@ -1,7 +1,5 @@
1
- export * from "./runtime/save.js";
2
- export * from "./runtime/snapshot.js";
3
- export * from "./runtime/commandRunner.js";
4
- export * from "./runtime/gameRuntime.js";
5
- export * from "./runtime/adapter.js";
6
- export * from "./runtime/transport.js";
7
- export * from "./runtime/visibility.js";
1
+ /**
2
+ * Package root — deep-path imports only for engine APIs (`@jgengine/core/<domain>/<file>`).
3
+ * Re-exports {@link VERSION} / {@link CHANGELOG} so `import { VERSION } from "@jgengine/core"` works.
4
+ */
5
+ export { VERSION, CHANGELOG, type ChangelogEntry } from "./meta/changelog.js";
package/dist/index.js CHANGED
@@ -1,7 +1,5 @@
1
- export * from "./runtime/save.js";
2
- export * from "./runtime/snapshot.js";
3
- export * from "./runtime/commandRunner.js";
4
- export * from "./runtime/gameRuntime.js";
5
- export * from "./runtime/adapter.js";
6
- export * from "./runtime/transport.js";
7
- export * from "./runtime/visibility.js";
1
+ /**
2
+ * Package root — deep-path imports only for engine APIs (`@jgengine/core/<domain>/<file>`).
3
+ * Re-exports {@link VERSION} / {@link CHANGELOG} so `import { VERSION } from "@jgengine/core"` works.
4
+ */
5
+ export { VERSION, CHANGELOG } from "./meta/changelog.js";