@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
package/dist/effects.js
ADDED
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { defineComponent } from "./components.js";
|
|
2
|
+
import { fxStarted, fxStopped } from "./engineEvents.js";
|
|
3
|
+
import { replicateEvent } from "./replication.js";
|
|
4
|
+
import { plain } from "./plain.js";
|
|
5
|
+
//#region src/effects.ts
|
|
6
|
+
/** A number from a tick and a count, the same wherever the game runs */
|
|
7
|
+
var seedOf = (tick, count) => {
|
|
8
|
+
let h = Math.imul(tick ^ 2654435769, 2246822507) ^ Math.imul(count + 1, 3266489909);
|
|
9
|
+
h = Math.imul(h ^ h >>> 16, 2146121005);
|
|
10
|
+
return (h ^ h >>> 15) >>> 0;
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* How many effects a world played, for their ids and their seeds: the world's, and saved with it, so that the game
|
|
14
|
+
* loaded from a save gives its next effect the id and the seed the game that went on does (and a stop finds its start)
|
|
15
|
+
*/
|
|
16
|
+
var played = defineComponent({
|
|
17
|
+
id: "core.effectsPlayed",
|
|
18
|
+
default: () => 0
|
|
19
|
+
});
|
|
20
|
+
/**
|
|
21
|
+
* Plays one of the view's effects on the screens of the players who see where it is (or those it is for), now. What it
|
|
22
|
+
* gives back stops it (`stopFx`). Not in the world's state but for its count: a save, and a player who joins later,
|
|
23
|
+
* know nothing of the effect itself
|
|
24
|
+
*
|
|
25
|
+
* @beta
|
|
26
|
+
*/
|
|
27
|
+
function playFx(world, effect, options = {}) {
|
|
28
|
+
const count = world.state(played) + 1;
|
|
29
|
+
world.setState(played, count);
|
|
30
|
+
const { at, on, point, params, seed, to = "everyone", overFog, toward } = options;
|
|
31
|
+
const entity = typeof on === "number" ? world.get(on) : on;
|
|
32
|
+
if (on !== void 0 && !entity) return count;
|
|
33
|
+
const other = typeof toward === "number" ? world.get(toward) : toward && "pos" in toward ? toward : void 0;
|
|
34
|
+
if (typeof toward === "number" && !other) return count;
|
|
35
|
+
const cue = {
|
|
36
|
+
id: count,
|
|
37
|
+
effect,
|
|
38
|
+
seed: seed ?? seedOf(world.tick, count),
|
|
39
|
+
...entity ? {
|
|
40
|
+
on: entity.id,
|
|
41
|
+
x: entity.pos.x,
|
|
42
|
+
z: entity.pos.z
|
|
43
|
+
} : at && {
|
|
44
|
+
x: at.x,
|
|
45
|
+
z: at.z,
|
|
46
|
+
..."y" in at && { y: at.y }
|
|
47
|
+
},
|
|
48
|
+
...point && { point },
|
|
49
|
+
...params && { params: plain(params, `params of the effect "${effect}"`, "FxOptions") },
|
|
50
|
+
...to !== "everyone" && { to: Array.isArray(to) ? to : [to] },
|
|
51
|
+
...overFog && { overFog },
|
|
52
|
+
...other ? { toward: other.id } : toward && {
|
|
53
|
+
tx: toward.x,
|
|
54
|
+
tz: toward.z
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
world.events.emit(fxStarted, cue);
|
|
58
|
+
return count;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Stops an effect the rules played (`playFx`), on every screen: as its own `stop` says, over `fade` seconds
|
|
62
|
+
*
|
|
63
|
+
* @beta
|
|
64
|
+
*/
|
|
65
|
+
function stopFx(world, id, options = {}) {
|
|
66
|
+
world.events.emit(fxStopped, {
|
|
67
|
+
id,
|
|
68
|
+
...options.fade !== void 0 && { fade: options.fade }
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
/** The effects of the rules a seat was shown, by id, for a stop to be told to whom saw the start: the latest so many */
|
|
72
|
+
var SHOWN = {};
|
|
73
|
+
/**
|
|
74
|
+
* The effects of the rules a seat was shown (`LocalSession.keptEffects`)
|
|
75
|
+
*
|
|
76
|
+
* @internal
|
|
77
|
+
*/
|
|
78
|
+
var shownFx = (view) => view.keep(SHOWN, () => /* @__PURE__ */ new Set());
|
|
79
|
+
/** An effect the rules play: to whom it is for, who sees where it is (what is there to be noticed, over the fog) */
|
|
80
|
+
var toldFx = replicateEvent(fxStarted, "fx", ({ id, effect, to, overFog, on, toward, ...rest }, view) => {
|
|
81
|
+
if (to && !to.includes(view.player)) return void 0;
|
|
82
|
+
const entity = on === void 0 ? void 0 : view.world.get(on);
|
|
83
|
+
const other = toward === void 0 ? void 0 : view.world.get(toward);
|
|
84
|
+
const seenEnd = (one) => !!one && (view.knows(one) || !!overFog && !one.hidden);
|
|
85
|
+
const seen = entity ? seenEnd(entity) : rest.x === void 0 || overFog || view.sees(rest.x, rest.z);
|
|
86
|
+
const seenOther = other ? seenEnd(other) : rest.tx !== void 0 && (overFog || view.sees(rest.tx, rest.tz));
|
|
87
|
+
if (!seen && !seenOther) return void 0;
|
|
88
|
+
const shown = shownFx(view);
|
|
89
|
+
shown.add(id);
|
|
90
|
+
if (shown.size > view.mostEffects) shown.delete(shown.values().next().value);
|
|
91
|
+
return {
|
|
92
|
+
type: "fx",
|
|
93
|
+
id,
|
|
94
|
+
fx: effect,
|
|
95
|
+
...rest,
|
|
96
|
+
...on !== void 0 && { on },
|
|
97
|
+
...overFog && { overFog },
|
|
98
|
+
...other && view.knows(other) && { toward: other.id }
|
|
99
|
+
};
|
|
100
|
+
});
|
|
101
|
+
/** An effect stopped: to whom saw it start */
|
|
102
|
+
var toldFxStopped = replicateEvent(fxStopped, "fxStop", ({ id, fade }, view) => shownFx(view).delete(id) ? {
|
|
103
|
+
type: "fxStop",
|
|
104
|
+
id,
|
|
105
|
+
...fade !== void 0 && { fade }
|
|
106
|
+
} : void 0);
|
|
107
|
+
//#endregion
|
|
108
|
+
export { playFx, played, shownFx, stopFx, toldFx, toldFxStopped };
|
|
109
|
+
|
|
110
|
+
//# sourceMappingURL=effects.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"effects.js","names":[],"sources":["../src/effects.ts"],"sourcesContent":["import { fxStarted, fxStopped } from '#engine/engineEvents'\nimport { defineComponent } from './components'\nimport type { Audience } from './dialog'\nimport type { Entity, PlayerId } from './entity'\nimport type { Vec2 } from './math'\nimport { plain } from './plain'\nimport type { World } from './world'\nimport { replicateEvent } from './replication'\nimport type { SessionView } from './replication'\n\n/*\n * Effects are the screen's: fire, a blast, a glow, made and tuned in a game's view (`GameView.fx.defs`). The rules say when\n * one plays, and where, so that every player who sees the place sees it at the same moment (effects plan A3): a mine\n * going off, a shrine waking. Nothing an effect does decides anything in the game; it is not in the world's state, nor\n * in a save. What lasts is shown by what the world keeps (a building's damaged look, a map's own effects)\n */\n\n/**\n * An effect the rules play on the screens, as the engine's `effect` event carries it (`world.fx`)\n *\n * @beta\n */\nexport interface FxCue {\n\t/** The rules' handle on it, for `world.stopFx` */\n\tid: number\n\t/** Which of the view's effects, by name (`GameView.fx.defs`) */\n\teffect: string\n\t/** Where: a place, at a height or on the ground */\n\tx?: number\n\t/** The height it is at; on the ground when left out */\n\ty?: number\n\t/** The north-south place, in cells */\n\tz?: number\n\t/** Or on an entity, by its id: it follows it on the screen, at a point of its model */\n\ton?: number\n\t/** The point of the entity's model it follows, by name; the entity's middle when left out */\n\tpoint?: string\n\t/** Its knobs, over the effect's own: plain data, as it goes to every screen */\n\tparams?: Record<string, unknown>\n\t/** What its random parts go by: the same on every screen */\n\tseed: number\n\t/** Who sees it: everyone who sees the place when left out */\n\tto?: PlayerId[]\n\t/** Seen over the fog of war, by whom it is for: what is there to be noticed */\n\toverFog?: boolean\n\t/** The other end of one drawn between two (`FxOptions.toward`): an entity by its id */\n\ttoward?: number\n\t/** Or a place, east-west */\n\ttx?: number\n\t/** And north-south */\n\ttz?: number\n}\n\n/**\n * How the rules play an effect (`world.fx`)\n *\n * @beta\n */\nexport interface FxOptions {\n\t/** A place: on the ground (`{ x, z }`) or at a height (`{ x, y, z }`) */\n\tat?: Vec2 | { x: number; y: number; z: number }\n\t/** Or an entity: on the screen it follows it, and ends with it */\n\ton?: Entity | number\n\t/** A point of the entity's model (`ModelDef.points`) */\n\tpoint?: string\n\t/** Its knobs, over the effect's own (`EffectDef.params`): plain data */\n\tparams?: Record<string, unknown>\n\t/** What its random parts go by: one made from the tick when left out, the same on every screen all the same */\n\tseed?: number\n\t/** Who sees it: a player, some, or everyone who sees the place (when left out) */\n\tto?: Audience\n\t/** Seen over the fog of war by whom it is for, as what is there to be noticed. No when left out */\n\toverFog?: boolean\n\t/**\n\t * The other end, for an effect drawn between two (a beam, a tether, a link of a chain: the client's `linkFx`): an\n\t * entity it follows on the screen, or a place. It starts at `at` or `on`; seen by whoever sees either end\n\t *\n\t * @beta\n\t */\n\ttoward?: Entity | number | Vec2\n}\n\n/** A number from a tick and a count, the same wherever the game runs */\nconst seedOf = (tick: number, count: number): number => {\n\tlet h = Math.imul(tick ^ 0x9e3779b9, 0x85ebca6b) ^ Math.imul(count + 1, 0xc2b2ae35)\n\th = Math.imul(h ^ (h >>> 16), 0x7feb352d)\n\treturn (h ^ (h >>> 15)) >>> 0\n}\n\n/**\n * How many effects a world played, for their ids and their seeds: the world's, and saved with it, so that the game\n * loaded from a save gives its next effect the id and the seed the game that went on does (and a stop finds its start)\n */\nexport const played = defineComponent<number>({ id: 'core.effectsPlayed', default: () => 0 })\n\n/**\n * Plays one of the view's effects on the screens of the players who see where it is (or those it is for), now. What it\n * gives back stops it (`stopFx`). Not in the world's state but for its count: a save, and a player who joins later,\n * know nothing of the effect itself\n *\n * @beta\n */\nexport function playFx(world: World, effect: string, options: FxOptions = {}): number {\n\tconst count = world.state(played) + 1\n\tworld.setState(played, count)\n\tconst { at, on, point, params, seed, to = 'everyone', overFog, toward } = options\n\tconst entity = typeof on === 'number' ? world.get(on) : on\n\tif (on !== undefined && !entity) return count\n\tconst other = typeof toward === 'number' ? world.get(toward) : toward && 'pos' in toward ? (toward as Entity) : undefined\n\tif (typeof toward === 'number' && !other) return count\n\tconst cue: FxCue = {\n\t\tid: count,\n\t\teffect,\n\t\tseed: seed ?? seedOf(world.tick, count),\n\t\t...(entity ? { on: entity.id, x: entity.pos.x, z: entity.pos.z } : at && { x: at.x, z: at.z, ...('y' in at && { y: at.y }) }),\n\t\t...(point && { point }),\n\t\t...(params && { params: plain(params, `params of the effect \"${effect}\"`, 'FxOptions') as Record<string, unknown> }),\n\t\t...(to !== 'everyone' && { to: Array.isArray(to) ? to : [to] }),\n\t\t...(overFog && { overFog }),\n\t\t...(other ? { toward: other.id } : toward && { tx: (toward as Vec2).x, tz: (toward as Vec2).z })\n\t}\n\tworld.events.emit(fxStarted, cue)\n\treturn count\n}\n\n/**\n * Stops an effect the rules played (`playFx`), on every screen: as its own `stop` says, over `fade` seconds\n *\n * @beta\n */\nexport function stopFx(world: World, id: number, options: { fade?: number } = {}): void {\n\tworld.events.emit(fxStopped, { id, ...(options.fade !== undefined && { fade: options.fade }) })\n}\n\n/** The effects of the rules a seat was shown, by id, for a stop to be told to whom saw the start: the latest so many */\nconst SHOWN = {}\n\n/**\n * The effects of the rules a seat was shown (`LocalSession.keptEffects`)\n *\n * @internal\n */\nexport const shownFx = (view: SessionView): Set<number> => view.keep(SHOWN, () => new Set<number>())\n\n/** An effect the rules play: to whom it is for, who sees where it is (what is there to be noticed, over the fog) */\nexport const toldFx = replicateEvent(fxStarted, 'fx', ({ id, effect, to, overFog, on, toward, ...rest }, view) => {\n\tif (to && !to.includes(view.player)) return undefined\n\tconst entity = on === undefined ? undefined : view.world.get(on)\n\tconst other = toward === undefined ? undefined : view.world.get(toward)\n\tconst seenEnd = (one: typeof entity) => !!one && (view.knows(one) || (!!overFog && !one.hidden))\n\tconst seen = entity ? seenEnd(entity) : rest.x === undefined || overFog || view.sees(rest.x, rest.z!)\n\t// one drawn between two: by whoever sees either end\n\tconst seenOther = other ? seenEnd(other) : rest.tx !== undefined && (overFog || view.sees(rest.tx, rest.tz!))\n\tif (!seen && !seenOther) return undefined\n\tconst shown = shownFx(view)\n\tshown.add(id)\n\t// most are never stopped: the oldest are let go of, as a stop that late has nothing left to stop\n\tif (shown.size > view.mostEffects) shown.delete(shown.values().next().value!)\n\treturn {\n\t\ttype: 'fx',\n\t\tid,\n\t\tfx: effect,\n\t\t...rest,\n\t\t...(on !== undefined && { on }),\n\t\t...(overFog && { overFog }),\n\t\t...(other && view.knows(other) && { toward: other.id })\n\t}\n})\n\n/** An effect stopped: to whom saw it start */\nexport const toldFxStopped = replicateEvent(fxStopped, 'fxStop', ({ id, fade }, view) =>\n\tshownFx(view).delete(id) ? { type: 'fxStop', id, ...(fade !== undefined && { fade }) } : undefined\n)\n"],"mappings":";;;;;;AAmFA,IAAM,UAAU,MAAc,UAA0B;CACvD,IAAI,IAAI,KAAK,KAAK,OAAO,YAAY,UAAU,IAAI,KAAK,KAAK,QAAQ,GAAG,UAAU;CAClF,IAAI,KAAK,KAAK,IAAK,MAAM,IAAK,UAAU;CACxC,QAAQ,IAAK,MAAM,QAAS;AAC7B;;;;;AAMA,IAAa,SAAS,gBAAwB;CAAE,IAAI;CAAsB,eAAe;AAAE,CAAC;;;;;;;;AAS5F,SAAgB,OAAO,OAAc,QAAgB,UAAqB,CAAC,GAAW;CACrF,MAAM,QAAQ,MAAM,MAAM,MAAM,IAAI;CACpC,MAAM,SAAS,QAAQ,KAAK;CAC5B,MAAM,EAAE,IAAI,IAAI,OAAO,QAAQ,MAAM,KAAK,YAAY,SAAS,WAAW;CAC1E,MAAM,SAAS,OAAO,OAAO,WAAW,MAAM,IAAI,EAAE,IAAI;CACxD,IAAI,OAAO,KAAA,KAAa,CAAC,QAAQ,OAAO;CACxC,MAAM,QAAQ,OAAO,WAAW,WAAW,MAAM,IAAI,MAAM,IAAI,UAAU,SAAS,SAAU,SAAoB,KAAA;CAChH,IAAI,OAAO,WAAW,YAAY,CAAC,OAAO,OAAO;CACjD,MAAM,MAAa;EAClB,IAAI;EACJ;EACA,MAAM,QAAQ,OAAO,MAAM,MAAM,KAAK;EACtC,GAAI,SAAS;GAAE,IAAI,OAAO;GAAI,GAAG,OAAO,IAAI;GAAG,GAAG,OAAO,IAAI;EAAE,IAAI,MAAM;GAAE,GAAG,GAAG;GAAG,GAAG,GAAG;GAAG,GAAI,OAAO,MAAM,EAAE,GAAG,GAAG,EAAE;EAAG;EAC3H,GAAI,SAAS,EAAE,MAAM;EACrB,GAAI,UAAU,EAAE,QAAQ,MAAM,QAAQ,yBAAyB,OAAO,IAAI,WAAW,EAA6B;EAClH,GAAI,OAAO,cAAc,EAAE,IAAI,MAAM,QAAQ,EAAE,IAAI,KAAK,CAAC,EAAE,EAAE;EAC7D,GAAI,WAAW,EAAE,QAAQ;EACzB,GAAI,QAAQ,EAAE,QAAQ,MAAM,GAAG,IAAI,UAAU;GAAE,IAAK,OAAgB;GAAG,IAAK,OAAgB;EAAE;CAC/F;CACA,MAAM,OAAO,KAAK,WAAW,GAAG;CAChC,OAAO;AACR;;;;;;AAOA,SAAgB,OAAO,OAAc,IAAY,UAA6B,CAAC,GAAS;CACvF,MAAM,OAAO,KAAK,WAAW;EAAE;EAAI,GAAI,QAAQ,SAAS,KAAA,KAAa,EAAE,MAAM,QAAQ,KAAK;CAAG,CAAC;AAC/F;;AAGA,IAAM,QAAQ,CAAC;;;;;;AAOf,IAAa,WAAW,SAAmC,KAAK,KAAK,6BAAa,IAAI,IAAY,CAAC;;AAGnG,IAAa,SAAS,eAAe,WAAW,OAAO,EAAE,IAAI,QAAQ,IAAI,SAAS,IAAI,QAAQ,GAAG,QAAQ,SAAS;CACjH,IAAI,MAAM,CAAC,GAAG,SAAS,KAAK,MAAM,GAAG,OAAO,KAAA;CAC5C,MAAM,SAAS,OAAO,KAAA,IAAY,KAAA,IAAY,KAAK,MAAM,IAAI,EAAE;CAC/D,MAAM,QAAQ,WAAW,KAAA,IAAY,KAAA,IAAY,KAAK,MAAM,IAAI,MAAM;CACtE,MAAM,WAAW,QAAuB,CAAC,CAAC,QAAQ,KAAK,MAAM,GAAG,KAAM,CAAC,CAAC,WAAW,CAAC,IAAI;CACxF,MAAM,OAAO,SAAS,QAAQ,MAAM,IAAI,KAAK,MAAM,KAAA,KAAa,WAAW,KAAK,KAAK,KAAK,GAAG,KAAK,CAAE;CAEpG,MAAM,YAAY,QAAQ,QAAQ,KAAK,IAAI,KAAK,OAAO,KAAA,MAAc,WAAW,KAAK,KAAK,KAAK,IAAI,KAAK,EAAG;CAC3G,IAAI,CAAC,QAAQ,CAAC,WAAW,OAAO,KAAA;CAChC,MAAM,QAAQ,QAAQ,IAAI;CAC1B,MAAM,IAAI,EAAE;CAEZ,IAAI,MAAM,OAAO,KAAK,aAAa,MAAM,OAAO,MAAM,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,KAAM;CAC5E,OAAO;EACN,MAAM;EACN;EACA,IAAI;EACJ,GAAG;EACH,GAAI,OAAO,KAAA,KAAa,EAAE,GAAG;EAC7B,GAAI,WAAW,EAAE,QAAQ;EACzB,GAAI,SAAS,KAAK,MAAM,KAAK,KAAK,EAAE,QAAQ,MAAM,GAAG;CACtD;AACD,CAAC;;AAGD,IAAa,gBAAgB,eAAe,WAAW,WAAW,EAAE,IAAI,QAAQ,SAC/E,QAAQ,IAAI,CAAC,CAAC,OAAO,EAAE,IAAI;CAAE,MAAM;CAAU;CAAI,GAAI,SAAS,KAAA,KAAa,EAAE,KAAK;AAAG,IAAI,KAAA,CAC1F"}
|
package/dist/endings.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ export declare const pauses: import("./components").Component<{
|
|
|
7
7
|
used: Record<number, number>;
|
|
8
8
|
}>;
|
|
9
9
|
/**
|
|
10
|
-
* How many pauses a player has left (`
|
|
10
|
+
* How many pauses a player has left (`RuleSettings.talk.pauses.each`, less what they used)
|
|
11
11
|
*
|
|
12
12
|
* @beta
|
|
13
13
|
*/
|
package/dist/endings.js
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { defineComponent } from "./components.js";
|
|
2
|
+
import { pauseAsked, playerSurrendered } from "./engineEvents.js";
|
|
3
|
+
import { engineMessage } from "./messages.js";
|
|
4
|
+
import { defeat } from "./systems/victory.js";
|
|
5
|
+
//#region src/endings.ts
|
|
6
|
+
/** How many pauses each player has used, by player */
|
|
7
|
+
var pauses = defineComponent({
|
|
8
|
+
id: "core.pauses",
|
|
9
|
+
default: () => ({ used: {} })
|
|
10
|
+
});
|
|
11
|
+
/**
|
|
12
|
+
* How many pauses a player has left (`RuleSettings.talk.pauses.each`, less what they used)
|
|
13
|
+
*
|
|
14
|
+
* @beta
|
|
15
|
+
*/
|
|
16
|
+
function pausesLeft(world, player) {
|
|
17
|
+
return Math.max(0, world.settings.talk.pauses.each - (world.state(pauses).used[player] ?? 0));
|
|
18
|
+
}
|
|
19
|
+
/** Whether a player may give up or pause: one in the game, not out of it, in a game not over */
|
|
20
|
+
function playing(world, player) {
|
|
21
|
+
const who = world.player(player);
|
|
22
|
+
return !who.neutral && !who.creeps && !who.defeated && world.winner === null;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* A player gives up: out of the game as if beaten, once the game's `beforeSurrender` lets them. The rest of their
|
|
26
|
+
* side plays on; a side with nobody left loses, as the game's own way to win says (`lastTeamStanding` counts one who
|
|
27
|
+
* gave up as one who was in the game)
|
|
28
|
+
*
|
|
29
|
+
* @beta
|
|
30
|
+
*/
|
|
31
|
+
function surrender(world, player) {
|
|
32
|
+
if (!playing(world, player)) return;
|
|
33
|
+
const asked = {
|
|
34
|
+
player,
|
|
35
|
+
cancelled: false
|
|
36
|
+
};
|
|
37
|
+
if (world.hooks.has("beforeSurrender")) world.hooks.run("beforeSurrender", asked);
|
|
38
|
+
if (asked.cancelled) return world.message(player, asked.reason ?? engineMessage("cannotDoThat"));
|
|
39
|
+
const who = world.player(player);
|
|
40
|
+
who.established = true;
|
|
41
|
+
world.events.emit(playerSurrendered, { player });
|
|
42
|
+
defeat(world, player);
|
|
43
|
+
for (const other of world.players.values()) if (other.id !== player && !other.neutral) world.message(other.id, engineMessage("surrendered", { player: who.name }), "info");
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* A player asks for the game to be paused: one of their pauses (`RuleSettings.talk.pauses.each`), for at most
|
|
47
|
+
* `RuleSettings.talk.pauses.seconds`, once the game's `beforePause` lets them. Whoever runs the world pauses it on the event
|
|
48
|
+
* (`pauseAsked`): a server does; a game played in the page pauses with its menu instead
|
|
49
|
+
*
|
|
50
|
+
* @internal
|
|
51
|
+
*/
|
|
52
|
+
function askPause(world, player) {
|
|
53
|
+
if (!playing(world, player)) return;
|
|
54
|
+
const left = pausesLeft(world, player);
|
|
55
|
+
if (left <= 0) return world.message(player, engineMessage("noPausesLeft"));
|
|
56
|
+
const asked = {
|
|
57
|
+
player,
|
|
58
|
+
left,
|
|
59
|
+
seconds: world.settings.talk.pauses.seconds,
|
|
60
|
+
cancelled: false
|
|
61
|
+
};
|
|
62
|
+
if (world.hooks.has("beforePause")) world.hooks.run("beforePause", asked);
|
|
63
|
+
if (asked.cancelled) return world.message(player, asked.reason ?? engineMessage("cannotDoThat"));
|
|
64
|
+
const { used } = world.state(pauses);
|
|
65
|
+
world.setState(pauses, { used: {
|
|
66
|
+
...used,
|
|
67
|
+
[player]: (used[player] ?? 0) + 1
|
|
68
|
+
} });
|
|
69
|
+
world.events.emit(pauseAsked, {
|
|
70
|
+
player,
|
|
71
|
+
seconds: Math.max(0, asked.seconds),
|
|
72
|
+
left: left - 1
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
//#endregion
|
|
76
|
+
export { askPause, pauses, pausesLeft, surrender };
|
|
77
|
+
|
|
78
|
+
//# sourceMappingURL=endings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"endings.js","names":["pauseAskedEvent"],"sources":["../src/endings.ts"],"sourcesContent":["import { pauseAsked as pauseAskedEvent, playerSurrendered } from '#engine/engineEvents'\nimport { defineComponent } from './components'\nimport type { PlayerId } from './entity'\nimport { type BeforePause, type BeforeSurrender, type Uncancelled } from './hooks'\nimport { engineMessage } from './messages'\nimport { defeat } from './systems/victory'\nimport type { World } from './world'\n\n/*\n * Giving up, and asking for a pause (S53). Giving up is the defeat there already is, reached another way: the player\n * is out, told so, and the others are told who gave up. A pause is asked of whoever runs the world (a server: its host\n * stops stepping it), as the world cannot stop itself and still hear that it is to go on; how many each player has\n * used is kept in the world, so in a save, and the game's hooks decide (`beforeSurrender`, `beforePause`).\n */\n\n/** How many pauses each player has used, by player */\nexport const pauses = defineComponent<{ used: Record<number, number> }>({ id: 'core.pauses', default: () => ({ used: {} }) })\n\n/**\n * How many pauses a player has left (`RuleSettings.talk.pauses.each`, less what they used)\n *\n * @beta\n */\nexport function pausesLeft(world: World, player: PlayerId): number {\n\treturn Math.max(0, world.settings.talk.pauses.each - (world.state(pauses).used[player] ?? 0))\n}\n\n/** Whether a player may give up or pause: one in the game, not out of it, in a game not over */\nfunction playing(world: World, player: PlayerId): boolean {\n\tconst who = world.player(player)\n\treturn !who.neutral && !who.creeps && !who.defeated && world.winner === null\n}\n\n/**\n * A player gives up: out of the game as if beaten, once the game's `beforeSurrender` lets them. The rest of their\n * side plays on; a side with nobody left loses, as the game's own way to win says (`lastTeamStanding` counts one who\n * gave up as one who was in the game)\n *\n * @beta\n */\nexport function surrender(world: World, player: PlayerId): void {\n\tif (!playing(world, player)) return\n\tconst asked: Uncancelled<BeforeSurrender> = { player, cancelled: false }\n\tif (world.hooks.has('beforeSurrender')) world.hooks.run('beforeSurrender', asked)\n\tif (asked.cancelled) return world.message(player, asked.reason ?? engineMessage('cannotDoThat'))\n\tconst who = world.player(player)\n\t// in the game, for the rule of the last side standing: one who never had a building is counted too\n\twho.established = true\n\tworld.events.emit(playerSurrendered, { player })\n\tdefeat(world, player)\n\tfor (const other of world.players.values()) {\n\t\tif (other.id !== player && !other.neutral) world.message(other.id, engineMessage('surrendered', { player: who.name }), 'info')\n\t}\n}\n\n/**\n * A player asks for the game to be paused: one of their pauses (`RuleSettings.talk.pauses.each`), for at most\n * `RuleSettings.talk.pauses.seconds`, once the game's `beforePause` lets them. Whoever runs the world pauses it on the event\n * (`pauseAsked`): a server does; a game played in the page pauses with its menu instead\n *\n * @internal\n */\nexport function askPause(world: World, player: PlayerId): void {\n\tif (!playing(world, player)) return\n\tconst left = pausesLeft(world, player)\n\tif (left <= 0) return world.message(player, engineMessage('noPausesLeft'))\n\tconst asked: Uncancelled<BeforePause> = { player, left, seconds: world.settings.talk.pauses.seconds, cancelled: false }\n\tif (world.hooks.has('beforePause')) world.hooks.run('beforePause', asked)\n\tif (asked.cancelled) return world.message(player, asked.reason ?? engineMessage('cannotDoThat'))\n\tconst { used } = world.state(pauses)\n\tworld.setState(pauses, { used: { ...used, [player]: (used[player] ?? 0) + 1 } })\n\tworld.events.emit(pauseAskedEvent, { player, seconds: Math.max(0, asked.seconds), left: left - 1 })\n}\n"],"mappings":";;;;;;AAgBA,IAAa,SAAS,gBAAkD;CAAE,IAAI;CAAe,gBAAgB,EAAE,MAAM,CAAC,EAAE;AAAG,CAAC;;;;;;AAO5H,SAAgB,WAAW,OAAc,QAA0B;CAClE,OAAO,KAAK,IAAI,GAAG,MAAM,SAAS,KAAK,OAAO,QAAQ,MAAM,MAAM,MAAM,CAAC,CAAC,KAAK,WAAW,EAAE;AAC7F;;AAGA,SAAS,QAAQ,OAAc,QAA2B;CACzD,MAAM,MAAM,MAAM,OAAO,MAAM;CAC/B,OAAO,CAAC,IAAI,WAAW,CAAC,IAAI,UAAU,CAAC,IAAI,YAAY,MAAM,WAAW;AACzE;;;;;;;;AASA,SAAgB,UAAU,OAAc,QAAwB;CAC/D,IAAI,CAAC,QAAQ,OAAO,MAAM,GAAG;CAC7B,MAAM,QAAsC;EAAE;EAAQ,WAAW;CAAM;CACvE,IAAI,MAAM,MAAM,IAAI,iBAAiB,GAAG,MAAM,MAAM,IAAI,mBAAmB,KAAK;CAChF,IAAI,MAAM,WAAW,OAAO,MAAM,QAAQ,QAAQ,MAAM,UAAU,cAAc,cAAc,CAAC;CAC/F,MAAM,MAAM,MAAM,OAAO,MAAM;CAE/B,IAAI,cAAc;CAClB,MAAM,OAAO,KAAK,mBAAmB,EAAE,OAAO,CAAC;CAC/C,OAAO,OAAO,MAAM;CACpB,KAAK,MAAM,SAAS,MAAM,QAAQ,OAAO,GACxC,IAAI,MAAM,OAAO,UAAU,CAAC,MAAM,SAAS,MAAM,QAAQ,MAAM,IAAI,cAAc,eAAe,EAAE,QAAQ,IAAI,KAAK,CAAC,GAAG,MAAM;AAE/H;;;;;;;;AASA,SAAgB,SAAS,OAAc,QAAwB;CAC9D,IAAI,CAAC,QAAQ,OAAO,MAAM,GAAG;CAC7B,MAAM,OAAO,WAAW,OAAO,MAAM;CACrC,IAAI,QAAQ,GAAG,OAAO,MAAM,QAAQ,QAAQ,cAAc,cAAc,CAAC;CACzE,MAAM,QAAkC;EAAE;EAAQ;EAAM,SAAS,MAAM,SAAS,KAAK,OAAO;EAAS,WAAW;CAAM;CACtH,IAAI,MAAM,MAAM,IAAI,aAAa,GAAG,MAAM,MAAM,IAAI,eAAe,KAAK;CACxE,IAAI,MAAM,WAAW,OAAO,MAAM,QAAQ,QAAQ,MAAM,UAAU,cAAc,cAAc,CAAC;CAC/F,MAAM,EAAE,SAAS,MAAM,MAAM,MAAM;CACnC,MAAM,SAAS,QAAQ,EAAE,MAAM;EAAE,GAAG;GAAO,UAAU,KAAK,WAAW,KAAK;CAAE,EAAE,CAAC;CAC/E,MAAM,OAAO,KAAKA,YAAiB;EAAE;EAAQ,SAAS,KAAK,IAAI,GAAG,MAAM,OAAO;EAAG,MAAM,OAAO;CAAE,CAAC;AACnG"}
|
package/dist/engagement.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import type
|
|
1
|
+
import { type Entity } from './entity';
|
|
2
|
+
import { type Vec2 } from './math';
|
|
3
3
|
import type { World } from './world';
|
|
4
4
|
/**
|
|
5
5
|
* Where an attacker fights from: `ground`, `air` and `water` for the engine, any other name for a game's own
|
|
@@ -7,6 +7,13 @@ import type { World } from './world';
|
|
|
7
7
|
* @beta
|
|
8
8
|
*/
|
|
9
9
|
export type EngageLayer = 'ground' | 'air' | 'water' | (string & {});
|
|
10
|
+
/**
|
|
11
|
+
* How much farther an attack reaches a structure, whose edge is its footprint's: the navmesh keeps units a little away
|
|
12
|
+
* from walls (`engage`, the stances pack, and where an attacker stands by a building)
|
|
13
|
+
*
|
|
14
|
+
* @beta
|
|
15
|
+
*/
|
|
16
|
+
export declare const STRUCTURE_REACH = 0.4;
|
|
10
17
|
/**
|
|
11
18
|
* Seconds a target that could not be got at is left alone (see `shun`)
|
|
12
19
|
*
|
|
@@ -20,7 +27,7 @@ export declare const SHUN_TIME = 4;
|
|
|
20
27
|
*/
|
|
21
28
|
export declare function bandOf(world: World, attacker: Entity): number;
|
|
22
29
|
/**
|
|
23
|
-
* The layer an attacker fights from, as the game's rules say (`
|
|
30
|
+
* The layer an attacker fights from, as the game's rules say (`RuleSettings.combat.engageLayer`)
|
|
24
31
|
*
|
|
25
32
|
* @beta
|
|
26
33
|
*/
|
|
@@ -39,7 +46,7 @@ export declare function defaultEngageLayer(_world: World, attacker: Entity): Eng
|
|
|
39
46
|
*/
|
|
40
47
|
export declare function defaultEngageRoom(world: World, target: Entity, attacker: Entity): number;
|
|
41
48
|
/**
|
|
42
|
-
* How many attackers like this one may fight the target at once, as the game's rules say (`
|
|
49
|
+
* How many attackers like this one may fight the target at once, as the game's rules say (`RuleSettings.combat.engageRoom`)
|
|
43
50
|
*
|
|
44
51
|
* @beta
|
|
45
52
|
*/
|
|
@@ -76,7 +83,8 @@ export declare function engagedWith(world: World, attacker: Entity): Entity | un
|
|
|
76
83
|
*/
|
|
77
84
|
export declare function engageWith(world: World, attacker: Entity, target: Entity): void;
|
|
78
85
|
/**
|
|
79
|
-
* Lets go of whatever the attacker was engaged with, and of its spot there
|
|
86
|
+
* Lets go of whatever the attacker was engaged with, and of its spot there. Without the world, the rest of the tick
|
|
87
|
+
* still counts it there, with its spot
|
|
80
88
|
*
|
|
81
89
|
* @beta
|
|
82
90
|
*/
|
|
@@ -89,7 +97,7 @@ export declare function release(attacker: Entity, world?: World): void;
|
|
|
89
97
|
*/
|
|
90
98
|
export declare function spotFor(world: World, attacker: Entity, target: Entity): Vec2;
|
|
91
99
|
/**
|
|
92
|
-
* Whether the attacker has been closing in on the target for longer than the game lets it (`
|
|
100
|
+
* Whether the attacker has been closing in on the target for longer than the game lets it (`RuleSettings.combat.giveUpChase`) without getting closer
|
|
93
101
|
*
|
|
94
102
|
* @beta
|
|
95
103
|
*/
|
|
@@ -106,3 +114,29 @@ export declare function shun(world: World, attacker: Entity, target: Entity, sec
|
|
|
106
114
|
* @beta
|
|
107
115
|
*/
|
|
108
116
|
export declare function isShunned(world: World, attacker: Entity, target: Entity): boolean;
|
|
117
|
+
/**
|
|
118
|
+
* The engine's distance from the middle of a target at which an attacker waits for room there
|
|
119
|
+
* (`RuleSettings.combat.queueDistance`): just behind those fighting it, the target's size, two of the attacker, its reach
|
|
120
|
+
* and half a cell out
|
|
121
|
+
*
|
|
122
|
+
* @beta
|
|
123
|
+
*/
|
|
124
|
+
export declare function defaultQueueDistance(world: World, attacker: Entity, target: Entity): number;
|
|
125
|
+
/**
|
|
126
|
+
* Where an attacker waits for room at a target (`holdOff`): out at the game's queue distance
|
|
127
|
+
* (`RuleSettings.combat.queueDistance`) on its own side of it, or at `angle` (seen from the target, about the up axis), on
|
|
128
|
+
* ground it can stand on
|
|
129
|
+
*
|
|
130
|
+
* @beta
|
|
131
|
+
*/
|
|
132
|
+
export declare function queuePoint(world: World, attacker: Entity, target: Entity, angle?: number): Vec2;
|
|
133
|
+
/**
|
|
134
|
+
* Where the attacker could fight the target from now: a place with room for it (`isCrowded`) where no one stands, nor
|
|
135
|
+
* is on the way to: round a unit on its ring, round a building by its sides, the nearest its own side first. `straight`
|
|
136
|
+
* (the default): only one it can walk straight to without pushing through those fighting a unit (round a building, the
|
|
137
|
+
* way round is the navigation's); false: any, however far round. None when there is no room for it or every place is
|
|
138
|
+
* taken; the target's own place for what flies. What an attacker waiting for room (`holdOff`) asks before it goes in
|
|
139
|
+
*
|
|
140
|
+
* @beta
|
|
141
|
+
*/
|
|
142
|
+
export declare function freeSpot(world: World, attacker: Entity, target: Entity, straight?: boolean): Vec2 | undefined;
|