@maka/maka-cli 5.82.1 → 5.83.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 (59) hide show
  1. package/bundle/typescript/package.json +2 -2
  2. package/bundle/typescript/src/commands/game/sideQuest/commands/enter-host.d.ts +53 -0
  3. package/bundle/typescript/src/commands/game/sideQuest/commands/enter-host.js +135 -0
  4. package/bundle/typescript/src/commands/game/sideQuest/commands/enter-host.js.map +1 -0
  5. package/bundle/typescript/src/commands/game/sideQuest/commands/go.d.ts +15 -9
  6. package/bundle/typescript/src/commands/game/sideQuest/commands/go.js +33 -18
  7. package/bundle/typescript/src/commands/game/sideQuest/commands/go.js.map +1 -1
  8. package/bundle/typescript/src/commands/game/sideQuest/commands/hack.js +39 -9
  9. package/bundle/typescript/src/commands/game/sideQuest/commands/hack.js.map +1 -1
  10. package/bundle/typescript/src/commands/game/sideQuest/commands/look.d.ts +1 -1
  11. package/bundle/typescript/src/commands/game/sideQuest/commands/look.js +26 -11
  12. package/bundle/typescript/src/commands/game/sideQuest/commands/look.js.map +1 -1
  13. package/bundle/typescript/src/commands/game/sideQuest/commands/map.d.ts +4 -5
  14. package/bundle/typescript/src/commands/game/sideQuest/commands/map.js +14 -11
  15. package/bundle/typescript/src/commands/game/sideQuest/commands/map.js.map +1 -1
  16. package/bundle/typescript/src/commands/game/sideQuest/commands/mark.js +5 -3
  17. package/bundle/typescript/src/commands/game/sideQuest/commands/mark.js.map +1 -1
  18. package/bundle/typescript/src/commands/game/sideQuest/commands/search.js +28 -13
  19. package/bundle/typescript/src/commands/game/sideQuest/commands/search.js.map +1 -1
  20. package/bundle/typescript/src/commands/game/sideQuest/commands/take.js +85 -18
  21. package/bundle/typescript/src/commands/game/sideQuest/commands/take.js.map +1 -1
  22. package/bundle/typescript/src/commands/game/sideQuest/commands/tap.d.ts +8 -5
  23. package/bundle/typescript/src/commands/game/sideQuest/commands/tap.js +8 -8
  24. package/bundle/typescript/src/commands/game/sideQuest/commands/tap.js.map +1 -1
  25. package/bundle/typescript/src/commands/game/sideQuest/commands/thread.js +69 -16
  26. package/bundle/typescript/src/commands/game/sideQuest/commands/thread.js.map +1 -1
  27. package/bundle/typescript/src/commands/game/sideQuest/engine-version.d.ts +1 -1
  28. package/bundle/typescript/src/commands/game/sideQuest/engine-version.js +23 -1
  29. package/bundle/typescript/src/commands/game/sideQuest/engine-version.js.map +1 -1
  30. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.js +12 -8
  31. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.js.map +1 -1
  32. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-factory.d.ts +25 -1
  33. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-factory.js +51 -4
  34. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-factory.js.map +1 -1
  35. package/bundle/typescript/src/commands/game/sideQuest/game.d.ts +18 -0
  36. package/bundle/typescript/src/commands/game/sideQuest/game.js +63 -7
  37. package/bundle/typescript/src/commands/game/sideQuest/game.js.map +1 -1
  38. package/bundle/typescript/src/commands/game/sideQuest/models/player.d.ts +22 -0
  39. package/bundle/typescript/src/commands/game/sideQuest/models/player.js +62 -3
  40. package/bundle/typescript/src/commands/game/sideQuest/models/player.js.map +1 -1
  41. package/bundle/typescript/src/commands/game/sideQuest/models/room.d.ts +32 -1
  42. package/bundle/typescript/src/commands/game/sideQuest/models/room.js +48 -3
  43. package/bundle/typescript/src/commands/game/sideQuest/models/room.js.map +1 -1
  44. package/bundle/typescript/src/commands/game/sideQuest/utilities/ar.d.ts +1 -1
  45. package/bundle/typescript/src/commands/game/sideQuest/utilities/ar.js +8 -5
  46. package/bundle/typescript/src/commands/game/sideQuest/utilities/ar.js.map +1 -1
  47. package/bundle/typescript/src/commands/game/sideQuest/utilities/grid-view.d.ts +3 -2
  48. package/bundle/typescript/src/commands/game/sideQuest/utilities/grid-view.js +112 -15
  49. package/bundle/typescript/src/commands/game/sideQuest/utilities/grid-view.js.map +1 -1
  50. package/bundle/typescript/src/commands/game/sideQuest/utilities/ic.d.ts +8 -3
  51. package/bundle/typescript/src/commands/game/sideQuest/utilities/ic.js +70 -8
  52. package/bundle/typescript/src/commands/game/sideQuest/utilities/ic.js.map +1 -1
  53. package/bundle/typescript/src/commands/game/sideQuest/utilities/limits.d.ts +50 -0
  54. package/bundle/typescript/src/commands/game/sideQuest/utilities/limits.js +44 -0
  55. package/bundle/typescript/src/commands/game/sideQuest/utilities/limits.js.map +1 -0
  56. package/bundle/typescript/src/commands/game/sideQuest/utilities/planes.d.ts +76 -8
  57. package/bundle/typescript/src/commands/game/sideQuest/utilities/planes.js +87 -14
  58. package/bundle/typescript/src/commands/game/sideQuest/utilities/planes.js.map +1 -1
  59. package/package.json +2 -2
