Estrutura de Diálogo: mudanças entre as edições

De MysteryRealms
Ir para navegação Ir para pesquisar
Sem resumo de edição
Sem resumo de edição
Linha 1: Linha 1:
# PÁGINA: Diálogos #
= Introdução Geral =
= Introdução Geral =


Linha 34: Linha 32:




= OLD =
= Estrutura de Diálogos =
 
A estrutura de '''Diálogo''' da engine '''PlayTale''' define interações conversacionais entre o jogador e personagens não-jogadores (NPCs), com ramificações narrativas, testes de atributo e efeitos mecânicos. Esta estrutura foi adaptada para utilizar um modelo visual e legível baseado em templates MediaWiki.
 
Essa estrutura permite uma leitura clara, aninhamento visual de falas, múltiplas variações de estilo e testes, e é especialmente útil durante o design narrativo ou análise por ferramentas de IA.
 
 
== O que é uma Fala? ==
Uma '''Fala''' representa uma linha de diálogo iniciada pelo jogador e seguida de uma resposta do NPC. Ela pode ter consequências, ramificações e efeitos no mundo de jogo. Falas podem ser simples ou conter variações com estilos diferentes, testes de atributo, comandos e falas subsequentes.
 
 
== O que é um Diálogo? ==
Um '''Diálogo''' é o conjunto completo de falas encadeadas que ocorrem em uma situação específica com um NPC. Cada '''Diálogo''' deve ser documentado como um tópico próprio de nível 1 (usando "="), com um nome que represente o tema tratado. Exemplo:
<pre>= Diálogo: Algo Incomum na Floresta =</pre>
 
Esse bloco conterá todas as falas, suas variações e ramificações.
 
 
== Estilos de Fala ==
Os '''estilos de fala''' definem o tom e a abordagem utilizada pelo jogador ao interagir com um NPC. Eles influenciam o comportamento do personagem, o tipo de teste aplicado (se houver), e podem afetar relacionamento, reações ou caminhos desbloqueados no diálogo.
 
O estilo '''neutro''' é considerado padrão e não precisa ser explicitado, a menos que haja múltiplas variações estilizadas para a mesma fala.
 
A seguir, listamos os estilos mais comuns com exemplos utilizando a mesma fala-base: '''"Você viu algo incomum na floresta?"'''.
 
* '''neutro''' – Abordagem direta, sem conotação emocional evidente. Ideal para iniciar uma conversa ou fazer perguntas simples. 
  Exemplo: ''Você viu algo incomum na floresta?'' 
  Implicações: o NPC responde de forma padrão, sem variação emocional ou mecânica. Normalmente não exige teste.
 
* '''persuasivo''' – Tenta convencer o NPC com empatia ou lógica. Útil para ganhar confiança ou obter informações. 
  Exemplo: ''Por favor, se souber de algo, me diga. É importante.'' 
  Implicações: Pode exigir teste de '''persuasão'''. Sucesso gera confiança. Falha pode criar resistência.
 
* '''agressivo''' – Tom ríspido ou ameaçador. Ideal para pressionar, mas arriscado. 
  Exemplo: ''Você vai me contar agora, ou vou ter que insistir de outro jeito.'' 
  Implicações: Pode exigir '''intimidação'''. Sucesso gera medo e respostas forçadas. Falha causa hostilidade.
 
* '''mentiroso''' – Usa falsidade ou manipulação para enganar o NPC. 
  Exemplo: ''Eu sei que outro guarda já me contou tudo. Só quero confirmar com você.'' 
  Implicações: Pode exigir teste de '''enganar'''. Sucesso engana. Falha reduz a confiança.
 
* '''direto''' – Sem rodeios, objetivo. Funciona bem com NPCs práticos, mas pode soar rude. 
  Exemplo: ''Corte a enrolação. Você viu algo estranho ou não?'' 
  Implicações: Abre caminhos curtos, mas pode interromper diálogos ou causar reações negativas.
 
* '''intimidador''' – Pressão psicológica ou social, mais sutil que o agressivo. 
  Exemplo: ''Você sabe que esconder algo pode custar caro... muito caro.'' 
  Implicações: Similar ao agressivo, mas focado no medo interno. Pode fechar o NPC se falhar.
 
* '''amistoso''' – Gentileza e empatia. Ideal para NPCs vulneráveis ou sensíveis. 
  Exemplo: ''Desculpe incomodar, mas qualquer coisa que você puder me contar já ajuda muito.'' 
  Implicações: Raramente exige teste. Pode desbloquear falas exclusivas e melhorar relacionamentos.
 
* '''irônico''' – Humor sarcástico ou zombeteiro. Pode quebrar o gelo ou ofender. 
  Exemplo: ''Claro, porque névoas e olhos brilhantes são normais por aqui, né?'' 
  Implicações: Pode gerar empatia com NPCs irreverentes ou reações negativas com personagens sérios.
 
 
A escolha do estilo deve refletir tanto a personalidade do jogador quanto a leitura da situação e do NPC. Alternar entre estilos de forma inteligente pode abrir caminhos únicos no diálogo e enriquecer a experiência narrativa.
 
 
 
== Testes de Fala ==
Algumas falas exigem testes de atributos para definir se o jogador será bem-sucedido. Os testes são definidos por:
* '''Atributo testado:''' (ex: persuasão, intuição, enganar, percepção, carisma)
* '''Dificuldade:''' valor-alvo a ser igualado ou superado
 
O estilo e o teste são conceitos diferentes:
* O '''estilo''' define a forma da abordagem.
* O '''teste''' define se será necessário um sucesso num teste para desbloquear a resposta positiva.
 
 
Exemplo: uma fala '''persuasiva''' pode conter um teste de '''persuasão''', enquanto uma fala '''mentirosa''' pode conter um teste de '''enganar'''.
 
 
== Comandos da Fala ==
 
Os '''comandos da fala''' são efeitos executados após a resposta do NPC. Eles permitem que o diálogo influencie o mundo de jogo, registre descobertas, altere relacionamentos ou desencadeie eventos narrativos.
 
 
Esses comandos devem ser escritos entre colchetes com seus parâmetros separados por ';'. Para indicar múltiplos comandos eles são separados por vírgulas. Exemplo:
<pre>
[Nome do Comando; Argumento 1; Argumento 2; ...], [Nome do Comando; Argumento 1; Argumento 2; ...], ...
</pre>
 
Vários comandos podem ser aplicados a uma única resposta, separados por vírgulas:
 
<pre>
[Inserir Marcador; DESCOBRIU_SOBRE_ORB], [Mudar Relacionamento; 1]
</pre>
 
Abaixo estão os comandos atualmente disponíveis e sua função:
 
* '''[Inserir Marcador; NOME_DO_MARCADOR]''' 
  Insere um marcador interno no sistema de jogo para registrar que determinada informação foi adquirida ou evento ocorreu. 
  Exemplo: 
  <pre>[Inserir Marcador; VIU_MAPA_SECRETO]</pre>
 
