@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.
- package/CHANGELOG.md +34 -3
- package/LICENSE +203 -661
- package/README.md +1 -1
- package/dist/ai/crowd.d.ts +55 -0
- package/dist/ai/crowd.js +114 -0
- package/dist/ai/flock.d.ts +5 -2
- package/dist/ai/flock.js +5 -2
- package/dist/ai/groupAssist.d.ts +1 -0
- package/dist/ai/groupAssist.js +1 -0
- package/dist/ai/heatSystem.d.ts +76 -0
- package/dist/ai/heatSystem.js +97 -0
- package/dist/ai/interestScheduler.d.ts +107 -0
- package/dist/ai/interestScheduler.js +118 -0
- package/dist/ai/jobBoard.d.ts +1 -0
- package/dist/ai/jobBoard.js +1 -0
- package/dist/ai/laneSelect.d.ts +5 -2
- package/dist/ai/laneSelect.js +5 -2
- package/dist/ai/mobBrain.d.ts +1 -0
- package/dist/ai/mobBrain.js +1 -0
- package/dist/ai/spawnDirector.d.ts +19 -1
- package/dist/ai/spawnDirector.js +53 -26
- package/dist/ai/spawnPoint.d.ts +7 -0
- package/dist/ai/spawnPoint.js +7 -0
- package/dist/ai/targetAcquisition.d.ts +84 -0
- package/dist/ai/targetAcquisition.js +92 -0
- package/dist/anim/easing.d.ts +19 -0
- package/dist/anim/easing.js +19 -0
- package/dist/anim/oscillator.d.ts +12 -0
- package/dist/anim/oscillator.js +25 -0
- package/dist/area/areaEffectField.d.ts +127 -0
- package/dist/area/areaEffectField.js +175 -0
- package/dist/area/stackPolicy.d.ts +47 -0
- package/dist/area/stackPolicy.js +99 -0
- package/dist/audio/audioFalloff.d.ts +5 -2
- package/dist/audio/music.d.ts +53 -0
- package/dist/audio/music.js +34 -0
- package/dist/audio/synth.d.ts +60 -0
- package/dist/audio/synth.js +8 -0
- package/dist/authoring.d.ts +15 -0
- package/dist/authoring.js +15 -0
- package/dist/board/laneBoard.d.ts +13 -0
- package/dist/board/laneBoard.js +13 -0
- package/dist/board/timelineBoard.d.ts +10 -0
- package/dist/board/timelineBoard.js +10 -0
- package/dist/combat/abilityKit.d.ts +18 -0
- package/dist/combat/abilityKit.js +24 -9
- package/dist/combat/animationState.d.ts +5 -0
- package/dist/combat/animationState.js +5 -0
- package/dist/combat/breakMeters.d.ts +10 -0
- package/dist/combat/breakMeters.js +10 -0
- package/dist/combat/castRunner.d.ts +5 -0
- package/dist/combat/castRunner.js +5 -0
- package/dist/combat/comboPoints.d.ts +5 -0
- package/dist/combat/comboPoints.js +5 -0
- package/dist/combat/comboString.d.ts +5 -0
- package/dist/combat/comboString.js +5 -0
- package/dist/combat/damageInterceptors.d.ts +192 -0
- package/dist/combat/damageInterceptors.js +251 -0
- package/dist/combat/damageMatchup.d.ts +68 -0
- package/dist/combat/damageMatchup.js +42 -0
- package/dist/combat/damageResolution.d.ts +63 -0
- package/dist/combat/damageResolution.js +50 -0
- package/dist/combat/death.d.ts +7 -1
- package/dist/combat/death.js +5 -0
- package/dist/combat/deathReason.d.ts +14 -0
- package/dist/combat/deathReason.js +1 -0
- package/dist/combat/defensiveWindow.d.ts +5 -0
- package/dist/combat/defensiveWindow.js +5 -0
- package/dist/combat/dotField.d.ts +47 -0
- package/dist/combat/dotField.js +52 -0
- package/dist/combat/downed.d.ts +5 -0
- package/dist/combat/downed.js +5 -0
- package/dist/combat/effects.d.ts +5 -0
- package/dist/combat/effects.js +5 -0
- package/dist/combat/encounterSequence.d.ts +258 -0
- package/dist/combat/encounterSequence.js +426 -0
- package/dist/combat/hitReaction.d.ts +57 -1
- package/dist/combat/hitReaction.js +45 -5
- package/dist/combat/magazine.d.ts +54 -0
- package/dist/combat/magazine.js +96 -0
- package/dist/combat/projectiles.d.ts +7 -2
- package/dist/combat/projectiles.js +48 -17
- package/dist/combat/receivedDamage.d.ts +117 -0
- package/dist/combat/receivedDamage.js +92 -0
- package/dist/combat/regenShield.d.ts +39 -0
- package/dist/combat/regenShield.js +49 -0
- package/dist/combat/renderCues.d.ts +51 -0
- package/dist/combat/renderCues.js +44 -0
- package/dist/combat/resourcePool.d.ts +5 -0
- package/dist/combat/resourcePool.js +5 -0
- package/dist/combat/rewardAllocation.d.ts +121 -0
- package/dist/combat/rewardAllocation.js +251 -0
- package/dist/combat/shotOrigin.d.ts +30 -1
- package/dist/combat/shotOrigin.js +70 -2
- package/dist/combat/statusApplication.d.ts +96 -0
- package/dist/combat/statusApplication.js +81 -0
- package/dist/combat/telegraph.d.ts +11 -2
- package/dist/combat/telegraph.js +11 -2
- package/dist/combat/thresholdCrossings.d.ts +85 -0
- package/dist/combat/thresholdCrossings.js +116 -0
- package/dist/combat.d.ts +34 -0
- package/dist/combat.js +34 -0
- package/dist/commands/commandRegistry.d.ts +11 -0
- package/dist/commands/commandRegistry.js +9 -2
- package/dist/crafting/crop.d.ts +18 -0
- package/dist/crafting/crop.js +18 -0
- package/dist/crafting/production.d.ts +5 -0
- package/dist/crafting/production.js +5 -0
- package/dist/devtools/rewriteTunables.d.ts +17 -0
- package/dist/devtools/rewriteTunables.js +276 -0
- package/dist/devtools/saveEndpoint.d.ts +46 -0
- package/dist/devtools/saveEndpoint.js +48 -0
- package/dist/devtools/transformTunables.d.ts +3 -0
- package/dist/devtools/transformTunables.js +3 -0
- package/dist/devtools/tunableSchema.d.ts +31 -0
- package/dist/devtools/tunableSchema.js +31 -0
- package/dist/economy/currency.d.ts +12 -1
- package/dist/economy/currency.js +12 -1
- package/dist/economy/listingBook.d.ts +91 -0
- package/dist/economy/listingBook.js +144 -0
- package/dist/economy/resourceLedger.d.ts +222 -0
- package/dist/economy/resourceLedger.js +353 -0
- package/dist/economy/sharedWallet.d.ts +14 -0
- package/dist/economy/sharedWallet.js +14 -0
- package/dist/economy/techTree.d.ts +12 -0
- package/dist/economy/techTree.js +12 -0
- package/dist/economy/wallet.d.ts +26 -2
- package/dist/economy/wallet.js +35 -6
- package/dist/editor/commands.d.ts +248 -0
- package/dist/editor/commands.js +865 -0
- package/dist/editor/document.d.ts +186 -0
- package/dist/editor/document.js +884 -0
- package/dist/editor/grid.d.ts +229 -0
- package/dist/editor/grid.js +366 -0
- package/dist/editor/gridAdapters.d.ts +80 -0
- package/dist/editor/gridAdapters.js +134 -0
- package/dist/editor/index.d.ts +97 -0
- package/dist/editor/index.js +10 -0
- package/dist/editor/liveSync.d.ts +127 -0
- package/dist/editor/liveSync.js +249 -0
- package/dist/editor/runtimeInspector.d.ts +88 -0
- package/dist/editor/runtimeInspector.js +239 -0
- package/dist/editor/types.d.ts +175 -0
- package/dist/editor/types.js +29 -0
- package/dist/faction/reputation.d.ts +5 -0
- package/dist/faction/reputation.js +5 -0
- package/dist/format/distance.d.ts +17 -0
- package/dist/format/distance.js +18 -0
- package/dist/format/duration.d.ts +27 -0
- package/dist/format/duration.js +45 -0
- package/dist/format/speed.d.ts +17 -0
- package/dist/format/speed.js +25 -0
- package/dist/game/connectedPlayers.d.ts +30 -0
- package/dist/game/connectedPlayers.js +21 -0
- package/dist/game/cosmetics.d.ts +9 -0
- package/dist/game/cosmetics.js +16 -0
- package/dist/game/defineGame.d.ts +141 -2
- package/dist/game/defineGame.js +39 -1
- package/dist/game/defineSystem.d.ts +88 -0
- package/dist/game/defineSystem.js +45 -0
- package/dist/game/dialogue.d.ts +33 -0
- package/dist/game/dialogue.js +21 -0
- package/dist/game/events.d.ts +50 -13
- package/dist/game/events.js +5 -0
- package/dist/game/feed.d.ts +33 -0
- package/dist/game/feed.js +35 -2
- package/dist/game/gamePhase.d.ts +11 -0
- package/dist/game/gamePhase.js +16 -0
- package/dist/game/keyValueStore.d.ts +25 -0
- package/dist/game/keyValueStore.js +61 -0
- package/dist/game/leaderboard.d.ts +5 -0
- package/dist/game/leaderboard.js +5 -0
- package/dist/game/levelSequence.d.ts +24 -2
- package/dist/game/levelSequence.js +51 -2
- package/dist/game/loadout.d.ts +5 -0
- package/dist/game/loadout.js +5 -0
- package/dist/game/lootFilter.d.ts +2 -0
- package/dist/game/lootFilter.js +2 -0
- package/dist/game/lootPipeline.d.ts +164 -0
- package/dist/game/lootPipeline.js +216 -0
- package/dist/game/lootTable.d.ts +21 -0
- package/dist/game/lootTable.js +15 -4
- package/dist/game/modelAnimation.d.ts +8 -0
- package/dist/game/modelAnimation.js +18 -0
- package/dist/game/objectives.d.ts +43 -0
- package/dist/game/objectives.js +36 -0
- package/dist/game/paramLayers.d.ts +148 -0
- package/dist/game/paramLayers.js +185 -0
- package/dist/game/ping.d.ts +5 -0
- package/dist/game/ping.js +5 -0
- package/dist/game/playableGame.d.ts +160 -12
- package/dist/game/quest.d.ts +8 -0
- package/dist/game/quest.js +29 -0
- package/dist/game/race.d.ts +141 -0
- package/dist/game/race.js +169 -0
- package/dist/game/recordBook.d.ts +5 -5
- package/dist/game/recordBook.js +4 -1
- package/dist/game/ruleSelection.d.ts +75 -0
- package/dist/game/ruleSelection.js +127 -0
- package/dist/game/runDraft.d.ts +5 -0
- package/dist/game/runDraft.js +5 -0
- package/dist/game/saveStore.d.ts +111 -0
- package/dist/game/saveStore.js +312 -0
- package/dist/game/snapshotHistory.d.ts +67 -0
- package/dist/game/snapshotHistory.js +95 -0
- package/dist/game/social.d.ts +38 -1
- package/dist/game/social.js +71 -0
- package/dist/game/spawnPoints.d.ts +5 -0
- package/dist/game/spawnPoints.js +5 -0
- package/dist/game/systemRuntime.d.ts +50 -0
- package/dist/game/systemRuntime.js +157 -0
- package/dist/game/systemSchedule.d.ts +72 -0
- package/dist/game/systemSchedule.js +242 -0
- package/dist/game/toasts.d.ts +43 -0
- package/dist/game/toasts.js +44 -0
- package/dist/game/trade.d.ts +10 -0
- package/dist/game/trade.js +10 -0
- package/dist/game/unlocks.d.ts +8 -0
- package/dist/game/unlocks.js +16 -0
- package/dist/game/vfxInstance.d.ts +138 -0
- package/dist/game/vfxInstance.js +96 -0
- package/dist/game/worldItem.d.ts +17 -4
- package/dist/game/worldItem.js +17 -4
- package/dist/gameplay.d.ts +91 -0
- package/dist/gameplay.js +91 -0
- package/dist/index.d.ts +5 -7
- package/dist/index.js +5 -7
- package/dist/input/actionBindings.d.ts +24 -5
- package/dist/input/actionBindings.js +23 -5
- package/dist/input/axisInput.d.ts +13 -1
- package/dist/input/axisInput.js +22 -1
- package/dist/input/controlGroups.d.ts +67 -0
- package/dist/input/controlGroups.js +41 -0
- package/dist/input/touchScheme.d.ts +82 -6
- package/dist/input/touchScheme.js +123 -10
- package/dist/interaction/contextMenu.d.ts +1 -0
- package/dist/interaction/contextMenu.js +1 -0
- package/dist/interaction/lockpick.d.ts +61 -0
- package/dist/interaction/lockpick.js +168 -0
- package/dist/interaction/proximityPrompt.d.ts +5 -1
- package/dist/interaction/proximityPrompt.js +5 -3
- package/dist/interaction/qte.d.ts +5 -0
- package/dist/interaction/qte.js +5 -0
- package/dist/interaction/skillCheck.d.ts +5 -0
- package/dist/interaction/skillCheck.js +5 -0
- package/dist/inventory/inventoryModel.d.ts +12 -0
- package/dist/inventory/inventoryModel.js +12 -0
- package/dist/inventory/shapedGrid.d.ts +16 -0
- package/dist/inventory/shapedGrid.js +16 -0
- package/dist/inventory/slotModel.d.ts +10 -0
- package/dist/inventory/slotModel.js +10 -0
- package/dist/item/durability.d.ts +5 -0
- package/dist/item/durability.js +5 -0
- package/dist/item/itemIdentity.d.ts +171 -0
- package/dist/item/itemIdentity.js +138 -0
- package/dist/item/itemInstanceRegistry.d.ts +32 -0
- package/dist/item/itemInstanceRegistry.js +34 -0
- package/dist/item/itemgen.d.ts +163 -0
- package/dist/item/itemgen.js +151 -0
- package/dist/item/modularItem.d.ts +5 -0
- package/dist/item/modularItem.js +5 -0
- package/dist/item/use.d.ts +5 -0
- package/dist/item/use.js +5 -0
- package/dist/item/useBehavior.d.ts +142 -0
- package/dist/item/useBehavior.js +105 -0
- package/dist/item/weapon.d.ts +5 -0
- package/dist/item/weapon.js +5 -0
- package/dist/math/scalar.d.ts +25 -0
- package/dist/math/scalar.js +47 -0
- package/dist/meta/changelog.d.ts +4 -1
- package/dist/meta/changelog.js +36 -1
- package/dist/movement/avoidance.d.ts +45 -0
- package/dist/movement/avoidance.js +123 -0
- package/dist/movement/cameraRig.d.ts +8 -0
- package/dist/movement/cameraRig.js +8 -0
- package/dist/movement/dash.d.ts +11 -0
- package/dist/movement/dash.js +11 -0
- package/dist/movement/formation.d.ts +135 -0
- package/dist/movement/formation.js +194 -0
- package/dist/movement/glideModel.d.ts +5 -0
- package/dist/movement/glideModel.js +5 -0
- package/dist/movement/grappleSwing.d.ts +5 -0
- package/dist/movement/grappleSwing.js +5 -0
- package/dist/movement/leaderTrail.d.ts +5 -0
- package/dist/movement/leaderTrail.js +5 -0
- package/dist/movement/movementModel.d.ts +38 -7
- package/dist/movement/movementModel.js +54 -13
- package/dist/movement/playerMovement.d.ts +41 -0
- package/dist/movement/playerMovement.js +236 -0
- package/dist/movement/poseState.d.ts +13 -0
- package/dist/movement/poseState.js +16 -0
- package/dist/movement/steering.d.ts +8 -0
- package/dist/movement/steering.js +18 -0
- package/dist/multiplayer/combatSnapshot.d.ts +3 -0
- package/dist/multiplayer/combatSnapshot.js +3 -0
- package/dist/multiplayer/lagCompensation.d.ts +5 -0
- package/dist/multiplayer/lagCompensation.js +5 -0
- package/dist/multiplayer/presenceModel.d.ts +9 -1
- package/dist/multiplayer/presenceModel.js +9 -1
- package/dist/multiplayer/simultaneousCommit.d.ts +3 -0
- package/dist/multiplayer/simultaneousCommit.js +3 -0
- package/dist/multiplayer.d.ts +11 -0
- package/dist/multiplayer.js +11 -0
- package/dist/nav/pathFollow.d.ts +57 -0
- package/dist/nav/pathFollow.js +109 -0
- package/dist/orders/orderKinds.d.ts +156 -0
- package/dist/orders/orderKinds.js +197 -0
- package/dist/orders/orderQueue.d.ts +208 -0
- package/dist/orders/orderQueue.js +211 -0
- package/dist/physics/drivableVehicle.d.ts +29 -0
- package/dist/physics/drivableVehicle.js +16 -0
- package/dist/physics/kinematicVehicle.d.ts +21 -1
- package/dist/physics/kinematicVehicle.js +23 -8
- package/dist/physics/physicsWorld.d.ts +24 -12
- package/dist/physics/physicsWorld.js +11 -5
- package/dist/physics/radialImpulse.d.ts +25 -0
- package/dist/physics/radialImpulse.js +27 -0
- package/dist/procedural.d.ts +3 -0
- package/dist/procedural.js +3 -0
- package/dist/progression/statGraph.d.ts +116 -0
- package/dist/progression/statGraph.js +318 -0
- package/dist/puzzle/cellGrid.d.ts +9 -0
- package/dist/puzzle/cellGrid.js +9 -0
- package/dist/puzzle/fallingPiece.d.ts +9 -0
- package/dist/puzzle/fallingPiece.js +9 -0
- package/dist/puzzle/nonogram.d.ts +39 -0
- package/dist/puzzle/nonogram.js +136 -0
- package/dist/random/nameGen.d.ts +5 -0
- package/dist/random/nameGen.js +5 -0
- package/dist/random/pick.d.ts +8 -0
- package/dist/random/pick.js +31 -0
- package/dist/random/rng.d.ts +24 -0
- package/dist/random/rng.js +30 -8
- package/dist/random/seedLink.d.ts +4 -0
- package/dist/random/seedLink.js +4 -0
- package/dist/relation/keyedValues.d.ts +54 -0
- package/dist/relation/keyedValues.js +115 -0
- package/dist/relation/thresholds.d.ts +62 -0
- package/dist/relation/thresholds.js +62 -0
- package/dist/render/color.d.ts +12 -0
- package/dist/render/color.js +26 -0
- package/dist/render/lookPreset.d.ts +41 -0
- package/dist/render/lookPreset.js +29 -0
- package/dist/render/postProcessing.d.ts +76 -0
- package/dist/render/postProcessing.js +21 -0
- package/dist/rules/predicate.d.ts +53 -0
- package/dist/rules/predicate.js +64 -0
- package/dist/rules/ruleEffects.d.ts +38 -0
- package/dist/rules/ruleEffects.js +37 -0
- package/dist/rules/triggeredRules.d.ts +160 -0
- package/dist/rules/triggeredRules.js +241 -0
- package/dist/runtime/adapter.d.ts +58 -0
- package/dist/runtime/adapter.js +54 -5
- package/dist/runtime/cameraDirector.d.ts +1 -0
- package/dist/runtime/cameraDirector.js +1 -0
- package/dist/runtime/commandRunner.d.ts +1 -0
- package/dist/runtime/commandRunner.js +1 -0
- package/dist/runtime/context/combatFx.d.ts +23 -0
- package/dist/runtime/context/combatFx.js +161 -0
- package/dist/runtime/context/registries.d.ts +13 -0
- package/dist/runtime/context/registries.js +84 -0
- package/dist/runtime/context/worldItems.d.ts +21 -0
- package/dist/runtime/context/worldItems.js +37 -0
- package/dist/runtime/descriptors/baseline.d.ts +48 -0
- package/dist/runtime/descriptors/baseline.js +134 -0
- package/dist/runtime/descriptors/features.d.ts +74 -0
- package/dist/runtime/descriptors/features.js +281 -0
- package/dist/runtime/gameContext.d.ts +163 -19
- package/dist/runtime/gameContext.js +385 -339
- package/dist/runtime/gameRuntime.d.ts +1 -0
- package/dist/runtime/gameRuntime.js +1 -0
- package/dist/runtime/headlessRunner.d.ts +60 -0
- package/dist/runtime/headlessRunner.js +44 -0
- package/dist/runtime/hostPersistence.d.ts +12 -0
- package/dist/runtime/hostPersistence.js +12 -0
- package/dist/runtime/hostedGameRunner.d.ts +54 -0
- package/dist/runtime/hostedGameRunner.js +85 -0
- package/dist/runtime/hostedWorldSession.d.ts +73 -0
- package/dist/runtime/hostedWorldSession.js +64 -0
- package/dist/runtime/inputSnapshot.d.ts +21 -3
- package/dist/runtime/inputSnapshot.js +8 -2
- package/dist/runtime/motionIntents.d.ts +12 -1
- package/dist/runtime/motionIntents.js +26 -1
- package/dist/runtime/perContext.d.ts +15 -0
- package/dist/runtime/perContext.js +21 -0
- package/dist/runtime/runtimeSave.d.ts +79 -0
- package/dist/runtime/runtimeSave.js +105 -0
- package/dist/runtime/save.d.ts +4 -0
- package/dist/runtime/save.js +4 -0
- package/dist/runtime/snapshot.d.ts +7 -0
- package/dist/runtime/snapshot.js +7 -0
- package/dist/runtime/visibility.d.ts +2 -1
- package/dist/runtime/visibility.js +2 -1
- package/dist/runtime/worldChannel.d.ts +62 -0
- package/dist/runtime/worldChannel.js +114 -0
- package/dist/runtime/worldMirror.d.ts +36 -0
- package/dist/runtime/worldMirror.js +44 -0
- package/dist/runtime/worldProjection.d.ts +47 -0
- package/dist/runtime/worldProjection.js +52 -0
- package/dist/runtime/worldReplication.d.ts +69 -0
- package/dist/runtime/worldReplication.js +217 -0
- package/dist/runtime/worldSnapshot.d.ts +44 -0
- package/dist/runtime/worldSnapshot.js +30 -0
- package/dist/scene/assetCatalog.d.ts +22 -0
- package/dist/scene/assetCatalog.js +4 -0
- package/dist/scene/assetDiagnostics.d.ts +69 -0
- package/dist/scene/assetDiagnostics.js +110 -0
- package/dist/scene/assetGenerator.d.ts +65 -0
- package/dist/scene/assetGenerator.js +64 -0
- package/dist/scene/assetSpace.d.ts +137 -0
- package/dist/scene/assetSpace.js +259 -0
- package/dist/scene/authoredTriggers.d.ts +169 -0
- package/dist/scene/authoredTriggers.js +340 -0
- package/dist/scene/behaviorRuntime.d.ts +75 -0
- package/dist/scene/behaviorRuntime.js +217 -0
- package/dist/scene/behaviors.d.ts +14 -2
- package/dist/scene/behaviors.js +7 -2
- package/dist/scene/bodyBind.d.ts +60 -0
- package/dist/scene/bodyBind.js +51 -0
- package/dist/scene/builtinSceneKinds.d.ts +5 -0
- package/dist/scene/builtinSceneKinds.js +62 -0
- package/dist/scene/colliders.d.ts +18 -0
- package/dist/scene/colliders.js +61 -1
- package/dist/scene/entityStats.d.ts +13 -0
- package/dist/scene/entityStats.js +30 -0
- package/dist/scene/entityStore.d.ts +41 -1
- package/dist/scene/entityStore.js +75 -0
- package/dist/scene/facing.d.ts +18 -0
- package/dist/scene/facing.js +26 -0
- package/dist/scene/modelSockets.d.ts +33 -0
- package/dist/scene/modelSockets.js +29 -0
- package/dist/scene/objectQuery.d.ts +2 -0
- package/dist/scene/objectQuery.js +2 -0
- package/dist/scene/objectStore.d.ts +4 -0
- package/dist/scene/objectStore.js +6 -0
- package/dist/scene/possession.d.ts +8 -0
- package/dist/scene/possession.js +14 -0
- package/dist/scene/roster.d.ts +3 -0
- package/dist/scene/roster.js +12 -0
- package/dist/scene/sceneKinds.d.ts +240 -0
- package/dist/scene/sceneKinds.js +214 -0
- package/dist/scene/sceneOwnership.d.ts +169 -0
- package/dist/scene/sceneOwnership.js +179 -0
- package/dist/scene/selectionBookmarks.d.ts +93 -0
- package/dist/scene/selectionBookmarks.js +122 -0
- package/dist/scene/vehicleSeat.d.ts +68 -0
- package/dist/scene/vehicleSeat.js +59 -0
- package/dist/sensor/concealment.d.ts +3 -0
- package/dist/sensor/concealment.js +3 -0
- package/dist/sensor/freezeMonitor.d.ts +1 -0
- package/dist/sensor/freezeMonitor.js +1 -0
- package/dist/sensor/frustumSensor.d.ts +7 -3
- package/dist/sensor/frustumSensor.js +7 -3
- package/dist/sensor/hiddenStateProbe.d.ts +5 -2
- package/dist/sensor/hiddenStateProbe.js +5 -2
- package/dist/sensor/recordingBuffer.d.ts +2 -1
- package/dist/sensor/recordingBuffer.js +2 -1
- package/dist/sensor/replayLoop.d.ts +6 -2
- package/dist/sensor/replayLoop.js +6 -2
- package/dist/sensor/revealQuery.d.ts +2 -1
- package/dist/sensor/revealQuery.js +2 -1
- package/dist/sensor/visionCone.d.ts +10 -3
- package/dist/sensor/visionCone.js +10 -3
- package/dist/session/contestedChannel.d.ts +1 -0
- package/dist/session/contestedChannel.js +1 -0
- package/dist/session/extraction.d.ts +1 -0
- package/dist/session/extraction.js +1 -0
- package/dist/session/roles.d.ts +6 -0
- package/dist/session/roles.js +6 -0
- package/dist/session/roundState.d.ts +8 -0
- package/dist/session/roundState.js +2 -0
- package/dist/settings/settingsModel.d.ts +1 -0
- package/dist/settings/settingsModel.js +1 -0
- package/dist/stats/accumulatorMeter.d.ts +6 -0
- package/dist/stats/accumulatorMeter.js +6 -0
- package/dist/stats/eventMeter.d.ts +5 -0
- package/dist/stats/eventMeter.js +5 -0
- package/dist/stats/rollCheck.d.ts +5 -0
- package/dist/stats/rollCheck.js +5 -0
- package/dist/stats/statModifiers.d.ts +5 -0
- package/dist/stats/statModifiers.js +5 -0
- package/dist/store/defineKeyedStore.d.ts +38 -0
- package/dist/store/defineKeyedStore.js +42 -0
- package/dist/store/defineStore.d.ts +33 -0
- package/dist/store/defineStore.js +35 -0
- package/dist/store/observableKeyedStore.d.ts +9 -0
- package/dist/store/observableKeyedStore.js +43 -2
- package/dist/survival/decayMeter.d.ts +55 -0
- package/dist/survival/decayMeter.js +130 -55
- package/dist/survival/moodle.d.ts +2 -0
- package/dist/survival/regionHealth.d.ts +6 -0
- package/dist/survival/regionHealth.js +5 -0
- package/dist/tactics/fallingGrid.d.ts +6 -4
- package/dist/tactics/fallingGrid.js +6 -4
- package/dist/tactics/predictiveQuery.d.ts +3 -0
- package/dist/tactics/predictiveQuery.js +3 -0
- package/dist/tactics/snapshot.d.ts +2 -0
- package/dist/tactics/snapshot.js +2 -0
- package/dist/tactics/surface.d.ts +1 -0
- package/dist/tactics/surface.js +1 -0
- package/dist/tactics/tacticalGrid.d.ts +1 -0
- package/dist/tactics/tacticalGrid.js +1 -0
- package/dist/time/beatClock.d.ts +14 -4
- package/dist/time/beatClock.js +14 -4
- package/dist/time/calendarClock.d.ts +3 -0
- package/dist/time/calendarClock.js +3 -0
- package/dist/time/idleProgress.d.ts +4 -0
- package/dist/time/idleProgress.js +4 -0
- package/dist/time/simClock.d.ts +2 -0
- package/dist/time/simClock.js +20 -5
- package/dist/ui/actionModel.d.ts +110 -0
- package/dist/ui/actionModel.js +159 -0
- package/dist/ui/gameLayout.d.ts +144 -0
- package/dist/ui/gameLayout.js +148 -0
- package/dist/ui/hudDocument.d.ts +114 -0
- package/dist/ui/hudDocument.js +220 -0
- package/dist/ui/hudLayout.d.ts +33 -1
- package/dist/ui/hudLayout.js +204 -17
- package/dist/ui/orientation.d.ts +39 -0
- package/dist/ui/orientation.js +49 -0
- package/dist/ui/selectionModel.d.ts +92 -0
- package/dist/ui/selectionModel.js +88 -0
- package/dist/ui/swingTimer.d.ts +42 -0
- package/dist/ui/swingTimer.js +38 -0
- package/dist/ui/tooltipModel.d.ts +63 -0
- package/dist/ui/tooltipModel.js +82 -0
- package/dist/ui.d.ts +15 -0
- package/dist/ui.js +15 -0
- package/dist/visibility/bounds.d.ts +8 -1
- package/dist/visibility/bounds.js +8 -1
- package/dist/visibility/frustum.d.ts +12 -3
- package/dist/visibility/frustum.js +12 -3
- package/dist/visibility/spatialIndex.js +34 -20
- package/dist/work/jobQueue.d.ts +201 -0
- package/dist/work/jobQueue.js +253 -0
- package/dist/work/unitTraining.d.ts +58 -0
- package/dist/work/unitTraining.js +52 -0
- package/dist/world/authoredObjects.d.ts +58 -0
- package/dist/world/authoredObjects.js +69 -0
- package/dist/world/buildingGenerator.d.ts +18 -0
- package/dist/world/buildingGenerator.js +62 -0
- package/dist/world/buildings.d.ts +5 -0
- package/dist/world/buildings.js +5 -0
- package/dist/world/catenary.d.ts +22 -0
- package/dist/world/catenary.js +69 -0
- package/dist/world/environmentSummary.d.ts +11 -2
- package/dist/world/environmentSummary.js +11 -1
- package/dist/world/features.d.ts +244 -7
- package/dist/world/features.js +92 -4
- package/dist/world/footprintGrid.d.ts +59 -0
- package/dist/world/footprintGrid.js +141 -0
- package/dist/world/geometry.d.ts +64 -0
- package/dist/world/geometry.js +94 -0
- package/dist/world/grassKind.d.ts +51 -0
- package/dist/world/grassKind.js +101 -0
- package/dist/world/pathInstances.d.ts +27 -0
- package/dist/world/pathInstances.js +27 -0
- package/dist/world/pathTerrain.d.ts +80 -0
- package/dist/world/pathTerrain.js +142 -0
- package/dist/world/placeAsset.d.ts +81 -0
- package/dist/world/placeAsset.js +77 -0
- package/dist/world/placement.d.ts +4 -0
- package/dist/world/placement.js +4 -0
- package/dist/world/placementController.d.ts +6 -0
- package/dist/world/placementController.js +6 -0
- package/dist/world/polyline.d.ts +34 -0
- package/dist/world/polyline.js +81 -0
- package/dist/world/roads.d.ts +55 -0
- package/dist/world/roads.js +184 -0
- package/dist/world/scatterRegion.d.ts +164 -0
- package/dist/world/scatterRegion.js +409 -0
- package/dist/world/sceneShapes.d.ts +43 -0
- package/dist/world/sceneShapes.js +1 -0
- package/dist/world/segment.d.ts +27 -0
- package/dist/world/segment.js +43 -0
- package/dist/world/soilKind.d.ts +48 -0
- package/dist/world/soilKind.js +92 -0
- package/dist/world/spatialSample.d.ts +241 -0
- package/dist/world/spatialSample.js +465 -0
- package/dist/world/streets.d.ts +80 -0
- package/dist/world/streets.js +144 -0
- package/dist/world/terraform.d.ts +213 -1
- package/dist/world/terraform.js +655 -20
- package/dist/world/terrain.d.ts +138 -12
- package/dist/world/terrain.js +346 -28
- package/dist/world/terrainGuides.d.ts +182 -0
- package/dist/world/terrainGuides.js +343 -0
- package/dist/world/vec2.d.ts +81 -0
- package/dist/world/vec2.js +128 -0
- package/dist/world/vec3.d.ts +49 -0
- package/dist/world/vec3.js +76 -0
- package/dist/world/vegetation.d.ts +71 -0
- package/dist/world/vegetation.js +151 -0
- package/dist/world/visibilityField.d.ts +154 -0
- package/dist/world/visibilityField.js +271 -0
- package/dist/world/volumetricClouds.d.ts +52 -0
- package/dist/world/volumetricClouds.js +43 -0
- package/dist/world/walls.d.ts +9 -0
- package/dist/world/walls.js +9 -0
- package/dist/world/waterKind.d.ts +55 -0
- package/dist/world/waterKind.js +99 -0
- package/dist/world.d.ts +132 -0
- package/dist/world.js +132 -0
- package/package.json +32 -8
- package/skills/jgengine/SKILL.md +51 -0
- package/skills/jgengine/api.md +434 -0
- package/skills/jgengine/capabilities.md +29 -0
- package/skills/jgengine/reference-cartridge.md +72 -0
- package/skills/jgengine-combat/SKILL.md +34 -0
- package/skills/jgengine-combat/api.md +549 -0
- package/skills/jgengine-combat/capabilities.md +169 -0
- package/skills/jgengine-combat/reference.md +98 -0
- package/skills/jgengine-gameplay/SKILL.md +39 -0
- package/skills/jgengine-gameplay/api.md +1794 -0
- package/skills/jgengine-gameplay/capabilities.md +378 -0
- package/skills/jgengine-gameplay/reference-systems.md +60 -0
- package/skills/jgengine-world/SKILL.md +38 -0
- package/skills/jgengine-world/api.md +2652 -0
- package/skills/jgengine-world/capabilities.md +370 -0
- package/skills/jgengine-world/reference.md +222 -0
- package/dist/cartridge/runtime.d.ts +0 -15
- package/dist/cartridge/runtime.js +0 -556
- package/dist/cartridge/spec.d.ts +0 -188
- package/dist/cartridge/spec.js +0 -19
- package/dist/cartridge/validate.d.ts +0 -2
- package/dist/cartridge/validate.js +0 -78
- package/dist/store/engineStore.d.ts +0 -22
- package/dist/store/engineStore.js +0 -50
- package/dist/store/features.d.ts +0 -10
- package/dist/store/features.js +0 -23
- package/llms.txt +0 -4983
|
@@ -2,17 +2,20 @@ import { type CardPile, type CardPileConfig } from "../cards/cardPile.js";
|
|
|
2
2
|
import { type OnDeathSpec } from "../combat/death.js";
|
|
3
3
|
import { type EffectInput, type EffectResult, type EffectVia, type ReceiveMap, type SingleTargetEffectInput } from "../combat/effects.js";
|
|
4
4
|
import { type ProjectileSystem } from "../combat/projectiles.js";
|
|
5
|
-
import { type HitReaction, type HitReactionConfig } from "../combat/hitReaction.js";
|
|
5
|
+
import { type HitReaction, type HitReactionConfig, type ImpactPresetName } from "../combat/hitReaction.js";
|
|
6
6
|
import { type TelegraphShape } from "../combat/telegraph.js";
|
|
7
7
|
import { type CommandDefinition, type CommandResult } from "../commands/commandRegistry.js";
|
|
8
|
+
import { type ChargeOptions as WalletChargeOptions } from "../economy/wallet.js";
|
|
8
9
|
import { type Cosmetics } from "../game/cosmetics.js";
|
|
9
10
|
import type { GameDefinition } from "../game/defineGame.js";
|
|
10
11
|
import { type TerrainField } from "../world/terrain.js";
|
|
11
|
-
import { type GameEventMap, type GameEvents } from "../game/events.js";
|
|
12
|
+
import { type GameEventMap, type GameEvents, type VfxKind } from "../game/events.js";
|
|
13
|
+
import { type VfxInstanceStore } from "../game/vfxInstance.js";
|
|
12
14
|
import { type GameFeed } from "../game/feed.js";
|
|
13
15
|
import { type Leaderboard } from "../game/leaderboard.js";
|
|
14
16
|
import { type Loadouts } from "../game/loadout.js";
|
|
15
17
|
import { type Drop, type LootTableDef } from "../game/lootTable.js";
|
|
18
|
+
import { type GameDialogue } from "../game/dialogue.js";
|
|
16
19
|
import { type QuestJournal } from "../game/quest.js";
|
|
17
20
|
import { type WorldItemRecord, type WorldItemSpawnInput } from "../game/worldItem.js";
|
|
18
21
|
import { type Chat } from "../game/chat.js";
|
|
@@ -26,20 +29,26 @@ import { type ItemUseHandler, type ItemUseInput, type ItemUseRejection, type Ite
|
|
|
26
29
|
import { type WeaponStats } from "../item/weapon.js";
|
|
27
30
|
import { type PoseAllowedStates, type PoseState } from "../movement/poseState.js";
|
|
28
31
|
import type { ModelAssetRef } from "../scene/assetCatalog.js";
|
|
32
|
+
import { type BodyBind } from "../scene/bodyBind.js";
|
|
29
33
|
import { type PaintLayer } from "../scene/paintLayer.js";
|
|
30
34
|
import { type EntityStatsApi, type StatCatalog } from "../scene/entityStats.js";
|
|
31
|
-
import type
|
|
35
|
+
import { type EntityBlackboard, type EntityPose, type EntityPosition, type EntityStore, type SceneEntity, type SpawnOptions, type SpawnPose } from "../scene/entityStore.js";
|
|
32
36
|
import { type Forms } from "../scene/form.js";
|
|
33
|
-
import type
|
|
37
|
+
import { type EntityColliderSet } from "../scene/colliders.js";
|
|
34
38
|
import { type ObjectRaycastHit, type ObjectRaycastInput } from "../scene/objectQuery.js";
|
|
35
39
|
import { type ObjectStore } from "../scene/objectStore.js";
|
|
36
40
|
import { type Roster } from "../scene/roster.js";
|
|
41
|
+
import { type SelectionSet } from "../scene/selection.js";
|
|
42
|
+
import { type ConnectedPlayers } from "../game/connectedPlayers.js";
|
|
37
43
|
import { type Possession } from "../scene/possession.js";
|
|
38
44
|
import { type SceneRaycastHit, type SceneRaycastInput } from "../scene/sceneRaycast.js";
|
|
39
|
-
import { type SpatialApi } from "../scene/spatial.js";
|
|
45
|
+
import { type MoveTowardOptions, type SpatialApi } from "../scene/spatial.js";
|
|
40
46
|
import { type CycleTargetOptions } from "../scene/targeting.js";
|
|
41
47
|
import { type Stats } from "../stats/statModifiers.js";
|
|
42
48
|
import { type ObservableKeyedStore } from "../store/observableKeyedStore.js";
|
|
49
|
+
import { type SnapshotModule, type SnapshotViewer, type WorldSnapshot } from "./worldSnapshot.js";
|
|
50
|
+
import { type ReplicationPolicy } from "./worldProjection.js";
|
|
51
|
+
import { type RuntimeSave, type RuntimeSaveOptions } from "./runtimeSave.js";
|
|
43
52
|
import { type SimClock } from "../time/simClock.js";
|
|
44
53
|
import { type TurnLoop, type TurnLoopConfig } from "../turn/turnLoop.js";
|
|
45
54
|
import { RaceState, type RaceStateConfig } from "../game/race.js";
|
|
@@ -68,6 +77,8 @@ export interface GameContextEntityEntry {
|
|
|
68
77
|
verbs?: readonly ContextVerb[];
|
|
69
78
|
/** Purpose-specific colliders (physical body + named damage hitboxes). */
|
|
70
79
|
colliders?: EntityColliderSet;
|
|
80
|
+
/** Uniform visual scale of the rendered mesh; derives a matching hitbox (and eye-height) when no explicit `colliders` are set. */
|
|
81
|
+
scale?: number;
|
|
71
82
|
}
|
|
72
83
|
export interface GameContextObjectEntry {
|
|
73
84
|
proximityPrompt?: ProximityPrompt;
|
|
@@ -94,6 +105,14 @@ export interface GameContextOptions<TAssetRef extends ModelAssetRef = ModelAsset
|
|
|
94
105
|
};
|
|
95
106
|
now?: () => number;
|
|
96
107
|
occluder?: (from: EntityPosition, to: EntityPosition) => boolean;
|
|
108
|
+
/** Bind `ctx.game.save` to a pluggable backend (offline/single-player whole-world save). The shell resolves this from `defineGame({ save })`; multiplayer leaves it off (the host persists). */
|
|
109
|
+
save?: RuntimeSaveOptions;
|
|
110
|
+
/**
|
|
111
|
+
* Host-side per-viewer replication policy — private-state and area-of-interest projection over the
|
|
112
|
+
* wire. Bound on the authoritative host only. Unset (the default) replicates the whole world to every
|
|
113
|
+
* client, exactly as before; the simulation is identical either way, so a game plays the same.
|
|
114
|
+
*/
|
|
115
|
+
replication?: ReplicationPolicy;
|
|
97
116
|
}
|
|
98
117
|
export interface SceneObjectContext extends ObjectStore {
|
|
99
118
|
catalog(instanceId: string): GameContextObjectEntry | null;
|
|
@@ -101,6 +120,15 @@ export interface SceneObjectContext extends ObjectStore {
|
|
|
101
120
|
raycastAll(input: ObjectRaycastInput): readonly ObjectRaycastHit[];
|
|
102
121
|
setColliders(instanceId: string, colliders: EntityColliderSet | null): void;
|
|
103
122
|
collidersOf(instanceId: string): EntityColliderSet | null;
|
|
123
|
+
/**
|
|
124
|
+
* Per-instance selection/highlight state for placed objects — the reactive counterpart to
|
|
125
|
+
* `worldHealthBars`/`nameplates` (entities), so a build-mode or RTS selection ring reads
|
|
126
|
+
* `ctx.scene.object.selection` instead of hand-rolling one through `WorldOverlay` against external
|
|
127
|
+
* state. Mutations (`add`/`remove`/`toggle`/`replace`/`clear`) bump `ctx.version()`/notify
|
|
128
|
+
* `ctx.subscribe` like every other `ctx` surface. Render it with `WorldObjectHighlights`
|
|
129
|
+
* (`@jgengine/shell/world/WorldHud`).
|
|
130
|
+
*/
|
|
131
|
+
selection: SelectionSet;
|
|
104
132
|
}
|
|
105
133
|
export interface FloatTextInput {
|
|
106
134
|
instanceId?: string;
|
|
@@ -113,6 +141,15 @@ export interface FloatTextInput {
|
|
|
113
141
|
crit?: boolean;
|
|
114
142
|
scale?: number;
|
|
115
143
|
}
|
|
144
|
+
/** Request a transient spell/ability VFX burst; `from`/`to` accept an instance id or a world point, `color` is a `0xRRGGBB` tint, and `durationMs` defaults per `kind`. */
|
|
145
|
+
export interface VfxInput {
|
|
146
|
+
kind: VfxKind;
|
|
147
|
+
color: number;
|
|
148
|
+
from?: string | readonly [number, number, number];
|
|
149
|
+
to?: string | readonly [number, number, number];
|
|
150
|
+
radius?: number;
|
|
151
|
+
durationMs?: number;
|
|
152
|
+
}
|
|
116
153
|
export interface TelegraphInput {
|
|
117
154
|
from: string;
|
|
118
155
|
shape: TelegraphShape;
|
|
@@ -131,9 +168,14 @@ export interface TelegraphInput {
|
|
|
131
168
|
export interface HitReactionInput {
|
|
132
169
|
from: string;
|
|
133
170
|
to: string;
|
|
134
|
-
config: HitReactionConfig;
|
|
171
|
+
config: HitReactionConfig | ImpactPresetName;
|
|
135
172
|
power?: number;
|
|
136
173
|
}
|
|
174
|
+
/** Options for {@link SceneEntityContext.moveTowardCommit}: {@link MoveTowardOptions} plus an optional facing turn. */
|
|
175
|
+
export interface MoveTowardCommitOptions extends MoveTowardOptions {
|
|
176
|
+
/** Rotate the entity to face its direction of travel instead of preserving its current `rotationY`. Default false. */
|
|
177
|
+
face?: boolean;
|
|
178
|
+
}
|
|
137
179
|
export interface SceneEntityContext {
|
|
138
180
|
spawn(name: string, options?: SpawnOptions): string;
|
|
139
181
|
despawn(instanceId: string): boolean;
|
|
@@ -142,11 +184,22 @@ export interface SceneEntityContext {
|
|
|
142
184
|
setPoseConstraint: EntityStore["setPoseConstraint"];
|
|
143
185
|
get(instanceId: string): SceneEntity | null;
|
|
144
186
|
list(): readonly SceneEntity[];
|
|
187
|
+
ids: EntityStore["ids"];
|
|
188
|
+
subscribeMembership: EntityStore["subscribeMembership"];
|
|
145
189
|
spawnPoseOf(instanceId: string): SpawnPose | null;
|
|
146
190
|
resetToSpawn(instanceId: string): boolean;
|
|
147
191
|
resetAllToSpawn(filter?: (entity: SceneEntity) => boolean): number;
|
|
192
|
+
blackboard: EntityBlackboard;
|
|
148
193
|
stats: EntityStatsApi;
|
|
149
194
|
floatText(input: FloatTextInput): void;
|
|
195
|
+
vfx(input: VfxInput): void;
|
|
196
|
+
/**
|
|
197
|
+
* Retained VFX registry for long-lived, updatable effects (held beams, tethers, zones, target lines) whose
|
|
198
|
+
* endpoints and params change over time — the persistent complement to the one-shot {@link SceneEntityContext.vfx}
|
|
199
|
+
* burst. `upsert` creates/replaces by stable id, `update` nudges dynamic params, `stop` disposes with an optional
|
|
200
|
+
* fade; endpoints given as an entity instance id are followed live by the renderer without per-frame commands.
|
|
201
|
+
*/
|
|
202
|
+
vfxInstance: VfxInstanceStore;
|
|
150
203
|
telegraph(input: TelegraphInput): () => void;
|
|
151
204
|
hitReaction(input: HitReactionInput): HitReaction | null;
|
|
152
205
|
setTarget(fromId: string, toId: string | null): void;
|
|
@@ -163,11 +216,29 @@ export interface SceneEntityContext {
|
|
|
163
216
|
hasLineOfSight: SpatialApi["hasLineOfSight"];
|
|
164
217
|
queryArc: SpatialApi["queryArc"];
|
|
165
218
|
moveToward: SpatialApi["moveToward"];
|
|
219
|
+
/**
|
|
220
|
+
* `moveToward` plus commit: steps `instanceId` toward `target` and immediately `setPose`s the
|
|
221
|
+
* result, so a per-tick mover no longer pairs `moveToward` with a hand-written `setPose`.
|
|
222
|
+
* `options.face` turns the entity to its direction of travel; omitted preserves the current
|
|
223
|
+
* `rotationY`. Returns the committed position (`null`, committing nothing, when `moveToward` would
|
|
224
|
+
* — unknown instance/target).
|
|
225
|
+
*/
|
|
226
|
+
moveTowardCommit(instanceId: string, target: EntityPosition | string, options: MoveTowardCommitOptions): EntityPosition | null;
|
|
166
227
|
invalidateSpatial: SpatialApi["invalidate"];
|
|
167
228
|
setColliders(instanceId: string, colliders: EntityColliderSet | null): void;
|
|
168
229
|
collidersOf(instanceId: string): EntityColliderSet | null;
|
|
230
|
+
/** Uniform visual scale from the entity's catalog entry (1 when unscaled). */
|
|
231
|
+
visualScaleOf(instanceId: string): number;
|
|
169
232
|
form: Forms;
|
|
170
233
|
paint: PaintLayer;
|
|
234
|
+
/**
|
|
235
|
+
* Lazily creates (on first call) or returns the existing declarative bind for `key` — the sim-snapshot →
|
|
236
|
+
* scene-entity pose mirror (#673). Call `bind(key).sync(bodies, dt)` once per tick with every sim body's
|
|
237
|
+
* current snapshot instead of hand-writing `setPose` per body: an id seen for the first time is spawned
|
|
238
|
+
* from its `kind`, an id already bound is posed, and a previously-bound id absent from this tick's
|
|
239
|
+
* `bodies` is despawned — no per-game spawn/despawn dance.
|
|
240
|
+
*/
|
|
241
|
+
bind(key: string): BodyBind;
|
|
171
242
|
}
|
|
172
243
|
export type WorldItemPickupResult = {
|
|
173
244
|
status: "ok";
|
|
@@ -189,6 +260,10 @@ export interface GameContextCommands {
|
|
|
189
260
|
has(name: string): boolean;
|
|
190
261
|
names(): string[];
|
|
191
262
|
run(name: string, input: unknown): CommandResult<GameContext>;
|
|
263
|
+
/** Run a command attributed to `actorUserId` — a shared-world host routes each client's command through this so the handler can read {@link actor}. */
|
|
264
|
+
runAs(actorUserId: string, name: string, input: unknown): CommandResult<GameContext>;
|
|
265
|
+
/** The user a command is running on behalf of, or `null` outside a {@link runAs} call — commands default to `ctx.player.userId` when this is `null`. */
|
|
266
|
+
actor(): string | null;
|
|
192
267
|
}
|
|
193
268
|
export interface GameContextFeed extends Omit<GameFeed, "bind"> {
|
|
194
269
|
bind(action: keyof GameEventMap): () => void;
|
|
@@ -202,9 +277,12 @@ export interface GameContextLoot {
|
|
|
202
277
|
export interface GameContextEconomy {
|
|
203
278
|
balance(userId: string, currencyId: string): number;
|
|
204
279
|
grant(userId: string, currencyId: string, amount: number): void;
|
|
205
|
-
charge(
|
|
280
|
+
/** `options.overdraft` opts this charge into carrying a negative balance (`true` unlimited, `{ max }` capped) — omitted keeps the strict no-debt default. */
|
|
281
|
+
charge(userId: string, currencyId: string, amount: number, options?: WalletChargeOptions): {
|
|
206
282
|
reason: string;
|
|
207
283
|
} | null;
|
|
284
|
+
/** True once `balance(userId, currencyId)` has gone negative under an overdraft-enabled charge. */
|
|
285
|
+
isOverdrawn(userId: string, currencyId: string): boolean;
|
|
208
286
|
}
|
|
209
287
|
export interface GameContextItemUse {
|
|
210
288
|
register(handlers: Record<string, ItemUseHandler<GameContext>>): void;
|
|
@@ -228,6 +306,13 @@ export interface GameContextRace {
|
|
|
228
306
|
/** Lazily creates (on first call, `config` required) or returns the existing reactive race for `id` — discrete mutations and eventful `update` calls bump `ctx.version()`, so HUDs stop hand-managing `store.set` (#286.2). */
|
|
229
307
|
state(id: string, config?: RaceStateConfig): RaceState;
|
|
230
308
|
}
|
|
309
|
+
/** Reachable audio seam on `ctx.game`: `play`, `music`, and `resume` route through the `audio.play`/`audio.music`/`audio.resume` events the shell's audio engine listens on, so game code triggers sound without importing the shell. */
|
|
310
|
+
export interface GameAudio {
|
|
311
|
+
play(sound: string, at?: readonly [number, number, number]): void;
|
|
312
|
+
/** Crossfade the procedural soundtrack to `theme` (null fades out); `transpose` shifts the incoming theme's key in semitones. */
|
|
313
|
+
music(theme: string | null, transpose?: number): void;
|
|
314
|
+
resume(): void;
|
|
315
|
+
}
|
|
231
316
|
export interface GameContext {
|
|
232
317
|
scene: {
|
|
233
318
|
object: SceneObjectContext;
|
|
@@ -240,36 +325,75 @@ export interface GameContext {
|
|
|
240
325
|
game: {
|
|
241
326
|
commands: GameContextCommands;
|
|
242
327
|
events: GameEvents;
|
|
328
|
+
audio: GameAudio;
|
|
329
|
+
/** Play a model's one-shot animation clip bound to `event` in its `animation.oneShots` (e.g. an attack swing) — emits `entity.animation` for the shell to pick up. */
|
|
330
|
+
playEntityAnimation(instanceId: string, event: string): void;
|
|
243
331
|
feed: GameContextFeed;
|
|
244
332
|
loot: GameContextLoot;
|
|
245
|
-
trade
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
333
|
+
/** Shop/vendor barter — present only when `features.trade` is set. */
|
|
334
|
+
trade?: TradeSystem;
|
|
335
|
+
/** Quest/mission journal — present only when `features.quest` is set. */
|
|
336
|
+
quest?: QuestJournal;
|
|
337
|
+
/** Talkable-NPC dialogue open/close bridge — present only when `features.dialogue` is set. */
|
|
338
|
+
dialogue?: GameDialogue;
|
|
339
|
+
/** Friends/party/presence/emotes/world-invites — present only when `features.social` is set. */
|
|
340
|
+
social?: Social;
|
|
341
|
+
/** Channels + messages — present only when `features.chat` is set (implies `social`). */
|
|
342
|
+
chat?: Chat;
|
|
343
|
+
/** Earned unlockable content — present only when `features.unlocks` is set. */
|
|
344
|
+
unlocks?: Unlocks;
|
|
250
345
|
economy: GameContextEconomy;
|
|
251
|
-
leaderboard
|
|
252
|
-
|
|
346
|
+
/** Competitive score tracking — present only when `features.leaderboard` is set. */
|
|
347
|
+
leaderboard?: Leaderboard;
|
|
348
|
+
/** Owned-entity roster — present only when `features.roster` is set. */
|
|
349
|
+
roster?: Roster;
|
|
253
350
|
/** Game-defined keyed reactive store slot (#163.1); mutations bump `ctx.version()`/notify `ctx.subscribe`. */
|
|
254
351
|
store: ObservableKeyedStore<unknown>;
|
|
255
|
-
cards
|
|
256
|
-
|
|
257
|
-
|
|
352
|
+
/** Card pile zones — present only when `features.cards` is set. */
|
|
353
|
+
cards?: GameContextCards;
|
|
354
|
+
/** Turn/phase loop — present only when `features.turn` is set. */
|
|
355
|
+
turn?: GameContextTurn;
|
|
356
|
+
/** Lap/checkpoint race state — present only when `features.race` is set. */
|
|
357
|
+
race?: GameContextRace;
|
|
358
|
+
/** Connected-player set for a shared world — present only when `features.players` is set. */
|
|
359
|
+
players?: ConnectedPlayers;
|
|
360
|
+
/** Whole-world save/load bound to a pluggable backend — present only when `defineGame({ save })` is set (offline/single-player). Drive save points and quest/area checkpoints with `checkpoint()`, restore on boot with `load()`. */
|
|
361
|
+
save?: RuntimeSave;
|
|
362
|
+
/**
|
|
363
|
+
* Register a save-only snapshot module after boot (system-owned persistence).
|
|
364
|
+
* Used by `composeGameLoop` / `installSystems` when a system declares `save`.
|
|
365
|
+
*/
|
|
366
|
+
registerSave?(module: SnapshotModule): void;
|
|
367
|
+
/**
|
|
368
|
+
* Register a host→client replication module after boot (system-owned replication).
|
|
369
|
+
* Used by `composeGameLoop` / `installSystems` when a system declares `replicate`.
|
|
370
|
+
*/
|
|
371
|
+
registerReplicate?(module: SnapshotModule): void;
|
|
258
372
|
};
|
|
259
373
|
player: {
|
|
374
|
+
/** The acting player's id — the command actor inside `runAs`, the local player everywhere else. */
|
|
260
375
|
userId: string;
|
|
261
376
|
isNew: boolean;
|
|
377
|
+
/** The acting player's inventory set — the command actor's bags inside `runAs`, the local player's everywhere else. */
|
|
262
378
|
inventory: InventorySet<string>;
|
|
379
|
+
/** A specific player's inventory set — how a host reads or grants into any connected player's bags. */
|
|
380
|
+
inventoryFor(userId: string): InventorySet<string>;
|
|
381
|
+
/** The acting player's stat modifiers — the command actor's inside `runAs`, the local player's everywhere else. */
|
|
263
382
|
stats: Stats<string>;
|
|
383
|
+
/** A specific player's stat modifiers — how a host reads or buffs any connected player's stats. */
|
|
384
|
+
statsFor(userId: string): Stats<string>;
|
|
264
385
|
loadout: Loadouts;
|
|
265
386
|
applyLoadout(userId: string, loadoutId: string): {
|
|
266
387
|
reason: string;
|
|
267
388
|
} | null;
|
|
268
389
|
movement: PoseState;
|
|
269
390
|
possession: Possession;
|
|
270
|
-
cosmetics
|
|
271
|
-
|
|
391
|
+
/** Cosmetic skins/customization — present only when `features.cosmetics` is set. */
|
|
392
|
+
cosmetics?: Cosmetics;
|
|
393
|
+
/** Motion seam into the movement integrator (#162.4); routes to the command actor's queue (or the local player outside a command), so a command's impulse lands on whoever ran it. See `MotionIntents`. */
|
|
272
394
|
motion: MotionIntents;
|
|
395
|
+
/** A specific player's motion queue — how the host-side per-player movement integrator drains each connected player's impulses. */
|
|
396
|
+
motionFor(userId: string): MotionIntents;
|
|
273
397
|
};
|
|
274
398
|
item: {
|
|
275
399
|
use: GameContextItemUse;
|
|
@@ -282,5 +406,25 @@ export interface GameContext {
|
|
|
282
406
|
input: InputSnapshot;
|
|
283
407
|
subscribe(listener: () => void): () => void;
|
|
284
408
|
version(): number;
|
|
409
|
+
/**
|
|
410
|
+
* Bump {@link version}/notify {@link subscribe} directly — the escape hatch for a command that only
|
|
411
|
+
* mutates game-owned state outside the entity/object/economy/store layers (an external session map,
|
|
412
|
+
* a plain closure variable) and needs to force a reactive HUD refresh without faking a `ctx.game.store.set`.
|
|
413
|
+
*/
|
|
414
|
+
touch(): void;
|
|
415
|
+
/**
|
|
416
|
+
* Gather every opted-in live subsystem into one {@link WorldSnapshot} — entities, entity stats, the
|
|
417
|
+
* keyed store, the action feed, plus leaderboard/chat when those features are on. The full-world
|
|
418
|
+
* baseline a host sends a joining client; {@link hydrate} is its inverse. Pass a `viewer` and the host
|
|
419
|
+
* projects the snapshot to only what that viewer may see (private state, area of interest) when a
|
|
420
|
+
* {@link GameContextOptions.replication} policy is set; without one the viewer argument is a no-op.
|
|
421
|
+
*/
|
|
422
|
+
snapshot(viewer?: SnapshotViewer): WorldSnapshot;
|
|
423
|
+
/** Apply a {@link WorldSnapshot} from an authoritative host, hydrating each subsystem key present in it. */
|
|
424
|
+
hydrate(snapshot: WorldSnapshot): void;
|
|
425
|
+
/** Aggregate world-dirty version summed across replicated modules; the host replicator skips an unchanged commit. @internal */
|
|
426
|
+
replicationVersion(): number;
|
|
427
|
+
/** True when a {@link GameContextOptions.replication} policy makes {@link snapshot} viewer-dependent (private/AOI projection is active). @internal */
|
|
428
|
+
replicatesPerViewer(): boolean;
|
|
285
429
|
}
|
|
286
430
|
export declare function createGameContext<TAssetRef extends ModelAssetRef, TMultiplayer>(options: GameContextOptions<TAssetRef, TMultiplayer>): GameContext;
|