@@ -56,6 +56,7 @@ import { InventoryCommand } from './commands/inv.js';
56
56
  import { EquipmentCommand } from './commands/equipment.js';
57
57
  import { MapCommand } from './commands/map.js';
58
58
  import { SilentCommand } from './commands/silent.js';
59
+ import { EnterHostCommand, ExitHostCommand } from './commands/enter-host.js';
59
60
  import { RestCommand } from './commands/rest.js';
60
61
  import { ReloadCommand } from './commands/reload.js';
61
62
  import { SubdueCommand } from './commands/subdue.js';
@@ -2125,6 +2126,20 @@ ${client.name} won't be remembering anything. Dead Johnsons pay nothing -- and t
2125
2126
  CommandFactory.registerCommand('map', MapCommand);
2126
2127
  CommandFactory.registerCommand('exits', MapCommand);
2127
2128
  CommandFactory.registerCommand('silent', SilentCommand);
2129
+ // ENTER/EXIT HOST (p.239). The boundary between the grid and a host's
2130
+ // own space -- see commands/enter-host.ts for why it did not exist
2131
+ // until now.
2132
+ //
2133
+ // "exit" IS NOT REGISTERED HERE, ON PURPOSE. It is already the
2134
+ // quit-the-game verb, and the quit branch in handleInput runs BEFORE
2135
+ // CommandFactory dispatch -- so a command registered under 'exit'
2136
+ // would never once execute. Tests calling the class directly would
2137
+ // still pass, which is exactly the shape of defect kwR8SYTimMu2mgQq5
2138
+ // (tests exercising code the game never runs). Instead the quit
2139
+ // branch ROUTES a bare "exit" to this command while the persona is
2140
+ // inside a host, and 'exit-host' is the always-reachable name.
2141
+ CommandFactory.registerCommand('enter', EnterHostCommand);
2142
+ CommandFactory.registerCommand('exit-host', ExitHostCommand);
2128
2143
  CommandFactory.registerCommand('rest', RestCommand);
2129
2144
  CommandFactory.registerCommand('reload', ReloadCommand);
2130
2145
  CommandFactory.registerCommand('subdue', SubdueCommand);
@@ -2172,6 +2187,10 @@ ${client.name} won't be remembering anything. Dead Johnsons pay nothing -- and t
2172
2187
  CommandFactory.registerCommand('surrender', SurrenderCommand);
2173
2188
  CommandFactory.registerCommand('jack', JackCommand);
2174
2189
  CommandFactory.registerCommand('project', ProjectCommand);
2190
+ // 'astral' is what a player types when they mean project -- the
2191
+ // word has to be CLAIMED or the parser calls it nonsense
2192
+ // (LFmjA76izZ62NDjAv).
2193
+ CommandFactory.registerCommand('astral', ProjectCommand);
2175
2194
  CommandFactory.registerCommand('return', ReturnCommand);
2176
2195
  CommandFactory.registerCommand('assense', AssenseCommand);
2177
2196
  CommandFactory.registerCommand('drone', DroneCommand);
@@ -3065,6 +3084,9 @@ ${client.name} won't be remembering anything. Dead Johnsons pay nothing -- and t
3065
3084
  // here would ride the cab home and the next jack-in would start
3066
3085
  // already trapped, with nothing on the grid holding it.
3067
3086
  this.player.linkLockedBy.clear();
