InícioDocs para devsOs 44 tipos de nó de Blueprint, com exemplos completos
Exemplos por kind 14 min de leitura

Os 44 tipos de nó de Blueprint, com exemplos completos

Configuração concreta e grafo validado para download de cada NODE_TYPES, de event a cooldown.

Um exemplo para cada node.type

Os 44 tipos abaixo vêm de NODE_TYPES na revisão documentada. Cada link fornece um documento Blueprint v2 completo e validado, com caminho que alcança o nó apresentado. O trecho exibido é o nó central; o download inclui evento, conexões e consumidores necessários.

Estes JSONs descrevem o subdocumento Blueprint v2 armazenado pelo host. São fixtures para desenvolvimento: não são módulo instalável, projeto completo do Builder ou arquivo de campanha. Recrie os nós no editor ou use os arquivos em testes isolados de contribuição ao host. Este guia não presume um botão de importar JSON no editor de Objetos Inteligentes.

Baixe o pacote completo de exemplos ou o validador. Todos os exemplos usam dados sintéticos originais. O avaliador Python interno serve ao desenvolvimento do código-fonte; módulos de navegador devem usar o SDK público.

node.typePapelUso concretoJSON
eventexecutionInicia o grafo interact e solicita state:open.Grafo completo
lightactionHabilita uma luz nativa por targetId; exige iluminação dinâmica disponível.Grafo completo
soundactionToca o som da campanha com volume 0.5.Grafo completo
stateactionMuda a porta para open, sem emitir outro evento.Grafo completo
interactactionSolicita interação da porta referenciada; o servidor executa a cadeia enfileirada e aplica limites.Grafo completo
conditionbranchCompara closed e escolhe true → open. Test conectado substitui a comparação padrão.Grafo completo
sequenceexecutionExecuta then1 → open; use then2–then4 para ações seguintes ordenadas.Grafo completo
spriteactionUsa imagem da campanha em Target porta/imagem compatível, preservando a caixa.Grafo completo
propertyvalueLê estado inicial → compara closed → condição → open.Grafo completo
comparevalueRetorna se o estado é closed; resultado booleano alimenta condition.test.Grafo completo
referencevalueEnvia UUID de elemento pela saída door à entrada target de state.Grafo completo
revealactionRevela porta secreta; use uma porta compatível como alvo.Grafo completo
barrieractionLibera movimento por uma porta sem mudar os demais canais de barreira.Grafo completo
soundControlactionPara a faixa selecionada; use volume para ajustar seu volume explicitamente.Grafo completo
flameactionAcende componentes habilitados da tocha composta, preservando o mecanismo.Grafo completo
allvalueExige duas comparações closed verdadeiras; menos de duas entradas retorna false.Grafo completo
anyvalueAceita qualquer uma das duas comparações closed; exige pelo menos duas entradas.Grafo completo
getVariablevalueLê variável booleana ready do elemento, padrão true → condição → open.Grafo completo
setVariableactionGrava ready=true booleano no escopo element.Grafo completo
compareValuevalueCompara valor booleano a false; Value booleano desconectado usa false.Grafo completo
emitEventactionEnfileira signal:ready em Self; o receptor incluído solicita state:open.Grafo completo
delayexecutionEspera 3 segundos antes de open; avaliador fornece continuação e servidor agenda.Grafo completo
timeractionInicia timer de 3 segundos cujo vencimento emite signal:ready.Grafo completo
switchbranchCompara texto open ao case1 → open; valores sem correspondência usam default.Grafo completo
randombranchEscolhe entre dois ramos de peso igual; avaliador determinístico usa branch1 por padrão.Grafo completo
elementGroupvalueEnvia dois UUIDs ordenados à entrada target de state; runtime resolve cada membro.Grafo completo
lightReferencevalueVincula luz nativa por light → light.target.Grafo completo
soundReferencevalueVincula som por sound → sound.target.Grafo completo
eventContextvalueLê contagem confiável → comparação numérica com 1 → condição → open.Grafo completo
moveactionMove elemento compatível uma célula em x; dx/dy usam células.Grafo completo
rotateactionGira elemento compatível 90 graus; regiões exigem múltiplos de 90.Grafo completo
setInteractionactionHabilita interação direta de jogador em porta ou mecanismo compatível.Grafo completo
setRegionactionHabilita presença na região proprietária; Target porta é incompatível.Grafo completo
setVisibilityactionMostra arte em Target visual compatível, sem alterar estado do mecanismo.Grafo completo
setAppearanceactionEscolhe material em Target de superfície dinâmica compatível, preservando dados de restauração.Grafo completo
showMessageactionMostra texto original ao público trigger após autorização do servidor.Grafo completo
showHandoutactionApresenta diário autorizado a trigger; use ID real de diário da campanha.Grafo completo
requestRollactionPede a trigger uma rolagem 1d20+2 com resultado público. O destinatário escolhe Rolar; o grafo continua sem ramo pelo resultado.Grafo completo
setQuestStatusactionSolicita status active de missão existente da campanha por ação criada pelo GM; não concede permissão geral de editar diários.Grafo completo
cameraFocusactionFoca câmera de trigger nas coordenadas 25%, 40% da cena.Grafo completo
teleportactionMove o token disparador verificado para destino na mesma cena; exige contexto de token.Grafo completo
counterbranchPassa no segundo evento, preservando memória entre execuções.Grafo completo
oncebranchPassa uma vez; escolhe false nas seguintes com a mesma memória de nó.Grafo completo
cooldownbranchPassa imediatamente e bloqueia por 10 segundos com relógio do servidor.Grafo completo

