@maka/maka-cli 5.3.17 → 5.5.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.
- package/bundle/typescript/package.json +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/archetypes.d.ts +62 -0
- package/bundle/typescript/src/commands/game/sideQuest/archetypes.js +196 -0
- package/bundle/typescript/src/commands/game/sideQuest/archetypes.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/advance.d.ts +16 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/advance.js +65 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/advance.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/assense.d.ts +16 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/assense.js +122 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/assense.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/attack.d.ts +42 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/attack.js +243 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/attack.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/bluff.d.ts +16 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/bluff.js +39 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/bluff.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/brandish.d.ts +21 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/brandish.js +82 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/brandish.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/bypass-command.d.ts +28 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/bypass-command.js +101 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/bypass-command.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/call.d.ts +19 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/call.js +219 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/call.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/cast.d.ts +58 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/cast.js +397 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/cast.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/command-registry.d.ts +11 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/command-registry.js +8 -3
- package/bundle/typescript/src/commands/game/sideQuest/commands/command-registry.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/command.d.ts +6 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/command.js +4 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/command.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/drone.d.ts +15 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/drone.js +72 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/drone.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/drop.js +3 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/drop.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/edge.d.ts +13 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/edge.js +31 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/edge.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/end-call.d.ts +6 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/end-call.js +27 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/end-call.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/equip.d.ts +4 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/equip.js +59 -2
- package/bundle/typescript/src/commands/game/sideQuest/commands/equip.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/equipment.d.ts +13 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/equipment.js +50 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/equipment.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/give.js +7 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/give.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/go.d.ts +13 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/go.js +147 -4
- package/bundle/typescript/src/commands/game/sideQuest/commands/go.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/hack.d.ts +25 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/hack.js +199 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/hack.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/haggle.d.ts +15 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/haggle.js +75 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/haggle.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/inv.d.ts +12 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/inv.js +43 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/inv.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/jack.d.ts +17 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/jack.js +64 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/jack.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/kill.d.ts +10 -3
- package/bundle/typescript/src/commands/game/sideQuest/commands/kill.js +11 -33
- package/bundle/typescript/src/commands/game/sideQuest/commands/kill.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/look.js +47 -4
- package/bundle/typescript/src/commands/game/sideQuest/commands/look.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/map.d.ts +12 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/map.js +46 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/map.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/pan.d.ts +12 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/pan.js +55 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/pan.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/persuade.d.ts +18 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/persuade.js +100 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/persuade.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/pick.d.ts +10 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/pick.js +33 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/pick.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/project.d.ts +19 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/project.js +54 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/project.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/read.js +6 -5
- package/bundle/typescript/src/commands/game/sideQuest/commands/read.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/reboot.d.ts +12 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/reboot.js +52 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/reboot.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/reload.d.ts +14 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/reload.js +40 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/reload.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/rest.d.ts +15 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/rest.js +59 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/rest.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/say.js +31 -2
- package/bundle/typescript/src/commands/game/sideQuest/commands/say.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/search.js +71 -7
- package/bundle/typescript/src/commands/game/sideQuest/commands/search.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/sheet.d.ts +12 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/sheet.js +58 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/sheet.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/silent.d.ts +13 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/silent.js +50 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/silent.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/sneak.d.ts +15 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/sneak.js +35 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/sneak.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/solve.js +32 -11
- package/bundle/typescript/src/commands/game/sideQuest/commands/solve.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/spells.d.ts +14 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/spells.js +86 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/spells.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/stance.d.ts +12 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/stance.js +41 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/stance.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/subdue.d.ts +21 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/subdue.js +43 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/subdue.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/surrender.d.ts +20 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/surrender.js +45 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/surrender.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/take.d.ts +8 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/take.js +138 -2
- package/bundle/typescript/src/commands/game/sideQuest/commands/take.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/talk.js +8 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/talk.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/unequip.js +6 -3
- package/bundle/typescript/src/commands/game/sideQuest/commands/unequip.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/unlock.js +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/unlock.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/use.d.ts +24 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/use.js +102 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/use.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/item-factory.js +2 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/item-factory.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/npc-factory.js +7 -2
- package/bundle/typescript/src/commands/game/sideQuest/factories/npc-factory.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/puzzle-factory.js +2 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/puzzle-factory.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/room-factory.js +3 -0
- package/bundle/typescript/src/commands/game/sideQuest/factories/room-factory.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.d.ts +175 -0
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.js +673 -0
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-factory.d.ts +8 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-factory.js +139 -21
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-factory.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-seed-generator.d.ts +174 -0
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-seed-generator.js +647 -0
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-seed-generator.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/game.d.ts +138 -9
- package/bundle/typescript/src/commands/game/sideQuest/game.js +757 -197
- package/bundle/typescript/src/commands/game/sideQuest/game.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/minigames/hack-minigame.d.ts +16 -0
- package/bundle/typescript/src/commands/game/sideQuest/minigames/hack-minigame.js +101 -0
- package/bundle/typescript/src/commands/game/sideQuest/minigames/hack-minigame.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/minigames/lockpick-minigame.d.ts +15 -0
- package/bundle/typescript/src/commands/game/sideQuest/minigames/lockpick-minigame.js +95 -0
- package/bundle/typescript/src/commands/game/sideQuest/minigames/lockpick-minigame.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/door.d.ts +10 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/door.js +15 -2
- package/bundle/typescript/src/commands/game/sideQuest/models/door.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/inventory.d.ts +10 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/inventory.js +54 -4
- package/bundle/typescript/src/commands/game/sideQuest/models/inventory.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/item.d.ts +41 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/item.js +106 -3
- package/bundle/typescript/src/commands/game/sideQuest/models/item.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/npc.d.ts +27 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/npc.js +312 -50
- package/bundle/typescript/src/commands/game/sideQuest/models/npc.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/player.d.ts +278 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/player.js +661 -9
- package/bundle/typescript/src/commands/game/sideQuest/models/player.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/puzzle.d.ts +75 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/puzzle.js +199 -6
- package/bundle/typescript/src/commands/game/sideQuest/models/puzzle.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/room.d.ts +24 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/room.js +53 -18
- package/bundle/typescript/src/commands/game/sideQuest/models/room.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/scene.d.ts +73 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/scene.js +208 -3
- package/bundle/typescript/src/commands/game/sideQuest/models/scene.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/scenes/scene1.json +319 -70
- package/bundle/typescript/src/commands/game/sideQuest/scenes/scene2.json +661 -227
- package/bundle/typescript/src/commands/game/sideQuest/types/player-equipment.d.ts +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/exit-seed.d.ts +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/item-seed.d.ts +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/npc-seed.d.ts +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/player-seed.d.ts +42 -0
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/puzzle-seed.d.ts +15 -1
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/room-seed.d.ts +4 -0
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/scene-seed.d.ts +8 -0
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/win-condition-seed.d.ts +15 -0
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/win-condition-seed.js +2 -0
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/win-condition-seed.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/types/shared/abstracts.d.ts +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/types/shared/abstracts.js +5 -0
- package/bundle/typescript/src/commands/game/sideQuest/types/shared/abstracts.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/types/shared/item-enum.d.ts +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/types/shared/item-enum.js +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/types/shared/item-enum.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/ui.d.ts +3 -0
- package/bundle/typescript/src/commands/game/sideQuest/ui.js +95 -6
- package/bundle/typescript/src/commands/game/sideQuest/ui.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/auto-fight.d.ts +60 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/auto-fight.js +138 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/auto-fight.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/combat-exchange.d.ts +145 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/combat-exchange.js +354 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/combat-exchange.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/comm-style.d.ts +2 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/comm-style.js +12 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/comm-style.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/dice.d.ts +22 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/dice.js +34 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/dice.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/fuzzy-match.d.ts +36 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/fuzzy-match.js +92 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/fuzzy-match.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/planes.d.ts +77 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/planes.js +265 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/planes.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/pursuit.d.ts +16 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/pursuit.js +36 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/pursuit.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js +78 -7
- package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js.map +1 -1
- package/bundle/typescript/src/commands/set/global.sub.cmd.js +59 -5
- package/bundle/typescript/src/commands/set/global.sub.cmd.js.map +1 -1
- package/bundle/typescript/src/tools/ai/ai.class.d.ts +42 -0
- package/bundle/typescript/src/tools/ai/ai.class.js +117 -0
- package/bundle/typescript/src/tools/ai/ai.class.js.map +1 -0
- package/bundle/typescript/src/tools/fsi/fsi.interfaces.d.ts +1 -0
- package/bundle/typescript/src/tools/fsi/fsi.interfaces.js.map +1 -1
- package/bundle/typescript/src/tools/https/https.class.d.ts +3 -2
- package/bundle/typescript/src/tools/https/https.class.js +51 -2
- package/bundle/typescript/src/tools/https/https.class.js.map +1 -1
- package/bundle/typescript/src/tools/https/https.interface.d.ts +10 -0
- package/package.json +1 -1
|
@@ -1,21 +1,28 @@
|
|
|
1
1
|
{
|
|
2
|
-
"name": "
|
|
3
|
-
"story": "
|
|
4
|
-
"
|
|
2
|
+
"name": "Tacoma Purple Haze",
|
|
3
|
+
"story": "The Purple Haze district of Tacoma: your streets, your people, your bolt-hole. Nobody's shooting at you tonight -- but Mr. Johnson always has work for a runner who calls.",
|
|
4
|
+
"hub": true,
|
|
5
|
+
"residenceTiers": [
|
|
6
|
+
"Street",
|
|
7
|
+
"Squatter",
|
|
8
|
+
"Low",
|
|
9
|
+
"Middle",
|
|
10
|
+
"High",
|
|
11
|
+
"Luxury"
|
|
12
|
+
],
|
|
5
13
|
"currency": {
|
|
6
14
|
"type": "nuyen",
|
|
7
|
-
"
|
|
8
|
-
"authorityRoomTags": ["Vault"]
|
|
15
|
+
"authorityRoomTags": ["Bank"]
|
|
9
16
|
},
|
|
10
17
|
"player": {
|
|
11
18
|
"name": "Maka",
|
|
12
|
-
"startLocation": "
|
|
19
|
+
"startLocation": "Neon Strip",
|
|
13
20
|
"lifestyleChoices": [
|
|
14
21
|
{
|
|
15
22
|
"type": "residence",
|
|
16
23
|
"metadata": {
|
|
17
24
|
"tier": "Street",
|
|
18
|
-
"location": "
|
|
25
|
+
"location": "Neon Strip"
|
|
19
26
|
}
|
|
20
27
|
}
|
|
21
28
|
],
|
|
@@ -33,7 +40,7 @@
|
|
|
33
40
|
},
|
|
34
41
|
{
|
|
35
42
|
"name": "Armored Jacket",
|
|
36
|
-
"description": "A rugged armored jacket with built-in smartweave.
|
|
43
|
+
"description": "A rugged armored jacket with built-in smartweave.",
|
|
37
44
|
"size": "Large",
|
|
38
45
|
"category": "Armor",
|
|
39
46
|
"shape": "Jacket",
|
|
@@ -89,309 +96,736 @@
|
|
|
89
96
|
}
|
|
90
97
|
]
|
|
91
98
|
},
|
|
99
|
+
|
|
92
100
|
"rooms": [
|
|
93
101
|
{
|
|
94
|
-
"name": "
|
|
95
|
-
"description": "
|
|
102
|
+
"name": "Neon Strip",
|
|
103
|
+
"description": "The spine of the Purple Haze district: rain-slick pavement under a canopy of violet neon, food smoke, and AR graffiti three layers deep. Everyone you need is a block away in some direction.",
|
|
104
|
+
"roomType": "Street",
|
|
96
105
|
"tags": ["residence"],
|
|
97
106
|
"supportedLifestyles": {
|
|
98
|
-
"
|
|
107
|
+
"residenceTypes": ["Street", "Squatter"]
|
|
99
108
|
},
|
|
109
|
+
"isStartRoom": true,
|
|
100
110
|
"exits": [
|
|
101
|
-
{
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
"direction": "west",
|
|
107
|
-
"targetRoom": "Obsidian Lounge"
|
|
108
|
-
}
|
|
109
|
-
],
|
|
110
|
-
"isStartRoom": true
|
|
111
|
+
{ "direction": "north", "targetRoom": "Purple Haze Bar" },
|
|
112
|
+
{ "direction": "east", "targetRoom": "Night Market" },
|
|
113
|
+
{ "direction": "south", "targetRoom": "Rain-Chewed Alley" },
|
|
114
|
+
{ "direction": "west", "targetRoom": "Mama Wu's Noodles" }
|
|
115
|
+
]
|
|
111
116
|
},
|
|
112
117
|
{
|
|
113
|
-
"name": "
|
|
114
|
-
"description": "
|
|
115
|
-
"
|
|
116
|
-
"supportedLifestyles": {
|
|
117
|
-
"employmentRoles": ["Street Doc"]
|
|
118
|
-
},
|
|
118
|
+
"name": "Purple Haze Bar",
|
|
119
|
+
"description": "The district's namesake: a smoky dive where the house special glows faintly and the booths have heard every job in Tacoma get planned. Runners drink here between runs.",
|
|
120
|
+
"roomType": "Bar",
|
|
119
121
|
"exits": [
|
|
120
|
-
{
|
|
121
|
-
"direction": "west",
|
|
122
|
-
"targetRoom": "Drowned Alley"
|
|
123
|
-
},
|
|
124
|
-
{
|
|
125
|
-
"direction": "north",
|
|
126
|
-
"targetRoom": "Rainwalker's Vault",
|
|
127
|
-
"keyRequired": "Neural Keychip"
|
|
128
|
-
}
|
|
122
|
+
{ "direction": "north", "targetRoom": "Bar Backroom" }
|
|
129
123
|
]
|
|
130
124
|
},
|
|
131
125
|
{
|
|
132
|
-
"name": "
|
|
133
|
-
"description": "
|
|
134
|
-
"
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
126
|
+
"name": "Bar Backroom",
|
|
127
|
+
"description": "Crates of unlabeled bottles, a card table with initials knifed into it, and a wall of photographs of runners who didn't come home. Quiet enough to actually talk.",
|
|
128
|
+
"roomType": "Bar"
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
"name": "Mama Wu's Noodles",
|
|
132
|
+
"description": "Steam, chili oil, and the best laksa in the Barrens-adjacent world. Mama Wu feeds everyone and forgets nothing.",
|
|
133
|
+
"roomType": "Restaurant"
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
"name": "Night Market",
|
|
137
|
+
"description": "Stalls of counterfeit everything under strings of dying festival lights. The real shops open off the market's edges -- iron, circuits, medicine, and things with no barcode at all.",
|
|
138
|
+
"roomType": "Market",
|
|
138
139
|
"exits": [
|
|
139
|
-
{
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
},
|
|
143
|
-
{
|
|
144
|
-
"direction": "up",
|
|
145
|
-
"targetRoom": "Rainwalker’s Loft"
|
|
146
|
-
}
|
|
140
|
+
{ "direction": "north", "targetRoom": "Ironmonger's Arms" },
|
|
141
|
+
{ "direction": "east", "targetRoom": "Circuit Bazaar" },
|
|
142
|
+
{ "direction": "south", "targetRoom": "Doc Halloran's Clinic" }
|
|
147
143
|
]
|
|
148
144
|
},
|
|
149
145
|
{
|
|
150
|
-
"name": "
|
|
151
|
-
"description": "
|
|
152
|
-
"
|
|
153
|
-
"owner": "
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
146
|
+
"name": "Ironmonger's Arms",
|
|
147
|
+
"description": "Racked steel and gun oil: Torque's shop sells serious hardware to serious people. Everything on the wall has a price and a history.",
|
|
148
|
+
"roomType": "Shop",
|
|
149
|
+
"owner": "Torque"
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
"name": "Circuit Bazaar",
|
|
153
|
+
"description": "Ratchet's electronics den -- benches of half-gutted decks, coils of optical cable, and a public host humming over the shopfront where locals trade files and gossip.",
|
|
154
|
+
"roomType": "Shop",
|
|
155
|
+
"owner": "Ratchet",
|
|
156
|
+
"hasNode": true,
|
|
157
157
|
"exits": [
|
|
158
|
-
{
|
|
159
|
-
"direction": "down",
|
|
160
|
-
"targetRoom": "Rainwalker's Vault"
|
|
161
|
-
}
|
|
158
|
+
{ "direction": "east", "targetRoom": "Talismonger's Hut" }
|
|
162
159
|
]
|
|
163
160
|
},
|
|
164
161
|
{
|
|
165
|
-
"name": "
|
|
166
|
-
"description": "
|
|
167
|
-
"
|
|
168
|
-
|
|
169
|
-
|
|
162
|
+
"name": "Talismonger's Hut",
|
|
163
|
+
"description": "Bundled herbs, etched copper, and the pressure of old rituals: Sister Verdigris's shop sits inside a working ward that hums against your teeth.",
|
|
164
|
+
"roomType": "Shop",
|
|
165
|
+
"owner": "Sister Verdigris",
|
|
166
|
+
"warded": true
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
"name": "Doc Halloran's Clinic",
|
|
170
|
+
"description": "A three-bed street clinic that smells of antiseptic and burnt coffee. Halloran patches runners with no questions and a running tab.",
|
|
171
|
+
"roomType": "Clinic",
|
|
172
|
+
"owner": "Doc Halloran"
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
"name": "Rain-Chewed Alley",
|
|
176
|
+
"description": "The way down: an alley chewed ragged by decades of acid rain, its storm drains breathing cold air up from the undermarket below.",
|
|
177
|
+
"roomType": "Street",
|
|
170
178
|
"exits": [
|
|
171
|
-
{
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
179
|
+
{ "direction": "south", "targetRoom": "Flooded Undermarket" },
|
|
180
|
+
{ "direction": "east", "targetRoom": "Union Pawnshop" }
|
|
181
|
+
]
|
|
182
|
+
},
|
|
183
|
+
{
|
|
184
|
+
"name": "Union Pawnshop",
|
|
185
|
+
"description": "Whisper's cage of secondhand everything -- fenced goods, forgotten heirlooms, and a ledger of favors nobody wants called in.",
|
|
186
|
+
"roomType": "Shop",
|
|
187
|
+
"owner": "Whisper"
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
"name": "Flooded Undermarket",
|
|
191
|
+
"description": "The old market level, shin-deep in black water. Vendors work from stilted stalls; things move under the surface that nobody names.",
|
|
192
|
+
"roomType": "Market",
|
|
193
|
+
"exits": [
|
|
194
|
+
{ "direction": "south", "targetRoom": "Smuggler's Tunnel" },
|
|
195
|
+
{ "direction": "west", "targetRoom": "Condemned Chapel" }
|
|
175
196
|
]
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
"name": "Smuggler's Tunnel",
|
|
200
|
+
"description": "A bore of cracked ferrocrete running under the district, lit by chemlights and lined with cargo that never saw customs.",
|
|
201
|
+
"roomType": "Tunnel",
|
|
202
|
+
"exits": [
|
|
203
|
+
{ "direction": "east", "targetRoom": "Haze Dragons Turf" },
|
|
204
|
+
{ "direction": "south", "targetRoom": "Sim Den" }
|
|
205
|
+
]
|
|
206
|
+
},
|
|
207
|
+
{
|
|
208
|
+
"name": "Haze Dragons Turf",
|
|
209
|
+
"description": "The Dragons' clubhouse: engine blocks for furniture, gang colors on every wall, and Brick holding court by the fire barrel. Respect gets you in; anything else gets you Brick.",
|
|
210
|
+
"roomType": "Gang Turf",
|
|
211
|
+
"owner": "Brick"
|
|
212
|
+
},
|
|
213
|
+
{
|
|
214
|
+
"name": "Condemned Chapel",
|
|
215
|
+
"description": "A drowned chapel leaning into the flood, its pews rafted together and its saints scoured faceless. Something still sings here at the edge of hearing.",
|
|
216
|
+
"roomType": "Chapel",
|
|
217
|
+
"exits": [
|
|
218
|
+
{ "direction": "down", "targetRoom": "Chapel Crypt", "puzzle": "Crypt Grate" }
|
|
219
|
+
]
|
|
220
|
+
},
|
|
221
|
+
{
|
|
222
|
+
"name": "Chapel Crypt",
|
|
223
|
+
"description": "A dry vault below the waterline, older than the district above it. The reliquary niches were emptied long ago -- almost all of them.",
|
|
224
|
+
"roomType": "Crypt"
|
|
225
|
+
},
|
|
226
|
+
{
|
|
227
|
+
"name": "Sim Den",
|
|
228
|
+
"description": "Rows of scavenged sim-couches wired into a matte-black host with no wireless presence at all -- hard lines only, the way the paranoid like it. The couches whisper with other people's dreams.",
|
|
229
|
+
"roomType": "Den",
|
|
230
|
+
"hasNode": true,
|
|
231
|
+
"nodeAccess": "wired"
|
|
232
|
+
},
|
|
233
|
+
{
|
|
234
|
+
"name": "Johnson's Office",
|
|
235
|
+
"description": "Wherever Mr. Johnson actually works from. You have never seen it and never will.",
|
|
236
|
+
"roomType": "Office",
|
|
237
|
+
"reachable": false
|
|
176
238
|
}
|
|
177
239
|
],
|
|
178
240
|
"npcs": [
|
|
179
241
|
{
|
|
242
|
+
"description": "Mr. Johnson is the district's job broker: anonymous, punctual, and permanently unreachable in person. He commissions runs over comms and pays exactly what he quotes. When called with no job active, he offers work.",
|
|
180
243
|
"dialogue": [
|
|
181
|
-
"
|
|
182
|
-
"
|
|
183
|
-
"
|
|
244
|
+
"You know how this works. I call the number, you do the thing, the cred appears.",
|
|
245
|
+
"Call me when you're ready to work.",
|
|
246
|
+
"No names. That's the whole point of me."
|
|
184
247
|
],
|
|
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
248
|
"player": {
|
|
187
|
-
"name": "
|
|
188
|
-
"startLocation": "
|
|
189
|
-
"lifestyleChoices": [
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
249
|
+
"name": "Mr. Johnson",
|
|
250
|
+
"startLocation": "Johnson's Office",
|
|
251
|
+
"lifestyleChoices": []
|
|
252
|
+
}
|
|
253
|
+
},
|
|
254
|
+
{
|
|
255
|
+
"description": "Torque runs Ironmonger's Arms: an ex-mercenary dwarf who sells weapons and armor at honest prices to people she likes. She does not extend credit and does not tolerate theft.",
|
|
256
|
+
"dialogue": [
|
|
257
|
+
"Everything on that wall works. I test-fire personally.",
|
|
258
|
+
"You break it, you bought it. You steal it, I bury you with it.",
|
|
259
|
+
"Predators are in this week. Serious iron for serious people."
|
|
260
|
+
],
|
|
261
|
+
"player": {
|
|
262
|
+
"name": "Torque",
|
|
263
|
+
"startLocation": "Ironmonger's Arms",
|
|
264
|
+
"lifestyleChoices": [],
|
|
265
|
+
"combat": {
|
|
266
|
+
"body": 5,
|
|
267
|
+
"agility": 4,
|
|
268
|
+
"reaction": 4,
|
|
269
|
+
"combatSkill": 5,
|
|
270
|
+
"strength": 5,
|
|
271
|
+
"willpower": 4,
|
|
272
|
+
"intuition": 3,
|
|
273
|
+
"charisma": 2,
|
|
274
|
+
"skills": {
|
|
275
|
+
"firearms": 6,
|
|
276
|
+
"unarmed": 4,
|
|
277
|
+
"perception": 4,
|
|
278
|
+
"intimidation": 4,
|
|
279
|
+
"negotiation": 3
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
},
|
|
284
|
+
{
|
|
285
|
+
"description": "Ratchet is the Circuit Bazaar's owner: a wiry decker who sells, repairs, and quietly upgrades electronics. He knows every host in the district, including the Sim Den's air-gapped one, and gossips freely with fellow tech-heads.",
|
|
286
|
+
"dialogue": [
|
|
287
|
+
"Everything here boots. Mostly.",
|
|
288
|
+
"The Sim Den host? Hard lines only, chummer. Somebody down there is paranoid for a REASON.",
|
|
289
|
+
"Bring me broken decks. I like the sad ones."
|
|
290
|
+
],
|
|
291
|
+
"player": {
|
|
292
|
+
"name": "Ratchet",
|
|
293
|
+
"startLocation": "Circuit Bazaar",
|
|
294
|
+
"lifestyleChoices": [],
|
|
295
|
+
"combat": {
|
|
296
|
+
"body": 2,
|
|
297
|
+
"agility": 3,
|
|
298
|
+
"reaction": 3,
|
|
299
|
+
"combatSkill": 2,
|
|
300
|
+
"willpower": 4,
|
|
301
|
+
"logic": 6,
|
|
302
|
+
"intuition": 4,
|
|
303
|
+
"charisma": 3,
|
|
304
|
+
"skills": {
|
|
305
|
+
"hacking": 6,
|
|
306
|
+
"perception": 4,
|
|
307
|
+
"locksmith": 3,
|
|
308
|
+
"con": 2
|
|
208
309
|
}
|
|
209
|
-
|
|
310
|
+
}
|
|
210
311
|
}
|
|
211
312
|
},
|
|
212
313
|
{
|
|
314
|
+
"description": "Sister Verdigris is the district's talismonger: an Awakened woman who trades in foci, formulas, and quiet warnings. Her shop's ward is her own work and her pride. She reads auras out of habit.",
|
|
213
315
|
"dialogue": [
|
|
214
|
-
"
|
|
215
|
-
"
|
|
216
|
-
"
|
|
316
|
+
"The ward stays up, dear. It is not personal. It is structural.",
|
|
317
|
+
"Foci, formulas, and honest advice -- two of the three have prices.",
|
|
318
|
+
"The chapel spirit below sings sadder lately. Someone should visit her."
|
|
217
319
|
],
|
|
218
|
-
"description": "An imposing figure in a tailored synth-leather coat. Rainwalker is a human data broker who sees everything — and forgets nothing.",
|
|
219
320
|
"player": {
|
|
220
|
-
"name": "
|
|
221
|
-
"startLocation": "
|
|
222
|
-
"lifestyleChoices": [
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
"
|
|
238
|
-
"metadata": {
|
|
239
|
-
"addictions": ["Whiskey"]
|
|
240
|
-
}
|
|
321
|
+
"name": "Sister Verdigris",
|
|
322
|
+
"startLocation": "Talismonger's Hut",
|
|
323
|
+
"lifestyleChoices": [],
|
|
324
|
+
"combat": {
|
|
325
|
+
"body": 3,
|
|
326
|
+
"agility": 3,
|
|
327
|
+
"reaction": 3,
|
|
328
|
+
"combatSkill": 2,
|
|
329
|
+
"willpower": 6,
|
|
330
|
+
"logic": 4,
|
|
331
|
+
"intuition": 5,
|
|
332
|
+
"charisma": 4,
|
|
333
|
+
"magic": 5,
|
|
334
|
+
"skills": {
|
|
335
|
+
"spellcasting": 5,
|
|
336
|
+
"assensing": 5,
|
|
337
|
+
"perception": 4,
|
|
338
|
+
"negotiation": 3
|
|
241
339
|
}
|
|
242
|
-
|
|
340
|
+
}
|
|
243
341
|
}
|
|
244
342
|
},
|
|
245
343
|
{
|
|
344
|
+
"description": "Doc Halloran runs the street clinic: a weary human trauma surgeon who left corp medicine and never explains why. He patches anyone, sells supplies at cost to regulars, and remembers every bullet he has pulled.",
|
|
246
345
|
"dialogue": [
|
|
247
|
-
"
|
|
248
|
-
"
|
|
249
|
-
"
|
|
346
|
+
"Sit. Bleed on the tray, not the floor.",
|
|
347
|
+
"Medkits are on the shelf. Pay what you can. Pay SOMETHING.",
|
|
348
|
+
"You runners keep me in business and out of sleep."
|
|
250
349
|
],
|
|
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
350
|
"player": {
|
|
253
|
-
"name": "
|
|
254
|
-
"startLocation": "
|
|
255
|
-
"lifestyleChoices": [
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
{
|
|
270
|
-
"type": "hobby",
|
|
271
|
-
"metadata": {
|
|
272
|
-
"tags": ["Lockpicking", "Urban Exploration"]
|
|
273
|
-
}
|
|
351
|
+
"name": "Doc Halloran",
|
|
352
|
+
"startLocation": "Doc Halloran's Clinic",
|
|
353
|
+
"lifestyleChoices": [],
|
|
354
|
+
"combat": {
|
|
355
|
+
"body": 3,
|
|
356
|
+
"agility": 3,
|
|
357
|
+
"reaction": 3,
|
|
358
|
+
"combatSkill": 2,
|
|
359
|
+
"willpower": 4,
|
|
360
|
+
"logic": 6,
|
|
361
|
+
"intuition": 4,
|
|
362
|
+
"charisma": 3,
|
|
363
|
+
"skills": {
|
|
364
|
+
"first-aid": 6,
|
|
365
|
+
"perception": 4,
|
|
366
|
+
"negotiation": 3
|
|
274
367
|
}
|
|
275
|
-
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
},
|
|
371
|
+
{
|
|
372
|
+
"description": "Mama Wu owns the noodle stand and, functionally, the district's rumor network. She feeds everyone, likes being flattered, and trades gossip for company. Nothing happens on the Strip she doesn't hear about.",
|
|
373
|
+
"dialogue": [
|
|
374
|
+
"Sit, eat. Skinny runners die faster.",
|
|
375
|
+
"The Dragons are twitchy this week. Eat your noodles somewhere ELSE if you plan to be stupid.",
|
|
376
|
+
"Everyone tells Mama Wu everything. Eventually."
|
|
377
|
+
],
|
|
378
|
+
"player": {
|
|
379
|
+
"name": "Mama Wu",
|
|
380
|
+
"startLocation": "Mama Wu's Noodles",
|
|
381
|
+
"lifestyleChoices": [],
|
|
382
|
+
"combat": {
|
|
383
|
+
"body": 3,
|
|
384
|
+
"agility": 2,
|
|
385
|
+
"reaction": 3,
|
|
386
|
+
"combatSkill": 1,
|
|
387
|
+
"willpower": 5,
|
|
388
|
+
"intuition": 5,
|
|
389
|
+
"charisma": 5,
|
|
390
|
+
"skills": {
|
|
391
|
+
"perception": 5,
|
|
392
|
+
"negotiation": 5,
|
|
393
|
+
"con": 3
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
},
|
|
398
|
+
{
|
|
399
|
+
"description": "Brick is the Haze Dragons' lieutenant: an ork mountain who respects strength, nerve, and very little else. He'll spar, arm-wrestle, or trade war stories with anyone who impresses him -- and flatten anyone who disrespects the turf. He is not looking for a war with a local runner.",
|
|
400
|
+
"dialogue": [
|
|
401
|
+
"This is Dragons' ground. State your business or state your teeth.",
|
|
402
|
+
"You want respect down here? Earn it. Words or fists, your pick.",
|
|
403
|
+
"Johnson's errand rat, huh. He pays you fair? He better."
|
|
404
|
+
],
|
|
405
|
+
"player": {
|
|
406
|
+
"name": "Brick",
|
|
407
|
+
"startLocation": "Haze Dragons Turf",
|
|
408
|
+
"lifestyleChoices": [],
|
|
409
|
+
"combat": {
|
|
410
|
+
"body": 6,
|
|
411
|
+
"agility": 4,
|
|
412
|
+
"reaction": 4,
|
|
413
|
+
"combatSkill": 5,
|
|
414
|
+
"strength": 6,
|
|
415
|
+
"willpower": 4,
|
|
416
|
+
"intuition": 3,
|
|
417
|
+
"charisma": 3,
|
|
418
|
+
"skills": {
|
|
419
|
+
"unarmed": 6,
|
|
420
|
+
"blades": 5,
|
|
421
|
+
"firearms": 4,
|
|
422
|
+
"intimidation": 5,
|
|
423
|
+
"perception": 3
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
},
|
|
428
|
+
{
|
|
429
|
+
"description": "Whisper runs the Union Pawnshop and fences whatever crosses the counter, no questions recorded. A silver-tongued elf who lies as easily as breathing and respects anyone who catches them at it.",
|
|
430
|
+
"dialogue": [
|
|
431
|
+
"Everything's authentic. Some things are authentically stolen.",
|
|
432
|
+
"Buying, selling, or confessing? The rates differ.",
|
|
433
|
+
"The crypt under the chapel? Old bones, old locks, old stories. I sell one of the three."
|
|
434
|
+
],
|
|
435
|
+
"player": {
|
|
436
|
+
"name": "Whisper",
|
|
437
|
+
"startLocation": "Union Pawnshop",
|
|
438
|
+
"lifestyleChoices": [],
|
|
439
|
+
"combat": {
|
|
440
|
+
"body": 2,
|
|
441
|
+
"agility": 4,
|
|
442
|
+
"reaction": 4,
|
|
443
|
+
"combatSkill": 2,
|
|
444
|
+
"willpower": 4,
|
|
445
|
+
"intuition": 5,
|
|
446
|
+
"charisma": 6,
|
|
447
|
+
"skills": {
|
|
448
|
+
"con": 6,
|
|
449
|
+
"negotiation": 5,
|
|
450
|
+
"sneaking": 4,
|
|
451
|
+
"perception": 4,
|
|
452
|
+
"locksmith": 3
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
},
|
|
457
|
+
{
|
|
458
|
+
"plane": "matrix",
|
|
459
|
+
"description": "Static Ghost is the Sim Den host's resident ice: a scavenged military countermeasure someone wired into a bootleg sim parlor. It guards the den's files with disproportionate ferocity.",
|
|
460
|
+
"dialogue": [
|
|
461
|
+
"THIS HOST IS PROTECTED.",
|
|
462
|
+
"your dreams are not your own here. leave."
|
|
463
|
+
],
|
|
464
|
+
"player": {
|
|
465
|
+
"name": "Static Ghost",
|
|
466
|
+
"startLocation": "Sim Den",
|
|
467
|
+
"lifestyleChoices": [],
|
|
468
|
+
"combat": {
|
|
469
|
+
"body": 3,
|
|
470
|
+
"agility": 3,
|
|
471
|
+
"reaction": 4,
|
|
472
|
+
"combatSkill": 4,
|
|
473
|
+
"willpower": 4,
|
|
474
|
+
"logic": 6,
|
|
475
|
+
"intuition": 4
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
},
|
|
479
|
+
{
|
|
480
|
+
"plane": "astral",
|
|
481
|
+
"description": "The Drowned Choir is a merged spirit of the chapel's lost congregation: many voices, one grief. It sings in the astral above the flooded pews, remembers every parishioner, and welcomes the Awakened who visit politely.",
|
|
482
|
+
"dialogue": [
|
|
483
|
+
"We remember singing. Sing with us, two-worlds-walker.",
|
|
484
|
+
"The water took the nave but not the song.",
|
|
485
|
+
"The crypt keeps our quietest brother. Let him sleep."
|
|
486
|
+
],
|
|
487
|
+
"player": {
|
|
488
|
+
"name": "The Drowned Choir",
|
|
489
|
+
"startLocation": "Condemned Chapel",
|
|
490
|
+
"lifestyleChoices": [],
|
|
491
|
+
"combat": {
|
|
492
|
+
"body": 4,
|
|
493
|
+
"agility": 3,
|
|
494
|
+
"reaction": 4,
|
|
495
|
+
"combatSkill": 3,
|
|
496
|
+
"willpower": 6,
|
|
497
|
+
"intuition": 5,
|
|
498
|
+
"magic": 5
|
|
499
|
+
}
|
|
276
500
|
}
|
|
277
501
|
}
|
|
278
502
|
],
|
|
279
503
|
"items": [
|
|
280
504
|
{
|
|
281
|
-
"name": "
|
|
282
|
-
"description": "A
|
|
505
|
+
"name": "Johnson's Commlink",
|
|
506
|
+
"description": "A high-end encrypted commlink that is never powered down and never traced.",
|
|
283
507
|
"size": "Small",
|
|
284
|
-
"category": "
|
|
508
|
+
"category": "Commlink",
|
|
509
|
+
"shape": "Slab",
|
|
510
|
+
"color": "Matte Black",
|
|
511
|
+
"texture": "Cold Metal",
|
|
512
|
+
"rating": "Rare",
|
|
513
|
+
"weight": 0.2,
|
|
514
|
+
"heldBy": "Mr. Johnson",
|
|
515
|
+
"owner": "Mr. Johnson",
|
|
516
|
+
"transferable": false
|
|
517
|
+
},
|
|
518
|
+
{
|
|
519
|
+
"name": "Ares Predator V",
|
|
520
|
+
"description": "The iconic heavy pistol of the shadows, racked behind Torque's counter with a price tag that means it.",
|
|
521
|
+
"size": "Small",
|
|
522
|
+
"category": "RangedWeapon",
|
|
523
|
+
"shape": "Pistol",
|
|
524
|
+
"color": "Gunmetal",
|
|
525
|
+
"texture": "Machined Steel",
|
|
526
|
+
"rating": "Rare",
|
|
527
|
+
"weight": 2,
|
|
528
|
+
"room": "Ironmonger's Arms",
|
|
529
|
+
"owner": "Torque"
|
|
530
|
+
},
|
|
531
|
+
{
|
|
532
|
+
"name": "Combat Axe",
|
|
533
|
+
"description": "A brutal single-bit axe with a composite haft. Torque calls it the 'negotiation ender'.",
|
|
534
|
+
"size": "Medium",
|
|
535
|
+
"category": "MeleeWeapon",
|
|
536
|
+
"shape": "Axe",
|
|
537
|
+
"color": "Black",
|
|
538
|
+
"texture": "Composite",
|
|
539
|
+
"rating": "Standard",
|
|
540
|
+
"weight": 2.5,
|
|
541
|
+
"room": "Ironmonger's Arms",
|
|
542
|
+
"owner": "Torque"
|
|
543
|
+
},
|
|
544
|
+
{
|
|
545
|
+
"name": "Ballistic Vest",
|
|
546
|
+
"description": "Plain, heavy, and honest protection. No smartweave, no excuses.",
|
|
547
|
+
"size": "Large",
|
|
548
|
+
"category": "BodyArmor",
|
|
549
|
+
"shape": "Vest",
|
|
550
|
+
"color": "Slate",
|
|
551
|
+
"texture": "Ballistic Weave",
|
|
552
|
+
"rating": "Standard",
|
|
553
|
+
"weight": 4,
|
|
554
|
+
"room": "Ironmonger's Arms",
|
|
555
|
+
"owner": "Torque"
|
|
556
|
+
},
|
|
557
|
+
{
|
|
558
|
+
"name": "Boxed Ammunition",
|
|
559
|
+
"description": "A factory-sealed box of street-caliber rounds from Torque's stock.",
|
|
560
|
+
"size": "Tiny",
|
|
561
|
+
"category": "Ammunition",
|
|
562
|
+
"shape": "Box",
|
|
563
|
+
"color": "Olive",
|
|
564
|
+
"texture": "Cardboard",
|
|
565
|
+
"rating": "Common",
|
|
566
|
+
"weight": 0.4,
|
|
567
|
+
"room": "Ironmonger's Arms",
|
|
568
|
+
"owner": "Torque"
|
|
569
|
+
},
|
|
570
|
+
{
|
|
571
|
+
"name": "Renraku Kitsune",
|
|
572
|
+
"description": "A sleek secondhand cyberdeck on Ratchet's display bench, refurbished and lovingly overclocked.",
|
|
573
|
+
"size": "Small",
|
|
574
|
+
"category": "Cyberdeck",
|
|
575
|
+
"shape": "Deck",
|
|
576
|
+
"color": "Pearl White",
|
|
577
|
+
"texture": "Lacquered",
|
|
578
|
+
"rating": "Standard",
|
|
579
|
+
"weight": 2,
|
|
580
|
+
"room": "Circuit Bazaar",
|
|
581
|
+
"owner": "Ratchet"
|
|
582
|
+
},
|
|
583
|
+
{
|
|
584
|
+
"name": "Shop Commlink",
|
|
585
|
+
"description": "A reliable mid-range commlink from Ratchet's shelf, factory-reset and de-bugged. Probably.",
|
|
586
|
+
"size": "Tiny",
|
|
587
|
+
"category": "Commlink",
|
|
285
588
|
"shape": "Rectangle",
|
|
286
|
-
"color": "
|
|
287
|
-
"texture": "
|
|
589
|
+
"color": "Blue",
|
|
590
|
+
"texture": "Polycarbonate",
|
|
288
591
|
"rating": "Standard",
|
|
289
|
-
"weight": 0.
|
|
290
|
-
"room": "
|
|
291
|
-
"
|
|
592
|
+
"weight": 0.1,
|
|
593
|
+
"room": "Circuit Bazaar",
|
|
594
|
+
"owner": "Ratchet"
|
|
292
595
|
},
|
|
293
596
|
{
|
|
294
|
-
"name": "
|
|
295
|
-
"description": "A
|
|
597
|
+
"name": "Spell Formula: Heal",
|
|
598
|
+
"description": "A licensed teaching copy of the Heal formula, annotated in Sister Verdigris's neat hand.",
|
|
296
599
|
"size": "Small",
|
|
297
|
-
"category": "
|
|
600
|
+
"category": "SpellFormula",
|
|
601
|
+
"shape": "Scroll",
|
|
602
|
+
"color": "Cream",
|
|
603
|
+
"texture": "Vellum",
|
|
604
|
+
"rating": "Standard",
|
|
605
|
+
"weight": 0.3,
|
|
606
|
+
"room": "Talismonger's Hut",
|
|
607
|
+
"owner": "Sister Verdigris"
|
|
608
|
+
},
|
|
609
|
+
{
|
|
610
|
+
"name": "Copper Focus",
|
|
611
|
+
"description": "A spiral of etched copper that warms in an Awakened hand. Shop-grade, honestly priced.",
|
|
612
|
+
"size": "Tiny",
|
|
613
|
+
"category": "Focus",
|
|
614
|
+
"shape": "Spiral",
|
|
615
|
+
"color": "Copper",
|
|
616
|
+
"texture": "Etched Metal",
|
|
617
|
+
"rating": "Standard",
|
|
618
|
+
"weight": 0.2,
|
|
619
|
+
"room": "Talismonger's Hut",
|
|
620
|
+
"owner": "Sister Verdigris"
|
|
621
|
+
},
|
|
622
|
+
{
|
|
623
|
+
"name": "Trauma Kit",
|
|
624
|
+
"description": "A doc-grade field kit from Halloran's shelf: sprays, staples, and things that hiss.",
|
|
625
|
+
"size": "Small",
|
|
626
|
+
"category": "Medical",
|
|
627
|
+
"shape": "Case",
|
|
628
|
+
"color": "White",
|
|
629
|
+
"texture": "Hard Shell",
|
|
630
|
+
"rating": "Rare",
|
|
631
|
+
"weight": 1.5,
|
|
632
|
+
"room": "Doc Halloran's Clinic",
|
|
633
|
+
"owner": "Doc Halloran"
|
|
634
|
+
},
|
|
635
|
+
{
|
|
636
|
+
"name": "Field Medkit",
|
|
637
|
+
"description": "A standard street medkit, restocked this week.",
|
|
638
|
+
"size": "Small",
|
|
639
|
+
"category": "Medical",
|
|
640
|
+
"shape": "Pouch",
|
|
641
|
+
"color": "Red",
|
|
642
|
+
"texture": "Nylon",
|
|
643
|
+
"rating": "Standard",
|
|
644
|
+
"weight": 1,
|
|
645
|
+
"room": "Doc Halloran's Clinic",
|
|
646
|
+
"owner": "Doc Halloran"
|
|
647
|
+
},
|
|
648
|
+
{
|
|
649
|
+
"name": "Clinic Stim Patch",
|
|
650
|
+
"description": "A clinical-grade stimulant patch. The crash is printed on the label, which is more honesty than the street version offers.",
|
|
651
|
+
"size": "Tiny",
|
|
652
|
+
"category": "StimPatch",
|
|
298
653
|
"shape": "Square",
|
|
299
|
-
"color": "
|
|
300
|
-
"texture": "
|
|
654
|
+
"color": "White",
|
|
655
|
+
"texture": "Foil",
|
|
656
|
+
"rating": "Standard",
|
|
657
|
+
"weight": 0.05,
|
|
658
|
+
"room": "Doc Halloran's Clinic",
|
|
659
|
+
"owner": "Doc Halloran"
|
|
660
|
+
},
|
|
661
|
+
{
|
|
662
|
+
"name": "Bowl of Laksa",
|
|
663
|
+
"description": "Mama Wu's laksa: chili oil, coconut, and the will to keep going.",
|
|
664
|
+
"size": "Small",
|
|
665
|
+
"category": "Vice",
|
|
666
|
+
"shape": "Bowl",
|
|
667
|
+
"color": "Red-Gold",
|
|
668
|
+
"texture": "Steaming",
|
|
669
|
+
"rating": "Standard",
|
|
670
|
+
"weight": 0.5,
|
|
671
|
+
"room": "Mama Wu's Noodles",
|
|
672
|
+
"owner": "Mama Wu"
|
|
673
|
+
},
|
|
674
|
+
{
|
|
675
|
+
"name": "Purple Haze Special",
|
|
676
|
+
"description": "The house drink: violet, luminous, and legally ambiguous.",
|
|
677
|
+
"size": "Tiny",
|
|
678
|
+
"category": "Vice",
|
|
679
|
+
"shape": "Glass",
|
|
680
|
+
"color": "Violet",
|
|
681
|
+
"texture": "Luminous",
|
|
301
682
|
"rating": "Common",
|
|
302
|
-
"weight": 0.
|
|
303
|
-
"room": "
|
|
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.'"
|
|
683
|
+
"weight": 0.3,
|
|
684
|
+
"room": "Purple Haze Bar"
|
|
305
685
|
},
|
|
306
686
|
{
|
|
307
|
-
"name": "
|
|
308
|
-
"description": "A
|
|
309
|
-
"
|
|
687
|
+
"name": "Wall of the Fallen Ledger",
|
|
688
|
+
"description": "A hand-bound book beneath the backroom's photographs, recording every runner the district lost and how.",
|
|
689
|
+
"details": "The last page is half-filled. There is room for more names, and the handwriting changes every few years -- whoever keeps the wall, keeps it faithfully.",
|
|
690
|
+
"size": "Small",
|
|
310
691
|
"category": "Book",
|
|
311
692
|
"shape": "Rectangle",
|
|
693
|
+
"color": "Black",
|
|
694
|
+
"texture": "Hand-Bound",
|
|
695
|
+
"rating": "Common",
|
|
696
|
+
"weight": 0.6,
|
|
697
|
+
"room": "Bar Backroom"
|
|
698
|
+
},
|
|
699
|
+
{
|
|
700
|
+
"name": "Crypt Notes",
|
|
701
|
+
"description": "A pawned notebook of a dead urban explorer, thick with sketches of the chapel's lower level.",
|
|
702
|
+
"details": "The final sketch shows the crypt grate and its old mechanical lock, annotated: 'The verger's trick -- the tumblers answer to the saint of rust. Say it, or pick it, but the grate WILL open for the patient.'",
|
|
703
|
+
"size": "Small",
|
|
704
|
+
"category": "Book",
|
|
705
|
+
"shape": "Notebook",
|
|
312
706
|
"color": "Gray",
|
|
313
|
-
"texture": "
|
|
314
|
-
"rating": "
|
|
315
|
-
"weight":
|
|
316
|
-
"
|
|
317
|
-
"owner": "
|
|
318
|
-
"details": "Chapter 3: 'Only when the sync is complete—when nerve and node hum in harmony—can the lock yield to thought.'"
|
|
707
|
+
"texture": "Water-Stained",
|
|
708
|
+
"rating": "Common",
|
|
709
|
+
"weight": 0.3,
|
|
710
|
+
"room": "Union Pawnshop",
|
|
711
|
+
"owner": "Whisper"
|
|
319
712
|
},
|
|
320
713
|
{
|
|
321
|
-
"name": "
|
|
322
|
-
"description": "A
|
|
714
|
+
"name": "Chipped Credstick",
|
|
715
|
+
"description": "A secondhand credstick from Whisper's counter, history unknown and unasked.",
|
|
716
|
+
"size": "Small",
|
|
717
|
+
"category": "CurrencyContainer",
|
|
718
|
+
"shape": "Cylinder",
|
|
719
|
+
"color": "Scratched Silver",
|
|
720
|
+
"texture": "Worn",
|
|
721
|
+
"rating": "Common",
|
|
722
|
+
"weight": 0.2,
|
|
723
|
+
"currencyAmount": 120,
|
|
724
|
+
"room": "Union Pawnshop",
|
|
725
|
+
"owner": "Whisper"
|
|
726
|
+
},
|
|
727
|
+
{
|
|
728
|
+
"name": "Lockpick Set",
|
|
729
|
+
"description": "Precision picks and tension bars in a roll of oiled leather, pawned by someone who went straight or went down.",
|
|
323
730
|
"size": "Tiny",
|
|
324
|
-
"category": "
|
|
325
|
-
"shape": "
|
|
326
|
-
"color": "
|
|
327
|
-
"texture": "
|
|
731
|
+
"category": "Tool",
|
|
732
|
+
"shape": "Roll",
|
|
733
|
+
"color": "Brown",
|
|
734
|
+
"texture": "Oiled Leather",
|
|
328
735
|
"rating": "Standard",
|
|
329
|
-
"weight": 0.
|
|
330
|
-
"
|
|
331
|
-
"owner": "
|
|
332
|
-
"droppable": false,
|
|
333
|
-
"transferable": false
|
|
736
|
+
"weight": 0.3,
|
|
737
|
+
"room": "Union Pawnshop",
|
|
738
|
+
"owner": "Whisper"
|
|
334
739
|
},
|
|
335
740
|
{
|
|
336
|
-
"name": "
|
|
337
|
-
"description": "A
|
|
741
|
+
"name": "Soggy District Flyer",
|
|
742
|
+
"description": "A rain-pulped flyer for the Purple Haze district, still half-readable.",
|
|
743
|
+
"details": "The legible part maps the district: the Bar and Wu's off the Strip, the Night Market's shops to the east, and the undermarket below the alley -- 'mind the Dragons, tip the Doc, and never take the last noodle.'",
|
|
744
|
+
"size": "Tiny",
|
|
745
|
+
"category": "Book",
|
|
746
|
+
"shape": "Flyer",
|
|
747
|
+
"color": "Faded Purple",
|
|
748
|
+
"texture": "Pulped Paper",
|
|
749
|
+
"rating": "Common",
|
|
750
|
+
"weight": 0.05,
|
|
751
|
+
"room": "Neon Strip"
|
|
752
|
+
},
|
|
753
|
+
{
|
|
754
|
+
"name": "Dragons' Stash Credstick",
|
|
755
|
+
"description": "The Haze Dragons' petty cash, sitting in the open because nobody in this district is that stupid.",
|
|
338
756
|
"size": "Small",
|
|
339
757
|
"category": "CurrencyContainer",
|
|
340
|
-
"shape": "
|
|
341
|
-
"color": "
|
|
342
|
-
"texture": "
|
|
343
|
-
"rating": "
|
|
758
|
+
"shape": "Rectangle",
|
|
759
|
+
"color": "Green",
|
|
760
|
+
"texture": "Stickered",
|
|
761
|
+
"rating": "Common",
|
|
344
762
|
"weight": 0.2,
|
|
345
|
-
"currencyAmount":
|
|
346
|
-
"room": "
|
|
763
|
+
"currencyAmount": 200,
|
|
764
|
+
"room": "Haze Dragons Turf",
|
|
765
|
+
"owner": "Brick"
|
|
766
|
+
},
|
|
767
|
+
{
|
|
768
|
+
"name": "Dragon Cleaver",
|
|
769
|
+
"description": "Brick's personal blade: half machete, half doctrine.",
|
|
770
|
+
"size": "Medium",
|
|
771
|
+
"category": "MeleeWeapon",
|
|
772
|
+
"shape": "Cleaver",
|
|
773
|
+
"color": "Scarred Steel",
|
|
774
|
+
"texture": "Notched",
|
|
775
|
+
"rating": "Standard",
|
|
776
|
+
"weight": 2.2,
|
|
777
|
+
"heldBy": "Brick",
|
|
778
|
+
"owner": "Brick",
|
|
779
|
+
"transferable": false
|
|
347
780
|
},
|
|
348
781
|
{
|
|
349
|
-
"name": "
|
|
350
|
-
"description": "A
|
|
782
|
+
"name": "Ghost-Sim Bootlegs",
|
|
783
|
+
"description": "A cache of bootleg sim-recordings on the den's host -- other people's stolen sensory memories, flickering behind the ice.",
|
|
784
|
+
"details": "Someone's whole life is in here, felt first-hand. The den's regulars pay well for the vivid ones and better for the forbidden ones.",
|
|
351
785
|
"size": "Tiny",
|
|
352
|
-
"category": "
|
|
353
|
-
"shape": "
|
|
354
|
-
"color": "
|
|
355
|
-
"texture": "
|
|
786
|
+
"category": "Datachip",
|
|
787
|
+
"shape": "Virtual Shelf",
|
|
788
|
+
"color": "Static Gray",
|
|
789
|
+
"texture": "Digital",
|
|
356
790
|
"rating": "Rare",
|
|
357
|
-
"weight": 0
|
|
358
|
-
"
|
|
791
|
+
"weight": 0,
|
|
792
|
+
"plane": "matrix",
|
|
793
|
+
"room": "Sim Den"
|
|
359
794
|
},
|
|
360
795
|
{
|
|
361
|
-
"name": "
|
|
362
|
-
"description": "A
|
|
796
|
+
"name": "Drowned Reliquary",
|
|
797
|
+
"description": "A small reliquary of fused glass and silver from the crypt's one unlooted niche, cold as deep water and humming with old faith.",
|
|
363
798
|
"size": "Tiny",
|
|
364
|
-
"category": "
|
|
365
|
-
"shape": "
|
|
366
|
-
"color": "
|
|
367
|
-
"texture": "
|
|
799
|
+
"category": "Focus",
|
|
800
|
+
"shape": "Reliquary",
|
|
801
|
+
"color": "Sea Glass",
|
|
802
|
+
"texture": "Fused Silver",
|
|
803
|
+
"rating": "Rare",
|
|
804
|
+
"weight": 0.4,
|
|
805
|
+
"room": "Chapel Crypt"
|
|
806
|
+
},
|
|
807
|
+
{
|
|
808
|
+
"name": "Tarnished Credstick",
|
|
809
|
+
"description": "A pre-flood credstick from the crypt floor, miraculously still certified.",
|
|
810
|
+
"size": "Small",
|
|
811
|
+
"category": "CurrencyContainer",
|
|
812
|
+
"shape": "Cylinder",
|
|
813
|
+
"color": "Tarnished",
|
|
814
|
+
"texture": "Corroded",
|
|
368
815
|
"rating": "Common",
|
|
369
816
|
"weight": 0.2,
|
|
370
|
-
"
|
|
371
|
-
"
|
|
817
|
+
"currencyAmount": 300,
|
|
818
|
+
"room": "Chapel Crypt"
|
|
372
819
|
}
|
|
373
820
|
],
|
|
374
821
|
"puzzles": [
|
|
375
822
|
{
|
|
376
|
-
"name": "
|
|
377
|
-
"
|
|
378
|
-
"requiredPhrase": "
|
|
379
|
-
"
|
|
380
|
-
"
|
|
381
|
-
"
|
|
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"
|
|
823
|
+
"name": "Crypt Grate",
|
|
824
|
+
"riddle": "You see a rust-welded iron grate in the chapel floor, its old mechanical lock built to answer a spoken verger's phrase -- or a very patient set of picks.",
|
|
825
|
+
"requiredPhrase": "the saint of rust",
|
|
826
|
+
"successMessage": "The tumblers grind through decades of corrosion and the grate swings up on screaming hinges.",
|
|
827
|
+
"failureMessage": "The mechanism seizes. Flakes of rust drift down into the dark, and the Choir's song falters for a beat.",
|
|
828
|
+
"bypassType": "lockpick"
|
|
394
829
|
}
|
|
395
830
|
]
|
|
396
831
|
}
|
|
397
|
-
|