@maka/maka-cli 5.116.0 → 5.117.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.
Files changed (45) hide show
  1. package/bundle/typescript/package.json +1 -1
  2. package/bundle/typescript/src/commands/game/sideQuest/commands/download.js +22 -5
  3. package/bundle/typescript/src/commands/game/sideQuest/commands/download.js.map +1 -1
  4. package/bundle/typescript/src/commands/game/sideQuest/commands/enter-host.d.ts +6 -0
  5. package/bundle/typescript/src/commands/game/sideQuest/commands/enter-host.js +29 -20
  6. package/bundle/typescript/src/commands/game/sideQuest/commands/enter-host.js.map +1 -1
  7. package/bundle/typescript/src/commands/game/sideQuest/commands/go.d.ts +7 -7
  8. package/bundle/typescript/src/commands/game/sideQuest/commands/go.js +22 -47
  9. package/bundle/typescript/src/commands/game/sideQuest/commands/go.js.map +1 -1
  10. package/bundle/typescript/src/commands/game/sideQuest/commands/hack.js +30 -10
  11. package/bundle/typescript/src/commands/game/sideQuest/commands/hack.js.map +1 -1
  12. package/bundle/typescript/src/commands/game/sideQuest/commands/look.js +17 -5
  13. package/bundle/typescript/src/commands/game/sideQuest/commands/look.js.map +1 -1
  14. package/bundle/typescript/src/commands/game/sideQuest/commands/map.d.ts +6 -0
  15. package/bundle/typescript/src/commands/game/sideQuest/commands/map.js +21 -74
  16. package/bundle/typescript/src/commands/game/sideQuest/commands/map.js.map +1 -1
  17. package/bundle/typescript/src/commands/game/sideQuest/commands/mark.js +40 -17
  18. package/bundle/typescript/src/commands/game/sideQuest/commands/mark.js.map +1 -1
  19. package/bundle/typescript/src/commands/game/sideQuest/commands/move.js +1 -1
  20. package/bundle/typescript/src/commands/game/sideQuest/commands/move.js.map +1 -1
  21. package/bundle/typescript/src/commands/game/sideQuest/game.js +46 -18
  22. package/bundle/typescript/src/commands/game/sideQuest/game.js.map +1 -1
  23. package/bundle/typescript/src/commands/game/sideQuest/models/player.d.ts +38 -8
  24. package/bundle/typescript/src/commands/game/sideQuest/models/player.js +74 -7
  25. package/bundle/typescript/src/commands/game/sideQuest/models/player.js.map +1 -1
  26. package/bundle/typescript/src/commands/game/sideQuest/utilities/cloud-saves.js +40 -29
  27. package/bundle/typescript/src/commands/game/sideQuest/utilities/cloud-saves.js.map +1 -1
  28. package/bundle/typescript/src/commands/game/sideQuest/utilities/condition-report.d.ts +10 -0
  29. package/bundle/typescript/src/commands/game/sideQuest/utilities/condition-report.js +80 -47
  30. package/bundle/typescript/src/commands/game/sideQuest/utilities/condition-report.js.map +1 -1
  31. package/bundle/typescript/src/commands/game/sideQuest/utilities/grid-reach.d.ts +58 -0
  32. package/bundle/typescript/src/commands/game/sideQuest/utilities/grid-reach.js +106 -0
  33. package/bundle/typescript/src/commands/game/sideQuest/utilities/grid-reach.js.map +1 -0
  34. package/bundle/typescript/src/commands/game/sideQuest/utilities/grid-view.d.ts +10 -1
  35. package/bundle/typescript/src/commands/game/sideQuest/utilities/grid-view.js +53 -17
  36. package/bundle/typescript/src/commands/game/sideQuest/utilities/grid-view.js.map +1 -1
  37. package/bundle/typescript/src/commands/game/sideQuest/utilities/line-editor.d.ts +1 -1
  38. package/bundle/typescript/src/commands/game/sideQuest/utilities/line-editor.js +5 -5
  39. package/bundle/typescript/src/commands/game/sideQuest/utilities/line-editor.js.map +1 -1
  40. package/bundle/typescript/src/commands/game/sideQuest/utilities/logo-mark.d.ts +13 -0
  41. package/bundle/typescript/src/commands/game/sideQuest/utilities/logo-mark.js +47 -0
  42. package/bundle/typescript/src/commands/game/sideQuest/utilities/logo-mark.js.map +1 -1
  43. package/bundle/typescript/src/commands/game/sideQuest/utilities/persistence.js +11 -1
  44. package/bundle/typescript/src/commands/game/sideQuest/utilities/persistence.js.map +1 -1
  45. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@maka/maka-cli",
3
- "version": "5.116.0",
3
+ "version": "5.117.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.",
@@ -1,4 +1,5 @@
1
1
  import { Command } from './command.js';
2
+ import { roomsInReach } from '../utilities/grid-reach.js';
2
3
  import { hint } from '../utilities/hints.js';
3
4
  import { Category } from '../types/shared/item-enum.js';
4
5
  import { fuzzyPickName } from '../utilities/fuzzy-match.js';
@@ -60,6 +61,18 @@ export class DownloadCommand extends Command {
60
61
  const loose = reach === 'open'
61
62
  ? room.inventory.getAllItems().filter(i => i.plane === 'matrix')
62
63
  : [];
64
+ // FARTHER OUT (SR5 pp.217-218): data loose on the grid elsewhere in the
65
+ // district is a dim icon in reach -- open where no host guards it.
66
+ const far = [];
67
+ if (actor.plane === 'matrix' && !actor.insideHost) {
68
+ for (const { room: r, noise } of roomsInReach(this.rooms ?? this.scene.getRooms(), actor).slice(1)) {
69
+ if (fileReach(actor, r) !== 'open')
70
+ continue;
71
+ for (const item of r.inventory.getAllItems())
72
+ if (item.plane === 'matrix')
73
+ far.push({ item, room: r, noise });
74
+ }
75
+ }
63
76
  // YOUR sprites, not everyone's. `compiledBy` is not modelled on the
64
77
  // shell, so ownership is "it is in YOUR companion list" -- which is
65
78
  // the same thing the order/decompile verbs already mean by it.
@@ -71,7 +84,7 @@ export class DownloadCommand extends Command {
71
84
  carried.push({ npc: entry.npc, item });
72
85
  }
73
86
  }
