@maka/maka-cli 5.61.0 → 5.63.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 +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/advance.js +4 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/advance.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/ar.d.ts +34 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/ar.js +93 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/ar.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/backlog.js +4 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/backlog.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/breach.d.ts +7 -2
- package/bundle/typescript/src/commands/game/sideQuest/commands/breach.js +7 -2
- package/bundle/typescript/src/commands/game/sideQuest/commands/breach.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/bypass-command.d.ts +6 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/bypass-command.js +56 -7
- package/bundle/typescript/src/commands/game/sideQuest/commands/bypass-command.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/call.d.ts +9 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/call.js +62 -23
- package/bundle/typescript/src/commands/game/sideQuest/commands/call.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/catalog.js +5 -5
- package/bundle/typescript/src/commands/game/sideQuest/commands/catalog.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/contacts.js +41 -2
- package/bundle/typescript/src/commands/game/sideQuest/commands/contacts.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/crew.d.ts +7 -14
- package/bundle/typescript/src/commands/game/sideQuest/commands/crew.js +86 -51
- package/bundle/typescript/src/commands/game/sideQuest/commands/crew.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/deck.js +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/deck.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/docwagon.js +4 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/docwagon.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/equipment.js +6 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/equipment.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/follow.d.ts +37 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/follow.js +216 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/follow.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/go.js +23 -5
- package/bundle/typescript/src/commands/game/sideQuest/commands/go.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/hack.js +30 -3
- package/bundle/typescript/src/commands/game/sideQuest/commands/hack.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/install.js +4 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/install.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/inv.js +6 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/inv.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/jobs.js +3 -3
- package/bundle/typescript/src/commands/game/sideQuest/commands/jobs.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/lead.js +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/lead.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/look.d.ts +21 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/look.js +165 -59
- package/bundle/typescript/src/commands/game/sideQuest/commands/look.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/map.js +5 -2
- package/bundle/typescript/src/commands/game/sideQuest/commands/map.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/mark.js +6 -4
- package/bundle/typescript/src/commands/game/sideQuest/commands/mark.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/note.js +9 -3
- package/bundle/typescript/src/commands/game/sideQuest/commands/note.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/overwatch.js +3 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/overwatch.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/pan.js +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/pan.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/players.js +4 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/players.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/quality-trade.js +4 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/quality-trade.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/roles.js +4 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/roles.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/say.d.ts +21 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/say.js +95 -8
- package/bundle/typescript/src/commands/game/sideQuest/commands/say.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/sheet.js +3 -3
- package/bundle/typescript/src/commands/game/sideQuest/commands/sheet.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/silent.d.ts +8 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/silent.js +13 -2
- package/bundle/typescript/src/commands/game/sideQuest/commands/silent.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/sin.js +4 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/sin.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/snoop.js +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/snoop.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/solve.js +11 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/solve.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/spells.js +5 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/spells.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/stance.js +21 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/stance.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/tap.d.ts +49 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/tap.js +181 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/tap.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/thread.js +4 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/thread.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/unlock.js +6 -2
- package/bundle/typescript/src/commands/game/sideQuest/commands/unlock.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.d.ts +13 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.js +85 -4
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-seed-generator.js +43 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-seed-generator.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/game.d.ts +9 -0
- package/bundle/typescript/src/commands/game/sideQuest/game.js +90 -25
- package/bundle/typescript/src/commands/game/sideQuest/game.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/headless.js +58 -0
- package/bundle/typescript/src/commands/game/sideQuest/headless.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/npc.d.ts +30 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/npc.js +234 -63
- package/bundle/typescript/src/commands/game/sideQuest/models/npc.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/player.d.ts +19 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/player.js +31 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/player.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/puzzle.d.ts +23 -4
- package/bundle/typescript/src/commands/game/sideQuest/models/puzzle.js +54 -8
- package/bundle/typescript/src/commands/game/sideQuest/models/puzzle.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/scene.js +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/scene.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/types/save-file.d.ts +6 -0
- package/bundle/typescript/src/commands/game/sideQuest/ui.js +21 -0
- package/bundle/typescript/src/commands/game/sideQuest/ui.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/ar.d.ts +74 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/ar.js +184 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/ar.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/earshot.d.ts +76 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/earshot.js +98 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/earshot.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/generation-capture.js +21 -9
- package/bundle/typescript/src/commands/game/sideQuest/utilities/generation-capture.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/grid-view.d.ts +16 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/grid-view.js +34 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/grid-view.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/room-grid.js +34 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/room-grid.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/room-view.js +3 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/room-view.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/shared-run.d.ts +26 -2
- package/bundle/typescript/src/commands/game/sideQuest/utilities/shared-run.js +92 -7
- package/bundle/typescript/src/commands/game/sideQuest/utilities/shared-run.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/spots.d.ts +19 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/spots.js +28 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/spots.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/surveillance.d.ts +33 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/surveillance.js +61 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/surveillance.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js +12 -11
- package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js.map +1 -1
- package/bundle/typescript/src/maka.js +26 -0
- package/bundle/typescript/src/maka.js.map +1 -1
- package/bundle/typescript/src/tools/sdk-loader/relocate.js +7 -0
- package/bundle/typescript/src/tools/sdk-loader/relocate.js.map +1 -1
- package/bundle/typescript/src/tools/self-spawn/self-spawn.d.ts +10 -0
- package/bundle/typescript/src/tools/self-spawn/self-spawn.js +68 -0
- package/bundle/typescript/src/tools/self-spawn/self-spawn.js.map +1 -0
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@maka/maka-cli",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.63.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"summary": "A command line tool for scaffolding Meteor 2.x applications using either React.",
|
|
6
6
|
"description": "A command line tool for scaffolding Meteor 2.x applications using React.",
|
|
@@ -132,7 +132,10 @@ export class AdvanceCommand extends Command {
|
|
|
132
132
|
}
|
|
133
133
|
listAdvancement() {
|
|
134
134
|
const actor = this.actor;
|
|
135
|
-
|
|
135
|
+
// BANNER RAILS REMOVED (playtest 2026-08-26, on the crew panel:
|
|
136
|
+
// "headers like that are too cluttery"). The heading itself stays --
|
|
137
|
+
// it carries what the panel divider can't say for it.
|
|
138
|
+
const lines = [`TRAINING (karma: ${actor.karma})`, `Skills${hint(' (new rating x2)')}:`];
|
|
136
139
|
for (const skill of SKILL_NAMES) {
|
|
137
140
|
const current = actor.skillRating(skill);
|
|
138
141
|
const incompetent = actor.hasQuality(`incompetent-${skill}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"advance.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/advance.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"advance.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/advance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAY,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAa,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,cAAe,SAAQ,OAAO;IAC/B,MAAM,CAAC,IAAI,GAAG,SAAS,CAAC;IACxB,MAAM,CAAC,WAAW,GAAG,iJAAiJ,CAAC;IAEzK,MAAM,CAAU,UAAU,GAAG,CAAC,CAAC;IAC/B,MAAM,CAAU,UAAU,GAAG,CAAC,CAAC;IAE/B,MAAM,CAAU,UAAU,GAAG;QACnC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW;QACtD,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW;KACtD,CAAC;IAEX,KAAK,CAAC,OAAO,CAAC,OAAiB,EAAE;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAEzB,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;YACrB,OAAO,gDAAgD,CAAC;QAC1D,CAAC;QACD,IAAI,KAAK,CAAC,eAAe,EAAE,QAAQ,KAAK,WAAW,EAAE,CAAC;YACpD,OAAO,4EAA4E,CAAC;QACtF,CAAC;QACD,IAAI,KAAK,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;YAC3B,OAAO,uEAAuE,CAAC;QACjF,CAAC;QAED,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC;QAChC,CAAC;QAED,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC;QAC7F,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,+CAA+C,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QACvI,CAAC;QAED,IAAK,cAAc,CAAC,UAAgC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACtE,OAAO,IAAI,CAAC,cAAc,CAAC,MAAkD,CAAC,CAAC;QACjF,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,MAAmB,CAAC,CAAC;IAC9C,CAAC;IAEO,UAAU,CAAC,KAAgB;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAEzB,mEAAmE;QACnE,mEAAmE;QACnE,IAAI,KAAK,CAAC,UAAU,CAAC,eAAe,KAAK,EAAE,CAAC,EAAE,CAAC;YAC7C,OAAO,+CAA+C,KAAK,oDAAoD,IAAI,CAAC,aAAa,CAAC,yCAAyC,CAAC;QAC9K,CAAC;QAED,MAAM,OAAO,GAAG,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,OAAO,IAAI,cAAc,CAAC,UAAU,EAAE,CAAC;YACzC,OAAO,QAAQ,KAAK,kBAAkB,OAAO,iEAAiE,CAAC;QACjH,CAAC;QAED,MAAM,IAAI,GAAG,OAAO,GAAG,CAAC,CAAC;QACzB,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC;QACtB,IAAI,KAAK,CAAC,KAAK,GAAG,IAAI,EAAE,CAAC;YACvB,OAAO,WAAW,KAAK,OAAO,IAAI,UAAU,IAAI,sBAAsB,KAAK,CAAC,KAAK,qBAAqB,CAAC;QACzG,CAAC;QAED,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC;QACpB,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC1C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,aAAa,KAAK,OAAO,IAAI,WAAW,IAAI,WAAW,KAAK,CAAC,KAAK,SAAS,CAAC,CAAC;QAC5G,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;QAC1B,OAAO,aAAa,KAAK,qBAAqB,OAAO,OAAO,IAAI,MAAM,IAAI,iBAAiB,KAAK,CAAC,KAAK,SAAS,CAAC;IAClH,CAAC;IAEO,cAAc,CAAC,IAA8C;QACnE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAEzB,kEAAkE;QAClE,4DAA4D;QAC5D,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;YAC7C,MAAM,IAAI,GAAG,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC;YACtE,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;gBACd,OAAO,IAAI,KAAK,OAAO;oBACrB,CAAC,CAAC,uEAAuE;oBACzE,CAAC,CAAC,mEAAmE,CAAC;YAC1E,CAAC;YACD,oEAAoE;YACpE,MAAM,SAAS,GAAG,cAAc,CAAC,UAAU,GAAG,KAAK,CAAC,eAAe,CAAC;YACpE,IAAI,IAAI,IAAI,SAAS,EAAE,CAAC;gBACtB,OAAO,QAAQ,IAAI,kBAAkB,IAAI,kBAAkB,SAAS,UAAU,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,wBAAwB,CAAC;YACvJ,CAAC;YACD,IAAI,KAAK,CAAC,WAAW,GAAG,IAAI,EAAE,CAAC;gBAC7B,OAAO,0CAA0C,IAAI,qDAAqD,CAAC;YAC7G,CAAC;YACD,MAAM,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YAC5B,IAAI,KAAK,CAAC,KAAK,GAAG,IAAI,EAAE,CAAC;gBACvB,OAAO,WAAW,IAAI,OAAO,IAAI,GAAG,CAAC,UAAU,IAAI,sBAAsB,KAAK,CAAC,KAAK,qBAAqB,CAAC;YAC5G,CAAC;YACD,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC;YACpB,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;gBACrB,KAAK,CAAC,SAAS,IAAI,CAAC,CAAC;gBACrB,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC;YACjE,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,aAAa,IAAI,CAAC,CAAC;gBACzB,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC;YACzE,CAAC;YACD,MAAM,SAAS,GAAG,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC;YACnE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YACzC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,aAAa,IAAI,YAAY,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,eAAe,SAAS,WAAW,IAAI,WAAW,KAAK,CAAC,KAAK,SAAS,CAAC,CAAC;YAC5L,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;YAC1B,OAAO,uBAAuB,IAAI,IAAI,IAAI,OAAO,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,SAAS,2BAA2B,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,iBAAiB,KAAK,CAAC,KAAK,SAAS,CAAC;QAC9L,CAAC;QAED,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,OAAO,IAAI,cAAc,CAAC,UAAU,EAAE,CAAC;YACzC,OAAO,QAAQ,IAAI,kBAAkB,OAAO,kDAAkD,CAAC;QACjG,CAAC;QAED,MAAM,IAAI,GAAG,OAAO,GAAG,CAAC,CAAC;QACzB,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC;QACtB,IAAI,KAAK,CAAC,KAAK,GAAG,IAAI,EAAE,CAAC;YACvB,OAAO,WAAW,IAAI,OAAO,IAAI,UAAU,IAAI,sCAAsC,KAAK,CAAC,KAAK,qBAAqB,CAAC;QACxH,CAAC;QAED,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC;QACpB,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;QACnB,mEAAmE;QACnE,qDAAqD;QACrD,IAAI,IAAI,KAAK,MAAM;YAAE,KAAK,CAAC,aAAa,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,aAAa,IAAI,OAAO,IAAI,WAAW,IAAI,WAAW,KAAK,CAAC,KAAK,SAAS,CAAC,CAAC;QAC3G,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;QAC1B,MAAM,SAAS,GAAG,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,EAAE,CAAC;QACzI,OAAO,6CAA6C,IAAI,IAAI,OAAO,OAAO,IAAI,MAAM,IAAI,iBAAiB,KAAK,CAAC,KAAK,UAAU,SAAS,EAAE,CAAC;IAC5I,CAAC;IAEO,eAAe;QACrB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,gEAAgE;QAChE,qEAAqE;QACrE,sDAAsD;QACtD,MAAM,KAAK,GAAG,CAAC,oBAAoB,KAAK,CAAC,KAAK,GAAG,EAAE,SAAS,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;QACzF,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;YAChC,MAAM,OAAO,GAAG,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YACzC,MAAM,WAAW,GAAG,KAAK,CAAC,UAAU,CAAC,eAAe,KAAK,EAAE,CAAC,CAAC;YAC7D,MAAM,MAAM,GAAG,OAAO,IAAI,cAAc,CAAC,UAAU,CAAC;YACpD,MAAM,IAAI,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YAC/B,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,OAAO,GAAG,CAAC,UAAU,IAAI,SAAS,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QAC1M,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;QACrD,KAAK,MAAM,IAAI,IAAI,cAAc,CAAC,UAAU,EAAE,CAAC;YAC7C,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;gBAC7C,MAAM,IAAI,GAAG,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC;gBACtE,IAAI,IAAI,IAAI,CAAC;oBAAE,SAAS,CAAC,sCAAsC;gBAC/D,MAAM,MAAM,GAAG,IAAI,IAAI,cAAc,CAAC,UAAU,GAAG,KAAK,CAAC,eAAe,CAAC;gBACzE,MAAM,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;gBAC5B,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,GAAG,CAAC,UAAU,IAAI,SAAS,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;gBACvL,SAAS;YACX,CAAC;YACD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;YAC5B,MAAM,MAAM,GAAG,OAAO,IAAI,cAAc,CAAC,UAAU,CAAC;YACpD,MAAM,IAAI,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YAC/B,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,OAAO,GAAG,CAAC,UAAU,IAAI,SAAS,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QACzJ,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,yGAAyG,CAAC,CAAC;QAC/H,IAAI,MAAM;YAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QACnC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { Command, ICommand } from './command.js';
|
|
2
|
+
/**
|
|
3
|
+
* THE AR SWITCH (player request 2026-08-26: "there should be a way to
|
|
4
|
+
* toggle AR"). Bare "ar" toggles, "ar on"/"ar off" are explicit, and
|
|
5
|
+
* either way it answers with what the overlay is showing you now.
|
|
6
|
+
*
|
|
7
|
+
* Two different things can put your overlay down and a player is owed
|
|
8
|
+
* the difference, because the cure for each is different:
|
|
9
|
+
* - MUTED (this command): your choice, undone by typing "ar" again.
|
|
10
|
+
* - CUT (arOffline): a hacker did it to you -- "reboot" clears it.
|
|
11
|
+
* Muting is cosmetic on purpose: the link keeps broadcasting, calls
|
|
12
|
+
* still land, and the commlink initiative bonus is untouched. You are
|
|
13
|
+
* turning off the clutter, not the radio.
|
|
14
|
+
*
|
|
15
|
+
* RUNNING SILENT IS NOT A THIRD ONE (canon p.229 / p.235-236): silence
|
|
16
|
+
* is about what you emit, AR about what you receive, so a silent runner
|
|
17
|
+
* still sees the street. It was listed here until 2026-08-27; see
|
|
18
|
+
* utilities/ar.ts arSightUp for the full note.
|
|
19
|
+
*/
|
|
20
|
+
export declare class ArCommand extends Command implements ICommand {
|
|
21
|
+
protected static verb: string;
|
|
22
|
+
protected static description: string;
|
|
23
|
+
execute(args?: string[]): Promise<string>;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* "aros" -- the read WITHOUT the toggle (a player checking what is
|
|
27
|
+
* online should not have to risk flipping their overlay off to find
|
|
28
|
+
* out). Same list "look" appends; this is it on demand.
|
|
29
|
+
*/
|
|
30
|
+
export declare class ArosCommand extends Command implements ICommand {
|
|
31
|
+
protected static verb: string;
|
|
32
|
+
protected static description: string;
|
|
33
|
+
execute(_args?: string[]): Promise<string>;
|
|
34
|
+
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { Command } from './command.js';
|
|
2
|
+
import { hint } from '../utilities/hints.js';
|
|
3
|
+
import { aroTags, arSightUp } from '../utilities/ar.js';
|
|
4
|
+
/**
|
|
5
|
+
* THE AR SWITCH (player request 2026-08-26: "there should be a way to
|
|
6
|
+
* toggle AR"). Bare "ar" toggles, "ar on"/"ar off" are explicit, and
|
|
7
|
+
* either way it answers with what the overlay is showing you now.
|
|
8
|
+
*
|
|
9
|
+
* Two different things can put your overlay down and a player is owed
|
|
10
|
+
* the difference, because the cure for each is different:
|
|
11
|
+
* - MUTED (this command): your choice, undone by typing "ar" again.
|
|
12
|
+
* - CUT (arOffline): a hacker did it to you -- "reboot" clears it.
|
|
13
|
+
* Muting is cosmetic on purpose: the link keeps broadcasting, calls
|
|
14
|
+
* still land, and the commlink initiative bonus is untouched. You are
|
|
15
|
+
* turning off the clutter, not the radio.
|
|
16
|
+
*
|
|
17
|
+
* RUNNING SILENT IS NOT A THIRD ONE (canon p.229 / p.235-236): silence
|
|
18
|
+
* is about what you emit, AR about what you receive, so a silent runner
|
|
19
|
+
* still sees the street. It was listed here until 2026-08-27; see
|
|
20
|
+
* utilities/ar.ts arSightUp for the full note.
|
|
21
|
+
*/
|
|
22
|
+
export class ArCommand extends Command {
|
|
23
|
+
static verb = 'ar';
|
|
24
|
+
static description = 'Toggle your augmented-reality overlay: "ar" flips it, "ar on"/"ar off" are explicit. Off just hides the icon clutter -- your link keeps broadcasting and calls still reach you. Bare "ar" while it is up also reads out what is online around you.';
|
|
25
|
+
async execute(args = []) {
|
|
26
|
+
const actor = this.actor;
|
|
27
|
+
const sub = (args[0] ?? '').toLowerCase();
|
|
28
|
+
if (sub && !['on', 'off'].includes(sub)) {
|
|
29
|
+
return `Try "ar" to flip it, or "ar on" / "ar off".`;
|
|
30
|
+
}
|
|
31
|
+
const wantOn = sub === 'on' ? true : sub === 'off' ? false : actor.arMuted;
|
|
32
|
+
if (wantOn === !actor.arMuted) {
|
|
33
|
+
return wantOn
|
|
34
|
+
? `Your overlay is already up.`
|
|
35
|
+
: `Your overlay is already down.`;
|
|
36
|
+
}
|
|
37
|
+
actor.arMuted = !wantOn;
|
|
38
|
+
this.logger.write(`${actor.name} turned AR ${wantOn ? 'on' : 'off'}.`);
|
|
39
|
+
// The district map's host markers are AR (see Player.hasMatrixEyes),
|
|
40
|
+
// so the docked overlay has to repaint on the same beat.
|
|
41
|
+
this.game?.updateExits(actor.currentLocation);
|
|
42
|
+
this.scene.updateStatus();
|
|
43
|
+
if (!wantOn) {
|
|
44
|
+
return `{white-fg}You blink the overlay away. The street goes plain -- no tags, no marquees, nothing floating over anybody's shoulder. Your link is still up and still reachable, and the district map drops its host markers with the rest of the icons. Lasts the session -- a fresh one boots with AR up${hint(`, and "ar" brings it back any time`)}.{/white-fg}`;
|
|
45
|
+
}
|
|
46
|
+
// Coming back up: say WHY it is still dark, if it is. A player who
|
|
47
|
+
// types "ar on" and gets a blank street deserves the reason.
|
|
48
|
+
if (actor.plane !== 'meat') {
|
|
49
|
+
return `Overlay back on -- though where you are right now, the icons ARE the world.`;
|
|
50
|
+
}
|
|
51
|
+
if (actor.arOffline) {
|
|
52
|
+
return `Overlay back on -- and still dark. Somebody cut it for you; "reboot" is the cure, not this.`;
|
|
53
|
+
}
|
|
54
|
+
if (!actor.getPanMaster()) {
|
|
55
|
+
return `Overlay back on -- over nothing. No commlink, no deck, no AR: you're reading the street with your eyes like it's 2050.`;
|
|
56
|
+
}
|
|
57
|
+
const tags = aroTags(this.scene, actor, actor.currentLocation);
|
|
58
|
+
const head = `{cyan-fg}The overlay blinks back in.{/cyan-fg}`;
|
|
59
|
+
if (tags.length === 0) {
|
|
60
|
+
return `${head}\n{cyan-fg}Nothing here is talking -- a dead patch of street.{/cyan-fg}`;
|
|
61
|
+
}
|
|
62
|
+
return `${head}\n${tags.map(t => ` {cyan-fg}${t}{/cyan-fg}`).join('\n')}`;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* "aros" -- the read WITHOUT the toggle (a player checking what is
|
|
67
|
+
* online should not have to risk flipping their overlay off to find
|
|
68
|
+
* out). Same list "look" appends; this is it on demand.
|
|
69
|
+
*/
|
|
70
|
+
export class ArosCommand extends Command {
|
|
71
|
+
static verb = 'aros';
|
|
72
|
+
static description = 'Read the augmented-reality objects around you: hosts, broadcasting PANs, camera clusters, powered-up gear in plain sight. Needs your AR overlay up ("ar").';
|
|
73
|
+
async execute(_args = []) {
|
|
74
|
+
const actor = this.actor;
|
|
75
|
+
if (!arSightUp(actor)) {
|
|
76
|
+
if (actor.plane === 'matrix')
|
|
77
|
+
return `You're IN it -- "look" is your overlay out here.`;
|
|
78
|
+
if (actor.plane !== 'meat')
|
|
79
|
+
return `Not with these eyes. Get back in your body first.`;
|
|
80
|
+
if (actor.arMuted)
|
|
81
|
+
return `Your overlay is off${hint(` ("ar" turns it back on)`)}.`;
|
|
82
|
+
if (actor.arOffline)
|
|
83
|
+
return `Your overlay is DOWN -- somebody cut it. "reboot" clears that.`;
|
|
84
|
+
return `No commlink, no deck, no AR. Nothing to read the street with.`;
|
|
85
|
+
}
|
|
86
|
+
const tags = aroTags(this.scene, actor, actor.currentLocation);
|
|
87
|
+
if (tags.length === 0) {
|
|
88
|
+
return `{cyan-fg}Nothing here is talking -- a dead patch of street.{/cyan-fg}`;
|
|
89
|
+
}
|
|
90
|
+
return `{cyan-fg}AR OVERLAY:{/cyan-fg}\n${tags.map(t => ` {cyan-fg}${t}{/cyan-fg}`).join('\n')}`;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=ar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ar.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/ar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAY,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAExD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,OAAO,SAAU,SAAQ,OAAO;IAC1B,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,MAAM,CAAC,WAAW,GAAG,oPAAoP,CAAC;IAEpR,KAAK,CAAC,OAAO,CAAC,OAAiB,EAAE;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QAE1C,IAAI,GAAG,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACxC,OAAO,6CAA6C,CAAC;QACvD,CAAC;QAED,MAAM,MAAM,GAAG,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;QAC3E,IAAI,MAAM,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YAC9B,OAAO,MAAM;gBACX,CAAC,CAAC,6BAA6B;gBAC/B,CAAC,CAAC,+BAA+B,CAAC;QACtC,CAAC;QAED,KAAK,CAAC,OAAO,GAAG,CAAC,MAAM,CAAC;QACxB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,cAAc,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;QACvE,qEAAqE;QACrE,yDAAyD;QACzD,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QAC9C,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;QAE1B,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,sSAAsS,IAAI,CAAC,oCAAoC,CAAC,cAAc,CAAC;QACxW,CAAC;QAED,mEAAmE;QACnE,6DAA6D;QAC7D,IAAI,KAAK,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;YAC3B,OAAO,6EAA6E,CAAC;QACvF,CAAC;QACD,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;YACpB,OAAO,6FAA6F,CAAC;QACvG,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE,CAAC;YAC1B,OAAO,wHAAwH,CAAC;QAClI,CAAC;QAED,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC;QAC/D,MAAM,IAAI,GAAG,gDAAgD,CAAC;QAC9D,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO,GAAG,IAAI,yEAAyE,CAAC;QAC1F,CAAC;QACD,OAAO,GAAG,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IAC7E,CAAC;;AAGH;;;;GAIG;AACH,MAAM,OAAO,WAAY,SAAQ,OAAO;IAC5B,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC;IACrB,MAAM,CAAC,WAAW,GAAG,4JAA4J,CAAC;IAE5L,KAAK,CAAC,OAAO,CAAC,QAAkB,EAAE;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAEzB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;YACtB,IAAI,KAAK,CAAC,KAAK,KAAK,QAAQ;gBAAE,OAAO,kDAAkD,CAAC;YACxF,IAAI,KAAK,CAAC,KAAK,KAAK,MAAM;gBAAE,OAAO,mDAAmD,CAAC;YACvF,IAAI,KAAK,CAAC,OAAO;gBAAE,OAAO,sBAAsB,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC;YACpF,IAAI,KAAK,CAAC,SAAS;gBAAE,OAAO,gEAAgE,CAAC;YAC7F,OAAO,+DAA+D,CAAC;QACzE,CAAC;QAED,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC;QAC/D,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO,uEAAuE,CAAC;QACjF,CAAC;QACD,OAAO,mCAAmC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IACpG,CAAC"}
|
|
@@ -92,7 +92,10 @@ export class BacklogCommand extends Command {
|
|
|
92
92
|
? `Nothing ${status} on the board.`
|
|
93
93
|
: `The board's empty.${hint(` ("backlog <what you noticed>" files the first one.)`)}`;
|
|
94
94
|
}
|
|
95
|
-
|
|
95
|
+
// BANNER RAILS REMOVED (playtest 2026-08-26, on the crew panel:
|
|
96
|
+
// "headers like that are too cluttery"). The heading itself stays --
|
|
97
|
+
// it carries what the panel divider can't say for it.
|
|
98
|
+
const lines = [`BACKLOG (${items.length}${status ? `, ${status}` : ''})`];
|
|
96
99
|
for (const item of items)
|
|
97
100
|
lines.push(...this.row(item));
|
|
98
101
|
const footer = hint(`"backlog <what you noticed>" files one. Status moves are an admin's call.`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backlog.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/backlog.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"backlog.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/backlog.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,8 +10,12 @@ import { PuzzleTarget } from '../models/room.js';
|
|
|
10
10
|
* and ends any sneak (onBypassSuccess), where a clean pick stays quiet.
|
|
11
11
|
* The two verbs share the barrier's one burned flag: a seized mechanism
|
|
12
12
|
* or a sprung frame spends the shortcut for both -- the findable answer
|
|
13
|
-
* remains untouched, as always.
|
|
14
|
-
*
|
|
13
|
+
* remains untouched, as always. The SHARED flag is deliberate; the
|
|
14
|
+
* shared WORDING was not. This used to carry a note calling it an
|
|
15
|
+
* accepted wart that a breach-burned barrier re-refused with the
|
|
16
|
+
* snapped-pick line -- it stopped being acceptable the moment a player
|
|
17
|
+
* noticed being told about a pick they never owned (2026-08-27). Hence
|
|
18
|
+
* burnedFlavor below: same flag, own fiction. Do not reinstate the wart.
|
|
15
19
|
*/
|
|
16
20
|
export declare class BreachCommand extends BypassCommand {
|
|
17
21
|
protected static verb: string;
|
|
@@ -20,6 +24,7 @@ export declare class BreachCommand extends BypassCommand {
|
|
|
20
24
|
protected verbName: string;
|
|
21
25
|
protected noPuzzleMessage: string;
|
|
22
26
|
protected failureFlavor: string;
|
|
27
|
+
protected burnedFlavor: string;
|
|
23
28
|
execute(args: string[]): Promise<string>;
|
|
24
29
|
protected determineOutcome(): Promise<boolean>;
|
|
25
30
|
/** Breaching is loud when it WORKS, too -- the defining trade against
|
|
@@ -9,8 +9,12 @@ import { rollPool, formatRoll } from '../utilities/dice.js';
|
|
|
9
9
|
* and ends any sneak (onBypassSuccess), where a clean pick stays quiet.
|
|
10
10
|
* The two verbs share the barrier's one burned flag: a seized mechanism
|
|
11
11
|
* or a sprung frame spends the shortcut for both -- the findable answer
|
|
12
|
-
* remains untouched, as always.
|
|
13
|
-
*
|
|
12
|
+
* remains untouched, as always. The SHARED flag is deliberate; the
|
|
13
|
+
* shared WORDING was not. This used to carry a note calling it an
|
|
14
|
+
* accepted wart that a breach-burned barrier re-refused with the
|
|
15
|
+
* snapped-pick line -- it stopped being acceptable the moment a player
|
|
16
|
+
* noticed being told about a pick they never owned (2026-08-27). Hence
|
|
17
|
+
* burnedFlavor below: same flag, own fiction. Do not reinstate the wart.
|
|
14
18
|
*/
|
|
15
19
|
export class BreachCommand extends BypassCommand {
|
|
16
20
|
static verb = 'breach';
|
|
@@ -19,6 +23,7 @@ export class BreachCommand extends BypassCommand {
|
|
|
19
23
|
verbName = 'breach';
|
|
20
24
|
noPuzzleMessage = "There's nothing here to breach -- no physical barrier holds this room.";
|
|
21
25
|
failureFlavor = `You slam into it and it HOLDS -- the frame seizes solid, and the boom rolls down every corridor on the floor.`;
|
|
26
|
+
burnedFlavor = `The frame is sprung and jammed hard in its seat -- you've already thrown everything you have at it, and it won't give twice. Only the real code opens it now.`;
|
|
22
27
|
async execute(args) {
|
|
23
28
|
// Shoulders are meat -- same plane fiction as pick.ts.
|
|
24
29
|
if (this.actor.plane === 'matrix') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"breach.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/breach.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAE5D
|
|
1
|
+
{"version":3,"file":"breach.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/breach.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAE5D;;;;;;;;;;;;;;;GAeG;AACH,MAAM,OAAO,aAAc,SAAQ,aAAa;IACpC,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC;IACvB,MAAM,CAAC,WAAW,GAAG,oRAAoR,CAAC;IAC1S,UAAU,GAAqB,UAAU,CAAC;IAC1C,QAAQ,GAAG,QAAQ,CAAC;IACpB,eAAe,GAAG,wEAAwE,CAAC;IAC3F,aAAa,GAAG,+GAA+G,CAAC;IAChI,YAAY,GAAG,+JAA+J,CAAC;IAEzL,KAAK,CAAC,OAAO,CAAC,IAAc;QAC1B,uDAAuD;QACvD,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAClC,OAAO,+DAA+D,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,IAAI,cAAc,uCAAuC,CAAC;QAC3J,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAClC,OAAO,uGAAuG,CAAC;QACjH,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,OAAO,EAAE,CAAC;YACjC,OAAO,4EAA4E,CAAC;QACtF,CAAC;QACD,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAES,KAAK,CAAC,gBAAgB;QAC9B,kEAAkE;QAClE,qEAAqE;QACrE,6BAA6B;QAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAC1H,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC/D,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;IACxB,CAAC;IAED;;gEAE4D;IAClD,KAAK,CAAC,eAAe,CAAC,MAAoB;QAClD,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,cAAc,MAAM,CAAC,MAAM,CAAC,IAAI,QAAQ,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,wBAAwB,CAAC,CAAC;QAC5I,uEAAuE;QACvE,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,EAAE,aAAa,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;QAC1D,OAAO,CAAC,uEAAuE,CAAC,CAAC;IACnF,CAAC"}
|
|
@@ -23,6 +23,12 @@ export declare abstract class BypassCommand extends Command implements ICommand
|
|
|
23
23
|
* verb that shares a bypassType but fails differently (a breach doesn't
|
|
24
24
|
* snap a pick). */
|
|
25
25
|
protected failureFlavor?: string;
|
|
26
|
+
/** Optional: same idea one step later. The puzzle stores ONE burned
|
|
27
|
+
* flag per barrier and words it per TYPE, so a barrier burned by a
|
|
28
|
+
* breach used to re-refuse a breach with the snapped-pick line -- a
|
|
29
|
+
* pick the player never owned (playtest 2026-08-27). A verb that
|
|
30
|
+
* shares a bypassType but burns differently says so here. */
|
|
31
|
+
protected burnedFlavor?: string;
|
|
26
32
|
/** Fallback: a flat coin flip. Every real bypass overrides this with a
|
|
27
33
|
* skill roll (pick: Agility+locksmith, hack: Logic+hacking, bluff:
|
|
28
34
|
* Charisma+con, cast: the casting pool). */
|
|
@@ -16,6 +16,12 @@ export class BypassCommand extends Command {
|
|
|
16
16
|
* verb that shares a bypassType but fails differently (a breach doesn't
|
|
17
17
|
* snap a pick). */
|
|
18
18
|
failureFlavor;
|
|
19
|
+
/** Optional: same idea one step later. The puzzle stores ONE burned
|
|
20
|
+
* flag per barrier and words it per TYPE, so a barrier burned by a
|
|
21
|
+
* breach used to re-refuse a breach with the snapped-pick line -- a
|
|
22
|
+
* pick the player never owned (playtest 2026-08-27). A verb that
|
|
23
|
+
* shares a bypassType but burns differently says so here. */
|
|
24
|
+
burnedFlavor;
|
|
19
25
|
/** Fallback: a flat coin flip. Every real bypass overrides this with a
|
|
20
26
|
* skill roll (pick: Agility+locksmith, hack: Logic+hacking, bluff:
|
|
21
27
|
* Charisma+con, cast: the casting pool). */
|
|
@@ -87,14 +93,61 @@ export class BypassCommand extends Command {
|
|
|
87
93
|
}
|
|
88
94
|
async execute(args) {
|
|
89
95
|
const room = this.actor.currentLocation;
|
|
90
|
-
const
|
|
91
|
-
|
|
96
|
+
const allTargets = room?.getPuzzleTargets() ?? [];
|
|
97
|
+
// THE ONLY HONEST "nothing here" (blocker 2026-08-27, "the barrier
|
|
98
|
+
// isn't allowing me to hack/pick/breach it"): the room holds no
|
|
99
|
+
// barrier at all. This used to filter by bypassType FIRST, which
|
|
100
|
+
// made a wrong verb indistinguishable from an empty room -- so a
|
|
101
|
+
// ward or a doorman answered ALL FOUR physical verbs with "there's
|
|
102
|
+
// nothing here to pick/breach/hack", denying to the player's face
|
|
103
|
+
// that the door they were staring at existed. checkBypassGate()
|
|
104
|
+
// has always had the right answer for a mismatch; nothing ever
|
|
105
|
+
// reached it. Now the filter only picks a PREFERRED target, and
|
|
106
|
+
// every refusal goes through the gate.
|
|
107
|
+
if (allTargets.length === 0) {
|
|
92
108
|
return this.noPuzzleMessage;
|
|
93
109
|
}
|
|
94
|
-
|
|
110
|
+
// WHO PICKS THE TARGET depends on whether the player named one.
|
|
111
|
+
//
|
|
112
|
+
// Bare "pick" in a room holding a maglock and a ward means the
|
|
113
|
+
// maglock -- so with no words to go on, prefer the barriers this
|
|
114
|
+
// verb actually works, exactly as before.
|
|
115
|
+
//
|
|
116
|
+
// But "pick terminal" NAMES a thing, and the name settles which
|
|
117
|
+
// object is meant before the verb gets a say. Resolving that
|
|
118
|
+
// against same-type targets only was quietly wrong: resolveTarget's
|
|
119
|
+
// generic-noun fallback ("lock", "door", "terminal"...) fires
|
|
120
|
+
// whenever the candidate list has exactly one entry, so naming the
|
|
121
|
+
// terminal in a mixed room picked the MAGLOCK instead -- the right
|
|
122
|
+
// verb aimed at the wrong barrier, and it opened. Named targets
|
|
123
|
+
// therefore resolve against every barrier here; the gate below
|
|
124
|
+
// decides whether the verb suits the thing the player pointed at.
|
|
125
|
+
const mine = allTargets.filter(t => t.puzzle.bypassType === this.bypassType);
|
|
126
|
+
const named = args.length > 0;
|
|
127
|
+
const primary = named ? allTargets : (mine.length > 0 ? mine : allTargets);
|
|
128
|
+
const { target: preferred, error } = this.resolveTarget(args, primary);
|
|
129
|
+
let target = preferred;
|
|
130
|
+
if (!target && named && mine.length > 0) {
|
|
131
|
+
// The name matched nothing room-wide. Retry against this verb's
|
|
132
|
+
// own barriers, which keeps the generic-noun convenience alive
|
|
133
|
+
// ("pick door" with one lock and one terminal still means the
|
|
134
|
+
// lock) without letting it hijack a name that DID match.
|
|
135
|
+
target = this.resolveTarget(args, mine).target;
|
|
136
|
+
}
|
|
95
137
|
if (!target) {
|
|
96
138
|
return error ?? this.noPuzzleMessage;
|
|
97
139
|
}
|
|
140
|
+
// GATE BEFORE THE WALK (2026-08-27): the gate is pure and
|
|
141
|
+
// synchronous, so a doomed attempt should cost nothing at all --
|
|
142
|
+
// and marching the player across the room only to tell them the
|
|
143
|
+
// verb was wrong is its own small insult. The class contract
|
|
144
|
+
// already said the gate "always runs first"; now it does.
|
|
145
|
+
const gate = target.puzzle.checkBypassGate(this.bypassType);
|
|
146
|
+
if (!gate.allowed) {
|
|
147
|
+
if (gate.reason === 'burned' && this.burnedFlavor)
|
|
148
|
+
return this.burnedFlavor;
|
|
149
|
+
return gate.message ?? `You can't do that here.`;
|
|
150
|
+
}
|
|
98
151
|
// "At" spots (user request: "cannot pick a doorlock from across the
|
|
99
152
|
// room"): a barrier has a PLACE -- a door's is its exit spot, a
|
|
100
153
|
// room puzzle carries its own atSpot. Out of combat you simply walk
|
|
@@ -106,10 +159,6 @@ export class BypassCommand extends Command {
|
|
|
106
159
|
if (reach.refusal)
|
|
107
160
|
return reach.refusal;
|
|
108
161
|
const crossNote = reach.line ? `${reach.line}\n` : '';
|
|
109
|
-
const gate = target.puzzle.checkBypassGate(this.bypassType);
|
|
110
|
-
if (!gate.allowed) {
|
|
111
|
-
return gate.message ?? `You can't do that here.`;
|
|
112
|
-
}
|
|
113
162
|
const succeeded = await this.determineOutcome();
|
|
114
163
|
const result = target.puzzle.resolveBypass(this.bypassType, succeeded);
|
|
115
164
|
if (!result.success && this.failureFlavor) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bypass-command.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/bypass-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAY,MAAM,cAAc,CAAC;AAGjD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE/D;;;;;;;;;;GAUG;AACH,MAAM,OAAgB,aAAc,SAAQ,OAAO;IAOjD;;uBAEmB;IACT,aAAa,CAAU;
|
|
1
|
+
{"version":3,"file":"bypass-command.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/bypass-command.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,15 @@ export declare class CallCommand extends Command implements ICommand {
|
|
|
3
3
|
protected static verb: string;
|
|
4
4
|
protected static description: string;
|
|
5
5
|
execute(args: string[]): Promise<string>;
|
|
6
|
+
/**
|
|
7
|
+
* Who is standing close enough to catch your half of the call that
|
|
8
|
+
* just connected (see utilities/earshot.ts). Said ONCE, on connect,
|
|
9
|
+
* because that is the last moment it can still be acted on -- Deditri
|
|
10
|
+
* went looking for somewhere private to take a call and had no way to
|
|
11
|
+
* tell whether they had found one. Silence means nobody can hear you;
|
|
12
|
+
* "say private" asks the question again at any time.
|
|
13
|
+
*/
|
|
14
|
+
private overheardNote;
|
|
6
15
|
/**
|
|
7
16
|
* Whether a cab can physically reach this room. The predicate itself
|
|
8
17
|
* lives in utilities/outdoors.ts, SHARED with the generator: every
|
|
@@ -6,6 +6,7 @@ import { CALL_ICON, CALL_COLOR } from '../utilities/comm-style.js';
|
|
|
6
6
|
import { FIXER_NAME, isFixerName } from '../factories/scene-seed-generator.js';
|
|
7
7
|
import { fuzzyPickNameDetailed } from '../utilities/fuzzy-match.js';
|
|
8
8
|
import { isOutdoorsPlace } from '../utilities/outdoors.js';
|
|
9
|
+
import { readEarshot } from '../utilities/earshot.js';
|
|
9
10
|
export class CallCommand extends Command {
|
|
10
11
|
static verb = 'call';
|
|
11
12
|
static description = 'Call someone remotely over a commlink (no need to be in the same room; commlink must be equipped).';
|
|
@@ -51,6 +52,31 @@ export class CallCommand extends Command {
|
|
|
51
52
|
if (this.actor.inExchange) {
|
|
52
53
|
return `Mid-fight is no time to hail a cab.`;
|
|
53
54
|
}
|
|
55
|
+
// THE FARE COMES FIRST (playtest 2026-08-26: "I was able to call a
|
|
56
|
+
// taxi before calling Mr. Krow. I shouldn't be able to until I get
|
|
57
|
+
// the job."). The cab is the ride TO a job, so at the hub it needs
|
|
58
|
+
// a job to ride to -- and a seed Krow has merely DRAFTED is not
|
|
59
|
+
// one. The gate is pendingRunAccepted, the flag "accept" sets (see
|
|
60
|
+
// job-offer.ts): the same line the jobs board already draws
|
|
61
|
+
// between "call him to hear it" and ACCEPTED. A live seat at
|
|
62
|
+
// someone else's table counts too -- that invite IS the fare, and
|
|
63
|
+
// it is what "call taxi rides back in" rides (see shared-run.ts).
|
|
64
|
+
//
|
|
65
|
+
// Checked BEFORE the curbside gate on purpose: walking a runner
|
|
66
|
+
// out to the street and only THEN telling them there was never a
|
|
67
|
+
// fare is the same sequencing hole, one room further along.
|
|
68
|
+
let hubInvite;
|
|
69
|
+
if (this.scene.isHub && this.game) {
|
|
70
|
+
const { HubLink } = await import('../utilities/shared-run.js');
|
|
71
|
+
hubInvite = HubLink.openInvite(this.game);
|
|
72
|
+
if (!this.game.pendingRunAccepted && !hubInvite) {
|
|
73
|
+
// ACTIONABLE REFUSAL: it names the next move, so it is NOT
|
|
74
|
+
// wrapped in hint() -- it stands with hints on or off.
|
|
75
|
+
return this.game.pendingRun
|
|
76
|
+
? `The dispatcher's bored voice: "No fare on the books for you, chummer." ${FIXER_NAME} has work on offer, but you never shook on it -- "call ${FIXER_NAME}", then "accept".`
|
|
77
|
+
: `The dispatcher's bored voice: "No fare on the books for you, chummer." Nobody's hired you -- "call ${FIXER_NAME}" first.`;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
54
80
|
// Curbside pickup only: no cab noses into a bar, a crypt, or your
|
|
55
81
|
// hideout. Step out to a street-level room first. EXCEPTION: the
|
|
56
82
|
// ride home off a WRAPPED job hails from anywhere -- the cab is the
|
|
@@ -62,7 +88,7 @@ export class CallCommand extends Command {
|
|
|
62
88
|
if (!CallCommand.isOutdoors(this.actor.currentLocation) && !homeboundIndoors) {
|
|
63
89
|
return `The dispatcher grunts: "Curbside pickup only, chummer." Step outside -- a street, an alley, somewhere a cab can actually reach.`;
|
|
64
90
|
}
|
|
65
|
-
if (this.scene.isHub && this.game.
|
|
91
|
+
if (this.scene.isHub && this.game.pendingRunAccepted) {
|
|
66
92
|
this.actor.performAction('calls a taxi', 'and steps to the curb');
|
|
67
93
|
const ride = this.game.pendingRide;
|
|
68
94
|
const trip = await this.game.launchPendingRun();
|
|
@@ -124,27 +150,24 @@ export class CallCommand extends Command {
|
|
|
124
150
|
}
|
|
125
151
|
// A LIVE CREW INVITE (Phase C M4): someone else's job, your seat.
|
|
126
152
|
// The taxi is the join handshake -- same cab, different table.
|
|
127
|
-
if (this.scene.isHub) {
|
|
128
|
-
const {
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
this.game.
|
|
133
|
-
|
|
134
|
-
|
|
153
|
+
if (this.scene.isHub && hubInvite && this.game) {
|
|
154
|
+
const { SharedRunSession } = await import('../utilities/shared-run.js');
|
|
155
|
+
this.actor.performAction('calls a taxi', 'and steps to the curb');
|
|
156
|
+
this.game.requestSave('job-accept');
|
|
157
|
+
try {
|
|
158
|
+
return await SharedRunSession.joinAsMember(this.game, hubInvite.sessionID);
|
|
159
|
+
}
|
|
160
|
+
catch (err) {
|
|
161
|
+
const e = err;
|
|
162
|
+
if (e.error === 'interrupted') {
|
|
163
|
+
return `The cab circles the block and brings you back -- the run dissolved into static before you arrived. Everyone keeps their last save.`;
|
|
135
164
|
}
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
}
|
|
141
|
-
if (e.error === 'unverified') {
|
|
142
|
-
// Krow won't seat unvetted runners (fiction ruling
|
|
143
|
-
// 2026-08-24); the OOC line says how to get vouched for.
|
|
144
|
-
return `The cab pulls up short of the address and the door stays locked. Your link pings -- ${FIXER_NAME}: "Nothing personal, chummer. No vouch on the street, no seat at my table. Square your paperwork and the next ride's yours."\n{yellow-fg}(Out of character: this account's email isn't verified -- run \`maka register --resend-verification\`, click the link, relaunch.){/yellow-fg}`;
|
|
145
|
-
}
|
|
146
|
-
return `The dispatcher shrugs: "${e.reason ?? 'No route to that job.'}"`;
|
|
165
|
+
if (e.error === 'unverified') {
|
|
166
|
+
// Krow won't seat unvetted runners (fiction ruling
|
|
167
|
+
// 2026-08-24); the OOC line says how to get vouched for.
|
|
168
|
+
return `The cab pulls up short of the address and the door stays locked. Your link pings -- ${FIXER_NAME}: "Nothing personal, chummer. No vouch on the street, no seat at my table. Square your paperwork and the next ride's yours."\n{yellow-fg}(Out of character: this account's email isn't verified -- run \`maka register --resend-verification\`, click the link, relaunch.){/yellow-fg}`;
|
|
147
169
|
}
|
|
170
|
+
return `The dispatcher shrugs: "${e.reason ?? 'No route to that job.'}"`;
|
|
148
171
|
}
|
|
149
172
|
}
|
|
150
173
|
return `The dispatcher's bored voice: "No fare on the books for you, chummer." (No job arranged -- "call ${FIXER_NAME}" first.)`;
|
|
@@ -335,7 +358,23 @@ export class CallCommand extends Command {
|
|
|
335
358
|
&& this.game.canDraftNextScene().allowed) {
|
|
336
359
|
this.game.draftNextSceneInBackground();
|
|
337
360
|
}
|
|
338
|
-
return `{${CALL_COLOR}-fg}${CALL_ICON} You call ${target.name}: "${greeting}"${deliveryNote}{/${CALL_COLOR}-fg}${clientBeat ? `\n${clientBeat}` : ''}`;
|
|
361
|
+
return `{${CALL_COLOR}-fg}${CALL_ICON} You call ${target.name}: "${greeting}"${deliveryNote}{/${CALL_COLOR}-fg}${this.overheardNote()}${clientBeat ? `\n${clientBeat}` : ''}`;
|
|
362
|
+
}
|
|
363
|
+
/**
|
|
364
|
+
* Who is standing close enough to catch your half of the call that
|
|
365
|
+
* just connected (see utilities/earshot.ts). Said ONCE, on connect,
|
|
366
|
+
* because that is the last moment it can still be acted on -- Deditri
|
|
367
|
+
* went looking for somewhere private to take a call and had no way to
|
|
368
|
+
* tell whether they had found one. Silence means nobody can hear you;
|
|
369
|
+
* "say private" asks the question again at any time.
|
|
370
|
+
*/
|
|
371
|
+
overheardNote() {
|
|
372
|
+
const reading = readEarshot(this.actor);
|
|
373
|
+
const names = reading.audience.filter(a => this.actor.canPerceive(a)).map(a => a.name);
|
|
374
|
+
if (names.length === 0)
|
|
375
|
+
return '';
|
|
376
|
+
const cure = reading.quiet.length > 0 ? hint(` "move to ${reading.quiet[0]}" for quiet.`) : '';
|
|
377
|
+
return `\n(${names.join(', ')} ${names.length === 1 ? 'is' : 'are'} close enough to hear your side of it.${cure})`;
|
|
339
378
|
}
|
|
340
379
|
/**
|
|
341
380
|
* Whether a cab can physically reach this room. The predicate itself
|
|
@@ -416,7 +455,7 @@ export class CallCommand extends Command {
|
|
|
416
455
|
this.actor.crewChannel = { playerName: 'the party', handle: '', party: true };
|
|
417
456
|
this.actor.performAction('opens the party line', `${res.delivered} rider${res.delivered === 1 ? '' : 's'} on`);
|
|
418
457
|
this.scene.updateStatus();
|
|
419
|
-
return `{${CALL_COLOR}-fg}${CALL_ICON} The party line opens -- ${res.delivered} rider${res.delivered === 1 ? '' : 's'} on: "${greeting}"{/${CALL_COLOR}-fg}${hint(`\n("say <message>" talks to everyone, "end-call" drops you off.)`)}`;
|
|
458
|
+
return `{${CALL_COLOR}-fg}${CALL_ICON} The party line opens -- ${res.delivered} rider${res.delivered === 1 ? '' : 's'} on: "${greeting}"{/${CALL_COLOR}-fg}${this.overheardNote()}${hint(`\n("say <message>" talks to everyone, "end-call" drops you off.)`)}`;
|
|
420
459
|
}
|
|
421
460
|
catch (err) {
|
|
422
461
|
const e = err;
|
|
@@ -468,7 +507,7 @@ export class CallCommand extends Command {
|
|
|
468
507
|
try {
|
|
469
508
|
const res = await transport.send({ from: this.actor.name, handle: street.handle, text: greeting });
|
|
470
509
|
const offlineNote = res.online ? '' : `\nThey're off the street right now -- your words wait on their link.`;
|
|
471
|
-
return `{${CALL_COLOR}-fg}${CALL_ICON} You call ${res.toRunner} on the crew channel: "${greeting}"{/${CALL_COLOR}-fg}${offlineNote}${hint(`\n("say <message>" talks, "end-call" hangs up.)`)}`;
|
|
510
|
+
return `{${CALL_COLOR}-fg}${CALL_ICON} You call ${res.toRunner} on the crew channel: "${greeting}"{/${CALL_COLOR}-fg}${offlineNote}${this.overheardNote()}${hint(`\n("say <message>" talks, "end-call" hangs up.)`)}`;
|
|
472
511
|
}
|
|
473
512
|
catch (err) {
|
|
474
513
|
this.actor.crewChannel = undefined;
|