Como usar e conferir os exemplos

No editor, crie o tipo de objeto compatível e os nós do grafo baixado; vincule recursos pelos seletores reais. IDs dos arquivos são sintéticos. O validador testa a forma e o avaliador prevê ações, mas não resolve permissão, existência de recurso ou compatibilidade do alvo. O grafo setRegion pertence a uma região; setAppearance usa uma referência explícita a uma superfície dinâmica. Selecione alvos reais antes de executar na mesa. Não interprete uma ação prevista como prova de aplicação no servidor.

Execute a fixture em uma instalação de desenvolvimento

Extraia o pacote de exemplos em data/blueprint-examples, dentro de um checkout descartável da versão documentada. Na raiz do checkout, execute:

sh
uv run --locked python data/blueprint-examples/check-examples.py --host .

O verificador configura banco em memória, bloqueia consultas ao banco e chama as funções reais clean_blueprint e evaluate_graph. Ele valida os quatro tipos de objeto, os dois tipos de conexão e os 44 tipos de nó, incluindo requestRoll e setQuestStatus. Confere as duas visibilidades de rolagem, os seis status de missão e a continuação da execução sem rolar dados nem alterar diários. Isso verifica o formato e as ações previstas. Use também Test behavior para conferir alvos reais, autorização e a cadeia completa no servidor.

requestRoll valida expressão de dados, rótulo, visibilidade (public ou gm) e público, mas apenas prevê um pedido. Destinatários elegíveis escolhem rolar na janela nativa; streamers não recebem pedidos. setQuestStatus vincula missão existente da campanha e aceita draft, available, active, completed, failed ou archived. A execução real usa autoridade de GM ativo pelo serviço de diários; jogadores não ganham permissão geral de editar diários. O UUID sintético de resources.quest não comprova que a missão pertence à campanha. Delay é retomado pelo verificador usando a continuação real. Counter é avaliado duas vezes com a memória preservada. Interact, Emit event e Timer são pedidos de execução posterior: o avaliador local não executa grafos receptores. Teleport exige token disparador real; contexto inventado no navegador não autoriza movimento.

Configuração central de cada exemplo

event

Inicia o grafo interact e solicita state:open.

json
{
  "id": "start",
  "type": "event",
  "x": 40,
  "y": 80,
  "event": "interact"
}

Baixar Blueprint completo de event

light

Habilita uma luz nativa por targetId; exige iluminação dinâmica disponível.

json
{
  "id": "sample",
  "type": "light",
  "x": 300,
  "y": 80,
  "targetId": "22222222-2222-4222-8222-222222222222",
  "enabled": true
}

Baixar Blueprint completo de light

sound

Toca o som da campanha com volume 0.5.

json
{
  "id": "sample",
  "type": "sound",
  "x": 300,
  "y": 80,
  "trackId": "33333333-3333-4333-8333-333333333333",
  "volume": 0.5
}

Baixar Blueprint completo de sound

state

