@maka/maka-cli 5.48.0 → 5.50.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 (106) hide show
  1. package/bundle/typescript/package.json +1 -1
  2. package/bundle/typescript/src/commands/game/sideQuest/commands/attack.js +20 -1
  3. package/bundle/typescript/src/commands/game/sideQuest/commands/attack.js.map +1 -1
  4. package/bundle/typescript/src/commands/game/sideQuest/commands/bypass-command.js +9 -0
  5. package/bundle/typescript/src/commands/game/sideQuest/commands/bypass-command.js.map +1 -1
  6. package/bundle/typescript/src/commands/game/sideQuest/commands/call.js +9 -8
  7. package/bundle/typescript/src/commands/game/sideQuest/commands/call.js.map +1 -1
  8. package/bundle/typescript/src/commands/game/sideQuest/commands/contacts.d.ts +5 -0
  9. package/bundle/typescript/src/commands/game/sideQuest/commands/contacts.js +27 -6
  10. package/bundle/typescript/src/commands/game/sideQuest/commands/contacts.js.map +1 -1
  11. package/bundle/typescript/src/commands/game/sideQuest/commands/give.js +2 -2
  12. package/bundle/typescript/src/commands/game/sideQuest/commands/give.js.map +1 -1
  13. package/bundle/typescript/src/commands/game/sideQuest/commands/go.js +43 -3
  14. package/bundle/typescript/src/commands/game/sideQuest/commands/go.js.map +1 -1
  15. package/bundle/typescript/src/commands/game/sideQuest/commands/look.js +6 -24
  16. package/bundle/typescript/src/commands/game/sideQuest/commands/look.js.map +1 -1
  17. package/bundle/typescript/src/commands/game/sideQuest/commands/loot.d.ts +21 -0
  18. package/bundle/typescript/src/commands/game/sideQuest/commands/loot.js +93 -0
  19. package/bundle/typescript/src/commands/game/sideQuest/commands/loot.js.map +1 -0
  20. package/bundle/typescript/src/commands/game/sideQuest/commands/map.d.ts +5 -15
  21. package/bundle/typescript/src/commands/game/sideQuest/commands/map.js +36 -132
  22. package/bundle/typescript/src/commands/game/sideQuest/commands/map.js.map +1 -1
  23. package/bundle/typescript/src/commands/game/sideQuest/commands/move.d.ts +32 -3
  24. package/bundle/typescript/src/commands/game/sideQuest/commands/move.js +313 -17
  25. package/bundle/typescript/src/commands/game/sideQuest/commands/move.js.map +1 -1
  26. package/bundle/typescript/src/commands/game/sideQuest/commands/note.d.ts +25 -0
  27. package/bundle/typescript/src/commands/game/sideQuest/commands/note.js +57 -0
  28. package/bundle/typescript/src/commands/game/sideQuest/commands/note.js.map +1 -0
  29. package/bundle/typescript/src/commands/game/sideQuest/commands/search.js +20 -3
  30. package/bundle/typescript/src/commands/game/sideQuest/commands/search.js.map +1 -1
  31. package/bundle/typescript/src/commands/game/sideQuest/commands/solve.js +9 -1
  32. package/bundle/typescript/src/commands/game/sideQuest/commands/solve.js.map +1 -1
  33. package/bundle/typescript/src/commands/game/sideQuest/commands/take.js +1 -1
  34. package/bundle/typescript/src/commands/game/sideQuest/commands/take.js.map +1 -1
  35. package/bundle/typescript/src/commands/game/sideQuest/commands/talk.js +1 -1
  36. package/bundle/typescript/src/commands/game/sideQuest/commands/talk.js.map +1 -1
  37. package/bundle/typescript/src/commands/game/sideQuest/factories/room-factory.js +1 -0
  38. package/bundle/typescript/src/commands/game/sideQuest/factories/room-factory.js.map +1 -1
  39. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.d.ts +13 -1
  40. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.js +66 -9
  41. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.js.map +1 -1
  42. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-factory.js +37 -1
  43. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-factory.js.map +1 -1
  44. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-seed-generator.d.ts +2 -2
  45. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-seed-generator.js +2 -2
  46. package/bundle/typescript/src/commands/game/sideQuest/game.d.ts +59 -6
  47. package/bundle/typescript/src/commands/game/sideQuest/game.js +250 -49
  48. package/bundle/typescript/src/commands/game/sideQuest/game.js.map +1 -1
  49. package/bundle/typescript/src/commands/game/sideQuest/headless.js +42 -2
  50. package/bundle/typescript/src/commands/game/sideQuest/headless.js.map +1 -1
  51. package/bundle/typescript/src/commands/game/sideQuest/models/npc.d.ts +9 -0
  52. package/bundle/typescript/src/commands/game/sideQuest/models/npc.js +63 -3
  53. package/bundle/typescript/src/commands/game/sideQuest/models/npc.js.map +1 -1
  54. package/bundle/typescript/src/commands/game/sideQuest/models/player.d.ts +40 -0
  55. package/bundle/typescript/src/commands/game/sideQuest/models/player.js +49 -0
  56. package/bundle/typescript/src/commands/game/sideQuest/models/player.js.map +1 -1
  57. package/bundle/typescript/src/commands/game/sideQuest/models/puzzle.d.ts +5 -1
  58. package/bundle/typescript/src/commands/game/sideQuest/models/puzzle.js +24 -6
  59. package/bundle/typescript/src/commands/game/sideQuest/models/puzzle.js.map +1 -1
  60. package/bundle/typescript/src/commands/game/sideQuest/models/room.d.ts +85 -2
  61. package/bundle/typescript/src/commands/game/sideQuest/models/room.js +182 -2
  62. package/bundle/typescript/src/commands/game/sideQuest/models/room.js.map +1 -1
  63. package/bundle/typescript/src/commands/game/sideQuest/models/scene.d.ts +4 -4
  64. package/bundle/typescript/src/commands/game/sideQuest/models/scene.js +17 -7
  65. package/bundle/typescript/src/commands/game/sideQuest/models/scene.js.map +1 -1
  66. package/bundle/typescript/src/commands/game/sideQuest/scenes/scene2.json +17 -13
  67. package/bundle/typescript/src/commands/game/sideQuest/types/save-file.d.ts +32 -0
  68. package/bundle/typescript/src/commands/game/sideQuest/types/seed/puzzle-seed.d.ts +2 -0
  69. package/bundle/typescript/src/commands/game/sideQuest/types/seed/room-seed.d.ts +5 -1
  70. package/bundle/typescript/src/commands/game/sideQuest/ui.d.ts +3 -0
  71. package/bundle/typescript/src/commands/game/sideQuest/ui.js +17 -11
  72. package/bundle/typescript/src/commands/game/sideQuest/ui.js.map +1 -1
  73. package/bundle/typescript/src/commands/game/sideQuest/utilities/combat-exchange.d.ts +9 -0
  74. package/bundle/typescript/src/commands/game/sideQuest/utilities/combat-exchange.js +87 -8
  75. package/bundle/typescript/src/commands/game/sideQuest/utilities/combat-exchange.js.map +1 -1
  76. package/bundle/typescript/src/commands/game/sideQuest/utilities/map-view.d.ts +70 -0
  77. package/bundle/typescript/src/commands/game/sideQuest/utilities/map-view.js +289 -0
  78. package/bundle/typescript/src/commands/game/sideQuest/utilities/map-view.js.map +1 -0
  79. package/bundle/typescript/src/commands/game/sideQuest/utilities/persistence.js +34 -0
  80. package/bundle/typescript/src/commands/game/sideQuest/utilities/persistence.js.map +1 -1
  81. package/bundle/typescript/src/commands/game/sideQuest/utilities/planes.d.ts +7 -0
  82. package/bundle/typescript/src/commands/game/sideQuest/utilities/planes.js +9 -0
  83. package/bundle/typescript/src/commands/game/sideQuest/utilities/planes.js.map +1 -1
  84. package/bundle/typescript/src/commands/game/sideQuest/utilities/prefs.d.ts +4 -0
  85. package/bundle/typescript/src/commands/game/sideQuest/utilities/prefs.js +44 -0
  86. package/bundle/typescript/src/commands/game/sideQuest/utilities/prefs.js.map +1 -0
  87. package/bundle/typescript/src/commands/game/sideQuest/utilities/range.d.ts +22 -0
  88. package/bundle/typescript/src/commands/game/sideQuest/utilities/range.js +69 -0
  89. package/bundle/typescript/src/commands/game/sideQuest/utilities/range.js.map +1 -0
  90. package/bundle/typescript/src/commands/game/sideQuest/utilities/room-grid.d.ts +186 -0
  91. package/bundle/typescript/src/commands/game/sideQuest/utilities/room-grid.js +742 -0
  92. package/bundle/typescript/src/commands/game/sideQuest/utilities/room-grid.js.map +1 -0
  93. package/bundle/typescript/src/commands/game/sideQuest/utilities/room-view.d.ts +34 -0
  94. package/bundle/typescript/src/commands/game/sideQuest/utilities/room-view.js +524 -0
  95. package/bundle/typescript/src/commands/game/sideQuest/utilities/room-view.js.map +1 -0
  96. package/bundle/typescript/src/commands/game/sideQuest/utilities/shared-run.js +13 -0
  97. package/bundle/typescript/src/commands/game/sideQuest/utilities/shared-run.js.map +1 -1
  98. package/bundle/typescript/src/commands/game/sideQuest/utilities/spots.d.ts +273 -3
  99. package/bundle/typescript/src/commands/game/sideQuest/utilities/spots.js +890 -24
  100. package/bundle/typescript/src/commands/game/sideQuest/utilities/spots.js.map +1 -1
  101. package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js +5 -0
  102. package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js.map +1 -1
  103. package/bundle/typescript/src/tools/ai/ai.class.d.ts +15 -0
  104. package/bundle/typescript/src/tools/ai/ai.class.js +20 -0
  105. package/bundle/typescript/src/tools/ai/ai.class.js.map +1 -1
  106. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"scene-factory.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/factories/scene-factory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scene-factory.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/factories/scene-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAI3C,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAEzC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAExD,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAGhD,MAAM,OAAO,gBAAgB;IAC3B;;;;;;OAMG;IACH,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAoB,EAAE,MAAc,EAAE,KAAc,EAAE,kBAAkB,GAAG,IAAI;QAC7G,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QAEpC,+DAA+D;QAC/D,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAClC,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC;YACtB,MAAM;YACN,QAAQ,EAAE;gBACR,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI;gBACxB,iBAAiB,EAAE,IAAI,CAAC,QAAQ,CAAC,iBAAiB;aACnD;YACD,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,GAAG,EAAE,IAAI,CAAC,GAAG;SACd,CAAC,CAAC;QAEH,iEAAiE;QACjE,6DAA6D;QAC7D,uCAAuC;QACvC,MAAM,YAAY,GAAG;SAChB,IAAI,CAAC,IAAI;SACT,IAAI,CAAC,KAAK;YACP,IAAI,CAAC,QAAQ,CAAC,IAAI;mBACX,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;iBAChC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;CACtD,CAAC,IAAI,EAAE,CAAC;QAGL,sDAAsD;QACtD,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAC/B,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;QACtC,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAClC,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;YAC5D,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,+CAA+C;YACpE,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;QAED,qCAAqC;QACrC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAC7B,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAClC,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;gBACxC,IAAI,CAAC;oBACH,KAAK,CAAC,YAAY,CAChB,QAAQ,CAAC,IAAI,EACb,IAAI,CAAC,SAAS,CAAC,WAAW,EAAe,EACzC,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,WAAW,CAAC,gCAAgC;qBAClD,CAAC;gBACJ,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,MAAM,IAAI,KAAK,CACb,gCAAgC,QAAQ,CAAC,IAAI,SAAS,IAAI,CAAC,UAAU,UAAU,IAAI,CAAC,SAAS,MAAM,GAAG,CAAC,OAAO,EAAE,CACjH,CAAC;gBACJ,CAAC;gBACD,gEAAgE;gBAChE,0DAA0D;gBAC1D,0DAA0D;gBAC1D,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;oBAChB,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAe,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;gBACtG,CAAC;YACH,CAAC;QACH,CAAC;QAED,mBAAmB;QACnB,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAC5B,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;QACzC,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;YACtC,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YACxD,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,MAAM,IAAI,KAAK,CAAC,4BAA4B,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YAClF,CAAC;YACD,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;YACpC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YACpB,KAAK,CAAC,oBAAoB,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;YAC9D,qDAAqD;YACrD,gEAAgE;YAChE,kCAAkC;YAClC,IAAI,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;gBAC7B,GAAG,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;gBACtC,+DAA+D;gBAC/D,+DAA+D;gBAC/D,GAAG,CAAC,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;YAC1C,CAAC;YAED,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC;YAClB,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,GAAG,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;QAED,oBAAoB;QACpB,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAgB,CAAC;QAExC,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;YACxC,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;YAC5D,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAE7B,6BAA6B;YAC7B,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACpB,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAC9C,IAAI,CAAC,KAAK,EAAE,CAAC;oBACX,MAAM,IAAI,KAAK,CAAC,mBAAmB,QAAQ,CAAC,MAAM,sBAAsB,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC;gBAC5F,CAAC;gBACD,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YAC3B,CAAC;iBAAM,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACzB,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAC3C,WAAW;gBACX,qFAAqF;YACrF,CAAC;QACH,CAAC;QAED,wEAAwE;QACxE,6DAA6D;QAC7D,uEAAuE;QACvE,+DAA+D;QAC/D,kEAAkE;QAClE,uEAAuE;QACvE,oEAAoE;QACpE,mDAAmD;QACnD,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAS;YACvC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,YAAY;YAC5D,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,aAAa,EAAE,QAAQ,CAAC,MAAM;YAC3E,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM;SACvF,CAAC,CAAC;QACH,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;YACtC,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAChD,IAAI,CAAC,GAAG;gBAAE,SAAS;YACnB,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;gBACpD,IAAI,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACxC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAClB,CAAC;YACH,CAAC;QACH,CAAC;QAED,uEAAuE;QACvE,6DAA6D;QAC7D,IAAI,kBAAkB,EAAE,CAAC;YACvB,MAAM,CAAC,KAAK,CAAC,uCAAuC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YACxE,KAAK,MAAM,gBAAgB,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,EAAE,EAAE,CAAC;gBAC/D,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;gBACpE,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;gBAC1B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,gDAAgD;gBAC9E,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC;gBACzB,MAAM,CAAC,KAAK,CAAC,8BAA8B,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,KAAK,CAAC,+BAA+B,IAAI,CAAC,MAAM,CAAC,IAAI,oCAAoC,CAAC,CAAC;QACpG,CAAC;QAED,0EAA0E;QAC1E,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC;YAE7B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1B,MAAM,IAAI,KAAK,CAAC,kCAAkC,EAAE,CAAC,IAAI,6BAA6B,CAAC,CAAC;YAC1F,CAAC;YACD,IAAI,EAAE,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACvB,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;oBACd,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;gBACjE,CAAC;gBACD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC9B,MAAM,IAAI,KAAK,CAAC,iCAAiC,EAAE,CAAC,KAAK,4BAA4B,CAAC,CAAC;gBACzF,CAAC;YACH,CAAC;YAED,IAAI,UAA4B,CAAC;YACjC,IAAI,EAAE,CAAC,UAAU,EAAE,CAAC;gBAClB,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;gBACxC,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChB,MAAM,IAAI,KAAK,CAAC,8BAA8B,EAAE,CAAC,UAAU,sBAAsB,CAAC,CAAC;gBACrF,CAAC;YACH,CAAC;YAED,KAAK,CAAC,eAAe,CAAC;gBACpB,IAAI,EAAE,EAAE,CAAC,IAAI;gBACb,IAAI,EAAE,EAAE,CAAC,IAAI;gBACb,KAAK,EAAE,EAAE,CAAC,KAAK;gBACf,UAAU;gBACV,iBAAiB,EAAE,EAAE,CAAC,iBAAiB;gBACvC,MAAM,EAAE,EAAE,CAAC,MAAM;aAClB,CAAC,CAAC;QACL,CAAC;QAED,sBAAsB;QACtB,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;QAC1C,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;QAE5C,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;YAC5C,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,oBAAoB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YAC7E,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACnC,qEAAqE;YACrE,iEAAiE;YACjE,cAAc;YACd,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;gBACpB,KAAK,CAAC,eAAe,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;YACjD,CAAC;YACD,IAAI,KAAK,EAAE,CAAC;gBACV,4DAA4D;gBAC5D,4DAA4D;gBAC5D,kDAAkD;gBAClD,4DAA4D;gBAC5D,+DAA+D;gBAC/D,0DAA0D;gBAC1D,sCAAsC;gBACtC,MAAM,MAAM,CAAC,cAAc,CAAC,YAAY,EAAE,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YAC3G,CAAC;QACH,CAAC;QAED,oEAAoE;QACpE,qEAAqE;QACrE,+DAA+D;QAC/D,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;YAC5C,IAAI,CAAC,UAAU,CAAC,cAAc;gBAAE,SAAS;YAEzC,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAC9C,MAAM,YAAY,GAAG,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;YAE9D,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,MAAM,IAAI,KAAK,CAAC,WAAW,UAAU,CAAC,IAAI,sBAAsB,UAAU,CAAC,cAAc,uCAAuC,CAAC,CAAC;YACpI,CAAC;YACD,IAAI,MAAM,KAAK,YAAY,EAAE,CAAC;gBAC5B,MAAM,IAAI,KAAK,CAAC,WAAW,UAAU,CAAC,IAAI,0BAA0B,CAAC,CAAC;YACxE,CAAC;YAED,MAAO,CAAC,iBAAiB,CAAC,YAAY,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;QACpE,CAAC;QAED,wEAAwE;QACxE,kEAAkE;QAClE,kEAAkE;QAClE,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAClC,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;gBACxC,IAAI,CAAC,IAAI,CAAC,MAAM;oBAAE,SAAS;gBAE3B,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC1C,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,MAAM,IAAI,KAAK,CAAC,cAAc,QAAQ,CAAC,IAAI,SAAS,IAAI,CAAC,UAAU,wBAAwB,IAAI,CAAC,MAAM,uCAAuC,CAAC,CAAC;gBACjJ,CAAC;gBAED,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAChD,MAAM,QAAQ,GAAG,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAe,CAAC,CAAC;gBAChF,IAAI,QAAQ,YAAY,IAAI,EAAE,CAAC;oBAC7B,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;gBAChC,CAAC;YACH,CAAC;QACH,CAAC;QAED,iEAAiE;QACjE,0DAA0D;QAC1D,gEAAgE;QAChE,kEAAkE;QAClE,8DAA8D;QAC9D,kEAAkE;QAClE,mEAAmE;QACnE,gEAAgE;QAChE,mEAAmE;QACnE,4DAA4D;QAC5D,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;YAC5C,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU;gBAAE,SAAS;YACzD,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAC5C,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAC9C,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM;gBAAE,SAAS;YAE/B,MAAM,SAAS,GAAG,UAAU,CAAC,UAAU,CAAC,WAAW,EAAe,CAAC;YACnE,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC9B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;oBACrB,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI;oBAC3C,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE;oBACnC,SAAS,EAAE,UAAU,CAAC,SAAS,IAAI,OAAO;iBAC3C,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,8CAA8C;QAC9C,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;QAEpC,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAClC,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;gBACnB,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAC1C,IAAI,CAAC,IAAI,EAAE,CAAC;oBACV,MAAM,IAAI,KAAK,CAAC,4BAA4B,QAAQ,CAAC,IAAI,6BAA6B,CAAC,CAAC;gBAC1F,CAAC;gBACD,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;gBAC5B,MAAM,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,IAAI,mBAAmB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;YACnE,CAAC;QACH,CAAC;QAED,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;YACxC,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;gBACnB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACxC,IAAI,CAAC,IAAI,EAAE,CAAC;oBACV,MAAM,IAAI,KAAK,CAAC,4BAA4B,QAAQ,CAAC,IAAI,6BAA6B,CAAC,CAAC;gBAC1F,CAAC;gBACD,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;gBAC5B,MAAM,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,IAAI,mBAAmB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;YACnE,CAAC;QACH,CAAC;QAGD,+BAA+B;QAC/B,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
