-
Notifications
You must be signed in to change notification settings - Fork 0
Locked Files
-
Open file = just the text. Create
files/note.mdwith the content. -
Locked file = a front-matter block (
---) at the top + content:
---
locked: true
password: swordfish # enables decrypt
crackable: true # false = decrypt only
crackTime: 8000 # ms (per-file override)
decryptTime: 1500
lockLabel: BYPASSING ICE # crack progress-bar label
decryptLabel: RESOLVING KEY
crackSuccessMessage: ACCESS GRANTED.
crackFailMessage: encryption too strong # if crackable=false
crackDC: 12 # difficulty check: crack opens a roll dialog
crackAttempts: 3 # lives before lockout (default 3)
reveals: /vault/other.dat # chain: on unlock, reveals another file's key
# --- surveillance / recon (needs a `tracer` block on the theme/scenario) ---
tracer: true # this file arms the tracer on intrusion
tracerSeconds: 25 # per-file overrides (win over theme defaults):
tracerPenalty: 8 # window · seconds lost per failed roll ·
tracerStartAfter: 0 # failed attempts before arming ·
tracerNocrackSeconds: 3 # fast trace when brute-forcing a hardened file
checkDC: 12 # makes `check` a scan roll (one per file)
checkMisleadsOnFail: true # a badly-failed scan returns a FALSE reading
# --- decrypt minigame ---
# nocrack files have it by default; `decryptGame` overrides either way:
decryptGame: true # true = force the minigame · false = no decrypt at all
decryptWords: GHOST,CIPHER,DAEMON # candidates (a different one is picked per file); or:
decryptWord: SWORDFISH # a single fixed target
decryptAttempts: 6 # guesses (default 6)
decryptLuck: false # hide the "Feelin' Lucky?" d20 popup on this file
---
Content revealed after unlocking.
The surveillance/recon keys are detailed in Cinematics → Tracer and Recon scan.
-
crack <file>— brute force. Ifcrackable: false, crack is refused (crackFailMessage). -
unlock <file> [key]— opens by password. Omit the key and a masked dialog appears; the progress bar runs in its own popup. -
decrypt <file>— the cipher minigame below (when available).
Success and failure popups. All three flows hand off to a popup:
-
On success,
crackandunlockopen the freshly unlocked file in the cat viewer the moment the progress bar finishes. No need to typecatafter. - On failure (a refused crack on a hardened file, a wrong key, a failed crack roll, a lost decrypt minigame), the terminal shows a quick acknowledge popup (× / Esc / OK / backdrop close). The history-line record is written to scrollback on dismissal, and — critically — any tracer time penalty waits for the popup to close, so the trace doesn't bleed seconds while the player is still reading the message.
Availability — decryptGame decides, defaulting by crackability:
decryptGame |
crackable |
decrypt does |
|---|---|---|
true |
any | the minigame |
false |
any | nothing — encryption too high (key must come from elsewhere; use unlock) |
| (unset) |
false (nocrack) |
the minigame (default-on) |
| (unset) | true |
nothing — encryption too high |
So every nocrack file offers decrypt unless the GM opts out with
decryptGame: false (for keys discovered outside the terminal); crackable files
must opt in with decryptGame: true.
decrypt <file> launches a Wordle-style cipher hunt: type a same-length
guess, Enter to submit, each letter scores hit (right spot) · present
(wrong spot) · miss. Solve it within decryptAttempts (default 6) and the
password is recovered, the file unlocks, and any active tracer is evaded.
Lose → the cipher re-scrambles; try again or unlock with a known key.
The target is a fixed decryptWord, a random pick from comma-separated
decryptWords, or a built-in pool — chosen per file at load and shown in
gmsheet (decryptWord:KERNEL) so the GM can drop hints.
When the decrypt minigame opens, a small popup sits above the wordle with a d20 field. The player can pull it once per file for a chance at help — or a handicap.
| Roll | Outcome | Smiley |
|---|---|---|
| 1 | critical fail — lose 2 attempts (rendered as ✗ rows at the top of the grid) |
;_; (red jitter) |
| 2–9 | lose 1 attempt | :/ |
| 10–14 | reveal 1 letter of the target word in a hint row above the grid | :) |
| 15–19 | reveal 2 letters |
;) (green pulse) |
| 20 | natural 20 — reveal 3 letters |
\o/ (green burst) |
One shot per file. The popup is offered once per opening. Rolling or submitting any wordle guess consumes the slot — you can ignore the roll entirely by just starting to type. A pure Esc/backdrop cancel does NOT consume the slot, so a player who bailed out before doing anything still gets their shot when they re-open the file.
The roll's effect persists across cancels. If you rolled a crit-fail
and bailed out before finishing the wordle, the 2 burned rows are still
there when you re-open the file. Same for revealed letters — the rolled
outcome (and its random letter picks) is remembered per file. Resets on
reboot / scenario switch along with the rest of the session.
Revealed letters teach, they don't auto-fill. The hint row shows which letter sits at which position, but the player still has to type the full word in their guess for it to count.
GM opt-out: add decryptLuck: false to a file's front-matter to hide
the popup entirely on that file — for hard-mode challenges where the
GM doesn't want a bailout.
Feature suggested by Pedro Fuster.
If a file has crackDC, crack opens a dialog asking for the player's roll
(a number):
- Roll greater than the DC → the crack runs.
- Otherwise it fails and spends one of
crackAttempts(default 3). - Once attempts run out the file is in lockout — only the password (
unlock) opens it.
The DC is hidden from players (visible only in GM mode). A roll-checked crack is also what arms the tracer, if the theme/scenario defines one.
- Front-matter values coerce to boolean/number automatically; quote a value to force a string (e.g. a numeric password
password: "12345"). -
revealsaccepts multiple comma-separated paths. On unlock, each named file's password becomes known (chain unlocks).
Unlocks persist per scenario (saved to localStorage); the reset command wipes
them, as does a reboot or theme switch for the session view. ls marks locked
files with [LOCKED].
-
Arquivo aberto = só o texto. Crie
files/nota.mdcom o conteúdo. -
Arquivo trancado = bloco de front-matter (
---) no topo + conteúdo:
---
locked: true
password: swordfish # habilita decrypt
crackable: true # false = só decrypt
crackTime: 8000 # ms (override por arquivo)
decryptTime: 1500
lockLabel: BYPASSING ICE # label da barra de crack
decryptLabel: RESOLVING KEY
crackSuccessMessage: ACCESS GRANTED.
crackFailMessage: encryption too strong # se crackable=false
crackDC: 12 # teste de dificuldade: crack abre um diálogo pedindo a rolagem
crackAttempts: 3 # vidas antes do lockout (padrão 3)
reveals: /cofre/outro.dat # cadeia: ao destrancar, revela a senha de outro arquivo
# --- vigilância / recon (precisa de um bloco `tracer` no tema/cenário) ---
tracer: true # este arquivo arma o tracer ao ser invadido
tracerSeconds: 25 # overrides por arquivo (têm prioridade):
tracerPenalty: 8 # janela · segundos perdidos por rolagem falha ·
tracerStartAfter: 0 # falhas antes de armar ·
tracerNocrackSeconds: 3 # trace rápido ao forçar arquivo blindado
checkDC: 12 # torna o `check` uma rolagem (uma por arquivo)
checkMisleadsOnFail: true # falha grave devolve uma leitura FALSA
# --- minigame de decrypt (opcional) ---
decryptGame: true # `decrypt` vira uma caça à cifra estilo Wordle
decryptWords: GHOST,CIPHER,DAEMON # candidatas (aleatória por sessão); ou:
decryptWord: SWORDFISH # um alvo fixo
decryptAttempts: 6 # tentativas (padrão 6)
decryptLuck: false # esconde o popup "Tá com sorte?" neste arquivo
---
Conteúdo revelado após o desbloqueio.
As chaves de vigilância/recon estão detalhadas em Cinematografia → Rastreador e Scan de recon.
-
crack <file>— força bruta. Secrackable: false, é recusado (crackFailMessage). -
unlock <file> [key]— abre por senha. Sem a key, abre um diálogo mascarado; a barra roda no próprio popup. -
decrypt <file>— o minigame de cifra abaixo (quando disponível).
Popups de sucesso e falha. Os três fluxos abrem um popup:
-
No sucesso,
crackeunlockabrem o arquivo recém-desbloqueado no viewer docatno instante em que a barra de progresso termina — sem precisar digitarcatdepois. - Na falha (crack recusado em arquivo hardened, senha errada, rolagem perdida, minigame de decrypt perdido), o terminal mostra um popup rápido de confirmação (× / Esc / OK / backdrop). O registro vai pro scrollback no fechamento, e — importante — qualquer penalidade de tempo do tracer só é aplicada depois do popup fechar, então o trace não consome segundos enquanto o jogador lê a mensagem.
Disponibilidade — decryptGame decide, com padrão pela crackabilidade:
decryptGame |
crackable |
o decrypt faz |
|---|---|---|
true |
qualquer | o minigame |
false |
qualquer | nada — encriptação alta demais (chave vem de fora; use unlock) |
| (omisso) |
false (nocrack) |
o minigame (padrão) |
| (omisso) | true |
nada — encriptação alta demais |
Ou seja: todo arquivo nocrack oferece decrypt, a menos que o Mestre desligue
com decryptGame: false (pra chaves descobertas fora do terminal); arquivos
crackeáveis precisam optar com decryptGame: true.
O decrypt <file> abre uma caça à cifra estilo Wordle: palpite do mesmo
tamanho, Enter pra enviar, cada letra pontua acerto · presente · erro.
Resolva em decryptAttempts (padrão 6) e a senha é recuperada, o arquivo abre
e o tracer ativo é evadido. Perder → a cifra se reembaralha. A palavra-alvo (fixa
decryptWord, aleatória de decryptWords, ou de uma lista padrão) é escolhida
por arquivo no load e aparece no gmsheet (decryptWord:KERNEL).
Quando o minigame de decrypt abre, aparece um popup acima do wordle com um campo de d20. O jogador pode usar uma vez por arquivo, com chance de ajuda — ou de pena.
| Rolagem | Resultado | Carinha |
|---|---|---|
| 1 | falha crítica — perde 2 tentativas (renderizadas como linhas ✗ no topo do grid) |
;_; (jitter vermelho) |
| 2–9 | perde 1 tentativa | :/ |
| 10–14 | revela 1 letra da palavra-alvo numa linha de dica acima do grid | :) |
| 15–19 | revela 2 letras |
;) (pulso verde) |
| 20 | 20 natural — revela 3 letras |
\o/ (burst verde) |
Uma chance por arquivo. O popup é oferecido uma única vez por abertura. Rolar ou enviar qualquer palpite no wordle consome o slot — ignore o popup só começando a digitar. Um Esc/clique no backdrop sem interagir NÃO consome a chance, então quem desistiu antes de fazer qualquer coisa ainda recupera o slot na próxima vez que abrir.
O efeito da rolagem persiste entre cancels. Se você tirou um crítico
e desistiu antes de terminar o wordle, as 2 linhas queimadas continuam
lá quando reabrir o arquivo. Vale o mesmo pras letras reveladas — o
resultado (incluindo as posições aleatórias) fica gravado por arquivo.
Zera no reboot ou troca de cenário, junto com o resto do estado da
sessão.
As letras reveladas ensinam, não preenchem. A linha de dica mostra qual letra está em qual posição, mas o jogador ainda precisa digitar a palavra inteira no palpite pra contar.
Opt-out do Mestre: decryptLuck: false no front-matter do arquivo
esconde o popup — útil pra desafios sem rede de proteção.
Feature sugerida por Pedro Fuster.
Se um arquivo tem crackDC, o crack abre um diálogo pedindo o resultado da
rolagem do jogador (um número):
- Rolagem maior que o DC → o crack roda.
- Senão, falha e gasta uma das
crackAttempts(padrão 3). - Esgotadas as tentativas, o arquivo fica em lockout — só abre com a senha (
decrypt).
O DC fica oculto pros jogadores (visível só no Modo Mestre). Um crack com teste de rolagem é também o que arma o rastreador, se o tema/cenário definir um.
- Valores do front-matter coagem pra boolean/número automaticamente; use aspas pra forçar string (ex.: senha numérica
password: "12345"). -
revealsaceita vários paths separados por vírgula. Ao destrancar, a senha de cada arquivo nomeado passa a ser conhecida (cadeia de desbloqueios).
Desbloqueios duram por cenário (salvos no localStorage); o comando reset
apaga, assim como reboot ou troca de tema para a visão da sessão. ls marca
arquivos trancados com [LOCKED].