Skip to content

Locked Files

Felipe Lippelt edited this page May 28, 2026 · 5 revisions

Locked Files · Arquivos Trancados

🇧🇷 Português · 🇬🇧 English


English

  • Open file = just the text. Create files/note.md with 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.

Ways in — crack, decrypt, unlock

  • crack <file>brute force. If crackable: 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, crack and unlock open the freshly unlocked file in the cat viewer the moment the progress bar finishes. No need to type cat after.
  • 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.

Decrypt minigame {#decrypt-minigame}

AvailabilitydecryptGame 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.

Luck roll ("Feelin' Lucky? ;)") {#luck-roll}

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.

Difficulty check (crackDC)

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.

Coercion & chains

  • Front-matter values coerce to boolean/number automatically; quote a value to force a string (e.g. a numeric password password: "12345").
  • reveals accepts multiple comma-separated paths. On unlock, each named file's password becomes known (chain unlocks).

Persistence

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].


Português

  • Arquivo aberto = só o texto. Crie files/nota.md com 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.

Como entrar — crack, decrypt, unlock

  • crack <file>força bruta. Se crackable: 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, crack e unlock abrem o arquivo recém-desbloqueado no viewer do cat no instante em que a barra de progresso termina — sem precisar digitar cat depois.
  • 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.

Minigame de decrypt {#decrypt-minigame}

DisponibilidadedecryptGame 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).

Rolagem de sorte ("Tá com sorte? ;)") {#luck-roll}

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.

Teste de dificuldade (crackDC)

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.

Coerção & cadeias

  • Valores do front-matter coagem pra boolean/número automaticamente; use aspas pra forçar string (ex.: senha numérica password: "12345").
  • reveals aceita vários paths separados por vírgula. Ao destrancar, a senha de cada arquivo nomeado passa a ser conhecida (cadeia de desbloqueios).

Persistência

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].