@v12-engine/engine 0.1.1 → 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/commands.js
ADDED
|
@@ -0,0 +1,636 @@
|
|
|
1
|
+
import { atan2 } from "./exactMath.js";
|
|
2
|
+
import { distSq } from "./math.js";
|
|
3
|
+
import { statsOf } from "./stats.js";
|
|
4
|
+
import { commandHandled, commandRejected, constructionCancelled } from "./engineEvents.js";
|
|
5
|
+
import { replicateEvent } from "./replication.js";
|
|
6
|
+
import { constructionSite, underConstruction } from "./systems/construction.js";
|
|
7
|
+
import { fighting, moving } from "./entity.js";
|
|
8
|
+
import { giveBack } from "./player.js";
|
|
9
|
+
import { productionOf } from "./systems/productionQueue.js";
|
|
10
|
+
import { isStunned } from "./abilities/buffs.js";
|
|
11
|
+
import { joinFormation } from "./systems/movement.js";
|
|
12
|
+
import { canAttack } from "./systems/combat.js";
|
|
13
|
+
import { dashing } from "./dashing.js";
|
|
14
|
+
import { steerMissile } from "./abilities/effects.js";
|
|
15
|
+
import { CINEMATIC_OUTCOMES, cinematicChose, cinematicEnded } from "./cinematics.js";
|
|
16
|
+
import { Invalid, bool, id, ids, index, number, object, oneOf, optional, point, string } from "./fields.js";
|
|
17
|
+
import { cameraCommandFields, cameraCommanded } from "./cameraOrders.js";
|
|
18
|
+
import { aimKind } from "./targeting.js";
|
|
19
|
+
import { formationPoints } from "./formation.js";
|
|
20
|
+
import { createOrder, giveOrder, interrupt } from "./orders/queue.js";
|
|
21
|
+
import { castAside, notReady } from "./orders/cast.js";
|
|
22
|
+
import { cancelProduction, enqueueMorph, enqueueProduction, enqueueResearch } from "./systems/production.js";
|
|
23
|
+
import { smartOrder } from "./smart.js";
|
|
24
|
+
import { chat, ping } from "./talk.js";
|
|
25
|
+
import { give, shareWith } from "./trade.js";
|
|
26
|
+
import { askPause, surrender } from "./endings.js";
|
|
27
|
+
import { runOrder } from "./systems/orders.js";
|
|
28
|
+
//#region src/commands.ts
|
|
29
|
+
/**
|
|
30
|
+
* Defines a command type, for a game module's `commands`: its type, its fields (see `fields.ts`), and what it does.
|
|
31
|
+
* `command` is typed by the fields.
|
|
32
|
+
*
|
|
33
|
+
* ```ts
|
|
34
|
+
* const sellTower = defineCommand('sellTower', { tower: id }, (world, player, command) => { ... })
|
|
35
|
+
* session.send(sellTower.make({ tower: 12 }))
|
|
36
|
+
* ```
|
|
37
|
+
*
|
|
38
|
+
* @public
|
|
39
|
+
*/
|
|
40
|
+
function defineCommand(type, fields, execute, options = {}) {
|
|
41
|
+
for (const own of [
|
|
42
|
+
"type",
|
|
43
|
+
"player",
|
|
44
|
+
"seq"
|
|
45
|
+
]) if (own in fields) throw new Error(`Command "${type}": "${own}" is what every command carries (who sent it, and the like), name the field otherwise`);
|
|
46
|
+
return {
|
|
47
|
+
type,
|
|
48
|
+
fields,
|
|
49
|
+
execute,
|
|
50
|
+
...options.outsideTick && { outsideTick: true },
|
|
51
|
+
make: (values) => ({
|
|
52
|
+
...values,
|
|
53
|
+
type
|
|
54
|
+
})
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
/** Part of the cost returned when a construction site is cancelled */
|
|
58
|
+
/** The buildings something is to be made in: the selected ones, of which the least busy gets it. `building` for just one */
|
|
59
|
+
/** @internal */
|
|
60
|
+
var producers = {
|
|
61
|
+
building: optional(id),
|
|
62
|
+
buildings: optional(ids)
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* Of the player's buildings that were named, the one that will get to something first: finished, able to make it,
|
|
66
|
+
* and with the shortest queue that has room. As in classic RTS games, a group of barracks shares the work. When none has
|
|
67
|
+
* room, the first that could make it, which then says its queue is full
|
|
68
|
+
*
|
|
69
|
+
* @internal
|
|
70
|
+
*/
|
|
71
|
+
function leastBusy(world, player, command, fits) {
|
|
72
|
+
const named = [...command.building !== void 0 ? [command.building] : [], ...command.buildings ?? []];
|
|
73
|
+
let best;
|
|
74
|
+
let first;
|
|
75
|
+
for (const entity of owned(world, player, named)) {
|
|
76
|
+
const production = productionOf(entity);
|
|
77
|
+
if (!production || !entity.operational || !fits(entity)) continue;
|
|
78
|
+
first ??= entity;
|
|
79
|
+
const length = production.queue.length;
|
|
80
|
+
if (length < world.settings.production.queue && (!best || length < productionOf(best).queue.length)) best = entity;
|
|
81
|
+
}
|
|
82
|
+
return best ?? first;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* The units a command names that the player may command: their own, and what another shares control of with them
|
|
86
|
+
* (`world.mayCommand`). One of another's, or one there never was, is what their own client never sends: it is
|
|
87
|
+
* turned away (`commandRejected`), and the rest goes on. One that has died meanwhile is let be
|
|
88
|
+
*
|
|
89
|
+
* @internal
|
|
90
|
+
*/
|
|
91
|
+
function owned(world, player, ids) {
|
|
92
|
+
const result = [];
|
|
93
|
+
for (const id of ids) {
|
|
94
|
+
const entity = world.get(id);
|
|
95
|
+
if (entity && world.mayCommand(player, entity)) result.push(entity);
|
|
96
|
+
else if (entity) world.events.emit(commandRejected, {
|
|
97
|
+
player,
|
|
98
|
+
kind: "notTheirs",
|
|
99
|
+
reason: `unit ${id} is not theirs`
|
|
100
|
+
});
|
|
101
|
+
else if (!world.made(id)) world.events.emit(commandRejected, {
|
|
102
|
+
player,
|
|
103
|
+
kind: "noSuchUnit",
|
|
104
|
+
reason: `there is no unit ${id}`
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
return result;
|
|
108
|
+
}
|
|
109
|
+
/** Direction from the middle of a group to where it was sent, so the whole group ends up facing the same way */
|
|
110
|
+
function travelDirection(entities, point) {
|
|
111
|
+
let x = 0;
|
|
112
|
+
let z = 0;
|
|
113
|
+
for (const entity of entities) {
|
|
114
|
+
x += entity.pos.x;
|
|
115
|
+
z += entity.pos.z;
|
|
116
|
+
}
|
|
117
|
+
x = point.x - x / entities.length;
|
|
118
|
+
z = point.z - z / entities.length;
|
|
119
|
+
return x * x + z * z > .04 ? atan2(x, z) : void 0;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Entity a player may point at: one their team sees, a structure they have seen before, or, on a map explored from
|
|
123
|
+
* the start, a structure of nobody's (a tree, a mine). Commands naming anything else are probing for what the player
|
|
124
|
+
* cannot know.
|
|
125
|
+
*
|
|
126
|
+
* @internal
|
|
127
|
+
*/
|
|
128
|
+
function known(world, player, id) {
|
|
129
|
+
const entity = world.get(id);
|
|
130
|
+
if (!entity) return void 0;
|
|
131
|
+
const { team } = world.player(player);
|
|
132
|
+
if (world.areAllies(entity.owner, player) || world.isVisibleTo(entity, team)) return entity;
|
|
133
|
+
if (!entity.isStructure) return void 0;
|
|
134
|
+
if (world.sight.hasSeen(entity, team)) return entity;
|
|
135
|
+
const owner = world.players.get(entity.owner);
|
|
136
|
+
return world.fog.exploredFromStart && (owner?.neutral || owner?.creeps) ? entity : void 0;
|
|
137
|
+
}
|
|
138
|
+
/** What a unit is told to do, as a command carries it. See `OrderInit` */
|
|
139
|
+
var orderInit = object({
|
|
140
|
+
type: string,
|
|
141
|
+
target: optional(id),
|
|
142
|
+
point: optional(point),
|
|
143
|
+
unitType: optional(string),
|
|
144
|
+
ability: optional(string),
|
|
145
|
+
item: optional(index),
|
|
146
|
+
facing: optional(number),
|
|
147
|
+
path: optional(string),
|
|
148
|
+
towards: optional(oneOf("first", "last")),
|
|
149
|
+
formation: optional(string),
|
|
150
|
+
together: optional(bool)
|
|
151
|
+
});
|
|
152
|
+
/**
|
|
153
|
+
* The engine's `order` command: gives an order to entities the player owns, replacing theirs or queued after them
|
|
154
|
+
*
|
|
155
|
+
* @internal
|
|
156
|
+
*/
|
|
157
|
+
var orderCommand = defineCommand("order", {
|
|
158
|
+
entities: ids,
|
|
159
|
+
order: orderInit,
|
|
160
|
+
queue: optional(bool)
|
|
161
|
+
}, (world, player, { entities: chosen, order: init, queue = false }) => {
|
|
162
|
+
if (!world.registry.orders.has(init.type)) return;
|
|
163
|
+
if (init.target && !known(world, player, init.target)) return;
|
|
164
|
+
const behavior = world.registry.order(init.type);
|
|
165
|
+
let entities = owned(world, player, chosen).filter((entity) => !entity.has(constructionSite) && behavior.accepts(world, entity, init));
|
|
166
|
+
if (init.type === "cast" && init.item !== void 0 && !queue) entities = entities.filter((entity) => !castAside(world, entity, init));
|
|
167
|
+
if (init.type === "attack" && init.target !== void 0 && !queue) entities = entities.filter((entity) => {
|
|
168
|
+
const current = entity.orders[0];
|
|
169
|
+
if (current?.type !== "attack" || current.init.target !== init.target) return true;
|
|
170
|
+
entity.keepOrders(1);
|
|
171
|
+
return false;
|
|
172
|
+
});
|
|
173
|
+
if (entities.length === 0) return;
|
|
174
|
+
const groupId = world.newId();
|
|
175
|
+
const facing = init.facing ?? (init.point && !init.target ? travelDirection(entities, init.point) : void 0);
|
|
176
|
+
const points = /* @__PURE__ */ new Map();
|
|
177
|
+
if (behavior.formation && init.point && !init.target && entities.length > 1) {
|
|
178
|
+
const id = init.formation ?? world.settings.movement.formation(world, entities, init);
|
|
179
|
+
const formation = world.registry.formations.has(id) ? world.registry.formation(id) : world.registry.formation(world.settings.movement.formation(world, entities, init));
|
|
180
|
+
const flyers = entities.filter((entity) => entity.flying);
|
|
181
|
+
const walkers = entities.filter((entity) => !entity.flying);
|
|
182
|
+
for (const [id, point] of formationPoints(world, walkers, init.point, formation, init.facing)) points.set(id, point);
|
|
183
|
+
for (const [id, point] of formationPoints(world, flyers, init.point, formation, init.facing)) points.set(id, point);
|
|
184
|
+
}
|
|
185
|
+
const speedCap = init.type === "move" && !init.target && entities.length > 1 && (init.together ?? false) ? Math.min(...entities.map((entity) => statsOf(world, entity).moveSpeed)) : void 0;
|
|
186
|
+
for (const entity of entities) {
|
|
187
|
+
const point = points.get(entity.id) ?? init.point;
|
|
188
|
+
giveOrder(world, entity, createOrder(world, {
|
|
189
|
+
...init,
|
|
190
|
+
point,
|
|
191
|
+
facing,
|
|
192
|
+
...speedCap !== void 0 && { speedCap }
|
|
193
|
+
}, groupId), queue);
|
|
194
|
+
if (points.has(entity.id) && entity.orders.at(-1)?.groupId === groupId) joinFormation(entity, groupId);
|
|
195
|
+
}
|
|
196
|
+
});
|
|
197
|
+
/**
|
|
198
|
+
* The engine's `rally` command: sets where the units a building makes go, a point or an entity
|
|
199
|
+
*
|
|
200
|
+
* @internal
|
|
201
|
+
*/
|
|
202
|
+
var rallyCommand = defineCommand("rally", {
|
|
203
|
+
buildings: ids,
|
|
204
|
+
point,
|
|
205
|
+
target: optional(id)
|
|
206
|
+
}, (world, player, command) => {
|
|
207
|
+
const target = known(world, player, command.target);
|
|
208
|
+
for (const building of owned(world, player, command.buildings)) {
|
|
209
|
+
const production = productionOf(building);
|
|
210
|
+
if (!production) continue;
|
|
211
|
+
if (target === building) production.rally = null;
|
|
212
|
+
else production.rally = {
|
|
213
|
+
point: {
|
|
214
|
+
x: command.point.x,
|
|
215
|
+
z: command.point.z
|
|
216
|
+
},
|
|
217
|
+
target: target?.id ?? 0
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
});
|
|
221
|
+
/**
|
|
222
|
+
* The right-click: every unit does what makes sense for it, buildings set their rally point
|
|
223
|
+
*
|
|
224
|
+
* @internal
|
|
225
|
+
*/
|
|
226
|
+
var smartCommand = defineCommand("smart", {
|
|
227
|
+
entities: ids,
|
|
228
|
+
point,
|
|
229
|
+
target: optional(id),
|
|
230
|
+
queue: optional(bool),
|
|
231
|
+
formation: optional(string),
|
|
232
|
+
facing: optional(number)
|
|
233
|
+
}, (world, player, { point, queue, formation, facing, ...command }) => {
|
|
234
|
+
const target = known(world, player, command.target);
|
|
235
|
+
const entities = owned(world, player, command.entities);
|
|
236
|
+
const units = entities.filter((entity) => entity.get(moving));
|
|
237
|
+
if (units.length === 0) {
|
|
238
|
+
rallyCommand.execute(world, player, {
|
|
239
|
+
buildings: entities.map((entity) => entity.id),
|
|
240
|
+
point,
|
|
241
|
+
target: target?.id
|
|
242
|
+
});
|
|
243
|
+
return;
|
|
244
|
+
}
|
|
245
|
+
const groups = /* @__PURE__ */ new Map();
|
|
246
|
+
for (const unit of units) {
|
|
247
|
+
const order = smartOrder(world, unit, point, target);
|
|
248
|
+
if (!order) continue;
|
|
249
|
+
if (formation !== void 0) order.formation = formation;
|
|
250
|
+
if (facing !== void 0 && !target) order.facing = facing;
|
|
251
|
+
if (order.type === "move" && world.settings.movement.together) order.together = true;
|
|
252
|
+
const key = `${order.type}:${order.target ?? ""}`;
|
|
253
|
+
let group = groups.get(key);
|
|
254
|
+
if (!group) groups.set(key, group = {
|
|
255
|
+
order,
|
|
256
|
+
ids: []
|
|
257
|
+
});
|
|
258
|
+
group.ids.push(unit.id);
|
|
259
|
+
}
|
|
260
|
+
for (const group of groups.values()) orderCommand.execute(world, player, {
|
|
261
|
+
entities: group.ids,
|
|
262
|
+
order: group.order,
|
|
263
|
+
queue
|
|
264
|
+
});
|
|
265
|
+
});
|
|
266
|
+
/**
|
|
267
|
+
* Attack the target, for whoever can. Everyone else, or without a target: attack-move to the point
|
|
268
|
+
*
|
|
269
|
+
* @internal
|
|
270
|
+
*/
|
|
271
|
+
var attackCommand = defineCommand("attack", {
|
|
272
|
+
entities: ids,
|
|
273
|
+
point,
|
|
274
|
+
target: optional(id),
|
|
275
|
+
queue: optional(bool),
|
|
276
|
+
formation: optional(string)
|
|
277
|
+
}, (world, player, { point, queue, formation, ...command }) => {
|
|
278
|
+
const target = known(world, player, command.target);
|
|
279
|
+
const units = owned(world, player, command.entities).filter((entity) => entity.get(moving) || entity.get(fighting));
|
|
280
|
+
const attackers = target ? units.filter((unit) => canAttack(world, unit, target, true)) : [];
|
|
281
|
+
if (target && attackers.length) {
|
|
282
|
+
orderCommand.execute(world, player, {
|
|
283
|
+
entities: attackers.map((unit) => unit.id),
|
|
284
|
+
order: {
|
|
285
|
+
type: "attack",
|
|
286
|
+
target: target.id
|
|
287
|
+
},
|
|
288
|
+
queue
|
|
289
|
+
});
|
|
290
|
+
return;
|
|
291
|
+
}
|
|
292
|
+
orderCommand.execute(world, player, {
|
|
293
|
+
entities: units.map((unit) => unit.id),
|
|
294
|
+
order: {
|
|
295
|
+
type: "attackMove",
|
|
296
|
+
point
|
|
297
|
+
},
|
|
298
|
+
queue
|
|
299
|
+
});
|
|
300
|
+
});
|
|
301
|
+
/**
|
|
302
|
+
* Use an ability. Abilities that need a target are cast by one unit, the one that can and is closest
|
|
303
|
+
*
|
|
304
|
+
* @internal
|
|
305
|
+
*/
|
|
306
|
+
var castCommand = defineCommand("cast", {
|
|
307
|
+
entities: ids,
|
|
308
|
+
ability: string,
|
|
309
|
+
point: optional(point),
|
|
310
|
+
to: optional(point),
|
|
311
|
+
target: optional(id),
|
|
312
|
+
queue: optional(bool)
|
|
313
|
+
}, (world, player, command) => {
|
|
314
|
+
const { queue } = command;
|
|
315
|
+
if (!world.registry.abilities.has(command.ability)) return;
|
|
316
|
+
const ability = world.registry.ability(command.ability);
|
|
317
|
+
const target = known(world, player, command.target);
|
|
318
|
+
if (command.target && !target) return;
|
|
319
|
+
const init = {
|
|
320
|
+
type: "cast",
|
|
321
|
+
ability: ability.id,
|
|
322
|
+
target: target?.id,
|
|
323
|
+
point: command.point,
|
|
324
|
+
...command.to && { to: command.to }
|
|
325
|
+
};
|
|
326
|
+
const kind = aimKind(world.registry, ability);
|
|
327
|
+
const behavior = world.registry.order("cast");
|
|
328
|
+
const casters = owned(world, player, command.entities).filter((entity) => behavior.accepts(world, entity, init));
|
|
329
|
+
if (casters.length === 0) return;
|
|
330
|
+
const instant = !queue && !ability.castTime && (kind === "none" || kind === "direction");
|
|
331
|
+
const give = (caster) => {
|
|
332
|
+
const order = createOrder(world, init);
|
|
333
|
+
giveOrder(world, caster, order, queue);
|
|
334
|
+
if (instant && caster.orders[0] === order && !isStunned(world, caster) && !caster.get(dashing)?.pulled) runOrder(world, caster, order, 0);
|
|
335
|
+
};
|
|
336
|
+
if (kind === "none") {
|
|
337
|
+
for (const caster of casters) if (queue) give(caster);
|
|
338
|
+
else if (!notReady(world, caster, ability) && !castAside(world, caster, { ability: ability.id })) give(caster);
|
|
339
|
+
return;
|
|
340
|
+
}
|
|
341
|
+
const aim = target?.pos ?? command.point;
|
|
342
|
+
const ready = casters.filter((caster) => !notReady(world, caster, ability));
|
|
343
|
+
const pool = ready.length ? ready : casters;
|
|
344
|
+
let best = pool[0];
|
|
345
|
+
for (const caster of pool) if (aim && distSq(caster.pos, aim) < distSq(best.pos, aim)) best = caster;
|
|
346
|
+
if (instant && !notReady(world, best, ability) && castAside(world, best, { ability: ability.id }, command.point)) return;
|
|
347
|
+
give(best);
|
|
348
|
+
});
|
|
349
|
+
/**
|
|
350
|
+
* Turns the player's missiles of an ability that are steered (`EffectFields.steer`) towards a point, as they fly
|
|
351
|
+
* (`steerMissile`): what the screen sends while one is in the air, for where the pointer is
|
|
352
|
+
*
|
|
353
|
+
* @beta
|
|
354
|
+
*/
|
|
355
|
+
var steerCommand = defineCommand("steer", {
|
|
356
|
+
ability: string,
|
|
357
|
+
point
|
|
358
|
+
}, (world, player, command) => {
|
|
359
|
+
for (const missile of world.missiles) if (missile.owner === player && missile.ability === command.ability) steerMissile(world, missile, command.point);
|
|
360
|
+
});
|
|
361
|
+
/**
|
|
362
|
+
* The engine's `autocast` command: turns an ability's autocast on or off for the entities named
|
|
363
|
+
*
|
|
364
|
+
* @internal
|
|
365
|
+
*/
|
|
366
|
+
var autocastCommand = defineCommand("autocast", {
|
|
367
|
+
entities: ids,
|
|
368
|
+
ability: string,
|
|
369
|
+
enabled: bool
|
|
370
|
+
}, (world, player, command) => {
|
|
371
|
+
for (const entity of owned(world, player, command.entities)) {
|
|
372
|
+
const state = entity.abilities.find((ability) => ability.id === command.ability);
|
|
373
|
+
if (state) state.autocast = command.enabled;
|
|
374
|
+
}
|
|
375
|
+
});
|
|
376
|
+
/**
|
|
377
|
+
* Stops what units are doing, as the classic Stop does: a plain interrupt. They fight what comes near again at once; a
|
|
378
|
+
* unit that is to stand down and take no fights is put in a stance (`stanceCommand`, `stancesPack`)
|
|
379
|
+
*
|
|
380
|
+
* @beta
|
|
381
|
+
*/
|
|
382
|
+
var stopCommand = defineCommand("stop", { entities: ids }, (world, player, command) => {
|
|
383
|
+
for (const entity of owned(world, player, command.entities)) interrupt(world, entity);
|
|
384
|
+
});
|
|
385
|
+
/**
|
|
386
|
+
* The engine's `train` command: queues a unit type at the least busy building that can train it
|
|
387
|
+
*
|
|
388
|
+
* @internal
|
|
389
|
+
*/
|
|
390
|
+
var trainCommand = defineCommand("train", {
|
|
391
|
+
...producers,
|
|
392
|
+
unitType: string
|
|
393
|
+
}, (world, player, command) => {
|
|
394
|
+
const building = leastBusy(world, player, command, (entity) => !!entity.def.trains?.includes(command.unitType));
|
|
395
|
+
if (building) enqueueProduction(world, building, command.unitType);
|
|
396
|
+
});
|
|
397
|
+
/**
|
|
398
|
+
* The engine's `research` command: queues an upgrade at the least busy building that can research it
|
|
399
|
+
*
|
|
400
|
+
* @internal
|
|
401
|
+
*/
|
|
402
|
+
var researchCommand = defineCommand("research", {
|
|
403
|
+
...producers,
|
|
404
|
+
upgrade: string
|
|
405
|
+
}, (world, player, command) => {
|
|
406
|
+
const building = leastBusy(world, player, command, (entity) => !!entity.def.researches?.includes(command.upgrade));
|
|
407
|
+
if (building) enqueueResearch(world, building, command.upgrade);
|
|
408
|
+
});
|
|
409
|
+
/**
|
|
410
|
+
* Upgrades a building into a type it can become: `into`, one of its `upgradesTo`, or the first where none is named
|
|
411
|
+
*
|
|
412
|
+
* @internal
|
|
413
|
+
*/
|
|
414
|
+
var upgradeBuildingCommand = defineCommand("upgradeBuilding", {
|
|
415
|
+
building: id,
|
|
416
|
+
into: optional(string)
|
|
417
|
+
}, (world, player, command) => {
|
|
418
|
+
const [building] = owned(world, player, [command.building]);
|
|
419
|
+
if (building) enqueueMorph(world, building, command.into);
|
|
420
|
+
});
|
|
421
|
+
/**
|
|
422
|
+
* The engine's `cancelTrain` command: takes the item at an index out of a building's queue
|
|
423
|
+
*
|
|
424
|
+
* @internal
|
|
425
|
+
*/
|
|
426
|
+
var cancelTrainCommand = defineCommand("cancelTrain", {
|
|
427
|
+
building: id,
|
|
428
|
+
index
|
|
429
|
+
}, (world, player, command) => {
|
|
430
|
+
const [building] = owned(world, player, [command.building]);
|
|
431
|
+
if (building) cancelProduction(world, building, command.index);
|
|
432
|
+
});
|
|
433
|
+
/**
|
|
434
|
+
* The engine's `cancelConstruction` command: stops a building under construction, refunds part of its cost and removes it
|
|
435
|
+
*
|
|
436
|
+
* @internal
|
|
437
|
+
*/
|
|
438
|
+
var cancelConstructionCommand = defineCommand("cancelConstruction", { building: id }, (world, player, command) => {
|
|
439
|
+
const [building] = owned(world, player, [command.building]);
|
|
440
|
+
const site = building && underConstruction(building);
|
|
441
|
+
if (!site) return;
|
|
442
|
+
giveBack(world, player, site.paid ?? building.def.cost, world.settings.production.cancelRefund, "structure", building.def.id);
|
|
443
|
+
world.events.emit(constructionCancelled, building);
|
|
444
|
+
world.kill(building, void 0, false, "cancelled");
|
|
445
|
+
});
|
|
446
|
+
/** The player skips the line of dialog they hear: a conversation goes on to its next line. See `world.dialog` */
|
|
447
|
+
var skipLineCommand = defineCommand("skipLine", {}, (world, player) => world.dialog.skip(player));
|
|
448
|
+
/** A player marks a spot of the map for their allies: `look`, `danger`, `assist` or `onMyWay` (see `ping`) */
|
|
449
|
+
var pingCommand = defineCommand("ping", {
|
|
450
|
+
point,
|
|
451
|
+
kind: optional(string),
|
|
452
|
+
to: optional(string),
|
|
453
|
+
by: optional(string)
|
|
454
|
+
}, (world, player, command) => ping(world, player, command.point, command.kind, command.to, command.by), { outsideTick: true });
|
|
455
|
+
/** A player says a line of chat: to `allies` (when left out), or to `all` (see `chat`) */
|
|
456
|
+
var chatCommand = defineCommand("chat", {
|
|
457
|
+
text: string,
|
|
458
|
+
to: optional(string),
|
|
459
|
+
by: optional(string)
|
|
460
|
+
}, (world, player, command) => chat(world, player, command.text, command.to, command.by), { outsideTick: true });
|
|
461
|
+
/** A player gives an ally some of a resource they have (see `give`) */
|
|
462
|
+
var giveCommand = defineCommand("give", {
|
|
463
|
+
to: id,
|
|
464
|
+
resource: string,
|
|
465
|
+
amount: number
|
|
466
|
+
}, (world, player, command) => give(world, player, command.to, command.resource, command.amount));
|
|
467
|
+
/** A player shares control of their units, or their team's sight, with an ally, or no longer (see `shareWith`) */
|
|
468
|
+
var shareCommand = defineCommand("share", {
|
|
469
|
+
with: id,
|
|
470
|
+
vision: optional(bool),
|
|
471
|
+
control: optional(bool)
|
|
472
|
+
}, (world, player, command) => shareWith(world, player, command.with, {
|
|
473
|
+
vision: command.vision,
|
|
474
|
+
control: command.control
|
|
475
|
+
}));
|
|
476
|
+
/**
|
|
477
|
+
* A player gives up: out of the game, as if beaten (see `surrender`)
|
|
478
|
+
*
|
|
479
|
+
* @internal
|
|
480
|
+
*/
|
|
481
|
+
var surrenderCommand = defineCommand("surrender", {}, (world, player) => surrender(world, player));
|
|
482
|
+
/**
|
|
483
|
+
* A player asks for the game to be paused, one of their pauses (see `askPause`): whoever runs it pauses it
|
|
484
|
+
*
|
|
485
|
+
* @internal
|
|
486
|
+
*/
|
|
487
|
+
var pauseCommand = defineCommand("pause", {}, (world, player) => askPause(world, player));
|
|
488
|
+
/**
|
|
489
|
+
* A player's own screen says something of its camera (see `cameraFor`): being a command, a replay has it. A seat that
|
|
490
|
+
* names another's (`seat`) is refused
|
|
491
|
+
*
|
|
492
|
+
* @internal
|
|
493
|
+
*/
|
|
494
|
+
var cameraCommand = defineCommand("camera", cameraCommandFields, cameraCommanded);
|
|
495
|
+
/**
|
|
496
|
+
* A player's screen says a cinematic the rules played on it is over, and how (see `cinematic`'s `wait`): sent by the
|
|
497
|
+
* client as the cinematic ends, so that the rules hear it in the same tick on every machine and in a replay
|
|
498
|
+
*
|
|
499
|
+
* @internal
|
|
500
|
+
*/
|
|
501
|
+
var cinematicCommand = defineCommand("cinematic", {
|
|
502
|
+
cinematic: string,
|
|
503
|
+
outcome: oneOf(...CINEMATIC_OUTCOMES)
|
|
504
|
+
}, (world, player, command) => cinematicEnded(world, player, command.cinematic, command.outcome));
|
|
505
|
+
/**
|
|
506
|
+
* A player's screen says which answer of a cinematic's choice they picked (C3): heard by the rules in the same tick on
|
|
507
|
+
* every machine and in a replay, as `cinematicChoice`
|
|
508
|
+
*
|
|
509
|
+
* @internal
|
|
510
|
+
*/
|
|
511
|
+
var cinematicChoiceCommand = defineCommand("cinematicChoice", {
|
|
512
|
+
cinematic: string,
|
|
513
|
+
question: string,
|
|
514
|
+
choice: string,
|
|
515
|
+
timedOut: optional(bool)
|
|
516
|
+
}, (world, player, command) => cinematicChose(world, {
|
|
517
|
+
player,
|
|
518
|
+
cinematic: command.cinematic,
|
|
519
|
+
question: command.question,
|
|
520
|
+
choice: command.choice,
|
|
521
|
+
timedOut: !!command.timedOut
|
|
522
|
+
}));
|
|
523
|
+
/**
|
|
524
|
+
* The commands the engine knows, which every game has
|
|
525
|
+
*
|
|
526
|
+
* @beta
|
|
527
|
+
*/
|
|
528
|
+
var coreCommands = [
|
|
529
|
+
cameraCommand,
|
|
530
|
+
orderCommand,
|
|
531
|
+
smartCommand,
|
|
532
|
+
attackCommand,
|
|
533
|
+
castCommand,
|
|
534
|
+
steerCommand,
|
|
535
|
+
autocastCommand,
|
|
536
|
+
stopCommand,
|
|
537
|
+
trainCommand,
|
|
538
|
+
researchCommand,
|
|
539
|
+
upgradeBuildingCommand,
|
|
540
|
+
cancelTrainCommand,
|
|
541
|
+
rallyCommand,
|
|
542
|
+
cancelConstructionCommand,
|
|
543
|
+
skipLineCommand,
|
|
544
|
+
pingCommand,
|
|
545
|
+
chatCommand,
|
|
546
|
+
giveCommand,
|
|
547
|
+
shareCommand,
|
|
548
|
+
surrenderCommand,
|
|
549
|
+
pauseCommand,
|
|
550
|
+
cinematicCommand,
|
|
551
|
+
cinematicChoiceCommand
|
|
552
|
+
];
|
|
553
|
+
/** Type and sender, the part every command has */
|
|
554
|
+
var head = object({
|
|
555
|
+
type: string,
|
|
556
|
+
player: id
|
|
557
|
+
});
|
|
558
|
+
/**
|
|
559
|
+
* Checks a command and carries it out. A command that is not what it says it is (an unknown type, a field missing
|
|
560
|
+
* or of the wrong kind, a player that is not in the game) is turned away with `commandRejected`, and changes nothing
|
|
561
|
+
*/
|
|
562
|
+
function executeCommand(world, raw) {
|
|
563
|
+
let def;
|
|
564
|
+
let player;
|
|
565
|
+
let fields;
|
|
566
|
+
let kind = "badFields";
|
|
567
|
+
try {
|
|
568
|
+
const { type, player: sender } = head(raw, "command");
|
|
569
|
+
const found = world.registry.command(type);
|
|
570
|
+
kind = "unknownType";
|
|
571
|
+
if (!found) throw new Invalid(`there is no command "${type}"`);
|
|
572
|
+
kind = "noSuchPlayer";
|
|
573
|
+
if (!world.players.has(sender)) throw new Invalid(`there is no player ${sender}`);
|
|
574
|
+
kind = "badFields";
|
|
575
|
+
def = found;
|
|
576
|
+
player = sender;
|
|
577
|
+
fields = object(def.fields)(raw, "");
|
|
578
|
+
} catch (error) {
|
|
579
|
+
if (!(error instanceof Invalid)) throw error;
|
|
580
|
+
const { type, player, seq } = typeof raw === "object" && raw ? raw : {};
|
|
581
|
+
const sender = typeof player === "number" ? player : void 0;
|
|
582
|
+
world.events.emit(commandRejected, {
|
|
583
|
+
player: sender,
|
|
584
|
+
type: typeof type === "string" ? type : void 0,
|
|
585
|
+
kind,
|
|
586
|
+
reason: error.message
|
|
587
|
+
});
|
|
588
|
+
if (sender !== void 0 && typeof seq === "number") world.events.emit(commandHandled, {
|
|
589
|
+
player: sender,
|
|
590
|
+
seq,
|
|
591
|
+
refusal: { key: error.message }
|
|
592
|
+
});
|
|
593
|
+
return;
|
|
594
|
+
}
|
|
595
|
+
const seq = raw.seq;
|
|
596
|
+
if (world.player(player).defeated) {
|
|
597
|
+
if (typeof seq === "number") world.events.emit(commandHandled, {
|
|
598
|
+
player,
|
|
599
|
+
seq,
|
|
600
|
+
refusal: { key: "defeated" }
|
|
601
|
+
});
|
|
602
|
+
return;
|
|
603
|
+
}
|
|
604
|
+
const handling = {
|
|
605
|
+
player,
|
|
606
|
+
refusal: void 0
|
|
607
|
+
};
|
|
608
|
+
world.handling = handling;
|
|
609
|
+
try {
|
|
610
|
+
def.execute(world, player, fields);
|
|
611
|
+
} catch (error) {
|
|
612
|
+
world.caught(error, {
|
|
613
|
+
kind: "command",
|
|
614
|
+
id: def.type,
|
|
615
|
+
player
|
|
616
|
+
});
|
|
617
|
+
handling.refusal ??= { key: "failed" };
|
|
618
|
+
} finally {
|
|
619
|
+
world.handling = void 0;
|
|
620
|
+
}
|
|
621
|
+
if (typeof seq === "number") world.events.emit(commandHandled, {
|
|
622
|
+
player,
|
|
623
|
+
seq,
|
|
624
|
+
refusal: handling.refusal
|
|
625
|
+
});
|
|
626
|
+
}
|
|
627
|
+
/** What became of a command: to whoever sent it */
|
|
628
|
+
var toldCommand = replicateEvent(commandHandled, "command", ({ player, seq, refusal }, view) => player === view.player ? {
|
|
629
|
+
type: "command",
|
|
630
|
+
seq,
|
|
631
|
+
...refusal ? { refusal } : {}
|
|
632
|
+
} : void 0);
|
|
633
|
+
//#endregion
|
|
634
|
+
export { attackCommand, autocastCommand, cameraCommand, cancelConstructionCommand, cancelTrainCommand, castCommand, chatCommand, cinematicChoiceCommand, cinematicCommand, coreCommands, defineCommand, executeCommand, giveCommand, known, leastBusy, orderCommand, owned, pauseCommand, pingCommand, producers, rallyCommand, researchCommand, shareCommand, skipLineCommand, smartCommand, steerCommand, stopCommand, surrenderCommand, toldCommand, trainCommand, upgradeBuildingCommand };
|
|
635
|
+
|
|
636
|
+
//# sourceMappingURL=commands.js.map
|