# Partes privadas

> Partes da ficha que só o mestre (ou só o dono e o mestre) recebem: o segredo de verdade, não só escondido na tela.

Página: https://docs.rpgdesk.com/fichas/partes-privadas/

Notas do mestre, o segredo do personagem, a ficha verdadeira do NPC disfarçado: algumas partes do documento não podem chegar aos jogadores. Uma **parte privada** é guardada na mesa, mas o servidor do RPG Desk só a entrega a quem pode ver. Para os outros, ela não existe: nem na tela, nem nos dados.

## Nas fichas: o manifesto

Declare as partes no manifesto, na ficha:

```json
"sheets": [
  {
    "type": "com.seunome.sistema.ficha",
    "title": "Personagem",
    "private": { "mestre": "gm", "segredos": "owner" }
  }
]
```

| Valor     | Quem recebe a parte          |
| --------- | ---------------------------- |
| `"gm"`    | só os mestres                |
| `"owner"` | o dono da ficha e os mestres |

O nome é o caminho da parte: `"mestre"` vale para `mestre.notas`, `mestre.tesouro` e tudo o mais dentro do grupo `mestre`. Quem não recebe a parte também não escreve nela.

Na página, mostre a parte só para quem a recebe, com `data-role`:

```html
<nav data-tabs>
  <button data-tab="principal">Principal</button>
  <button data-tab="mestre" data-role="gm">Mestre</button>
</nav>
<section data-tab-panel="mestre">
  <textarea data-field="mestre.notas" placeholder="Só os mestres veem isto"></textarea>
</section>
```

O `data-role` sozinho só esconde o botão; quem garante o segredo é o `private` do manifesto. Teste no modo de teste, trocando o **Papel** para **Outro jogador**: a aba some, e `RPGDesk.doc.get('mestre')` dá `undefined`.

## Nas tabelas: `doc.restrict`

As tabelas da sala não têm dono, e o `private` do manifesto não vale nelas (o verificador avisa). Numa tabela, o mestre esconde partes pelo código, na hora:

```js
await doc.restrict(['npcs', '#' + id], 'gm');   // este NPC passa a ser só dos mestres
await doc.restrict(['npcs', '#' + id], null);   // volta a ser de todos
```

`doc.restrict(caminho, 'gm' | 'owner' | null)` só funciona para os mestres. É o que a tabela de NPCs dos exemplos faz com a caixa **Oculto dos jogadores**: veja [Tabelas da sala](https://docs.rpgdesk.com/fichas/tabelas/).

> **Nota**
>
> Uma parte privada some para quem a perde: se o mestre esconde um NPC, ele sai da tela dos jogadores na hora. Quando volta a ser de todos, reaparece.