@@ -142,8 +142,8 @@ export declare class SceneSeedGenerator {
142
142
  /**
143
143
  * THE MEET's structural guarantees (canon p.28, player ruling: every
144
144
  * run has its own client Johnson). The client must exist, be
145
- * physically meetable, and carry a commlink -- the meet pays the
146
- * advance and the wrap-up call pays the remainder, so a missing or
145
+ * physically meetable, and carry a commlink -- the meet sets the
146
+ * terms and the wrap-up pays the lump sum, so a missing or
147
147
  * unreachable client breaks the whole payment loop. This replaced the
148
148
  * old "cannot reach Mr. Johnson" convention (an unreachable fixer NPC
149
149
  * embedded in every run) when the fixer moved out of run scenes.
@@ -570,8 +570,8 @@ export class SceneSeedGenerator {
570
570
  /**
571
571
  * THE MEET's structural guarantees (canon p.28, player ruling: every
572
572
  * run has its own client Johnson). The client must exist, be
573
- * physically meetable, and carry a commlink -- the meet pays the
574
- * advance and the wrap-up call pays the remainder, so a missing or
573
+ * physically meetable, and carry a commlink -- the meet sets the
574
+ * terms and the wrap-up pays the lump sum, so a missing or
575
575
  * unreachable client breaks the whole payment loop. This replaced the
576
576
  * old "cannot reach Mr. Johnson" convention (an unreachable fixer NPC
577
577
  * embedded in every run) when the fixer moved out of run scenes.
@@ -50,6 +50,12 @@ export default class Game {
50
50
  private _escArmedAt;
51
51
  private _statusBox;
52
52
  private _inputBox;
53
+ /** The floating icon-minimap (map-overlay wave 2026-08-24). Optional:
54
+ * headless sessions never build widgets. */
55
+ private _mapBox?;
56
+ /** Its twin, docked to its right: the current room's own layout
57
+ * (spatial-viz follow-up 2026-08-25). See utilities/room-view.ts. */
58
+ private _roomMapBox?;
53
59
  private _useAi;
54
60
  private _aiRefusalAnnounced;
55
61
  private _owner?;
@@ -314,7 +320,10 @@ export default class Game {
314
320
  * Returns a player-facing line when something changed, else null.
315
321
  */
316
322
  /** A hub-cast member by name, for roster displays that need the live
317
- * actor (contacts.ts reads their commlink to show reachability). */
323
+ * actor (contacts.ts reads their commlink to show reachability).
324
+ * ROOM GRIDS wave (2026-08-25): falls back to the CURRENT run scene
325
+ * so a live client (not yet a hub contact -- see onClientInteraction)
326
+ * resolves too; call.ts already reaches them the same way. */
318
327
  hubActor(name: string): Player | NPC | undefined;
319
328
  /** The whole hub cast -- call.ts merges these into its candidates so
320
329
  * a linked contact answers from ANYWHERE (a real mid-run session:
@@ -486,7 +495,6 @@ export default class Game {
486
495
  currentClient?: {
487
496
  name: string;
488
497
  met: boolean;
489
- advancePaid: number;
490
498
  reported: boolean;
491
499
  dead?: boolean;
492
500
  };
@@ -494,10 +502,12 @@ export default class Game {
494
502
  /**
495
503
  * The meet and the wrap-up, triggered by the player's first/next real
496
504
  * interaction with the client (talk-to, a connected call, a give).
497
- * Returns the beat's text (advance/remainder lines) or null when this
498
- * NPC isn't the client / nothing new happens. Canon p.28-29: half up
499
- * front at the meet, the remainder on delivering proof. Completing the
500
- * objective BEFORE ever meeting them collapses both beats into one.
505
+ * Returns the beat's text or null when this NPC isn't the client /
506
+ * nothing new happens. LUMP SUM (player ruling 2026-08-25, replacing
507
+ * canon p.28's half-up-front: the advance beat kept misfiring in
508
+ * play): the meet sets the terms, the wrap-up pays the WHOLE number.
509
+ * Completing the objective before ever meeting them still collapses
510
+ * cleanly -- the wrap-up is the only beat that moves money.
501
511
  */
502
512
  onClientInteraction(npcName: string): string | null;
503
513
  /**
@@ -704,6 +714,49 @@ export default class Game {
704
714
  * pieces, not a status framework built ahead of need.
705
715
  */
706
716
  private initStatusBox;
717
+ /**
718
+ * THE MINIMAP (map-overlay wave 2026-08-24; split into a pair
719
+ * 2026-08-25 -- player ask: "ample space to split the existing map in
720
+ * two, one for the area, one for the room"): two small icon
721
+ * viewports DOCKED side by side at the top of the Mechanics column --
722
+ * not floated over the log (a float occluded log text and, being
723
+ * numerically anchored, drifted on terminal resize; percentage
724
+ * geometry re-solves both). The Mechanics pane shifts down while
725
+ * EITHER is shown and takes the space back only once both hide.
726
+ * keys:false -- a keyable box appended after the input steals focus
727
+ * (the "eexxiitt" bug, see initInputBox). Hidden until the first
728
+ * setMapOverlay/setRoomOverlay with content.
729
+ */
730
+ private static readonly MAP_DOCK_ROWS;
731
+ /** Must track the roomMapBox's `width` below -- updateExits derives
732
+ * the inner width from it to right-justify the elevation bar. */
733
+ private static readonly ROOM_DOCK_PCT;
734
+ /** Must track the mapBox's `width` below -- used to trim its caption. */
735
+ private static readonly MAP_DOCK_PCT;
736
+ private initMapBox;
737
+ /** Shifts the Mechanics pane down (a map box is shown) or back up
738
+ * (neither is). Driven by syncMapDock, never called directly. */
739
+ private dockMap;
740
+ /** Keeps the Mechanics pane's dock offset in sync with whichever
741
+ * docked box(es) -- district, room, or both -- are currently shown. */
742
+ private syncMapDock;
743
+ /**
744
+ * Paints (or hides) the docked DISTRICT minimap. Solo: updateExits
745
+ * feeds it from the local scene; shared runs: SharedRunSession.route
746
+ * feeds it from the server's per-player kind:'map' events. The
747
+ * preference gates both this and setRoomOverlay in one place.
748
+ */
749
+ setMapOverlay(lines: string[]): void;
750
+ hideMapOverlay(): void;
751
+ /**
752
+ * Paints (or hides) the docked ROOM minimap -- the district box's
753
+ * twin, fed by updateExits from utilities/room-view.ts. Empty
754
+ * whenever the current room has no synthesized grid (spotless --
755
+ * THE COMPAT RULE) or the player is circulating in it (nothing fixed
756
+ * to center on): both read as "hide", same as an empty district.
757
+ */
758
+ setRoomOverlay(lines: string[]): void;
759
+ hideRoomOverlay(): void;
707
760
  /**
708
761
  * Refreshes the status box from current player state. Called after any
709
762
  * command that can change what belongs there (currently "call"/"end-call")
@@ -11,6 +11,9 @@ import { pushSave, burnCloudSaveFor } from './utilities/cloud-saves.js';
11
11
  import { DOCWAGON_TIERS, RESUSC_FEE, DEATH_COMP } from './utilities/docwagon.js';
12
12
  import { isFence, LIFESTYLE_TIERS } from './utilities/commerce.js';
13
13
  import { bestFakeSin, wandRead, processArrest } from './utilities/sin.js';
14
+ import { renderMapViewport } from './utilities/map-view.js';
15
+ import { renderRoomLayoutCompact } from './utilities/room-view.js';
16
+ import { getPref } from './utilities/prefs.js';
14
17
  import { rollPool, formatRoll } from './utilities/dice.js';
15
18
  import { Direction } from './types/shared/direction-enum.js';
16
19
  import { Logger } from './utilities/logger.js';
@@ -19,6 +22,8 @@ import { currentSession } from './utilities/session-context.js';
19
22
  import { PlayersCommand } from './commands/players.js';
20
23
  import { LookCommand } from './commands/look.js';
21
24
  import { TakeCommand } from './commands/take.js';
25
+ import { LootCommand } from './commands/loot.js';
26
+ import { NoteCommand } from './commands/note.js';
22
27
  import { GoCommand } from './commands/go.js';
23
28
  import { UseCommand } from './commands/use.js';
24
29
  import { EquipCommand } from './commands/equip.js';
@@ -141,6 +146,12 @@ export default class Game {
141
146
  _escArmedAt = 0;
142
147
  _statusBox;
143
148
  _inputBox;
149
+ /** The floating icon-minimap (map-overlay wave 2026-08-24). Optional:
150
+ * headless sessions never build widgets. */
151
+ _mapBox;
152
+ /** Its twin, docked to its right: the current room's own layout
153
+ * (spatial-viz follow-up 2026-08-25). See utilities/room-view.ts. */
154
+ _roomMapBox;
144
155
  _useAi = false;
145
156
  _aiRefusalAnnounced = false;
146
157
  // ACCOUNT BINDING (ruling 2026-08-23): who this runner belongs to,
@@ -1076,9 +1087,13 @@ export default class Game {
1076
1087
  * Returns a player-facing line when something changed, else null.
1077
1088
  */
1078
1089
  /** A hub-cast member by name, for roster displays that need the live
1079
- * actor (contacts.ts reads their commlink to show reachability). */
1090
+ * actor (contacts.ts reads their commlink to show reachability).
1091
+ * ROOM GRIDS wave (2026-08-25): falls back to the CURRENT run scene
1092
+ * so a live client (not yet a hub contact -- see onClientInteraction)
1093
+ * resolves too; call.ts already reaches them the same way. */
1080
1094
  hubActor(name) {
1081
- return this._hubScene?.allActors?.find(a => a.name === name && a !== this.player);
1095
+ return this._hubScene?.allActors?.find(a => a.name === name && a !== this.player)
1096
+ ?? (this.scene !== this._hubScene ? this.scene?.allActors?.find(a => a.name === name && a !== this.player) : undefined);
1082
1097
  }
1083
1098
  /** The whole hub cast -- call.ts merges these into its candidates so
1084
1099
  * a linked contact answers from ANYWHERE (a real mid-run session:
@@ -1410,16 +1425,18 @@ export default class Game {
1410
1425
  // state never is (runs are disposable); reconstructed fresh by
1411
1426
  // activateRunScene, settled into the roster by returnToHub.
1412
1427
  currentClient;
1413
- // Taxi warn-once (player ruling): leaving with the remainder unclaimed
1428
+ // Taxi warn-once (player ruling): leaving with the pay unclaimed
1414
1429
  // arms this; the second "call taxi" forfeits. Mirrors _quitArmed.
1415
1430
  forfeitArmed = false;
1416
1431
  /**
1417
1432
  * The meet and the wrap-up, triggered by the player's first/next real
1418
1433
  * interaction with the client (talk-to, a connected call, a give).
1419
- * Returns the beat's text (advance/remainder lines) or null when this
1420
- * NPC isn't the client / nothing new happens. Canon p.28-29: half up
1421
- * front at the meet, the remainder on delivering proof. Completing the
1422
- * objective BEFORE ever meeting them collapses both beats into one.
1434
+ * Returns the beat's text or null when this NPC isn't the client /
1435
+ * nothing new happens. LUMP SUM (player ruling 2026-08-25, replacing
1436
+ * canon p.28's half-up-front: the advance beat kept misfiring in
1437
+ * play): the meet sets the terms, the wrap-up pays the WHOLE number.
1438
+ * Completing the objective before ever meeting them still collapses
1439
+ * cleanly -- the wrap-up is the only beat that moves money.
1423
1440
  */
1424
1441
  onClientInteraction(npcName) {
1425
1442
  const client = this.currentClient;
@@ -1433,30 +1450,22 @@ export default class Game {
1433
1450
  const lines = [];
1434
1451
  if (!client.met) {
1435
1452
  client.met = true;
1436
- const advance = Math.floor(payout / 2);
1437
- // The team's split comes off the top of every payment (canon: the
1438
- // crew shares the take) -- the player banks their share only.
1439
- const split = this.applyCrewCut(advance);
1440
- const paid = this.scene.payRunner(split.share, 'meet advance');
1441
- client.advancePaid = advance;
1442
- if (paid) {
1443
- lines.push(`THE MEET: ${client.name} slides half across up front -- ${paid.net}¥ certified${paid.tax > 0 ? ` (${paid.tax}¥ skimmed: SIN on file)` : ''}. The other half on delivery.${hint(` (Canon terms, p.28 -- and the rate is negotiable exactly once: "haggle" while you have them.)`)}`);
1444
- if (split.line)
1445
- lines.push(` ${split.line}`);
1446
- }
1447
- Logger.getInstance().write(`Client meet: ${this.player.name} met ${client.name}, advance ${advance} (gross, crew took ${advance - split.share}).`);
1453
+ lines.push(`THE MEET: ${client.name} lays out the terms -- ${payout}¥ certified, in full, on delivery.${hint(` (The rate is negotiable exactly once: "haggle" while you have them.)`)}`);
1454
+ Logger.getInstance().write(`Client meet: ${this.player.name} met ${client.name}, terms ${payout} lump sum on delivery.`);
1448
1455
  }
1449
1456
  if (this.scene.isCompleted() && !client.reported) {
1450
1457
  client.reported = true;
1451
- const remainder = payout - client.advancePaid;
1452
- const split = this.applyCrewCut(remainder);
1453
- const paid = this.scene.payRunner(split.share, 'wrap-up remainder');
1458
+ // The team's split comes off the top (canon: the crew shares the
1459
+ // take) -- the player banks their share only. Payout read LIVE so
1460
+ // a haggle at any point before delivery moves the real number.
1461
+ const split = this.applyCrewCut(payout);
1462
+ const paid = this.scene.payRunner(split.share, 'wrap-up settlement');
1454
1463
  if (paid) {
1455
- lines.push(`WRAP-UP: ${client.name} settles the balance -- ${paid.net}¥ certified${paid.tax > 0 ? ` (${paid.tax}¥ skimmed: SIN on file)` : ''}. Clean work; the name will remember yours.`);
1464
+ lines.push(`WRAP-UP: ${client.name} pays out in full -- ${paid.net}¥ certified${paid.tax > 0 ? ` (${paid.tax}¥ skimmed: SIN on file)` : ''}. Clean work; the name will remember yours.`);
1456
1465
  if (split.line)
1457
1466
  lines.push(` ${split.line}`);
1458
1467
  }
1459
- Logger.getInstance().write(`Client wrap-up: ${this.player.name} reported to ${client.name}, remainder ${remainder} (gross, crew took ${remainder - split.share}).`);
1468
+ Logger.getInstance().write(`Client wrap-up: ${this.player.name} reported to ${client.name}, settlement ${payout} (gross, crew took ${payout - split.share}).`);
1460
1469
  // JOHNSONS DON'T LINGER (real session: a settled Ms. Slate paced
1461
1470
  // in and out of rooms and tailed the runner around the scene).
1462
1471
  // After the settlement beat lands, the client walks -- their AI
@@ -1606,6 +1615,8 @@ ${client.name} won't be remembering anything. Dead Johnsons pay nothing -- and t
1606
1615
  CommandFactory.registerCommand('look', LookCommand);
1607
1616
  CommandFactory.registerCommand('go', GoCommand);
1608
1617
  CommandFactory.registerCommand('take', TakeCommand);
1618
+ CommandFactory.registerCommand('loot', LootCommand);
1619
+ CommandFactory.registerCommand('note', NoteCommand);
1609
1620
  CommandFactory.registerCommand('use', UseCommand);
1610
1621
  CommandFactory.registerCommand('equip', EquipCommand);
1611
1622
  CommandFactory.registerCommand('unequip', UnequipCommand);
@@ -1823,6 +1834,7 @@ ${client.name} won't be remembering anything. Dead Johnsons pay nothing -- and t
1823
1834
  this.initLogBox(screen);
1824
1835
  this.initMetaBox(screen);
1825
1836
  this.initStatusBox(screen);
1837
+ this.initMapBox(screen); // docked atop the Mechanics column
1826
1838
  this._screen = screen;
1827
1839
  }
1828
1840
  /** The engine half of startup: scene synthesis, command registration,
@@ -2711,7 +2723,7 @@ ${client.name} won't be remembering anything. Dead Johnsons pay nothing -- and t
2711
2723
  // THE MEET opens the job (canon p.28): the seed's client is this
2712
2724
  // run's Johnson -- track them, and point the arrival at the meet.
2713
2725
  this.currentClient = seed.client
2714
- ? { name: seed.client, met: false, advancePaid: 0, reported: false }
2726
+ ? { name: seed.client, met: false, reported: false }
2715
2727
  : undefined;
2716
2728
  this.forfeitArmed = false;
2717
2729
  // THE CLIENT REACHES OUT (ruling 2026-08-24, friction pass): the
@@ -2723,7 +2735,7 @@ ${client.name} won't be remembering anything. Dead Johnsons pay nothing -- and t
2723
2735
  const clientRoom = clientActor?.currentLocation?.name;
2724
2736
  const clientSpot = clientActor ? spotOf(clientActor) : undefined;
2725
2737
  const meetLine = seed.client
2726
- ? `\n📞 Your link chirps -- {bold}{underline}${seed.client}{/underline}{/bold}: "${clientRoom ? `I'm at ${clientRoom}${clientSpot ? `, the ${clientSpot}` : ''}` : `I'm on-site`} -- waiting on you. Come sit down before somebody else does." Half up front at the table; the rest on delivery.${hint(` (Find them and talk, or "call ${seed.client}" -- the rate is negotiable at the meet, once.)`)}`
2738
+ ? `\n📞 Your link chirps -- {bold}{underline}${seed.client}{/underline}{/bold}: "${clientRoom ? `I'm at ${clientRoom}${clientSpot ? `, the ${clientSpot}` : ''}` : `I'm on-site`} -- waiting on you. Come sit down before somebody else does." Payment in full on delivery.${hint(` (Find them and talk, or "call ${seed.client}" -- the rate is negotiable at the meet, once.)`)}`
2727
2739
  : '';
2728
2740
  // No "=== JOB #n ===" banner on entry (player request) -- the Game
2729
2741
  // Log window's own title carries the job name now.
@@ -2985,7 +2997,12 @@ ${client.name} won't be remembering anything. Dead Johnsons pay nothing -- and t
2985
2997
  // auto-scrolls (alwaysScroll) and keys/vi still scroll it when
2986
2998
  // focused -- wheel-scroll wasn't worth shells full of coordinate
2987
2999
  // bytes every time a session died hard.
2988
- tags: true // Intercept tags
3000
+ tags: true, // Intercept tags
3001
+ // Terminal-style flow (playtest 2026-08-24: "it would work if the
3002
+ // text scrolled from the bottom up"): content anchors to the
3003
+ // bottom edge and pushes upward, like a shell. Probe-verified to
3004
+ // coexist with insertBottom, tail-follow, and PgUp paging.
3005
+ valign: 'bottom'
2989
3006
  });
2990
3007
  this._logBox = logBox;
2991
3008
  // Scrolling without focus (player report: "can't scroll the game log
@@ -3093,6 +3110,8 @@ ${client.name} won't be remembering anything. Dead Johnsons pay nothing -- and t
3093
3110
  scrollable: true,
3094
3111
  alwaysScroll: true,
3095
3112
  tags: true,
3113
+ // Bottom-up flow, same as the world log (see initLogBox).
3114
+ valign: 'bottom',
3096
3115
  });
3097
3116
  this._metaBox = metaBox;
3098
3117
  // Scrolling (player report: menus render here now and PgUp/PgDn
@@ -3145,6 +3164,132 @@ ${client.name} won't be remembering anything. Dead Johnsons pay nothing -- and t
3145
3164
  this._statusBox = statusBox;
3146
3165
  screen.append(statusBox);
3147
3166
  }
3167
+ /**
3168
+ * THE MINIMAP (map-overlay wave 2026-08-24; split into a pair
3169
+ * 2026-08-25 -- player ask: "ample space to split the existing map in
3170
+ * two, one for the area, one for the room"): two small icon
3171
+ * viewports DOCKED side by side at the top of the Mechanics column --
3172
+ * not floated over the log (a float occluded log text and, being
3173
+ * numerically anchored, drifted on terminal resize; percentage
3174
+ * geometry re-solves both). The Mechanics pane shifts down while
3175
+ * EITHER is shown and takes the space back only once both hide.
3176
+ * keys:false -- a keyable box appended after the input steals focus
3177
+ * (the "eexxiitt" bug, see initInputBox). Hidden until the first
3178
+ * setMapOverlay/setRoomOverlay with content.
3179
+ */
3180
+ // 9 viewport rows + a caption row (the room name / "@ spot", moved off
3181
+ // the HUD 2026-08-25) + border.
3182
+ static MAP_DOCK_ROWS = 12;
3183
+ /** Must track the roomMapBox's `width` below -- updateExits derives
3184
+ * the inner width from it to right-justify the elevation bar. */
3185
+ static ROOM_DOCK_PCT = 0.23;
3186
+ /** Must track the mapBox's `width` below -- used to trim its caption. */
3187
+ static MAP_DOCK_PCT = 0.12;
3188
+ initMapBox(screen) {
3189
+ const mapBox = blessed.box({
3190
+ id: 'mapBox',
3191
+ top: 0,
3192
+ left: '65%',
3193
+ width: '12%',
3194
+ height: Game.MAP_DOCK_ROWS,
3195
+ border: { type: 'line' },
3196
+ style: { border: { fg: 'blue' } },
3197
+ label: ' Map ',
3198
+ tags: true,
3199
+ keys: false,
3200
+ content: '',
3201
+ hidden: true,
3202
+ });
3203
+ this._mapBox = mapBox;
3204
+ screen.append(mapBox);
3205
+ const roomMapBox = blessed.box({
3206
+ id: 'roomMapBox',
3207
+ top: 0,
3208
+ // Much wider than its district twin: this box carries the grid,
3209
+ // the elevation bar down its right side, AND (since the
3210
+ // 2026-08-25 room resize) a `large` room's full 12 cells at two
3211
+ // columns each -- the district view needs only its fixed 15-wide
3212
+ // viewport, so the space is better spent here.
3213
+ left: '77%',
3214
+ width: '23%',
3215
+ height: Game.MAP_DOCK_ROWS,
3216
+ border: { type: 'line' },
3217
+ style: { border: { fg: 'blue' } },
3218
+ label: ' Room ',
3219
+ tags: true,
3220
+ keys: false,
3221
+ content: '',
3222
+ hidden: true,
3223
+ });
3224
+ this._roomMapBox = roomMapBox;
3225
+ screen.append(roomMapBox);
3226
+ }
3227
+ /** Shifts the Mechanics pane down (a map box is shown) or back up
3228
+ * (neither is). Driven by syncMapDock, never called directly. */
3229
+ dockMap(shown) {
3230
+ if (!this._metaBox)
3231
+ return;
3232
+ this._metaBox.top = shown ? Game.MAP_DOCK_ROWS : 0;
3233
+ this._metaBox.height = shown ? `100%-${11 + Game.MAP_DOCK_ROWS}` : '100%-11';
3234
+ }
3235
+ /** Keeps the Mechanics pane's dock offset in sync with whichever
3236
+ * docked box(es) -- district, room, or both -- are currently shown. */
3237
+ syncMapDock() {
3238
+ const anyShown = (this._mapBox !== undefined && !this._mapBox.hidden)
3239
+ || (this._roomMapBox !== undefined && !this._roomMapBox.hidden);
3240
+ this.dockMap(anyShown);
3241
+ }
3242
+ /**
3243
+ * Paints (or hides) the docked DISTRICT minimap. Solo: updateExits
3244
+ * feeds it from the local scene; shared runs: SharedRunSession.route
3245
+ * feeds it from the server's per-player kind:'map' events. The
3246
+ * preference gates both this and setRoomOverlay in one place.
3247
+ */
3248
+ setMapOverlay(lines) {
3249
+ if (!this._mapBox)
3250
+ return;
3251
+ if (lines.length === 0 || !getPref('mapOverlay', true)) {
3252
+ this.hideMapOverlay();
3253
+ return;
3254
+ }
3255
+ this._mapBox.setContent(lines.join('\n'));
3256
+ this._mapBox.show();
3257
+ this.syncMapDock();
3258
+ this._screen?.render();
3259
+ }
3260
+ hideMapOverlay() {
3261
+ if (!this._mapBox)
3262
+ return;
3263
+ this._mapBox.hide();
3264
+ this.syncMapDock();
3265
+ this._screen?.render();
3266
+ }
3267
+ /**
3268
+ * Paints (or hides) the docked ROOM minimap -- the district box's
3269
+ * twin, fed by updateExits from utilities/room-view.ts. Empty
3270
+ * whenever the current room has no synthesized grid (spotless --
3271
+ * THE COMPAT RULE) or the player is circulating in it (nothing fixed
3272
+ * to center on): both read as "hide", same as an empty district.
3273
+ */
3274
+ setRoomOverlay(lines) {
3275
+ if (!this._roomMapBox)
3276
+ return;
3277
+ if (lines.length === 0 || !getPref('mapOverlay', true)) {
3278
+ this.hideRoomOverlay();
3279
+ return;
3280
+ }
3281
+ this._roomMapBox.setContent(lines.join('\n'));
3282
+ this._roomMapBox.show();
3283
+ this.syncMapDock();
3284
+ this._screen?.render();
3285
+ }
3286
+ hideRoomOverlay() {
3287
+ if (!this._roomMapBox)
3288
+ return;
3289
+ this._roomMapBox.hide();
3290
+ this.syncMapDock();
3291
+ this._screen?.render();
3292
+ }
3148
3293
  /**
3149
3294
  * Refreshes the status box from current player state. Called after any
3150
3295
  * command that can change what belongs there (currently "call"/"end-call")
@@ -3176,30 +3321,22 @@ ${client.name} won't be remembering anything. Dead Johnsons pay nothing -- and t
3176
3321
  */
3177
3322
  statusLinesFor(player) {
3178
3323
  const lines = [];
3179
- // Line 1: where you are, and the fight autopilot mode. The stance
3180
- // lives HERE -- the shortest HUD line -- because appended to the long
3181
- // readiness line it wrapped out of the box on narrower terminals and
3182
- // effectively only ever showed in the Tab announcement. Always shown,
3183
- // even MANUAL: the HUD is how players discover Tab cycles it at all
3184
- // (see utilities/auto-fight.ts). MANUAL is white, not gray -- blessed's
3324
+ // Line 1: the fight autopilot mode. The stance lives HERE -- the
3325
+ // shortest HUD line -- because appended to the long readiness line it
3326
+ // wrapped out of the box on narrower terminals and effectively only
3327
+ // ever showed in the Tab announcement. Always shown, even MANUAL: the
3328
+ // HUD is how players discover Tab cycles it at all (see
3329
+ // utilities/auto-fight.ts). MANUAL is white, not gray -- blessed's
3185
3330
  // gray is ANSI "bright black", which on a stock dark terminal palette
3186
3331
  // is illegible enough that the stance looked absent entirely.
3332
+ //
3333
+ // WHERE YOU ARE MOVED OUT (player ruling 2026-08-25): the room name
3334
+ // now captions the Map box and the "@ spot" captions the Room box,
3335
+ // each under the picture it belongs to, so the HUD stops repeating
3336
+ // what two panels already show. The breadcrumb went with it -- the
3337
+ // district map draws the way you came far better than a text trail.
3187
3338
  const stanceColor = player.autoStance === 'aggressive' ? 'red' : player.autoStance === 'guarded' ? 'yellow' : 'white';
3188
- const stance = `{${stanceColor}-fg}⚔ ${player.autoStance.toUpperCase()}{/${stanceColor}-fg}`;
3189
- // The breadcrumb, reading chronologically into the current location:
3190
- // "Neon Strip (west) > Night Market" -- origin first, the direction
3191
- // BACK to it in parens. An 18-room hub made "which way did I come in"
3192
- // a real question.
3193
- const crumb = player.cameFrom ? `${player.cameFrom.room} (${player.cameFrom.back}) > ` : '';
3194
- if (player.currentLocation) {
3195
- // "At" spots: where you stand WITHIN the room, when it has places
3196
- // to stand (see utilities/spots.ts).
3197
- const atNote = spotOf(player) ? ` @ ${player.atSpot}` : '';
3198
- lines.push(`${crumb}{bold}📍 ${player.currentLocation.name}${atNote}{/bold} | ${stance}`);
3199
- }
3200
- else {
3201
- lines.push(stance);
3202
- }
3339
+ lines.push(`{${stanceColor}-fg}⚔ ${player.autoStance.toUpperCase()}{/${stanceColor}-fg}`);
3203
3340
  // Line 2: both condition monitors -- in a game where a fight can kill
3204
3341
  // you and casting can knock you out, current damage on either track is
3205
3342
  // never something a player should have to ask for. Colors shift as
@@ -3340,7 +3477,71 @@ ${client.name} won't be remembering anything. Dead Johnsons pay nothing -- and t
3340
3477
  this.notePresenceAffectingChange();
3341
3478
  }
3342
3479
  updateExits(_room) {
3343
- // Nothing to render -- the "map" command reads live room state.
3480
+ // THE ICON OVERLAYS (map-overlay wave 2026-08-24, split 2026-08-25):
3481
+ // this hook was kept as a no-op for exactly this -- it already
3482
+ // fires on movement (go/lock/unlock, move.ts, ui.ts), scene
3483
+ // transitions, and barrier changes (solve/bypass/lock/unlock).
3484
+ // Session mode: the server's per-player kind:'map' events feed the
3485
+ // district overlay instead (SharedRunSession.route); the room box
3486
+ // has no server-pushed path yet, so it just stays hidden in a
3487
+ // shared run, same as the district box did before that wiring.
3488
+ if (!this._mapBox || this.remoteSession)
3489
+ return;
3490
+ const here = this.player.currentLocation;
3491
+ if (!here || this.player.plane === 'matrix') {
3492
+ this.hideMapOverlay();
3493
+ this.hideRoomOverlay();
3494
+ return;
3495
+ }
3496
+ const screenW = Number(this._screen?.width) || 0;
3497
+ // Each box's inner width. Derived from the screen rather than read
3498
+ // off the widget: blessed resolves percentage geometry at render
3499
+ // time, so `.width` is still the raw '23%' here. Used to right-
3500
+ // justify the elevation bar and to trim the caption rows.
3501
+ const boxWidth = screenW > 0 ? Math.floor(screenW * Game.ROOM_DOCK_PCT) - 2 : undefined;
3502
+ const mapWidth = screenW > 0 ? Math.floor(screenW * Game.MAP_DOCK_PCT) - 2 : undefined;
3503
+ const caption = (text, width) => {
3504
+ const w = width ?? text.length;
3505
+ return `{bold}${text.length > w ? `${text.slice(0, Math.max(1, w - 1))}…` : text}{/bold}`;
3506
+ };
3507
+ // The district viewport must FIT ITS BOX. It was a hardcoded 15
3508
+ // columns, which was fine while the Map box was 35% wide and
3509
+ // silently overflowed into the Room box once it shrank to 12% --
3510
+ // on a narrower terminal the spill landed inside the neighbouring
3511
+ // border and smartCSR's partial redraws smeared it into stray
3512
+ // characters (playtest 2026-08-25: "getting some artifacting 'g'";
3513
+ // ui.ts documents this same smear from column drift). Odd widths
3514
+ // keep the player marker exactly centred.
3515
+ const mapInner = mapWidth ?? 15;
3516
+ const mapView = Math.max(7, mapInner % 2 === 0 ? mapInner - 1 : mapInner);
3517
+ const mapLines = renderMapViewport(this.scene.getRooms(), here, (r, d) => this.scene.barrierSealing(r, d), {
3518
+ visited: this.player.visitedRooms,
3519
+ arEyes: this.player.hasMatrixEyes(),
3520
+ }, mapView);
3521
+ // The captions the HUD used to carry: where you are under the
3522
+ // district, where you stand under the room.
3523
+ if (mapLines.length > 0)
3524
+ mapLines.push(caption(here.name, mapWidth));
3525
+ this.setMapOverlay(mapLines);
3526
+ // A DECORATION MUST NEVER KILL THE RUN. This panel is pure derived
3527
+ // geometry -- if synthesis or rendering ever throws (a malformed
3528
+ // seed, a room shape no one anticipated), the right outcome is a
3529
+ // blank box and a log line, not a dead session mid-job.
3530
+ try {
3531
+ const roomLines = renderRoomLayoutCompact(here, this.player, {
3532
+ boxWidth,
3533
+ isOtherPlayer: a => this.scene.isHumanControlled(a),
3534
+ });
3535
+ if (roomLines.length > 0) {
3536
+ const spot = spotOf(this.player);
3537
+ roomLines.push(caption(spot ? `@ ${spot}` : '(moving through)', boxWidth));
3538
+ }
3539
+ this.setRoomOverlay(roomLines);
3540
+ }
3541
+ catch (err) {
3542
+ Logger.getInstance().write(`Room overlay render failed in ${here.name}: ${err instanceof Error ? err.stack ?? err.message : String(err)}`);
3543
+ this.hideRoomOverlay();
3544
+ }
3344
3545
  }
3345
3546
  updateInventory(_playerInventory, _currencyName = 'currency') {
3346
3547
  this.updateStatus();