3087
+ // Same enumeration, same reason: insideHost is persona state and these
3088
+ // paths end the persona without passing through planes.leaveMatrix.
3089
+ this.player.insideHost = undefined;
3068
3090
  this.player.astralTicks = 0;
3069
3091
  this.player.activeDeck = undefined;
3070
3092
  this.player.riggedDrone = undefined;
@@ -3113,6 +3135,9 @@ ${client.name} won't be remembering anything. Dead Johnsons pay nothing -- and t
3113
3135
  // Same reason as settleTravelState: an exit that bypasses
3114
3136
  // leaveMatrix must drop the link-lock itself.
3115
3137
  this.player.linkLockedBy.clear();
3138
+ // Same enumeration, same reason: insideHost is persona state and these
3139
+ // paths end the persona without passing through planes.leaveMatrix.
3140
+ this.player.insideHost = undefined;
3116
3141
  this.player.astralTicks = 0;
3117
3142
  this.player.activeDeck = undefined;
3118
3143
  this.player.riggedDrone = undefined;
@@ -4689,8 +4714,10 @@ ${client.name} won't be remembering anything. Dead Johnsons pay nothing -- and t
4689
4714
  // real session typed "jack-in" and bounced) -- normalize the hyphen.
4690
4715
  const normalized = input.replace(/^\s*jack-(in|out)\b/i, 'jack $1');
4691
4716
  const parts = normalized.trim().split(' ');
4692
- const verb = parts[0].toLowerCase();
4693
- const args = parts.slice(1);
4717
+ // `let`, not const: the quit branch below re-points a bare "exit" at
4718
+ // exit-host when the persona is inside one (p.239).
4719
+ let verb = parts[0].toLowerCase();
4720
+ let args = parts.slice(1);
4694
4721
  this.lastResolvedVerb = verb;
4695
4722
  const out = (text) => ({ text, verb: this.lastResolvedVerb });
4696
4723
  // Empty input is a nervous Enter, not a command (a real session's
@@ -4707,6 +4734,17 @@ ${client.name} won't be remembering anything. Dead Johnsons pay nothing -- and t
4707
4734
  }
4708
4735
  // fall through -- the answer was a real command; play on.
4709
4736
  }
