@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
|
@@ -0,0 +1,345 @@
|
|
|
1
|
+
import { defineComponent } from "./components.js";
|
|
2
|
+
import { defineHook } from "./hooks.js";
|
|
3
|
+
import { valueOf } from "./abilities/amounts.js";
|
|
4
|
+
import { defineEffect, effectTargets } from "./abilities/effects.js";
|
|
5
|
+
import { id, string } from "./fields.js";
|
|
6
|
+
import { defineCommand } from "./commands.js";
|
|
7
|
+
//#region src/abilityChanges.ts
|
|
8
|
+
/**
|
|
9
|
+
* The ability changes pack's id
|
|
10
|
+
*
|
|
11
|
+
* @beta
|
|
12
|
+
*/
|
|
13
|
+
var ABILITY_CHANGES = "core.abilityChanges";
|
|
14
|
+
/**
|
|
15
|
+
* A unit's abilities given for a while (`AbilityGrant`), in the order they were given. Told to its owner
|
|
16
|
+
*
|
|
17
|
+
* @beta
|
|
18
|
+
*/
|
|
19
|
+
var abilityGrants = /* @__PURE__ */ defineComponent({
|
|
20
|
+
id: "core.abilityGrants",
|
|
21
|
+
replicate: "owner",
|
|
22
|
+
index: true,
|
|
23
|
+
refs: (saved) => ({ abilities: saved.flatMap((grant) => grant.replaced ? [grant.ability, grant.replaced.id] : [grant.ability]) }),
|
|
24
|
+
snapshot: (grants) => grants.map((grant) => ({
|
|
25
|
+
ability: grant.ability,
|
|
26
|
+
...grant.left !== void 0 && { left: Math.ceil(grant.left) },
|
|
27
|
+
...grant.uses !== void 0 && { uses: grant.uses },
|
|
28
|
+
...grant.replaced && { replaces: grant.replaced.id }
|
|
29
|
+
}))
|
|
30
|
+
});
|
|
31
|
+
/**
|
|
32
|
+
* Whose a unit made someone else's for a while was (`Converted`)
|
|
33
|
+
*
|
|
34
|
+
* @beta
|
|
35
|
+
*/
|
|
36
|
+
var converted = /* @__PURE__ */ defineComponent({
|
|
37
|
+
id: "core.converted",
|
|
38
|
+
index: true
|
|
39
|
+
});
|
|
40
|
+
/** The state of an ability as a unit is first given it */
|
|
41
|
+
var fresh = (world, ability, level) => ({
|
|
42
|
+
id: ability,
|
|
43
|
+
level,
|
|
44
|
+
cooldown: 0,
|
|
45
|
+
autocast: world.registry.ability(ability).autocast ?? false
|
|
46
|
+
});
|
|
47
|
+
/** Keeps how long a change lasts, where it does not last for good */
|
|
48
|
+
function keep(entity, grant) {
|
|
49
|
+
if (grant.left === void 0 && grant.uses === void 0 && !grant.replaced) return;
|
|
50
|
+
entity.set(abilityGrants, [...(entity.get(abilityGrants) ?? []).filter((each) => each.ability !== grant.ability), grant]);
|
|
51
|
+
}
|
|
52
|
+
/** The record of a change that lasts a while, of an ability a unit has */
|
|
53
|
+
var grantOf = (entity, ability) => entity.get(abilityGrants)?.find((grant) => grant.ability === ability);
|
|
54
|
+
/** Takes a change's record off */
|
|
55
|
+
function forget(entity, ability) {
|
|
56
|
+
const left = (entity.get(abilityGrants) ?? []).filter((grant) => grant.ability !== ability);
|
|
57
|
+
if (left.length) entity.set(abilityGrants, left);
|
|
58
|
+
else entity.remove(abilityGrants);
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Gives a unit an ability it has not (`GrantOptions`: at a level, for a while or so many casts, at a place on its card).
|
|
62
|
+
* What lasts a while needs the ability changes pack (`abilityChangesPack`) to end; for good, it does not. False where
|
|
63
|
+
* the ability is none or the unit has it already
|
|
64
|
+
*
|
|
65
|
+
* @beta
|
|
66
|
+
*/
|
|
67
|
+
function grantAbility(world, entity, ability, options = {}) {
|
|
68
|
+
if (!world.registry.abilities.has(ability) || entity.abilities.some((each) => each.id === ability)) return false;
|
|
69
|
+
const list = [...entity.abilities];
|
|
70
|
+
const slot = Math.min(Math.max(options.slot ?? list.length, 0), list.length);
|
|
71
|
+
list.splice(slot, 0, fresh(world, ability, options.level ?? 1));
|
|
72
|
+
entity.setAbilities(list);
|
|
73
|
+
keep(entity, {
|
|
74
|
+
ability,
|
|
75
|
+
...options.until !== void 0 && { left: options.until },
|
|
76
|
+
...options.uses !== void 0 && { uses: options.uses }
|
|
77
|
+
});
|
|
78
|
+
return true;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Takes an ability off a unit; what it took the place of, where it was given in place of another for a while, is back
|
|
82
|
+
* there. False where it had none
|
|
83
|
+
*
|
|
84
|
+
* @beta
|
|
85
|
+
*/
|
|
86
|
+
function removeAbility(world, entity, ability) {
|
|
87
|
+
const at = entity.abilities.findIndex((each) => each.id === ability);
|
|
88
|
+
if (at < 0) return false;
|
|
89
|
+
const grant = grantOf(entity, ability);
|
|
90
|
+
forget(entity, ability);
|
|
91
|
+
const list = [...entity.abilities];
|
|
92
|
+
if (grant?.replaced && world.registry.abilities.has(grant.replaced.id)) list[at] = grant.replaced;
|
|
93
|
+
else list.splice(at, 1);
|
|
94
|
+
entity.setAbilities(list);
|
|
95
|
+
return true;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Puts an ability in the place of another of a unit's (`from`), at its level (or `options.level`): for good, or for a
|
|
99
|
+
* while or so many casts (`until`, `uses`: then `from` is back, its cooldown having run on). A stance, an awakened
|
|
100
|
+
* ability, a weapon of a set. False where it has no `from`, the new one is none or it has it already
|
|
101
|
+
*
|
|
102
|
+
* @beta
|
|
103
|
+
*/
|
|
104
|
+
function swapAbility(world, entity, from, to, options = {}) {
|
|
105
|
+
const at = entity.abilities.findIndex((each) => each.id === from);
|
|
106
|
+
if (at < 0 || !world.registry.abilities.has(to) || entity.abilities.some((each) => each.id === to)) return false;
|
|
107
|
+
const old = entity.abilities[at];
|
|
108
|
+
const before = grantOf(entity, from);
|
|
109
|
+
forget(entity, from);
|
|
110
|
+
const list = [...entity.abilities];
|
|
111
|
+
list[at] = fresh(world, to, options.level ?? old.level);
|
|
112
|
+
entity.setAbilities(list);
|
|
113
|
+
if (options.until !== void 0 || options.uses !== void 0) keep(entity, {
|
|
114
|
+
ability: to,
|
|
115
|
+
...options.until !== void 0 && { left: options.until },
|
|
116
|
+
...options.uses !== void 0 && { uses: options.uses },
|
|
117
|
+
replaced: before?.replaced ?? old
|
|
118
|
+
});
|
|
119
|
+
else if (before?.replaced) keep(entity, {
|
|
120
|
+
...before,
|
|
121
|
+
ability: to
|
|
122
|
+
});
|
|
123
|
+
return true;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Makes an ability of a unit's into one it may become (`AbilityDef.upgrades`), for good: at its level, with its cooldown.
|
|
127
|
+
* False where it has no such ability or that is not one it may become
|
|
128
|
+
*
|
|
129
|
+
* @beta
|
|
130
|
+
*/
|
|
131
|
+
function upgradeAbility(world, entity, from, to) {
|
|
132
|
+
const state = entity.abilities.find((each) => each.id === from);
|
|
133
|
+
if (!state || !world.registry.abilities.has(from) || !world.registry.ability(from).upgrades?.includes(to)) return false;
|
|
134
|
+
const cooldown = state.cooldown;
|
|
135
|
+
if (!swapAbility(world, entity, from, to)) return false;
|
|
136
|
+
entity.abilities.find((each) => each.id === to).cooldown = cooldown;
|
|
137
|
+
return true;
|
|
138
|
+
}
|
|
139
|
+
/** What a change that lasted a while leaves as it ends: what it took the place of back, or nothing */
|
|
140
|
+
function end(world, entity, grant) {
|
|
141
|
+
if (entity.abilities.some((each) => each.id === grant.ability)) removeAbility(world, entity, grant.ability);
|
|
142
|
+
else forget(entity, grant.ability);
|
|
143
|
+
}
|
|
144
|
+
/** Which of a unit's abilities a steal takes (`EffectFields.pick`) */
|
|
145
|
+
function picked(world, victim, pick) {
|
|
146
|
+
const castable = victim.abilities.filter((state) => state.level >= 1 && world.registry.abilities.has(state.id) && world.registry.ability(state.id).target !== "passive");
|
|
147
|
+
if (pick === "first") return castable[0];
|
|
148
|
+
if (pick === "random") return castable.length ? castable[world.rng.int(0, castable.length - 1)] : void 0;
|
|
149
|
+
return castable.find((state) => world.registry.ability(state.id).ultimate);
|
|
150
|
+
}
|
|
151
|
+
var grantEffect = /* @__PURE__ */ defineEffect({
|
|
152
|
+
type: "grantAbility",
|
|
153
|
+
run: (context, effect) => {
|
|
154
|
+
const until = effect.duration === void 0 ? void 0 : valueOf(context, effect.duration);
|
|
155
|
+
for (const entity of effectTargets(context, effect, "allies")) if (entity.isUnit) grantAbility(context.world, entity, effect.ability, {
|
|
156
|
+
level: effect.atLevel ?? context.level,
|
|
157
|
+
until,
|
|
158
|
+
uses: effect.uses
|
|
159
|
+
});
|
|
160
|
+
},
|
|
161
|
+
fields: [
|
|
162
|
+
{
|
|
163
|
+
path: "ability",
|
|
164
|
+
kind: "id",
|
|
165
|
+
of: "abilities",
|
|
166
|
+
hint: "The ability given"
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
path: "atLevel",
|
|
170
|
+
kind: "integer",
|
|
171
|
+
min: 1,
|
|
172
|
+
hint: "The level it is given at: the effect’s own when left out"
|
|
173
|
+
},
|
|
174
|
+
"duration",
|
|
175
|
+
{
|
|
176
|
+
path: "uses",
|
|
177
|
+
kind: "integer",
|
|
178
|
+
min: 1,
|
|
179
|
+
hint: "Casts of it before it is gone: for good with neither this nor a duration"
|
|
180
|
+
}
|
|
181
|
+
]
|
|
182
|
+
});
|
|
183
|
+
var swapEffect = /* @__PURE__ */ defineEffect({
|
|
184
|
+
type: "swapAbility",
|
|
185
|
+
run: (context, effect) => {
|
|
186
|
+
const until = effect.duration === void 0 ? void 0 : valueOf(context, effect.duration);
|
|
187
|
+
swapAbility(context.world, context.caster, effect.from ?? context.ability.id, effect.ability, {
|
|
188
|
+
level: effect.atLevel,
|
|
189
|
+
until,
|
|
190
|
+
uses: effect.uses
|
|
191
|
+
});
|
|
192
|
+
},
|
|
193
|
+
fields: [
|
|
194
|
+
{
|
|
195
|
+
path: "ability",
|
|
196
|
+
kind: "id",
|
|
197
|
+
of: "abilities",
|
|
198
|
+
hint: "The ability that takes the other’s place"
|
|
199
|
+
},
|
|
200
|
+
{
|
|
201
|
+
path: "from",
|
|
202
|
+
kind: "id",
|
|
203
|
+
of: "abilities",
|
|
204
|
+
hint: "The caster’s ability that gives way: the one the effect belongs to when left out"
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
path: "atLevel",
|
|
208
|
+
kind: "integer",
|
|
209
|
+
min: 1,
|
|
210
|
+
hint: "The level it is given at: that of the one it takes the place of when left out"
|
|
211
|
+
},
|
|
212
|
+
"duration",
|
|
213
|
+
{
|
|
214
|
+
path: "uses",
|
|
215
|
+
kind: "integer",
|
|
216
|
+
min: 1,
|
|
217
|
+
hint: "Casts of it before the other is back: for good with neither this nor a duration"
|
|
218
|
+
}
|
|
219
|
+
]
|
|
220
|
+
});
|
|
221
|
+
var stealEffect = /* @__PURE__ */ defineEffect({
|
|
222
|
+
type: "stealAbility",
|
|
223
|
+
run: (context, effect) => {
|
|
224
|
+
const { world, caster, target, ability, level } = context;
|
|
225
|
+
if (!target?.alive || target === caster) return;
|
|
226
|
+
const stolen = picked(world, target, effect.pick ?? "ultimate");
|
|
227
|
+
if (!stolen) return;
|
|
228
|
+
const until = effect.duration === void 0 ? void 0 : valueOf(context, effect.duration);
|
|
229
|
+
swapAbility(world, caster, ability.id, stolen.id, {
|
|
230
|
+
level,
|
|
231
|
+
until,
|
|
232
|
+
uses: effect.uses ?? (until === void 0 ? 1 : void 0)
|
|
233
|
+
});
|
|
234
|
+
},
|
|
235
|
+
fields: [
|
|
236
|
+
{
|
|
237
|
+
path: "pick",
|
|
238
|
+
options: [
|
|
239
|
+
"ultimate",
|
|
240
|
+
"first",
|
|
241
|
+
"random"
|
|
242
|
+
],
|
|
243
|
+
hint: "Which of the target’s abilities it takes: its ultimate when left out"
|
|
244
|
+
},
|
|
245
|
+
"duration",
|
|
246
|
+
{
|
|
247
|
+
path: "uses",
|
|
248
|
+
kind: "integer",
|
|
249
|
+
min: 1,
|
|
250
|
+
hint: "Casts of it before it is given back: one when left out"
|
|
251
|
+
}
|
|
252
|
+
]
|
|
253
|
+
});
|
|
254
|
+
var convertEffect = /* @__PURE__ */ defineEffect({
|
|
255
|
+
type: "convert",
|
|
256
|
+
run: (context, effect) => {
|
|
257
|
+
const { world, caster } = context;
|
|
258
|
+
const until = effect.duration === void 0 ? void 0 : valueOf(context, effect.duration);
|
|
259
|
+
for (const entity of effectTargets(context, effect, "enemies")) {
|
|
260
|
+
if (!entity.isUnit || entity.def.hero || entity.owner === caster.owner) continue;
|
|
261
|
+
const was = entity.get(converted)?.owner ?? entity.owner;
|
|
262
|
+
world.setOwner(entity, caster.owner);
|
|
263
|
+
if (until !== void 0) entity.set(converted, {
|
|
264
|
+
owner: was,
|
|
265
|
+
left: until
|
|
266
|
+
});
|
|
267
|
+
else entity.remove(converted);
|
|
268
|
+
}
|
|
269
|
+
},
|
|
270
|
+
fields: ["duration"]
|
|
271
|
+
});
|
|
272
|
+
/** Changes that last a while running out, what they took the place of cooling down meanwhile; units made another's given back */
|
|
273
|
+
var changesSystem = {
|
|
274
|
+
name: "abilityChanges",
|
|
275
|
+
phase: "decide",
|
|
276
|
+
after: ["abilities"],
|
|
277
|
+
update(world, dt) {
|
|
278
|
+
for (const entity of [...world.index.with(abilityGrants)]) for (const grant of [...entity.get(abilityGrants) ?? []]) {
|
|
279
|
+
if (grant.replaced) grant.replaced.cooldown = Math.max(grant.replaced.cooldown - dt, 0);
|
|
280
|
+
if (grant.left === void 0) continue;
|
|
281
|
+
grant.left -= dt;
|
|
282
|
+
if (grant.left <= 0) end(world, entity, grant);
|
|
283
|
+
}
|
|
284
|
+
for (const entity of [...world.index.with(converted)]) {
|
|
285
|
+
const was = entity.get(converted);
|
|
286
|
+
was.left -= dt;
|
|
287
|
+
if (was.left > 0 && entity.alive) continue;
|
|
288
|
+
entity.remove(converted);
|
|
289
|
+
if (entity.alive) world.setOwner(entity, was.owner);
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
};
|
|
293
|
+
/**
|
|
294
|
+
* Makes one of a unit's abilities into one it may become (`upgradeAbility`): Viktor's augment chosen
|
|
295
|
+
*
|
|
296
|
+
* @beta
|
|
297
|
+
*/
|
|
298
|
+
var upgradeAbilityCommand = /* @__PURE__ */ defineCommand("upgradeAbility", {
|
|
299
|
+
entity: id,
|
|
300
|
+
ability: string,
|
|
301
|
+
into: string
|
|
302
|
+
}, (world, player, command) => {
|
|
303
|
+
const entity = world.get(command.entity);
|
|
304
|
+
if (entity?.alive && world.mayCommand(player, entity)) upgradeAbility(world, entity, command.ability, command.into);
|
|
305
|
+
});
|
|
306
|
+
/**
|
|
307
|
+
* Abilities changed at runtime: what a game with it (`Rules.packs`) gets. The effects `grantAbility` (an ability given,
|
|
308
|
+
* for a while or so many casts), `swapAbility` (one in the place of another on the card, and back), `stealAbility` (the
|
|
309
|
+
* target's ultimate in the place of the one cast, for one cast: Hijack) and `convert` (the target the caster's: Charm);
|
|
310
|
+
* an ability's `upgrades`, one chosen for good (the `upgradeAbility` command); what lasts a while kept in the
|
|
311
|
+
* `abilityGrants` component, told to the owner (a stolen one shown in the place of what it took). `grantAbility`,
|
|
312
|
+
* `removeAbility`, `swapAbility` and `upgradeAbility` in code
|
|
313
|
+
*
|
|
314
|
+
* @beta
|
|
315
|
+
*/
|
|
316
|
+
function abilityChangesPack() {
|
|
317
|
+
const used = defineHook({
|
|
318
|
+
hook: "afterCast",
|
|
319
|
+
id: "abilityChanges",
|
|
320
|
+
run(world, event) {
|
|
321
|
+
if (event.item) return;
|
|
322
|
+
const grant = grantOf(event.caster, event.ability.id);
|
|
323
|
+
if (grant?.uses === void 0) return;
|
|
324
|
+
grant.uses--;
|
|
325
|
+
if (grant.uses <= 0) end(world, event.caster, grant);
|
|
326
|
+
}
|
|
327
|
+
});
|
|
328
|
+
return {
|
|
329
|
+
id: ABILITY_CHANGES,
|
|
330
|
+
components: [abilityGrants, converted],
|
|
331
|
+
effects: [
|
|
332
|
+
grantEffect,
|
|
333
|
+
swapEffect,
|
|
334
|
+
stealEffect,
|
|
335
|
+
convertEffect
|
|
336
|
+
],
|
|
337
|
+
commands: [upgradeAbilityCommand],
|
|
338
|
+
systems: [changesSystem],
|
|
339
|
+
hooks: [used]
|
|
340
|
+
};
|
|
341
|
+
}
|
|
342
|
+
//#endregion
|
|
343
|
+
export { ABILITY_CHANGES, abilityChangesPack, abilityGrants, converted, grantAbility, removeAbility, swapAbility, upgradeAbility, upgradeAbilityCommand };
|
|
344
|
+
|
|
345
|
+
//# sourceMappingURL=abilityChanges.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abilityChanges.js","names":[],"sources":["../src/abilityChanges.ts"],"sourcesContent":["import { defineEffect, effectTargets } from './abilities/effects'\nimport { valueOf } from './abilities/amounts'\nimport { defineCommand } from './commands'\nimport { defineComponent } from './components'\nimport type { AbilityState, Entity, PlayerId } from './entity'\nimport { id, string } from './fields'\nimport { defineHook } from './hooks'\nimport type { GamePack } from './packs/pack'\nimport type { System } from './registry'\nimport type { World } from './world'\n\n/*\n * Abilities changed at runtime, an opt-in pack (E2E-PLAN AB16): an ability given for a while or so many casts, one\n * giving way to another in its place (a stance, an awakened ability), one taken from another unit (Sylas's Hijack), one\n * made into a better one for good (Viktor's augments), and a unit made the caster's (Charm). A game without it pays\n * nothing for these\n */\n\n/**\n * The ability changes pack's id\n *\n * @beta\n */\nexport const ABILITY_CHANGES = 'core.abilityChanges'\n\n/**\n * An ability a unit was given for a while (`grantAbility`, `swapAbility`, a stolen one): seconds `left`, casts left\n * (`uses`), and what it took the place of (`replaced`), back as it is gone\n *\n * @beta\n */\nexport interface AbilityGrant {\n\t/** The ability given */\n\tability: string\n\t/** Seconds until it is gone, where it is for a time */\n\tleft?: number\n\t/** Casts of it before it is gone, where it is for so many */\n\tuses?: number\n\t/** The ability it took the place of, as it was (its cooldown running on meanwhile): back in its place as this goes */\n\treplaced?: AbilityState\n}\n\n/**\n * What a unit's owner is told of its abilities given for a while (`AbilityGrant`): which, for how long, how many casts,\n * and in place of which\n *\n * @beta\n */\nexport interface GrantSent {\n\t/** The ability given */\n\tability: string\n\t/** Seconds until it is gone */\n\tleft?: number\n\t/** Casts of it before it is gone */\n\tuses?: number\n\t/** The ability it took the place of, by id */\n\treplaces?: string\n}\n\n/**\n * A unit's abilities given for a while (`AbilityGrant`), in the order they were given. Told to its owner\n *\n * @beta\n */\nexport const abilityGrants = /* @__PURE__ */ defineComponent<AbilityGrant[], GrantSent[]>({\n\tid: 'core.abilityGrants',\n\treplicate: 'owner',\n\tindex: true,\n\trefs: (saved) => ({ abilities: (saved as AbilityGrant[]).flatMap((grant) => (grant.replaced ? [grant.ability, grant.replaced.id] : [grant.ability])) }),\n\tsnapshot: (grants) =>\n\t\tgrants.map((grant) => ({\n\t\t\tability: grant.ability,\n\t\t\t...(grant.left !== undefined && { left: Math.ceil(grant.left) }),\n\t\t\t...(grant.uses !== undefined && { uses: grant.uses }),\n\t\t\t...(grant.replaced && { replaces: grant.replaced.id })\n\t\t}))\n})\n\n/**\n * Whose a unit made someone else's for a while (`convert` with a `duration`) was, and for how much longer\n *\n * @beta\n */\nexport interface Converted {\n\t/** Whose it was, and is again as the time is up */\n\towner: PlayerId\n\t/** Seconds left */\n\tleft: number\n}\n\n/**\n * Whose a unit made someone else's for a while was (`Converted`)\n *\n * @beta\n */\nexport const converted = /* @__PURE__ */ defineComponent<Converted>({ id: 'core.converted', index: true })\n\n/**\n * Options of a change of a unit's abilities (`grantAbility`, `swapAbility`): its level, for how long or how many casts,\n * where on the card\n *\n * @beta\n */\nexport interface GrantOptions {\n\t/** The level it is given at: 1, or that of what it takes the place of, when left out */\n\tlevel?: number\n\t/** Seconds until it is gone (and what it took the place of back): for good when left out */\n\tuntil?: number\n\t/** Casts of it before it is gone: for good when left out */\n\tuses?: number\n\t/** Where among its abilities (and so on the card) it goes: after the rest when left out */\n\tslot?: number\n}\n\n/** The state of an ability as a unit is first given it */\nconst fresh = (world: World, ability: string, level: number): AbilityState => ({\n\tid: ability,\n\tlevel,\n\tcooldown: 0,\n\tautocast: world.registry.ability(ability).autocast ?? false\n})\n\n/** Keeps how long a change lasts, where it does not last for good */\nfunction keep(entity: Entity, grant: AbilityGrant): void {\n\tif (grant.left === undefined && grant.uses === undefined && !grant.replaced) return\n\tentity.set(abilityGrants, [...(entity.get(abilityGrants) ?? []).filter((each) => each.ability !== grant.ability), grant])\n}\n\n/** The record of a change that lasts a while, of an ability a unit has */\nconst grantOf = (entity: Entity, ability: string) => entity.get(abilityGrants)?.find((grant) => grant.ability === ability)\n\n/** Takes a change's record off */\nfunction forget(entity: Entity, ability: string): void {\n\tconst left = (entity.get(abilityGrants) ?? []).filter((grant) => grant.ability !== ability)\n\tif (left.length) entity.set(abilityGrants, left)\n\telse entity.remove(abilityGrants)\n}\n\n/**\n * Gives a unit an ability it has not (`GrantOptions`: at a level, for a while or so many casts, at a place on its card).\n * What lasts a while needs the ability changes pack (`abilityChangesPack`) to end; for good, it does not. False where\n * the ability is none or the unit has it already\n *\n * @beta\n */\nexport function grantAbility(world: World, entity: Entity, ability: string, options: GrantOptions = {}): boolean {\n\tif (!world.registry.abilities.has(ability) || entity.abilities.some((each) => each.id === ability)) return false\n\tconst list = [...entity.abilities]\n\tconst slot = Math.min(Math.max(options.slot ?? list.length, 0), list.length)\n\tlist.splice(slot, 0, fresh(world, ability, options.level ?? 1))\n\tentity.setAbilities(list)\n\tkeep(entity, { ability, ...(options.until !== undefined && { left: options.until }), ...(options.uses !== undefined && { uses: options.uses }) })\n\treturn true\n}\n\n/**\n * Takes an ability off a unit; what it took the place of, where it was given in place of another for a while, is back\n * there. False where it had none\n *\n * @beta\n */\nexport function removeAbility(world: World, entity: Entity, ability: string): boolean {\n\tconst at = entity.abilities.findIndex((each) => each.id === ability)\n\tif (at < 0) return false\n\tconst grant = grantOf(entity, ability)\n\tforget(entity, ability)\n\tconst list = [...entity.abilities]\n\tif (grant?.replaced && world.registry.abilities.has(grant.replaced.id)) list[at] = grant.replaced\n\telse list.splice(at, 1)\n\tentity.setAbilities(list)\n\treturn true\n}\n\n/**\n * Puts an ability in the place of another of a unit's (`from`), at its level (or `options.level`): for good, or for a\n * while or so many casts (`until`, `uses`: then `from` is back, its cooldown having run on). A stance, an awakened\n * ability, a weapon of a set. False where it has no `from`, the new one is none or it has it already\n *\n * @beta\n */\nexport function swapAbility(world: World, entity: Entity, from: string, to: string, options: Omit<GrantOptions, 'slot'> = {}): boolean {\n\tconst at = entity.abilities.findIndex((each) => each.id === from)\n\tif (at < 0 || !world.registry.abilities.has(to) || entity.abilities.some((each) => each.id === to)) return false\n\tconst old = entity.abilities[at]\n\t// given back to what it took the place of, where it was itself in the place of another: that one in the end\n\tconst before = grantOf(entity, from)\n\tforget(entity, from)\n\tconst list = [...entity.abilities]\n\tlist[at] = fresh(world, to, options.level ?? old.level)\n\tentity.setAbilities(list)\n\tconst lasts = options.until !== undefined || options.uses !== undefined\n\tif (lasts)\n\t\tkeep(entity, {\n\t\t\tability: to,\n\t\t\t...(options.until !== undefined && { left: options.until }),\n\t\t\t...(options.uses !== undefined && { uses: options.uses }),\n\t\t\treplaced: before?.replaced ?? old\n\t\t})\n\telse if (before?.replaced) keep(entity, { ...before, ability: to })\n\treturn true\n}\n\n/**\n * Makes an ability of a unit's into one it may become (`AbilityDef.upgrades`), for good: at its level, with its cooldown.\n * False where it has no such ability or that is not one it may become\n *\n * @beta\n */\nexport function upgradeAbility(world: World, entity: Entity, from: string, to: string): boolean {\n\tconst state = entity.abilities.find((each) => each.id === from)\n\tif (!state || !world.registry.abilities.has(from) || !world.registry.ability(from).upgrades?.includes(to)) return false\n\tconst cooldown = state.cooldown\n\tif (!swapAbility(world, entity, from, to)) return false\n\tentity.abilities.find((each) => each.id === to)!.cooldown = cooldown\n\treturn true\n}\n\n/** What a change that lasted a while leaves as it ends: what it took the place of back, or nothing */\nfunction end(world: World, entity: Entity, grant: AbilityGrant): void {\n\tif (entity.abilities.some((each) => each.id === grant.ability)) removeAbility(world, entity, grant.ability)\n\telse forget(entity, grant.ability)\n}\n\n/** Which of a unit's abilities a steal takes (`EffectFields.pick`) */\nfunction picked(world: World, victim: Entity, pick: 'ultimate' | 'first' | 'random'): AbilityState | undefined {\n\tconst castable = victim.abilities.filter(\n\t\t(state) => state.level >= 1 && world.registry.abilities.has(state.id) && world.registry.ability(state.id).target !== 'passive'\n\t)\n\tif (pick === 'first') return castable[0]\n\tif (pick === 'random') return castable.length ? castable[world.rng.int(0, castable.length - 1)] : undefined\n\treturn castable.find((state) => world.registry.ability(state.id).ultimate)\n}\n\nconst grantEffect = /* @__PURE__ */ defineEffect({\n\ttype: 'grantAbility',\n\trun: (context, effect) => {\n\t\tconst until = effect.duration === undefined ? undefined : valueOf(context, effect.duration)\n\t\tfor (const entity of effectTargets(context, effect, 'allies'))\n\t\t\tif (entity.isUnit) grantAbility(context.world, entity, effect.ability, { level: effect.atLevel ?? context.level, until, uses: effect.uses })\n\t},\n\tfields: [\n\t\t{ path: 'ability', kind: 'id', of: 'abilities', hint: 'The ability given' },\n\t\t{ path: 'atLevel', kind: 'integer', min: 1, hint: 'The level it is given at: the effect’s own when left out' },\n\t\t'duration',\n\t\t{ path: 'uses', kind: 'integer', min: 1, hint: 'Casts of it before it is gone: for good with neither this nor a duration' }\n\t]\n})\n\nconst swapEffect = /* @__PURE__ */ defineEffect({\n\ttype: 'swapAbility',\n\trun: (context, effect) => {\n\t\tconst until = effect.duration === undefined ? undefined : valueOf(context, effect.duration)\n\t\tswapAbility(context.world, context.caster, effect.from ?? context.ability.id, effect.ability, { level: effect.atLevel, until, uses: effect.uses })\n\t},\n\tfields: [\n\t\t{ path: 'ability', kind: 'id', of: 'abilities', hint: 'The ability that takes the other’s place' },\n\t\t{ path: 'from', kind: 'id', of: 'abilities', hint: 'The caster’s ability that gives way: the one the effect belongs to when left out' },\n\t\t{ path: 'atLevel', kind: 'integer', min: 1, hint: 'The level it is given at: that of the one it takes the place of when left out' },\n\t\t'duration',\n\t\t{ path: 'uses', kind: 'integer', min: 1, hint: 'Casts of it before the other is back: for good with neither this nor a duration' }\n\t]\n})\n\nconst stealEffect = /* @__PURE__ */ defineEffect({\n\ttype: 'stealAbility',\n\trun: (context, effect) => {\n\t\tconst { world, caster, target, ability, level } = context\n\t\tif (!target?.alive || target === caster) return\n\t\tconst stolen = picked(world, target, effect.pick ?? 'ultimate')\n\t\tif (!stolen) return\n\t\tconst until = effect.duration === undefined ? undefined : valueOf(context, effect.duration)\n\t\tswapAbility(world, caster, ability.id, stolen.id, { level, until, uses: effect.uses ?? (until === undefined ? 1 : undefined) })\n\t},\n\tfields: [\n\t\t{ path: 'pick', options: ['ultimate', 'first', 'random'], hint: 'Which of the target’s abilities it takes: its ultimate when left out' },\n\t\t'duration',\n\t\t{ path: 'uses', kind: 'integer', min: 1, hint: 'Casts of it before it is given back: one when left out' }\n\t]\n})\n\nconst convertEffect = /* @__PURE__ */ defineEffect({\n\ttype: 'convert',\n\trun: (context, effect) => {\n\t\tconst { world, caster } = context\n\t\tconst until = effect.duration === undefined ? undefined : valueOf(context, effect.duration)\n\t\tfor (const entity of effectTargets(context, effect, 'enemies')) {\n\t\t\tif (!entity.isUnit || entity.def.hero || entity.owner === caster.owner) continue\n\t\t\tconst was = entity.get(converted)?.owner ?? entity.owner\n\t\t\tworld.setOwner(entity, caster.owner)\n\t\t\tif (until !== undefined) entity.set(converted, { owner: was, left: until })\n\t\t\telse entity.remove(converted)\n\t\t}\n\t},\n\tfields: ['duration']\n})\n\n/** Changes that last a while running out, what they took the place of cooling down meanwhile; units made another's given back */\nconst changesSystem: System = {\n\tname: 'abilityChanges',\n\tphase: 'decide',\n\tafter: ['abilities'],\n\tupdate(world, dt) {\n\t\tfor (const entity of [...world.index.with(abilityGrants)]) {\n\t\t\tfor (const grant of [...(entity.get(abilityGrants) ?? [])]) {\n\t\t\t\tif (grant.replaced) grant.replaced.cooldown = Math.max(grant.replaced.cooldown - dt, 0)\n\t\t\t\tif (grant.left === undefined) continue\n\t\t\t\tgrant.left -= dt\n\t\t\t\tif (grant.left <= 0) end(world, entity, grant)\n\t\t\t}\n\t\t}\n\t\tfor (const entity of [...world.index.with(converted)]) {\n\t\t\tconst was = entity.get(converted)!\n\t\t\twas.left -= dt\n\t\t\tif (was.left > 0 && entity.alive) continue\n\t\t\tentity.remove(converted)\n\t\t\tif (entity.alive) world.setOwner(entity, was.owner)\n\t\t}\n\t}\n}\n\n/**\n * Makes one of a unit's abilities into one it may become (`upgradeAbility`): Viktor's augment chosen\n *\n * @beta\n */\nexport const upgradeAbilityCommand = /* @__PURE__ */ defineCommand('upgradeAbility', { entity: id, ability: string, into: string }, (world, player, command) => {\n\tconst entity = world.get(command.entity)\n\tif (entity?.alive && world.mayCommand(player, entity)) upgradeAbility(world, entity, command.ability, command.into)\n})\n\n/**\n * Abilities changed at runtime: what a game with it (`Rules.packs`) gets. The effects `grantAbility` (an ability given,\n * for a while or so many casts), `swapAbility` (one in the place of another on the card, and back), `stealAbility` (the\n * target's ultimate in the place of the one cast, for one cast: Hijack) and `convert` (the target the caster's: Charm);\n * an ability's `upgrades`, one chosen for good (the `upgradeAbility` command); what lasts a while kept in the\n * `abilityGrants` component, told to the owner (a stolen one shown in the place of what it took). `grantAbility`,\n * `removeAbility`, `swapAbility` and `upgradeAbility` in code\n *\n * @beta\n */\nexport function abilityChangesPack(): GamePack {\n\t// cast so many times: gone, and what it took the place of back\n\tconst used = defineHook({\n\t\thook: 'afterCast',\n\t\tid: 'abilityChanges',\n\t\trun(world, event) {\n\t\t\tif (event.item) return\n\t\t\tconst grant = grantOf(event.caster, event.ability.id)\n\t\t\tif (grant?.uses === undefined) return\n\t\t\tgrant.uses--\n\t\t\tif (grant.uses <= 0) end(world, event.caster, grant)\n\t\t}\n\t})\n\treturn {\n\t\tid: ABILITY_CHANGES,\n\t\tcomponents: [abilityGrants, converted],\n\t\teffects: [grantEffect, swapEffect, stealEffect, convertEffect],\n\t\tcommands: [upgradeAbilityCommand],\n\t\tsystems: [changesSystem],\n\t\thooks: [used]\n\t}\n}\n"],"mappings":"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"}
|
package/dist/ai/area.d.ts
CHANGED
|
@@ -41,7 +41,10 @@ export interface AreaKey<T extends AiArea> {
|
|
|
41
41
|
*
|
|
42
42
|
* @beta
|
|
43
43
|
*/
|
|
44
|
-
export declare function defineArea<T extends AiArea>(
|
|
44
|
+
export declare function defineArea<T extends AiArea>(def: {
|
|
45
|
+
id: string;
|
|
46
|
+
make: (ai: Brain) => T;
|
|
47
|
+
}): AreaKey<T>;
|
|
45
48
|
/**
|
|
46
49
|
* What a brain's areas remember, by id (`BrainMemory.areas`): each area of the kit adds its own here, as a game's own may
|
|
47
50
|
* (`declare module '@v12-engine/engine/ai' { interface AreaMemories { 'mygame.diplomacy'?: DiplomacyMemory } }`)
|
package/dist/ai/brain.d.ts
CHANGED
|
@@ -24,7 +24,7 @@ import type { ThreatMap } from './threat';
|
|
|
24
24
|
import { AiView } from './view';
|
|
25
25
|
/**
|
|
26
26
|
* What a computer player is made of, defined once (`defineBrain`) and seated as often as wanted
|
|
27
|
-
* (`world.computers.seat`). A game lists the brains it seats in `
|
|
27
|
+
* (`world.computers.seat`). A game lists the brains it seats in `Rules.brains`, so that a save that remembers a
|
|
28
28
|
* seat by its brain's id finds it again when loaded
|
|
29
29
|
*
|
|
30
30
|
* @beta
|
|
@@ -333,6 +333,8 @@ export declare class Brain implements ComputerPlayer {
|
|
|
333
333
|
private lastThink;
|
|
334
334
|
/** The last order each unit was sent, with the tick: what an order sent again for the same thing is counted against (`AiStats.churn`) */
|
|
335
335
|
private readonly lastOrders;
|
|
336
|
+
/** The tick each unit was last told to cast: an order told again after a cast between is not counted as churn */
|
|
337
|
+
private readonly castAt;
|
|
336
338
|
/**
|
|
337
339
|
* How much of a think one tick may do (`ThinkBudget`): so many modules, so many units looked at as the modules say
|
|
338
340
|
* (`budget.spent(n)`), the think going on at the next tick from where it stopped (`budget.later()`). Counted in work,
|
|
@@ -418,6 +420,7 @@ export declare class Brain implements ComputerPlayer {
|
|
|
418
420
|
get me(): PlayerState | undefined;
|
|
419
421
|
/** A module of its, by key with its shape (`MELEE_ARMY`, `moduleKey`), or by id */
|
|
420
422
|
module<M extends AiModule>(key: ModuleKey<M>): M | undefined;
|
|
423
|
+
/** Finds one of the brain's modules by id, or nothing when it has none of that id */
|
|
421
424
|
module(id: string): AiModule | undefined;
|
|
422
425
|
/**
|
|
423
426
|
* What its areas play by this think (`AiSettings`): its settings' layers worked out, a flag that is a function of the
|