* '''[Adicionar Entrada ao Diário; TEXTO_DA_ENTRADA]''' 
  Adiciona uma nova entrada ao [[Diário_do_Jogador|Diário do Jogador]], visível para consulta futura. 
  Exemplo: 
  <pre>[Adicionar Entrada ao Diário; O velho mencionou um local escondido sob as ruínas do norte.]</pre>
 
* '''[Entregar Item; ID_DO_ITEM]''' 
  O NPC entrega um item ao jogador, geralmente como consequência de uma fala bem-sucedida ou como parte de uma negociação. 
  Exemplo: 
  <pre>[Entregar Item; CHAVE_ANTIGA]</pre>
 
* '''[Mudar Relacionamento; VALOR]''' 
  Modifica o nível de relacionamento entre o jogador e o NPC. 
  * Valores positivos (ex: `1`, `2`) melhoram a relação. 
  * Valores negativos (ex: `-1`, `-3`) deterioram a relação. 
  * Um valor de `5` representa confiança máxima; `-5` pode representar hostilidade. 
  Exemplo: 
  <pre>[Mudar Relacionamento; -2]</pre>
 
* '''[Teleportar jogador; ID_DO_DESTINO]''' 
  Move o jogador instantaneamente para outro local. Pode representar uma expulsão, um transporte ou um efeito mágico. 
  Exemplo: 
  <pre>[Teleportar jogador; TEMPLO_ANTIGO_ENTRADA]</pre>
 
Esses comandos são processados automaticamente após a fala correspondente. Em falas com testes, os comandos são separados para os casos de '''sucesso''' e '''falha''', permitindo efeitos distintos dependendo do resultado.
 
 
 
== Predefinições de Estrutura de Fala ==
=== FalaSimples ===
Usada para falas com apenas uma resposta sem teste nem variações.
 
<pre>
{{FalaSimples
|id=1
|fala=Você já viu algo estranho por aqui?
|resposta=Depende... você está preparado para ouvir a verdade?
|comandos=[Mudar Relacionamento; 1]
|subfalas==
  {{FalaSimples
  |id=2
  |fala=Sim, estou pronto.
  |resposta=Então escute bem...
  }}
}}
</pre>
 
=== FalaComTeste ===
Utilizada quando a fala exige um teste, com resposta diferente para sucesso e falha.
 
<pre>
{{FalaComTeste
|id=3
|fala=Você poderia me contar o que sabe?
|estilo=persuasivo
|teste=persuasão
|dificuldade=13
|resposta_sucesso=Tá bom... vou confiar em você.
|comandos_sucesso=[Inserir Marcador; RECEBEU_INFORMACAO]
|subfalas_sucesso==
  {{FalaSimples
  |id=4
  |fala=Obrigado, isso é importante.
  |resposta=Só tome cuidado com quem mais você conta isso.
  }}
|resposta_falha=Não tenho nada pra te dizer.
|comandos_falha=[Mudar Relacionamento; -1]
}}
</pre>
 
=== FalaComVariacoes ===
Usada quando há mais de uma forma de dizer a mesma fala, com estilos e testes diferentes.


<pre>
{{FalaComVariacoes
|id=5
|fala=Comento que senti algo estranho na floresta.
|variacoes==
  {{VariaçãoComTeste
  |id=6
  |estilo=intuição
  |teste=intuição
  |dificuldade=12
  |resposta_sucesso=Você também sentiu isso, hein?
  |comandos_sucesso=[Inserir Marcador; SENTIU_ALGO]
  |subfalas_sucesso==
    {{FalaSimples
    |id=7
    |fala=Acha que foi real?
    |resposta=Mais real do que gostaria...
    }}
  |resposta_falha=Parece mais imaginação sua.
  |comandos_falha=[Mudar Relacionamento; -1]
  }}


O sistema de diálogos da engine '''PlayTale''' é projetado para criar interações dinâmicas, ramificadas e coerentes com o progresso do jogador. Cada conversa com um NPC pode ser alterada conforme o jogador aprende novas informações, realiza ações ou tem sucesso em testes sociais ou perceptivos.
  {{VariaçãoSimples
  |id=8
  |estilo=direto
  |resposta=Você vai direto ao ponto... mas cuidado, esse tipo de fala assusta as pessoas.
  |comandos=[Mudar Relacionamento; 1]
  }}
}}
</pre>


A base desse sistema é a presença de '''marcadores''' — indicadores que registram o progresso individual do jogador, como explicado em detalhes no [[Sistema_de_Marcadores|Sistema de Marcadores]].


