@maka/maka-cli 5.67.0 → 5.69.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/archetypes.js +6 -1
- package/bundle/typescript/src/commands/game/sideQuest/archetypes.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/abandon.d.ts +30 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/abandon.js +54 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/abandon.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/ar.js +4 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/ar.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/bluff.js +5 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/bluff.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/bypass-command.js +12 -4
- 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 +28 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/call.js +105 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/call.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/climb.d.ts +48 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/climb.js +107 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/climb.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/companions.d.ts +39 -3
- package/bundle/typescript/src/commands/game/sideQuest/commands/companions.js +89 -4
- package/bundle/typescript/src/commands/game/sideQuest/commands/companions.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/compile.d.ts +37 -17
- package/bundle/typescript/src/commands/game/sideQuest/commands/compile.js +53 -115
- package/bundle/typescript/src/commands/game/sideQuest/commands/compile.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/decompile.d.ts +55 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/decompile.js +203 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/decompile.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/go.d.ts +23 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/go.js +44 -9
- package/bundle/typescript/src/commands/game/sideQuest/commands/go.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/hack.d.ts +24 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/hack.js +70 -12
- package/bundle/typescript/src/commands/game/sideQuest/commands/hack.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/lock.js +17 -4
- package/bundle/typescript/src/commands/game/sideQuest/commands/lock.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/look.js +12 -2
- package/bundle/typescript/src/commands/game/sideQuest/commands/look.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/map.js +12 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/map.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/mark.js +8 -6
- package/bundle/typescript/src/commands/game/sideQuest/commands/mark.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/move.d.ts +11 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/move.js +107 -14
- package/bundle/typescript/src/commands/game/sideQuest/commands/move.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/order.js +69 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/order.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/overwatch.js +5 -4
- package/bundle/typescript/src/commands/game/sideQuest/commands/overwatch.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/register.d.ts +15 -2
- package/bundle/typescript/src/commands/game/sideQuest/commands/register.js +32 -6
- package/bundle/typescript/src/commands/game/sideQuest/commands/register.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/search.js +33 -2
- package/bundle/typescript/src/commands/game/sideQuest/commands/search.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/sprites.d.ts +35 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/sprites.js +108 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/sprites.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/standby.d.ts +40 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/standby.js +91 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/standby.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/tap.js +10 -11
- package/bundle/typescript/src/commands/game/sideQuest/commands/tap.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/thread.d.ts +27 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/thread.js +7 -2
- package/bundle/typescript/src/commands/game/sideQuest/commands/thread.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/unlock.js +4 -2
- package/bundle/typescript/src/commands/game/sideQuest/commands/unlock.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/unravel.d.ts +57 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/unravel.js +162 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/unravel.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/use.js +12 -5
- package/bundle/typescript/src/commands/game/sideQuest/commands/use.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/repro-scene.js +41 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/repro-scene.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/room-factory.js +4 -0
- package/bundle/typescript/src/commands/game/sideQuest/factories/room-factory.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.d.ts +2 -0
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.js +91 -6
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-factory.js +6 -0
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-factory.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/game.d.ts +135 -11
- package/bundle/typescript/src/commands/game/sideQuest/game.js +361 -30
- package/bundle/typescript/src/commands/game/sideQuest/game.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/headless-harness.d.ts +24 -12
- package/bundle/typescript/src/commands/game/sideQuest/headless-harness.js +53 -13
- package/bundle/typescript/src/commands/game/sideQuest/headless-harness.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/item.d.ts +25 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/item.js +31 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/item.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/npc.d.ts +98 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/npc.js +98 -4
- package/bundle/typescript/src/commands/game/sideQuest/models/npc.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/player.d.ts +95 -4
- package/bundle/typescript/src/commands/game/sideQuest/models/player.js +179 -20
- package/bundle/typescript/src/commands/game/sideQuest/models/player.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/room.d.ts +90 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/room.js +114 -5
- package/bundle/typescript/src/commands/game/sideQuest/models/room.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/resonance-actions.d.ts +108 -0
- package/bundle/typescript/src/commands/game/sideQuest/resonance-actions.js +186 -0
- package/bundle/typescript/src/commands/game/sideQuest/resonance-actions.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/scenes/scene1.json +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/scenes/scene2.json +2 -0
- package/bundle/typescript/src/commands/game/sideQuest/sprite-powers.d.ts +88 -0
- package/bundle/typescript/src/commands/game/sideQuest/sprite-powers.js +137 -0
- package/bundle/typescript/src/commands/game/sideQuest/sprite-powers.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/types/repro.d.ts +42 -0
- package/bundle/typescript/src/commands/game/sideQuest/types/save-file.d.ts +32 -1
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/player-seed.d.ts +12 -0
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/room-seed.d.ts +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/ui.js +3 -0
- package/bundle/typescript/src/commands/game/sideQuest/ui.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/combat-exchange.js +5 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/combat-exchange.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/dice.d.ts +41 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/dice.js +52 -4
- package/bundle/typescript/src/commands/game/sideQuest/utilities/dice.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/grid-view.d.ts +14 -2
- package/bundle/typescript/src/commands/game/sideQuest/utilities/grid-view.js +78 -7
- package/bundle/typescript/src/commands/game/sideQuest/utilities/grid-view.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/outdoors.d.ts +7 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/outdoors.js +24 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/outdoors.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/persistence.js +14 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/persistence.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/room-grid.d.ts +46 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/room-grid.js +90 -5
- package/bundle/typescript/src/commands/game/sideQuest/utilities/room-grid.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/spots.d.ts +70 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/spots.js +168 -22
- package/bundle/typescript/src/commands/game/sideQuest/utilities/spots.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js +83 -0
- package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js.map +1 -1
- package/package.json +1 -1
|
@@ -2,9 +2,6 @@ import { Command } from './command.js';
|
|
|
2
2
|
import { rollPool, formatRoll } from '../utilities/dice.js';
|
|
3
3
|
import { hint } from '../utilities/hints.js';
|
|
4
4
|
import { fuzzyPickName } from '../utilities/fuzzy-match.js';
|
|
5
|
-
import { NPC } from '../models/npc.js';
|
|
6
|
-
import { accrueOverwatch } from '../utilities/overwatch.js';
|
|
7
|
-
import { leaveMatrix } from '../utilities/planes.js';
|
|
8
5
|
/** Exported for game.ts: re-shelling a REGISTERED sprite after travel
|
|
9
6
|
* or a resumed save needs the same stat builder. */
|
|
10
7
|
export const SPRITE_TYPES = {
|
|
@@ -39,34 +36,43 @@ export const SPRITE_TYPES = {
|
|
|
39
36
|
skills: { hacking: l, perception: l + 1 } }),
|
|
40
37
|
},
|
|
41
38
|
};
|
|
39
|
+
/**
|
|
40
|
+
* A free shell name for a sprite of this type and Level.
|
|
41
|
+
*
|
|
42
|
+
* spawnCompanionShell REFUSES a name already in the scene and returns
|
|
43
|
+
* null, which the caller can only report as "it collides with a process
|
|
44
|
+
* name already taken" -- a compile that cost real Fading and produced
|
|
45
|
+
* nothing. That was unreachable while one sprite was the hard maximum.
|
|
46
|
+
* It stopped being unreachable the moment a REGISTERED sprite was
|
|
47
|
+
* allowed to stand alongside a newly compiled one (SR5 p.254-256):
|
|
48
|
+
* register a Courier at Level 4, compile another Courier at Level 4,
|
|
49
|
+
* and both want the same name.
|
|
50
|
+
*
|
|
51
|
+
* Typed against the shape it uses rather than Scene, so this stays
|
|
52
|
+
* importable from game.ts (which imports this module) without a cycle.
|
|
53
|
+
*
|
|
54
|
+
* The unsuffixed name is preserved when it is free, so the overwhelming
|
|
55
|
+
* common case reads exactly as it always has.
|
|
56
|
+
*/
|
|
57
|
+
export function uniqueSpriteName(scene, typeName, level) {
|
|
58
|
+
const base = `${typeName} Sprite (Level ${level})`;
|
|
59
|
+
if (!scene.getActor(base))
|
|
60
|
+
return base;
|
|
61
|
+
// Roman-numeral-free and boring on purpose: the player has to be able
|
|
62
|
+
// to type it at "order" and "decompile".
|
|
63
|
+
for (let n = 2; n <= 20; n++) {
|
|
64
|
+
const candidate = `${typeName} Sprite ${n} (Level ${level})`;
|
|
65
|
+
if (!scene.getActor(candidate))
|
|
66
|
+
return candidate;
|
|
67
|
+
}
|
|
68
|
+
return `${typeName} Sprite ${Date.now() % 100000} (Level ${level})`;
|
|
69
|
+
}
|
|
42
70
|
export class CompileCommand extends Command {
|
|
43
71
|
static verb = 'compile';
|
|
44
|
-
static description = 'Compile a sprite (technomancers): "compile <type> <level>" -- Resonance + compiling vs its Level; net hits are its tasks. Types: courier, crack, data, fault, machine. Fading 2x its hits (PHYSICAL past your Resonance).
|
|
72
|
+
static description = 'Compile a sprite (technomancers): "compile <type> <level>" -- Resonance + compiling vs its Level; net hits are its tasks. Types: courier, crack, data, fault, machine. Fading 2x its hits (PHYSICAL past your Resonance). One COMPILED sprite at a time -- registering one frees the slot. "decompile" unmakes a sprite; "recall <name>" sends a registered one back to the Resonance (releasing every task it owes), and "standby" parks it for just one.';
|
|
45
73
|
async execute(args = []) {
|
|
46
74
|
const actor = this.actor;
|
|
47
75
|
const game = this.game;
|
|
48
|
-
// ENEMY DECOMPILING (RAW p.256, engine-adapted; player roadmap):
|
|
49
|
-
// "decompile <name>" against a hostile matrix construct unravels it
|
|
50
|
-
// instead of shooting it. Checked FIRST so naming an enemy never
|
|
51
|
-
// releases your own standing sprite -- but never when the words
|
|
52
|
-
// parse as a sprite-type request ("compile fault 4" stays a
|
|
53
|
-
// summons even if something hostile shares the name).
|
|
54
|
-
if (args && args.length > 0) {
|
|
55
|
-
const nameWords = args.map(w => w.toLowerCase()).filter(w => !/^\d+$/.test(w) && !/^(sprite|a|an|the)$/.test(w));
|
|
56
|
-
const isTypeRequest = nameWords.some(w => fuzzyPickName(w, Object.keys(SPRITE_TYPES)));
|
|
57
|
-
if (nameWords.length > 0 && !isTypeRequest) {
|
|
58
|
-
const unraveled = this.tryDecompileEnemy(nameWords.join(' '));
|
|
59
|
-
if (unraveled !== undefined)
|
|
60
|
-
return unraveled;
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
// A standing sprite: bare "compile" (or any re-compile) releases it.
|
|
64
|
-
const standing = game?.companions.find(c => c.kind === 'sprite');
|
|
65
|
-
if (standing) {
|
|
66
|
-
game.dismissCompanion(standing, 'decompiled by technomancer');
|
|
67
|
-
this.scene.updateStatus();
|
|
68
|
-
return `You stop holding the thread. ${standing.npc.name} unravels into clean static -- decompiled, no residue.`;
|
|
69
|
-
}
|
|
70
76
|
if (!actor.isTechnomancer()) {
|
|
71
77
|
return `The Resonance doesn't know your voice. Sprites answer technomancers.`;
|
|
72
78
|
}
|
|
@@ -76,6 +82,25 @@ export class CompileCommand extends Command {
|
|
|
76
82
|
if (actor.inExchange) {
|
|
77
83
|
return `Threading a sprite takes more focus than the fight will give you.`;
|
|
78
84
|
}
|
|
85
|
+
// THE COMPILED SLOT (SR5 p.254): "You can only have one compiled
|
|
86
|
+
// sprite at any given time." That limit is real and stays. What was
|
|
87
|
+
// broken is WHO IT COUNTS -- p.254-256 says a registered sprite "no
|
|
88
|
+
// longer counts toward your limit of one compiled sprite at a
|
|
89
|
+
// time", and this check used to count every sprite on the roster.
|
|
90
|
+
// So registering, the very thing that is supposed to free the slot,
|
|
91
|
+
// left it occupied: the next "compile" saw the registered sprite
|
|
92
|
+
// standing in the doorway and (under the old overloaded verb)
|
|
93
|
+
// decompiled it. The player's permanent companion vanished as the
|
|
94
|
+
// reward for making it permanent.
|
|
95
|
+
//
|
|
96
|
+
// `!c.registered` is the whole fix. It must stay in step with
|
|
97
|
+
// register.ts, which sets the flag and enforces the LOGIC cap on how
|
|
98
|
+
// many may carry it.
|
|
99
|
+
const standing = game?.companions.find(c => c.kind === 'sprite' && !c.registered);
|
|
100
|
+
if (standing) {
|
|
101
|
+
// A refusal names the route that works (house rule).
|
|
102
|
+
return `${standing.npc.name} already holds your compiled thread -- one compiled sprite at a time.${hint(` ("register" it to make it permanent and free the slot, or "decompile" it to unmake it.)`)}`;
|
|
103
|
+
}
|
|
79
104
|
// "compile fault 4" / "compile 4" (defaults to fault -- the fighter)
|
|
80
105
|
// / "compile machine" (level defaults to your Resonance).
|
|
81
106
|
const words = args.map(w => w.toLowerCase()).filter(w => w !== 'sprite' && w !== 'a');
|
|
@@ -124,7 +149,7 @@ export class CompileCommand extends Command {
|
|
|
124
149
|
}
|
|
125
150
|
else {
|
|
126
151
|
const shell = this.game?.spawnCompanionShell({
|
|
127
|
-
name:
|
|
152
|
+
name: uniqueSpriteName(this.scene, type.name, level),
|
|
128
153
|
description: `A ${type.name.toLowerCase()} sprite ${actor.name} compiled out of raw Resonance -- ${type.blurb}. A shape of light and intent that flickers at the edge of every screen. It serves until its ${tasks} task${tasks === 1 ? '' : 's'} are spent.`,
|
|
129
154
|
kind: 'sprite',
|
|
130
155
|
combat: type.combat(level),
|
|
@@ -139,7 +164,7 @@ export class CompileCommand extends Command {
|
|
|
139
164
|
entry.spriteType = typeKey;
|
|
140
165
|
}
|
|
141
166
|
lines.push(shell
|
|
142
|
-
? ` It compiles into being on the grid beside your persona -- luminous, patient, TASKED. ${tasks} task${tasks === 1 ? '' : 's'} on the thread.${hint(` (It rides the Matrix; it fights ice when you jack in -- one task per fight; "order" it; "
|
|
167
|
+
? ` It compiles into being on the grid beside your persona -- luminous, patient, TASKED. ${tasks} task${tasks === 1 ? '' : 's'} on the thread.${hint(` (It rides the Matrix; it fights ice when you jack in -- one task per fight; "order" it; "register" it to keep it; "decompile" to unmake it.)`)}`
|
|
143
168
|
: ` It compiles -- and collides with a process name already taken. The thread unravels.`);
|
|
144
169
|
}
|
|
145
170
|
this.logger.meta(`Fading (${fadingValue}${overreach ? ', OVERREACH -- physical' : ''}): resist ${formatRoll(resist)}`);
|
|
@@ -160,92 +185,5 @@ export class CompileCommand extends Command {
|
|
|
160
185
|
this.scene.updateStatus();
|
|
161
186
|
return lines.join('\n');
|
|
162
187
|
}
|
|
163
|
-
/**
|
|
164
|
-
* "decompile <name>": unmake a HOSTILE matrix construct -- ice, an
|
|
165
|
-
* enemy agent -- by tearing its thread apart (the offensive mirror of
|
|
166
|
-
* releasing your own sprite). Opposed Resonance + compiling vs the
|
|
167
|
-
* construct's code integrity (Willpower + Logic/2); net hits plus
|
|
168
|
-
* Resonance/2 land straight on its monitor, no soak -- the opposed
|
|
169
|
-
* test WAS the resistance. Fading bills the same toll as compiling
|
|
170
|
-
* (2x its hits, min 2). A failed pull leaves it standing, alert, and
|
|
171
|
-
* pointed at you. Returns undefined when the words name no hostile
|
|
172
|
-
* construct here (the summons flow's turn).
|
|
173
|
-
*/
|
|
174
|
-
tryDecompileEnemy(query) {
|
|
175
|
-
const actor = this.actor;
|
|
176
|
-
const game = this.game;
|
|
177
|
-
const room = actor.currentLocation;
|
|
178
|
-
const hostiles = room.getActors().filter(a => a instanceof NPC
|
|
179
|
-
&& a.plane === 'matrix'
|
|
180
|
-
&& !game?.companions.some(c => c.npc === a));
|
|
181
|
-
if (hostiles.length === 0)
|
|
182
|
-
return undefined;
|
|
183
|
-
const picked = fuzzyPickName(query, hostiles.map(h => h.name));
|
|
184
|
-
if (!picked)
|
|
185
|
-
return undefined;
|
|
186
|
-
const target = hostiles.find(h => h.name === picked);
|
|
187
|
-
if (!actor.isTechnomancer()) {
|
|
188
|
-
return `Decompiling is Resonance work -- ${target.name}'s thread doesn't answer your hands.`;
|
|
189
|
-
}
|
|
190
|
-
if (actor.plane !== 'matrix') {
|
|
191
|
-
return `You can't grip a construct's thread from meatspace -- "jack in" and face ${target.name} on the grid.`;
|
|
192
|
-
}
|
|
193
|
-
if (actor.inExchange) {
|
|
194
|
-
return `Unraveling a construct takes more focus than the fight will give you.`;
|
|
195
|
-
}
|
|
196
|
-
const compiling = actor.skillRating('compiling');
|
|
197
|
-
const mine = rollPool(Math.max(1, actor.resonance + (compiling > 0 ? compiling : -1) + actor.woundModifier - actor.sustainingPenalty));
|
|
198
|
-
const theirs = rollPool(Math.max(1, target.willpower + Math.floor(target.logic / 2)));
|
|
199
|
-
const net = mine.hits - theirs.hits;
|
|
200
|
-
this.logger.meta(`Decompiling ${target.name}: ${formatRoll(mine)}`);
|
|
201
|
-
this.logger.meta(` its code holds: ${formatRoll(theirs)}`);
|
|
202
|
-
actor.performAction(`reaches into ${target.name}'s code, pulling at threads that were never meant to be touched`, '');
|
|
203
|
-
this.logger.write(`CompileCommand: ${actor.name} decompiles ${target.name} -- ${mine.hits} vs ${theirs.hits}.`);
|
|
204
|
-
const lines = [`You find ${target.name}'s thread and PULL AGAINST THE WEAVE:`];
|
|
205
|
-
if (net <= 0) {
|
|
206
|
-
lines.push(` Its code holds -- and now it KNOWS you, the touch traced straight back to your persona.`);
|
|
207
|
-
this.scene.addWorldEvent(`${actor.name} tried to decompile ${target.name} in ${room.name} -- and failed. It is alert.`);
|
|
208
|
-
}
|
|
209
|
-
else {
|
|
210
|
-
const dmg = net + Math.floor(actor.resonance / 2);
|
|
211
|
-
target.takeDamage(dmg);
|
|
212
|
-
if (target.isDown()) {
|
|
213
|
-
this.scene.addWorldEvent(`${actor.name} decompiled ${target.name} in ${room.name} -- unraveled to static.`);
|
|
214
|
-
this.scene.removeActor(target.name);
|
|
215
|
-
lines.push(` Thread by thread it comes APART -- ${dmg} boxes -- and ${target.name} unravels into clean static. Decompiled.`);
|
|
216
|
-
}
|
|
217
|
-
else {
|
|
218
|
-
this.scene.addWorldEvent(`${actor.name} tore at ${target.name}'s code in ${room.name}.`);
|
|
219
|
-
lines.push(` Threads tear loose -- ${dmg} boxes: it holds together, barely, and it's coming for you.`);
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
// GOD counts Resonance crimes too (canon: decompiling is an illegal
|
|
223
|
-
// action; the defender's hits are the evidence).
|
|
224
|
-
const god = accrueOverwatch(this.scene, actor, theirs.hits, 'decompiled a hostile construct');
|
|
225
|
-
lines.push(...god.lines);
|
|
226
|
-
if (god.converged && actor.plane === 'matrix') {
|
|
227
|
-
lines.push(...leaveMatrix(this.scene, actor, { forced: true, reason: `GOD force-reboots your persona --` }));
|
|
228
|
-
this.scene.updateStatus();
|
|
229
|
-
return lines.join('\n');
|
|
230
|
-
}
|
|
231
|
-
// Fading, the same toll compiling bills (p.256): 2x its hits, min 2,
|
|
232
|
-
// resisted Resonance + Willpower, landing as stun.
|
|
233
|
-
const fadingValue = Math.max(2, theirs.hits * 2);
|
|
234
|
-
const resist = rollPool(Math.max(1, actor.willpower + actor.resonance));
|
|
235
|
-
const fadingTaken = Math.max(0, fadingValue - resist.hits);
|
|
236
|
-
this.logger.meta(`Fading (${fadingValue}): resist ${formatRoll(resist)}`);
|
|
237
|
-
if (fadingTaken === 0) {
|
|
238
|
-
lines.push(` The fading washes past you.`);
|
|
239
|
-
}
|
|
240
|
-
else {
|
|
241
|
-
const { stun, overflow } = actor.takeStun(fadingTaken);
|
|
242
|
-
lines.push(` The fading bites -- ${stun} stun: ${actor.stunSummary()}`);
|
|
243
|
-
if (overflow > 0) {
|
|
244
|
-
lines.push(` It's more than your mind can hold -- ${overflow} box${overflow === 1 ? '' : 'es'} spill into your body: ${actor.conditionSummary()}`);
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
this.scene.updateStatus();
|
|
248
|
-
return lines.join('\n');
|
|
249
|
-
}
|
|
250
188
|
}
|
|
251
189
|
//# sourceMappingURL=compile.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compile.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/compile.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"compile.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/compile.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { Command, ICommand } from './command.js';
|
|
2
|
+
/**
|
|
3
|
+
* DECOMPILE SPRITE (SR5 p.250, Complex Action; p.256 Decompiling
|
|
4
|
+
* Sprites): stuff a sprite back into the Resonance and out of the
|
|
5
|
+
* Matrix -- yours or somebody else's.
|
|
6
|
+
*
|
|
7
|
+
* THIS FILE EXISTS BECAUSE COMPILE WAS DOING TWO JOBS (items
|
|
8
|
+
* xxc3SGZJmjAPaZPhb and Av93mThv54YRH26gj, 2026-08-28). "decompile"
|
|
9
|
+
* was registered as an alias of CompileCommand, so the one execute()
|
|
10
|
+
* had to guess from its arguments whether the player meant to summon,
|
|
11
|
+
* to release, or to attack -- and a bare second "compile" silently
|
|
12
|
+
* decompiled whatever was standing. p.250 lists Compile Sprite
|
|
13
|
+
* (Complex), Decompile Sprite (Complex) and Call/Dismiss Sprite
|
|
14
|
+
* (Simple) as three separate actions, and p.256 adds "You can decompile
|
|
15
|
+
* your own sprites if you need to, but usually just dismissing them is
|
|
16
|
+
* enough." Three actions, three verbs. Compiling now only ever summons;
|
|
17
|
+
* letting go lives here.
|
|
18
|
+
*
|
|
19
|
+
* The player-facing consequence of the old arrangement was the reported
|
|
20
|
+
* one: a registered sprite -- the permanent companion a technomancer
|
|
21
|
+
* paid Fading twice for -- evaporated the next time its owner typed
|
|
22
|
+
* "compile".
|
|
23
|
+
*
|
|
24
|
+
* WHAT THIS DELIBERATELY DOES NOT DO: it does not implement the canon
|
|
25
|
+
* decompiling TEST against your own sprite (p.256 makes it an opposed
|
|
26
|
+
* roll whose net hits shave owed tasks, plus the compiler's Resonance
|
|
27
|
+
* when the target is registered). Letting go of your own construct is
|
|
28
|
+
* modelled as certain, the way dismissing a spirit is. The opposed roll
|
|
29
|
+
* below is for HOSTILE constructs, where the resistance is the point.
|
|
30
|
+
*/
|
|
31
|
+
export declare class DecompileCommand extends Command implements ICommand {
|
|
32
|
+
protected static verb: string;
|
|
33
|
+
protected static description: string;
|
|
34
|
+
execute(args?: string[]): Promise<string>;
|
|
35
|
+
/** Hostile matrix constructs in the room -- ice, enemy agents; never
|
|
36
|
+
* a companion of yours. */
|
|
37
|
+
private hostileConstructs;
|
|
38
|
+
/**
|
|
39
|
+
* Let go of your own sprite. Certain, no test, no Fading: you are not
|
|
40
|
+
* fighting anything. A REGISTERED sprite unmade this way is gone for
|
|
41
|
+
* good -- decompiling is the unmaking verb, and the gentle one that
|
|
42
|
+
* keeps it (Call/Dismiss, p.250) is a different action.
|
|
43
|
+
*/
|
|
44
|
+
private releaseOwn;
|
|
45
|
+
/**
|
|
46
|
+
* "decompile <name>": unmake a HOSTILE matrix construct -- ice, an
|
|
47
|
+
* enemy agent -- by tearing its thread apart. Opposed Resonance +
|
|
48
|
+
* DECOMPILING vs the construct's code integrity (Willpower +
|
|
49
|
+
* Logic/2); net hits plus Resonance/2 land straight on its monitor,
|
|
50
|
+
* no soak -- the opposed test WAS the resistance. Fading bills the
|
|
51
|
+
* same toll as compiling (2x its hits, min 2). A failed pull leaves it
|
|
52
|
+
* standing, alert, and pointed at you.
|
|
53
|
+
*/
|
|
54
|
+
private decompileEnemy;
|
|
55
|
+
}
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
import { Command } from './command.js';
|
|
2
|
+
import { rollPool, formatRoll } from '../utilities/dice.js';
|
|
3
|
+
import { hint } from '../utilities/hints.js';
|
|
4
|
+
import { fuzzyPickNameDetailed } from '../utilities/fuzzy-match.js';
|
|
5
|
+
import { NPC } from '../models/npc.js';
|
|
6
|
+
import { accrueOverwatch } from '../utilities/overwatch.js';
|
|
7
|
+
import { leaveMatrix } from '../utilities/planes.js';
|
|
8
|
+
/**
|
|
9
|
+
* DECOMPILE SPRITE (SR5 p.250, Complex Action; p.256 Decompiling
|
|
10
|
+
* Sprites): stuff a sprite back into the Resonance and out of the
|
|
11
|
+
* Matrix -- yours or somebody else's.
|
|
12
|
+
*
|
|
13
|
+
* THIS FILE EXISTS BECAUSE COMPILE WAS DOING TWO JOBS (items
|
|
14
|
+
* xxc3SGZJmjAPaZPhb and Av93mThv54YRH26gj, 2026-08-28). "decompile"
|
|
15
|
+
* was registered as an alias of CompileCommand, so the one execute()
|
|
16
|
+
* had to guess from its arguments whether the player meant to summon,
|
|
17
|
+
* to release, or to attack -- and a bare second "compile" silently
|
|
18
|
+
* decompiled whatever was standing. p.250 lists Compile Sprite
|
|
19
|
+
* (Complex), Decompile Sprite (Complex) and Call/Dismiss Sprite
|
|
20
|
+
* (Simple) as three separate actions, and p.256 adds "You can decompile
|
|
21
|
+
* your own sprites if you need to, but usually just dismissing them is
|
|
22
|
+
* enough." Three actions, three verbs. Compiling now only ever summons;
|
|
23
|
+
* letting go lives here.
|
|
24
|
+
*
|
|
25
|
+
* The player-facing consequence of the old arrangement was the reported
|
|
26
|
+
* one: a registered sprite -- the permanent companion a technomancer
|
|
27
|
+
* paid Fading twice for -- evaporated the next time its owner typed
|
|
28
|
+
* "compile".
|
|
29
|
+
*
|
|
30
|
+
* WHAT THIS DELIBERATELY DOES NOT DO: it does not implement the canon
|
|
31
|
+
* decompiling TEST against your own sprite (p.256 makes it an opposed
|
|
32
|
+
* roll whose net hits shave owed tasks, plus the compiler's Resonance
|
|
33
|
+
* when the target is registered). Letting go of your own construct is
|
|
34
|
+
* modelled as certain, the way dismissing a spirit is. The opposed roll
|
|
35
|
+
* below is for HOSTILE constructs, where the resistance is the point.
|
|
36
|
+
*/
|
|
37
|
+
export class DecompileCommand extends Command {
|
|
38
|
+
static verb = 'decompile';
|
|
39
|
+
static description = 'Decompile a sprite: "decompile" unmakes your own (naming it when you hold more than one), "decompile <name>" jacked in unravels a HOSTILE construct -- ice, enemy agents -- thread by thread. Does NOT summon; "compile" does that.';
|
|
40
|
+
async execute(args = []) {
|
|
41
|
+
const game = this.game;
|
|
42
|
+
const mine = game?.companions.filter(c => c.kind === 'sprite') ?? [];
|
|
43
|
+
const query = (args ?? [])
|
|
44
|
+
.map(w => w.toLowerCase())
|
|
45
|
+
.filter(w => !/^(a|an|the)$/.test(w))
|
|
46
|
+
.join(' ')
|
|
47
|
+
.trim();
|
|
48
|
+
if (query.length === 0) {
|
|
49
|
+
if (mine.length === 1)
|
|
50
|
+
return this.releaseOwn(mine[0]);
|
|
51
|
+
if (mine.length > 1) {
|
|
52
|
+
// Destructive and unrecoverable for a registered sprite -- it
|
|
53
|
+
// does not get to guess which one.
|
|
54
|
+
return `You hold more than one thread. Name the one you mean: ${mine.map(c => `"${c.npc.name}"`).join(', ')}.`;
|
|
55
|
+
}
|
|
56
|
+
return `You hold no thread to let go of.${hint(` ("compile <type> <level>" threads one.)`)}`;
|
|
57
|
+
}
|
|
58
|
+
// TWO POOLS, ONE QUERY (the call.ts precedence rule): the words
|
|
59
|
+
// might name a sprite of yours or a hostile construct in the room.
|
|
60
|
+
// Compare MATCH TIER rather than checking one pool first --
|
|
61
|
+
// "checked first" is what let a query that plainly named an enemy
|
|
62
|
+
// reach the release path in the old combined command.
|
|
63
|
+
const ownPick = fuzzyPickNameDetailed(query, mine.map(c => c.npc.name));
|
|
64
|
+
const hostiles = this.hostileConstructs();
|
|
65
|
+
const foePick = fuzzyPickNameDetailed(query, hostiles.map(h => h.name));
|
|
66
|
+
if (ownPick && foePick && ownPick.tier === foePick.tier) {
|
|
67
|
+
// Equally good readings of a Complex Action that unmakes
|
|
68
|
+
// something. Refuse rather than pick (fuzzy-match's own doctrine:
|
|
69
|
+
// an ambiguous guess deliberately misses).
|
|
70
|
+
return `"${query}" names both ${ownPick.name} and ${foePick.name}. Say which -- one of them is yours.`;
|
|
71
|
+
}
|
|
72
|
+
const preferOwn = ownPick !== undefined
|
|
73
|
+
&& (foePick === undefined || ownPick.tier < foePick.tier);
|
|
74
|
+
if (preferOwn) {
|
|
75
|
+
return this.releaseOwn(mine.find(c => c.npc.name === ownPick.name));
|
|
76
|
+
}
|
|
77
|
+
if (foePick) {
|
|
78
|
+
return this.decompileEnemy(hostiles.find(h => h.name === foePick.name));
|
|
79
|
+
}
|
|
80
|
+
return `Nothing here answers to "${query}".${mine.length > 0 ? ` You hold ${mine.map(c => `"${c.npc.name}"`).join(', ')}.` : ''}`;
|
|
81
|
+
}
|
|
82
|
+
/** Hostile matrix constructs in the room -- ice, enemy agents; never
|
|
83
|
+
* a companion of yours. */
|
|
84
|
+
hostileConstructs() {
|
|
85
|
+
const game = this.game;
|
|
86
|
+
return this.actor.currentLocation.getActors().filter((a) => a instanceof NPC
|
|
87
|
+
&& a.plane === 'matrix'
|
|
88
|
+
&& !game?.companions.some(c => c.npc === a));
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Let go of your own sprite. Certain, no test, no Fading: you are not
|
|
92
|
+
* fighting anything. A REGISTERED sprite unmade this way is gone for
|
|
93
|
+
* good -- decompiling is the unmaking verb, and the gentle one that
|
|
94
|
+
* keeps it (Call/Dismiss, p.250) is a different action.
|
|
95
|
+
*/
|
|
96
|
+
releaseOwn(entry) {
|
|
97
|
+
const wasRegistered = entry.registered === true;
|
|
98
|
+
const name = entry.npc.name;
|
|
99
|
+
this.game.dismissCompanion(entry, 'decompiled by technomancer');
|
|
100
|
+
// NO REGISTRY CLEANUP IS NEEDED HERE, and the reason is worth
|
|
101
|
+
// stating because the opposite looks obviously required: dropping
|
|
102
|
+
// the shell of a registered sprite while its entry survived in the
|
|
103
|
+
// travel stash would re-shell it at the next arrival, which reads to
|
|
104
|
+
// a player as the decompile not having worked. It cannot happen. The
|
|
105
|
+
// stash and the live roster are DISJOINT by construction --
|
|
106
|
+
// Game.foldCompanionsForTravel moves a sprite into the stash and
|
|
107
|
+
// dismisses the shell in the same pass, and both drains splice(0) --
|
|
108
|
+
// so anything you can decompile is standing here and is not in the
|
|
109
|
+
// stash. A guard here would be untestable, which is exactly how it
|
|
110
|
+
// was caught: it was written first, and no mutation of it could be
|
|
111
|
+
// made to fail. If Call/Dismiss (p.250) later lets a registered
|
|
112
|
+
// sprite wait in the Resonance DURING play, this stops being true
|
|
113
|
+
// and the cleanup becomes real.
|
|
114
|
+
this.scene.updateStatus();
|
|
115
|
+
return wasRegistered
|
|
116
|
+
? `You stop holding the thread. ${name} unravels into clean static -- decompiled, and its registration with it. That one is not coming back.`
|
|
117
|
+
: `You stop holding the thread. ${name} unravels into clean static -- decompiled, no residue.`;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* "decompile <name>": unmake a HOSTILE matrix construct -- ice, an
|
|
121
|
+
* enemy agent -- by tearing its thread apart. Opposed Resonance +
|
|
122
|
+
* DECOMPILING vs the construct's code integrity (Willpower +
|
|
123
|
+
* Logic/2); net hits plus Resonance/2 land straight on its monitor,
|
|
124
|
+
* no soak -- the opposed test WAS the resistance. Fading bills the
|
|
125
|
+
* same toll as compiling (2x its hits, min 2). A failed pull leaves it
|
|
126
|
+
* standing, alert, and pointed at you.
|
|
127
|
+
*/
|
|
128
|
+
decompileEnemy(target) {
|
|
129
|
+
const actor = this.actor;
|
|
130
|
+
if (!actor.isTechnomancer()) {
|
|
131
|
+
return `Decompiling is Resonance work -- ${target.name}'s thread doesn't answer your hands.`;
|
|
132
|
+
}
|
|
133
|
+
if (actor.plane !== 'matrix') {
|
|
134
|
+
return `You can't grip a construct's thread from meatspace -- "jack in" and face ${target.name} on the grid.`;
|
|
135
|
+
}
|
|
136
|
+
if (actor.inExchange) {
|
|
137
|
+
return `Unraveling a construct takes more focus than the fight will give you.`;
|
|
138
|
+
}
|
|
139
|
+
// DECOMPILING, NOT COMPILING (p.250: "Decompile Sprite (Complex
|
|
140
|
+
// Action) ... Decompiling + Resonance [Level] v. Sprite Rating").
|
|
141
|
+
// This is the same defect register.ts records killing on 2026-08-27
|
|
142
|
+
// -- register rolled Compiling for a Registering test -- still alive
|
|
143
|
+
// one file over, because fixing a bug does not fix its siblings. The
|
|
144
|
+
// Resonance trio are three skills and the books test each by name.
|
|
145
|
+
// persistence.ts carries the matching migration so nobody who
|
|
146
|
+
// trained the combined skill is demoted for a rule they never broke.
|
|
147
|
+
const decompiling = actor.skillRating('decompiling');
|
|
148
|
+
const mine = rollPool(Math.max(1, actor.resonance + (decompiling > 0 ? decompiling : -1) + actor.woundModifier - actor.sustainingPenalty));
|
|
149
|
+
const theirs = rollPool(Math.max(1, target.willpower + Math.floor(target.logic / 2)));
|
|
150
|
+
const net = mine.hits - theirs.hits;
|
|
151
|
+
this.logger.meta(`Decompiling ${target.name} (Resonance ${actor.resonance}${decompiling > 0 ? `, decompiling ${decompiling}` : ', no decompiling -1'}): ${formatRoll(mine)}`);
|
|
152
|
+
this.logger.meta(` its code holds: ${formatRoll(theirs)}`);
|
|
153
|
+
actor.performAction(`reaches into ${target.name}'s code, pulling at threads that were never meant to be touched`, '');
|
|
154
|
+
this.logger.write(`DecompileCommand: ${actor.name} decompiles ${target.name} -- ${mine.hits} vs ${theirs.hits}.`);
|
|
155
|
+
const room = actor.currentLocation;
|
|
156
|
+
const lines = [`You find ${target.name}'s thread and PULL AGAINST THE WEAVE:`];
|
|
157
|
+
if (net <= 0) {
|
|
158
|
+
lines.push(` Its code holds -- and now it KNOWS you, the touch traced straight back to your persona.`);
|
|
159
|
+
this.scene.addWorldEvent(`${actor.name} tried to decompile ${target.name} in ${room.name} -- and failed. It is alert.`);
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
const dmg = net + Math.floor(actor.resonance / 2);
|
|
163
|
+
target.takeDamage(dmg);
|
|
164
|
+
if (target.isDown()) {
|
|
165
|
+
this.scene.addWorldEvent(`${actor.name} decompiled ${target.name} in ${room.name} -- unraveled to static.`);
|
|
166
|
+
this.scene.removeActor(target.name);
|
|
167
|
+
lines.push(` Thread by thread it comes APART -- ${dmg} boxes -- and ${target.name} unravels into clean static. Decompiled.`);
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
170
|
+
this.scene.addWorldEvent(`${actor.name} tore at ${target.name}'s code in ${room.name}.`);
|
|
171
|
+
lines.push(` Threads tear loose -- ${dmg} boxes: it holds together, barely, and it's coming for you.`);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
// GOD counts Resonance crimes too (canon: decompiling is an illegal
|
|
175
|
+
// action; the defender's hits are the evidence).
|
|
176
|
+
const god = accrueOverwatch(this.scene, actor, theirs.hits, 'decompiled a hostile construct');
|
|
177
|
+
lines.push(...god.lines);
|
|
178
|
+
if (god.converged && actor.plane === 'matrix') {
|
|
179
|
+
lines.push(...leaveMatrix(this.scene, actor, { forced: true, reason: `GOD force-reboots your persona --` }));
|
|
180
|
+
this.scene.updateStatus();
|
|
181
|
+
return lines.join('\n');
|
|
182
|
+
}
|
|
183
|
+
// Fading, the same toll compiling bills (p.256): 2x its hits, min 2,
|
|
184
|
+
// resisted Resonance + Willpower, landing as stun.
|
|
185
|
+
const fadingValue = Math.max(2, theirs.hits * 2);
|
|
186
|
+
const resist = rollPool(Math.max(1, actor.willpower + actor.resonance));
|
|
187
|
+
const fadingTaken = Math.max(0, fadingValue - resist.hits);
|
|
188
|
+
this.logger.meta(`Fading (${fadingValue}): resist ${formatRoll(resist)}`);
|
|
189
|
+
if (fadingTaken === 0) {
|
|
190
|
+
lines.push(` The fading washes past you.`);
|
|
191
|
+
}
|
|
192
|
+
else {
|
|
193
|
+
const { stun, overflow } = actor.takeStun(fadingTaken);
|
|
194
|
+
lines.push(` The fading bites -- ${stun} stun: ${actor.stunSummary()}`);
|
|
195
|
+
if (overflow > 0) {
|
|
196
|
+
lines.push(` It's more than your mind can hold -- ${overflow} box${overflow === 1 ? '' : 'es'} spill into your body: ${actor.conditionSummary()}`);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
this.scene.updateStatus();
|
|
200
|
+
return lines.join('\n');
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
//# sourceMappingURL=decompile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decompile.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/decompile.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,28 @@
|
|
|
1
1
|
import { Command, ICommand } from './command.js';
|
|
2
2
|
export declare class GoCommand extends Command implements ICommand {
|
|
3
|
+
/**
|
|
4
|
+
* WHICH PLANE A COMPANION CAN HEEL ON, one rule per kind.
|
|
5
|
+
*
|
|
6
|
+
* This was a ternary chain with a fallback arm -- spirit, drone,
|
|
7
|
+
* agent, and then `else` meaning "meat". A SPRITE hit the else, so a
|
|
8
|
+
* technomancer walking around in the meat world dragged their Matrix
|
|
9
|
+
* construct along, and a technomancer JACKED IN and moving on the
|
|
10
|
+
* grid left it behind. Exactly backwards, and reproduced before it
|
|
11
|
+
* was fixed: compile, jack in, go north, and the sprite is still in
|
|
12
|
+
* the room you left -- while an agent, created on the very same
|
|
13
|
+
* `plane: 'matrix'`, follows correctly from the line above it.
|
|
14
|
+
*
|
|
15
|
+
* A table keyed to CompanionKind rather than a chain with a default,
|
|
16
|
+
* because the default IS the bug: a fallback arm cannot fail, it can
|
|
17
|
+
* only be wrong, and it was wrong for as long as sprites have
|
|
18
|
+
* existed. Add a sixth kind and this stops compiling.
|
|
19
|
+
*
|
|
20
|
+
* `ally` is here for exhaustiveness and answers false: hired crew are
|
|
21
|
+
* people who hold their ground (ruling 2026-08-25) and are skipped
|
|
22
|
+
* before this is consulted. Stating it keeps the table total rather
|
|
23
|
+
* than leaving one kind to an early `continue` a reader must find.
|
|
24
|
+
*/
|
|
25
|
+
private static readonly HEELS_ON;
|
|
3
26
|
protected static verb: string;
|
|
4
27
|
protected static description: string;
|
|
5
28
|
execute(args: string[]): Promise<string>;
|