@jgengine/core 0.10.0 → 0.12.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 (727) hide show
  1. package/CHANGELOG.md +39 -2
  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/populationDirector.d.ts +103 -0
  21. package/dist/ai/populationDirector.js +190 -0
  22. package/dist/ai/pursuit.d.ts +56 -0
  23. package/dist/ai/pursuit.js +53 -0
  24. package/dist/ai/spawnDirector.d.ts +7 -2
  25. package/dist/ai/spawnDirector.js +18 -15
  26. package/dist/ai/spawnPoint.d.ts +3 -1
  27. package/dist/ai/spawnPoint.js +3 -1
  28. package/dist/ai/targetAcquisition.d.ts +84 -0
  29. package/dist/ai/targetAcquisition.js +92 -0
  30. package/dist/anim/easing.d.ts +19 -0
  31. package/dist/anim/easing.js +19 -0
  32. package/dist/anim/oscillator.d.ts +12 -0
  33. package/dist/anim/oscillator.js +25 -0
  34. package/dist/area/areaEffectField.d.ts +127 -0
  35. package/dist/area/areaEffectField.js +175 -0
  36. package/dist/area/stackPolicy.d.ts +47 -0
  37. package/dist/area/stackPolicy.js +99 -0
  38. package/dist/authoring.d.ts +2 -1
  39. package/dist/authoring.js +2 -1
  40. package/dist/board/laneBoard.d.ts +13 -0
  41. package/dist/board/laneBoard.js +13 -0
  42. package/dist/board/timelineBoard.d.ts +10 -0
  43. package/dist/board/timelineBoard.js +10 -0
  44. package/dist/combat/abilityKit.d.ts +18 -0
  45. package/dist/combat/abilityKit.js +24 -9
  46. package/dist/combat/animationState.d.ts +5 -0
  47. package/dist/combat/animationState.js +5 -0
  48. package/dist/combat/breakMeters.d.ts +10 -0
  49. package/dist/combat/breakMeters.js +10 -0
  50. package/dist/combat/castRunner.d.ts +5 -0
  51. package/dist/combat/castRunner.js +5 -0
  52. package/dist/combat/comboPoints.d.ts +5 -0
  53. package/dist/combat/comboPoints.js +5 -0
  54. package/dist/combat/comboString.d.ts +5 -0
  55. package/dist/combat/comboString.js +5 -0
  56. package/dist/combat/damageInterceptors.d.ts +192 -0
  57. package/dist/combat/damageInterceptors.js +251 -0
  58. package/dist/combat/damageMatchup.d.ts +68 -0
  59. package/dist/combat/damageMatchup.js +42 -0
  60. package/dist/combat/damageResolution.d.ts +63 -0
  61. package/dist/combat/damageResolution.js +50 -0
  62. package/dist/combat/death.d.ts +7 -1
  63. package/dist/combat/death.js +5 -0
  64. package/dist/combat/deathReason.d.ts +14 -0
  65. package/dist/combat/deathReason.js +1 -0
  66. package/dist/combat/defensiveWindow.d.ts +5 -0
  67. package/dist/combat/defensiveWindow.js +5 -0
  68. package/dist/combat/dotField.d.ts +5 -1
  69. package/dist/combat/dotField.js +5 -1
  70. package/dist/combat/downed.d.ts +5 -0
  71. package/dist/combat/downed.js +5 -0
  72. package/dist/combat/effects.d.ts +5 -0
  73. package/dist/combat/effects.js +5 -0
  74. package/dist/combat/encounterSequence.d.ts +258 -0
  75. package/dist/combat/encounterSequence.js +426 -0
  76. package/dist/combat/hitReaction.d.ts +57 -1
  77. package/dist/combat/hitReaction.js +45 -5
  78. package/dist/combat/magazine.d.ts +54 -0
  79. package/dist/combat/magazine.js +96 -0
  80. package/dist/combat/projectiles.d.ts +5 -0
  81. package/dist/combat/projectiles.js +32 -14
  82. package/dist/combat/receivedDamage.d.ts +117 -0
  83. package/dist/combat/receivedDamage.js +92 -0
  84. package/dist/combat/regenShield.d.ts +5 -1
  85. package/dist/combat/regenShield.js +5 -1
  86. package/dist/combat/renderCues.d.ts +51 -0
  87. package/dist/combat/renderCues.js +44 -0
  88. package/dist/combat/resourcePool.d.ts +5 -0
  89. package/dist/combat/resourcePool.js +5 -0
  90. package/dist/combat/rewardAllocation.d.ts +121 -0
  91. package/dist/combat/rewardAllocation.js +251 -0
  92. package/dist/combat/shotOrigin.d.ts +18 -1
  93. package/dist/combat/shotOrigin.js +39 -0
  94. package/dist/combat/statusApplication.d.ts +96 -0
  95. package/dist/combat/statusApplication.js +81 -0
  96. package/dist/combat/telegraph.d.ts +11 -2
  97. package/dist/combat/telegraph.js +11 -2
  98. package/dist/combat/thresholdCrossings.d.ts +85 -0
  99. package/dist/combat/thresholdCrossings.js +116 -0
  100. package/dist/combat.d.ts +35 -0
  101. package/dist/combat.js +35 -0
  102. package/dist/commands/commandRegistry.d.ts +11 -0
  103. package/dist/commands/commandRegistry.js +9 -2
  104. package/dist/crafting/crop.d.ts +18 -0
  105. package/dist/crafting/crop.js +18 -0
  106. package/dist/crafting/production.d.ts +5 -0
  107. package/dist/crafting/production.js +5 -0
  108. package/dist/devtools/controls.d.ts +38 -0
  109. package/dist/devtools/controls.js +181 -0
  110. package/dist/devtools/devtools.d.ts +5 -197
  111. package/dist/devtools/devtools.js +38 -774
  112. package/dist/devtools/discover.d.ts +32 -0
  113. package/dist/devtools/discover.js +240 -0
  114. package/dist/devtools/fallbackSeams.d.ts +50 -0
  115. package/dist/devtools/fallbackSeams.js +111 -0
  116. package/dist/devtools/frame.d.ts +15 -0
  117. package/dist/devtools/frame.js +247 -0
  118. package/dist/devtools/logs.d.ts +15 -0
  119. package/dist/devtools/logs.js +86 -0
  120. package/dist/devtools/overrides.d.ts +16 -0
  121. package/dist/devtools/overrides.js +66 -0
  122. package/dist/devtools/rewriteTunables.d.ts +17 -0
  123. package/dist/devtools/rewriteTunables.js +276 -0
  124. package/dist/devtools/saveEndpoint.d.ts +46 -0
  125. package/dist/devtools/saveEndpoint.js +48 -0
  126. package/dist/devtools/transformTunables.d.ts +3 -0
  127. package/dist/devtools/transformTunables.js +3 -0
  128. package/dist/devtools/tunableSchema.d.ts +31 -0
  129. package/dist/devtools/tunableSchema.js +31 -0
  130. package/dist/devtools/types.d.ts +212 -0
  131. package/dist/devtools/types.js +1 -0
  132. package/dist/economy/auctionBook.d.ts +122 -0
  133. package/dist/economy/auctionBook.js +213 -0
  134. package/dist/economy/currency.d.ts +12 -1
  135. package/dist/economy/currency.js +12 -1
  136. package/dist/economy/listingBook.d.ts +91 -0
  137. package/dist/economy/listingBook.js +144 -0
  138. package/dist/economy/priceHistory.d.ts +44 -0
  139. package/dist/economy/priceHistory.js +89 -0
  140. package/dist/economy/resourceLedger.d.ts +222 -0
  141. package/dist/economy/resourceLedger.js +353 -0
  142. package/dist/economy/sharedWallet.d.ts +14 -0
  143. package/dist/economy/sharedWallet.js +14 -0
  144. package/dist/economy/techTree.d.ts +12 -0
  145. package/dist/economy/techTree.js +12 -0
  146. package/dist/economy/unlockPoints.d.ts +92 -0
  147. package/dist/economy/unlockPoints.js +103 -0
  148. package/dist/economy/wallet.d.ts +26 -2
  149. package/dist/economy/wallet.js +35 -6
  150. package/dist/editor/commandApply.d.ts +5 -0
  151. package/dist/editor/commandApply.js +755 -0
  152. package/dist/editor/commands.d.ts +235 -7
  153. package/dist/editor/commands.js +82 -124
  154. package/dist/editor/directives.d.ts +94 -0
  155. package/dist/editor/directives.js +206 -0
  156. package/dist/editor/document.d.ts +194 -13
  157. package/dist/editor/document.js +1166 -19
  158. package/dist/editor/entityCatalog.d.ts +42 -0
  159. package/dist/editor/entityCatalog.js +101 -0
  160. package/dist/editor/environment.d.ts +74 -0
  161. package/dist/editor/environment.js +169 -0
  162. package/dist/editor/grid.d.ts +229 -0
  163. package/dist/editor/grid.js +366 -0
  164. package/dist/editor/gridAdapters.d.ts +80 -0
  165. package/dist/editor/gridAdapters.js +134 -0
  166. package/dist/editor/index.d.ts +98 -6
  167. package/dist/editor/index.js +13 -2
  168. package/dist/editor/liveSync.d.ts +127 -0
  169. package/dist/editor/liveSync.js +249 -0
  170. package/dist/editor/minimap.d.ts +31 -0
  171. package/dist/editor/minimap.js +73 -0
  172. package/dist/editor/runtimeInspector.d.ts +88 -0
  173. package/dist/editor/runtimeInspector.js +239 -0
  174. package/dist/editor/streamer.d.ts +66 -0
  175. package/dist/editor/streamer.js +68 -0
  176. package/dist/editor/types.d.ts +250 -1
  177. package/dist/editor/world.d.ts +136 -0
  178. package/dist/editor/world.js +303 -0
  179. package/dist/faction/reputation.d.ts +5 -0
  180. package/dist/faction/reputation.js +5 -0
  181. package/dist/format/distance.d.ts +17 -0
  182. package/dist/format/distance.js +18 -0
  183. package/dist/format/duration.d.ts +27 -0
  184. package/dist/format/duration.js +45 -0
  185. package/dist/format/speed.d.ts +17 -0
  186. package/dist/format/speed.js +25 -0
  187. package/dist/game/breeding.d.ts +161 -0
  188. package/dist/game/breeding.js +181 -0
  189. package/dist/game/cameraConfig.d.ts +451 -0
  190. package/dist/game/cameraConfig.js +1 -0
  191. package/dist/game/connectedPlayers.d.ts +6 -4
  192. package/dist/game/connectedPlayers.js +2 -2
  193. package/dist/game/cosmetics.d.ts +9 -0
  194. package/dist/game/cosmetics.js +16 -0
  195. package/dist/game/defineGame.d.ts +110 -5
  196. package/dist/game/defineGame.js +49 -4
  197. package/dist/game/defineSystem.d.ts +90 -0
  198. package/dist/game/defineSystem.js +47 -0
  199. package/dist/game/dialogue.d.ts +33 -0
  200. package/dist/game/dialogue.js +21 -0
  201. package/dist/game/events.d.ts +63 -13
  202. package/dist/game/events.js +5 -0
  203. package/dist/game/feed.d.ts +33 -0
  204. package/dist/game/feed.js +35 -2
  205. package/dist/game/gamePhase.d.ts +11 -0
  206. package/dist/game/gamePhase.js +16 -0
  207. package/dist/game/leaderboard.d.ts +5 -0
  208. package/dist/game/leaderboard.js +5 -0
  209. package/dist/game/loadout.d.ts +5 -0
  210. package/dist/game/loadout.js +5 -0
  211. package/dist/game/lootFilter.d.ts +2 -0
  212. package/dist/game/lootFilter.js +2 -0
  213. package/dist/game/lootPipeline.d.ts +164 -0
  214. package/dist/game/lootPipeline.js +216 -0
  215. package/dist/game/lootTable.d.ts +19 -2
  216. package/dist/game/lootTable.js +15 -5
  217. package/dist/game/objectives.d.ts +43 -0
  218. package/dist/game/objectives.js +36 -0
  219. package/dist/game/paramLayers.d.ts +148 -0
  220. package/dist/game/paramLayers.js +185 -0
  221. package/dist/game/ping.d.ts +5 -0
  222. package/dist/game/ping.js +5 -0
  223. package/dist/game/playableGame.d.ts +116 -432
  224. package/dist/game/playableGame.js +1 -1
  225. package/dist/game/progression.d.ts +35 -0
  226. package/dist/game/progression.js +19 -0
  227. package/dist/game/quest.d.ts +8 -0
  228. package/dist/game/quest.js +30 -3
  229. package/dist/game/race.d.ts +141 -0
  230. package/dist/game/race.js +169 -0
  231. package/dist/game/recordBook.d.ts +3 -1
  232. package/dist/game/recordBook.js +4 -1
  233. package/dist/game/ruleSelection.d.ts +75 -0
  234. package/dist/game/ruleSelection.js +127 -0
  235. package/dist/game/runDraft.d.ts +5 -0
  236. package/dist/game/runDraft.js +5 -0
  237. package/dist/game/saveStore.d.ts +111 -0
  238. package/dist/game/saveStore.js +312 -0
  239. package/dist/game/snapshotHistory.d.ts +67 -0
  240. package/dist/game/snapshotHistory.js +95 -0
  241. package/dist/game/social.d.ts +38 -1
  242. package/dist/game/social.js +71 -0
  243. package/dist/game/spawnPoints.d.ts +5 -0
  244. package/dist/game/spawnPoints.js +5 -0
  245. package/dist/game/systemRuntime.d.ts +50 -0
  246. package/dist/game/systemRuntime.js +157 -0
  247. package/dist/game/systemSchedule.d.ts +72 -0
  248. package/dist/game/systemSchedule.js +242 -0
  249. package/dist/game/toasts.d.ts +43 -0
  250. package/dist/game/toasts.js +44 -0
  251. package/dist/game/trade.d.ts +10 -0
  252. package/dist/game/trade.js +10 -0
  253. package/dist/game/tribe.d.ts +184 -0
  254. package/dist/game/tribe.js +432 -0
  255. package/dist/game/unlocks.d.ts +8 -0
  256. package/dist/game/unlocks.js +16 -0
  257. package/dist/game/vfxInstance.d.ts +138 -0
  258. package/dist/game/vfxInstance.js +96 -0
  259. package/dist/game/worldItem.d.ts +17 -4
  260. package/dist/game/worldItem.js +17 -4
  261. package/dist/gameplay.d.ts +93 -0
  262. package/dist/gameplay.js +93 -0
  263. package/dist/index.d.ts +5 -14
  264. package/dist/index.js +5 -14
  265. package/dist/input/actionBindings.d.ts +23 -6
  266. package/dist/input/actionBindings.js +23 -6
  267. package/dist/input/axisInput.d.ts +7 -2
  268. package/dist/input/axisInput.js +7 -2
  269. package/dist/input/controlGroups.d.ts +67 -0
  270. package/dist/input/controlGroups.js +41 -0
  271. package/dist/input/touchScheme.d.ts +82 -6
  272. package/dist/input/touchScheme.js +123 -10
  273. package/dist/interaction/lockpick.d.ts +61 -0
  274. package/dist/interaction/lockpick.js +168 -0
  275. package/dist/interaction/proximityPrompt.d.ts +2 -0
  276. package/dist/interaction/proximityPrompt.js +2 -0
  277. package/dist/interaction/qte.d.ts +5 -0
  278. package/dist/interaction/qte.js +5 -0
  279. package/dist/interaction/skillCheck.d.ts +5 -0
  280. package/dist/interaction/skillCheck.js +5 -0
  281. package/dist/inventory/encumbrance.d.ts +69 -0
  282. package/dist/inventory/encumbrance.js +68 -0
  283. package/dist/inventory/inventoryModel.d.ts +12 -0
  284. package/dist/inventory/inventoryModel.js +12 -0
  285. package/dist/inventory/shapedGrid.d.ts +16 -0
  286. package/dist/inventory/shapedGrid.js +16 -0
  287. package/dist/inventory/slotModel.d.ts +10 -0
  288. package/dist/inventory/slotModel.js +10 -0
  289. package/dist/item/durability.d.ts +5 -0
  290. package/dist/item/durability.js +6 -3
  291. package/dist/item/itemIdentity.d.ts +171 -0
  292. package/dist/item/itemIdentity.js +138 -0
  293. package/dist/item/itemInstanceRegistry.d.ts +32 -0
  294. package/dist/item/itemInstanceRegistry.js +34 -0
  295. package/dist/item/itemgen.d.ts +163 -0
  296. package/dist/item/itemgen.js +151 -0
  297. package/dist/item/modularItem.d.ts +5 -0
  298. package/dist/item/modularItem.js +5 -0
  299. package/dist/item/use.d.ts +5 -0
  300. package/dist/item/use.js +5 -0
  301. package/dist/item/useBehavior.d.ts +142 -0
  302. package/dist/item/useBehavior.js +105 -0
  303. package/dist/item/weapon.d.ts +5 -0
  304. package/dist/item/weapon.js +5 -0
  305. package/dist/math/scalar.d.ts +25 -0
  306. package/dist/math/scalar.js +47 -0
  307. package/dist/meta/changelog.d.ts +4 -1
  308. package/dist/meta/changelog.js +39 -2
  309. package/dist/movement/avoidance.d.ts +45 -0
  310. package/dist/movement/avoidance.js +123 -0
  311. package/dist/movement/cameraRig.d.ts +8 -0
  312. package/dist/movement/cameraRig.js +8 -0
  313. package/dist/movement/dash.d.ts +11 -0
  314. package/dist/movement/dash.js +11 -0
  315. package/dist/movement/formation.d.ts +135 -0
  316. package/dist/movement/formation.js +194 -0
  317. package/dist/movement/glideModel.d.ts +5 -0
  318. package/dist/movement/glideModel.js +5 -0
  319. package/dist/movement/grappleSwing.d.ts +5 -0
  320. package/dist/movement/grappleSwing.js +5 -0
  321. package/dist/movement/leaderTrail.d.ts +5 -0
  322. package/dist/movement/leaderTrail.js +5 -0
  323. package/dist/movement/movementModel.d.ts +50 -9
  324. package/dist/movement/movementModel.js +75 -29
  325. package/dist/movement/playerMovement.js +167 -12
  326. package/dist/movement/poseState.d.ts +13 -0
  327. package/dist/movement/poseState.js +16 -0
  328. package/dist/movement/steering.d.ts +8 -0
  329. package/dist/movement/steering.js +18 -0
  330. package/dist/multiplayer/combatSnapshot.d.ts +3 -0
  331. package/dist/multiplayer/combatSnapshot.js +16 -8
  332. package/dist/multiplayer/lagCompensation.d.ts +5 -0
  333. package/dist/multiplayer/lagCompensation.js +5 -0
  334. package/dist/multiplayer/presenceModel.d.ts +11 -1
  335. package/dist/multiplayer/presenceModel.js +17 -1
  336. package/dist/multiplayer/simultaneousCommit.d.ts +3 -0
  337. package/dist/multiplayer/simultaneousCommit.js +3 -0
  338. package/dist/multiplayer.d.ts +11 -0
  339. package/dist/multiplayer.js +11 -0
  340. package/dist/nav/pathFollow.d.ts +57 -0
  341. package/dist/nav/pathFollow.js +109 -0
  342. package/dist/orders/orderKinds.d.ts +156 -0
  343. package/dist/orders/orderKinds.js +197 -0
  344. package/dist/orders/orderQueue.d.ts +208 -0
  345. package/dist/orders/orderQueue.js +211 -0
  346. package/dist/physics/drivableVehicle.d.ts +31 -0
  347. package/dist/physics/drivableVehicle.js +16 -0
  348. package/dist/physics/flightDynamics.d.ts +82 -0
  349. package/dist/physics/flightDynamics.js +165 -0
  350. package/dist/physics/gravityField.d.ts +25 -0
  351. package/dist/physics/gravityField.js +41 -0
  352. package/dist/physics/kinematicVehicle.d.ts +108 -1
  353. package/dist/physics/kinematicVehicle.js +212 -15
  354. package/dist/physics/physicsWorld.d.ts +50 -12
  355. package/dist/physics/physicsWorld.js +120 -122
  356. package/dist/physics/radialImpulse.d.ts +25 -0
  357. package/dist/physics/radialImpulse.js +27 -0
  358. package/dist/physics/vehicleObstacles.d.ts +44 -0
  359. package/dist/physics/vehicleObstacles.js +115 -0
  360. package/dist/procedural.d.ts +3 -0
  361. package/dist/procedural.js +3 -0
  362. package/dist/progression/statGraph.d.ts +116 -0
  363. package/dist/progression/statGraph.js +318 -0
  364. package/dist/puzzle/cellGrid.d.ts +9 -0
  365. package/dist/puzzle/cellGrid.js +9 -0
  366. package/dist/puzzle/fallingPiece.d.ts +9 -0
  367. package/dist/puzzle/fallingPiece.js +9 -0
  368. package/dist/puzzle/nonogram.d.ts +39 -0
  369. package/dist/puzzle/nonogram.js +136 -0
  370. package/dist/random/nameGen.d.ts +5 -0
  371. package/dist/random/nameGen.js +5 -0
  372. package/dist/random/pick.d.ts +8 -0
  373. package/dist/random/pick.js +31 -0
  374. package/dist/random/rng.d.ts +26 -1
  375. package/dist/random/rng.js +32 -9
  376. package/dist/random/seedLink.d.ts +4 -0
  377. package/dist/random/seedLink.js +4 -0
  378. package/dist/relation/keyedValues.d.ts +54 -0
  379. package/dist/relation/keyedValues.js +115 -0
  380. package/dist/relation/thresholds.d.ts +62 -0
  381. package/dist/relation/thresholds.js +62 -0
  382. package/dist/render/color.d.ts +12 -0
  383. package/dist/render/color.js +26 -0
  384. package/dist/render/lookPreset.d.ts +41 -0
  385. package/dist/render/lookPreset.js +29 -0
  386. package/dist/render/postProcessing.d.ts +20 -0
  387. package/dist/render/postProcessing.js +21 -1
  388. package/dist/rules/predicate.d.ts +53 -0
  389. package/dist/rules/predicate.js +64 -0
  390. package/dist/rules/ruleEffects.d.ts +38 -0
  391. package/dist/rules/ruleEffects.js +37 -0
  392. package/dist/rules/triggeredRules.d.ts +160 -0
  393. package/dist/rules/triggeredRules.js +241 -0
  394. package/dist/runtime/adapter.d.ts +55 -3
  395. package/dist/runtime/adapter.js +57 -1
  396. package/dist/runtime/cameraDirector.d.ts +1 -0
  397. package/dist/runtime/cameraDirector.js +1 -0
  398. package/dist/runtime/commandRunner.d.ts +1 -0
  399. package/dist/runtime/commandRunner.js +1 -0
  400. package/dist/runtime/context/combat.d.ts +51 -0
  401. package/dist/runtime/context/combat.js +130 -0
  402. package/dist/runtime/context/combatFx.d.ts +23 -0
  403. package/dist/runtime/context/combatFx.js +161 -0
  404. package/dist/runtime/context/deathLoot.d.ts +30 -0
  405. package/dist/runtime/context/deathLoot.js +39 -0
  406. package/dist/runtime/context/player.d.ts +48 -0
  407. package/dist/runtime/context/player.js +125 -0
  408. package/dist/runtime/context/registries.d.ts +13 -0
  409. package/dist/runtime/context/registries.js +84 -0
  410. package/dist/runtime/context/scene.d.ts +59 -0
  411. package/dist/runtime/context/scene.js +291 -0
  412. package/dist/runtime/context/snapshotCodecs.d.ts +12 -0
  413. package/dist/runtime/context/snapshotCodecs.js +26 -0
  414. package/dist/runtime/context/worldItems.d.ts +21 -0
  415. package/dist/runtime/context/worldItems.js +37 -0
  416. package/dist/runtime/descriptors/baseline.d.ts +48 -0
  417. package/dist/runtime/descriptors/baseline.js +157 -0
  418. package/dist/runtime/descriptors/features.d.ts +79 -0
  419. package/dist/runtime/descriptors/features.js +299 -0
  420. package/dist/runtime/gameContext.d.ts +2 -327
  421. package/dist/runtime/gameContext.js +273 -778
  422. package/dist/runtime/gameContextTypes.d.ts +467 -0
  423. package/dist/runtime/gameContextTypes.js +1 -0
  424. package/dist/runtime/gameRuntime.d.ts +1 -0
  425. package/dist/runtime/gameRuntime.js +1 -0
  426. package/dist/runtime/headlessRunner.d.ts +62 -0
  427. package/dist/runtime/headlessRunner.js +45 -0
  428. package/dist/runtime/hostPersistence.d.ts +12 -0
  429. package/dist/runtime/hostPersistence.js +12 -0
  430. package/dist/runtime/hostPolicy.d.ts +51 -0
  431. package/dist/runtime/hostPolicy.js +68 -0
  432. package/dist/runtime/hostedGameRunner.d.ts +11 -4
  433. package/dist/runtime/hostedGameRunner.js +27 -3
  434. package/dist/runtime/hostedWorldSession.d.ts +15 -5
  435. package/dist/runtime/hostedWorldSession.js +12 -4
  436. package/dist/runtime/inputSnapshot.d.ts +8 -3
  437. package/dist/runtime/inputSnapshot.js +6 -2
  438. package/dist/runtime/motionIntents.d.ts +11 -2
  439. package/dist/runtime/motionIntents.js +16 -2
  440. package/dist/runtime/perContext.d.ts +15 -0
  441. package/dist/runtime/perContext.js +21 -0
  442. package/dist/runtime/runtimeSave.d.ts +79 -0
  443. package/dist/runtime/runtimeSave.js +105 -0
  444. package/dist/runtime/save.d.ts +4 -0
  445. package/dist/runtime/save.js +4 -0
  446. package/dist/runtime/snapshot.d.ts +7 -0
  447. package/dist/runtime/snapshot.js +7 -0
  448. package/dist/runtime/visibility.d.ts +2 -1
  449. package/dist/runtime/visibility.js +2 -1
  450. package/dist/runtime/worldChannel.d.ts +7 -3
  451. package/dist/runtime/worldChannel.js +51 -6
  452. package/dist/runtime/worldMirror.d.ts +14 -2
  453. package/dist/runtime/worldMirror.js +15 -2
  454. package/dist/runtime/worldProjection.d.ts +47 -0
  455. package/dist/runtime/worldProjection.js +52 -0
  456. package/dist/runtime/worldReplication.d.ts +30 -7
  457. package/dist/runtime/worldReplication.js +41 -9
  458. package/dist/runtime/worldSnapshot.d.ts +42 -3
  459. package/dist/runtime/worldSnapshot.js +34 -7
  460. package/dist/scene/assetCatalog.d.ts +26 -0
  461. package/dist/scene/assetCatalog.js +4 -0
  462. package/dist/scene/assetDiagnostics.d.ts +69 -0
  463. package/dist/scene/assetDiagnostics.js +110 -0
  464. package/dist/scene/assetGenerator.d.ts +65 -0
  465. package/dist/scene/assetGenerator.js +64 -0
  466. package/dist/scene/assetSpace.d.ts +137 -0
  467. package/dist/scene/assetSpace.js +257 -0
  468. package/dist/scene/authoredTriggers.d.ts +219 -0
  469. package/dist/scene/authoredTriggers.js +454 -0
  470. package/dist/scene/behaviorRuntime.d.ts +75 -0
  471. package/dist/scene/behaviorRuntime.js +217 -0
  472. package/dist/scene/behaviors.d.ts +14 -2
  473. package/dist/scene/behaviors.js +7 -2
  474. package/dist/scene/bodyBind.d.ts +60 -0
  475. package/dist/scene/bodyBind.js +51 -0
  476. package/dist/scene/builtinSceneKinds.d.ts +5 -0
  477. package/dist/scene/builtinSceneKinds.js +67 -0
  478. package/dist/scene/colliders.d.ts +71 -1
  479. package/dist/scene/colliders.js +145 -1
  480. package/dist/scene/collisionMesh.d.ts +94 -0
  481. package/dist/scene/collisionMesh.js +699 -0
  482. package/dist/scene/companion.d.ts +147 -0
  483. package/dist/scene/companion.js +193 -0
  484. package/dist/scene/entityStats.d.ts +18 -11
  485. package/dist/scene/entityStats.js +21 -16
  486. package/dist/scene/entityStore.d.ts +12 -1
  487. package/dist/scene/entityStore.js +15 -0
  488. package/dist/scene/facing.d.ts +18 -0
  489. package/dist/scene/facing.js +26 -0
  490. package/dist/scene/modelSockets.d.ts +33 -0
  491. package/dist/scene/modelSockets.js +29 -0
  492. package/dist/scene/objectQuery.d.ts +2 -0
  493. package/dist/scene/objectQuery.js +2 -0
  494. package/dist/scene/objectStore.d.ts +4 -0
  495. package/dist/scene/objectStore.js +6 -0
  496. package/dist/scene/possession.d.ts +8 -0
  497. package/dist/scene/possession.js +14 -0
  498. package/dist/scene/roster.d.ts +3 -0
  499. package/dist/scene/roster.js +12 -0
  500. package/dist/scene/sceneKinds.d.ts +256 -0
  501. package/dist/scene/sceneKinds.js +218 -0
  502. package/dist/scene/sceneOwnership.d.ts +169 -0
  503. package/dist/scene/sceneOwnership.js +179 -0
  504. package/dist/scene/sceneRaycast.js +15 -0
  505. package/dist/scene/selectionBookmarks.d.ts +93 -0
  506. package/dist/scene/selectionBookmarks.js +122 -0
  507. package/dist/scene/vehicleSeat.d.ts +68 -0
  508. package/dist/scene/vehicleSeat.js +59 -0
  509. package/dist/sensor/concealment.d.ts +3 -0
  510. package/dist/sensor/concealment.js +3 -0
  511. package/dist/sensor/freezeMonitor.d.ts +1 -0
  512. package/dist/sensor/freezeMonitor.js +1 -0
  513. package/dist/sensor/frustumSensor.d.ts +7 -3
  514. package/dist/sensor/frustumSensor.js +7 -3
  515. package/dist/sensor/hiddenStateProbe.d.ts +5 -2
  516. package/dist/sensor/hiddenStateProbe.js +5 -2
  517. package/dist/sensor/recordingBuffer.d.ts +2 -1
  518. package/dist/sensor/recordingBuffer.js +2 -1
  519. package/dist/sensor/replayLoop.d.ts +6 -2
  520. package/dist/sensor/replayLoop.js +6 -2
  521. package/dist/sensor/revealQuery.d.ts +2 -1
  522. package/dist/sensor/revealQuery.js +2 -1
  523. package/dist/sensor/visionCone.d.ts +10 -3
  524. package/dist/sensor/visionCone.js +10 -3
  525. package/dist/session/contestedChannel.d.ts +1 -0
  526. package/dist/session/contestedChannel.js +1 -0
  527. package/dist/session/extraction.d.ts +1 -0
  528. package/dist/session/extraction.js +1 -0
  529. package/dist/session/roles.d.ts +6 -0
  530. package/dist/session/roles.js +6 -0
  531. package/dist/session/roundState.d.ts +8 -0
  532. package/dist/session/roundState.js +2 -0
  533. package/dist/settings/settingsModel.d.ts +1 -0
  534. package/dist/settings/settingsModel.js +1 -0
  535. package/dist/stats/accumulatorMeter.d.ts +6 -0
  536. package/dist/stats/accumulatorMeter.js +6 -0
  537. package/dist/stats/eventMeter.d.ts +5 -0
  538. package/dist/stats/eventMeter.js +5 -0
  539. package/dist/stats/rollCheck.d.ts +5 -0
  540. package/dist/stats/rollCheck.js +5 -0
  541. package/dist/stats/spawnLevelStats.d.ts +110 -0
  542. package/dist/stats/spawnLevelStats.js +140 -0
  543. package/dist/stats/statModifiers.d.ts +5 -0
  544. package/dist/stats/statModifiers.js +5 -0
  545. package/dist/stats/statPool.d.ts +70 -0
  546. package/dist/stats/statPool.js +59 -0
  547. package/dist/store/changeSignal.d.ts +3 -0
  548. package/dist/store/changeSignal.js +2 -0
  549. package/dist/store/defineKeyedStore.d.ts +38 -0
  550. package/dist/store/defineKeyedStore.js +42 -0
  551. package/dist/store/defineStore.d.ts +33 -0
  552. package/dist/store/defineStore.js +35 -0
  553. package/dist/store/observableKeyedStore.d.ts +7 -0
  554. package/dist/store/observableKeyedStore.js +35 -2
  555. package/dist/survival/decayMeter.d.ts +55 -0
  556. package/dist/survival/decayMeter.js +130 -57
  557. package/dist/survival/moodle.d.ts +2 -0
  558. package/dist/survival/regionHealth.d.ts +6 -0
  559. package/dist/survival/regionHealth.js +6 -3
  560. package/dist/tactics/fallingGrid.d.ts +4 -2
  561. package/dist/tactics/fallingGrid.js +4 -2
  562. package/dist/tactics/predictiveQuery.d.ts +3 -0
  563. package/dist/tactics/predictiveQuery.js +3 -0
  564. package/dist/tactics/snapshot.d.ts +2 -0
  565. package/dist/tactics/snapshot.js +2 -0
  566. package/dist/tactics/surface.d.ts +1 -0
  567. package/dist/tactics/surface.js +1 -0
  568. package/dist/tactics/tacticalGrid.d.ts +1 -0
  569. package/dist/tactics/tacticalGrid.js +1 -0
  570. package/dist/time/beatClock.d.ts +14 -4
  571. package/dist/time/beatClock.js +14 -4
  572. package/dist/time/calendarClock.d.ts +3 -0
  573. package/dist/time/calendarClock.js +3 -0
  574. package/dist/time/idleProgress.d.ts +4 -0
  575. package/dist/time/idleProgress.js +4 -0
  576. package/dist/time/simClock.d.ts +2 -0
  577. package/dist/time/simClock.js +20 -5
  578. package/dist/ui/actionModel.d.ts +110 -0
  579. package/dist/ui/actionModel.js +159 -0
  580. package/dist/ui/gameLayout.d.ts +30 -11
  581. package/dist/ui/gameLayout.js +30 -11
  582. package/dist/ui/hudDocument.d.ts +114 -0
  583. package/dist/ui/hudDocument.js +220 -0
  584. package/dist/ui/hudLayout.d.ts +38 -1
  585. package/dist/ui/hudLayout.js +220 -17
  586. package/dist/ui/selectionModel.d.ts +92 -0
  587. package/dist/ui/selectionModel.js +88 -0
  588. package/dist/ui/tooltipModel.d.ts +63 -0
  589. package/dist/ui/tooltipModel.js +82 -0
  590. package/dist/ui.d.ts +15 -0
  591. package/dist/ui.js +15 -0
  592. package/dist/visibility/bounds.d.ts +8 -1
  593. package/dist/visibility/bounds.js +8 -1
  594. package/dist/visibility/frustum.d.ts +12 -3
  595. package/dist/visibility/frustum.js +12 -3
  596. package/dist/work/jobQueue.d.ts +201 -0
  597. package/dist/work/jobQueue.js +253 -0
  598. package/dist/work/unitTraining.d.ts +58 -0
  599. package/dist/work/unitTraining.js +52 -0
  600. package/dist/world/authoredEntities.d.ts +29 -0
  601. package/dist/world/authoredEntities.js +29 -0
  602. package/dist/world/authoredObjects.d.ts +72 -0
  603. package/dist/world/authoredObjects.js +81 -0
  604. package/dist/world/authoredSpawn.d.ts +39 -0
  605. package/dist/world/authoredSpawn.js +37 -0
  606. package/dist/world/buildSockets.d.ts +152 -0
  607. package/dist/world/buildSockets.js +188 -0
  608. package/dist/world/buildingGenerator.d.ts +18 -0
  609. package/dist/world/buildingGenerator.js +62 -0
  610. package/dist/world/buildings.d.ts +5 -0
  611. package/dist/world/buildings.js +5 -0
  612. package/dist/world/catenary.d.ts +22 -0
  613. package/dist/world/catenary.js +69 -0
  614. package/dist/world/cityBlocks.d.ts +152 -0
  615. package/dist/world/cityBlocks.js +670 -0
  616. package/dist/world/cityContent.d.ts +77 -0
  617. package/dist/world/cityContent.js +261 -0
  618. package/dist/world/cityGeometry.d.ts +114 -0
  619. package/dist/world/cityGeometry.js +573 -0
  620. package/dist/world/cityKind.d.ts +314 -0
  621. package/dist/world/cityKind.js +1578 -0
  622. package/dist/world/features.d.ts +133 -10
  623. package/dist/world/features.js +66 -6
  624. package/dist/world/footprintGrid.d.ts +59 -0
  625. package/dist/world/footprintGrid.js +141 -0
  626. package/dist/world/geometry.d.ts +64 -0
  627. package/dist/world/geometry.js +94 -0
  628. package/dist/world/grassKind.d.ts +51 -0
  629. package/dist/world/grassKind.js +101 -0
  630. package/dist/world/markers.d.ts +50 -4
  631. package/dist/world/markers.js +49 -0
  632. package/dist/world/massing.js +1 -1
  633. package/dist/world/minimapBake.d.ts +78 -0
  634. package/dist/world/minimapBake.js +208 -0
  635. package/dist/world/minimapTrack.d.ts +17 -0
  636. package/dist/world/minimapTrack.js +22 -0
  637. package/dist/world/pathInstances.d.ts +27 -0
  638. package/dist/world/pathInstances.js +27 -0
  639. package/dist/world/pathNetwork.d.ts +159 -0
  640. package/dist/world/pathNetwork.js +684 -0
  641. package/dist/world/pathTerrain.d.ts +80 -0
  642. package/dist/world/pathTerrain.js +142 -0
  643. package/dist/world/place.d.ts +166 -0
  644. package/dist/world/place.js +96 -0
  645. package/dist/world/placeAsset.d.ts +81 -0
  646. package/dist/world/placeAsset.js +79 -0
  647. package/dist/world/placement.d.ts +4 -0
  648. package/dist/world/placement.js +4 -0
  649. package/dist/world/placementController.d.ts +6 -0
  650. package/dist/world/placementController.js +6 -0
  651. package/dist/world/poleLineKind.d.ts +40 -0
  652. package/dist/world/poleLineKind.js +97 -0
  653. package/dist/world/polyline.d.ts +34 -0
  654. package/dist/world/polyline.js +88 -0
  655. package/dist/world/resourceNode.d.ts +109 -0
  656. package/dist/world/resourceNode.js +140 -0
  657. package/dist/world/roads.d.ts +8 -0
  658. package/dist/world/roads.js +38 -0
  659. package/dist/world/scatter.js +2 -20
  660. package/dist/world/scatterRegion.d.ts +164 -0
  661. package/dist/world/scatterRegion.js +409 -0
  662. package/dist/world/sceneShapes.d.ts +43 -0
  663. package/dist/world/sceneShapes.js +1 -0
  664. package/dist/world/segment.d.ts +27 -0
  665. package/dist/world/segment.js +43 -0
  666. package/dist/world/soilKind.d.ts +48 -0
  667. package/dist/world/soilKind.js +92 -0
  668. package/dist/world/spatialSample.d.ts +241 -0
  669. package/dist/world/spatialSample.js +465 -0
  670. package/dist/world/streets.d.ts +29 -0
  671. package/dist/world/streets.js +55 -0
  672. package/dist/world/terraform.d.ts +213 -1
  673. package/dist/world/terraform.js +627 -22
  674. package/dist/world/terrain.d.ts +164 -20
  675. package/dist/world/terrain.js +325 -41
  676. package/dist/world/terrainGuides.d.ts +182 -0
  677. package/dist/world/terrainGuides.js +343 -0
  678. package/dist/world/vec2.d.ts +81 -0
  679. package/dist/world/vec2.js +128 -0
  680. package/dist/world/vec3.d.ts +49 -0
  681. package/dist/world/vec3.js +76 -0
  682. package/dist/world/vegetation.d.ts +71 -0
  683. package/dist/world/vegetation.js +151 -0
  684. package/dist/world/visibilityField.d.ts +154 -0
  685. package/dist/world/visibilityField.js +271 -0
  686. package/dist/world/volumetricClouds.d.ts +52 -0
  687. package/dist/world/volumetricClouds.js +43 -0
  688. package/dist/world/walls.d.ts +9 -0
  689. package/dist/world/walls.js +9 -0
  690. package/dist/world/waterKind.d.ts +55 -0
  691. package/dist/world/waterKind.js +99 -0
  692. package/dist/world.d.ts +141 -0
  693. package/dist/world.js +141 -0
  694. package/package.json +32 -8
  695. package/skills/game-design/SKILL.md +28 -0
  696. package/skills/game-design/agents/openai.yaml +4 -0
  697. package/skills/game-design/references/application-playbook.md +170 -0
  698. package/skills/game-design/references/field-guide.md +288 -0
  699. package/skills/jgengine/SKILL.md +54 -0
  700. package/skills/jgengine/api.md +527 -0
  701. package/skills/jgengine/capabilities.md +131 -0
  702. package/skills/jgengine/recipes/minimal-game.md +88 -0
  703. package/skills/jgengine-combat/SKILL.md +38 -0
  704. package/skills/jgengine-combat/api.md +585 -0
  705. package/skills/jgengine-combat/capabilities.md +213 -0
  706. package/skills/jgengine-combat/recipes/portable-stat-pools.md +122 -0
  707. package/skills/jgengine-combat/reference.md +108 -0
  708. package/skills/jgengine-gameplay/SKILL.md +39 -0
  709. package/skills/jgengine-gameplay/api.md +1920 -0
  710. package/skills/jgengine-gameplay/capabilities.md +454 -0
  711. package/skills/jgengine-gameplay/reference-systems.md +56 -0
  712. package/skills/jgengine-world/SKILL.md +51 -0
  713. package/skills/jgengine-world/api.md +3056 -0
  714. package/skills/jgengine-world/capabilities.md +476 -0
  715. package/skills/jgengine-world/recipes/commanding-entities.md +128 -0
  716. package/skills/jgengine-world/reference.md +261 -0
  717. package/dist/cartridge/runtime.d.ts +0 -15
  718. package/dist/cartridge/runtime.js +0 -556
  719. package/dist/cartridge/spec.d.ts +0 -188
  720. package/dist/cartridge/spec.js +0 -19
  721. package/dist/cartridge/validate.d.ts +0 -2
  722. package/dist/cartridge/validate.js +0 -78
  723. package/dist/store/engineStore.d.ts +0 -22
  724. package/dist/store/engineStore.js +0 -50
  725. package/dist/store/features.d.ts +0 -10
  726. package/dist/store/features.js +0 -23
  727. package/llms.txt +0 -5389
