@maka/maka-cli 5.217.0 → 5.219.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/give.js +29 -0
- package/bundle/typescript/src/commands/game/sideQuest/engine-version.js +43 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/npc-authorization.js +20 -1
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@maka/maka-cli",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.219.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.",
|
|
@@ -91,6 +91,35 @@ export class GiveCommand extends Command {
|
|
|
91
91
|
this.logger.write(`${this.actor.name} tried to give item "${itemOrAmount}" but does not have it.`);
|
|
92
92
|
return `You don’t have "${itemOrAmount}".`;
|
|
93
93
|
}
|
|
94
|
+
// A DELIVERED OBJECTIVE DOES NOT COME BACK (qk7TtQqyaT4CaWNka, Maka:
|
|
95
|
+
// "when I returned from a job, after giving Ms. Halvorsen the Skim
|
|
96
|
+
// Ledger Archive -- I kept a copy, is that by design?").
|
|
97
|
+
//
|
|
98
|
+
// It was not a copy, and nothing duplicated anything. The transcript
|
|
99
|
+
// (session vi2bvgA7XhHZRjwYL) has Ted hand the chip over, the job
|
|
100
|
+
// complete -- "The ledger's yanked clean ... Karma earned: 4" -- a
|
|
101
|
+
// beat where "Ms. Halvorsen's hand shoots out and closes around the
|
|
102
|
+
// datachip", and then, one line later:
|
|
103
|
+
//
|
|
104
|
+
// Ms. Halvorsen give Skim Ledger Archive to Ted
|
|
105
|
+
//
|
|
106
|
+
// Her AI issued a `give` and handed the paydata straight back, so the
|
|
107
|
+
// runner walked out of a finished job still holding the thing he had
|
|
108
|
+
// just been paid for. The brief's own example of a matching command
|
|
109
|
+
// is `give <item> to <name>`, which is exactly the shape a model
|
|
110
|
+
// echoes when it has just been handed something.
|
|
111
|
+
//
|
|
112
|
+
// So the engine settles it rather than the prompt. Once the win
|
|
113
|
+
// condition is SATISFIED, the objective item is spent: it is the
|
|
114
|
+
// client's now, and no hand -- theirs, a bystander's, or the
|
|
115
|
+
// runner's -- passes it on. Scoped hard to the completed objective:
|
|
116
|
+
// an ordinary chip, an unfinished job, and the reward item all move
|
|
117
|
+
// exactly as they did.
|
|
118
|
+
const won = this.scene.getWinCondition?.();
|
|
119
|
+
if (this.scene.isCompleted?.() && won?.item.toLowerCase() === item.name.toLowerCase()) {
|
|
120
|
+
this.logger.write(`${this.actor.name} tried to pass on the delivered objective "${item.name}"; refused (job already settled).`);
|
|
121
|
+
return `The ${item.name} is already delivered and paid for -- it belongs to the client now, and nobody is handing it back.`;
|
|
122
|
+
}
|
|
94
123
|
if (servedFromShelf) {
|
|
95
124
|
room.inventory.removeItem(item.name);
|
|
96
125
|
try {
|
|
@@ -1163,5 +1163,47 @@
|
|
|
1163
1163
|
// and a room with a node has exactly one; the tree says the same
|
|
1164
1164
|
// thing in a shape that can be read. A watched room with NO node
|
|
1165
1165
|
// still names no master, pinned as a test.
|
|
1166
|
-
|
|
1166
|
+
// 1.77.0 (2026-09-16): A DELIVERED OBJECTIVE DOES NOT COME BACK
|
|
1167
|
+
// (qk7TtQqyaT4CaWNka, Maka: "when I returned from a job, after giving
|
|
1168
|
+
// Ms. Halvorsen the Skim Ledger Archive -- I kept a copy, is that by
|
|
1169
|
+
// design?"). It was not a copy and nothing duplicated anything -- the
|
|
1170
|
+
// vetting could not find it in the transcript because it was not
|
|
1171
|
+
// looking for a `give`. Session vi2bvgA7XhHZRjwYL, in order: Ted hands
|
|
1172
|
+
// the chip over, the job completes ("The ledger's yanked clean ...
|
|
1173
|
+
// Karma earned: 4"), a beat where "Ms. Halvorsen's hand shoots out and
|
|
1174
|
+
// closes around the datachip" -- and then, one line later:
|
|
1175
|
+
// Ms. Halvorsen give Skim Ledger Archive to Ted
|
|
1176
|
+
// Her AI issued a `give` and handed the paydata straight back, so the
|
|
1177
|
+
// runner walked out of a finished job still holding what he had just
|
|
1178
|
+
// been paid for. The brief's own example of a matching command is
|
|
1179
|
+
// `give <item> to <name>`, which is the shape a model echoes when it
|
|
1180
|
+
// has just been handed something -- so the ENGINE settles it rather
|
|
1181
|
+
// than the prompt. Once the win condition is satisfied the objective
|
|
1182
|
+
// item is spent: it belongs to the client, and no hand passes it on.
|
|
1183
|
+
// Scoped hard to the COMPLETED objective. An ordinary chip, the reward
|
|
1184
|
+
// item, and above all the delivery itself keep moving -- a gate that
|
|
1185
|
+
// read the win condition without reading completion would make the job
|
|
1186
|
+
// unwinnable, which is a worse bug than the one being fixed, and that
|
|
1187
|
+
// is the load-bearing test in the file.
|
|
1188
|
+
// 1.78.0 (2026-09-16): CYBERCOMBAT IS NOT LAYING HANDS ON ANYBODY
|
|
1189
|
+
// (27dAZvLuoaW4PjF6s, Maka, the whole report verbatim):
|
|
1190
|
+
// "[order] Agent (Sony CIY-720): attack patrol ic ,
|
|
1191
|
+
// You can't lay hands on Patrol IC: they are not present in their
|
|
1192
|
+
// body, and there is nobody home to resist you."
|
|
1193
|
+
// The absent-body gate in npc-authorization.ts exists for a good
|
|
1194
|
+
// reason -- somebody grabbing a jacked-in runner's slumped shell is
|
|
1195
|
+
// reaching for a person who is not home -- but it asked the question
|
|
1196
|
+
// of every AI-driven actor on every contact verb. An Agent is a
|
|
1197
|
+
// matrix-plane construct (companions.ts builds it with plane:
|
|
1198
|
+
// 'matrix') and Patrol IC has no body to be absent FROM, so a rule
|
|
1199
|
+
// about hands fired on a program attacking a program and refused the
|
|
1200
|
+
// most ordinary order anyone gives an agent. Attacking an icon is
|
|
1201
|
+
// Cybercombat (Data Spike, p.239): two icons, no meat, nobody's hands
|
|
1202
|
+
// anywhere near it. The question is now asked only of an actor
|
|
1203
|
+
// standing in the meat; canPerceive, which is the rule that actually
|
|
1204
|
+
// knows about planes, still decides whether the two can reach each
|
|
1205
|
+
// other at all. The meat case is pinned in the same test file, because
|
|
1206
|
+
// a fix that traded this report for the older one it was built from
|
|
1207
|
+
// would be no fix.
|
|
1208
|
+
export const ENGINE_VERSION = '1.78.0';
|
|
1167
1209
|
//# sourceMappingURL=engine-version.js.map
|
|
@@ -66,7 +66,26 @@ export function authorizeNpcAction(scene, actor, verb, args) {
|
|
|
66
66
|
// which is lying right there in the room and is what the act was
|
|
67
67
|
// reaching for. For a hands-on verb the absent-body reason is the one
|
|
68
68
|
// that tells the fiction something it can use.
|
|
69
|
-
|
|
69
|
+
// ...AND IT IS A RULE ABOUT HANDS, SO IT ONLY BINDS A BODY
|
|
70
|
+
// (27dAZvLuoaW4PjF6s, Maka -- the whole report, verbatim):
|
|
71
|
+
//
|
|
72
|
+
// "[order] Agent (Sony CIY-720): attack patrol ic ,
|
|
73
|
+
// You can't lay hands on Patrol IC: they are not present in their
|
|
74
|
+
// body, and there is nobody home to resist you."
|
|
75
|
+
//
|
|
76
|
+
// An Agent is a matrix-plane construct (commands/companions.ts builds
|
|
77
|
+
// it with plane: 'matrix') and Patrol IC has no body to be absent
|
|
78
|
+
// from -- so a gate written for "somebody grabbed a jacked-in
|
|
79
|
+
// runner's slumped shell" fired on a program attacking a program,
|
|
80
|
+
// and refused the single most ordinary order anyone gives an agent.
|
|
81
|
+
//
|
|
82
|
+
// Attacking an icon is CYBERCOMBAT (Data Spike, p.239): two icons,
|
|
83
|
+
// no meat, nobody's hands anywhere near it. So the absent-body
|
|
84
|
+
// question is only asked of an actor standing in the meat. Everything
|
|
85
|
+
// else is still gated -- canPerceive below decides whether these two
|
|
86
|
+
// can reach each other at all, and it is the rule that actually knows
|
|
87
|
+
// about planes.
|
|
88
|
+
if (contact && actor.plane === 'meat' && !isPresentInBody(target)) {
|
|
70
89
|
return {
|
|
71
90
|
allowed: false,
|
|
72
91
|
reason: `You can't lay hands on ${target.name}: they are not present in their body, and there is nobody home to resist you. Describe what you see, or wait for them to come back.`,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@maka/maka-cli",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.219.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.",
|