74
- if (loose.length === 0 && carried.length === 0) {
87
+ if (loose.length === 0 && carried.length === 0 && far.length === 0) {
75
88
  return `Nothing to pull down -- no data on the grid here, and nothing your sprites are carrying.${reach === 'enter' ? hint(` (This room's files live INSIDE its host -- "enter" first.)`) : ''}`;
76
89
  }
77
90
  // Bare "download" is the LIST. A verb whose whole reason for existing
@@ -83,16 +96,19 @@ export class DownloadCommand extends Command {
83
96
  lines.push(` ${planeTintItemName(i, actor.plane)} -- loose on the grid here`);
84
97
  for (const c of carried)
85
98
  lines.push(` ${planeTintItemName(c.item, actor.plane)} -- held by ${c.npc.name}`);
99
+ for (const f of far)
100
+ lines.push(` ${planeTintItemName(f.item, actor.plane)} -- loose on the grid, ${f.room.name} (noise -${f.noise})`);
86
101
  lines.push(hint(`("download <file>" writes it to a chip you carry.)`));
87
102
  return lines.join('\n');
88
103
  }
89
- const names = [...loose.map(i => i.name), ...carried.map(c => c.item.name)];
104
+ const names = [...loose.map(i => i.name), ...carried.map(c => c.item.name), ...far.map(f => f.item.name)];
90
105
  const picked = fuzzyPickName(query, names);
91
106
  if (!picked) {
92
107
  return `No file called "${query}" within reach.${hint(` ("download" on its own lists what is.)`)}`;
93
108
  }
94
109
  const fromSprite = carried.find(c => c.item.name === picked);
95
- const item = fromSprite ? fromSprite.item : loose.find(i => i.name === picked);
110
+ const fromFar = !fromSprite && !loose.some(i => i.name === picked) ? far.find(f => f.item.name === picked) : undefined;
111
+ const item = fromSprite ? fromSprite.item : fromFar ? fromFar.item : loose.find(i => i.name === picked);
96
112
  // THE CONVERSION, identical to take.ts's. Same two fields, because a
97
113
  // file that came down by one verb and a file that came down by the
98
114
  // other must be the same object afterwards -- a chip you can `give`.
@@ -106,8 +122,9 @@ export class DownloadCommand extends Command {
106
122
  fromSprite.npc.inventory.removeItem(item.name);
107
123
  }
108
124
  else {
109
- room.inventory.removeItem(item.name);
110
- room.plainSightItems.delete(item.name.toLowerCase());
125
+ const source = fromFar ? fromFar.room : room;
126
+ source.inventory.removeItem(item.name);
127
+ source.plainSightItems.delete(item.name.toLowerCase());
111
128
  }
112
129
  item.plane = 'meat';
113
130
  item.category = Category.Datachip;
@@ -1 +1 @@
1
- {"version":3,"file":"download.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/download.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"download.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/download.ts"],"names":[],"mappings":"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"}
@@ -39,6 +39,12 @@ export declare class EnterHostCommand extends Command implements ICommand {
39
39
  * Naming a room enters that room's host instead, which matters because
40
40
  * a jacked-in persona jumps by name and may be standing anywhere.
41
41
  */
42
+ /**
43
+ * A host by name, FROM ANYWHERE (SR5 p.246: hosts are reached "without
44
+ * worrying about the distance involved"); bare "enter" means the one
45
+ * hanging directly over the persona's vicinity. There is no patch to
46
+ * stand on first any more -- see utilities/grid-reach.ts.
47
+ */
42
48
  private resolveHost;
43
49
  }
44
50
  /**
@@ -1,4 +1,5 @@
1
1
  import { Command } from './command.js';
2
+ import { resolveHostInReach, hostsInReach, gridVicinity, hostOver } from '../utilities/grid-reach.js';
2
3
  import { hint } from '../utilities/hints.js';
3
4
  import { hostLabel } from '../utilities/grid-names.js';
4
5
  /**
@@ -66,13 +67,16 @@ export class EnterHostCommand extends Command {
66
67
  ].join('\n');
67
68
  }
68
69
  actor.insideHost = target;
70
+ // The persona is IN the host now: the host's room is where its icons,
71
+ // ice and files live. The body stays in bodyRoom (planes.ts).
72
+ actor.currentLocation = target;
69
73
  actor.performAction('enters a host', `icon crossing into ${target.name}'s architecture`);
70
74
  this.logger.write(`${actor.name} entered the host at ${target.name}.`);
71
75
  this.scene.updateStatus();
72
76
  return [
73
77
  `{cyan-fg}You cross into ${hostLabel(target, { capital: false })}.{/cyan-fg}`,
74
- `{cyan-fg}The outside grid folds shut behind you -- the street's icons, the PANs, the personas out on the patch: all of it gone, not hidden. In here there is only what the host keeps.{/cyan-fg}`,
75
- hint(`"look" reads the space you're standing in now. "exit" puts you back on the grid you came from.`),
78
+ `{cyan-fg}The outside grid folds shut behind you -- the icons in reach, the PANs, the personas out on the grid: all of it gone, not hidden. In here there is only what the host keeps.{/cyan-fg}`,
79
+ hint(`"look" reads the space you're standing in now. "exit" puts you back on the grid.`),
76
80
  ].join('\n');
77
81
  }
78
82
  /**
@@ -81,27 +85,30 @@ export class EnterHostCommand extends Command {
81
85
  * Naming a room enters that room's host instead, which matters because
82
86
  * a jacked-in persona jumps by name and may be standing anywhere.
83
87
  */
88
+ /**
89
+ * A host by name, FROM ANYWHERE (SR5 p.246: hosts are reached "without
90
+ * worrying about the distance involved"); bare "enter" means the one
91
+ * hanging directly over the persona's vicinity. There is no patch to
92
+ * stand on first any more -- see utilities/grid-reach.ts.
93
+ */
84
94
  resolveHost(args, here) {
95
+ const rooms = this.rooms ?? this.scene.getRooms();
85
96
  const named = args.join(' ').trim();
97
+ const overhead = hostsInReach(rooms, this.actor);
98
+ const roster = overhead.length > 0 ? overhead.map(r => hostLabel(r, { capital: true })).join(', ') : 'none';
86
99
  if (!named) {
87
- if (!here.hasNode) {
88
- return `{cyan-fg}Thin grid here -- no host stands over ${here.name}.{/cyan-fg} ${hint(`"map" lights the ones that do.`)}`;
89
- }
90
- return here;
91
- }
92
- const room = Object.values(this.scene.getRooms()).find(r => r.name.toLowerCase() === named.toLowerCase());
93
- if (!room)
94
- return `No room called "${named}" on this grid.`;
95
- if (!room.hasNode)
96
- return `{cyan-fg}${room.name} has no host over it -- nothing to enter.{/cyan-fg}`;
97
- // Your persona has to be ON that patch of grid to cross into its
98
- // host. `go` is free out here (no distance on the grid), so this is
99
- // one move, not a wall -- but it keeps the boundary honest: you
100
- // enter a host from the grid it sits on.
101
- if (room !== here) {
102
- return `{cyan-fg}${hostLabel(room, { capital: true })} stands over ${room.name}, and you're on ${here.name}'s patch.{/cyan-fg} ${hint(`"go ${room.name}" first -- the grid has no distance.`)}`;
100
+ const over = hostOver(gridVicinity(this.actor)) ?? hostOver(here);
101
+ if (over)
102
+ return over;
103
+ return `{cyan-fg}Thin grid here -- no host stands over ${gridVicinity(this.actor).name}.{/cyan-fg} ${hint(`Overhead: ${roster} -- "enter <name>" crosses into any of them from here.`)}`;
103
104
  }
104
- return room;
105
+ const host = resolveHostInReach(rooms, this.actor, named);
106
+ if (host)
107
+ return host;
108
+ const street = Object.values(rooms).find(r => r.name.toLowerCase() === named.toLowerCase());
109
+ if (street)
110
+ return `{cyan-fg}${street.name} has no host over it -- nothing to enter. Overhead: ${roster}.{/cyan-fg}`;
111
+ return `No host called "${named}" overhead. ${hint(`Overhead: ${roster}.`)}`;
105
112
  }
106
113
  }
107
114
  /**
@@ -123,11 +130,13 @@ export class ExitHostCommand extends Command {
123
130
  }
124
131
  const host = actor.insideHost;
125
132
  actor.insideHost = undefined;
133
+ // Back on the grid -- which is wherever the body sits.
134
+ actor.currentLocation = actor.bodyRoom ?? actor.currentLocation;
126
135
  actor.performAction('exits a host', `icon surfacing out of ${host.name}'s architecture`);
127
136
  this.logger.write(`${actor.name} exited the host at ${host.name}.`);
128
137
  this.scene.updateStatus();
129
138
  return [
130
- `{cyan-fg}You step back out of ${hostLabel(host, { capital: false })} and onto ${actor.currentLocation.name}'s patch of grid.{/cyan-fg}`,
139
+ `{cyan-fg}You step back out of ${hostLabel(host, { capital: false })} and onto the grid -- your body still sits in ${actor.currentLocation.name}.{/cyan-fg}`,
131
140
  `{cyan-fg}The host seals behind you: one icon again, whatever you saw in there now on the other side of its wall.{/cyan-fg}`,
132
141
  ].join('\n');
133
142
  }
@@ -1 +1 @@
1
- {"version":3,"file":"enter-host.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/enter-host.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAY,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAGvD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,OAAO,gBAAiB,SAAQ,OAAO;IACjC,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC;IACtB,MAAM,CAAC,WAAW,GAAG,6PAA6P,CAAC;IAE7R,KAAK,CAAC,OAAO,CAAC,OAAiB,EAAE;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAEzB,IAAI,KAAK,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO,mFAAmF,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACvH,CAAC;QAED,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;YACrB,OAAO,yBAAyB,SAAS,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC,oCAAoC,CAAC,EAAE,CAAC;QACnI,CAAC;QAED,iEAAiE;QACjE,oEAAoE;QACpE,kEAAkE;QAClE,IAAI,KAAK,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YAChC,MAAM,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9C,OAAO,0BAA0B,EAAE,wJAAwJ,CAAC;QAC9L,CAAC;QAED,MAAM,IAAI,GAAG,KAAK,CAAC,eAAe,CAAC;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC5C,IAAI,OAAO,MAAM,KAAK,QAAQ;YAAE,OAAO,MAAM,CAAC;QAE9C,mEAAmE;QACnE,qEAAqE;QACrE,iEAAiE;QACjE,iEAAiE;QACjE,iCAAiC;QACjC,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtD,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;YAC/D,OAAO;gBACL,YAAY,SAAS,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,kFAAkF;gBAClI,IAAI,CAAC,gEAAgE,MAAM,CAAC,IAAI,6CAA6C,CAAC;aAC/H,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACf,CAAC;QAED,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC;QAC1B,KAAK,CAAC,aAAa,CAAC,eAAe,EAAE,sBAAsB,MAAM,CAAC,IAAI,iBAAiB,CAAC,CAAC;QACzF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,wBAAwB,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;QACvE,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;QAE1B,OAAO;YACL,2BAA2B,SAAS,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,aAAa;YAC7E,kMAAkM;YAClM,IAAI,CAAC,gGAAgG,CAAC;SACvG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;IAED;;;;;OAKG;IACK,WAAW,CAAC,IAAc,EAAE,IAAU;QAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAClB,OAAO,kDAAkD,IAAI,CAAC,IAAI,eAAe,IAAI,CAAC,gCAAgC,CAAC,EAAE,CAAC;YAC5H,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;QAC1G,IAAI,CAAC,IAAI;YAAE,OAAO,mBAAmB,KAAK,iBAAiB,CAAC;QAC5D,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,YAAY,IAAI,CAAC,IAAI,qDAAqD,CAAC;QACrG,iEAAiE;QACjE,oEAAoE;QACpE,gEAAgE;QAChE,yCAAyC;QACzC,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,OAAO,YAAY,SAAS,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,gBAAgB,IAAI,CAAC,IAAI,mBAAmB,IAAI,CAAC,IAAI,uBAAuB,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,sCAAsC,CAAC,EAAE,CAAC;QAClM,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;;AAGH;;;;GAIG;AACH,MAAM,OAAO,eAAgB,SAAQ,OAAO;IAChC,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC;IACrB,MAAM,CAAC,WAAW,GAAG,gNAAgN,CAAC;IAEhP,KAAK,CAAC,OAAO,CAAC,QAAkB,EAAE;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAEzB,IAAI,KAAK,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;YAClD,OAAO,6BAA6B,IAAI,CAAC,8CAA8C,CAAC,EAAE,CAAC;QAC7F,CAAC;QAED,IAAI,KAAK,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YAChC,MAAM,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9C,OAAO,qEAAqE,EAAE,6IAA6I,CAAC;QAC9N,CAAC;QAED,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC;QAC9B,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC;QAC7B,KAAK,CAAC,aAAa,CAAC,cAAc,EAAE,yBAAyB,IAAI,CAAC,IAAI,iBAAiB,CAAC,CAAC;QACzF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,uBAAuB,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACpE,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;QAE1B,OAAO;YACL,iCAAiC,SAAS,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,aAAa,KAAK,CAAC,eAAe,CAAC,IAAI,6BAA6B;YACxI,4HAA4H;SAC7H,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC"}
1
+ {"version":3,"file":"enter-host.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/enter-host.ts"],"names":[],"mappings":"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"}
@@ -77,12 +77,12 @@ export declare class GoCommand extends Command implements ICommand {
77
77
  */
78
78
  private checkHostBoundary;
79
79
  /**
80
- * The persona's real movement (RAW: "you think about going... and
81
- * boom, you go"): resolve the words as ANY room in the scene and be
82
- * there. No adjacency, no doors, no spots -- the only wall on the
83
- * grid is an air gap. A jump leaves no breadcrumb (cameFrom clears:
84
- * there's no "way you came" when you never crossed the ground
85
- * between) and lands at no meat spot.
80
+ * THE GRID HAS NO STREETS (user canon check 2026-09-02; SR5 pp.217-218,
81
+ * p.246): out here there are only icons. "go" on the grid crosses into
82
+ * a host -- by any name the game shows for it, from anywhere, hosts
83
+ * being reachable "without worrying about the distance involved" -- and
84
+ * nothing else. The persona never "arrives" at a street: its position
85
+ * on the grid is its body's room (utilities/grid-reach.ts).
86
86
  */
87
- private gridJump;
87
+ private gridGo;
88
88
  }
@@ -1,5 +1,6 @@
1
1
  import { Door } from '../models/door.js';
2
- import { hostConcealedFrom } from '../utilities/jackpoint.js';
2
+ import { EnterHostCommand } from './enter-host.js';
3
+ import { resolveHostInReach } from '../utilities/grid-reach.js';
3
4
  import { planeChangeHint, astralMovesLeft, astralCordWarning, astralCordParts } from '../utilities/planes.js';
4
5
  import { CombatExchange } from '../utilities/combat-exchange.js';
5
6
  import { rollPool, formatRoll } from '../utilities/dice.js';
@@ -47,7 +48,7 @@ export class GoCommand extends Command {
47
48
  // sprite rides your persona, and neither has feet in the meat.
48
49
  agent: (plane) => plane === 'matrix',
49
50
  sprite: (plane) => plane === 'matrix',
50
- ally: () => false,
51
+ ally: () => false
51
52
  };
52
53
  static verb = 'go';
53
54
  static description = 'Move in the specified direction ("go back" retraces your last move). Fleeing someone you just fought hands them one free parting shot. Jacked in, the grid sees no distance: "go <any room>" jumps your persona straight there ("map" lights the icons). Inside a host there is no distance to cross at all -- "exit" first.';
@@ -203,7 +204,9 @@ export class GoCommand extends Command {
203
204
  // and only when the typed word is a bare number, so a direction is
204
205
  // never reinterpreted. An out-of-range number falls through to the
205
206
  // ordinary "no such exit" refusal rather than silently picking one.
206
- if (/^\d{1,3}$/.test(direction)) {
207
+ // A number is an EXIT slot in the meat; on the grid it is a host slot
208
+ // from the numbered map (gridGo) -- exits are not places out there.
209
+ if (this.actor.plane !== 'matrix' && /^\d{1,3}$/.test(direction)) {
207
210
  const ways = [...this.actor.currentLocation.exits.keys()];
208
211
  const bySlot = fuzzyPickName(direction, ways, { index: true });
209
212
  if (bySlot)
@@ -241,7 +244,7 @@ export class GoCommand extends Command {
241
244
  // bites). Compass
242
245
  // directions keep working below as one-hop muscle memory.
243
246
  if (this.actor.plane === 'matrix' && !this.isValidDirection(direction)) {
244
- return this.gridJump(args.join(' '));
247
+ return await this.gridGo(args.join(' '));
245
248
  }
246
249
  if (!this.isValidDirection(direction)) {
247
250
  // A PLANE IS SOMEWHERE YOU GO, in the sense a player means it, so
@@ -643,50 +646,22 @@ export class GoCommand extends Command {
643
646
  return `You're INSIDE ${host.name}'s host -- its architecture is all there is from in here, and the outside grid is a wall away (p.246). "exit" puts you back on the grid, then go where you like.`;
644
647
  }
645
648
  /**
646
- * The persona's real movement (RAW: "you think about going... and
647
- * boom, you go"): resolve the words as ANY room in the scene and be
648
- * there. No adjacency, no doors, no spots -- the only wall on the
649
- * grid is an air gap. A jump leaves no breadcrumb (cameFrom clears:
650
- * there's no "way you came" when you never crossed the ground
651
- * between) and lands at no meat spot.
649
+ * THE GRID HAS NO STREETS (user canon check 2026-09-02; SR5 pp.217-218,
650
+ * p.246): out here there are only icons. "go" on the grid crosses into
651
+ * a host -- by any name the game shows for it, from anywhere, hosts
652
+ * being reachable "without worrying about the distance involved" -- and
653
+ * nothing else. The persona never "arrives" at a street: its position
654
+ * on the grid is its body's room (utilities/grid-reach.ts).
652
655
  */
653
- gridJump(query) {
654
- const current = this.actor.currentLocation;
655
- // CONCEALED HOSTS ARE NOT DESTINATIONS. 5.80.0 put the membership
656
- // check on the `jackpoint` verb ALONE, so `go JackPoint` walked a
657
- // non-member straight into the haven -- this resolver had never
658
- // heard of the invite. p.225-226 makes the icon "visible only if you
659
- // have access", which is a property of the place, not of one verb.
660
- //
661
- // Filtered here AND in map.ts's listing, which is one fix rather
662
- // than two: the numbering is shared. map prints "3." off its walk of
663
- // these same rooms and `go 3` resolves against this one, so hiding a
664
- // room from the list while leaving it in the resolver would shift
665
- // every index after it.
666
- const allRooms = Object.values(this.rooms ?? {})
667
- .filter(r => !hostConcealedFrom(r, this.actor));
668
- // "go 4" -- the index the grid map printed (commands/map.ts
669
- // gridMap walks the same Object.values(this.rooms), in this same
670
- // order). Same resolver as the typed name, one input richer.
671
- const picked = fuzzyPickName(query, allRooms.map(r => r.name), { index: true });
672
- const target = picked ? allRooms.find(r => r.name === picked) : undefined;
673
- if (!target) {
674
- this.logger.write(`GoCommand: ${this.actor.name} grid-jump found no room for "${query}".`);
675
- return `Nothing on the grid answers to "${query}".${hint(` ("map" lights every icon in reach -- "go <name>" is one thought away.)`)}`;
676
- }
677
- if (target === current) {
678
- // Same ruling as the arrival line above: out here you are not
679
- // looking THROUGH anything at a room, you are standing on it.
680
- return `Your persona is already there -- ${target.name} is the patch of grid you're standing on.`;
681
- }
682
- const gapBlock = this.checkHostBoundary(target);
683
- if (gapBlock)
684
- return gapBlock;
685
- this.actor.performAction('rides the grid', `from ${current.name} to ${target.name} -- no distance, just intent`);
686
- this.actor.cameFrom = undefined;
687
- this.actor.currentLocation = target;
688
- this.actor.atSpot = undefined;
689
- return this.finishMove('', current);
656
+ async gridGo(query) {
657
+ const host = resolveHostInReach(this.rooms ?? {}, this.actor, query);
658
+ if (host) {
659
+ return await new EnterHostCommand({
660
+ actor: this.actor, scene: this.scene, rooms: this.rooms, screen: this.screen, game: this.game,
661
+ }).execute([host.name]);
662
+ }
663
+ this.logger.write(`GoCommand: ${this.actor.name} on the grid asked for "${query}" -- no host by that name.`);
664
+ return `The grid has no streets -- out here there are only icons: the hosts hanging overhead, and the devices and personas in reach.${hint(` ("map" lights the hosts; "go <host>" or "enter <host>" crosses into one you hold a mark on, from anywhere; "look" lists what is in reach.)`)}`;
690
665
  }
691
666
  }
692
667
  //# sourceMappingURL=go.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"go.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/go.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"go.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/go.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAEhE,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAI9G,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe,EAAE,cAAc,EAAE,gBAAgB,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7L,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAG5D,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAY,MAAM,cAAc,CAAC;AAEjD,MAAM,OAAO,SAAU,SAAQ,OAAO;IACpC;;;;;;;;;;;;;;;;;;;;;OAqBG;IACK,MAAM,CAAU,QAAQ,GAAG;QACjC,qDAAqD;QACrD,MAAM,EAAE,CAAC,KAAa,EAAW,EAAE,CAAC,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,QAAQ;QAC1E,uCAAuC;QACvC,KAAK,EAAE,CAAC,KAAa,EAAW,EAAE,CAAC,KAAK,KAAK,MAAM;QACnD,mEAAmE;QACnE,+DAA+D;QAC/D,KAAK,EAAE,CAAC,KAAa,EAAW,EAAE,CAAC,KAAK,KAAK,QAAQ;QACrD,MAAM,EAAE,CAAC,KAAa,EAAW,EAAE,CAAC,KAAK,KAAK,QAAQ;QACtD,IAAI,EAAE,GAAY,EAAE,CAAC,KAAK;KAA8D,CAAC;IAEjF,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,MAAM,CAAC,WAAW,GAAG,8TAA8T,CAAC;IAE9V,KAAK,CAAC,OAAO,CAAC,IAAc;QAC1B,IAAI,CAAC,IAAI;YAAE,OAAO,EAAE,CAAC;QACrB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,+CAA+C,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACtG,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IAED;;;;;;;OAOG;IACK,KAAK,CAAC,kBAAkB;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,MAAM,QAAQ,GAAG,KAAK,CAAC,cAAc,CAAC;QACtC,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QAE3B,MAAM,SAAS,GAAG,MAAM,CAAC;QACzB,MAAM,OAAO,GACX,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,cAAc,GAAG,SAAS;YAC7C,CAAC,QAAQ,CAAC,eAAe,EAAE;YAC3B,QAAQ,CAAC,eAAe,KAAK,KAAK,CAAC,eAAe,CAAC;QAErD,qDAAqD;QACrD,KAAK,CAAC,cAAc,GAAG,SAAS,CAAC;QACjC,QAAQ,CAAC,cAAc,GAAG,SAAS,CAAC;QAEpC,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAE1B,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAEvE,iEAAiE;QACjE,gEAAgE;QAChE,sEAAsE;QACtE,iDAAiD;QACjD,6DAA6D;QAC7D,EAAE;QACF,oEAAoE;QACpE,oEAAoE;QACpE,sEAAsE;QACtE,mEAAmE;QACnE,oEAAoE;QACpE,gEAAgE;QAChE,sCAAsC;QACtC,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC;QACvM,oEAAoE;QACpE,+CAA+C;QAC/C,IAAI,MAAM,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC;YACrB,MAAM,QAAQ,CAAC,QAAQ,CACrB,CAAC,GAAG,KAAK,CAAC,IAAI,qCAAqC,QAAQ,CAAC,IAAI,2BAA2B,CAAC,EAC5F,CAAC,sBAAsB,UAAU,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAC/D,CAAC;YACF,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC,IAAI,0BAA0B,QAAQ,CAAC,IAAI,OAAO,KAAK,CAAC,eAAe,CAAC,IAAI,GAAG,CAAC,CAAC;YACnH,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACvD,MAAM,WAAW,GAAG,GAAG,KAAK,CAAC,IAAI,4CAA4C,QAAQ,CAAC,IAAI,wBAAwB,CAAC;QACnH,MAAM,KAAK,GAAG,CAAC,WAAW,EAAE,GAAG,MAAM,CAAC,KAAK,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAC7D,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,sBAAsB,UAAU,CAAC,MAAM,CAAC,oBAAoB,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QACxI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,QAAQ,CAAC,IAAI,aAAa,KAAK,CAAC,IAAI,iBAAiB,KAAK,CAAC,eAAe,CAAC,IAAI,GAAG,CAAC,CAAC;QAChH,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;QAE1B,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YACnB,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE;gBACzD,QAAQ,EAAE,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;oBACxC,CAAC,CAAC,uEAAuE;oBACzE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC;wBACnC,CAAC,CAAC,oBAAoB,KAAK,CAAC,IAAI,mDAAmD;wBACnF,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,0EAA0E,KAAK,CAAC,eAAe,CAAC,IAAI,GAAG;aAC3H,CAAC,CAAC;YACH,OAAO,QAAQ,CAAC,cAAc,CAAC,CAAC,GAAG,KAAK,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;QACvD,CAAC;QACD,IAAI,KAAK,CAAC,aAAa,EAAE,EAAE,CAAC;YAC1B,iEAAiE;YACjE,yDAAyD;YACzD,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC;gBAC5C,CAAC,CAAC,MAAM,QAAQ,CAAC,qBAAqB,CAAC,QAAQ,EAAE,KAAe,CAAC;gBACjE,CAAC,CAAC,MAAM,QAAQ,CAAC,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE;oBAC7C,KAAK,EAAE,KAAK;oBACZ,QAAQ,EAAE,GAAG,KAAK,CAAC,IAAI,oFAAoF,KAAK,CAAC,eAAe,CAAC,IAAI,GAAG;iBACzI,CAAC,CAAC;YACL,OAAO,QAAQ,CAAC,cAAc,CAAC,CAAC,GAAG,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QACpD,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,KAAK,CAAC,EAAE,CAAC,IAAc;QAC7B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,iDAAiD,CAAC,CAAC;YACvF,OAAO,mCAAmC,CAAC;QAC7C,CAAC;QAED,oEAAoE;QACpE,kEAAkE;QAClE,iEAAiE;QACjE,4DAA4D;QAC5D,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAClD,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,GAAG,UAAU,CAAC,IAAI,kFAAkF,CAAC;QAC9G,CAAC;QACD,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACjD,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,kBAAkB,QAAQ,CAAC,IAAI,yEAAyE,CAAC;QAClH,CAAC;QAED,uEAAuE;QACvE,wEAAwE;QACxE,iEAAiE;QACjE,0CAA0C;QAC1C,uEAAuE;QACvE,qEAAqE;QACrE,yDAAyD;QACzD,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YAC9H,qEAAqE;YACrE,qEAAqE;YACrE,iEAAiE;YACjE,qEAAqE;YACrE,iDAAiD;YACjD,iEAAiE;YACjE,8CAA8C;YAC9C,IAAI,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC7C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,IAAI,CAAC,KAAK,CAAC,IAAI,yCAAyC,CAAC,CAAC;gBAC1F,OAAO,qEAAqE,IAAI,CAAC,6CAA6C,CAAC,EAAE,CAAC;YACpI,CAAC;YACD,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;gBAC9B,OAAO,8DAA8D,CAAC;YACxE,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;YACjC,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC/D,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,IAAI,CAAC,KAAK,CAAC,IAAI,0DAA0D,CAAC,CAAC;oBAC3G,OAAO,qEAAqE,IAAI,CAAC,6CAA6C,CAAC,EAAE,CAAC;gBACpI,CAAC;gBACD,IAAI,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,EAAE,CAAC;oBACjC,OAAO,yCAAyC,CAAC;gBACnD,CAAC;gBACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,IAAI,CAAC,KAAK,CAAC,IAAI,mDAAmD,CAAC,CAAC;gBACpG,OAAO,MAAM,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;YAC7B,CAAC;oBAAS,CAAC;gBACT,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,KAAK,CAAC;YACpC,CAAC;QACH,CAAC;QAED,uEAAuE;QACvE,mEAAmE;QACnE,sEAAsE;QACtE,+DAA+D;QAC/D,mEAAmE;QACnE,sBAAsB;QACtB,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACpD,IAAI,WAAW;YAAE,OAAO,WAAW,CAAC;QAEpC,IAAI,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QAEtC,oEAAoE;QACpE,iEAAiE;QACjE,kEAAkE;QAClE,mEAAmE;QACnE,mEAAmE;QACnE,oEAAoE;QACpE,sEAAsE;QACtE,oEAAoE;QACpE,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,QAAQ,IAAI,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YACjE,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YAC1D,MAAM,MAAM,GAAG,aAAa,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAC/D,IAAI,MAAM;gBAAE,SAAS,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QAC/C,CAAC;QAED,mEAAmE;QACnE,oEAAoE;QACpE,kEAAkE;QAClE,iEAAiE;QACjE,oEAAoE;QACpE,yDAAyD;QACzD,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;YAClC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO,iDAAiD,CAAC;YAC3D,CAAC;YACD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,IAAiB,CAAC,CAAC;YAC7E,MAAM,SAAS,GAAG,QAAQ,YAAY,IAAI;gBACxC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,IAAI,KAAK,KAAK,CAAC,IAAI;gBACxE,CAAC,CAAC,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,KAAK,CAAC,IAAI,CAAC;YAC5D,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,OAAO,4CAA4C,CAAC;YACtD,CAAC;YACD,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC;QACzB,CAAC;QAED,8DAA8D;QAC9D,gEAAgE;QAChE,mEAAmE;QACnE,+DAA+D;QAC/D,iEAAiE;QACjE,kEAAkE;QAClE,kEAAkE;QAClE,mEAAmE;QACnE,kEAAkE;QAClE,kBAAkB;QAClB,0DAA0D;QAC1D,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC;YACvE,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3C,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC;YACtC,kEAAkE;YAClE,mEAAmE;YACnE,mEAAmE;YACnE,mEAAmE;YACnE,MAAM,KAAK,GAAG,eAAe,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC3D,IAAI,KAAK,EAAE,CAAC;gBACV,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,cAAc,SAAS,iCAAiC,CAAC,CAAC;gBAC9F,OAAO,KAAK,CAAC;YACf,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,oBAAoB,SAAS,sBAAsB,CAAC,CAAC;YACzF,OAAO,yBAAyB,CAAC;QACnC,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;QAE/C,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,2EAA2E,CAAC,CAAC;YACjH,OAAO,wCAAwC,CAAC;QAClD,CAAC;QAED,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAE5C,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,8CAA8C,SAAS,2CAA2C,CAAC,CAAC;YACxI,OAAO,wBAAwB,CAAC;QAClC,CAAC;QAED,+DAA+D;QAC/D,iEAAiE;QACjE,kEAAkE;QAClE,iEAAiE;QACjE,sDAAsD;QACtD,iEAAiE;QACjE,iEAAiE;QACjE,kEAAkE;QAClE,iEAAiE;QACjE,uDAAuD;QACvD,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;YAChC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;YAC/D,IAAI,IAAI,EAAE,CAAC;gBACT,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,+BAA+B,EAAE,GAAG,SAAS,SAAS,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;gBACnG,OAAO,gDAAgD,SAAS,aAAa,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,MAAM,sCAAsC,CAAC;YAChJ,CAAC;QACH,CAAC;QACD,gEAAgE;QAChE,kEAAkE;QAClE,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAClC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;YACvE,IAAI,IAAI,EAAE,CAAC;gBACT,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,8BAA8B,EAAE,GAAG,SAAS,SAAS,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;gBAClG,OAAO,yCAAyC,SAAS,aAAa,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,MAAM,uCAAuC,CAAC;YAC1I,CAAC;QACH,CAAC;QAED,IAAI,SAAS,GAAG,EAAE,CAAC;QACnB,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;YAChC,mEAAmE;YACnE,kEAAkE;YAClE,kEAAkE;YAClE,kEAAkE;YAClE,mEAAmE;YACnE,MAAM,OAAO,GAAG,cAAc,CAAC,WAAW,EAAE,SAAsB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAChF,IAAI,OAAO,EAAE,CAAC;gBACZ,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,uBAAuB,EAAE,GAAG,OAAO,CAAC,IAAI,cAAc,SAAS,UAAU,CAAC,CAAC;gBACpG,8DAA8D;gBAC9D,8DAA8D;gBAC9D,+DAA+D;gBAC/D,gEAAgE;gBAChE,0DAA0D;gBAC1D,sCAAsC;gBACtC,OAAO,GAAG,OAAO,CAAC,IAAI,sBAAsB,SAAS,6CAA6C;sBAC9F,wEAAwE,CAAC;YAC/E,CAAC;YACD,iEAAiE;YACjE,mEAAmE;YACnE,MAAM,OAAO,GAAG,YAAY,CAAC,WAAW,EAAE,SAAsB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAC9E,IAAI,OAAO;gBAAE,SAAS,GAAG,GAAG,OAAO,qBAAqB,SAAS;CACtE,CAAC;YACI,MAAM,QAAQ,GAAG,gBAAgB,CAAC,WAAW,EAAE,SAAsB,CAAC,CAAC;YACvE,IAAI,QAAQ,EAAE,CAAC;gBACb,OAAO,OAAO,QAAQ,6BAA6B,SAAS,yCAAyC,CAAC;YACxG,CAAC;YACD,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,SAAsB,CAAC,CAAC;YAC/D,IAAI,KAAK,CAAC,OAAO;gBAAE,OAAO,KAAK,CAAC,OAAO,CAAC;YACxC,IAAI,KAAK,CAAC,IAAI;gBAAE,SAAS,GAAG,GAAG,KAAK,CAAC,IAAI,IAAI,CAAC;QAChD,CAAC;QAED,4CAA4C;QAC5C,IAAI,IAAI,YAAY,IAAI,EAAE,CAAC;YACzB,8DAA8D;YAC9D,gEAAgE;YAChE,2DAA2D;YAC3D,+DAA+D;YAC/D,IAAI,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;gBACxD,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,6BAA6B,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;gBAC1E,gEAAgE;gBAChE,+DAA+D;gBAC/D,6DAA6D;gBAC7D,6DAA6D;gBAC7D,+DAA+D;gBAC/D,+DAA+D;gBAC/D,wDAAwD;gBACxD,OAAO,GAAG,SAAS,8BAA8B,SAAS,eAAe,eAAe,CAAC,WAAW,EAAE,SAAsB,EAAE,IAAI,CAAC,EAAE,CAAC;YACxI,CAAC;YAED,sEAAsE;YACtE,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;YAClD,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,uEAAuE,CAAC,CAAC;gBAC7G,OAAO,wEAAwE,CAAC;YAClF,CAAC;YAED,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YAC7C,IAAI,SAAS;gBAAE,OAAO,SAAS,CAAC;YAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;YACpD,IAAI,QAAQ;gBAAE,OAAO,QAAQ,CAAC;YAE9B,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,OAAO,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;YAC9F,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YACrG,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,UAAU,CAAC,CAAE,2BAA2B;YACrE,gEAAgE;YAChE,kEAAkE;YAClE,mEAAmE;YACnE,gEAAgE;YAChE,kCAAkC;YAClC,4DAA4D;YAC5D,4DAA4D;YAC5D,mBAAmB;YACnB,CAAC;gBACC,MAAM,OAAO,GAAG,SAAS,CAAC,UAAU,EAAE,SAAsB,CAAC,CAAC;gBAC9D,IAAI,OAAO,EAAE,CAAC;oBACZ,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;oBACjC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;gBACnC,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC;oBAC9B,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,YAAY,CAAC,UAAU,EAAE,SAAsB,CAAC,CAAC;gBACvE,CAAC;YACH,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,EAAE,GAAG,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACvH,CAAC;aAAM,CAAC;YACN,+BAA+B;YAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAE,+BAA+B;YACjF,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,+BAA+B,IAAI,cAAc,CAAC,CAAC;gBACvF,OAAO,mEAAmE,CAAC;YAC7E,CAAC;YACD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YAC3C,IAAI,SAAS;gBAAE,OAAO,SAAS,CAAC;YAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YAClD,IAAI,QAAQ;gBAAE,OAAO,QAAQ,CAAC;YAC9B,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YACrG,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,QAAQ,CAAC;YACtC,4DAA4D;YAC5D,4DAA4D;YAC5D,mBAAmB;YACnB,CAAC;gBACC,MAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,EAAE,SAAsB,CAAC,CAAC;gBAC5D,IAAI,OAAO,EAAE,CAAC;oBACZ,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;oBACjC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;gBACnC,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC;oBAC9B,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,YAAY,CAAC,QAAQ,EAAE,SAAsB,CAAC,CAAC;gBACrE,CAAC;YACH,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,EAAE,GAAG,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACrH,CAAC;QAED,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IACjD,CAAC;IAED;;;;;OAKG;IACK,UAAU,CAAC,SAAiB,EAAE,MAAa;QACjD,8DAA8D;QAC9D,mEAAmE;QACnE,mEAAmE;QACnE,oEAAoE;QACpE,oEAAoE;QACpE,OAAO;QACP,EAAE;QACF,kEAAkE;QAClE,qEAAqE;QACrE,oDAAoD;QACpD,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAElF,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,CAAC;QAC5B,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACrC,OAAO,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5D,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACxD,MAAM,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3C,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,OAAO,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;IAChD,CAAC;IAED;2DACuD;IAC/C,eAAe,CAAC,SAAiB,EAAE,MAAa;QAEtD,kEAAkE;QAClE,iEAAiE;QACjE,gEAAgE;QAChE,kEAAkE;QAClE,qEAAqE;QACrE,mEAAmE;QACnE,kEAAkE;QAClE,+DAA+D;QAC/D,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACvD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;YACxC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;gBACrC,gEAAgE;gBAChE,6DAA6D;gBAC7D,6DAA6D;gBAC7D,8DAA8D;gBAC9D,gEAAgE;gBAChE,4DAA4D;gBAC5D,6DAA6D;gBAC7D,4DAA4D;gBAC5D,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM;oBAAE,SAAS;gBAChC,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAC/D,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,GAAG,CAAC,eAAe,KAAK,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,eAAe,EAAE;oBAAE,SAAS;gBACtF,CAAC,CAAC,GAAG,CAAC,eAAe,GAAG,IAAI,CAAC;gBAC7B,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,yCAAyC;gBAC3E,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,IAAI,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,CAAC;YAC9E,CAAC;QACH,CAAC;QAED,oEAAoE;QACpE,oEAAoE;QACpE,gEAAgE;QAChE,qEAAqE;QACrE,kEAAkE;QAClE,gEAAgE;QAChE,+DAA+D;QAC/D,IAAI,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACvD,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAe,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACvE,CAAC;QAED,oEAAoE;QACpE,mEAAmE;QACnE,qEAAqE;QACrE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,mBAAmB,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,IAAI,cAAc,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;QAEnI,mEAAmE;QACnE,kEAAkE;QAClE,iEAAiE;QACjE,gEAAgE;QAChE,6DAA6D;QAC7D,wDAAwD;QACxD,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAClC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;YACxC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACpC,OAAO,GAAG,SAAS,SAAS,IAAI,CAAC,IAAI,sDAAsD,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC;QAC3I,CAAC;QAED,qEAAqE;QACrE,iEAAiE;QACjE,+DAA+D;QAC/D,4DAA4D;QAC5D,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;QAExC,+DAA+D;QAC/D,gEAAgE;QAChE,8DAA8D;QAC9D,qCAAqC;QACrC,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;eACtD,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC;eAC3C,WAAW,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,IAAI,CAAC;eACnC,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAChD,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,oCAAoC,CAAC,CAAC;YAC3D,OAAO,GAAG,yGAAyG,CAAC;QACtH,CAAC;QAED,kEAAkE;QAClE,8DAA8D;QAC9D,mEAAmE;QACnE,gEAAgE;QAChE,+DAA+D;QAC/D,qEAAqE;QACrE,0DAA0D;QAC1D,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,CAAC;YACvD,8DAA8D;YAC9D,iEAAiE;YACjE,kEAAkE;YAClE,gEAAgE;YAChE,+DAA+D;YAC/D,+DAA+D;YAC/D,EAAE;YACF,4DAA4D;YAC5D,kEAAkE;YAClE,6CAA6C;YAC7C,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,MAAM,CAAC;YACpE,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,cAAc,EAAE,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;QAC3E,CAAC;QAED,8DAA8D;QAC9D,mEAAmE;QACnE,qEAAqE;QACrE,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,CAAC;YACvD,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;gBAC3D,IAAI,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC;oBAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACpE,CAAC,CAAC,CAAC;YACH,IAAI,KAAK;gBAAE,OAAO,IAAI,OAAO,KAAK,EAAE,CAAC;QACvC,CAAC;QAED,qEAAqE;QACrE,mEAAmE;QACnE,+DAA+D;QAC/D,wCAAwC;QACxC,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,CAAC;YACvD,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAC1D,IAAI,IAAI;gBAAE,OAAO,IAAI,OAAO,IAAI,EAAE,CAAC;YAEnC,6DAA6D;YAC7D,6DAA6D;YAC7D,iDAAiD;YACjD,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAC1D,IAAI,IAAI;gBAAE,OAAO,IAAI,OAAO,IAAI,EAAE,CAAC;QACrC,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACzC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACpC,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtB,6DAA6D;gBAC7D,6DAA6D;gBAC7D,mDAAmD;gBACnD,OAAO,GAAG,SAAS,GAAG,eAAe,CAAC,IAAI,EAAE,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,iCAAiC,CAAC,GAAG,OAAO,EAAE,CAAC;YACxJ,CAAC;YACD,OAAO,SAAS,GAAG,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC;QACnF,CAAC;QACD,OAAO,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;IACvD,CAAC;IAED;;;;OAIG;IACK,YAAY,CAAC,IAAU;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE;aAC5B,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;aAC1D,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACpB,MAAM,KAAK,GAAG,CAAC,SAAS,IAAI,CAAC,IAAI,SAAS,CAAC,CAAC;QAC5C,6DAA6D;QAC7D,mEAAmE;QACnE,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;YACtB,KAAK,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,KAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,IAAI,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/F,CAAC;aAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3C,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,oEAAoE;IAC5D,MAAM,CAAC,QAAQ,CAAC,SAAiB;QACvC,MAAM,GAAG,GAA2B,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAC3H,OAAO,GAAG,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC;IACrC,CAAC;IAED;;;8CAG0C;IAClC,SAAS,CAAC,MAAY;QAC5B,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YACnD,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC;gBACvC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;gBACtD,IAAI,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC7C,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,8EAA8E,EAAE,SAAS,CAAC,CAAC;gBACtH,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,uBAAuB,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YAC/D,OAAO,gBAAgB,MAAM,CAAC,IAAI,gGAAgG,CAAC;QACrI,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACK,iBAAiB,CAAC,MAAY;QACpC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;QACnC,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,MAAM;YAAE,OAAO,IAAI,CAAC;QAC1C,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,iCAAiC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACvE,OAAO,iBAAiB,IAAI,CAAC,IAAI,kKAAkK,CAAC;IACtM,CAAC;IAED;;;;;;;OAOG;IACK,KAAK,CAAC,MAAM,CAAC,KAAa;QAChC,MAAM,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrE,IAAI,IAAI,EAAE,CAAC;YACT,OAAO,MAAM,IAAI,gBAAgB,CAAC;gBAChC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI;aAC9F,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1B,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,IAAI,CAAC,KAAK,CAAC,IAAI,2BAA2B,KAAK,4BAA4B,CAAC,CAAC;QAC7G,OAAO,+HAA+H,IAAI,CAAC,6IAA6I,CAAC,EAAE,CAAC;IAC9R,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { BypassCommand } from './bypass-command.js';
2
+ import { resolveHostInReach, hostsInReach, hostOver, gridVicinity, roomsInReach, noiseNote } from '../utilities/grid-reach.js';
2
3
  import { accrueOverwatch } from '../utilities/overwatch.js';
3
4
  import { hint } from '../utilities/hints.js';
4
5
  import { rollPool, formatRoll } from '../utilities/dice.js';
@@ -82,9 +83,19 @@ export class HackCommand extends BypassCommand {
82
83
  // sim mode like ice hits), not the meat-world instant-fatal of
83
84
  // hardwiring into a puzzle terminal.
84
85
  if (this.actor.plane === 'matrix') {
85
- const room = this.actor.currentLocation;
86
- if (!room.hasNode) {
87
- return `Thin grid out here -- no host node to crack. Find a room whose systems actually live on the Matrix.`;
86
+ // THE HOST, BY NAME, FROM ANYWHERE (SR5 p.246); bare "hack" means the
87
+ // one hanging over the persona's vicinity. No patch to stand on first.
88
+ const gridRooms = this.rooms ?? this.scene.getRooms();
89
+ const named = rest.join(' ').trim();
90
+ const room = named
91
+ ? resolveHostInReach(gridRooms, this.actor, named)
92
+ : (this.actor.insideHost ?? hostOver(gridVicinity(this.actor)) ?? hostOver(this.actor.currentLocation));
93
+ if (!room) {
94
+ const overhead = hostsInReach(gridRooms, this.actor).map(h => hostLabel(h, { capital: true }));
95
+ const roster = overhead.length > 0 ? ` Overhead: ${overhead.join(', ')} -- "hack <name>" cracks one from here.` : '';
96
+ return named
97
+ ? `Nothing on the grid answers to "${named}" -- no host by that name, no PAN, no camera.${roster}`
98
+ : `Thin grid out here -- no host node hangs over ${gridVicinity(this.actor).name}.${roster}`;
88
99
  }
89
100
  // HACKING A HOST FROM OUTSIDE IT IS DELIBERATELY STILL ALLOWED, and
90
101
  // this comment is the label on that decision rather than a
@@ -352,11 +363,20 @@ export class HackCommand extends BypassCommand {
352
363
  // predicate as mark.ts's PAN resolution -- these two are one
353
364
  // question asked by two verbs, and the wall has to mean the same
354
365
  // thing to both or a player learns it from whichever they typed.
355
- const bodies = this.scene.getActorsInRoom(room)
356
- .filter(a => a !== actor && a.plane === 'meat' && !a.isIncapacitated());
357
- const candidates = bodies.filter(a => sameHostSide(actor, a));
358
- const picked = fuzzyPickName(args.join(' '), candidates.map(a => a.name));
359
- const target = picked ? candidates.find(a => a.name === picked) : undefined;
366
+ // PANs in reach: the vicinity first, then the rest of the district at
367
+ // the noise the distance costs (SR5 p.230). Inside a host, only in here.
368
+ const reach = (actor.plane === 'matrix' && !actor.insideHost)
369
+ ? roomsInReach(this.rooms ?? this.scene.getRooms(), actor)
370
+ : [{ room, noise: 0 }];
371
+ const bodiesAll = reach.flatMap(({ room: r, noise: n }) => this.scene.getActorsInRoom(r)
372
+ .filter(a => a !== actor && a.plane === 'meat' && !a.isIncapacitated())
373
+ .map(a => ({ a, noise: n })));
374
+ const bodies = bodiesAll.map(x => x.a);
375
+ const candidates = bodiesAll.filter(x => sameHostSide(actor, x.a));
376
+ const picked = fuzzyPickName(args.join(' '), candidates.map(x => x.a.name));
377
+ const hit = picked ? candidates.find(x => x.a.name === picked) : undefined;
378
+ const target = hit?.a;
379
+ const noise = hit?.noise ?? 0;
360
380
  if (!target) {
361
381
  // A NAME BEHIND THE WALL IS A REFUSAL, NOT A MISS. Returning null
362
382
  // here would fall through to the barrier/host path and answer a
@@ -406,7 +426,7 @@ export class HackCommand extends BypassCommand {
406
426
  // costs them -2 here (canon p.235-236) -- the mirror of the +2 the
407
427
  // defender's silence buys in getPanDefensePool. Two silent runners
408
428
  // fencing pay their own price each.
409
- const attack = rollPool(Math.max(0, actor.logic + panSkill + actor.qualityBonus('hacking') + markDice + actor.matrixActionPenalty + actor.woundModifier), limit);
429
+ const attack = rollPool(Math.max(0, actor.logic + panSkill + actor.qualityBonus('hacking') + markDice + actor.matrixActionPenalty + actor.woundModifier - noise), limit);
410
430
  // Intuition + Firewall against a sleaze, Willpower + Firewall
411
431
  // against a smash (p.240 / p.238), and no limit on either.
412
432
  const defense = rollPool(target.getPanDefensePool(mode === 'attack' ? 'attack' : 'sleaze'));
@@ -415,7 +435,7 @@ export class HackCommand extends BypassCommand {
415
435
  // Dice anatomy to the Mechanics ticker (readability pass) --
416
436
  // player-gated like every roll site: an NPC's probe isn't your dice.
417
437
  if (this.scene.isHumanControlled(actor)) {
418
- this.logger.meta(`PAN intrusion (${mode === 'attack' ? 'brute force' : 'sleaze'}${markDice > 0 ? `, +${markDice} marks` : ''}): ${formatRoll(attack)}`);
438
+ this.logger.meta(`PAN intrusion (${mode === 'attack' ? 'brute force' : 'sleaze'}${markDice > 0 ? `, +${markDice} marks` : ''})${noiseNote(noise)}: ${formatRoll(attack)}`);
419
439
  this.logger.meta(` their firewall: ${formatRoll(defense)}`);
420
440
  }
421
441
  // GOD counts the defender's hits as evidence (canon p.231-232) --