@maka/maka-cli 5.23.0 → 5.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundle/typescript/package.json +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/hack.js +10 -3
- package/bundle/typescript/src/commands/game/sideQuest/commands/hack.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/look.js +41 -4
- package/bundle/typescript/src/commands/game/sideQuest/commands/look.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/mark.d.ts +18 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/mark.js +161 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/mark.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/reboot.js +11 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/reboot.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/source.js +19 -6
- package/bundle/typescript/src/commands/game/sideQuest/commands/source.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 +5 -1
- package/bundle/typescript/src/commands/game/sideQuest/engine-version.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/game.js +4 -1
- package/bundle/typescript/src/commands/game/sideQuest/game.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/player.d.ts +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/player.js +5 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/player.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/utilities/grid-view.js +4 -2
- package/bundle/typescript/src/commands/game/sideQuest/utilities/grid-view.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/marks.d.ts +20 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/marks.js +50 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/marks.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/overwatch.js +3 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/overwatch.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/planes.js +4 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/planes.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/sin.d.ts +32 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/sin.js +73 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/sin.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Player } from '../models/player.js';
|
|
2
|
+
import { Item } from '../models/item.js';
|
|
3
|
+
/**
|
|
4
|
+
* IDENTITY AT THE COUNTER (SINs & commerce, player go 2026-08-24;
|
|
5
|
+
* canon p.363-368, values engine-adapted -- the RAG was down). The
|
|
6
|
+
* street's cash economy asks no questions -- but RESTRICTED-tier gear
|
|
7
|
+
* (availability >= PAPER_AVAILABILITY) wants a NAME on the deal:
|
|
8
|
+
*
|
|
9
|
+
* - A NATIONAL or CORP SIN signs cleanly -- legal paper is the whole
|
|
10
|
+
* upside of being on file (the downside was priced into the
|
|
11
|
+
* quality).
|
|
12
|
+
* - A CRIMINAL SIN can't be hidden (it broadcasts): the deal goes
|
|
13
|
+
* through, the system takes its cut, the file grows a line.
|
|
14
|
+
* - A carried FAKE SIN signs at clean price -- but every paper deal
|
|
15
|
+
* is one more wand pass, and a bad read BURNS the fake (the deal
|
|
16
|
+
* survives on cash at the no-paper premium).
|
|
17
|
+
* - The SINless pay the premium, always: no paper, cash talks
|
|
18
|
+
* louder.
|
|
19
|
+
*
|
|
20
|
+
* Shared by source.ts (the big-ticket path); street-stall "buy" stays
|
|
21
|
+
* the pure cash economy by design. No import.meta (engine-graph law).
|
|
22
|
+
*/
|
|
23
|
+
export declare const PAPER_AVAILABILITY = 9;
|
|
24
|
+
export declare function bestFakeSin(p: Player): {
|
|
25
|
+
item: Item;
|
|
26
|
+
rating: number;
|
|
27
|
+
} | undefined;
|
|
28
|
+
export interface IPaperResult {
|
|
29
|
+
price: number;
|
|
30
|
+
lines: string[];
|
|
31
|
+
}
|
|
32
|
+
export declare function paperPurchase(p: Player, basePrice: number, availability: number, meta: (line: string) => void): IPaperResult;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { rollPool, formatRoll } from './dice.js';
|
|
2
|
+
/**
|
|
3
|
+
* IDENTITY AT THE COUNTER (SINs & commerce, player go 2026-08-24;
|
|
4
|
+
* canon p.363-368, values engine-adapted -- the RAG was down). The
|
|
5
|
+
* street's cash economy asks no questions -- but RESTRICTED-tier gear
|
|
6
|
+
* (availability >= PAPER_AVAILABILITY) wants a NAME on the deal:
|
|
7
|
+
*
|
|
8
|
+
* - A NATIONAL or CORP SIN signs cleanly -- legal paper is the whole
|
|
9
|
+
* upside of being on file (the downside was priced into the
|
|
10
|
+
* quality).
|
|
11
|
+
* - A CRIMINAL SIN can't be hidden (it broadcasts): the deal goes
|
|
12
|
+
* through, the system takes its cut, the file grows a line.
|
|
13
|
+
* - A carried FAKE SIN signs at clean price -- but every paper deal
|
|
14
|
+
* is one more wand pass, and a bad read BURNS the fake (the deal
|
|
15
|
+
* survives on cash at the no-paper premium).
|
|
16
|
+
* - The SINless pay the premium, always: no paper, cash talks
|
|
17
|
+
* louder.
|
|
18
|
+
*
|
|
19
|
+
* Shared by source.ts (the big-ticket path); street-stall "buy" stays
|
|
20
|
+
* the pure cash economy by design. No import.meta (engine-graph law).
|
|
21
|
+
*/
|
|
22
|
+
export const PAPER_AVAILABILITY = 9;
|
|
23
|
+
const SINLESS_PREMIUM = 0.25;
|
|
24
|
+
const CRIMINAL_SURCHARGE = 0.15;
|
|
25
|
+
const VENDOR_WAND_DICE = 4;
|
|
26
|
+
export function bestFakeSin(p) {
|
|
27
|
+
const fakes = p.inventory.getAllItems()
|
|
28
|
+
.map(i => ({ item: i, m: /^Fake SIN \(Rating (\d)\)$/.exec(i.name) }))
|
|
29
|
+
.filter(x => x.m !== null)
|
|
30
|
+
.map(x => ({ item: x.item, rating: parseInt(x.m[1], 10) }))
|
|
31
|
+
.sort((a, b) => b.rating - a.rating);
|
|
32
|
+
return fakes[0];
|
|
33
|
+
}
|
|
34
|
+
export function paperPurchase(p, basePrice, availability, meta) {
|
|
35
|
+
if (availability < PAPER_AVAILABILITY)
|
|
36
|
+
return { price: basePrice, lines: [] };
|
|
37
|
+
if (p.qualities.has('sinner-criminal')) {
|
|
38
|
+
const bump = Math.ceil(basePrice * CRIMINAL_SURCHARGE);
|
|
39
|
+
return {
|
|
40
|
+
price: basePrice + bump,
|
|
41
|
+
lines: [`Restricted gear wants a name on it -- and your CRIMINAL SIN broadcasts before you can offer one. The deal goes through with the system's cut on top (+${bump} nuyen), and somewhere a file grows a line.`],
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
if (p.qualities.has('sinner-national') || p.qualities.has('sinner-corp')) {
|
|
45
|
+
return {
|
|
46
|
+
price: basePrice,
|
|
47
|
+
lines: [`Restricted gear wants a name on it -- and you HAVE one. Your SIN signs; legal paper, clean price. (It's on the record, but that was always the deal.)`],
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
const fake = bestFakeSin(p);
|
|
51
|
+
if (fake) {
|
|
52
|
+
const wand = rollPool(VENDOR_WAND_DICE);
|
|
53
|
+
meta(`Vendor wand (${VENDOR_WAND_DICE}d6): ${formatRoll(wand)} (beats Rating ${fake.rating} to burn the fake)`);
|
|
54
|
+
if (wand.hits <= fake.rating) {
|
|
55
|
+
return {
|
|
56
|
+
price: basePrice,
|
|
57
|
+
lines: [`Restricted gear wants a name on it -- your Rating ${fake.rating} fake signs. Clean paper, clean price.`],
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
p.inventory.removeItem(fake.item.name);
|
|
61
|
+
const bump = Math.ceil(basePrice * SINLESS_PREMIUM);
|
|
62
|
+
return {
|
|
63
|
+
price: basePrice + bump,
|
|
64
|
+
lines: [`Restricted gear wants a name -- and the wand CHOKES on your Rating ${fake.rating} fake. BURNED, flagged in every database at once. The deal survives on cash and a shrug: +${bump} nuyen, no paper.`],
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
const bump = Math.ceil(basePrice * SINLESS_PREMIUM);
|
|
68
|
+
return {
|
|
69
|
+
price: basePrice + bump,
|
|
70
|
+
lines: [`Restricted gear wants a name on it and you have NONE -- the no-paper premium runs +${bump} nuyen. (A fake SIN signs this away: "catalog software".)`],
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=sin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sin.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/utilities/sin.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@maka/maka-cli",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.25.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"summary": "A command line tool for scaffolding Meteor 2.x applications using either React.",
|
|
6
6
|
"description": "A command line tool for scaffolding Meteor 2.x applications using React.",
|