@maka/maka-cli 5.1.31 → 5.1.33

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 (97) hide show
  1. package/bundle/typescript/package.json +1 -1
  2. package/bundle/typescript/src/commands/game/sideQuest/commands/command-registry.d.ts +1 -1
  3. package/bundle/typescript/src/commands/game/sideQuest/commands/command-registry.js +2 -2
  4. package/bundle/typescript/src/commands/game/sideQuest/commands/command-registry.js.map +1 -1
  5. package/bundle/typescript/src/commands/game/sideQuest/commands/command.d.ts +2 -2
  6. package/bundle/typescript/src/commands/game/sideQuest/commands/drop.d.ts +1 -1
  7. package/bundle/typescript/src/commands/game/sideQuest/commands/drop.js +8 -5
  8. package/bundle/typescript/src/commands/game/sideQuest/commands/drop.js.map +1 -1
  9. package/bundle/typescript/src/commands/game/sideQuest/commands/equip.d.ts +1 -1
  10. package/bundle/typescript/src/commands/game/sideQuest/commands/equip.js +44 -9
  11. package/bundle/typescript/src/commands/game/sideQuest/commands/equip.js.map +1 -1
  12. package/bundle/typescript/src/commands/game/sideQuest/commands/give.d.ts +1 -1
  13. package/bundle/typescript/src/commands/game/sideQuest/commands/give.js +10 -3
  14. package/bundle/typescript/src/commands/game/sideQuest/commands/give.js.map +1 -1
  15. package/bundle/typescript/src/commands/game/sideQuest/commands/go.d.ts +1 -1
  16. package/bundle/typescript/src/commands/game/sideQuest/commands/go.js +5 -2
  17. package/bundle/typescript/src/commands/game/sideQuest/commands/go.js.map +1 -1
  18. package/bundle/typescript/src/commands/game/sideQuest/commands/kill.d.ts +6 -0
  19. package/bundle/typescript/src/commands/game/sideQuest/commands/kill.js +36 -0
  20. package/bundle/typescript/src/commands/game/sideQuest/commands/kill.js.map +1 -0
  21. package/bundle/typescript/src/commands/game/sideQuest/commands/lock.d.ts +2 -1
  22. package/bundle/typescript/src/commands/game/sideQuest/commands/lock.js +54 -18
  23. package/bundle/typescript/src/commands/game/sideQuest/commands/lock.js.map +1 -1
  24. package/bundle/typescript/src/commands/game/sideQuest/commands/look.d.ts +2 -1
  25. package/bundle/typescript/src/commands/game/sideQuest/commands/look.js +58 -6
  26. package/bundle/typescript/src/commands/game/sideQuest/commands/look.js.map +1 -1
  27. package/bundle/typescript/src/commands/game/sideQuest/commands/read.d.ts +6 -0
  28. package/bundle/typescript/src/commands/game/sideQuest/commands/read.js +26 -0
  29. package/bundle/typescript/src/commands/game/sideQuest/commands/read.js.map +1 -0
  30. package/bundle/typescript/src/commands/game/sideQuest/commands/say.d.ts +1 -1
  31. package/bundle/typescript/src/commands/game/sideQuest/commands/say.js +12 -16
  32. package/bundle/typescript/src/commands/game/sideQuest/commands/say.js.map +1 -1
  33. package/bundle/typescript/src/commands/game/sideQuest/commands/search.d.ts +1 -1
  34. package/bundle/typescript/src/commands/game/sideQuest/commands/search.js +15 -11
  35. package/bundle/typescript/src/commands/game/sideQuest/commands/search.js.map +1 -1
  36. package/bundle/typescript/src/commands/game/sideQuest/commands/solve.d.ts +1 -1
  37. package/bundle/typescript/src/commands/game/sideQuest/commands/solve.js +1 -1
  38. package/bundle/typescript/src/commands/game/sideQuest/commands/solve.js.map +1 -1
  39. package/bundle/typescript/src/commands/game/sideQuest/commands/store.d.ts +1 -1
  40. package/bundle/typescript/src/commands/game/sideQuest/commands/store.js +1 -1
  41. package/bundle/typescript/src/commands/game/sideQuest/commands/store.js.map +1 -1
  42. package/bundle/typescript/src/commands/game/sideQuest/commands/take.d.ts +1 -1
  43. package/bundle/typescript/src/commands/game/sideQuest/commands/take.js +6 -4
  44. package/bundle/typescript/src/commands/game/sideQuest/commands/take.js.map +1 -1
  45. package/bundle/typescript/src/commands/game/sideQuest/commands/talk.d.ts +1 -1
  46. package/bundle/typescript/src/commands/game/sideQuest/commands/talk.js +4 -2
  47. package/bundle/typescript/src/commands/game/sideQuest/commands/talk.js.map +1 -1
  48. package/bundle/typescript/src/commands/game/sideQuest/commands/unequip.d.ts +1 -1
  49. package/bundle/typescript/src/commands/game/sideQuest/commands/unequip.js +1 -1
  50. package/bundle/typescript/src/commands/game/sideQuest/commands/unequip.js.map +1 -1
  51. package/bundle/typescript/src/commands/game/sideQuest/commands/unlock.d.ts +1 -1
  52. package/bundle/typescript/src/commands/game/sideQuest/commands/unlock.js +2 -2
  53. package/bundle/typescript/src/commands/game/sideQuest/commands/unlock.js.map +1 -1
  54. package/bundle/typescript/src/commands/game/sideQuest/commands/use.d.ts +1 -1
  55. package/bundle/typescript/src/commands/game/sideQuest/commands/use.js +1 -1
  56. package/bundle/typescript/src/commands/game/sideQuest/commands/use.js.map +1 -1
  57. package/bundle/typescript/src/commands/game/sideQuest/factories/item-factory.js +2 -1
  58. package/bundle/typescript/src/commands/game/sideQuest/factories/item-factory.js.map +1 -1
  59. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-factory.js +22 -11
  60. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-factory.js.map +1 -1
  61. package/bundle/typescript/src/commands/game/sideQuest/game.d.ts +17 -4
  62. package/bundle/typescript/src/commands/game/sideQuest/game.js +195 -4
  63. package/bundle/typescript/src/commands/game/sideQuest/game.js.map +1 -1
  64. package/bundle/typescript/src/commands/game/sideQuest/models/inventory.d.ts +1 -0
  65. package/bundle/typescript/src/commands/game/sideQuest/models/inventory.js +19 -6
  66. package/bundle/typescript/src/commands/game/sideQuest/models/inventory.js.map +1 -1
  67. package/bundle/typescript/src/commands/game/sideQuest/models/item.d.ts +5 -1
  68. package/bundle/typescript/src/commands/game/sideQuest/models/item.js +20 -0
  69. package/bundle/typescript/src/commands/game/sideQuest/models/item.js.map +1 -1
  70. package/bundle/typescript/src/commands/game/sideQuest/models/npc.d.ts +11 -2
  71. package/bundle/typescript/src/commands/game/sideQuest/models/npc.js +302 -96
  72. package/bundle/typescript/src/commands/game/sideQuest/models/npc.js.map +1 -1
  73. package/bundle/typescript/src/commands/game/sideQuest/models/player.d.ts +6 -2
  74. package/bundle/typescript/src/commands/game/sideQuest/models/player.js +142 -19
  75. package/bundle/typescript/src/commands/game/sideQuest/models/player.js.map +1 -1
  76. package/bundle/typescript/src/commands/game/sideQuest/models/room.d.ts +2 -1
  77. package/bundle/typescript/src/commands/game/sideQuest/models/room.js +24 -18
  78. package/bundle/typescript/src/commands/game/sideQuest/models/room.js.map +1 -1
  79. package/bundle/typescript/src/commands/game/sideQuest/models/scene.d.ts +6 -1
  80. package/bundle/typescript/src/commands/game/sideQuest/models/scene.js +28 -2
  81. package/bundle/typescript/src/commands/game/sideQuest/models/scene.js.map +1 -1
  82. package/bundle/typescript/src/commands/game/sideQuest/scenes/scene1.json +114 -0
  83. package/bundle/typescript/src/commands/game/sideQuest/scenes/scene2.json +323 -116
  84. package/bundle/typescript/src/commands/game/sideQuest/types/player-equipment.d.ts +16 -5
  85. package/bundle/typescript/src/commands/game/sideQuest/types/seed/item-seed.d.ts +1 -0
  86. package/bundle/typescript/src/commands/game/sideQuest/types/seed/player-seed.d.ts +2 -0
  87. package/bundle/typescript/src/commands/game/sideQuest/types/seed/scene-seed.d.ts +4 -0
  88. package/bundle/typescript/src/commands/game/sideQuest/types/shared/item-enum.d.ts +47 -12
  89. package/bundle/typescript/src/commands/game/sideQuest/types/shared/item-enum.js +53 -11
  90. package/bundle/typescript/src/commands/game/sideQuest/types/shared/item-enum.js.map +1 -1
  91. package/bundle/typescript/src/commands/game/sideQuest/ui.js +17 -161
  92. package/bundle/typescript/src/commands/game/sideQuest/ui.js.map +1 -1
  93. package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js +5 -2
  94. package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js.map +1 -1
  95. package/bundle/typescript/src/templates/meteor/api/api.js +1 -1
  96. package/bundle/typescript/src/templates/meteor/api/api.js.ts +1 -1
  97. package/package.json +1 -1
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "name": "Seattle Underground",
3
+ "story": "This is a simple shadowrun story, where Mr. Krow is protecting the Lucky Chummer Lock, and needs to be persuaded to unlock it for the Player",
3
4
  "residenceTiers": [
4
5
  "Street",
5
6
  "Squatter",
@@ -13,6 +14,90 @@
13
14
  "carrier": "credstick",
14
15
  "authorityRoomTags": ["Bank"]
15
16
  },
