Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion public/data/contributors.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
"name": "SuprexDE",
"profileId": "215af72b-24c5-63ab-f480-eec12ba2f4e5",
"profileUrl": "https://outlasttrialsstats.com/profile/215af72b-24c5-63ab-f480-eec12ba2f4e5",
"maps": ["police-station"]
"maps": ["sleep-room"]
}
]
}
26 changes: 26 additions & 0 deletions public/data/elements.json
Original file line number Diff line number Diff line change
Expand Up @@ -255,6 +255,32 @@
}
}
},
{
"id": "shuttle",
"name": "Shuttle Gate",
"category": "door",
"color": "#465b92",
"render": {
"kind": "shuttle",
"length": 28,
"thickness": 7
},
"description": "Shuttle gate: a row of cells split by a control console.",
"propsSchema": {
"cells": {
"type": "number",
"label": "Cells"
},
"enterable": {
"type": "boolean",
"label": "Enterable"
},
"redButton": {
"type": "boolean",
"label": "Red button"
}
}
},
{
"id": "objective",
"name": "Objective",
Expand Down
2 changes: 1 addition & 1 deletion public/data/maps/index.json
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@
"name": "Sleep Room",
"card": "https://outlasttrialsstats.com/game-assets/Poster_Program_Weekly.webp",
"progress": 0,
"enabled": false
"enabled": true
}
]
}
17 changes: 17 additions & 0 deletions public/data/maps/sleep-room/map.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"$schema": "../../../schemas/map.schema.json",
"id": "sleep-room",
"meta": {
"name": "Sleep Room",
"authors": [
"SuprexDE"
]
},
"trials": [
{
"id": "main",
"name": "Sleep Room",
"default": true
}
]
}
275 changes: 275 additions & 0 deletions public/data/maps/sleep-room/trials/main.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,275 @@
{
"$schema": "../../../../schemas/trial.schema.json",
"mapId": "sleep-room",
"trialId": "main",
"floors": [
{
"index": 0,
"name": "Base Floor"
}
],
"filters": [],
"rooms": [
{
"id": "room-0001",
"floor": 0,
"zone": "standard",
"shape": {
"origin": [
385,
5
],
"rect": [
40,
55
]
}
},
{
"id": "room-0002",
"floor": 0,
"zone": "standard",
"shape": {
"origin": [
145,
90
],
"rect": [
65,
55
]
}
},
{
"id": "room-0003",
"floor": 0,
"zone": "standard",
"shape": {
"origin": [
210,
105
],
"rect": [
45,
40
]
}
},
{
"id": "room-0004",
"floor": 0,
"zone": "standard",
"shape": {
"origin": [
180,
150
],
"rect": [
35,
35
]
}
},
{
"id": "room-0005",
"floor": 0,
"zone": "standard",
"shape": {
"origin": [
180,
185
],
"rect": [
35,
35
]
}
},
{
"id": "room-0006",
"floor": 0,
"zone": "standard",
"shape": {
"origin": [
180,
220
],
"rect": [
35,
35
]
}
},
{
"id": "room-0007",
"floor": 0,
"zone": "standard",
"shape": {
"origin": [
220,
145
],
"rect": [
30,
115
]
}
},
{
"id": "room-0008",
"floor": 0,
"zone": "standard",
"shape": {
"origin": [
205,
260
],
"rect": [
55,
55
]
}
},
{
"id": "room-0009",
"floor": 0,
"zone": "standard",
"shape": {
"origin": [
385,
115
],
"rect": [
35,
145
]
}
},
{
"id": "room-0010",
"floor": 0,
"zone": "standard",
"shape": {
"origin": [
420,
115
],
"rect": [
35,
35
]
}
},
{
"id": "room-0011",
"floor": 0,
"zone": "standard",
"shape": {
"origin": [
420,
150
],
"rect": [
35,
35
]
}
},
{
"id": "room-0012",
"floor": 0,
"zone": "standard",
"shape": {
"origin": [
420,
185
],
"rect": [
35,
35
]
}
},
{
"id": "room-0013",
"floor": 0,
"zone": "standard",
"shape": {
"origin": [
420,
220
],
"rect": [
35,
35
]
}
},
{
"id": "room-0014",
"floor": 0,
"zone": "standard",
"shape": {
"origin": [
305,
280
],
"rect": [
25,
45
]
}
},
{
"id": "room-0015",
"floor": 0,
"zone": "standard",
"shape": {
"origin": [
280,
110
],
"path": "h65 v40 l5,15 l10,5 l25,5 v85 h-40 l-15,20 h-25 l-15,-20 h-40 v-115 h30 z"
}
},
{
"id": "room-0016",
"floor": 0,
"zone": "standard",
"shape": {
"origin": [
390,
60
],
"path": "h30 v55 h-35 v-20 h5 z"
}
},
{
"id": "room-0017",
"floor": 0,
"zone": "standard",
"shape": {
"origin": [
390,
260
],
"path": "h55 v5 h5 v35 h-5 v10 h-25 z"
}
},
{
"id": "room-0018",
"floor": 0,
"zone": "standard",
"shape": {
"origin": [
290,
325
],
"path": "h55 v25 h-5 v5 h-40 v-5 h-10 z"
}
}
],
"placements": [],
"routes": [],
"shapes": []
}
3 changes: 2 additions & 1 deletion public/schemas/elements.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,8 @@
"crawl-passage",
"obstacle",
"spawn-room",
"stairs"
"stairs",
"shuttle"
]
},
"length": { "type": "number", "exclusiveMinimum": 0 },
Expand Down
9 changes: 9 additions & 0 deletions src/core/constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,15 @@ export const CRAWL_BAR_SPACING = 1.6
export const STAIRS_RUNG_SPACING = 3
/** Spacing of the teeth on obstacles. */
export const OBSTACLE_TOOTH_SPACING = 2.5
// Shuttle gate: ratios relative to the cell height (thickness = cell + 2 rails).
export const SHUTTLE_RAIL_RATIO = 0.2
export const SHUTTLE_WALL_RATIO = 0.4
export const SHUTTLE_CONSOLE_RATIO = 0.75
/** Radius of the enterable dot; clamped to half the cell width. */
export const SHUTTLE_DOT_RATIO = 0.4
export const SHUTTLE_BUTTON_BOX_RATIO = 0.5
export const SHUTTLE_BUTTON_RADIUS_RATIO = 0.1
export const SHUTTLE_DEFAULT_CELLS = 4

// Number marker (dot → leader line → diamond badge with a number)
export const MARKER_COLOR = '#aaaaaa'
Expand Down
1 change: 1 addition & 0 deletions src/core/model/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -299,6 +299,7 @@ export type StructuralKind =
| 'obstacle'
| 'spawn-room'
| 'stairs'
| 'shuttle'

export interface StructuralRender {
kind: StructuralKind
Expand Down
Loading