Muda a porta para open, sem emitir outro evento.

json
{
  "id": "sample",
  "type": "state",
  "x": 300,
  "y": 80,
  "targetState": "open"
}

Baixar Blueprint completo de state

interact

Solicita interação da porta referenciada; o servidor executa a cadeia enfileirada e aplica limites.

json
{
  "id": "sample",
  "type": "interact",
  "x": 300,
  "y": 80
}

Baixar Blueprint completo de interact

condition

Compara closed e escolhe true → open. Test conectado substitui a comparação padrão.

json
{
  "id": "sample",
  "type": "condition",
  "x": 300,
  "y": 80,
  "state": "closed"
}

Baixar Blueprint completo de condition

sequence

Executa then1 → open; use then2–then4 para ações seguintes ordenadas.

json
{
  "id": "sample",
  "type": "sequence",
  "x": 300,
  "y": 80
}

Baixar Blueprint completo de sequence

sprite

Usa imagem da campanha em Target porta/imagem compatível, preservando a caixa.

json
{
  "id": "sample",
  "type": "sprite",
  "x": 300,
  "y": 80,
  "appearance": "asset",
  "assetId": "44444444-4444-4444-8444-444444444444"
}

Baixar Blueprint completo de sprite

property

Lê estado inicial → compara closed → condição → open.

json
{
  "id": "sample",
  "type": "property",
  "x": 300,
  "y": 80,
  "property": "state"
}

Baixar Blueprint completo de property

compare

Retorna se o estado é closed; resultado booleano alimenta condition.test.

json
{
  "id": "sample",
  "type": "compare",
  "x": 300,
  "y": 80,
  "state": "closed"
}

Baixar Blueprint completo de compare

reference

Envia UUID de elemento pela saída door à entrada target de state.

json
{
  "id": "sample",
  "type": "reference",
  "x": 300,
  "y": 80,
  "targetId": "11111111-1111-4111-8111-111111111111"
}

Baixar Blueprint completo de reference

reveal

Revela porta secreta; use uma porta compatível como alvo.

json
{
  "id": "sample",
  "type": "reveal",
  "x": 300,
  "y": 80
}

Baixar Blueprint completo de reveal

barrier

Libera movimento por uma porta sem mudar os demais canais de barreira.

json
{
  "id": "sample",
  "type": "barrier",
  "x": 300,
  "y": 80,
  "channel": "movement",
  "mode": "pass"
}

Baixar Blueprint completo de barrier

soundControl

Para a faixa selecionada; use volume para ajustar seu volume explicitamente.

json
{
  "id": "sample",
  "type": "soundControl",
  "x": 300,
  "y": 80,
  "trackId": "33333333-3333-4333-8333-333333333333",
  "action": "stop",
  "volume": 0.5
}

Baixar Blueprint completo de soundControl

flame

Acende componentes habilitados da tocha composta, preservando o mecanismo.

json
{
  "id": "sample",
  "type": "flame",
  "x": 300,
  "y": 80,
  "enabled": true
}

Baixar Blueprint completo de flame

all

Exige duas comparações closed verdadeiras; menos de duas entradas retorna false.

json
{
  "id": "sample",
  "type": "all",
  "x": 300,
  "y": 80
}

Baixar Blueprint completo de all

any

Aceita qualquer uma das duas comparações closed; exige pelo menos duas entradas.

json
{
  "id": "sample",
  "type": "any",
  "x": 300,
  "y": 80
}

Baixar Blueprint completo de any

getVariable

Lê variável booleana ready do elemento, padrão true → condição → open.

json
{
  "id": "sample",
  "type": "getVariable",
  "x": 300,
  "y": 80,
  "scope": "element",
  "name": "ready",
  "valueType": "boolean",
  "default": true
}

Baixar Blueprint completo de getVariable

setVariable

Grava ready=true booleano no escopo element.

json
{
  "id": "sample",
  "type": "setVariable",
  "x": 300,
  "y": 80,
  "scope": "element",
  "name": "ready",
  "valueType": "boolean",
  "value": true
}

Baixar Blueprint completo de setVariable

compareValue

Compara valor booleano a false; Value booleano desconectado usa false.

json
{
  "id": "sample",
  "type": "compareValue",
  "x": 300,
  "y": 80,
  "valueType": "boolean",
  "operator": "eq",
  "expected": false
}