= Diálogos Condicionais =
=== VariaçãoSimples ===
Utilizada dentro de uma [[#FalaComVariacoes|FalaComVariacoes]] quando há uma variação de fala sem teste. Deve sempre conter um estilo (mesmo que seja "neutro", caso haja outras variações com estilos diferentes).


Cada bloco de diálogo pode ser condicionado à presença (ou ausência) de um ou mais marcadores na ficha do jogador. Isso permite que a conversa reflita o que o jogador já sabe ou vivenciou, e impede que o mesmo diálogo seja repetido de forma incoerente.
<pre>
{{VariaçãoSimples
|id=9
|estilo=direto
|resposta=Você é do tipo que vai direto ao ponto, hein? Gosto disso.
|comandos=[Mudar Relacionamento; 1]
}}
</pre>


Exemplo:
=== VariaçãoComTeste ===
* O jogador só pode perguntar sobre um artefato se tiver o marcador '''SABE_SOBRE_ARTEFATO_ANTIGO'''.
Utilizada dentro de uma [[#FalaComVariacoes|FalaComVariacoes]] quando uma variação exige um teste. Deve conter obrigatoriamente os blocos de sucesso e falha completos.
* Após concluir a conversa, o marcador '''DIALOGO_ARTEFATO_NPC1_ENCERRADO''' é adicionado, impedindo que a conversa se repita.


= Ramificações com Testes =
<pre>
{{VariaçãoComTeste
|id=10
|estilo=persuasivo
|teste=persuasão
|dificuldade=14
|resposta_sucesso=Tudo bem... você me convenceu.
|comandos_sucesso=[Inserir Marcador; CONVENCEU_PERSONAGEM]
|subfalas_sucesso==
  {{FalaSimples
  |id=11
  |fala=O que mais pode me contar?
  |resposta=Não muito... apenas tome cuidado.
  }}
|resposta_falha=Nem tente. Já falei que não confio em você.
|comandos_falha=[Mudar Relacionamento; -2]
}}
</pre>


Alguns blocos de diálogo podem exigir que o jogador realize testes de atributos ou habilidades para desbloquear respostas especiais, extrair informações adicionais ou influenciar o comportamento de um NPC. Esses testes representam momentos críticos de interpretação social, leitura de intenções ou percepção de pistas ocultas.


Os testes mais comuns utilizados em diálogos e interações investigativas são:
== Legenda dos Ícones ==
 
Abaixo está a legenda visual utilizada nos blocos de fala para facilitar a leitura dos diálogos e diferenciar os tipos de resposta:


{| class="wikitable"
{| class="wikitable"
! Teste !! Uso Comum
! Ícone Sugerido
! Significado
 
|-
| 🗨️
| Fala do jogador
 
|-
| 💬
| Resposta do NPC
 
|-
| ✅
| Resposta em caso de sucesso no teste
 
|-
| ❌
| Resposta em caso de falha no teste
 
|-
| ⚙️
| Comandos ativados após a resposta
 
|}
 
== Nota sobre o campo 'id' ==
 
Todos os blocos de fala e variações devem conter um campo obrigatório chamado '''id'''. Esse campo é utilizado para fins de identificação, rastreamento e manipulação automatizada do conteúdo de cada bloco de fala.
 
O valor do campo `id` deve ser:
* '''Numérico e incremental'''
* '''Único dentro de cada Diálogo''' (não deve se repetir dentro da mesma seção de diálogo)
* Não é exibido ao jogador e não tem efeito direto na interface ou narrativa, mas é essencial para organização interna
 
A presença do campo `id` facilita:
* Depuração e manutenção do conteúdo
* Geração e revisão de falas por ferramentas automatizadas ou IA
* Criação de sistemas de rastreamento de falas específicas
* Referência cruzada durante testes e ajustes
 
Embora o campo `id` não tenha função mecânica no jogo, ele é indispensável na estrutura da documentação para garantir consistência, rastreabilidade e clareza em ambientes colaborativos.
 
== Regras de Uso das Predefinições ==
 
# Estilo "neutro" não precisa ser declarado.
# Comandos devem estar entre colchetes e separados por vírgulas: `[Comando; Arg1], [OutroComando; Arg2]`.
# Predefinições aninhadas devem ser indentadas no código com dois espaços para legibilidade.
# `FalaComVariacoes` só pode conter `VariaçãoSimples` e `VariaçãoComTeste`.
# Se houver apenas uma forma de falar, usar `FalaSimples` ou `FalaComTeste`, não `FalaComVariacoes`.
# Todos os blocos com testes devem ter sucesso e falha definidos.
# Todos os blocos devem ter campo `id` único.
# Todo diálogo deve estar contido em uma seção de nível 1 com o título iniciando por '''Diálogo:'''.
 
 
== Condições de Ativação de Diálogo ==
'''Diálogos''' são restritos para aparecerem apenas quando certas condições forem atendidas, permitindo controle contextual e narrativo sobre o que está disponível ao jogador em determinado momento do jogo.
 
Essas condições são escritas no formato de expressões booleanas simples, similares à linguagem de programação, utilizando funções e operadores lógicos. O objetivo é oferecer uma forma legível, poderosa e extensível de controlar a ativação de blocos de diálogo.
 
 
=== Como declarar uma condição de ativação ===
Uma condição deve ser colocada logo no início do bloco de diálogo, utilizando a seguinte anotação:
 
<pre>
== Diálogo: Guardião da Trilha ==
@condição: hasModifier("OUVIU_SOBRE_TRILHA") AND !hasModifier("TRILHA_INVESTIGADA")
</pre>
 
Essa condição significa que o diálogo só estará disponível se o jogador tiver o modificador '''OUVIU_SOBRE_TRILHA''' e ainda não tiver o modificador '''TRILHA_INVESTIGADA'''.
 
 
=== Sintaxe de Condições ===
As expressões devem utilizar os seguintes operadores lógicos:
* '''AND''': e
* '''OR''': ou - no sentido de qualquer uma das condições
* '''XOR''': ou exclusivo - no sentido de 'ou uma ou outra, não as duas'
* '''!''': negação (NOT) - inverte o true para false e vice-versa. Ou leia-se apenas "não [condição da função]"
 
As funções retornam valores booleanos e podem ser combinadas livremente com os operadores acima.
 
 
=== Funções Disponíveis ===
 
As funções abaixo podem ser utilizadas nas expressões booleanas para definir as condições de ativação dos diálogos. Todas retornam valores booleanos e podem ser combinadas com operadores lógicos.
<Center>
{| class="wikitable" style="width: 90%;"
! style="width: 20%;" | Função
! Descrição e Parâmetros
 
|-
| '''hasAllModifiers'''
|
* '''modificador1, modificador2, ...:''' Identificadores dos modificadores a serem verificados. 
* '''Retorna:''' true se o jogador possuir '''todos''' os modificadores listados.
 
|-
|-
| '''Persuasão''' || Convencer o interlocutor com argumentos diplomáticos, inspirar confiança, gerar empatia.
| '''hasAnyModifier'''
|
* '''modificador1, modificador2, ...:''' Identificadores dos modificadores a serem verificados. 
* '''Retorna:''' true se o jogador possuir '''pelo menos um''' dos modificadores listados.
 
|-
|-
| '''Intimidação''' || Forçar uma reação com presença autoritária, ameaças ou pressão psicológica.
| '''hasItem'''
|
* '''idDoItem:''' Identificador do item a ser verificado na ficha do jogador. 
* '''Retorna:''' true se o jogador possuir o item.
 
|-
|-
| '''Enganação''' || Passar uma mentira como verdade, ocultar intenções, manipular a narrativa.
| '''hasModifier'''
|
* '''idDoModificador:''' Identificador do modificador a ser verificado. 
* '''Retorna:''' true se o jogador possuir o modificador.
 
|-
|-
| '''Intuição''' || Perceber se alguém está escondendo algo, mentindo, hesitando ou sentindo emoções específicas.
| '''isNPCListening'''
|
* '''nomeDoNPC:''' Nome do NPC que deve estar presente e ouvindo o jogador. 
* '''Retorna:''' true se o NPC estiver no ambiente e ouvindo.
 
|-
|-
| '''Percepção''' || Notar detalhes sutis na linguagem corporal, no ambiente ou em reações involuntárias.
| '''isRaining'''
|
* '''(sem parâmetros)''' 
* '''Retorna:''' true se o clima atual do ambiente for de chuva.
 
|-
|-
| '''Investigação''' || Raciocinar sobre o conteúdo ou ausência de informações, identificar contradições ou padrões lógicos.
| '''isUnderRain'''
|
* '''(sem parâmetros)''' 
* '''Retorna:''' true se o jogador estiver fisicamente exposto à chuva (sem cobertura).
 
|}
|}
</center>
=== Exemplos de Condição ===
<pre>
@condição: hasModifier("OUVIU_GRITO") && isUnderRain()
</pre>
<pre>
@condição: hasAnyModifier("VIU_SANGUE", "ACHOU_COLAR") && isNPCListening("Caçador")
</pre>
<pre>
@condição: !hasModifier("TESTEMUNHA_SILENCIADA") && hasItem("CHAVE_DO_PORTAO")
</pre>
=== Condições Obrigatórias ===


Cada teste pode gerar caminhos narrativos diferentes, com sucesso ou falha levando a:
Além das expressões booleanas livres definidas pelo autor do diálogo, existem algumas condições que devem ser obrigatoriamente verificadas em qualquer bloco de diálogo, garantindo coerência narrativa e integridade lógica do jogo.
* Respostas distintas do NPC.
* Ativação de '''marcadores''' específicos para registrar o desfecho.
* Desbloqueio de novas opções de diálogo ou locais.
* Registro automático de uma nova entrada no [[Diário_do_Jogador|Diário do Jogador]].


== Exemplo de Uso ==
==== NPC deve estar ouvindo ====
Um jogador pergunta a um ancião sobre uma relíquia desaparecida. O ancião hesita, e o jogo solicita um '''Teste de Intuição (Dificuldade 12)'''. Se o jogador for bem-sucedido, perceberá que o ancião está escondendo algo e poderá confrontá-lo diretamente. Caso falhe, o diálogo se encerrará com uma resposta vaga.


{{nota|A aplicação de testes em diálogos deve sempre ter impacto real na narrativa, oferecendo consequências significativas e reforçando a agência do jogador.}}
Todo diálogo é iniciado com um personagem não-jogador (NPC) e, portanto, só deve estar disponível se o NPC estiver presente no ambiente e em posição de ouvir o jogador. Para isso, toda condição de ativação de diálogo deve conter a verificação:


= Encerramento e Controle de Repetição =
<pre>
isNPCListening("NOME_DO_NPC")
</pre>


Diálogos podem ser encerrados de forma definitiva ao final de uma interação importante, utilizando marcadores do tipo:
Substitua '''NOME_DO_NPC''' pelo nome do personagem correspondente. Essa função garante que o NPC esteja fisicamente presente no ambiente e que esteja atento ao jogador — excluindo situações em que o NPC esteja morto, inconsciente, ausente ou em fuga.
* '''DIALOGO_*_ENCERRADO'''


Esse controle evita repetições e garante progressão natural nas interações com os NPCs.
'''Exemplo válido de condição de diálogo:'''
<pre>
@condição: isNPCListening("Lenhador") && hasModifier("OUVIU_SOBRE_FANTASMAS")
</pre>


= Integração com o Diário =
A ausência dessa verificação pode causar situações incoerentes, como diálogos sendo ativados com personagens que não estão disponíveis, o que pode quebrar a imersão ou gerar erros lógicos no jogo.


Sempre que uma conversa resulta na aquisição de um conhecimento relevante — especialmente sobre eventos, personagens ou locais — o sistema pode automaticamente registrar essa descoberta no [[Diário_do_Jogador|Diário do Jogador]].
Outras condições obrigatórias poderão ser adicionadas conforme a evolução das mecânicas de narrativa ou do sistema de ambientação.


Esse registro é vinculado ao marcador obtido durante a conversa. A entrada no diário é sempre objetiva, direta e escrita em primeira pessoa, como se o próprio jogador estivesse anotando a descoberta.


= Comportamento Persistente dos NPCs =


NPCs lembram interações passadas com base nos marcadores registrados. Isso permite que:
=== Expansão da Linguagem ===
* Um NPC trate o jogador de forma diferente conforme o progresso.
Novas funções poderão ser adicionadas com base nas necessidades narrativas e mecânicas do jogo. Recomenda-se manter a simplicidade, clareza e coerência no nome das funções, seguindo o padrão camelCase.
* Novos diálogos apareçam conforme novas descobertas.
Essa estrutura foi projetada para ser compreensível por roteiristas e designers narrativos, ao mesmo tempo oferecendo total controle sobre a ativação contextual dos diálogos.
* Interações sejam retomadas ou ignoradas dependendo da situação atual.


= Condições Compostas (em desenvolvimento) =
== Exemplos ==
A seguir exemplos de diálogos para referência.


Será possível condicionar um diálogo à combinação de múltiplos marcadores, permitindo:
* Conversas que só ocorrem se o jogador viu algo '''e''' soube de outra informação.
* Opções que aparecem se o jogador falhou em um teste '''ou''' não falou com outro NPC.


= Modelo de Estrutura de Diálogo (em desenvolvimento) =
=== Diálogo: Algo Incomum na Floresta ===
<pre>@condição: isNPCListening("Lenhador") && hasAnyModifier("OUVIU_SOBRE_FANTASMAS", "VIU_SOMBRA_NA_FLORESTA", "LEU_LORE_ESPIRITOS")</pre>
{{FalaSimples
|id=1
|fala=Você já viu algo incomum na floresta?
|resposta=Depende do que você chama de incomum. Essa floresta é cheia de segredos...
|subfalas==
  {{FalaComVariacoes
  |id=2
  |fala=Comento que senti algo me observando entre as árvores.
  |variacoes==
    {{VariaçãoComTeste
    |id=3
    |estilo=intuição
    |teste=intuição
    |dificuldade=12
    |resposta_sucesso=Você também sentiu isso, hein? Não é só paranoia...
    |comandos_sucesso=[Inserir Marcador; SENTIU_PRESENCA_SOMBRIA], [Mudar Relacionamento; 1]
    |subfalas_sucesso==
      {{FalaSimples
      |id=4
      |fala=Acha que é um espírito ou uma fera?
      |resposta=Espírito, fera... ou pior. Às vezes, o que te observa não tem forma.
      }}
    |resposta_falha=Hah! Isso é o que dá dormir pouco ou comer cogumelo errado.
    |comandos_falha=[Mudar Relacionamento; -1]
    |subfalas_falha==
      {{FalaComTeste
      |id=5
      |fala=Peço que leve isso a sério.
      |estilo=persuasivo
      |teste=persuasão
      |dificuldade=14
      |resposta_sucesso=Tudo bem... talvez eu esteja negando algo que também temo.
      |comandos_sucesso=[Inserir Marcador; CONVENCEU_SOBRE_PRESENCA]
      |subfalas_sucesso==
        {{FalaSimples
        |id=6
        |fala=Poderia me mostrar onde sentiu isso?
        |resposta=Venha ao entardecer. Eu te mostro. Mas esteja preparado.
        }}
      |resposta_falha=Não vou perder meu tempo com delírios.
      |comandos_falha=[Mudar Relacionamento; -2]
      }}
    }}


A engine permitirá definir diálogos em formato estruturado (como YAML), com:
    {{VariaçãoComTeste
* Identificadores únicos por bloco.
    |id=7
* Condições de exibição.
    |estilo=mentiroso
* Falas do jogador e do NPC.
    |teste=enganar
* Testes e seus resultados.
    |dificuldade=15
* Ações disparadas (ativar marcador, registrar no diário, encerrar diálogo, etc.).
    |resposta_sucesso=Você ouviu isso onde? Há um velho conto sobre o Guardião das Sombras.
    |comandos_sucesso=[Inserir Marcador; DESCOBRIU_LENDA_DA_SOMBRA], [Adicionar Entrada ao Diário; O velho mencionou um tal 'Guardião das Sombras', que habita a floresta.]
    |subfalas_sucesso==
      {{FalaSimples
      |id=8
      |fala=O que você sabe sobre esse guardião?
      |resposta=Dizem que protege algo... ou alguém. Mas odeia ser perturbado.
      }}
    |resposta_falha=Mentiras não caem bem por aqui, forasteiro.
    |comandos_falha=[Mudar Relacionamento; -3]
    }}


= Boas Práticas de Escrita (em desenvolvimento) =
    {{VariaçãoSimples
    |id=9
    |estilo=direto
    |resposta=Você é do tipo que vai direto ao ponto, hein? Gosto disso. Mas isso pode ser perigoso por aqui.
    |comandos=[Mudar Relacionamento; 1]
    }}
  }}
 
  {{FalaComTeste
  |id=10
  |fala=E sobre os viajantes desaparecidos, você sabe de algo?
  |estilo=persuasivo
  |teste=persuasão
  |dificuldade=13
  |resposta_sucesso=Ouvi que sumiram perto da trilha do penhasco. Mas ninguém confirma.
  |comandos_sucesso=[Inserir Marcador; DESCOBRIU_TRILHA], [Mudar Relacionamento; 1]
  |subfalas_sucesso==
    {{FalaComVariacoes
    |id=12
    |fala=Você conhece bem essa trilha?
    |variacoes==
      {{VariaçãoSimples
      |id=13
      |estilo=neutro
      |resposta=Bem demais... mas evito ela há anos.
      |comandos=[Inserir Marcador; EVITA_TRILHA]
      |subfalas==
        {{FalaSimples
        |id=14
        |fala=Por quê?
        |resposta=Algo mudou por lá. O som... o cheiro... até os pássaros evitam aquele caminho.
        }}
      }}


Será disponibilizado um conjunto de diretrizes para garantir:
      {{VariaçãoComTeste
* Clareza e coerência narrativa.
      |id=15
* Adaptação do tom à personalidade do NPC.
      |estilo=persuasivo
* Evitar redundância com o conteúdo do [[Diário_do_Jogador|Diário do Jogador]].
      |teste=intuição
      |dificuldade=12
      |resposta_sucesso=Tá bom... vi pegadas lá. Grandes. Demais pra serem humanas.
      |comandos_sucesso=[Inserir Marcador; PEGADAS_MISTERIOSAS]
      |subfalas_sucesso==
        {{FalaSimples
        |id=16
        |fala=Você seguiu as pegadas?
        |resposta=Por duas curvas... depois desapareciam na pedra.
        }}
      |resposta_falha=Não tenho certeza... talvez tenha sido só impressão.
      |comandos_falha=[Mudar Relacionamento; -1]
      }}
    }}
  |resposta_falha=Isso não é da sua conta.
  |comandos_falha=[Mudar Relacionamento; -1]
  |subfalas_falha==
    {{FalaComVariacoes
    |id=17
    |fala=Não precisa ser rude, só quero ajudar.
    |variacoes==
      {{VariaçãoSimples
      |id=18
      |estilo=amistoso
      |resposta=Desculpe... é que falar disso me incomoda. Tive um amigo que sumiu por lá.
      |comandos=[Mudar Relacionamento; 1]
      |subfalas==
        {{FalaSimples
        |id=19
        |fala=Você pode me contar mais sobre ele?
        |resposta=Chamava-se Arel. Era caçador... e bom demais para simplesmente desaparecer.
        }}
      }}


{{nota|O sistema de diálogos é uma das ferramentas mais poderosas para aprofundar a narrativa interativa da engine PlayTale. Ele permite que os personagens realmente respondam ao que o jogador sabe, faz e escolhe — reforçando a imersão e a sensação de agência.}}
      {{VariaçãoSimples
      |id=20
      |estilo=direto
      |resposta=Já disse, não vou falar disso.
      |comandos=[Mudar Relacionamento; -2]
      }}
    }}
  }}
}}

Edição das 03h24min de 1 de abril de 2025

Introdução Geral

O sistema de Diálogos da engine PlayTale é uma ferramenta central para criar interações narrativas ricas entre o jogador e personagens não-jogadores (NPCs). Ele permite a construção de conversas ramificadas, influenciadas por atributos, decisões anteriores, condições do mundo e sistemas internos do jogo.

Mais do que apenas exibir falas, os diálogos desempenham um papel fundamental na mecânica do jogo:

  • Disparam eventos e atualizam marcadores que alteram o estado do mundo.
  • Ativam gatilhos narrativos, desbloqueiam áreas ou avanços de missão.
  • Revelam informações que alimentam sistemas como o Diário do Jogador.
  • Realizam testes baseados em atributos e permitem múltiplos caminhos de resolução.

O sistema é capaz de atender a diferentes finalidades narrativas e funcionais:

  • Diálogos Narrativos: para contextualização, ambientação e aprofundamento de personagens.
  • Diálogos Investigativos: para coleta de pistas, verificação de contradições e confrontos.
  • Diálogos de Progressão: para desbloquear missões, entregar itens ou registrar marcos da história.
  • Diálogos Condicionais: com respostas e opções variáveis, baseadas em atributos, inventário ou estado do jogo.
  • Diálogos Estratégicos: com possibilidades de persuasão, intimidação, barganha, entre outros usos de habilidades sociais.

Design Modular e Reutilização

Todos os blocos de diálogo são projetados para serem modulares, podendo ser reutilizados por diferentes personagens ou situações. Isso permite criar interações escaláveis, consistentes e econômicas em termos de escrita e integração técnica.

Fluxo de Criação e Integração

O fluxo de trabalho do sistema de diálogos envolve geralmente duas funções principais:

  • Autores de Diálogo: responsáveis pela escrita das falas, estrutura narrativa e organização lógica dos blocos.
  • Integradores Técnicos: encarregados de aplicar marcadores, vincular testes, configurar variáveis e assegurar que o diálogo esteja conectado ao restante dos sistemas do jogo.

Essa divisão permite que equipes criativas e técnicas colaborem com clareza, garantindo coesão narrativa e funcionalidade mecânica.


Estrutura de Diálogos

A estrutura de Diálogo da engine PlayTale define interações conversacionais entre o jogador e personagens não-jogadores (NPCs), com ramificações narrativas, testes de atributo e efeitos mecânicos. Esta estrutura foi adaptada para utilizar um modelo visual e legível baseado em templates MediaWiki.

Essa estrutura permite uma leitura clara, aninhamento visual de falas, múltiplas variações de estilo e testes, e é especialmente útil durante o design narrativo ou análise por ferramentas de IA.


O que é uma Fala?

Uma Fala representa uma linha de diálogo iniciada pelo jogador e seguida de uma resposta do NPC. Ela pode ter consequências, ramificações e efeitos no mundo de jogo. Falas podem ser simples ou conter variações com estilos diferentes, testes de atributo, comandos e falas subsequentes.


O que é um Diálogo?

Um Diálogo é o conjunto completo de falas encadeadas que ocorrem em uma situação específica com um NPC. Cada Diálogo deve ser documentado como um tópico próprio de nível 1 (usando "="), com um nome que represente o tema tratado. Exemplo:

= Diálogo: Algo Incomum na Floresta =

Esse bloco conterá todas as falas, suas variações e ramificações.


Estilos de Fala

Os estilos de fala definem o tom e a abordagem utilizada pelo jogador ao interagir com um NPC. Eles influenciam o comportamento do personagem, o tipo de teste aplicado (se houver), e podem afetar relacionamento, reações ou caminhos desbloqueados no diálogo.

O estilo neutro é considerado padrão e não precisa ser explicitado, a menos que haja múltiplas variações estilizadas para a mesma fala.

A seguir, listamos os estilos mais comuns com exemplos utilizando a mesma fala-base: "Você viu algo incomum na floresta?".

  • neutro – Abordagem direta, sem conotação emocional evidente. Ideal para iniciar uma conversa ou fazer perguntas simples.
 Exemplo: Você viu algo incomum na floresta?  
 Implicações: o NPC responde de forma padrão, sem variação emocional ou mecânica. Normalmente não exige teste.
  • persuasivo – Tenta convencer o NPC com empatia ou lógica. Útil para ganhar confiança ou obter informações.
 Exemplo: Por favor, se souber de algo, me diga. É importante.  
 Implicações: Pode exigir teste de persuasão. Sucesso gera confiança. Falha pode criar resistência.
  • agressivo – Tom ríspido ou ameaçador. Ideal para pressionar, mas arriscado.
 Exemplo: Você vai me contar agora, ou vou ter que insistir de outro jeito.  
 Implicações: Pode exigir intimidação. Sucesso gera medo e respostas forçadas. Falha causa hostilidade.
  • mentiroso – Usa falsidade ou manipulação para enganar o NPC.
 Exemplo: Eu sei que outro guarda já me contou tudo. Só quero confirmar com você.  
 Implicações: Pode exigir teste de enganar. Sucesso engana. Falha reduz a confiança.
  • direto – Sem rodeios, objetivo. Funciona bem com NPCs práticos, mas pode soar rude.
 Exemplo: Corte a enrolação. Você viu algo estranho ou não?  
 Implicações: Abre caminhos curtos, mas pode interromper diálogos ou causar reações negativas.
  • intimidador – Pressão psicológica ou social, mais sutil que o agressivo.
 Exemplo: Você sabe que esconder algo pode custar caro... muito caro.  
 Implicações: Similar ao agressivo, mas focado no medo interno. Pode fechar o NPC se falhar.
  • amistoso – Gentileza e empatia. Ideal para NPCs vulneráveis ou sensíveis.
 Exemplo: Desculpe incomodar, mas qualquer coisa que você puder me contar já ajuda muito.  
 Implicações: Raramente exige teste. Pode desbloquear falas exclusivas e melhorar relacionamentos.
  • irônico – Humor sarcástico ou zombeteiro. Pode quebrar o gelo ou ofender.
 Exemplo: Claro, porque névoas e olhos brilhantes são normais por aqui, né?  
 Implicações: Pode gerar empatia com NPCs irreverentes ou reações negativas com personagens sérios.


A escolha do estilo deve refletir tanto a personalidade do jogador quanto a leitura da situação e do NPC. Alternar entre estilos de forma inteligente pode abrir caminhos únicos no diálogo e enriquecer a experiência narrativa.


Testes de Fala

Algumas falas exigem testes de atributos para definir se o jogador será bem-sucedido. Os testes são definidos por:

  • Atributo testado: (ex: persuasão, intuição, enganar, percepção, carisma)
  • Dificuldade: valor-alvo a ser igualado ou superado

O estilo e o teste são conceitos diferentes:

  • O estilo define a forma da abordagem.
  • O teste define se será necessário um sucesso num teste para desbloquear a resposta positiva.


Exemplo: uma fala persuasiva pode conter um teste de persuasão, enquanto uma fala mentirosa pode conter um teste de enganar.


Comandos da Fala

Os comandos da fala são efeitos executados após a resposta do NPC. Eles permitem que o diálogo influencie o mundo de jogo, registre descobertas, altere relacionamentos ou desencadeie eventos narrativos.


Esses comandos devem ser escritos entre colchetes com seus parâmetros separados por ';'. Para indicar múltiplos comandos eles são separados por vírgulas. Exemplo:

[Nome do Comando; Argumento 1; Argumento 2; ...], [Nome do Comando; Argumento 1; Argumento 2; ...], ...

Vários comandos podem ser aplicados a uma única resposta, separados por vírgulas:

[Inserir Marcador; DESCOBRIU_SOBRE_ORB], [Mudar Relacionamento; 1]

Abaixo estão os comandos atualmente disponíveis e sua função:

  • [Inserir Marcador; NOME_DO_MARCADOR]
 Insere um marcador interno no sistema de jogo para registrar que determinada informação foi adquirida ou evento ocorreu.  
 Exemplo:  
[Inserir Marcador; VIU_MAPA_SECRETO]
  • [Adicionar Entrada ao Diário; TEXTO_DA_ENTRADA]
 Adiciona uma nova entrada ao Diário do Jogador, visível para consulta futura.  
 Exemplo:  
[Adicionar Entrada ao Diário; O velho mencionou um local escondido sob as ruínas do norte.]
  • [Entregar Item; ID_DO_ITEM]
 O NPC entrega um item ao jogador, geralmente como consequência de uma fala bem-sucedida ou como parte de uma negociação.  
 Exemplo:  
[Entregar Item; CHAVE_ANTIGA]
  • [Mudar Relacionamento; VALOR]
 Modifica o nível de relacionamento entre o jogador e o NPC.  
 * Valores positivos (ex: `1`, `2`) melhoram a relação.  
 * Valores negativos (ex: `-1`, `-3`) deterioram a relação.  
 * Um valor de `5` representa confiança máxima; `-5` pode representar hostilidade.  
 Exemplo:  
[Mudar Relacionamento; -2]
  • [Teleportar jogador; ID_DO_DESTINO]
 Move o jogador instantaneamente para outro local. Pode representar uma expulsão, um transporte ou um efeito mágico.  
 Exemplo:  
[Teleportar jogador; TEMPLO_ANTIGO_ENTRADA]

Esses comandos são processados automaticamente após a fala correspondente. Em falas com testes, os comandos são separados para os casos de sucesso e falha, permitindo efeitos distintos dependendo do resultado.


Predefinições de Estrutura de Fala

FalaSimples

Usada para falas com apenas uma resposta sem teste nem variações.

{{FalaSimples
 |id=1
 |fala=Você já viu algo estranho por aqui?
 |resposta=Depende... você está preparado para ouvir a verdade?
 |comandos=[Mudar Relacionamento; 1]
 |subfalas==
  {{FalaSimples
   |id=2
   |fala=Sim, estou pronto.
   |resposta=Então escute bem...
  }}
}}

FalaComTeste

Utilizada quando a fala exige um teste, com resposta diferente para sucesso e falha.

{{FalaComTeste
 |id=3
 |fala=Você poderia me contar o que sabe?
 |estilo=persuasivo
 |teste=persuasão
 |dificuldade=13
 |resposta_sucesso=Tá bom... vou confiar em você.
 |comandos_sucesso=[Inserir Marcador; RECEBEU_INFORMACAO]
 |subfalas_sucesso==
  {{FalaSimples
   |id=4
   |fala=Obrigado, isso é importante.
   |resposta=Só tome cuidado com quem mais você conta isso.
  }}
 |resposta_falha=Não tenho nada pra te dizer.
 |comandos_falha=[Mudar Relacionamento; -1]
}}

FalaComVariacoes

Usada quando há mais de uma forma de dizer a mesma fala, com estilos e testes diferentes.

{{FalaComVariacoes
 |id=5
 |fala=Comento que senti algo estranho na floresta.
 |variacoes==
  {{VariaçãoComTeste
   |id=6
   |estilo=intuição
   |teste=intuição
   |dificuldade=12
   |resposta_sucesso=Você também sentiu isso, hein?
   |comandos_sucesso=[Inserir Marcador; SENTIU_ALGO]
   |subfalas_sucesso==
    {{FalaSimples
     |id=7
     |fala=Acha que foi real?
     |resposta=Mais real do que gostaria...
    }}
   |resposta_falha=Parece mais imaginação sua.
   |comandos_falha=[Mudar Relacionamento; -1]
  }}

  {{VariaçãoSimples
   |id=8
   |estilo=direto
   |resposta=Você vai direto ao ponto... mas cuidado, esse tipo de fala assusta as pessoas.
   |comandos=[Mudar Relacionamento; 1]
  }}
 }}


VariaçãoSimples

Utilizada dentro de uma FalaComVariacoes quando há uma variação de fala sem teste. Deve sempre conter um estilo (mesmo que seja "neutro", caso haja outras variações com estilos diferentes).

{{VariaçãoSimples
 |id=9
 |estilo=direto
 |resposta=Você é do tipo que vai direto ao ponto, hein? Gosto disso.
 |comandos=[Mudar Relacionamento; 1]
}}

VariaçãoComTeste

Utilizada dentro de uma FalaComVariacoes quando uma variação exige um teste. Deve conter obrigatoriamente os blocos de sucesso e falha completos.

{{VariaçãoComTeste
 |id=10
 |estilo=persuasivo
 |teste=persuasão
 |dificuldade=14
 |resposta_sucesso=Tudo bem... você me convenceu.
 |comandos_sucesso=[Inserir Marcador; CONVENCEU_PERSONAGEM]
 |subfalas_sucesso==
  {{FalaSimples
   |id=11
   |fala=O que mais pode me contar?
   |resposta=Não muito... apenas tome cuidado.
  }}
 |resposta_falha=Nem tente. Já falei que não confio em você.
 |comandos_falha=[Mudar Relacionamento; -2]
}}


Legenda dos Ícones

Abaixo está a legenda visual utilizada nos blocos de fala para facilitar a leitura dos diálogos e diferenciar os tipos de resposta:

Ícone Sugerido Significado
🗨️ Fala do jogador
💬 Resposta do NPC
Resposta em caso de sucesso no teste
Resposta em caso de falha no teste
⚙️ Comandos ativados após a resposta

Nota sobre o campo 'id'

Todos os blocos de fala e variações devem conter um campo obrigatório chamado id. Esse campo é utilizado para fins de identificação, rastreamento e manipulação automatizada do conteúdo de cada bloco de fala.

O valor do campo `id` deve ser:

  • Numérico e incremental
  • Único dentro de cada Diálogo (não deve se repetir dentro da mesma seção de diálogo)
  • Não é exibido ao jogador e não tem efeito direto na interface ou narrativa, mas é essencial para organização interna

A presença do campo `id` facilita:

  • Depuração e manutenção do conteúdo
  • Geração e revisão de falas por ferramentas automatizadas ou IA
  • Criação de sistemas de rastreamento de falas específicas
  • Referência cruzada durante testes e ajustes

Embora o campo `id` não tenha função mecânica no jogo, ele é indispensável na estrutura da documentação para garantir consistência, rastreabilidade e clareza em ambientes colaborativos.

Regras de Uso das Predefinições

  1. Estilo "neutro" não precisa ser declarado.
  2. Comandos devem estar entre colchetes e separados por vírgulas: `[Comando; Arg1], [OutroComando; Arg2]`.
  3. Predefinições aninhadas devem ser indentadas no código com dois espaços para legibilidade.
  4. `FalaComVariacoes` só pode conter `VariaçãoSimples` e `VariaçãoComTeste`.
  5. Se houver apenas uma forma de falar, usar `FalaSimples` ou `FalaComTeste`, não `FalaComVariacoes`.
  6. Todos os blocos com testes devem ter sucesso e falha definidos.
  7. Todos os blocos devem ter campo `id` único.
  8. Todo diálogo deve estar contido em uma seção de nível 1 com o título iniciando por Diálogo:.


Diálogos são restritos para aparecerem apenas quando certas condições forem atendidas, permitindo controle contextual e narrativo sobre o que está disponível ao jogador em determinado momento do jogo.

Essas condições são escritas no formato de expressões booleanas simples, similares à linguagem de programação, utilizando funções e operadores lógicos. O objetivo é oferecer uma forma legível, poderosa e extensível de controlar a ativação de blocos de diálogo.


Como declarar uma condição de ativação

Uma condição deve ser colocada logo no início do bloco de diálogo, utilizando a seguinte anotação:

== Diálogo: Guardião da Trilha ==
@condição: hasModifier("OUVIU_SOBRE_TRILHA") AND !hasModifier("TRILHA_INVESTIGADA")

Essa condição significa que o diálogo só estará disponível se o jogador tiver o modificador OUVIU_SOBRE_TRILHA e ainda não tiver o modificador TRILHA_INVESTIGADA.


Sintaxe de Condições

As expressões devem utilizar os seguintes operadores lógicos:

  • AND: e
  • OR: ou - no sentido de qualquer uma das condições
  • XOR: ou exclusivo - no sentido de 'ou uma ou outra, não as duas'
  • !: negação (NOT) - inverte o true para false e vice-versa. Ou leia-se apenas "não [condição da função]"

As funções retornam valores booleanos e podem ser combinadas livremente com os operadores acima.


Funções Disponíveis

As funções abaixo podem ser utilizadas nas expressões booleanas para definir as condições de ativação dos diálogos. Todas retornam valores booleanos e podem ser combinadas com operadores lógicos.

Função Descrição e Parâmetros
hasAllModifiers
  • modificador1, modificador2, ...: Identificadores dos modificadores a serem verificados.
  • Retorna: true se o jogador possuir todos os modificadores listados.
hasAnyModifier
  • modificador1, modificador2, ...: Identificadores dos modificadores a serem verificados.
  • Retorna: true se o jogador possuir pelo menos um dos modificadores listados.
hasItem
  • idDoItem: Identificador do item a ser verificado na ficha do jogador.
  • Retorna: true se o jogador possuir o item.
hasModifier
  • idDoModificador: Identificador do modificador a ser verificado.
  • Retorna: true se o jogador possuir o modificador.
isNPCListening
  • nomeDoNPC: Nome do NPC que deve estar presente e ouvindo o jogador.
  • Retorna: true se o NPC estiver no ambiente e ouvindo.
isRaining
  • (sem parâmetros)
  • Retorna: true se o clima atual do ambiente for de chuva.
isUnderRain
  • (sem parâmetros)
  • Retorna: true se o jogador estiver fisicamente exposto à chuva (sem cobertura).

Exemplos de Condição

@condição: hasModifier("OUVIU_GRITO") && isUnderRain()
@condição: hasAnyModifier("VIU_SANGUE", "ACHOU_COLAR") && isNPCListening("Caçador")
@condição: !hasModifier("TESTEMUNHA_SILENCIADA") && hasItem("CHAVE_DO_PORTAO")


Condições Obrigatórias

Além das expressões booleanas livres definidas pelo autor do diálogo, existem algumas condições que devem ser obrigatoriamente verificadas em qualquer bloco de diálogo, garantindo coerência narrativa e integridade lógica do jogo.

NPC deve estar ouvindo

Todo diálogo é iniciado com um personagem não-jogador (NPC) e, portanto, só deve estar disponível se o NPC estiver presente no ambiente e em posição de ouvir o jogador. Para isso, toda condição de ativação de diálogo deve conter a verificação:

isNPCListening("NOME_DO_NPC")

Substitua NOME_DO_NPC pelo nome do personagem correspondente. Essa função garante que o NPC esteja fisicamente presente no ambiente e que esteja atento ao jogador — excluindo situações em que o NPC esteja morto, inconsciente, ausente ou em fuga.

Exemplo válido de condição de diálogo:

@condição: isNPCListening("Lenhador") && hasModifier("OUVIU_SOBRE_FANTASMAS")

A ausência dessa verificação pode causar situações incoerentes, como diálogos sendo ativados com personagens que não estão disponíveis, o que pode quebrar a imersão ou gerar erros lógicos no jogo.

Outras condições obrigatórias poderão ser adicionadas conforme a evolução das mecânicas de narrativa ou do sistema de ambientação.


Expansão da Linguagem

Novas funções poderão ser adicionadas com base nas necessidades narrativas e mecânicas do jogo. Recomenda-se manter a simplicidade, clareza e coerência no nome das funções, seguindo o padrão camelCase. Essa estrutura foi projetada para ser compreensível por roteiristas e designers narrativos, ao mesmo tempo oferecendo total controle sobre a ativação contextual dos diálogos.

Exemplos

A seguir exemplos de diálogos para referência.


Diálogo: Algo Incomum na Floresta

@condição: isNPCListening("Lenhador") && hasAnyModifier("OUVIU_SOBRE_FANTASMAS", "VIU_SOMBRA_NA_FLORESTA", "LEU_LORE_ESPIRITOS")

1 🗨 Você já viu algo incomum na floresta?

💬 Depende do que você chama de incomum. Essa floresta é cheia de segredos... =

2 🗨 Comento que senti algo me observando entre as árvores.

=

3intuição[intuição:12]

Você também sentiu isso, hein? Não é só paranoia...

⚙️ [Inserir Marcador; SENTIU_PRESENCA_SOMBRIA], [Mudar Relacionamento; 1] =

4 🗨 Acha que é um espírito ou uma fera?

💬 Espírito, fera... ou pior. Às vezes, o que te observa não tem forma.

Hah! Isso é o que dá dormir pouco ou comer cogumelo errado.

⚙️ [Mudar Relacionamento; -1] =

5 🗨 Peço que leve isso a sério. persuasivo [persuasão:14]

Tudo bem... talvez eu esteja negando algo que também temo.

⚙️ [Inserir Marcador; CONVENCEU_SOBRE_PRESENCA] =

6 🗨 Poderia me mostrar onde sentiu isso?

💬 Venha ao entardecer. Eu te mostro. Mas esteja preparado.

Não vou perder meu tempo com delírios.

⚙️ [Mudar Relacionamento; -2]

7mentiroso[enganar:15]

Você ouviu isso onde? Há um velho conto sobre o Guardião das Sombras.

⚙️ [Inserir Marcador; DESCOBRIU_LENDA_DA_SOMBRA], [Adicionar Entrada ao Diário; O velho mencionou um tal 'Guardião das Sombras', que habita a floresta.] =

8 🗨 O que você sabe sobre esse guardião?

💬 Dizem que protege algo... ou alguém. Mas odeia ser perturbado.

Mentiras não caem bem por aqui, forasteiro.

⚙️ [Mudar Relacionamento; -3] {{{subfalas_falha}}}

9direto

💬 Você é do tipo que vai direto ao ponto, hein? Gosto disso. Mas isso pode ser perigoso por aqui.

⚙️ [Mudar Relacionamento; 1]

10 🗨 E sobre os viajantes desaparecidos, você sabe de algo? persuasivo [persuasão:13]

Ouvi que sumiram perto da trilha do penhasco. Mas ninguém confirma.

⚙️ [Inserir Marcador; DESCOBRIU_TRILHA], [Mudar Relacionamento; 1] =

12 🗨 Você conhece bem essa trilha?

=

13neutro

💬 Bem demais... mas evito ela há anos.

⚙️ [Inserir Marcador; EVITA_TRILHA] =

14 🗨 Por quê?

💬 Algo mudou por lá. O som... o cheiro... até os pássaros evitam aquele caminho.

15persuasivo[intuição:12]

Tá bom... vi pegadas lá. Grandes. Demais pra serem humanas.

⚙️ [Inserir Marcador; PEGADAS_MISTERIOSAS] =

16 🗨 Você seguiu as pegadas?

💬 Por duas curvas... depois desapareciam na pedra.

Não tenho certeza... talvez tenha sido só impressão.

⚙️ [Mudar Relacionamento; -1] {{{subfalas_falha}}}

Isso não é da sua conta.

⚙️ [Mudar Relacionamento; -1] =

17 🗨 Não precisa ser rude, só quero ajudar.

=

18amistoso

💬 Desculpe... é que falar disso me incomoda. Tive um amigo que sumiu por lá.

⚙️ [Mudar Relacionamento; 1] =

19 🗨 Você pode me contar mais sobre ele?

💬 Chamava-se Arel. Era caçador... e bom demais para simplesmente desaparecer.

20direto

💬 Já disse, não vou falar disso.

⚙️ [Mudar Relacionamento; -2]