@maka/maka-cli 5.11.0 → 5.12.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 +6 -5
- package/bundle/typescript/src/commands/game/sideQuest/commands/advance.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/buy.js +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/buy.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/call.js +18 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/call.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/cast.js +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/cast.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/catalog.d.ts +13 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/catalog.js +99 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/catalog.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/companions.js +12 -2
- package/bundle/typescript/src/commands/game/sideQuest/commands/companions.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/contacts.js +8 -8
- package/bundle/typescript/src/commands/game/sideQuest/commands/contacts.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/deck.d.ts +30 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/deck.js +142 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/deck.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/docwagon.js +4 -3
- package/bundle/typescript/src/commands/game/sideQuest/commands/docwagon.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/equipment.js +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/equipment.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/go.d.ts +11 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/go.js +29 -3
- package/bundle/typescript/src/commands/game/sideQuest/commands/go.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/grapple.js +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/grapple.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/hack.js +3 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/hack.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/initiate.js +7 -6
- package/bundle/typescript/src/commands/game/sideQuest/commands/initiate.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/jump.js +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/jump.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/lead.js +2 -2
- package/bundle/typescript/src/commands/game/sideQuest/commands/lead.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/pan.js +3 -2
- package/bundle/typescript/src/commands/game/sideQuest/commands/pan.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/quality-trade.js +8 -7
- package/bundle/typescript/src/commands/game/sideQuest/commands/quality-trade.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/search.js +3 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/search.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/sell.js +3 -2
- package/bundle/typescript/src/commands/game/sideQuest/commands/sell.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/sheet.d.ts +6 -4
- package/bundle/typescript/src/commands/game/sideQuest/commands/sheet.js +80 -65
- package/bundle/typescript/src/commands/game/sideQuest/commands/sheet.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/source.d.ts +4 -2
- package/bundle/typescript/src/commands/game/sideQuest/commands/source.js +34 -17
- package/bundle/typescript/src/commands/game/sideQuest/commands/source.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/game.d.ts +14 -0
- package/bundle/typescript/src/commands/game/sideQuest/game.js +98 -16
- package/bundle/typescript/src/commands/game/sideQuest/game.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/item.d.ts +28 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/item.js +83 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/item.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/npc.js +25 -6
- package/bundle/typescript/src/commands/game/sideQuest/models/npc.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/player.d.ts +4 -2
- package/bundle/typescript/src/commands/game/sideQuest/models/player.js +31 -9
- package/bundle/typescript/src/commands/game/sideQuest/models/player.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/types/save-file.d.ts +3 -0
- package/bundle/typescript/src/commands/game/sideQuest/ui.js +73 -3
- package/bundle/typescript/src/commands/game/sideQuest/ui.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/catalog-data.d.ts +32 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/catalog-data.js +112 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/catalog-data.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/catalog.d.ts +28 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/catalog.js +128 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/catalog.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/persistence.js +8 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/persistence.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/planes.d.ts +4 -2
- package/bundle/typescript/src/commands/game/sideQuest/utilities/planes.js +35 -4
- package/bundle/typescript/src/commands/game/sideQuest/utilities/planes.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/programs.d.ts +39 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/programs.js +63 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/programs.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/session-lock.d.ts +18 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/session-lock.js +91 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/session-lock.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js +18 -0
- package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sheet.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/sheet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAY,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"sheet.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/sheet.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,9 @@ export declare class SourceCommand 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
|
-
*
|
|
6
|
+
/** Resolution chain (player direction: the CATALOG on maka-cli.com is
|
|
7
|
+
* the source of truth -- utilities/catalog.ts): catalog row first
|
|
8
|
+
* (exact gear-table figures, zero AI variance), AI spec only for
|
|
9
|
+
* genuinely off-book requests, honest refusal past that. */
|
|
8
10
|
private resolveSpec;
|
|
9
11
|
}
|
|
@@ -4,6 +4,8 @@ import { rollPool, formatRoll } from '../utilities/dice.js';
|
|
|
4
4
|
import { fuzzyPickName } from '../utilities/fuzzy-match.js';
|
|
5
5
|
import { AI } from '../../../../tools/ai/ai.class.js';
|
|
6
6
|
import { Size, Category, Rating } from '../types/shared/item-enum.js';
|
|
7
|
+
import { findCatalogItem, ROLE_DOMAINS } from '../utilities/catalog.js';
|
|
8
|
+
import { findAug } from '../augmentations.js';
|
|
7
9
|
// Canon-approximate street classics for AI-off sessions (exact book
|
|
8
10
|
// rows aren't load-bearing -- the MECHANIC is the RAW part).
|
|
9
11
|
const FALLBACK_CATALOG = [
|
|
@@ -14,21 +16,10 @@ const FALLBACK_CATALOG = [
|
|
|
14
16
|
{ match: /lock ?pick|picks/i, spec: { name: 'Lockpick Set', category: 'Electronics', rating: 'Standard', size: 'Tiny', shape: 'roll', color: 'black', texture: 'leather', weight: 0.3, price: 250, availability: 6, description: 'Manual picks and a shim set, wrapped like surgeon\'s tools.' } },
|
|
15
17
|
{ match: /ammo|rounds|magazine/i, spec: { name: 'Ammunition', category: 'Ammunition', rating: 'Standard', size: 'Tiny', shape: 'box', color: 'brass', texture: 'metal', weight: 0.5, price: 100, availability: 3, description: 'A box of clean rounds, serial numbers politely absent.' } },
|
|
16
18
|
];
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
* dealer, foci through the talismonger. The Job Broker has no gear
|
|
22
|
-
* domain -- his juice is Connection, not shelves.
|
|
23
|
-
*/
|
|
24
|
-
const ROLE_DOMAINS = {
|
|
25
|
-
'Arms Dealer': ['Weapon', 'MeleeWeapon', 'RangedWeapon', 'Ammunition', 'Explosive', 'BodyArmor', 'Armor', 'Shield', 'Helmet', 'ArmArmor', 'LegArmor', 'Boots', 'Gloves'],
|
|
26
|
-
'Talismonger': ['Focus', 'SpellFormula', 'Grimoire'],
|
|
27
|
-
'Street Doc': ['Medical', 'StimPatch', 'SlapPatch', 'Bioware', 'Cyberware', 'Nanoware', 'Geneware'],
|
|
28
|
-
'Mechanic': ['Drone', 'RCC'],
|
|
29
|
-
'Data Broker': ['Cyberdeck', 'Software', 'Commlink', 'Electronics'],
|
|
30
|
-
'Vendor': ['Food', 'Drink'],
|
|
31
|
-
};
|
|
19
|
+
// DOMAIN AFFINITY: sourcing IN a contact's own trade rides +2 dice --
|
|
20
|
+
// shock gloves through the arms dealer, foci through the talismonger.
|
|
21
|
+
// The map itself lives in utilities/catalog.ts (the contact's AI is
|
|
22
|
+
// briefed on the same stock -- see npc.ts's swag note).
|
|
32
23
|
const AFFINITY_DICE = 2;
|
|
33
24
|
export class SourceCommand extends Command {
|
|
34
25
|
static verb = 'source';
|
|
@@ -48,6 +39,14 @@ export class SourceCommand extends Command {
|
|
|
48
39
|
if (!request) {
|
|
49
40
|
return `Source what? Try: source <item>[ from <contact>]`;
|
|
50
41
|
}
|
|
42
|
+
// Chrome isn't a parcel. Wired reflexes don't arrive in a duffel bag
|
|
43
|
+
// -- they arrive on an operating table (commands/install.ts). A real
|
|
44
|
+
// catalog row wins a loose aug match ("meta link" is a commlink, not
|
|
45
|
+
// a smartlink).
|
|
46
|
+
const aug = findCatalogItem(request) ? undefined : findAug(request);
|
|
47
|
+
if (aug) {
|
|
48
|
+
return `${aug.name} isn't something the network drops at your door -- it goes in on a table. Find the clinic and "install ${aug.name.toLowerCase()}" (${aug.cost} nuyen, ${aug.essence.toFixed(1)} essence).${hint(` "catalog chrome" lists the full surgery menu.`)}`;
|
|
49
|
+
}
|
|
51
50
|
// The contact must be REACHABLE -- in the room or on the line -- and
|
|
52
51
|
// on the roster (swag is a relationship service, not retail).
|
|
53
52
|
const partner = this.actor.activeCallPartner;
|
|
@@ -124,9 +123,27 @@ export class SourceCommand extends Command {
|
|
|
124
123
|
hint(`(Sourced gear lands automatically when you get home.)`),
|
|
125
124
|
].filter(Boolean).join('\n');
|
|
126
125
|
}
|
|
127
|
-
/**
|
|
128
|
-
*
|
|
126
|
+
/** Resolution chain (player direction: the CATALOG on maka-cli.com is
|
|
127
|
+
* the source of truth -- utilities/catalog.ts): catalog row first
|
|
128
|
+
* (exact gear-table figures, zero AI variance), AI spec only for
|
|
129
|
+
* genuinely off-book requests, honest refusal past that. */
|
|
129
130
|
async resolveSpec(request) {
|
|
131
|
+
const listed = findCatalogItem(request);
|
|
132
|
+
if (listed) {
|
|
133
|
+
return {
|
|
134
|
+
name: listed.name,
|
|
135
|
+
category: listed.category,
|
|
136
|
+
rating: listed.rating,
|
|
137
|
+
size: listed.size,
|
|
138
|
+
shape: listed.shape,
|
|
139
|
+
color: listed.color,
|
|
140
|
+
texture: listed.texture,
|
|
141
|
+
weight: listed.weight,
|
|
142
|
+
price: listed.price,
|
|
143
|
+
availability: listed.availability,
|
|
144
|
+
description: listed.description,
|
|
145
|
+
};
|
|
146
|
+
}
|
|
130
147
|
if (AI.isConfigured()) {
|
|
131
148
|
try {
|
|
132
149
|
const reply = await AI.ask(`You are the gear catalog of a Shadowrun text adventure. The player wants to buy: "${request}".
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/source.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAY,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,EAAE,EAAE,MAAM,kCAAkC,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"source.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/source.ts"],"names":[],"mappings":"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"}
|
|
@@ -175,6 +175,12 @@ export default class Game {
|
|
|
175
175
|
/** A hub-cast member by name, for roster displays that need the live
|
|
176
176
|
* actor (contacts.ts reads their commlink to show reachability). */
|
|
177
177
|
hubActor(name: string): Player | NPC | undefined;
|
|
178
|
+
/** The whole hub cast -- call.ts merges these into its candidates so
|
|
179
|
+
* a linked contact answers from ANYWHERE (a real mid-run session:
|
|
180
|
+
* "call Ratchet" bounced with "you don't know anyone by that name"
|
|
181
|
+
* while the roster promised 📞). The hub Scene instance survives
|
|
182
|
+
* runs, so these are live actors, not ghosts. */
|
|
183
|
+
hubCast(): (Player | NPC)[];
|
|
178
184
|
touchContact(name: string, kind: 'trade' | 'gig', spent?: number): string | null;
|
|
179
185
|
pendingSale?: {
|
|
180
186
|
itemName: string;
|
|
@@ -431,6 +437,14 @@ export default class Game {
|
|
|
431
437
|
updateExits(_room: Room): void;
|
|
432
438
|
updateInventory(_playerInventory: Inventory, _currencyName?: string): void;
|
|
433
439
|
static getInstance(player: Player, sceneSeed: ISceneSeedJson, resume?: ISaveFileV1): Promise<Game>;
|
|
440
|
+
/**
|
|
441
|
+
* The verb the LAST handleInput actually ran, after typo correction
|
|
442
|
+
* ("sjeet" -> "sheet"). ui.ts routes menu output to the Mechanics
|
|
443
|
+
* panel on THIS, not the typed word -- a real session's corrected
|
|
444
|
+
* "sjeet" dumped the whole sheet into the world log. The recursive
|
|
445
|
+
* correction call overwrites it with the corrected verb.
|
|
446
|
+
*/
|
|
447
|
+
lastResolvedVerb: string;
|
|
434
448
|
handleInput(input: string): Promise<string | null>;
|
|
435
449
|
/**
|
|
436
450
|
* The help taxonomy: every entry is [primary, ...aliases], grouped the
|
|
@@ -44,6 +44,8 @@ import { SourceCommand } from './commands/source.js';
|
|
|
44
44
|
import { DocwagonCommand } from './commands/docwagon.js';
|
|
45
45
|
import { LeadCommand, RecruitCommand } from './commands/lead.js';
|
|
46
46
|
import { PalmCommand } from './commands/palm.js';
|
|
47
|
+
import { CatalogCommand } from './commands/catalog.js';
|
|
48
|
+
import { refreshCatalog } from './utilities/catalog.js';
|
|
47
49
|
import { PerformCommand } from './commands/perform.js';
|
|
48
50
|
import { EdgeCommand } from './commands/edge.js';
|
|
49
51
|
import { SheetCommand } from './commands/sheet.js';
|
|
@@ -71,6 +73,8 @@ import { InitiateCommand } from './commands/initiate.js';
|
|
|
71
73
|
import { SummonCommand } from './commands/summon.js';
|
|
72
74
|
import { OrderCommand } from './commands/order.js';
|
|
73
75
|
import { DeployCommand, AgentCommand, RecallCommand } from './commands/companions.js';
|
|
76
|
+
import { DeckCommand, LoadProgramCommand, UnloadProgramCommand } from './commands/deck.js';
|
|
77
|
+
import { getProgram } from './utilities/programs.js';
|
|
74
78
|
import { MoveCommand, RunCommand, SprintCommand } from './commands/move.js';
|
|
75
79
|
import { HintsCommand } from './commands/hints.js';
|
|
76
80
|
import { hint } from './utilities/hints.js';
|
|
@@ -615,6 +619,14 @@ export default class Game {
|
|
|
615
619
|
hubActor(name) {
|
|
616
620
|
return this._hubScene?.allActors?.find(a => a.name === name && a !== this.player);
|
|
617
621
|
}
|
|
622
|
+
/** The whole hub cast -- call.ts merges these into its candidates so
|
|
623
|
+
* a linked contact answers from ANYWHERE (a real mid-run session:
|
|
624
|
+
* "call Ratchet" bounced with "you don't know anyone by that name"
|
|
625
|
+
* while the roster promised 📞). The hub Scene instance survives
|
|
626
|
+
* runs, so these are live actors, not ghosts. */
|
|
627
|
+
hubCast() {
|
|
628
|
+
return this._hubScene?.allActors?.filter(a => a !== this.player) ?? [];
|
|
629
|
+
}
|
|
618
630
|
touchContact(name, kind, spent = 0) {
|
|
619
631
|
if (!this.hasHub)
|
|
620
632
|
return null;
|
|
@@ -949,6 +961,7 @@ export default class Game {
|
|
|
949
961
|
CommandFactory.registerCommand('docwagon', DocwagonCommand);
|
|
950
962
|
// SWAG (commands/source.ts): contacts shop the black market for you.
|
|
951
963
|
CommandFactory.registerCommand('source', SourceCommand);
|
|
964
|
+
CommandFactory.registerCommand('catalog', CatalogCommand);
|
|
952
965
|
CommandFactory.registerCommand('procure', SourceCommand);
|
|
953
966
|
// Job-offer outcomes (commands/job-offer.ts): explicit accept/decline.
|
|
954
967
|
CommandFactory.registerCommand('accept', AcceptCommand);
|
|
@@ -1010,6 +1023,9 @@ export default class Game {
|
|
|
1010
1023
|
CommandFactory.registerCommand('deploy', DeployCommand);
|
|
1011
1024
|
CommandFactory.registerCommand('recall', RecallCommand);
|
|
1012
1025
|
CommandFactory.registerCommand('agent', AgentCommand);
|
|
1026
|
+
CommandFactory.registerCommand('deck', DeckCommand);
|
|
1027
|
+
CommandFactory.registerCommand('load', LoadProgramCommand);
|
|
1028
|
+
CommandFactory.registerCommand('unload', UnloadProgramCommand);
|
|
1013
1029
|
CommandFactory.registerCommand('install', InstallCommand);
|
|
1014
1030
|
CommandFactory.registerCommand('chrome', InstallCommand);
|
|
1015
1031
|
CommandFactory.registerCommand('buy', BuyCommand);
|
|
@@ -1084,6 +1100,9 @@ export default class Game {
|
|
|
1084
1100
|
this._useAi = options.useAi;
|
|
1085
1101
|
this._logFilePath = options.logFilePath;
|
|
1086
1102
|
this._saveFilePath = options.saveFilePath;
|
|
1103
|
+
// The swag catalog warms from maka-cli.com in the background
|
|
1104
|
+
// (utilities/catalog.ts): live list > local cache > baked-in floor.
|
|
1105
|
+
void refreshCatalog();
|
|
1087
1106
|
this.initInputBox(screen);
|
|
1088
1107
|
this.initLogBox(screen);
|
|
1089
1108
|
this.initMetaBox(screen);
|
|
@@ -1965,12 +1984,35 @@ export default class Game {
|
|
|
1965
1984
|
style: {
|
|
1966
1985
|
border: { fg: 'blue' }
|
|
1967
1986
|
},
|
|
1968
|
-
label
|
|
1987
|
+
// The label teaches its own scroll keys -- a real session hit
|
|
1988
|
+
// PgUp/PgDn (the world log's) and concluded the panel can't move.
|
|
1989
|
+
label: ' Mechanics (C-PgUp/Dn) ',
|
|
1969
1990
|
scrollable: true,
|
|
1970
1991
|
alwaysScroll: true,
|
|
1971
1992
|
tags: true,
|
|
1972
1993
|
});
|
|
1973
1994
|
this._metaBox = metaBox;
|
|
1995
|
+
// Scrolling (player report: menus render here now and PgUp/PgDn
|
|
1996
|
+
// don't reach it): PgUp/PgDn stay the WORLD LOG's (that binding is
|
|
1997
|
+
// itself a playtest fix -- see initLogBox), so the Mechanics column
|
|
1998
|
+
// pages on Ctrl-PgUp/PgDn. Same focus problem, same cure: the input
|
|
1999
|
+
// box holds focus forever and grabKeys mutes screen-level handlers,
|
|
2000
|
+
// so the modified names must join ignoreLocked too. Ctrl-End snaps
|
|
2001
|
+
// back to the bottom (new content always scrolls to bottom anyway).
|
|
2002
|
+
screen.ignoreLocked.push('C-pageup', 'C-pagedown', 'C-end');
|
|
2003
|
+
const metaPage = () => Math.max(1, (typeof metaBox.height === 'number' ? metaBox.height : 20) - 3);
|
|
2004
|
+
screen.key(['C-pageup'], () => {
|
|
2005
|
+
metaBox.scroll(-metaPage());
|
|
2006
|
+
screen.render();
|
|
2007
|
+
});
|
|
2008
|
+
screen.key(['C-pagedown'], () => {
|
|
2009
|
+
metaBox.scroll(metaPage());
|
|
2010
|
+
screen.render();
|
|
2011
|
+
});
|
|
2012
|
+
screen.key(['C-end'], () => {
|
|
2013
|
+
metaBox.scrollTo(metaBox.getScrollHeight());
|
|
2014
|
+
screen.render();
|
|
2015
|
+
});
|
|
1974
2016
|
screen.append(metaBox);
|
|
1975
2017
|
}
|
|
1976
2018
|
/**
|
|
@@ -2064,7 +2106,7 @@ export default class Game {
|
|
|
2064
2106
|
// Off-plane the profile is attack programs / astral will and reads as
|
|
2065
2107
|
// Armed. White, not gray, for the same legibility reason as the stance.
|
|
2066
2108
|
const armed = player.plane === 'meat' && weaponItem && !player.weaponDrawn
|
|
2067
|
-
? `{white-fg}Holstered: ${weaponItem.name}${ammoNote} -- "brandish"{/white-fg}`
|
|
2109
|
+
? `{white-fg}Holstered: ${weaponItem.name}${ammoNote}${hint(' -- "brandish"')}{/white-fg}`
|
|
2068
2110
|
: weapon.name === 'bare fists'
|
|
2069
2111
|
? `{gray-fg}Unarmed{/gray-fg}`
|
|
2070
2112
|
: `Armed: ${weapon.name} (DV ${weapon.damage}${weapon.poolBonus > 0 ? `, +${weapon.poolBonus} dice` : ''})${ammoNote}`;
|
|
@@ -2084,10 +2126,10 @@ export default class Game {
|
|
|
2084
2126
|
lines.push(`{magenta-fg}Sustained: armor +${player.sustainedArmor} soak (-2 dice to everything else){/magenta-fg}`);
|
|
2085
2127
|
}
|
|
2086
2128
|
if (player.astralPerceiving) {
|
|
2087
|
-
lines.push(`{magenta-fg}✧ ASTRAL SENSES OPEN (-2 dice sustained) -- "assense" to close{/magenta-fg}`);
|
|
2129
|
+
lines.push(`{magenta-fg}✧ ASTRAL SENSES OPEN (-2 dice sustained)${hint(' -- "assense" to close')}{/magenta-fg}`);
|
|
2088
2130
|
}
|
|
2089
2131
|
if (player.sneaking) {
|
|
2090
|
-
lines.push(`{white-fg}🐾 SNEAKING -- entries are opposed vs their perception; loud acts break it{/white-fg}`);
|
|
2132
|
+
lines.push(`{white-fg}🐾 SNEAKING${hint(' -- entries are opposed vs their perception; loud acts break it')}{/white-fg}`);
|
|
2091
2133
|
}
|
|
2092
2134
|
if (player.activeCallPartner) {
|
|
2093
2135
|
lines.push(`{${CALL_COLOR}-fg}${CALL_ICON} On a call with ${player.activeCallPartner.name}{/${CALL_COLOR}-fg}`);
|
|
@@ -2119,11 +2161,19 @@ export default class Game {
|
|
|
2119
2161
|
// Off-plane context: which reality you're in, your persona's Matrix
|
|
2120
2162
|
// track (cold-sim damage lands there), and where your empty body lies.
|
|
2121
2163
|
if (player.plane === 'matrix') {
|
|
2122
|
-
// Matrix damage is hardware damage: show the DECK's track
|
|
2164
|
+
// Matrix damage is hardware damage: show the DECK's track -- and
|
|
2165
|
+
// its stat line: the ASDF deal ("deck config" is a live combat
|
|
2166
|
+
// decision now, so the HUD shows what you're currently rigged for)
|
|
2167
|
+
// plus running programs, first-word-abbreviated to keep the line
|
|
2168
|
+
// inside the box (Biofeedback Filter -> Biofeedback). A
|
|
2123
2169
|
// technomancer has no deck -- their stun track (already on line 2)
|
|
2124
2170
|
// is what the ice chews on.
|
|
2125
|
-
const
|
|
2126
|
-
|
|
2171
|
+
const jackedDeck = player.activeDeck;
|
|
2172
|
+
const pgms = jackedDeck && jackedDeck.loadedPrograms.length > 0
|
|
2173
|
+
? ` [${jackedDeck.loadedPrograms.map(k => getProgram(k)?.name.split(' ')[0] ?? k).join(' ')}]`
|
|
2174
|
+
: '';
|
|
2175
|
+
const track = jackedDeck
|
|
2176
|
+
? ` Deck A${jackedDeck.attack} S${jackedDeck.sleaze} D${jackedDeck.dataProcessing} F${jackedDeck.firewall} ${jackedDeck.deckSummary()}${player.simMode === 'hot' ? ' +biofeedback' : ''}${pgms}`
|
|
2127
2177
|
: ` (living persona -- damage is REAL stun)`;
|
|
2128
2178
|
lines.push(`{cyan-fg}▣ MATRIX ${(player.simMode ?? 'cold').toUpperCase()}-SIM${track} -- body at ${player.bodyRoom?.name ?? '???'}{/cyan-fg}`);
|
|
2129
2179
|
}
|
|
@@ -2167,6 +2217,14 @@ export default class Game {
|
|
|
2167
2217
|
}
|
|
2168
2218
|
return Game.instance;
|
|
2169
2219
|
}
|
|
2220
|
+
/**
|
|
2221
|
+
* The verb the LAST handleInput actually ran, after typo correction
|
|
2222
|
+
* ("sjeet" -> "sheet"). ui.ts routes menu output to the Mechanics
|
|
2223
|
+
* panel on THIS, not the typed word -- a real session's corrected
|
|
2224
|
+
* "sjeet" dumped the whole sheet into the world log. The recursive
|
|
2225
|
+
* correction call overwrites it with the corrected verb.
|
|
2226
|
+
*/
|
|
2227
|
+
lastResolvedVerb = '';
|
|
2170
2228
|
async handleInput(input) {
|
|
2171
2229
|
// "jack-in"/"jack-out" read naturally but parse as unknown verbs (a
|
|
2172
2230
|
// real session typed "jack-in" and bounced) -- normalize the hyphen.
|
|
@@ -2174,6 +2232,7 @@ export default class Game {
|
|
|
2174
2232
|
const parts = normalized.trim().split(' ');
|
|
2175
2233
|
const verb = parts[0].toLowerCase();
|
|
2176
2234
|
const args = parts.slice(1);
|
|
2235
|
+
this.lastResolvedVerb = verb;
|
|
2177
2236
|
// Quitting takes a CONFIRM (player request: "I just exited by
|
|
2178
2237
|
// mistake"): the first "quit" arms it, "y"/"yes" (or quit again)
|
|
2179
2238
|
// seals it, anything else disarms and runs as the command it is.
|
|
@@ -2262,11 +2321,14 @@ export default class Game {
|
|
|
2262
2321
|
static HELP_CATEGORIES = [
|
|
2263
2322
|
{ title: 'moving', entries: [['look'], ['go'], ['move', 'walk', 'approach', 'run', 'sprint'], ['map', 'exits'], ['search'], ['sneak']] },
|
|
2264
2323
|
{ title: 'gear', entries: [['inv', 'inventory'], ['equipment', 'eq'], ['take'], ['drop'], ['give'], ['store'], ['equip'], ['unequip'], ['brandish', 'draw'], ['holster', 'stow'], ['reload'], ['use'], ['read']] },
|
|
2265
|
-
{ title: 'combat', entries: [['attack', 'kill'], ['subdue'], ['
|
|
2324
|
+
{ title: 'combat', entries: [['attack', 'kill'], ['subdue'], ['grapple', 'restrain', 'clinch'], ['struggle'], ['release'], ['stance'], ['surrender'], ['edge'], ['rest']] },
|
|
2325
|
+
// The party layer: everyone who walks (or flies, or manifests) at
|
|
2326
|
+
// your side answers to these.
|
|
2327
|
+
{ title: 'party', entries: [['order'], ['lead'], ['command'], ['deploy'], ['recall']] },
|
|
2266
2328
|
{ title: 'magic', entries: [['spells'], ['cast'], ['summon', 'conjure'], ['project'], ['return'], ['assense']] },
|
|
2267
|
-
{ title: 'matrix', entries: [['jack'], ['
|
|
2268
|
-
{ title: 'social', entries: [['say'], ['talk-to'], ['call'], ['end-call', 'end', 'hangup'], ['haggle', 'negotiate'], ['persuade', 'convince'], ['ask'], ['contacts']] },
|
|
2269
|
-
{ title: 'street', entries: [['browse', 'buy'], ['sell'], ['work', 'gig'], ['treat'], ['eat'], ['drink'], ['lifestyle'], ['pay']] },
|
|
2329
|
+
{ title: 'matrix', entries: [['jack'], ['deck'], ['load'], ['unload'], ['hack'], ['pan'], ['silent'], ['reboot'], ['agent'], ['drone'], ['jump', 'rig']] },
|
|
2330
|
+
{ title: 'social', entries: [['say'], ['talk-to'], ['call'], ['end-call', 'end', 'hangup'], ['accept'], ['decline', 'deny', 'refuse'], ['haggle', 'negotiate'], ['persuade', 'convince'], ['ask'], ['contacts']] },
|
|
2331
|
+
{ title: 'street', entries: [['browse', 'buy'], ['sell'], ['catalog'], ['source', 'procure'], ['work', 'gig'], ['perform'], ['palm'], ['docwagon'], ['treat'], ['eat'], ['drink'], ['lifestyle'], ['pay']] },
|
|
2270
2332
|
{ title: 'barriers', entries: [['solve'], ['pick'], ['bluff'], ['unlock'], ['lock']] },
|
|
2271
2333
|
{ title: 'character', entries: [['sheet', 'stats'], ['advance', 'train'], ['qualities', 'quality'], ['initiate', 'submerge'], ['install', 'chrome']] },
|
|
2272
2334
|
{ title: 'session', entries: [['help'], ['hints'], ['clear'], ['quit', 'exit']] },
|
|
@@ -2274,8 +2336,8 @@ export default class Game {
|
|
|
2274
2336
|
/** Descriptions for the verbs handled inline in handleInput() rather than registered. */
|
|
2275
2337
|
static BUILTIN_DESCRIPTIONS = {
|
|
2276
2338
|
help: 'This overview. "help <category>" for one group with full descriptions; "help <command>" for one command.',
|
|
2277
|
-
clear: 'Clear the
|
|
2278
|
-
quit: 'Exit the game.',
|
|
2339
|
+
clear: 'Clear the world log and the Mechanics panel.',
|
|
2340
|
+
quit: 'Exit the game (asks to confirm; a hub campaign autosaves on the way out).',
|
|
2279
2341
|
};
|
|
2280
2342
|
describeVerb(verb) {
|
|
2281
2343
|
const builtin = Game.BUILTIN_DESCRIPTIONS[verb];
|
|
@@ -2312,14 +2374,34 @@ export default class Game {
|
|
|
2312
2374
|
}
|
|
2313
2375
|
return `No command or category called "${query}". Try plain "help".`;
|
|
2314
2376
|
}
|
|
2315
|
-
// The overview:
|
|
2377
|
+
// The overview: category lines with primaries only, chunked so no
|
|
2378
|
+
// line outgrows the Mechanics column (help renders there now --
|
|
2379
|
+
// blessed's mid-list wrap lost the left-column alignment).
|
|
2316
2380
|
const lines = ['=== COMMANDS ==='];
|
|
2317
2381
|
const pad = Math.max(...Game.HELP_CATEGORIES.map(c => c.title.length));
|
|
2382
|
+
const pushWrapped = (title, verbs) => {
|
|
2383
|
+
const rows = [];
|
|
2384
|
+
let cur = '';
|
|
2385
|
+
for (const v of verbs) {
|
|
2386
|
+
const next = cur ? `${cur}, ${v}` : v;
|
|
2387
|
+
if (next.length > 40 && cur) {
|
|
2388
|
+
rows.push(cur + ',');
|
|
2389
|
+
cur = v;
|
|
2390
|
+
}
|
|
2391
|
+
else {
|
|
2392
|
+
cur = next;
|
|
2393
|
+
}
|
|
2394
|
+
}
|
|
2395
|
+
rows.push(cur);
|
|
2396
|
+
lines.push(`${title.padEnd(pad)} ${rows[0]}`);
|
|
2397
|
+
for (const r of rows.slice(1))
|
|
2398
|
+
lines.push(`${' '.repeat(pad)} ${r}`);
|
|
2399
|
+
};
|
|
2318
2400
|
for (const category of Game.HELP_CATEGORIES) {
|
|
2319
|
-
|
|
2401
|
+
pushWrapped(category.title, category.entries.map(e => e[0]));
|
|
2320
2402
|
}
|
|
2321
2403
|
if (uncategorized.length > 0) {
|
|
2322
|
-
|
|
2404
|
+
pushWrapped('other', uncategorized);
|
|
2323
2405
|
}
|
|
2324
2406
|
lines.push('');
|
|
2325
2407
|
lines.push(`"help <category>" for a group with descriptions ("help combat"); "help <command>" for one ("help haggle").`);
|