@v12-engine/engine 0.1.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/abilities/amounts.d.ts +28 -0
- package/dist/abilities/amounts.js +74 -0
- package/dist/abilities/amounts.js.map +1 -0
- package/dist/abilities/buffs.d.ts +106 -6
- package/dist/abilities/buffs.js +443 -0
- package/dist/abilities/buffs.js.map +1 -0
- package/dist/abilities/castTold.d.ts +2 -0
- package/dist/abilities/castTold.js +66 -0
- package/dist/abilities/castTold.js.map +1 -0
- package/dist/abilities/chance.d.ts +38 -0
- package/dist/abilities/chance.js +77 -0
- package/dist/abilities/chance.js.map +1 -0
- package/dist/abilities/charges.d.ts +18 -0
- package/dist/abilities/charges.js +101 -0
- package/dist/abilities/charges.js.map +1 -0
- package/dist/abilities/control.d.ts +28 -0
- package/dist/abilities/control.js +113 -0
- package/dist/abilities/control.js.map +1 -0
- package/dist/abilities/dispel.js +51 -0
- package/dist/abilities/dispel.js.map +1 -0
- package/dist/abilities/effectFields.d.ts +1 -1
- package/dist/abilities/effectFields.js +676 -0
- package/dist/abilities/effectFields.js.map +1 -0
- package/dist/abilities/effectIndex.d.ts +27 -0
- package/dist/abilities/effectIndex.js +64 -0
- package/dist/abilities/effectIndex.js.map +1 -0
- package/dist/abilities/effects/buff.d.ts +9 -3
- package/dist/abilities/effects/buff.js +84 -0
- package/dist/abilities/effects/buff.js.map +1 -0
- package/dist/abilities/effects/conditions.d.ts +2 -0
- package/dist/abilities/effects/conditions.js +41 -0
- package/dist/abilities/effects/conditions.js.map +1 -0
- package/dist/abilities/effects/core.js +54 -0
- package/dist/abilities/effects/core.js.map +1 -0
- package/dist/abilities/effects/damage.d.ts +1 -1
- package/dist/abilities/effects/damage.js +43 -0
- package/dist/abilities/effects/damage.js.map +1 -0
- package/dist/abilities/effects/heal.d.ts +2 -2
- package/dist/abilities/effects/heal.js +51 -0
- package/dist/abilities/effects/heal.js.map +1 -0
- package/dist/abilities/effects/missile.d.ts +13 -1
- package/dist/abilities/effects/missile.js +104 -0
- package/dist/abilities/effects/missile.js.map +1 -0
- package/dist/abilities/effects/morph.d.ts +5 -0
- package/dist/abilities/effects/morph.js +43 -0
- package/dist/abilities/effects/morph.js.map +1 -0
- package/dist/abilities/effects/moves.d.ts +16 -4
- package/dist/abilities/effects/moves.js +212 -0
- package/dist/abilities/effects/moves.js.map +1 -0
- package/dist/abilities/effects/passives.d.ts +19 -9
- package/dist/abilities/effects/passives.js +131 -0
- package/dist/abilities/effects/passives.js.map +1 -0
- package/dist/abilities/effects/proxy.d.ts +5 -0
- package/dist/abilities/effects/proxy.js +60 -0
- package/dist/abilities/effects/proxy.js.map +1 -0
- package/dist/abilities/effects/sight.d.ts +2 -2
- package/dist/abilities/effects/sight.js +39 -0
- package/dist/abilities/effects/sight.js.map +1 -0
- package/dist/abilities/effects/spawn.d.ts +5 -2
- package/dist/abilities/effects/spawn.js +40 -0
- package/dist/abilities/effects/spawn.js.map +1 -0
- package/dist/abilities/effects/timed.d.ts +2 -2
- package/dist/abilities/effects/timed.js +96 -0
- package/dist/abilities/effects/timed.js.map +1 -0
- package/dist/abilities/effects/trade.d.ts +1 -1
- package/dist/abilities/effects/trade.js +25 -0
- package/dist/abilities/effects/trade.js.map +1 -0
- package/dist/abilities/effects.d.ts +97 -23
- package/dist/abilities/effects.js +860 -0
- package/dist/abilities/effects.js.map +1 -0
- package/dist/abilities/land.d.ts +38 -4
- package/dist/abilities/land.js +189 -0
- package/dist/abilities/land.js.map +1 -0
- package/dist/abilities/recast.d.ts +45 -0
- package/dist/abilities/recast.js +118 -0
- package/dist/abilities/recast.js.map +1 -0
- package/dist/abilities/scaled.js +40 -0
- package/dist/abilities/scaled.js.map +1 -0
- package/dist/abilities/screen.d.ts +6 -0
- package/dist/abilities/screen.js +83 -0
- package/dist/abilities/screen.js.map +1 -0
- package/dist/abilities/shapes.d.ts +66 -0
- package/dist/abilities/shapes.js +122 -0
- package/dist/abilities/shapes.js.map +1 -0
- package/dist/abilities/text.d.ts +14 -2
- package/dist/abilities/text.js +204 -0
- package/dist/abilities/text.js.map +1 -0
- package/dist/abilities/triggers.d.ts +98 -0
- package/dist/abilities/triggers.js +351 -0
- package/dist/abilities/triggers.js.map +1 -0
- package/dist/abilityChanges.d.ts +131 -0
- package/dist/abilityChanges.js +345 -0
- package/dist/abilityChanges.js.map +1 -0
- package/dist/ai/area.d.ts +4 -1
- package/dist/ai/brain.d.ts +4 -1
- package/dist/ai/brain.js +844 -0
- package/dist/ai/brain.js.map +1 -0
- package/dist/ai/budget.js +74 -0
- package/dist/ai/budget.js.map +1 -0
- package/dist/ai/checks.d.ts +9 -1
- package/dist/ai/checks.js +242 -0
- package/dist/ai/checks.js.map +1 -0
- package/dist/ai/computer.d.ts +11 -4
- package/dist/ai/computer.js +251 -0
- package/dist/ai/computer.js.map +1 -0
- package/dist/ai/defence.d.ts +4 -0
- package/dist/ai/defence.js +430 -0
- package/dist/ai/defence.js.map +1 -0
- package/dist/ai/define.d.ts +3 -2
- package/dist/ai/define.js +31 -0
- package/dist/ai/define.js.map +1 -0
- package/dist/ai/economy.d.ts +10 -7
- package/dist/ai/economy.js +780 -0
- package/dist/ai/economy.js.map +1 -0
- package/dist/ai/geometry.js +38 -0
- package/dist/ai/geometry.js.map +1 -0
- package/dist/ai/goals.d.ts +1 -0
- package/dist/ai/goals.js +560 -0
- package/dist/ai/goals.js.map +1 -0
- package/dist/ai/knowledge.d.ts +72 -7
- package/dist/ai/knowledge.js +804 -0
- package/dist/ai/knowledge.js.map +1 -0
- package/dist/ai/lanes.d.ts +10 -2
- package/dist/ai/lanes.js +715 -0
- package/dist/ai/lanes.js.map +1 -0
- package/dist/ai/melee/build.js +264 -0
- package/dist/ai/melee/build.js.map +1 -0
- package/dist/ai/melee/goals.d.ts +7 -0
- package/dist/ai/melee/goals.js +720 -0
- package/dist/ai/melee/goals.js.map +1 -0
- package/dist/ai/melee/heroes.js +68 -0
- package/dist/ai/melee/heroes.js.map +1 -0
- package/dist/ai/melee/index.d.ts +1 -1
- package/dist/ai/melee/index.js +51 -0
- package/dist/ai/melee/index.js.map +1 -0
- package/dist/ai/melee/production.js +29 -0
- package/dist/ai/melee/production.js.map +1 -0
- package/dist/ai/melee/surrender.js +64 -0
- package/dist/ai/melee/surrender.js.map +1 -0
- package/dist/ai/micro.d.ts +9 -0
- package/dist/ai/micro.js +1316 -0
- package/dist/ai/micro.js.map +1 -0
- package/dist/ai/mission.d.ts +9 -2
- package/dist/ai/mission.js +538 -0
- package/dist/ai/mission.js.map +1 -0
- package/dist/ai/missionRules.d.ts +1 -1
- package/dist/ai/missionRules.js +26 -0
- package/dist/ai/missionRules.js.map +1 -0
- package/dist/ai/module.d.ts +6 -2
- package/dist/ai/module.js +37 -0
- package/dist/ai/module.js.map +1 -0
- package/dist/ai/options.d.ts +3 -3
- package/dist/ai/plans/build.d.ts +20 -1
- package/dist/ai/plans/build.js +608 -0
- package/dist/ai/plans/build.js.map +1 -0
- package/dist/ai/plans/placement.d.ts +4 -1
- package/dist/ai/plans/placement.js +295 -0
- package/dist/ai/plans/placement.js.map +1 -0
- package/dist/ai/plans/plans.d.ts +9 -0
- package/dist/ai/plans/plans.js +110 -0
- package/dist/ai/plans/plans.js.map +1 -0
- package/dist/ai/plans/production.d.ts +14 -2
- package/dist/ai/plans/production.js +434 -0
- package/dist/ai/plans/production.js.map +1 -0
- package/dist/ai/plans/purse.d.ts +6 -3
- package/dist/ai/plans/purse.js +139 -0
- package/dist/ai/plans/purse.js.map +1 -0
- package/dist/ai/plans/tech.d.ts +6 -0
- package/dist/ai/plans/tech.js +122 -0
- package/dist/ai/plans/tech.js.map +1 -0
- package/dist/ai/profiles.d.ts +4 -4
- package/dist/{profiles-B3NS9jwk.js → ai/profiles.js} +3 -98
- package/dist/ai/profiles.js.map +1 -0
- package/dist/ai/reach.js +54 -0
- package/dist/ai/reach.js.map +1 -0
- package/dist/ai/report.d.ts +8 -0
- package/dist/ai/report.js +87 -0
- package/dist/ai/report.js.map +1 -0
- package/dist/ai/roles.d.ts +4 -0
- package/dist/ai/roles.js +207 -0
- package/dist/ai/roles.js.map +1 -0
- package/dist/ai/rules.d.ts +8 -2
- package/dist/ai/rules.js +416 -0
- package/dist/ai/rules.js.map +1 -0
- package/dist/ai/scouting.d.ts +6 -0
- package/dist/ai/scouting.js +324 -0
- package/dist/ai/scouting.js.map +1 -0
- package/dist/ai/settings.js +99 -0
- package/dist/ai/settings.js.map +1 -0
- package/dist/ai/squads.d.ts +21 -2
- package/dist/ai/squads.js +916 -0
- package/dist/ai/squads.js.map +1 -0
- package/dist/ai/strength.js +320 -0
- package/dist/ai/strength.js.map +1 -0
- package/dist/ai/task.d.ts +3 -1
- package/dist/ai/task.js +17 -0
- package/dist/ai/task.js.map +1 -0
- package/dist/ai/tasks/attack.js +24 -0
- package/dist/ai/tasks/attack.js.map +1 -0
- package/dist/ai/tasks/capture.d.ts +3 -3
- package/dist/ai/tasks/capture.js +37 -0
- package/dist/ai/tasks/capture.js.map +1 -0
- package/dist/ai/tasks/creep.js +29 -0
- package/dist/ai/tasks/creep.js.map +1 -0
- package/dist/ai/tasks/defend.js +61 -0
- package/dist/ai/tasks/defend.js.map +1 -0
- package/dist/ai/tasks/drop.js +81 -0
- package/dist/ai/tasks/drop.js.map +1 -0
- package/dist/ai/tasks/escort.js +59 -0
- package/dist/ai/tasks/escort.js.map +1 -0
- package/dist/ai/tasks/gather.js +48 -0
- package/dist/ai/tasks/gather.js.map +1 -0
- package/dist/ai/tasks/harass.js +39 -0
- package/dist/ai/tasks/harass.js.map +1 -0
- package/dist/ai/tasks/hold.js +32 -0
- package/dist/ai/tasks/hold.js.map +1 -0
- package/dist/ai/tasks/index.js +34 -0
- package/dist/ai/tasks/index.js.map +1 -0
- package/dist/ai/tasks/move.js +26 -0
- package/dist/ai/tasks/move.js.map +1 -0
- package/dist/ai/tasks/patrol.js +59 -0
- package/dist/ai/tasks/patrol.js.map +1 -0
- package/dist/ai/tasks/retreat.js +28 -0
- package/dist/ai/tasks/retreat.js.map +1 -0
- package/dist/ai/tasks/scout.js +73 -0
- package/dist/ai/tasks/scout.js.map +1 -0
- package/dist/ai/tasks/shared.d.ts +1 -1
- package/dist/ai/tasks/shared.js +137 -0
- package/dist/ai/tasks/shared.js.map +1 -0
- package/dist/ai/team.d.ts +18 -1
- package/dist/ai/team.js +492 -0
- package/dist/ai/team.js.map +1 -0
- package/dist/ai/threat.d.ts +6 -0
- package/dist/ai/threat.js +206 -0
- package/dist/ai/threat.js.map +1 -0
- package/dist/ai/view.d.ts +21 -7
- package/dist/ai/view.js +677 -0
- package/dist/ai/view.js.map +1 -0
- package/dist/ai/waves.d.ts +6 -0
- package/dist/ai/waves.js +410 -0
- package/dist/ai/waves.js.map +1 -0
- package/dist/ai.js +54 -6239
- package/dist/aiTesting.d.ts +6 -3
- package/dist/aiTesting.js +229 -0
- package/dist/aiTesting.js.map +1 -0
- package/dist/areas.d.ts +4 -1
- package/dist/areas.js +295 -0
- package/dist/areas.js.map +1 -0
- package/dist/attacks.d.ts +3 -3
- package/dist/attacks.js +127 -0
- package/dist/attacks.js.map +1 -0
- package/dist/burning.d.ts +267 -0
- package/dist/burning.js +795 -0
- package/dist/burning.js.map +1 -0
- package/dist/bytes.js +21 -0
- package/dist/bytes.js.map +1 -0
- package/dist/callings.d.ts +71 -0
- package/dist/callings.js +157 -0
- package/dist/callings.js.map +1 -0
- package/dist/cameraOrders.d.ts +78 -0
- package/dist/cameraOrders.js +114 -0
- package/dist/cameraOrders.js.map +1 -0
- package/dist/camps.d.ts +70 -4
- package/dist/camps.js +501 -0
- package/dist/camps.js.map +1 -0
- package/dist/capture.d.ts +15 -3
- package/dist/capture.js +304 -0
- package/dist/capture.js.map +1 -0
- package/dist/cellLayers.d.ts +78 -13
- package/dist/cellLayers.js +275 -0
- package/dist/cellLayers.js.map +1 -0
- package/dist/cellPatches.d.ts +24 -0
- package/dist/cellPatches.js +73 -0
- package/dist/cellPatches.js.map +1 -0
- package/dist/cinematics.d.ts +10 -5
- package/dist/cinematics.js +161 -0
- package/dist/cinematics.js.map +1 -0
- package/dist/clock.d.ts +2 -2
- package/dist/clock.js +78 -0
- package/dist/clock.js.map +1 -0
- package/dist/commands.d.ts +36 -4
- package/dist/commands.js +636 -0
- package/dist/commands.js.map +1 -0
- package/dist/components.d.ts +31 -10
- package/dist/components.js +74 -0
- package/dist/components.js.map +1 -0
- package/dist/computers.d.ts +4 -4
- package/dist/computers.js +194 -0
- package/dist/computers.js.map +1 -0
- package/dist/concealment.d.ts +25 -2
- package/dist/concealment.js +409 -0
- package/dist/concealment.js.map +1 -0
- package/dist/coreComponents.js +130 -0
- package/dist/coreComponents.js.map +1 -0
- package/dist/createGame.d.ts +306 -0
- package/dist/createGame.js +405 -0
- package/dist/createGame.js.map +1 -0
- package/dist/dashing.d.ts +18 -2
- package/dist/dashing.js +41 -0
- package/dist/dashing.js.map +1 -0
- package/dist/debug.d.ts +8 -0
- package/dist/debug.js +5 -3
- package/dist/debug2.js +76 -0
- package/dist/debug2.js.map +1 -0
- package/dist/debugCommands.d.ts +6 -6
- package/dist/debugCommands.js +537 -0
- package/dist/debugCommands.js.map +1 -0
- package/dist/debugging.d.ts +1 -0
- package/dist/defaultSets.d.ts +183 -0
- package/dist/defaultSets.js +216 -0
- package/dist/defaultSets.js.map +1 -0
- package/dist/definitions.d.ts +6 -0
- package/dist/definitions.js +78 -0
- package/dist/definitions.js.map +1 -0
- package/dist/defs.d.ts +1895 -165
- package/dist/defs.js +380 -0
- package/dist/defs.js.map +1 -0
- package/dist/denying.d.ts +4 -4
- package/dist/denying.js +106 -0
- package/dist/denying.js.map +1 -0
- package/dist/destructibles.d.ts +2 -2
- package/dist/destructibles.js +36 -0
- package/dist/destructibles.js.map +1 -0
- package/dist/determinism.d.ts +4 -4
- package/dist/determinism.js +247 -0
- package/dist/determinism.js.map +1 -0
- package/dist/dialog.d.ts +17 -2
- package/dist/dialog.js +108 -0
- package/dist/dialog.js.map +1 -0
- package/dist/effectRefs.js +28 -0
- package/dist/effectRefs.js.map +1 -0
- package/dist/effects.d.ts +27 -11
- package/dist/effects.js +110 -0
- package/dist/effects.js.map +1 -0
- package/dist/endings.d.ts +1 -1
- package/dist/endings.js +78 -0
- package/dist/endings.js.map +1 -0
- package/dist/engagement.d.ts +40 -6
- package/dist/engagement.js +530 -0
- package/dist/engagement.js.map +1 -0
- package/dist/engineEvents.d.ts +72 -9
- package/dist/engineEvents.js +520 -0
- package/dist/engineEvents.js.map +1 -0
- package/dist/entity.d.ts +275 -26
- package/dist/entity.js +441 -0
- package/dist/entity.js.map +1 -0
- package/dist/entityIndex.d.ts +10 -3
- package/dist/entityIndex.js +149 -0
- package/dist/entityIndex.js.map +1 -0
- package/dist/errors.d.ts +6 -2
- package/dist/errors.js +59 -0
- package/dist/errors.js.map +1 -0
- package/dist/events.d.ts +11 -5
- package/dist/events.js +158 -0
- package/dist/events.js.map +1 -0
- package/dist/exactMath.js +273 -0
- package/dist/exactMath.js.map +1 -0
- package/dist/features.d.ts +1 -1
- package/dist/features.js +127 -0
- package/dist/features.js.map +1 -0
- package/dist/fields.d.ts +25 -5
- package/dist/fields.js +140 -0
- package/dist/fields.js.map +1 -0
- package/dist/fixture.d.ts +3 -3
- package/dist/fixture.js +512 -0
- package/dist/fixture.js.map +1 -0
- package/dist/fog.d.ts +26 -3
- package/dist/fog.js +333 -0
- package/dist/fog.js.map +1 -0
- package/dist/foliage.d.ts +476 -0
- package/dist/foliage.js +1478 -0
- package/dist/foliage.js.map +1 -0
- package/dist/foliageDebug.d.ts +57 -0
- package/dist/foliageDebug.js +172 -0
- package/dist/foliageDebug.js.map +1 -0
- package/dist/foliageRegrowth.d.ts +20 -0
- package/dist/foliageRegrowth.js +332 -0
- package/dist/foliageRegrowth.js.map +1 -0
- package/dist/formState.d.ts +67 -0
- package/dist/formState.js +65 -0
- package/dist/formState.js.map +1 -0
- package/dist/formation.d.ts +46 -8
- package/dist/formation.js +297 -0
- package/dist/formation.js.map +1 -0
- package/dist/forms.d.ts +58 -0
- package/dist/forms.js +146 -0
- package/dist/forms.js.map +1 -0
- package/dist/friendlyFire.d.ts +2 -2
- package/dist/friendlyFire.js +37 -0
- package/dist/friendlyFire.js.map +1 -0
- package/dist/game.d.ts +141 -48
- package/dist/game.js +834 -0
- package/dist/game.js.map +1 -0
- package/dist/gameData.d.ts +96 -22
- package/dist/gameData.js +1690 -0
- package/dist/gameData.js.map +1 -0
- package/dist/gameFiles.d.ts +3 -3
- package/dist/gameFiles.js +14 -0
- package/dist/gameFiles.js.map +1 -0
- package/dist/gates.js +92 -0
- package/dist/gates.js.map +1 -0
- package/dist/generate.d.ts +28 -1
- package/dist/generate.js +1062 -0
- package/dist/generate.js.map +1 -0
- package/dist/generateWorker.d.ts +7 -3
- package/dist/generateWorker.js +86 -0
- package/dist/generateWorker.js.map +1 -0
- package/dist/grid.d.ts +9 -0
- package/dist/grid.js +102 -0
- package/dist/grid.js.map +1 -0
- package/dist/ground.d.ts +17 -1
- package/dist/ground.js +375 -0
- package/dist/ground.js.map +1 -0
- package/dist/groundObjects.d.ts +70 -0
- package/dist/groundObjects.js +371 -0
- package/dist/groundObjects.js.map +1 -0
- package/dist/groundSpeed.d.ts +20 -3
- package/dist/groundSpeed.js +117 -0
- package/dist/groundSpeed.js.map +1 -0
- package/dist/hero.d.ts +126 -10
- package/dist/hero.js +432 -0
- package/dist/hero.js.map +1 -0
- package/dist/holds.d.ts +94 -0
- package/dist/holds.js +305 -0
- package/dist/holds.js.map +1 -0
- package/dist/home.d.ts +1 -1
- package/dist/home.js +30 -0
- package/dist/home.js.map +1 -0
- package/dist/hooks.d.ts +339 -57
- package/dist/hooks.js +105 -0
- package/dist/hooks.js.map +1 -0
- package/dist/hotReload.d.ts +6 -5
- package/dist/hotReload.js +145 -0
- package/dist/hotReload.js.map +1 -0
- package/dist/ids.d.ts +3 -3
- package/dist/ids.js +30 -0
- package/dist/ids.js.map +1 -0
- package/dist/idsFile.d.ts +36 -0
- package/dist/idsFile.js +134 -0
- package/dist/idsFile.js.map +1 -0
- package/dist/index.d.ts +105 -68
- package/dist/index.js +194 -4701
- package/dist/inspect.d.ts +29 -2
- package/dist/{inspect-D9dWHmZ0.js → inspect.js} +21 -12
- package/dist/inspect.js.map +1 -0
- package/dist/inventory.d.ts +14 -1
- package/dist/inventory.js +84 -0
- package/dist/inventory.js.map +1 -0
- package/dist/items.d.ts +136 -8
- package/dist/items.js +585 -0
- package/dist/items.js.map +1 -0
- package/dist/lanes.d.ts +12 -3
- package/dist/lanes.js +496 -0
- package/dist/lanes.js.map +1 -0
- package/dist/life.d.ts +6 -2
- package/dist/life.js +287 -0
- package/dist/life.js.map +1 -0
- package/dist/log.d.ts +26 -3
- package/dist/log.js +192 -0
- package/dist/log.js.map +1 -0
- package/dist/manaBurn.d.ts +2 -2
- package/dist/manaBurn.js +75 -0
- package/dist/manaBurn.js.map +1 -0
- package/dist/map/file.d.ts +56 -3
- package/dist/map/file.js +264 -0
- package/dist/map/file.js.map +1 -0
- package/dist/map/images.js +61 -0
- package/dist/map/images.js.map +1 -0
- package/dist/map/look.d.ts +1 -1
- package/dist/map/look.js +30 -0
- package/dist/map/look.js.map +1 -0
- package/dist/map/pathProfile.js +183 -0
- package/dist/map/pathProfile.js.map +1 -0
- package/dist/map/resize.d.ts +4 -0
- package/dist/map/resize.js +136 -0
- package/dist/map/resize.js.map +1 -0
- package/dist/map/schema.js +257 -0
- package/dist/map/schema.js.map +1 -0
- package/dist/map/terrain.js +214 -0
- package/dist/map/terrain.js.map +1 -0
- package/dist/map/types.d.ts +92 -13
- package/dist/map/types.js +251 -0
- package/dist/map/types.js.map +1 -0
- package/dist/mapCheck/cells.js +94 -0
- package/dist/mapCheck/cells.js.map +1 -0
- package/dist/mapCheck/rules/foliage.d.ts +9 -0
- package/dist/mapCheck/rules/foliage.js +83 -0
- package/dist/mapCheck/rules/foliage.js.map +1 -0
- package/dist/mapCheck/rules/names.js +39 -0
- package/dist/mapCheck/rules/names.js.map +1 -0
- package/dist/mapCheck/rules/objects.d.ts +1 -1
- package/dist/mapCheck/rules/objects.js +56 -0
- package/dist/mapCheck/rules/objects.js.map +1 -0
- package/dist/mapCheck/rules/paths.js +32 -0
- package/dist/mapCheck/rules/paths.js.map +1 -0
- package/dist/mapCheck/rules/players.js +20 -0
- package/dist/mapCheck/rules/players.js.map +1 -0
- package/dist/mapCheck/rules/races.js +56 -0
- package/dist/mapCheck/rules/races.js.map +1 -0
- package/dist/mapCheck/rules/random.js +47 -0
- package/dist/mapCheck/rules/random.js.map +1 -0
- package/dist/mapCheck/rules/regions.js +30 -0
- package/dist/mapCheck/rules/regions.js.map +1 -0
- package/dist/mapCheck/rules/targets.js +31 -0
- package/dist/mapCheck/rules/targets.js.map +1 -0
- package/dist/mapCheck/rules/walking.js +45 -0
- package/dist/mapCheck/rules/walking.js.map +1 -0
- package/dist/mapCheck.d.ts +2 -2
- package/dist/mapCheck.js +63 -0
- package/dist/mapCheck.js.map +1 -0
- package/dist/mapFields.d.ts +25 -2
- package/dist/mapFields.js +134 -0
- package/dist/mapFields.js.map +1 -0
- package/dist/mapFile.js +176 -0
- package/dist/mapFile.js.map +1 -0
- package/dist/mapMeasure.d.ts +8 -0
- package/dist/mapMeasure.js +283 -0
- package/dist/mapMeasure.js.map +1 -0
- package/dist/mapMerge.d.ts +1 -0
- package/dist/mapMerge.js +172 -0
- package/dist/mapMerge.js.map +1 -0
- package/dist/mapObjectives.js +138 -0
- package/dist/mapObjectives.js.map +1 -0
- package/dist/mapObjects.js +80 -0
- package/dist/mapObjects.js.map +1 -0
- package/dist/math.d.ts +37 -7
- package/dist/math.js +155 -0
- package/dist/math.js.map +1 -0
- package/dist/messages.d.ts +71 -4
- package/dist/messages.js +29 -0
- package/dist/messages.js.map +1 -0
- package/dist/missionRules.d.ts +10 -2
- package/dist/{missionRules-C-bGxm0Q.js → missionRules.js} +30 -150
- package/dist/missionRules.js.map +1 -0
- package/dist/mods.d.ts +39 -20
- package/dist/mods.js +271 -0
- package/dist/mods.js.map +1 -0
- package/dist/moves.d.ts +87 -0
- package/dist/moves.js +539 -0
- package/dist/moves.js.map +1 -0
- package/dist/names.d.ts +7 -0
- package/dist/names.js +122 -0
- package/dist/names.js.map +1 -0
- package/dist/navigation/agentParams.js +14 -0
- package/dist/navigation/agentParams.js.map +1 -0
- package/dist/navigation/air.d.ts +7 -3
- package/dist/navigation/air.js +401 -0
- package/dist/navigation/air.js.map +1 -0
- package/dist/navigation/builds.d.ts +34 -2
- package/dist/navigation/builds.js +287 -0
- package/dist/navigation/builds.js.map +1 -0
- package/dist/navigation/groundAreas.d.ts +59 -1
- package/dist/navigation/groundAreas.js +407 -0
- package/dist/navigation/groundAreas.js.map +1 -0
- package/dist/navigation/navigation.d.ts +98 -9
- package/dist/navigation/recast.d.ts +194 -18
- package/dist/navigation/recast.js +1379 -0
- package/dist/navigation/recast.js.map +1 -0
- package/dist/navigation/sidePaths.d.ts +8 -3
- package/dist/navigation/sidePaths.js +241 -0
- package/dist/navigation/sidePaths.js.map +1 -0
- package/dist/navigation/sized.js +243 -0
- package/dist/navigation/sized.js.map +1 -0
- package/dist/nearest.js +32 -0
- package/dist/nearest.js.map +1 -0
- package/dist/noise.js +59 -0
- package/dist/noise.js.map +1 -0
- package/dist/objectives.d.ts +12 -3
- package/dist/objectives.js +144 -0
- package/dist/objectives.js.map +1 -0
- package/dist/orders/basic.d.ts +5 -5
- package/dist/orders/basic.js +417 -0
- package/dist/orders/basic.js.map +1 -0
- package/dist/orders/build.js +278 -0
- package/dist/orders/build.js.map +1 -0
- package/dist/orders/cast.d.ts +13 -3
- package/dist/orders/cast.js +558 -0
- package/dist/orders/cast.js.map +1 -0
- package/dist/orders/facts.js +16 -0
- package/dist/orders/facts.js.map +1 -0
- package/dist/orders/harvest.d.ts +21 -5
- package/dist/orders/harvest.js +540 -0
- package/dist/orders/harvest.js.map +1 -0
- package/dist/orders/idle.d.ts +3 -1
- package/dist/orders/idle.js +234 -0
- package/dist/orders/idle.js.map +1 -0
- package/dist/orders/items.js +92 -0
- package/dist/orders/items.js.map +1 -0
- package/dist/orders/queue.js +108 -0
- package/dist/orders/queue.js.map +1 -0
- package/dist/orders/waiting.d.ts +39 -0
- package/dist/orders/waiting.js +149 -0
- package/dist/orders/waiting.js.map +1 -0
- package/dist/pack.schema.js +13 -0
- package/dist/pack.schema.js.map +1 -0
- package/dist/pack.schema.json +7622 -841
- package/dist/packs/director/index.d.ts +13 -5
- package/dist/packs/director/index.js +204 -0
- package/dist/packs/director/index.js.map +1 -0
- package/dist/packs/heroes/campaign.d.ts +3 -2
- package/dist/packs/heroes/campaign.js +241 -0
- package/dist/packs/heroes/campaign.js.map +1 -0
- package/dist/packs/heroes/carry.d.ts +6 -0
- package/dist/packs/heroes/carry.js +112 -0
- package/dist/packs/heroes/carry.js.map +1 -0
- package/dist/packs/heroes/commands.js +115 -0
- package/dist/packs/heroes/commands.js.map +1 -0
- package/dist/packs/heroes/fallen.d.ts +43 -0
- package/dist/packs/heroes/fallen.js +61 -0
- package/dist/packs/heroes/fallen.js.map +1 -0
- package/dist/packs/heroes/hire.js +60 -0
- package/dist/packs/heroes/hire.js.map +1 -0
- package/dist/packs/heroes/index.d.ts +7 -6
- package/dist/packs/heroes/index.js +130 -0
- package/dist/packs/heroes/index.js.map +1 -0
- package/dist/packs/heroes/loop.d.ts +95 -0
- package/dist/packs/heroes/loop.js +250 -0
- package/dist/packs/heroes/loop.js.map +1 -0
- package/dist/packs/heroes/making.d.ts +6 -3
- package/dist/packs/heroes/making.js +55 -0
- package/dist/packs/heroes/making.js.map +1 -0
- package/dist/packs/heroes/respawn.d.ts +3 -3
- package/dist/packs/heroes/respawn.js +87 -0
- package/dist/packs/heroes/respawn.js.map +1 -0
- package/dist/packs/heroes/sets.d.ts +32 -0
- package/dist/packs/heroes/sets.js +51 -0
- package/dist/packs/heroes/sets.js.map +1 -0
- package/dist/packs/heroes/spells.d.ts +16 -0
- package/dist/packs/heroes/spells.js +269 -0
- package/dist/packs/heroes/spells.js.map +1 -0
- package/dist/packs/items/defaults.d.ts +43 -0
- package/dist/packs/items/defaults.js +1504 -0
- package/dist/packs/items/defaults.js.map +1 -0
- package/dist/packs/items/index.d.ts +27 -0
- package/dist/packs/items/index.js +214 -0
- package/dist/packs/items/index.js.map +1 -0
- package/dist/packs/moba/index.d.ts +3 -3
- package/dist/packs/moba/index.js +174 -0
- package/dist/packs/moba/index.js.map +1 -0
- package/dist/packs/pack.d.ts +15 -15
- package/dist/packs/pack.js +14 -0
- package/dist/packs/pack.js.map +1 -0
- package/dist/packs.d.ts +15 -7
- package/dist/packs.js +222 -0
- package/dist/packs.js.map +1 -0
- package/dist/paths.d.ts +2 -0
- package/dist/paths.js +109 -0
- package/dist/paths.js.map +1 -0
- package/dist/plain.js +57 -0
- package/dist/plain.js.map +1 -0
- package/dist/player.d.ts +33 -10
- package/dist/player.js +159 -0
- package/dist/player.js.map +1 -0
- package/dist/portals.d.ts +1 -1
- package/dist/portals.js +194 -0
- package/dist/portals.js.map +1 -0
- package/dist/prefabs.d.ts +25 -2
- package/dist/prefabs.js +239 -0
- package/dist/prefabs.js.map +1 -0
- package/dist/presetBuildings.js +58 -0
- package/dist/presetBuildings.js.map +1 -0
- package/dist/presetFoliage.d.ts +27 -0
- package/dist/presetFoliage.js +98 -0
- package/dist/presetFoliage.js.map +1 -0
- package/dist/presetGround.js +65 -0
- package/dist/presetGround.js.map +1 -0
- package/dist/proxies.d.ts +12 -0
- package/dist/proxies.js +79 -0
- package/dist/proxies.js.map +1 -0
- package/dist/query.d.ts +56 -0
- package/dist/query.js +88 -0
- package/dist/query.js.map +1 -0
- package/dist/races.d.ts +15 -14
- package/dist/races.js +172 -0
- package/dist/races.js.map +1 -0
- package/dist/randomGroups.js +91 -0
- package/dist/randomGroups.js.map +1 -0
- package/dist/registry.d.ts +117 -53
- package/dist/registry.js +323 -0
- package/dist/registry.js.map +1 -0
- package/dist/remains.d.ts +11 -9
- package/dist/remains.js +188 -0
- package/dist/remains.js.map +1 -0
- package/dist/replication.d.ts +12 -7
- package/dist/replication.js +100 -0
- package/dist/replication.js.map +1 -0
- package/dist/rng.d.ts +2 -0
- package/dist/rng.js +40 -0
- package/dist/rng.js.map +1 -0
- package/dist/rules.d.ts +186 -99
- package/dist/rules.js +179 -0
- package/dist/rules.js.map +1 -0
- package/dist/rulesCheck.d.ts +5 -4
- package/dist/rulesCheck.js +693 -0
- package/dist/rulesCheck.js.map +1 -0
- package/dist/runes.d.ts +2 -2
- package/dist/runes.js +80 -0
- package/dist/runes.js.map +1 -0
- package/dist/save.d.ts +37 -12
- package/dist/save.js +532 -0
- package/dist/save.js.map +1 -0
- package/dist/scenario.d.ts +2 -2
- package/dist/scenario.js +99 -0
- package/dist/scenario.js.map +1 -0
- package/dist/scheduler.d.ts +3 -0
- package/dist/scheduler.js +156 -0
- package/dist/scheduler.js.map +1 -0
- package/dist/score.d.ts +19 -19
- package/dist/score.js +709 -0
- package/dist/score.js.map +1 -0
- package/dist/sequences.d.ts +10 -6
- package/dist/sequences.js +206 -0
- package/dist/sequences.js.map +1 -0
- package/dist/server/doorman.js +154 -0
- package/dist/server/doorman.js.map +1 -0
- package/dist/server/gameServer.d.ts +16 -1
- package/dist/server/gameServer.js +643 -0
- package/dist/server/gameServer.js.map +1 -0
- package/dist/server/index.d.ts +1 -1
- package/dist/server/lobby.js +199 -0
- package/dist/server/lobby.js.map +1 -0
- package/dist/server/log.js +18 -0
- package/dist/server/log.js.map +1 -0
- package/dist/server/match.js +267 -0
- package/dist/server/match.js.map +1 -0
- package/dist/server/mode.d.ts +18 -9
- package/dist/server/mode.js +220 -0
- package/dist/server/mode.js.map +1 -0
- package/dist/{navigation-worker.js → server/navigation-worker.js} +1 -1
- package/dist/server/navigation-worker.js.map +1 -0
- package/dist/server/navigation.js +39 -0
- package/dist/server/navigation.js.map +1 -0
- package/dist/server/ops.d.ts +4 -0
- package/dist/server/ops.js +137 -0
- package/dist/server/ops.js.map +1 -0
- package/dist/server/packs.d.ts +3 -3
- package/dist/server/packs.js +32 -0
- package/dist/server/packs.js.map +1 -0
- package/dist/server/ratings.d.ts +5 -0
- package/dist/server/ratings.js +104 -0
- package/dist/server/ratings.js.map +1 -0
- package/dist/server/relay.d.ts +12 -2
- package/dist/server/relay.js +144 -0
- package/dist/server/relay.js.map +1 -0
- package/dist/server/rooms.d.ts +9 -2
- package/dist/server/rooms.js +442 -0
- package/dist/server/rooms.js.map +1 -0
- package/dist/server/seat.js +116 -0
- package/dist/server/seat.js.map +1 -0
- package/dist/server/seatSettings.d.ts +3 -3
- package/dist/server/seatSettings.js +63 -0
- package/dist/server/seatSettings.js.map +1 -0
- package/dist/server/secret.js +13 -0
- package/dist/server/secret.js.map +1 -0
- package/dist/server/start.d.ts +13 -6
- package/dist/server/start.js +76 -0
- package/dist/server/start.js.map +1 -0
- package/dist/server/websocket.d.ts +9 -1
- package/dist/server/websocket.js +306 -0
- package/dist/server/websocket.js.map +1 -0
- package/dist/server.js +15 -2861
- package/dist/session/can.js +26 -0
- package/dist/session/can.js.map +1 -0
- package/dist/session/commandReplay.d.ts +8 -2
- package/dist/session/commandReplay.js +293 -0
- package/dist/session/commandReplay.js.map +1 -0
- package/dist/session/debug.js +151 -0
- package/dist/session/debug.js.map +1 -0
- package/dist/session/delay.js +62 -0
- package/dist/session/delay.js.map +1 -0
- package/dist/session/delta.d.ts +14 -1
- package/dist/session/delta.js +407 -0
- package/dist/session/delta.js.map +1 -0
- package/dist/session/entityState.js +415 -0
- package/dist/session/entityState.js.map +1 -0
- package/dist/session/local.d.ts +47 -5
- package/dist/session/local.js +670 -0
- package/dist/session/local.js.map +1 -0
- package/dist/session/memory.d.ts +20 -2
- package/dist/session/memory.js +131 -0
- package/dist/session/memory.js.map +1 -0
- package/dist/session/protocol.d.ts +325 -31
- package/dist/session/protocol.js +55 -0
- package/dist/session/protocol.js.map +1 -0
- package/dist/session/remote.d.ts +74 -12
- package/dist/session/remote.js +1394 -0
- package/dist/session/remote.js.map +1 -0
- package/dist/session/replay.d.ts +11 -2
- package/dist/session/replay.js +160 -0
- package/dist/session/replay.js.map +1 -0
- package/dist/session/seed.js +12 -0
- package/dist/session/seed.js.map +1 -0
- package/dist/session/share.d.ts +5 -1
- package/dist/session/share.js +94 -0
- package/dist/session/share.js.map +1 -0
- package/dist/session/socket.d.ts +1 -1
- package/dist/session/socket.js +29 -0
- package/dist/session/socket.js.map +1 -0
- package/dist/session/wire.d.ts +5 -0
- package/dist/session/wire.js +84 -0
- package/dist/session/wire.js.map +1 -0
- package/dist/session/worker.d.ts +77 -12
- package/dist/session/worker.js +499 -0
- package/dist/session/worker.js.map +1 -0
- package/dist/shared.d.ts +31 -5
- package/dist/shared.js +166 -0
- package/dist/shared.js.map +1 -0
- package/dist/sides.d.ts +9 -3
- package/dist/sides.js +149 -0
- package/dist/sides.js.map +1 -0
- package/dist/sight.js +85 -0
- package/dist/sight.js.map +1 -0
- package/dist/simulate-worker.js +1 -1
- package/dist/simulate.d.ts +12 -8
- package/dist/{simulate-oXBiw1Ff.js → simulate.js} +10 -11
- package/dist/simulate.js.map +1 -0
- package/dist/smart.js +77 -0
- package/dist/smart.js.map +1 -0
- package/dist/spatial.d.ts +32 -16
- package/dist/spatial.js +234 -0
- package/dist/spatial.js.map +1 -0
- package/dist/spawning.d.ts +1 -0
- package/dist/spawning.js +224 -0
- package/dist/spawning.js.map +1 -0
- package/dist/stances.d.ts +6 -3
- package/dist/stances.js +169 -0
- package/dist/stances.js.map +1 -0
- package/dist/start.d.ts +10 -10
- package/dist/start.js +75 -0
- package/dist/start.js.map +1 -0
- package/dist/stats.d.ts +42 -16
- package/dist/stats.js +290 -0
- package/dist/stats.js.map +1 -0
- package/dist/summoned.d.ts +52 -0
- package/dist/summoned.js +38 -0
- package/dist/summoned.js.map +1 -0
- package/dist/summons.d.ts +10 -13
- package/dist/summons.js +271 -0
- package/dist/summons.js.map +1 -0
- package/dist/systems/abilities.js +224 -0
- package/dist/systems/abilities.js.map +1 -0
- package/dist/systems/combat.d.ts +35 -1
- package/dist/systems/combat.js +677 -0
- package/dist/systems/combat.js.map +1 -0
- package/dist/systems/combatTold.d.ts +3 -1
- package/dist/systems/combatTold.js +85 -0
- package/dist/systems/combatTold.js.map +1 -0
- package/dist/systems/construction.js +80 -0
- package/dist/systems/construction.js.map +1 -0
- package/dist/systems/economy.d.ts +0 -6
- package/dist/systems/economy.js +128 -0
- package/dist/systems/economy.js.map +1 -0
- package/dist/systems/fog.d.ts +1 -1
- package/dist/systems/fog.js +120 -0
- package/dist/systems/fog.js.map +1 -0
- package/dist/systems/life.js +32 -0
- package/dist/systems/life.js.map +1 -0
- package/dist/systems/movement.d.ts +24 -12
- package/dist/systems/movement.js +1247 -0
- package/dist/systems/movement.js.map +1 -0
- package/dist/systems/orders.js +64 -0
- package/dist/systems/orders.js.map +1 -0
- package/dist/systems/production.js +322 -0
- package/dist/systems/production.js.map +1 -0
- package/dist/systems/productionQueue.js +120 -0
- package/dist/systems/productionQueue.js.map +1 -0
- package/dist/systems/victory.d.ts +1 -1
- package/dist/systems/victory.js +56 -0
- package/dist/systems/victory.js.map +1 -0
- package/dist/talk.d.ts +6 -6
- package/dist/talk.js +153 -0
- package/dist/talk.js.map +1 -0
- package/dist/targeting.d.ts +142 -0
- package/dist/targeting.js +49 -0
- package/dist/targeting.js.map +1 -0
- package/dist/tech.d.ts +20 -3
- package/dist/tech.js +239 -0
- package/dist/tech.js.map +1 -0
- package/dist/techTree.d.ts +7 -0
- package/dist/techTree.js +90 -0
- package/dist/techTree.js.map +1 -0
- package/dist/terrain.d.ts +59 -7
- package/dist/terrain.js +389 -0
- package/dist/terrain.js.map +1 -0
- package/dist/terrainSave.d.ts +6 -0
- package/dist/terrainSave.js +74 -0
- package/dist/terrainSave.js.map +1 -0
- package/dist/testing.d.ts +8 -7
- package/dist/testing.js +13 -739
- package/dist/testing.js.map +1 -1
- package/dist/tiles.d.ts +1 -1
- package/dist/tiles.js +43 -0
- package/dist/tiles.js.map +1 -0
- package/dist/timers.d.ts +29 -4
- package/dist/timers.js +242 -0
- package/dist/timers.js.map +1 -0
- package/dist/tomes.d.ts +4 -4
- package/dist/tomes.js +94 -0
- package/dist/tomes.js.map +1 -0
- package/dist/trade.js +103 -0
- package/dist/trade.js.map +1 -0
- package/dist/transport.d.ts +6 -1
- package/dist/transport.js +281 -0
- package/dist/transport.js.map +1 -0
- package/dist/tunables.d.ts +10 -3
- package/dist/tunables.js +56 -0
- package/dist/tunables.js.map +1 -0
- package/dist/unitResources.d.ts +67 -0
- package/dist/unitResources.js +266 -0
- package/dist/unitResources.js.map +1 -0
- package/dist/upkeep.d.ts +6 -1
- package/dist/upkeep.js +26 -0
- package/dist/upkeep.js.map +1 -0
- package/dist/veterancy.d.ts +8 -3
- package/dist/veterancy.js +131 -0
- package/dist/veterancy.js.map +1 -0
- package/dist/vision.d.ts +36 -0
- package/dist/vision.js +133 -0
- package/dist/vision.js.map +1 -0
- package/dist/walls.d.ts +1 -1
- package/dist/walls.js +278 -0
- package/dist/walls.js.map +1 -0
- package/dist/world.d.ts +606 -88
- package/dist/world.js +1263 -0
- package/dist/world.js.map +1 -0
- package/package.json +2 -2
- package/dist/ai.js.map +0 -1
- package/dist/attributes.d.ts +0 -66
- package/dist/brain-BvVdUhX8.js +0 -7659
- package/dist/brain-BvVdUhX8.js.map +0 -1
- package/dist/builds-C6LfgvEU.js +0 -460
- package/dist/builds-C6LfgvEU.js.map +0 -1
- package/dist/coreComponents-syuh2fPG.js +0 -5149
- package/dist/coreComponents-syuh2fPG.js.map +0 -1
- package/dist/debugCommands-CzjrSm66.js +0 -14739
- package/dist/debugCommands-CzjrSm66.js.map +0 -1
- package/dist/determinism-BCymQwiE.js +0 -518
- package/dist/determinism-BCymQwiE.js.map +0 -1
- package/dist/game-DiJEN-Ks.js +0 -5800
- package/dist/game-DiJEN-Ks.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/inspect-D9dWHmZ0.js.map +0 -1
- package/dist/local-Dkovq42k.js +0 -1379
- package/dist/local-Dkovq42k.js.map +0 -1
- package/dist/missionRules-C-bGxm0Q.js.map +0 -1
- package/dist/navigation-worker.js.map +0 -1
- package/dist/packs-g5thvmGn.js +0 -3199
- package/dist/packs-g5thvmGn.js.map +0 -1
- package/dist/profiles-B3NS9jwk.js.map +0 -1
- package/dist/server.js.map +0 -1
- package/dist/simulate-oXBiw1Ff.js.map +0 -1
package/dist/rules.d.ts
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type DamageType, type ItemDef, type Stats, type UnitTypeDef } from './defs';
|
|
2
|
+
import type { MessageRef } from './messages';
|
|
2
3
|
import type { Registry } from './registry';
|
|
4
|
+
import { type CleaveNow } from './systems/combat';
|
|
3
5
|
import type { Entity, PlayerId } from './entity';
|
|
4
6
|
import { type Upkeep } from './upkeep';
|
|
5
7
|
import type { World } from './world';
|
|
6
8
|
import type { OrderInit } from './registry';
|
|
7
|
-
import type {
|
|
8
|
-
import type
|
|
9
|
-
import { type
|
|
9
|
+
import type { ScoreSettings } from './score';
|
|
10
|
+
import { type HeroSettings } from './hero';
|
|
11
|
+
import { type AttackModifier } from './abilities/triggers';
|
|
10
12
|
/**
|
|
11
13
|
* A rule of `HudSharing`: one value for every unit, or a function deciding it for each (only heroes', only a boss's)
|
|
12
14
|
*
|
|
@@ -14,7 +16,7 @@ import { type HeroRules } from './hero';
|
|
|
14
16
|
*/
|
|
15
17
|
export type HudShareRule<T> = T | ((world: World, entity: Entity) => T);
|
|
16
18
|
/**
|
|
17
|
-
* What of a unit the players who see it are told beyond what they always are (`
|
|
19
|
+
* What of a unit the players who see it are told beyond what they always are (`RuleSettings.hud`), each for the plates
|
|
18
20
|
* over it to show. What is not shared never reaches a player, so no screen can show it. A game's own data goes in a
|
|
19
21
|
* component with `replicate` (the client's `hudData` reads it)
|
|
20
22
|
*
|
|
@@ -36,21 +38,24 @@ export interface HudSharing {
|
|
|
36
38
|
shareXp?: HudShareRule<boolean>;
|
|
37
39
|
}
|
|
38
40
|
/**
|
|
39
|
-
* A unit in a queue, not made yet, as the supply it will take is asked of it (`
|
|
41
|
+
* A unit in a queue, not made yet, as the supply it will take is asked of it (`RuleSettings.supply.of`)
|
|
40
42
|
*
|
|
41
43
|
* @beta
|
|
42
44
|
*/
|
|
43
45
|
export interface QueuedUnit {
|
|
46
|
+
/** The unit type being queued */
|
|
44
47
|
readonly def: UnitTypeDef;
|
|
48
|
+
/** The player who queued it */
|
|
45
49
|
readonly owner: PlayerId;
|
|
50
|
+
/** Always true: tells a queued unit from an `Entity` where the supply it takes is asked */
|
|
46
51
|
readonly queued: true;
|
|
47
52
|
}
|
|
48
53
|
/**
|
|
49
|
-
* How the fog of war keeps what was seen (`
|
|
54
|
+
* How the fog of war keeps what was seen (`RuleSettings.fog`)
|
|
50
55
|
*
|
|
51
56
|
* @beta
|
|
52
57
|
*/
|
|
53
|
-
export interface
|
|
58
|
+
export interface FogSettings {
|
|
54
59
|
/** Part of its sight a unit has at night, for types that do not say (`UnitTypeDef.sightNight`) */
|
|
55
60
|
nightSight: number;
|
|
56
61
|
/**
|
|
@@ -73,39 +78,53 @@ export interface FogRules {
|
|
|
73
78
|
* The numbers and formulas of a kind of game that are not about any one unit: the supply cap, what selling gives
|
|
74
79
|
* back, how a hit is mitigated. In groups, each about one thing: supply, production, the economy, combat, movement,
|
|
75
80
|
* the fog, talk, the camps, heroes, what the HUD is told, the score. A game module changes the ones it wants
|
|
76
|
-
* (`
|
|
81
|
+
* (`Rules.settings`: any of a group, the rest of it the engine's) and a pack the ones it brings (`GamePack.settings`).
|
|
77
82
|
*
|
|
78
|
-
* Read them from `world.
|
|
83
|
+
* Read them from `world.settings` in the simulation, and from `session.registry.settings` on a player's screen.
|
|
79
84
|
*
|
|
80
85
|
* @beta
|
|
81
86
|
*/
|
|
82
|
-
export interface
|
|
83
|
-
/** What armies cost in supply, and how much a player may have (`
|
|
84
|
-
supply:
|
|
85
|
-
/** What buildings make and how they go up (`
|
|
86
|
-
production:
|
|
87
|
-
/** What is paid back, paid for and given away (`
|
|
88
|
-
economy:
|
|
89
|
-
/**
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
*
|
|
99
|
-
*
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
/**
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
87
|
+
export interface RuleSettings {
|
|
88
|
+
/** What armies cost in supply, and how much a player may have (`SupplySettings`) */
|
|
89
|
+
supply: SupplySettings;
|
|
90
|
+
/** What buildings make and how they go up (`ProductionSettings`) */
|
|
91
|
+
production: ProductionSettings;
|
|
92
|
+
/** What is paid back, paid for and given away (`EconomySettings`) */
|
|
93
|
+
economy: EconomySettings;
|
|
94
|
+
/**
|
|
95
|
+
* What a hero may carry and how what it carries works (`ItemSettings`): the limits of groups of items (one pair of
|
|
96
|
+
* boots), unique passives counted once, the game's own rule of what may be carried
|
|
97
|
+
*
|
|
98
|
+
* @beta
|
|
99
|
+
*/
|
|
100
|
+
items: ItemSettings;
|
|
101
|
+
/**
|
|
102
|
+
* Shops (`ShopSettings`): the seconds within which a purchase is taken back
|
|
103
|
+
*
|
|
104
|
+
* @beta
|
|
105
|
+
*/
|
|
106
|
+
shop: ShopSettings;
|
|
107
|
+
/** How a hit lands and how much of it is felt, and who fights whom (`CombatSettings`) */
|
|
108
|
+
combat: CombatSettings;
|
|
109
|
+
/** How units find their way among each other (`MovementSettings`) */
|
|
110
|
+
movement: MovementSettings;
|
|
111
|
+
/** What is seen and kept of what was (`FogSettings`) */
|
|
112
|
+
fog: FogSettings;
|
|
113
|
+
/** Pings, chat and pauses (`TalkSettings`) */
|
|
114
|
+
talk: TalkSettings;
|
|
115
|
+
/**
|
|
116
|
+
* Creeps' camps (`camps.ts`, `CampSettings`): how far from its centre a camp fights (`leash`), how long a creep chases
|
|
117
|
+
* without a blow (`chaseTime`), how long after the last blow the camp goes home (`resetAfter`), whether all of it
|
|
118
|
+
* answers a hit at once (`helpAtOnce`), whether creeps sleep at home at night until attacked (`sleep`), and the
|
|
119
|
+
* seconds after a camp is cleared that it comes back (`respawn`; never when left out). What makes creeps keep to them,
|
|
120
|
+
* sleep and come back is the heroes pack's (`heroesPack`). See docs/creeps.md
|
|
121
|
+
*/
|
|
122
|
+
camps: CampSettings;
|
|
123
|
+
/**
|
|
124
|
+
* Heroes' numbers (`HeroSettings`): how many a player may have, the experience a level takes, what bringing one back
|
|
125
|
+
* costs. The heroes pack's to change (`heroesPack(rules)`); the classic RTS numbers when left out
|
|
126
|
+
*/
|
|
127
|
+
heroes: HeroSettings;
|
|
109
128
|
/**
|
|
110
129
|
* What of a unit the players who see it are told beyond what they always are (its health, mana, level, buffs and
|
|
111
130
|
* their stacks), for the plates over it to show (indicators-plan U3): the seconds left of its buffs, its abilities,
|
|
@@ -116,12 +135,12 @@ export interface GameRules {
|
|
|
116
135
|
hud: HudSharing;
|
|
117
136
|
/**
|
|
118
137
|
* What the game counts of its players for its score (a classic RTS score screen): kills, losses, damage, healing,
|
|
119
|
-
* resources, its own (`
|
|
138
|
+
* resources, its own (`ScoreSettings`, `presetScore()`, `defineStat`). Counted by the rules as the game goes, kept in
|
|
120
139
|
* saves, told to the players as it says. Nothing is counted when left out
|
|
121
140
|
*
|
|
122
141
|
* @beta
|
|
123
142
|
*/
|
|
124
|
-
score?:
|
|
143
|
+
score?: ScoreSettings;
|
|
125
144
|
/**
|
|
126
145
|
* Whether a player may command an entity: its owner, and whoever the owner shares control with
|
|
127
146
|
* (`world.sides.shareControl`, a force's `sharedControl`), when left out. What every command is checked against, and
|
|
@@ -130,17 +149,17 @@ export interface GameRules {
|
|
|
130
149
|
mayCommand(world: World, player: PlayerId, entity: Entity): boolean;
|
|
131
150
|
}
|
|
132
151
|
/**
|
|
133
|
-
* Supply (`
|
|
152
|
+
* Supply (`RuleSettings.supply`)
|
|
134
153
|
*
|
|
135
154
|
* @beta
|
|
136
155
|
*/
|
|
137
|
-
export interface
|
|
156
|
+
export interface SupplySettings {
|
|
138
157
|
/** Supply no player can go past, however much they build to provide it */
|
|
139
158
|
max: number;
|
|
140
159
|
/**
|
|
141
160
|
* Pools of supply besides the one there always is (`supply`, food), by name, each with what it is called and its
|
|
142
|
-
* most: a cap on commanders, on vehicles. A unit takes of one with `
|
|
143
|
-
* `
|
|
161
|
+
* most: a cap on commanders, on vehicles. A unit takes of one with `supply`, a building provides with
|
|
162
|
+
* `supplyGiven`. None when left out
|
|
144
163
|
*/
|
|
145
164
|
pools?: Record<string, {
|
|
146
165
|
name: string;
|
|
@@ -153,11 +172,11 @@ export interface SupplyRules {
|
|
|
153
172
|
of(world: World, unit: Entity | QueuedUnit): number;
|
|
154
173
|
}
|
|
155
174
|
/**
|
|
156
|
-
* Production and construction (`
|
|
175
|
+
* Production and construction (`RuleSettings.production`)
|
|
157
176
|
*
|
|
158
177
|
* @beta
|
|
159
178
|
*/
|
|
160
|
-
export interface
|
|
179
|
+
export interface ProductionSettings {
|
|
161
180
|
/** Things a building can have waiting to be made */
|
|
162
181
|
queue: number;
|
|
163
182
|
/** Part of what a structure cost that comes back when it is called off while being built */
|
|
@@ -168,11 +187,11 @@ export interface ProductionRules {
|
|
|
168
187
|
buildRate(world: World, structure: Entity, builders: number): number;
|
|
169
188
|
}
|
|
170
189
|
/**
|
|
171
|
-
* Selling, repairing, giving and upkeep (`
|
|
190
|
+
* Selling, repairing, giving and upkeep (`RuleSettings.economy`)
|
|
172
191
|
*
|
|
173
192
|
* @beta
|
|
174
193
|
*/
|
|
175
|
-
export interface
|
|
194
|
+
export interface EconomySettings {
|
|
176
195
|
/** Part of an item's price a shop pays for it */
|
|
177
196
|
sellPrice: number;
|
|
178
197
|
/** Part of what a building cost that mending all of its health costs */
|
|
@@ -183,15 +202,48 @@ export interface EconomyRules {
|
|
|
183
202
|
upkeep(world: World, player: PlayerId): Upkeep;
|
|
184
203
|
}
|
|
185
204
|
/**
|
|
186
|
-
*
|
|
205
|
+
* What a hero may carry, and how what it carries works (`RuleSettings.items`)
|
|
206
|
+
*
|
|
207
|
+
* @beta
|
|
208
|
+
*/
|
|
209
|
+
export interface ItemSettings {
|
|
210
|
+
/**
|
|
211
|
+
* The most of a group of items (`ItemDef.group`) one carrier may have, by group: `{ boots: 1 }` when left out. An
|
|
212
|
+
* item's own `groupLimit` comes first; a group named nowhere is 1
|
|
213
|
+
*/
|
|
214
|
+
groups: Record<string, number>;
|
|
215
|
+
/** Whether the passives of items sharing a `unique` name work once for all of them (yes), or each (no) */
|
|
216
|
+
unique: boolean;
|
|
217
|
+
/**
|
|
218
|
+
* The game's own rule of what a carrier may take, asked after the engine's (a group's limit) as it buys an item, picks
|
|
219
|
+
* one up or is handed one: a reason to refuse (a `MessageRef`, told to the player), nothing to let it. `uses` are
|
|
220
|
+
* the parts buying it uses up, by id (none for a pick-up or a hand-over). Everything may when left out
|
|
221
|
+
*/
|
|
222
|
+
mayCarry?: (world: World, carrier: Entity, item: ItemDef, uses: readonly string[]) => MessageRef | undefined;
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Shops (`RuleSettings.shop`): taking a purchase back
|
|
187
226
|
*
|
|
188
227
|
* @beta
|
|
189
228
|
*/
|
|
190
|
-
export interface
|
|
229
|
+
export interface ShopSettings {
|
|
230
|
+
/**
|
|
231
|
+
* Seconds within which a purchase is undone (`undoBuy`, the `undoBuy` command: the shop window's Undo) for all it
|
|
232
|
+
* cost, as long as the buyer stands at the shop still and has not used the item: what it took is given back, the
|
|
233
|
+
* parts it used up come back, the shop has it back in stock. 10 when left out; 0 for no undoing
|
|
234
|
+
*/
|
|
235
|
+
undo: number;
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Fighting (`RuleSettings.combat`)
|
|
239
|
+
*
|
|
240
|
+
* @beta
|
|
241
|
+
*/
|
|
242
|
+
export interface CombatSettings {
|
|
191
243
|
/**
|
|
192
244
|
* Whether a basic attack of `attacker` strikes critically, and what it multiplies the damage by then: a number for a
|
|
193
245
|
* critical strike, nothing for none. Asked as the attack goes off, before whether it misses. None when left out (a
|
|
194
|
-
* game's crits: `
|
|
246
|
+
* game's crits: `mobaStatsPack`, or its own)
|
|
195
247
|
*/
|
|
196
248
|
critical(world: World, attacker: Entity, stats: Readonly<Stats>): number | undefined;
|
|
197
249
|
/**
|
|
@@ -199,11 +251,22 @@ export interface CombatRules {
|
|
|
199
251
|
* of whoever deals it, when someone does. Armor and magic resist, with penetration, when left out
|
|
200
252
|
*/
|
|
201
253
|
mitigation(type: DamageType, target: Readonly<Stats>, source?: Readonly<Stats>): number;
|
|
254
|
+
/**
|
|
255
|
+
* What damage is multiplied by once mitigated, before shields, for the stats of who takes it and of who deals it
|
|
256
|
+
* (when someone does): their `incomingDamage` (and of the type: `incomingMagicDamage`) and `outgoingDamage`, never
|
|
257
|
+
* below none, when left out (`damageScale`)
|
|
258
|
+
*/
|
|
259
|
+
damageScale(type: DamageType, target: Readonly<Stats>, source?: Readonly<Stats>): number;
|
|
260
|
+
/**
|
|
261
|
+
* What healing is multiplied by, for the stats of who gets it, before the `beforeHeal` hook: its `incomingHealing`,
|
|
262
|
+
* never below none, when left out (`healingScale`)
|
|
263
|
+
*/
|
|
264
|
+
healingScale(target: Readonly<Stats>, source?: Readonly<Stats>): number;
|
|
202
265
|
/**
|
|
203
266
|
* Keeps stats within what the game allows, once everything that changes them was added up. Changes them in place.
|
|
204
267
|
* The default keeps attack speed within its limits (below)
|
|
205
268
|
*/
|
|
206
|
-
clampStats(stats: Stats, rules: Readonly<
|
|
269
|
+
clampStats(stats: Stats, rules: Readonly<RuleSettings>): void;
|
|
207
270
|
/** Seconds an ability takes to be ready again, for a unit with these stats. Its cooldown as it is, when left out */
|
|
208
271
|
cooldown(seconds: number, stats: Readonly<Stats>): number;
|
|
209
272
|
/**
|
|
@@ -213,6 +276,18 @@ export interface CombatRules {
|
|
|
213
276
|
slowTaken(stats: Readonly<Stats>, slow: number): number;
|
|
214
277
|
/** What the heals and shields `source` gives are multiplied by. 1, when left out */
|
|
215
278
|
healPower(world: World, source: Entity): number;
|
|
279
|
+
/**
|
|
280
|
+
* What a blow from up close of `attacker`'s weapon at that place cleaves: the part of its damage the enemies round
|
|
281
|
+
* `target` take, how far round it, how wide a cone. Its attack's own or a buff's, the larger part, when left out
|
|
282
|
+
* (`cleaveOf`); nothing for none
|
|
283
|
+
*/
|
|
284
|
+
cleave(world: World, attacker: Entity, target: Entity, weapon: number): CleaveNow | undefined;
|
|
285
|
+
/**
|
|
286
|
+
* Which of what an attack of `attacker` sets off go off (its attack modifiers: the `onHit` of its abilities, items
|
|
287
|
+
* and buffs that can now), of those it is given, in their order. One a slot, the highest `priority`, and all of
|
|
288
|
+
* those of no slot, when left out (`bySlot`); `(world, attacker, target, modifiers) => modifiers` for all of them
|
|
289
|
+
*/
|
|
290
|
+
attackModifiers(world: World, attacker: Entity, target: Entity, modifiers: readonly AttackModifier[]): readonly AttackModifier[];
|
|
216
291
|
/** Nobody attacks slower or faster than this, whatever they carry: [lowest, highest] attack speed */
|
|
217
292
|
attackSpeedLimits: [number, number];
|
|
218
293
|
/** Seconds a corpse lies where a unit of flesh died, for spells to use (see `raiseDead`). None at all for 0 */
|
|
@@ -233,13 +308,6 @@ export interface CombatRules {
|
|
|
233
308
|
* weapon for what is on the ground, a second for the air. Asked for every target looked at: keep it cheap
|
|
234
309
|
*/
|
|
235
310
|
pickAttack(world: World, attacker: Entity, target: Entity): number;
|
|
236
|
-
/**
|
|
237
|
-
* What a hit is multiplied by for the attack's type against the target's armour type, as classic RTS games have it
|
|
238
|
-
* (pierce against light, siege against fortified), before armour and shields: none when left out. Attacks name
|
|
239
|
-
* their type (`AttackDef.attackType`), abilities as they deal damage (`DamageOptions.attackType`), unit types their
|
|
240
|
-
* armour (`UnitTypeDef.armourType`); a type the table has not got is refused as the game is made
|
|
241
|
-
*/
|
|
242
|
-
damageTable?: DamageTable;
|
|
243
311
|
/**
|
|
244
312
|
* The layer an attacker fights from, around a target: room is counted apart for each (see `engageRoom`). The air
|
|
245
313
|
* for what flies, the water for boats, the ground for the rest, when left out; any name of the game's own besides
|
|
@@ -257,13 +325,32 @@ export interface CombatRules {
|
|
|
257
325
|
* when left out; Infinity never
|
|
258
326
|
*/
|
|
259
327
|
giveUpChase(world: World, attacker: Entity, target: Entity): number;
|
|
328
|
+
/**
|
|
329
|
+
* How far from the middle of a target an attacker waits for room there, when it was told to attack it and it has no
|
|
330
|
+
* room for it or no way to it (`holdOff`): on its own side, out of the way of those fighting it. Just behind them
|
|
331
|
+
* when left out (`defaultQueueDistance`): the target's size, two of the attacker, its reach and half a cell
|
|
332
|
+
*/
|
|
333
|
+
queueDistance(world: World, attacker: Entity, target: Entity): number;
|
|
334
|
+
/**
|
|
335
|
+
* Whether an order given to a unit in the recovery after its blow (`AttackDef.recovery`) cuts the recovery short and
|
|
336
|
+
* is carried out at once. Nothing is given back of the attack: its cooldown runs on. Never, when left out: the order
|
|
337
|
+
* waits until the recovery is over
|
|
338
|
+
*/
|
|
339
|
+
recoveryCancels(world: World, entity: Entity): boolean;
|
|
340
|
+
/**
|
|
341
|
+
* How far from an ally that is hit an idle unit of the same owner comes to its help: it takes the attacker, as a
|
|
342
|
+
* camp's creeps do (`helpAtOnce`). Asked of each helper, with the ally hit: how far apart they are (centre to centre)
|
|
343
|
+
* it must be at most. Never more than `HELP_SEARCH` (20) is looked for. 0 turns it off. The helper's acquisition range
|
|
344
|
+
* and 4 more, when left out
|
|
345
|
+
*/
|
|
346
|
+
helpRange(world: World, helper: Entity, victim: Entity): number;
|
|
260
347
|
}
|
|
261
348
|
/**
|
|
262
|
-
* How units move among each other (`
|
|
349
|
+
* How units move among each other (`RuleSettings.movement`)
|
|
263
350
|
*
|
|
264
351
|
* @beta
|
|
265
352
|
*/
|
|
266
|
-
export interface
|
|
353
|
+
export interface MovementSettings {
|
|
267
354
|
/**
|
|
268
355
|
* Whether an ally standing in the way of a unit on its way steps aside when asked (see `makeWay`). Those standing
|
|
269
356
|
* about with nothing to do, or waiting by a fight for a spot in it, when left out: not those fighting, walking or
|
|
@@ -298,13 +385,19 @@ export interface MovementRules {
|
|
|
298
385
|
* tick for every unit that moves: keep it cheap. Its speed as it is, when left out
|
|
299
386
|
*/
|
|
300
387
|
moveSpeed(world: World, entity: Entity, speed: number): number;
|
|
388
|
+
/**
|
|
389
|
+
* How fast a unit turns, in radians a second, where its type says nothing of its own (`UnitTypeDef.turnRate`): on
|
|
390
|
+
* its way, to face what it attacks, works on or casts at. 12 when left out, which is all but at once (a half turn
|
|
391
|
+
* in a quarter of a second); 2 or 3 for units that visibly come round, as a classic RTS's do, less for ships
|
|
392
|
+
*/
|
|
393
|
+
turnRate: number;
|
|
301
394
|
}
|
|
302
395
|
/**
|
|
303
|
-
* Pings, chat and pauses (`
|
|
396
|
+
* Pings, chat and pauses (`RuleSettings.talk`)
|
|
304
397
|
*
|
|
305
398
|
* @beta
|
|
306
399
|
*/
|
|
307
|
-
export interface
|
|
400
|
+
export interface TalkSettings {
|
|
308
401
|
/**
|
|
309
402
|
* Pings (see `ping`): how many a player may send `within` so many seconds, the kinds there are (a hero arena game's
|
|
310
403
|
* when left out; a game adds its own), and what each kind asks of a computer ally (indicators-plan P4): a request on
|
|
@@ -331,65 +424,59 @@ export interface TalkRules {
|
|
|
331
424
|
seconds: number;
|
|
332
425
|
};
|
|
333
426
|
}
|
|
334
|
-
/**
|
|
335
|
-
* A damage table: what a hit of each attack type is multiplied by against each armour type (`GameRules.combat.damageTable`).
|
|
336
|
-
* `table[attack][armour]`, the rows the attacks in their order, the columns the armours in theirs
|
|
337
|
-
*
|
|
338
|
-
* @beta
|
|
339
|
-
*/
|
|
340
|
-
export interface DamageTable {
|
|
341
|
-
attacks: readonly string[];
|
|
342
|
-
armours: readonly string[];
|
|
343
|
-
table: readonly (readonly number[])[];
|
|
344
|
-
}
|
|
345
|
-
/**
|
|
346
|
-
* What a hit is multiplied by, by a damage table: 1 for no table, no attack type, no armour type, or one the table
|
|
347
|
-
* has not got
|
|
348
|
-
*
|
|
349
|
-
* @beta
|
|
350
|
-
*/
|
|
351
|
-
export declare function damageMultiplier(table: DamageTable | undefined, attackType: string | undefined, armourType: string | undefined): number;
|
|
352
|
-
/**
|
|
353
|
-
* Refuses a damage table that is not one, and a unit type whose attack or armour names a type the table has not got:
|
|
354
|
-
* as the game is made, so that a misspelling fails then and not in a fight. A game without a table is checked for
|
|
355
|
-
* nothing
|
|
356
|
-
*
|
|
357
|
-
* @beta
|
|
358
|
-
*/
|
|
359
|
-
export declare function checkDamageTable(game: GameModule): void;
|
|
360
427
|
/**
|
|
361
428
|
* The engine's rules: those of a classic RTS melee game
|
|
362
429
|
*
|
|
363
430
|
* @beta
|
|
364
431
|
*/
|
|
365
|
-
export declare const
|
|
432
|
+
export declare const defaultSettings: Readonly<RuleSettings>;
|
|
366
433
|
/**
|
|
367
|
-
* Creeps' camps' rules (`
|
|
434
|
+
* Creeps' camps' rules (`RuleSettings.camps`)
|
|
368
435
|
*
|
|
369
436
|
* @beta
|
|
370
437
|
*/
|
|
371
|
-
export interface
|
|
372
|
-
/**
|
|
438
|
+
export interface CampSettings {
|
|
439
|
+
/**
|
|
440
|
+
* How far from the camp's centre its creeps fight, in cells: what goes past it is let go of, and a creep led past it
|
|
441
|
+
* turns back. 14 by default. A camp's own is `Camp.leash` (`spawnCamp`'s `leash`)
|
|
442
|
+
*/
|
|
373
443
|
leash: number;
|
|
444
|
+
/**
|
|
445
|
+
* Seconds a creep chases what has neither hit it nor been hit by it before it lets it go for the next of the camp's
|
|
446
|
+
* list (`Camp.aggro`): a kiting archer is not followed round the camp for ever. 5 by default. A camp's own is
|
|
447
|
+
* `Camp.chaseTime`
|
|
448
|
+
*/
|
|
449
|
+
chaseTime: number;
|
|
450
|
+
/**
|
|
451
|
+
* Seconds without a blow (none of the camp's creeps hitting or hit) before the camp gives up the fight and goes home:
|
|
452
|
+
* until then its creeps wait where they stand for what comes next. 6 by default. A camp's own is `Camp.resetAfter`;
|
|
453
|
+
* `resetCamp` sends one home now
|
|
454
|
+
*/
|
|
455
|
+
resetAfter: number;
|
|
456
|
+
/**
|
|
457
|
+
* Whether every creep of a camp answers a hit on one of them at once, as it lands, rather than at its next look round
|
|
458
|
+
* (every fourth tick). True by default. A camp's own is `Camp.helpAtOnce`
|
|
459
|
+
*/
|
|
460
|
+
helpAtOnce: boolean;
|
|
374
461
|
/** Whether creeps sleep at home at night, until attacked */
|
|
375
462
|
sleep: boolean;
|
|
376
463
|
/** Seconds after a camp is cleared that it comes back, for every camp (see `Camp.respawn`). Never when left out */
|
|
377
464
|
respawn?: number;
|
|
378
465
|
}
|
|
379
466
|
/** What is said of a group of the rules: any of it, a group in it in part as well. A function, a list and a table whole */
|
|
380
|
-
export type
|
|
381
|
-
[K in keyof T]?:
|
|
467
|
+
export type SettingsPart<T> = T extends (...args: never[]) => unknown ? T : T extends readonly unknown[] ? T : T extends object ? {
|
|
468
|
+
[K in keyof T]?: SettingsPart<T[K]>;
|
|
382
469
|
} : T;
|
|
383
470
|
/**
|
|
384
|
-
* What a game says of its rules (`
|
|
385
|
-
* (`{ supply: { max: 200 } }`), the engine's for the rest. The
|
|
471
|
+
* What a game says of its rules (`Rules.settings`), or a pack (`GamePack.settings`): any of them, a group in part
|
|
472
|
+
* (`{ supply: { max: 200 } }`), the engine's for the rest. The score and the HUD's sharing are
|
|
386
473
|
* given whole
|
|
387
474
|
*
|
|
388
475
|
* @beta
|
|
389
476
|
*/
|
|
390
|
-
export type
|
|
391
|
-
[K in Exclude<keyof
|
|
477
|
+
export type RuleSettingsInit = {
|
|
478
|
+
[K in Exclude<keyof RuleSettings, 'score' | 'hud'>]?: SettingsPart<RuleSettings[K]>;
|
|
392
479
|
} & {
|
|
393
|
-
score?:
|
|
480
|
+
score?: ScoreSettings;
|
|
394
481
|
hud?: HudSharing;
|
|
395
482
|
};
|
package/dist/rules.js
ADDED
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
import { clamp } from "./math.js";
|
|
2
|
+
import { supplyOf } from "./defs.js";
|
|
3
|
+
import { orderSays } from "./orders/facts.js";
|
|
4
|
+
import { damageScale, healingScale, mitigation } from "./stats.js";
|
|
5
|
+
import { moving } from "./entity.js";
|
|
6
|
+
import { defaultHeroSettings } from "./hero.js";
|
|
7
|
+
import { defaultPickAttack, farthestAcquisition } from "./attacks.js";
|
|
8
|
+
import { defaultEngageLayer, defaultEngageRoom, defaultQueueDistance } from "./engagement.js";
|
|
9
|
+
import { UPHILL_MISS, cleaveOf, shootsUphill } from "./systems/combat.js";
|
|
10
|
+
import { upkeepOf } from "./upkeep.js";
|
|
11
|
+
import { groundSpeedAt } from "./groundSpeed.js";
|
|
12
|
+
import { bySlot } from "./abilities/triggers.js";
|
|
13
|
+
//#region src/rules.ts
|
|
14
|
+
/**
|
|
15
|
+
* The engine's rules: those of a classic RTS melee game
|
|
16
|
+
*
|
|
17
|
+
* @beta
|
|
18
|
+
*/
|
|
19
|
+
var defaultSettings = Object.freeze({
|
|
20
|
+
supply: {
|
|
21
|
+
max: 100,
|
|
22
|
+
pools: void 0,
|
|
23
|
+
of: (_world, unit) => supplyOf(unit.def)
|
|
24
|
+
},
|
|
25
|
+
production: {
|
|
26
|
+
queue: 7,
|
|
27
|
+
cancelRefund: .75,
|
|
28
|
+
constructionHealth: .1,
|
|
29
|
+
buildRate: (_world, _structure, builders) => 1 + (builders - 1) * .5
|
|
30
|
+
},
|
|
31
|
+
economy: {
|
|
32
|
+
sellPrice: .7,
|
|
33
|
+
repairCost: .35,
|
|
34
|
+
tradeTax: 0,
|
|
35
|
+
upkeep: (world, player) => upkeepOf(world, player)
|
|
36
|
+
},
|
|
37
|
+
items: {
|
|
38
|
+
groups: { boots: 1 },
|
|
39
|
+
unique: true,
|
|
40
|
+
mayCarry: void 0
|
|
41
|
+
},
|
|
42
|
+
shop: { undo: 10 },
|
|
43
|
+
combat: {
|
|
44
|
+
critical: () => void 0,
|
|
45
|
+
mitigation,
|
|
46
|
+
damageScale,
|
|
47
|
+
healingScale,
|
|
48
|
+
clampStats(stats, rules) {
|
|
49
|
+
const { attackSpeedLimits } = rules.combat;
|
|
50
|
+
if (stats.attackSpeed > 0) stats.attackSpeed = clamp(stats.attackSpeed, attackSpeedLimits[0], attackSpeedLimits[1]);
|
|
51
|
+
},
|
|
52
|
+
cooldown: (seconds) => seconds,
|
|
53
|
+
slowTaken: (_stats, slow) => slow,
|
|
54
|
+
healPower: () => 1,
|
|
55
|
+
cleave: cleaveOf,
|
|
56
|
+
attackModifiers: bySlot,
|
|
57
|
+
attackSpeedLimits: [.1, 5],
|
|
58
|
+
corpseTime: 60,
|
|
59
|
+
missChance: (world, attacker, target) => shootsUphill(world, attacker, target) ? UPHILL_MISS : 0,
|
|
60
|
+
splash: (_world, source, other, distance, radius) => other === source ? 0 : distance <= radius / 2 ? 1 : .5,
|
|
61
|
+
acquisitionRange: (_world, entity) => farthestAcquisition(entity.def),
|
|
62
|
+
pickAttack: defaultPickAttack,
|
|
63
|
+
engageLayer: defaultEngageLayer,
|
|
64
|
+
engageRoom: defaultEngageRoom,
|
|
65
|
+
giveUpChase: () => 1,
|
|
66
|
+
queueDistance: defaultQueueDistance,
|
|
67
|
+
recoveryCancels: () => false,
|
|
68
|
+
helpRange: (world, helper) => world.settings.combat.acquisitionRange(world, helper) + 4
|
|
69
|
+
},
|
|
70
|
+
movement: {
|
|
71
|
+
makesWay: (world, _mover, other) => other.get(moving)?.status !== "moving" && !other.get(moving)?.anchored && (other.orders.length === 0 || orderSays(world, other, "waiting")),
|
|
72
|
+
lookAhead: () => 3,
|
|
73
|
+
goesAround: (_world, _mover, _around, longer, straight) => longer <= 1.5 + straight * .25,
|
|
74
|
+
formation: () => "rows",
|
|
75
|
+
moveSpeed: (world, entity, speed) => speed * groundSpeedAt(world, entity),
|
|
76
|
+
turnRate: 12,
|
|
77
|
+
together: false
|
|
78
|
+
},
|
|
79
|
+
fog: {
|
|
80
|
+
nightSight: .6,
|
|
81
|
+
explored: void 0,
|
|
82
|
+
startExplored: void 0,
|
|
83
|
+
mask: void 0
|
|
84
|
+
},
|
|
85
|
+
talk: {
|
|
86
|
+
pings: {
|
|
87
|
+
most: 4,
|
|
88
|
+
within: 5,
|
|
89
|
+
kinds: [
|
|
90
|
+
"look",
|
|
91
|
+
"danger",
|
|
92
|
+
"assist",
|
|
93
|
+
"onMyWay"
|
|
94
|
+
],
|
|
95
|
+
meanings: {
|
|
96
|
+
danger: "help",
|
|
97
|
+
assist: "help",
|
|
98
|
+
push: "attack",
|
|
99
|
+
hold: "defend",
|
|
100
|
+
retreat: "rally"
|
|
101
|
+
}
|
|
102
|
+
},
|
|
103
|
+
lines: {
|
|
104
|
+
most: 5,
|
|
105
|
+
within: 5,
|
|
106
|
+
length: 160
|
|
107
|
+
},
|
|
108
|
+
pauses: {
|
|
109
|
+
each: 3,
|
|
110
|
+
seconds: 60
|
|
111
|
+
}
|
|
112
|
+
},
|
|
113
|
+
camps: {
|
|
114
|
+
leash: 14,
|
|
115
|
+
chaseTime: 5,
|
|
116
|
+
resetAfter: 6,
|
|
117
|
+
helpAtOnce: true,
|
|
118
|
+
sleep: true,
|
|
119
|
+
respawn: void 0
|
|
120
|
+
},
|
|
121
|
+
heroes: defaultHeroSettings,
|
|
122
|
+
hud: {},
|
|
123
|
+
score: void 0,
|
|
124
|
+
mayCommand: (world, player, entity) => entity.owner === player || world.sides.controlOf(entity.owner).includes(player)
|
|
125
|
+
});
|
|
126
|
+
/** Whether a value is a group of the rules to be laid over in part: a plain object of named parts, not a table or a list */
|
|
127
|
+
var isGroup = (value) => typeof value === "object" && value !== null && !Array.isArray(value) && Object.getPrototypeOf(value) === Object.prototype;
|
|
128
|
+
/**
|
|
129
|
+
* Lays what is said of rules over rules, group by group: a group of named parts (`supply`, `talk.pings`) part by part,
|
|
130
|
+
* everything else whole. A name the rules have not got is refused: a typo would otherwise change nothing, without a word
|
|
131
|
+
*
|
|
132
|
+
* @internal
|
|
133
|
+
*/
|
|
134
|
+
function laySettings(under, over, path = "") {
|
|
135
|
+
const laid = { ...under };
|
|
136
|
+
for (const [key, value] of Object.entries(over)) {
|
|
137
|
+
if (value === void 0) continue;
|
|
138
|
+
if (!(key in under)) throw new Error(`"${path}${key}" is not a game rule`);
|
|
139
|
+
const before = under[key];
|
|
140
|
+
laid[key] = isGroup(before) && Object.keys(before).length && isGroup(value) ? laySettings(before, value, `${path}${key}.`) : value;
|
|
141
|
+
}
|
|
142
|
+
return laid;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* What is said of rules laid over what was said before (a pack's over the game's, a mod's over the game's), group by
|
|
146
|
+
* group as `laySettings` does, neither of them whole
|
|
147
|
+
*
|
|
148
|
+
* @internal
|
|
149
|
+
*/
|
|
150
|
+
function overSettings(under, over) {
|
|
151
|
+
const laid = { ...under };
|
|
152
|
+
for (const [key, value] of Object.entries(over)) {
|
|
153
|
+
if (value === void 0) continue;
|
|
154
|
+
const before = laid[key];
|
|
155
|
+
laid[key] = isGroup(before) && isGroup(value) ? overSettings(before, value) : value;
|
|
156
|
+
}
|
|
157
|
+
return laid;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* The names of the rules what is said of them changes, group by group (`supply.max`, `talk.pings.most`): what two
|
|
161
|
+
* mods are found to both change by
|
|
162
|
+
*
|
|
163
|
+
* @internal
|
|
164
|
+
*/
|
|
165
|
+
function rulesSaid(said, path = "") {
|
|
166
|
+
return Object.entries(said).flatMap(([key, value]) => value === void 0 ? [] : isGroup(value) && Object.keys(value).length ? rulesSaid(value, `${path}${key}.`) : [`${path}${key}`]);
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* The rules of a game: what its module changes, over the engine's
|
|
170
|
+
*
|
|
171
|
+
* @internal
|
|
172
|
+
*/
|
|
173
|
+
function resolveSettings(changes = {}) {
|
|
174
|
+
return Object.freeze(laySettings(defaultSettings, changes));
|
|
175
|
+
}
|
|
176
|
+
//#endregion
|
|
177
|
+
export { defaultSettings, laySettings, overSettings, resolveSettings, rulesSaid };
|
|
178
|
+
|
|
179
|
+
//# sourceMappingURL=rules.js.map
|