@maka/maka-cli 5.123.0 → 5.123.1

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 (254) hide show
  1. package/README.md +64 -64
  2. package/bundle/typescript/package.json +120 -120
  3. package/bundle/typescript/src/README.md +64 -64
  4. package/bundle/typescript/src/commands/aws/aws.command.js +2 -2
  5. package/bundle/typescript/src/commands/aws/ci.sub.cmd.js +5 -5
  6. package/bundle/typescript/src/commands/aws/ckp.sub.cmd.js +12 -12
  7. package/bundle/typescript/src/commands/aws/csg.sub.cmd.js +3 -3
  8. package/bundle/typescript/src/commands/aws/di.sub.cmd.js +8 -8
  9. package/bundle/typescript/src/commands/aws/rkp.sub.cmd.js +5 -5
  10. package/bundle/typescript/src/commands/aws/sth.sub.cmd.js +3 -3
  11. package/bundle/typescript/src/commands/aws/ti.sub.cmd.js +5 -5
  12. package/bundle/typescript/src/commands/build/build.js +16 -16
  13. package/bundle/typescript/src/commands/build/docker.sub.cmd.js +9 -9
  14. package/bundle/typescript/src/commands/create.js +36 -36
  15. package/bundle/typescript/src/commands/debug.js +4 -4
  16. package/bundle/typescript/src/commands/deploy/deploy.command.js +2 -2
  17. package/bundle/typescript/src/commands/deploy/galaxy.sub.cmd.js +2 -2
  18. package/bundle/typescript/src/commands/deploy/github.sub.cmd.js +8 -8
  19. package/bundle/typescript/src/commands/deploy/ubuntu.sub.cmd.js +2 -2
  20. package/bundle/typescript/src/commands/env/env.command.js +8 -8
  21. package/bundle/typescript/src/commands/env/set.sub.cmd.js +11 -11
  22. package/bundle/typescript/src/commands/game/sideQuest/commands/go.js +1 -1
  23. package/bundle/typescript/src/commands/game/sideQuest/commands/search.js +9 -9
  24. package/bundle/typescript/src/commands/game/sideQuest/commands/source.js +7 -7
  25. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.js +443 -443
  26. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-factory.js +6 -6
  27. package/bundle/typescript/src/commands/game/sideQuest/game.js +1 -1
  28. package/bundle/typescript/src/commands/game/sideQuest/models/npc.js +206 -206
  29. package/bundle/typescript/src/commands/game/sideQuest/models/room.js +9 -9
  30. package/bundle/typescript/src/commands/game/sideQuest/scenes/scene1.json +556 -556
  31. package/bundle/typescript/src/commands/game/sideQuest/scenes/scene2.json +1447 -1447
  32. package/bundle/typescript/src/commands/game/sideQuest/utilities/ephemeral.js +14 -14
  33. package/bundle/typescript/src/commands/game/sideQuest-backlog.sub.cmd.js +2 -2
  34. package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js +2 -2
  35. package/bundle/typescript/src/commands/generate.js +2 -2
  36. package/bundle/typescript/src/commands/lint.js +10 -10
  37. package/bundle/typescript/src/commands/maka.cmd.js +26 -26
  38. package/bundle/typescript/src/commands/murder.js +14 -14
  39. package/bundle/typescript/src/commands/proxy.js +13 -13
  40. package/bundle/typescript/src/commands/remote/reconfig.sub.cmd.js +6 -6
  41. package/bundle/typescript/src/commands/run/docker.sub.cmd.js +11 -11
  42. package/bundle/typescript/src/commands/run/run.command.js +24 -24
  43. package/bundle/typescript/src/commands/set/global.sub.cmd.js +8 -8
  44. package/bundle/typescript/src/commands/set/local.sub.cmd.js +2 -2
  45. package/bundle/typescript/src/commands/set/set.command.js +3 -3
  46. package/bundle/typescript/src/commands/testCmd/test.command.js +2 -2
  47. package/bundle/typescript/src/exec.js +0 -0
  48. package/bundle/typescript/src/generators/api.js +11 -11
  49. package/bundle/typescript/src/generators/collection.js +6 -6
  50. package/bundle/typescript/src/generators/hook.js +10 -10
  51. package/bundle/typescript/src/generators/kits/auth/auth.generator.js +2 -2
  52. package/bundle/typescript/src/generators/kits/auth/auth0-meteor.auth.gen.js +612 -612
  53. package/bundle/typescript/src/generators/kits/auth/basic-meteor.auth.gen.js +48 -48
  54. package/bundle/typescript/src/generators/kits/auth/provider.auth.gen.js +12 -12
  55. package/bundle/typescript/src/generators/kits/esri/esri.generator.js +3 -3
  56. package/bundle/typescript/src/generators/kits/esri/map.esri.gen.js +7 -7
  57. package/bundle/typescript/src/generators/kits/frames/frames.generator.js +16 -16
  58. package/bundle/typescript/src/generators/kits/mui/auth.mui.gen.js +2 -2
  59. package/bundle/typescript/src/generators/kits/mui/auth0.mui.gen.js +5 -5
  60. package/bundle/typescript/src/generators/kits/mui/frame.mui.gen.js +4 -4
  61. package/bundle/typescript/src/generators/kits/mui/mui.generator.js +22 -22
  62. package/bundle/typescript/src/generators/services/translation.js +5 -5
  63. package/bundle/typescript/src/templates/aws/cloudformation/create-ec2-instance.template +14 -14
  64. package/bundle/typescript/src/templates/meteor/api/api.js +20 -20
  65. package/bundle/typescript/src/templates/meteor/api/api.js.ts +20 -20
  66. package/bundle/typescript/src/templates/meteor/api/apollo-gateway.js +50 -50
  67. package/bundle/typescript/src/templates/meteor/api/apollo-gateway.js.ts +55 -55
  68. package/bundle/typescript/src/templates/meteor/api/graphql-api.js +63 -63
  69. package/bundle/typescript/src/templates/meteor/api/graphql-api.js.ts +69 -69
  70. package/bundle/typescript/src/templates/meteor/api/methods.js +39 -39
  71. package/bundle/typescript/src/templates/meteor/api/methods.js.ts +40 -40
  72. package/bundle/typescript/src/templates/meteor/api/register-api.js +3 -3
  73. package/bundle/typescript/src/templates/meteor/api/register-api.js.ts +3 -3
  74. package/bundle/typescript/src/templates/meteor/api/resolvers.js +9 -9
  75. package/bundle/typescript/src/templates/meteor/api/resolvers.js.ts +9 -9
  76. package/bundle/typescript/src/templates/meteor/api/typeDefs.js +6 -6
  77. package/bundle/typescript/src/templates/meteor/api/typeDefs.js.ts +6 -6
  78. package/bundle/typescript/src/templates/meteor/app/client/body.html +3 -3
  79. package/bundle/typescript/src/templates/meteor/app/client/head.html +12 -12
  80. package/bundle/typescript/src/templates/meteor/app/client/main.js +15 -15
  81. package/bundle/typescript/src/templates/meteor/app/client/main.js.jsx +15 -15
  82. package/bundle/typescript/src/templates/meteor/app/client/main.js.ts +17 -17
  83. package/bundle/typescript/src/templates/meteor/app/client/main.js.tsx +17 -17
  84. package/bundle/typescript/src/templates/meteor/app/imports/startup/client/index.js +20 -20
  85. package/bundle/typescript/src/templates/meteor/app/imports/startup/client/index.js.jsx +107 -107
  86. package/bundle/typescript/src/templates/meteor/app/imports/startup/client/index.js.ts +20 -20
  87. package/bundle/typescript/src/templates/meteor/app/imports/startup/client/index.js.tsx +108 -108
  88. package/bundle/typescript/src/templates/meteor/app/imports/startup/client/routes.js +39 -39
  89. package/bundle/typescript/src/templates/meteor/app/imports/startup/client/routes.js.jsx +33 -33
  90. package/bundle/typescript/src/templates/meteor/app/imports/startup/client/routes.js.ts +24 -24
  91. package/bundle/typescript/src/templates/meteor/app/imports/startup/client/routes.js.tsx +33 -33
  92. package/bundle/typescript/src/templates/meteor/app/imports/startup/client/templates.js +9 -9
  93. package/bundle/typescript/src/templates/meteor/app/imports/startup/client/templates.js.jsx +9 -9
  94. package/bundle/typescript/src/templates/meteor/app/imports/startup/client/templates.js.ts +9 -9
  95. package/bundle/typescript/src/templates/meteor/app/imports/startup/client/templates.js.tsx +9 -9
  96. package/bundle/typescript/src/templates/meteor/app/imports/startup/lib/index.js +1 -1
  97. package/bundle/typescript/src/templates/meteor/app/imports/startup/lib/index.js.jsx +20 -20
  98. package/bundle/typescript/src/templates/meteor/app/imports/startup/lib/index.js.ts +1 -1
  99. package/bundle/typescript/src/templates/meteor/app/imports/startup/lib/index.js.tsx +20 -20
  100. package/bundle/typescript/src/templates/meteor/app/imports/startup/lib/routes.js.jsx +28 -28
  101. package/bundle/typescript/src/templates/meteor/app/imports/startup/lib/routes.js.tsx +28 -28
  102. package/bundle/typescript/src/templates/meteor/app/imports/startup/server/index.js +1 -1
  103. package/bundle/typescript/src/templates/meteor/app/imports/startup/server/index.js.jsx +95 -95
  104. package/bundle/typescript/src/templates/meteor/app/imports/startup/server/index.js.tsx +98 -98
  105. package/bundle/typescript/src/templates/meteor/app/imports/ui/test-helpers.js +24 -24
  106. package/bundle/typescript/src/templates/meteor/app/imports/ui/test-helpers.js.ts +24 -24
  107. package/bundle/typescript/src/templates/meteor/app/lib/main.js +3 -3
  108. package/bundle/typescript/src/templates/meteor/app/lib/main.js.jsx +3 -3
  109. package/bundle/typescript/src/templates/meteor/app/lib/main.js.ts +3 -3
  110. package/bundle/typescript/src/templates/meteor/app/lib/main.js.tsx +3 -3
  111. package/bundle/typescript/src/templates/meteor/app/maka.d.ts +533 -533
  112. package/bundle/typescript/src/templates/meteor/app/meteor.d.ts +181 -181
  113. package/bundle/typescript/src/templates/meteor/app/public/manifest.json +27 -27
  114. package/bundle/typescript/src/templates/meteor/app/public/sw.js +30 -30
  115. package/bundle/typescript/src/templates/meteor/app/public/sw.js.jsx +30 -30
  116. package/bundle/typescript/src/templates/meteor/app/public/sw.js.ts +30 -30
  117. package/bundle/typescript/src/templates/meteor/app/public/sw.js.tsx +30 -30
  118. package/bundle/typescript/src/templates/meteor/app/server/helmet-csp.js +179 -179
  119. package/bundle/typescript/src/templates/meteor/app/server/helmet-csp.js.jsx +179 -179
  120. package/bundle/typescript/src/templates/meteor/app/server/helmet-csp.js.ts +179 -179
  121. package/bundle/typescript/src/templates/meteor/app/server/helmet-csp.js.tsx +179 -179
  122. package/bundle/typescript/src/templates/meteor/app/server/main.js +13 -13
  123. package/bundle/typescript/src/templates/meteor/app/server/main.js.jsx +13 -13
  124. package/bundle/typescript/src/templates/meteor/app/server/main.js.ts +14 -14
  125. package/bundle/typescript/src/templates/meteor/app/server/main.js.tsx +14 -14
  126. package/bundle/typescript/src/templates/meteor/app/tsconfig.json +42 -42
  127. package/bundle/typescript/src/templates/meteor/collection/collection.js +51 -51
  128. package/bundle/typescript/src/templates/meteor/collection/collection.js.ts +55 -55
  129. package/bundle/typescript/src/templates/meteor/collection/tests.js +27 -27
  130. package/bundle/typescript/src/templates/meteor/collection/tests.js.ts +27 -27
  131. package/bundle/typescript/src/templates/meteor/config/deploy.sh.template +101 -101
  132. package/bundle/typescript/src/templates/meteor/config/docker-compose.yaml +17 -17
  133. package/bundle/typescript/src/templates/meteor/config/nginx.conf.template +31 -31
  134. package/bundle/typescript/src/templates/meteor/config/pm2.config.js +27 -27
  135. package/bundle/typescript/src/templates/meteor/config/process.env +5 -5
  136. package/bundle/typescript/src/templates/meteor/config/settings.json +11 -11
  137. package/bundle/typescript/src/templates/meteor/config/ssh.json +6 -6
  138. package/bundle/typescript/src/templates/meteor/dbc/config.js +70 -70
  139. package/bundle/typescript/src/templates/meteor/dbc/config.js.ts +70 -70
  140. package/bundle/typescript/src/templates/meteor/dbc/conn.js +37 -37
  141. package/bundle/typescript/src/templates/meteor/dbc/conn.js.ts +37 -37
  142. package/bundle/typescript/src/templates/meteor/dbc/register-dbc.js +3 -3
  143. package/bundle/typescript/src/templates/meteor/dbc/register-dbc.js.ts +3 -3
  144. package/bundle/typescript/src/templates/meteor/github/workflows/deploy.yaml +150 -150
  145. package/bundle/typescript/src/templates/meteor/method/method.js +48 -48
  146. package/bundle/typescript/src/templates/meteor/method/method.js.ts +48 -48
  147. package/bundle/typescript/src/templates/meteor/package/package.js +37 -37
  148. package/bundle/typescript/src/templates/meteor/package/package.js.jsx +37 -37
  149. package/bundle/typescript/src/templates/meteor/package/package.js.ts +36 -36
  150. package/bundle/typescript/src/templates/meteor/package/package.js.tsx +37 -37
  151. package/bundle/typescript/src/templates/meteor/package/tests/client/package.js +5 -5
  152. package/bundle/typescript/src/templates/meteor/package/tests/client/package.js.jsx +5 -5
  153. package/bundle/typescript/src/templates/meteor/package/tests/client/package.js.ts +5 -5
  154. package/bundle/typescript/src/templates/meteor/package/tests/client/package.js.tsx +5 -5
  155. package/bundle/typescript/src/templates/meteor/package/tests/server/package.js +5 -5
  156. package/bundle/typescript/src/templates/meteor/package/tests/server/package.js.jsx +5 -5
  157. package/bundle/typescript/src/templates/meteor/package/tests/server/package.js.ts +5 -5
  158. package/bundle/typescript/src/templates/meteor/package/tests/server/package.js.tsx +5 -5
  159. package/bundle/typescript/src/templates/meteor/project/.maka/config.json +29 -29
  160. package/bundle/typescript/src/templates/meteor/project/README.md +33 -33
  161. package/bundle/typescript/src/templates/meteor/project/build/README +4 -4
  162. package/bundle/typescript/src/templates/meteor/project/gitignore +10 -10
  163. package/bundle/typescript/src/templates/meteor/project/package.json +29 -29
  164. package/bundle/typescript/src/templates/meteor/publish/publish.js +7 -7
  165. package/bundle/typescript/src/templates/meteor/publish/publish.js.ts +7 -7
  166. package/bundle/typescript/src/templates/meteor/service/logger/logger.js +27 -27
  167. package/bundle/typescript/src/templates/meteor/service/logger/logger.js.ts +27 -27
  168. package/bundle/typescript/src/templates/meteor/stylesheet/stylesheet.css +5 -5
  169. package/bundle/typescript/src/templates/meteor/stylesheet/stylesheet.css.less +5 -5
  170. package/bundle/typescript/src/templates/meteor/template/template-tests.js +1 -1
  171. package/bundle/typescript/src/templates/meteor/template/template-tests.js.jsx +55 -55
  172. package/bundle/typescript/src/templates/meteor/template/template-tests.js.ts +1 -1
  173. package/bundle/typescript/src/templates/meteor/template/template-tests.js.tsx +55 -55
  174. package/bundle/typescript/src/templates/meteor/template/template.css +3 -3
  175. package/bundle/typescript/src/templates/meteor/template/template.css.less +3 -3
  176. package/bundle/typescript/src/templates/meteor/template/template.css.scss +3 -3
  177. package/bundle/typescript/src/templates/meteor/template/template.html +5 -5
  178. package/bundle/typescript/src/templates/meteor/template/template.js +20 -20
  179. package/bundle/typescript/src/templates/meteor/template/template.js.jsx +77 -77
  180. package/bundle/typescript/src/templates/meteor/template/template.js.ts +1 -1
  181. package/bundle/typescript/src/templates/meteor/template/template.js.tsx +89 -89
  182. package/bundle/typescript/src/templates/react/component/component.css +6 -6
  183. package/bundle/typescript/src/templates/react/component/component.css.less +6 -6
  184. package/bundle/typescript/src/templates/react/component/component.css.scss +3 -3
  185. package/bundle/typescript/src/templates/react/component/component.js.jsx +59 -59
  186. package/bundle/typescript/src/templates/react/component/component.js.tsx +65 -65
  187. package/bundle/typescript/src/templates/react/hook/hook.css +3 -3
  188. package/bundle/typescript/src/templates/react/hook/hook.css.scss +3 -3
  189. package/bundle/typescript/src/templates/react/hook/hook.js.jsx +19 -19
  190. package/bundle/typescript/src/templates/react/hook/hook.js.tsx +19 -19
  191. package/bundle/typescript/src/templates/react/kit/auth/provider/authentication-provider.js.jsx +306 -306
  192. package/bundle/typescript/src/templates/react/kit/auth/provider/authentication-provider.js.tsx +350 -350
  193. package/bundle/typescript/src/templates/react/kit/auth/service/auth0-client.js.jsx +178 -178
  194. package/bundle/typescript/src/templates/react/kit/auth/service/auth0-client.js.tsx +178 -178
  195. package/bundle/typescript/src/templates/react/kit/auth/service/auth0-config.js.jsx +59 -59
  196. package/bundle/typescript/src/templates/react/kit/auth/service/auth0-config.js.tsx +67 -67
  197. package/bundle/typescript/src/templates/react/kit/auth/service/auth0-methods.js.jsx +273 -273
  198. package/bundle/typescript/src/templates/react/kit/auth/service/auth0-methods.js.tsx +275 -275
  199. package/bundle/typescript/src/templates/react/kit/auth/service/auth0-validator.js.jsx +182 -182
  200. package/bundle/typescript/src/templates/react/kit/auth/service/auth0-validator.js.tsx +199 -199
  201. package/bundle/typescript/src/templates/react/kit/auth/service/meteor-auth-service.js.jsx +138 -138
  202. package/bundle/typescript/src/templates/react/kit/auth/service/meteor-auth-service.js.tsx +153 -153
  203. package/bundle/typescript/src/templates/react/kit/esri/map/basic-map.js.jsx +29 -29
  204. package/bundle/typescript/src/templates/react/kit/esri/map/basic-map.js.tsx +32 -32
  205. package/bundle/typescript/src/templates/react/kit/frames/frames-demo.css +63 -63
  206. package/bundle/typescript/src/templates/react/kit/frames/frames-demo.jsx +153 -153
  207. package/bundle/typescript/src/templates/react/kit/frames/frames-demo.tsx +164 -164
  208. package/bundle/typescript/src/templates/react/kit/frames/workspace-manager.css +105 -105
  209. package/bundle/typescript/src/templates/react/kit/frames/workspace-manager.jsx +158 -158
  210. package/bundle/typescript/src/templates/react/kit/frames/workspace-manager.tsx +166 -166
  211. package/bundle/typescript/src/templates/react/kit/mui/auth/forgot-password/basic-forgot-password-page.js.jsx +34 -34
  212. package/bundle/typescript/src/templates/react/kit/mui/auth/forgot-password/basic-forgot-password-page.js.tsx +33 -33
  213. package/bundle/typescript/src/templates/react/kit/mui/auth/login/basic-login-page.js.jsx +53 -53
  214. package/bundle/typescript/src/templates/react/kit/mui/auth/login/basic-login-page.js.tsx +53 -53
  215. package/bundle/typescript/src/templates/react/kit/mui/auth/logout/basic-logout-page.js.jsx +25 -25
  216. package/bundle/typescript/src/templates/react/kit/mui/auth/logout/basic-logout-page.js.tsx +25 -25
  217. package/bundle/typescript/src/templates/react/kit/mui/auth/password-reset/basic-password-reset-page.js.jsx +41 -41
  218. package/bundle/typescript/src/templates/react/kit/mui/auth/password-reset/basic-password-reset-page.js.tsx +34 -34
  219. package/bundle/typescript/src/templates/react/kit/mui/auth/register/basic-register-page.js.jsx +33 -33
  220. package/bundle/typescript/src/templates/react/kit/mui/auth/register/basic-register-page.js.tsx +33 -33
  221. package/bundle/typescript/src/templates/react/kit/mui/auth0/auth-callback.js.jsx +71 -71
  222. package/bundle/typescript/src/templates/react/kit/mui/auth0/auth-callback.js.tsx +71 -71
  223. package/bundle/typescript/src/templates/react/kit/mui/auth0/auth0-account-settings.js.jsx +123 -123
  224. package/bundle/typescript/src/templates/react/kit/mui/auth0/auth0-account-settings.js.tsx +123 -123
  225. package/bundle/typescript/src/templates/react/kit/mui/auth0/auth0-login-button.js.jsx +56 -56
  226. package/bundle/typescript/src/templates/react/kit/mui/auth0/auth0-login-button.js.tsx +74 -74
  227. package/bundle/typescript/src/templates/react/kit/mui/frame/app-bars/basic-app-bar.js.jsx +43 -43
  228. package/bundle/typescript/src/templates/react/kit/mui/frame/app-bars/basic-app-bar.js.tsx +43 -43
  229. package/bundle/typescript/src/templates/react/kit/mui/frame/drawers/basic-drawer.js.jsx +121 -121
  230. package/bundle/typescript/src/templates/react/kit/mui/frame/drawers/basic-drawer.js.tsx +117 -117
  231. package/bundle/typescript/src/templates/react/kit/mui/frame/footers/basic-sticky-footer.js.jsx +41 -41
  232. package/bundle/typescript/src/templates/react/kit/mui/frame/footers/basic-sticky-footer.js.tsx +41 -41
  233. package/bundle/typescript/src/templates/react/route/route.js +8 -8
  234. package/bundle/typescript/src/templates/react/route/route.js.jsx +5 -5
  235. package/bundle/typescript/src/templates/react/route/route.js.ts +8 -8
  236. package/bundle/typescript/src/templates/react/route/route.js.tsx +5 -5
  237. package/bundle/typescript/src/templates/react/test/test.js +1 -1
  238. package/bundle/typescript/src/templates/react/test/test.js.jsx +40 -40
  239. package/bundle/typescript/src/templates/react/test/test.js.ts +1 -1
  240. package/bundle/typescript/src/templates/react/test/test.js.tsx +40 -40
  241. package/bundle/typescript/src/templates/service/docker/Dockerfile +54 -54
  242. package/bundle/typescript/src/templates/service/eslint/babel.config.js +16 -16
  243. package/bundle/typescript/src/templates/service/eslint/config.eslint.js +69 -69
  244. package/bundle/typescript/src/templates/service/i18n/i18n.js +33 -33
  245. package/bundle/typescript/src/templates/service/i18n/i18n.js.ts +33 -33
  246. package/bundle/typescript/src/templates/service/i18n/locales.js +3 -3
  247. package/bundle/typescript/src/templates/service/i18n/locales.js.ts +3 -3
  248. package/bundle/typescript/src/templates/service/openssl/openssl.conf +22 -22
  249. package/bundle/typescript/src/templates/service/test/jest/jest.config.js +24 -24
  250. package/bundle/typescript/src/templates/service/test/jest/jest.setup.js +7 -7
  251. package/bundle/typescript/src/tools/mpi/sdk-runtime.d.ts +1 -0
  252. package/bundle/typescript/src/tools/mpi/sdk-runtime.js +29 -0
  253. package/bundle/typescript/src/tools/mpi/sdk-runtime.js.map +1 -1
  254. package/package.json +120 -120
