@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/hooks.d.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import type { ChatAudience } from './talk';
|
|
2
|
-
import type { AbilityDef, BuffDef, Cost, DamageType, StatChange, Stats, UnitTypeDef } from './defs';
|
|
2
|
+
import type { AbilityDef, BuffDef, Cost, DamageType, EffectDef, StatChange, Stats, UnitTypeDef } from './defs';
|
|
3
3
|
import type { Camp } from './camps';
|
|
4
4
|
import type { BuffInstance, Entity, EntityId, ItemInstance, Order, PlayerId } from './entity';
|
|
5
5
|
import type { FormationDef } from './formation';
|
|
6
6
|
import type { AreaDef } from './areas';
|
|
7
7
|
import type { GameMap, MapCamp, MapObject, MapRegion } from './map';
|
|
8
8
|
import type { Rect, Vec2 } from './math';
|
|
9
|
-
import type
|
|
10
|
-
import type { DeathCause, DeathReason, World } from './world';
|
|
9
|
+
import { type MessageRef } from './messages';
|
|
10
|
+
import type { DeathCause, DeathReason, Missile, World } from './world';
|
|
11
11
|
/**
|
|
12
12
|
* Hooks are how game modules and mods take part in what the engine does, while it does it: make an attack
|
|
13
13
|
* hit harder, keep a unit from dying, pay for a kill, refuse an order. A hook is a list of handlers that run
|
|
@@ -17,39 +17,31 @@ import type { DeathCause, DeathReason, World } from './world';
|
|
|
17
17
|
* happened, once the tick is over, and cannot change anything. Code that is part of the rules uses hooks.
|
|
18
18
|
*/
|
|
19
19
|
/**
|
|
20
|
-
* Damage about to be dealt, before armor and shields. Change `amount` or `type`, or
|
|
20
|
+
* Damage about to be dealt, before armor and shields. Change `amount` or `type`, or `cancel()`
|
|
21
21
|
*
|
|
22
22
|
* @beta
|
|
23
23
|
*/
|
|
24
24
|
export interface BeforeDamage {
|
|
25
|
+
/** The entity about to take the damage */
|
|
25
26
|
readonly target: Entity;
|
|
27
|
+
/** The entity that deals it, left out when nothing does (the rules, a trap) */
|
|
26
28
|
readonly source?: Entity;
|
|
29
|
+
/** The damage in hit points before armor and shields; a handler may change it */
|
|
27
30
|
amount: number;
|
|
31
|
+
/** The damage type, which armor and resistance read; a handler may change it */
|
|
28
32
|
type: DamageType;
|
|
29
33
|
/** A basic attack, not an ability */
|
|
30
34
|
readonly attack: boolean;
|
|
35
|
+
/** Whether the blow is a critical hit */
|
|
31
36
|
readonly crit: boolean;
|
|
32
37
|
/** The ability that deals it, by id. Left out for a basic attack */
|
|
33
38
|
readonly ability?: string;
|
|
34
39
|
/** Words of the game's own about it, see `DamageOptions.tags` */
|
|
35
40
|
readonly tags?: readonly string[];
|
|
41
|
+
/** Whether a handler has called it off; set by `cancel()` */
|
|
36
42
|
cancelled: boolean;
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
* What a hit is multiplied by for the attack's type against the target's armour type (`GameRules.combat.damageTable`),
|
|
40
|
-
* before armour and shields: change `multiplier` to say otherwise. Asked only when the game has a table, or a hook
|
|
41
|
-
* of its own for it
|
|
42
|
-
*/
|
|
43
|
-
export interface DamageMultiplier {
|
|
44
|
-
readonly target: Entity;
|
|
45
|
-
readonly source?: Entity;
|
|
46
|
-
/** The attack's type, as the attack or the ability said it (`AttackDef.attackType`, `DamageOptions.attackType`) */
|
|
47
|
-
readonly attackType?: string;
|
|
48
|
-
/** The target's armour type (`UnitTypeDef.armourType`) */
|
|
49
|
-
readonly armourType?: string;
|
|
50
|
-
/** A basic attack, not an ability */
|
|
51
|
-
readonly attack: boolean;
|
|
52
|
-
multiplier: number;
|
|
43
|
+
/** Stops it. The reason is what the player is told, where this hook tells them (`reason`) */
|
|
44
|
+
cancel(reason?: MessageRef): void;
|
|
53
45
|
}
|
|
54
46
|
/**
|
|
55
47
|
* Damage that was dealt. The target may have died of it
|
|
@@ -57,36 +49,51 @@ export interface DamageMultiplier {
|
|
|
57
49
|
* @beta
|
|
58
50
|
*/
|
|
59
51
|
export interface AfterDamage {
|
|
52
|
+
/** The entity that took the damage */
|
|
60
53
|
readonly target: Entity;
|
|
54
|
+
/** The entity that dealt it, left out when nothing did */
|
|
61
55
|
readonly source?: Entity;
|
|
62
56
|
/** What came off its health, after armor and shields */
|
|
63
57
|
readonly dealt: number;
|
|
64
58
|
/** The part of that it had health for: overkill left out */
|
|
65
59
|
readonly taken: number;
|
|
60
|
+
/** The damage type it was dealt as */
|
|
66
61
|
readonly type: DamageType;
|
|
62
|
+
/** Whether it was a basic attack, not an ability */
|
|
67
63
|
readonly attack: boolean;
|
|
64
|
+
/** Whether the blow was a critical hit */
|
|
68
65
|
readonly crit: boolean;
|
|
66
|
+
/** The ability that dealt it, by id; left out for a basic attack */
|
|
69
67
|
readonly ability?: string;
|
|
68
|
+
/** Words of the game's own about it (`DamageOptions.tags`) */
|
|
70
69
|
readonly tags?: readonly string[];
|
|
71
70
|
}
|
|
72
71
|
/**
|
|
73
|
-
* Health about to be given back. Change `amount`, or
|
|
72
|
+
* Health about to be given back. Change `amount`, or `cancel()`
|
|
74
73
|
*
|
|
75
74
|
* @beta
|
|
76
75
|
*/
|
|
77
76
|
export interface BeforeHeal {
|
|
77
|
+
/** The entity about to be healed */
|
|
78
78
|
readonly target: Entity;
|
|
79
|
+
/** The entity that heals it, left out when nothing does */
|
|
79
80
|
readonly source?: Entity;
|
|
81
|
+
/** How much health is given; a handler may change it */
|
|
80
82
|
amount: number;
|
|
83
|
+
/** Whether a handler has called it off; set by `cancel()` */
|
|
81
84
|
cancelled: boolean;
|
|
85
|
+
/** Stops it. The reason is what the player is told, where this hook tells them (`reason`) */
|
|
86
|
+
cancel(reason?: MessageRef): void;
|
|
82
87
|
}
|
|
83
88
|
/**
|
|
84
|
-
* Something is about to die.
|
|
89
|
+
* Something is about to die. `cancel()` keeps it alive: it is then up to the handler what health it has
|
|
85
90
|
*
|
|
86
91
|
* @beta
|
|
87
92
|
*/
|
|
88
93
|
export interface BeforeDeath {
|
|
94
|
+
/** The entity about to die */
|
|
89
95
|
readonly entity: Entity;
|
|
96
|
+
/** The entity that killed it, left out when nothing did */
|
|
90
97
|
readonly killer?: Entity;
|
|
91
98
|
/** An attack of the killer did it */
|
|
92
99
|
readonly attack: boolean;
|
|
@@ -96,7 +103,10 @@ export interface BeforeDeath {
|
|
|
96
103
|
readonly cause?: DeathCause;
|
|
97
104
|
/** Why it dies (`DeathReason`): `damage`, or what the rules said (`cancelled`, `expired`, a game's own word) */
|
|
98
105
|
readonly reason: DeathReason;
|
|
99
|
-
|
|
106
|
+
/** Whether a handler has called it off; set by `cancel()` */
|
|
107
|
+
cancelled: boolean;
|
|
108
|
+
/** Stops it. The reason is what the player is told, where this hook tells them (`reason`) */
|
|
109
|
+
cancel(reason?: MessageRef): void;
|
|
100
110
|
}
|
|
101
111
|
/**
|
|
102
112
|
* Something dies. In `death` it still stands where it was; in `afterDeath` it is gone from the world
|
|
@@ -104,8 +114,11 @@ export interface BeforeDeath {
|
|
|
104
114
|
* @beta
|
|
105
115
|
*/
|
|
106
116
|
export interface Death {
|
|
117
|
+
/** The entity that died */
|
|
107
118
|
readonly entity: Entity;
|
|
119
|
+
/** The entity that killed it, left out when nothing did */
|
|
108
120
|
readonly killer?: Entity;
|
|
121
|
+
/** Whether an attack of the killer did it */
|
|
109
122
|
readonly attack: boolean;
|
|
110
123
|
/** The blow that did it, when it ran out of health: its damage type, the ability, how much too much */
|
|
111
124
|
readonly cause?: DeathCause;
|
|
@@ -117,17 +130,26 @@ export interface Death {
|
|
|
117
130
|
* (`SessionEvent` `death`) to show it its way (`UnitLook.death`). Nothing when left out
|
|
118
131
|
*/
|
|
119
132
|
how?: string;
|
|
133
|
+
/**
|
|
134
|
+
* The buffs it carried as it fell, in `afterDeath` (where they are taken off it already): an `onKill`'s effects ask
|
|
135
|
+
* them of the one killed (B44). Left out when it carried none
|
|
136
|
+
*/
|
|
137
|
+
readonly carried?: readonly BuffInstance[];
|
|
120
138
|
}
|
|
121
139
|
/**
|
|
122
|
-
* An order about to be given to a unit. Set `rejected` to refuse it
|
|
140
|
+
* An order about to be given to a unit. Set `rejected` to refuse it. A cast that goes off at once, in the middle of
|
|
141
|
+
* what the unit is doing (a potion drunk on the way, a leap), is asked here too, as the cast order it stands for
|
|
123
142
|
*
|
|
124
143
|
* @beta
|
|
125
144
|
*/
|
|
126
145
|
export interface BeforeOrder {
|
|
146
|
+
/** The entity the order is for */
|
|
127
147
|
readonly entity: Entity;
|
|
148
|
+
/** The order about to be given */
|
|
128
149
|
readonly order: Order;
|
|
129
150
|
/** Added to the end of what it does, rather than in place of it */
|
|
130
151
|
readonly queued: boolean;
|
|
152
|
+
/** Whether a handler refuses the order; it is then not given */
|
|
131
153
|
rejected: boolean;
|
|
132
154
|
}
|
|
133
155
|
/**
|
|
@@ -141,12 +163,15 @@ export interface BeforeOrder {
|
|
|
141
163
|
* @beta
|
|
142
164
|
*/
|
|
143
165
|
export interface TargetScore {
|
|
166
|
+
/** The unit looking for a target */
|
|
144
167
|
attacker: Entity;
|
|
168
|
+
/** The candidate it is scoring */
|
|
145
169
|
target: Entity;
|
|
146
170
|
/** Edge to edge */
|
|
147
171
|
distance: number;
|
|
148
|
-
/** Attackers like this one (its layer, its reach) the target has already, and how many it has room for (`
|
|
172
|
+
/** Attackers like this one (its layer, its reach) the target has already, and how many it has room for (`RuleSettings.combat.engageRoom`) */
|
|
149
173
|
engaged: number;
|
|
174
|
+
/** How many attackers like it the target has already (`RuleSettings.combat.engageRoom`) */
|
|
150
175
|
room: number;
|
|
151
176
|
/** What the engine makes of it: things that fight back first, then the closest, and a full one only when nothing else is near */
|
|
152
177
|
score: number;
|
|
@@ -161,30 +186,38 @@ export interface Approach {
|
|
|
161
186
|
point: Vec2;
|
|
162
187
|
}
|
|
163
188
|
/**
|
|
164
|
-
* An ally standing in a unit's way is asked to step aside, to `point` (see `
|
|
189
|
+
* An ally standing in a unit's way is asked to step aside, to `point` (see `RuleSettings.movement.makesWay`, `lookAhead`): change
|
|
165
190
|
* where it goes, or make it null to leave it standing. `mover` is on its way, heading the way of `direction`
|
|
166
191
|
*
|
|
167
192
|
* @beta
|
|
168
193
|
*/
|
|
169
194
|
export interface MakeWay {
|
|
195
|
+
/** The unit that is on its way */
|
|
170
196
|
readonly mover: Entity;
|
|
197
|
+
/** The ally standing in its way, asked to step aside */
|
|
171
198
|
readonly other: Entity;
|
|
172
199
|
/** Where the mover is heading, a unit long */
|
|
173
200
|
readonly direction: Vec2;
|
|
201
|
+
/** Where the other unit goes; change it, or null to leave it standing */
|
|
174
202
|
point: Vec2 | null;
|
|
175
203
|
}
|
|
176
204
|
/**
|
|
177
205
|
* A unit is about to go round units standing in its way (`around`), by `point`, which is `longer` ground units more
|
|
178
|
-
* than the `straight` way to the next corner of its path (see `
|
|
206
|
+
* than the `straight` way to the next corner of its path (see `RuleSettings.movement.goesAround`): change the point, or make it
|
|
179
207
|
* null to have it go straight through, asking them aside. Asked as it comes up to them: keep it cheap
|
|
180
208
|
*
|
|
181
209
|
* @beta
|
|
182
210
|
*/
|
|
183
211
|
export interface Detour {
|
|
212
|
+
/** The unit about to go round the others */
|
|
184
213
|
readonly entity: Entity;
|
|
214
|
+
/** The units standing in its way */
|
|
185
215
|
readonly around: readonly Entity[];
|
|
216
|
+
/** The distance of the straight way to the next corner of its path, in ground units */
|
|
186
217
|
readonly straight: number;
|
|
218
|
+
/** How many ground units longer the way by `point` is than the straight way */
|
|
187
219
|
readonly longer: number;
|
|
220
|
+
/** The point it goes by round the others; change it, or null to go straight through */
|
|
188
221
|
point: Vec2 | null;
|
|
189
222
|
}
|
|
190
223
|
/**
|
|
@@ -195,23 +228,32 @@ export interface Detour {
|
|
|
195
228
|
* @beta
|
|
196
229
|
*/
|
|
197
230
|
export interface Formation {
|
|
231
|
+
/** The units ordered, those that walk or those that fly, each laid out apart */
|
|
198
232
|
readonly units: readonly Entity[];
|
|
233
|
+
/** The point they are ordered to */
|
|
199
234
|
readonly target: Vec2;
|
|
235
|
+
/** The formation the units are laid out in */
|
|
200
236
|
readonly formation: FormationDef;
|
|
237
|
+
/** Where each unit goes, by entity id; a handler may change, add or remove places */
|
|
201
238
|
readonly points: Map<EntityId, Vec2>;
|
|
202
239
|
}
|
|
203
240
|
/**
|
|
204
|
-
* Whether a structure may be placed.
|
|
241
|
+
* Whether a structure may be placed. `cancel(reason)` refuses it, with what the player is told
|
|
205
242
|
*
|
|
206
243
|
* @beta
|
|
207
244
|
*/
|
|
208
245
|
export interface CanPlace {
|
|
246
|
+
/** The unit type of the structure to be placed */
|
|
209
247
|
readonly def: UnitTypeDef;
|
|
210
248
|
/** The ground it would cover */
|
|
211
249
|
readonly site: Rect;
|
|
212
250
|
/** Who would build it. Left out when the engine asks for itself */
|
|
213
251
|
readonly player?: PlayerId;
|
|
214
|
-
|
|
252
|
+
/** Whether a handler has refused the placing; set by `cancel()` */
|
|
253
|
+
cancelled: boolean;
|
|
254
|
+
/** Stops it. The reason is what the player is told, where this hook tells them (`reason`) */
|
|
255
|
+
cancel(reason?: MessageRef): void;
|
|
256
|
+
/** What the player is told of why it was refused */
|
|
215
257
|
reason?: MessageRef;
|
|
216
258
|
}
|
|
217
259
|
/**
|
|
@@ -222,17 +264,27 @@ export interface CanPlace {
|
|
|
222
264
|
* @beta
|
|
223
265
|
*/
|
|
224
266
|
export interface BeforeCast {
|
|
267
|
+
/** The unit that casts */
|
|
225
268
|
readonly caster: Entity;
|
|
269
|
+
/** The ability being cast */
|
|
226
270
|
readonly ability: AbilityDef;
|
|
271
|
+
/** The level of the ability it is cast at */
|
|
227
272
|
readonly level: number;
|
|
273
|
+
/** The unit it is cast on, left out for a point or no target */
|
|
228
274
|
readonly target?: Entity;
|
|
275
|
+
/** The point it is cast at (the target's place for a unit target) */
|
|
229
276
|
readonly point: Vec2;
|
|
230
277
|
/** What it is cast from, for an item's ability */
|
|
231
278
|
readonly item?: ItemInstance;
|
|
279
|
+
/** The mana it costs; a handler may change it */
|
|
232
280
|
manaCost: number;
|
|
233
281
|
/** Seconds until it can be used again */
|
|
234
282
|
cooldown: number;
|
|
283
|
+
/** Whether a handler has called the cast off; set by `cancel()` */
|
|
235
284
|
cancelled: boolean;
|
|
285
|
+
/** Stops it. The reason is what the player is told, where this hook tells them (`reason`) */
|
|
286
|
+
cancel(reason?: MessageRef): void;
|
|
287
|
+
/** What the player is told of why it was called off */
|
|
236
288
|
reason?: MessageRef;
|
|
237
289
|
}
|
|
238
290
|
/**
|
|
@@ -241,11 +293,17 @@ export interface BeforeCast {
|
|
|
241
293
|
* @beta
|
|
242
294
|
*/
|
|
243
295
|
export interface AfterCast {
|
|
296
|
+
/** The unit that cast */
|
|
244
297
|
readonly caster: Entity;
|
|
298
|
+
/** The ability that went off */
|
|
245
299
|
readonly ability: AbilityDef;
|
|
300
|
+
/** The level it was cast at */
|
|
246
301
|
readonly level: number;
|
|
302
|
+
/** The unit it was cast on, left out for a point or no target */
|
|
247
303
|
readonly target?: Entity;
|
|
304
|
+
/** The point it was cast at */
|
|
248
305
|
readonly point: Vec2;
|
|
306
|
+
/** The item it was cast from, for an item's ability */
|
|
249
307
|
readonly item?: ItemInstance;
|
|
250
308
|
/** It went off charged, and spent the charge */
|
|
251
309
|
readonly charged: boolean;
|
|
@@ -256,13 +314,20 @@ export interface AfterCast {
|
|
|
256
314
|
* @beta
|
|
257
315
|
*/
|
|
258
316
|
export interface BeforeBuff {
|
|
317
|
+
/** The unit about to get the buff */
|
|
259
318
|
readonly target: Entity;
|
|
319
|
+
/** The buff to be put on */
|
|
260
320
|
readonly buff: BuffDef;
|
|
321
|
+
/** The unit that puts it on, left out when nothing does */
|
|
261
322
|
readonly source?: Entity;
|
|
323
|
+
/** The level the buff is put on at; a handler may change it */
|
|
262
324
|
level: number;
|
|
263
325
|
/** Seconds, after tenacity. Infinity for one that stays */
|
|
264
326
|
duration: number;
|
|
327
|
+
/** Whether a handler has called it off; set by `cancel()` */
|
|
265
328
|
cancelled: boolean;
|
|
329
|
+
/** Stops it. The reason is what the player is told, where this hook tells them (`reason`) */
|
|
330
|
+
cancel(reason?: MessageRef): void;
|
|
266
331
|
}
|
|
267
332
|
/**
|
|
268
333
|
* A buff that came off: it ran out (`expired`), or was taken off. Not called for the buffs of something that dies
|
|
@@ -270,11 +335,18 @@ export interface BeforeBuff {
|
|
|
270
335
|
* @beta
|
|
271
336
|
*/
|
|
272
337
|
export interface BuffEnd {
|
|
338
|
+
/** The entity the buff was on */
|
|
273
339
|
readonly entity: Entity;
|
|
340
|
+
/** The buff instance that ended, with its level and source */
|
|
274
341
|
readonly buff: BuffInstance;
|
|
342
|
+
/** Whether the buff ran out its duration; false when it was taken off */
|
|
275
343
|
readonly expired: boolean;
|
|
276
344
|
}
|
|
277
|
-
/**
|
|
345
|
+
/**
|
|
346
|
+
* One of the five things that are made: a unit trained, an upgrade researched, a building morphed, a hero revived, a structure put down
|
|
347
|
+
*
|
|
348
|
+
* @beta
|
|
349
|
+
*/
|
|
278
350
|
export type ProductionKind = 'unit' | 'upgrade' | 'morph' | 'revive' | 'structure';
|
|
279
351
|
/**
|
|
280
352
|
* Something about to be made: a unit trained, an upgrade researched, a building upgraded, a hero brought back,
|
|
@@ -283,16 +355,23 @@ export type ProductionKind = 'unit' | 'upgrade' | 'morph' | 'revive' | 'structur
|
|
|
283
355
|
* @beta
|
|
284
356
|
*/
|
|
285
357
|
export interface BeforeProduce {
|
|
358
|
+
/** The player the production is for */
|
|
286
359
|
readonly player: PlayerId;
|
|
287
360
|
/** The building it is made in, or the worker putting down a structure */
|
|
288
361
|
readonly producer: Entity;
|
|
362
|
+
/** What is being made: `unit`, `upgrade`, `morph`, `revive` or `structure` */
|
|
289
363
|
readonly kind: ProductionKind;
|
|
290
364
|
/** Unit type, upgrade, the type a building becomes, the id of a hero, or a structure type */
|
|
291
365
|
readonly id: string;
|
|
366
|
+
/** What it costs the player; a handler may change it */
|
|
292
367
|
cost: Cost;
|
|
293
368
|
/** Seconds it takes */
|
|
294
369
|
time: number;
|
|
370
|
+
/** Whether a handler has called it off; set by `cancel()` */
|
|
295
371
|
cancelled: boolean;
|
|
372
|
+
/** Stops it. The reason is what the player is told, where this hook tells them (`reason`) */
|
|
373
|
+
cancel(reason?: MessageRef): void;
|
|
374
|
+
/** What the player is told of why it was called off */
|
|
296
375
|
reason?: MessageRef;
|
|
297
376
|
}
|
|
298
377
|
/** Every hook, and what its handlers get */
|
|
@@ -304,21 +383,26 @@ export interface BeforeProduce {
|
|
|
304
383
|
* @beta
|
|
305
384
|
*/
|
|
306
385
|
export interface Idle {
|
|
386
|
+
/** The unit with nothing to do */
|
|
307
387
|
readonly entity: Entity;
|
|
388
|
+
/** Seconds the tick lasts */
|
|
308
389
|
readonly dt: number;
|
|
309
390
|
/** Whether it fights by itself: it has an attack and is not told to stand down. The engine only does that */
|
|
310
391
|
readonly fights: boolean;
|
|
392
|
+
/** Whether a handler took over the idle unit; set it to stop the engine's own idle behaviour */
|
|
311
393
|
handled: boolean;
|
|
312
394
|
}
|
|
313
395
|
/**
|
|
314
396
|
* Whether an attacker may attack a target: what the engine makes of it (its attack's targets, whether they are
|
|
315
|
-
* enemies) is in `
|
|
397
|
+
* enemies) is in `cancelled`, to change. A buff that lets a unit hit what flies; a truce. Asked very often, the same
|
|
316
398
|
* object handed out again and again: keep nothing of it
|
|
317
399
|
*/
|
|
318
400
|
export interface CanAttack {
|
|
319
401
|
attacker: Entity;
|
|
320
402
|
target: Entity;
|
|
321
|
-
|
|
403
|
+
cancelled: boolean;
|
|
404
|
+
/** Stops it. The reason is what the player is told, where this hook tells them (`reason`) */
|
|
405
|
+
cancel(reason?: MessageRef): void;
|
|
322
406
|
/**
|
|
323
407
|
* Whether a player told the attacker to attack this one (an attack order): what a game lets of its own side, as a
|
|
324
408
|
* deny (`denying`). Never when a unit picks a target by itself or fights back, so nothing turns on its own side
|
|
@@ -350,6 +434,8 @@ export interface BeforeAttack {
|
|
|
350
434
|
/** How what it kills dies, for the screen (`AttackDef.how`, worked out for this blow): changed as the game likes */
|
|
351
435
|
how?: string;
|
|
352
436
|
cancelled: boolean;
|
|
437
|
+
/** Stops it. The reason is what the player is told, where this hook tells them (`reason`) */
|
|
438
|
+
cancel(reason?: MessageRef): void;
|
|
353
439
|
}
|
|
354
440
|
/**
|
|
355
441
|
* The stats of an entity being added up, once what the engine knows of (its type, levels, research, items, buffs) is
|
|
@@ -363,8 +449,8 @@ export interface StatsHook {
|
|
|
363
449
|
add(change: StatChange, times?: number): void;
|
|
364
450
|
}
|
|
365
451
|
/**
|
|
366
|
-
* Whether an ability can be used now: what the engine makes of it (level, cooldown, mana, silence)
|
|
367
|
-
*
|
|
452
|
+
* Whether an ability can be used now: what the engine makes of it (level, cooldown, mana, silence) is `cancelled` with its
|
|
453
|
+
* `reason`: `cancelled = false` clears it ("free while Clearcasting"), `cancel(reason)` sets it ("not while carrying the flag"). The cost itself is `beforeCast`'s: one
|
|
368
454
|
* that is let through for free sets its `manaCost` to 0 there too. The player's screen is told what this decided for
|
|
369
455
|
* the abilities of their own units
|
|
370
456
|
*/
|
|
@@ -374,10 +460,13 @@ export interface CanCast {
|
|
|
374
460
|
readonly level: number;
|
|
375
461
|
/** What it is used from, for an item's ability */
|
|
376
462
|
readonly item?: ItemInstance;
|
|
377
|
-
|
|
463
|
+
reason?: MessageRef;
|
|
464
|
+
cancelled: boolean;
|
|
465
|
+
/** Stops it. The reason is what the player is told, where this hook tells them (`reason`) */
|
|
466
|
+
cancel(reason?: MessageRef): void;
|
|
378
467
|
}
|
|
379
468
|
/**
|
|
380
|
-
* Whether an ability may be used on a target: what the engine makes of it (the ability's `targets`)
|
|
469
|
+
* Whether an ability may be used on a target: what the engine makes of it (the ability's `targets`) is `cancelled`, with its `reason`: `cancelled = false` to
|
|
381
470
|
* clear ("can target allied buildings below half health") or to set. The screen only knows the declared targets: what
|
|
382
471
|
* this changes, the simulation says when the order comes
|
|
383
472
|
*/
|
|
@@ -385,7 +474,66 @@ export interface CanTarget {
|
|
|
385
474
|
readonly caster: Entity;
|
|
386
475
|
readonly ability: AbilityDef;
|
|
387
476
|
readonly target: Entity;
|
|
388
|
-
|
|
477
|
+
reason?: MessageRef;
|
|
478
|
+
cancelled: boolean;
|
|
479
|
+
/** Stops it. The reason is what the player is told, where this hook tells them (`reason`) */
|
|
480
|
+
cancel(reason?: MessageRef): void;
|
|
481
|
+
}
|
|
482
|
+
/**
|
|
483
|
+
* An effect of an ability about to reach one target (`beforeEffect`): who it is from, the effect, whom it reaches, where
|
|
484
|
+
* it went off from. Cancelled, it does not reach that one, and only that one: the rest of an area are reached, a missile
|
|
485
|
+
* passes it by (it is in its `hit`, so it is not asked again). Asked wherever any effect reaches any target: who an
|
|
486
|
+
* effect applies to (`effectTargets`, so a `damage`, `heal`, `buff`, `knockback`, `pull`, `dispel`, a game's own that
|
|
487
|
+
* asks), a missile's hit (with `missile`: a shield that eats it takes it out with `removeMissile`), what a game's own
|
|
488
|
+
* effect asks (`mayReach`). Not for an aura's buff, which is kept up rather than landed. Asked only where a handler
|
|
489
|
+
* is there: a game without one pays nothing
|
|
490
|
+
*
|
|
491
|
+
* @beta
|
|
492
|
+
*/
|
|
493
|
+
export interface BeforeEffect {
|
|
494
|
+
/** Whose the effect is */
|
|
495
|
+
readonly caster: Entity;
|
|
496
|
+
/** The ability the effect belongs to */
|
|
497
|
+
readonly ability: AbilityDef;
|
|
498
|
+
/** The level it was cast at */
|
|
499
|
+
readonly level: number;
|
|
500
|
+
/** The effect, as it runs (a chain lowered: `lowerChain`) */
|
|
501
|
+
readonly effect: EffectDef;
|
|
502
|
+
/** Whom it is about to reach */
|
|
503
|
+
readonly target: Entity;
|
|
504
|
+
/** What it went off from, when not the caster (`EffectContext.origin`) */
|
|
505
|
+
readonly origin?: Entity | Vec2;
|
|
506
|
+
/** Where it landed */
|
|
507
|
+
readonly point: Vec2;
|
|
508
|
+
/** The missile that reached the target, for a missile's hit */
|
|
509
|
+
readonly missile?: Missile;
|
|
510
|
+
/** Whether a handler has called it off for this target; set by `cancel()` */
|
|
511
|
+
cancelled: boolean;
|
|
512
|
+
/** It does not reach this target */
|
|
513
|
+
cancel(): void;
|
|
514
|
+
}
|
|
515
|
+
/**
|
|
516
|
+
* An effect of an ability has reached one target (`effectLanded`), after its handler ran: what a game does with each
|
|
517
|
+
* one an ability reached (a passive's stack for each hit, an execute below a threshold). For every target the
|
|
518
|
+
* handler's `effectTargets` gave; asked only where a handler is there
|
|
519
|
+
*
|
|
520
|
+
* @beta
|
|
521
|
+
*/
|
|
522
|
+
export interface EffectLanded {
|
|
523
|
+
/** The unit that cast the ability the effect is from */
|
|
524
|
+
readonly caster: Entity;
|
|
525
|
+
/** The ability the effect is from */
|
|
526
|
+
readonly ability: AbilityDef;
|
|
527
|
+
/** The level the ability was cast at */
|
|
528
|
+
readonly level: number;
|
|
529
|
+
/** The effect that reached the target, as it runs */
|
|
530
|
+
readonly effect: EffectDef;
|
|
531
|
+
/** Whom it reached: dead now, maybe, of it */
|
|
532
|
+
readonly target: Entity;
|
|
533
|
+
/** What it went off from, when not the caster: an entity or a point */
|
|
534
|
+
readonly origin?: Entity | Vec2;
|
|
535
|
+
/** Where the effect landed */
|
|
536
|
+
readonly point: Vec2;
|
|
389
537
|
}
|
|
390
538
|
/**
|
|
391
539
|
* Whether a team sees an entity of someone else's: what the fog and invisibility make of it in `visible`, to change.
|
|
@@ -399,7 +547,7 @@ export interface Visible {
|
|
|
399
547
|
/**
|
|
400
548
|
* Whether a player may make something, as far as what it requires goes: a unit, a level of research (`level`), what a
|
|
401
549
|
* building upgrades to, a structure. What the engine makes of it (the finished buildings it requires: `missing`) is in
|
|
402
|
-
* `
|
|
550
|
+
* `cancelled` with its `reason`, to clear (`cancelled = false`) or set (`cancel(reason)`): "needs Blacksmith upgrade 2", "needs a level 5 hero", "locked until the objective". The
|
|
403
551
|
* player's screen is told what this decided, for what they could make
|
|
404
552
|
*/
|
|
405
553
|
export interface Requirement {
|
|
@@ -410,7 +558,10 @@ export interface Requirement {
|
|
|
410
558
|
readonly level?: number;
|
|
411
559
|
/** Required building types the player does not have */
|
|
412
560
|
readonly missing: readonly string[];
|
|
413
|
-
|
|
561
|
+
reason?: MessageRef;
|
|
562
|
+
cancelled: boolean;
|
|
563
|
+
/** Stops it. The reason is what the player is told, where this hook tells them (`reason`) */
|
|
564
|
+
cancel(reason?: MessageRef): void;
|
|
414
565
|
}
|
|
415
566
|
/**
|
|
416
567
|
* Whether a player may make a unit type or research an upgrade at all, before what it requires (see `isAvailable`):
|
|
@@ -421,11 +572,15 @@ export interface Requirement {
|
|
|
421
572
|
* @beta
|
|
422
573
|
*/
|
|
423
574
|
export interface Available {
|
|
575
|
+
/** The player who would make it */
|
|
424
576
|
readonly player: PlayerId;
|
|
577
|
+
/** Whether it is for a `unit` type or an `upgrade` */
|
|
425
578
|
readonly kind: 'unit' | 'upgrade';
|
|
579
|
+
/** The unit type or upgrade being asked about */
|
|
426
580
|
readonly id: string;
|
|
427
581
|
/** The race the player plays, if the game has races */
|
|
428
582
|
readonly race: string | undefined;
|
|
583
|
+
/** Whether the player may make it at all; the engine sets it from the race, a handler may change it */
|
|
429
584
|
available: boolean;
|
|
430
585
|
}
|
|
431
586
|
/**
|
|
@@ -443,6 +598,8 @@ export interface BeforeTalk {
|
|
|
443
598
|
readonly point?: Vec2;
|
|
444
599
|
readonly pingKind?: string;
|
|
445
600
|
cancelled: boolean;
|
|
601
|
+
/** Stops it. The reason is what the player is told, where this hook tells them (`reason`) */
|
|
602
|
+
cancel(reason?: MessageRef): void;
|
|
446
603
|
}
|
|
447
604
|
/**
|
|
448
605
|
* Resources about to be given to an ally (see `give`): change how much arrives (`received`), or call it off with a
|
|
@@ -455,6 +612,8 @@ export interface BeforeTrade {
|
|
|
455
612
|
readonly sent: number;
|
|
456
613
|
received: number;
|
|
457
614
|
cancelled: boolean;
|
|
615
|
+
/** Stops it. The reason is what the player is told, where this hook tells them (`reason`) */
|
|
616
|
+
cancel(reason?: MessageRef): void;
|
|
458
617
|
reason?: MessageRef;
|
|
459
618
|
}
|
|
460
619
|
/**
|
|
@@ -463,8 +622,13 @@ export interface BeforeTrade {
|
|
|
463
622
|
* @beta
|
|
464
623
|
*/
|
|
465
624
|
export interface BeforeSurrender {
|
|
625
|
+
/** The player about to give up */
|
|
466
626
|
readonly player: PlayerId;
|
|
627
|
+
/** Whether a handler has called it off; set by `cancel()` */
|
|
467
628
|
cancelled: boolean;
|
|
629
|
+
/** Stops it. The reason is what the player is told, where this hook tells them (`reason`) */
|
|
630
|
+
cancel(reason?: MessageRef): void;
|
|
631
|
+
/** What the player is told of why they cannot give up */
|
|
468
632
|
reason?: MessageRef;
|
|
469
633
|
}
|
|
470
634
|
/**
|
|
@@ -474,36 +638,50 @@ export interface BeforeSurrender {
|
|
|
474
638
|
* @beta
|
|
475
639
|
*/
|
|
476
640
|
export interface BeforePause {
|
|
641
|
+
/** The player asking for the pause */
|
|
477
642
|
readonly player: PlayerId;
|
|
643
|
+
/** How many pauses the player has left before this one */
|
|
478
644
|
readonly left: number;
|
|
645
|
+
/** How long the pause lasts at most, in seconds; a handler may change it */
|
|
479
646
|
seconds: number;
|
|
647
|
+
/** Whether a handler has called it off; set by `cancel()` */
|
|
480
648
|
cancelled: boolean;
|
|
649
|
+
/** Stops it. The reason is what the player is told, where this hook tells them (`reason`) */
|
|
650
|
+
cancel(reason?: MessageRef): void;
|
|
651
|
+
/** What the player is told of why the pause was refused */
|
|
481
652
|
reason?: MessageRef;
|
|
482
653
|
}
|
|
483
654
|
/**
|
|
484
655
|
* A player's cap of a pool of supply, once what their buildings provide is added up (see the supply system): change
|
|
485
|
-
* `cap` (a starting amount, an upgrade, a rule of the game's own). The game's most (`
|
|
656
|
+
* `cap` (a starting amount, an upgrade, a rule of the game's own). The game's most (`RuleSettings.supply.max`, a pool's
|
|
486
657
|
* `max`) still holds after
|
|
487
658
|
*
|
|
488
659
|
* @beta
|
|
489
660
|
*/
|
|
490
661
|
export interface SupplyCap {
|
|
662
|
+
/** The player whose supply cap it is */
|
|
491
663
|
readonly player: PlayerId;
|
|
492
|
-
/** `supply` for the one there always is, or the name of one of the game's own (`
|
|
664
|
+
/** `supply` for the one there always is, or the name of one of the game's own (`RuleSettings.supply.pools`) */
|
|
493
665
|
readonly pool: string;
|
|
666
|
+
/** The cap of the pool in supply points, once buildings are added up; a handler may change it */
|
|
494
667
|
cap: number;
|
|
495
668
|
}
|
|
496
669
|
/**
|
|
497
|
-
* Whether a worker may gather from a resource: by default, a resource of a kind it gathers (`harvester.
|
|
670
|
+
* Whether a worker may gather from a resource: by default, a resource of a kind it gathers (`harvester.ids`). Refuse
|
|
498
671
|
* it for a game's own rule: a mine only its owner's cursed mine stands on, a tree of a sacred grove. Asked when it is
|
|
499
672
|
* told to, and of every resource it would go on to by itself
|
|
500
673
|
*
|
|
501
674
|
* @beta
|
|
502
675
|
*/
|
|
503
676
|
export interface CanHarvest {
|
|
677
|
+
/** The worker that would gather */
|
|
504
678
|
readonly worker: Entity;
|
|
679
|
+
/** The resource entity it would gather from */
|
|
505
680
|
readonly source: Entity;
|
|
506
|
-
|
|
681
|
+
/** Whether a handler has refused it; set by `cancel()` */
|
|
682
|
+
cancelled: boolean;
|
|
683
|
+
/** Stops it. The reason is what the player is told, where this hook tells them (`reason`) */
|
|
684
|
+
cancel(reason?: MessageRef): void;
|
|
507
685
|
/** What the player is told when it is refused */
|
|
508
686
|
reason?: MessageRef;
|
|
509
687
|
}
|
|
@@ -514,6 +692,8 @@ export interface BeforeDeposit {
|
|
|
514
692
|
readonly kind: string;
|
|
515
693
|
amount: number;
|
|
516
694
|
cancelled: boolean;
|
|
695
|
+
/** Stops it. The reason is what the player is told, where this hook tells them (`reason`) */
|
|
696
|
+
cancel(reason?: MessageRef): void;
|
|
517
697
|
}
|
|
518
698
|
/** An item about to be bought at a shop: change what it costs, or call it off with a `reason` */
|
|
519
699
|
export interface BeforeBuy {
|
|
@@ -522,6 +702,8 @@ export interface BeforeBuy {
|
|
|
522
702
|
readonly item: string;
|
|
523
703
|
cost: Cost;
|
|
524
704
|
cancelled: boolean;
|
|
705
|
+
/** Stops it. The reason is what the player is told, where this hook tells them (`reason`) */
|
|
706
|
+
cancel(reason?: MessageRef): void;
|
|
525
707
|
reason?: MessageRef;
|
|
526
708
|
}
|
|
527
709
|
/** An item about to be picked up off the ground (`ground` its id there): call it off with a `reason` */
|
|
@@ -530,6 +712,8 @@ export interface BeforePickUp {
|
|
|
530
712
|
readonly item: string;
|
|
531
713
|
readonly ground: number;
|
|
532
714
|
cancelled: boolean;
|
|
715
|
+
/** Stops it. The reason is what the player is told, where this hook tells them (`reason`) */
|
|
716
|
+
cancel(reason?: MessageRef): void;
|
|
533
717
|
reason?: MessageRef;
|
|
534
718
|
}
|
|
535
719
|
/** An item about to be put down: call it off with a `reason` (a cursed blade) */
|
|
@@ -537,6 +721,8 @@ export interface BeforeDrop {
|
|
|
537
721
|
readonly entity: Entity;
|
|
538
722
|
readonly item: ItemInstance;
|
|
539
723
|
cancelled: boolean;
|
|
724
|
+
/** Stops it. The reason is what the player is told, where this hook tells them (`reason`) */
|
|
725
|
+
cancel(reason?: MessageRef): void;
|
|
540
726
|
reason?: MessageRef;
|
|
541
727
|
}
|
|
542
728
|
/** Experience about to go to a hero: change `amount` (the killer gets more), or make it 0. `from` is what was killed, when that is where it comes from */
|
|
@@ -545,11 +731,13 @@ export interface BeforeXp {
|
|
|
545
731
|
readonly from?: Entity;
|
|
546
732
|
amount: number;
|
|
547
733
|
}
|
|
548
|
-
/** Whether a hero may put a point into an ability: what the engine makes of it in `
|
|
734
|
+
/** Whether a hero may put a point into an ability: what the engine makes of it in `cancelled`, to change. The screen hears of it with what the hero can learn */
|
|
549
735
|
export interface CanLearn {
|
|
550
736
|
readonly hero: Entity;
|
|
551
737
|
readonly ability: string;
|
|
552
|
-
|
|
738
|
+
cancelled: boolean;
|
|
739
|
+
/** Stops it. The reason is what the player is told, where this hook tells them (`reason`) */
|
|
740
|
+
cancel(reason?: MessageRef): void;
|
|
553
741
|
}
|
|
554
742
|
/** Something was made: a unit trained (`unit`), research done (`level`), a building upgraded, a hero brought back */
|
|
555
743
|
export interface Produced {
|
|
@@ -579,6 +767,7 @@ export interface Morphed {
|
|
|
579
767
|
* @beta
|
|
580
768
|
*/
|
|
581
769
|
export interface FromMapObject {
|
|
770
|
+
/** The entity that was placed on the map and has become this entity */
|
|
582
771
|
readonly entity: Entity;
|
|
583
772
|
/** As the map has it: where, whose, its name */
|
|
584
773
|
readonly object: Readonly<MapObject>;
|
|
@@ -591,14 +780,16 @@ export interface FromMapObject {
|
|
|
591
780
|
* @beta
|
|
592
781
|
*/
|
|
593
782
|
export interface FromMapCamp {
|
|
783
|
+
/** The camp in the world that the map's camp has become */
|
|
594
784
|
readonly camp: Camp;
|
|
785
|
+
/** The camp as the map has it: where, its units */
|
|
595
786
|
readonly from: Readonly<MapCamp>;
|
|
596
787
|
/** The game's own fields for camps, see `FromMapObject.data` */
|
|
597
788
|
readonly data: Readonly<Record<string, unknown>>;
|
|
598
789
|
}
|
|
599
790
|
/**
|
|
600
791
|
* Something that has died, before it leaves the world: whether it stays (`stays`), out of the world, in the world's
|
|
601
|
-
* entities, to be brought back. No when nothing says so; the heroes pack says yes for a hero (`
|
|
792
|
+
* entities, to be brought back. No when nothing says so; the heroes pack says yes for a hero (`heroesPack`), and a
|
|
602
793
|
* handler after it (a higher `priority`) can say no for a game where heroes fall for good
|
|
603
794
|
*
|
|
604
795
|
* @beta
|
|
@@ -617,7 +808,9 @@ export interface FallenHero {
|
|
|
617
808
|
* @beta
|
|
618
809
|
*/
|
|
619
810
|
export interface FromMapRegion {
|
|
811
|
+
/** The area of the world that the map's region has become */
|
|
620
812
|
readonly area: AreaDef;
|
|
813
|
+
/** The region as the map has it: its name and shape */
|
|
621
814
|
readonly region: Readonly<MapRegion>;
|
|
622
815
|
/** The game's own fields for regions, see `FromMapObject.data` */
|
|
623
816
|
readonly data: Readonly<Record<string, unknown>>;
|
|
@@ -633,14 +826,23 @@ export interface FromMap {
|
|
|
633
826
|
/** The map it was made from */
|
|
634
827
|
readonly map: Readonly<GameMap>;
|
|
635
828
|
}
|
|
636
|
-
/**
|
|
829
|
+
/**
|
|
830
|
+
* The map of hooks the engine runs, by name, to the event each one hands its handlers
|
|
831
|
+
*
|
|
832
|
+
* @beta
|
|
833
|
+
*/
|
|
637
834
|
export interface HookEvents {
|
|
835
|
+
/** Its handlers get a `BeforeDamage`: damage about to be dealt, before armor and shields. Change `amount` or `type`, or `cancel()` */
|
|
638
836
|
beforeDamage: BeforeDamage;
|
|
639
|
-
|
|
837
|
+
/** Its handlers get a `AfterDamage`: damage that was dealt. The target may have died of it */
|
|
640
838
|
afterDamage: AfterDamage;
|
|
839
|
+
/** Its handlers get a `BeforeHeal`: health about to be given back. Change `amount`, or `cancel()` */
|
|
641
840
|
beforeHeal: BeforeHeal;
|
|
841
|
+
/** Its handlers get a `BeforeDeath`: something is about to die. `cancel()` keeps it alive: it is then up to the handler what health it has */
|
|
642
842
|
beforeDeath: BeforeDeath;
|
|
843
|
+
/** Its handlers get a `Death`: something dies. In `death` it still stands where it was; in `afterDeath` it is gone from the world */
|
|
643
844
|
death: Death;
|
|
845
|
+
/** Its handlers get a `Death`: something dies. In `death` it still stands where it was; in `afterDeath` it is gone from the world */
|
|
644
846
|
afterDeath: Death;
|
|
645
847
|
/** Whether what died stays in the world's entities, out of the world, to be brought back (`FallenHero`). @beta */
|
|
646
848
|
fallenHero: FallenHero;
|
|
@@ -655,39 +857,77 @@ export interface HookEvents {
|
|
|
655
857
|
spawn: Entity;
|
|
656
858
|
/** Something left the world for good, at the end of the tick it died in */
|
|
657
859
|
remove: Entity;
|
|
860
|
+
/** Its handlers get a `BeforeOrder`: an order about to be given to a unit. Set `rejected` to refuse it */
|
|
658
861
|
beforeOrder: BeforeOrder;
|
|
862
|
+
/** Its handlers get a `TargetScore`: how much a unit wants to attack something, as it looks for a target by itself. Higher is picked first: raise or lower `score`, or make it `-Infinity` to pass the target over. Towers... */
|
|
659
863
|
targetScore: TargetScore;
|
|
864
|
+
/** Its handlers get a `Approach`: where an attacker goes to fight a target from: its spot around it (see `engagement.ts`), or the target itself, in `point`, to change. A flank for cavalry, behind for assassins. Asked... */
|
|
660
865
|
approach: Approach;
|
|
866
|
+
/** Its handlers get a `MakeWay`: an ally standing in a unit's way is asked to step aside, to `point` (see `RuleSettings.movement.makesWay`, `lookAhead`): change where it goes, or make it null to leave it standing.... */
|
|
661
867
|
makeWay: MakeWay;
|
|
868
|
+
/** Its handlers get a `Detour`: a unit is about to go round units standing in its way (`around`), by `point`, which is `longer` ground units more than the `straight` way to the next corner of its path (see `RuleSettings.movement.goesAround`):... */
|
|
662
869
|
detour: Detour;
|
|
870
|
+
/** Its handlers get a `Formation`: units ordered to a point together have their places in a formation worked out (`FormationDef`, `formationPoints`): change any in `points`, by the unit's id, or add or remove some. `units`... */
|
|
663
871
|
formation: Formation;
|
|
872
|
+
/** Its handlers get a `CanPlace`: whether a structure may be placed. `cancel(reason)` refuses it, with what the player is told */
|
|
664
873
|
canPlace: CanPlace;
|
|
874
|
+
/** Its handlers get a `BeforeCast`: an ability about to go off, before it is paid for. Change what it costs, or call it off with a `reason`. Whether the caster has the mana was already checked against the ability's own... */
|
|
665
875
|
beforeCast: BeforeCast;
|
|
876
|
+
/** Its handlers get a `AfterCast`: an ability that went off */
|
|
666
877
|
afterCast: AfterCast;
|
|
878
|
+
/** Its handlers get a `BeforeBuff`: a buff about to be put on, or put on again. Change how long it lasts or how strong it is, or call it off (immunity) */
|
|
667
879
|
beforeBuff: BeforeBuff;
|
|
880
|
+
/** Its handlers get a `BuffEnd`: a buff that came off: it ran out (`expired`), or was taken off. Not called for the buffs of something that dies */
|
|
668
881
|
buffEnd: BuffEnd;
|
|
882
|
+
/** Its handlers get a `BeforeProduce`: something about to be made: a unit trained, an upgrade researched, a building upgraded, a hero brought back, a structure put down by a worker. Change what it costs and how long it takes,... */
|
|
669
883
|
beforeProduce: BeforeProduce;
|
|
884
|
+
/** Its handlers get a `Idle`: a unit with nothing to do, this tick: no orders. Set `handled` and do what it does instead of what idle units do (fight back, go for enemies that come close, which is only for those... */
|
|
670
885
|
idle: Idle;
|
|
886
|
+
/** Its handlers get a `CanAttack`: whether an attacker may attack a target: what the engine makes of it (its attack's targets, whether they are enemies) is in `cancelled`, to change. A buff that lets a unit hit what... */
|
|
671
887
|
canAttack: CanAttack;
|
|
888
|
+
/** Its handlers get a `BeforeAttack`: an attack going off, as the engine has it: change what it does, or call it off. `target` is left out for an attack at the ground. `splash` is the radius of an attack that hits an area;... */
|
|
672
889
|
beforeAttack: BeforeAttack;
|
|
890
|
+
/** Its handlers get a `StatsHook`: the stats of an entity being added up, once what the engine knows of (its type, levels, research, items, buffs) is in: `add` more, as a stat change (`{ stats: { armor: 2 } }`, `{ percent:... */
|
|
673
891
|
stats: StatsHook;
|
|
892
|
+
/** Its handlers get a `CanCast`: whether an ability can be used now: what the engine makes of it (level, cooldown, mana, silence) is `cancelled` with its `reason`: `cancelled = false` clears it ("free while Clearcasting"),... */
|
|
674
893
|
canCast: CanCast;
|
|
894
|
+
/** Its handlers get a `CanTarget`: whether an ability may be used on a target: what the engine makes of it (the ability's `targets`) is `cancelled`, with its `reason`: `cancelled = false` to clear ("can target allied... */
|
|
675
895
|
canTarget: CanTarget;
|
|
896
|
+
/** An effect about to reach one target: cancel it for that one (`BeforeEffect`). @beta */
|
|
897
|
+
beforeEffect: BeforeEffect;
|
|
898
|
+
/** An effect reached one target, its handler done (`EffectLanded`). @beta */
|
|
899
|
+
effectLanded: EffectLanded;
|
|
900
|
+
/** Its handlers get a `Visible`: whether a team sees an entity of someone else's: what the fog and invisibility make of it in `visible`, to change. Units in brush seen only from up close; a watchtower. Asked very often: keep it cheap */
|
|
676
901
|
visible: Visible;
|
|
902
|
+
/** Its handlers get a `Requirement`: whether a player may make something, as far as what it requires goes: a unit, a level of research (`level`), what a building upgrades to, a structure. What the engine makes of it (the... */
|
|
677
903
|
requirement: Requirement;
|
|
904
|
+
/** Its handlers get a `Available`: whether a player may make a unit type or research an upgrade at all, before what it requires (see `isAvailable`): by default (`available`), what is of no race or of theirs (`race`).... */
|
|
678
905
|
available: Available;
|
|
906
|
+
/** Its handlers get a `BeforeDeposit`: resources a worker hands in: change `amount` (more from mines near the keep), or call it off */
|
|
679
907
|
beforeDeposit: BeforeDeposit;
|
|
908
|
+
/** Its handlers get a `CanHarvest`: whether a worker may gather from a resource: by default, a resource of a kind it gathers (`harvester.ids`). Refuse it for a game's own rule: a mine only its owner's cursed mine stands... */
|
|
680
909
|
canHarvest: CanHarvest;
|
|
910
|
+
/** Its handlers get a `BeforeTalk`: a player about to ping the map or say a line (see `ping`, `chat`): change the words (`text`) or who hears them (`to`), or call it off: a muted player, a word filter, no talking in a... */
|
|
681
911
|
beforeTalk: BeforeTalk;
|
|
912
|
+
/** Its handlers get a `BeforeTrade`: resources about to be given to an ally (see `give`): change how much arrives (`received`), or call it off with a `reason`: no trading in the first minutes, a cap on what goes to one player */
|
|
682
913
|
beforeTrade: BeforeTrade;
|
|
914
|
+
/** Its handlers get a `BeforeSurrender`: a player is about to give up (see `surrender`): call it off with a `reason`, as a game that does not let them before a time */
|
|
683
915
|
beforeSurrender: BeforeSurrender;
|
|
916
|
+
/** Its handlers get a `SupplyCap`: a player's cap of a pool of supply, once what their buildings provide is added up (see the supply system): change `cap` (a starting amount, an upgrade, a rule of the game's own). The... */
|
|
684
917
|
supplyCap: SupplyCap;
|
|
918
|
+
/** Its handlers get a `BeforePause`: a player asks for a pause (see `askPause`): how many they have left before this one (`left`), and how long it lasts at most (`seconds`, which can be changed); call it off with a `reason` */
|
|
685
919
|
beforePause: BeforePause;
|
|
920
|
+
/** Its handlers get a `BeforeBuy`: an item about to be bought at a shop: change what it costs, or call it off with a `reason` */
|
|
686
921
|
beforeBuy: BeforeBuy;
|
|
922
|
+
/** Its handlers get a `BeforePickUp`: an item about to be picked up off the ground (`ground` its id there): call it off with a `reason` */
|
|
687
923
|
beforePickUp: BeforePickUp;
|
|
924
|
+
/** Its handlers get a `BeforeDrop`: an item about to be put down: call it off with a `reason` (a cursed blade) */
|
|
688
925
|
beforeDrop: BeforeDrop;
|
|
926
|
+
/** Its handlers get a `BeforeXp`: experience about to go to a hero: change `amount` (the killer gets more), or make it 0. `from` is what was killed, when that is where it comes from */
|
|
689
927
|
beforeXp: BeforeXp;
|
|
928
|
+
/** Its handlers get a `CanLearn`: whether a hero may put a point into an ability: what the engine makes of it in `cancelled`, to change. The screen hears of it with what the hero can learn */
|
|
690
929
|
canLearn: CanLearn;
|
|
930
|
+
/** Its handlers get a `Produced`: something was made: a unit trained (`unit`), research done (`level`), a building upgraded, a hero brought back */
|
|
691
931
|
produced: Produced;
|
|
692
932
|
/** Something placed on a map has become an entity, as the world is made from the map: what the game does with its own fields */
|
|
693
933
|
mapObject: FromMapObject;
|
|
@@ -698,9 +938,17 @@ export interface HookEvents {
|
|
|
698
938
|
/** The world made from a map is all there, about to start (`FromMap`): what a pack starts from the map's own data. @beta */
|
|
699
939
|
mapStart: FromMap;
|
|
700
940
|
}
|
|
701
|
-
/**
|
|
941
|
+
/**
|
|
942
|
+
* The name of one of the engine's hooks, a key of `HookEvents`
|
|
943
|
+
*
|
|
944
|
+
* @beta
|
|
945
|
+
*/
|
|
702
946
|
export type HookName = keyof HookEvents;
|
|
703
|
-
/**
|
|
947
|
+
/**
|
|
948
|
+
* The function a handler for the hook `K` is, taking the world and the hook's event
|
|
949
|
+
*
|
|
950
|
+
* @beta
|
|
951
|
+
*/
|
|
704
952
|
export type HookHandler<K extends HookName> = (world: World, event: HookEvents[K]) => void;
|
|
705
953
|
/**
|
|
706
954
|
* A hook of a game's own, made with `defineHookType`: a moment of its rules others can take part in, the way the
|
|
@@ -709,19 +957,22 @@ export type HookHandler<K extends HookName> = (world: World, event: HookEvents[K
|
|
|
709
957
|
* @beta
|
|
710
958
|
*/
|
|
711
959
|
export interface HookKey<T> {
|
|
960
|
+
/** The hook's id, shared by every game, which `Hooks` lists it by */
|
|
712
961
|
readonly id: string;
|
|
713
962
|
/** Only there for the type of the event */
|
|
714
963
|
readonly event?: T;
|
|
715
964
|
}
|
|
716
965
|
/**
|
|
717
|
-
* A hook of a game's own: `const lifeLost = defineHookType<{ invader: Entity; lives: number
|
|
966
|
+
* A hook of a game's own: `const lifeLost = defineHookType<{ invader: Entity; lives: number } & Cancellable>({ id: 'td.lifeLost' })`.
|
|
718
967
|
* The game runs it where the moment is (`world.hooks.run(lifeLost, { ... })`) and reads back what the handlers made
|
|
719
968
|
* of the event; handlers are written with `defineHook({ hook: lifeLost, ... })`, by the game or by a mod on it.
|
|
720
969
|
* Ids are shared by every game: give them a prefix of the game's
|
|
721
970
|
*
|
|
722
971
|
* @beta
|
|
723
972
|
*/
|
|
724
|
-
export declare function defineHookType<T>(
|
|
973
|
+
export declare function defineHookType<T>(def: {
|
|
974
|
+
id: string;
|
|
975
|
+
}): HookKey<T>;
|
|
725
976
|
/**
|
|
726
977
|
* A hook: one of the engine's by name, or a game's own
|
|
727
978
|
*
|
|
@@ -729,10 +980,35 @@ export declare function defineHookType<T>(id: string): HookKey<T>;
|
|
|
729
980
|
*/
|
|
730
981
|
export type AnyHook = HookName | HookKey<any>;
|
|
731
982
|
/**
|
|
732
|
-
*
|
|
983
|
+
* What a hook that may be stopped carries: `cancel(reason?)` stops it, `cancelled` says whether it was, and `reason` is
|
|
984
|
+
* what the player is told, for the hooks that tell them (`canPlace`, `canHarvest`, `canCast`, `canTarget`,
|
|
985
|
+
* `requirement`). The engine's own refusal comes in as `cancelled` already true, with its `reason`: `cancelled = false`
|
|
986
|
+
* lets it through
|
|
733
987
|
*
|
|
734
988
|
* @beta
|
|
735
989
|
*/
|
|
990
|
+
export interface Cancellable {
|
|
991
|
+
/** Whether a handler has stopped the event; `cancel()` sets it */
|
|
992
|
+
cancelled: boolean;
|
|
993
|
+
/** What the player is told of why it was stopped, for the hooks that tell them */
|
|
994
|
+
reason?: MessageRef;
|
|
995
|
+
/** Stops the event, with the `reason` the player is told when given */
|
|
996
|
+
cancel(reason?: MessageRef): void;
|
|
997
|
+
}
|
|
998
|
+
/** An event of a hook that may be stopped, as whoever runs the hook puts it together: `cancel` is given as it runs (`Hooks.run`) @beta */
|
|
999
|
+
export type Uncancelled<T> = T extends Cancellable ? Omit<T, 'cancel'> & {
|
|
1000
|
+
cancel?: Cancellable['cancel'];
|
|
1001
|
+
} : T;
|
|
1002
|
+
/** What a hook that tells the player refuses with: its reason, or the engine's word where a handler gave none; nothing where it lets through @beta */
|
|
1003
|
+
export declare function refusalOf(event: {
|
|
1004
|
+
cancelled: boolean;
|
|
1005
|
+
reason?: MessageRef;
|
|
1006
|
+
}): MessageRef | undefined;
|
|
1007
|
+
/**
|
|
1008
|
+
* A handler and the hook it is for. Its `id` is how others take it out or put something in its place
|
|
1009
|
+
*
|
|
1010
|
+
* @public
|
|
1011
|
+
*/
|
|
736
1012
|
export type HookDef = {
|
|
737
1013
|
hook: AnyHook;
|
|
738
1014
|
id: string;
|
|
@@ -743,7 +1019,7 @@ export type HookDef = {
|
|
|
743
1019
|
/**
|
|
744
1020
|
* Typed help for writing a hook: `defineHook({ hook: 'death', id: 'bounty', run(world, { entity }) { ... } })`
|
|
745
1021
|
*
|
|
746
|
-
* @
|
|
1022
|
+
* @public
|
|
747
1023
|
*/
|
|
748
1024
|
export declare function defineHook<K extends HookName>(def: {
|
|
749
1025
|
hook: K;
|
|
@@ -751,7 +1027,11 @@ export declare function defineHook<K extends HookName>(def: {
|
|
|
751
1027
|
priority?: number;
|
|
752
1028
|
run: HookHandler<K>;
|
|
753
1029
|
}): HookDef;
|
|
754
|
-
/**
|
|
1030
|
+
/**
|
|
1031
|
+
* Typed help for a handler of a game's own hook (`HookKey`), taking the world and the hook's event
|
|
1032
|
+
*
|
|
1033
|
+
* @public
|
|
1034
|
+
*/
|
|
755
1035
|
export declare function defineHook<T>(def: {
|
|
756
1036
|
hook: HookKey<T>;
|
|
757
1037
|
id: string;
|
|
@@ -769,12 +1049,14 @@ export declare class Hooks {
|
|
|
769
1049
|
constructor(world: World);
|
|
770
1050
|
/** Adds a handler. One with the same id on the same hook is replaced */
|
|
771
1051
|
add(def: HookDef): void;
|
|
1052
|
+
/** Takes the handler with the id off the hook; nothing happens when there is none */
|
|
772
1053
|
remove(hook: AnyHook, id: string): void;
|
|
773
1054
|
/** Whether a hook has any handlers. For hooks run very often, to not even put the event together when nobody listens */
|
|
774
1055
|
has(hook: AnyHook): boolean;
|
|
775
1056
|
/** Ids of the handlers of a hook, in the order they run */
|
|
776
1057
|
handlers(hook: AnyHook): string[];
|
|
777
1058
|
/** Runs the handlers of a hook on the event, in order, and hands the event back for the caller to read */
|
|
778
|
-
run<K extends HookName>(hook: K, event: HookEvents[K]): HookEvents[K];
|
|
779
|
-
|
|
1059
|
+
run<K extends HookName>(hook: K, event: Uncancelled<HookEvents[K]>): HookEvents[K];
|
|
1060
|
+
/** Runs the handlers of a game's own hook on the event in order and returns the event */
|
|
1061
|
+
run<T>(hook: HookKey<T>, event: Uncancelled<T>): T;
|
|
780
1062
|
}
|