@maka/maka-cli 5.124.0 → 5.126.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/companions.js +13 -5
- package/bundle/typescript/src/commands/game/sideQuest/commands/companions.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/drone.js +5 -2
- package/bundle/typescript/src/commands/game/sideQuest/commands/drone.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/garage.d.ts +15 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/garage.js +55 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/garage.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/jack.js +9 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/jack.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/jump.js +10 -4
- package/bundle/typescript/src/commands/game/sideQuest/commands/jump.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/lifestyle.d.ts +7 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/lifestyle.js +58 -9
- package/bundle/typescript/src/commands/game/sideQuest/commands/lifestyle.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/project.js +7 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/project.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/rest.js +7 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/rest.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/sheet.js +7 -2
- package/bundle/typescript/src/commands/game/sideQuest/commands/sheet.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/take.js +22 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/take.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/engine-version.d.ts +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/engine-version.js +17 -1
- package/bundle/typescript/src/commands/game/sideQuest/engine-version.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/chargen-factory.d.ts +39 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/chargen-factory.js +99 -23
- package/bundle/typescript/src/commands/game/sideQuest/factories/chargen-factory.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/game.d.ts +42 -1
- package/bundle/typescript/src/commands/game/sideQuest/game.js +115 -34
- package/bundle/typescript/src/commands/game/sideQuest/game.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/home-containers.d.ts +36 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/home-containers.js +62 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/home-containers.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/room.js +15 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/room.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/types/save-file.d.ts +8 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/commerce.d.ts +32 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/commerce.js +45 -5
- package/bundle/typescript/src/commands/game/sideQuest/utilities/commerce.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/owned-drones.d.ts +39 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/owned-drones.js +37 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/owned-drones.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/persistence.d.ts +34 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/persistence.js +63 -27
- package/bundle/typescript/src/commands/game/sideQuest/utilities/persistence.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@maka/maka-cli",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.126.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.",
|
|
@@ -4,6 +4,7 @@ import { fuzzyPickName } from '../utilities/fuzzy-match.js';
|
|
|
4
4
|
import { agentRatingFromName } from '../utilities/programs.js';
|
|
5
5
|
import { resonanceAction } from '../resonance-actions.js';
|
|
6
6
|
import { FIREARM_SKILLS } from '../models/player.js';
|
|
7
|
+
import { ownedDrones, droneListLines } from '../utilities/owned-drones.js';
|
|
7
8
|
/**
|
|
8
9
|
* The rigger's autonomous frames (SR5e p.269-271): "deploy <drone>" puts
|
|
9
10
|
* a carried frame in the air under its own DOG-BRAIN -- no control rig
|
|
@@ -24,19 +25,25 @@ export class DeployCommand extends Command {
|
|
|
24
25
|
if (actor.plane !== 'meat') {
|
|
25
26
|
return `Deploying is a hands job -- come back to your body.`;
|
|
26
27
|
}
|
|
27
|
-
|
|
28
|
+
// The pack, and the Garage while standing in the hideout
|
|
29
|
+
// (utilities/owned-drones.ts). A garaged frame rolls out of the bay
|
|
30
|
+
// and stays parked there on paper: deploying binds the shell to the
|
|
31
|
+
// Item, it never moves it.
|
|
32
|
+
const owned = ownedDrones(actor, game.homeRoom, { reach: 'here' });
|
|
33
|
+
const drones = owned.map(d => d.item);
|
|
34
|
+
const atHome = game.homeRoom !== undefined && actor.currentLocation === game.homeRoom;
|
|
28
35
|
if (drones.length === 0) {
|
|
29
|
-
return `No drone in your pack to deploy.${hint(` (Ratchet's Circuit Bazaar stocks airframes.)`)}`;
|
|
36
|
+
return `No drone in your pack${atHome ? ' or your garage' : ''} to deploy.${hint(` (Ratchet's Circuit Bazaar stocks airframes.)`)}`;
|
|
30
37
|
}
|
|
31
38
|
let drone = drones.length === 1 ? drones[0] : undefined;
|
|
32
39
|
if (args.length > 0) {
|
|
33
40
|
const picked = fuzzyPickName(args.join(' '), drones.map(d => d.name));
|
|
34
41
|
drone = picked ? drones.find(d => d.name === picked) : undefined;
|
|
35
42
|
if (!drone)
|
|
36
|
-
return `No drone by that name in
|
|
43
|
+
return [`No drone by that name in reach. Yours:`, ...droneListLines(owned)].join('\n');
|
|
37
44
|
}
|
|
38
45
|
if (!drone)
|
|
39
|
-
return `Which frame?
|
|
46
|
+
return [`Which frame? ("deploy <name>")`, ...droneListLines(owned)].join('\n');
|
|
40
47
|
if (drone.isWrecked)
|
|
41
48
|
return `The ${drone.name} is a wreck -- it deploys nowhere until you rest and true the rotors.`;
|
|
42
49
|
if (game.companions.some(c => c.boundDevice === drone)) {
|
|
@@ -45,7 +52,8 @@ export class DeployCommand extends Command {
|
|
|
45
52
|
const shell = game.deployDroneShell(drone, actor.currentLocation);
|
|
46
53
|
if (!shell)
|
|
47
54
|
return `The autopilot stutters -- something already answers to that designation here.`;
|
|
48
|
-
|
|
55
|
+
const fromGarage = owned.find(d => d.item === drone)?.where === 'garage';
|
|
56
|
+
actor.performAction('deploys', fromGarage ? `${drone.name} -- rolling out of the garage under its own power` : `${drone.name} -- rotors spinning up to a hover`);
|
|
49
57
|
this.logger.write(`DeployCommand: ${actor.name} deployed ${drone.name} on autopilot.`);
|
|
50
58
|
this.scene.updateStatus();
|
|
51
59
|
// ANY firearm skill, not one of them. A drone's mount is a gun; after
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"companions.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/companions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAY,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"companions.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/companions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Command } from './command.js';
|
|
2
2
|
import { Door } from '../models/door.js';
|
|
3
|
-
import { Category } from '../types/shared/item-enum.js';
|
|
4
3
|
import { rollPool, formatRoll } from '../utilities/dice.js';
|
|
4
|
+
import { ownedDrones } from '../utilities/owned-drones.js';
|
|
5
5
|
/**
|
|
6
6
|
* The rigger's mechanic: launch a carried surveillance drone for a live
|
|
7
7
|
* sweep of every room adjacent to this one -- who's there, what's locked,
|
|
@@ -22,7 +22,10 @@ export class DroneCommand extends Command {
|
|
|
22
22
|
if (actor.isIncapacitated()) {
|
|
23
23
|
return `You're down. The drone stays in the bag.`;
|
|
24
24
|
}
|
|
25
|
-
|
|
25
|
+
// The pack first, then the Garage while standing in the hideout
|
|
26
|
+
// (utilities/owned-drones.ts): eyes you carry beat eyes you parked.
|
|
27
|
+
const owned = ownedDrones(actor, this.game?.homeRoom, { reach: 'here' });
|
|
28
|
+
const drone = (owned.find(d => d.where === 'pack') ?? owned[0])?.item;
|
|
26
29
|
if (!drone) {
|
|
27
30
|
return `No drone in your kit. Riggers carry their eyes with them.`;
|
|
28
31
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drone.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/drone.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAY,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"drone.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/drone.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Command, ICommand } from './command.js';
|
|
2
|
+
/**
|
|
3
|
+
* THE BAY, LISTED (user ask 2026-09-06: "a garage command, to list
|
|
4
|
+
* what's in there"). The hideout's Garage (models/home-containers.ts,
|
|
5
|
+
* the SR5 p.370 Special Work Area) already shows in "look" at home;
|
|
6
|
+
* this answers from anywhere, because knowing what is parked is a
|
|
7
|
+
* rigger's business wherever the job took them. What can be DONE with a
|
|
8
|
+
* frame still depends on where you stand: deploy/jump reach the bay
|
|
9
|
+
* only from the hideout (utilities/owned-drones.ts).
|
|
10
|
+
*/
|
|
11
|
+
export declare class GarageCommand extends Command implements ICommand {
|
|
12
|
+
protected static verb: string;
|
|
13
|
+
protected static description: string;
|
|
14
|
+
execute(_args?: string[]): Promise<string>;
|
|
15
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { Command } from './command.js';
|
|
2
|
+
import { hint } from '../utilities/hints.js';
|
|
3
|
+
import { findGarage } from '../models/home-containers.js';
|
|
4
|
+
/**
|
|
5
|
+
* THE BAY, LISTED (user ask 2026-09-06: "a garage command, to list
|
|
6
|
+
* what's in there"). The hideout's Garage (models/home-containers.ts,
|
|
7
|
+
* the SR5 p.370 Special Work Area) already shows in "look" at home;
|
|
8
|
+
* this answers from anywhere, because knowing what is parked is a
|
|
9
|
+
* rigger's business wherever the job took them. What can be DONE with a
|
|
10
|
+
* frame still depends on where you stand: deploy/jump reach the bay
|
|
11
|
+
* only from the hideout (utilities/owned-drones.ts).
|
|
12
|
+
*/
|
|
13
|
+
export class GarageCommand extends Command {
|
|
14
|
+
static verb = 'garage';
|
|
15
|
+
static description = 'List the frames parked in your hideout\'s garage, with their hull state. Works anywhere; deploying from it needs you at home.';
|
|
16
|
+
async execute(_args = []) {
|
|
17
|
+
const game = this.game;
|
|
18
|
+
if (!game?.hasHub || !game.homeRoom) {
|
|
19
|
+
return `No hideout on this job, so no garage.`;
|
|
20
|
+
}
|
|
21
|
+
const actor = this.actor;
|
|
22
|
+
const garage = findGarage(game.homeRoom, actor.name);
|
|
23
|
+
if (!garage) {
|
|
24
|
+
return game.lifestyleTier === 'Street'
|
|
25
|
+
? `No garage -- there's no garage on the Street.${hint(' ("lifestyle squatter" or better, then "lifestyle garage", at home.)')}`
|
|
26
|
+
: `No garage on your lease.${hint(' ("lifestyle garage" at home adds the Special Work Area, SR5 p.370.)')}`;
|
|
27
|
+
}
|
|
28
|
+
const atHome = actor.currentLocation === game.homeRoom;
|
|
29
|
+
const frames = garage.inventory.getAllItems();
|
|
30
|
+
const lines = [`=== GARAGE (${game.homeRoom.name}${atHome ? '' : ' -- you are away'}) ===`];
|
|
31
|
+
if (frames.length === 0) {
|
|
32
|
+
lines.push(` An empty bay. "store <drone>" at home parks a frame here.`);
|
|
33
|
+
return lines.join('\n');
|
|
34
|
+
}
|
|
35
|
+
const deployed = new Set(game.companions.map(c => c.boundDevice).filter(Boolean));
|
|
36
|
+
for (const f of frames) {
|
|
37
|
+
const state = f.isWrecked
|
|
38
|
+
? 'WRECKED'
|
|
39
|
+
: deployed.has(f)
|
|
40
|
+
? 'DEPLOYED'
|
|
41
|
+
: actor.riggedDrone === f
|
|
42
|
+
? 'JUMPED IN'
|
|
43
|
+
: 'parked';
|
|
44
|
+
const hull = f.isDrone() && f.maxDroneBoxes > 0 ? ` hull ${f.droneSummary()}` : '';
|
|
45
|
+
lines.push(` • ${f.name.padEnd(26)} ${state}${hull}${f.weight ? ` ${f.weight}kg` : ''}`);
|
|
46
|
+
}
|
|
47
|
+
const tip = atHome
|
|
48
|
+
? hint(`"deploy <name>" or "jump <name>" from here; "take <name> from garage" carries the small ones along.`)
|
|
49
|
+
: hint(`Deploying and jumping from the bay need you at the hideout.`);
|
|
50
|
+
if (tip)
|
|
51
|
+
lines.push('', tip);
|
|
52
|
+
return lines.join('\n');
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=garage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"garage.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/garage.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Command } from './command.js';
|
|
2
2
|
import { gridVicinity } from '../utilities/grid-reach.js';
|
|
3
3
|
import { enterMatrix, leaveMatrix } from '../utilities/planes.js';
|
|
4
|
+
import { hint } from '../utilities/hints.js';
|
|
4
5
|
import { rollPool, formatRoll } from '../utilities/dice.js';
|
|
5
6
|
/**
|
|
6
7
|
* The Matrix door, both directions: "jack in [hot|cold]" and "jack out".
|
|
@@ -126,6 +127,14 @@ export class JackCommand extends Command {
|
|
|
126
127
|
if (actor.plane === 'astral') {
|
|
127
128
|
return `You're projecting -- an astral form can't touch a deck. "return" to your body first.`;
|
|
128
129
|
}
|
|
130
|
+
// JUMPED IN IS ALREADY VR (SR5 p.266 "VR and Rigging"; p.241): your
|
|
131
|
+
// persona and the frame are one icon, and there is no second
|
|
132
|
+
// persona to send into a host. Leaving the frame is the Switch
|
|
133
|
+
// Interface Mode action -- "jump out" here -- and then the deck.
|
|
134
|
+
// (User report 2026-09-06: jumped in, then jacked in on top.)
|
|
135
|
+
if (actor.plane === 'drone') {
|
|
136
|
+
return `You're already in VR -- riding the ${actor.riggedDrone?.name ?? 'frame'}, your persona and its icon one thing. There's no second persona to send into the Matrix. "jump out" first, then jack in.${hint(' (SR5 p.266: jumped in is VR; leaving it is Switch Interface Mode.)')}`;
|
|
137
|
+
}
|
|
129
138
|
if (actor.isIncapacitated()) {
|
|
130
139
|
return `You're down. Nobody jacks in from the floor.`;
|
|
131
140
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jack.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/jack.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"jack.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/jack.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ import { Command } from './command.js';
|
|
|
2
2
|
import { hint } from '../utilities/hints.js';
|
|
3
3
|
import { enterDrone, leaveDrone } from '../utilities/planes.js';
|
|
4
4
|
import { fuzzyPickName } from '../utilities/fuzzy-match.js';
|
|
5
|
+
import { ownedDrones, droneListLines } from '../utilities/owned-drones.js';
|
|
5
6
|
/**
|
|
6
7
|
* Jumped-in rigging (SR5e p.266): "jump" pours the rigger into a carried
|
|
7
8
|
* drone -- full VR through an IMPLANTED CONTROL RIG (the book's hard
|
|
@@ -32,9 +33,14 @@ export class JumpCommand extends Command {
|
|
|
32
33
|
if (actor.inExchange) {
|
|
33
34
|
return `Going limp in a firefight is called being a target. Let the exchange settle.`;
|
|
34
35
|
}
|
|
35
|
-
|
|
36
|
+
// The pack, and the Garage while standing in the hideout
|
|
37
|
+
// (utilities/owned-drones.ts): a frame parked at home jumps from
|
|
38
|
+
// home and stays parked while you ride it.
|
|
39
|
+
const owned = ownedDrones(actor, this.game?.homeRoom, { reach: 'here' });
|
|
40
|
+
const drones = owned.map(d => d.item);
|
|
41
|
+
const atHome = this.game?.homeRoom !== undefined && actor.currentLocation === this.game.homeRoom;
|
|
36
42
|
if (drones.length === 0) {
|
|
37
|
-
return `Nothing to jump into -- no drone in your pack.${hint(` (Ratchet's Circuit Bazaar stocks airframes.)`)}`;
|
|
43
|
+
return `Nothing to jump into -- no drone in your pack${atHome ? ' or your garage' : ''}.${hint(` (Ratchet's Circuit Bazaar stocks airframes.)`)}`;
|
|
38
44
|
}
|
|
39
45
|
// "jump hot" / "jump <drone> hot": strip the mode word, pick the frame.
|
|
40
46
|
const words = args.map(w => w.toLowerCase());
|
|
@@ -45,11 +51,11 @@ export class JumpCommand extends Command {
|
|
|
45
51
|
const picked = fuzzyPickName(nameWords.join(' '), drones.map(d => d.name));
|
|
46
52
|
drone = picked ? drones.find(d => d.name === picked) : undefined;
|
|
47
53
|
if (!drone) {
|
|
48
|
-
return `No drone by that name in
|
|
54
|
+
return [`No drone by that name in reach. Yours:`, ...droneListLines(owned)].join('\n');
|
|
49
55
|
}
|
|
50
56
|
}
|
|
51
57
|
if (!drone) {
|
|
52
|
-
return `Which airframe?
|
|
58
|
+
return [`Which airframe? ("jump <name>", add "hot" for hot-sim)`, ...droneListLines(owned)].join('\n');
|
|
53
59
|
}
|
|
54
60
|
if (drone.isWrecked) {
|
|
55
61
|
return `The ${drone.name} is a wreck -- bent rotors and dead boards jump nowhere. It repairs while you rest somewhere safe.`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jump.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/jump.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAY,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"jump.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/jump.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAY,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAG5D,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE3E;;;;;;;;;GASG;AACH,MAAM,OAAO,WAAY,SAAQ,OAAO;IAC5B,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC;IACrB,MAAM,CAAC,WAAW,GAAG,kMAAkM,CAAC;IAElO,KAAK,CAAC,OAAO,CAAC,OAAiB,EAAE;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAEzB,wCAAwC;QACxC,IAAI,KAAK,CAAC,KAAK,KAAK,OAAO,EAAE,CAAC;YAC5B,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClD,CAAC;QAED,IAAI,KAAK,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;YAC3B,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ;gBAC7B,CAAC,CAAC,yEAAyE;gBAC3E,CAAC,CAAC,0EAA0E,CAAC;QACjF,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;YACjC,OAAO,6EAA6E,IAAI,CAAC,eAAe,CAAC,6BAA6B,CAAC;QACzI,CAAC;QACD,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;YACrB,OAAO,8EAA8E,CAAC;QACxF,CAAC;QAED,yDAAyD;QACzD,iEAAiE;QACjE,2CAA2C;QAC3C,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QACzE,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,QAAQ,KAAK,SAAS,IAAI,KAAK,CAAC,eAAe,KAAK,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;QACjG,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,gDAAgD,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,+CAA+C,CAAC,EAAE,CAAC;QACpJ,CAAC;QAED,wEAAwE;QACxE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QAC7C,MAAM,IAAI,GAAY,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;QAC7D,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7D,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACxD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YAC3E,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACjE,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO,CAAC,wCAAwC,EAAE,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzF,CAAC;QACH,CAAC;QACD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,wDAAwD,EAAE,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzG,CAAC;QACD,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;YACpB,OAAO,OAAO,KAAK,CAAC,IAAI,oGAAoG,CAAC;QAC/H,CAAC;QACD,oEAAoE;QACpE,6DAA6D;QAC7D,oEAAoE;QACpE,kEAAkE;QAClE,6CAA6C;QAC7C,IAAI,UAA4B,CAAC;QACjC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,KAAK,CAAC,CAAC;QACxE,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;gBAC1B,OAAO,OAAO,KAAK,CAAC,IAAI,sGAAsG,CAAC;YACjI,CAAC;YACD,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC;YACxC,IAAI,CAAC,IAAK,CAAC,gBAAgB,CAAC,MAAM,EAAE,2CAA2C,CAAC,CAAC;QACnF,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,KAAK,CAAC,IAAI,iBAAiB,KAAK,CAAC,IAAI,KAAK,IAAI,QAAQ,UAAU,CAAC,CAAC,CAAC,qCAAqC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACrK,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QACzD,IAAI,UAAU,IAAI,UAAU,KAAK,KAAK,CAAC,eAAe,EAAE,CAAC;YACvD,KAAK,CAAC,eAAe,GAAG,UAAU,CAAC;YACnC,KAAK,CAAC,IAAI,CAAC,wHAAwH,UAAU,CAAC,IAAI,GAAG,CAAC,CAAC;QACzJ,CAAC;aAAM,IAAI,MAAM,EAAE,CAAC;YAClB,KAAK,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;QACjE,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC"}
|
|
@@ -7,10 +7,17 @@ import { Command, ICommand } from './command.js';
|
|
|
7
7
|
* in the door at High. Can't pay? You slide down a tier and the
|
|
8
8
|
* shortfall becomes debt. "lifestyle" views the board anywhere; changing
|
|
9
9
|
* tiers happens at home.
|
|
10
|
+
*
|
|
11
|
+
* OPTIONS (SR5 p.370, 2026-09-05): riders on the tier -- today the
|
|
12
|
+
* garage (Special Work Area), the bay a rigger's frames park in and
|
|
13
|
+
* deploy from. "lifestyle garage" toggles it at home; a slide to Street
|
|
14
|
+
* drops it (the book bars every option there) and the frames land on the
|
|
15
|
+
* floor.
|
|
10
16
|
*/
|
|
11
17
|
export declare class LifestyleCommand extends Command implements ICommand {
|
|
12
18
|
protected static verb: string;
|
|
13
19
|
protected static description: string;
|
|
14
20
|
execute(args?: string[]): Promise<string>;
|
|
21
|
+
private toggleOption;
|
|
15
22
|
private listTiers;
|
|
16
23
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Command } from './command.js';
|
|
2
2
|
import { hint } from '../utilities/hints.js';
|
|
3
|
-
import { LIFESTYLE_TIERS } from '../utilities/commerce.js';
|
|
3
|
+
import { LIFESTYLE_TIERS, LIFESTYLE_OPTIONS, canonicalLifestyleOption, lifestyleOptionAllowed } from '../utilities/commerce.js';
|
|
4
4
|
import { fuzzyPickName } from '../utilities/fuzzy-match.js';
|
|
5
5
|
/**
|
|
6
6
|
* The bills half of downtime, SR5e p.369 scaled to per-job-cycle: your
|
|
@@ -10,10 +10,16 @@ import { fuzzyPickName } from '../utilities/fuzzy-match.js';
|
|
|
10
10
|
* in the door at High. Can't pay? You slide down a tier and the
|
|
11
11
|
* shortfall becomes debt. "lifestyle" views the board anywhere; changing
|
|
12
12
|
* tiers happens at home.
|
|
13
|
+
*
|
|
14
|
+
* OPTIONS (SR5 p.370, 2026-09-05): riders on the tier -- today the
|
|
15
|
+
* garage (Special Work Area), the bay a rigger's frames park in and
|
|
16
|
+
* deploy from. "lifestyle garage" toggles it at home; a slide to Street
|
|
17
|
+
* drops it (the book bars every option there) and the frames land on the
|
|
18
|
+
* floor.
|
|
13
19
|
*/
|
|
14
20
|
export class LifestyleCommand extends Command {
|
|
15
21
|
static verb = 'lifestyle';
|
|
16
|
-
static description = 'View or change your hideout\'s lifestyle tier (upkeep per job, rest quality, edge perks). "lifestyle" lists; "lifestyle <tier>" moves -- at home.';
|
|
22
|
+
static description = 'View or change your hideout\'s lifestyle tier (upkeep per job, rest quality, edge perks) and options. "lifestyle" lists; "lifestyle <tier>" moves; "lifestyle garage" toggles the bay -- at home.';
|
|
17
23
|
async execute(args = []) {
|
|
18
24
|
if (!this.game?.hasHub) {
|
|
19
25
|
return `Lifestyle is a home thing, and out here there's only the job.`;
|
|
@@ -25,9 +31,13 @@ export class LifestyleCommand extends Command {
|
|
|
25
31
|
if (actor.currentLocation?.roomType !== 'Residence') {
|
|
26
32
|
return `Rearranging how you live happens AT home -- head back to your hideout first.`;
|
|
27
33
|
}
|
|
34
|
+
// An OPTION first: "lifestyle garage" toggles the rider.
|
|
35
|
+
const optionKey = canonicalLifestyleOption(args.join(' '));
|
|
36
|
+
if (optionKey)
|
|
37
|
+
return this.toggleOption(optionKey);
|
|
28
38
|
const picked = fuzzyPickName(args.join(' '), LIFESTYLE_TIERS.map(t => t.name));
|
|
29
39
|
if (!picked) {
|
|
30
|
-
return `That's not a way to live. Tiers: ${LIFESTYLE_TIERS.map(t => t.name).join(', ')}.`;
|
|
40
|
+
return `That's not a way to live. Tiers: ${LIFESTYLE_TIERS.map(t => t.name).join(', ')}. Options: ${LIFESTYLE_OPTIONS.map(o => o.key).join(', ')}.`;
|
|
31
41
|
}
|
|
32
42
|
if (picked === this.game.lifestyleTier) {
|
|
33
43
|
return `You're already living ${picked}.`;
|
|
@@ -38,11 +48,14 @@ export class LifestyleCommand extends Command {
|
|
|
38
48
|
const from = this.game.lifestyleTier;
|
|
39
49
|
this.game.lifestyleTier = picked;
|
|
40
50
|
actor.lifestyleEdgeBonus = this.game.lifestyle.edgeBonus;
|
|
51
|
+
// A rider the new tier bars lapses with the move (p.370: none on
|
|
52
|
+
// Street); its frames land on the floor, still yours.
|
|
53
|
+
const dropped = this.game.dropBarredLifestyleOptions();
|
|
41
54
|
// The hideout's description follows the rent -- the move is visible
|
|
42
55
|
// the next time you look around.
|
|
43
|
-
this.game.syncHomeToLifestyle();
|
|
56
|
+
const spilled = this.game.syncHomeToLifestyle();
|
|
44
57
|
actor.performAction('changes lifestyle', `${from} -> ${picked}`);
|
|
45
|
-
this.logger.write(`Lifestyle: ${from} -> ${picked} (upkeep ${this.game.
|
|
58
|
+
this.logger.write(`Lifestyle: ${from} -> ${picked} (upkeep ${this.game.lifestyleUpkeep}/job${dropped.length ? `, dropped ${dropped.join(', ')}` : ''}).`);
|
|
46
59
|
this.scene.updateStatus();
|
|
47
60
|
const tier = this.game.lifestyle;
|
|
48
61
|
const up = LIFESTYLE_TIERS.findIndex(t => t.name === picked) > LIFESTYLE_TIERS.findIndex(t => t.name === from);
|
|
@@ -50,17 +63,47 @@ export class LifestyleCommand extends Command {
|
|
|
50
63
|
up
|
|
51
64
|
? `You move up: ${picked}. ${tier.blurb.charAt(0).toUpperCase()}${tier.blurb.slice(1)}.`
|
|
52
65
|
: `You cut back: ${picked}. ${tier.blurb.charAt(0).toUpperCase()}${tier.blurb.slice(1)}.`,
|
|
53
|
-
` Upkeep: ${
|
|
66
|
+
` Upkeep: ${this.game.lifestyleUpkeep} nuyen per job, collected when you come home.`,
|
|
54
67
|
...(tier.restDice !== 0 ? [` Rest at home: ${tier.restDice > 0 ? '+' : ''}${tier.restDice} dice.`] : []),
|
|
55
68
|
...(tier.edgeBonus > 0 ? [` +${tier.edgeBonus} edge banked every job.`] : []),
|
|
56
69
|
...(tier.clearStunOnReturn ? [` Coming home clears your stun track entirely.`] : []),
|
|
70
|
+
...(dropped.length > 0 ? [` The garage lease lapses with the move${spilled.length > 0 ? ` -- ${spilled.join(', ')} sit${spilled.length === 1 ? 's' : ''} on the floor now` : ''}.`] : []),
|
|
57
71
|
hint(` The place already reads different -- "look" around.`),
|
|
58
72
|
].join('\n');
|
|
59
73
|
}
|
|
74
|
+
toggleOption(key) {
|
|
75
|
+
const game = this.game;
|
|
76
|
+
const option = LIFESTYLE_OPTIONS.find(o => o.key === key);
|
|
77
|
+
if (game.hasLifestyleOption(key)) {
|
|
78
|
+
game.lifestyleOptions = game.lifestyleOptions.filter(o => o !== key);
|
|
79
|
+
const spilled = game.syncHomeToLifestyle();
|
|
80
|
+
this.actor.performAction('gives up', option.name);
|
|
81
|
+
this.logger.write(`Lifestyle: dropped ${key} (upkeep ${game.lifestyleUpkeep}/job).`);
|
|
82
|
+
this.scene.updateStatus();
|
|
83
|
+
return `You let the ${option.name} go: -${option.upkeep} nuyen per job.${spilled.length > 0 ? ` ${spilled.join(', ')} sit${spilled.length === 1 ? 's' : ''} on the hideout floor now.` : ''}`;
|
|
84
|
+
}
|
|
85
|
+
if (!lifestyleOptionAllowed(key, game.lifestyleTier)) {
|
|
86
|
+
return `A ${option.name} isn't on offer at ${game.lifestyleTier} -- lifestyle options are for any lifestyle except Street${hint(' (SR5 p.370)')}. "lifestyle squatter" or better first.`;
|
|
87
|
+
}
|
|
88
|
+
if (game.rentDebt > 0) {
|
|
89
|
+
return `The landlord won't add to the lease with ${game.rentDebt} nuyen on the tab -- "pay" it off first.`;
|
|
90
|
+
}
|
|
91
|
+
game.lifestyleOptions = [...game.lifestyleOptions, key];
|
|
92
|
+
game.syncHomeToLifestyle();
|
|
93
|
+
this.actor.performAction('adds to the lease', option.name);
|
|
94
|
+
this.logger.write(`Lifestyle: added ${key} (upkeep ${game.lifestyleUpkeep}/job).`);
|
|
95
|
+
this.scene.updateStatus();
|
|
96
|
+
return [
|
|
97
|
+
`A roll-down door and a bay you can call yours: ${option.name}, +${option.upkeep} nuyen per job.`,
|
|
98
|
+
` Park frames with "store <drone>"; they deploy and jump from here, and "take <drone> from garage" carries the small ones along.`,
|
|
99
|
+
hint(` ${option.page}. "look" around.`),
|
|
100
|
+
].join('\n');
|
|
101
|
+
}
|
|
60
102
|
listTiers() {
|
|
61
|
-
const
|
|
103
|
+
const game = this.game;
|
|
104
|
+
const lines = [`=== LIFESTYLE (currently ${game.lifestyleTier}${game.rentDebt > 0 ? `, ${game.rentDebt} nuyen owed` : ''}) ===`];
|
|
62
105
|
for (const tier of LIFESTYLE_TIERS) {
|
|
63
|
-
const marker = tier.name ===
|
|
106
|
+
const marker = tier.name === game.lifestyleTier ? '>' : ' ';
|
|
64
107
|
const perks = [
|
|
65
108
|
tier.restDice !== 0 ? `rest ${tier.restDice > 0 ? '+' : ''}${tier.restDice}d at home` : 'baseline rest',
|
|
66
109
|
...(tier.edgeBonus > 0 ? [`+${tier.edgeBonus} edge/job`] : []),
|
|
@@ -70,7 +113,13 @@ export class LifestyleCommand extends Command {
|
|
|
70
113
|
lines.push(` ${tier.blurb}`);
|
|
71
114
|
}
|
|
72
115
|
lines.push('');
|
|
73
|
-
lines.push(`
|
|
116
|
+
lines.push(`Options${hint(' (SR5 p.370, any lifestyle but Street)')}:`);
|
|
117
|
+
for (const option of LIFESTYLE_OPTIONS) {
|
|
118
|
+
const held = game.hasLifestyleOption(option.key);
|
|
119
|
+
lines.push(`${held ? '>' : ' '} ${option.key.padEnd(9)} ${String(`+${option.upkeep}`).padStart(5)}/job ${option.name} -- ${option.blurb}${held ? '' : ` ("lifestyle ${option.key}" to add)`}`);
|
|
120
|
+
}
|
|
121
|
+
lines.push('');
|
|
122
|
+
lines.push(`Upkeep now: ${game.lifestyleUpkeep} nuyen per job. You're carrying ${this.actor.currency} nuyen. "lifestyle <tier>" at your hideout to move. Upkeep collects each homecoming; shortfalls slide you down and go on the tab.`);
|
|
74
123
|
return lines.join('\n');
|
|
75
124
|
}
|
|
76
125
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lifestyle.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/lifestyle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAY,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"lifestyle.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/lifestyle.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,6 +20,13 @@ export class ProjectCommand extends Command {
|
|
|
20
20
|
if (actor.plane === 'matrix') {
|
|
21
21
|
return `Your mind is in the Matrix -- one plane at a time. "jack out" first.`;
|
|
22
22
|
}
|
|
23
|
+
// JUMPED IN IS VR TOO (SR5 p.266): the body is limp and "your only
|
|
24
|
+
// sensory input comes from the Matrix" (p.229) -- there are no senses
|
|
25
|
+
// left to shift astral (p.312), and no body awake to leave. Same rule
|
|
26
|
+
// assense.ts already applies to reading auras from a frame.
|
|
27
|
+
if (actor.plane === 'drone') {
|
|
28
|
+
return `Your mind is in the ${actor.riggedDrone?.name ?? 'frame'} -- one plane at a time, and VR leaves no senses to shift astral. "jump out" first.${hint(' (SR5 p.229, p.266: jumped in is VR; your only input is the Matrix.)')}`;
|
|
29
|
+
}
|
|
23
30
|
if (!actor.isAwakened()) {
|
|
24
31
|
return `You reach for the door out of your flesh and find a wall. Projection takes the Awakened gift -- no formula or focus fakes this one.`;
|
|
25
32
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAY,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAErE;;;;;;;GAOG;AACH,MAAM,OAAO,cAAe,SAAQ,OAAO;IAC/B,MAAM,CAAC,IAAI,GAAG,SAAS,CAAC;IACxB,MAAM,CAAC,WAAW,GAAG,+JAA+J,CAAC;IAE/L,KAAK,CAAC,OAAO,CAAC,QAAkB,EAAE;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAEzB,IAAI,KAAK,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO,uDAAuD,CAAC;QACjE,CAAC;QACD,IAAI,KAAK,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO,sEAAsE,CAAC;QAChF,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,CAAC;YACxB,OAAO,qIAAqI,CAAC;QAC/I,CAAC;QACD,kEAAkE;QAClE,sEAAsE;QACtE,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;YACrB,OAAO,+EAA+E,IAAI,CAAC,+DAA+D,CAAC,EAAE,CAAC;QAChK,CAAC;QACD,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAChB,OAAO,4EAA4E,IAAI,CAAC,8DAA8D,CAAC,EAAE,CAAC;QAC5J,CAAC;QACD,mEAAmE;QACnE,4DAA4D;QAC5D,oEAAoE;QACpE,oEAAoE;QACpE,+BAA+B;QAC/B,EAAE;QACF,+DAA+D;QAC/D,iEAAiE;QACjE,iEAAiE;QACjE,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;YACxB,OAAO,yLAAyL,IAAI,CAAC,8FAA8F,CAAC,EAAE,CAAC;QACzS,CAAC;QACD,IAAI,KAAK,CAAC,eAAe,EAAE,EAAE,CAAC;YAC5B,OAAO,yEAAyE,CAAC;QACnF,CAAC;QACD,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;YACrB,OAAO,sGAAsG,CAAC;QAChH,CAAC;QAED,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC/C,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;;AAGH,MAAM,OAAO,aAAc,SAAQ,OAAO;IAC9B,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC;IACvB,MAAM,CAAC,WAAW,GAAG,0FAA0F,CAAC;IAE1H,KAAK,CAAC,OAAO,CAAC,QAAkB,EAAE;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,KAAK,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO,8BAA8B,CAAC;QACxC,CAAC;QACD,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;YACrB,OAAO,kGAAkG,CAAC;QAC5G,CAAC;QACD,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC9C,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC"}
|
|
1
|
+
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAY,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAErE;;;;;;;GAOG;AACH,MAAM,OAAO,cAAe,SAAQ,OAAO;IAC/B,MAAM,CAAC,IAAI,GAAG,SAAS,CAAC;IACxB,MAAM,CAAC,WAAW,GAAG,+JAA+J,CAAC;IAE/L,KAAK,CAAC,OAAO,CAAC,QAAkB,EAAE;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAEzB,IAAI,KAAK,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO,uDAAuD,CAAC;QACjE,CAAC;QACD,IAAI,KAAK,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO,sEAAsE,CAAC;QAChF,CAAC;QACD,mEAAmE;QACnE,sEAAsE;QACtE,sEAAsE;QACtE,4DAA4D;QAC5D,IAAI,KAAK,CAAC,KAAK,KAAK,OAAO,EAAE,CAAC;YAC5B,OAAO,uBAAuB,KAAK,CAAC,WAAW,EAAE,IAAI,IAAI,OAAO,sFAAsF,IAAI,CAAC,sEAAsE,CAAC,EAAE,CAAC;QACvO,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,CAAC;YACxB,OAAO,qIAAqI,CAAC;QAC/I,CAAC;QACD,kEAAkE;QAClE,sEAAsE;QACtE,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;YACrB,OAAO,+EAA+E,IAAI,CAAC,+DAA+D,CAAC,EAAE,CAAC;QAChK,CAAC;QACD,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAChB,OAAO,4EAA4E,IAAI,CAAC,8DAA8D,CAAC,EAAE,CAAC;QAC5J,CAAC;QACD,mEAAmE;QACnE,4DAA4D;QAC5D,oEAAoE;QACpE,oEAAoE;QACpE,+BAA+B;QAC/B,EAAE;QACF,+DAA+D;QAC/D,iEAAiE;QACjE,iEAAiE;QACjE,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;YACxB,OAAO,yLAAyL,IAAI,CAAC,8FAA8F,CAAC,EAAE,CAAC;QACzS,CAAC;QACD,IAAI,KAAK,CAAC,eAAe,EAAE,EAAE,CAAC;YAC5B,OAAO,yEAAyE,CAAC;QACnF,CAAC;QACD,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;YACrB,OAAO,sGAAsG,CAAC;QAChH,CAAC;QAED,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC/C,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;;AAGH,MAAM,OAAO,aAAc,SAAQ,OAAO;IAC9B,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC;IACvB,MAAM,CAAC,WAAW,GAAG,0FAA0F,CAAC;IAE1H,KAAK,CAAC,OAAO,CAAC,QAAkB,EAAE;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,KAAK,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO,8BAA8B,CAAC;QACxC,CAAC;QACD,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;YACrB,OAAO,kGAAkG,CAAC;QAC5G,CAAC;QACD,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC9C,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Command } from './command.js';
|
|
2
2
|
import { hint } from '../utilities/hints.js';
|
|
3
3
|
import { rollPool, formatRoll } from '../utilities/dice.js';
|
|
4
|
+
import { ownedDrones } from '../utilities/owned-drones.js';
|
|
4
5
|
/**
|
|
5
6
|
* The free road to STUN recovery (stim patches are the fast, risky one --
|
|
6
7
|
* see use.ts): catch your breath somewhere safe. "Safe" means a
|
|
@@ -26,7 +27,12 @@ export class RestCommand extends Command {
|
|
|
26
27
|
// carried gets repaired alongside the nap (Logic roll -- soldering
|
|
27
28
|
// and rotor-truing are both brainwork; Juryrigger helps both).
|
|
28
29
|
const damagedDecks = actor.inventory.getAllItems().filter(i => i.isCyberdeck() && i.deckDamage > 0);
|
|
29
|
-
|
|
30
|
+
// Bench work reaches the Garage when you rest at home
|
|
31
|
+
// (utilities/owned-drones.ts): a frame parked in the bay is on the
|
|
32
|
+
// bench too.
|
|
33
|
+
const damagedDrones = ownedDrones(actor, this.game?.homeRoom, { reach: 'here' })
|
|
34
|
+
.map(d => d.item)
|
|
35
|
+
.filter(i => i.droneDamage > 0);
|
|
30
36
|
const othersHere = this.scene.getActorsInRoom(room).filter(a => a !== actor);
|
|
31
37
|
const isResidence = room.roomType?.toLowerCase() === 'residence';
|
|
32
38
|
if (actor.stunTaken === 0 && damagedDecks.length === 0 && damagedDrones.length === 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rest.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/rest.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;
|
|
1
|
+
{"version":3,"file":"rest.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/rest.ts"],"names":[],"mappings":"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"}
|