4737
+ else if (verb === 'exit' && actor.insideHost) {
4738
+ // INSIDE A HOST, "exit" MEANS THE HOST (p.239 Enter/Exit Host), not
4739
+ // the game. A persona who just crossed into a host's architecture
4740
+ // and types the obvious word to come back out should not be asked
4741
+ // whether they want to stop playing. "quit" still quits, and is
4742
+ // never ambiguous; this only ever fires while there is an
4743
+ // enclosure nearer than the game itself to leave.
4744
+ verb = 'exit-host';
4745
+ args = [];
4746
+ this.lastResolvedVerb = verb;
4747
+ }
4710
4748
  else if (verb === 'quit' || verb === 'exit') {
4711
4749
  this._quitArmed = true;
4712
4750
  return out(`Really quit? ("y" to confirm -- anything else keeps playing.)`);
@@ -4852,24 +4890,42 @@ ${client.name} won't be remembering anything. Dead Johnsons pay nothing -- and t
4852
4890
  * drill into the real descriptions. Verbs registered but missing from
4853
4891
  * this table surface in an "other" bucket rather than vanishing -- a
4854
4892
  * future command can't silently fall out of help.
4893
+ *
4894
+ * AN ALIAS MEANS THE SAME COMMAND -- not "a related word"
4895
+ * (ZJjWMKww2kstbkJCW: "'descend' is not in the list of moving
4896
+ * commands"). Both readers of this table take the group's HEAD as the
4897
+ * command: the overview prints e[0] and nothing else, and "help
4898
+ * <word>" looks up the primary's class to describe it. So a distinct
4899
+ * command parked at index 1 is invisible in the overview AND answers
4900
+ * questions about it with another command's description -- `descend`
4901
+ * was reported missing, but `help descend` was also quietly printing
4902
+ * how to climb UP.
4903
+ *
4904
+ * Five groups had it: descend under climb, run and sprint under move,
4905
+ * unfollow under follow, decompile under compile, kill under attack.
4906
+ * Every one of them is its own class with its own description that no
4907
+ * player could reach. They are split out here rather than taught to
4908
+ * the renderer, because "a group is one command" is the assumption
4909
+ * the renderer is ENTITLED to make -- the table was what lied.
4910
+ * help-taxonomy.test.ts now holds that line for the whole table.
4855
4911
  */
4856
4912
  static HELP_CATEGORIES = [
4857
- { title: 'moving', entries: [['look'], ['go'], ['move', 'walk', 'approach', 'run', 'sprint'], ['climb', 'descend', 'mantle', 'scale', 'clamber'], ['sit', 'kneel'], ['lie', 'prone'], ['stand'], ['follow', 'unfollow'], ['map', 'exits'], ['search'], ['sneak']] },
4913
+ { title: 'moving', entries: [['look'], ['go'], ['move', 'walk', 'approach'], ['run'], ['sprint'], ['climb', 'mantle', 'scale', 'clamber'], ['descend'], ['sit', 'kneel'], ['lie', 'prone'], ['stand'], ['follow'], ['unfollow'], ['map', 'exits'], ['search'], ['sneak']] },
4858
4914
  { title: 'gear', entries: [['inv', 'inventory'], ['equipment', 'eq'], ['take'], ['loot'], ['drop'], ['give'], ['store'], ['equip'], ['unequip'], ['brandish', 'draw'], ['holster', 'stow'], ['reload'], ['use'], ['read']] },
4859
- { title: 'combat', entries: [['attack', 'kill'], ['subdue'], ['grapple', 'restrain', 'clinch'], ['struggle'], ['release'], ['cover'], ['stance'], ['surrender'], ['edge'], ['rest']] },
4915
+ { title: 'combat', entries: [['attack'], ['kill'], ['subdue'], ['grapple', 'restrain', 'clinch'], ['struggle'], ['release'], ['cover'], ['stance'], ['surrender'], ['edge'], ['rest']] },
4860
4916
  // The party layer: everyone who walks (or flies, or manifests) at
4861
4917
  // your side answers to these.
4862
4918
  // "players" folded back under crew after playtesting ("crew
4863
4919
  // players" / "crew street"); the bare verb still answers quietly.
4864
4920
  { title: 'party', entries: [['crew', 'party'], ['hire'], ['dismiss'], ['train'], ['order'], ['lead'], ['command'], ['deploy'], ['recall']] },
4865
- { title: 'magic', entries: [['spells'], ['cast'], ['summon', 'conjure'], ['project'], ['return'], ['assense']] },
4866
- { title: 'matrix', entries: [['jack'], ['jackpoint'], ['deck'], ['load'], ['unload'], ['hack'], ['mark'], ['tap', 'splice'], ['snoop'], ['overwatch', 'os'], ['pan'], ['ar'], ['aros'], ['silent'], ['reboot'], ['agent'], ['drone'], ['jump', 'rig']] },
4921
+ { title: 'magic', entries: [['spells'], ['cast'], ['summon', 'conjure'], ['project', 'astral'], ['return'], ['assense']] },
4922
+ { title: 'matrix', entries: [['jack'], ['jackpoint'], ['deck'], ['load'], ['unload'], ['hack'], ['mark'], ['enter'], ['exit-host'], ['tap', 'splice'], ['snoop'], ['overwatch', 'os'], ['pan'], ['ar'], ['aros'], ['silent'], ['reboot'], ['agent'], ['drone'], ['jump', 'rig']] },
4867
4923
  // The Emerged get their own shelf (player request: "there MUST be
4868
4924
  // resonance" -- matrix is the place, Resonance is the talent).
4869
4925
  // `sustain` shelves here and not under magic: the command is
4870
4926
  // technomancer-gated (a sprite task, SR5 p.256) and refuses anyone
4871
4927
  // else, so the Emerged shelf is where its audience looks.
4872
- { title: 'resonance', entries: [['compile', 'decompile'], ['thread'], ['unravel'], ['register'], ['standby'], ['sustain'], ['sprites']] },
4928
+ { title: 'resonance', entries: [['compile'], ['decompile'], ['thread'], ['unravel'], ['register'], ['standby'], ['sustain'], ['sprites']] },
4873
4929
  { title: 'social', entries: [['say'], ['emote', 'me'], ['talk-to'], ['call'], ['end-call', 'end', 'hangup'], ['accept'], ['decline', 'deny', 'refuse'], ['haggle', 'negotiate'], ['persuade', 'convince'], ['ask'], ['contacts']] },
4874
4930
  { title: 'street', entries: [['abandon'], ['browse', 'buy'], ['sell'], ['catalog'], ['source', 'procure'], ['work', 'gig'], ['jobs'], ['journal'], ['perform'], ['palm'], ['docwagon'], ['treat'], ['eat'], ['drink'], ['lifestyle'], ['pay']] },
4875
4931
  { title: 'barriers', entries: [['pick'], ['breach'], ['dispel', 'dispell'], ['bluff'], ['unlock'], ['lock']] },