@@ -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,93 @@
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 { createAuctionBook, type Auction, type AuctionSettlement } from "./economy/auctionBook.js";
9
+ export { createListingBook, type Listing } from "./economy/listingBook.js";
10
+ export { createPriceHistory, type PriceStats, type SaleRecord } from "./economy/priceHistory.js";
11
+ 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";
12
+ export { type TechNodeDef } from "./economy/techTree.js";
13
+ export { balance, charge, chargeAll, createEmptyWallet, grant, isOverdrawn } from "./economy/wallet.js";
14
+ 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";
15
+ export { playControlsActive } from "./game/controlGate.js";
16
+ export { createCosmetics } from "./game/cosmetics.js";
17
+ export { type GameDefinition, type GameDefinitionConfig, type GameLoop, type InventoryDeclaration, type LifecycleConfig, type PhysicsConfig, } from "./game/defineGame.js";
18
+ export { defineSystem, type SystemDefinition, type SystemEventHandlers, type SystemTick } from "./game/defineSystem.js";
19
+ export { createGameDialogue, dialogueSlot } from "./game/dialogue.js";
20
+ 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";
21
+ export { appendFeed, createGameFeed, pruneFeed, type FeedEntry, type FeedWindow, type TimedFeedEntry, } from "./game/feed.js";
22
+ export { gamePhase, setGamePhase, type GamePhase } from "./game/gamePhase.js";
23
+ export { createKeyValueStore, type KeyValueStorage } from "./game/keyValueStore.js";
24
+ export { createLeaderboard, type LeaderboardRow, type LeaderboardScope } from "./game/leaderboard.js";
25
+ export { createLevelSequence, type LevelSequence } from "./game/levelSequence.js";
26
+ export { createLoadouts, type LoadoutDef } from "./game/loadout.js";
27
+ export { evaluateLootFilter, lootFilter, type LootFilterRule } from "./game/lootFilter.js";
28
+ 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";
29
+ export { createLootRegistry, lootTable, type Drop, type LootTableDef } from "./game/lootTable.js";
30
+ export { resolveOneShotClip } from "./game/modelAnimation.js";
31
+ export { evaluateObjective } from "./game/objectives.js";
32
+ 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";
33
+ export { DEFAULT_PING_CATEGORIES, PING_FEED_ACTION, createPingSystem, type PingCategory, type PingSystem, } from "./game/ping.js";
34
+ 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";
35
+ export { curve, evalCurve, leveling, type Curve, type LevelProgress, type LevelingConfig, type LevelingTrack, } from "./game/progression.js";
36
+ export { createQuestJournal, type QuestDef, type QuestInstance, type QuestRewards } from "./game/quest.js";
37
+ export { RaceState, createLapTimer, createRaceState, finishRaceSession, firstPastPost, idleRaceSession, lapDurations, parDelta, placementOf, raceOutcomeOf, racePlacements, raceTrack, splitSegments, startRaceCountdown, tickRaceSession, } from "./game/race.js";
38
+ export { createRecordBook } from "./game/recordBook.js";
39
+ export { createRuleRegistry, rerollRules, selectRules, type RuleDef, type RuleRegistry, type RuleSelection, type RuleSelectionConfig, } from "./game/ruleSelection.js";
40
+ export { createRunDraft, type RunDraft, type RunModifierOffer } from "./game/runDraft.js";
41
+ export { createSaveStore, localSaveBackend, memorySaveBackend, remoteSaveBackend, type SaveBackend, type SaveStatus, type SaveStore, } from "./game/saveStore.js";
42
+ 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";
43
+ export { createSpawnPoints } from "./game/spawnPoints.js";
44
+ export { composeGameLoop } from "./game/systemRuntime.js";
45
+ export { DEFAULT_FIXED_STAGES, DEFAULT_FRAME_STAGES, compileSystemSchedule, type CompiledSystemSchedule, } from "./game/systemSchedule.js";
46
+ export { createTalentTree, type TalentNodeDef, type TalentTree } from "./game/talents.js";
47
+ export { appendToast, createToastQueue, pruneToasts, type Toast } from "./game/toasts.js";
48
+ export { createUnlockCatalog, createUnlocks, type UnlockDef } from "./game/unlocks.js";
49
+ export { createVfxInstanceStore, type CombatVfxInstanceEvent, type VfxInstancePatch, type VfxInstanceSpec, type VfxInstanceState, type VfxInstanceStopOptions, type VfxInstanceStore, type VfxInstanceStoreOptions, } from "./game/vfxInstance.js";
50
+ export { DEFAULT_PICKUP_RADIUS, WORLD_ITEM_ENTITY_NAME, type RarityStyle, type WorldItemRecord, } from "./game/worldItem.js";
51
+ export { type ActionCodes, type ActionCodesMap, type ActionStateTracker } from "./input/actionBindings.js";
52
+ export { NEUTRAL_AXIS, type AxisBindingMap, type AxisChannelConfig, type AxisInput } from "./input/axisInput.js";
53
+ export { applyBindingOverrides, clearBindingOverride, loadBindingOverrides, saveBindingOverride, type BindingOverrides, } from "./input/bindingOverrides.js";
54
+ export { createGestureSurfaceTracker } from "./input/gestureSurface.js";
55
+ export { aimToPoint, type PointerHit, type PointerVec3 } from "./input/pointer.js";
56
+ export { normalizePointerToAxis, type PointerAxisState } from "./input/pointerAxis.js";
57
+ export { createTouchGestureTracker } from "./input/touchGestures.js";
58
+ 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";
59
+ export { type InventorySlot, type InventoryState } from "./inventory/inventoryModel.js";
60
+ export { type Cell, type Rotation } from "./inventory/shapedGrid.js";
61
+ export { type SlotGrid } from "./inventory/slotModel.js";
62
+ export { createDeliveryQueue, insureLost, partitionOnDeath, resolveConsolation, type DeliveryEntry, type DeliveryQueue, type ScheduledDelivery, } from "./inventory/storageTier.js";
63
+ export { createAffixRoller, seededRng, type AffixPool } from "./item/affix.js";
64
+ export { applyWear, createDurability, createDurabilityTracker, durabilityFraction, isDisabled, repairQuote, wear, type DurabilitySpec, type DurabilityState, } from "./item/durability.js";
65
+ 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";
66
+ export { createItemInstanceRegistry, proceduralLootEntry } from "./item/itemInstanceRegistry.js";
67
+ 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";
68
+ export { computeEffectiveStats, createModularItem, install, isComplete, missingRequiredSlots, partInSlot, slotAccepts, uninstall, type InstalledPart, type ModularItemDef, type MountSlotDef, type PartDef, } from "./item/modularItem.js";
69
+ export { createItemUse, type ItemUseHandler, type ItemUseInput } from "./item/use.js";
70
+ 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";
71
+ export { createWeaponStats } from "./item/weapon.js";
72
+ 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";
73
+ export { type CellGrid } from "./puzzle/cellGrid.js";
74
+ export { type ShapeTable } from "./puzzle/fallingPiece.js";
75
+ export { createNameGenerator } from "./random/nameGen.js";
76
+ export { pickUniform, pickWeighted } from "./random/pick.js";
77
+ export { seededStreams } from "./random/rng.js";
78
+ export { addValue, clampValue, createPairKeyCodec, driftValue, getValue, setValue, towardValue, type NumericBounds, type PairKeyCodec, type PairKeyOptions, } from "./relation/keyedValues.js";
79
+ export { crossThresholds, tierAt, type CrossThresholdsOptions, type ThresholdBoundary, type ThresholdCrossing, type ThresholdDirection, } from "./relation/thresholds.js";
80
+ export { evaluatePredicate, readPath, type Predicate, type PredicateFacts, type PredicatePath, type PredicateValue, } from "./rules/predicate.js";
81
+ export { getRuleEffect, listRuleEffects, registerRuleEffect, type RuleEffectDefinition } from "./rules/ruleEffects.js";
82
+ 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";
83
+ export { createRing, ringSampleAt, type Ring, type RingConfig, type RingPhase } from "./session/ring.js";
84
+ export { type RoleSpec } from "./session/roles.js";
85
+ export { type RoundConfig, type RoundSnapshot } from "./session/roundState.js";
86
+ export { createDecayMeterSet, decayMeterMoodles, decayMeterSnapshot, decayMeterState, decayMeters, initDecayMeters, refillMeter, type DecayMeterSet, type DecayMeterValues, type DecayModifier, } from "./survival/decayMeter.js";
87
+ export { createMoodleStack, stackMoodles, type Moodle, type MoodleStack } from "./survival/moodle.js";
88
+ export { createMultiRegionHealth, type MultiRegionHealth } from "./survival/regionHealth.js";
89
+ export { createCommitController } from "./turn/commit.js";
90
+ export { createIntentBoard } from "./turn/intent.js";
91
+ export { createTurnLoop, type TurnLoop } from "./turn/turnLoop.js";
92
+ 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";
93
+ export { unitTrainingConfig, type ResourceCost, type TrainableUnitDef, type UnitReservation, type UnitSpawnOrder, type UnitTrainingOptions, type UnitTrainingSpec, } from "./work/unitTraining.js";
@@ -0,0 +1,93 @@
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 { createAuctionBook } from "./economy/auctionBook.js";
9
+ export { createListingBook } from "./economy/listingBook.js";
10
+ export { createPriceHistory } from "./economy/priceHistory.js";
11
+ export { addScheduledRule, advanceLedger, annotate, balanceOf, cancelRule, capAmount, createResourceLedger, curveScale, pauseRule, redirect, rejectWhen, resumeRule, taxFraction, thresholdScale, } from "./economy/resourceLedger.js";
12
+ export {} from "./economy/techTree.js";
13
+ export { balance, charge, chargeAll, createEmptyWallet, grant, isOverdrawn } from "./economy/wallet.js";
14
+ export { DEFAULT_CHAT_BODY_LENGTH, DEFAULT_CHAT_HISTORY_LIMIT, DEFAULT_CHAT_RATE_LIMIT, createChatRateLimiter, } from "./game/chat.js";
15
+ export { playControlsActive } from "./game/controlGate.js";
16
+ export { createCosmetics } from "./game/cosmetics.js";
17
+ export {} from "./game/defineGame.js";
18
+ export { defineSystem } from "./game/defineSystem.js";
19
+ export { createGameDialogue, dialogueSlot } from "./game/dialogue.js";
20
+ export { createGameEvents, } from "./game/events.js";
21
+ export { appendFeed, createGameFeed, pruneFeed, } from "./game/feed.js";
22
+ export { gamePhase, setGamePhase } from "./game/gamePhase.js";
23
+ export { createKeyValueStore } from "./game/keyValueStore.js";
24
+ export { createLeaderboard } from "./game/leaderboard.js";
25
+ export { createLevelSequence } from "./game/levelSequence.js";
26
+ export { createLoadouts } from "./game/loadout.js";
27
+ export { evaluateLootFilter, lootFilter } from "./game/lootFilter.js";
28
+ export { createLootPipeline, defineLootPipeline, } from "./game/lootPipeline.js";
29
+ export { createLootRegistry, lootTable } from "./game/lootTable.js";
30
+ export { resolveOneShotClip } from "./game/modelAnimation.js";
31
+ export { evaluateObjective } from "./game/objectives.js";
32
+ export { createLayerRegistry, diffParams, orderLayers, resolveParams, resolveSelection, validateLayers, } from "./game/paramLayers.js";
33
+ export { DEFAULT_PING_CATEGORIES, PING_FEED_ACTION, createPingSystem, } from "./game/ping.js";
34
+ export { CAMERA_FRUSTUM_DEFAULTS, worldHealthBarAllowsRole, } from "./game/playableGame.js";
35
+ export { curve, evalCurve, leveling, } from "./game/progression.js";
36
+ export { createQuestJournal } from "./game/quest.js";
37
+ export { RaceState, createLapTimer, createRaceState, finishRaceSession, firstPastPost, idleRaceSession, lapDurations, parDelta, placementOf, raceOutcomeOf, racePlacements, raceTrack, splitSegments, startRaceCountdown, tickRaceSession, } from "./game/race.js";
38
+ export { createRecordBook } from "./game/recordBook.js";
39
+ export { createRuleRegistry, rerollRules, selectRules, } from "./game/ruleSelection.js";
40
+ export { createRunDraft } from "./game/runDraft.js";
41
+ export { createSaveStore, localSaveBackend, memorySaveBackend, remoteSaveBackend, } from "./game/saveStore.js";
42
+ export { createSocial, } from "./game/social.js";
43
+ export { createSpawnPoints } from "./game/spawnPoints.js";
44
+ export { composeGameLoop } from "./game/systemRuntime.js";
45
+ export { DEFAULT_FIXED_STAGES, DEFAULT_FRAME_STAGES, compileSystemSchedule, } from "./game/systemSchedule.js";
46
+ export { createTalentTree } from "./game/talents.js";
47
+ export { appendToast, createToastQueue, pruneToasts } from "./game/toasts.js";
48
+ export { createUnlockCatalog, createUnlocks } from "./game/unlocks.js";
49
+ export { createVfxInstanceStore, } from "./game/vfxInstance.js";
50
+ export { DEFAULT_PICKUP_RADIUS, WORLD_ITEM_ENTITY_NAME, } from "./game/worldItem.js";
51
+ export {} from "./input/actionBindings.js";
52
+ export { NEUTRAL_AXIS } from "./input/axisInput.js";
53
+ export { applyBindingOverrides, clearBindingOverride, loadBindingOverrides, saveBindingOverride, } from "./input/bindingOverrides.js";
54
+ export { createGestureSurfaceTracker } from "./input/gestureSurface.js";
55
+ export { aimToPoint } from "./input/pointer.js";
56
+ export { normalizePointerToAxis } from "./input/pointerAxis.js";
57
+ export { createTouchGestureTracker } from "./input/touchGestures.js";
58
+ export { DEFAULT_TOUCH_STYLE, TOUCH_STYLES, TOUCH_STYLE_OPTIONS, deriveTouchScheme, touchButtonShape, touchCode, withTouchCodes, } from "./input/touchScheme.js";
59
+ export {} from "./inventory/inventoryModel.js";
60
+ export {} from "./inventory/shapedGrid.js";
61
+ export {} from "./inventory/slotModel.js";
62
+ export { createDeliveryQueue, insureLost, partitionOnDeath, resolveConsolation, } from "./inventory/storageTier.js";
63
+ export { createAffixRoller, seededRng } from "./item/affix.js";
64
+ export { applyWear, createDurability, createDurabilityTracker, durabilityFraction, isDisabled, repairQuote, wear, } from "./item/durability.js";
65
+ export { activeSetBonuses, applySetBonuses, candidateViolatesForbid, captureProvenance, countSetMembers, identityOf, isIdentityValid, matchesQuery, validateIdentity, } from "./item/itemIdentity.js";
66
+ export { createItemInstanceRegistry, proceduralLootEntry } from "./item/itemInstanceRegistry.js";
67
+ export { generate, } from "./item/itemgen.js";
68
+ export { computeEffectiveStats, createModularItem, install, isComplete, missingRequiredSlots, partInSlot, slotAccepts, uninstall, } from "./item/modularItem.js";
69
+ export { createItemUse } from "./item/use.js";
70
+ export { createUseBehaviorRegistry, } from "./item/useBehavior.js";
71
+ export { createWeaponStats } from "./item/weapon.js";
72
+ export { createStatGraph, statModifierContributions, } from "./progression/statGraph.js";
73
+ export {} from "./puzzle/cellGrid.js";
74
+ export {} from "./puzzle/fallingPiece.js";
75
+ export { createNameGenerator } from "./random/nameGen.js";
76
+ export { pickUniform, pickWeighted } from "./random/pick.js";
77
+ export { seededStreams } from "./random/rng.js";
78
+ export { addValue, clampValue, createPairKeyCodec, driftValue, getValue, setValue, towardValue, } from "./relation/keyedValues.js";
79
+ export { crossThresholds, tierAt, } from "./relation/thresholds.js";
80
+ export { evaluatePredicate, readPath, } from "./rules/predicate.js";
81
+ export { getRuleEffect, listRuleEffects, registerRuleEffect } from "./rules/ruleEffects.js";
82
+ export { createTriggeredRuleEngine, } from "./rules/triggeredRules.js";
83
+ export { createRing, ringSampleAt } from "./session/ring.js";
84
+ export {} from "./session/roles.js";
85
+ export {} from "./session/roundState.js";
86
+ export { createDecayMeterSet, decayMeterMoodles, decayMeterSnapshot, decayMeterState, decayMeters, initDecayMeters, refillMeter, } from "./survival/decayMeter.js";
87
+ export { createMoodleStack, stackMoodles } from "./survival/moodle.js";
88
+ export { createMultiRegionHealth } from "./survival/regionHealth.js";
89
+ export { createCommitController } from "./turn/commit.js";
90
+ export { createIntentBoard } from "./turn/intent.js";
91
+ export { createTurnLoop } from "./turn/turnLoop.js";
92
+ export { activeJobs, cancelJob, createWorkQueue, enqueue, fifoOrdering, jobById, jobProgress, pauseJob, priorityOrdering, queueSize, queuedJobs, resumeJob, tick, } from "./work/jobQueue.js";
93
+ export { unitTrainingConfig, } from "./work/unitTraining.js";
package/dist/index.d.ts CHANGED
@@ -1,14 +1,5 @@
1
- export * from "./runtime/save.js";
2
- export * from "./runtime/snapshot.js";
3
- export * from "./runtime/worldSnapshot.js";
4
- export * from "./runtime/worldReplication.js";
5
- export * from "./game/connectedPlayers.js";
6
- export * from "./runtime/hostedGameRunner.js";
7
- export * from "./runtime/hostedWorldSession.js";
8
- export * from "./runtime/worldMirror.js";
9
- export * from "./runtime/worldChannel.js";
10
- export * from "./runtime/commandRunner.js";
11
- export * from "./runtime/gameRuntime.js";
12
- export * from "./runtime/adapter.js";
13
- export * from "./runtime/transport.js";
14
- 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,14 +1,5 @@
1
- export * from "./runtime/save.js";
2
- export * from "./runtime/snapshot.js";
3
- export * from "./runtime/worldSnapshot.js";
4
- export * from "./runtime/worldReplication.js";
5
- export * from "./game/connectedPlayers.js";
6
- export * from "./runtime/hostedGameRunner.js";
7
- export * from "./runtime/hostedWorldSession.js";
8
- export * from "./runtime/worldMirror.js";
9
- export * from "./runtime/worldChannel.js";
10
- export * from "./runtime/commandRunner.js";
11
- export * from "./runtime/gameRuntime.js";
12
- export * from "./runtime/adapter.js";
13
- export * from "./runtime/transport.js";
14
- 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";
@@ -10,13 +10,17 @@ export interface ActionBinding<TCode extends string = string> {
10
10
  secondary: TCode | null;
11
11
  }