Baixar Blueprint completo de compareValue

emitEvent

Enfileira signal:ready em Self; o receptor incluído solicita state:open.

json
{
  "id": "sample",
  "type": "emitEvent",
  "x": 300,
  "y": 80,
  "scope": "element",
  "name": "ready"
}

Baixar Blueprint completo de emitEvent

delay

Espera 3 segundos antes de open; avaliador fornece continuação e servidor agenda.

json
{
  "id": "sample",
  "type": "delay",
  "x": 300,
  "y": 80,
  "seconds": 3
}

Baixar Blueprint completo de delay

timer

Inicia timer de 3 segundos cujo vencimento emite signal:ready.

json
{
  "id": "sample",
  "type": "timer",
  "x": 300,
  "y": 80,
  "name": "ready",
  "action": "start",
  "seconds": 3
}

Baixar Blueprint completo de timer

switch

Compara texto open ao case1 → open; valores sem correspondência usam default.

json
{
  "id": "sample",
  "type": "switch",
  "x": 300,
  "y": 80,
  "valueType": "text",
  "value": "open",
  "cases": [
    {
      "id": "case1",
      "value": "open"
    }
  ]
}

Baixar Blueprint completo de switch

random

Escolhe entre dois ramos de peso igual; avaliador determinístico usa branch1 por padrão.

json
{
  "id": "sample",
  "type": "random",
  "x": 300,
  "y": 80,
  "weights": [
    1,
    1
  ]
}

Baixar Blueprint completo de random

elementGroup

Envia dois UUIDs ordenados à entrada target de state; runtime resolve cada membro.

json
{
  "id": "sample",
  "type": "elementGroup",
  "x": 300,
  "y": 80,
  "name": "Gates",
  "memberType": "element",
  "targetIds": [
    "11111111-1111-4111-8111-111111111111",
    "11111111-1111-4111-8111-111111111112"
  ]
}

Baixar Blueprint completo de elementGroup

lightReference

Vincula luz nativa por light → light.target.

json
{
  "id": "sample",
  "type": "lightReference",
  "x": 300,
  "y": 80,
  "targetId": "22222222-2222-4222-8222-222222222222"
}

Baixar Blueprint completo de lightReference

soundReference

Vincula som por sound → sound.target.

json
{
  "id": "sample",
  "type": "soundReference",
  "x": 300,
  "y": 80,
  "trackId": "33333333-3333-4333-8333-333333333333"
}

Baixar Blueprint completo de soundReference

eventContext

Lê contagem confiável → comparação numérica com 1 → condição → open.

json
{
  "id": "sample",
  "type": "eventContext",
  "x": 300,
  "y": 80,
  "property": "count"
}

Baixar Blueprint completo de eventContext

move

Move elemento compatível uma célula em x; dx/dy usam células.

json
{
  "id": "sample",
  "type": "move",
  "x": 300,
  "y": 80,
  "dx": 1,
  "dy": 0
}

Baixar Blueprint completo de move

rotate

Gira elemento compatível 90 graus; regiões exigem múltiplos de 90.

json
{
  "id": "sample",
  "type": "rotate",
  "x": 300,
  "y": 80,
  "degrees": 90
}

Baixar Blueprint completo de rotate

setInteraction

Habilita interação direta de jogador em porta ou mecanismo compatível.

json
{
  "id": "sample",
  "type": "setInteraction",
  "x": 300,
  "y": 80,
  "enabled": true
}

Baixar Blueprint completo de setInteraction

setRegion

Habilita presença na região proprietária; Target porta é incompatível.

json
{
  "id": "sample",
  "type": "setRegion",
  "x": 300,
  "y": 80,
  "enabled": true
}

Baixar Blueprint completo de setRegion

setVisibility

Mostra arte em Target visual compatível, sem alterar estado do mecanismo.

json
{
  "id": "sample",
  "type": "setVisibility",
  "x": 300,
  "y": 80,
  "visible": true
}

Baixar Blueprint completo de setVisibility

setAppearance

Escolhe material em Target de superfície dinâmica compatível, preservando dados de restauração.

json
{
  "id": "sample",
  "type": "setAppearance",
  "x": 300,
  "y": 80,
  "assetId": "44444444-4444-4444-8444-444444444444"
}