@@ -1,556 +1,556 @@
1
- {
2
- "name": "Seattle Underground",
3
- "story": "A quick job in the Redmond Barrens: Mr. Krow is sitting on a datachip that keys the Lucky Chummer casino, and every kind of runner has an angle on getting it -- muscle, magic, wires, or words.",
4
- "residenceTiers": [
5
- "Street",
6
- "Squatter",
7
- "Low",
8
- "Middle",
9
- "High",
10
- "Luxury"
11
- ],
12
- "currency": {
13
- "type": "nuyen",
14
- "authorityRoomTags": [
15
- "Bank"
16
- ]
17
- },
18
- "player": {
19
- "name": "Maka",
20
- "startLocation": "Barrens Apartment",
21
- "lifestyleChoices": [
22
- {
23
- "type": "residence",
24
- "metadata": {
25
- "tier": "Street",
26
- "location": "Barrens Apartment"
27
- }
28
- }
29
- ],
30
- "startingItems": [
31
- {
32
- "name": "Ares Light Fire 70",
33
- "description": "A small, concealable light pistol favored by shadowrunners on a budget.",
34
- "size": "Small",
35
- "category": "RangedWeapon",
36
- "shape": "Pistol",
37
- "color": "Black",
38
- "texture": "Matte",
39
- "rating": "Common",
40
- "weight": 1.2
41
- },
42
- {
43
- "name": "Armor Jacket",
44
- "description": "A rugged armored jacket with built-in smartweave. Offers decent protection without looking too suspicious.",
45
- "size": "Large",
46
- "category": "Armor",
47
- "shape": "Jacket",
48
- "color": "Dark Green",
49
- "texture": "Kevlar",
50
- "rating": "Standard",
51
- "weight": 3.5
52
- },
53
- {
54
- "name": "Meta Link",
55
- "description": "A cheap but functional commlink. You hope it doesn't get hacked.",
56
- "size": "Tiny",
57
- "category": "Commlink",
58
- "shape": "Rectangle",
59
- "color": "Gray",
60
- "texture": "Plastic",
61
- "rating": "Common",
62
- "weight": 0.1
63
- },
64
- {
65
- "name": "Starter Credstick",
66
- "description": "A basic credstick loaded with some nuyen for expenses.",
67
- "size": "Small",
68
- "category": "Credstick",
69
- "shape": "Cylinder",
70
- "color": "Silver",
71
- "texture": "Smooth",
72
- "rating": "Common",
73
- "weight": 0.2,
74
- "currencyAmount": 250
75
- },
76
- {
77
- "name": "Urban Explorer Boots",
78
- "description": "Sturdy street boots with impact gel soles and reinforced toes.",
79
- "size": "Medium",
80
- "category": "Boots",
81
- "shape": "Boots",
82
- "color": "Black",
83
- "texture": "Rugged",
84
- "rating": "Common",
85
- "weight": 2.0
86
- },
87
- {
88
- "name": "Glasses (Capacity 3)",
89
- "description": "Ordinary frames with room for three enhancements. Nobody looks twice.",
90
- "size": "Tiny",
91
- "category": "Glasses",
92
- "shape": "Glasses",
93
- "color": "Black",
94
- "texture": "Plastic",
95
- "rating": "Common",
96
- "weight": 0.1
97
- }
98
- ]
99
- },
100
- "rooms": [
101
- {
102
- "name": "Barrens Apartment",
103
- "description": "A grimy studio in the heart of the Redmond Barrens. The synth-leather couch sags by the window, the door barely locks, and a dead mage's bookshelf still holds a few things worth having.",
104
- "tags": [
105
- "residence"
106
- ],
107
- "size": "small",
108
- "spots": [
109
- {
110
- "name": "door"
111
- },
112
- {
113
- "name": "couch"
114
- },
115
- {
116
- "name": "bookshelf"
117
- }
118
- ],
119
- "supportedLifestyles": {
120
- "residenceTypes": [
121
- "Street",
122
- "Squatter"
123
- ]
124
- },
125
- "exits": [
126
- {
127
- "direction": "north",
128
- "targetRoom": "Redmond Safehouse"
129
- }
130
- ],
131
- "isStartRoom": true
132
- },
133
- {
134
- "name": "Redmond Safehouse",
135
- "description": "A hidden bolthole where four tunnels meet at a scraped-clear entryway -- gear cache on one wall, a card sharp's abandoned bunk on the other. Every direction out of here leads somewhere that will test a different part of you.",
136
- "tags": [
137
- "residence"
138
- ],
139
- "size": "medium",
140
- "spots": [
141
- {
142
- "name": "entryway"
143
- },
144
- {
145
- "name": "gear cache"
146
- },
147
- {
148
- "name": "bunk"
149
- }
150
- ],
151
- "supportedLifestyles": {
152
- "residenceTypes": [
153
- "Low"
154
- ]
155
- },
156
- "exits": [
157
- {
158
- "direction": "south",
159
- "targetRoom": "Barrens Apartment"
160
- },
161
- {
162
- "direction": "north",
163
- "targetRoom": "Krow's Den"
164
- },
165
- {
166
- "direction": "east",
167
- "targetRoom": "Grid Vault"
168
- },
169
- {
170
- "direction": "west",
171
- "targetRoom": "Chapel Alcove"
172
- }
173
- ]
174
- },
175
- {
176
- "name": "Krow's Den",
177
- "description": "The fixer's office. Smells like cigars and secrets. Mr. Krow watches the door from behind a scarred steel desk, one hand always below the desktop.",
178
- "owner": "Mr. Krow",
179
- "size": "small",
180
- "spots": [
181
- {
182
- "name": "door"
183
- },
184
- {
185
- "name": "desk"
186
- }
187
- ],
188
- "supportedLifestyles": {
189
- "employmentRoles": [
190
- "Fixer"
191
- ]
192
- },
193
- "exits": [
194
- {
195
- "direction": "east",
196
- "targetRoom": "Lucky Chummer",
197
- "keyRequired": "Krow's Datachip"
198
- }
199
- ]
200
- },
201
- {
202
- "name": "Lucky Chummer",
203
- "description": "A neon casino buzzing with illicit energy. Cards snap at the tables, chips clatter down the bar rail, and a frayed cord hangs across the disused stair at the back.",
204
- "size": "large",
205
- "spots": [
206
- {
207
- "name": "entrance"
208
- },
209
- {
210
- "name": "card tables"
211
- },
212
- {
213
- "name": "bar rail"
214
- },
215
- {
216
- "name": "roped stair"
217
- }
218
- ],
219
- "supportedLifestyles": {
220
- "habitTags": [
221
- "Gambling"
222
- ]
223
- }
224
- },
225
- {
226
- "name": "Grid Vault",
227
- "description": "A humming server room jury-rigged into the Barrens power grid. The room's host stands over it on the grid, heavy and lit; the racks it guards are another matter -- matte-black, no antenna in sight, and whatever lives in THEM doesn't talk to the wireless world.",
228
- "hasNode": true,
229
- "hostRating": 9,
230
- "nodeAccess": "wired",
231
- "size": "small",
232
- "spots": [
233
- {
234
- "name": "door"
235
- },
236
- {
237
- "name": "server racks",
238
- "tags": [
239
- "cover-partial"
240
- ]
241
- }
242
- ]
243
- },
244
- {
245
- "name": "Chapel Alcove",
246
- "description": "A burned-out chapel annex: past the threshold, a scorched shrine still ringed by chalk sigils that never quite wash out. The air hums against the back of your teeth.",
247
- "warded": true,
248
- "size": "small",
249
- "spots": [
250
- {
251
- "name": "threshold"
252
- },
253
- {
254
- "name": "shrine"
255
- }
256
- ]
257
- }
258
- ],
259
- "npcs": [
260
- {
261
- "description": "Mr. Krow is a territorial fixer -- dangerous if attacked, and he will chase stolen property, but he respects nerve: a good pitch, a real payment, or an honest win at his own table can all move him. He is guarding the datachip that keys the Lucky Chummer.",
262
- "dialogue": [
263
- "I've got what you need -- if you can pay, or if you can impress me.",
264
- "The chip stays with me until somebody gives me a reason.",
265
- "The shadows don't lie, chummer."
266
- ],
267
- "player": {
268
- "name": "Mr. Krow",
269
- "startLocation": "Krow's Den",
270
- "startSpot": "desk",
271
- "lifestyleChoices": [
272
- {
273
- "type": "employment",
274
- "metadata": {
275
- "jobTitle": "Fixer"
276
- }
277
- }
278
- ],
279
- "combat": {
280
- "body": 5,
281
- "agility": 5,
282
- "reaction": 4,
283
- "combatSkill": 4,
284
- "strength": 4,
285
- "willpower": 3,
286
- "logic": 3,
287
- "intuition": 3,
288
- "charisma": 3,
289
- "skills": {
290
- "automatics": 5, "pistols": 5, "longarms": 5,
291
- "unarmed": 4,
292
- "perception": 3,
293
- "negotiation": 3,
294
- "intimidation": 4
295
- }
296
- }
297
- }
298
- },
299
- {
300
- "description": "Salli Vex tends bar at the Lucky Chummer and hears everything. She won't cross Krow for free, but she likes a good talker and knows who owes the house, how Krow plays his own table, and what really sits in the Grid Vault.",
301
- "dialogue": [
302
- "First drink's watered down. So is the second.",
303
- "Krow keeps his door open. Doesn't mean you're invited through it.",
304
- "Everything in this place is rigged, sugar. Including me."
305
- ],
306
- "player": {
307
- "name": "Salli Vex",
308
- "startLocation": "Lucky Chummer",
309
- "startSpot": "bar rail",
310
- "lifestyleChoices": [],
311
- "combat": {
312
- "body": 3,
313
- "agility": 3,
314
- "reaction": 3,
315
- "combatSkill": 2,
316
- "charisma": 5,
317
- "intuition": 4,
318
- "skills": {
319
- "negotiation": 4,
320
- "con": 4,
321
- "perception": 4
322
- }
323
- }
324
- }
325
- },
326
- {
327
- "plane": "matrix",
328
- "description": "Static Howler is the Grid Vault's custom ice: a shrieking countermeasure that treats every persona in its host as prey. It cannot leave the host and cannot be reasoned with.",
329
- "dialogue": [
330
- "UNREGISTERED PERSONA. PURGE CYCLE INITIATED.",
331
- "static. static. STATIC."
332
- ],
333
- "player": {
334
- "name": "Static Howler",
335
- "startLocation": "Grid Vault",
336
- "lifestyleChoices": [],
337
- "combat": {
338
- "body": 3,
339
- "agility": 3,
340
- "reaction": 4,
341
- "combatSkill": 4,
342
- "willpower": 4,
343
- "logic": 5,
344
- "intuition": 4
345
- }
346
- }
347
- },
348
- {
349
- "plane": "astral",
350
- "description": "The Ash Sister is a mournful fire spirit bound to the burned chapel. She speaks in embers to anyone who can reach the astral, trades riddles for company, and burns anything that threatens her altar.",
351
- "dialogue": [
352
- "You walk in two worlds. Sit. The living so rarely visit.",
353
- "The ward was mine before the fire. It will be mine after you.",
354
- "Ash remembers everything it used to be."
355
- ],
356
- "player": {
357
- "name": "Ash Sister",
358
- "startLocation": "Chapel Alcove",
359
- "startSpot": "shrine",
360
- "lifestyleChoices": [],
361
- "combat": {
362
- "body": 4,
363
- "agility": 3,
364
- "reaction": 4,
365
- "combatSkill": 3,
366
- "willpower": 5,
367
- "intuition": 4,
368
- "magic": 5
369
- }
370
- }
371
- }
372
- ],
373
- "items": [
374
- {
375
- "name": "Krow's Datachip",
376
- "description": "An encrypted datachip that grants access to the Lucky Chummer. Its casing is etched with the Krow Industries logo.",
377
- "size": "Tiny",
378
- "category": "Key",
379
- "shape": "Square",
380
- "color": "Black",
381
- "texture": "Glossy",
382
- "rating": "Common",
383
- "weight": 0.05,
384
- "heldBy": "Mr. Krow",
385
- "owner": "Mr. Krow"
386
- },
387
- {
388
- "name": "Certified Credstick",
389
- "description": "Black-market certified nuyen chip.",
390
- "size": "Small",
391
- "category": "CurrencyContainer",
392
- "shape": "Rectangle",
393
- "color": "Silver",
394
- "texture": "Smooth",
395
- "rating": "Standard",
396
- "weight": 0.2,
397
- "currencyAmount": 500,
398
- "room": "Krow's Den",
399
- "atSpot": "desk",
400
- "owner": "Mr. Krow"
401
- },
402
- {
403
- "name": "Ares Light Fire 70",
404
- "description": "A small, concealable light pistol favored by shadowrunners on a budget.",
405
- "size": "Small",
406
- "category": "RangedWeapon",
407
- "shape": "Pistol",
408
- "color": "Black",
409
- "texture": "Matte",
410
- "rating": "Common",
411
- "weight": 1.2,
412
- "heldBy": "Mr. Krow",
413
- "owner": "Mr. Krow",
414
- "transferable": false
415
- },
416
- {
417
- "name": "Armor Jacket",
418
- "description": "A rugged armored jacket with built-in smartweave.",
419
- "size": "Large",
420
- "category": "Armor",
421
- "shape": "Jacket",
422
- "color": "Dark Green",
423
- "texture": "Kevlar",
424
- "rating": "Standard",
425
- "weight": 3.5,
426
- "heldBy": "Mr. Krow",
427
- "owner": "Mr. Krow",
428
- "transferable": false
429
- },
430
- {
431
- "name": "Battered Grimoire",
432
- "description": "A water-stained spellbook, its margins crowded with a dead mage's handwriting. The formulas for Manabolt, Heal, and Armor are still legible.",
433
- "details": "The legible formulas: Manabolt (hurl raw mana at a target -- armor won't save them), Heal (knit your own wounds closed), Armor (a sustained protective weave). Every casting exacts drain from the caster.",
434
- "size": "Small",
435
- "category": "Grimoire",
436
- "shape": "Book",
437
- "color": "Faded Black",
438
- "texture": "Water-Stained Leather",
439
- "rating": "Common",
440
- "weight": 1.5,
441
- "room": "Barrens Apartment",
442
- "atSpot": "bookshelf"
443
- },
444
- {
445
- "name": "Jade Focus",
446
- "description": "A worn jade pendant on a leather cord. It hums faintly against the skin, hungry to channel something.",
447
- "size": "Tiny",
448
- "category": "Focus",
449
- "shape": "Pendant",
450
- "color": "Jade Green",
451
- "texture": "Polished Stone",
452
- "rating": "Standard",
453
- "weight": 0.1,
454
- "room": "Barrens Apartment",
455
- "atSpot": "bookshelf"
456
- },
457
- {
458
- "name": "Street Doc's Medkit",
459
- "description": "A scuffed hard-shell first aid kit, restocked by someone who knows what gunshot wounds actually need.",
460
- "size": "Small",
461
- "category": "Medical",
462
- "shape": "Rectangle",
463
- "color": "White",
464
- "texture": "Scuffed",
465
- "rating": "Standard",
466
- "weight": 1,
467
- "room": "Barrens Apartment",
468
- "atSpot": "bookshelf"
469
- },
470
- {
471
- "name": "Spare Clip",
472
- "description": "A boxy magazine of 10 rounds, factory-wrapped. Fits most street-caliber sidearms.",
473
- "size": "Tiny",
474
- "category": "Ammunition",
475
- "shape": "Rectangle",
476
- "color": "Gunmetal",
477
- "texture": "Oiled Steel",
478
- "rating": "Common",
479
- "weight": 0.3,
480
- "room": "Redmond Safehouse",
481
- "atSpot": "gear cache"
482
- },
483
- {
484
- "name": "Kamikaze Stim Patch",
485
- "description": "A dermal patch in crinkled foil, the chem cocktail inside promising clarity now and a bill later.",
486
- "size": "Tiny",
487
- "category": "StimPatch",
488
- "shape": "Square",
489
- "color": "Warning Orange",
490
- "texture": "Foil",
491
- "rating": "Standard",
492
- "weight": 0.05,
493
- "room": "Redmond Safehouse",
494
- "atSpot": "gear cache"
495
- },
496
- {
497
- "name": "Rusty Machete",
498
- "description": "A working blade with an honest edge under the rust. It has opened doors, crates, and arguments.",
499
- "size": "Medium",
500
- "category": "MeleeWeapon",
501
- "shape": "Blade",
502
- "color": "Rust Brown",
503
- "texture": "Pitted Steel",
504
- "rating": "Common",
505
- "weight": 1.8,
506
- "room": "Redmond Safehouse",
507
- "atSpot": "gear cache"
508
- },
509
- {
510
- "name": "Cuban Cigar",
511
- "description": "Hard to find, but delicious.",
512
- "size": "Tiny",
513
- "category": "Vice",
514
- "shape": "Rectangle",
515
- "color": "Brown",
516
- "texture": "Smooth",
517
- "rating": "Rare",
518
- "weight": 0.1,
519
- "room": "Lucky Chummer",
520
- "atSpot": "bar rail"
521
- },
522
- {
523
- "name": "Casino Ledger Paydata",
524
- "description": "The Lucky Chummer's real books -- every skimmed percentage and bribed inspector, flickering in green digital static.",
525
- "details": "Decrypted, this ledger would end careers. Certain people would pay heavily for it -- or to make it disappear.",
526
- "size": "Tiny",
527
- "category": "Datachip",
528
- "shape": "Virtual Folder",
529
- "color": "Flickering Green",
530
- "texture": "Digital Static",
531
- "rating": "Rare",
532
- "weight": 0,
533
- "plane": "matrix",
534
- "room": "Grid Vault"
535
- },
536
- {
537
- "name": "Spirit-Touched Talisman",
538
- "description": "A fused knot of chapel glass and ash that never quite cools. Something of the Ash Sister lingers in it.",
539
- "size": "Tiny",
540
- "category": "Focus",
541
- "shape": "Talisman",
542
- "color": "Ember Orange",
543
- "texture": "Fused Glass",
544
- "rating": "Rare",
545
- "weight": 0.2,
546
- "room": "Chapel Alcove",
547
- "atSpot": "shrine"
548
- }
549
- ],
550
- "puzzles": [],
551
- "winCondition": {
552
- "type": "possess",
553
- "item": "Krow's Datachip",
554
- "completionMessage": "The datachip is yours. Krow's grip on the Lucky Chummer just loosened -- whatever you do with it next, chummer, it's your move now."
555
- }
556
- }
1
+ {
2
+ "name": "Seattle Underground",
3
+ "story": "A quick job in the Redmond Barrens: Mr. Krow is sitting on a datachip that keys the Lucky Chummer casino, and every kind of runner has an angle on getting it -- muscle, magic, wires, or words.",
4
+ "residenceTiers": [
5
+ "Street",
6
+ "Squatter",
7
+ "Low",
8
+ "Middle",
9
+ "High",
10
+ "Luxury"
11
+ ],
12
+ "currency": {
13
+ "type": "nuyen",
14
+ "authorityRoomTags": [
15
+ "Bank"
16
+ ]
17
+ },
18
+ "player": {
19
+ "name": "Maka",
20
+ "startLocation": "Barrens Apartment",
21
+ "lifestyleChoices": [
22
+ {
23
+ "type": "residence",
24
+ "metadata": {
25
+ "tier": "Street",
26
+ "location": "Barrens Apartment"
27
+ }
28
+ }
29
+ ],
30
+ "startingItems": [
31
+ {
32
+ "name": "Ares Light Fire 70",
33
+ "description": "A small, concealable light pistol favored by shadowrunners on a budget.",
34
+ "size": "Small",
35
+ "category": "RangedWeapon",
36
+ "shape": "Pistol",
37
+ "color": "Black",
38
+ "texture": "Matte",
39
+ "rating": "Common",
40
+ "weight": 1.2
41
+ },
42
+ {
43
+ "name": "Armor Jacket",
44
+ "description": "A rugged armored jacket with built-in smartweave. Offers decent protection without looking too suspicious.",
45
+ "size": "Large",
46
+ "category": "Armor",
47
+ "shape": "Jacket",
48
+ "color": "Dark Green",
49
+ "texture": "Kevlar",
50
+ "rating": "Standard",
51
+ "weight": 3.5
52
+ },
53
+ {
54
+ "name": "Meta Link",
55
+ "description": "A cheap but functional commlink. You hope it doesn't get hacked.",
56
+ "size": "Tiny",
57
+ "category": "Commlink",
58
+ "shape": "Rectangle",
59
+ "color": "Gray",
60
+ "texture": "Plastic",
61
+ "rating": "Common",
62
+ "weight": 0.1
63
+ },
64
+ {
65
+ "name": "Starter Credstick",
66
+ "description": "A basic credstick loaded with some nuyen for expenses.",
67
+ "size": "Small",
68
+ "category": "Credstick",
69
+ "shape": "Cylinder",
70
+ "color": "Silver",
71
+ "texture": "Smooth",
72
+ "rating": "Common",
73
+ "weight": 0.2,
74
+ "currencyAmount": 250
75
+ },
76
+ {
77
+ "name": "Urban Explorer Boots",
78
+ "description": "Sturdy street boots with impact gel soles and reinforced toes.",
79
+ "size": "Medium",
80
+ "category": "Boots",
81
+ "shape": "Boots",
82
+ "color": "Black",
83
+ "texture": "Rugged",
84
+ "rating": "Common",
85
+ "weight": 2.0
86
+ },
87
+ {
88
+ "name": "Glasses (Capacity 3)",
89
+ "description": "Ordinary frames with room for three enhancements. Nobody looks twice.",
90
+ "size": "Tiny",
91
+ "category": "Glasses",
92
+ "shape": "Glasses",
93
+ "color": "Black",
94
+ "texture": "Plastic",
95
+ "rating": "Common",
96
+ "weight": 0.1
97
+ }
98
+ ]
99
+ },
100
+ "rooms": [
101
+ {
102
+ "name": "Barrens Apartment",
103
+ "description": "A grimy studio in the heart of the Redmond Barrens. The synth-leather couch sags by the window, the door barely locks, and a dead mage's bookshelf still holds a few things worth having.",
104
+ "tags": [
105
+ "residence"
106
+ ],
107
+ "size": "small",
108
+ "spots": [
109
+ {
110
+ "name": "door"
111
+ },
112
+ {
113
+ "name": "couch"
114
+ },
115
+ {
116
+ "name": "bookshelf"
117
+ }
118
+ ],
119
+ "supportedLifestyles": {
120
+ "residenceTypes": [
121
+ "Street",
122
+ "Squatter"
123
+ ]
124
+ },
125
+ "exits": [
126
+ {
127
+ "direction": "north",
128
+ "targetRoom": "Redmond Safehouse"
129
+ }
130
+ ],
131
+ "isStartRoom": true
132
+ },
133
+ {
134
+ "name": "Redmond Safehouse",
135
+ "description": "A hidden bolthole where four tunnels meet at a scraped-clear entryway -- gear cache on one wall, a card sharp's abandoned bunk on the other. Every direction out of here leads somewhere that will test a different part of you.",
136
+ "tags": [
137
+ "residence"
138
+ ],
139
+ "size": "medium",
140
+ "spots": [
141
+ {
142
+ "name": "entryway"
143
+ },
144
+ {
145
+ "name": "gear cache"
146
+ },
147
+ {
148
+ "name": "bunk"
149
+ }
150
+ ],
151
+ "supportedLifestyles": {
152
+ "residenceTypes": [
153
+ "Low"
154
+ ]
155
+ },
156
+ "exits": [
157
+ {
158
+ "direction": "south",
159
+ "targetRoom": "Barrens Apartment"
160
+ },
161
+ {
162
+ "direction": "north",
163
+ "targetRoom": "Krow's Den"
164
+ },
165
+ {
166
+ "direction": "east",
167
+ "targetRoom": "Grid Vault"
168
+ },
169
+ {
170
+ "direction": "west",
171
+ "targetRoom": "Chapel Alcove"
172
+ }
173
+ ]
174
+ },
175
+ {
176
+ "name": "Krow's Den",
177
+ "description": "The fixer's office. Smells like cigars and secrets. Mr. Krow watches the door from behind a scarred steel desk, one hand always below the desktop.",
178
+ "owner": "Mr. Krow",
179
+ "size": "small",
180
+ "spots": [
181
+ {
182
+ "name": "door"
183
+ },
184
+ {
185
+ "name": "desk"
186
+ }
187
+ ],
188
+ "supportedLifestyles": {
189
+ "employmentRoles": [
190
+ "Fixer"
191
+ ]
192
+ },
193
+ "exits": [
194
+ {
195
+ "direction": "east",
196
+ "targetRoom": "Lucky Chummer",
197
+ "keyRequired": "Krow's Datachip"
198
+ }
199
+ ]
200
+ },
201
+ {
202
+ "name": "Lucky Chummer",
203
+ "description": "A neon casino buzzing with illicit energy. Cards snap at the tables, chips clatter down the bar rail, and a frayed cord hangs across the disused stair at the back.",
204
+ "size": "large",
205
+ "spots": [
206
+ {
207
+ "name": "entrance"
208
+ },
209
+ {
210
+ "name": "card tables"
211
+ },
212
+ {
213
+ "name": "bar rail"
214
+ },
215
+ {
216
+ "name": "roped stair"
217
+ }
218
+ ],
219
+ "supportedLifestyles": {
220
+ "habitTags": [
221
+ "Gambling"
222
+ ]
223
+ }
224
+ },
225
+ {
226
+ "name": "Grid Vault",
227
+ "description": "A humming server room jury-rigged into the Barrens power grid. The room's host stands over it on the grid, heavy and lit; the racks it guards are another matter -- matte-black, no antenna in sight, and whatever lives in THEM doesn't talk to the wireless world.",
228
+ "hasNode": true,
229
+ "hostRating": 9,
230
+ "nodeAccess": "wired",
231
+ "size": "small",
232
+ "spots": [
233
+ {
234
+ "name": "door"
235
+ },
236
+ {
237
+ "name": "server racks",
238
+ "tags": [
239
+ "cover-partial"
240
+ ]
241
+ }
242
+ ]
243
+ },
244
+ {
245
+ "name": "Chapel Alcove",
246
+ "description": "A burned-out chapel annex: past the threshold, a scorched shrine still ringed by chalk sigils that never quite wash out. The air hums against the back of your teeth.",
247
+ "warded": true,
248
+ "size": "small",
249
+ "spots": [
250
+ {
251
+ "name": "threshold"
252
+ },
253
+ {
254
+ "name": "shrine"
255
+ }
256
+ ]
257
+ }
258
+ ],
259
+ "npcs": [
260
+ {
261
+ "description": "Mr. Krow is a territorial fixer -- dangerous if attacked, and he will chase stolen property, but he respects nerve: a good pitch, a real payment, or an honest win at his own table can all move him. He is guarding the datachip that keys the Lucky Chummer.",
262
+ "dialogue": [
263
+ "I've got what you need -- if you can pay, or if you can impress me.",
264
+ "The chip stays with me until somebody gives me a reason.",
265
+ "The shadows don't lie, chummer."
266
+ ],
267
+ "player": {
268
+ "name": "Mr. Krow",
269
+ "startLocation": "Krow's Den",
270
+ "startSpot": "desk",
271
+ "lifestyleChoices": [
272
+ {
273
+ "type": "employment",
274
+ "metadata": {
275
+ "jobTitle": "Fixer"
276
+ }
277
+ }
278
+ ],
279
+ "combat": {
280
+ "body": 5,
281
+ "agility": 5,
282
+ "reaction": 4,
283
+ "combatSkill": 4,
284
+ "strength": 4,
285
+ "willpower": 3,
286
+ "logic": 3,
287
+ "intuition": 3,
288
+ "charisma": 3,
289
+ "skills": {
290
+ "automatics": 5, "pistols": 5, "longarms": 5,
291
+ "unarmed": 4,
292
+ "perception": 3,
293
+ "negotiation": 3,
294
+ "intimidation": 4
295
+ }
296
+ }
297
+ }
298
+ },
299
+ {
300
+ "description": "Salli Vex tends bar at the Lucky Chummer and hears everything. She won't cross Krow for free, but she likes a good talker and knows who owes the house, how Krow plays his own table, and what really sits in the Grid Vault.",
301
+ "dialogue": [
302
+ "First drink's watered down. So is the second.",
303
+ "Krow keeps his door open. Doesn't mean you're invited through it.",
304
+ "Everything in this place is rigged, sugar. Including me."
305
+ ],
306
+ "player": {
307
+ "name": "Salli Vex",
308
+ "startLocation": "Lucky Chummer",
309
+ "startSpot": "bar rail",
310
+ "lifestyleChoices": [],
311
+ "combat": {
312
+ "body": 3,
313
+ "agility": 3,
314
+ "reaction": 3,
315
+ "combatSkill": 2,
316
+ "charisma": 5,
317
+ "intuition": 4,
318
+ "skills": {
319
+ "negotiation": 4,
320
+ "con": 4,
321
+ "perception": 4
322
+ }
323
+ }
324
+ }
325
+ },
326
+ {
327
+ "plane": "matrix",
328
+ "description": "Static Howler is the Grid Vault's custom ice: a shrieking countermeasure that treats every persona in its host as prey. It cannot leave the host and cannot be reasoned with.",
329
+ "dialogue": [
330
+ "UNREGISTERED PERSONA. PURGE CYCLE INITIATED.",
331
+ "static. static. STATIC."
332
+ ],
333
+ "player": {
334
+ "name": "Static Howler",
335
+ "startLocation": "Grid Vault",
336
+ "lifestyleChoices": [],
337
+ "combat": {
338
+ "body": 3,
339
+ "agility": 3,
340
+ "reaction": 4,
341
+ "combatSkill": 4,
342
+ "willpower": 4,
343
+ "logic": 5,
344
+ "intuition": 4
345
+ }
346
+ }
347
+ },
348
+ {
349
+ "plane": "astral",
350
+ "description": "The Ash Sister is a mournful fire spirit bound to the burned chapel. She speaks in embers to anyone who can reach the astral, trades riddles for company, and burns anything that threatens her altar.",
351
+ "dialogue": [
352
+ "You walk in two worlds. Sit. The living so rarely visit.",
353
+ "The ward was mine before the fire. It will be mine after you.",
354
+ "Ash remembers everything it used to be."
355
+ ],
356
+ "player": {
357
+ "name": "Ash Sister",
358
+ "startLocation": "Chapel Alcove",
359
+ "startSpot": "shrine",
360
+ "lifestyleChoices": [],
361
+ "combat": {
362
+ "body": 4,
363
+ "agility": 3,
364
+ "reaction": 4,
365
+ "combatSkill": 3,
366
+ "willpower": 5,
367
+ "intuition": 4,
368
+ "magic": 5
369
+ }
370
+ }
371
+ }
372
+ ],
373
+ "items": [
374
+ {
375
+ "name": "Krow's Datachip",
376
+ "description": "An encrypted datachip that grants access to the Lucky Chummer. Its casing is etched with the Krow Industries logo.",
377
+ "size": "Tiny",
378
+ "category": "Key",
379
+ "shape": "Square",
380
+ "color": "Black",
381
+ "texture": "Glossy",
382
+ "rating": "Common",
383
+ "weight": 0.05,
384
+ "heldBy": "Mr. Krow",
385
+ "owner": "Mr. Krow"
386
+ },
387
+ {
388
+ "name": "Certified Credstick",
389
+ "description": "Black-market certified nuyen chip.",
390
+ "size": "Small",
391
+ "category": "CurrencyContainer",
392
+ "shape": "Rectangle",
393
+ "color": "Silver",
394
+ "texture": "Smooth",
395
+ "rating": "Standard",
396
+ "weight": 0.2,
397
+ "currencyAmount": 500,
398
+ "room": "Krow's Den",
399
+ "atSpot": "desk",
400
+ "owner": "Mr. Krow"
401
+ },
402
+ {
403
+ "name": "Ares Light Fire 70",
404
+ "description": "A small, concealable light pistol favored by shadowrunners on a budget.",
405
+ "size": "Small",
406
+ "category": "RangedWeapon",
407
+ "shape": "Pistol",
408
+ "color": "Black",
409
+ "texture": "Matte",
410
+ "rating": "Common",
411
+ "weight": 1.2,
412
+ "heldBy": "Mr. Krow",
413
+ "owner": "Mr. Krow",
414
+ "transferable": false
415
+ },
416
+ {
417
+ "name": "Armor Jacket",
418
+ "description": "A rugged armored jacket with built-in smartweave.",
419
+ "size": "Large",
420
+ "category": "Armor",
421
+ "shape": "Jacket",
422
+ "color": "Dark Green",
423
+ "texture": "Kevlar",
424
+ "rating": "Standard",
425
+ "weight": 3.5,
426
+ "heldBy": "Mr. Krow",
427
+ "owner": "Mr. Krow",
428
+ "transferable": false
429
+ },
430
+ {
431
+ "name": "Battered Grimoire",
432
+ "description": "A water-stained spellbook, its margins crowded with a dead mage's handwriting. The formulas for Manabolt, Heal, and Armor are still legible.",
433
+ "details": "The legible formulas: Manabolt (hurl raw mana at a target -- armor won't save them), Heal (knit your own wounds closed), Armor (a sustained protective weave). Every casting exacts drain from the caster.",
434
+ "size": "Small",
435
+ "category": "Grimoire",
436
+ "shape": "Book",
437
+ "color": "Faded Black",
438
+ "texture": "Water-Stained Leather",
439
+ "rating": "Common",
440
+ "weight": 1.5,
441
+ "room": "Barrens Apartment",
442
+ "atSpot": "bookshelf"
443
+ },
444
+ {
445
+ "name": "Jade Focus",
446
+ "description": "A worn jade pendant on a leather cord. It hums faintly against the skin, hungry to channel something.",
447
+ "size": "Tiny",
448
+ "category": "Focus",
449
+ "shape": "Pendant",
450
+ "color": "Jade Green",
451
+ "texture": "Polished Stone",
452
+ "rating": "Standard",
453
+ "weight": 0.1,
454
+ "room": "Barrens Apartment",
455
+ "atSpot": "bookshelf"
456
+ },
457
+ {
458
+ "name": "Street Doc's Medkit",
459
+ "description": "A scuffed hard-shell first aid kit, restocked by someone who knows what gunshot wounds actually need.",
460
+ "size": "Small",
461
+ "category": "Medical",
462
+ "shape": "Rectangle",
463
+ "color": "White",
464
+ "texture": "Scuffed",
465
+ "rating": "Standard",
466
+ "weight": 1,
467
+ "room": "Barrens Apartment",
468
+ "atSpot": "bookshelf"
469
+ },
470
+ {
471
+ "name": "Spare Clip",
472
+ "description": "A boxy magazine of 10 rounds, factory-wrapped. Fits most street-caliber sidearms.",
473
+ "size": "Tiny",
474
+ "category": "Ammunition",
475
+ "shape": "Rectangle",
476
+ "color": "Gunmetal",
477
+ "texture": "Oiled Steel",
478
+ "rating": "Common",
479
+ "weight": 0.3,
480
+ "room": "Redmond Safehouse",
481
+ "atSpot": "gear cache"
482
+ },
483
+ {
484
+ "name": "Kamikaze Stim Patch",
485
+ "description": "A dermal patch in crinkled foil, the chem cocktail inside promising clarity now and a bill later.",
486
+ "size": "Tiny",
487
+ "category": "StimPatch",
488
+ "shape": "Square",
489
+ "color": "Warning Orange",
490
+ "texture": "Foil",
491
+ "rating": "Standard",
492
+ "weight": 0.05,
493
+ "room": "Redmond Safehouse",
494
+ "atSpot": "gear cache"
495
+ },
496
+ {
497
+ "name": "Rusty Machete",
498
+ "description": "A working blade with an honest edge under the rust. It has opened doors, crates, and arguments.",
499
+ "size": "Medium",
500
+ "category": "MeleeWeapon",
501
+ "shape": "Blade",
502
+ "color": "Rust Brown",
503
+ "texture": "Pitted Steel",
504
+ "rating": "Common",
505
+ "weight": 1.8,
506
+ "room": "Redmond Safehouse",
507
+ "atSpot": "gear cache"
508
+ },
509
+ {
510
+ "name": "Cuban Cigar",
511
+ "description": "Hard to find, but delicious.",
512
+ "size": "Tiny",
513
+ "category": "Vice",
514
+ "shape": "Rectangle",
515
+ "color": "Brown",
516
+ "texture": "Smooth",
517
+ "rating": "Rare",
518
+ "weight": 0.1,
519
+ "room": "Lucky Chummer",
520
+ "atSpot": "bar rail"
521
+ },
522
+ {
523
+ "name": "Casino Ledger Paydata",
524
+ "description": "The Lucky Chummer's real books -- every skimmed percentage and bribed inspector, flickering in green digital static.",
525
+ "details": "Decrypted, this ledger would end careers. Certain people would pay heavily for it -- or to make it disappear.",
526
+ "size": "Tiny",
527
+ "category": "Datachip",
528
+ "shape": "Virtual Folder",
529
+ "color": "Flickering Green",
530
+ "texture": "Digital Static",
531
+ "rating": "Rare",
532
+ "weight": 0,
533
+ "plane": "matrix",
534
+ "room": "Grid Vault"
535
+ },
536
+ {
537
+ "name": "Spirit-Touched Talisman",
538
+ "description": "A fused knot of chapel glass and ash that never quite cools. Something of the Ash Sister lingers in it.",
539
+ "size": "Tiny",
540
+ "category": "Focus",
541
+ "shape": "Talisman",
542
+ "color": "Ember Orange",
543
+ "texture": "Fused Glass",
544
+ "rating": "Rare",
545
+ "weight": 0.2,
546
+ "room": "Chapel Alcove",
547
+ "atSpot": "shrine"
548
+ }
549
+ ],
550
+ "puzzles": [],
551
+ "winCondition": {
552
+ "type": "possess",
553
+ "item": "Krow's Datachip",
554
+ "completionMessage": "The datachip is yours. Krow's grip on the Lucky Chummer just loosened -- whatever you do with it next, chummer, it's your move now."
555
+ }
556
+ }