12
12
  export type ActionBindingMap<TAction extends string, TCode extends string = string> = Record<TAction, ActionBinding<TCode>>;
13
+ /** @internal */
13
14
  export declare function bindingMatches<TCode extends string>(code: TCode, binding: ActionBinding<TCode>): boolean;
14
- /** First action (in the map's key order) bound to the given control code, or null. */
15
+ /** First action (in the map's key order) bound to the given control code, or null.
16
+ * @internal
17
+ */
15
18
  export declare function resolveBoundAction<TAction extends string, TCode extends string>(code: TCode, bindings: ActionBindingMap<TAction, TCode>): TAction | null;
16
19
  /**
17
20
  * Collapse left/right modifier variants of a KeyboardEvent.code so bindings
18
21
  * store one logical key.
19
- */
22
+ * @internal
23
+ */
20
24
  export declare function normalizeKeyCode(code: string): string;
21
25
  export interface ActionBindingModes<TCode extends string = string> {
22
26
  hold?: ActionBinding<TCode>[];
@@ -31,6 +35,7 @@ export type ActionCodes<TCode extends string = string> = readonly TCode[] | {
31
35
  };
32
36
  /** Maps each game action name to the input codes (hold/toggle keys, repeat rate) that trigger it. */
33
37
  export type ActionCodesMap<TAction extends string = string, TCode extends string = string> = Record<TAction, ActionCodes<TCode>>;
38
+ /** @internal */
34
39
  export declare function actionRepeatMs(codes: ActionCodes | undefined): number | undefined;
35
40
  export interface ShouldDispatchActionInput {
36
41
  pressed: boolean;
@@ -39,24 +44,35 @@ export interface ShouldDispatchActionInput {
39
44
  lastFiredAt: number | null;
40
45
  now: number;
41
46
  }
47
+ /** @internal */
42
48
  export declare function shouldDispatchAction({ pressed, down, repeatMs, lastFiredAt, now }: ShouldDispatchActionInput): boolean;
49
+ /** @internal */
43
50
  export declare function toActionStateBindingMap<TAction extends string, TCode extends string>(map: ActionCodesMap<TAction, TCode>): ActionStateBindingMap<TAction, TCode>;
51
+ /** @internal */
44
52
  export declare function hotbarSlotBindings(count: number, options?: {
45
53
  action?: (slot: number) => string;
46
54
  }): ActionCodesMap;
47
- /** 0-based slot index for a hotbar-slot action name (`slot1`, `hotbarSlot1`), or null. */
55
+ /** 0-based slot index for a hotbar-slot action name (`slot1`, `hotbarSlot1`), or null.
56
+ * @internal
57
+ */
48
58
  export declare function hotbarSlotActionIndex(action: string): number | null;
59
+ /** @internal */
49
60
  export declare function isHotbarSlotAction(action: string): boolean;
50
61
  /**
51
62
  * Convention mapping a bound input action to the command it fires: the action's
52
63
  * own name when a command by that name exists, otherwise a `ui.<action>`
53
64
  * fallback. Reserved actions (consumed natively by the shell) and hotbar slots
54
65
  * yield null so the shell can handle them itself.
55
- */
66
+ * @internal
67
+ */
56
68
  export declare function resolveActionCommand(action: string, has: (command: string) => boolean, reserved: ReadonlySet<string>): string | null;
57
- /** Short display label for a raw key/button code (e.g. `"KeyW"` → `"W"`). */
69
+ /** Short display label for a raw key/button code (e.g. `"KeyW"` → `"W"`).
70
+ * @internal
71
+ */
58
72
  export declare function bindingLabel(code: string): string;
59
- /** Short display label for an action's first bound code, or null when unbound. */
73
+ /** Short display label for an action's first bound code, or null when unbound.
74
+ * @internal
75
+ */
60
76
  export declare function actionLabel(map: ActionCodesMap, action: string): string | null;
61
77
  export interface ActionStateTracker<TAction extends string> {
62
78
  handleDown(code: string): TAction | null;
@@ -66,4 +82,5 @@ export interface ActionStateTracker<TAction extends string> {
66
82
  endFrame(): void;
67
83
  reset(): void;
68
84
  }
85
+ /** @internal */
69
86
  export declare function createActionStateTracker<TAction extends string, TCode extends string = string>(map: ActionStateBindingMap<TAction, TCode>): ActionStateTracker<TAction>;
@@ -5,10 +5,13 @@
5
5
  * the same model serves keyboard codes, mouse buttons, touch controls, or
6
6
  * gamepad inputs.
7
7
  */
8
+ /** @internal */
8
9
  export function bindingMatches(code, binding) {
9
10
  return code === binding.primary || code === binding.secondary;
10
11
  }
11
- /** First action (in the map's key order) bound to the given control code, or null. */
12
+ /** First action (in the map's key order) bound to the given control code, or null.
13
+ * @internal
14
+ */
12
15
  export function resolveBoundAction(code, bindings) {
13
16
  for (const action of Object.keys(bindings)) {
14
17
  if (bindingMatches(code, bindings[action]))
@@ -19,7 +22,8 @@ export function resolveBoundAction(code, bindings) {
19
22
  /**
20
23
  * Collapse left/right modifier variants of a KeyboardEvent.code so bindings
21
24
  * store one logical key.
22
- */
25
+ * @internal
26
+ */
23
27
  export function normalizeKeyCode(code) {
24
28
  if (code === "ShiftLeft" || code === "ShiftRight")
25
29
  return "Shift";
@@ -27,11 +31,13 @@ export function normalizeKeyCode(code) {
27
31
  return "Control";
28
32
  return code;
29
33
  }
34
+ /** @internal */
30
35
  export function actionRepeatMs(codes) {
31
36
  if (codes === undefined || Array.isArray(codes))
32
37
  return undefined;
33
38
  return codes.repeatMs;
34
39
  }
40
+ /** @internal */
35
41
  export function shouldDispatchAction({ pressed, down, repeatMs, lastFiredAt, now }) {
36
42
  if (pressed)
37
43
  return true;
@@ -44,6 +50,7 @@ export function shouldDispatchAction({ pressed, down, repeatMs, lastFiredAt, now
44
50
  function toBindings(codes) {
45
51
  return codes.map((code) => ({ primary: code, secondary: null }));
46
52
  }
53
+ /** @internal */
47
54
  export function toActionStateBindingMap(map) {
48
55
  const result = {};
49
56
  for (const action of Object.keys(map)) {
@@ -70,6 +77,7 @@ const HOTBAR_DIGIT_CODES = [
70
77
  "Digit9",
71
78
  "Digit0",
72
79
  ];
80
+ /** @internal */
73
81
  export function hotbarSlotBindings(count, options) {
74
82
  if (!Number.isInteger(count) || count < 1 || count > HOTBAR_DIGIT_CODES.length) {
75
83
  throw new Error(`hotbarSlotBindings: count must be an integer in [1, ${HOTBAR_DIGIT_CODES.length}]`);
@@ -82,11 +90,14 @@ export function hotbarSlotBindings(count, options) {
82
90
  return map;
83
91
  }
84
92
  const HOTBAR_SLOT_ACTION = /^(?:hotbar)?slot(\d+)$/i;
85
- /** 0-based slot index for a hotbar-slot action name (`slot1`, `hotbarSlot1`), or null. */
93
+ /** 0-based slot index for a hotbar-slot action name (`slot1`, `hotbarSlot1`), or null.
94
+ * @internal
95
+ */
86
96
  export function hotbarSlotActionIndex(action) {
87
97
  const match = HOTBAR_SLOT_ACTION.exec(action);
88
98
  return match === null ? null : Number(match[1]) - 1;
89
99
  }
100
+ /** @internal */
90
101
  export function isHotbarSlotAction(action) {
91
102
  return HOTBAR_SLOT_ACTION.test(action);
92
103
  }
@@ -95,7 +106,8 @@ export function isHotbarSlotAction(action) {
95
106
  * own name when a command by that name exists, otherwise a `ui.<action>`
96
107
  * fallback. Reserved actions (consumed natively by the shell) and hotbar slots
97
108
  * yield null so the shell can handle them itself.
98
- */
109
+ * @internal
110
+ */
99
111
  export function resolveActionCommand(action, has, reserved) {
100
112
  if (reserved.has(action) || isHotbarSlotAction(action))
101
113
  return null;
@@ -127,7 +139,9 @@ const CODE_LABELS = {
127
139
  ArrowLeft: "←",
128
140
  ArrowRight: "→",
129
141
  };
130
- /** Short display label for a raw key/button code (e.g. `"KeyW"` → `"W"`). */
142
+ /** Short display label for a raw key/button code (e.g. `"KeyW"` → `"W"`).
143
+ * @internal
144
+ */
131
145
  export function bindingLabel(code) {
132
146
  const direct = CODE_LABELS[code];
133
147
  if (direct !== undefined)
@@ -138,7 +152,9 @@ export function bindingLabel(code) {
138
152
  return code.slice(5);
139
153
  return code.length === 1 ? code.toUpperCase() : code;
140
154
  }
141
- /** Short display label for an action's first bound code, or null when unbound. */
155
+ /** Short display label for an action's first bound code, or null when unbound.
156
+ * @internal
157
+ */
142
158
  export function actionLabel(map, action) {
143
159
  const codes = map[action];
144
160
  if (codes === undefined)
@@ -159,6 +175,7 @@ function resolveActionBindingModes(config) {
159
175
  return { hold: config, toggle: [] };
160
176
  return { hold: config.hold ?? [], toggle: config.toggle ?? [] };
161
177
  }
178
+ /** @internal */
162
179
  export function createActionStateTracker(map) {
163
180
  const actions = Object.keys(map);
164
181
  const modesByAction = new Map(actions.map((action) => [action, resolveActionBindingModes(map[action])]));