17
+ "player": {
18
+ "name": "Maka",
19
+ "startLocation": "Barrens Apartment",
20
+ "lifestyleChoices": [
21
+ {
22
+ "type": "residence",
23
+ "metadata": {
24
+ "tier": "Street",
25
+ "location": "Barrens Apartment"
26
+ }
27
+ }
28
+ ],
29
+ "startingItems": [
30
+ {
31
+ "name": "Ares Light Fire 75",
32
+ "description": "A small, concealable pistol favored by shadowrunners on a budget.",
33
+ "size": "Small",
34
+ "category": "RangedWeapon",
35
+ "shape": "Pistol",
36
+ "color": "Black",
37
+ "texture": "Matte",
38
+ "rating": "Common",
39
+ "weight": 1.2
40
+ },
41
+ {
42
+ "name": "Armored Jacket",
43
+ "description": "A rugged armored jacket with built-in smartweave. Offers decent protection without looking too suspicious.",
44
+ "size": "Large",
45
+ "category": "Armor",
46
+ "shape": "Jacket",
47
+ "color": "Dark Green",
48
+ "texture": "Kevlar",
49
+ "rating": "Standard",
50
+ "weight": 3.5
51
+ },
52
+ {
53
+ "name": "MetaLink Commlink",
54
+ "description": "A cheap but functional commlink. You hope it doesn't get hacked.",
55
+ "size": "Tiny",
56
+ "category": "Commlink",
57
+ "shape": "Rectangle",
58
+ "color": "Gray",
59
+ "texture": "Plastic",
60
+ "rating": "Common",
61
+ "weight": 0.1
62
+ },
63
+ {
64
+ "name": "Starter Credstick",
65
+ "description": "A basic credstick loaded with some nuyen for expenses.",
66
+ "size": "Small",
67
+ "category": "Credstick",
68
+ "shape": "Cylinder",
69
+ "color": "Silver",
70
+ "texture": "Smooth",
71
+ "rating": "Common",
72
+ "weight": 0.2,
73
+ "currencyAmount": 250
74
+ },
75
+ {
76
+ "name": "Urban Explorer Boots",
77
+ "description": "Sturdy street boots with impact gel soles and reinforced toes.",
78
+ "size": "Medium",
79
+ "category": "Boots",
80
+ "shape": "Boots",
81
+ "color": "Black",
82
+ "texture": "Rugged",
83
+ "rating": "Common",
84
+ "weight": 2.0
85
+ },
86
+ {
87
+ "name": "Knockoff Smart Glasses",
88
+ "description": "AR overlay glasses with minor signal lag. Still decent for the price.",
89
+ "size": "Tiny",
90
+ "category": "Glasses",
91
+ "shape": "Glasses",
92
+ "color": "Black",
93
+ "texture": "Plastic",
94
+ "rating": "Common",
95
+ "weight": 0.1
96
+ }
97
+ ]
98
+ },
99
+
100
+
16
101
  "rooms": [
17
102
  {
18
103
  "name": "Barrens Apartment",
@@ -77,6 +162,7 @@
77
162
  ],
78
163
  "npcs": [
79
164
  {
165
+ "description": "Mr. Krow hates unwelcome guests, and will kill on sight. He doesn't talk much, and will just start killing. He will chase after stolen property.",
80
166
  "dialogue": [
81
167
  "I've got what you need — if you can pay.",
82
168
  "Never trust a smiling ork.",
@@ -149,6 +235,34 @@
149
235
  "weight": 0.1,
150
236
  "currencyAmount": 0,
151
237
  "room": "Barrens Apartment"
238
+ },
239
+ {
240
+ "name": "Ares Light Fire 75",
241
+ "description": "A small, concealable pistol favored by shadowrunners on a budget.",
242
+ "size": "Small",
243
+ "category": "RangedWeapon",
244
+ "shape": "Pistol",
245
+ "color": "Black",
246
+ "texture": "Matte",
247
+ "rating": "Common",
248
+ "weight": 1.2,
249
+ "heldBy": "Mr. Krow",
250
+ "owner": "Mr. Krow",
251
+ "transferable": false
252
+ },
253
+ {
254
+ "name": "Armored Jacket",
255
+ "description": "A rugged armored jacket with built-in smartweave. Offers decent protection without looking too suspicious.",
256
+ "size": "Large",
257
+ "category": "Armor",
258
+ "shape": "Jacket",
259
+ "color": "Dark Green",
260
+ "texture": "Kevlar",
261
+ "rating": "Standard",
262
+ "weight": 3.5,
263
+ "heldBy": "Mr. Krow",
264
+ "owner": "Mr. Krow",
265
+ "transferable": false
152
266
  }
153
267
  ],
154
268
  "puzzles": [
@@ -1,190 +1,397 @@
1
1
  {
2
- "name": "Shadows Over Touristville",
2
+ "name": "Rainwalker's Refuge",
3
+ "story": "“Rainwalker’s Refuge” is a secretive underworld node hidden beneath Seattle’s rotting sprawl — a place where debt, data, and desperation flow more freely than water. A digital storm is brewing: someone has leaked fragments of blackmail material from Rainwalker’s private vault, threatening the balance of power among local fixers and corps. Rainwalker believes one of his own might be compromised.\n\nDr. Nyx, the unlicensed street doc with a buried conscience, has been patching up mercs who’ve gotten too close to the truth. Slink, a rogue dwarf smuggler with a habit of disappearing at just the wrong moment, may know more than he lets on. Somewhere in this mess, trust is failing — and neural sync errors are just the surface noise.\n\nVault doors are locking themselves. AR signals are flickering with hidden messages. And through it all, a silent test plays out: who’s loyal, who’s useful, and who’s next to disappear?\n\nOnly the sharpest shadows survive in the Refuge.",
4
+ "residenceTiers": ["Street", "Squatter", "Low", "Middle", "High", "Luxury"],
3
5
  "currency": {
4
6
  "type": "nuyen",
5
7
  "carrier": "credstick",
6
- "authorityRoomTags": ["Bank"]
8
+ "authorityRoomTags": ["Vault"]
9
+ },
10
+ "player": {
11
+ "name": "Maka",
12
+ "startLocation": "Barrens Apartment",
13
+ "lifestyleChoices": [
14
+ {
15
+ "type": "residence",
16
+ "metadata": {
17
+ "tier": "Street",
18
+ "location": "Barrens Apartment"
19
+ }
20
+ }
21
+ ],
22
+ "startingItems": [
23
+ {
24
+ "name": "Ares Light Fire 75",
25
+ "description": "A small, concealable pistol favored by shadowrunners on a budget.",
26
+ "size": "Small",
27
+ "category": "RangedWeapon",
28
+ "shape": "Pistol",
29
+ "color": "Black",
30
+ "texture": "Matte",
31
+ "rating": "Common",
32
+ "weight": 1.2
33
+ },
34
+ {
35
+ "name": "Armored Jacket",
36
+ "description": "A rugged armored jacket with built-in smartweave. Offers decent protection without looking too suspicious.",
37
+ "size": "Large",
38
+ "category": "Armor",
39
+ "shape": "Jacket",
40
+ "color": "Dark Green",
41
+ "texture": "Kevlar",
42
+ "rating": "Standard",
43
+ "weight": 3.5
44
+ },
45
+ {
46
+ "name": "MetaLink Commlink",
47
+ "description": "A cheap but functional commlink. You hope it doesn't get hacked.",
48
+ "size": "Tiny",
49
+ "category": "Commlink",
50
+ "shape": "Rectangle",
51
+ "color": "Gray",
52
+ "texture": "Plastic",
53
+ "rating": "Common",
54
+ "weight": 0.1
55
+ },
56
+ {
57
+ "name": "Starter Credstick",
58
+ "description": "A basic credstick loaded with some nuyen for expenses.",
59
+ "size": "Small",
60
+ "category": "Credstick",
61
+ "shape": "Cylinder",
62
+ "color": "Silver",
63
+ "texture": "Smooth",
64
+ "rating": "Common",
65
+ "weight": 0.2,
66
+ "currencyAmount": 250
67
+ },
68
+ {
69
+ "name": "Urban Explorer Boots",
70
+ "description": "Sturdy street boots with impact gel soles and reinforced toes.",
71
+ "size": "Medium",
72
+ "category": "Boots",
73
+ "shape": "Boots",
74
+ "color": "Black",
75
+ "texture": "Rugged",
76
+ "rating": "Common",
77
+ "weight": 2.0
78
+ },
79
+ {
80
+ "name": "Knockoff Smart Glasses",
81
+ "description": "AR overlay glasses with minor signal lag. Still decent for the price.",
82
+ "size": "Tiny",
83
+ "category": "Glasses",
84
+ "shape": "Glasses",
85
+ "color": "Black",
86
+ "texture": "Plastic",
87
+ "rating": "Common",
88
+ "weight": 0.1
89
+ }
90
+ ]
7
91
  },
8
- "residenceTiers": [
9
- "Redmond Safehouse",
10
- "Capsule Hotel",
11
- "Puyallup Loft"
12
- ],
13
92
  "rooms": [
14
93
  {
15
- "name": "Capsule Hotel",
16
- "description": "A narrow capsule lined with plastic and neon. Cheap, secure, and available hourly.",
94
+ "name": "Drowned Alley",
95
+ "description": "A narrow, rain-slicked alley lit by flickering magenta AR graffiti. Trash piles steam in the cold drizzle, masking the entrance to something deeper.",
17
96
  "tags": ["residence"],
18
97
  "supportedLifestyles": {
19
- "residenceTiers": ["Capsule Hotel"]
98
+ "residenceTiers": ["Street", "Squatter"]
20
99
  },
21
- "isStartRoom": true,
22
100
  "exits": [
23
101
  {
24
- "direction": "south",
25
- "targetRoom": "Touristville Market"
102
+ "direction": "east",
103
+ "targetRoom": "Hidden Clinic"
104
+ },
105
+ {
106
+ "direction": "west",
107
+ "targetRoom": "Obsidian Lounge"
26
108
  }
27
- ]
109
+ ],
110
+ "isStartRoom": true
28
111
  },
29
112
  {
30
- "name": "Touristville Market",
31
- "description": "Bustling with vendors and shady dealers under flickering neon signs.",
113
+ "name": "Hidden Clinic",
114
+ "description": "A covert med-den patched together with scavenged tech and old hospital gear. The hum of cyberware diagnostics fills the air.",
32
115
  "tags": ["employment"],
33
116
  "supportedLifestyles": {
34
- "employmentChoices": ["Street Vendor"]
117
+ "employmentRoles": ["Street Doc"]
35
118
  },
36
119
  "exits": [
37
120
  {
38
121
  "direction": "west",
39
- "targetRoom": "Stuffer Shack"
122
+ "targetRoom": "Drowned Alley"
40
123
  },
41
124
  {
42
125
  "direction": "north",
43
- "targetRoom": "Capsule Hotel"
126
+ "targetRoom": "Rainwalker's Vault",
127
+ "keyRequired": "Neural Keychip"
44
128
  }
45
129
  ]
46
130
  },
47
131
  {
48
- "name": "Stuffer Shack",
49
- "description": "A 24-hour convenience store with cheap soy, synth drinks, and backroom deals.",
50
- "tags": ["vice"],
132
+ "name": "Rainwalker's Vault",
133
+ "description": "A fortified room hidden beneath layers of false walls. Rows of lockers hold secrets, currency, and blackmail material.",
134
+ "tags": ["Vault"],
51
135
  "supportedLifestyles": {
52
- "vices": {
53
- "addictions": ["Soystim"],
54
- "habits": ["Late-Night Snacking"]
55
- }
136
+ "habitTags": ["Hoarding"]
56
137
  },
57
138
  "exits": [
58
139
  {
59
- "direction": "east",
60
- "targetRoom": "Touristville Market"
140
+ "direction": "south",
141
+ "targetRoom": "Hidden Clinic"
61
142
  },
62
143
  {
63
- "direction": "down",
64
- "targetRoom": "Utility Tunnel"
144
+ "direction": "up",
145
+ "targetRoom": "Rainwalker’s Loft"
65
146
  }
66
147
  ]
67
148
  },
68
149
  {
69
- "name": "Utility Tunnel",
70
- "description": "A dank, underground passage used by smugglers and squatters.",
71
- "tags": ["puzzle"],
150
+ "name": "Rainwalker’s Loft",
151
+ "description": "An opulent apartment hidden above the city’s decay, lined with polished chrome, AR surveillance feeds, and a whisky cabinet.",
152
+ "tags": ["residence"],
153
+ "owner": "Rainwalker",
154
+ "supportedLifestyles": {
155
+ "residenceTiers": ["Luxury"]
156
+ },
72
157
  "exits": [
73
158
  {
74
- "direction": "up",
75
- "targetRoom": "Stuffer Shack"
76
- },
77
- {
78
- "direction": "east",
79
- "targetRoom": "Old Bank Vault"
159
+ "direction": "down",
160
+ "targetRoom": "Rainwalker's Vault"
80
161
  }
81
162
  ]
82
163
  },
83
164
  {
84
- "name": "Old Bank Vault",
85
- "description": "A forgotten vault sealed behind rusty servos, used now by gangers as a stash spot.",
86
- "tags": ["bank"],
165
+ "name": "Obsidian Lounge",
166
+ "description": "A shadowrunner speakeasy hidden behind a trideo store, thick with smoke, synth-jazz, and whispered deals.",
87
167
  "supportedLifestyles": {
88
- "residenceTiers": ["Redmond Safehouse"]
168
+ "habitTags": ["Socializing", "Alcohol"]
89
169
  },
90
170
  "exits": [
91
171
  {
92
172
  "direction": "west",
93
- "targetRoom": "Utility Tunnel"
173
+ "targetRoom": "Rainwalker’s Loft"
94
174
  }
95
175
  ]
96
176
  }
97
177
  ],
98
- "items": [
178
+ "npcs": [
99
179
  {
100
- "name": "Credstick",
101
- "description": "A standard-issue credstick loaded with 1,200 nuyen.",
102
- "size": "Small",
103
- "category": "currency container",
104
- "shape": "cylinder",
105
- "color": "silver",
106
- "texture": "smooth",
107
- "rating": "common",
108
- "weight": 0.1,
109
- "currencyAmount": 1200,
110
- "room": "Old Bank Vault"
180
+ "dialogue": [
181
+ "Every scar's got a story, omae.",
182
+ "I patch you up, no questions, no judgment.",
183
+ "You didn't see me. You were never here."
184
+ ],
185
+ "description": "A weathered elf with surgical hands and haunted eyes. Dr. Nyx runs a back-alley clinic with a conscience he denies having.",
186
+ "player": {
187
+ "name": "Dr. Nyx",
188
+ "startLocation": "Hidden Clinic",
189
+ "lifestyleChoices": [
190
+ {
191
+ "type": "residence",
192
+ "metadata": {
193
+ "tier": "Low",
194
+ "location": "Hidden Clinic"
195
+ }
196
+ },
197
+ {
198
+ "type": "employment",
199
+ "metadata": {
200
+ "jobTitle": "Street Doc"
201
+ }
202
+ },
203
+ {
204
+ "type": "vice",
205
+ "metadata": {
206
+ "habits": ["MedStims"]
207
+ }
208
+ }
209
+ ]
210
+ }
111
211
  },
112
- {
113
- "name": "Hacked Commlink",
114
- "description": "A burner commlink loaded with encrypted gang coordinates.",
115
- "size": "Medium",
116
- "category": "tool",
117
- "shape": "rectangular",
118
- "color": "black",
119
- "texture": "scuffed",
120
- "rating": "rare",
121
- "weight": 0.3,
122
- "details": "Required to trace the gang's hideout.",
123
- "room": "Utility Tunnel"
124
- }
125
- ],
126
- "puzzles": [
127
- {
128
- "name": "Rusty Vault Lock",
129
- "description": "A heavy, corroded maglock with a biometric override panel.",
130
- "requiredItem": "Hacked Commlink",
131
- "rewardItem": "Credstick",
132
- "location": "Old Bank Vault",
133
- "satisfiesLifestyle": {
134
- "hobbies": ["Security Hacking"]
135
- },
136
- "room": "Utility Tunnel"
137
- }
138
- ],
139
- "npcs": [
140
212
  {
141
213
  "dialogue": [
142
- "If you're lookin' for creds, you gotta think like a rat in the walls.",
143
- "Last time I was down there, the vault still had juice..."
214
+ "Up here, you're above the noise. Remember that.",
215
+ "Information is the real currency.",
216
+ "I don’t forget debts. Neither should you."
144
217
  ],
145
- "description": "A jittery local vendor with one eye always watching the exits.",
146
- "startRoom": "Touristville Market",
218
+ "description": "An imposing figure in a tailored synth-leather coat. Rainwalker is a human data broker who sees everything — and forgets nothing.",
147
219
  "player": {
148
- "name": "Fizz",
149
- "startLocation": "Touristville Market",
220
+ "name": "Rainwalker",
221
+ "startLocation": "Rainwalker’s Loft",
150
222
  "lifestyleChoices": [
223
+ {
224
+ "type": "residence",
225
+ "metadata": {
226
+ "tier": "Luxury",
227
+ "location": "Rainwalker’s Loft"
228
+ }
229
+ },
151
230
  {
152
231
  "type": "employment",
153
- "metadata": { "job": "Street Vendor" }
232
+ "metadata": {
233
+ "jobTitle": "Data Broker"
234
+ }
235
+ },
236
+ {
237
+ "type": "vice",
238
+ "metadata": {
239
+ "addictions": ["Whiskey"]
240
+ }
241
+ }
242
+ ]
243
+ }
244
+ },
245
+ {
246
+ "dialogue": [
247
+ "They call me Slink. I disappear when I need to.",
248
+ "You're looking for something? Maybe I already found it.",
249
+ "Just don’t ask where I got it from."
250
+ ],
251
+ "description": "A wiry dwarf with darting eyes and restless fingers. Slink specializes in getting in and out of tight spots — and tight vaults.",
252
+ "player": {
253
+ "name": "Slink",
254
+ "startLocation": "Obsidian Lounge",
255
+ "lifestyleChoices": [
256
+ {
257
+ "type": "residence",
258
+ "metadata": {
259
+ "tier": "Squatter",
260
+ "location": "Drowned Alley"
261
+ }
154
262
  },
155
263
  {
156
- "type": "addiction",
157
- "metadata": { "substance": "Soystim" }
264
+ "type": "employment",
265
+ "metadata": {
266
+ "jobTitle": "Smuggler"
267
+ }
158
268
  },
159
269
  {
160
270
  "type": "hobby",
161
- "metadata": { "activity": "Security Hacking" }
271
+ "metadata": {
272
+ "tags": ["Lockpicking", "Urban Exploration"]
273
+ }
162
274
  }
163
275
  ]
164
276
  }
165
277
  }
166
278
  ],
167
- "player": {
168
- "name": "Nova",
169
- "startLocation": "Capsule Hotel",
170
- "lifestyleChoices": [
171
- {
172
- "type": "residence",
173
- "metadata": { "lifestyle": "Capsule Hotel" }
174
- },
175
- {
176
- "type": "employment",
177
- "metadata": { "job": "Street Vendor" }
178
- },
179
- {
180
- "type": "addiction",
181
- "metadata": { "substance": "Soystim" }
182
- },
183
- {
184
- "type": "hobby",
185
- "metadata": { "activity": "Security Hacking" }
186
- }
187
- ]
188
- }
279
+ "items": [
280
+ {
281
+ "name": "Trust and Sparks",
282
+ "description": "A philosophical book wrapped in synth-paper discussing the fragile relationship between trust and machine interface.",
283
+ "size": "Small",
284
+ "category": "Book",
285
+ "shape": "Rectangle",
286
+ "color": "Ivory",
287
+ "texture": "Smooth",
288
+ "rating": "Standard",
289
+ "weight": 0.7,
290
+ "room": "Hidden Clinic",
291
+ "details": "Excerpt: 'Machines do not trust. They await alignment. And in that spark of unity — when man and machine speak the same pulse — doors open.'"
292
+ },
293
+ {
294
+ "name": "Secrets of the Street",
295
+ "description": "A worn manual penned by an anonymous urban explorer. Scribbled maps and cryptic notes line the margins.",
296
+ "size": "Small",
297
+ "category": "Book",
298
+ "shape": "Square",
299
+ "color": "Dark Green",
300
+ "texture": "Worn Leather",
301
+ "rating": "Common",
302
+ "weight": 0.6,
303
+ "room": "Drowned Alley",
304
+ "details": "A note in the margins reads: 'The city breathes through forgotten cracks — bricks that give way, alleys that lead nowhere... and doors with no handles. The urban key is awareness.'"
305
+ },
306
+ {
307
+ "name": "NeuroSync Theory",
308
+ "description": "A dense tome filled with esoteric diagrams and fragmented research on neural interface harmonics.",
309
+ "size": "Medium",
310
+ "category": "Book",
311
+ "shape": "Rectangle",
312
+ "color": "Gray",
313
+ "texture": "Rough",
314
+ "rating": "Standard",
315
+ "weight": 1.2,
316
+ "heldBy": "Rainwalker",
317
+ "owner": "Rainwalker",
318
+ "details": "Chapter 3: 'Only when the sync is complete—when nerve and node hum in harmony—can the lock yield to thought.'"
319
+ },
320
+ {
321
+ "name": "Neural Keychip",
322
+ "description": "A bio-coded chip that interfaces with security nodes, shaped like a spinal vertebra.",
323
+ "size": "Tiny",
324
+ "category": "Key",
325
+ "shape": "Curved",
326
+ "color": "Gunmetal",
327
+ "texture": "Smooth",
328
+ "rating": "Standard",
329
+ "weight": 0.03,
330
+ "heldBy": "Dr. Nyx",
331
+ "owner": "Dr. Nyx",
332
+ "droppable": false,
333
+ "transferable": false
334
+ },
335
+ {
336
+ "name": "Encrypted Credstick",
337
+ "description": "A high-limit credstick with a rotating encryption core. Worth a small fortune.",
338
+ "size": "Small",
339
+ "category": "CurrencyContainer",
340
+ "shape": "Cylinder",
341
+ "color": "Blue",
342
+ "texture": "Matte",
343
+ "rating": "Rare",
344
+ "weight": 0.2,
345
+ "currencyAmount": 3200,
346
+ "room": "Rainwalker's Vault"
347
+ },
348
+ {
349
+ "name": "Whiskey Vial",
350
+ "description": "A small, flat bottle labeled 'Rainwalker Reserve'. Smells of oak and digital fire.",
351
+ "size": "Tiny",
352
+ "category": "Vice",
353
+ "shape": "Flask",
354
+ "color": "Amber",
355
+ "texture": "Glass",
356
+ "rating": "Rare",
357
+ "weight": 0.1,
358
+ "room": "Rainwalker’s Loft"
359
+ },
360
+ {
361
+ "name": "Lockpick Set",
362
+ "description": "A compact set of smartpicks and sonic pulses for disabling most analog locks.",
363
+ "size": "Tiny",
364
+ "category": "Tool",
365
+ "shape": "Rectangular Case",
366
+ "color": "Black",
367
+ "texture": "Carbon Fiber",
368
+ "rating": "Common",
369
+ "weight": 0.2,
370
+ "heldBy": "Slink",
371
+ "owner": "Slink"
372
+ }
373
+ ],
374
+ "puzzles": [
375
+ {
376
+ "name": "Vault Challenge",
377
+ "rewardItem": "Encrypted Credstick",
378
+ "requiredPhrase": "neural sync complete",
379
+ "riddle": "Only those with the right frequency, the right nerve, and a spark of trust may pass into the shadows of wealth.",
380
+ "successMessage": "The neural lock flashes green. The vault opens with a low hiss.",
381
+ "failureMessage": "A jolt of static surges through your spine. The vault remains sealed.",
382
+ "hobbyTags": ["Neural Tech", "Cybernetics"],
383
+ "room": "Rainwalker's Vault"
384
+ },
385
+ {
386
+ "name": "Street Puzzle",
387
+ "rewardItem": "Lockpick Set",
388
+ "requiredPhrase": "urban key",
389
+ "riddle": "What has no hinges, key, or lid, yet opens doors where none exist?",
390
+ "successMessage": "You find a secret panel in the alley wall, revealing the prized toolkit.",
391
+ "failureMessage": "Your fingers find nothing but rust and regret.",
392
+ "hobbyTags": ["Urban Exploration", "Smuggling"],
393
+ "room": "Drowned Alley"
394
+ }
395
+ ]
189
396
  }
190
397