@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/hero.d.ts
CHANGED
|
@@ -1,24 +1,25 @@
|
|
|
1
|
+
import { type CallingDef } from './callings';
|
|
1
2
|
import type { Cost } from './defs';
|
|
2
|
-
import { type Entity, type PlayerId } from './entity';
|
|
3
|
+
import { type Entity, type EntityId, type PlayerId } from './entity';
|
|
3
4
|
import type { Vec2 } from './math';
|
|
4
5
|
import type { World } from './world';
|
|
5
6
|
import type { EntityState, LearnableInfo, XpInfo } from './session/protocol';
|
|
6
7
|
import type { GamePack } from './packs/pack';
|
|
7
8
|
import type { HeroSummary } from './session/protocol';
|
|
8
9
|
/**
|
|
9
|
-
* The id of the heroes pack (`
|
|
10
|
+
* The id of the heroes pack (`heroesPack`): `hasPack(game, HEROES)`
|
|
10
11
|
*
|
|
11
12
|
* @beta
|
|
12
13
|
*/
|
|
13
14
|
export declare const HEROES = "core.heroes";
|
|
14
15
|
/**
|
|
15
|
-
* The numbers and formulas of heroes, the heroes pack's (`
|
|
16
|
+
* The numbers and formulas of heroes, the heroes pack's (`heroesPack(rules)`): how many heroes a player may
|
|
16
17
|
* have, how much experience a level takes, what bringing one back costs. The classic RTS numbers for
|
|
17
18
|
* those left out
|
|
18
19
|
*
|
|
19
20
|
* @beta
|
|
20
21
|
*/
|
|
21
|
-
export interface
|
|
22
|
+
export interface HeroSettings {
|
|
22
23
|
/** Heroes a player can have at once, fallen ones and ones being trained included */
|
|
23
24
|
maxHeroes: number;
|
|
24
25
|
/** The level heroes stop at, unless their type says otherwise (`HeroDef.maxLevel`) */
|
|
@@ -36,15 +37,62 @@ export interface HeroRules {
|
|
|
36
37
|
};
|
|
37
38
|
/** Ability points a hero gets for reaching a level. One, when left out */
|
|
38
39
|
pointsForLevel(level: number): number;
|
|
40
|
+
/** Seconds a fallen hero is remembered as it fell (`fallenHeroes`): 8 when left out */
|
|
41
|
+
fallenFor: number;
|
|
42
|
+
/**
|
|
43
|
+
* Seconds within which a hero that hurt a hero, or healed, shielded or buffed the hero that killed it, assists the
|
|
44
|
+
* kill (`heroAssists`): it shares the kill's experience wherever it is, and is paid `assistGold`. 10 when left out;
|
|
45
|
+
* 0 for no assists
|
|
46
|
+
*/
|
|
47
|
+
assistTime: number;
|
|
48
|
+
/**
|
|
49
|
+
* Which heroes assist a hero's kill, of those the engine found (`foundAssists`: who hurt it and who helped its
|
|
50
|
+
* killer within `assistTime`): all of them when left out. A game's own rule (only those near, only damage)
|
|
51
|
+
*/
|
|
52
|
+
assists(world: World, victim: Entity, killer: Entity | undefined, found: readonly Entity[]): readonly Entity[];
|
|
53
|
+
/**
|
|
54
|
+
* Gold the player of each hero that assists a hero's kill is paid. Half of what the kill is worth (its bounty's
|
|
55
|
+
* middle, or 100 and 25 a level of the victim's: `heroKillWorth`), shared out among them, when left out
|
|
56
|
+
*/
|
|
57
|
+
assistGold(world: World, victim: Entity, killer: Entity | undefined, assists: readonly Entity[]): number;
|
|
58
|
+
/**
|
|
59
|
+
* Gold a hero's death pays its killer's player on top of the kill, for the kills it made in a row without dying
|
|
60
|
+
* (`streak`): the shutdown that ends a streak. None under 3, then 100, and 50 more for each kill past it, 500 at
|
|
61
|
+
* most, when left out
|
|
62
|
+
*/
|
|
63
|
+
shutdownGold(world: World, victim: Entity, streak: number): number;
|
|
64
|
+
/**
|
|
65
|
+
* What buying a fallen hero back costs its player (`buyBack`): 100 and 40 a level of its, in the game's money, when
|
|
66
|
+
* left out. Nothing for a hero that cannot be bought back: a game without buyback says `() => undefined`
|
|
67
|
+
*/
|
|
68
|
+
buybackCost(world: World, hero: Entity): Cost | undefined;
|
|
69
|
+
/** Seconds a hero bought back waits before it may be again: 120 when left out */
|
|
70
|
+
buybackCooldown: number;
|
|
71
|
+
/**
|
|
72
|
+
* The callings a hero may have (`HeroDef.callings`): the engine's when left out (`defaultCallings`), or a game's
|
|
73
|
+
* own, some of them, renamed or added to: `heroesPack({ callings: [...] })`
|
|
74
|
+
*
|
|
75
|
+
* @beta
|
|
76
|
+
*/
|
|
77
|
+
callings: readonly CallingDef[];
|
|
39
78
|
}
|
|
40
79
|
/**
|
|
41
|
-
*
|
|
80
|
+
* What the kill of a hero is worth in the game's money, as the engine's rules have it (what assists share,
|
|
81
|
+
* `HeroSettings.assistGold`): the middle of its bounty (`UnitTypeDef.bounty`), or 100 and 25 a level
|
|
82
|
+
*
|
|
83
|
+
* @beta
|
|
84
|
+
*/
|
|
85
|
+
export declare function heroKillWorth(victim: Entity): number;
|
|
86
|
+
/**
|
|
87
|
+
* The heroes pack, as `heroesPack` makes it: its rules beside its parts
|
|
42
88
|
*
|
|
43
89
|
* @beta
|
|
44
90
|
*/
|
|
45
91
|
export interface HeroesPack extends GamePack {
|
|
46
|
-
/** What the game says of heroes, over the engine's (`
|
|
47
|
-
options: Partial<
|
|
92
|
+
/** What the game says of heroes, over the engine's (`defaultHeroSettings`): what the pack was made with (`RuleSettings.heroes`) */
|
|
93
|
+
options: Partial<HeroSettings>;
|
|
94
|
+
/** The callings its heroes may have: the game's (`heroesPack({ callings })`) or the engine's (`defaultCallings`) @beta */
|
|
95
|
+
callings: readonly CallingDef[];
|
|
48
96
|
}
|
|
49
97
|
/**
|
|
50
98
|
* What a hero has earned: its level, its experience, the points it has to put into abilities (`heroState`)
|
|
@@ -52,6 +100,7 @@ export interface HeroesPack extends GamePack {
|
|
|
52
100
|
* @beta
|
|
53
101
|
*/
|
|
54
102
|
export interface HeroState {
|
|
103
|
+
/** The hero's level */
|
|
55
104
|
level: number;
|
|
56
105
|
/** Experience in total */
|
|
57
106
|
xp: number;
|
|
@@ -60,12 +109,13 @@ export interface HeroState {
|
|
|
60
109
|
}
|
|
61
110
|
/**
|
|
62
111
|
* What a player is told of a hero (`heroState`): its level, to everyone who sees it; its experience to its side, and to
|
|
63
|
-
* everyone where the rules share it (`
|
|
112
|
+
* everyone where the rules share it (`RuleSettings.hud.shareXp`); the points it has to spend and what it can learn, to its
|
|
64
113
|
* side
|
|
65
114
|
*
|
|
66
115
|
* @beta
|
|
67
116
|
*/
|
|
68
117
|
export interface HeroSent {
|
|
118
|
+
/** The hero's level, which everyone who sees the hero is told */
|
|
69
119
|
level: number;
|
|
70
120
|
/** Its experience: its side's, and everyone's where the rules share it */
|
|
71
121
|
xp?: XpInfo;
|
|
@@ -85,7 +135,7 @@ export declare const heroState: import("./components").Component<HeroState, Hero
|
|
|
85
135
|
/**
|
|
86
136
|
* What a hero has earned: none for what is no hero (`heroState`)
|
|
87
137
|
*
|
|
88
|
-
* @
|
|
138
|
+
* @public
|
|
89
139
|
*/
|
|
90
140
|
export declare const heroOf: (entity: Entity) => HeroState | undefined;
|
|
91
141
|
/**
|
|
@@ -107,6 +157,20 @@ export declare const maxLevelOf: (world: World, entity: Entity) => number;
|
|
|
107
157
|
* @beta
|
|
108
158
|
*/
|
|
109
159
|
export declare function grantXp(world: World, entity: Entity, amount: number, from?: Entity): void;
|
|
160
|
+
/**
|
|
161
|
+
* The level of a hero's innate (`HeroDef.innate`) at a level of the hero: one for each of `innateLevels` it reached,
|
|
162
|
+
* or the hero's own level where it says none; never past the ability's `maxLevel` where it says one. 0 before the first
|
|
163
|
+
*
|
|
164
|
+
* @beta
|
|
165
|
+
*/
|
|
166
|
+
export declare function innateLevel(world: World, entity: Entity, heroLevel?: number): number;
|
|
167
|
+
/**
|
|
168
|
+
* Gives a hero its innate (`HeroDef.innate`) where it has it not, at the level its own level says (`innateLevel`): as it
|
|
169
|
+
* is made, as it gains a level, as it takes another form. It costs no point, and is none of those it learns
|
|
170
|
+
*
|
|
171
|
+
* @beta
|
|
172
|
+
*/
|
|
173
|
+
export declare function keepInnate(world: World, entity: Entity): void;
|
|
110
174
|
/**
|
|
111
175
|
* Puts a hero at a level as if it had got there: the points to spend, the stats that grew, the experience of that
|
|
112
176
|
* level. No message, no event and no `beforeXp`: for a hero that starts a map at that level, not one that earns it.
|
|
@@ -133,7 +197,11 @@ export declare function levelNeeded(world: World, hero: Entity, ability: string)
|
|
|
133
197
|
* @beta
|
|
134
198
|
*/
|
|
135
199
|
export declare function canLearn(world: World, hero: Entity, ability: string): boolean;
|
|
136
|
-
/**
|
|
200
|
+
/**
|
|
201
|
+
* Teaches the hero one level of an ability and spends a point on it; returns false when `canLearn` says it cannot
|
|
202
|
+
*
|
|
203
|
+
* @public
|
|
204
|
+
*/
|
|
137
205
|
export declare function learn(world: World, hero: Entity, ability: string): boolean;
|
|
138
206
|
/**
|
|
139
207
|
* Heroes a player has, fallen ones included
|
|
@@ -175,3 +243,51 @@ export declare const toldXp: import("./replication").ReplicatedEvent;
|
|
|
175
243
|
* @beta
|
|
176
244
|
*/
|
|
177
245
|
export declare function heroSummaries(world: World, player: PlayerId): HeroSummary[];
|
|
246
|
+
/**
|
|
247
|
+
* A hero shared a kill as an assist (`heroAssists`): who, of whom, who killed it, and the gold its player was paid for it
|
|
248
|
+
*
|
|
249
|
+
* @beta
|
|
250
|
+
*/
|
|
251
|
+
export declare const heroAssisted: import("./events").EventKey<{
|
|
252
|
+
hero: EntityId;
|
|
253
|
+
type: string;
|
|
254
|
+
player: PlayerId;
|
|
255
|
+
victim: EntityId;
|
|
256
|
+
killer?: EntityId;
|
|
257
|
+
gold: number;
|
|
258
|
+
}>;
|
|
259
|
+
/**
|
|
260
|
+
* A hero killed another and is on a streak of this many since it last died
|
|
261
|
+
*
|
|
262
|
+
* @beta
|
|
263
|
+
*/
|
|
264
|
+
export declare const killStreak: import("./events").EventKey<{
|
|
265
|
+
hero: EntityId;
|
|
266
|
+
type: string;
|
|
267
|
+
player: PlayerId;
|
|
268
|
+
streak: number;
|
|
269
|
+
}>;
|
|
270
|
+
/**
|
|
271
|
+
* A hero on a streak fell (`HeroSettings.shutdownGold`): whose streak of how many, and the gold its killer's player was
|
|
272
|
+
* paid on top of the kill for ending it
|
|
273
|
+
*
|
|
274
|
+
* @beta
|
|
275
|
+
*/
|
|
276
|
+
export declare const heroShutdown: import("./events").EventKey<{
|
|
277
|
+
hero: EntityId;
|
|
278
|
+
streak: number;
|
|
279
|
+
killer?: EntityId;
|
|
280
|
+
player?: PlayerId;
|
|
281
|
+
gold: number;
|
|
282
|
+
}>;
|
|
283
|
+
/**
|
|
284
|
+
* A fallen hero was bought back (`buyBack`): who, for whom, at what cost
|
|
285
|
+
*
|
|
286
|
+
* @beta
|
|
287
|
+
*/
|
|
288
|
+
export declare const boughtBack: import("./events").EventKey<{
|
|
289
|
+
hero: EntityId;
|
|
290
|
+
type: string;
|
|
291
|
+
player: PlayerId;
|
|
292
|
+
cost: Cost;
|
|
293
|
+
}>;
|
package/dist/hero.js
ADDED
|
@@ -0,0 +1,432 @@
|
|
|
1
|
+
import { defineComponent, snapshotOf } from "./components.js";
|
|
2
|
+
import { refreshVitals, statsOf } from "./stats.js";
|
|
3
|
+
import { defineEngineEvent } from "./events.js";
|
|
4
|
+
import { heroLevelUp, heroRevived, xpGained } from "./engineEvents.js";
|
|
5
|
+
import { replicateEvent } from "./replication.js";
|
|
6
|
+
import { defaultCallings } from "./callings.js";
|
|
7
|
+
import { fighting, moving } from "./entity.js";
|
|
8
|
+
import { currencyOf } from "./player.js";
|
|
9
|
+
import { engineMessage } from "./messages.js";
|
|
10
|
+
import { readyAgain } from "./abilities/charges.js";
|
|
11
|
+
import { agentParamsOf } from "./navigation/agentParams.js";
|
|
12
|
+
import { productionOf } from "./systems/productionQueue.js";
|
|
13
|
+
import { learnedInForm, learnsOf } from "./formState.js";
|
|
14
|
+
//#region src/hero.ts
|
|
15
|
+
/**
|
|
16
|
+
* The id of the heroes pack (`heroesPack`): `hasPack(game, HEROES)`
|
|
17
|
+
*
|
|
18
|
+
* @beta
|
|
19
|
+
*/
|
|
20
|
+
var HEROES = "core.heroes";
|
|
21
|
+
/**
|
|
22
|
+
* What the kill of a hero is worth in the game's money, as the engine's rules have it (what assists share,
|
|
23
|
+
* `HeroSettings.assistGold`): the middle of its bounty (`UnitTypeDef.bounty`), or 100 and 25 a level
|
|
24
|
+
*
|
|
25
|
+
* @beta
|
|
26
|
+
*/
|
|
27
|
+
function heroKillWorth(victim) {
|
|
28
|
+
const bounty = victim.def.bounty;
|
|
29
|
+
if (bounty) return (bounty[0] + bounty[1]) / 2;
|
|
30
|
+
return 100 + 25 * (heroOf(victim)?.level ?? 1);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* The heroes pack's rules where a game says nothing: the classic RTS numbers
|
|
34
|
+
*
|
|
35
|
+
* @internal
|
|
36
|
+
*/
|
|
37
|
+
var defaultHeroSettings = Object.freeze({
|
|
38
|
+
maxHeroes: 3,
|
|
39
|
+
maxHeroLevel: 10,
|
|
40
|
+
xpRange: 20,
|
|
41
|
+
xpForLevel: (level) => 50 * (level - 1) * (level + 2),
|
|
42
|
+
killXp(world, dead) {
|
|
43
|
+
const hero = heroOf(dead);
|
|
44
|
+
if (hero) return 100 * hero.level;
|
|
45
|
+
if (!dead.isUnit) return 0;
|
|
46
|
+
return Math.max(Math.round(currencyOf(world.registry, dead.def.cost) / 4), 10);
|
|
47
|
+
},
|
|
48
|
+
revive(world, hero) {
|
|
49
|
+
const level = heroOf(hero)?.level ?? 1;
|
|
50
|
+
const { currency } = world.registry;
|
|
51
|
+
const paid = currencyOf(world.registry, hero.def.cost);
|
|
52
|
+
return {
|
|
53
|
+
cost: currency ? { [currency]: Math.min(Math.round(paid * (.4 + .1 * level)), 700) } : {},
|
|
54
|
+
time: Math.min((hero.def.buildTime ?? 30) * .5 + 4 * level, 110)
|
|
55
|
+
};
|
|
56
|
+
},
|
|
57
|
+
pointsForLevel: () => 1,
|
|
58
|
+
fallenFor: 8,
|
|
59
|
+
assistTime: 10,
|
|
60
|
+
assists: (_world, _victim, _killer, found) => found,
|
|
61
|
+
assistGold: (_world, victim, _killer, assists) => assists.length ? Math.round(heroKillWorth(victim) / 2 / assists.length) : 0,
|
|
62
|
+
shutdownGold: (_world, _victim, streak) => streak < 3 ? 0 : Math.min(100 + 50 * (streak - 3), 500),
|
|
63
|
+
buybackCost(world, hero) {
|
|
64
|
+
const { currency } = world.registry;
|
|
65
|
+
return currency ? { [currency]: 100 + 40 * (heroOf(hero)?.level ?? 1) } : void 0;
|
|
66
|
+
},
|
|
67
|
+
buybackCooldown: 120,
|
|
68
|
+
callings: Object.freeze(defaultCallings())
|
|
69
|
+
});
|
|
70
|
+
/** A hero's experience: what it has, what its level took and what the next takes */
|
|
71
|
+
function xpOf(world, entity, hero) {
|
|
72
|
+
return {
|
|
73
|
+
xp: Math.floor(hero.xp),
|
|
74
|
+
levelXp: world.settings.heroes.xpForLevel(hero.level),
|
|
75
|
+
nextXp: world.settings.heroes.xpForLevel(Math.min(hero.level + 1, maxLevelOf(world, entity)))
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
var sameXp = (a, b) => a === b || !!a && !!b && a.xp === b.xp && a.levelXp === b.levelXp && a.nextXp === b.nextXp;
|
|
79
|
+
/**
|
|
80
|
+
* A hero: what it has earned (`HeroState`). Set as a unit of a type that says it is one (`UnitTypeDef.hero`) is made,
|
|
81
|
+
* filed by owner (`world.index.with(heroState, player)`, `heroesOf`). What is a hero is what has it: a fallen hero stays
|
|
82
|
+
* in the world's entities, out of the world, to be brought back
|
|
83
|
+
*
|
|
84
|
+
* @beta
|
|
85
|
+
*/
|
|
86
|
+
var heroState = defineComponent({
|
|
87
|
+
id: "core.hero",
|
|
88
|
+
replicate: "everyone",
|
|
89
|
+
index: "owner",
|
|
90
|
+
snapshot(hero, entity, { world, ally }) {
|
|
91
|
+
const sent = { level: hero.level };
|
|
92
|
+
if (!entity.def.hero) return sent;
|
|
93
|
+
const shareXp = world.settings.hud.shareXp;
|
|
94
|
+
const shared = shareXp !== void 0 && (typeof shareXp === "function" ? shareXp(world, entity) : shareXp);
|
|
95
|
+
if (ally || shared) sent.xp = xpOf(world, entity, hero);
|
|
96
|
+
if (!ally) return sent;
|
|
97
|
+
sent.points = hero.points;
|
|
98
|
+
sent.learnable = learnsOf(entity).map((id) => ({
|
|
99
|
+
id,
|
|
100
|
+
level: entity.abilities.find((ability) => ability.id === id)?.level ?? 0,
|
|
101
|
+
maxLevel: world.registry.ability(id).maxLevel ?? 3,
|
|
102
|
+
needs: levelNeeded(world, entity, id),
|
|
103
|
+
available: canLearn(world, entity, id)
|
|
104
|
+
}));
|
|
105
|
+
return sent;
|
|
106
|
+
},
|
|
107
|
+
same: (a, b) => a.level === b.level && sameXp(a.xp, b.xp) && a.points === b.points && (a.learnable === b.learnable || !!a.learnable && !!b.learnable && a.learnable.length === b.learnable.length && a.learnable.every((info, i) => {
|
|
108
|
+
const other = b.learnable[i];
|
|
109
|
+
return info.id === other.id && info.level === other.level && info.maxLevel === other.maxLevel && info.needs === other.needs && info.available === other.available;
|
|
110
|
+
}))
|
|
111
|
+
});
|
|
112
|
+
/**
|
|
113
|
+
* What a hero has earned: none for what is no hero (`heroState`)
|
|
114
|
+
*
|
|
115
|
+
* @public
|
|
116
|
+
*/
|
|
117
|
+
var heroOf = (entity) => entity.get(heroState);
|
|
118
|
+
/**
|
|
119
|
+
* What a player was told of a hero in their snapshot (`heroState`): its level to everyone, its experience, points and
|
|
120
|
+
* what it can learn to its side. None for what is no hero
|
|
121
|
+
*
|
|
122
|
+
* @beta
|
|
123
|
+
*/
|
|
124
|
+
var heroOfState = (state) => snapshotOf(state, heroState);
|
|
125
|
+
/**
|
|
126
|
+
* The level a hero stops at
|
|
127
|
+
*
|
|
128
|
+
* @beta
|
|
129
|
+
*/
|
|
130
|
+
var maxLevelOf = (world, entity) => entity.def.hero?.maxLevel ?? world.settings.heroes.maxHeroLevel;
|
|
131
|
+
/**
|
|
132
|
+
* Gives a hero experience: `from` what was killed, when that is where it comes from. The `beforeXp` hook has its say
|
|
133
|
+
*
|
|
134
|
+
* @beta
|
|
135
|
+
*/
|
|
136
|
+
function grantXp(world, entity, amount, from) {
|
|
137
|
+
const hero = heroOf(entity);
|
|
138
|
+
const max = maxLevelOf(world, entity);
|
|
139
|
+
const { xpForLevel, pointsForLevel } = world.settings.heroes;
|
|
140
|
+
if (!hero || !entity.alive || hero.level >= max) return;
|
|
141
|
+
if (world.hooks.has("beforeXp")) amount = world.hooks.run("beforeXp", {
|
|
142
|
+
hero: entity,
|
|
143
|
+
from,
|
|
144
|
+
amount
|
|
145
|
+
}).amount;
|
|
146
|
+
if (amount <= 0) return;
|
|
147
|
+
hero.xp += amount;
|
|
148
|
+
while (hero.level < max && hero.xp >= xpForLevel(hero.level + 1)) {
|
|
149
|
+
hero.level++;
|
|
150
|
+
hero.points += pointsForLevel(hero.level);
|
|
151
|
+
refreshVitals(world, entity);
|
|
152
|
+
keepInnate(world, entity);
|
|
153
|
+
world.events.emit(heroLevelUp, {
|
|
154
|
+
hero: entity,
|
|
155
|
+
level: hero.level
|
|
156
|
+
});
|
|
157
|
+
world.message(entity.owner, engineMessage("heroLevel", {
|
|
158
|
+
unit: entity.def.id,
|
|
159
|
+
level: hero.level
|
|
160
|
+
}), "info");
|
|
161
|
+
}
|
|
162
|
+
if (hero.level >= max) hero.xp = xpForLevel(max);
|
|
163
|
+
world.events.emit(xpGained, {
|
|
164
|
+
hero: entity,
|
|
165
|
+
amount,
|
|
166
|
+
level: hero.level,
|
|
167
|
+
from
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* The level of a hero's innate (`HeroDef.innate`) at a level of the hero: one for each of `innateLevels` it reached,
|
|
172
|
+
* or the hero's own level where it says none; never past the ability's `maxLevel` where it says one. 0 before the first
|
|
173
|
+
*
|
|
174
|
+
* @beta
|
|
175
|
+
*/
|
|
176
|
+
function innateLevel(world, entity, heroLevel = heroOf(entity)?.level ?? 1) {
|
|
177
|
+
const def = entity.def.hero;
|
|
178
|
+
if (!def?.innate) return 0;
|
|
179
|
+
const own = def.innateLevels ? def.innateLevels.filter((at) => heroLevel >= at).length : heroLevel;
|
|
180
|
+
return Math.max(Math.min(own, world.registry.ability(def.innate).maxLevel ?? Infinity), 0);
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Gives a hero its innate (`HeroDef.innate`) where it has it not, at the level its own level says (`innateLevel`): as it
|
|
184
|
+
* is made, as it gains a level, as it takes another form. It costs no point, and is none of those it learns
|
|
185
|
+
*
|
|
186
|
+
* @beta
|
|
187
|
+
*/
|
|
188
|
+
function keepInnate(world, entity) {
|
|
189
|
+
const id = entity.def.hero?.innate;
|
|
190
|
+
if (!id || !entity.has(heroState)) return;
|
|
191
|
+
const level = innateLevel(world, entity);
|
|
192
|
+
const state = entity.abilities.find((each) => each.id === id);
|
|
193
|
+
if (!state) entity.addAbility({
|
|
194
|
+
id: world.registry.ability(id).id,
|
|
195
|
+
level,
|
|
196
|
+
cooldown: 0,
|
|
197
|
+
autocast: world.registry.ability(id).autocast ?? false
|
|
198
|
+
});
|
|
199
|
+
else if (state.level !== level) state.level = level;
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Puts a hero at a level as if it had got there: the points to spend, the stats that grew, the experience of that
|
|
203
|
+
* level. No message, no event and no `beforeXp`: for a hero that starts a map at that level, not one that earns it.
|
|
204
|
+
* Never down
|
|
205
|
+
*
|
|
206
|
+
* @beta
|
|
207
|
+
*/
|
|
208
|
+
function setHeroLevel(world, entity, level) {
|
|
209
|
+
const hero = heroOf(entity);
|
|
210
|
+
if (!hero) return;
|
|
211
|
+
const to = Math.min(Math.floor(level), maxLevelOf(world, entity));
|
|
212
|
+
if (to <= hero.level) return;
|
|
213
|
+
while (hero.level < to) {
|
|
214
|
+
hero.level++;
|
|
215
|
+
hero.points += world.settings.heroes.pointsForLevel(hero.level);
|
|
216
|
+
}
|
|
217
|
+
hero.xp = world.settings.heroes.xpForLevel(to);
|
|
218
|
+
refreshVitals(world, entity);
|
|
219
|
+
keepInnate(world, entity);
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Experience a kill is worth
|
|
223
|
+
*
|
|
224
|
+
* @beta
|
|
225
|
+
*/
|
|
226
|
+
function xpWorth(world, entity) {
|
|
227
|
+
return entity.def.xp ?? world.settings.heroes.killXp(world, entity);
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Hero level needed to put the next point into an ability
|
|
231
|
+
*
|
|
232
|
+
* @beta
|
|
233
|
+
*/
|
|
234
|
+
function levelNeeded(world, hero, ability) {
|
|
235
|
+
const def = world.registry.ability(ability);
|
|
236
|
+
const state = hero.abilities.find((a) => a.id === ability);
|
|
237
|
+
return (def.requiresLevel ?? (def.ultimate ? 6 : 1)) + (def.levelStep ?? 2) * (state?.level ?? 0);
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Whether a hero may put a point into an ability now: by points, levels and its learning, and the `canLearn` hook
|
|
241
|
+
*
|
|
242
|
+
* @beta
|
|
243
|
+
*/
|
|
244
|
+
function canLearn(world, hero, ability) {
|
|
245
|
+
const state = heroOf(hero);
|
|
246
|
+
if (!state || !hero.alive || state.points <= 0) return false;
|
|
247
|
+
if (!hero.def.hero || !learnsOf(hero).includes(ability) || !world.registry.abilities.has(ability)) return false;
|
|
248
|
+
const learned = hero.abilities.find((a) => a.id === ability);
|
|
249
|
+
if (!learned || learned.level >= (world.registry.ability(ability).maxLevel ?? 3)) return false;
|
|
250
|
+
const allowed = state.level >= levelNeeded(world, hero, ability);
|
|
251
|
+
return world.hooks.has("canLearn") ? !world.hooks.run("canLearn", {
|
|
252
|
+
hero,
|
|
253
|
+
ability,
|
|
254
|
+
cancelled: !allowed
|
|
255
|
+
}).cancelled : allowed;
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Teaches the hero one level of an ability and spends a point on it; returns false when `canLearn` says it cannot
|
|
259
|
+
*
|
|
260
|
+
* @public
|
|
261
|
+
*/
|
|
262
|
+
function learn(world, hero, ability) {
|
|
263
|
+
if (!canLearn(world, hero, ability)) return false;
|
|
264
|
+
const state = hero.abilities.find((a) => a.id === ability);
|
|
265
|
+
state.level++;
|
|
266
|
+
heroOf(hero).points--;
|
|
267
|
+
if (state.level === 1) state.autocast = world.registry.ability(ability).autocast ?? false;
|
|
268
|
+
learnedInForm(hero, ability);
|
|
269
|
+
return true;
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Heroes a player has, fallen ones included
|
|
273
|
+
*
|
|
274
|
+
* @beta
|
|
275
|
+
*/
|
|
276
|
+
function heroesOf(world, player) {
|
|
277
|
+
return [...world.index.with(heroState, player)];
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* What it costs to bring a hero back, in the game's money, and how long it takes
|
|
281
|
+
*
|
|
282
|
+
* @beta
|
|
283
|
+
*/
|
|
284
|
+
function reviveCost(world, hero) {
|
|
285
|
+
return world.settings.heroes.revive(world, hero);
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* Puts a fallen hero back into the world
|
|
289
|
+
*
|
|
290
|
+
* @beta
|
|
291
|
+
*/
|
|
292
|
+
function reviveHero(world, hero, at) {
|
|
293
|
+
if (hero.alive || !hero.has(heroState)) return;
|
|
294
|
+
const point = (hero.flying ? world.air : world.nav).closestPoint(at, 8) ?? at;
|
|
295
|
+
hero.setAlive(true);
|
|
296
|
+
hero.setInside(false);
|
|
297
|
+
hero.reviving = false;
|
|
298
|
+
hero.health = hero.maxHealth;
|
|
299
|
+
hero.mana = hero.maxMana;
|
|
300
|
+
hero.clearBuffs();
|
|
301
|
+
hero.keepOrders();
|
|
302
|
+
for (const ability of hero.abilities) readyAgain(ability);
|
|
303
|
+
hero.moveTo(point.x, point.z);
|
|
304
|
+
hero.prevPos.x = point.x;
|
|
305
|
+
hero.prevPos.z = point.z;
|
|
306
|
+
const m = hero.get(moving);
|
|
307
|
+
if (m) {
|
|
308
|
+
m.status = "idle";
|
|
309
|
+
m.anchored = false;
|
|
310
|
+
m.ghost = false;
|
|
311
|
+
delete m.phased;
|
|
312
|
+
m.finalFacing = null;
|
|
313
|
+
m.speed = statsOf(world, hero).moveSpeed;
|
|
314
|
+
world.nav.addAgent(hero.id, point, agentParamsOf(hero, m.speed));
|
|
315
|
+
}
|
|
316
|
+
if (hero.get(fighting)) Object.assign(hero.get(fighting), {
|
|
317
|
+
cooldown: 0,
|
|
318
|
+
swing: 0,
|
|
319
|
+
swingTarget: 0,
|
|
320
|
+
autoTarget: 0,
|
|
321
|
+
lastAttacker: 0,
|
|
322
|
+
guard: null,
|
|
323
|
+
passive: false
|
|
324
|
+
});
|
|
325
|
+
world.events.emit(heroRevived, hero);
|
|
326
|
+
}
|
|
327
|
+
/**
|
|
328
|
+
* A fallen hero waiting to come back: when it fell, and how long it waits, in seconds of the game
|
|
329
|
+
*
|
|
330
|
+
* @internal
|
|
331
|
+
*/
|
|
332
|
+
var respawning = defineComponent({ id: "core.respawning" });
|
|
333
|
+
/**
|
|
334
|
+
* How long until a fallen hero comes back by itself, in seconds: none for one that is not waiting
|
|
335
|
+
*
|
|
336
|
+
* @beta
|
|
337
|
+
*/
|
|
338
|
+
function respawnIn(world, hero) {
|
|
339
|
+
const waiting = hero.get(respawning);
|
|
340
|
+
return waiting && !hero.alive ? Math.max(0, waiting.since + waiting.wait - world.time) : void 0;
|
|
341
|
+
}
|
|
342
|
+
/** A hero back, to those who see it */
|
|
343
|
+
var toldRevived = replicateEvent(heroRevived, "revived", (hero, view) => view.knows(hero) ? {
|
|
344
|
+
type: "revived",
|
|
345
|
+
id: hero.id
|
|
346
|
+
} : void 0);
|
|
347
|
+
/** A hero's new level, to those who see it */
|
|
348
|
+
var toldLevelUp = replicateEvent(heroLevelUp, "levelUp", ({ hero, level }, view) => view.knows(hero) ? {
|
|
349
|
+
type: "levelUp",
|
|
350
|
+
id: hero.id,
|
|
351
|
+
level
|
|
352
|
+
} : void 0);
|
|
353
|
+
/** Experience gained: its side's alone, an enemy sees a bar move, not why */
|
|
354
|
+
var toldXp = replicateEvent(xpGained, "xp", ({ hero, amount, level }, view) => view.isAlly(hero.owner) ? {
|
|
355
|
+
type: "xp",
|
|
356
|
+
id: hero.id,
|
|
357
|
+
amount,
|
|
358
|
+
level
|
|
359
|
+
} : void 0);
|
|
360
|
+
/**
|
|
361
|
+
* A player's heroes, as their portraits show them (`PlayerState.own.heroes`): their level, health and mana, and how far
|
|
362
|
+
* a fallen one is through being brought back, at an altar or by itself
|
|
363
|
+
*
|
|
364
|
+
* @beta
|
|
365
|
+
*/
|
|
366
|
+
function heroSummaries(world, player) {
|
|
367
|
+
const reviving = /* @__PURE__ */ new Map();
|
|
368
|
+
for (const entity of world.index.ownedBy(player)) {
|
|
369
|
+
const production = productionOf(entity);
|
|
370
|
+
if (!production) continue;
|
|
371
|
+
for (const item of production.queue) if (item.kind === "revive") reviving.set(Number(item.id), item.progress / item.duration);
|
|
372
|
+
}
|
|
373
|
+
return heroesOf(world, player).map((entity) => ({
|
|
374
|
+
id: entity.id,
|
|
375
|
+
type: entity.def.id,
|
|
376
|
+
level: heroOf(entity).level,
|
|
377
|
+
alive: entity.alive,
|
|
378
|
+
health: entity.alive ? entity.health / entity.maxHealth : 0,
|
|
379
|
+
mana: entity.alive && entity.maxMana > 0 ? entity.mana / entity.maxMana : 0,
|
|
380
|
+
points: heroOf(entity).points,
|
|
381
|
+
reviving: reviving.get(entity.id) ?? respawnProgress(world, entity),
|
|
382
|
+
...respawnIn(world, entity) !== void 0 && { respawnIn: respawnIn(world, entity) },
|
|
383
|
+
reviveCost: entity.alive ? void 0 : reviveCost(world, entity).cost
|
|
384
|
+
}));
|
|
385
|
+
}
|
|
386
|
+
/** How far a fallen hero is through its wait to come back by itself, 0..1: none for one that is not waiting */
|
|
387
|
+
function respawnProgress(world, hero) {
|
|
388
|
+
const waiting = hero.get(respawning);
|
|
389
|
+
if (!waiting || hero.alive) return void 0;
|
|
390
|
+
return waiting.wait > 0 ? Math.min(1, (world.time - waiting.since) / waiting.wait) : 1;
|
|
391
|
+
}
|
|
392
|
+
/**
|
|
393
|
+
* A hero shared a kill as an assist (`heroAssists`): who, of whom, who killed it, and the gold its player was paid for it
|
|
394
|
+
*
|
|
395
|
+
* @beta
|
|
396
|
+
*/
|
|
397
|
+
var heroAssisted = defineEngineEvent({
|
|
398
|
+
id: "core.heroAssisted",
|
|
399
|
+
replicate: "everyone"
|
|
400
|
+
});
|
|
401
|
+
/**
|
|
402
|
+
* A hero killed another and is on a streak of this many since it last died
|
|
403
|
+
*
|
|
404
|
+
* @beta
|
|
405
|
+
*/
|
|
406
|
+
var killStreak = defineEngineEvent({
|
|
407
|
+
id: "core.killStreak",
|
|
408
|
+
replicate: "everyone"
|
|
409
|
+
});
|
|
410
|
+
/**
|
|
411
|
+
* A hero on a streak fell (`HeroSettings.shutdownGold`): whose streak of how many, and the gold its killer's player was
|
|
412
|
+
* paid on top of the kill for ending it
|
|
413
|
+
*
|
|
414
|
+
* @beta
|
|
415
|
+
*/
|
|
416
|
+
var heroShutdown = defineEngineEvent({
|
|
417
|
+
id: "core.shutdown",
|
|
418
|
+
replicate: "everyone"
|
|
419
|
+
});
|
|
420
|
+
/**
|
|
421
|
+
* A fallen hero was bought back (`buyBack`): who, for whom, at what cost
|
|
422
|
+
*
|
|
423
|
+
* @beta
|
|
424
|
+
*/
|
|
425
|
+
var boughtBack = defineEngineEvent({
|
|
426
|
+
id: "core.boughtBack",
|
|
427
|
+
replicate: "everyone"
|
|
428
|
+
});
|
|
429
|
+
//#endregion
|
|
430
|
+
export { HEROES, boughtBack, canLearn, defaultHeroSettings, grantXp, heroAssisted, heroKillWorth, heroOf, heroOfState, heroShutdown, heroState, heroSummaries, heroesOf, innateLevel, keepInnate, killStreak, learn, levelNeeded, maxLevelOf, respawnIn, respawning, reviveCost, reviveHero, setHeroLevel, toldLevelUp, toldRevived, toldXp, xpWorth };
|
|
431
|
+
|
|
432
|
+
//# sourceMappingURL=hero.js.map
|