Baixar Blueprint completo de setAppearance

showMessage

Mostra texto original ao público trigger após autorização do servidor.

json
{
  "id": "sample",
  "type": "showMessage",
  "x": 300,
  "y": 80,
  "text": "The gate answers.",
  "audience": {
    "scope": "trigger"
  }
}

Baixar Blueprint completo de showMessage

showHandout

Apresenta diário autorizado a trigger; use ID real de diário da campanha.

json
{
  "id": "sample",
  "type": "showHandout",
  "x": 300,
  "y": 80,
  "journalId": "55555555-5555-4555-8555-555555555555",
  "audience": {
    "scope": "trigger"
  }
}

Baixar Blueprint completo de showHandout

requestRoll

Pede a trigger uma rolagem 1d20+2 com resultado público. O destinatário escolhe Rolar; o grafo continua sem ramo pelo resultado.

json
{
  "id": "sample",
  "type": "requestRoll",
  "x": 300,
  "y": 80,
  "expression": "1d20+2",
  "label": "Inspect the chest",
  "visibility": "public",
  "audience": {
    "scope": "trigger"
  }
}

Baixar Blueprint completo de requestRoll

setQuestStatus

Solicita status active de missão existente da campanha por ação criada pelo GM; não concede permissão geral de editar diários.

json
{
  "id": "sample",
  "type": "setQuestStatus",
  "x": 300,
  "y": 80,
  "journalId": "88888888-8888-4888-8888-888888888888",
  "status": "active"
}

Baixar Blueprint completo de setQuestStatus

cameraFocus

Foca câmera de trigger nas coordenadas 25%, 40% da cena.

json
{
  "id": "sample",
  "type": "cameraFocus",
  "x": 300,
  "y": 80,
  "focusX": 25,
  "focusY": 40,
  "audience": {
    "scope": "trigger"
  }
}

Baixar Blueprint completo de cameraFocus

teleport

Move o token disparador verificado para destino na mesma cena; exige contexto de token.

json
{
  "id": "sample",
  "type": "teleport",
  "x": 300,
  "y": 80,
  "destinationId": "66666666-6666-4666-8666-666666666666"
}

Baixar Blueprint completo de teleport

counter

Passa no segundo evento, preservando memória entre execuções.

json
{
  "id": "sample",
  "type": "counter",
  "x": 300,
  "y": 80,
  "target": 2
}

Baixar Blueprint completo de counter

once

Passa uma vez; escolhe false nas seguintes com a mesma memória de nó.

json
{
  "id": "sample",
  "type": "once",
  "x": 300,
  "y": 80
}

Baixar Blueprint completo de once

cooldown

Passa imediatamente e bloqueia por 10 segundos com relógio do servidor.

json
{
  "id": "sample",
  "type": "cooldown",
  "x": 300,
  "y": 80,
  "seconds": 10
}

Baixar Blueprint completo de cooldown

Teste como GM e jogador

Use Simulate para inspecionar um evento local. Depois use Test behavior para ensaiar pelo servidor; as alterações desse ensaio são revertidas. Gere ou atualize a cena como GM e teste uma cena sintética com GM e jogador autorizado. Confira que streamer não consegue gravar. Ao editar novamente o projeto, use Update scene antes de esperar mudanças no comportamento da mesa.

Para nós com Target, teste recurso real compatível, UUID ausente e recurso de outra campanha. Para mensagens e diários, teste público trigger e um segundo jogador. Para memória/tempo, repita com o mesmo nó, depois reinicie intencionalmente a memória pelos controles do GM. Consulte o resultado de cada ação em Automation, incluindo ignorados por alvo incompatível.

Como usar a IA para adaptar qualquer nó

text
Meu alvo é Gravewright 0.3.1, revisão0e91fef. Adapte o Blueprint completo do nó [type] para [objetivo]. Confira blueprints.py, blueprint_runtime.py e o guia Map Builder. Diferencie validação do documento, previsão do avaliador e aplicação no servidor. Escolha proprietário/Target compatível e recursos da campanha. Entregue JSON completo, passos no editor, resultado esperado e testes GM/jogador com alvo ausente, permissão negada e repetição. Preserve portas tipadas, memória e retomadas quando aplicáveis.

Todos os kinds de objeto · Conexões execution/data