@v12-engine/engine 0.1.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/abilities/amounts.d.ts +28 -0
- package/dist/abilities/amounts.js +74 -0
- package/dist/abilities/amounts.js.map +1 -0
- package/dist/abilities/buffs.d.ts +106 -6
- package/dist/abilities/buffs.js +443 -0
- package/dist/abilities/buffs.js.map +1 -0
- package/dist/abilities/castTold.d.ts +2 -0
- package/dist/abilities/castTold.js +66 -0
- package/dist/abilities/castTold.js.map +1 -0
- package/dist/abilities/chance.d.ts +38 -0
- package/dist/abilities/chance.js +77 -0
- package/dist/abilities/chance.js.map +1 -0
- package/dist/abilities/charges.d.ts +18 -0
- package/dist/abilities/charges.js +101 -0
- package/dist/abilities/charges.js.map +1 -0
- package/dist/abilities/control.d.ts +28 -0
- package/dist/abilities/control.js +113 -0
- package/dist/abilities/control.js.map +1 -0
- package/dist/abilities/dispel.js +51 -0
- package/dist/abilities/dispel.js.map +1 -0
- package/dist/abilities/effectFields.d.ts +1 -1
- package/dist/abilities/effectFields.js +676 -0
- package/dist/abilities/effectFields.js.map +1 -0
- package/dist/abilities/effectIndex.d.ts +27 -0
- package/dist/abilities/effectIndex.js +64 -0
- package/dist/abilities/effectIndex.js.map +1 -0
- package/dist/abilities/effects/buff.d.ts +9 -3
- package/dist/abilities/effects/buff.js +84 -0
- package/dist/abilities/effects/buff.js.map +1 -0
- package/dist/abilities/effects/conditions.d.ts +2 -0
- package/dist/abilities/effects/conditions.js +41 -0
- package/dist/abilities/effects/conditions.js.map +1 -0
- package/dist/abilities/effects/core.js +54 -0
- package/dist/abilities/effects/core.js.map +1 -0
- package/dist/abilities/effects/damage.d.ts +1 -1
- package/dist/abilities/effects/damage.js +43 -0
- package/dist/abilities/effects/damage.js.map +1 -0
- package/dist/abilities/effects/heal.d.ts +2 -2
- package/dist/abilities/effects/heal.js +51 -0
- package/dist/abilities/effects/heal.js.map +1 -0
- package/dist/abilities/effects/missile.d.ts +13 -1
- package/dist/abilities/effects/missile.js +104 -0
- package/dist/abilities/effects/missile.js.map +1 -0
- package/dist/abilities/effects/morph.d.ts +5 -0
- package/dist/abilities/effects/morph.js +43 -0
- package/dist/abilities/effects/morph.js.map +1 -0
- package/dist/abilities/effects/moves.d.ts +16 -4
- package/dist/abilities/effects/moves.js +212 -0
- package/dist/abilities/effects/moves.js.map +1 -0
- package/dist/abilities/effects/passives.d.ts +19 -9
- package/dist/abilities/effects/passives.js +131 -0
- package/dist/abilities/effects/passives.js.map +1 -0
- package/dist/abilities/effects/proxy.d.ts +5 -0
- package/dist/abilities/effects/proxy.js +60 -0
- package/dist/abilities/effects/proxy.js.map +1 -0
- package/dist/abilities/effects/sight.d.ts +2 -2
- package/dist/abilities/effects/sight.js +39 -0
- package/dist/abilities/effects/sight.js.map +1 -0
- package/dist/abilities/effects/spawn.d.ts +5 -2
- package/dist/abilities/effects/spawn.js +40 -0
- package/dist/abilities/effects/spawn.js.map +1 -0
- package/dist/abilities/effects/timed.d.ts +2 -2
- package/dist/abilities/effects/timed.js +96 -0
- package/dist/abilities/effects/timed.js.map +1 -0
- package/dist/abilities/effects/trade.d.ts +1 -1
- package/dist/abilities/effects/trade.js +25 -0
- package/dist/abilities/effects/trade.js.map +1 -0
- package/dist/abilities/effects.d.ts +97 -23
- package/dist/abilities/effects.js +860 -0
- package/dist/abilities/effects.js.map +1 -0
- package/dist/abilities/land.d.ts +38 -4
- package/dist/abilities/land.js +189 -0
- package/dist/abilities/land.js.map +1 -0
- package/dist/abilities/recast.d.ts +45 -0
- package/dist/abilities/recast.js +118 -0
- package/dist/abilities/recast.js.map +1 -0
- package/dist/abilities/scaled.js +40 -0
- package/dist/abilities/scaled.js.map +1 -0
- package/dist/abilities/screen.d.ts +6 -0
- package/dist/abilities/screen.js +83 -0
- package/dist/abilities/screen.js.map +1 -0
- package/dist/abilities/shapes.d.ts +66 -0
- package/dist/abilities/shapes.js +122 -0
- package/dist/abilities/shapes.js.map +1 -0
- package/dist/abilities/text.d.ts +14 -2
- package/dist/abilities/text.js +204 -0
- package/dist/abilities/text.js.map +1 -0
- package/dist/abilities/triggers.d.ts +98 -0
- package/dist/abilities/triggers.js +351 -0
- package/dist/abilities/triggers.js.map +1 -0
- package/dist/abilityChanges.d.ts +131 -0
- package/dist/abilityChanges.js +345 -0
- package/dist/abilityChanges.js.map +1 -0
- package/dist/ai/area.d.ts +4 -1
- package/dist/ai/brain.d.ts +4 -1
- package/dist/ai/brain.js +844 -0
- package/dist/ai/brain.js.map +1 -0
- package/dist/ai/budget.js +74 -0
- package/dist/ai/budget.js.map +1 -0
- package/dist/ai/checks.d.ts +9 -1
- package/dist/ai/checks.js +242 -0
- package/dist/ai/checks.js.map +1 -0
- package/dist/ai/computer.d.ts +11 -4
- package/dist/ai/computer.js +251 -0
- package/dist/ai/computer.js.map +1 -0
- package/dist/ai/defence.d.ts +4 -0
- package/dist/ai/defence.js +430 -0
- package/dist/ai/defence.js.map +1 -0
- package/dist/ai/define.d.ts +3 -2
- package/dist/ai/define.js +31 -0
- package/dist/ai/define.js.map +1 -0
- package/dist/ai/economy.d.ts +10 -7
- package/dist/ai/economy.js +780 -0
- package/dist/ai/economy.js.map +1 -0
- package/dist/ai/geometry.js +38 -0
- package/dist/ai/geometry.js.map +1 -0
- package/dist/ai/goals.d.ts +1 -0
- package/dist/ai/goals.js +560 -0
- package/dist/ai/goals.js.map +1 -0
- package/dist/ai/knowledge.d.ts +72 -7
- package/dist/ai/knowledge.js +804 -0
- package/dist/ai/knowledge.js.map +1 -0
- package/dist/ai/lanes.d.ts +10 -2
- package/dist/ai/lanes.js +715 -0
- package/dist/ai/lanes.js.map +1 -0
- package/dist/ai/melee/build.js +264 -0
- package/dist/ai/melee/build.js.map +1 -0
- package/dist/ai/melee/goals.d.ts +7 -0
- package/dist/ai/melee/goals.js +720 -0
- package/dist/ai/melee/goals.js.map +1 -0
- package/dist/ai/melee/heroes.js +68 -0
- package/dist/ai/melee/heroes.js.map +1 -0
- package/dist/ai/melee/index.d.ts +1 -1
- package/dist/ai/melee/index.js +51 -0
- package/dist/ai/melee/index.js.map +1 -0
- package/dist/ai/melee/production.js +29 -0
- package/dist/ai/melee/production.js.map +1 -0
- package/dist/ai/melee/surrender.js +64 -0
- package/dist/ai/melee/surrender.js.map +1 -0
- package/dist/ai/micro.d.ts +9 -0
- package/dist/ai/micro.js +1316 -0
- package/dist/ai/micro.js.map +1 -0
- package/dist/ai/mission.d.ts +9 -2
- package/dist/ai/mission.js +538 -0
- package/dist/ai/mission.js.map +1 -0
- package/dist/ai/missionRules.d.ts +1 -1
- package/dist/ai/missionRules.js +26 -0
- package/dist/ai/missionRules.js.map +1 -0
- package/dist/ai/module.d.ts +6 -2
- package/dist/ai/module.js +37 -0
- package/dist/ai/module.js.map +1 -0
- package/dist/ai/options.d.ts +3 -3
- package/dist/ai/plans/build.d.ts +20 -1
- package/dist/ai/plans/build.js +608 -0
- package/dist/ai/plans/build.js.map +1 -0
- package/dist/ai/plans/placement.d.ts +4 -1
- package/dist/ai/plans/placement.js +295 -0
- package/dist/ai/plans/placement.js.map +1 -0
- package/dist/ai/plans/plans.d.ts +9 -0
- package/dist/ai/plans/plans.js +110 -0
- package/dist/ai/plans/plans.js.map +1 -0
- package/dist/ai/plans/production.d.ts +14 -2
- package/dist/ai/plans/production.js +434 -0
- package/dist/ai/plans/production.js.map +1 -0
- package/dist/ai/plans/purse.d.ts +6 -3
- package/dist/ai/plans/purse.js +139 -0
- package/dist/ai/plans/purse.js.map +1 -0
- package/dist/ai/plans/tech.d.ts +6 -0
- package/dist/ai/plans/tech.js +122 -0
- package/dist/ai/plans/tech.js.map +1 -0
- package/dist/ai/profiles.d.ts +4 -4
- package/dist/{profiles-B3NS9jwk.js → ai/profiles.js} +3 -98
- package/dist/ai/profiles.js.map +1 -0
- package/dist/ai/reach.js +54 -0
- package/dist/ai/reach.js.map +1 -0
- package/dist/ai/report.d.ts +8 -0
- package/dist/ai/report.js +87 -0
- package/dist/ai/report.js.map +1 -0
- package/dist/ai/roles.d.ts +4 -0
- package/dist/ai/roles.js +207 -0
- package/dist/ai/roles.js.map +1 -0
- package/dist/ai/rules.d.ts +8 -2
- package/dist/ai/rules.js +416 -0
- package/dist/ai/rules.js.map +1 -0
- package/dist/ai/scouting.d.ts +6 -0
- package/dist/ai/scouting.js +324 -0
- package/dist/ai/scouting.js.map +1 -0
- package/dist/ai/settings.js +99 -0
- package/dist/ai/settings.js.map +1 -0
- package/dist/ai/squads.d.ts +21 -2
- package/dist/ai/squads.js +916 -0
- package/dist/ai/squads.js.map +1 -0
- package/dist/ai/strength.js +320 -0
- package/dist/ai/strength.js.map +1 -0
- package/dist/ai/task.d.ts +3 -1
- package/dist/ai/task.js +17 -0
- package/dist/ai/task.js.map +1 -0
- package/dist/ai/tasks/attack.js +24 -0
- package/dist/ai/tasks/attack.js.map +1 -0
- package/dist/ai/tasks/capture.d.ts +3 -3
- package/dist/ai/tasks/capture.js +37 -0
- package/dist/ai/tasks/capture.js.map +1 -0
- package/dist/ai/tasks/creep.js +29 -0
- package/dist/ai/tasks/creep.js.map +1 -0
- package/dist/ai/tasks/defend.js +61 -0
- package/dist/ai/tasks/defend.js.map +1 -0
- package/dist/ai/tasks/drop.js +81 -0
- package/dist/ai/tasks/drop.js.map +1 -0
- package/dist/ai/tasks/escort.js +59 -0
- package/dist/ai/tasks/escort.js.map +1 -0
- package/dist/ai/tasks/gather.js +48 -0
- package/dist/ai/tasks/gather.js.map +1 -0
- package/dist/ai/tasks/harass.js +39 -0
- package/dist/ai/tasks/harass.js.map +1 -0
- package/dist/ai/tasks/hold.js +32 -0
- package/dist/ai/tasks/hold.js.map +1 -0
- package/dist/ai/tasks/index.js +34 -0
- package/dist/ai/tasks/index.js.map +1 -0
- package/dist/ai/tasks/move.js +26 -0
- package/dist/ai/tasks/move.js.map +1 -0
- package/dist/ai/tasks/patrol.js +59 -0
- package/dist/ai/tasks/patrol.js.map +1 -0
- package/dist/ai/tasks/retreat.js +28 -0
- package/dist/ai/tasks/retreat.js.map +1 -0
- package/dist/ai/tasks/scout.js +73 -0
- package/dist/ai/tasks/scout.js.map +1 -0
- package/dist/ai/tasks/shared.d.ts +1 -1
- package/dist/ai/tasks/shared.js +137 -0
- package/dist/ai/tasks/shared.js.map +1 -0
- package/dist/ai/team.d.ts +18 -1
- package/dist/ai/team.js +492 -0
- package/dist/ai/team.js.map +1 -0
- package/dist/ai/threat.d.ts +6 -0
- package/dist/ai/threat.js +206 -0
- package/dist/ai/threat.js.map +1 -0
- package/dist/ai/view.d.ts +21 -7
- package/dist/ai/view.js +677 -0
- package/dist/ai/view.js.map +1 -0
- package/dist/ai/waves.d.ts +6 -0
- package/dist/ai/waves.js +410 -0
- package/dist/ai/waves.js.map +1 -0
- package/dist/ai.js +54 -6239
- package/dist/aiTesting.d.ts +6 -3
- package/dist/aiTesting.js +229 -0
- package/dist/aiTesting.js.map +1 -0
- package/dist/areas.d.ts +4 -1
- package/dist/areas.js +295 -0
- package/dist/areas.js.map +1 -0
- package/dist/attacks.d.ts +3 -3
- package/dist/attacks.js +127 -0
- package/dist/attacks.js.map +1 -0
- package/dist/burning.d.ts +267 -0
- package/dist/burning.js +795 -0
- package/dist/burning.js.map +1 -0
- package/dist/bytes.js +21 -0
- package/dist/bytes.js.map +1 -0
- package/dist/callings.d.ts +71 -0
- package/dist/callings.js +157 -0
- package/dist/callings.js.map +1 -0
- package/dist/cameraOrders.d.ts +78 -0
- package/dist/cameraOrders.js +114 -0
- package/dist/cameraOrders.js.map +1 -0
- package/dist/camps.d.ts +70 -4
- package/dist/camps.js +501 -0
- package/dist/camps.js.map +1 -0
- package/dist/capture.d.ts +15 -3
- package/dist/capture.js +304 -0
- package/dist/capture.js.map +1 -0
- package/dist/cellLayers.d.ts +78 -13
- package/dist/cellLayers.js +275 -0
- package/dist/cellLayers.js.map +1 -0
- package/dist/cellPatches.d.ts +24 -0
- package/dist/cellPatches.js +73 -0
- package/dist/cellPatches.js.map +1 -0
- package/dist/cinematics.d.ts +10 -5
- package/dist/cinematics.js +161 -0
- package/dist/cinematics.js.map +1 -0
- package/dist/clock.d.ts +2 -2
- package/dist/clock.js +78 -0
- package/dist/clock.js.map +1 -0
- package/dist/commands.d.ts +36 -4
- package/dist/commands.js +636 -0
- package/dist/commands.js.map +1 -0
- package/dist/components.d.ts +31 -10
- package/dist/components.js +74 -0
- package/dist/components.js.map +1 -0
- package/dist/computers.d.ts +4 -4
- package/dist/computers.js +194 -0
- package/dist/computers.js.map +1 -0
- package/dist/concealment.d.ts +25 -2
- package/dist/concealment.js +409 -0
- package/dist/concealment.js.map +1 -0
- package/dist/coreComponents.js +130 -0
- package/dist/coreComponents.js.map +1 -0
- package/dist/createGame.d.ts +306 -0
- package/dist/createGame.js +405 -0
- package/dist/createGame.js.map +1 -0
- package/dist/dashing.d.ts +18 -2
- package/dist/dashing.js +41 -0
- package/dist/dashing.js.map +1 -0
- package/dist/debug.d.ts +8 -0
- package/dist/debug.js +5 -3
- package/dist/debug2.js +76 -0
- package/dist/debug2.js.map +1 -0
- package/dist/debugCommands.d.ts +6 -6
- package/dist/debugCommands.js +537 -0
- package/dist/debugCommands.js.map +1 -0
- package/dist/debugging.d.ts +1 -0
- package/dist/defaultSets.d.ts +183 -0
- package/dist/defaultSets.js +216 -0
- package/dist/defaultSets.js.map +1 -0
- package/dist/definitions.d.ts +6 -0
- package/dist/definitions.js +78 -0
- package/dist/definitions.js.map +1 -0
- package/dist/defs.d.ts +1895 -165
- package/dist/defs.js +380 -0
- package/dist/defs.js.map +1 -0
- package/dist/denying.d.ts +4 -4
- package/dist/denying.js +106 -0
- package/dist/denying.js.map +1 -0
- package/dist/destructibles.d.ts +2 -2
- package/dist/destructibles.js +36 -0
- package/dist/destructibles.js.map +1 -0
- package/dist/determinism.d.ts +4 -4
- package/dist/determinism.js +247 -0
- package/dist/determinism.js.map +1 -0
- package/dist/dialog.d.ts +17 -2
- package/dist/dialog.js +108 -0
- package/dist/dialog.js.map +1 -0
- package/dist/effectRefs.js +28 -0
- package/dist/effectRefs.js.map +1 -0
- package/dist/effects.d.ts +27 -11
- package/dist/effects.js +110 -0
- package/dist/effects.js.map +1 -0
- package/dist/endings.d.ts +1 -1
- package/dist/endings.js +78 -0
- package/dist/endings.js.map +1 -0
- package/dist/engagement.d.ts +40 -6
- package/dist/engagement.js +530 -0
- package/dist/engagement.js.map +1 -0
- package/dist/engineEvents.d.ts +72 -9
- package/dist/engineEvents.js +520 -0
- package/dist/engineEvents.js.map +1 -0
- package/dist/entity.d.ts +275 -26
- package/dist/entity.js +441 -0
- package/dist/entity.js.map +1 -0
- package/dist/entityIndex.d.ts +10 -3
- package/dist/entityIndex.js +149 -0
- package/dist/entityIndex.js.map +1 -0
- package/dist/errors.d.ts +6 -2
- package/dist/errors.js +59 -0
- package/dist/errors.js.map +1 -0
- package/dist/events.d.ts +11 -5
- package/dist/events.js +158 -0
- package/dist/events.js.map +1 -0
- package/dist/exactMath.js +273 -0
- package/dist/exactMath.js.map +1 -0
- package/dist/features.d.ts +1 -1
- package/dist/features.js +127 -0
- package/dist/features.js.map +1 -0
- package/dist/fields.d.ts +25 -5
- package/dist/fields.js +140 -0
- package/dist/fields.js.map +1 -0
- package/dist/fixture.d.ts +3 -3
- package/dist/fixture.js +512 -0
- package/dist/fixture.js.map +1 -0
- package/dist/fog.d.ts +26 -3
- package/dist/fog.js +333 -0
- package/dist/fog.js.map +1 -0
- package/dist/foliage.d.ts +476 -0
- package/dist/foliage.js +1478 -0
- package/dist/foliage.js.map +1 -0
- package/dist/foliageDebug.d.ts +57 -0
- package/dist/foliageDebug.js +172 -0
- package/dist/foliageDebug.js.map +1 -0
- package/dist/foliageRegrowth.d.ts +20 -0
- package/dist/foliageRegrowth.js +332 -0
- package/dist/foliageRegrowth.js.map +1 -0
- package/dist/formState.d.ts +67 -0
- package/dist/formState.js +65 -0
- package/dist/formState.js.map +1 -0
- package/dist/formation.d.ts +46 -8
- package/dist/formation.js +297 -0
- package/dist/formation.js.map +1 -0
- package/dist/forms.d.ts +58 -0
- package/dist/forms.js +146 -0
- package/dist/forms.js.map +1 -0
- package/dist/friendlyFire.d.ts +2 -2
- package/dist/friendlyFire.js +37 -0
- package/dist/friendlyFire.js.map +1 -0
- package/dist/game.d.ts +141 -48
- package/dist/game.js +834 -0
- package/dist/game.js.map +1 -0
- package/dist/gameData.d.ts +96 -22
- package/dist/gameData.js +1690 -0
- package/dist/gameData.js.map +1 -0
- package/dist/gameFiles.d.ts +3 -3
- package/dist/gameFiles.js +14 -0
- package/dist/gameFiles.js.map +1 -0
- package/dist/gates.js +92 -0
- package/dist/gates.js.map +1 -0
- package/dist/generate.d.ts +28 -1
- package/dist/generate.js +1062 -0
- package/dist/generate.js.map +1 -0
- package/dist/generateWorker.d.ts +7 -3
- package/dist/generateWorker.js +86 -0
- package/dist/generateWorker.js.map +1 -0
- package/dist/grid.d.ts +9 -0
- package/dist/grid.js +102 -0
- package/dist/grid.js.map +1 -0
- package/dist/ground.d.ts +17 -1
- package/dist/ground.js +375 -0
- package/dist/ground.js.map +1 -0
- package/dist/groundObjects.d.ts +70 -0
- package/dist/groundObjects.js +371 -0
- package/dist/groundObjects.js.map +1 -0
- package/dist/groundSpeed.d.ts +20 -3
- package/dist/groundSpeed.js +117 -0
- package/dist/groundSpeed.js.map +1 -0
- package/dist/hero.d.ts +126 -10
- package/dist/hero.js +432 -0
- package/dist/hero.js.map +1 -0
- package/dist/holds.d.ts +94 -0
- package/dist/holds.js +305 -0
- package/dist/holds.js.map +1 -0
- package/dist/home.d.ts +1 -1
- package/dist/home.js +30 -0
- package/dist/home.js.map +1 -0
- package/dist/hooks.d.ts +339 -57
- package/dist/hooks.js +105 -0
- package/dist/hooks.js.map +1 -0
- package/dist/hotReload.d.ts +6 -5
- package/dist/hotReload.js +145 -0
- package/dist/hotReload.js.map +1 -0
- package/dist/ids.d.ts +3 -3
- package/dist/ids.js +30 -0
- package/dist/ids.js.map +1 -0
- package/dist/idsFile.d.ts +36 -0
- package/dist/idsFile.js +134 -0
- package/dist/idsFile.js.map +1 -0
- package/dist/index.d.ts +105 -68
- package/dist/index.js +194 -4701
- package/dist/inspect.d.ts +29 -2
- package/dist/{inspect-D9dWHmZ0.js → inspect.js} +21 -12
- package/dist/inspect.js.map +1 -0
- package/dist/inventory.d.ts +14 -1
- package/dist/inventory.js +84 -0
- package/dist/inventory.js.map +1 -0
- package/dist/items.d.ts +136 -8
- package/dist/items.js +585 -0
- package/dist/items.js.map +1 -0
- package/dist/lanes.d.ts +12 -3
- package/dist/lanes.js +496 -0
- package/dist/lanes.js.map +1 -0
- package/dist/life.d.ts +6 -2
- package/dist/life.js +287 -0
- package/dist/life.js.map +1 -0
- package/dist/log.d.ts +26 -3
- package/dist/log.js +192 -0
- package/dist/log.js.map +1 -0
- package/dist/manaBurn.d.ts +2 -2
- package/dist/manaBurn.js +75 -0
- package/dist/manaBurn.js.map +1 -0
- package/dist/map/file.d.ts +56 -3
- package/dist/map/file.js +264 -0
- package/dist/map/file.js.map +1 -0
- package/dist/map/images.js +61 -0
- package/dist/map/images.js.map +1 -0
- package/dist/map/look.d.ts +1 -1
- package/dist/map/look.js +30 -0
- package/dist/map/look.js.map +1 -0
- package/dist/map/pathProfile.js +183 -0
- package/dist/map/pathProfile.js.map +1 -0
- package/dist/map/resize.d.ts +4 -0
- package/dist/map/resize.js +136 -0
- package/dist/map/resize.js.map +1 -0
- package/dist/map/schema.js +257 -0
- package/dist/map/schema.js.map +1 -0
- package/dist/map/terrain.js +214 -0
- package/dist/map/terrain.js.map +1 -0
- package/dist/map/types.d.ts +92 -13
- package/dist/map/types.js +251 -0
- package/dist/map/types.js.map +1 -0
- package/dist/mapCheck/cells.js +94 -0
- package/dist/mapCheck/cells.js.map +1 -0
- package/dist/mapCheck/rules/foliage.d.ts +9 -0
- package/dist/mapCheck/rules/foliage.js +83 -0
- package/dist/mapCheck/rules/foliage.js.map +1 -0
- package/dist/mapCheck/rules/names.js +39 -0
- package/dist/mapCheck/rules/names.js.map +1 -0
- package/dist/mapCheck/rules/objects.d.ts +1 -1
- package/dist/mapCheck/rules/objects.js +56 -0
- package/dist/mapCheck/rules/objects.js.map +1 -0
- package/dist/mapCheck/rules/paths.js +32 -0
- package/dist/mapCheck/rules/paths.js.map +1 -0
- package/dist/mapCheck/rules/players.js +20 -0
- package/dist/mapCheck/rules/players.js.map +1 -0
- package/dist/mapCheck/rules/races.js +56 -0
- package/dist/mapCheck/rules/races.js.map +1 -0
- package/dist/mapCheck/rules/random.js +47 -0
- package/dist/mapCheck/rules/random.js.map +1 -0
- package/dist/mapCheck/rules/regions.js +30 -0
- package/dist/mapCheck/rules/regions.js.map +1 -0
- package/dist/mapCheck/rules/targets.js +31 -0
- package/dist/mapCheck/rules/targets.js.map +1 -0
- package/dist/mapCheck/rules/walking.js +45 -0
- package/dist/mapCheck/rules/walking.js.map +1 -0
- package/dist/mapCheck.d.ts +2 -2
- package/dist/mapCheck.js +63 -0
- package/dist/mapCheck.js.map +1 -0
- package/dist/mapFields.d.ts +25 -2
- package/dist/mapFields.js +134 -0
- package/dist/mapFields.js.map +1 -0
- package/dist/mapFile.js +176 -0
- package/dist/mapFile.js.map +1 -0
- package/dist/mapMeasure.d.ts +8 -0
- package/dist/mapMeasure.js +283 -0
- package/dist/mapMeasure.js.map +1 -0
- package/dist/mapMerge.d.ts +1 -0
- package/dist/mapMerge.js +172 -0
- package/dist/mapMerge.js.map +1 -0
- package/dist/mapObjectives.js +138 -0
- package/dist/mapObjectives.js.map +1 -0
- package/dist/mapObjects.js +80 -0
- package/dist/mapObjects.js.map +1 -0
- package/dist/math.d.ts +37 -7
- package/dist/math.js +155 -0
- package/dist/math.js.map +1 -0
- package/dist/messages.d.ts +71 -4
- package/dist/messages.js +29 -0
- package/dist/messages.js.map +1 -0
- package/dist/missionRules.d.ts +10 -2
- package/dist/{missionRules-C-bGxm0Q.js → missionRules.js} +30 -150
- package/dist/missionRules.js.map +1 -0
- package/dist/mods.d.ts +39 -20
- package/dist/mods.js +271 -0
- package/dist/mods.js.map +1 -0
- package/dist/moves.d.ts +87 -0
- package/dist/moves.js +539 -0
- package/dist/moves.js.map +1 -0
- package/dist/names.d.ts +7 -0
- package/dist/names.js +122 -0
- package/dist/names.js.map +1 -0
- package/dist/navigation/agentParams.js +14 -0
- package/dist/navigation/agentParams.js.map +1 -0
- package/dist/navigation/air.d.ts +7 -3
- package/dist/navigation/air.js +401 -0
- package/dist/navigation/air.js.map +1 -0
- package/dist/navigation/builds.d.ts +34 -2
- package/dist/navigation/builds.js +287 -0
- package/dist/navigation/builds.js.map +1 -0
- package/dist/navigation/groundAreas.d.ts +59 -1
- package/dist/navigation/groundAreas.js +407 -0
- package/dist/navigation/groundAreas.js.map +1 -0
- package/dist/navigation/navigation.d.ts +98 -9
- package/dist/navigation/recast.d.ts +194 -18
- package/dist/navigation/recast.js +1379 -0
- package/dist/navigation/recast.js.map +1 -0
- package/dist/navigation/sidePaths.d.ts +8 -3
- package/dist/navigation/sidePaths.js +241 -0
- package/dist/navigation/sidePaths.js.map +1 -0
- package/dist/navigation/sized.js +243 -0
- package/dist/navigation/sized.js.map +1 -0
- package/dist/nearest.js +32 -0
- package/dist/nearest.js.map +1 -0
- package/dist/noise.js +59 -0
- package/dist/noise.js.map +1 -0
- package/dist/objectives.d.ts +12 -3
- package/dist/objectives.js +144 -0
- package/dist/objectives.js.map +1 -0
- package/dist/orders/basic.d.ts +5 -5
- package/dist/orders/basic.js +417 -0
- package/dist/orders/basic.js.map +1 -0
- package/dist/orders/build.js +278 -0
- package/dist/orders/build.js.map +1 -0
- package/dist/orders/cast.d.ts +13 -3
- package/dist/orders/cast.js +558 -0
- package/dist/orders/cast.js.map +1 -0
- package/dist/orders/facts.js +16 -0
- package/dist/orders/facts.js.map +1 -0
- package/dist/orders/harvest.d.ts +21 -5
- package/dist/orders/harvest.js +540 -0
- package/dist/orders/harvest.js.map +1 -0
- package/dist/orders/idle.d.ts +3 -1
- package/dist/orders/idle.js +234 -0
- package/dist/orders/idle.js.map +1 -0
- package/dist/orders/items.js +92 -0
- package/dist/orders/items.js.map +1 -0
- package/dist/orders/queue.js +108 -0
- package/dist/orders/queue.js.map +1 -0
- package/dist/orders/waiting.d.ts +39 -0
- package/dist/orders/waiting.js +149 -0
- package/dist/orders/waiting.js.map +1 -0
- package/dist/pack.schema.js +13 -0
- package/dist/pack.schema.js.map +1 -0
- package/dist/pack.schema.json +7622 -841
- package/dist/packs/director/index.d.ts +13 -5
- package/dist/packs/director/index.js +204 -0
- package/dist/packs/director/index.js.map +1 -0
- package/dist/packs/heroes/campaign.d.ts +3 -2
- package/dist/packs/heroes/campaign.js +241 -0
- package/dist/packs/heroes/campaign.js.map +1 -0
- package/dist/packs/heroes/carry.d.ts +6 -0
- package/dist/packs/heroes/carry.js +112 -0
- package/dist/packs/heroes/carry.js.map +1 -0
- package/dist/packs/heroes/commands.js +115 -0
- package/dist/packs/heroes/commands.js.map +1 -0
- package/dist/packs/heroes/fallen.d.ts +43 -0
- package/dist/packs/heroes/fallen.js +61 -0
- package/dist/packs/heroes/fallen.js.map +1 -0
- package/dist/packs/heroes/hire.js +60 -0
- package/dist/packs/heroes/hire.js.map +1 -0
- package/dist/packs/heroes/index.d.ts +7 -6
- package/dist/packs/heroes/index.js +130 -0
- package/dist/packs/heroes/index.js.map +1 -0
- package/dist/packs/heroes/loop.d.ts +95 -0
- package/dist/packs/heroes/loop.js +250 -0
- package/dist/packs/heroes/loop.js.map +1 -0
- package/dist/packs/heroes/making.d.ts +6 -3
- package/dist/packs/heroes/making.js +55 -0
- package/dist/packs/heroes/making.js.map +1 -0
- package/dist/packs/heroes/respawn.d.ts +3 -3
- package/dist/packs/heroes/respawn.js +87 -0
- package/dist/packs/heroes/respawn.js.map +1 -0
- package/dist/packs/heroes/sets.d.ts +32 -0
- package/dist/packs/heroes/sets.js +51 -0
- package/dist/packs/heroes/sets.js.map +1 -0
- package/dist/packs/heroes/spells.d.ts +16 -0
- package/dist/packs/heroes/spells.js +269 -0
- package/dist/packs/heroes/spells.js.map +1 -0
- package/dist/packs/items/defaults.d.ts +43 -0
- package/dist/packs/items/defaults.js +1504 -0
- package/dist/packs/items/defaults.js.map +1 -0
- package/dist/packs/items/index.d.ts +27 -0
- package/dist/packs/items/index.js +214 -0
- package/dist/packs/items/index.js.map +1 -0
- package/dist/packs/moba/index.d.ts +3 -3
- package/dist/packs/moba/index.js +174 -0
- package/dist/packs/moba/index.js.map +1 -0
- package/dist/packs/pack.d.ts +15 -15
- package/dist/packs/pack.js +14 -0
- package/dist/packs/pack.js.map +1 -0
- package/dist/packs.d.ts +15 -7
- package/dist/packs.js +222 -0
- package/dist/packs.js.map +1 -0
- package/dist/paths.d.ts +2 -0
- package/dist/paths.js +109 -0
- package/dist/paths.js.map +1 -0
- package/dist/plain.js +57 -0
- package/dist/plain.js.map +1 -0
- package/dist/player.d.ts +33 -10
- package/dist/player.js +159 -0
- package/dist/player.js.map +1 -0
- package/dist/portals.d.ts +1 -1
- package/dist/portals.js +194 -0
- package/dist/portals.js.map +1 -0
- package/dist/prefabs.d.ts +25 -2
- package/dist/prefabs.js +239 -0
- package/dist/prefabs.js.map +1 -0
- package/dist/presetBuildings.js +58 -0
- package/dist/presetBuildings.js.map +1 -0
- package/dist/presetFoliage.d.ts +27 -0
- package/dist/presetFoliage.js +98 -0
- package/dist/presetFoliage.js.map +1 -0
- package/dist/presetGround.js +65 -0
- package/dist/presetGround.js.map +1 -0
- package/dist/proxies.d.ts +12 -0
- package/dist/proxies.js +79 -0
- package/dist/proxies.js.map +1 -0
- package/dist/query.d.ts +56 -0
- package/dist/query.js +88 -0
- package/dist/query.js.map +1 -0
- package/dist/races.d.ts +15 -14
- package/dist/races.js +172 -0
- package/dist/races.js.map +1 -0
- package/dist/randomGroups.js +91 -0
- package/dist/randomGroups.js.map +1 -0
- package/dist/registry.d.ts +117 -53
- package/dist/registry.js +323 -0
- package/dist/registry.js.map +1 -0
- package/dist/remains.d.ts +11 -9
- package/dist/remains.js +188 -0
- package/dist/remains.js.map +1 -0
- package/dist/replication.d.ts +12 -7
- package/dist/replication.js +100 -0
- package/dist/replication.js.map +1 -0
- package/dist/rng.d.ts +2 -0
- package/dist/rng.js +40 -0
- package/dist/rng.js.map +1 -0
- package/dist/rules.d.ts +186 -99
- package/dist/rules.js +179 -0
- package/dist/rules.js.map +1 -0
- package/dist/rulesCheck.d.ts +5 -4
- package/dist/rulesCheck.js +693 -0
- package/dist/rulesCheck.js.map +1 -0
- package/dist/runes.d.ts +2 -2
- package/dist/runes.js +80 -0
- package/dist/runes.js.map +1 -0
- package/dist/save.d.ts +37 -12
- package/dist/save.js +532 -0
- package/dist/save.js.map +1 -0
- package/dist/scenario.d.ts +2 -2
- package/dist/scenario.js +99 -0
- package/dist/scenario.js.map +1 -0
- package/dist/scheduler.d.ts +3 -0
- package/dist/scheduler.js +156 -0
- package/dist/scheduler.js.map +1 -0
- package/dist/score.d.ts +19 -19
- package/dist/score.js +709 -0
- package/dist/score.js.map +1 -0
- package/dist/sequences.d.ts +10 -6
- package/dist/sequences.js +206 -0
- package/dist/sequences.js.map +1 -0
- package/dist/server/doorman.js +154 -0
- package/dist/server/doorman.js.map +1 -0
- package/dist/server/gameServer.d.ts +16 -1
- package/dist/server/gameServer.js +643 -0
- package/dist/server/gameServer.js.map +1 -0
- package/dist/server/index.d.ts +1 -1
- package/dist/server/lobby.js +199 -0
- package/dist/server/lobby.js.map +1 -0
- package/dist/server/log.js +18 -0
- package/dist/server/log.js.map +1 -0
- package/dist/server/match.js +267 -0
- package/dist/server/match.js.map +1 -0
- package/dist/server/mode.d.ts +18 -9
- package/dist/server/mode.js +220 -0
- package/dist/server/mode.js.map +1 -0
- package/dist/{navigation-worker.js → server/navigation-worker.js} +1 -1
- package/dist/server/navigation-worker.js.map +1 -0
- package/dist/server/navigation.js +39 -0
- package/dist/server/navigation.js.map +1 -0
- package/dist/server/ops.d.ts +4 -0
- package/dist/server/ops.js +137 -0
- package/dist/server/ops.js.map +1 -0
- package/dist/server/packs.d.ts +3 -3
- package/dist/server/packs.js +32 -0
- package/dist/server/packs.js.map +1 -0
- package/dist/server/ratings.d.ts +5 -0
- package/dist/server/ratings.js +104 -0
- package/dist/server/ratings.js.map +1 -0
- package/dist/server/relay.d.ts +12 -2
- package/dist/server/relay.js +144 -0
- package/dist/server/relay.js.map +1 -0
- package/dist/server/rooms.d.ts +9 -2
- package/dist/server/rooms.js +442 -0
- package/dist/server/rooms.js.map +1 -0
- package/dist/server/seat.js +116 -0
- package/dist/server/seat.js.map +1 -0
- package/dist/server/seatSettings.d.ts +3 -3
- package/dist/server/seatSettings.js +63 -0
- package/dist/server/seatSettings.js.map +1 -0
- package/dist/server/secret.js +13 -0
- package/dist/server/secret.js.map +1 -0
- package/dist/server/start.d.ts +13 -6
- package/dist/server/start.js +76 -0
- package/dist/server/start.js.map +1 -0
- package/dist/server/websocket.d.ts +9 -1
- package/dist/server/websocket.js +306 -0
- package/dist/server/websocket.js.map +1 -0
- package/dist/server.js +15 -2861
- package/dist/session/can.js +26 -0
- package/dist/session/can.js.map +1 -0
- package/dist/session/commandReplay.d.ts +8 -2
- package/dist/session/commandReplay.js +293 -0
- package/dist/session/commandReplay.js.map +1 -0
- package/dist/session/debug.js +151 -0
- package/dist/session/debug.js.map +1 -0
- package/dist/session/delay.js +62 -0
- package/dist/session/delay.js.map +1 -0
- package/dist/session/delta.d.ts +14 -1
- package/dist/session/delta.js +407 -0
- package/dist/session/delta.js.map +1 -0
- package/dist/session/entityState.js +415 -0
- package/dist/session/entityState.js.map +1 -0
- package/dist/session/local.d.ts +47 -5
- package/dist/session/local.js +670 -0
- package/dist/session/local.js.map +1 -0
- package/dist/session/memory.d.ts +20 -2
- package/dist/session/memory.js +131 -0
- package/dist/session/memory.js.map +1 -0
- package/dist/session/protocol.d.ts +325 -31
- package/dist/session/protocol.js +55 -0
- package/dist/session/protocol.js.map +1 -0
- package/dist/session/remote.d.ts +74 -12
- package/dist/session/remote.js +1394 -0
- package/dist/session/remote.js.map +1 -0
- package/dist/session/replay.d.ts +11 -2
- package/dist/session/replay.js +160 -0
- package/dist/session/replay.js.map +1 -0
- package/dist/session/seed.js +12 -0
- package/dist/session/seed.js.map +1 -0
- package/dist/session/share.d.ts +5 -1
- package/dist/session/share.js +94 -0
- package/dist/session/share.js.map +1 -0
- package/dist/session/socket.d.ts +1 -1
- package/dist/session/socket.js +29 -0
- package/dist/session/socket.js.map +1 -0
- package/dist/session/wire.d.ts +5 -0
- package/dist/session/wire.js +84 -0
- package/dist/session/wire.js.map +1 -0
- package/dist/session/worker.d.ts +77 -12
- package/dist/session/worker.js +499 -0
- package/dist/session/worker.js.map +1 -0
- package/dist/shared.d.ts +31 -5
- package/dist/shared.js +166 -0
- package/dist/shared.js.map +1 -0
- package/dist/sides.d.ts +9 -3
- package/dist/sides.js +149 -0
- package/dist/sides.js.map +1 -0
- package/dist/sight.js +85 -0
- package/dist/sight.js.map +1 -0
- package/dist/simulate-worker.js +1 -1
- package/dist/simulate.d.ts +12 -8
- package/dist/{simulate-oXBiw1Ff.js → simulate.js} +10 -11
- package/dist/simulate.js.map +1 -0
- package/dist/smart.js +77 -0
- package/dist/smart.js.map +1 -0
- package/dist/spatial.d.ts +32 -16
- package/dist/spatial.js +234 -0
- package/dist/spatial.js.map +1 -0
- package/dist/spawning.d.ts +1 -0
- package/dist/spawning.js +224 -0
- package/dist/spawning.js.map +1 -0
- package/dist/stances.d.ts +6 -3
- package/dist/stances.js +169 -0
- package/dist/stances.js.map +1 -0
- package/dist/start.d.ts +10 -10
- package/dist/start.js +75 -0
- package/dist/start.js.map +1 -0
- package/dist/stats.d.ts +42 -16
- package/dist/stats.js +290 -0
- package/dist/stats.js.map +1 -0
- package/dist/summoned.d.ts +52 -0
- package/dist/summoned.js +38 -0
- package/dist/summoned.js.map +1 -0
- package/dist/summons.d.ts +10 -13
- package/dist/summons.js +271 -0
- package/dist/summons.js.map +1 -0
- package/dist/systems/abilities.js +224 -0
- package/dist/systems/abilities.js.map +1 -0
- package/dist/systems/combat.d.ts +35 -1
- package/dist/systems/combat.js +677 -0
- package/dist/systems/combat.js.map +1 -0
- package/dist/systems/combatTold.d.ts +3 -1
- package/dist/systems/combatTold.js +85 -0
- package/dist/systems/combatTold.js.map +1 -0
- package/dist/systems/construction.js +80 -0
- package/dist/systems/construction.js.map +1 -0
- package/dist/systems/economy.d.ts +0 -6
- package/dist/systems/economy.js +128 -0
- package/dist/systems/economy.js.map +1 -0
- package/dist/systems/fog.d.ts +1 -1
- package/dist/systems/fog.js +120 -0
- package/dist/systems/fog.js.map +1 -0
- package/dist/systems/life.js +32 -0
- package/dist/systems/life.js.map +1 -0
- package/dist/systems/movement.d.ts +24 -12
- package/dist/systems/movement.js +1247 -0
- package/dist/systems/movement.js.map +1 -0
- package/dist/systems/orders.js +64 -0
- package/dist/systems/orders.js.map +1 -0
- package/dist/systems/production.js +322 -0
- package/dist/systems/production.js.map +1 -0
- package/dist/systems/productionQueue.js +120 -0
- package/dist/systems/productionQueue.js.map +1 -0
- package/dist/systems/victory.d.ts +1 -1
- package/dist/systems/victory.js +56 -0
- package/dist/systems/victory.js.map +1 -0
- package/dist/talk.d.ts +6 -6
- package/dist/talk.js +153 -0
- package/dist/talk.js.map +1 -0
- package/dist/targeting.d.ts +142 -0
- package/dist/targeting.js +49 -0
- package/dist/targeting.js.map +1 -0
- package/dist/tech.d.ts +20 -3
- package/dist/tech.js +239 -0
- package/dist/tech.js.map +1 -0
- package/dist/techTree.d.ts +7 -0
- package/dist/techTree.js +90 -0
- package/dist/techTree.js.map +1 -0
- package/dist/terrain.d.ts +59 -7
- package/dist/terrain.js +389 -0
- package/dist/terrain.js.map +1 -0
- package/dist/terrainSave.d.ts +6 -0
- package/dist/terrainSave.js +74 -0
- package/dist/terrainSave.js.map +1 -0
- package/dist/testing.d.ts +8 -7
- package/dist/testing.js +13 -739
- package/dist/testing.js.map +1 -1
- package/dist/tiles.d.ts +1 -1
- package/dist/tiles.js +43 -0
- package/dist/tiles.js.map +1 -0
- package/dist/timers.d.ts +29 -4
- package/dist/timers.js +242 -0
- package/dist/timers.js.map +1 -0
- package/dist/tomes.d.ts +4 -4
- package/dist/tomes.js +94 -0
- package/dist/tomes.js.map +1 -0
- package/dist/trade.js +103 -0
- package/dist/trade.js.map +1 -0
- package/dist/transport.d.ts +6 -1
- package/dist/transport.js +281 -0
- package/dist/transport.js.map +1 -0
- package/dist/tunables.d.ts +10 -3
- package/dist/tunables.js +56 -0
- package/dist/tunables.js.map +1 -0
- package/dist/unitResources.d.ts +67 -0
- package/dist/unitResources.js +266 -0
- package/dist/unitResources.js.map +1 -0
- package/dist/upkeep.d.ts +6 -1
- package/dist/upkeep.js +26 -0
- package/dist/upkeep.js.map +1 -0
- package/dist/veterancy.d.ts +8 -3
- package/dist/veterancy.js +131 -0
- package/dist/veterancy.js.map +1 -0
- package/dist/vision.d.ts +36 -0
- package/dist/vision.js +133 -0
- package/dist/vision.js.map +1 -0
- package/dist/walls.d.ts +1 -1
- package/dist/walls.js +278 -0
- package/dist/walls.js.map +1 -0
- package/dist/world.d.ts +606 -88
- package/dist/world.js +1263 -0
- package/dist/world.js.map +1 -0
- package/package.json +2 -2
- package/dist/ai.js.map +0 -1
- package/dist/attributes.d.ts +0 -66
- package/dist/brain-BvVdUhX8.js +0 -7659
- package/dist/brain-BvVdUhX8.js.map +0 -1
- package/dist/builds-C6LfgvEU.js +0 -460
- package/dist/builds-C6LfgvEU.js.map +0 -1
- package/dist/coreComponents-syuh2fPG.js +0 -5149
- package/dist/coreComponents-syuh2fPG.js.map +0 -1
- package/dist/debugCommands-CzjrSm66.js +0 -14739
- package/dist/debugCommands-CzjrSm66.js.map +0 -1
- package/dist/determinism-BCymQwiE.js +0 -518
- package/dist/determinism-BCymQwiE.js.map +0 -1
- package/dist/game-DiJEN-Ks.js +0 -5800
- package/dist/game-DiJEN-Ks.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/inspect-D9dWHmZ0.js.map +0 -1
- package/dist/local-Dkovq42k.js +0 -1379
- package/dist/local-Dkovq42k.js.map +0 -1
- package/dist/missionRules-C-bGxm0Q.js.map +0 -1
- package/dist/navigation-worker.js.map +0 -1
- package/dist/packs-g5thvmGn.js +0 -3199
- package/dist/packs-g5thvmGn.js.map +0 -1
- package/dist/profiles-B3NS9jwk.js.map +0 -1
- package/dist/server.js.map +0 -1
- package/dist/simulate-oXBiw1Ff.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remains.js","names":[],"sources":["../src/remains.ts"],"sourcesContent":["import { defineComponent } from './components'\nimport type { GamePack } from './packs/pack'\nimport type { ResourceId, UnitTypeDef } from './defs'\nimport type { Entity, PlayerId } from './entity'\nimport { defineEngineEvent } from './events'\nimport { defineHook } from './hooks'\nimport { MAP_NEUTRAL } from './map'\nimport { earn } from './player'\nimport type { System } from './registry'\nimport type { World } from './world'\nimport { deposit } from './entity'\n\n/*\n * Remains that are things, an opt-in pack (master plan OH4): a building that falls leaves rubble that blocks the way\n * (a resource with its footprint) until workers clear it, gathering it as a resource (stone, or what the game says);\n * a unit that falls can drop a pile of a resource, picked up by the first unit of a player's that walks over it. What\n * the screen shows of a death (`remains` of the view: a crater, scorch) stays the view's; these are of the world.\n */\n\n/**\n * What rubble or a pile is to be, as a game says it for a death: the unit type it is, and how much of its resource it\n * holds (the type's `resource.amount` when left out)\n *\n * @beta\n */\nexport interface RemainsSpec {\n\t/** The unit type of the rubble or pile left behind, a resource-bearing type */\n\ttype: string\n\t/** How much of the resource it holds; the type's `resource.amount` when left out */\n\tamount?: number\n}\n\n/**\n * What the remains of a game are made of (`remainsPack`)\n *\n * @beta\n */\nexport interface RemainsOptions {\n\t/**\n\t * The rubble a fallen building leaves, put down where it stood once it is gone: a type (a resource with a footprint,\n\t * see `rubbleType`), worked out for the death, or `null` for none. None when left out\n\t */\n\trubble?: string | ((world: World, dead: Entity) => RemainsSpec | string | null | undefined)\n\t/**\n\t * The pile a fallen unit drops: a type (a resource with no footprint, see `pileType`) and how much, or `null` for\n\t * none. None when left out\n\t */\n\tpiles?: (world: World, dead: Entity, killer: Entity | undefined) => RemainsSpec | null | undefined\n\t/** How near a unit comes to a pile to pick it up, in cells: 0.8 when left out */\n\treach?: number\n\t/** Who may pick a pile up: any unit of a player's that is not a structure, when left out */\n\tpicksUp?: (world: World, unit: Entity, pile: Entity) => boolean\n}\n\n/**\n * What a pile holds: the resource and how much. Told to everyone, for its look and its tooltip\n *\n * @beta\n */\nexport const pileOf = defineComponent<{ kind: ResourceId; amount: number }>({ id: 'core.pile', replicate: 'everyone' })\n\n/** The piles there are and the rubble to put down once the building it is of is gone, kept with the world */\nexport const remains = defineComponent<{ piles: number[]; rubble: Record<number, { type: string; amount?: number; x: number; z: number }> }>({ id: 'core.remains', default: () => ({ piles: [], rubble: {} }) })\n\n/**\n * A pile was picked up: by whom (a unit's id and its owner), what and how much\n *\n * @beta\n */\nexport const pileTaken = defineEngineEvent<{ pile: number; by: number; player: PlayerId; kind: ResourceId; amount: number }>({ id: 'core.pileTaken', replicate: 'everyone' })\n\n/** The player the map's neutral things are of: rubble and piles are */\nfunction neutralOf(world: World): PlayerId {\n\tfor (const player of world.players.values()) if (player.neutral) return player.id\n\treturn MAP_NEUTRAL\n}\n\n/** Spawns remains of a type, holding so much of their resource */\nfunction putDown(world: World, spec: RemainsSpec, x: number, z: number): Entity | undefined {\n\tif (!world.registry.units.has(spec.type)) return undefined\n\tconst entity = world.spawn(spec.type, neutralOf(world), { x, z })\n\tif (spec.amount !== undefined && entity.get(deposit)) entity.get(deposit)!.amount = spec.amount\n\treturn entity\n}\n\n/**\n * A type of rubble, to put in the game's units: a resource that blocks its footprint, gathered (cleared) as `kind`\n * by the game's workers, with no look of its own (the game's looks give it one)\n *\n * @beta\n */\nexport function rubbleType(def: {\n\tid: string\n\tname?: string\n\tfootprint: { w: number; d: number }\n\tkind: ResourceId\n\tamount?: number\n\tslots?: number\n}): UnitTypeDef {\n\treturn {\n\t\tid: def.id,\n\t\tname: def.name ?? 'Rubble',\n\t\tkind: 'resource',\n\t\tradius: Math.max(def.footprint.w, def.footprint.d) / 2,\n\t\tfootprint: def.footprint,\n\t\tstats: { health: 1 },\n\t\tsight: 0,\n\t\tresource: { id: def.kind, amount: def.amount ?? 100, slots: def.slots ?? 3 }\n\t} as UnitTypeDef\n}\n\n/**\n * A type of pile, to put in the game's units: something lying on the ground that blocks nothing, is fought by nobody,\n * and is handed (`pileOf`: its kind and how much) to who walks over it. `kind` and `amount` are what it holds when the\n * death that drops it says nothing else\n *\n * @beta\n */\nexport function pileType(def: {\n\tid: string\n\tname?: string\n\tkind: ResourceId\n\tamount?: number\n}): UnitTypeDef & { pile: { kind: ResourceId; amount: number } } {\n\treturn {\n\t\tid: def.id,\n\t\tname: def.name ?? 'Pile',\n\t\tkind: 'unit',\n\t\tradius: 0.2,\n\t\tstats: { health: 1, moveSpeed: 0 },\n\t\tsight: 0,\n\t\tinvulnerable: true,\n\t\tignored: true,\n\t\tpile: { kind: def.kind, amount: def.amount ?? 10 }\n\t} as UnitTypeDef & { pile: { kind: ResourceId; amount: number } }\n}\n\n/**\n * Remains that are things for a game (`RemainsOptions`): rubble where buildings fell, piles where units did. The game\n * is the same otherwise; its units list the types (`rubbleType`, `pileType`, or its own)\n *\n * @beta\n */\nexport function remainsPack(options: RemainsOptions = {}): GamePack {\n\tconst reach = options.reach ?? 0.8\n\tconst picksUp = options.picksUp ?? ((_world: World, unit: Entity) => !unit.isStructure && !unit.isResource && unit.alive && !unit.get(pileOf))\n\n\tconst deathHook = defineHook({\n\t\thook: 'death',\n\t\tid: 'core.remains.death',\n\t\trun(world, event) {\n\t\t\tconst { entity: dead, killer } = event\n\t\t\tconst state = world.state(remains)\n\t\t\tif (dead.isStructure && options.rubble) {\n\t\t\t\tconst said = typeof options.rubble === 'function' ? options.rubble(world, dead) : options.rubble\n\t\t\t\tconst spec = typeof said === 'string' ? { type: said } : said\n\t\t\t\t// put down once the building is gone: its cells are its own until then\n\t\t\t\tif (spec) state.rubble[dead.id] = { ...spec, x: dead.pos.x, z: dead.pos.z }\n\t\t\t} else if (!dead.isStructure && !dead.isResource && options.piles) {\n\t\t\t\tconst spec = options.piles(world, dead, killer)\n\t\t\t\tconst pile = spec && putDown(world, spec, dead.pos.x, dead.pos.z)\n\t\t\t\tif (!pile) return\n\t\t\t\t// what it holds: what the death says, else its type's (`pileType`)\n\t\t\t\tconst kept = (pile.def as { pile?: { kind: ResourceId; amount: number } }).pile\n\t\t\t\tconst kind = kept?.kind ?? world.registry.resources[0]?.id ?? 'gold'\n\t\t\t\tpile.set(pileOf, { kind, amount: spec.amount ?? kept?.amount ?? 10 })\n\t\t\t\tstate.piles.push(pile.id)\n\t\t\t}\n\t\t}\n\t})\n\tconst removeHook = defineHook({\n\t\thook: 'remove',\n\t\tid: 'core.remains.remove',\n\t\trun(world, entity) {\n\t\t\tconst state = world.state(remains)\n\t\t\tconst rubble = state.rubble[entity.id]\n\t\t\tif (!rubble) return\n\t\t\tdelete state.rubble[entity.id]\n\t\t\tputDown(world, rubble, rubble.x, rubble.z)\n\t\t}\n\t})\n\tconst near: Entity[] = []\n\tconst pickUp: System = {\n\t\tname: 'core.remains.piles',\n\t\tupdate(world: World) {\n\t\t\tconst state = world.state(remains)\n\t\t\tif (!state.piles.length) return\n\t\t\tstate.piles = state.piles.filter((id) => {\n\t\t\t\tconst pile = world.get(id)\n\t\t\t\tconst holds = pile?.get(pileOf)\n\t\t\t\tif (!pile?.alive || !holds) return false\n\t\t\t\tfor (const unit of [...world.spatial.query(pile.pos.x, pile.pos.z, reach, near)]) {\n\t\t\t\t\tif (world.player(unit.owner).neutral || !picksUp(world, unit, pile)) continue\n\t\t\t\t\tconst dx = unit.pos.x - pile.pos.x\n\t\t\t\t\tconst dz = unit.pos.z - pile.pos.z\n\t\t\t\t\tconst within = reach + unit.def.radius\n\t\t\t\t\tif (dx * dx + dz * dz > within * within) continue\n\t\t\t\t\tconst { kind, amount } = holds\n\t\t\t\t\tearn(world.player(unit.owner).resources, kind, amount)\n\t\t\t\t\tworld.events.emit(pileTaken, { pile: pile.id, by: unit.id, player: unit.owner, kind, amount })\n\t\t\t\t\tworld.kill(pile, unit, false, 'taken')\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\treturn true\n\t\t\t})\n\t\t}\n\t}\n\treturn {\n\t\tid: 'remains',\n\t\toptions,\n\t\tcomponents: [remains, pileOf],\n\t\tevents: [pileTaken],\n\t\thooks: [deathHook, removeHook],\n\t\tsystems: [pickUp]\n\t}\n}\n"],"mappings":"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"}
|
package/dist/replication.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* What a player is told of a world, written with what it tells of (design review E7): an event of the world becomes an
|
|
3
3
|
* event on a player's screen by the rule beside the code that emits it (`replicateEvent`), and a part of the snapshot is
|
|
4
|
-
* captured by the feature it is of (`
|
|
5
|
-
* (`Registry.replications`, `Registry.
|
|
4
|
+
* captured by the feature it is of (`SnapshotField`). A seat (`LocalSession`) runs what its game has of them
|
|
5
|
+
* (`Registry.replications`, `Registry.snapshotFields`: the engine's, then the packs'), for what its player may know
|
|
6
6
|
* (`SessionView`)
|
|
7
7
|
*/
|
|
8
8
|
import type { Entity, PlayerId } from './entity';
|
|
@@ -12,12 +12,13 @@ import type { World } from './world';
|
|
|
12
12
|
import { type TeamMemory } from './session/memory';
|
|
13
13
|
/**
|
|
14
14
|
* A seat's side of a world: whose it is, and what they may know of it now. What the rules that tell a player of the
|
|
15
|
-
* world ask (`replicateEvent`, `
|
|
15
|
+
* world ask (`replicateEvent`, `SnapshotField`, an event of a game's own's `replicate`), and what a seat keeps for them
|
|
16
16
|
* (`keep`)
|
|
17
17
|
*
|
|
18
18
|
* @beta
|
|
19
19
|
*/
|
|
20
20
|
export declare class SessionView {
|
|
21
|
+
/** The world the session view is a seat's window onto */
|
|
21
22
|
readonly world: World;
|
|
22
23
|
/** The seat's player: from whose side it sees, an observer's too */
|
|
23
24
|
readonly player: PlayerId;
|
|
@@ -30,7 +31,9 @@ export declare class SessionView {
|
|
|
30
31
|
/** What the seat was told since its last snapshot, for the next one */
|
|
31
32
|
events: SessionEvent[];
|
|
32
33
|
private readonly kept;
|
|
33
|
-
constructor(
|
|
34
|
+
constructor(
|
|
35
|
+
/** The world the session view is a seat's window onto */
|
|
36
|
+
world: World,
|
|
34
37
|
/** The seat's player: from whose side it sees, an observer's too */
|
|
35
38
|
player: PlayerId, options?: {
|
|
36
39
|
observer?: boolean;
|
|
@@ -88,16 +91,18 @@ export declare function replicateEvent<T, A extends keyof SessionEvents>(event:
|
|
|
88
91
|
/**
|
|
89
92
|
* A part of the snapshot a player is sent, captured by the feature it is of: the projectiles, the items on the
|
|
90
93
|
* ground, the score. Before the entities (`head`) or after the players; left out of the snapshot where it gives
|
|
91
|
-
* nothing (`undefined`). Listed by the engine for its own, by a pack in `GamePack.
|
|
94
|
+
* nothing (`undefined`). Listed by the engine for its own, by a pack in `GamePack.snapshotFields` (a key of its own
|
|
92
95
|
* added to `Snapshot` by declaration merging)
|
|
93
96
|
*
|
|
94
97
|
* @beta
|
|
95
98
|
*/
|
|
96
|
-
export interface
|
|
99
|
+
export interface SnapshotField<K extends keyof Snapshot = keyof Snapshot> {
|
|
100
|
+
/** The key of `Snapshot` this field fills */
|
|
97
101
|
readonly key: K;
|
|
98
102
|
/** Before the entities and the players, where the tick's own facts are (the hour, the outcome) */
|
|
99
103
|
readonly head?: boolean;
|
|
104
|
+
/** Reads this part of the snapshot for the seat's view; undefined leaves it out of the snapshot */
|
|
100
105
|
capture(view: SessionView): Snapshot[K] | undefined;
|
|
101
106
|
}
|
|
102
107
|
/** What the seat was told since its last snapshot (`Snapshot.events`) */
|
|
103
|
-
export declare const eventsPart:
|
|
108
|
+
export declare const eventsPart: SnapshotField<keyof Snapshot>;
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { teamMemory } from "./session/memory.js";
|
|
2
|
+
//#region src/replication.ts
|
|
3
|
+
/**
|
|
4
|
+
* A seat's side of a world: whose it is, and what they may know of it now. What the rules that tell a player of the
|
|
5
|
+
* world ask (`replicateEvent`, `SnapshotField`, an event of a game's own's `replicate`), and what a seat keeps for them
|
|
6
|
+
* (`keep`)
|
|
7
|
+
*
|
|
8
|
+
* @beta
|
|
9
|
+
*/
|
|
10
|
+
var SessionView = class {
|
|
11
|
+
world;
|
|
12
|
+
player;
|
|
13
|
+
/** Who only watches, and sees everything (`LocalSession.observer`) */
|
|
14
|
+
observer;
|
|
15
|
+
/** Whether the seat is a computer player's, which is told only what a brain reads (`LocalSession.forComputer`) */
|
|
16
|
+
forComputer;
|
|
17
|
+
/** How many effects of the rules are kept for their stop to be told (`LocalSession` options' `mostEffects`) */
|
|
18
|
+
mostEffects;
|
|
19
|
+
/** What the seat was told since its last snapshot, for the next one */
|
|
20
|
+
events = [];
|
|
21
|
+
kept = /* @__PURE__ */ new Map();
|
|
22
|
+
constructor(world, player, options = {}) {
|
|
23
|
+
this.world = world;
|
|
24
|
+
this.player = player;
|
|
25
|
+
this.observer = options.observer ?? false;
|
|
26
|
+
this.forComputer = options.forComputer ?? false;
|
|
27
|
+
this.mostEffects = options.mostEffects ?? 1024;
|
|
28
|
+
}
|
|
29
|
+
/** The player's team: theirs now, as the rules may move them to another (`setTeam`) */
|
|
30
|
+
get team() {
|
|
31
|
+
return this.world.player(this.player).team;
|
|
32
|
+
}
|
|
33
|
+
/** Whether an owner is the player or an ally of theirs: an observer's is everyone */
|
|
34
|
+
isAlly = (owner) => this.observer || this.world.areAllies(owner, this.player);
|
|
35
|
+
/** Whether the player's team sees a spot of the map right now: an observer sees all of it */
|
|
36
|
+
sees = (x, z) => this.observer || this.world.fog.isVisible(this.team, x, z);
|
|
37
|
+
/** Whether the player's team can see the entity right now: its side's always */
|
|
38
|
+
knows = (entity) => this.isAlly(entity.owner) || !entity.hidden && this.world.isVisibleTo(entity, this.team);
|
|
39
|
+
/** An observer's own memory: it sees everything, which is no team's to remember */
|
|
40
|
+
ownMemory = {
|
|
41
|
+
structures: {},
|
|
42
|
+
cleared: []
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* What the player's team remembers of what it saw (`teamMemory`: the structures out of sight as last seen, the camps
|
|
46
|
+
* seen empty), or an observer's own. Looked up again each time: the player may have moved to another team since
|
|
47
|
+
*/
|
|
48
|
+
get memory() {
|
|
49
|
+
if (this.observer) return this.ownMemory;
|
|
50
|
+
const all = this.world.state(teamMemory);
|
|
51
|
+
return all[this.team] ??= {
|
|
52
|
+
structures: {},
|
|
53
|
+
cleared: []
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
/** What the seat keeps under a key for what tells it things (the effects it was shown, the score last told): made the first time */
|
|
57
|
+
keep(key, make) {
|
|
58
|
+
let kept = this.kept.get(key);
|
|
59
|
+
if (kept === void 0) this.kept.set(key, kept = make());
|
|
60
|
+
return kept;
|
|
61
|
+
}
|
|
62
|
+
/** Takes what the seat was told since the last snapshot */
|
|
63
|
+
takeEvents() {
|
|
64
|
+
const events = this.events;
|
|
65
|
+
this.events = [];
|
|
66
|
+
return events;
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
/**
|
|
70
|
+
* How an event of the world is told to a player, written beside what emits it: `replicateEvent(healed, 'heal', (heal,
|
|
71
|
+
* view) => view.knows(heal.target) ? { type: 'heal', ... } : undefined)`. Listed by the engine for its own, by a pack in
|
|
72
|
+
* `GamePack.replications`
|
|
73
|
+
*
|
|
74
|
+
* @beta
|
|
75
|
+
*/
|
|
76
|
+
function replicateEvent(event, as, tell) {
|
|
77
|
+
return {
|
|
78
|
+
event,
|
|
79
|
+
as,
|
|
80
|
+
tell
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* A part of the snapshot, typed by its key
|
|
85
|
+
*
|
|
86
|
+
* @internal
|
|
87
|
+
*/
|
|
88
|
+
function snapshotField(key, capture, head) {
|
|
89
|
+
return {
|
|
90
|
+
key,
|
|
91
|
+
capture,
|
|
92
|
+
...head && { head }
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
/** What the seat was told since its last snapshot (`Snapshot.events`) */
|
|
96
|
+
var eventsPart = snapshotField("events", (view) => view.takeEvents());
|
|
97
|
+
//#endregion
|
|
98
|
+
export { SessionView, eventsPart, replicateEvent, snapshotField };
|
|
99
|
+
|
|
100
|
+
//# sourceMappingURL=replication.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"replication.js","names":[],"sources":["../src/replication.ts"],"sourcesContent":["/**\n * What a player is told of a world, written with what it tells of (design review E7): an event of the world becomes an\n * event on a player's screen by the rule beside the code that emits it (`replicateEvent`), and a part of the snapshot is\n * captured by the feature it is of (`SnapshotField`). A seat (`LocalSession`) runs what its game has of them\n * (`Registry.replications`, `Registry.snapshotFields`: the engine's, then the packs'), for what its player may know\n * (`SessionView`)\n */\nimport type { Entity, PlayerId } from './entity'\nimport type { EventKey } from './events'\nimport type { SessionEvent, SessionEvents, Snapshot } from './session/protocol'\nimport type { World } from './world'\nimport { type TeamMemory, teamMemory } from './session/memory'\n\n/**\n * A seat's side of a world: whose it is, and what they may know of it now. What the rules that tell a player of the\n * world ask (`replicateEvent`, `SnapshotField`, an event of a game's own's `replicate`), and what a seat keeps for them\n * (`keep`)\n *\n * @beta\n */\nexport class SessionView {\n\t/** Who only watches, and sees everything (`LocalSession.observer`) */\n\treadonly observer: boolean\n\t/** Whether the seat is a computer player's, which is told only what a brain reads (`LocalSession.forComputer`) */\n\treadonly forComputer: boolean\n\t/** How many effects of the rules are kept for their stop to be told (`LocalSession` options' `mostEffects`) */\n\treadonly mostEffects: number\n\t/** What the seat was told since its last snapshot, for the next one */\n\tevents: SessionEvent[] = []\n\tprivate readonly kept = new Map<object, unknown>()\n\n\tconstructor(\n\t\t/** The world the session view is a seat's window onto */\n\t\treadonly world: World,\n\t\t/** The seat's player: from whose side it sees, an observer's too */\n\t\treadonly player: PlayerId,\n\t\toptions: { observer?: boolean; forComputer?: boolean; mostEffects?: number } = {}\n\t) {\n\t\tthis.observer = options.observer ?? false\n\t\tthis.forComputer = options.forComputer ?? false\n\t\tthis.mostEffects = options.mostEffects ?? 1024\n\t}\n\n\t/** The player's team: theirs now, as the rules may move them to another (`setTeam`) */\n\tget team(): number {\n\t\treturn this.world.player(this.player).team\n\t}\n\n\t/** Whether an owner is the player or an ally of theirs: an observer's is everyone */\n\treadonly isAlly = (owner: PlayerId): boolean => this.observer || this.world.areAllies(owner, this.player)\n\n\t/** Whether the player's team sees a spot of the map right now: an observer sees all of it */\n\treadonly sees = (x: number, z: number): boolean => this.observer || this.world.fog.isVisible(this.team, x, z)\n\n\t/** Whether the player's team can see the entity right now: its side's always */\n\treadonly knows = (entity: Entity): boolean => this.isAlly(entity.owner) || (!entity.hidden && this.world.isVisibleTo(entity, this.team))\n\n\t/** An observer's own memory: it sees everything, which is no team's to remember */\n\tprivate readonly ownMemory: TeamMemory = { structures: {}, cleared: [] }\n\n\t/**\n\t * What the player's team remembers of what it saw (`teamMemory`: the structures out of sight as last seen, the camps\n\t * seen empty), or an observer's own. Looked up again each time: the player may have moved to another team since\n\t */\n\tget memory(): TeamMemory {\n\t\tif (this.observer) return this.ownMemory\n\t\tconst all = this.world.state(teamMemory)\n\t\treturn (all[this.team] ??= { structures: {}, cleared: [] })\n\t}\n\n\t/** What the seat keeps under a key for what tells it things (the effects it was shown, the score last told): made the first time */\n\tkeep<S>(key: object, make: () => S): S {\n\t\tlet kept = this.kept.get(key) as S | undefined\n\t\tif (kept === undefined) this.kept.set(key, (kept = make()))\n\t\treturn kept\n\t}\n\n\t/** Takes what the seat was told since the last snapshot */\n\ttakeEvents(): SessionEvent[] {\n\t\tconst events = this.events\n\t\tthis.events = []\n\t\treturn events\n\t}\n}\n\n/**\n * The event on a screen of a kind\n *\n * @beta\n */\nexport type SessionEventOf<K extends keyof SessionEvents> = SessionEvents[K]\n\n/**\n * How an event of the world is told to a player (`replicateEvent`): what the seat hears it as, and what it says of it\n * to the player, if anything\n *\n * @beta\n */\nexport interface ReplicatedEvent {\n\t/** The kind of event on the screen: a computer's seat hears only the kinds a brain reads (`COMPUTER_EVENTS`) */\n\treadonly as: SessionEvent['type']\n\t/** The world's event it tells of: one of the engine's (`engineEvents`) or a game's own (`defineEvent`) */\n\treadonly event: EventKey<unknown>\n\t/** What the player is told of it: nothing for what they may not know */\n\ttell(payload: unknown, view: SessionView): SessionEvent | undefined\n}\n\n/**\n * How an event of the world is told to a player, written beside what emits it: `replicateEvent(healed, 'heal', (heal,\n * view) => view.knows(heal.target) ? { type: 'heal', ... } : undefined)`. Listed by the engine for its own, by a pack in\n * `GamePack.replications`\n *\n * @beta\n */\nexport function replicateEvent<T, A extends keyof SessionEvents>(\n\tevent: EventKey<T>,\n\tas: A,\n\ttell: (payload: T, view: SessionView) => SessionEventOf<A> | undefined\n): ReplicatedEvent {\n\treturn { event: event as EventKey<unknown>, as, tell: tell as ReplicatedEvent['tell'] }\n}\n\n/**\n * A part of the snapshot a player is sent, captured by the feature it is of: the projectiles, the items on the\n * ground, the score. Before the entities (`head`) or after the players; left out of the snapshot where it gives\n * nothing (`undefined`). Listed by the engine for its own, by a pack in `GamePack.snapshotFields` (a key of its own\n * added to `Snapshot` by declaration merging)\n *\n * @beta\n */\nexport interface SnapshotField<K extends keyof Snapshot = keyof Snapshot> {\n\t/** The key of `Snapshot` this field fills */\n\treadonly key: K\n\t/** Before the entities and the players, where the tick's own facts are (the hour, the outcome) */\n\treadonly head?: boolean\n\t/** Reads this part of the snapshot for the seat's view; undefined leaves it out of the snapshot */\n\tcapture(view: SessionView): Snapshot[K] | undefined\n}\n\n/**\n * A part of the snapshot, typed by its key\n *\n * @internal\n */\nexport function snapshotField<K extends keyof Snapshot>(\n\tkey: K,\n\tcapture: (view: SessionView) => Snapshot[K] | undefined,\n\thead?: boolean\n): SnapshotField {\n\treturn { key, capture, ...(head && { head }) } as SnapshotField\n}\n\n/** What the seat was told since its last snapshot (`Snapshot.events`) */\nexport const eventsPart = snapshotField('events', (view) => view.takeEvents())\n"],"mappings":";;;;;;;;;AAoBA,IAAa,cAAb,MAAyB;CAad;CAEA;;CAbV;;CAEA;;CAEA;;CAEA,SAAyB,CAAC;CAC1B,uBAAwB,IAAI,IAAqB;CAEjD,YAEC,OAEA,QACA,UAA+E,CAAC,GAC/E;EAJQ,KAAA,QAAA;EAEA,KAAA,SAAA;EAGT,KAAK,WAAW,QAAQ,YAAY;EACpC,KAAK,cAAc,QAAQ,eAAe;EAC1C,KAAK,cAAc,QAAQ,eAAe;CAC3C;;CAGA,IAAI,OAAe;EAClB,OAAO,KAAK,MAAM,OAAO,KAAK,MAAM,CAAC,CAAC;CACvC;;CAGA,UAAmB,UAA6B,KAAK,YAAY,KAAK,MAAM,UAAU,OAAO,KAAK,MAAM;;CAGxG,QAAiB,GAAW,MAAuB,KAAK,YAAY,KAAK,MAAM,IAAI,UAAU,KAAK,MAAM,GAAG,CAAC;;CAG5G,SAAkB,WAA4B,KAAK,OAAO,OAAO,KAAK,KAAM,CAAC,OAAO,UAAU,KAAK,MAAM,YAAY,QAAQ,KAAK,IAAI;;CAGtI,YAAyC;EAAE,YAAY,CAAC;EAAG,SAAS,CAAC;CAAE;;;;;CAMvE,IAAI,SAAqB;EACxB,IAAI,KAAK,UAAU,OAAO,KAAK;EAC/B,MAAM,MAAM,KAAK,MAAM,MAAM,UAAU;EACvC,OAAQ,IAAI,KAAK,UAAU;GAAE,YAAY,CAAC;GAAG,SAAS,CAAC;EAAE;CAC1D;;CAGA,KAAQ,KAAa,MAAkB;EACtC,IAAI,OAAO,KAAK,KAAK,IAAI,GAAG;EAC5B,IAAI,SAAS,KAAA,GAAW,KAAK,KAAK,IAAI,KAAM,OAAO,KAAK,CAAE;EAC1D,OAAO;CACR;;CAGA,aAA6B;EAC5B,MAAM,SAAS,KAAK;EACpB,KAAK,SAAS,CAAC;EACf,OAAO;CACR;AACD;;;;;;;;AA+BA,SAAgB,eACf,OACA,IACA,MACkB;CAClB,OAAO;EAAS;EAA4B;EAAU;CAAgC;AACvF;;;;;;AAwBA,SAAgB,cACf,KACA,SACA,MACgB;CAChB,OAAO;EAAE;EAAK;EAAS,GAAI,QAAQ,EAAE,KAAK;CAAG;AAC9C;;AAGA,IAAa,aAAa,cAAc,WAAW,SAAS,KAAK,WAAW,CAAC"}
|
package/dist/rng.d.ts
CHANGED
|
@@ -10,7 +10,9 @@ export declare class Rng {
|
|
|
10
10
|
next(): number;
|
|
11
11
|
/** Where it is in its sequence, for a save. `restore` with it carries on with the very same numbers */
|
|
12
12
|
save(): number;
|
|
13
|
+
/** Sets the generator's state to one taken by `save`, so it goes on with the very same numbers */
|
|
13
14
|
restore(state: number): void;
|
|
15
|
+
/** A float in [min, max), drawn from the sequence */
|
|
14
16
|
range(min: number, max: number): number;
|
|
15
17
|
/** Integer in [min, max] */
|
|
16
18
|
int(min: number, max: number): number;
|
package/dist/rng.js
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
//#region src/rng.ts
|
|
2
|
+
/**
|
|
3
|
+
* Small seeded PRNG (mulberry32). The simulation never touches Math.random so runs are reproducible.
|
|
4
|
+
*
|
|
5
|
+
* @beta
|
|
6
|
+
*/
|
|
7
|
+
var Rng = class {
|
|
8
|
+
state;
|
|
9
|
+
constructor(seed) {
|
|
10
|
+
this.state = seed >>> 0;
|
|
11
|
+
}
|
|
12
|
+
/** Float in [0, 1) */
|
|
13
|
+
next() {
|
|
14
|
+
this.state = this.state + 1831565813 >>> 0;
|
|
15
|
+
let t = this.state;
|
|
16
|
+
t = Math.imul(t ^ t >>> 15, t | 1);
|
|
17
|
+
t ^= t + Math.imul(t ^ t >>> 7, t | 61);
|
|
18
|
+
return ((t ^ t >>> 14) >>> 0) / 4294967296;
|
|
19
|
+
}
|
|
20
|
+
/** Where it is in its sequence, for a save. `restore` with it carries on with the very same numbers */
|
|
21
|
+
save() {
|
|
22
|
+
return this.state;
|
|
23
|
+
}
|
|
24
|
+
/** Sets the generator's state to one taken by `save`, so it goes on with the very same numbers */
|
|
25
|
+
restore(state) {
|
|
26
|
+
this.state = state >>> 0;
|
|
27
|
+
}
|
|
28
|
+
/** A float in [min, max), drawn from the sequence */
|
|
29
|
+
range(min, max) {
|
|
30
|
+
return min + (max - min) * this.next();
|
|
31
|
+
}
|
|
32
|
+
/** Integer in [min, max] */
|
|
33
|
+
int(min, max) {
|
|
34
|
+
return Math.floor(this.range(min, max + 1));
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
//#endregion
|
|
38
|
+
export { Rng };
|
|
39
|
+
|
|
40
|
+
//# sourceMappingURL=rng.js.map
|
package/dist/rng.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rng.js","names":[],"sources":["../src/rng.ts"],"sourcesContent":["/**\n * Small seeded PRNG (mulberry32). The simulation never touches Math.random so runs are reproducible.\n *\n * @beta\n */\nexport class Rng {\n\tprivate state: number\n\n\tconstructor(seed: number) {\n\t\tthis.state = seed >>> 0\n\t}\n\n\t/** Float in [0, 1) */\n\tnext(): number {\n\t\tthis.state = (this.state + 0x6d2b79f5) >>> 0\n\t\tlet t = this.state\n\t\tt = Math.imul(t ^ (t >>> 15), t | 1)\n\t\tt ^= t + Math.imul(t ^ (t >>> 7), t | 61)\n\t\treturn ((t ^ (t >>> 14)) >>> 0) / 4294967296\n\t}\n\n\t/** Where it is in its sequence, for a save. `restore` with it carries on with the very same numbers */\n\tsave(): number {\n\t\treturn this.state\n\t}\n\n\t/** Sets the generator's state to one taken by `save`, so it goes on with the very same numbers */\n\trestore(state: number): void {\n\t\tthis.state = state >>> 0\n\t}\n\n\t/** A float in [min, max), drawn from the sequence */\n\trange(min: number, max: number): number {\n\t\treturn min + (max - min) * this.next()\n\t}\n\n\t/** Integer in [min, max] */\n\tint(min: number, max: number): number {\n\t\treturn Math.floor(this.range(min, max + 1))\n\t}\n}\n"],"mappings":";;;;;;AAKA,IAAa,MAAb,MAAiB;CAChB;CAEA,YAAY,MAAc;EACzB,KAAK,QAAQ,SAAS;CACvB;;CAGA,OAAe;EACd,KAAK,QAAS,KAAK,QAAQ,eAAgB;EAC3C,IAAI,IAAI,KAAK;EACb,IAAI,KAAK,KAAK,IAAK,MAAM,IAAK,IAAI,CAAC;EACnC,KAAK,IAAI,KAAK,KAAK,IAAK,MAAM,GAAI,IAAI,EAAE;EACxC,SAAS,IAAK,MAAM,QAAS,KAAK;CACnC;;CAGA,OAAe;EACd,OAAO,KAAK;CACb;;CAGA,QAAQ,OAAqB;EAC5B,KAAK,QAAQ,UAAU;CACxB;;CAGA,MAAM,KAAa,KAAqB;EACvC,OAAO,OAAO,MAAM,OAAO,KAAK,KAAK;CACtC;;CAGA,IAAI,KAAa,KAAqB;EACrC,OAAO,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,CAAC,CAAC;CAC3C;AACD"}
|