@maka/maka-cli 5.127.0 → 5.129.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/bundle/typescript/package.json +8 -6
- package/bundle/typescript/src/commands/game/sideQuest/archetypes.js +24 -3
- package/bundle/typescript/src/commands/game/sideQuest/commands/cast.js +11 -5
- package/bundle/typescript/src/commands/game/sideQuest/commands/initiate.js +7 -5
- package/bundle/typescript/src/commands/game/sideQuest/commands/quality-trade.js +53 -15
- package/bundle/typescript/src/commands/game/sideQuest/commands/sheet.js +2 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/spells.js +11 -5
- package/bundle/typescript/src/commands/game/sideQuest/commands/sustain.js +6 -2
- package/bundle/typescript/src/commands/game/sideQuest/commands/thread.js +4 -2
- package/bundle/typescript/src/commands/game/sideQuest/game.js +10 -3
- package/bundle/typescript/src/commands/game/sideQuest/models/player.js +108 -38
- package/bundle/typescript/src/commands/game/sideQuest/utilities/catalog.js +5 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/sustaining.js +36 -0
- package/bundle/typescript/src/commands/profile.js +10 -2
- package/package.json +8 -6
- package/bundle/typescript/src/command.d.ts +0 -37
- package/bundle/typescript/src/command.js.map +0 -1
- package/bundle/typescript/src/commands/_index.d.ts +0 -28
- package/bundle/typescript/src/commands/_index.js.map +0 -1
- package/bundle/typescript/src/commands/aws/_index.d.ts +0 -16
- package/bundle/typescript/src/commands/aws/_index.js.map +0 -1
- package/bundle/typescript/src/commands/aws/aws.command.d.ts +0 -3
- package/bundle/typescript/src/commands/aws/aws.command.js.map +0 -1
- package/bundle/typescript/src/commands/aws/cecr.sub.cmd.d.ts +0 -1
- package/bundle/typescript/src/commands/aws/cecr.sub.cmd.js.map +0 -1
- package/bundle/typescript/src/commands/aws/chz.sub.cmd.d.ts +0 -1
- package/bundle/typescript/src/commands/aws/chz.sub.cmd.js.map +0 -1
- package/bundle/typescript/src/commands/aws/ci.sub.cmd.d.ts +0 -1
- package/bundle/typescript/src/commands/aws/ci.sub.cmd.js.map +0 -1
- package/bundle/typescript/src/commands/aws/ckp.sub.cmd.d.ts +0 -1
- package/bundle/typescript/src/commands/aws/ckp.sub.cmd.js.map +0 -1
- package/bundle/typescript/src/commands/aws/csg.sub.cmd.d.ts +0 -1
- package/bundle/typescript/src/commands/aws/csg.sub.cmd.js.map +0 -1
- package/bundle/typescript/src/commands/aws/decr.sub.cmd.d.ts +0 -1
- package/bundle/typescript/src/commands/aws/decr.sub.cmd.js.map +0 -1
- package/bundle/typescript/src/commands/aws/di.sub.cmd.d.ts +0 -1
- package/bundle/typescript/src/commands/aws/di.sub.cmd.js.map +0 -1
- package/bundle/typescript/src/commands/aws/dkp.sub.cmd.d.ts +0 -1
- package/bundle/typescript/src/commands/aws/dkp.sub.cmd.js.map +0 -1
- package/bundle/typescript/src/commands/aws/dsg.sub.cmd.d.ts +0 -1
- package/bundle/typescript/src/commands/aws/dsg.sub.cmd.js.map +0 -1
- package/bundle/typescript/src/commands/aws/lecr.sub.cmd.d.ts +0 -1
- package/bundle/typescript/src/commands/aws/lecr.sub.cmd.js.map +0 -1
- package/bundle/typescript/src/commands/aws/rbi.sub.cmd.d.ts +0 -1
- package/bundle/typescript/src/commands/aws/rbi.sub.cmd.js.map +0 -1
- package/bundle/typescript/src/commands/aws/rdn.sub.cmd.d.ts +0 -1
- package/bundle/typescript/src/commands/aws/rdn.sub.cmd.js.map +0 -1
- package/bundle/typescript/src/commands/aws/rkp.sub.cmd.d.ts +0 -1
- package/bundle/typescript/src/commands/aws/rkp.sub.cmd.js.map +0 -1
- package/bundle/typescript/src/commands/aws/sth.sub.cmd.d.ts +0 -1
- package/bundle/typescript/src/commands/aws/sth.sub.cmd.js.map +0 -1
- package/bundle/typescript/src/commands/aws/ti.sub.cmd.d.ts +0 -1
- package/bundle/typescript/src/commands/aws/ti.sub.cmd.js.map +0 -1
- package/bundle/typescript/src/commands/build/_index.d.ts +0 -2
- package/bundle/typescript/src/commands/build/_index.js.map +0 -1
- package/bundle/typescript/src/commands/build/build.d.ts +0 -3
- package/bundle/typescript/src/commands/build/build.js.map +0 -1
- package/bundle/typescript/src/commands/build/docker.sub.cmd.d.ts +0 -1
- package/bundle/typescript/src/commands/build/docker.sub.cmd.js.map +0 -1
- package/bundle/typescript/src/commands/create.d.ts +0 -1
- package/bundle/typescript/src/commands/create.js.map +0 -1
- package/bundle/typescript/src/commands/debug.d.ts +0 -1
- package/bundle/typescript/src/commands/debug.js.map +0 -1
- package/bundle/typescript/src/commands/deploy/_index.d.ts +0 -4
- package/bundle/typescript/src/commands/deploy/_index.js.map +0 -1
- package/bundle/typescript/src/commands/deploy/deploy.command.d.ts +0 -3
- package/bundle/typescript/src/commands/deploy/deploy.command.js.map +0 -1
- package/bundle/typescript/src/commands/deploy/galaxy.sub.cmd.d.ts +0 -1
- package/bundle/typescript/src/commands/deploy/galaxy.sub.cmd.js.map +0 -1
- package/bundle/typescript/src/commands/deploy/github.sub.cmd.d.ts +0 -1
- package/bundle/typescript/src/commands/deploy/github.sub.cmd.js.map +0 -1
- package/bundle/typescript/src/commands/deploy/ubuntu.sub.cmd.d.ts +0 -1
- package/bundle/typescript/src/commands/deploy/ubuntu.sub.cmd.js.map +0 -1
- package/bundle/typescript/src/commands/env/_index.d.ts +0 -3
- package/bundle/typescript/src/commands/env/_index.js.map +0 -1
- package/bundle/typescript/src/commands/env/env.command.d.ts +0 -3
- package/bundle/typescript/src/commands/env/env.command.js.map +0 -1
- package/bundle/typescript/src/commands/env/get.sub.cmd.d.ts +0 -1
- package/bundle/typescript/src/commands/env/get.sub.cmd.js.map +0 -1
- package/bundle/typescript/src/commands/env/prompt-for-env.d.ts +0 -10
- package/bundle/typescript/src/commands/env/prompt-for-env.js.map +0 -1
- package/bundle/typescript/src/commands/env/set.sub.cmd.d.ts +0 -1
- package/bundle/typescript/src/commands/env/set.sub.cmd.js.map +0 -1
- package/bundle/typescript/src/commands/game/_index.d.ts +0 -2
- package/bundle/typescript/src/commands/game/_index.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/adept-powers.d.ts +0 -71
- package/bundle/typescript/src/commands/game/sideQuest/adept-powers.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/archetypes.d.ts +0 -160
- package/bundle/typescript/src/commands/game/sideQuest/archetypes.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/aspects.d.ts +0 -68
- package/bundle/typescript/src/commands/game/sideQuest/aspects.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/augmentations.d.ts +0 -207
- package/bundle/typescript/src/commands/game/sideQuest/augmentations.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/abandon.d.ts +0 -30
- package/bundle/typescript/src/commands/game/sideQuest/commands/abandon.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/advance.d.ts +0 -26
- package/bundle/typescript/src/commands/game/sideQuest/commands/advance.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/ar.d.ts +0 -34
- package/bundle/typescript/src/commands/game/sideQuest/commands/ar.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/ask.d.ts +0 -65
- package/bundle/typescript/src/commands/game/sideQuest/commands/ask.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/assense.d.ts +0 -16
- package/bundle/typescript/src/commands/game/sideQuest/commands/assense.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/attack.d.ts +0 -42
- package/bundle/typescript/src/commands/game/sideQuest/commands/attack.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/backlog.d.ts +0 -199
- package/bundle/typescript/src/commands/game/sideQuest/commands/backlog.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/bluff.d.ts +0 -59
- package/bundle/typescript/src/commands/game/sideQuest/commands/bluff.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/brandish.d.ts +0 -21
- package/bundle/typescript/src/commands/game/sideQuest/commands/brandish.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/breach.d.ts +0 -39
- package/bundle/typescript/src/commands/game/sideQuest/commands/breach.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/buy.d.ts +0 -28
- package/bundle/typescript/src/commands/game/sideQuest/commands/buy.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/bypass-command.d.ts +0 -64
- package/bundle/typescript/src/commands/game/sideQuest/commands/bypass-command.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/call.d.ts +0 -72
- package/bundle/typescript/src/commands/game/sideQuest/commands/call.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/cast.d.ts +0 -119
- package/bundle/typescript/src/commands/game/sideQuest/commands/cast.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/catalog.d.ts +0 -6
- package/bundle/typescript/src/commands/game/sideQuest/commands/catalog.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/climb.d.ts +0 -48
- package/bundle/typescript/src/commands/game/sideQuest/commands/climb.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/command-registry.d.ts +0 -19
- package/bundle/typescript/src/commands/game/sideQuest/commands/command-registry.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/command.d.ts +0 -63
- package/bundle/typescript/src/commands/game/sideQuest/commands/command.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/companions.d.ts +0 -69
- package/bundle/typescript/src/commands/game/sideQuest/commands/companions.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/compile.d.ts +0 -65
- package/bundle/typescript/src/commands/game/sideQuest/commands/compile.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/contacts.d.ts +0 -18
- package/bundle/typescript/src/commands/game/sideQuest/commands/contacts.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/container-verbs.d.ts +0 -18
- package/bundle/typescript/src/commands/game/sideQuest/commands/container-verbs.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/cover.d.ts +0 -30
- package/bundle/typescript/src/commands/game/sideQuest/commands/cover.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/crew.d.ts +0 -46
- package/bundle/typescript/src/commands/game/sideQuest/commands/crew.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/deck.d.ts +0 -42
- package/bundle/typescript/src/commands/game/sideQuest/commands/deck.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/decompile.d.ts +0 -61
- package/bundle/typescript/src/commands/game/sideQuest/commands/decompile.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/dispel.d.ts +0 -23
- package/bundle/typescript/src/commands/game/sideQuest/commands/dispel.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/docwagon.d.ts +0 -14
- package/bundle/typescript/src/commands/game/sideQuest/commands/docwagon.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/download.d.ts +0 -46
- package/bundle/typescript/src/commands/game/sideQuest/commands/download.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/drink.d.ts +0 -14
- package/bundle/typescript/src/commands/game/sideQuest/commands/drink.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/drone.d.ts +0 -15
- package/bundle/typescript/src/commands/game/sideQuest/commands/drone.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/drop.d.ts +0 -7
- package/bundle/typescript/src/commands/game/sideQuest/commands/drop.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/eat.d.ts +0 -14
- package/bundle/typescript/src/commands/game/sideQuest/commands/eat.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/edge.d.ts +0 -13
- package/bundle/typescript/src/commands/game/sideQuest/commands/edge.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/emote.d.ts +0 -17
- package/bundle/typescript/src/commands/game/sideQuest/commands/emote.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/end-call.d.ts +0 -6
- package/bundle/typescript/src/commands/game/sideQuest/commands/end-call.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/enter-host.d.ts +0 -59
- package/bundle/typescript/src/commands/game/sideQuest/commands/enter-host.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/equip.d.ts +0 -11
- package/bundle/typescript/src/commands/game/sideQuest/commands/equip.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/equipment.d.ts +0 -23
- package/bundle/typescript/src/commands/game/sideQuest/commands/equipment.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/fit.d.ts +0 -29
- package/bundle/typescript/src/commands/game/sideQuest/commands/fit.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/follow.d.ts +0 -37
- package/bundle/typescript/src/commands/game/sideQuest/commands/follow.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/garage.d.ts +0 -15
- package/bundle/typescript/src/commands/game/sideQuest/commands/garage.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/give.d.ts +0 -7
- package/bundle/typescript/src/commands/game/sideQuest/commands/give.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/go.d.ts +0 -88
- package/bundle/typescript/src/commands/game/sideQuest/commands/go.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/grapple.d.ts +0 -38
- package/bundle/typescript/src/commands/game/sideQuest/commands/grapple.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/hack.d.ts +0 -103
- package/bundle/typescript/src/commands/game/sideQuest/commands/hack.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/haggle.d.ts +0 -16
- package/bundle/typescript/src/commands/game/sideQuest/commands/haggle.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/heal.d.ts +0 -53
- package/bundle/typescript/src/commands/game/sideQuest/commands/heal.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/hints.d.ts +0 -10
- package/bundle/typescript/src/commands/game/sideQuest/commands/hints.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/hop.d.ts +0 -16
- package/bundle/typescript/src/commands/game/sideQuest/commands/hop.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/initiate.d.ts +0 -8
- package/bundle/typescript/src/commands/game/sideQuest/commands/initiate.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/install.d.ts +0 -21
- package/bundle/typescript/src/commands/game/sideQuest/commands/install.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/inv.d.ts +0 -6
- package/bundle/typescript/src/commands/game/sideQuest/commands/inv.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/jack.d.ts +0 -36
- package/bundle/typescript/src/commands/game/sideQuest/commands/jack.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/jackpoint.d.ts +0 -24
- package/bundle/typescript/src/commands/game/sideQuest/commands/jackpoint.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/job-offer.d.ts +0 -38
- package/bundle/typescript/src/commands/game/sideQuest/commands/job-offer.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/jobs.d.ts +0 -12
- package/bundle/typescript/src/commands/game/sideQuest/commands/jobs.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/journal.d.ts +0 -44
- package/bundle/typescript/src/commands/game/sideQuest/commands/journal.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/jump.d.ts +0 -16
- package/bundle/typescript/src/commands/game/sideQuest/commands/jump.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/kill.d.ts +0 -13
- package/bundle/typescript/src/commands/game/sideQuest/commands/kill.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/lead.d.ts +0 -40
- package/bundle/typescript/src/commands/game/sideQuest/commands/lead.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/lifestyle.d.ts +0 -23
- package/bundle/typescript/src/commands/game/sideQuest/commands/lifestyle.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/lock.d.ts +0 -8
- package/bundle/typescript/src/commands/game/sideQuest/commands/lock.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/look.d.ts +0 -62
- package/bundle/typescript/src/commands/game/sideQuest/commands/look.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/loot.d.ts +0 -21
- package/bundle/typescript/src/commands/game/sideQuest/commands/loot.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/map.d.ts +0 -26
- package/bundle/typescript/src/commands/game/sideQuest/commands/map.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/mark.d.ts +0 -27
- package/bundle/typescript/src/commands/game/sideQuest/commands/mark.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/message.d.ts +0 -44
- package/bundle/typescript/src/commands/game/sideQuest/commands/message.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/move.d.ts +0 -194
- package/bundle/typescript/src/commands/game/sideQuest/commands/move.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/note.d.ts +0 -99
- package/bundle/typescript/src/commands/game/sideQuest/commands/note.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/order.d.ts +0 -19
- package/bundle/typescript/src/commands/game/sideQuest/commands/order.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/overwatch.d.ts +0 -14
- package/bundle/typescript/src/commands/game/sideQuest/commands/overwatch.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/palm.d.ts +0 -16
- package/bundle/typescript/src/commands/game/sideQuest/commands/palm.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/pan.d.ts +0 -12
- package/bundle/typescript/src/commands/game/sideQuest/commands/pan.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/pay.d.ts +0 -13
- package/bundle/typescript/src/commands/game/sideQuest/commands/pay.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/perform.d.ts +0 -13
- package/bundle/typescript/src/commands/game/sideQuest/commands/perform.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/persuade.d.ts +0 -18
- package/bundle/typescript/src/commands/game/sideQuest/commands/persuade.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/pick.d.ts +0 -43
- package/bundle/typescript/src/commands/game/sideQuest/commands/pick.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/players.d.ts +0 -12
- package/bundle/typescript/src/commands/game/sideQuest/commands/players.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/posture.d.ts +0 -45
- package/bundle/typescript/src/commands/game/sideQuest/commands/posture.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/project.d.ts +0 -19
- package/bundle/typescript/src/commands/game/sideQuest/commands/project.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/quality-trade.d.ts +0 -21
- package/bundle/typescript/src/commands/game/sideQuest/commands/quality-trade.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/read.d.ts +0 -6
- package/bundle/typescript/src/commands/game/sideQuest/commands/read.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/reboot.d.ts +0 -12
- package/bundle/typescript/src/commands/game/sideQuest/commands/reboot.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/register.d.ts +0 -29
- package/bundle/typescript/src/commands/game/sideQuest/commands/register.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/reload.d.ts +0 -14
- package/bundle/typescript/src/commands/game/sideQuest/commands/reload.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/rest.d.ts +0 -15
- package/bundle/typescript/src/commands/game/sideQuest/commands/rest.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/review.d.ts +0 -39
- package/bundle/typescript/src/commands/game/sideQuest/commands/review.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/roles.d.ts +0 -34
- package/bundle/typescript/src/commands/game/sideQuest/commands/roles.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/say.d.ts +0 -30
- package/bundle/typescript/src/commands/game/sideQuest/commands/say.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/search.d.ts +0 -6
- package/bundle/typescript/src/commands/game/sideQuest/commands/search.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/sell.d.ts +0 -17
- package/bundle/typescript/src/commands/game/sideQuest/commands/sell.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/sheet.d.ts +0 -24
- package/bundle/typescript/src/commands/game/sideQuest/commands/sheet.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/silent.d.ts +0 -28
- package/bundle/typescript/src/commands/game/sideQuest/commands/silent.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/sin.d.ts +0 -21
- package/bundle/typescript/src/commands/game/sideQuest/commands/sin.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/sneak.d.ts +0 -15
- package/bundle/typescript/src/commands/game/sideQuest/commands/sneak.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/snoop.d.ts +0 -16
- package/bundle/typescript/src/commands/game/sideQuest/commands/snoop.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/source.d.ts +0 -11
- package/bundle/typescript/src/commands/game/sideQuest/commands/source.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/spells.d.ts +0 -14
- package/bundle/typescript/src/commands/game/sideQuest/commands/spells.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/sprites.d.ts +0 -35
- package/bundle/typescript/src/commands/game/sideQuest/commands/sprites.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/stance.d.ts +0 -22
- package/bundle/typescript/src/commands/game/sideQuest/commands/stance.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/standby.d.ts +0 -40
- package/bundle/typescript/src/commands/game/sideQuest/commands/standby.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/store.d.ts +0 -7
- package/bundle/typescript/src/commands/game/sideQuest/commands/store.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/subdue.d.ts +0 -21
- package/bundle/typescript/src/commands/game/sideQuest/commands/subdue.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/summon.d.ts +0 -19
- package/bundle/typescript/src/commands/game/sideQuest/commands/summon.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/surrender.d.ts +0 -20
- package/bundle/typescript/src/commands/game/sideQuest/commands/surrender.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/sustain.d.ts +0 -60
- package/bundle/typescript/src/commands/game/sideQuest/commands/sustain.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/take.d.ts +0 -17
- package/bundle/typescript/src/commands/game/sideQuest/commands/take.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/talk.d.ts +0 -56
- package/bundle/typescript/src/commands/game/sideQuest/commands/talk.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/tap.d.ts +0 -52
- package/bundle/typescript/src/commands/game/sideQuest/commands/tap.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/thread.d.ts +0 -89
- package/bundle/typescript/src/commands/game/sideQuest/commands/thread.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/time.d.ts +0 -20
- package/bundle/typescript/src/commands/game/sideQuest/commands/time.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/treat.d.ts +0 -14
- package/bundle/typescript/src/commands/game/sideQuest/commands/treat.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/unequip.d.ts +0 -6
- package/bundle/typescript/src/commands/game/sideQuest/commands/unequip.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/unlock.d.ts +0 -7
- package/bundle/typescript/src/commands/game/sideQuest/commands/unlock.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/unravel.d.ts +0 -57
- package/bundle/typescript/src/commands/game/sideQuest/commands/unravel.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/use.d.ts +0 -83
- package/bundle/typescript/src/commands/game/sideQuest/commands/use.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/work.d.ts +0 -15
- package/bundle/typescript/src/commands/game/sideQuest/commands/work.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/engine-version.d.ts +0 -19
- package/bundle/typescript/src/commands/game/sideQuest/engine-version.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/chargen-factory.d.ts +0 -170
- package/bundle/typescript/src/commands/game/sideQuest/factories/chargen-factory.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/command-factory.d.ts +0 -9
- package/bundle/typescript/src/commands/game/sideQuest/factories/command-factory.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/item-factory.d.ts +0 -5
- package/bundle/typescript/src/commands/game/sideQuest/factories/item-factory.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/npc-factory.d.ts +0 -9
- package/bundle/typescript/src/commands/game/sideQuest/factories/npc-factory.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/npc-spread.d.ts +0 -50
- package/bundle/typescript/src/commands/game/sideQuest/factories/npc-spread.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/repro-scene.d.ts +0 -87
- package/bundle/typescript/src/commands/game/sideQuest/factories/repro-scene.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/room-factory.d.ts +0 -34
- package/bundle/typescript/src/commands/game/sideQuest/factories/room-factory.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.d.ts +0 -414
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-factory.d.ts +0 -46
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-factory.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-seed-generator.d.ts +0 -223
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-seed-generator.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/seed-migration.d.ts +0 -30
- package/bundle/typescript/src/commands/game/sideQuest/factories/seed-migration.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/game.d.ts +0 -1677
- package/bundle/typescript/src/commands/game/sideQuest/game.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/headless-harness.d.ts +0 -119
- package/bundle/typescript/src/commands/game/sideQuest/headless-harness.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/headless.d.ts +0 -102
- package/bundle/typescript/src/commands/game/sideQuest/headless.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/metamagics.d.ts +0 -32
- package/bundle/typescript/src/commands/game/sideQuest/metamagics.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/metatypes.d.ts +0 -55
- package/bundle/typescript/src/commands/game/sideQuest/metatypes.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/minigames/hack-minigame.d.ts +0 -16
- package/bundle/typescript/src/commands/game/sideQuest/minigames/hack-minigame.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/minigames/lockpick-minigame.d.ts +0 -15
- package/bundle/typescript/src/commands/game/sideQuest/minigames/lockpick-minigame.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/_index.d.ts +0 -8
- package/bundle/typescript/src/commands/game/sideQuest/models/_index.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/container.d.ts +0 -78
- package/bundle/typescript/src/commands/game/sideQuest/models/container.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/device.d.ts +0 -265
- package/bundle/typescript/src/commands/game/sideQuest/models/device.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/door.d.ts +0 -53
- package/bundle/typescript/src/commands/game/sideQuest/models/door.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/home-containers.d.ts +0 -36
- package/bundle/typescript/src/commands/game/sideQuest/models/home-containers.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/host.d.ts +0 -80
- package/bundle/typescript/src/commands/game/sideQuest/models/host.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/inventory.d.ts +0 -70
- package/bundle/typescript/src/commands/game/sideQuest/models/inventory.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/item.d.ts +0 -446
- package/bundle/typescript/src/commands/game/sideQuest/models/item.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/npc.d.ts +0 -508
- package/bundle/typescript/src/commands/game/sideQuest/models/npc.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/player.d.ts +0 -1883
- package/bundle/typescript/src/commands/game/sideQuest/models/player.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/room.d.ts +0 -489
- package/bundle/typescript/src/commands/game/sideQuest/models/room.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/scene.d.ts +0 -331
- package/bundle/typescript/src/commands/game/sideQuest/models/scene.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/qualities.d.ts +0 -224
- package/bundle/typescript/src/commands/game/sideQuest/qualities.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/resonance-actions.d.ts +0 -108
- package/bundle/typescript/src/commands/game/sideQuest/resonance-actions.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/scenes/_index.d.ts +0 -0
- package/bundle/typescript/src/commands/game/sideQuest/scenes/_index.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/skill-groups.d.ts +0 -130
- package/bundle/typescript/src/commands/game/sideQuest/skill-groups.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/skills.d.ts +0 -17
- package/bundle/typescript/src/commands/game/sideQuest/skills.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/spells.d.ts +0 -135
- package/bundle/typescript/src/commands/game/sideQuest/spells.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/sprite-powers.d.ts +0 -88
- package/bundle/typescript/src/commands/game/sideQuest/sprite-powers.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/types/enums.d.ts +0 -47
- package/bundle/typescript/src/commands/game/sideQuest/types/enums.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/types/player-equipment.d.ts +0 -59
- package/bundle/typescript/src/commands/game/sideQuest/types/player-equipment.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/types/repro.d.ts +0 -379
- package/bundle/typescript/src/commands/game/sideQuest/types/repro.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/types/save-file.d.ts +0 -478
- package/bundle/typescript/src/commands/game/sideQuest/types/save-file.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/device-seed.d.ts +0 -81
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/device-seed.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/exit-seed.d.ts +0 -8
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/exit-seed.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/item-seed.d.ts +0 -43
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/item-seed.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/legacy-puzzle-seed.d.ts +0 -63
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/legacy-puzzle-seed.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/lifestyle-seed.d.ts +0 -22
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/lifestyle-seed.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/npc-seed.d.ts +0 -7
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/npc-seed.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/player-seed.d.ts +0 -69
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/player-seed.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/room-seed.d.ts +0 -42
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/room-seed.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/scene-seed.d.ts +0 -56
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/scene-seed.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/win-condition-seed.d.ts +0 -15
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/win-condition-seed.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/types/shared/abstracts.d.ts +0 -126
- package/bundle/typescript/src/commands/game/sideQuest/types/shared/abstracts.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/types/shared/direction-enum.d.ts +0 -8
- package/bundle/typescript/src/commands/game/sideQuest/types/shared/direction-enum.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/types/shared/equipment-enum.d.ts +0 -31
- package/bundle/typescript/src/commands/game/sideQuest/types/shared/equipment-enum.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/types/shared/item-enum.d.ts +0 -74
- package/bundle/typescript/src/commands/game/sideQuest/types/shared/item-enum.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/ui.d.ts +0 -44
- package/bundle/typescript/src/commands/game/sideQuest/ui.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/affordances.d.ts +0 -55
- package/bundle/typescript/src/commands/game/sideQuest/utilities/affordances.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/alarmed-staff.d.ts +0 -116
- package/bundle/typescript/src/commands/game/sideQuest/utilities/alarmed-staff.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/ar.d.ts +0 -96
- package/bundle/typescript/src/commands/game/sideQuest/utilities/ar.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/auto-fight.d.ts +0 -69
- package/bundle/typescript/src/commands/game/sideQuest/utilities/auto-fight.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-dump.d.ts +0 -27
- package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-dump.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-review.d.ts +0 -131
- package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-review.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-vocab.d.ts +0 -100
- package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-vocab.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog.d.ts +0 -308
- package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/barrier-combat.d.ts +0 -38
- package/bundle/typescript/src/commands/game/sideQuest/utilities/barrier-combat.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/brand-mark.d.ts +0 -26
- package/bundle/typescript/src/commands/game/sideQuest/utilities/brand-mark.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/bystander.d.ts +0 -17
- package/bundle/typescript/src/commands/game/sideQuest/utilities/bystander.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/canon-lore.d.ts +0 -7
- package/bundle/typescript/src/commands/game/sideQuest/utilities/canon-lore.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/catalog-data.d.ts +0 -341
- package/bundle/typescript/src/commands/game/sideQuest/utilities/catalog-data.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/catalog.d.ts +0 -399
- package/bundle/typescript/src/commands/game/sideQuest/utilities/catalog.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/cloud-saves.d.ts +0 -272
- package/bundle/typescript/src/commands/game/sideQuest/utilities/cloud-saves.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/combat-exchange.d.ts +0 -212
- package/bundle/typescript/src/commands/game/sideQuest/utilities/combat-exchange.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/comm-style.d.ts +0 -61
- package/bundle/typescript/src/commands/game/sideQuest/utilities/comm-style.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/command-queue.d.ts +0 -19
- package/bundle/typescript/src/commands/game/sideQuest/utilities/command-queue.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/commerce.d.ts +0 -102
- package/bundle/typescript/src/commands/game/sideQuest/utilities/commerce.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/commit-ref.d.ts +0 -13
- package/bundle/typescript/src/commands/game/sideQuest/utilities/commit-ref.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/condition-report.d.ts +0 -40
- package/bundle/typescript/src/commands/game/sideQuest/utilities/condition-report.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/crash-evidence.d.ts +0 -53
- package/bundle/typescript/src/commands/game/sideQuest/utilities/crash-evidence.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/credentials.d.ts +0 -26
- package/bundle/typescript/src/commands/game/sideQuest/utilities/credentials.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/data-work.d.ts +0 -21
- package/bundle/typescript/src/commands/game/sideQuest/utilities/data-work.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/ddp-lite.d.ts +0 -75
- package/bundle/typescript/src/commands/game/sideQuest/utilities/ddp-lite.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/detach-args.d.ts +0 -66
- package/bundle/typescript/src/commands/game/sideQuest/utilities/detach-args.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/devices.d.ts +0 -23
- package/bundle/typescript/src/commands/game/sideQuest/utilities/devices.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/dice.d.ts +0 -137
- package/bundle/typescript/src/commands/game/sideQuest/utilities/dice.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/docwagon.d.ts +0 -33
- package/bundle/typescript/src/commands/game/sideQuest/utilities/docwagon.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/earshot.d.ts +0 -76
- package/bundle/typescript/src/commands/game/sideQuest/utilities/earshot.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/effects.d.ts +0 -248
- package/bundle/typescript/src/commands/game/sideQuest/utilities/effects.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/emitter.d.ts +0 -44
- package/bundle/typescript/src/commands/game/sideQuest/utilities/emitter.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/ephemeral.d.ts +0 -230
- package/bundle/typescript/src/commands/game/sideQuest/utilities/ephemeral.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/first-aid.d.ts +0 -124
- package/bundle/typescript/src/commands/game/sideQuest/utilities/first-aid.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/fuzzy-match.d.ts +0 -129
- package/bundle/typescript/src/commands/game/sideQuest/utilities/fuzzy-match.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/generation-capture.d.ts +0 -94
- package/bundle/typescript/src/commands/game/sideQuest/utilities/generation-capture.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/grapple.d.ts +0 -36
- package/bundle/typescript/src/commands/game/sideQuest/utilities/grapple.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/grid-names.d.ts +0 -63
- package/bundle/typescript/src/commands/game/sideQuest/utilities/grid-names.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/grid-reach.d.ts +0 -58
- package/bundle/typescript/src/commands/game/sideQuest/utilities/grid-reach.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/grid-view.d.ts +0 -65
- package/bundle/typescript/src/commands/game/sideQuest/utilities/grid-view.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/grids.d.ts +0 -72
- package/bundle/typescript/src/commands/game/sideQuest/utilities/grids.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/handoff.d.ts +0 -42
- package/bundle/typescript/src/commands/game/sideQuest/utilities/handoff.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/harm-note.d.ts +0 -25
- package/bundle/typescript/src/commands/game/sideQuest/utilities/harm-note.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/harm-settlement.d.ts +0 -29
- package/bundle/typescript/src/commands/game/sideQuest/utilities/harm-settlement.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/hints.d.ts +0 -8
- package/bundle/typescript/src/commands/game/sideQuest/utilities/hints.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/ic-actors.d.ts +0 -9
- package/bundle/typescript/src/commands/game/sideQuest/utilities/ic-actors.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/ic.d.ts +0 -186
- package/bundle/typescript/src/commands/game/sideQuest/utilities/ic.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/identity.d.ts +0 -62
- package/bundle/typescript/src/commands/game/sideQuest/utilities/identity.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/input-history.d.ts +0 -100
- package/bundle/typescript/src/commands/game/sideQuest/utilities/input-history.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/jackpoint.d.ts +0 -83
- package/bundle/typescript/src/commands/game/sideQuest/utilities/jackpoint.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/limits.d.ts +0 -50
- package/bundle/typescript/src/commands/game/sideQuest/utilities/limits.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/line-editor.d.ts +0 -83
- package/bundle/typescript/src/commands/game/sideQuest/utilities/line-editor.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/log-style.d.ts +0 -52
- package/bundle/typescript/src/commands/game/sideQuest/utilities/log-style.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/logger.d.ts +0 -33
- package/bundle/typescript/src/commands/game/sideQuest/utilities/logger.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/logo-mark.d.ts +0 -52
- package/bundle/typescript/src/commands/game/sideQuest/utilities/logo-mark.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/map-view.d.ts +0 -89
- package/bundle/typescript/src/commands/game/sideQuest/utilities/map-view.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/marks.d.ts +0 -60
- package/bundle/typescript/src/commands/game/sideQuest/utilities/marks.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/matrix-intrusion.d.ts +0 -121
- package/bundle/typescript/src/commands/game/sideQuest/utilities/matrix-intrusion.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/matrix-roster.d.ts +0 -62
- package/bundle/typescript/src/commands/game/sideQuest/utilities/matrix-roster.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/meet-location.d.ts +0 -37
- package/bundle/typescript/src/commands/game/sideQuest/utilities/meet-location.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/outdoors.d.ts +0 -35
- package/bundle/typescript/src/commands/game/sideQuest/utilities/outdoors.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/overwatch.d.ts +0 -34
- package/bundle/typescript/src/commands/game/sideQuest/utilities/overwatch.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/owned-drones.d.ts +0 -39
- package/bundle/typescript/src/commands/game/sideQuest/utilities/owned-drones.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/perception.d.ts +0 -76
- package/bundle/typescript/src/commands/game/sideQuest/utilities/perception.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/persistence.d.ts +0 -141
- package/bundle/typescript/src/commands/game/sideQuest/utilities/persistence.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/planes.d.ts +0 -290
- package/bundle/typescript/src/commands/game/sideQuest/utilities/planes.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/playtester.d.ts +0 -50
- package/bundle/typescript/src/commands/game/sideQuest/utilities/playtester.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/prefs.d.ts +0 -4
- package/bundle/typescript/src/commands/game/sideQuest/utilities/prefs.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/pregen-worksheet.d.ts +0 -93
- package/bundle/typescript/src/commands/game/sideQuest/utilities/pregen-worksheet.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/presence-gate.d.ts +0 -21
- package/bundle/typescript/src/commands/game/sideQuest/utilities/presence-gate.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/programs.d.ts +0 -55
- package/bundle/typescript/src/commands/game/sideQuest/utilities/programs.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/pursuit.d.ts +0 -16
- package/bundle/typescript/src/commands/game/sideQuest/utilities/pursuit.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/range.d.ts +0 -28
- package/bundle/typescript/src/commands/game/sideQuest/utilities/range.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/repro-launch.d.ts +0 -84
- package/bundle/typescript/src/commands/game/sideQuest/utilities/repro-launch.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/room-grid.d.ts +0 -305
- package/bundle/typescript/src/commands/game/sideQuest/utilities/room-grid.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/room-view.d.ts +0 -101
- package/bundle/typescript/src/commands/game/sideQuest/utilities/room-view.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/session-context.d.ts +0 -28
- package/bundle/typescript/src/commands/game/sideQuest/utilities/session-context.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/session-legs.d.ts +0 -74
- package/bundle/typescript/src/commands/game/sideQuest/utilities/session-legs.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/session-lock.d.ts +0 -18
- package/bundle/typescript/src/commands/game/sideQuest/utilities/session-lock.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/session-telemetry.d.ts +0 -25
- package/bundle/typescript/src/commands/game/sideQuest/utilities/session-telemetry.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/shared-run.d.ts +0 -451
- package/bundle/typescript/src/commands/game/sideQuest/utilities/shared-run.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/sin.d.ts +0 -124
- package/bundle/typescript/src/commands/game/sideQuest/utilities/sin.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/social.d.ts +0 -28
- package/bundle/typescript/src/commands/game/sideQuest/utilities/social.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/splash.d.ts +0 -6
- package/bundle/typescript/src/commands/game/sideQuest/utilities/splash.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/spots.d.ts +0 -679
- package/bundle/typescript/src/commands/game/sideQuest/utilities/spots.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/street-gang.d.ts +0 -17
- package/bundle/typescript/src/commands/game/sideQuest/utilities/street-gang.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/surveillance.d.ts +0 -61
- package/bundle/typescript/src/commands/game/sideQuest/utilities/surveillance.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/table-notes.d.ts +0 -30
- package/bundle/typescript/src/commands/game/sideQuest/utilities/table-notes.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/terminal-reset.d.ts +0 -17
- package/bundle/typescript/src/commands/game/sideQuest/utilities/terminal-reset.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/use-target.d.ts +0 -106
- package/bundle/typescript/src/commands/game/sideQuest/utilities/use-target.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/web-character-generator.d.ts +0 -72
- package/bundle/typescript/src/commands/game/sideQuest/utilities/web-character-generator.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/world-clock.d.ts +0 -83
- package/bundle/typescript/src/commands/game/sideQuest/utilities/world-clock.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest-backlog.sub.cmd.d.ts +0 -1
- package/bundle/typescript/src/commands/game/sideQuest-backlog.sub.cmd.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.d.ts +0 -37
- package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js.map +0 -1
- package/bundle/typescript/src/commands/generate.d.ts +0 -1
- package/bundle/typescript/src/commands/generate.js.map +0 -1
- package/bundle/typescript/src/commands/get/_index.d.ts +0 -4
- package/bundle/typescript/src/commands/get/_index.js.map +0 -1
- package/bundle/typescript/src/commands/get/get.command.d.ts +0 -3
- package/bundle/typescript/src/commands/get/get.command.js.map +0 -1
- package/bundle/typescript/src/commands/get/global.sub.cmd.d.ts +0 -1
- package/bundle/typescript/src/commands/get/global.sub.cmd.js.map +0 -1
- package/bundle/typescript/src/commands/get/local.sub.cmd.d.ts +0 -1
- package/bundle/typescript/src/commands/get/local.sub.cmd.js.map +0 -1
- package/bundle/typescript/src/commands/get/whoami.sub.cmd.d.ts +0 -1
- package/bundle/typescript/src/commands/get/whoami.sub.cmd.js.map +0 -1
- package/bundle/typescript/src/commands/help.d.ts +0 -1
- package/bundle/typescript/src/commands/help.js.map +0 -1
- package/bundle/typescript/src/commands/install.d.ts +0 -1
- package/bundle/typescript/src/commands/install.js.map +0 -1
- package/bundle/typescript/src/commands/jsdoc.d.ts +0 -1
- package/bundle/typescript/src/commands/jsdoc.js.map +0 -1
- package/bundle/typescript/src/commands/lint.d.ts +0 -1
- package/bundle/typescript/src/commands/lint.js.map +0 -1
- package/bundle/typescript/src/commands/login.d.ts +0 -1
- package/bundle/typescript/src/commands/login.js.map +0 -1
- package/bundle/typescript/src/commands/logout.d.ts +0 -1
- package/bundle/typescript/src/commands/logout.js.map +0 -1
- package/bundle/typescript/src/commands/maka.cmd.d.ts +0 -5
- package/bundle/typescript/src/commands/maka.cmd.js.map +0 -1
- package/bundle/typescript/src/commands/murder.d.ts +0 -1
- package/bundle/typescript/src/commands/murder.js.map +0 -1
- package/bundle/typescript/src/commands/profile.d.ts +0 -1
- package/bundle/typescript/src/commands/profile.js.map +0 -1
- package/bundle/typescript/src/commands/proxy.d.ts +0 -1
- package/bundle/typescript/src/commands/proxy.js.map +0 -1
- package/bundle/typescript/src/commands/register.d.ts +0 -1
- package/bundle/typescript/src/commands/register.js.map +0 -1
- package/bundle/typescript/src/commands/registry.d.ts +0 -10
- package/bundle/typescript/src/commands/registry.js.map +0 -1
- package/bundle/typescript/src/commands/remote/_index.d.ts +0 -4
- package/bundle/typescript/src/commands/remote/_index.js.map +0 -1
- package/bundle/typescript/src/commands/remote/logs.sub.cmd.d.ts +0 -1
- package/bundle/typescript/src/commands/remote/logs.sub.cmd.js.map +0 -1
- package/bundle/typescript/src/commands/remote/reconfig.sub.cmd.d.ts +0 -1
- package/bundle/typescript/src/commands/remote/reconfig.sub.cmd.js.map +0 -1
- package/bundle/typescript/src/commands/remote/remote.command.d.ts +0 -3
- package/bundle/typescript/src/commands/remote/remote.command.js.map +0 -1
- package/bundle/typescript/src/commands/remote/ssh.sub.cmd.d.ts +0 -1
- package/bundle/typescript/src/commands/remote/ssh.sub.cmd.js.map +0 -1
- package/bundle/typescript/src/commands/run/_index.d.ts +0 -2
- package/bundle/typescript/src/commands/run/_index.js.map +0 -1
- package/bundle/typescript/src/commands/run/docker.sub.cmd.d.ts +0 -1
- package/bundle/typescript/src/commands/run/docker.sub.cmd.js.map +0 -1
- package/bundle/typescript/src/commands/run/run.command.d.ts +0 -3
- package/bundle/typescript/src/commands/run/run.command.js.map +0 -1
- package/bundle/typescript/src/commands/set/_index.d.ts +0 -3
- package/bundle/typescript/src/commands/set/_index.js.map +0 -1
- package/bundle/typescript/src/commands/set/global.sub.cmd.d.ts +0 -1
- package/bundle/typescript/src/commands/set/global.sub.cmd.js.map +0 -1
- package/bundle/typescript/src/commands/set/local.sub.cmd.d.ts +0 -1
- package/bundle/typescript/src/commands/set/local.sub.cmd.js.map +0 -1
- package/bundle/typescript/src/commands/set/set.command.d.ts +0 -3
- package/bundle/typescript/src/commands/set/set.command.js.map +0 -1
- package/bundle/typescript/src/commands/ssl.d.ts +0 -1
- package/bundle/typescript/src/commands/ssl.js.map +0 -1
- package/bundle/typescript/src/commands/testCmd/_index.d.ts +0 -3
- package/bundle/typescript/src/commands/testCmd/_index.js.map +0 -1
- package/bundle/typescript/src/commands/testCmd/jest.sub.cmd.d.ts +0 -1
- package/bundle/typescript/src/commands/testCmd/jest.sub.cmd.js.map +0 -1
- package/bundle/typescript/src/commands/testCmd/mocha.sub.cmd.d.ts +0 -1
- package/bundle/typescript/src/commands/testCmd/mocha.sub.cmd.js.map +0 -1
- package/bundle/typescript/src/commands/testCmd/test.command.d.ts +0 -3
- package/bundle/typescript/src/commands/testCmd/test.command.js.map +0 -1
- package/bundle/typescript/src/commands/undo.d.ts +0 -1
- package/bundle/typescript/src/commands/undo.js.map +0 -1
- package/bundle/typescript/src/commands/uninstall.d.ts +0 -1
- package/bundle/typescript/src/commands/uninstall.js.map +0 -1
- package/bundle/typescript/src/commands/update.d.ts +0 -1
- package/bundle/typescript/src/commands/update.js.map +0 -1
- package/bundle/typescript/src/commands/version/_index.d.ts +0 -3
- package/bundle/typescript/src/commands/version/_index.js.map +0 -1
- package/bundle/typescript/src/commands/version/list.sub.cmd.d.ts +0 -1
- package/bundle/typescript/src/commands/version/list.sub.cmd.js.map +0 -1
- package/bundle/typescript/src/commands/version/use.sub.cmd.d.ts +0 -1
- package/bundle/typescript/src/commands/version/use.sub.cmd.js.map +0 -1
- package/bundle/typescript/src/commands/version/version.d.ts +0 -3
- package/bundle/typescript/src/commands/version/version.js.map +0 -1
- package/bundle/typescript/src/error.d.ts +0 -18
- package/bundle/typescript/src/error.js.map +0 -1
- package/bundle/typescript/src/exec.d.ts +0 -2
- package/bundle/typescript/src/exec.js.map +0 -1
- package/bundle/typescript/src/generator.d.ts +0 -48
- package/bundle/typescript/src/generator.js.map +0 -1
- package/bundle/typescript/src/generators/_index.d.ts +0 -18
- package/bundle/typescript/src/generators/_index.js.map +0 -1
- package/bundle/typescript/src/generators/api.d.ts +0 -1
- package/bundle/typescript/src/generators/api.js.map +0 -1
- package/bundle/typescript/src/generators/aws/_index.d.ts +0 -2
- package/bundle/typescript/src/generators/aws/_index.js.map +0 -1
- package/bundle/typescript/src/generators/aws/aws.d.ts +0 -3
- package/bundle/typescript/src/generators/aws/aws.js.map +0 -1
- package/bundle/typescript/src/generators/aws/cloudformation/_index.d.ts +0 -2
- package/bundle/typescript/src/generators/aws/cloudformation/_index.js.map +0 -1
- package/bundle/typescript/src/generators/aws/cloudformation/cloudformation.d.ts +0 -3
- package/bundle/typescript/src/generators/aws/cloudformation/cloudformation.js.map +0 -1
- package/bundle/typescript/src/generators/aws/cloudformation/create-ec2-instance.cf.gen.d.ts +0 -3
- package/bundle/typescript/src/generators/aws/cloudformation/create-ec2-instance.cf.gen.js.map +0 -1
- package/bundle/typescript/src/generators/collection.d.ts +0 -1
- package/bundle/typescript/src/generators/collection.js.map +0 -1
- package/bundle/typescript/src/generators/component.d.ts +0 -1
- package/bundle/typescript/src/generators/component.js.map +0 -1
- package/bundle/typescript/src/generators/config.d.ts +0 -1
- package/bundle/typescript/src/generators/config.js.map +0 -1
- package/bundle/typescript/src/generators/dbc.d.ts +0 -1
- package/bundle/typescript/src/generators/dbc.js.map +0 -1
- package/bundle/typescript/src/generators/dockerfile.d.ts +0 -1
- package/bundle/typescript/src/generators/dockerfile.js.map +0 -1
- package/bundle/typescript/src/generators/hook.d.ts +0 -1
- package/bundle/typescript/src/generators/hook.js.map +0 -1
- package/bundle/typescript/src/generators/kits/_index.d.ts +0 -5
- package/bundle/typescript/src/generators/kits/_index.js.map +0 -1
- package/bundle/typescript/src/generators/kits/auth/_index.d.ts +0 -4
- package/bundle/typescript/src/generators/kits/auth/_index.js.map +0 -1
- package/bundle/typescript/src/generators/kits/auth/auth.generator.d.ts +0 -3
- package/bundle/typescript/src/generators/kits/auth/auth.generator.js.map +0 -1
- package/bundle/typescript/src/generators/kits/auth/auth0-meteor.auth.gen.d.ts +0 -1
- package/bundle/typescript/src/generators/kits/auth/auth0-meteor.auth.gen.js.map +0 -1
- package/bundle/typescript/src/generators/kits/auth/basic-meteor.auth.gen.d.ts +0 -1
- package/bundle/typescript/src/generators/kits/auth/basic-meteor.auth.gen.js.map +0 -1
- package/bundle/typescript/src/generators/kits/auth/provider.auth.gen.d.ts +0 -1
- package/bundle/typescript/src/generators/kits/auth/provider.auth.gen.js.map +0 -1
- package/bundle/typescript/src/generators/kits/esri/_index.d.ts +0 -2
- package/bundle/typescript/src/generators/kits/esri/_index.js.map +0 -1
- package/bundle/typescript/src/generators/kits/esri/esri.generator.d.ts +0 -3
- package/bundle/typescript/src/generators/kits/esri/esri.generator.js.map +0 -1
- package/bundle/typescript/src/generators/kits/esri/map.esri.gen.d.ts +0 -1
- package/bundle/typescript/src/generators/kits/esri/map.esri.gen.js.map +0 -1
- package/bundle/typescript/src/generators/kits/frames/_index.d.ts +0 -1
- package/bundle/typescript/src/generators/kits/frames/_index.js.map +0 -1
- package/bundle/typescript/src/generators/kits/frames/frames.generator.d.ts +0 -3
- package/bundle/typescript/src/generators/kits/frames/frames.generator.js.map +0 -1
- package/bundle/typescript/src/generators/kits/kit.d.ts +0 -3
- package/bundle/typescript/src/generators/kits/kit.js.map +0 -1
- package/bundle/typescript/src/generators/kits/mui/_index.d.ts +0 -4
- package/bundle/typescript/src/generators/kits/mui/_index.js.map +0 -1
- package/bundle/typescript/src/generators/kits/mui/auth.mui.gen.d.ts +0 -2
- package/bundle/typescript/src/generators/kits/mui/auth.mui.gen.js.map +0 -1
- package/bundle/typescript/src/generators/kits/mui/auth0.mui.gen.d.ts +0 -2
- package/bundle/typescript/src/generators/kits/mui/auth0.mui.gen.js.map +0 -1
- package/bundle/typescript/src/generators/kits/mui/frame.mui.gen.d.ts +0 -1
- package/bundle/typescript/src/generators/kits/mui/frame.mui.gen.js.map +0 -1
- package/bundle/typescript/src/generators/kits/mui/mui.generator.d.ts +0 -3
- package/bundle/typescript/src/generators/kits/mui/mui.generator.js.map +0 -1
- package/bundle/typescript/src/generators/layout.d.ts +0 -1
- package/bundle/typescript/src/generators/layout.js.map +0 -1
- package/bundle/typescript/src/generators/maka.gen.d.ts +0 -5
- package/bundle/typescript/src/generators/maka.gen.js.map +0 -1
- package/bundle/typescript/src/generators/methods.d.ts +0 -1
- package/bundle/typescript/src/generators/methods.js.map +0 -1
- package/bundle/typescript/src/generators/package.d.ts +0 -1
- package/bundle/typescript/src/generators/package.js.map +0 -1
- package/bundle/typescript/src/generators/page.d.ts +0 -1
- package/bundle/typescript/src/generators/page.js.map +0 -1
- package/bundle/typescript/src/generators/publish.d.ts +0 -1
- package/bundle/typescript/src/generators/publish.js.map +0 -1
- package/bundle/typescript/src/generators/route.d.ts +0 -1
- package/bundle/typescript/src/generators/route.js.map +0 -1
- package/bundle/typescript/src/generators/services/_index.d.ts +0 -4
- package/bundle/typescript/src/generators/services/_index.js.map +0 -1
- package/bundle/typescript/src/generators/services/logger.d.ts +0 -1
- package/bundle/typescript/src/generators/services/logger.js.map +0 -1
- package/bundle/typescript/src/generators/services/openssl.d.ts +0 -1
- package/bundle/typescript/src/generators/services/openssl.js.map +0 -1
- package/bundle/typescript/src/generators/services/service.d.ts +0 -3
- package/bundle/typescript/src/generators/services/service.js.map +0 -1
- package/bundle/typescript/src/generators/services/translation.d.ts +0 -1
- package/bundle/typescript/src/generators/services/translation.js.map +0 -1
- package/bundle/typescript/src/maka.d.ts +0 -1
- package/bundle/typescript/src/maka.js.map +0 -1
- package/bundle/typescript/src/tool.d.ts +0 -98
- package/bundle/typescript/src/tool.js.map +0 -1
- package/bundle/typescript/src/tools/actions/actions.class.d.ts +0 -29
- package/bundle/typescript/src/tools/actions/actions.class.js.map +0 -1
- package/bundle/typescript/src/tools/ai/ai.class.d.ts +0 -173
- package/bundle/typescript/src/tools/ai/ai.class.js.map +0 -1
- package/bundle/typescript/src/tools/aws/aws.class.d.ts +0 -51
- package/bundle/typescript/src/tools/aws/aws.class.js.map +0 -1
- package/bundle/typescript/src/tools/aws/aws.interfaces.d.ts +0 -364
- package/bundle/typescript/src/tools/aws/aws.interfaces.js.map +0 -1
- package/bundle/typescript/src/tools/browser/open-browser.d.ts +0 -7
- package/bundle/typescript/src/tools/browser/open-browser.js.map +0 -1
- package/bundle/typescript/src/tools/cfg/cfg.class.d.ts +0 -42
- package/bundle/typescript/src/tools/cfg/cfg.class.js.map +0 -1
- package/bundle/typescript/src/tools/docker/docker.class.d.ts +0 -10
- package/bundle/typescript/src/tools/docker/docker.class.js.map +0 -1
- package/bundle/typescript/src/tools/docker/docker.interfaces.d.ts +0 -18
- package/bundle/typescript/src/tools/docker/docker.interfaces.js.map +0 -1
- package/bundle/typescript/src/tools/dotenvx/dotenvx.class.d.ts +0 -24
- package/bundle/typescript/src/tools/dotenvx/dotenvx.class.js.map +0 -1
- package/bundle/typescript/src/tools/fsi/fsi.class.d.ts +0 -129
- package/bundle/typescript/src/tools/fsi/fsi.class.js.map +0 -1
- package/bundle/typescript/src/tools/fsi/fsi.interfaces.d.ts +0 -194
- package/bundle/typescript/src/tools/fsi/fsi.interfaces.js.map +0 -1
- package/bundle/typescript/src/tools/guarded-file/guarded-file.class.d.ts +0 -59
- package/bundle/typescript/src/tools/guarded-file/guarded-file.class.js.map +0 -1
- package/bundle/typescript/src/tools/https/connection-error.d.ts +0 -79
- package/bundle/typescript/src/tools/https/connection-error.js.map +0 -1
- package/bundle/typescript/src/tools/https/https.class.d.ts +0 -47
- package/bundle/typescript/src/tools/https/https.class.js.map +0 -1
- package/bundle/typescript/src/tools/https/https.interface.d.ts +0 -58
- package/bundle/typescript/src/tools/https/https.interface.js.map +0 -1
- package/bundle/typescript/src/tools/https/maka-host.d.ts +0 -43
- package/bundle/typescript/src/tools/https/maka-host.js.map +0 -1
- package/bundle/typescript/src/tools/log/log.class.d.ts +0 -43
- package/bundle/typescript/src/tools/log/log.class.js.map +0 -1
- package/bundle/typescript/src/tools/log/log.interfaces.d.ts +0 -7
- package/bundle/typescript/src/tools/log/log.interfaces.js.map +0 -1
- package/bundle/typescript/src/tools/mpi/mpi.class.d.ts +0 -62
- package/bundle/typescript/src/tools/mpi/mpi.class.js.map +0 -1
- package/bundle/typescript/src/tools/mpi/sdk-runtime.d.ts +0 -10
- package/bundle/typescript/src/tools/mpi/sdk-runtime.js.map +0 -1
- package/bundle/typescript/src/tools/mpi/shared-verb.d.ts +0 -20
- package/bundle/typescript/src/tools/mpi/shared-verb.js.map +0 -1
- package/bundle/typescript/src/tools/options/options.class.d.ts +0 -11
- package/bundle/typescript/src/tools/options/options.class.js.map +0 -1
- package/bundle/typescript/src/tools/pkg/pkg.class.d.ts +0 -31
- package/bundle/typescript/src/tools/pkg/pkg.class.js.map +0 -1
- package/bundle/typescript/src/tools/progress/progress.class.d.ts +0 -12
- package/bundle/typescript/src/tools/progress/progress.class.js.map +0 -1
- package/bundle/typescript/src/tools/scaffold/scaffold.class.d.ts +0 -198
- package/bundle/typescript/src/tools/scaffold/scaffold.class.js.map +0 -1
- package/bundle/typescript/src/tools/sdk-loader/relocate.d.ts +0 -45
- package/bundle/typescript/src/tools/sdk-loader/relocate.js.map +0 -1
- package/bundle/typescript/src/tools/sdk-loader/runtime-fetch.d.ts +0 -35
- package/bundle/typescript/src/tools/sdk-loader/runtime-fetch.js.map +0 -1
- package/bundle/typescript/src/tools/sdk-loader/sdk-loader.class.d.ts +0 -33
- package/bundle/typescript/src/tools/sdk-loader/sdk-loader.class.js.map +0 -1
- package/bundle/typescript/src/tools/self-spawn/self-spawn.d.ts +0 -10
- package/bundle/typescript/src/tools/self-spawn/self-spawn.js.map +0 -1
- package/bundle/typescript/src/tools/self-update/binary-install.d.ts +0 -215
- package/bundle/typescript/src/tools/self-update/binary-install.js.map +0 -1
- package/bundle/typescript/src/tools/self-update/self-update.d.ts +0 -76
- package/bundle/typescript/src/tools/self-update/self-update.js.map +0 -1
- package/bundle/typescript/src/tools/self-update/update-maka.d.ts +0 -18
- package/bundle/typescript/src/tools/self-update/update-maka.js.map +0 -1
- package/bundle/typescript/src/tools/spawn-async/spawn-async.class.d.ts +0 -4
- package/bundle/typescript/src/tools/spawn-async/spawn-async.class.js.map +0 -1
- package/bundle/typescript/src/tools/spawn-async/spawn-async.interfaces.d.ts +0 -6
- package/bundle/typescript/src/tools/spawn-async/spawn-async.interfaces.js.map +0 -1
- package/bundle/typescript/src/tools/ssh/ssh.class.d.ts +0 -11
- package/bundle/typescript/src/tools/ssh/ssh.class.js.map +0 -1
- package/bundle/typescript/src/tools/ssh/ssh.interfaces.d.ts +0 -21
- package/bundle/typescript/src/tools/ssh/ssh.interfaces.js.map +0 -1
- package/bundle/typescript/src/tools/ssl/ssl.class.d.ts +0 -25
- package/bundle/typescript/src/tools/ssl/ssl.class.js.map +0 -1
- package/bundle/typescript/src/tools/ssl/ssl.interfaces.d.ts +0 -0
- package/bundle/typescript/src/tools/ssl/ssl.interfaces.js.map +0 -1
- package/bundle/typescript/src/tools/version/cli-version.d.ts +0 -10
- package/bundle/typescript/src/tools/version/cli-version.js.map +0 -1
|
@@ -1,1883 +0,0 @@
|
|
|
1
|
-
import { PlayerEquipment } from '../types/player-equipment.js';
|
|
2
|
-
import type { WeaponSkill } from '../utilities/catalog-data.js';
|
|
3
|
-
import type { Grid } from '../utilities/grids.js';
|
|
4
|
-
import type { Host } from './host.js';
|
|
5
|
-
import { type Aspect } from '../aspects.js';
|
|
6
|
-
import { LifestyleChoices } from '../types/seed/lifestyle-seed.js';
|
|
7
|
-
import { Logger } from '../utilities/logger.js';
|
|
8
|
-
import { AugBonusKind, IImplantWeapon } from '../augmentations.js';
|
|
9
|
-
import { Room } from './room.js';
|
|
10
|
-
import { Item } from './item.js';
|
|
11
|
-
import { Inventory } from './inventory.js';
|
|
12
|
-
import { AbstractPlayer } from '../types/shared/abstracts.js';
|
|
13
|
-
/**
|
|
14
|
-
* Shadowrun-style combat attributes, deliberately trimmed to the four that
|
|
15
|
-
* drive dice pools here: Body (soak + condition monitor size), Agility
|
|
16
|
-
* (attack pool), Reaction (defense pool), and a single flat combat skill
|
|
17
|
-
* (attack pool). Everything else a real character sheet would carry is out
|
|
18
|
-
* of scope until something actually needs it.
|
|
19
|
-
*/
|
|
20
|
-
export type FightStance = 'manual' | 'non-lethal' | 'lethal';
|
|
21
|
-
export declare const STANCE_CYCLE: FightStance[];
|
|
22
|
-
/** The old names, still accepted from saves and the stance command. */
|
|
23
|
-
export declare const STANCE_ALIASES: Record<string, FightStance>;
|
|
24
|
-
/**
|
|
25
|
-
* THE MATRIX HAS ITS OWN STANCE (mjmcee on uMQAhaAysgaKpWFkn,
|
|
26
|
-
* 2026-09-03): "I have a concept ... which leverages the combat stance
|
|
27
|
-
* in the meat world (Manual / Non-Lethal / Lethal) which I'd like to
|
|
28
|
-
* get into the matrix space. Toggling between default BF (Attack) or
|
|
29
|
-
* HotF (Sleaze) as TAB. Normal 'deck config <asdf>' still sets up the
|
|
30
|
-
* config."
|
|
31
|
-
*
|
|
32
|
-
* So Tab is PLANE-AWARE: in the meat it cycles the fight autopilot, on
|
|
33
|
-
* the Matrix it flips which of the book's two intrusion actions your
|
|
34
|
-
* next hack is. Two values, not three -- there is no "manual" here,
|
|
35
|
-
* because a Matrix intrusion is never automated; the stance picks the
|
|
36
|
-
* ACTION, it does not decide whether to act.
|
|
37
|
-
*
|
|
38
|
-
* BRUTE FORCE IS THE DEFAULT, per that directive. It reverses what the
|
|
39
|
-
* engine did before (both hack and mark defaulted to Sleaze), and it
|
|
40
|
-
* is the honest default for a stance you can see: the loud route is
|
|
41
|
-
* the one you should have to notice you are in.
|
|
42
|
-
*
|
|
43
|
-
* This is the DECK'S POSTURE, not its configuration -- "deck config"
|
|
44
|
-
* still assigns the Attack/Sleaze/DP/Firewall array (p.227), and the
|
|
45
|
-
* stance decides which of those two attributes your intrusion leans
|
|
46
|
-
* on. Both matter: a Sleaze stance on a deck configured for Attack is
|
|
47
|
-
* a quiet approach with a low ceiling.
|
|
48
|
-
*/
|
|
49
|
-
export type MatrixStance = 'attack' | 'sleaze';
|
|
50
|
-
export declare const MATRIX_STANCE_CYCLE: MatrixStance[];
|
|
51
|
-
/** What each stance is CALLED in the book -- printed everywhere the
|
|
52
|
-
* engine used to say "loud"/"quiet", so the vocabulary teaches the
|
|
53
|
-
* real action names (the whole point of uMQAhaAysgaKpWFkn). */
|
|
54
|
-
export declare const MATRIX_STANCE_ACTION: Record<MatrixStance, string>;
|
|
55
|
-
/** The words a player may type, including the engine's older ones. */
|
|
56
|
-
export declare const MATRIX_STANCE_ALIASES: Record<string, MatrixStance>;
|
|
57
|
-
export declare function normalizeMatrixStance(v: string | undefined): MatrixStance;
|
|
58
|
-
export declare function normalizeStance(v: string | undefined): FightStance;
|
|
59
|
-
export type Plane = 'meat' | 'matrix' | 'astral' | 'drone';
|
|
60
|
-
/** Meat and a jumped-in drone share the physical world. */
|
|
61
|
-
export declare function isPhysicalPlane(plane: Plane): boolean;
|
|
62
|
-
/**
|
|
63
|
-
* ARE THESE TWO STANDING ON THE SAME SIDE OF A HOST'S WALL?
|
|
64
|
-
*
|
|
65
|
-
* The companion to fileReach, and it exists for the same reason: the
|
|
66
|
-
* boundary was being asked about in more than one place and the copies
|
|
67
|
-
* disagreed. fileReach settled it for FILES; nothing settled it for
|
|
68
|
-
* ICONS, so `look` honoured insideHost while every verb that picks a
|
|
69
|
-
* target read the room's raw actor list and saw straight through the
|
|
70
|
-
* wall. A technomancer standing inside a host was told "Empty
|
|
71
|
-
* architecture -- turning geometry and nothing in it worth the trip" by
|
|
72
|
-
* one surface and offered those same two IC as spike targets by the
|
|
73
|
-
* next.
|
|
74
|
-
*
|
|
75
|
-
* CANON MAKES THE PANEL BINDING, not the target list. Inside a host you
|
|
76
|
-
* see and interact with the icons inside it and not the ones outside,
|
|
77
|
-
* and from the grid the inside is unreachable (p.246) -- and threading
|
|
78
|
-
* adds its own half of the same rule: "You can only use complex forms
|
|
79
|
-
* on icons you've spotted" (p.251). An icon the room refuses to name is
|
|
80
|
-
* an icon nobody has spotted, so targeting it was never legal.
|
|
81
|
-
*
|
|
82
|
-
* BOTH IN THE SAME ROOM IS THE PRECONDITION, and every caller has it --
|
|
83
|
-
* these are room-scoped target lists. Given that, comparing insideHost
|
|
84
|
-
* directly is the whole rule: both undefined means both are out on the
|
|
85
|
-
* open grid, both equal to the room means both are inside its
|
|
86
|
-
* architecture. There is deliberately no third state.
|
|
87
|
-
*
|
|
88
|
-
* MEAT AND ASTRAL ACTORS PASS TRIVIALLY, which is correct and not an
|
|
89
|
-
* oversight: insideHost is persona state, so a body in the room has
|
|
90
|
-
* none. The plane filters the callers already apply are what keep those
|
|
91
|
-
* actors out of a Matrix target list; this function answers one question
|
|
92
|
-
* and is not a second plane check.
|
|
93
|
-
*/
|
|
94
|
-
/**
|
|
95
|
-
* A persona's place in the Matrix (SR5 p.239, p.246): out on a grid, or
|
|
96
|
-
* inside a host it entered from one -- and never on a street. See
|
|
97
|
-
* Player.matrixPosition.
|
|
98
|
-
*/
|
|
99
|
-
export type MatrixPosition = {
|
|
100
|
-
kind: 'grid';
|
|
101
|
-
grid?: Grid;
|
|
102
|
-
} | {
|
|
103
|
-
kind: 'host';
|
|
104
|
-
host: Host;
|
|
105
|
-
from?: Grid;
|
|
106
|
-
};
|
|
107
|
-
export declare function sameHostSide(actor: Player, other: Player): boolean;
|
|
108
|
-
export type SimMode = 'cold' | 'hot';
|
|
109
|
-
/**
|
|
110
|
-
* The SR5e-condensed active skill list. Every pool that used to lean on
|
|
111
|
-
* the single generic `combatSkill` attribute now draws the SPECIFIC
|
|
112
|
-
* skill (firearms for guns, blades for melee weapons, unarmed for fists
|
|
113
|
-
* and subdual, hacking for cybercombat). Non-combat skills back their own
|
|
114
|
-
* mechanics as they land -- perception drives search rolls today; the
|
|
115
|
-
* rest are rated on the sheet and waiting for their verbs.
|
|
116
|
-
*/
|
|
117
|
-
/**
|
|
118
|
-
* The active-skill sheet, rounded out from the SR5e canon list (p.90-91,
|
|
119
|
-
* p.151) at this engine's granularity. CONDENSATIONS (canon -> here):
|
|
120
|
-
* Automatics/Longarms/Pistols/Heavy Weapons/Archery -> firearms;
|
|
121
|
-
* Gymnastics/Running/Swimming -> athletics; the Pilot family ->
|
|
122
|
-
* piloting; Summoning/Binding/Banishing -> conjuring; Impersonation
|
|
123
|
-
* rides disguise (its voice half). Every skill listed HOOKS a live
|
|
124
|
-
* system -- see the site named beside it. Canon skills acknowledged but
|
|
125
|
-
* NOT yet carried (no system to hook): Throwing Weapons, Exotic
|
|
126
|
-
* Weapons, Diving, Free-Fall, Survival, Tracking, Navigation, Animal
|
|
127
|
-
* Handling, Demolitions, Forgery, Chemistry, Armorer, the Mechanic
|
|
128
|
-
* family, Biotechnology, Cybertechnology, Arcana, Alchemy, Artificing,
|
|
129
|
-
* Ritual Spellcasting, Disenchanting, and Knowledge/Language skills.
|
|
130
|
-
* (The Resonance trio -- Compiling, Decompiling, Registering -- WAS on
|
|
131
|
-
* this not-yet-carried list; all three are now real and hooked, one per
|
|
132
|
-
* command file beside them.)
|
|
133
|
-
*/
|
|
134
|
-
export { SKILL_NAMES } from '../skills.js';
|
|
135
|
-
export type { SkillName } from '../skills.js';
|
|
136
|
-
import type { SkillName } from '../skills.js';
|
|
137
|
-
/**
|
|
138
|
-
* Skills that fall back to the legacy `combatSkill` attribute when no
|
|
139
|
-
* explicit rating is given -- this is what keeps every existing NPC seed
|
|
140
|
-
* (which only carries combatSkill) rolling exactly the pools it always
|
|
141
|
-
* has, ice included (its Matrix strikes ride `hacking`).
|
|
142
|
-
*/
|
|
143
|
-
export declare const COMBAT_SKILL_FALLBACK: ReadonlySet<SkillName>;
|
|
144
|
-
/**
|
|
145
|
-
* WHICH GUN ROLLS WHICH SKILL (SR5 p.130, p.132).
|
|
146
|
-
*
|
|
147
|
-
* Canon splits firearms three ways by the weapon in your hands, and the
|
|
148
|
-
* split is by CLASS, not by calibre:
|
|
149
|
-
* Pistols -- handheld pistols: hold-out, light, heavy, tasers,
|
|
150
|
-
* revolvers, semi-automatics (p.132)
|
|
151
|
-
* Automatics -- larger than a handheld pistol, smaller than a rifle:
|
|
152
|
-
* machine pistols, SMGs, assault rifles and automatic
|
|
153
|
-
* carbines (p.130; machine pistols are Automatics
|
|
154
|
-
* specifically, p.427)
|
|
155
|
-
* Longarms -- extended barrels braced against the shoulder:
|
|
156
|
-
* sporting and sniper rifles, and shotguns (p.132)
|
|
157
|
-
* Archery -- bows and crossbows (p.130 specializations, p.424)
|
|
158
|
-
*
|
|
159
|
-
* READ OFF THE SAME HAYSTACK Item.accuracy already classifies by, and
|
|
160
|
-
* deliberately so: two independent weapon classifiers would eventually
|
|
161
|
-
* disagree about what an Ares Alpha is, and the one that disagreed
|
|
162
|
-
* silently would be this one. The patterns are kept in the same order
|
|
163
|
-
* and the same words.
|
|
164
|
-
*
|
|
165
|
-
* ORDER MATTERS. 'machine pistol' must be tested for Automatics BEFORE
|
|
166
|
-
* the Pistols branch, or the word 'pistol' claims it -- and canon puts
|
|
167
|
-
* it in Automatics. Likewise a 'sniper rifle' must reach Longarms
|
|
168
|
-
* before 'rifle' reaches Automatics.
|
|
169
|
-
*
|
|
170
|
-
* UNRECOGNISED IRON FALLS TO PISTOLS, which is the commonest class and
|
|
171
|
-
* the one Item.accuracy also defaults to (heavy pistols). A gun the
|
|
172
|
-
* patterns have never seen rolls something rather than nothing.
|
|
173
|
-
*/
|
|
174
|
-
/**
|
|
175
|
-
* The three skills a FIREARM can exercise. Archery is not among them:
|
|
176
|
-
* it is a Combat Active skill for string-loaded weapons (p.130), and
|
|
177
|
-
* the things that key off "is this a gun" -- the smartlink bonus
|
|
178
|
-
* (p.433 firearm accessory), a drone's armed mount -- do not apply to a
|
|
179
|
-
* crossbow.
|
|
180
|
-
*/
|
|
181
|
-
export declare const FIREARM_SKILLS: SkillName[];
|
|
182
|
-
export declare function firearmSkillFor(weapon: {
|
|
183
|
-
name: string;
|
|
184
|
-
shape?: string;
|
|
185
|
-
category?: string;
|
|
186
|
-
weaponSkill?: WeaponSkill;
|
|
187
|
-
}): SkillName;
|
|
188
|
-
export interface ICombatAttributes {
|
|
189
|
-
body?: number;
|
|
190
|
-
agility?: number;
|
|
191
|
-
reaction?: number;
|
|
192
|
-
combatSkill?: number;
|
|
193
|
-
/**
|
|
194
|
-
* Per-skill ratings (1-8; see SkillName). Any skill omitted here
|
|
195
|
-
* defaults: combat skills to `combatSkill`, everything else to 0
|
|
196
|
-
* (unskilled -- rolled as the linked attribute MINUS ONE where a
|
|
197
|
-
* mechanic supports defaulting, e.g. perception on search).
|
|
198
|
-
*/
|
|
199
|
-
skills?: Partial<Record<SkillName, number>>;
|
|
200
|
-
/**
|
|
201
|
-
* Innate magical talent -- 0 (the default) is mundane, like most of the
|
|
202
|
-
* Sixth World. An Awakened actor (magic > 0) knows every spell innately
|
|
203
|
-
* and casts from this attribute instead of needing formulas; see the
|
|
204
|
-
* magic section below.
|
|
205
|
-
*/
|
|
206
|
-
magic?: number;
|
|
207
|
-
/** Melee/unarmed damage and carrying capacity. */
|
|
208
|
-
strength?: number;
|
|
209
|
-
/** Stun track size and drain resistance. */
|
|
210
|
-
willpower?: number;
|
|
211
|
-
/** First aid effectiveness; NPC hacking. */
|
|
212
|
-
logic?: number;
|
|
213
|
-
/** Defense pool (half, rounded down) and future perception checks. */
|
|
214
|
-
intuition?: number;
|
|
215
|
-
/** Social presence -- listed on the sheet now, mechanics to come. */
|
|
216
|
-
charisma?: number;
|
|
217
|
-
/** Luck: per-job pool of edge points, burned to push a strike (see edge.ts). */
|
|
218
|
-
edge?: number;
|
|
219
|
-
/**
|
|
220
|
-
* Technomancer talent -- 0 (the default) for everyone else. A resonance
|
|
221
|
-
* actor is a LIVING PERSONA: they jack into the Matrix with no deck and
|
|
222
|
-
* no commlink (their brain is the hardware), resonance boosts every
|
|
223
|
-
* Matrix pool, and ALL Matrix damage lands on their real stun track --
|
|
224
|
-
* there's no deck to brick, only a mind to burn.
|
|
225
|
-
*/
|
|
226
|
-
resonance?: number;
|
|
227
|
-
/**
|
|
228
|
-
* Physical adept: magic channeled into the body instead of spells.
|
|
229
|
-
* Counts as Awakened (auras read them, assensing works) but they cast
|
|
230
|
-
* NOTHING -- not even from formulas -- and cannot astrally project.
|
|
231
|
-
* Instead, half their magic (rounded down) is added to their meat-plane
|
|
232
|
-
* attack and defense pools: improved reflexes, killing hands.
|
|
233
|
-
*/
|
|
234
|
-
adept?: boolean;
|
|
235
|
-
/**
|
|
236
|
-
* ADEPT POWER POINTS BOUGHT WITH CREATION KARMA -- the mystic adept
|
|
237
|
-
* (SR5 p.69-70), and the field's presence is what makes one.
|
|
238
|
-
*
|
|
239
|
-
* A mystic adept is NOT "a Magic rating split between spells and
|
|
240
|
-
* powers", which is the common description and is wrong: their Magic
|
|
241
|
-
* comes off the priority column exactly as a magician's does and is
|
|
242
|
-
* never divided. It sets the spell count AND caps Power Points, which
|
|
243
|
-
* are then bought SEPARATELY at 5 karma each.
|
|
244
|
-
*
|
|
245
|
-
* WHY 5 AND NOT 2, recorded because the book contradicts itself and
|
|
246
|
-
* the next reader will find it. Core p.69-70 states 5; the worked
|
|
247
|
-
* example on p.71 spends 10 karma for 2 points; and Run Faster's Point
|
|
248
|
-
* Buy (p.64-65) independently restates "5 Karma per power point". The
|
|
249
|
-
* Final Calculations checklist at core p.102 says 2. Three statements
|
|
250
|
-
* across two separately typeset books against one summary line, and no
|
|
251
|
-
* errata resolving it in the indexed sources -- so 5, and the outlier
|
|
252
|
-
* is noted rather than hidden.
|
|
253
|
-
*
|
|
254
|
-
* A FULL ADEPT LEAVES THIS UNSET. Their points are free and equal to
|
|
255
|
-
* their Magic, which is why effectivePowerPoints below reads `magic`
|
|
256
|
-
* for them -- see the note there for why that is not a special case.
|
|
257
|
-
*/
|
|
258
|
-
powerPoints?: number;
|
|
259
|
-
/** Aspected magician (SR5 p.69): the one magical group kept -- 'sorcerer'
|
|
260
|
-
* or 'conjurer' (aspects.ts). Absent = full magician, adept, or mundane. */
|
|
261
|
-
aspect?: string;
|
|
262
|
-
/**
|
|
263
|
-
* The spells a magician/mystic adept CHOSE at creation (SR5 p.300, up to
|
|
264
|
-
* Magic x 2). Keys into the catalog's spell rows. ABSENT means "knows
|
|
265
|
-
* every spell", the pre-selection behaviour -- so an existing save with
|
|
266
|
-
* no spellbook keeps casting anything, and only a chargen that sends a
|
|
267
|
-
* list is narrowed to it. An empty list would mean a magician who chose
|
|
268
|
-
* nothing; absent is the grandfather case, and the two are kept distinct.
|
|
269
|
-
*/
|
|
270
|
-
knownSpells?: string[];
|
|
271
|
-
/**
|
|
272
|
-
* The adept powers CHOSEN at creation (SR5 p.308-310): key -> level, keys
|
|
273
|
-
* into the catalog's adept-power rows, total cost within
|
|
274
|
-
* effectivePowerPoints. ABSENT means the COMPRESSED model -- Power Points
|
|
275
|
-
* grant floor(pp/2) on every meat-plane pool, the pre-selection behaviour
|
|
276
|
-
* every existing adept keeps. Present means the powers themselves are the
|
|
277
|
-
* effects and the compressed bonus does not apply.
|
|
278
|
-
*/
|
|
279
|
-
adeptPowers?: Record<string, number>;
|
|
280
|
-
}
|
|
281
|
-
export interface IPlayerConstructorConfig {
|
|
282
|
-
playerName: string;
|
|
283
|
-
startLocation: Room;
|
|
284
|
-
lifestyleChoices?: LifestyleChoices;
|
|
285
|
-
combat?: ICombatAttributes;
|
|
286
|
-
}
|
|
287
|
-
/**
|
|
288
|
-
* ONE PAN DEFENCE, ITEMISED (p.240 / p.238).
|
|
289
|
-
*
|
|
290
|
-
* This exists so the dashboard's LABEL and the dice it labels come out
|
|
291
|
-
* of the same call. They did not, and the cost was a caught defect: the
|
|
292
|
-
* defence was corrected to the book (Intuition/Willpower + whole
|
|
293
|
-
* Firewall) while commands/pan.ts went on calling the result "Logic +
|
|
294
|
-
* quality" -- the right number under the name of the code that had been
|
|
295
|
-
* deleted. Whoever reads a breakdown off this cannot describe a pool
|
|
296
|
-
* this engine does not roll, because there is nowhere left to say it.
|
|
297
|
-
*/
|
|
298
|
-
export interface IPanDefence {
|
|
299
|
-
/** 'Intuition' against a sleaze, 'Willpower' against a smash. */
|
|
300
|
-
attributeName: 'Intuition' | 'Willpower';
|
|
301
|
-
attribute: number;
|
|
302
|
-
firewall: number;
|
|
303
|
-
/** A hidden PAN must be FOUND first. */
|
|
304
|
-
silent: number;
|
|
305
|
-
/** Signal Scrub cleans the noise floor. */
|
|
306
|
-
scrub: number;
|
|
307
|
-
/** Sneak deepens a silent PAN's cover. */
|
|
308
|
-
sneak: number;
|
|
309
|
-
total: number;
|
|
310
|
-
}
|
|
311
|
-
export declare class Player extends AbstractPlayer {
|
|
312
|
-
readonly _playerName: string;
|
|
313
|
-
protected _currentLocation: Room;
|
|
314
|
-
protected _inventory: Inventory;
|
|
315
|
-
protected _equipment: PlayerEquipment;
|
|
316
|
-
protected _maxCarryingWeight: number;
|
|
317
|
-
protected _lifestyleChoices: LifestyleChoices;
|
|
318
|
-
protected logger: Logger;
|
|
319
|
-
private _currency;
|
|
320
|
-
activeCallPartner?: Player;
|
|
321
|
-
crewChannel?: {
|
|
322
|
-
playerName: string;
|
|
323
|
-
handle: string;
|
|
324
|
-
party?: boolean;
|
|
325
|
-
};
|
|
326
|
-
runningSilent: boolean;
|
|
327
|
-
combatOpponent?: Player;
|
|
328
|
-
lastExchangeAt: number;
|
|
329
|
-
inExchange: boolean;
|
|
330
|
-
private _autoStance;
|
|
331
|
-
get autoStance(): FightStance;
|
|
332
|
-
set autoStance(v: FightStance);
|
|
333
|
-
/** Which of the book's two intrusion actions the next hack uses
|
|
334
|
-
* (see MatrixStance). Sheet-visible, like its meat-world twin. */
|
|
335
|
-
private _matrixStance;
|
|
336
|
-
get matrixStance(): MatrixStance;
|
|
337
|
-
set matrixStance(v: MatrixStance);
|
|
338
|
-
grappledBy?: string;
|
|
339
|
-
grappleThreshold?: number;
|
|
340
|
-
grappling?: string;
|
|
341
|
-
rallyInitBonus: number;
|
|
342
|
-
directedDice: number;
|
|
343
|
-
inspiredGuardDice: number;
|
|
344
|
-
surrendered: boolean;
|
|
345
|
-
/**
|
|
346
|
-
* WHERE you took cover -- not whether. TAKE COVER is a Simple Action
|
|
347
|
-
* (SR5e p.166) and the +2/+4 it buys (p.190) belongs to the defender
|
|
348
|
-
* who spent it, so the game has to remember that it was spent.
|
|
349
|
-
*
|
|
350
|
-
* Storing the SPOT rather than a boolean makes the state
|
|
351
|
-
* self-invalidating: cover is live only while `coverAtSpot` still
|
|
352
|
-
* equals where you are (see spots.ts isInCover). Step out from behind
|
|
353
|
-
* the crates and the bonus is gone with no cleanup code anywhere to
|
|
354
|
-
* forget -- the alternative, a flag plus a clear on every movement
|
|
355
|
-
* path, is a second source of truth waiting to disagree with the
|
|
356
|
-
* first.
|
|
357
|
-
*
|
|
358
|
-
* Mid-combat state, never saved.
|
|
359
|
-
*/
|
|
360
|
-
coverAtSpot?: string;
|
|
361
|
-
/**
|
|
362
|
-
* This actor is deliberately HOLDING THEIR POSITION against passage --
|
|
363
|
-
* a doorman, a picket, someone posted to stand there. Distinct from
|
|
364
|
-
* merely being present: an unguarding NPC in a doorway steps aside and
|
|
365
|
-
* the move narrates it (utilities/spots.ts yieldDoorway), while a
|
|
366
|
-
* guarding one holds the way shut (holdsGround).
|
|
367
|
-
*
|
|
368
|
-
* Player ruling 2026-08-27: "NPCs can be barriers (can't move through
|
|
369
|
-
* them)". This is what makes that true, and it is a BOOLEAN rather
|
|
370
|
-
* than a direction on purpose -- doorwayOccupants already reads the
|
|
371
|
-
* exit cell and its approach cell, so the geometry knows WHICH doorway
|
|
372
|
-
* they hold. Storing the direction too would be one fact in two
|
|
373
|
-
* places, free to disagree.
|
|
374
|
-
*
|
|
375
|
-
* Cleared when they stand down -- talked round (commands/bluff.ts),
|
|
376
|
-
* or beaten, which `surrendered` already covers. Clearing it opens the
|
|
377
|
-
* way for EVERYONE, deliberately: a doorman who has stepped aside has
|
|
378
|
-
* stepped aside, and he is not tracking which of four runners
|
|
379
|
-
* persuaded him while standing in the same doorway.
|
|
380
|
-
*/
|
|
381
|
-
guarding: boolean;
|
|
382
|
-
/**
|
|
383
|
-
* THIS ACTOR IS OPPOSITION (JjQdy4A4tzcQdPHno: "none of the NPCs ever
|
|
384
|
-
* seem to get hostile").
|
|
385
|
-
*
|
|
386
|
-
* WHAT WAS ACTUALLY MISSING, after two wrong diagnoses of mine. It is
|
|
387
|
-
* not that nothing wakes them: go.ts's arrival calls
|
|
388
|
-
* performAction('enters'), which fans out to NPC.see, and `enter` is
|
|
389
|
-
* in RESPOND_WORTHY_VERB -- the AI is asked. It is not that they
|
|
390
|
-
* cannot fight: the brief lists `attack`, `kill` and `subdue` and
|
|
391
|
-
* explains combat at length. And the detection canon asks for is
|
|
392
|
-
* already there -- npc.ts runs an opposed Agility + sneaking vs
|
|
393
|
-
* Intuition + perception test per witness on a sneaking arrival, and
|
|
394
|
-
* a winner is never registered at all.
|
|
395
|
-
*
|
|
396
|
-
* What was missing is a REASON. OFFERING THE VERB IS NOT THE SAME AS
|
|
397
|
-
* GIVING THEM A REASON: an NPC briefed with no opposition to the
|
|
398
|
-
* player answers neutrally, because neutral is in character. So this
|
|
399
|
-
* flag exists to tell them they have one.
|
|
400
|
-
*
|
|
401
|
-
* WHAT IT DOES NOT DO, and these are the load-bearing absences:
|
|
402
|
-
* - It does NOT attack on sight. It adds a line to the brief; the
|
|
403
|
-
* AI still chooses, and challenging, raising an alarm, or calling
|
|
404
|
-
* for backup are all better first moves than shooting.
|
|
405
|
-
* - It adds NO tick and NO new wake-up. The occasion already
|
|
406
|
-
* existed; this rides it.
|
|
407
|
-
* - It is never INFERRED. Only a seed that says so, or a scene that
|
|
408
|
-
* sets it deliberately, makes someone opposition.
|
|
409
|
-
*
|
|
410
|
-
* The asymmetry that decides every judgement call here: a guard who
|
|
411
|
-
* should have gone hostile and didn't is a missed beat, and a
|
|
412
|
-
* bartender who goes hostile is a broken scene. PREFER UNDER-FIRING.
|
|
413
|
-
*
|
|
414
|
-
* Cleared the same way `guarding` is -- talked round, or beaten.
|
|
415
|
-
*/
|
|
416
|
-
hostile: boolean;
|
|
417
|
-
/**
|
|
418
|
-
* They have already heard one story from this runner and did not buy
|
|
419
|
-
* it. A person remembering a failed con is good fiction (and stops
|
|
420
|
-
* bluff being a free retry loop) -- unlike BURNING a barrier, which is
|
|
421
|
-
* what the ruling above removed. Other approaches stay open: a mark
|
|
422
|
-
* who saw through your patter can still be leaned on or fought.
|
|
423
|
-
*/
|
|
424
|
-
conAttemptedBy: Set<string>;
|
|
425
|
-
/**
|
|
426
|
-
* POSTURE (player request 2026-08-27: sit and lie down as movement
|
|
427
|
-
* commands). Three states, and only two of them are mechanical:
|
|
428
|
-
*
|
|
429
|
-
* 'standing' -- the default.
|
|
430
|
-
* 'sitting' -- a social posture. SR5e gives kneeling and sitting no
|
|
431
|
-
* combat modifier of their own, so neither does this:
|
|
432
|
-
* it changes the fiction and nothing else. Inventing a
|
|
433
|
-
* penalty to make the verb feel weightier would be
|
|
434
|
-
* inventing rules.
|
|
435
|
-
* 'prone' -- flat, and it is a real combat state. Dropping is a
|
|
436
|
-
* FREE action (p.164); getting up is a SIMPLE one and
|
|
437
|
-
* costs a Body + Willpower (2) test while wounded
|
|
438
|
-
* (p.166). Prone melee attacker -1 (p.187), prone
|
|
439
|
-
* defender -2 except against ranged from beyond 5m
|
|
440
|
-
* (p.189), and +1 to anyone attacking you (p.187).
|
|
441
|
-
*
|
|
442
|
-
* Deliberately NOT a second notion of "on the ground": a GRAPPLED
|
|
443
|
-
* actor counts as prone for attacks against them (p.195), and that
|
|
444
|
-
* is derived where it is used rather than written here, so the two
|
|
445
|
-
* can never disagree about who is down.
|
|
446
|
-
*/
|
|
447
|
-
posture: 'standing' | 'sitting' | 'prone';
|
|
448
|
-
archetypeName?: string;
|
|
449
|
-
gender?: 'male' | 'female';
|
|
450
|
-
private _weaponDrawn;
|
|
451
|
-
get weaponDrawn(): boolean;
|
|
452
|
-
set weaponDrawn(v: boolean);
|
|
453
|
-
private _plane;
|
|
454
|
-
get plane(): Plane;
|
|
455
|
-
set plane(v: Plane);
|
|
456
|
-
bodyRoom?: Room;
|
|
457
|
-
/** WHERE THE BODY STANDS while jumped into a frame (planes.ts
|
|
458
|
-
* enterDrone/leaveDrone, 2026-09-06): the frame paces the room on
|
|
459
|
-
* atSpot/atCell like anyone on the floor (utilities/spots.ts
|
|
460
|
-
* onTheFloor), so the body's own spot has to be kept aside and put
|
|
461
|
-
* back on jump-out. Transient -- never saved; a resume is meat. */
|
|
462
|
-
bodySpot?: string;
|
|
463
|
-
bodyCell?: {
|
|
464
|
-
x: number;
|
|
465
|
-
y: number;
|
|
466
|
-
z: number;
|
|
467
|
-
};
|
|
468
|
-
private _simMode?;
|
|
469
|
-
get simMode(): SimMode | undefined;
|
|
470
|
-
set simMode(v: SimMode | undefined);
|
|
471
|
-
/**
|
|
472
|
-
* WHO HAS YOUR CONNECTION LINK-LOCKED (p.229), by icon name.
|
|
473
|
-
*
|
|
474
|
-
* "Another persona or device sends keep-alive signals to your deck that
|
|
475
|
-
* force it to cancel any attempt to leave the Matrix." While this is
|
|
476
|
-
* non-empty you cannot walk out of the Matrix voluntarily -- only a
|
|
477
|
-
* successful Jack Out action (p.240) frees you, and it still costs
|
|
478
|
-
* dumpshock.
|
|
479
|
-
*
|
|
480
|
-
* A SET, not a flag, because canon allows several at once: "if more
|
|
481
|
-
* than one persona has you link-locked, you need to beat each of them
|
|
482
|
-
* individually." Black IC and Blaster IC can both be on you.
|
|
483
|
-
*
|
|
484
|
-
* Session state, like the rest of the Matrix layer -- leaveMatrix
|
|
485
|
-
* clears it, since a persona that is out is not locked into anything.
|
|
486
|
-
*/
|
|
487
|
-
linkLockedBy: Set<string>;
|
|
488
|
-
/**
|
|
489
|
-
* THE HOST THIS PERSONA IS INSIDE, if any (SR5 p.246).
|
|
490
|
-
*
|
|
491
|
-
* "The virtual space inside a host is separate from the outside grid.
|
|
492
|
-
* When you're outside of a host, you can't interact directly with
|
|
493
|
-
* icons inside it... Once you're inside, you can see and interact with
|
|
494
|
-
* icons inside the host, but not outside."
|
|
495
|
-
*
|
|
496
|
-
* Reported three ways by the same play-tester before this existed
|
|
497
|
-
* (hhSW, eJAN, rG8L): the engine had NO inside-vs-outside state, so a
|
|
498
|
-
* persona standing on a room's grid patch WAS in its host as far as
|
|
499
|
-
* every surface was concerned -- PANs and cameras that live inside the
|
|
500
|
-
* host were listed on the open grid, and IC hunted people who had
|
|
501
|
-
* never entered anything.
|
|
502
|
-
*
|
|
503
|
-
* Set by `enter` (Complex Action, one mark, no test -- p.239: "a host
|
|
504
|
-
* allows anyone to enter if they've got a mark, and anyone inside can
|
|
505
|
-
* exit"), cleared by `exit` and by every route out of the Matrix.
|
|
506
|
-
* Session state like hostAlert and linkLockedBy: leaving the Matrix
|
|
507
|
-
* ends it, so nothing here is persisted.
|
|
508
|
-
*/
|
|
509
|
-
/**
|
|
510
|
-
* WHERE THE PERSONA IS (increment 2 of the Matrix position model): on a
|
|
511
|
-
* grid, or inside a host it entered from one. Session-only, like
|
|
512
|
-
* bodyRoom. The body stays in currentLocation on every plane -- the
|
|
513
|
-
* persona never writes it. The setter fires the live-sheet beat, which
|
|
514
|
-
* is the beat the currentLocation setter used to fire on enter/exit.
|
|
515
|
-
* `grid` may be unknown (fixtures, and increment 2 itself): unknown is
|
|
516
|
-
* not "another grid", so it costs nothing.
|
|
517
|
-
*/
|
|
518
|
-
private _matrixPosition?;
|
|
519
|
-
get matrixPosition(): MatrixPosition | undefined;
|
|
520
|
-
set matrixPosition(v: MatrixPosition | undefined);
|
|
521
|
-
/** The grid the persona rides, when it is on one. */
|
|
522
|
-
get currentGrid(): Grid | undefined;
|
|
523
|
-
/** The host the persona is inside, when it is inside one. */
|
|
524
|
-
get hostInside(): Host | undefined;
|
|
525
|
-
/**
|
|
526
|
-
* @deprecated compat through increment 4 -- read hostInside / write
|
|
527
|
-
* matrixPosition. The room a host stands over, when inside one. The
|
|
528
|
-
* setter still builds the position so every old writer keeps working.
|
|
529
|
-
*/
|
|
530
|
-
private _compatInsideRoom?;
|
|
531
|
-
get insideHost(): Room | undefined;
|
|
532
|
-
set insideHost(room: Room | undefined);
|
|
533
|
-
/** The grid last stood on, so an exit built through the old setter returns there. */
|
|
534
|
-
private get lastGrid();
|
|
535
|
-
/**
|
|
536
|
-
* MATRIX ATTRIBUTES BURNED OFF BY IC (p.248): Acid eats Firewall,
|
|
537
|
-
* Binder eats Data Processing, Jammer eats Attack, Marker eats Sleaze.
|
|
538
|
-
* "The reduction is cumulative and lasts until you reboot the targeted
|
|
539
|
-
* device", so this is session state that leaveMatrix clears -- a
|
|
540
|
-
* jack-out reboots the deck (p.240).
|
|
541
|
-
*
|
|
542
|
-
* Applied in matrixAttribute() rather than at the call sites, because
|
|
543
|
-
* that method is the ONE place all four attributes are read: the hack
|
|
544
|
-
* limits, the PAN defence, the IC defence, and the dumpshock resist
|
|
545
|
-
* all funnel through it. A reduction that did not bite there would be
|
|
546
|
-
* a number in a record that changed no roll.
|
|
547
|
-
*/
|
|
548
|
-
matrixAttrLoss: Record<'attack' | 'sleaze' | 'dataProcessing' | 'firewall', number>;
|
|
549
|
-
astralTicks: number;
|
|
550
|
-
activeDeck?: Item;
|
|
551
|
-
/** The best working cyberdeck carried (bricked ones don't count). */
|
|
552
|
-
getCyberdeck(): Item | undefined;
|
|
553
|
-
/** Any deck at all, bricked included -- for status displays and repair. */
|
|
554
|
-
getAnyCyberdeck(): Item | undefined;
|
|
555
|
-
arOffline: boolean;
|
|
556
|
-
private _arMuted;
|
|
557
|
-
get arMuted(): boolean;
|
|
558
|
-
set arMuted(v: boolean);
|
|
559
|
-
panMarksBy: Map<string, number>;
|
|
560
|
-
overwatchScore: number;
|
|
561
|
-
overwatchLastTick: number;
|
|
562
|
-
/**
|
|
563
|
-
* The PAN's master device: your slaved gear defends behind its
|
|
564
|
-
* firewall (SR slaving, simplified). Best working deck beats the
|
|
565
|
-
* equipped commlink; no devices = no PAN (and nothing to hack).
|
|
566
|
-
*/
|
|
567
|
-
/**
|
|
568
|
-
* AR EYES (canon p.221/229/235, RAG-checked 2026-08-24): Matrix
|
|
569
|
-
* icons -- host markers on the map included -- exist only through a
|
|
570
|
-
* persona device's AR overlay or a technomancer's living persona.
|
|
571
|
-
* No deck, no commlink, no resonance = the meat map shows no hosts.
|
|
572
|
-
* A cracked PAN (arOffline) cuts the overlay the same way -- and so
|
|
573
|
-
* does muting it yourself (arMuted): the map's host markers ARE AR, so
|
|
574
|
-
* an AR toggle that left them lit would be a lie.
|
|
575
|
-
*/
|
|
576
|
-
hasMatrixEyes(): boolean;
|
|
577
|
-
/**
|
|
578
|
-
* A DIRECT NEURAL INTERFACE -- what VR needs and AR does not (SR5 core
|
|
579
|
-
* p.222-223, RAG-checked 2026-09-01, user canon check: "if you don't
|
|
580
|
-
* have a trode or wetware, you can't use a cyberdeck"). The book's
|
|
581
|
-
* split is exact: a commlink or deck works from its own screen and AR
|
|
582
|
-
* needs only a display route, but hot- or cold-sim VR needs a DNI --
|
|
583
|
-
* a datajack, a trode net, or an implanted commlink -- plus a sim
|
|
584
|
-
* module (decks carry one). The engine let anyone with a deck jack
|
|
585
|
-
* in; this is the gate it was missing. A technomancer's living
|
|
586
|
-
* persona IS the interface. The implanted commlink is not modelled
|
|
587
|
-
* here (no such aug yet), so it is not claimed.
|
|
588
|
-
*/
|
|
589
|
-
hasDirectNeuralInterface(): boolean;
|
|
590
|
-
/** True for the one Electronics item that is a trode net (p.439-440). */
|
|
591
|
-
static isTrodeNet(item: Item): boolean;
|
|
592
|
-
/**
|
|
593
|
-
* WHAT CARRIES THE DIRECT NEURAL INTERFACE, for the equipment panel and
|
|
594
|
-
* the jack-in gate: a living persona, an implanted datajack, a trode net
|
|
595
|
-
* worn on the head, or one still in the bag (it works from there too --
|
|
596
|
-
* the engine has never made the player put it on, and a net in the bag
|
|
597
|
-
* was the only place it could live before the head slot existed).
|
|
598
|
-
*/
|
|
599
|
-
dniSource(): {
|
|
600
|
-
kind: 'technomancer' | 'datajack' | 'trodes';
|
|
601
|
-
worn?: boolean;
|
|
602
|
-
item?: Item;
|
|
603
|
-
} | null;
|
|
604
|
-
/**
|
|
605
|
-
* THE PRICE OF SILENCE (canon p.235-236 "Running Silent",
|
|
606
|
-
* RAG-checked 2026-08-27): "-2 dice pool modifier to all of your
|
|
607
|
-
* Matrix actions" -- the processing your persona burns covering its
|
|
608
|
-
* own tracks. Add it at every Matrix-action roll site (hack.ts,
|
|
609
|
-
* mark.ts, overwatch.ts); it is a MATRIX-action modifier, so it
|
|
610
|
-
* rides whether you are jacked in or reaching from AR, and it never
|
|
611
|
-
* touches a meat-plane roll.
|
|
612
|
-
*
|
|
613
|
-
* This is the counterweight to silence no longer blinding your own
|
|
614
|
-
* overlay (utilities/ar.ts arSightUp): without it, running silent
|
|
615
|
-
* would buy a hidden icon and +2 PAN defence (getPanDefensePool) for
|
|
616
|
-
* nothing but some dropped calls.
|
|
617
|
-
*/
|
|
618
|
-
get matrixActionPenalty(): number;
|
|
619
|
-
/**
|
|
620
|
-
* THIS PERSONA'S MATRIX ATTRIBUTE (p.226 for a deck's array, p.251
|
|
621
|
-
* for a living persona, p.222/p.234 for an ordinary device; p.46-47
|
|
622
|
-
* for what a limit is). All RAG-checked 2026-08-28 rather than
|
|
623
|
-
* recalled.
|
|
624
|
-
*
|
|
625
|
-
* ONE NUMBER, TWO ROLES, which is why it is named for the number
|
|
626
|
-
* rather than for either job:
|
|
627
|
-
* - THE BRACKET on a Matrix action. SR5 writes them as `Hacking +
|
|
628
|
-
* Logic [Sleaze]` and p.244 files the whole action list by which
|
|
629
|
-
* limit it uses; the bracket caps HITS (see utilities/dice.ts).
|
|
630
|
-
* - THE ATTRIBUTE in its own right -- Matrix VR initiative is Data
|
|
631
|
-
* Processing + Intuition (p.229-230), where nothing is capped.
|
|
632
|
-
*
|
|
633
|
-
* It was called `matrixLimit` while the bracket was its only caller.
|
|
634
|
-
* Renamed once initiative wanted it, because a name that is accurate
|
|
635
|
-
* for its first use and misleading afterwards is a defect: reading
|
|
636
|
-
* `matrixLimit('dataProcessing')` in an initiative pool, you would
|
|
637
|
-
* reasonably assume something was being capped.
|
|
638
|
-
*
|
|
639
|
-
* Whole, never halved, in both roles.
|
|
640
|
-
*
|
|
641
|
-
* A TECHNOMANCER HAS NO DECK AND IS NOT UNLIMITED. Their living
|
|
642
|
-
* persona's Matrix attributes come from their Mental attributes
|
|
643
|
-
* (p.251): Attack = Charisma, Sleaze = Intuition, Data Processing =
|
|
644
|
-
* Logic, Firewall = Willpower. This engine used to give them
|
|
645
|
-
* Resonance/2 as dice, which is neither the right attribute nor the
|
|
646
|
-
* right kind of thing -- Resonance is their Device Rating, not their
|
|
647
|
-
* array.
|
|
648
|
-
*
|
|
649
|
-
* Returns 0 when the actor has no way to take the action at all (no
|
|
650
|
-
* deck, and a commlink has no Attack or Sleaze). Callers gate on the
|
|
651
|
-
* gear BEFORE rolling, so a 0 reaching rollPool means a caller
|
|
652
|
-
* skipped its gate -- which is why rollPool refuses a zero limit
|
|
653
|
-
* loudly rather than honouring it.
|
|
654
|
-
*/
|
|
655
|
-
matrixAttribute(kind: 'attack' | 'sleaze' | 'dataProcessing' | 'firewall'): number;
|
|
656
|
-
/**
|
|
657
|
-
* REFUSE AN ACTION WHOSE BRACKET HAS BEEN EATEN TO ZERO, or undefined
|
|
658
|
-
* when it still has one. Returns the line the player reads.
|
|
659
|
-
*
|
|
660
|
-
* THIS IS ARITHMETIC, NOT A NEW RULE, and the derivation matters
|
|
661
|
-
* because it is the one place someone will later mistake for an
|
|
662
|
-
* invention. A bracket is a LIMIT ON HITS -- the rule this codebase
|
|
663
|
-
* states more often than any other -- so a limit of 0 permits zero
|
|
664
|
-
* hits, and a test that cannot score a hit cannot succeed. Refusing
|
|
665
|
-
* before the roll is the honest rendering of a guaranteed failure, not
|
|
666
|
-
* a ruling about what "Attack 0" means. Reading [0] as "no limit"
|
|
667
|
-
* would invert the bracket rule and hand the reducers' own targets
|
|
668
|
-
* back to the player.
|
|
669
|
-
*
|
|
670
|
-
* Canon is silent on acting at 0 -- RAG-checked; the nearest text is
|
|
671
|
-
* Marker's own at-zero clause and Diffusion's cannot-reduce-below-1,
|
|
672
|
-
* which the IC entries plainly override -- so nothing here leans on it.
|
|
673
|
-
*
|
|
674
|
-
* ONLY FOR A BURNED ATTRIBUTE. An attribute that is 0 because the
|
|
675
|
-
* actor has no deck at all is the pre-existing no-gear case, and its
|
|
676
|
-
* callers already gate on the gear with their own better message; this
|
|
677
|
-
* returns undefined there so those refusals keep saying what they say.
|
|
678
|
-
*/
|
|
679
|
-
burnedAttributeRefusal(kind: 'attack' | 'sleaze' | 'dataProcessing' | 'firewall'): string | undefined;
|
|
680
|
-
/** Which IC eats which attribute (p.248), for naming the culprit. */
|
|
681
|
-
private static readonly ATTR_EATER;
|
|
682
|
-
private static readonly ATTR_NAME;
|
|
683
|
-
/** The undamaged array, before any IC reduction. */
|
|
684
|
-
/** Set on an IC actor (utilities/ic-actors.ts): "IC uses the Matrix attributes of its host" (p.247). */
|
|
685
|
-
icHost?: Host;
|
|
686
|
-
/** The IC kind an IC actor was launched as -- the name the host's running list carries. */
|
|
687
|
-
icKind?: string;
|
|
688
|
-
baseMatrixAttribute(kind: 'attack' | 'sleaze' | 'dataProcessing' | 'firewall'): number;
|
|
689
|
-
/**
|
|
690
|
-
* THE LIVE LINK -- what makes this runner reachable and lit (p.223,
|
|
691
|
-
* RAG-checked 2026-09-01: "a deck can perform all of the functions of
|
|
692
|
-
* a commlink"). The worn commlink, or failing that the working deck:
|
|
693
|
-
* a deck-only decker IS online, receives calls, and drives AR.
|
|
694
|
-
*
|
|
695
|
-
* The distinction this deliberately preserves: a POCKETED commlink is
|
|
696
|
-
* still not live (the 2026-08-24 ruling -- choosing not to wear the
|
|
697
|
-
* wearable is choosing silence), but a deck cannot be worn at all --
|
|
698
|
-
* it works from the kit BY the engine's own design, so its kit state
|
|
699
|
-
* IS its equipped state. ar.ts used to render the honest display of
|
|
700
|
-
* the old mechanics ("AR ON | Link offline"); this fixes the
|
|
701
|
-
* MECHANICS, so the display goes back to matching canon.
|
|
702
|
-
*/
|
|
703
|
-
liveLink(): Item | undefined;
|
|
704
|
-
getPanMaster(): Item | undefined;
|
|
705
|
-
/**
|
|
706
|
-
* Defense against a PAN intrusion, itemised: the book's attribute plus
|
|
707
|
-
* the master's whole Firewall, +2 while running silent (a hidden PAN
|
|
708
|
-
* must be FOUND first). Loaded software helps: Signal Scrub cleans the
|
|
709
|
-
* noise floor (+1), Sneak deepens a silent PAN's cover (+2).
|
|
710
|
-
*
|
|
711
|
-
* THE DEFENCE IS THE BOOK'S, and it was wrong three ways at once
|
|
712
|
-
* (RAG-checked 2026-08-28, re-verified 2026-08-29). p.240: Hack on the
|
|
713
|
-
* Fly is opposed by INTUITION + Firewall. p.238: Brute Force by
|
|
714
|
-
* WILLPOWER + Firewall. Neither is Logic, and Firewall is a whole
|
|
715
|
-
* attribute on this side -- it was being halved by the same
|
|
716
|
-
* limits-to-pool substitution the attack side used, which is the one
|
|
717
|
-
* place that convention was costing the DEFENDER dice rather than the
|
|
718
|
-
* attacker.
|
|
719
|
-
*
|
|
720
|
-
* No limit, ever, and that is canon rather than an omission: limits
|
|
721
|
-
* apply only to a pool built from a skill plus an attribute (p.46-47),
|
|
722
|
-
* and there is no skill in Intuition + Firewall -- the melee example at
|
|
723
|
-
* p.174 spells it out, "no limit because there is no skill involved".
|
|
724
|
-
*
|
|
725
|
-
* TWO POOLS, NOT ONE, which is the part a player has to be able to
|
|
726
|
-
* see: since the attribute depends on what the intruder is DOING, a
|
|
727
|
-
* character's quiet defence and their brute-force defence are
|
|
728
|
-
* different numbers. commands/pan.ts shows both for that reason.
|
|
729
|
-
*/
|
|
730
|
-
panDefence(against?: 'sleaze' | 'attack'): IPanDefence;
|
|
731
|
-
/** The dice for a PAN defence. See panDefence() for what is in them. */
|
|
732
|
-
getPanDefensePool(against?: 'sleaze' | 'attack'): number;
|
|
733
|
-
/**
|
|
734
|
-
* A PAN defence written out the way the dashboard says it -- built
|
|
735
|
-
* from the breakdown, never from a remembered formula, so a change to
|
|
736
|
-
* the pool cannot leave this describing the old one.
|
|
737
|
-
*
|
|
738
|
-
* Bonuses are named only when they are actually being paid, so the
|
|
739
|
-
* line doubles as the answer to "what is silence buying me".
|
|
740
|
-
*/
|
|
741
|
-
panDefenceLine(against?: 'sleaze' | 'attack'): string;
|
|
742
|
-
/**
|
|
743
|
-
* The limit on THIS actor's current attack, or undefined when the
|
|
744
|
-
* engine models none.
|
|
745
|
-
*
|
|
746
|
-
* MEAT: the weapon's ACCURACY (p.46-47, p.168 -- "each weapon has an
|
|
747
|
-
* Accuracy rating that serves as its limit for attacks made with that
|
|
748
|
-
* weapon"), falling back to the PHYSICAL limit when there is no
|
|
749
|
-
* weapon behind the swing. That fallback is canon, not a default:
|
|
750
|
-
* p.168 puts unarmed attacks, and items used as part of an unarmed
|
|
751
|
-
* attack, on the inherent Physical limit. A gear limit REPLACES the
|
|
752
|
-
* inherent one whether it is higher or lower (p.46-47), so this is a
|
|
753
|
-
* substitution rather than a min/max.
|
|
754
|
-
*
|
|
755
|
-
* THE CALLER SUPPLIES THE WEAPON, and that is load-bearing. The
|
|
756
|
-
* exchange has already decided what is really in the attacker's hands
|
|
757
|
-
* -- drawn or holstered, and a dry or smartlink-locked firearm has
|
|
758
|
-
* already degraded to bare fists (combat-exchange weaponProfile). If
|
|
759
|
-
* this method re-derived the weapon it would answer a different
|
|
760
|
-
* question than the one the dice were rolled for, and the Accuracy
|
|
761
|
-
* shown would belong to a gun that is not being fired.
|
|
762
|
-
*
|
|
763
|
-
* MATRIX: the deck array bracket, unchanged (p.238/p.240).
|
|
764
|
-
*
|
|
765
|
-
* ASTRAL: still undefined, and that is a KNOWN gap, not an oversight.
|
|
766
|
-
* p.315 brackets astral attacks [Astral], and p.278 makes the Astral
|
|
767
|
-
* limit the greater of the Mental and Social limits -- two inherent
|
|
768
|
-
* limits this engine does not calculate. Reported rather than
|
|
769
|
-
* invented; it is its own item.
|
|
770
|
-
*/
|
|
771
|
-
getAttackLimit(weapon?: Item | null): number | undefined;
|
|
772
|
-
/**
|
|
773
|
-
* WHO OWNS THE RECEIVING END (p.433, p.444).
|
|
774
|
-
*
|
|
775
|
-
* A smartgun system feeds data to the shooter's SMARTLINK, and canon
|
|
776
|
-
* names two ways to have one, which are worth different amounts:
|
|
777
|
-
*
|
|
778
|
-
* 'augmentation' -- a smartlink you paid ESSENCE for (cybereyes with
|
|
779
|
-
* the Smartlink vision enhancement, or the implant)
|
|
780
|
-
* 'gear' -- glasses, goggles or contacts carrying the
|
|
781
|
-
* Smartlink vision enhancement (p.444)
|
|
782
|
-
*
|
|
783
|
-
* Undefined means no receiving end, and then a smartgun is just a gun:
|
|
784
|
-
* the data feed has nowhere to go.
|
|
785
|
-
*
|
|
786
|
-
* THE GEAR TIER IS DUCK-TYPED, the same school as Item.accuracy and
|
|
787
|
-
* rangedBase, so a generated pair of smartlink goggles works without
|
|
788
|
-
* anyone having added it to a table first. The augmentation tier is
|
|
789
|
-
* asked of the augmentation system, which already owns that fact.
|
|
790
|
-
*
|
|
791
|
-
* The gear tier must be WORN -- see the note in the body. The
|
|
792
|
-
* augmentation tier is not, and that asymmetry is canon rather than an
|
|
793
|
-
* oversight: an implanted smartlink is part of you (p.453), so there
|
|
794
|
-
* is nothing to put on and nothing to leave in a bag.
|
|
795
|
-
*
|
|
796
|
-
* ONE RESOLVER, TWO CONSUMERS: the +2 Accuracy (smartlinkAccuracyBonus)
|
|
797
|
-
* and the wireless +1 DICE for gear (getAttackPool) both ask this
|
|
798
|
-
* question and must never answer it differently. That is why the worn
|
|
799
|
-
* check lives here and not at either call site.
|
|
800
|
-
*/
|
|
801
|
-
smartlinkTier(): 'augmentation' | 'gear' | undefined;
|
|
802
|
-
/**
|
|
803
|
-
* +2 Accuracy when a smartgun meets a smartlink (p.433), and 0 in
|
|
804
|
-
* every other pairing.
|
|
805
|
-
*
|
|
806
|
-
* EVERY FIREARM IN THIS ENGINE IS A SMARTGUN -- that is not an
|
|
807
|
-
* assumption made here, it is the model pan.ts already ships: a
|
|
808
|
-
* carried firearm is listed as "(smartgun)" on your PAN and can be
|
|
809
|
-
* cracked, which is only true of a smartgun system. So the weapon side
|
|
810
|
-
* of the pairing is `isFirearm`, and a bow or a blade never qualifies.
|
|
811
|
-
*
|
|
812
|
-
* WIRELESS DOES NOT GATE THIS ONE. p.433 keeps the +2 Accuracy when
|
|
813
|
-
* wireless is off -- a cable to your glasses still carries the feed --
|
|
814
|
-
* and spends wireless on a DICE POOL bonus instead. Keeping those two
|
|
815
|
-
* apart is the same discipline as the Matrix brackets: a limit is
|
|
816
|
-
* never a die, and a die is never a limit.
|
|
817
|
-
*/
|
|
818
|
-
smartlinkAccuracyBonus(weapon?: Item | null): number;
|
|
819
|
-
/**
|
|
820
|
-
* A LASER SIGHT's +1 Accuracy (p.432), built in or fitted -- and never
|
|
821
|
-
* cumulative with a smartlink: getAttackLimit takes the larger of the two.
|
|
822
|
-
*/
|
|
823
|
-
laserSightBonus(weapon?: Item | null): number;
|
|
824
|
-
get matrixTaken(): number;
|
|
825
|
-
get maxMatrixBoxes(): number;
|
|
826
|
-
/** Routes Matrix combat damage into the jacked-in deck's hardware track. */
|
|
827
|
-
takeMatrixDamage(boxes: number): number;
|
|
828
|
-
get matrixCrashed(): boolean;
|
|
829
|
-
/** The deck track, same rendering as conditionSummary(). */
|
|
830
|
-
matrixSummary(): string;
|
|
831
|
-
/**
|
|
832
|
-
* Cross-plane perception, the single rule everything filters through:
|
|
833
|
-
* same plane sees same plane; the astral perceives the meat world
|
|
834
|
-
* (shifted, not gone -- auras and movement, dimly); meat and Matrix see
|
|
835
|
-
* nothing beyond their own plane. Used by see/hear guards, targeting,
|
|
836
|
-
* and room listings.
|
|
837
|
-
*/
|
|
838
|
-
canPerceive(other: Player): boolean;
|
|
839
|
-
/** Whether these two can trade physical blows (see attack.ts targeting). */
|
|
840
|
-
sharesCombatPlane(other: Player): boolean;
|
|
841
|
-
waitingForLull: boolean;
|
|
842
|
-
deathClaimed: boolean;
|
|
843
|
-
body: number;
|
|
844
|
-
agility: number;
|
|
845
|
-
reaction: number;
|
|
846
|
-
combatSkill: number;
|
|
847
|
-
magic: number;
|
|
848
|
-
strength: number;
|
|
849
|
-
willpower: number;
|
|
850
|
-
logic: number;
|
|
851
|
-
intuition: number;
|
|
852
|
-
charisma: number;
|
|
853
|
-
edge: number;
|
|
854
|
-
resonance: number;
|
|
855
|
-
adept: boolean;
|
|
856
|
-
/** Bought adept powers (mystic adept). See ICombatAttributes.powerPoints. */
|
|
857
|
-
powerPoints: number;
|
|
858
|
-
/** Chosen spellbook (magician/mystic adept). See ICombatAttributes.knownSpells.
|
|
859
|
-
* UNDEFINED = knows every spell (grandfathered); a list = knows only those. */
|
|
860
|
-
knownSpells?: string[];
|
|
861
|
-
/** Aspected magician's one group (SR5 p.69) -- see aspects.ts. */
|
|
862
|
-
aspect?: Aspect;
|
|
863
|
-
/** Chosen adept powers, key -> level. See ICombatAttributes.adeptPowers.
|
|
864
|
-
* UNDEFINED = the compressed floor(pp/2) model (grandfathered). */
|
|
865
|
-
adeptPowers?: Record<string, number>;
|
|
866
|
-
edgeRemaining: number;
|
|
867
|
-
edgeBoostArmed: boolean;
|
|
868
|
-
private _damageTaken;
|
|
869
|
-
private _stunTaken;
|
|
870
|
-
constructor(config: IPlayerConstructorConfig);
|
|
871
|
-
/** Everyone is born whole. */
|
|
872
|
-
static readonly ESSENCE_MAX = 6;
|
|
873
|
-
essence: number;
|
|
874
|
-
baseMagic: number;
|
|
875
|
-
baseResonance: number;
|
|
876
|
-
/** Installed 'ware, by catalog key (kind 'augmentation'). */
|
|
877
|
-
augmentations: Set<string>;
|
|
878
|
-
/**
|
|
879
|
-
* What GRADE each installed piece was cut at (see WARE_GRADES,
|
|
880
|
-
* p.451). Purely a record: grade changes what the surgery costs in
|
|
881
|
-
* essence and nuyen, never what the 'ware does, so augBonus never
|
|
882
|
-
* consults this. Absent = standard, which is what every pre-grade
|
|
883
|
-
* save and every archetype's starting chrome is.
|
|
884
|
-
*/
|
|
885
|
-
augGrades: Map<string, string>;
|
|
886
|
-
hasAug(key: string): boolean;
|
|
887
|
-
/**
|
|
888
|
-
* THE WEAPON BUILT INTO YOUR HANDS (core p.458, xHarA3TNgxZXtZwgp).
|
|
889
|
-
* Canon routes these through Unarmed Combat and the Physical limit,
|
|
890
|
-
* so they REPLACE the bare-fists profile rather than sitting in a
|
|
891
|
-
* hand slot -- see getWeaponProfile and utilities/combat-exchange.ts,
|
|
892
|
-
* the two places that compute a punch.
|
|
893
|
-
*
|
|
894
|
-
* A drawn weapon always wins: chrome in the palm does not stop you
|
|
895
|
-
* shooting. Mutually exclusive by row (excludes), so at most one is
|
|
896
|
-
* ever installed and the find is the answer rather than a contest.
|
|
897
|
-
*/
|
|
898
|
-
implantWeapon(): IImplantWeapon | undefined;
|
|
899
|
-
/**
|
|
900
|
-
* Jolts left in a shock hand. Ten per hand in the book, recharging
|
|
901
|
-
* one per ten seconds while plugged in -- there is no wall clock here
|
|
902
|
-
* for a hand to be plugged into, so the trickle is compressed to a
|
|
903
|
-
* refill on rest (commands/rest.ts). Session state: a fresh install
|
|
904
|
-
* arrives charged.
|
|
905
|
-
*/
|
|
906
|
-
implantCharges: number;
|
|
907
|
-
/** Spends one jolt. Returns what is left. */
|
|
908
|
-
spendImplantCharge(): number;
|
|
909
|
-
/** Back to full -- a rest, or the moment the chrome goes in. */
|
|
910
|
-
refillImplantCharges(): void;
|
|
911
|
-
/** Full essence points lost, rounded up -- the toll Magic/Resonance pay. */
|
|
912
|
-
get essenceBurn(): number;
|
|
913
|
-
/**
|
|
914
|
-
* Burns the essence and records the 'ware. No gating here -- the clinic
|
|
915
|
-
* (commands/install.ts) owns the refusals (essence floor, conflicts,
|
|
916
|
-
* payment); archetype starting chrome installs through this too.
|
|
917
|
-
*/
|
|
918
|
-
installAug(aug: {
|
|
919
|
-
key: string;
|
|
920
|
-
essence: number;
|
|
921
|
-
grade?: string;
|
|
922
|
-
}): void;
|
|
923
|
-
/**
|
|
924
|
-
* Which SOURCE an effect came from. The single accessor `bonus()`
|
|
925
|
-
* sums them all; the older per-source getters each sum their own,
|
|
926
|
-
* which is what lets the call sites migrate one at a time instead of
|
|
927
|
-
* in one unreviewable commit.
|
|
928
|
-
*/
|
|
929
|
-
/** Every effect applying right now, with its source and its scale. */
|
|
930
|
-
private applyingEffects;
|
|
931
|
-
/**
|
|
932
|
-
* Sums one kind of effect. `lanes` narrows to particular sources --
|
|
933
|
-
* omitted means EVERY source, which is what the unified `bonus()`
|
|
934
|
-
* wants; the legacy getters each pass their own single lane so that
|
|
935
|
-
* a call site still adding two of them by hand cannot double.
|
|
936
|
-
*/
|
|
937
|
-
/**
|
|
938
|
-
* The spells being sustained, and what each scales by.
|
|
939
|
-
*
|
|
940
|
-
* READS THE STATE cast.ts ALREADY KEEPS rather than a second map:
|
|
941
|
-
* the armor spell stores its hits, and the other two are booleans
|
|
942
|
-
* whose rows carry a flat value, so 1 is the right multiplier for
|
|
943
|
-
* them. Adding a parallel store would be two places to forget to
|
|
944
|
-
* update, which is the shape this whole pass has been removing.
|
|
945
|
-
*/
|
|
946
|
-
private sustainedMagnitudes;
|
|
947
|
-
private sumEffects;
|
|
948
|
-
/**
|
|
949
|
-
* Dice the GEAR LANE adds, and nothing else.
|
|
950
|
-
*
|
|
951
|
-
* A LANE READER, NOT A POOL. Every pool in the game reads `bonus()`
|
|
952
|
-
* now; this survives as the way to ask what one source contributes,
|
|
953
|
-
* which is what the behaviour fixture interrogates and what a "where
|
|
954
|
-
* did that die come from" answer would need. It has no production
|
|
955
|
-
* caller of its own, and that is the correct state for it rather than
|
|
956
|
-
* a sign it should go: deleting it would delete the fixture's ability
|
|
957
|
-
* to see the lanes apart, which is the only thing that can catch one
|
|
958
|
-
* lane being counted twice.
|
|
959
|
-
*/
|
|
960
|
-
gearBonus(kind: string, opts?: {
|
|
961
|
-
only?: string;
|
|
962
|
-
}): number;
|
|
963
|
-
/** What the gear adds to a LIMIT (a Shopsoft's +1 Social on a haggle). */
|
|
964
|
-
gearLimit(kind: 'physical' | 'mental' | 'social' | 'accuracy', opts?: {
|
|
965
|
-
only?: string;
|
|
966
|
-
}): number;
|
|
967
|
-
/**
|
|
968
|
-
* EVERY die the character has for this pool or skill, from every
|
|
969
|
-
* source -- gear, chrome, qualities, adept powers, metamagics, a
|
|
970
|
-
* metatype trait, a sustained spell.
|
|
971
|
-
*
|
|
972
|
-
* `only` names a narrowing an effect may carry ('haggle', 'silent',
|
|
973
|
-
* 'matrix-search'). `skill` lets a combat pool pick up dice that were
|
|
974
|
-
* declared against the SKILL being rolled rather than the pool --
|
|
975
|
-
* a smartlink says `firearms`, and the attack pool has to see it.
|
|
976
|
-
*
|
|
977
|
-
* The sources that have not yet moved onto the shared shape are added
|
|
978
|
-
* explicitly below, each named, so that migrating one is a matter of
|
|
979
|
-
* deleting its line here rather than hunting for what it fed.
|
|
980
|
-
*/
|
|
981
|
-
bonus(kind: string, opts?: {
|
|
982
|
-
only?: string;
|
|
983
|
-
skill?: string;
|
|
984
|
-
}): number;
|
|
985
|
-
/**
|
|
986
|
-
* What a source adds to the initiative SCORE -- the number you roll
|
|
987
|
-
* against -- as opposed to `bonus('initiative')`, which is the DICE.
|
|
988
|
-
*
|
|
989
|
-
* The `initiative` effect arm has existed since the gear pass and
|
|
990
|
-
* was read by nothing at all until the Increase Reflexes spell came
|
|
991
|
-
* onto the lane (2026-09-04). Two different quantities sharing the
|
|
992
|
-
* word "initiative" is exactly why the arm is separate.
|
|
993
|
-
*/
|
|
994
|
-
initiativeBonus(of: 'score' | 'dice'): number;
|
|
995
|
-
/** Every point on a LIMIT, from every source. */
|
|
996
|
-
limitBonus(kind: 'physical' | 'mental' | 'social' | 'accuracy', opts?: {
|
|
997
|
-
only?: string;
|
|
998
|
-
}): number;
|
|
999
|
-
/**
|
|
1000
|
-
* How much further this character may raise one skill or attribute
|
|
1001
|
-
* than anyone else -- Aptitude's chosen skill (p.72), Exceptional
|
|
1002
|
-
* Attribute's chosen attribute (p.73-74).
|
|
1003
|
-
*
|
|
1004
|
-
* The book states absolute numbers against ITS ceilings (a skill at 7
|
|
1005
|
-
* rather than 6 at creation, 13 rather than 12 after). This engine
|
|
1006
|
-
* caps lower than the book does, so what carries across is the DELTA
|
|
1007
|
-
* -- one step further than anyone else gets -- applied to whatever
|
|
1008
|
-
* ceiling the engine is enforcing. Writing the book's 13 over a house
|
|
1009
|
-
* cap of 7 would not be more faithful, only a bigger number in the
|
|
1010
|
-
* wrong system.
|
|
1011
|
-
*
|
|
1012
|
-
* A `chosen` ceiling resolves through the holder's own pick, so a
|
|
1013
|
-
* quality bought but never answered lifts nothing at all.
|
|
1014
|
-
*/
|
|
1015
|
-
capBonus(of: 'skill' | 'attribute', name: string): number;
|
|
1016
|
-
/**
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
/** A capability the character has, from any source, by key. */
|
|
1020
|
-
can(key: string): boolean;
|
|
1021
|
-
/**
|
|
1022
|
-
* THE CHROME THAT ACTUALLY COUNTS: everything installed, minus the
|
|
1023
|
-
* wired-reflex tiers a higher tier supersedes.
|
|
1024
|
-
*
|
|
1025
|
-
* Wired Reflexes I, II and III do not stack -- the best one wins (a
|
|
1026
|
-
* synaptic booster is bioware and rides on top of whichever that is).
|
|
1027
|
-
* That is a relationship BETWEEN rows, so no row can declare it and it
|
|
1028
|
-
* has to live in code; it lives HERE, in the one place the resolver
|
|
1029
|
-
* reads, rather than inside a getter, where only that getter would
|
|
1030
|
-
* have been right and every other reader would have double-counted.
|
|
1031
|
-
*
|
|
1032
|
-
* The synaptic-vs-wired legality conflict remains the clinic's job.
|
|
1033
|
-
*/
|
|
1034
|
-
private chromeThatCounts;
|
|
1035
|
-
/**
|
|
1036
|
-
* The chrome lane, by pool. A LANE READER, like gearBonus above.
|
|
1037
|
-
*
|
|
1038
|
-
* Every pool now reads `bonus()`, with exactly two deliberate
|
|
1039
|
-
* exceptions, both in smartlinkTier and both commented there: that
|
|
1040
|
-
* method asks which TIER of smartlink you have, implant or clip-on,
|
|
1041
|
-
* and only the chrome lane can answer it.
|
|
1042
|
-
*/
|
|
1043
|
-
augBonus(kind: AugBonusKind): number;
|
|
1044
|
-
/** Installed qualities, by catalog key (kind 'quality'). */
|
|
1045
|
-
qualities: Set<string>;
|
|
1046
|
-
/**
|
|
1047
|
-
* IS THIS SKILL OR ATTRIBUTE FORBIDDEN OUTRIGHT to this character?
|
|
1048
|
-
*
|
|
1049
|
-
* Reads the same lane every other rule reads, so a second quality
|
|
1050
|
-
* (or a piece of chrome, or a metatype trait) that bars something
|
|
1051
|
-
* needs no new reader. A `chosen` forbid resolves through the
|
|
1052
|
-
* holder's pick, and where the pick names a skill GROUP the bar
|
|
1053
|
-
* falls on every member -- which is what Incompetent actually is
|
|
1054
|
-
* (p.81: "all skills in the skill group").
|
|
1055
|
-
*/
|
|
1056
|
-
isForbidden(of: 'skill' | 'attribute', name: string): boolean;
|
|
1057
|
-
/**
|
|
1058
|
-
* Incompetent (p.81) names ONE skill group, and this is the only place
|
|
1059
|
-
* that knows how to ask which. It was three separate reads of
|
|
1060
|
-
* `hasQuality(`incompetent-${skill}`)` -- the slug convention -- and a
|
|
1061
|
-
* fourth that counted slugs by prefix for notoriety. The quality is
|
|
1062
|
-
* now 'incompetent' with a pick, and a legacy slug resolves to the
|
|
1063
|
-
* same thing on load (qualities.ts LEGACY_CHOICE_KEYS), so this
|
|
1064
|
-
* answers the same for an old save and a new one.
|
|
1065
|
-
*/
|
|
1066
|
-
isIncompetentAt(skill: string): boolean;
|
|
1067
|
-
hasQuality(key: string): boolean;
|
|
1068
|
-
/**
|
|
1069
|
-
* Records a quality and applies its one-time creation effect. Lucky is
|
|
1070
|
-
* the only quality that edits an attribute (RAW raises the Edge ceiling;
|
|
1071
|
-
* with no attribute point-buy here, the point lands directly).
|
|
1072
|
-
*/
|
|
1073
|
-
/**
|
|
1074
|
-
* WHAT THE HOLDER PICKED, per ROW that demands a pick (ICatalogChoice):
|
|
1075
|
-
* slug -> the skill or attribute named.
|
|
1076
|
-
*
|
|
1077
|
-
* KEYED BY SLUG, NOT BY QUALITY (mjmcee, 2026-09-04). A Hardwire is an
|
|
1078
|
-
* augmentation that gives +2 to a chosen skill and asks exactly the
|
|
1079
|
-
* question Aptitude asks; a map that only qualities could reach would
|
|
1080
|
-
* mean a second map for chrome and a third for spells. One map, one
|
|
1081
|
-
* picker, one payload field.
|
|
1082
|
-
*/
|
|
1083
|
-
picks: Map<string, string>;
|
|
1084
|
-
/**
|
|
1085
|
-
* The former name for `picks`, back when only qualities could ask.
|
|
1086
|
-
* Kept as the SAME Map -- not a copy -- so a save written or read
|
|
1087
|
-
* through the old name still lands in one place.
|
|
1088
|
-
*/
|
|
1089
|
-
get qualityChoices(): Map<string, string>;
|
|
1090
|
-
/** Rating per rated quality (qualities.ts maxRating); absent = 1. */
|
|
1091
|
-
qualityRatings: Map<string, number>;
|
|
1092
|
-
/** The rating held, 0 when the quality is not held; a flat quality reads 1. */
|
|
1093
|
-
qualityRating(key: string): number;
|
|
1094
|
-
addQuality(rawKey: string, rating?: number): void;
|
|
1095
|
-
/**
|
|
1096
|
-
* A quality that MOVES AN ATTRIBUTE does it once, here, at install.
|
|
1097
|
-
*
|
|
1098
|
-
* Unlike a dice effect -- which qualityBonus re-reads on every roll
|
|
1099
|
-
* -- an attribute is a stored number, so it is edited rather than
|
|
1100
|
-
* summed. Lucky (p.76) is the long-standing case: RAW it raises the
|
|
1101
|
-
* Edge CEILING, and with no attribute point-buy here the point lands
|
|
1102
|
-
* directly. It used to be an `if (key === 'lucky')` in addQuality;
|
|
1103
|
-
* it is data now, which is what let Ugly and Doesn't Care (Cutting
|
|
1104
|
-
* Aces p.152-153) arrive as data too instead of as a second `if`.
|
|
1105
|
-
*
|
|
1106
|
-
* The floor is 1: no quality reduces an attribute below the minimum
|
|
1107
|
-
* a metahuman can have, and Ugly and Doesn't Care says so in as many
|
|
1108
|
-
* words ("minimum 1").
|
|
1109
|
-
*/
|
|
1110
|
-
private applyQualityAttributes;
|
|
1111
|
-
/**
|
|
1112
|
-
* The single tap every pool reads qualities through (cf. augBonus).
|
|
1113
|
-
*
|
|
1114
|
-
* DATA, NOT A SWITCH (2026-09-04). Every number below used to be a
|
|
1115
|
-
* `case` here; each one now lives on its own quality in qualities.ts
|
|
1116
|
-
* as an `effects` entry, in the same vocabulary gear and chrome
|
|
1117
|
-
* already speak. A quality that adds dice therefore needs no edit to
|
|
1118
|
-
* this method -- which is the property that matters, because the
|
|
1119
|
-
* cost of the old shape was that the catalog could only ever print a
|
|
1120
|
-
* quality's PROSE while its actual numbers lived somewhere a reader
|
|
1121
|
-
* could not reach.
|
|
1122
|
-
*
|
|
1123
|
-
* `perception` and `social` mirror the augBonus kinds of the same
|
|
1124
|
-
* names and are read at the same call sites, so a quality and a piece
|
|
1125
|
-
* of chrome that do the same thing are added the same way.
|
|
1126
|
-
*
|
|
1127
|
-
* `sleaze` and `attack` are the two Matrix ACTIONS this engine names
|
|
1128
|
-
* out loud -- hack.ts logs them as "Hack on the Fly (sleaze)" (p.240)
|
|
1129
|
-
* and "Brute Force (attack)" (p.238), and mark.ts states that placing
|
|
1130
|
-
* a mark IS one of those two. They exist because Codeslinger and
|
|
1131
|
-
* Codeblock (p.72 / p.80) modify ONE chosen Matrix action rather than
|
|
1132
|
-
* Matrix work in general, so a `hacking`-wide bonus would be a
|
|
1133
|
-
* different quality wearing the name. In the DATA they are spelled
|
|
1134
|
-
* `matrix-attack` / `matrix-sleaze`: EffectPool already spends the
|
|
1135
|
-
* bare word `attack` on the COMBAT attack pool, and a quality that
|
|
1136
|
-
* fired in a firefight because it shared a word with a Matrix action
|
|
1137
|
-
* would be a bug nobody would look for.
|
|
1138
|
-
*/
|
|
1139
|
-
qualityBonus(kind: 'sneak' | 'athletics' | 'matrix' | 'hacking' | 'piloting' | 'soak' | 'healing' | 'perception' | 'social' | 'sleaze' | 'attack' | 'leadership' | 'escape-artist' | 'biofeedback'): number;
|
|
1140
|
-
/**
|
|
1141
|
-
* Dice the QUALITIES add to one pool or skill. Deliberately its own
|
|
1142
|
-
* summation rather than a source inside applyingEffects(): the pools
|
|
1143
|
-
* are read as `augBonus(k) + qualityBonus(k)` at call sites that do
|
|
1144
|
-
* NOT also add gearBonus(k), and folding qualities into the shared
|
|
1145
|
-
* effect walk would have made every site that DOES add gearBonus
|
|
1146
|
-
* count a quality twice, silently, in a number nobody prints.
|
|
1147
|
-
*/
|
|
1148
|
-
/**
|
|
1149
|
-
* How much further this character may raise one skill or attribute
|
|
1150
|
-
* than anyone else -- Aptitude's chosen skill (p.72), Exceptional
|
|
1151
|
-
* Attribute's chosen attribute (p.73-74).
|
|
1152
|
-
*
|
|
1153
|
-
* The book states absolute numbers against ITS ceilings (a skill at
|
|
1154
|
-
* 7 rather than 6 at creation, 13 rather than 12 after). This engine
|
|
1155
|
-
* caps lower than the book does, so what carries across is the DELTA
|
|
1156
|
-
* -- one step further than anyone else gets -- applied to whatever
|
|
1157
|
-
* ceiling the engine is enforcing. Writing the book's 13 over a house
|
|
1158
|
-
* cap of 7 would not be more faithful, it would just be a bigger
|
|
1159
|
-
* number in the wrong system.
|
|
1160
|
-
*/
|
|
1161
|
-
qualityCap(of: 'skill' | 'attribute', name: string): number;
|
|
1162
|
-
private sumQualityEffects;
|
|
1163
|
-
private _firstImpressionUsed;
|
|
1164
|
-
/** Spends the first impression: +2 for the social roll happening NOW. */
|
|
1165
|
-
consumeFirstImpression(): number;
|
|
1166
|
-
/** SINner tax (p.84-85): the cut every payout loses to having a file. */
|
|
1167
|
-
get sinTaxRate(): number;
|
|
1168
|
-
paralysisFreeze: boolean;
|
|
1169
|
-
initiationGrade: number;
|
|
1170
|
-
/** Metamagics (casters/adepts) and echoes (technomancers), by key. */
|
|
1171
|
-
metamagics: Set<string>;
|
|
1172
|
-
hasMetamagic(key: string): boolean;
|
|
1173
|
-
/** Total karma EARNED in play -- spending it doesn't touch this. */
|
|
1174
|
-
careerKarma: number;
|
|
1175
|
-
private _notorietyReasons;
|
|
1176
|
-
/** Records an incident once; false means this exact stain already stands. */
|
|
1177
|
-
addNotoriety(reason: string): boolean;
|
|
1178
|
-
get notorietyReasons(): readonly string[];
|
|
1179
|
-
private _publicAwarenessReasons;
|
|
1180
|
-
/**
|
|
1181
|
-
* Records a Public Awareness incident once; false means this exact one
|
|
1182
|
-
* already stands.
|
|
1183
|
-
*
|
|
1184
|
-
* A SEPARATE TRACK FROM NOTORIETY, BECAUSE CANON SEPARATES THEM. p.368
|
|
1185
|
-
* lists what raises Public Awareness -- "leaving significant physical
|
|
1186
|
-
* evidence", "being seen by many eyewitnesses", "fighting with law
|
|
1187
|
-
* enforcement or some other High Threat Response team" -- and none of
|
|
1188
|
-
* those are on the notoriety list, which is about how you treat the
|
|
1189
|
-
* people you work with (betraying a Johnson, failing to honour a debt,
|
|
1190
|
-
* excessive damage and fatalities).
|
|
1191
|
-
*
|
|
1192
|
-
* Routing a noisy run through addNotoriety would have been one line
|
|
1193
|
-
* cheaper and would have stained the wrong record: notoriety is what
|
|
1194
|
-
* the shadows think of your PROFESSIONALISM, and it eats street cred
|
|
1195
|
-
* in socialRep. Being noticed by the public is not unprofessional.
|
|
1196
|
-
*
|
|
1197
|
-
* ADDITIVE TO THE DERIVED FLOOR, not a replacement. The engine already
|
|
1198
|
-
* derived awareness from cred + notoriety, which models "a big name is
|
|
1199
|
-
* a known face"; earned points sit on top rather than replacing it, so
|
|
1200
|
-
* nothing that read publicAwareness before reads lower now.
|
|
1201
|
-
*/
|
|
1202
|
-
addPublicAwareness(reason: string): boolean;
|
|
1203
|
-
get publicAwarenessReasons(): readonly string[];
|
|
1204
|
-
get streetCred(): number;
|
|
1205
|
-
/** The p.368 quality list, restricted to the qualities this game ships. */
|
|
1206
|
-
get qualityNotoriety(): number;
|
|
1207
|
-
get notoriety(): number;
|
|
1208
|
-
/**
|
|
1209
|
-
* p.368: how well the media, the authorities and the public at large
|
|
1210
|
-
* know your face. The derived floor (a big name is a known face) plus
|
|
1211
|
-
* the incidents that actually put you on a feed -- see
|
|
1212
|
-
* addPublicAwareness for why those are their own track.
|
|
1213
|
-
*/
|
|
1214
|
-
get publicAwareness(): number;
|
|
1215
|
-
/**
|
|
1216
|
-
* The dice a NAME is worth in shadow-side social work (haggle,
|
|
1217
|
-
* persuade): cred minus the stories that undercut it. RAW makes cred a
|
|
1218
|
-
* social LIMIT bonus; with no limit system here, net-rep dice carry
|
|
1219
|
-
* the same idea -- and notoriety eating cred keeps it self-balancing.
|
|
1220
|
-
*/
|
|
1221
|
-
get socialRep(): number;
|
|
1222
|
-
/** Explicit per-skill ratings; anything absent resolves via skillRating(). */
|
|
1223
|
-
skills: Partial<Record<SkillName, number>>;
|
|
1224
|
-
karma: number;
|
|
1225
|
-
/**
|
|
1226
|
-
* The effective rating for a skill: explicit rating if set; otherwise
|
|
1227
|
-
* combat skills fall back to the legacy `combatSkill` attribute (which
|
|
1228
|
-
* keeps every skill-less NPC seed rolling its historical pools), and
|
|
1229
|
-
* everything else is 0 (unskilled).
|
|
1230
|
-
*/
|
|
1231
|
-
skillRating(name: SkillName): number;
|
|
1232
|
-
/**
|
|
1233
|
-
* Which combat skill the current armament exercises: firearms for a
|
|
1234
|
-
* drawn gun, blades for a drawn melee weapon, unarmed for empty hands
|
|
1235
|
-
* (or anything holstered -- see weaponDrawn).
|
|
1236
|
-
*/
|
|
1237
|
-
activeCombatSkill(): SkillName;
|
|
1238
|
-
private initializeEquipment;
|
|
1239
|
-
get name(): string;
|
|
1240
|
-
/**
|
|
1241
|
-
* Fires AFTER a room change has fully landed (spot cleared, rooms
|
|
1242
|
-
* told, condition beat noted). Game hooks it to write the "move" save
|
|
1243
|
-
* beat, so where you stand in the hub is what a resume restores.
|
|
1244
|
-
* Distinct from onConditionChanged, which is the live-sheet lane and
|
|
1245
|
-
* is gated off for anonymous/bench runners -- a save is not.
|
|
1246
|
-
*/
|
|
1247
|
-
onRoomChanged?: (room: Room) => void;
|
|
1248
|
-
get currentLocation(): Room;
|
|
1249
|
-
set currentLocation(room: Room);
|
|
1250
|
-
private _atSpot?;
|
|
1251
|
-
get atSpot(): string | undefined;
|
|
1252
|
-
set atSpot(v: string | undefined);
|
|
1253
|
-
/**
|
|
1254
|
-
* WHICH PAPER YOU CARRY (player request 2026-08-25, twice: "I should
|
|
1255
|
-
* be able to see which sin I have active, and be able set it"). The
|
|
1256
|
-
* name of the Fake SIN item you present at counters and checkpoints.
|
|
1257
|
-
*
|
|
1258
|
-
* undefined = let the house pick, which is the old behaviour and
|
|
1259
|
-
* still the sane default: bestFakeSin() takes your highest rating.
|
|
1260
|
-
* Setting it matters because rating is not the only axis -- a burned
|
|
1261
|
-
* fake is gone, but a fake that has been READ at a venue is
|
|
1262
|
-
* remembered there, so a runner may want to spend the cheap paper on
|
|
1263
|
-
* a soft counter and keep the good one clean. See utilities/sin.ts.
|
|
1264
|
-
*/
|
|
1265
|
-
activeSin?: string;
|
|
1266
|
-
/**
|
|
1267
|
-
* STEPPING (player request 2026-08-25, "move south 2"): the exact
|
|
1268
|
-
* grid cell this actor stands in, when they have stepped somewhere
|
|
1269
|
-
* that is not a named place. Normally undefined -- utilities/spots.ts
|
|
1270
|
-
* derives a seat from `atSpot` instead, and that remains the rule for
|
|
1271
|
-
* everyone who simply walked to the bar.
|
|
1272
|
-
*
|
|
1273
|
-
* This is the ONE place an actor owns coordinates, and it is a
|
|
1274
|
-
* deliberate, narrow exception to the rule that `atSpot` is the whole
|
|
1275
|
-
* of an actor's position: tactical stepping has destinations no spot
|
|
1276
|
-
* name can express. `atSpot` still rides alongside it and still gates
|
|
1277
|
-
* every interaction (it is set to whatever place the new cell is
|
|
1278
|
-
* adjacent to, else the open floor), so talk/trade/melee/cover are
|
|
1279
|
-
* unchanged. Cleared with `atSpot` on any room change, and by any
|
|
1280
|
-
* "move to <spot>", which re-seats normally.
|
|
1281
|
-
*
|
|
1282
|
-
* NOT persisted: like the grid itself, it is transient geometry -- a
|
|
1283
|
-
* reload puts you back on your spot's own seat.
|
|
1284
|
-
*
|
|
1285
|
-
* Accessor for the live dot map (2026-09-01) -- a cell step reports.
|
|
1286
|
-
* Same-reference writes are the common no-op; a NEW object with equal
|
|
1287
|
-
* coordinates still fires, which is harmless (one coalesced beat).
|
|
1288
|
-
*/
|
|
1289
|
-
private _atCell?;
|
|
1290
|
-
get atCell(): {
|
|
1291
|
-
x: number;
|
|
1292
|
-
y: number;
|
|
1293
|
-
z: number;
|
|
1294
|
-
} | undefined;
|
|
1295
|
-
set atCell(v: {
|
|
1296
|
-
x: number;
|
|
1297
|
-
y: number;
|
|
1298
|
-
z: number;
|
|
1299
|
-
} | undefined);
|
|
1300
|
-
/** The spot this actor was SEEDED at -- i.e. the fixture they work
|
|
1301
|
-
* (a bartender's bar, a shopkeeper's counter). Seating puts them on
|
|
1302
|
-
* the service side of it while everyone else stands in front (see
|
|
1303
|
-
* utilities/spots.ts seatingIn). Set once by scene-factory; never
|
|
1304
|
-
* changes when they move, because a bartender who steps away is
|
|
1305
|
-
* still the bartender. */
|
|
1306
|
-
homeSpot?: string;
|
|
1307
|
-
/**
|
|
1308
|
-
* HOW FAR UP A CLIMB THIS ACTOR HAS BANKED, and toward what.
|
|
1309
|
-
*
|
|
1310
|
-
* SR5 p.134 climbs a wall over SUCCESSIVE tests -- each one's hits buy
|
|
1311
|
-
* metres and you keep them. This engine used to demand the whole
|
|
1312
|
-
* height in a single roll, which made a one-storey climb need six
|
|
1313
|
-
* hits at once: measured at 4% for the best climber in the game and
|
|
1314
|
-
* 0% for every archetype without the athletics skill.
|
|
1315
|
-
*
|
|
1316
|
-
* So a climb that falls short now HANGS THERE with its metres kept,
|
|
1317
|
-
* and the next attempt continues from them. Cleared on arrival, on a
|
|
1318
|
-
* fall, and whenever the actor ends up somewhere else -- banked
|
|
1319
|
-
* progress belongs to one wall, and carrying it to another would let
|
|
1320
|
-
* a player bank a metre here and cash it in across the room.
|
|
1321
|
-
*/
|
|
1322
|
-
climbProgress?: {
|
|
1323
|
-
target: string;
|
|
1324
|
-
meters: number;
|
|
1325
|
-
};
|
|
1326
|
-
get inventory(): Inventory;
|
|
1327
|
-
get equipment(): PlayerEquipment;
|
|
1328
|
-
set equipment(newEquipment: PlayerEquipment);
|
|
1329
|
-
private _carryCapOverrideKg?;
|
|
1330
|
-
get maxCarryingWeight(): number;
|
|
1331
|
-
set maxCarryingWeight(weight: number);
|
|
1332
|
-
get currentWeight(): number;
|
|
1333
|
-
addInventory(item: Item): void;
|
|
1334
|
-
/** Where papers live (p.443): the commlink, else the deck -- the PAN's master. */
|
|
1335
|
-
paperDevice(): Item | undefined;
|
|
1336
|
-
/** Every device that can hold papers, commlinks first. */
|
|
1337
|
-
paperDevices(): Item[];
|
|
1338
|
-
/** Every paper on every device. */
|
|
1339
|
-
papers(): Item[];
|
|
1340
|
-
/** Files a paper on a device; a license links to the presented fake SIN (utilities/sin.ts resolves "presented"). */
|
|
1341
|
-
filePaper(device: Item, paper: Item): void;
|
|
1342
|
-
/** Burns a fake SIN: gone from its device, and every license linked to it goes with it (p.443). Returns the licenses lost. */
|
|
1343
|
-
burnPaper(sin: Item): Item[];
|
|
1344
|
-
/** Every paper in the pack files onto the carried device; returns how many moved. */
|
|
1345
|
-
sweepPapersOntoDevice(): number;
|
|
1346
|
-
/** The commlinks on this runner: worn on the head, or in the pack. */
|
|
1347
|
-
commlinks(): Item[];
|
|
1348
|
-
/** Where a data soft lives (p.441-442): the deck if there is one, else a commlink. */
|
|
1349
|
-
softDevice(): Item | undefined;
|
|
1350
|
-
/** A soft in the storage of any device on you -- a chip in the bag is not installed. */
|
|
1351
|
-
hasSoft(key: string): boolean;
|
|
1352
|
-
/**
|
|
1353
|
-
* THE SOCIAL LIMIT (SR5 p.100-101): [(Charisma x 2) + Willpower + Essence]
|
|
1354
|
-
* / 3, rounded up, with Essence rounded up first (p.95, p.100 -- the
|
|
1355
|
-
* rounding rule is cited; the table row itself the RAG did not return,
|
|
1356
|
-
* see rag-table-rows-missing). A Shopsoft adds one when buying or
|
|
1357
|
-
* selling what it covers (p.442) -- see commands/haggle.ts.
|
|
1358
|
-
*/
|
|
1359
|
-
get socialLimit(): number;
|
|
1360
|
-
/** Every program chip in the pack installs into the carried deck; returns how many chips were consumed. */
|
|
1361
|
-
sweepProgramChipsIntoDeck(): number;
|
|
1362
|
-
removeInventory(item: Item): boolean;
|
|
1363
|
-
equip(item: Item): string;
|
|
1364
|
-
/** The word a player would use for a slot -- never the key ("body armor", not "torso.armorVest"). */
|
|
1365
|
-
private static readonly SLOT_WORDS;
|
|
1366
|
-
static slotWord(group: keyof PlayerEquipment, slot: string): string;
|
|
1367
|
-
/** True for the hand slots that hold a wielded weapon. */
|
|
1368
|
-
static isWeaponSlot(group: keyof PlayerEquipment, slot: string): boolean;
|
|
1369
|
-
/**
|
|
1370
|
-
* WHERE A THING ACTUALLY IS RIGHT NOW, which for a weapon is not a
|
|
1371
|
-
* property of the slot (user report, 2026-09-03: "when looking at
|
|
1372
|
-
* equipment, and I have a Katana Holstered, I should not see Right
|
|
1373
|
-
* hand Katana (weapon hand) -- it's not in hand, it's in holster").
|
|
1374
|
-
*
|
|
1375
|
-
* SLOT_WORDS is static, so it can only ever say where a weapon lives
|
|
1376
|
-
* when drawn. The weapon slot is really two places -- the hand and the
|
|
1377
|
-
* holster -- and `weaponDrawn` is which one. Everything else in the
|
|
1378
|
-
* game already knew: the HUD prints "Holstered:", equip prints "You
|
|
1379
|
-
* slide it into your holster", and the equipment screen's own top line
|
|
1380
|
-
* prints HOLSTERED. Only the worn listing underneath still read the
|
|
1381
|
-
* static word, so one screen contradicted itself.
|
|
1382
|
-
*
|
|
1383
|
-
* Instance method, not static, precisely because the answer depends on
|
|
1384
|
-
* the actor rather than the slot.
|
|
1385
|
-
*/
|
|
1386
|
-
wornSlotWord(group: keyof PlayerEquipment, slot: string): string;
|
|
1387
|
-
unequip(input: string): string;
|
|
1388
|
-
/**
|
|
1389
|
-
* The slot an ITEM wears in: the category decides (determineEquipmentSlot)
|
|
1390
|
-
* except where the name has to -- a trode net is Electronics like a
|
|
1391
|
-
* flashlight, and the flashlight has no slot. Kit devices (a deck, a
|
|
1392
|
-
* drone, uninstalled 'ware) answer null: they are carried, not worn.
|
|
1393
|
-
*/
|
|
1394
|
-
slotForItem(item: Item): {
|
|
1395
|
-
group: keyof PlayerEquipment;
|
|
1396
|
-
slot: string;
|
|
1397
|
-
} | null;
|
|
1398
|
-
/** Everything in the bag that has a slot and is not in it -- armor left in the pack (a real save: Armor Clothing carried, nothing worn). */
|
|
1399
|
-
wearablesInBag(): Item[];
|
|
1400
|
-
determineEquipmentSlot(input: string): {
|
|
1401
|
-
group: keyof PlayerEquipment;
|
|
1402
|
-
slot: string;
|
|
1403
|
-
} | null;
|
|
1404
|
-
canEquip(item: Item): boolean;
|
|
1405
|
-
private unequipBySlot;
|
|
1406
|
-
hear(actor: Player, message: string, opts?: {
|
|
1407
|
-
viaLink?: boolean;
|
|
1408
|
-
broadcast?: boolean;
|
|
1409
|
-
}): void | Promise<void>;
|
|
1410
|
-
see(actor: Player, verb: string, details?: string): void | Promise<void>;
|
|
1411
|
-
performAction(verb: string, details?: string): void;
|
|
1412
|
-
readonly _onSeenAction: ({ actor, verb, details }: {
|
|
1413
|
-
actor: Player;
|
|
1414
|
-
verb: string;
|
|
1415
|
-
details?: string;
|
|
1416
|
-
}) => void;
|
|
1417
|
-
readonly visitedRooms: Set<string>;
|
|
1418
|
-
enterRoom(room: Room): void;
|
|
1419
|
-
leaveRoom(): void;
|
|
1420
|
-
private static readonly ARMOR_CATEGORIES;
|
|
1421
|
-
get maxConditionBoxes(): number;
|
|
1422
|
-
get damageTaken(): number;
|
|
1423
|
-
get maxStunBoxes(): number;
|
|
1424
|
-
get stunTaken(): number;
|
|
1425
|
-
/**
|
|
1426
|
-
* SR5 wound modifier: -1 die on every pool per 3 full boxes of damage,
|
|
1427
|
-
* and the two tracks STACK -- being shot and drained both make you worse
|
|
1428
|
-
* at everything, including not getting shot.
|
|
1429
|
-
*/
|
|
1430
|
-
get woundModifier(): number;
|
|
1431
|
-
/** Dead: the physical track is full. */
|
|
1432
|
-
isDown(): boolean;
|
|
1433
|
-
/** Out cold: the stun track is full (but not necessarily dead). */
|
|
1434
|
-
isUnconscious(): boolean;
|
|
1435
|
-
/** Out of the fight either way -- the gate every action should check. */
|
|
1436
|
-
isIncapacitated(): boolean;
|
|
1437
|
-
/**
|
|
1438
|
-
* FIRST AID, once per set of wounds (SR5 p.205). Set by
|
|
1439
|
-
* utilities/first-aid.ts; cleared below the moment fresh damage lands,
|
|
1440
|
-
* because new damage IS a new set of wounds -- that clearing is the
|
|
1441
|
-
* whole definition of "set of wounds" in an engine with no clock to
|
|
1442
|
-
* measure p.205's one-hour window with.
|
|
1443
|
-
*/
|
|
1444
|
-
firstAidGiven: boolean;
|
|
1445
|
-
/**
|
|
1446
|
-
* "First Aid may not be applied if the character has been magically
|
|
1447
|
-
* healed" (p.205). Set by cast.ts's heal, cleared with the above.
|
|
1448
|
-
*/
|
|
1449
|
-
magicallyHealed: boolean;
|
|
1450
|
-
/** Applies damage boxes; returns the number actually taken. */
|
|
1451
|
-
/**
|
|
1452
|
-
* THE LIVE-SHEET HOOK (2026-09-01): Game sets this on the PRIMARY
|
|
1453
|
-
* player only -- never NPCs, never crew shells -- and every condition
|
|
1454
|
-
* mutator below fires it. The handler is fire-and-forget (the web
|
|
1455
|
-
* sheet's realtime overlay); a throw in it must never sour a damage
|
|
1456
|
-
* roll, so it is guarded where it is invoked.
|
|
1457
|
-
*/
|
|
1458
|
-
onConditionChanged?: () => void;
|
|
1459
|
-
/** PUBLIC so state that lives on ITEMS (a deck's program list) can
|
|
1460
|
-
* report through the owning player -- deck.ts load/unload calls it.
|
|
1461
|
-
* Guarded here once: reporting never wounds. */
|
|
1462
|
-
noteConditionChanged(): void;
|
|
1463
|
-
takeDamage(boxes: number): number;
|
|
1464
|
-
/** A fresh injury opens a fresh set of wounds: first aid is available
|
|
1465
|
-
* again, and whatever the mana did is now last wound's business. */
|
|
1466
|
-
private clearWoundSet;
|
|
1467
|
-
/**
|
|
1468
|
-
* Clears damage boxes; returns how many were actually healed (can be
|
|
1469
|
-
* less than asked when the track is nearly clean). Healing also restores
|
|
1470
|
-
* wound-modifier dice, since that's derived from damageTaken.
|
|
1471
|
-
*/
|
|
1472
|
-
healDamage(boxes: number): number;
|
|
1473
|
-
/**
|
|
1474
|
-
* Applies stun boxes; anything past a full stun track OVERFLOWS into the
|
|
1475
|
-
* physical track (SR's rule -- enough drain doesn't just knock you out,
|
|
1476
|
-
* it starts killing you). Returns what landed where.
|
|
1477
|
-
*/
|
|
1478
|
-
takeStun(boxes: number): {
|
|
1479
|
-
stun: number;
|
|
1480
|
-
overflow: number;
|
|
1481
|
-
};
|
|
1482
|
-
/** e.g. "■■■□□□□□□□ (3/10)" */
|
|
1483
|
-
conditionSummary(): string;
|
|
1484
|
-
/**
|
|
1485
|
-
* Clears stun boxes; returns how many were actually recovered. FATIGUE
|
|
1486
|
-
* boxes (see lockedFatigue) are untouchable until their need is met --
|
|
1487
|
-
* SR5e p.172: fatigue damage cannot be healed while the condition
|
|
1488
|
-
* causing it still exists. Eating/sleeping unlocks them (markFed /
|
|
1489
|
-
* markSlept), after which they heal like any stun.
|
|
1490
|
-
*/
|
|
1491
|
-
healStun(boxes: number): number;
|
|
1492
|
-
/** The stun track, same rendering as conditionSummary(). */
|
|
1493
|
-
stunSummary(): string;
|
|
1494
|
-
/**
|
|
1495
|
-
* The weapon actually in hand (right hand first, then left), or bare
|
|
1496
|
-
* fists. Damage value and the attack-pool bonus both come off the item's
|
|
1497
|
-
* quality rating -- gear is the whole progression system in this game,
|
|
1498
|
-
* so it has to be what combat power flows from.
|
|
1499
|
-
*/
|
|
1500
|
-
getWeaponProfile(): {
|
|
1501
|
-
name: string;
|
|
1502
|
-
damage: number;
|
|
1503
|
-
poolBonus: number;
|
|
1504
|
-
armorPen?: number;
|
|
1505
|
-
};
|
|
1506
|
-
/** The weapon riding in a hand slot, drawn or holstered. */
|
|
1507
|
-
getCarriedWeapon(): Item | null;
|
|
1508
|
-
/** Draws the carried weapon; returns it, or null if nothing changed
|
|
1509
|
-
* (unarmed, or already in hand). */
|
|
1510
|
-
drawWeapon(): Item | null;
|
|
1511
|
-
/** Stows the drawn weapon; returns it, or null if nothing changed. */
|
|
1512
|
-
stowWeapon(): Item | null;
|
|
1513
|
-
/** Total soak dice from every equipped armor-category item. */
|
|
1514
|
-
getArmorValue(): number;
|
|
1515
|
-
/**
|
|
1516
|
-
* ARMOR DOES NOT STACK (SR5 p.169, RAG-checked 2026-09-02): "only the
|
|
1517
|
-
* highest Armor rating applies; all other pieces only add bulk". A helmet
|
|
1518
|
-
* or shield is a "+" accessory and adds to that one piece (p.438). The
|
|
1519
|
-
* old sum let a vest under a coat out-armor either -- the same deviation
|
|
1520
|
-
* the trim rule below already closed for boots and gloves. `ignored` is
|
|
1521
|
-
* what the player is wearing for nothing, so the panel can say so.
|
|
1522
|
-
*/
|
|
1523
|
-
armorBreakdown(): {
|
|
1524
|
-
total: number;
|
|
1525
|
-
piece: Item | null;
|
|
1526
|
-
extras: {
|
|
1527
|
-
item: Item;
|
|
1528
|
-
bonus: number;
|
|
1529
|
-
}[];
|
|
1530
|
-
ignored: Item[];
|
|
1531
|
-
bonusCapped: number;
|
|
1532
|
-
encumbrance: number;
|
|
1533
|
-
};
|
|
1534
|
-
/** The p.169 encumbrance penalty on Agility and Reaction, as dice off those pools. */
|
|
1535
|
-
get encumbrancePenalty(): number;
|
|
1536
|
-
getAttackPool(): number;
|
|
1537
|
-
/**
|
|
1538
|
-
* The subdual pool: bare-hands work regardless of what's in the other
|
|
1539
|
-
* fist -- Agility + unarmed (never the drawn weapon's skill or bonus).
|
|
1540
|
-
* See subdue.ts.
|
|
1541
|
-
*/
|
|
1542
|
-
getUnarmedAttackPool(): number;
|
|
1543
|
-
getDefensePool(): number;
|
|
1544
|
-
getSoakPool(): number;
|
|
1545
|
-
/**
|
|
1546
|
-
* THE INITIATIVE ATTRIBUTE -- what the dice are added TO (p.159,
|
|
1547
|
-
* p.474). Per plane: Reaction + Intuition on the meat side (and in
|
|
1548
|
-
* AR, which is the same line), Data Processing + Intuition in VR
|
|
1549
|
-
* (p.229-230), Intuition x 2 astral (p.314).
|
|
1550
|
-
*
|
|
1551
|
-
* Plus the AR edge from an equipped, ONLINE commlink -- the tactical
|
|
1552
|
-
* overlay feeding you angles. Running silent kills the overlay along
|
|
1553
|
-
* with the broadcast, so going dark costs you speed on the draw: the
|
|
1554
|
-
* silent tradeoff grows teeth. Wounds slow you like everything else.
|
|
1555
|
-
*
|
|
1556
|
-
* SPLIT FROM THE DICE COUNT (getInitiativeDice) because SR5 keeps
|
|
1557
|
-
* them apart and the engine used to not: everything was piled into
|
|
1558
|
-
* one number and rolled as a hit-counting pool. The old name
|
|
1559
|
-
* `getInitiativePool` is gone rather than kept as an alias, so the
|
|
1560
|
-
* compiler names every caller that still thinks initiative is a pool.
|
|
1561
|
-
*/
|
|
1562
|
-
/** Meters already crossed this Combat Turn. Reset by beginExchange. */
|
|
1563
|
-
movedMetersThisTurn: number;
|
|
1564
|
-
/** Extra meters bought by a Sprint this turn (see sprintMeters). */
|
|
1565
|
-
sprintMetersThisTurn: number;
|
|
1566
|
-
/** p.161: Agility x 2. Past this you are RUNNING for the rest of the turn. */
|
|
1567
|
-
get walkRateMeters(): number;
|
|
1568
|
-
/** p.161: Agility x 4, before any Sprint. */
|
|
1569
|
-
get runRateMeters(): number;
|
|
1570
|
-
/** Everything you may still cross this Combat Turn. */
|
|
1571
|
-
get movementLeftMeters(): number;
|
|
1572
|
-
/**
|
|
1573
|
-
* RUNNING IS A STATE, NOT A CHOICE (p.161-162): "as soon as a
|
|
1574
|
-
* character exceeds their Walk Rate they are considered Running until
|
|
1575
|
-
* the end of the Combat Turn", and running costs -2 dice on everything
|
|
1576
|
-
* except the Sprint test itself.
|
|
1577
|
-
*
|
|
1578
|
-
* This is what gives the walk/run split teeth. Without it the two
|
|
1579
|
-
* rates would be a distinction with no consequence -- a number the
|
|
1580
|
-
* engine tracked and nothing ever read.
|
|
1581
|
-
*/
|
|
1582
|
-
get isRunningThisTurn(): boolean;
|
|
1583
|
-
/** -2 while running, else 0 (p.162 Running Modifiers). */
|
|
1584
|
-
get runningPenalty(): number;
|
|
1585
|
-
/** A fresh Combat Turn: the whole rate comes back, sprint included. */
|
|
1586
|
-
resetMovementTurn(): void;
|
|
1587
|
-
/**
|
|
1588
|
-
* METERS PER SPRINT HIT.
|
|
1589
|
-
*
|
|
1590
|
-
* Canon splits this by metatype: +2m per hit for humans, elves and
|
|
1591
|
-
* orks, +1m for dwarfs and trolls (p.162).
|
|
1592
|
-
*
|
|
1593
|
-
* THIS ENGINE HAS NO METATYPES -- checked, not assumed: there is no
|
|
1594
|
-
* metatype field on Player, none in the player seed, none in chargen,
|
|
1595
|
-
* and no dwarf/troll/elf/ork anywhere outside item prose. Every
|
|
1596
|
-
* character it can currently represent is a human-baseline one, so the
|
|
1597
|
-
* human value is not a shortcut here, it is the only row of that table
|
|
1598
|
-
* this engine has a character for.
|
|
1599
|
-
*
|
|
1600
|
-
* Inventing a metatype to carry one modifier would be the tail wagging
|
|
1601
|
-
* the dog: metatype in SR5 sets attribute maxima, racial bonuses and
|
|
1602
|
-
* chargen priorities, and adding a half-real one so Sprint could
|
|
1603
|
-
* consult it would put a lie in the character model to decorate a
|
|
1604
|
-
* movement rule. When metatypes land, this constant is the one line
|
|
1605
|
-
* that has to become a lookup.
|
|
1606
|
-
*/
|
|
1607
|
-
static readonly SPRINT_METERS_PER_HIT = 2;
|
|
1608
|
-
getInitiativeAttribute(): number;
|
|
1609
|
-
/**
|
|
1610
|
-
* HOW MANY D6 THE INITIATIVE TEST ROLLS (p.159 chart, p.474).
|
|
1611
|
-
*
|
|
1612
|
-
* Everyone starts at 1D6. Augmentations add dice -- wired reflexes I
|
|
1613
|
-
* and II are literally "+1 / +2 initiative dice" in their own text,
|
|
1614
|
-
* which the engine already said and then spent as pool dice instead.
|
|
1615
|
-
* The other planes REPLACE the base rather than adding to it:
|
|
1616
|
-
*
|
|
1617
|
-
* AR / meat 1D6 + augs (p.474)
|
|
1618
|
-
* cold-sim 3D6 (p.229-230, p.231 user modes)
|
|
1619
|
-
* hot-sim 4D6, +1 echo (p.230; Overclocking p.258)
|
|
1620
|
-
* rigging VR 3D6 cold / 4D6 hot (p.266)
|
|
1621
|
-
* astral 3D6 (p.159 chart 2D6 base + 1; p.314)
|
|
1622
|
-
*
|
|
1623
|
-
* Chrome does not follow you out of your body: wired reflexes are
|
|
1624
|
-
* body speed, and VR/astral initiative is not the body's. That is why
|
|
1625
|
-
* augBonus('initiative') rides only the meat line -- the same place
|
|
1626
|
-
* the old code had it.
|
|
1627
|
-
*
|
|
1628
|
-
* The 5D6 ceiling is enforced in rollInitiativeScore, not here, so
|
|
1629
|
-
* every source obeys it without each one remembering to.
|
|
1630
|
-
*/
|
|
1631
|
-
getInitiativeDice(): number;
|
|
1632
|
-
/**
|
|
1633
|
-
* If an edge boost is armed (see commands/edge.ts), consume it: returns
|
|
1634
|
-
* the bonus dice for the strike being rolled right now and disarms.
|
|
1635
|
-
* Called by the strike-profile builders, so the boost lands on the next
|
|
1636
|
-
* attack/subdue/manabolt this actor initiates.
|
|
1637
|
-
*/
|
|
1638
|
-
consumeEdgeBoost(): number;
|
|
1639
|
-
lifestyleEdgeBonus: number;
|
|
1640
|
-
ateThisCycle: boolean;
|
|
1641
|
-
sleptThisCycle: boolean;
|
|
1642
|
-
hungerStreak: number;
|
|
1643
|
-
sleepStreak: number;
|
|
1644
|
-
private _hungerFatigue;
|
|
1645
|
-
private _sleepFatigue;
|
|
1646
|
-
/** Stun boxes no recovery can touch until their need is met. */
|
|
1647
|
-
get lockedFatigue(): number;
|
|
1648
|
-
get hungerFatigue(): number;
|
|
1649
|
-
get sleepFatigue(): number;
|
|
1650
|
-
/** A real meal: hunger resets and hunger-fatigue unlocks (heals normally now). */
|
|
1651
|
-
markFed(): void;
|
|
1652
|
-
/** A real sleep (a bed, not a jobsite corner): sleep debt resets and unlocks. */
|
|
1653
|
-
markSlept(): void;
|
|
1654
|
-
/** Records freshly-taken stun as need-locked fatigue. */
|
|
1655
|
-
addLockedFatigue(kind: 'hunger' | 'sleep', boxes: number): void;
|
|
1656
|
-
/**
|
|
1657
|
-
* New job bookkeeping -- the boost and the once-per-job haggle always
|
|
1658
|
-
* reset, but the edge POOL only refills when the runner left fed and
|
|
1659
|
-
* slept (SR5e p.56: a fulfilling meal and a good night's sleep).
|
|
1660
|
-
*/
|
|
1661
|
-
refreshEdge(wellRested?: boolean): void;
|
|
1662
|
-
/** Base casting dice for a mundane casting from a formula/grimoire. */
|
|
1663
|
-
private static readonly BASE_MAGIC_POOL;
|
|
1664
|
-
/** Awakened: innate talent, no gear required. Adepts count -- their
|
|
1665
|
-
* aura burns like any mage's, and assensing works -- but they channel
|
|
1666
|
-
* magic into the body, not spells (see knowsSpell/isCaster). */
|
|
1667
|
-
/**
|
|
1668
|
-
* HOW MANY POWER POINTS THIS CHARACTER ACTUALLY HAS.
|
|
1669
|
-
*
|
|
1670
|
-
* A full adept gets points equal to their Magic, free (SR5 p.69), so
|
|
1671
|
-
* for them this IS `magic` -- which is why the engine's long-standing
|
|
1672
|
-
* `floor(magic / 2)` adept bonus was already, unknowingly, a Power
|
|
1673
|
-
* Point formula. A mystic adept BUYS theirs, so for them it is what
|
|
1674
|
-
* they bought.
|
|
1675
|
-
*
|
|
1676
|
-
* Reading the bonus off this one number rather than off the boolean is
|
|
1677
|
-
* what let the mystic adept exist without moving a single existing
|
|
1678
|
-
* character: for every adept in play, `magic` and `effectivePowerPoints`
|
|
1679
|
-
* are the same value, so `floor(pp / 2)` returns exactly what
|
|
1680
|
-
* `floor(magic / 2)` returned.
|
|
1681
|
-
*/
|
|
1682
|
-
get effectivePowerPoints(): number;
|
|
1683
|
-
/**
|
|
1684
|
-
* A MYSTIC ADEPT: full magic, bought powers, and no astral projection.
|
|
1685
|
-
*
|
|
1686
|
-
* Not a flag of its own, because it does not need one -- buying power
|
|
1687
|
-
* points while not being a full adept IS the condition, and a mystic
|
|
1688
|
-
* adept who bought none is mechanically a magician, which is also what
|
|
1689
|
-
* canon says they would be.
|
|
1690
|
-
*/
|
|
1691
|
-
get isMysticAdept(): boolean;
|
|
1692
|
-
/**
|
|
1693
|
-
* Magic-as-muscle: half the character's Power Points ride every
|
|
1694
|
-
* meat-plane pool (SR5's adept powers, compressed to one number the
|
|
1695
|
-
* way this engine compresses every other gear/aug bonus).
|
|
1696
|
-
*
|
|
1697
|
-
* `withMetamagic` is false for the defence-sense site, which never
|
|
1698
|
-
* counted the Power Point metamagic and still should not -- that
|
|
1699
|
-
* initiation buys a point of magic-as-muscle for striking, and
|
|
1700
|
-
* widening it here would be a silent buff riding in on a refactor.
|
|
1701
|
-
*/
|
|
1702
|
-
adeptPoolBonus(withMetamagic?: boolean): number;
|
|
1703
|
-
/**
|
|
1704
|
-
* UN-COMPRESSING THE ADEPT (SR5 p.308-310). A character who CHOSE powers
|
|
1705
|
-
* (`adeptPowers` present) gets each power's own effect and NOT the
|
|
1706
|
-
* compressed floor(pp/2); one who never chose (undefined -- every save
|
|
1707
|
-
* from before selection) keeps the compressed bonus exactly. The two
|
|
1708
|
-
* models never stack, which is the double-count this split had to avoid.
|
|
1709
|
-
*
|
|
1710
|
-
* Attack dice come from Improved Ability (Combat); defence dice from
|
|
1711
|
-
* Combat Sense. The Power Point metamagic stays what it always was --
|
|
1712
|
-
* a point of magic-as-muscle on the STRIKING side only.
|
|
1713
|
-
*/
|
|
1714
|
-
/**
|
|
1715
|
-
* The COMPRESSED adept's flat bonus, or zero for anyone who chose
|
|
1716
|
-
* powers. Split out of adeptAttackBonus so the combat pools can read
|
|
1717
|
-
* `bonus()` for every other source without counting the chosen powers
|
|
1718
|
-
* twice -- they arrive through the adept lane, and this is the only
|
|
1719
|
-
* part of the adept that never became data.
|
|
1720
|
-
*/
|
|
1721
|
-
private adeptCompressedBonus;
|
|
1722
|
-
adeptAttackBonus(): number;
|
|
1723
|
-
adeptDefenseBonus(): number;
|
|
1724
|
-
/** Mystic Armor (p.309): +1 Armor per level. Zero under the compressed
|
|
1725
|
-
* model -- the flat pool bonus never granted armor, so none is owed. */
|
|
1726
|
-
adeptArmorBonus(): number;
|
|
1727
|
-
/** Improved Reflexes (p.309): the initiative dice it adds. Zero under
|
|
1728
|
-
* the compressed model. */
|
|
1729
|
-
adeptReactionBonus(): number;
|
|
1730
|
-
/** Killing Hands (p.309): unarmed strikes deal PHYSICAL damage. */
|
|
1731
|
-
hasKillingHands(): boolean;
|
|
1732
|
-
isAwakened(): boolean;
|
|
1733
|
-
/** Technomancer: living persona -- the Matrix without a deck (see ICombatAttributes.resonance). */
|
|
1734
|
-
/**
|
|
1735
|
-
* THE ASPECTED MAGICIAN (SR5 p.69): one magical group, astral
|
|
1736
|
-
* perception but no projection. Adepts and mystic adepts cannot be
|
|
1737
|
-
* aspected (the factory refuses the combination); a burned-out aspect
|
|
1738
|
-
* is simply not Awakened.
|
|
1739
|
-
*/
|
|
1740
|
-
get isAspected(): boolean;
|
|
1741
|
-
/** Sorcery -- spellcasting, counterspelling, sustaining: full magicians and Sorcerers. */
|
|
1742
|
-
canWorkSorcery(): boolean;
|
|
1743
|
-
/** Conjuring -- summoning, binding, banishing: full magicians and Conjurers. */
|
|
1744
|
-
canConjure(): boolean;
|
|
1745
|
-
/** Astral projection: full magicians only (p.69: aspected "cannot astrally project"). */
|
|
1746
|
-
canProject(): boolean;
|
|
1747
|
-
isTechnomancer(): boolean;
|
|
1748
|
-
private _sustainedArmor;
|
|
1749
|
-
get sustainedArmor(): number;
|
|
1750
|
-
setSustainedArmor(bonus: number): void;
|
|
1751
|
-
/**
|
|
1752
|
-
* REST BREAKS CONCENTRATION (yZSAdPAvwMpzjnTaM; SR5 p.251: "You
|
|
1753
|
-
* can't sustain Complex Forms when you're unconscious", and a
|
|
1754
|
-
* sustained spell asks the same of its caster). Closing your eyes to
|
|
1755
|
-
* sleep drops EVERY working this character is personally holding --
|
|
1756
|
-
* forms, spells, barriers, all six sustains in one sweep, because
|
|
1757
|
-
* fixing rest for the one kind the report named would leave a mage's
|
|
1758
|
-
* armor humming through the night the way the thread used to.
|
|
1759
|
-
*
|
|
1760
|
-
* A form a SPRITE sustains is untouched by design: the sprite took
|
|
1761
|
-
* the task precisely so it holds while the technomancer does not
|
|
1762
|
-
* (p.256, commands/sustain.ts) -- the sprite doesn't sleep.
|
|
1763
|
-
*
|
|
1764
|
-
* Returns how many workings dropped, so rest can say so once.
|
|
1765
|
-
*/
|
|
1766
|
-
/**
|
|
1767
|
-
* Everything currently HELD, by name -- the live sheet's `sustained`
|
|
1768
|
-
* field (contract 2026-09-01). Composed at read time from the named
|
|
1769
|
-
* sustain fields, so no sustain site needs a hook: the list rides the
|
|
1770
|
-
* next report, which in a fight is seconds away. Empty = actively
|
|
1771
|
-
* holding nothing.
|
|
1772
|
-
*/
|
|
1773
|
-
sustainedNames(): string[];
|
|
1774
|
-
releaseSustainedWorkings(): number;
|
|
1775
|
-
private _sustainedInvisibility;
|
|
1776
|
-
get sustainedInvisibility(): boolean;
|
|
1777
|
-
set sustainedInvisibility(v: boolean);
|
|
1778
|
-
private _sustainedReflexes;
|
|
1779
|
-
get sustainedReflexes(): boolean;
|
|
1780
|
-
set sustainedReflexes(v: boolean);
|
|
1781
|
-
/** The sustained PHYSICAL BARRIER spell (ruling 2026-08-24): seals
|
|
1782
|
-
* one exit of one room while held -- go.ts and move refuse passage
|
|
1783
|
-
* for everyone (the caster included; walls don't play favorites).
|
|
1784
|
-
* Session-only, like every sustain. */
|
|
1785
|
-
private _sustainedBarrier?;
|
|
1786
|
-
get sustainedBarrier(): {
|
|
1787
|
-
roomName: string;
|
|
1788
|
-
direction: string;
|
|
1789
|
-
force: number;
|
|
1790
|
-
} | undefined;
|
|
1791
|
-
set sustainedBarrier(v: {
|
|
1792
|
-
roomName: string;
|
|
1793
|
-
direction: string;
|
|
1794
|
-
force: number;
|
|
1795
|
-
} | undefined);
|
|
1796
|
-
/** The MANA BARRIER twin (canon p.294, RAG-checked): blocks SPIRITS
|
|
1797
|
-
* and astral forms at the sealed exit; living mundanes and physical
|
|
1798
|
-
* objects pass freely. Same lifecycle as sustainedBarrier. */
|
|
1799
|
-
private _sustainedManaBarrier?;
|
|
1800
|
-
get sustainedManaBarrier(): {
|
|
1801
|
-
roomName: string;
|
|
1802
|
-
direction: string;
|
|
1803
|
-
force: number;
|
|
1804
|
-
} | undefined;
|
|
1805
|
-
set sustainedManaBarrier(v: {
|
|
1806
|
-
roomName: string;
|
|
1807
|
-
direction: string;
|
|
1808
|
-
force: number;
|
|
1809
|
-
} | undefined);
|
|
1810
|
-
/** `hits` is the original threading test's hits -- the number Kill
|
|
1811
|
-
* Complex Form (p.250) eats away at. Optional so a form woven by
|
|
1812
|
-
* anything that predates that bookkeeping still reads sanely;
|
|
1813
|
-
* unravel.ts falls back to the Level. */
|
|
1814
|
-
private _sustainedForms;
|
|
1815
|
-
/** Sustained complex forms. Writers push/splice it directly (sustain.ts,
|
|
1816
|
-
* thread.ts, game.ts), so the array itself is observed: every element
|
|
1817
|
-
* write fires the beat, and assigning a fresh array re-wraps it. */
|
|
1818
|
-
get sustainedForms(): {
|
|
1819
|
-
key: string;
|
|
1820
|
-
level: number;
|
|
1821
|
-
hits?: number;
|
|
1822
|
-
}[];
|
|
1823
|
-
set sustainedForms(v: {
|
|
1824
|
-
key: string;
|
|
1825
|
-
level: number;
|
|
1826
|
-
hits?: number;
|
|
1827
|
-
}[]);
|
|
1828
|
-
private observedForms;
|
|
1829
|
-
/** Diagnostics: +2 to matrix action pools while sustained. */
|
|
1830
|
-
get formMatrixBonus(): number;
|
|
1831
|
-
/** Static Veil: +2 to matrix defense while sustained. */
|
|
1832
|
-
get formDefenseBonus(): number;
|
|
1833
|
-
/** The Force each sustained spell was cast at (cast.ts records it) -- Focused Concentration reads it. */
|
|
1834
|
-
sustainedForces: Map<"armor" | "invisibility" | "reflexes", number>;
|
|
1835
|
-
noteSustainedForce(kind: 'armor' | 'invisibility' | 'reflexes', force: number): void;
|
|
1836
|
-
/** GREMLINS (p.81): the 1s a glitch needs, one fewer per rating, on external equipment -- the deck. */
|
|
1837
|
-
get deckGremlins(): number;
|
|
1838
|
-
get sustainingPenalty(): number;
|
|
1839
|
-
private _astralPerceiving;
|
|
1840
|
-
/** Assensing (SR5 p.312): the live sheet shows it, so a change is a
|
|
1841
|
-
* condition beat. Accessor pair -- every writer compiles unchanged. */
|
|
1842
|
-
get astralPerceiving(): boolean;
|
|
1843
|
-
set astralPerceiving(v: boolean);
|
|
1844
|
-
sneaking: boolean;
|
|
1845
|
-
riggedDrone?: Item;
|
|
1846
|
-
/** Whether the ridden drone carries a weapon mount (its vehicle block, catalog v13; the name for generated frames). */
|
|
1847
|
-
get droneArmed(): boolean;
|
|
1848
|
-
dumpshockedUntil: number;
|
|
1849
|
-
get dumpshocked(): boolean;
|
|
1850
|
-
haggledThisJob: boolean;
|
|
1851
|
-
liquidCourage: boolean;
|
|
1852
|
-
/** Spends the drink: returns its bonus die for the roll happening NOW. */
|
|
1853
|
-
consumeLiquidCourage(): number;
|
|
1854
|
-
cameFrom?: {
|
|
1855
|
-
room: string;
|
|
1856
|
-
back: string;
|
|
1857
|
-
};
|
|
1858
|
-
socialMarks: Set<string>;
|
|
1859
|
-
/** The best Focus item on this actor, if any -- by Force (catalog v13: ratingValue). */
|
|
1860
|
-
getBestFocus(): Item | undefined;
|
|
1861
|
-
getMagicPool(): number;
|
|
1862
|
-
/**
|
|
1863
|
-
* A magician/mystic adept knows the spells in their CHOSEN spellbook
|
|
1864
|
-
* (SR5 p.300, up to Magic x 2, picked at creation). A carried grimoire or
|
|
1865
|
-
* the spell's formula teaches beyond it, as it does a mundane.
|
|
1866
|
-
*
|
|
1867
|
-
* GRANDFATHERED: `knownSpells === undefined` means "knows every spell" --
|
|
1868
|
-
* the pre-selection behaviour, so any save from before spell selection,
|
|
1869
|
-
* and any character the web never sent a spellbook for, keeps casting
|
|
1870
|
-
* anything. Only a chosen list narrows them to it.
|
|
1871
|
-
*/
|
|
1872
|
-
knowsSpell(spellName: string): boolean;
|
|
1873
|
-
/**
|
|
1874
|
-
* The gate for attempting magic at all (ward bypass included): innate
|
|
1875
|
-
* talent, or any magic gear.
|
|
1876
|
-
*/
|
|
1877
|
-
isCaster(): boolean;
|
|
1878
|
-
get lifestyleChoices(): LifestyleChoices;
|
|
1879
|
-
set lifestyleChoices(choices: LifestyleChoices);
|
|
1880
|
-
get currency(): number;
|
|
1881
|
-
set currency(amount: number);
|
|
1882
|
-
adjustCurrency(delta: number): void;
|
|
1883
|
-
}
|