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.type | Papel | Uso concreto | JSON |
|---|---|---|---|
| event | execution | Inicia o grafo interact e solicita state:open. | Grafo completo |
| light | action | Habilita uma luz nativa por targetId; exige iluminação dinâmica disponível. | Grafo completo |
| sound | action | Toca o som da campanha com volume 0.5. | Grafo completo |
| state | action | Muda a porta para open, sem emitir outro evento. | Grafo completo |
| interact | action | Solicita interação da porta referenciada; o servidor executa a cadeia enfileirada e aplica limites. | Grafo completo |
| condition | branch | Compara closed e escolhe true → open. Test conectado substitui a comparação padrão. | Grafo completo |
| sequence | execution | Executa then1 → open; use then2–then4 para ações seguintes ordenadas. | Grafo completo |
| sprite | action | Usa imagem da campanha em Target porta/imagem compatível, preservando a caixa. | Grafo completo |
| property | value | Lê estado inicial → compara closed → condição → open. | Grafo completo |
| compare | value | Retorna se o estado é closed; resultado booleano alimenta condition.test. | Grafo completo |
| reference | value | Envia UUID de elemento pela saída door à entrada target de state. | Grafo completo |
| reveal | action | Revela porta secreta; use uma porta compatível como alvo. | Grafo completo |
| barrier | action | Libera movimento por uma porta sem mudar os demais canais de barreira. | Grafo completo |
| soundControl | action | Para a faixa selecionada; use volume para ajustar seu volume explicitamente. | Grafo completo |
| flame | action | Acende componentes habilitados da tocha composta, preservando o mecanismo. | Grafo completo |
| all | value | Exige duas comparações closed verdadeiras; menos de duas entradas retorna false. | Grafo completo |
| any | value | Aceita qualquer uma das duas comparações closed; exige pelo menos duas entradas. | Grafo completo |
| getVariable | value | Lê variável booleana ready do elemento, padrão true → condição → open. | Grafo completo |
| setVariable | action | Grava ready=true booleano no escopo element. | Grafo completo |
| compareValue | value | Compara valor booleano a false; Value booleano desconectado usa false. | Grafo completo |
| emitEvent | action | Enfileira signal:ready em Self; o receptor incluído solicita state:open. | Grafo completo |
| delay | execution | Espera 3 segundos antes de open; avaliador fornece continuação e servidor agenda. | Grafo completo |
| timer | action | Inicia timer de 3 segundos cujo vencimento emite signal:ready. | Grafo completo |
| switch | branch | Compara texto open ao case1 → open; valores sem correspondência usam default. | Grafo completo |
| random | branch | Escolhe entre dois ramos de peso igual; avaliador determinístico usa branch1 por padrão. | Grafo completo |
| elementGroup | value | Envia dois UUIDs ordenados à entrada target de state; runtime resolve cada membro. | Grafo completo |
| lightReference | value | Vincula luz nativa por light → light.target. | Grafo completo |
| soundReference | value | Vincula som por sound → sound.target. | Grafo completo |
| eventContext | value | Lê contagem confiável → comparação numérica com 1 → condição → open. | Grafo completo |
| move | action | Move elemento compatível uma célula em x; dx/dy usam células. | Grafo completo |
| rotate | action | Gira elemento compatível 90 graus; regiões exigem múltiplos de 90. | Grafo completo |
| setInteraction | action | Habilita interação direta de jogador em porta ou mecanismo compatível. | Grafo completo |
| setRegion | action | Habilita presença na região proprietária; Target porta é incompatível. | Grafo completo |
| setVisibility | action | Mostra arte em Target visual compatível, sem alterar estado do mecanismo. | Grafo completo |
| setAppearance | action | Escolhe material em Target de superfície dinâmica compatível, preservando dados de restauração. | Grafo completo |
| showMessage | action | Mostra texto original ao público trigger após autorização do servidor. | Grafo completo |
| showHandout | action | Apresenta diário autorizado a trigger; use ID real de diário da campanha. | Grafo completo |
| requestRoll | action | Pede a trigger uma rolagem 1d20+2 com resultado público. O destinatário escolhe Rolar; o grafo continua sem ramo pelo resultado. | Grafo completo |
| setQuestStatus | action | 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. | Grafo completo |
| cameraFocus | action | Foca câmera de trigger nas coordenadas 25%, 40% da cena. | Grafo completo |
| teleport | action | Move o token disparador verificado para destino na mesma cena; exige contexto de token. | Grafo completo |
| counter | branch | Passa no segundo evento, preservando memória entre execuções. | Grafo completo |
| once | branch | Passa uma vez; escolhe false nas seguintes com a mesma memória de nó. | Grafo completo |
| cooldown | branch | Passa 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:
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.
{
"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.
{
"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.
{
"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.
{
"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.
{
"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.
{
"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.
{
"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.
{
"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.
{
"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.
{
"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.
{
"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.
{
"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.
{
"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.
{
"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.
{
"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.
{
"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.
{
"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.
{
"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.
{
"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.
{
"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.
{
"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.
{
"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.
{
"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.
{
"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.
{
"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.
{
"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.
{
"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.
{
"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.
{
"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.
{
"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.
{
"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.
{
"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.
{
"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.
{
"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.
{
"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.
{
"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.
{
"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.
{
"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.
{
"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.
{
"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.
{
"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.
{
"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ó.
{
"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.
{
"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ó
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.