@maka/maka-cli 5.153.0 → 5.154.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/reload.js +20 -4
- package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-dump.js +2 -2
- package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js +1 -1
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@maka/maka-cli",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.154.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"summary": "A command line tool for scaffolding Meteor 3.x applications using either React.",
|
|
6
6
|
"description": "A command line tool for scaffolding Meteor 3.x applications using React.",
|
|
@@ -2,6 +2,7 @@ import { Command } from './command.js';
|
|
|
2
2
|
import { Category } from '../types/shared/item-enum.js';
|
|
3
3
|
import { Item } from '../models/item.js';
|
|
4
4
|
import { billAction, encounterOf, phaseHint } from '../utilities/action-cost.js';
|
|
5
|
+
import { fuzzyPickName } from '../utilities/fuzzy-match.js';
|
|
5
6
|
/**
|
|
6
7
|
* Refills the equipped firearm's magazine by consuming one
|
|
7
8
|
* Ammunition-category item from the pack. Every shot spends a round --
|
|
@@ -20,7 +21,7 @@ import { billAction, encounterOf, phaseHint } from '../utilities/action-cost.js'
|
|
|
20
21
|
export class ReloadCommand extends Command {
|
|
21
22
|
static verb = 'reload';
|
|
22
23
|
static description = 'Reload your equipped firearm -- consumes one Ammunition item from your pack. In a fight it takes the whole Action Phase (Remove Clip + Insert Clip, SR5 p.163), or a Free + a Simple with a smartgun you\'re linked to (p.164).';
|
|
23
|
-
async execute(
|
|
24
|
+
async execute(args = []) {
|
|
24
25
|
const actor = this.actor;
|
|
25
26
|
if (this.scene.isHumanControlled(actor) && this.scene.isPlayerExchangeActive(actor.name)) {
|
|
26
27
|
return `No time -- the exchange is still resolving. Reload in the lull.`;
|
|
@@ -32,10 +33,25 @@ export class ReloadCommand extends Command {
|
|
|
32
33
|
if (weapon.ammo >= weapon.magazineCapacity) {
|
|
33
34
|
return `The ${weapon.name} is already fully loaded (${weapon.ammo}/${weapon.magazineCapacity}).`;
|
|
34
35
|
}
|
|
35
|
-
// NON-LETHAL STANCE: stun rounds first if you carry any (gel,
|
|
36
|
-
// stick-n-shock -- p.434); otherwise whatever is in the pack.
|
|
37
36
|
const boxes = actor.inventory.getAllItems().filter(i => i.category === Category.Ammunition);
|
|
38
|
-
|
|
37
|
+
// "reload APDS Rounds" names which box to slap home -- the arg was
|
|
38
|
+
// being silently discarded (bktSfejkhvmjFZ5EH), always loading the
|
|
39
|
+
// stance default instead of what the player actually asked for.
|
|
40
|
+
let ammo;
|
|
41
|
+
if (args.length > 0) {
|
|
42
|
+
const requested = args.join(' ');
|
|
43
|
+
const picked = fuzzyPickName(requested, boxes.map(b => b.name));
|
|
44
|
+
ammo = picked ? boxes.find(b => b.name === picked) : undefined;
|
|
45
|
+
if (!ammo) {
|
|
46
|
+
const present = boxes.map(b => b.name).join(', ') || 'none';
|
|
47
|
+
return `You're not carrying any ammunition named "${requested}" -- carrying: ${present}.`;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
// NON-LETHAL STANCE: stun rounds first if you carry any (gel,
|
|
52
|
+
// stick-n-shock -- p.434); otherwise whatever is in the pack.
|
|
53
|
+
ammo = (actor.autoStance === 'non-lethal' ? boxes.find(b => Item.isStunAmmo(b)) : undefined) ?? boxes[0];
|
|
54
|
+
}
|
|
39
55
|
if (!ammo) {
|
|
40
56
|
return `No ammunition in your pack -- the ${weapon.name} stays at ${weapon.ammo}/${weapon.magazineCapacity}. Find a spare clip.`;
|
|
41
57
|
}
|
|
@@ -130,7 +130,7 @@ function renderRow(item) {
|
|
|
130
130
|
// extra steps (user, 2026-08-30).
|
|
131
131
|
const liveReason = liveReasonOf(item.repro);
|
|
132
132
|
Log.plain(liveReason
|
|
133
|
-
? ` ${Log.colors.warn(`${liveReason} -- card: maka play
|
|
133
|
+
? ` ${Log.colors.warn(`${liveReason} -- card: maka play:backlog ${item._id}`)}`
|
|
134
134
|
: ` ${Log.colors.success(`bench: maka play --repro ${item._id}`)}${benchLockNote(item)}`);
|
|
135
135
|
}
|
|
136
136
|
}
|
|
@@ -286,7 +286,7 @@ export async function dumpBacklog(opts = {}) {
|
|
|
286
286
|
if (!found) {
|
|
287
287
|
if (!items.some(it => it._id.startsWith(id))) {
|
|
288
288
|
Log.error(`No item with id "${id}" on the board${filter ? ` in ${filter}` : ''}.`);
|
|
289
|
-
Log.info('`maka play
|
|
289
|
+
Log.info('`maka play:backlog` lists them -- every row carries its id.');
|
|
290
290
|
}
|
|
291
291
|
return;
|
|
292
292
|
}
|
|
@@ -333,7 +333,7 @@ const ShadowrunCommand = Command.create({
|
|
|
333
333
|
}
|
|
334
334
|
if (found.outcome === 'not-found') {
|
|
335
335
|
Log.error(`Nothing in your review queue matches "${reproTarget}".`);
|
|
336
|
-
Log.info('`maka play
|
|
336
|
+
Log.info('`maka play:backlog --filter in-review` lists them, with ids.');
|
|
337
337
|
return;
|
|
338
338
|
}
|
|
339
339
|
if (found.outcome === 'no-repro') {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@maka/maka-cli",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.154.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"summary": "A command line tool for scaffolding Meteor 3.x applications using either React.",
|
|
6
6
|
"description": "A command line tool for scaffolding Meteor 3.x applications using React.",
|