mirror of
https://github.com/cliffe/BreakEscape.git
synced 2026-02-21 11:18:08 +00:00
202 lines
3.3 KiB
Markdown
202 lines
3.3 KiB
Markdown
|
|
# Lock Scenario Guide
|
||
|
|
|
||
|
|
Quick reference for adding locks to scenarios.
|
||
|
|
|
||
|
|
## Room Locks (Doors)
|
||
|
|
|
||
|
|
Add these properties to a **room** to lock all doors leading to it:
|
||
|
|
|
||
|
|
```json
|
||
|
|
"server_room": {
|
||
|
|
"type": "room_servers",
|
||
|
|
"locked": true,
|
||
|
|
"lockType": "pin",
|
||
|
|
"requires": "1234",
|
||
|
|
"connections": { "south": "lobby" }
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
## Object Locks (Containers)
|
||
|
|
|
||
|
|
Add these properties to lockable objects:
|
||
|
|
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"type": "safe",
|
||
|
|
"name": "Wall Safe",
|
||
|
|
"locked": true,
|
||
|
|
"lockType": "password",
|
||
|
|
"requires": "secret123",
|
||
|
|
"contents": [{ "type": "key", "name": "Gold Key" }]
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Lock Types Reference
|
||
|
|
|
||
|
|
### `key` - Physical Key
|
||
|
|
```json
|
||
|
|
"lockType": "key",
|
||
|
|
"requires": "office_key",
|
||
|
|
"keyPins": [45, 35, 25, 55] // Optional: for lockpicking
|
||
|
|
```
|
||
|
|
**Player needs:** `type: "key"` with matching `key_id`
|
||
|
|
|
||
|
|
### `lockpick` - Lockpickable (No Key Exists)
|
||
|
|
```json
|
||
|
|
"lockType": "key",
|
||
|
|
"requires": "nonexistent_key",
|
||
|
|
"difficulty": "hard"
|
||
|
|
```
|
||
|
|
**Player needs:** `type: "lockpick"`
|
||
|
|
|
||
|
|
### `pin` - Numeric Code
|
||
|
|
```json
|
||
|
|
"lockType": "pin",
|
||
|
|
"requires": "4829"
|
||
|
|
```
|
||
|
|
**Player needs:** Guess or find the code
|
||
|
|
|
||
|
|
### `password` - Text Password
|
||
|
|
```json
|
||
|
|
"lockType": "password",
|
||
|
|
"requires": "secret123",
|
||
|
|
"passwordHint": "My pet's name",
|
||
|
|
"showHint": true,
|
||
|
|
"showKeyboard": true
|
||
|
|
```
|
||
|
|
**Player needs:** Guess or find the password
|
||
|
|
|
||
|
|
### `rfid` - Keycard
|
||
|
|
```json
|
||
|
|
"lockType": "rfid",
|
||
|
|
"requires": ["server_keycard"]
|
||
|
|
```
|
||
|
|
**Player needs:** `type: "keycard"` with matching `card_id` OR cloned card in RFID cloner
|
||
|
|
|
||
|
|
### `biometric` - Fingerprint
|
||
|
|
```json
|
||
|
|
"lockType": "biometric",
|
||
|
|
"requires": "Dr Smith",
|
||
|
|
"biometricMatchThreshold": 0.5
|
||
|
|
```
|
||
|
|
**Player needs:** Collected fingerprint from that person
|
||
|
|
|
||
|
|
### `bluetooth` - Device Proximity
|
||
|
|
```json
|
||
|
|
"lockType": "bluetooth",
|
||
|
|
"requires": "00:11:22:33:44:55"
|
||
|
|
```
|
||
|
|
**Player needs:** `type: "bluetooth_scanner"` + scanned device
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Items Reference
|
||
|
|
|
||
|
|
### Keys
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"type": "key",
|
||
|
|
"name": "Office Key",
|
||
|
|
"key_id": "office_key",
|
||
|
|
"keyPins": [45, 35, 25, 55],
|
||
|
|
"takeable": true
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
### Keycards
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"type": "keycard",
|
||
|
|
"name": "Server Keycard",
|
||
|
|
"card_id": "server_keycard",
|
||
|
|
"rfid_protocol": "EM4100",
|
||
|
|
"takeable": true
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
### Lockpick
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"type": "lockpick",
|
||
|
|
"name": "Lockpick Set",
|
||
|
|
"takeable": true
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
### RFID Cloner
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"type": "rfid_cloner",
|
||
|
|
"name": "RFID Flipper",
|
||
|
|
"saved_cards": [],
|
||
|
|
"takeable": true
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
### Fingerprint Kit
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"type": "fingerprint_kit",
|
||
|
|
"name": "Fingerprint Kit",
|
||
|
|
"takeable": true
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
### Bluetooth Scanner
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"type": "bluetooth_scanner",
|
||
|
|
"name": "Bluetooth Scanner",
|
||
|
|
"takeable": true
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## NPC RFID Cards (For Cloning)
|
||
|
|
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"id": "guard",
|
||
|
|
"npcType": "person",
|
||
|
|
"rfidCard": {
|
||
|
|
"card_id": "master_keycard",
|
||
|
|
"rfid_protocol": "EM4100",
|
||
|
|
"name": "Master Keycard"
|
||
|
|
}
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Lockable Object Types
|
||
|
|
|
||
|
|
These objects support `locked`, `lockType`, `requires`:
|
||
|
|
|
||
|
|
- `safe` - Wall/floor safe
|
||
|
|
- `briefcase` / `suitcase` - Portable containers
|
||
|
|
- `pc` / `laptop` / `tablet` - Computing devices
|
||
|
|
- `closet` / `cabinet` - Storage furniture
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Quick Examples
|
||
|
|
|
||
|
|
**PIN-locked room:**
|
||
|
|
```json
|
||
|
|
"vault": { "locked": true, "lockType": "pin", "requires": "9999" }
|
||
|
|
```
|
||
|
|
|
||
|
|
**Key-locked safe:**
|
||
|
|
```json
|
||
|
|
{ "type": "safe", "locked": true, "lockType": "key", "requires": "safe_key" }
|
||
|
|
```
|
||
|
|
|
||
|
|
**RFID door:**
|
||
|
|
```json
|
||
|
|
"server_room": { "locked": true, "lockType": "rfid", "requires": ["admin_card"] }
|
||
|
|
```
|
||
|
|
|