@maka/maka-cli 5.63.1 → 5.65.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/commands/ar.js +29 -8
- package/bundle/typescript/src/commands/game/sideQuest/commands/ar.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/ask.d.ts +42 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/ask.js +86 -3
- package/bundle/typescript/src/commands/game/sideQuest/commands/ask.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/backlog.d.ts +29 -2
- package/bundle/typescript/src/commands/game/sideQuest/commands/backlog.js +151 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/backlog.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/bluff.d.ts +40 -13
- package/bundle/typescript/src/commands/game/sideQuest/commands/bluff.js +107 -25
- package/bundle/typescript/src/commands/game/sideQuest/commands/bluff.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/breach.d.ts +11 -15
- package/bundle/typescript/src/commands/game/sideQuest/commands/breach.js +13 -16
- package/bundle/typescript/src/commands/game/sideQuest/commands/breach.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/buy.d.ts +8 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/buy.js +30 -2
- package/bundle/typescript/src/commands/game/sideQuest/commands/buy.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/bypass-command.d.ts +40 -49
- package/bundle/typescript/src/commands/game/sideQuest/commands/bypass-command.js +121 -160
- package/bundle/typescript/src/commands/game/sideQuest/commands/bypass-command.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/call.js +29 -5
- package/bundle/typescript/src/commands/game/sideQuest/commands/call.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/cast.d.ts +7 -8
- package/bundle/typescript/src/commands/game/sideQuest/commands/cast.js +13 -13
- package/bundle/typescript/src/commands/game/sideQuest/commands/cast.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/contacts.js +22 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/contacts.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/cover.d.ts +30 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/cover.js +65 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/cover.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/dispel.d.ts +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/dispel.js +2 -2
- package/bundle/typescript/src/commands/game/sideQuest/commands/dispel.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/go.js +25 -3
- package/bundle/typescript/src/commands/game/sideQuest/commands/go.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/hack.d.ts +2 -3
- package/bundle/typescript/src/commands/game/sideQuest/commands/hack.js +2 -2
- package/bundle/typescript/src/commands/game/sideQuest/commands/hack.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/jobs.js +18 -10
- package/bundle/typescript/src/commands/game/sideQuest/commands/jobs.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/journal.d.ts +44 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/journal.js +136 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/journal.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/look.d.ts +20 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/look.js +157 -5
- package/bundle/typescript/src/commands/game/sideQuest/commands/look.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/map.js +18 -4
- package/bundle/typescript/src/commands/game/sideQuest/commands/map.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/move.js +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/pick.d.ts +2 -3
- package/bundle/typescript/src/commands/game/sideQuest/commands/pick.js +2 -2
- package/bundle/typescript/src/commands/game/sideQuest/commands/pick.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/players.js +8 -2
- package/bundle/typescript/src/commands/game/sideQuest/commands/players.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/posture.d.ts +45 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/posture.js +115 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/posture.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/search.js +46 -12
- package/bundle/typescript/src/commands/game/sideQuest/commands/search.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/sheet.js +30 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/sheet.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/silent.js +11 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/silent.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/take.js +12 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/take.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/talk.d.ts +47 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/talk.js +91 -5
- package/bundle/typescript/src/commands/game/sideQuest/commands/talk.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/time.d.ts +20 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/time.js +61 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/time.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/unlock.js +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/unlock.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/use.d.ts +17 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/use.js +136 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/use.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/engine-version.d.ts +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/engine-version.js +15 -1
- package/bundle/typescript/src/commands/game/sideQuest/engine-version.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.d.ts +128 -44
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.js +551 -254
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-factory.js +82 -84
- 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 +23 -4
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-seed-generator.js +95 -79
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-seed-generator.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/seed-migration.d.ts +30 -0
- package/bundle/typescript/src/commands/game/sideQuest/factories/seed-migration.js +176 -0
- package/bundle/typescript/src/commands/game/sideQuest/factories/seed-migration.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/game.d.ts +104 -0
- package/bundle/typescript/src/commands/game/sideQuest/game.js +268 -16
- package/bundle/typescript/src/commands/game/sideQuest/game.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/headless-harness.d.ts +78 -0
- package/bundle/typescript/src/commands/game/sideQuest/headless-harness.js +188 -0
- package/bundle/typescript/src/commands/game/sideQuest/headless-harness.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/headless.d.ts +5 -0
- package/bundle/typescript/src/commands/game/sideQuest/headless.js +78 -0
- package/bundle/typescript/src/commands/game/sideQuest/headless.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/_index.d.ts +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/_index.js +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/_index.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/device.d.ts +121 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/device.js +145 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/device.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/door.d.ts +27 -8
- package/bundle/typescript/src/commands/game/sideQuest/models/door.js +15 -10
- package/bundle/typescript/src/commands/game/sideQuest/models/door.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/npc.d.ts +143 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/npc.js +253 -30
- package/bundle/typescript/src/commands/game/sideQuest/models/npc.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/player.d.ts +68 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/player.js +102 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/player.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/room.d.ts +80 -34
- package/bundle/typescript/src/commands/game/sideQuest/models/room.js +126 -54
- package/bundle/typescript/src/commands/game/sideQuest/models/room.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/scene.d.ts +1 -4
- package/bundle/typescript/src/commands/game/sideQuest/models/scene.js +0 -22
- package/bundle/typescript/src/commands/game/sideQuest/models/scene.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/scenes/scene1.json +78 -109
- package/bundle/typescript/src/commands/game/sideQuest/scenes/scene2.json +4 -101
- package/bundle/typescript/src/commands/game/sideQuest/types/save-file.d.ts +24 -0
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/device-seed.d.ts +52 -0
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/device-seed.js +2 -0
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/device-seed.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/legacy-puzzle-seed.d.ts +63 -0
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/legacy-puzzle-seed.js +2 -0
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/legacy-puzzle-seed.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/player-seed.d.ts +6 -0
- 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 +3 -2
- package/bundle/typescript/src/commands/game/sideQuest/types/shared/abstracts.d.ts +2 -28
- package/bundle/typescript/src/commands/game/sideQuest/types/shared/abstracts.js +1 -14
- package/bundle/typescript/src/commands/game/sideQuest/types/shared/abstracts.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/ui.js +24 -0
- package/bundle/typescript/src/commands/game/sideQuest/ui.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/affordances.d.ts +55 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/affordances.js +36 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/affordances.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/ar.d.ts +22 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/ar.js +26 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/ar.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-dump.js +6 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-dump.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-review.d.ts +45 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-review.js +116 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-review.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog.d.ts +73 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog.js +56 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/combat-exchange.js +37 -4
- package/bundle/typescript/src/commands/game/sideQuest/utilities/combat-exchange.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/credentials.d.ts +26 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/credentials.js +48 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/credentials.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/devices.d.ts +23 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/devices.js +55 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/devices.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/fuzzy-match.d.ts +57 -2
- package/bundle/typescript/src/commands/game/sideQuest/utilities/fuzzy-match.js +46 -3
- package/bundle/typescript/src/commands/game/sideQuest/utilities/fuzzy-match.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/log-style.d.ts +38 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/log-style.js +42 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/log-style.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/persistence.js +72 -17
- package/bundle/typescript/src/commands/game/sideQuest/utilities/persistence.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/playtester.d.ts +50 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/playtester.js +43 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/playtester.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/room-grid.d.ts +14 -3
- package/bundle/typescript/src/commands/game/sideQuest/utilities/room-grid.js +45 -31
- package/bundle/typescript/src/commands/game/sideQuest/utilities/room-grid.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/room-view.js +66 -8
- package/bundle/typescript/src/commands/game/sideQuest/utilities/room-view.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/spots.d.ts +81 -15
- package/bundle/typescript/src/commands/game/sideQuest/utilities/spots.js +142 -33
- package/bundle/typescript/src/commands/game/sideQuest/utilities/spots.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/use-target.d.ts +88 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/use-target.js +113 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/use-target.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/world-clock.d.ts +83 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/world-clock.js +106 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/world-clock.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js +54 -5
- package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js.map +1 -1
- package/bundle/typescript/src/maka.js +1 -1
- package/bundle/typescript/src/maka.js.map +1 -1
- package/bundle/typescript/src/tools/sdk-loader/relocate.d.ts +19 -2
- package/bundle/typescript/src/tools/sdk-loader/relocate.js +22 -2
- package/bundle/typescript/src/tools/sdk-loader/relocate.js.map +1 -1
- package/package.json +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/solve.d.ts +0 -6
- package/bundle/typescript/src/commands/game/sideQuest/commands/solve.js +0 -72
- package/bundle/typescript/src/commands/game/sideQuest/commands/solve.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/puzzle-factory.d.ts +0 -6
- package/bundle/typescript/src/commands/game/sideQuest/factories/puzzle-factory.js +0 -26
- package/bundle/typescript/src/commands/game/sideQuest/factories/puzzle-factory.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/puzzle.d.ts +0 -143
- package/bundle/typescript/src/commands/game/sideQuest/models/puzzle.js +0 -366
- package/bundle/typescript/src/commands/game/sideQuest/models/puzzle.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/puzzle-seed.d.ts +0 -28
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/puzzle-seed.js +0 -2
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/puzzle-seed.js.map +0 -1
|
@@ -11,7 +11,9 @@
|
|
|
11
11
|
],
|
|
12
12
|
"currency": {
|
|
13
13
|
"type": "nuyen",
|
|
14
|
-
"authorityRoomTags": [
|
|
14
|
+
"authorityRoomTags": [
|
|
15
|
+
"Bank"
|
|
16
|
+
]
|
|
15
17
|
},
|
|
16
18
|
"player": {
|
|
17
19
|
"name": "Maka",
|
|
@@ -95,20 +97,30 @@
|
|
|
95
97
|
}
|
|
96
98
|
]
|
|
97
99
|
},
|
|
98
|
-
|
|
99
100
|
"rooms": [
|
|
100
101
|
{
|
|
101
102
|
"name": "Barrens Apartment",
|
|
102
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.",
|
|
103
|
-
"tags": [
|
|
104
|
+
"tags": [
|
|
105
|
+
"residence"
|
|
106
|
+
],
|
|
104
107
|
"size": "small",
|
|
105
108
|
"spots": [
|
|
106
|
-
{
|
|
107
|
-
|
|
108
|
-
|
|
109
|
+
{
|
|
110
|
+
"name": "door"
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
"name": "couch"
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
"name": "bookshelf"
|
|
117
|
+
}
|
|
109
118
|
],
|
|
110
119
|
"supportedLifestyles": {
|
|
111
|
-
"residenceTypes": [
|
|
120
|
+
"residenceTypes": [
|
|
121
|
+
"Street",
|
|
122
|
+
"Squatter"
|
|
123
|
+
]
|
|
112
124
|
},
|
|
113
125
|
"exits": [
|
|
114
126
|
{
|
|
@@ -121,15 +133,25 @@
|
|
|
121
133
|
{
|
|
122
134
|
"name": "Redmond Safehouse",
|
|
123
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.",
|
|
124
|
-
"tags": [
|
|
136
|
+
"tags": [
|
|
137
|
+
"residence"
|
|
138
|
+
],
|
|
125
139
|
"size": "medium",
|
|
126
140
|
"spots": [
|
|
127
|
-
{
|
|
128
|
-
|
|
129
|
-
|
|
141
|
+
{
|
|
142
|
+
"name": "entryway"
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
"name": "gear cache"
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
"name": "bunk"
|
|
149
|
+
}
|
|
130
150
|
],
|
|
131
151
|
"supportedLifestyles": {
|
|
132
|
-
"residenceTypes": [
|
|
152
|
+
"residenceTypes": [
|
|
153
|
+
"Low"
|
|
154
|
+
]
|
|
133
155
|
},
|
|
134
156
|
"exits": [
|
|
135
157
|
{
|
|
@@ -156,11 +178,17 @@
|
|
|
156
178
|
"owner": "Mr. Krow",
|
|
157
179
|
"size": "small",
|
|
158
180
|
"spots": [
|
|
159
|
-
{
|
|
160
|
-
|
|
181
|
+
{
|
|
182
|
+
"name": "door"
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
"name": "desk"
|
|
186
|
+
}
|
|
161
187
|
],
|
|
162
188
|
"supportedLifestyles": {
|
|
163
|
-
"employmentRoles": [
|
|
189
|
+
"employmentRoles": [
|
|
190
|
+
"Fixer"
|
|
191
|
+
]
|
|
164
192
|
},
|
|
165
193
|
"exits": [
|
|
166
194
|
{
|
|
@@ -172,35 +200,27 @@
|
|
|
172
200
|
},
|
|
173
201
|
{
|
|
174
202
|
"name": "Lucky Chummer",
|
|
175
|
-
"description": "A neon casino buzzing with illicit energy. Cards snap at the tables, chips clatter down the bar rail, and
|
|
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.",
|
|
176
204
|
"size": "large",
|
|
177
205
|
"spots": [
|
|
178
|
-
{ "name": "entrance" },
|
|
179
|
-
{ "name": "card tables" },
|
|
180
|
-
{ "name": "bar rail" },
|
|
181
|
-
{ "name": "roped stair" }
|
|
182
|
-
],
|
|
183
|
-
"supportedLifestyles": {
|
|
184
|
-
"habitTags": ["Gambling"]
|
|
185
|
-
},
|
|
186
|
-
"exits": [
|
|
187
206
|
{
|
|
188
|
-
"
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
"
|
|
207
|
+
"name": "entrance"
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
"name": "card tables"
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
"name": "bar rail"
|
|
214
|
+
},
|
|
215
|
+
{
|
|
216
|
+
"name": "roped stair"
|
|
192
217
|
}
|
|
193
|
-
]
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
"spots": [
|
|
200
|
-
{ "name": "door" },
|
|
201
|
-
{ "name": "card table" },
|
|
202
|
-
{ "name": "safe wall" }
|
|
203
|
-
]
|
|
218
|
+
],
|
|
219
|
+
"supportedLifestyles": {
|
|
220
|
+
"habitTags": [
|
|
221
|
+
"Gambling"
|
|
222
|
+
]
|
|
223
|
+
}
|
|
204
224
|
},
|
|
205
225
|
{
|
|
206
226
|
"name": "Grid Vault",
|
|
@@ -209,8 +229,15 @@
|
|
|
209
229
|
"nodeAccess": "wired",
|
|
210
230
|
"size": "small",
|
|
211
231
|
"spots": [
|
|
212
|
-
{
|
|
213
|
-
|
|
232
|
+
{
|
|
233
|
+
"name": "door"
|
|
234
|
+
},
|
|
235
|
+
{
|
|
236
|
+
"name": "server racks",
|
|
237
|
+
"tags": [
|
|
238
|
+
"cover-partial"
|
|
239
|
+
]
|
|
240
|
+
}
|
|
214
241
|
]
|
|
215
242
|
},
|
|
216
243
|
{
|
|
@@ -219,8 +246,12 @@
|
|
|
219
246
|
"warded": true,
|
|
220
247
|
"size": "small",
|
|
221
248
|
"spots": [
|
|
222
|
-
{
|
|
223
|
-
|
|
249
|
+
{
|
|
250
|
+
"name": "threshold"
|
|
251
|
+
},
|
|
252
|
+
{
|
|
253
|
+
"name": "shrine"
|
|
254
|
+
}
|
|
224
255
|
]
|
|
225
256
|
}
|
|
226
257
|
],
|
|
@@ -265,10 +296,10 @@
|
|
|
265
296
|
}
|
|
266
297
|
},
|
|
267
298
|
{
|
|
268
|
-
"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 the
|
|
299
|
+
"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.",
|
|
269
300
|
"dialogue": [
|
|
270
301
|
"First drink's watered down. So is the second.",
|
|
271
|
-
"
|
|
302
|
+
"Krow keeps his door open. Doesn't mean you're invited through it.",
|
|
272
303
|
"Everything in this place is rigged, sugar. Including me."
|
|
273
304
|
],
|
|
274
305
|
"player": {
|
|
@@ -435,20 +466,6 @@
|
|
|
435
466
|
"room": "Barrens Apartment",
|
|
436
467
|
"atSpot": "bookshelf"
|
|
437
468
|
},
|
|
438
|
-
{
|
|
439
|
-
"name": "Dragon Door Etiquette",
|
|
440
|
-
"description": "A slim etiquette pamphlet for the Lucky Chummer's high-roller room, dog-eared at the section on the door.",
|
|
441
|
-
"details": "The dog-eared page reads: 'Toro moves the rope for members only. Members announce themselves properly: the silver dragon says. Say it like you belong.'",
|
|
442
|
-
"size": "Small",
|
|
443
|
-
"category": "Book",
|
|
444
|
-
"shape": "Pamphlet",
|
|
445
|
-
"color": "Purple",
|
|
446
|
-
"texture": "Glossy Paper",
|
|
447
|
-
"rating": "Common",
|
|
448
|
-
"weight": 0.2,
|
|
449
|
-
"room": "Barrens Apartment",
|
|
450
|
-
"atSpot": "bookshelf"
|
|
451
|
-
},
|
|
452
469
|
{
|
|
453
470
|
"name": "Spare Clip",
|
|
454
471
|
"description": "A boxy magazine of 10 rounds, factory-wrapped. Fits most street-caliber sidearms.",
|
|
@@ -488,20 +505,6 @@
|
|
|
488
505
|
"room": "Redmond Safehouse",
|
|
489
506
|
"atSpot": "gear cache"
|
|
490
507
|
},
|
|
491
|
-
{
|
|
492
|
-
"name": "Card Sharp's Notebook",
|
|
493
|
-
"description": "A battered notebook, pages soft with handling, filled with a card sharp's private notes on the Lucky Chummer's back rooms.",
|
|
494
|
-
"details": "One page is circled twice: 'The counting-room safe still runs the house code from the old management: double or nothing. They never changed it. They never change anything.'",
|
|
495
|
-
"size": "Small",
|
|
496
|
-
"category": "Book",
|
|
497
|
-
"shape": "Rectangle",
|
|
498
|
-
"color": "Brown",
|
|
499
|
-
"texture": "Worn Leather",
|
|
500
|
-
"rating": "Common",
|
|
501
|
-
"weight": 0.3,
|
|
502
|
-
"room": "Redmond Safehouse",
|
|
503
|
-
"atSpot": "bunk"
|
|
504
|
-
},
|
|
505
508
|
{
|
|
506
509
|
"name": "Cuban Cigar",
|
|
507
510
|
"description": "Hard to find, but delicious.",
|
|
@@ -541,43 +544,9 @@
|
|
|
541
544
|
"weight": 0.2,
|
|
542
545
|
"room": "Chapel Alcove",
|
|
543
546
|
"atSpot": "shrine"
|
|
544
|
-
},
|
|
545
|
-
{
|
|
546
|
-
"name": "House Take Credstick",
|
|
547
|
-
"description": "A certified credstick straight out of the counting-room safe -- the house's own skim, still warm.",
|
|
548
|
-
"size": "Small",
|
|
549
|
-
"category": "CurrencyContainer",
|
|
550
|
-
"shape": "Rectangle",
|
|
551
|
-
"color": "Matte Black",
|
|
552
|
-
"texture": "Smooth",
|
|
553
|
-
"rating": "Standard",
|
|
554
|
-
"weight": 0.2,
|
|
555
|
-
"currencyAmount": 800
|
|
556
|
-
}
|
|
557
|
-
],
|
|
558
|
-
"puzzles": [
|
|
559
|
-
{
|
|
560
|
-
"name": "Velvet Rope",
|
|
561
|
-
"riddle": "You see a velvet rope across the backroom stair, and Toro behind it -- two and a half meters of troll in a tailored suit. He looks through you, waiting for the members' phrase.",
|
|
562
|
-
"requiredPhrase": "the silver dragon says",
|
|
563
|
-
"successMessage": "Toro unhooks the rope without a word and looks back at nothing. You belong now.",
|
|
564
|
-
"failureMessage": "Toro's eyes narrow a millimeter. The rope stays. Somewhere a pit boss glances over.",
|
|
565
|
-
"bypassType": "con"
|
|
566
|
-
},
|
|
567
|
-
{
|
|
568
|
-
"name": "Backroom Safe",
|
|
569
|
-
"room": "Chummer Backroom",
|
|
570
|
-
"atSpot": "safe wall",
|
|
571
|
-
"riddle": "You see a battered floor safe behind the counting table, its mechanical dial worn shiny. It wants the house code.",
|
|
572
|
-
"requiredPhrase": "double or nothing",
|
|
573
|
-
"rewardItem": "House Take Credstick",
|
|
574
|
-
"requiresPuzzle": "Velvet Rope",
|
|
575
|
-
"lockedMessage": "You'd need to actually be inside the counting room's circle of trust before anyone lets you kneel at the safe.",
|
|
576
|
-
"successMessage": "The dial lands, tumblers surrender, and the house's own skim slides into your hand.",
|
|
577
|
-
"failureMessage": "The dial jams. Somewhere above, a camera swivels toward the counting room.",
|
|
578
|
-
"bypassType": "lockpick"
|
|
579
547
|
}
|
|
580
548
|
],
|
|
549
|
+
"puzzles": [],
|
|
581
550
|
"winCondition": {
|
|
582
551
|
"type": "possess",
|
|
583
552
|
"item": "Krow's Datachip",
|
|
@@ -220,30 +220,6 @@
|
|
|
220
220
|
"name": "back corner",
|
|
221
221
|
"description": "The dim table nobody chooses by accident."
|
|
222
222
|
}
|
|
223
|
-
],
|
|
224
|
-
"exits": [
|
|
225
|
-
{
|
|
226
|
-
"direction": "north",
|
|
227
|
-
"targetRoom": "Bar Backroom",
|
|
228
|
-
"atSpot": "back corner"
|
|
229
|
-
}
|
|
230
|
-
]
|
|
231
|
-
},
|
|
232
|
-
{
|
|
233
|
-
"name": "Bar Backroom",
|
|
234
|
-
"description": "Crates of unlabeled bottles by the door, 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.",
|
|
235
|
-
"roomType": "Bar",
|
|
236
|
-
"size": "small",
|
|
237
|
-
"spots": [
|
|
238
|
-
{
|
|
239
|
-
"name": "door"
|
|
240
|
-
},
|
|
241
|
-
{
|
|
242
|
-
"name": "card table"
|
|
243
|
-
},
|
|
244
|
-
{
|
|
245
|
-
"name": "crates"
|
|
246
|
-
}
|
|
247
223
|
]
|
|
248
224
|
},
|
|
249
225
|
{
|
|
@@ -491,28 +467,6 @@
|
|
|
491
467
|
{
|
|
492
468
|
"name": "altar"
|
|
493
469
|
}
|
|
494
|
-
],
|
|
495
|
-
"exits": [
|
|
496
|
-
{
|
|
497
|
-
"direction": "down",
|
|
498
|
-
"targetRoom": "Chapel Crypt",
|
|
499
|
-
"puzzle": "Crypt Grate",
|
|
500
|
-
"atSpot": "altar"
|
|
501
|
-
}
|
|
502
|
-
]
|
|
503
|
-
},
|
|
504
|
-
{
|
|
505
|
-
"name": "Chapel Crypt",
|
|
506
|
-
"description": "A dry vault below the waterline, older than the district above it. From the entry stairs, reliquary niches line the walls -- emptied long ago, almost all of them.",
|
|
507
|
-
"roomType": "Crypt",
|
|
508
|
-
"size": "tiny",
|
|
509
|
-
"spots": [
|
|
510
|
-
{
|
|
511
|
-
"name": "entry stairs"
|
|
512
|
-
},
|
|
513
|
-
{
|
|
514
|
-
"name": "reliquary niches"
|
|
515
|
-
}
|
|
516
470
|
]
|
|
517
471
|
},
|
|
518
472
|
{
|
|
@@ -1228,7 +1182,7 @@
|
|
|
1228
1182
|
},
|
|
1229
1183
|
{
|
|
1230
1184
|
"name": "Wall of the Fallen Ledger",
|
|
1231
|
-
"description": "A hand-bound book
|
|
1185
|
+
"description": "A hand-bound book in the bar's back corner, kept beneath a handful of pinned photographs, recording every runner the district lost and how.",
|
|
1232
1186
|
"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.",
|
|
1233
1187
|
"size": "Small",
|
|
1234
1188
|
"category": "Book",
|
|
@@ -1237,23 +1191,8 @@
|
|
|
1237
1191
|
"texture": "Hand-Bound",
|
|
1238
1192
|
"rating": "Common",
|
|
1239
1193
|
"weight": 0.6,
|
|
1240
|
-
"room": "Bar
|
|
1241
|
-
"atSpot": "
|
|
1242
|
-
},
|
|
1243
|
-
{
|
|
1244
|
-
"name": "Crypt Notes",
|
|
1245
|
-
"description": "A pawned notebook of a dead urban explorer, thick with sketches of the chapel's lower level.",
|
|
1246
|
-
"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.'",
|
|
1247
|
-
"size": "Small",
|
|
1248
|
-
"category": "Book",
|
|
1249
|
-
"shape": "Notebook",
|
|
1250
|
-
"color": "Gray",
|
|
1251
|
-
"texture": "Water-Stained",
|
|
1252
|
-
"rating": "Common",
|
|
1253
|
-
"weight": 0.3,
|
|
1254
|
-
"room": "Union Pawnshop",
|
|
1255
|
-
"atSpot": "back shelves",
|
|
1256
|
-
"owner": "Whisper"
|
|
1194
|
+
"room": "Purple Haze Bar",
|
|
1195
|
+
"atSpot": "back corner"
|
|
1257
1196
|
},
|
|
1258
1197
|
{
|
|
1259
1198
|
"name": "Chipped Credstick",
|
|
@@ -1341,33 +1280,6 @@
|
|
|
1341
1280
|
"room": "Sim Den",
|
|
1342
1281
|
"atSpot": "couch rows"
|
|
1343
1282
|
},
|
|
1344
|
-
{
|
|
1345
|
-
"name": "Drowned Reliquary",
|
|
1346
|
-
"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.",
|
|
1347
|
-
"size": "Tiny",
|
|
1348
|
-
"category": "Focus",
|
|
1349
|
-
"shape": "Reliquary",
|
|
1350
|
-
"color": "Sea Glass",
|
|
1351
|
-
"texture": "Fused Silver",
|
|
1352
|
-
"rating": "Rare",
|
|
1353
|
-
"weight": 0.4,
|
|
1354
|
-
"room": "Chapel Crypt",
|
|
1355
|
-
"atSpot": "reliquary niches"
|
|
1356
|
-
},
|
|
1357
|
-
{
|
|
1358
|
-
"name": "Tarnished Credstick",
|
|
1359
|
-
"description": "A pre-flood credstick from the crypt floor, miraculously still certified.",
|
|
1360
|
-
"size": "Small",
|
|
1361
|
-
"category": "CurrencyContainer",
|
|
1362
|
-
"shape": "Cylinder",
|
|
1363
|
-
"color": "Tarnished",
|
|
1364
|
-
"texture": "Corroded",
|
|
1365
|
-
"rating": "Common",
|
|
1366
|
-
"weight": 0.2,
|
|
1367
|
-
"currencyAmount": 300,
|
|
1368
|
-
"room": "Chapel Crypt",
|
|
1369
|
-
"atSpot": "reliquary niches"
|
|
1370
|
-
},
|
|
1371
1283
|
{
|
|
1372
1284
|
"name": "Torque's Commlink",
|
|
1373
1285
|
"description": "A ruggedized shop commlink, speed-dial worn down to the metal -- Torque answers for paying customers.",
|
|
@@ -1453,14 +1365,5 @@
|
|
|
1453
1365
|
"transferable": false
|
|
1454
1366
|
}
|
|
1455
1367
|
],
|
|
1456
|
-
"puzzles": [
|
|
1457
|
-
{
|
|
1458
|
-
"name": "Crypt Grate",
|
|
1459
|
-
"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.",
|
|
1460
|
-
"requiredPhrase": "the saint of rust",
|
|
1461
|
-
"successMessage": "The tumblers grind through decades of corrosion and the grate swings up on screaming hinges.",
|
|
1462
|
-
"failureMessage": "The mechanism seizes. Flakes of rust drift down into the dark, and the Choir's song falters for a beat.",
|
|
1463
|
-
"bypassType": "lockpick"
|
|
1464
|
-
}
|
|
1465
|
-
]
|
|
1368
|
+
"puzzles": []
|
|
1466
1369
|
}
|
|
@@ -166,6 +166,30 @@ export interface ISavedHub {
|
|
|
166
166
|
/** Seed NPCs absent from the live scene (killed) -- removed QUIETLY
|
|
167
167
|
* on load; their dropped gear is already in the room overlays. */
|
|
168
168
|
deadActors: string[];
|
|
169
|
+
/** Devices by name, and the whole of their state. `bypassBurned`
|
|
170
|
+
* went with the puzzle mechanic -- a lock you failed to force is a
|
|
171
|
+
* lock you can try again. */
|
|
172
|
+
devices: {
|
|
173
|
+
name: string;
|
|
174
|
+
open: boolean;
|
|
175
|
+
}[];
|
|
176
|
+
/**
|
|
177
|
+
* A TOMBSTONE, always written as [], never read by this build.
|
|
178
|
+
*
|
|
179
|
+
* It exists for an OLDER READER, not for us. v5.64.0 is shipped, and
|
|
180
|
+
* its persistence.ts line 530 is `for (const p of saved.puzzles)`
|
|
181
|
+
* with no guard -- so a save written without this field makes that
|
|
182
|
+
* build throw "saved.puzzles is not iterable" on resume. Not
|
|
183
|
+
* degraded: a hard crash.
|
|
184
|
+
*
|
|
185
|
+
* And saves MOVE. cloud-saves.ts mirrors the whole ISaveFileV1
|
|
186
|
+
* including this overlay, so a player on two machines, a rollback,
|
|
187
|
+
* or a server pin lagging the client all put a new save in front of
|
|
188
|
+
* an old reader.
|
|
189
|
+
*
|
|
190
|
+
* SAFE TO DELETE only once v5.64.0 is out of the wild -- check
|
|
191
|
+
* before you do; nothing in THIS build will fail if you remove it.
|
|
192
|
+
*/
|
|
169
193
|
puzzles: {
|
|
170
194
|
name: string;
|
|
171
195
|
solved: boolean;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A DEVICE IN A ROOM -- the seed shape that replaces the old puzzles[].
|
|
3
|
+
*
|
|
4
|
+
* The user's framing is the specification: "A lock is not a puzzle, it
|
|
5
|
+
* has a key. A keypad has an interface (to use). An NPC in the doorway
|
|
6
|
+
* can be persuaded/bluffed/conned to move aside. A persistent forcewall
|
|
7
|
+
* can be dispelled."
|
|
8
|
+
*
|
|
9
|
+
* Three of those four are DEVICES; the fourth is a person and has no
|
|
10
|
+
* entry here on purpose (see npcs[].guarding / npcs[].passphrase).
|
|
11
|
+
*
|
|
12
|
+
* A DEVICE ALWAYS BELONGS TO A ROOM. There is no "attached to a door"
|
|
13
|
+
* form, because a keypad beside a grate stands in one room -- the one
|
|
14
|
+
* you must be in to reach it. The puzzle shape allowed both, and the
|
|
15
|
+
* cost was two validators that had to agree, a normaliser between them,
|
|
16
|
+
* and a placement fault the comments record as killing two consecutive
|
|
17
|
+
* generations.
|
|
18
|
+
*/
|
|
19
|
+
export type DeviceSeedKind = 'lock' | 'panel' | 'ward';
|
|
20
|
+
export interface IDeviceSeedJson {
|
|
21
|
+
name: string;
|
|
22
|
+
/** MANDATORY. What the player sees when they look at it. Optional
|
|
23
|
+
* descriptions are how a barrier ended up rendering the literal
|
|
24
|
+
* string "undefined" into an NPC's prompt. */
|
|
25
|
+
description: string;
|
|
26
|
+
kind: DeviceSeedKind;
|
|
27
|
+
/**
|
|
28
|
+
* The credential that opens it -- ONLY valid on a 'panel'.
|
|
29
|
+
*
|
|
30
|
+
* User ruling, verbatim: "if it's a _mechanical_ lock, it has a key
|
|
31
|
+
* or can be picked. You can't talk at a _mechanical_ lock." A lock
|
|
32
|
+
* opens by key or by force; a ward answers to the Art. Neither has
|
|
33
|
+
* anything to hear a phrase with, and the migration drops a code off
|
|
34
|
+
* anything that is not a panel.
|
|
35
|
+
*/
|
|
36
|
+
code?: string;
|
|
37
|
+
/** Item name that opens it outright -- a keycard, a physical key. */
|
|
38
|
+
keyItem?: string;
|
|
39
|
+
/** Item name handed over when it opens (a safe's contents). */
|
|
40
|
+
grantsItem?: string;
|
|
41
|
+
/** "At" spot of its room that it physically stands at. */
|
|
42
|
+
atSpot?: string;
|
|
43
|
+
/** The exit OF ITS OWN ROOM that opening this device unseals. The
|
|
44
|
+
* door starts locked and the device is what unlocks it. */
|
|
45
|
+
opensExit?: string;
|
|
46
|
+
/** Terrain this device's footprint seals on the room grid, if it is
|
|
47
|
+
* physically in the way (rubble, a shutter). */
|
|
48
|
+
guardsExit?: string;
|
|
49
|
+
footprint?: 'small' | 'medium' | 'large';
|
|
50
|
+
openMessage?: string;
|
|
51
|
+
refuseMessage?: string;
|
|
52
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"device-seed.js","sourceRoot":"","sources":["../../../../../../../../src/commands/game/sideQuest/types/seed/device-seed.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* THE SHAPE OF AN OLD SEED, kept only so it can be TRANSLATED.
|
|
3
|
+
*
|
|
4
|
+
* This is not a live seed type. The puzzle mechanic is gone (2026-08-27
|
|
5
|
+
* -- barriers are room-owned Devices worked by the verb that suits the
|
|
6
|
+
* thing; see types/seed/device-seed.ts). Nothing in the engine consumes
|
|
7
|
+
* a puzzle any more.
|
|
8
|
+
*
|
|
9
|
+
* It survives for exactly one reader: factories/seed-migration.ts,
|
|
10
|
+
* which converts `puzzles[]` into devices and guards on the way in. And
|
|
11
|
+
* it has to keep surviving, because a seed is not only a file on disk
|
|
12
|
+
* -- every save EMBEDS its hub seed, so a returning player's save
|
|
13
|
+
* carries a puzzles[] array written by a build that still had them.
|
|
14
|
+
*
|
|
15
|
+
* >>> DELETE THIS FILE WHEN no save in the wild still embeds a
|
|
16
|
+
* >>> puzzles[] hubSeed. Until then it is load-bearing, and the import
|
|
17
|
+
* >>> line in seed-migration.ts is the only place it should appear.
|
|
18
|
+
*
|
|
19
|
+
* It is named and located to make that status legible: a file called
|
|
20
|
+
* `puzzle-seed.ts` sitting in types/seed/ beside the live types reads
|
|
21
|
+
* as current to anyone browsing, which is how a dead mechanic keeps
|
|
22
|
+
* looking alive.
|
|
23
|
+
*
|
|
24
|
+
* ---- what the fields meant, for whoever is reading a legacy seed ----
|
|
25
|
+
*
|
|
26
|
+
* `bypassType` was the risky route past a barrier. "con" used to be in
|
|
27
|
+
* that union too, for barriers that were "really a person or a
|
|
28
|
+
* voice-gate", and it went first (player ruling: "'bluff' shouldn't
|
|
29
|
+
* work on Barriers like locks/wards/etc ... NPCs can be barriers").
|
|
30
|
+
* That was the modelling correction the rest of this file eventually
|
|
31
|
+
* followed: a lock has no opinion to change, and making a PERSON into
|
|
32
|
+
* a Puzzle dragged them through machinery that made no sense for a
|
|
33
|
+
* human being. The migration reads these values one last time and maps
|
|
34
|
+
* them to a device kind, or to a guarding NPC.
|
|
35
|
+
*/
|
|
36
|
+
export type LegacyPuzzleBypassType = 'lockpick' | 'hack' | 'spell';
|
|
37
|
+
export interface ILegacyPuzzleSeedJson {
|
|
38
|
+
name: string;
|
|
39
|
+
room?: string;
|
|
40
|
+
riddle: string;
|
|
41
|
+
requiredPhrase?: string;
|
|
42
|
+
requiredItem?: string;
|
|
43
|
+
rewardItem?: string;
|
|
44
|
+
successMessage?: string;
|
|
45
|
+
failureMessage?: string;
|
|
46
|
+
hobbyTags?: string[];
|
|
47
|
+
/** Name of another puzzle in this same scene that must be solved first. */
|
|
48
|
+
requiresPuzzle?: string;
|
|
49
|
+
/** Shown when attempting to solve this puzzle before requiresPuzzle is met. */
|
|
50
|
+
lockedMessage?: string;
|
|
51
|
+
/**
|
|
52
|
+
* Optional risky alternate route to the same reward, matching this
|
|
53
|
+
* barrier's in-fiction nature (a lock -> "pick", a terminal -> "hack", a
|
|
54
|
+
* ward -> "cast") -- a coin-flip chance to bypass without ever knowing
|
|
55
|
+
* requiredPhrase, but a failed attempt is loud (see Puzzle.attemptBypass).
|
|
56
|
+
* Leave unset for a puzzle with no such physical/technical/magical route
|
|
57
|
+
* (e.g. a purely social one, solvable only by knowing the actual answer).
|
|
58
|
+
*/
|
|
59
|
+
bypassType?: LegacyPuzzleBypassType;
|
|
60
|
+
atSpot?: string;
|
|
61
|
+
guardsExit?: string;
|
|
62
|
+
footprint?: 'small' | 'medium' | 'large';
|
|
63
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"legacy-puzzle-seed.js","sourceRoot":"","sources":["../../../../../../../../src/commands/game/sideQuest/types/seed/legacy-puzzle-seed.ts"],"names":[],"mappings":""}
|
|
@@ -45,6 +45,12 @@ export interface IPlayerSeedJson {
|
|
|
45
45
|
name: string;
|
|
46
46
|
startLocation: string;
|
|
47
47
|
startSpot?: string;
|
|
48
|
+
/** This NPC HOLDS their position against passage -- a doorman, a
|
|
49
|
+
* picket. Combined with a startSpot on a doorway, it makes them a
|
|
50
|
+
* barrier you cannot walk through (see Player.guarding and
|
|
51
|
+
* utilities/spots.ts holdsGround). The way past is social or
|
|
52
|
+
* violent, never a lockpick. */
|
|
53
|
+
guarding?: boolean;
|
|
48
54
|
lifestyleChoices: LifestyleChoice[];
|
|
49
55
|
startingItems?: IItemSeedJson[];
|
|
50
56
|
combat?: ICombatSeedJson;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { IDeviceSeedJson } from './device-seed.js';
|
|
1
2
|
import { IExitSeedJson } from './exit-seed.js';
|
|
2
3
|
import { RoomSize, SpotPlace, IGridSynthesisLevel } from '../../utilities/room-grid.js';
|
|
3
4
|
export interface IRoomSeedJson {
|
|
@@ -8,6 +9,9 @@ export interface IRoomSeedJson {
|
|
|
8
9
|
owner?: string;
|
|
9
10
|
tags?: string[];
|
|
10
11
|
exits: IExitSeedJson[];
|
|
12
|
+
/** Devices standing in THIS room (see types/seed/device-seed.ts).
|
|
13
|
+
* Always room-owned -- there is no device-on-a-door form. */
|
|
14
|
+
devices?: IDeviceSeedJson[];
|
|
11
15
|
reachable?: boolean;
|
|
12
16
|
hasNode?: boolean;
|
|
13
17
|
nodeAccess?: 'wireless' | 'wired';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { IRoomSeedJson } from './room-seed.js';
|
|
2
2
|
import { INPCSeedJson } from './npc-seed.js';
|
|
3
3
|
import { IItemSeedJson } from './item-seed.js';
|
|
4
|
-
import {
|
|
4
|
+
import { ILegacyPuzzleSeedJson } from './legacy-puzzle-seed.js';
|
|
5
5
|
import { IPlayerSeedJson } from './player-seed.js';
|
|
6
6
|
import { IWinConditionSeedJson } from './win-condition-seed.js';
|
|
7
7
|
export interface ISceneSeedJson {
|
|
@@ -13,7 +13,8 @@ export interface ISceneSeedJson {
|
|
|
13
13
|
rooms: IRoomSeedJson[];
|
|
14
14
|
npcs: INPCSeedJson[];
|
|
15
15
|
items: IItemSeedJson[];
|
|
16
|
-
|
|
16
|
+
/** LEGACY, migrated away on load -- see legacy-puzzle-seed.ts. */
|
|
17
|
+
puzzles: ILegacyPuzzleSeedJson[];
|
|
17
18
|
residenceTiers: string[];
|
|
18
19
|
story: string;
|
|
19
20
|
/** The logging-in player who will be actively controlled */
|