@maka/maka-cli 5.6.0 → 5.8.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 +2 -2
- package/bundle/typescript/src/commands/_index.d.ts +4 -0
- package/bundle/typescript/src/commands/_index.js +4 -0
- package/bundle/typescript/src/commands/_index.js.map +1 -1
- package/bundle/typescript/src/commands/debug.js +1 -7
- package/bundle/typescript/src/commands/debug.js.map +1 -1
- package/bundle/typescript/src/commands/deploy/ubuntu.sub.cmd.js +33 -32
- package/bundle/typescript/src/commands/deploy/ubuntu.sub.cmd.js.map +1 -1
- package/bundle/typescript/src/commands/env/_index.d.ts +3 -0
- package/bundle/typescript/src/commands/env/_index.js +4 -0
- package/bundle/typescript/src/commands/env/_index.js.map +1 -0
- package/bundle/typescript/src/commands/env/env.command.d.ts +3 -0
- package/bundle/typescript/src/commands/env/env.command.js +22 -0
- package/bundle/typescript/src/commands/env/env.command.js.map +1 -0
- package/bundle/typescript/src/commands/env/get.sub.cmd.d.ts +1 -0
- package/bundle/typescript/src/commands/env/get.sub.cmd.js +46 -0
- package/bundle/typescript/src/commands/env/get.sub.cmd.js.map +1 -0
- package/bundle/typescript/src/commands/env/prompt-for-env.d.ts +10 -0
- package/bundle/typescript/src/commands/env/prompt-for-env.js +27 -0
- package/bundle/typescript/src/commands/env/prompt-for-env.js.map +1 -0
- package/bundle/typescript/src/commands/env/set.sub.cmd.d.ts +1 -0
- package/bundle/typescript/src/commands/env/set.sub.cmd.js +59 -0
- package/bundle/typescript/src/commands/env/set.sub.cmd.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/archetypes.d.ts +16 -0
- package/bundle/typescript/src/commands/game/sideQuest/archetypes.js +81 -2
- package/bundle/typescript/src/commands/game/sideQuest/archetypes.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/augmentations.d.ts +31 -0
- package/bundle/typescript/src/commands/game/sideQuest/augmentations.js +125 -0
- package/bundle/typescript/src/commands/game/sideQuest/augmentations.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/advance.d.ts +17 -7
- package/bundle/typescript/src/commands/game/sideQuest/commands/advance.js +113 -15
- package/bundle/typescript/src/commands/game/sideQuest/commands/advance.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/ask.d.ts +37 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/ask.js +197 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/ask.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/assense.js +3 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/assense.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/attack.js +21 -11
- package/bundle/typescript/src/commands/game/sideQuest/commands/attack.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/bluff.d.ts +3 -2
- package/bundle/typescript/src/commands/game/sideQuest/commands/bluff.js +13 -5
- package/bundle/typescript/src/commands/game/sideQuest/commands/bluff.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/brandish.js +7 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/brandish.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/buy.d.ts +16 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/buy.js +97 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/buy.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/bypass-command.d.ts +21 -10
- package/bundle/typescript/src/commands/game/sideQuest/commands/bypass-command.js +41 -27
- 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 +6 -7
- package/bundle/typescript/src/commands/game/sideQuest/commands/call.js +54 -20
- package/bundle/typescript/src/commands/game/sideQuest/commands/call.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/cast.d.ts +35 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/cast.js +306 -55
- package/bundle/typescript/src/commands/game/sideQuest/commands/cast.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/companions.d.ts +33 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/companions.js +137 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/companions.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/contacts.d.ts +13 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/contacts.js +37 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/contacts.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/drink.d.ts +14 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/drink.js +15 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/drink.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/drone.js +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/drone.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/drop.js +7 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/drop.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/eat.d.ts +14 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/eat.js +15 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/eat.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/edge.js +10 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/edge.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/equip.js +3 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/equip.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/give.js +101 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/give.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/go.d.ts +6 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/go.js +67 -22
- package/bundle/typescript/src/commands/game/sideQuest/commands/go.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/hack.js +15 -7
- package/bundle/typescript/src/commands/game/sideQuest/commands/hack.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/haggle.js +58 -2
- package/bundle/typescript/src/commands/game/sideQuest/commands/haggle.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/initiate.d.ts +26 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/initiate.js +125 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/initiate.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/install.d.ts +21 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/install.js +125 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/install.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/jump.d.ts +16 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/jump.js +83 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/jump.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/lifestyle.d.ts +16 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/lifestyle.js +76 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/lifestyle.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/lock.js +4 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/lock.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/look.js +7 -6
- package/bundle/typescript/src/commands/game/sideQuest/commands/look.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/order.d.ts +19 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/order.js +151 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/order.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/pay.d.ts +13 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/pay.js +39 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/pay.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/persuade.js +5 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/persuade.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/pick.js +6 -3
- package/bundle/typescript/src/commands/game/sideQuest/commands/pick.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/quality-trade.d.ts +21 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/quality-trade.js +121 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/quality-trade.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/rest.js +60 -12
- package/bundle/typescript/src/commands/game/sideQuest/commands/rest.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/say.js +27 -10
- package/bundle/typescript/src/commands/game/sideQuest/commands/say.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/search.js +15 -4
- package/bundle/typescript/src/commands/game/sideQuest/commands/search.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/sell.d.ts +17 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/sell.js +125 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/sell.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/sheet.js +36 -3
- package/bundle/typescript/src/commands/game/sideQuest/commands/sheet.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/sneak.js +9 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/sneak.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/spells.js +27 -4
- package/bundle/typescript/src/commands/game/sideQuest/commands/spells.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/stance.js +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/stance.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/summon.d.ts +19 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/summon.js +112 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/summon.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/take.js +8 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/take.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/treat.d.ts +14 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/treat.js +67 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/treat.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/unlock.js +7 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/unlock.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/use.d.ts +29 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/use.js +118 -11
- package/bundle/typescript/src/commands/game/sideQuest/commands/use.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/work.d.ts +15 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/work.js +68 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/work.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/factories/item-factory.js +2 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/item-factory.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.d.ts +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.js +132 -5
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-seed-generator.d.ts +6 -2
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-seed-generator.js +10 -6
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-seed-generator.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/game.d.ts +196 -0
- package/bundle/typescript/src/commands/game/sideQuest/game.js +828 -31
- 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 +111 -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 +33 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/npc.js +232 -10
- package/bundle/typescript/src/commands/game/sideQuest/models/npc.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/player.d.ts +111 -5
- package/bundle/typescript/src/commands/game/sideQuest/models/player.js +432 -41
- package/bundle/typescript/src/commands/game/sideQuest/models/player.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/puzzle.d.ts +6 -6
- package/bundle/typescript/src/commands/game/sideQuest/models/puzzle.js +38 -14
- package/bundle/typescript/src/commands/game/sideQuest/models/puzzle.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/room.d.ts +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/room.js +6 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/room.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/scene.d.ts +9 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/scene.js +48 -8
- package/bundle/typescript/src/commands/game/sideQuest/models/scene.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/qualities.d.ts +44 -0
- package/bundle/typescript/src/commands/game/sideQuest/qualities.js +155 -0
- package/bundle/typescript/src/commands/game/sideQuest/qualities.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/scenes/scene2.json +274 -5
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/item-seed.d.ts +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/scene-seed.d.ts +17 -0
- package/bundle/typescript/src/commands/game/sideQuest/types/shared/item-enum.d.ts +2 -0
- package/bundle/typescript/src/commands/game/sideQuest/types/shared/item-enum.js +4 -0
- package/bundle/typescript/src/commands/game/sideQuest/types/shared/item-enum.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/ui.js +82 -8
- package/bundle/typescript/src/commands/game/sideQuest/ui.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/auto-fight.d.ts +13 -6
- package/bundle/typescript/src/commands/game/sideQuest/utilities/auto-fight.js +28 -15
- package/bundle/typescript/src/commands/game/sideQuest/utilities/auto-fight.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/combat-exchange.d.ts +15 -3
- package/bundle/typescript/src/commands/game/sideQuest/utilities/combat-exchange.js +207 -34
- package/bundle/typescript/src/commands/game/sideQuest/utilities/combat-exchange.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/commerce.d.ts +56 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/commerce.js +144 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/commerce.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/dice.d.ts +7 -4
- package/bundle/typescript/src/commands/game/sideQuest/utilities/dice.js +8 -5
- package/bundle/typescript/src/commands/game/sideQuest/utilities/dice.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/log-style.d.ts +14 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/log-style.js +15 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/log-style.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/logger.d.ts +16 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/logger.js +49 -4
- package/bundle/typescript/src/commands/game/sideQuest/utilities/logger.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/outdoors.d.ts +10 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/outdoors.js +16 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/outdoors.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/planes.d.ts +21 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/planes.js +107 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/planes.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/terminal-reset.d.ts +17 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/terminal-reset.js +23 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/terminal-reset.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js +51 -15
- package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js.map +1 -1
- package/bundle/typescript/src/commands/remote/reconfig.sub.cmd.js +27 -1
- package/bundle/typescript/src/commands/remote/reconfig.sub.cmd.js.map +1 -1
- package/bundle/typescript/src/commands/run/run.command.js +1 -7
- package/bundle/typescript/src/commands/run/run.command.js.map +1 -1
- package/bundle/typescript/src/commands/ssl.js +10 -15
- package/bundle/typescript/src/commands/ssl.js.map +1 -1
- package/bundle/typescript/src/commands/testCmd/mocha.sub.cmd.js +1 -6
- package/bundle/typescript/src/commands/testCmd/mocha.sub.cmd.js.map +1 -1
- package/bundle/typescript/src/generators/config.js +11 -10
- package/bundle/typescript/src/generators/config.js.map +1 -1
- package/bundle/typescript/src/templates/meteor/config/pm2.config.js +3 -3
- package/bundle/typescript/src/templates/meteor/project/gitignore +2 -1
- package/bundle/typescript/src/templates/react/kit/mui/auth/password-reset/basic-password-reset-page.js.tsx +3 -4
- package/bundle/typescript/src/tool.d.ts +2 -0
- package/bundle/typescript/src/tool.js +3 -0
- package/bundle/typescript/src/tool.js.map +1 -1
- package/bundle/typescript/src/tools/aws/aws.class.js +6 -4
- package/bundle/typescript/src/tools/aws/aws.class.js.map +1 -1
- package/bundle/typescript/src/tools/dotenvx/dotenvx.class.d.ts +24 -0
- package/bundle/typescript/src/tools/dotenvx/dotenvx.class.js +66 -0
- package/bundle/typescript/src/tools/dotenvx/dotenvx.class.js.map +1 -0
- package/bundle/typescript/src/tools/ssh/ssh.class.js +1 -1
- package/bundle/typescript/src/tools/ssh/ssh.class.js.map +1 -1
- package/bundle/typescript/src/tools/ssl/ssl.class.d.ts +8 -0
- package/bundle/typescript/src/tools/ssl/ssl.class.js +53 -0
- package/bundle/typescript/src/tools/ssl/ssl.class.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { Command, ICommand } from './command.js';
|
|
2
|
+
/**
|
|
3
|
+
* Legwork (SR5e p.387-388): "ask <contact> about <thing>" taps a
|
|
4
|
+
* CONTACT's network for real information -- in person or over a live
|
|
5
|
+
* call. Two rolls, RAW-shaped: their network (Connection + Intuition,
|
|
6
|
+
* standing in for the contact's knowledge test) against your ask
|
|
7
|
+
* (Charisma + negotiation + LOYALTY dice, the book's own loyalty bonus,
|
|
8
|
+
* plus a drink if you bought one). The LOWER of the two decides the
|
|
9
|
+
* tier -- a plugged-in stranger won't spill, and a best friend can't
|
|
10
|
+
* share what the street doesn't know.
|
|
11
|
+
*
|
|
12
|
+
* The intel is REAL: tiers reveal facts pulled from the actual pending
|
|
13
|
+
* job's seed (what the client truly wants, who holds it, who to watch
|
|
14
|
+
* for) or the truth behind the district's active rumor. Facts land as
|
|
15
|
+
* narration deterministically (playable without AI), and the contact's
|
|
16
|
+
* AI is told it ALREADY said them, so its reply colors rather than
|
|
17
|
+
* contradicts. One pull per contact per homecoming -- networks need
|
|
18
|
+
* time to hear things (reset in Game.returnToHub).
|
|
19
|
+
*/
|
|
20
|
+
export declare class AskCommand extends Command implements ICommand {
|
|
21
|
+
protected static verb: string;
|
|
22
|
+
protected static description: string;
|
|
23
|
+
execute(args?: string[]): Promise<string>;
|
|
24
|
+
/**
|
|
25
|
+
* A contact putting their own errand on the table (Game.offerGigFrom).
|
|
26
|
+
* Loyalty 2 opens the door -- a Loyalty-1 face is still just a
|
|
27
|
+
* customer. The fixer is the one contact who never does errands: his
|
|
28
|
+
* trade is RUNS, through the existing call flow.
|
|
29
|
+
*/
|
|
30
|
+
private offerWork;
|
|
31
|
+
/**
|
|
32
|
+
* Real facts by tier, best source first: the pending job's seed, then
|
|
33
|
+
* the district's active rumor, then honest street noise. Tier 0 gets
|
|
34
|
+
* shrugs from every source -- both rolls have to land.
|
|
35
|
+
*/
|
|
36
|
+
private buildIntel;
|
|
37
|
+
}
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
import { Command } from './command.js';
|
|
2
|
+
import { NPC } from '../models/npc.js';
|
|
3
|
+
import { rollPool, formatRoll } from '../utilities/dice.js';
|
|
4
|
+
import { fuzzyPickName } from '../utilities/fuzzy-match.js';
|
|
5
|
+
import { FIXER_NAME } from '../factories/scene-seed-generator.js';
|
|
6
|
+
/**
|
|
7
|
+
* Legwork (SR5e p.387-388): "ask <contact> about <thing>" taps a
|
|
8
|
+
* CONTACT's network for real information -- in person or over a live
|
|
9
|
+
* call. Two rolls, RAW-shaped: their network (Connection + Intuition,
|
|
10
|
+
* standing in for the contact's knowledge test) against your ask
|
|
11
|
+
* (Charisma + negotiation + LOYALTY dice, the book's own loyalty bonus,
|
|
12
|
+
* plus a drink if you bought one). The LOWER of the two decides the
|
|
13
|
+
* tier -- a plugged-in stranger won't spill, and a best friend can't
|
|
14
|
+
* share what the street doesn't know.
|
|
15
|
+
*
|
|
16
|
+
* The intel is REAL: tiers reveal facts pulled from the actual pending
|
|
17
|
+
* job's seed (what the client truly wants, who holds it, who to watch
|
|
18
|
+
* for) or the truth behind the district's active rumor. Facts land as
|
|
19
|
+
* narration deterministically (playable without AI), and the contact's
|
|
20
|
+
* AI is told it ALREADY said them, so its reply colors rather than
|
|
21
|
+
* contradicts. One pull per contact per homecoming -- networks need
|
|
22
|
+
* time to hear things (reset in Game.returnToHub).
|
|
23
|
+
*/
|
|
24
|
+
export class AskCommand extends Command {
|
|
25
|
+
static verb = 'ask';
|
|
26
|
+
static description = 'Tap a contact: "ask <contact> about <thing>" for legwork (Loyalty adds dice; once per homecoming), or "ask <contact> about work" for a gig of theirs (Loyalty 2+).';
|
|
27
|
+
async execute(args = []) {
|
|
28
|
+
const actor = this.actor;
|
|
29
|
+
if (!args || args.length === 0) {
|
|
30
|
+
return `Ask WHO about WHAT? ("ask Mama Wu about the job" -- "contacts" lists who talks to you.)`;
|
|
31
|
+
}
|
|
32
|
+
// Candidates: whoever's here in the meat, plus a live call partner
|
|
33
|
+
// (legwork over comms is half the point of having their number).
|
|
34
|
+
const here = this.scene.getActorsInRoom(actor.currentLocation)
|
|
35
|
+
.filter((a) => a !== actor && a.plane === actor.plane && !a.isIncapacitated());
|
|
36
|
+
const partner = actor.activeCallPartner;
|
|
37
|
+
const candidates = partner && !here.includes(partner) ? [...here, partner] : here;
|
|
38
|
+
// "about" is the separator when present -- name before it, topic
|
|
39
|
+
// after. (A longest-prefix fuzzy match swallowed "Mama Wu about
|
|
40
|
+
// work" WHOLE as the name in a real harness run, leaving no topic.)
|
|
41
|
+
// Without "about", fall back to longest-prefix matching.
|
|
42
|
+
let target;
|
|
43
|
+
let topicWords = [];
|
|
44
|
+
const aboutIdx = args.findIndex(w => w.toLowerCase() === 'about');
|
|
45
|
+
if (aboutIdx > 0) {
|
|
46
|
+
const picked = fuzzyPickName(args.slice(0, aboutIdx).join(' '), candidates.map(a => a.name));
|
|
47
|
+
target = picked ? candidates.find(a => a.name === picked) : undefined;
|
|
48
|
+
topicWords = args.slice(aboutIdx + 1);
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
for (let i = args.length; i >= 1; i--) {
|
|
52
|
+
const picked = fuzzyPickName(args.slice(0, i).join(' '), candidates.map(a => a.name));
|
|
53
|
+
if (picked) {
|
|
54
|
+
target = candidates.find(a => a.name === picked);
|
|
55
|
+
topicWords = args.slice(i);
|
|
56
|
+
break;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
if (!target) {
|
|
61
|
+
return `Nobody by that name here or on the line. Present: ${here.map(a => a.name).join(', ') || 'no one'}${partner ? `; on the line: ${partner.name}` : ''}.`;
|
|
62
|
+
}
|
|
63
|
+
if (!(target instanceof NPC)) {
|
|
64
|
+
return `You know everything ${target.name} knows. That's the problem.`;
|
|
65
|
+
}
|
|
66
|
+
if (topicWords[0]?.toLowerCase() === 'about')
|
|
67
|
+
topicWords = topicWords.slice(1);
|
|
68
|
+
const topic = topicWords.join(' ') || 'the word on the street';
|
|
69
|
+
// Asking questions out loud is not a quiet activity.
|
|
70
|
+
actor.sneaking = false;
|
|
71
|
+
const contact = this.game?.contacts.get(target.name);
|
|
72
|
+
if (!contact) {
|
|
73
|
+
// A stranger's question gets a stranger's answer -- the AI plays it
|
|
74
|
+
// guarded, and the player learns how the roster works.
|
|
75
|
+
void Promise.resolve(target.hear(actor, `${topic}? [System note: ${actor.name} is asking you about "${topic}", but you two have NO real relationship -- be guarded and noncommittal; share at most what anyone on this street already knows, or deflect with charm.]`)).catch(err => {
|
|
76
|
+
this.logger.error(`${target.name} failed to hear the question: ${err}`);
|
|
77
|
+
});
|
|
78
|
+
return `You put the question to ${target.name}, but you're a stranger asking a stranger's question. (Trade with them, run their errands -- CONTACTS talk. "contacts" shows who already does.)`;
|
|
79
|
+
}
|
|
80
|
+
// "ask <contact> about work" is a JOB request, not a network pull:
|
|
81
|
+
// no dice, no per-homecoming budget -- Loyalty gates the door and
|
|
82
|
+
// the offer lands as the standing gig ("work" picks it up). Kept
|
|
83
|
+
// separate from intel keywords: "the job" still means legwork on
|
|
84
|
+
// the pending RUN; work/gig/errand means employ me.
|
|
85
|
+
if (/\b(work|gig|errand|hiring|delivery)\b/i.test(topic)) {
|
|
86
|
+
return this.offerWork(target, contact);
|
|
87
|
+
}
|
|
88
|
+
if (contact.asked) {
|
|
89
|
+
return `${target.name} already worked their network for you since you last went out -- nothing new has come in. (Legwork refreshes when you come home from a job.)`;
|
|
90
|
+
}
|
|
91
|
+
contact.asked = true;
|
|
92
|
+
// The two rolls (see header). Loyalty is the book's own bonus dice.
|
|
93
|
+
const network = rollPool(Math.max(1, contact.connection + target.intuition));
|
|
94
|
+
const negotiation = actor.skillRating('negotiation');
|
|
95
|
+
const ask = rollPool(Math.max(1, actor.charisma + (negotiation > 0 ? negotiation : -1) + contact.loyalty + actor.consumeLiquidCourage() + actor.woundModifier - actor.sustainingPenalty));
|
|
96
|
+
const tier = Math.min(network.hits, ask.hits);
|
|
97
|
+
const facts = this.buildIntel(topic, tier);
|
|
98
|
+
this.actor.performAction('quietly asks', `${target.name} about ${topic}`);
|
|
99
|
+
this.logger.write(`AskCommand: ${actor.name} asked ${target.name} about "${topic}" -- network ${network.hits}, ask ${ask.hits}, tier ${tier}.`);
|
|
100
|
+
// The AI colors what the engine already delivered -- told exactly
|
|
101
|
+
// what it said so the reply can't contradict the mechanics.
|
|
102
|
+
void Promise.resolve(target.hear(actor, `${topic}? [System note: ${actor.name} (a contact of yours, Loyalty ${contact.loyalty}) tapped you for legwork about "${topic}". You have ALREADY told them exactly this, no more and no less: "${facts.join(' ')}" Reply briefly in your own voice, coloring what you said -- never add new facts, never contradict these.]`)).catch(err => {
|
|
103
|
+
this.logger.error(`${target.name} failed to hear the legwork: ${err}`);
|
|
104
|
+
});
|
|
105
|
+
// One roll per line (readability pass: two-roll "vs" lines were hard
|
|
106
|
+
// to scan); the rolls tick in Mechanics, the intel stays in-world.
|
|
107
|
+
this.logger.meta(`Legwork -- your ask (+${contact.loyalty} loyalty): ${formatRoll(ask)}`);
|
|
108
|
+
this.logger.meta(` ${target.name}'s network: ${formatRoll(network)}`);
|
|
109
|
+
return [
|
|
110
|
+
`Legwork -- ${target.name} works their network:`,
|
|
111
|
+
...facts.map(f => ` ${f}`),
|
|
112
|
+
].join('\n');
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* A contact putting their own errand on the table (Game.offerGigFrom).
|
|
116
|
+
* Loyalty 2 opens the door -- a Loyalty-1 face is still just a
|
|
117
|
+
* customer. The fixer is the one contact who never does errands: his
|
|
118
|
+
* trade is RUNS, through the existing call flow.
|
|
119
|
+
*/
|
|
120
|
+
offerWork(target, contact) {
|
|
121
|
+
if (target.name === FIXER_NAME) {
|
|
122
|
+
return `${target.name} smiles like you said something charming. "Errands? I broker RUNS, chummer." (Finish the current business and "call ${FIXER_NAME}" -- that's his work.)`;
|
|
123
|
+
}
|
|
124
|
+
if (this.game?.activeGig) {
|
|
125
|
+
const g = this.game.activeGig;
|
|
126
|
+
return `${target.name} nods at your pack. "Looks to me like you already owe ${g.from} a delivery." Finish that first -- the ${g.itemName} to ${g.to}.`;
|
|
127
|
+
}
|
|
128
|
+
if (contact.loyalty < 2) {
|
|
129
|
+
return `${target.name} looks you over, friendly but flat. "You're a customer, chummer. Customers buy things." (Loyalty 2 unlocks their errands -- keep trading, or run the district's gigs.)`;
|
|
130
|
+
}
|
|
131
|
+
const offer = this.game?.offerGigFrom(target.name);
|
|
132
|
+
if (!offer) {
|
|
133
|
+
return `${target.name} thinks on it, comes back empty. "Nothing moving right now. Ask me after your next job."`;
|
|
134
|
+
}
|
|
135
|
+
void Promise.resolve(target.hear(this.actor, `Got any work for me? [System note: you just offered ${this.actor.name} (a trusted contact, Loyalty ${contact.loyalty}) a delivery job: the ${offer.itemName} to ${offer.to} for ${offer.pay} nuyen. You've said the brief already -- add only a short in-character word.]`)).catch(err => {
|
|
136
|
+
this.logger.error(`${target.name} failed to hear the work request: ${err}`);
|
|
137
|
+
});
|
|
138
|
+
const remote = this.actor.currentLocation !== target.currentLocation;
|
|
139
|
+
return [
|
|
140
|
+
`${target.name} lowers their voice: "${offer.brief}"`,
|
|
141
|
+
` ${offer.pay} nuyen on delivery to ${offer.to}${offer.familyRate ? ` -- the family rate, because it's you` : ''}.`,
|
|
142
|
+
remote
|
|
143
|
+
? ` Swing by -- the package waits at their counter. ("work" in front of them picks it up.)`
|
|
144
|
+
: ` "work" to take the package.`,
|
|
145
|
+
].join('\n');
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Real facts by tier, best source first: the pending job's seed, then
|
|
149
|
+
* the district's active rumor, then honest street noise. Tier 0 gets
|
|
150
|
+
* shrugs from every source -- both rolls have to land.
|
|
151
|
+
*/
|
|
152
|
+
buildIntel(topic, tier) {
|
|
153
|
+
const pending = this.game?.pendingRun;
|
|
154
|
+
const rumor = this.game?.activeRumor;
|
|
155
|
+
const wantsJob = /job|run|work|johnson|fixer|gig|offer/i.test(topic);
|
|
156
|
+
const wantsRumor = rumor ? topic.split(/\s+/).some(w => w.length > 3 && rumor.toLowerCase().includes(w.toLowerCase())) : false;
|
|
157
|
+
if (tier <= 0) {
|
|
158
|
+
return [`They come back with smoke: nothing solid, nothing sourced. Sometimes the street just doesn't know yet.`];
|
|
159
|
+
}
|
|
160
|
+
if (pending && (wantsJob || !wantsRumor)) {
|
|
161
|
+
const wc = pending.winCondition;
|
|
162
|
+
const facts = [`Word is the job on your table -- "${pending.name}" -- is realer than the pitch let on.`];
|
|
163
|
+
if (tier >= 1 && wc?.item) {
|
|
164
|
+
facts.push(`What the client actually wants is the ${wc.item} -- everything else in the brief is scenery.`);
|
|
165
|
+
}
|
|
166
|
+
if (tier >= 2 && wc?.item) {
|
|
167
|
+
const holder = pending.items?.find(i => i.name?.toLowerCase() === wc.item?.toLowerCase());
|
|
168
|
+
if (holder?.heldBy)
|
|
169
|
+
facts.push(`Last anyone heard, the ${wc.item} rides on ${holder.heldBy} personally -- plan for a conversation or a fight.`);
|
|
170
|
+
else if (holder?.room)
|
|
171
|
+
facts.push(`The ${wc.item} hasn't moved: it's sitting in ${holder.room}.`);
|
|
172
|
+
else if (wc.toNpc)
|
|
173
|
+
facts.push(`The hand-off is to ${wc.toNpc} -- deliver to anyone else and you didn't do the job.`);
|
|
174
|
+
}
|
|
175
|
+
if (tier >= 3) {
|
|
176
|
+
const heavies = (pending.npcs ?? [])
|
|
177
|
+
.map(n => n.player?.name)
|
|
178
|
+
.filter((n) => !!n && n !== wc?.toNpc);
|
|
179
|
+
if (heavies.length > 0)
|
|
180
|
+
facts.push(`Names in the mix: ${heavies.slice(0, 3).join(', ')}. Assume at least one of them objects to you.`);
|
|
181
|
+
if (wc?.payout)
|
|
182
|
+
facts.push(`And the client's budget is real -- ${wc.payout} nuyen is funded, not promised.`);
|
|
183
|
+
}
|
|
184
|
+
return facts;
|
|
185
|
+
}
|
|
186
|
+
if (rumor) {
|
|
187
|
+
const facts = [`On that rumor -- "${rumor}"`];
|
|
188
|
+
if (tier === 1)
|
|
189
|
+
facts.push(`It's not just talk: their network confirms something's actually moving under it.`);
|
|
190
|
+
if (tier >= 2)
|
|
191
|
+
facts.push(`It's true, and it's CONNECTED -- whatever job comes through your fixer next is tangled in it. Walk in knowing that.`);
|
|
192
|
+
return facts;
|
|
193
|
+
}
|
|
194
|
+
return [`Nothing's on the wire for you right now -- no pending job, no live rumor. Their network stays warm for when there is. (Call ${this.game?.hasHub ? 'your fixer' : 'around'} first.)`];
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
//# sourceMappingURL=ask.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ask.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/ask.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,6 +20,9 @@ export class AssenseCommand extends Command {
|
|
|
20
20
|
if (actor.plane === 'matrix') {
|
|
21
21
|
return `There are no auras in here -- only geometry and other people's code.`;
|
|
22
22
|
}
|
|
23
|
+
if (actor.plane === 'drone') {
|
|
24
|
+
return `A camera has no astral senses -- auras are read with the eyes you left with your body.`;
|
|
25
|
+
}
|
|
23
26
|
const room = actor.currentLocation;
|
|
24
27
|
// Bare assense: TOGGLE astral perception (the player's own status-bar
|
|
25
28
|
// request: senses held open as a sustained state, -2 dice to
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assense.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/assense.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"assense.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/assense.ts"],"names":[],"mappings":"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"}
|
|
@@ -38,6 +38,11 @@ export class AttackCommand extends Command {
|
|
|
38
38
|
}
|
|
39
39
|
// Violence is loud -- sneak mode ends the moment you swing.
|
|
40
40
|
this.actor.sneaking = false;
|
|
41
|
+
// A recon frame has cameras, not guns (see Player.droneArmed) --
|
|
42
|
+
// jumped-in combat needs an armed airframe.
|
|
43
|
+
if (this.actor.plane === 'drone' && !this.actor.droneArmed) {
|
|
44
|
+
return `The ${this.actor.riggedDrone?.name ?? 'drone'} has no weapon mounts -- its only weapon is what it sees. (Armed airframes exist; Ratchet stocks them.)`;
|
|
45
|
+
}
|
|
41
46
|
const room = this.actor.currentLocation;
|
|
42
47
|
if (!room) {
|
|
43
48
|
return 'You are not in a valid location to fight anyone.';
|
|
@@ -45,10 +50,12 @@ export class AttackCommand extends Command {
|
|
|
45
50
|
// Same fuzzy matching "take" uses (see utilities/fuzzy-match.ts) --
|
|
46
51
|
// punctuation, case, typos, and partial names all resolve, but an
|
|
47
52
|
// ambiguous guess deliberately misses rather than shooting someone
|
|
48
|
-
// at random. You can only fight what shares your plane: meat
|
|
49
|
-
// touch a Matrix persona or an astral form
|
|
53
|
+
// at random. You can only fight what shares your COMBAT plane: meat
|
|
54
|
+
// can't touch a Matrix persona or an astral form -- but a jumped-in
|
|
55
|
+
// drone is a physical machine, so drone and meat trade fire freely
|
|
56
|
+
// (see Player.sharesCombatPlane).
|
|
50
57
|
const targetName = args.join(' ');
|
|
51
|
-
const candidates = this.scene.getActorsInRoom(room).filter(a => a !== this.actor && a.
|
|
58
|
+
const candidates = this.scene.getActorsInRoom(room).filter(a => a !== this.actor && a.sharesCombatPlane(this.actor));
|
|
52
59
|
const pickedName = fuzzyPickName(targetName, candidates.map(a => a.name));
|
|
53
60
|
const target = pickedName ? candidates.find(a => a.name === pickedName) : undefined;
|
|
54
61
|
if (!target) {
|
|
@@ -158,9 +165,11 @@ export class AttackCommand extends Command {
|
|
|
158
165
|
await exchange.announce(drawLines);
|
|
159
166
|
}
|
|
160
167
|
// ---- Initiative decides who acts first (see rollInitiative) ----
|
|
168
|
+
// Screen splits world/meta (readability pass); the AI-history
|
|
169
|
+
// report keeps both, so NPC memories still carry the dice.
|
|
161
170
|
const init = exchange.rollInitiative(this.actor, target);
|
|
162
|
-
report.push(...init.lines);
|
|
163
|
-
await exchange.announce(init.lines);
|
|
171
|
+
report.push(...init.lines, ...init.metaLines);
|
|
172
|
+
await exchange.announce(init.lines, init.metaLines);
|
|
164
173
|
// ---- The two strikes, in initiative order. The aggressor's strike
|
|
165
174
|
// uses this command's profile (weapon, or subdue's stun hold); the
|
|
166
175
|
// defender's answer is always their own lethal weapon. Being
|
|
@@ -178,9 +187,9 @@ export class AttackCommand extends Command {
|
|
|
178
187
|
break;
|
|
179
188
|
const profile = striker === this.actor ? this.strikeProfile(exchange, target) : undefined;
|
|
180
189
|
const prefix = striker === init.second ? [`${striker.name} retaliates!`] : [];
|
|
181
|
-
const strike =
|
|
182
|
-
report.push('', ...strike);
|
|
183
|
-
await exchange.announce(strike);
|
|
190
|
+
const strike = exchange.resolveStrike(striker, defender, profile);
|
|
191
|
+
report.push('', ...prefix, ...strike.world, ...strike.meta);
|
|
192
|
+
await exchange.announce([...prefix, ...strike.world], strike.meta);
|
|
184
193
|
const takedown = await this.resolveTakedown(exchange, defender, striker);
|
|
185
194
|
if (takedown) {
|
|
186
195
|
report.push(...takedown);
|
|
@@ -193,9 +202,10 @@ export class AttackCommand extends Command {
|
|
|
193
202
|
const defender = init.extraStriker === this.actor ? target : this.actor;
|
|
194
203
|
if (!defender.isIncapacitated() && init.extraStriker.plane === defender.plane) {
|
|
195
204
|
const profile = init.extraStriker === this.actor ? this.strikeProfile(exchange, target) : undefined;
|
|
196
|
-
const strike =
|
|
197
|
-
|
|
198
|
-
|
|
205
|
+
const strike = exchange.resolveStrike(init.extraStriker, defender, profile);
|
|
206
|
+
const pressLine = `${init.extraStriker.name} presses the advantage!`;
|
|
207
|
+
report.push('', pressLine, ...strike.world, ...strike.meta);
|
|
208
|
+
await exchange.announce([pressLine, ...strike.world], strike.meta);
|
|
199
209
|
const takedown = await this.resolveTakedown(exchange, defender, init.extraStriker);
|
|
200
210
|
if (takedown)
|
|
201
211
|
report.push(...takedown);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attack.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/attack.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAY,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,cAAc,EAAkB,MAAM,iCAAiC,CAAC;AACjF,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAI5F;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,OAAO,aAAc,SAAQ,OAAO;IAC9B,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC;IACvB,MAAM,CAAC,WAAW,GAAG,+FAA+F,CAAC;IAE/H,KAAK,CAAC,OAAO,CAAC,OAAiB,EAAE;QAC/B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,OAAO,iDAAiD,CAAC;QAC3D,CAAC;QAED,qEAAqE;QACrE,sEAAsE;QACtE,sEAAsE;QACtE,kBAAkB;QAClB,IAAI,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,EAAE,CAAC;YACjC,OAAO,iCAAiC,CAAC;QAC3C,CAAC;QAED,4DAA4D;QAC5D,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC;QAE5B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;QACxC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,kDAAkD,CAAC;QAC5D,CAAC;QAED,oEAAoE;QACpE,kEAAkE;QAClE,mEAAmE;QACnE,mEAAmE;QACnE,
|
|
1
|
+
{"version":3,"file":"attack.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/attack.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,8 +3,9 @@ import { PuzzleBypassType } from '../types/seed/puzzle-seed.js';
|
|
|
3
3
|
/**
|
|
4
4
|
* The CON skill's barrier verb: fast-talk past a social gate -- a doorman,
|
|
5
5
|
* an intercom challenge, a receptionist with a list (bypassType "con").
|
|
6
|
-
* Same
|
|
7
|
-
*
|
|
6
|
+
* Same stakes as pick/hack/cast: a blown story burns the approach for
|
|
7
|
+
* good -- they know exactly what you are now, and the district hears
|
|
8
|
+
* about it. Rolled on Charisma + con.
|
|
8
9
|
*/
|
|
9
10
|
export declare class BluffCommand extends BypassCommand {
|
|
10
11
|
protected static verb: string;
|
|
@@ -3,12 +3,13 @@ import { rollPool, formatRoll } from '../utilities/dice.js';
|
|
|
3
3
|
/**
|
|
4
4
|
* The CON skill's barrier verb: fast-talk past a social gate -- a doorman,
|
|
5
5
|
* an intercom challenge, a receptionist with a list (bypassType "con").
|
|
6
|
-
* Same
|
|
7
|
-
*
|
|
6
|
+
* Same stakes as pick/hack/cast: a blown story burns the approach for
|
|
7
|
+
* good -- they know exactly what you are now, and the district hears
|
|
8
|
+
* about it. Rolled on Charisma + con.
|
|
8
9
|
*/
|
|
9
10
|
export class BluffCommand extends BypassCommand {
|
|
10
11
|
static verb = 'bluff';
|
|
11
|
-
static description = 'Talk your way past a social barrier (a doorman, a voice-gate) without the passphrase -- Charisma + con
|
|
12
|
+
static description = 'Talk your way past a social barrier (a doorman, a voice-gate) without the passphrase -- Charisma + con. Blow the story and they\'ll never buy another word (the real credential still works).';
|
|
12
13
|
bypassType = 'con';
|
|
13
14
|
noPuzzleMessage = `There's nobody here to bluff past.`;
|
|
14
15
|
async execute(args) {
|
|
@@ -19,6 +20,9 @@ export class BluffCommand extends BypassCommand {
|
|
|
19
20
|
if (this.actor.plane === 'astral') {
|
|
20
21
|
return `Nobody physical can hear a word you say from out here. "return" to your body first.`;
|
|
21
22
|
}
|
|
23
|
+
if (this.actor.plane === 'drone') {
|
|
24
|
+
return `Nobody buys a story from a hovering drone with a tinny speaker -- a con needs a FACE. "jump" back to yours.`;
|
|
25
|
+
}
|
|
22
26
|
// Working a mark out loud is the opposite of sneaking (see sneak.ts).
|
|
23
27
|
this.actor.sneaking = false;
|
|
24
28
|
return super.execute(args);
|
|
@@ -28,10 +32,14 @@ export class BluffCommand extends BypassCommand {
|
|
|
28
32
|
// Face's answer to the decker's terminal and the ops specialist's
|
|
29
33
|
// maglock.
|
|
30
34
|
const skill = this.actor.skillRating('con');
|
|
31
|
-
|
|
35
|
+
// A drink beforehand loosens the delivery (see use.ts liquid courage).
|
|
36
|
+
// Public Awareness cuts AGAINST a con -- a face people can place is
|
|
37
|
+
// a face that can't claim to be someone else (capped at -2).
|
|
38
|
+
const fame = Math.min(2, this.actor.publicAwareness);
|
|
39
|
+
const pool = Math.max(1, this.actor.charisma + (skill > 0 ? skill : -1) + this.actor.consumeLiquidCourage() + this.actor.consumeFirstImpression() - fame + this.actor.woundModifier - this.actor.sustainingPenalty);
|
|
32
40
|
const roll = rollPool(pool);
|
|
33
41
|
if (this.actor === this.scene.getPlayer()) {
|
|
34
|
-
this.logger.
|
|
42
|
+
this.logger.meta(`Con: ${formatRoll(roll)} (2+ to sell it)`);
|
|
35
43
|
}
|
|
36
44
|
return roll.hits >= 2;
|
|
37
45
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bluff.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/bluff.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAE5D
|
|
1
|
+
{"version":3,"file":"bluff.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/bluff.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAE5D;;;;;;GAMG;AACH,MAAM,OAAO,YAAa,SAAQ,aAAa;IACnC,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC;IACtB,MAAM,CAAC,WAAW,GAAG,+LAA+L,CAAC;IACrN,UAAU,GAAqB,KAAK,CAAC;IACrC,eAAe,GAAG,oCAAoC,CAAC;IAEjE,KAAK,CAAC,OAAO,CAAC,IAAc;QAC1B,qEAAqE;QACrE,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAClC,OAAO,uGAAuG,CAAC;QACjH,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAClC,OAAO,qFAAqF,CAAC;QAC/F,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,OAAO,EAAE,CAAC;YACjC,OAAO,6GAA6G,CAAC;QACvH,CAAC;QACD,sEAAsE;QACtE,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC;QAC5B,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAES,KAAK,CAAC,gBAAgB;QAC9B,qEAAqE;QACrE,kEAAkE;QAClE,WAAW;QACX,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC5C,uEAAuE;QACvE,oEAAoE;QACpE,6DAA6D;QAC7D,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QACrD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,sBAAsB,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACpN,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,CAAC;YAC1C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC/D,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;IACxB,CAAC"}
|
|
@@ -23,6 +23,9 @@ export class BrandishCommand extends Command {
|
|
|
23
23
|
if (actor.plane === 'astral') {
|
|
24
24
|
return `Your weapon stayed with your body -- on the astral, your will IS the weapon.`;
|
|
25
25
|
}
|
|
26
|
+
if (actor.plane === 'drone') {
|
|
27
|
+
return `Your holster is on a body that's streets away. ${actor.droneArmed ? 'The mount IS the threat display -- attacking speaks for itself.' : `The ${actor.riggedDrone?.name ?? 'drone'} has nothing to draw and nothing to draw with.`}`;
|
|
28
|
+
}
|
|
26
29
|
const carried = actor.getCarriedWeapon();
|
|
27
30
|
if (!carried) {
|
|
28
31
|
// Point at the fix if there's a weapon one "equip" away.
|
|
@@ -42,7 +45,10 @@ export class BrandishCommand extends Command {
|
|
|
42
45
|
// rides into the witnessed action itself, so every NPC's AI hears HOW
|
|
43
46
|
// convincing the steel looked -- and reacts to that, not just the act.
|
|
44
47
|
const skill = actor.skillRating('intimidation');
|
|
45
|
-
|
|
48
|
+
// Notoriety WORKS here: the stories that hurt every friendly pool
|
|
49
|
+
// make the drawn steel scarier (capped -- infamy is not a superpower).
|
|
50
|
+
const infamy = Math.min(3, actor.notoriety);
|
|
51
|
+
const menaceRoll = rollPool(Math.max(1, actor.charisma + (skill > 0 ? skill : -1) + infamy + actor.woundModifier - actor.sustainingPenalty));
|
|
46
52
|
const menace = menaceRoll.hits >= 3
|
|
47
53
|
? 'radiating flat, lethal intent'
|
|
48
54
|
: menaceRoll.hits >= 1
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"brandish.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/brandish.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAY,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAE5D;;;;;;;;;GASG;AACH,MAAM,OAAO,eAAgB,SAAQ,OAAO;IAChC,MAAM,CAAC,IAAI,GAAG,UAAU,CAAC;IACzB,MAAM,CAAC,WAAW,GAAG,oFAAoF,CAAC;IAEpH,KAAK,CAAC,OAAO,CAAC,QAAkB,EAAE;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAEzB,6DAA6D;QAC7D,IAAI,KAAK,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO,0GAA0G,CAAC;QACpH,CAAC;QACD,IAAI,KAAK,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO,8EAA8E,CAAC;QACxF,CAAC;QAED,MAAM,OAAO,GAAG,KAAK,CAAC,gBAAgB,EAAE,CAAC;QACzC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,yDAAyD;YACzD,MAAM,gBAAgB,GAAa,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC;YAClG,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC7F,OAAO,KAAK;gBACV,CAAC,CAAC,0BAA0B,KAAK,CAAC,IAAI,yCAAyC,KAAK,CAAC,IAAI,UAAU;gBACnG,CAAC,CAAC,kDAAkD,CAAC;QACzD,CAAC;QAED,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;YACtB,OAAO,OAAO,OAAO,CAAC,IAAI,2BAA2B,CAAC;QACxD,CAAC;QAED,KAAK,CAAC,UAAU,EAAE,CAAC;QACnB,gDAAgD;QAChD,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC;QAEvB,sEAAsE;QACtE,sEAAsE;QACtE,uEAAuE;QACvE,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QAChD,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"brandish.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/brandish.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAY,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAE5D;;;;;;;;;GASG;AACH,MAAM,OAAO,eAAgB,SAAQ,OAAO;IAChC,MAAM,CAAC,IAAI,GAAG,UAAU,CAAC;IACzB,MAAM,CAAC,WAAW,GAAG,oFAAoF,CAAC;IAEpH,KAAK,CAAC,OAAO,CAAC,QAAkB,EAAE;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAEzB,6DAA6D;QAC7D,IAAI,KAAK,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO,0GAA0G,CAAC;QACpH,CAAC;QACD,IAAI,KAAK,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO,8EAA8E,CAAC;QACxF,CAAC;QACD,IAAI,KAAK,CAAC,KAAK,KAAK,OAAO,EAAE,CAAC;YAC5B,OAAO,kDAAkD,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,iEAAiE,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,WAAW,EAAE,IAAI,IAAI,OAAO,gDAAgD,EAAE,CAAC;QAC9O,CAAC;QAED,MAAM,OAAO,GAAG,KAAK,CAAC,gBAAgB,EAAE,CAAC;QACzC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,yDAAyD;YACzD,MAAM,gBAAgB,GAAa,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC;YAClG,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC7F,OAAO,KAAK;gBACV,CAAC,CAAC,0BAA0B,KAAK,CAAC,IAAI,yCAAyC,KAAK,CAAC,IAAI,UAAU;gBACnG,CAAC,CAAC,kDAAkD,CAAC;QACzD,CAAC;QAED,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;YACtB,OAAO,OAAO,OAAO,CAAC,IAAI,2BAA2B,CAAC;QACxD,CAAC;QAED,KAAK,CAAC,UAAU,EAAE,CAAC;QACnB,gDAAgD;QAChD,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC;QAEvB,sEAAsE;QACtE,sEAAsE;QACtE,uEAAuE;QACvE,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QAChD,kEAAkE;QAClE,uEAAuE;QACvE,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QAC5C,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAC7I,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,IAAI,CAAC;YACjC,CAAC,CAAC,+BAA+B;YACjC,CAAC,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC;gBACpB,CAAC,CAAC,wBAAwB;gBAC1B,CAAC,CAAC,uCAAuC,CAAC;QAC9C,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,OAAO,MAAM,EAAE,CAAC,CAAC;QAC7D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,eAAe,OAAO,CAAC,IAAI,KAAK,UAAU,CAAC,IAAI,gBAAgB,CAAC,CAAC;QAChG,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;QAE1B,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,EAAE;YAClC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,IAAI,gBAAgB,CAAC;YAC/F,CAAC,CAAC,EAAE,CAAC;QACP,OAAO,gBAAgB,OAAO,CAAC,IAAI,IAAI,QAAQ,YAAY,UAAU,CAAC,UAAU,CAAC,2CAA2C,CAAC;IAC/H,CAAC;;AAGH,MAAM,OAAO,cAAe,SAAQ,OAAO;IAC/B,MAAM,CAAC,IAAI,GAAG,SAAS,CAAC;IACxB,MAAM,CAAC,WAAW,GAAG,4EAA4E,CAAC;IAE5G,KAAK,CAAC,OAAO,CAAC,QAAkB,EAAE;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAEzB,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;YACrB,OAAO,oEAAoE,CAAC;QAC9E,CAAC;QAED,MAAM,OAAO,GAAG,KAAK,CAAC,gBAAgB,EAAE,CAAC;QACzC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,qDAAqD,CAAC;QAC/D,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YACvB,OAAO,OAAO,OAAO,CAAC,IAAI,wBAAwB,CAAC;QACrD,CAAC;QAED,KAAK,CAAC,UAAU,EAAE,CAAC;QACnB,KAAK,CAAC,aAAa,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,aAAa,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC;QAC7D,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;QAE1B,OAAO,mBAAmB,OAAO,CAAC,IAAI,kEAAkE,CAAC;IAC3G,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Command, ICommand } from './command.js';
|
|
2
|
+
/**
|
|
3
|
+
* Diegetic shopping: "browse" (or bare "buy") in a vendor's room reads
|
|
4
|
+
* their shelves with live prices; "buy <item>" slides the nuyen across
|
|
5
|
+
* the counter. A vendor is any live NPC whose name is on items in the
|
|
6
|
+
* room (see commerce.vendorsInRoom) -- the hub's shopkeepers and any
|
|
7
|
+
* generated merchant alike. Stealing stays possible exactly as before;
|
|
8
|
+
* this is just the version where nobody comes after you.
|
|
9
|
+
*/
|
|
10
|
+
export declare class BuyCommand extends Command implements ICommand {
|
|
11
|
+
protected static verb: string;
|
|
12
|
+
protected static description: string;
|
|
13
|
+
execute(args?: string[]): Promise<string>;
|
|
14
|
+
private browse;
|
|
15
|
+
private purchase;
|
|
16
|
+
}
|