@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/debug2.js
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
//#region src/debug.ts
|
|
2
|
+
/** The process's: what a world that says nothing starts with */
|
|
3
|
+
var debugChecks = {
|
|
4
|
+
/** `statsOf` adds the stats up from scratch on every call and compares them with what it had cached */
|
|
5
|
+
stats: false,
|
|
6
|
+
/** Every tick, scenery (see `isScenery`) is checked for having anything that per-tick systems would have to see to */
|
|
7
|
+
scenery: false,
|
|
8
|
+
/** Every tick, `World.index` is checked against the entities: whose they are, which are heroes, which are shops */
|
|
9
|
+
index: false,
|
|
10
|
+
/** Every snapshot a session puts together is checked to have in sight exactly what testing every entity of the world would give */
|
|
11
|
+
sight: false,
|
|
12
|
+
/** What a snapshot tells of an entity as it was told last time, in whole or in part, is checked against describing it anew */
|
|
13
|
+
snapshots: false,
|
|
14
|
+
/** What a game's replicated events say is checked to be plain data, which could cross a network */
|
|
15
|
+
events: false,
|
|
16
|
+
/** Every think of every computer player's brain is checked against the invariants of `ai/checks.ts`: the first broken one throws */
|
|
17
|
+
ai: false
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* A world's checks, of what it was made with (`CreateWorldOptions.checks`): all on or off, some of them (the rest the
|
|
21
|
+
* process's), or the process's (`setDebugChecks`) when nothing is said
|
|
22
|
+
*/
|
|
23
|
+
function checksOf(given) {
|
|
24
|
+
if (typeof given === "boolean") return {
|
|
25
|
+
stats: given,
|
|
26
|
+
scenery: given,
|
|
27
|
+
index: given,
|
|
28
|
+
sight: given,
|
|
29
|
+
snapshots: given,
|
|
30
|
+
events: given,
|
|
31
|
+
ai: given
|
|
32
|
+
};
|
|
33
|
+
return {
|
|
34
|
+
...debugChecks,
|
|
35
|
+
...given
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Turns every check on or off for the worlds made from now on that say nothing of their own (`CreateWorldOptions.checks`),
|
|
40
|
+
* and for computer players' brains
|
|
41
|
+
*
|
|
42
|
+
* @beta
|
|
43
|
+
*/
|
|
44
|
+
function setDebugChecks(enabled) {
|
|
45
|
+
debugChecks.stats = enabled;
|
|
46
|
+
debugChecks.scenery = enabled;
|
|
47
|
+
debugChecks.index = enabled;
|
|
48
|
+
debugChecks.sight = enabled;
|
|
49
|
+
debugChecks.snapshots = enabled;
|
|
50
|
+
debugChecks.events = enabled;
|
|
51
|
+
debugChecks.ai = enabled;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Throws when a value is not plain data: numbers, text, booleans, lists and plain objects of them. An entity, a
|
|
55
|
+
* map or a function in an event would only work while the screen and the simulation share a page
|
|
56
|
+
*/
|
|
57
|
+
function assertPlainData(value, what, path = "") {
|
|
58
|
+
if (value === null || value === void 0) return;
|
|
59
|
+
const type = typeof value;
|
|
60
|
+
if (type === "number" || type === "string" || type === "boolean") return;
|
|
61
|
+
if (type !== "object") throw new Error(`${what}: ${path || "it"} is a ${type}, which is not plain data`);
|
|
62
|
+
if (Array.isArray(value)) {
|
|
63
|
+
value.forEach((item, index) => assertPlainData(item, what, `${path}[${index}]`));
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
const proto = Object.getPrototypeOf(value);
|
|
67
|
+
if (proto !== Object.prototype && proto !== null) {
|
|
68
|
+
const name = value.constructor?.name ?? "object";
|
|
69
|
+
throw new Error(`${what}: ${path || "it"} is a ${name}, which is not plain data. Give entities by id`);
|
|
70
|
+
}
|
|
71
|
+
for (const [key, item] of Object.entries(value)) assertPlainData(item, what, path ? `${path}.${key}` : key);
|
|
72
|
+
}
|
|
73
|
+
//#endregion
|
|
74
|
+
export { assertPlainData, checksOf, debugChecks, setDebugChecks };
|
|
75
|
+
|
|
76
|
+
//# sourceMappingURL=debug2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debug2.js","names":[],"sources":["../src/debug.ts"],"sourcesContent":["/**\n * Checks the engine can run on itself, for tests and development. Each one redoes or re-verifies work\n * that the engine normally skips or caches, and throws as soon as the shortcut gave a different answer.\n * They are slow; a real game leaves them off. A world's are its own (`world.checks`, `CreateWorldOptions.checks`);\n * these are what a world that says nothing starts with (`setDebugChecks`), and what a computer player's brain, which\n * has no world, reads\n *\n * @beta\n */\nexport interface DebugChecks {\n\t/** Whether `statsOf` is checked against adding the stats up from scratch */\n\tstats: boolean\n\t/** Whether scenery is checked every tick for having nothing the per-tick systems should see to */\n\tscenery: boolean\n\t/** Whether `World.index` is checked every tick against the entities */\n\tindex: boolean\n\t/** Whether each snapshot's sight is checked against testing every entity of the world */\n\tsight: boolean\n\t/** Whether what a snapshot tells of an entity again from last time is checked against describing it anew */\n\tsnapshots: boolean\n\t/** Whether replicated events are checked to be plain data that could cross a network */\n\tevents: boolean\n\t/** Whether every think of every computer player's brain is checked against the invariants of `ai/checks.ts` */\n\tai: boolean\n}\n\n/** The process's: what a world that says nothing starts with */\nexport const debugChecks: DebugChecks = {\n\t/** `statsOf` adds the stats up from scratch on every call and compares them with what it had cached */\n\tstats: false,\n\t/** Every tick, scenery (see `isScenery`) is checked for having anything that per-tick systems would have to see to */\n\tscenery: false,\n\t/** Every tick, `World.index` is checked against the entities: whose they are, which are heroes, which are shops */\n\tindex: false,\n\t/** Every snapshot a session puts together is checked to have in sight exactly what testing every entity of the world would give */\n\tsight: false,\n\t/** What a snapshot tells of an entity as it was told last time, in whole or in part, is checked against describing it anew */\n\tsnapshots: false,\n\t/** What a game's replicated events say is checked to be plain data, which could cross a network */\n\tevents: false,\n\t/** Every think of every computer player's brain is checked against the invariants of `ai/checks.ts`: the first broken one throws */\n\tai: false\n}\n\n/**\n * A world's checks, of what it was made with (`CreateWorldOptions.checks`): all on or off, some of them (the rest the\n * process's), or the process's (`setDebugChecks`) when nothing is said\n */\nexport function checksOf(given: boolean | Partial<DebugChecks> | undefined): DebugChecks {\n\tif (typeof given === 'boolean') return { stats: given, scenery: given, index: given, sight: given, snapshots: given, events: given, ai: given }\n\treturn { ...debugChecks, ...given }\n}\n\n/**\n * Turns every check on or off for the worlds made from now on that say nothing of their own (`CreateWorldOptions.checks`),\n * and for computer players' brains\n *\n * @beta\n */\nexport function setDebugChecks(enabled: boolean): void {\n\tdebugChecks.stats = enabled\n\tdebugChecks.scenery = enabled\n\tdebugChecks.index = enabled\n\tdebugChecks.sight = enabled\n\tdebugChecks.snapshots = enabled\n\tdebugChecks.events = enabled\n\tdebugChecks.ai = enabled\n}\n\n/**\n * Throws when a value is not plain data: numbers, text, booleans, lists and plain objects of them. An entity, a\n * map or a function in an event would only work while the screen and the simulation share a page\n */\nexport function assertPlainData(value: unknown, what: string, path = ''): void {\n\tif (value === null || value === undefined) return\n\tconst type = typeof value\n\tif (type === 'number' || type === 'string' || type === 'boolean') return\n\tif (type !== 'object') throw new Error(`${what}: ${path || 'it'} is a ${type}, which is not plain data`)\n\tif (Array.isArray(value)) {\n\t\tvalue.forEach((item, index) => assertPlainData(item, what, `${path}[${index}]`))\n\t\treturn\n\t}\n\tconst proto = Object.getPrototypeOf(value)\n\tif (proto !== Object.prototype && proto !== null) {\n\t\tconst name = (value as object).constructor?.name ?? 'object'\n\t\tthrow new Error(`${what}: ${path || 'it'} is a ${name}, which is not plain data. Give entities by id`)\n\t}\n\tfor (const [key, item] of Object.entries(value)) assertPlainData(item, what, path ? `${path}.${key}` : key)\n}\n"],"mappings":";;AA2BA,IAAa,cAA2B;;CAEvC,OAAO;;CAEP,SAAS;;CAET,OAAO;;CAEP,OAAO;;CAEP,WAAW;;CAEX,QAAQ;;CAER,IAAI;AACL;;;;;AAMA,SAAgB,SAAS,OAAgE;CACxF,IAAI,OAAO,UAAU,WAAW,OAAO;EAAE,OAAO;EAAO,SAAS;EAAO,OAAO;EAAO,OAAO;EAAO,WAAW;EAAO,QAAQ;EAAO,IAAI;CAAM;CAC9I,OAAO;EAAE,GAAG;EAAa,GAAG;CAAM;AACnC;;;;;;;AAQA,SAAgB,eAAe,SAAwB;CACtD,YAAY,QAAQ;CACpB,YAAY,UAAU;CACtB,YAAY,QAAQ;CACpB,YAAY,QAAQ;CACpB,YAAY,YAAY;CACxB,YAAY,SAAS;CACrB,YAAY,KAAK;AAClB;;;;;AAMA,SAAgB,gBAAgB,OAAgB,MAAc,OAAO,IAAU;CAC9E,IAAI,UAAU,QAAQ,UAAU,KAAA,GAAW;CAC3C,MAAM,OAAO,OAAO;CACpB,IAAI,SAAS,YAAY,SAAS,YAAY,SAAS,WAAW;CAClE,IAAI,SAAS,UAAU,MAAM,IAAI,MAAM,GAAG,KAAK,IAAI,QAAQ,KAAK,QAAQ,KAAK,0BAA0B;CACvG,IAAI,MAAM,QAAQ,KAAK,GAAG;EACzB,MAAM,SAAS,MAAM,UAAU,gBAAgB,MAAM,MAAM,GAAG,KAAK,GAAG,MAAM,EAAE,CAAC;EAC/E;CACD;CACA,MAAM,QAAQ,OAAO,eAAe,KAAK;CACzC,IAAI,UAAU,OAAO,aAAa,UAAU,MAAM;EACjD,MAAM,OAAQ,MAAiB,aAAa,QAAQ;EACpD,MAAM,IAAI,MAAM,GAAG,KAAK,IAAI,QAAQ,KAAK,QAAQ,KAAK,+CAA+C;CACtG;CACA,KAAK,MAAM,CAAC,KAAK,SAAS,OAAO,QAAQ,KAAK,GAAG,gBAAgB,MAAM,MAAM,OAAO,GAAG,KAAK,GAAG,QAAQ,GAAG;AAC3G"}
|
package/dist/debugCommands.d.ts
CHANGED
|
@@ -40,7 +40,7 @@ export declare const revealCommand: DefinedCommand<"debug.reveal", {
|
|
|
40
40
|
on: Check<boolean>;
|
|
41
41
|
}>;
|
|
42
42
|
/**
|
|
43
|
-
* The whole map explored for everyone, as a map that starts explored has it (`
|
|
43
|
+
* The whole map explored for everyone, as a map that starts explored has it (`FogSettings.startExplored`): the fog stays,
|
|
44
44
|
* over what is not seen now, but the ground is dim, not black, and what stands on it and is no player's is known. Or no
|
|
45
45
|
* longer: each team has explored what it sees now, and forgets what it does not
|
|
46
46
|
*
|
|
@@ -148,7 +148,7 @@ export declare const killCommand: DefinedCommand<"debug.kill", {
|
|
|
148
148
|
}>;
|
|
149
149
|
/**
|
|
150
150
|
* Changes a field of a definition while the game runs, as the editor's Data panel tries it: only one the game lets be
|
|
151
|
-
* changed (`
|
|
151
|
+
* changed (`Rules.editable`), and for players allowed the debug tools
|
|
152
152
|
*
|
|
153
153
|
* @beta
|
|
154
154
|
*/
|
|
@@ -161,7 +161,7 @@ export declare const redefineCommand: DefinedCommand<"debug.redefine", {
|
|
|
161
161
|
/**
|
|
162
162
|
* An object placed on the map put in the world as the map's are as the world is made (`spawnMapObject`): its type,
|
|
163
163
|
* owner, where it stands and how it is turned, and the rest the map says of it (its health, level, items, the game's
|
|
164
|
-
* fields, its orders), kept as the entity of that object (`World.
|
|
164
|
+
* fields, its orders), kept as the entity of that object (`World.fromMap`): what the editor's Play here sends as
|
|
165
165
|
* something is placed on the map while it plays (EQ10). A building where there is no room is refused, as `debug.spawn`
|
|
166
166
|
* refuses it
|
|
167
167
|
*
|
|
@@ -171,7 +171,7 @@ export declare const mapObjectCommand: DefinedCommand<"debug.mapObject", {
|
|
|
171
171
|
object: Check<MapObject>;
|
|
172
172
|
}>;
|
|
173
173
|
/**
|
|
174
|
-
* Moves what an object of the map became (`World.
|
|
174
|
+
* Moves what an object of the map became (`World.fromMap`, by the object's id) where it stands on the map now,
|
|
175
175
|
* turned as it is: a unit is put there (`World.place`), the way there not its concern. A structure is not moved: the
|
|
176
176
|
* editor takes it away and puts it down again
|
|
177
177
|
*
|
|
@@ -183,7 +183,7 @@ export declare const placeCommand: DefinedCommand<"debug.place", {
|
|
|
183
183
|
facing: Check<number | undefined>;
|
|
184
184
|
}>;
|
|
185
185
|
/**
|
|
186
|
-
* Takes what objects of the map became (`World.
|
|
186
|
+
* Takes what objects of the map became (`World.fromMap`, by the objects' ids) out of the world, whatever they
|
|
187
187
|
* are, scenery included: no corpse is left. What the editor's Play here sends as something is taken off the map
|
|
188
188
|
*
|
|
189
189
|
* @beta
|
|
@@ -210,4 +210,4 @@ export declare const toldGround: import("./replication").ReplicatedEvent;
|
|
|
210
210
|
*/
|
|
211
211
|
export declare const debugCommands: CommandDef[];
|
|
212
212
|
/** What a player who may use the debug commands is told of them (`Snapshot.debug`): the switches on, and whether the map started explored */
|
|
213
|
-
export declare const debugPart: import("./replication").
|
|
213
|
+
export declare const debugPart: import("./replication").SnapshotField<keyof import(".").Snapshot>;
|
|
@@ -0,0 +1,537 @@
|
|
|
1
|
+
import { hypot } from "./exactMath.js";
|
|
2
|
+
import { footprintOf } from "./defs.js";
|
|
3
|
+
import { gameOver, groundReshaped } from "./engineEvents.js";
|
|
4
|
+
import { teamMemory } from "./session/memory.js";
|
|
5
|
+
import { replicateEvent, snapshotField } from "./replication.js";
|
|
6
|
+
import { earn } from "./player.js";
|
|
7
|
+
import { grantXp, heroesOf, setHeroLevel } from "./hero.js";
|
|
8
|
+
import { Invalid, bool, id, ids, isObject, number, object, oneOf, optional, point, string } from "./fields.js";
|
|
9
|
+
import { createItem, giveItem } from "./items.js";
|
|
10
|
+
import { defeat } from "./systems/victory.js";
|
|
11
|
+
import { defineCommand } from "./commands.js";
|
|
12
|
+
import { corpses } from "./summons.js";
|
|
13
|
+
import { COPY_OF, DATA_KINDS, blankDefinition, definitionIn, editableFields, fitValue, nested, pathCheck, valueCheck } from "./gameData.js";
|
|
14
|
+
import { terrainPatchProblem } from "./ground.js";
|
|
15
|
+
import { giveMapOrders, spawnMapObject } from "./mapObjects.js";
|
|
16
|
+
//#region src/debugCommands.ts
|
|
17
|
+
/**
|
|
18
|
+
* A debug command of a game's or a scene's own: one that goes through only for players allowed the debug tools
|
|
19
|
+
* (`world.debugPlayers`), and tells others so. Otherwise like `defineCommand`
|
|
20
|
+
*
|
|
21
|
+
* @beta
|
|
22
|
+
*/
|
|
23
|
+
function defineDebugCommand(type, fields, execute) {
|
|
24
|
+
return defineCommand(type, fields, (world, player, command) => {
|
|
25
|
+
if (!world.debugPlayers.has(player)) {
|
|
26
|
+
world.message(player, { key: "debugNotAllowed" });
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
execute(world, player, command);
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* A prefab of the game's put down where it says, for the sender, turned as said: to try one out, and for the editor's Play
|
|
34
|
+
*
|
|
35
|
+
* @beta
|
|
36
|
+
*/
|
|
37
|
+
var spawnPrefabCommand = defineDebugCommand("debug.spawnPrefab", {
|
|
38
|
+
prefab: string,
|
|
39
|
+
at: point,
|
|
40
|
+
facing: optional(number)
|
|
41
|
+
}, (world, player, command) => {
|
|
42
|
+
if (!world.registry.prefabs.has(command.prefab)) return world.message(player, {
|
|
43
|
+
key: "unknownPrefab",
|
|
44
|
+
params: { prefab: command.prefab }
|
|
45
|
+
});
|
|
46
|
+
world.spawnPrefab(command.prefab, {
|
|
47
|
+
at: command.at,
|
|
48
|
+
owner: player,
|
|
49
|
+
facing: command.facing
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
/**
|
|
53
|
+
* A switch for trying things out: abilities used again at once, abilities that cost no mana, the units of those who may
|
|
54
|
+
* use the debug tools unharmed (`World.cheats`)
|
|
55
|
+
*
|
|
56
|
+
* @beta
|
|
57
|
+
*/
|
|
58
|
+
var cheatCommand = defineDebugCommand("debug.cheat", {
|
|
59
|
+
cheat: oneOf("noCooldowns", "noManaCosts", "invulnerable"),
|
|
60
|
+
on: bool
|
|
61
|
+
}, (world, _player, command) => {
|
|
62
|
+
world.cheats[command.cheat] = command.on;
|
|
63
|
+
});
|
|
64
|
+
/**
|
|
65
|
+
* Lifts the fog for the sender's team, or puts it back: in the simulation itself, so that units react to what is shown
|
|
66
|
+
*
|
|
67
|
+
* @beta
|
|
68
|
+
*/
|
|
69
|
+
var revealCommand = defineDebugCommand("debug.reveal", { on: bool }, (world, player, command) => {
|
|
70
|
+
world.fog.setRevealed(world.player(player).team, command.on);
|
|
71
|
+
});
|
|
72
|
+
/**
|
|
73
|
+
* The whole map explored for everyone, as a map that starts explored has it (`FogSettings.startExplored`): the fog stays,
|
|
74
|
+
* over what is not seen now, but the ground is dim, not black, and what stands on it and is no player's is known. Or no
|
|
75
|
+
* longer: each team has explored what it sees now, and forgets what it does not
|
|
76
|
+
*
|
|
77
|
+
* @beta
|
|
78
|
+
*/
|
|
79
|
+
var exploreCommand = defineDebugCommand("debug.explore", { on: bool }, (world, _player, command) => {
|
|
80
|
+
world.fog.exploreFromStart(command.on);
|
|
81
|
+
for (const [team, memory] of Object.entries(world.state(teamMemory))) {
|
|
82
|
+
memory.startKnown = false;
|
|
83
|
+
if (command.on) continue;
|
|
84
|
+
for (const [id, state] of Object.entries(memory.structures)) if (!world.fog.isVisible(Number(team), state.x, state.z)) delete memory.structures[Number(id)];
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
/**
|
|
88
|
+
* The time of day, in a game with days and nights
|
|
89
|
+
*
|
|
90
|
+
* @beta
|
|
91
|
+
*/
|
|
92
|
+
var hourCommand = defineDebugCommand("debug.hour", { hour: number }, (world, _player, command) => {
|
|
93
|
+
if (world.registry.day) world.clock.setHour((command.hour % 24 + 24) % 24);
|
|
94
|
+
});
|
|
95
|
+
/**
|
|
96
|
+
* How fast the game goes, 0 to pause, 8 at most: whoever runs it (a session in the page, a server) goes by it
|
|
97
|
+
*
|
|
98
|
+
* @beta
|
|
99
|
+
*/
|
|
100
|
+
var speedCommand = defineDebugCommand("debug.speed", { speed: number }, (world, _player, command) => {
|
|
101
|
+
world.cheats.speed = Math.min(Math.max(command.speed, 0), 8);
|
|
102
|
+
});
|
|
103
|
+
/**
|
|
104
|
+
* Creates something at a point, for a player: a building or a resource where there is room, or a group of units
|
|
105
|
+
* (`count`, 50 at most). `hidden`: what can be invisible is out of sight from the start
|
|
106
|
+
*
|
|
107
|
+
* @beta
|
|
108
|
+
*/
|
|
109
|
+
var spawnCommand = defineDebugCommand("debug.spawn", {
|
|
110
|
+
unitType: string,
|
|
111
|
+
owner: id,
|
|
112
|
+
point,
|
|
113
|
+
count: optional(number),
|
|
114
|
+
hidden: optional(bool)
|
|
115
|
+
}, (world, player, command) => {
|
|
116
|
+
if (!world.registry.units.has(command.unitType) || !world.players.has(command.owner)) return;
|
|
117
|
+
const def = world.registry.unit(command.unitType);
|
|
118
|
+
const at = command.point;
|
|
119
|
+
if (def.kind !== "unit") {
|
|
120
|
+
const fp = footprintOf(def);
|
|
121
|
+
const cell = world.grid.cellFor(at.x, at.z, fp.w, fp.d);
|
|
122
|
+
if (!world.grid.canPlace(cell.x, cell.z, fp.w, fp.d)) world.message(player, { key: "noRoomHere" });
|
|
123
|
+
else world.spawn(def.id, command.owner, at);
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
const count = Math.min(Math.max(Math.round(command.count ?? 1), 1), 50);
|
|
127
|
+
const columns = Math.ceil(Math.sqrt(count));
|
|
128
|
+
const spacing = def.radius * 2 + .4;
|
|
129
|
+
for (let i = 0; i < count; i++) {
|
|
130
|
+
const column = i % columns - (columns - 1) / 2;
|
|
131
|
+
const row = Math.floor(i / columns) - (Math.ceil(count / columns) - 1) / 2;
|
|
132
|
+
const entity = world.spawn(def.id, command.owner, {
|
|
133
|
+
x: at.x + column * spacing,
|
|
134
|
+
z: at.z - row * spacing
|
|
135
|
+
});
|
|
136
|
+
if (command.hidden && entity.unseenIn !== null) entity.unseenIn = 0;
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
/**
|
|
140
|
+
* A brush: fills a circle with what stands on the grid (trees, rocks), thinner towards its edge, wherever there is room;
|
|
141
|
+
* or, with `erase`, clears it of that type
|
|
142
|
+
*
|
|
143
|
+
* @beta
|
|
144
|
+
*/
|
|
145
|
+
var paintCommand = defineDebugCommand("debug.paint", {
|
|
146
|
+
unitType: string,
|
|
147
|
+
owner: id,
|
|
148
|
+
point,
|
|
149
|
+
radius: number,
|
|
150
|
+
erase: bool
|
|
151
|
+
}, (world, _player, command) => {
|
|
152
|
+
if (!world.registry.units.has(command.unitType)) return;
|
|
153
|
+
const def = world.registry.unit(command.unitType);
|
|
154
|
+
const { point: at } = command;
|
|
155
|
+
const radius = Math.min(Math.max(command.radius, .5), 20);
|
|
156
|
+
if (command.erase) {
|
|
157
|
+
for (const entity of [...world.entities.values()]) if (entity.def.id === def.id && hypot(entity.pos.x - at.x, entity.pos.z - at.z) <= radius) world.kill(entity, void 0, false, "removed");
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
if (def.kind === "unit" || !world.players.has(command.owner)) return;
|
|
161
|
+
const fp = footprintOf(def);
|
|
162
|
+
for (let z = Math.floor(at.z - radius); z <= at.z + radius; z += fp.d) for (let x = Math.floor(at.x - radius); x <= at.x + radius; x += fp.w) {
|
|
163
|
+
const centre = {
|
|
164
|
+
x: x + fp.w / 2,
|
|
165
|
+
z: z + fp.d / 2
|
|
166
|
+
};
|
|
167
|
+
const distance = hypot(centre.x - at.x, centre.z - at.z);
|
|
168
|
+
if (distance > radius) continue;
|
|
169
|
+
const chance = (x * 73856093 ^ z * 19349663) >>> 0;
|
|
170
|
+
if (distance > radius * .6 && chance % 100 < (distance / radius - .6) / .4 * 70) continue;
|
|
171
|
+
if (!world.grid.canPlace(x, z, fp.w, fp.d)) continue;
|
|
172
|
+
world.spawn(def.id, command.owner, centre);
|
|
173
|
+
}
|
|
174
|
+
});
|
|
175
|
+
/**
|
|
176
|
+
* Gives the sender this much of every resource
|
|
177
|
+
*
|
|
178
|
+
* @beta
|
|
179
|
+
*/
|
|
180
|
+
var giveCommand = defineDebugCommand("debug.give", { amount: number }, (world, player, command) => {
|
|
181
|
+
for (const resource of world.registry.resources) earn(world.player(player).resources, resource.id, command.amount);
|
|
182
|
+
});
|
|
183
|
+
/**
|
|
184
|
+
* Gives the sender's heroes this much experience
|
|
185
|
+
*
|
|
186
|
+
* @beta
|
|
187
|
+
*/
|
|
188
|
+
var experienceCommand = defineDebugCommand("debug.experience", { amount: number }, (world, player, command) => {
|
|
189
|
+
for (const hero of heroesOf(world, player)) if (hero.alive) grantXp(world, hero, command.amount);
|
|
190
|
+
});
|
|
191
|
+
/**
|
|
192
|
+
* Puts units at a point, side by side, wherever they stood: structures stay where they were built. The way there is
|
|
193
|
+
* not their concern (`World.place`)
|
|
194
|
+
*
|
|
195
|
+
* @internal
|
|
196
|
+
*/
|
|
197
|
+
var teleportCommand = defineDebugCommand("debug.teleport", {
|
|
198
|
+
entities: ids,
|
|
199
|
+
point
|
|
200
|
+
}, (world, _player, command) => {
|
|
201
|
+
const units = command.entities.flatMap((entityId) => {
|
|
202
|
+
const entity = world.get(entityId);
|
|
203
|
+
return entity?.alive && entity.isUnit ? [entity] : [];
|
|
204
|
+
});
|
|
205
|
+
const columns = Math.ceil(Math.sqrt(units.length));
|
|
206
|
+
units.forEach((entity, i) => {
|
|
207
|
+
const spacing = entity.def.radius * 2 + .4;
|
|
208
|
+
const column = i % columns - (columns - 1) / 2;
|
|
209
|
+
const row = Math.floor(i / columns) - (Math.ceil(units.length / columns) - 1) / 2;
|
|
210
|
+
world.place(entity, {
|
|
211
|
+
x: command.point.x + column * spacing,
|
|
212
|
+
z: command.point.z - row * spacing
|
|
213
|
+
});
|
|
214
|
+
});
|
|
215
|
+
});
|
|
216
|
+
/**
|
|
217
|
+
* Gives what it names to another player (`World.setOwner`): what it was doing is called off
|
|
218
|
+
*
|
|
219
|
+
* @internal
|
|
220
|
+
*/
|
|
221
|
+
var setOwnerCommand = defineDebugCommand("debug.setOwner", {
|
|
222
|
+
entities: ids,
|
|
223
|
+
owner: id
|
|
224
|
+
}, (world, _player, command) => {
|
|
225
|
+
if (!world.players.has(command.owner)) return;
|
|
226
|
+
for (const entityId of command.entities) {
|
|
227
|
+
const entity = world.get(entityId);
|
|
228
|
+
if (entity?.alive) world.setOwner(entity, command.owner);
|
|
229
|
+
}
|
|
230
|
+
});
|
|
231
|
+
/**
|
|
232
|
+
* Puts an item of the game's in the first free slot of what carries things
|
|
233
|
+
*
|
|
234
|
+
* @beta
|
|
235
|
+
*/
|
|
236
|
+
var giveItemCommand = defineDebugCommand("debug.giveItem", {
|
|
237
|
+
entity: id,
|
|
238
|
+
item: string
|
|
239
|
+
}, (world, _player, command) => {
|
|
240
|
+
const entity = world.get(command.entity);
|
|
241
|
+
if (!entity?.alive || !world.registry.items.has(command.item)) return;
|
|
242
|
+
giveItem(world, entity, createItem(world, command.item));
|
|
243
|
+
});
|
|
244
|
+
/**
|
|
245
|
+
* Researches an upgrade for the sender, to the level asked (its last when left out), at once and for nothing: what it
|
|
246
|
+
* does to the units there are runs for each level it gains
|
|
247
|
+
*
|
|
248
|
+
* @internal
|
|
249
|
+
*/
|
|
250
|
+
var researchCommand = defineDebugCommand("debug.research", {
|
|
251
|
+
upgrade: string,
|
|
252
|
+
level: optional(number)
|
|
253
|
+
}, (world, player, command) => {
|
|
254
|
+
if (!world.registry.upgrades.has(command.upgrade)) return;
|
|
255
|
+
const def = world.registry.upgrade(command.upgrade);
|
|
256
|
+
const who = world.player(player);
|
|
257
|
+
const to = Math.min(Math.max(Math.round(command.level ?? def.maxLevel ?? 1), 0), def.maxLevel ?? 1);
|
|
258
|
+
for (let level = (who.upgrades.get(command.upgrade) ?? 0) + 1; level <= to; level++) {
|
|
259
|
+
who.setUpgrade(command.upgrade, level);
|
|
260
|
+
if (def.apply) {
|
|
261
|
+
for (const entity of [...world.index.ownedBy(player)]) if (entity.alive) def.apply(world, entity, level);
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
who.researching.delete(command.upgrade);
|
|
265
|
+
});
|
|
266
|
+
/**
|
|
267
|
+
* Raises heroes to a level (never down, and no further than they can go: `setHeroLevel`)
|
|
268
|
+
*
|
|
269
|
+
* @beta
|
|
270
|
+
*/
|
|
271
|
+
var setLevelCommand = defineDebugCommand("debug.setLevel", {
|
|
272
|
+
entities: ids,
|
|
273
|
+
level: number
|
|
274
|
+
}, (world, _player, command) => {
|
|
275
|
+
for (const entityId of command.entities) {
|
|
276
|
+
const entity = world.get(entityId);
|
|
277
|
+
if (entity?.alive) setHeroLevel(world, entity, command.level);
|
|
278
|
+
}
|
|
279
|
+
});
|
|
280
|
+
/**
|
|
281
|
+
* Wins the game for the sender's team: the others are out, and it is over. A game with a way to win of its own is
|
|
282
|
+
* ended all the same
|
|
283
|
+
*
|
|
284
|
+
* @beta
|
|
285
|
+
*/
|
|
286
|
+
var winCommand = defineDebugCommand("debug.win", {}, (world, player) => {
|
|
287
|
+
if (world.winner !== null) return;
|
|
288
|
+
const team = world.player(player).team;
|
|
289
|
+
for (const other of world.players.values()) {
|
|
290
|
+
if (other.neutral || other.creeps) continue;
|
|
291
|
+
other.established = true;
|
|
292
|
+
if (other.team !== team && !other.defeated) defeat(world, other.id);
|
|
293
|
+
}
|
|
294
|
+
world.winner = team;
|
|
295
|
+
world.events.emit(gameOver, { winner: team });
|
|
296
|
+
});
|
|
297
|
+
/**
|
|
298
|
+
* Puts the sender out of the game, as if beaten: the others play on, or win by the game's own rule
|
|
299
|
+
*
|
|
300
|
+
* @beta
|
|
301
|
+
*/
|
|
302
|
+
var loseCommand = defineDebugCommand("debug.lose", {}, (world, player) => {
|
|
303
|
+
const who = world.player(player);
|
|
304
|
+
if (who.neutral || who.creeps || who.defeated || world.winner !== null) return;
|
|
305
|
+
who.established = true;
|
|
306
|
+
defeat(world, player);
|
|
307
|
+
});
|
|
308
|
+
/**
|
|
309
|
+
* Kills what it names, whoever's it is: what cannot be hurt included, but not scenery the map is made of
|
|
310
|
+
*
|
|
311
|
+
* @beta
|
|
312
|
+
*/
|
|
313
|
+
var killCommand = defineDebugCommand("debug.kill", { entities: ids }, (world, _player, command) => {
|
|
314
|
+
for (const entityId of command.entities) {
|
|
315
|
+
const entity = world.get(entityId);
|
|
316
|
+
if (entity?.alive && !entity.def.invulnerable) world.kill(entity, void 0, false, "removed");
|
|
317
|
+
}
|
|
318
|
+
});
|
|
319
|
+
/**
|
|
320
|
+
* Changes a field of a definition while the game runs, as the editor's Data panel tries it: only one the game lets be
|
|
321
|
+
* changed (`Rules.editable`), and for players allowed the debug tools
|
|
322
|
+
*
|
|
323
|
+
* @beta
|
|
324
|
+
*/
|
|
325
|
+
var redefineCommand = defineDebugCommand("debug.redefine", {
|
|
326
|
+
kind: oneOf(...DATA_KINDS),
|
|
327
|
+
id: string,
|
|
328
|
+
path: pathCheck,
|
|
329
|
+
value: valueCheck
|
|
330
|
+
}, (world, player, command) => {
|
|
331
|
+
const def = definitionIn(world.registry, command.kind, command.id);
|
|
332
|
+
if (!def && command.path === "copyOf" && typeof command.value === "string") {
|
|
333
|
+
const base = definitionIn(world.registry, command.kind, command.value);
|
|
334
|
+
if (base && editableFields(world.registry.module, command.kind, base).length) world.redefine(command.kind, command.id, { [COPY_OF]: command.value });
|
|
335
|
+
return;
|
|
336
|
+
}
|
|
337
|
+
if (!def && command.path === "new" && command.value === true) {
|
|
338
|
+
if (editableFields(world.registry.module, command.kind, blankDefinition(command.kind, command.id)).length) world.redefine(command.kind, command.id, { ["new"]: true });
|
|
339
|
+
return;
|
|
340
|
+
}
|
|
341
|
+
if (!def) return;
|
|
342
|
+
const field = editableFields(world.registry.module, command.kind, def).find((each) => each.path === command.path);
|
|
343
|
+
const fit = field ? fitValue(field, command.value) : { error: `${command.path} cannot be changed` };
|
|
344
|
+
if ("error" in fit) world.message(player, {
|
|
345
|
+
key: "dataRefused",
|
|
346
|
+
params: { why: fit.error }
|
|
347
|
+
});
|
|
348
|
+
else world.redefine(command.kind, command.id, nested(command.path, fit.value));
|
|
349
|
+
});
|
|
350
|
+
/** The most of anything a value of a map's own may hold, and as deep: a field of the game's, not a file */
|
|
351
|
+
var PLAIN_MOST = 1e4;
|
|
352
|
+
var PLAIN_DEPTH = 16;
|
|
353
|
+
/** What the map's own fields hold (`MapObject.data`): numbers, words, switches, lists and objects of them, and nothing else */
|
|
354
|
+
var plain = (value, path) => {
|
|
355
|
+
let count = 0;
|
|
356
|
+
const copy = (each, at, depth) => {
|
|
357
|
+
if (++count > PLAIN_MOST || depth > PLAIN_DEPTH) throw new Invalid(`${path} is more than a field of the map holds`);
|
|
358
|
+
if (each === null || typeof each === "boolean" || typeof each === "string") return each;
|
|
359
|
+
if (typeof each === "number") return number(each, at);
|
|
360
|
+
if (Array.isArray(each)) return each.map((item, i) => copy(item, `${at}[${i}]`, depth + 1));
|
|
361
|
+
if (isObject(each)) return Object.fromEntries(Object.entries(each).map(([key, item]) => [key, copy(item, `${at}.${key}`, depth + 1)]));
|
|
362
|
+
throw new Invalid(`${at} is not a value of the map's`);
|
|
363
|
+
};
|
|
364
|
+
return copy(value, path, 0);
|
|
365
|
+
};
|
|
366
|
+
/** A list of what a check takes, so long at most */
|
|
367
|
+
var listOf = (check, most) => (value, path) => {
|
|
368
|
+
if (!Array.isArray(value) || value.length > most) throw new Invalid(`${path} is a list of at most ${most}`);
|
|
369
|
+
return value.map((item, i) => check(item, `${path}[${i}]`));
|
|
370
|
+
};
|
|
371
|
+
/** What a cell of the ground holds: 0 to 255 */
|
|
372
|
+
var byte = (value, path) => {
|
|
373
|
+
if (!Number.isInteger(value) || value < 0 || value > 255) throw new Invalid(`${path} is a whole number of 0 to 255`);
|
|
374
|
+
return value;
|
|
375
|
+
};
|
|
376
|
+
/** The most cells a patch of the ground has: a map of 2048 a side */
|
|
377
|
+
var MOST_CELLS = 4198401;
|
|
378
|
+
/** A patch of the ground (`TerrainPatch`), each layer the size the ground says, checked as it is put in */
|
|
379
|
+
var terrainPatchCheck = (value, path) => {
|
|
380
|
+
return object({
|
|
381
|
+
x: id,
|
|
382
|
+
z: id,
|
|
383
|
+
width: id,
|
|
384
|
+
depth: id,
|
|
385
|
+
heights: listOf(number, MOST_CELLS),
|
|
386
|
+
waterHeights: listOf(number, MOST_CELLS),
|
|
387
|
+
levels: listOf(byte, MOST_CELLS),
|
|
388
|
+
water: listOf(byte, MOST_CELLS),
|
|
389
|
+
tiles: listOf(byte, MOST_CELLS),
|
|
390
|
+
blocked: listOf(byte, MOST_CELLS),
|
|
391
|
+
cells: optional((layers, at) => {
|
|
392
|
+
if (!isObject(layers)) throw new Invalid(`${at} is the layers of cells by id`);
|
|
393
|
+
return Object.fromEntries(Object.entries(layers).map(([layer, cells]) => [string(layer, at), listOf(byte, MOST_CELLS)(cells, `${at}.${layer}`)]));
|
|
394
|
+
})
|
|
395
|
+
})(value, path);
|
|
396
|
+
};
|
|
397
|
+
/** An object of the map (`MapObject`), as the editor has it: what of it the world reads, checked. Not turned, and as big as its type, when it does not say */
|
|
398
|
+
var mapObjectCheck = (value, path) => ({
|
|
399
|
+
facing: 0,
|
|
400
|
+
scale: 1,
|
|
401
|
+
...object({
|
|
402
|
+
id,
|
|
403
|
+
type: string,
|
|
404
|
+
owner: id,
|
|
405
|
+
x: number,
|
|
406
|
+
z: number,
|
|
407
|
+
facing: optional(number),
|
|
408
|
+
scale: optional(number),
|
|
409
|
+
look: optional(string),
|
|
410
|
+
drops: optional(string),
|
|
411
|
+
name: optional(string),
|
|
412
|
+
health: optional(number),
|
|
413
|
+
mana: optional(number),
|
|
414
|
+
level: optional(number),
|
|
415
|
+
abilities: optional(plain),
|
|
416
|
+
items: optional(listOf(string, 100)),
|
|
417
|
+
amount: optional(number),
|
|
418
|
+
underConstruction: optional(bool),
|
|
419
|
+
lifetime: optional(number),
|
|
420
|
+
orders: optional(plain),
|
|
421
|
+
data: optional(plain)
|
|
422
|
+
})(value, path)
|
|
423
|
+
});
|
|
424
|
+
/**
|
|
425
|
+
* An object placed on the map put in the world as the map's are as the world is made (`spawnMapObject`): its type,
|
|
426
|
+
* owner, where it stands and how it is turned, and the rest the map says of it (its health, level, items, the game's
|
|
427
|
+
* fields, its orders), kept as the entity of that object (`World.fromMap`): what the editor's Play here sends as
|
|
428
|
+
* something is placed on the map while it plays (EQ10). A building where there is no room is refused, as `debug.spawn`
|
|
429
|
+
* refuses it
|
|
430
|
+
*
|
|
431
|
+
* @beta
|
|
432
|
+
*/
|
|
433
|
+
var mapObjectCommand = defineDebugCommand("debug.mapObject", { object: mapObjectCheck }, (world, player, command) => {
|
|
434
|
+
const { object } = command;
|
|
435
|
+
if (!world.registry.units.has(object.type) || !world.players.has(object.owner)) return;
|
|
436
|
+
const def = world.registry.unit(object.type);
|
|
437
|
+
if (def.kind !== "unit") {
|
|
438
|
+
const fp = footprintOf(def);
|
|
439
|
+
const cell = world.grid.cellFor(object.x, object.z, fp.w, fp.d);
|
|
440
|
+
if (!world.grid.canPlace(cell.x, cell.z, fp.w, fp.d)) return world.message(player, { key: "noRoomHere" });
|
|
441
|
+
}
|
|
442
|
+
const entity = spawnMapObject(world, object);
|
|
443
|
+
if (Array.isArray(object.orders) && object.orders.length) giveMapOrders(world, entity, object.orders);
|
|
444
|
+
});
|
|
445
|
+
/**
|
|
446
|
+
* Moves what an object of the map became (`World.fromMap`, by the object's id) where it stands on the map now,
|
|
447
|
+
* turned as it is: a unit is put there (`World.place`), the way there not its concern. A structure is not moved: the
|
|
448
|
+
* editor takes it away and puts it down again
|
|
449
|
+
*
|
|
450
|
+
* @beta
|
|
451
|
+
*/
|
|
452
|
+
var placeCommand = defineDebugCommand("debug.place", {
|
|
453
|
+
object: id,
|
|
454
|
+
point,
|
|
455
|
+
facing: optional(number)
|
|
456
|
+
}, (world, _player, command) => {
|
|
457
|
+
const entity = world.get(world.fromMap.get(command.object));
|
|
458
|
+
if (!entity?.alive || entity.isStructure) return;
|
|
459
|
+
world.place(entity, command.point);
|
|
460
|
+
if (command.facing !== void 0) entity.facing = command.facing;
|
|
461
|
+
});
|
|
462
|
+
/**
|
|
463
|
+
* Takes what objects of the map became (`World.fromMap`, by the objects' ids) out of the world, whatever they
|
|
464
|
+
* are, scenery included: no corpse is left. What the editor's Play here sends as something is taken off the map
|
|
465
|
+
*
|
|
466
|
+
* @beta
|
|
467
|
+
*/
|
|
468
|
+
var unplaceCommand = defineDebugCommand("debug.unplace", { objects: ids }, (world, _player, command) => {
|
|
469
|
+
const gone = /* @__PURE__ */ new Set();
|
|
470
|
+
for (const object of command.objects) {
|
|
471
|
+
const entity = world.get(world.fromMap.get(object));
|
|
472
|
+
world.fromMap.delete(object);
|
|
473
|
+
if (!entity?.alive) continue;
|
|
474
|
+
world.kill(entity, void 0, false, "removed");
|
|
475
|
+
gone.add(entity.id);
|
|
476
|
+
}
|
|
477
|
+
const lying = world.state(corpses);
|
|
478
|
+
if (lying.some((corpse) => gone.has(corpse.id))) world.setState(corpses, lying.filter((corpse) => !gone.has(corpse.id)));
|
|
479
|
+
});
|
|
480
|
+
/**
|
|
481
|
+
* Reshapes a part of the ground as the patch has it (`World.reshapeGround`): what the editor's Play here sends of the
|
|
482
|
+
* map's ground as its heights, cliffs, water and paint are edited while it plays. A patch that does not fit the ground
|
|
483
|
+
* is refused
|
|
484
|
+
*
|
|
485
|
+
* @beta
|
|
486
|
+
*/
|
|
487
|
+
var groundCommand = defineDebugCommand("debug.ground", { patch: terrainPatchCheck }, (world, player, command) => {
|
|
488
|
+
const problem = terrainPatchProblem(world.terrain, command.patch);
|
|
489
|
+
if (problem) return world.message(player, {
|
|
490
|
+
key: "dataRefused",
|
|
491
|
+
params: { why: problem }
|
|
492
|
+
});
|
|
493
|
+
world.reshapeGround(command.patch);
|
|
494
|
+
});
|
|
495
|
+
/** The ground reshaped (`World.reshapeGround`): to everyone, as it is now */
|
|
496
|
+
var toldGround = replicateEvent(groundReshaped, "ground", ({ patch }) => ({
|
|
497
|
+
type: "ground",
|
|
498
|
+
patch: structuredClone(patch)
|
|
499
|
+
}));
|
|
500
|
+
/**
|
|
501
|
+
* The debug commands of the engine, which every game has; they go through only for who may use them
|
|
502
|
+
*
|
|
503
|
+
* @beta
|
|
504
|
+
*/
|
|
505
|
+
var debugCommands = [
|
|
506
|
+
cheatCommand,
|
|
507
|
+
revealCommand,
|
|
508
|
+
exploreCommand,
|
|
509
|
+
hourCommand,
|
|
510
|
+
speedCommand,
|
|
511
|
+
spawnCommand,
|
|
512
|
+
paintCommand,
|
|
513
|
+
giveCommand,
|
|
514
|
+
experienceCommand,
|
|
515
|
+
killCommand,
|
|
516
|
+
spawnPrefabCommand,
|
|
517
|
+
teleportCommand,
|
|
518
|
+
setOwnerCommand,
|
|
519
|
+
giveItemCommand,
|
|
520
|
+
researchCommand,
|
|
521
|
+
setLevelCommand,
|
|
522
|
+
winCommand,
|
|
523
|
+
loseCommand,
|
|
524
|
+
mapObjectCommand,
|
|
525
|
+
placeCommand,
|
|
526
|
+
unplaceCommand,
|
|
527
|
+
groundCommand
|
|
528
|
+
];
|
|
529
|
+
/** What a player who may use the debug commands is told of them (`Snapshot.debug`): the switches on, and whether the map started explored */
|
|
530
|
+
var debugPart = snapshotField("debug", ({ world, player }) => world.debugPlayers.has(player) ? {
|
|
531
|
+
...world.cheats,
|
|
532
|
+
explored: world.fog.exploredFromStart
|
|
533
|
+
} : void 0, true);
|
|
534
|
+
//#endregion
|
|
535
|
+
export { cheatCommand, debugCommands, debugPart, defineDebugCommand, experienceCommand, exploreCommand, giveCommand, giveItemCommand, groundCommand, hourCommand, killCommand, loseCommand, mapObjectCommand, paintCommand, placeCommand, redefineCommand, researchCommand, revealCommand, setLevelCommand, setOwnerCommand, spawnCommand, spawnPrefabCommand, speedCommand, teleportCommand, toldGround, unplaceCommand, winCommand };
|
|
536
|
+
|
|
537
|
+
//# sourceMappingURL=debugCommands.js.map
|