Macros (CBS)
Scripting de chaves dentro de qualquer texto de prompt.
Sintaxe
Macros são tokens de chaves duplas expandidos na hora da requisição. Funcionam em campos de personagem, entradas de lorebook, presets, saudações e texto comum do chat, e podem se aninhar.
{{char}} smiles at {{user}}.
{{random::sunny::rainy::foggy}}
{{calc::1+2*3}}Argumentos são separados por dois-pontos duplos. Macros desconhecidas expandem para nada em vez de dar erro, então um erro de digitação nunca quebra uma requisição.
Macros básicas
| Macro | Expande para |
|---|---|
{{char}} | O nome do personagem atual (grupos: o falante atual). |
{{user}} | O nome da sua persona. |
{{persona}} | A descrição da sua persona. |
{{description}} | O campo de descrição do personagem atual. |
{{lastmessage}} | O texto da mensagem mais recente. |
{{time}} / {{date}} | Hora / data atuais no seu idioma e fuso horário. |
Aleatoriedade
random escolhe um argumento novo a cada expansão, pick faz uma escolha estável para a conversa, e roll joga dados em notação d.
{{random::a::b::c}} {{pick::a::b::c}} {{roll::d20}}Sorteios e aleatórios têm semente por turno: regenerar reutiliza os mesmos valores, então deslizar não rejoga seus dados.
Variáveis
Variáveis de chat persistem por ramo da conversa; variáveis globais persistem em todos os chats. Defina-as em qualquer texto com macros ou em scripts de gatilho.
{{setvar::mood::happy}}
{{getvar::mood}}
{{setglobalvar::visits::1}}Armazenamento por ramo significa que deslizar para outro ramo restaura o estado de variáveis dele; ramos irmãos nunca vazam valores entre si.
Blocos
Blocos envolvem conteúdo: if só renderiza o corpo com condição verdadeira, each percorre arrays com substituição de slot, e when adiciona ramos else por linha.
{{#if {{equal::{{getvar::mood}}::happy}}}}
{{char}} is in a great mood.
{{/if}}
{{#each {{array::red::green::blue}} item}}
Color: {{slot::item}}
{{/each}}pure e escape protegem chaves literais da expansão; qualquer fechamento fecha o bloco aberto mais interno.
Comentários e literais
Macros de comentário somem antes de o modelo vê-las, ideais para anotações nos campos do cartão. Use blocos pure quando precisar mostrar sintaxe de macro literalmente.
{{// note to self, never sent to the model}}
{{#pure}}{{char}} stays literal here{{/pure}}