Guia de Expressões Avançadas para o Sandbox
- Mestre Digital
- 3 de jan. de 2021
- 5 min de leitura
Atualizado: 17 de fev. de 2021
Versão 0.15
Você pode adicionar um nível considerável de automação ao seu sistema do Sandbox usando as expressões avançadas. Se não conhece o Sandbox, veja esse link.
Essa expressões escalam de algum muito simples como 1d20+3 para sofisticação encontrada em linguagens de programação.
Índice
Introdução aos Campos de Rolagem
Para tornar uma propriedade rolavel você precisa marcar o campo Rollable nas propriedades suportadas. Os itens ativam esse campo quando colocados em Ativação e Consumível.

Rollname: é um nome que aparece no chat após a rolagem ser feita.
Roll ID: deve seguir a mesma lógica das chaves. Sem espaços, sem acentos, sem caracteres especiais.
Roll Formula: local onde coloca sua fórmula.
Você deve colocar um nome para a rolagem, um ID e na fórmula deve colocar alguma expressão que deseje. Por exemplo, 1d20+3. Na ficha quando o local for clicado a rolagem será realizada.
Você pode criar as mais diversas expressões usando a lista abaixo.
Lista de Expressões
Arredondar para cima: ceil()
Se o resultado de uma rolagem não for um número inteiro, como 2.5, você pode usar a expressão ceil(2.5) para arredondar para o maior inteiro.
ceil(2.5) = 3
Arredondar para baixo: floor()
Se o resultado de uma rolagem não for um número inteiro, como 2.5, você pode usar a expressão floor(2.5) para arredondar para o menor inteiro.
floor(2.5) = 2
Máxima Rolagem
maxdie() retorna a rolagem máxima.
maxdie(1d20) = 20
Chave da Ficha
@{destreza} Chama uma chave que está na ficha de personagem.
1d6+@{destreza} = 1d6 + valor que está no atributo destreza da ficha
Chave de Item
Você pode chamar propriedades que estão em um item. Mas, apenas se está chamando a propriedade de item do próprio item. Exemplo: uma espada tem a propriedade dano. Você consegue ler o valor de dano dentro de uma expressão de rolagem que esteja dentro do próprio item espada.
1d8+#{dano}
Condição
Você pode realizar comparações de valor nas expressões. Por exemplo, se a caixa de Desvantagem estiver marcada, faça a rolagem com desvantagem.
Modelo
if[EXPRESSÃO:true,VERDADEIRO,FALSO]
Exemplos
if[@{destreza}==10:true,1d6,2d6] # Se a propriedade destreza for exatamente 10, volta 1d6. Se for diferente de 10 volta 2d6.
if[@{destreza}>10:true,2d6,1d6] # Se a propriedade destreza for maior que 10, volta 2d6. Se for 10 ou menos, volta 2d6.
Operadores para Comparação: ==, >, <
Condição Avançada
Você pode adicionar complexidade a condição de várias formas. Abaixo estão as possiblidades.
OU
Se a expressão 1 OU a expressão 2 forem verdadeiras resulta em verdadeiro.
if[EXPRESSÃO1:true OR EXPRESSÃO2:true,VERDADEIRO,FALSO]
E
Se a expressão 1 E a expressão 2 forem verdadeiras resulta em verdadeiro.
if[EXPRESSÃO1:true AND EXPRESSÃO2:true,VERDADEIRO,FALSO]
Aninhado
Você pode colocar no lugar de um resultado outra condição.
if[EXPRESSÃO1:true,VERDADEIRO,
if[EXPRESSÃO2:true,VERDADEIRO,FALSO]
]
Expressão de Tabela
Imagine que você deseja que o valor retornado seja de acordo com um atributo. Por exemplo: O atributo Força retorna valores conforme a tabela abaixo:
Você pode fazer isso usando o modelo abaixo.
Modelo
%[Expressão,0:Valor Mínimo,Valor1:Retorno1,ValorN:RetornoN]
Exemplo
%[@{forca},0:0,1:0,5:1,10:2,15:3]
Acessar Atributo Dinamicamente
Imagine que você tem um item que pode selecionar nele o atributo que vai usar para fazer a rolagem. Você gostaria que a rolagem fosse feita usando essa propriedade que escolheu.
Se você selecionou no item Força, quando fizer a rolagem usando 1d6+#{tipodeataque} vai obter um erro, pois o tipo de ataque será um texto. Você precisa dizer para o sistema pesquisar o valor que foi selecionado antes.
Para isso precisa poder acessar a propriedade dinamicamente. Existem duas formas de fazer isso.
Modelo
@{#{propriedade do item}}
__#{propriedade do item}__
Exemplo
@{#{tipoataque}}
__#{tipoataque}__
Você pode acessar uma propriedade de item dinamicamente também de forma similar.
Modelo
--#{propriedade do item}--
Exemplo
--#{tipoataque}--
Retornando Texto
Em alguns casos você vai desejar que o retorno de sua expressão seja um texto. Você pode fazer isso de forma simples.
Modelo
|Expressão
Exemplo
A expressão abaixo vai retornar 1d6 no lugar de rolar 1d6 e voltar o resultado da rolagem.
|1d6
Adicionando Mensagem com Base na Rolagem
Você pode ver qual foi o resultado da rolagem e aplicar uma mensagem ao resultado no chat com base nela.
Modelo
Rolagem &&total;1:FALHOU,3:SUCESSO&&
Exemplo
O exemplo abaixo vai retornar as mensagens conforme a tabela acima.
2d6+2 &&total;0:FALHA;7:SUCESSO PARCIAL;10:SUCESSO!&&
Você pode combinar isso com a expressão #{diff} de forma a tornar a fazer a avaliação da rolagem levar em conta a dificuldade definida pelo sistema.
Exemplo
2d6+2 &&total;0:FALHA;#{diff}:SUCESSO&&
Expressões de Item
Um item tem acesso a algumas expressões especiais.
Essa expressão retorna o nome do item. Colocando no campo Roll Name, por exemplo, você tem o nome do item na rolagem.
#{name}
Retorna a última rolagem realizada pelo próprio item consumível.
#{roll}
Retorna quantos unidades você tem
#{num}
Expressões Globais
Você pode acessar o valor que definiu em dificuldade usando #{diff}.
Exemplo
O 1d20 terá a dificuldade subtraída dele.
1d20-#{diff}
Comparar/Modificar Propriedade de Alvo
Você pode fazer uma comparação contra uma propriedade que está em outro ator marcando o mesmo na hora da rolagem. Exemplo: você quer fazer uma rolagem de ataque e comprar contra a armadura do alvo.
Modelo
#{target|propriedade_do_alvo}:
Exemplo
É rolado 1d20 e somado a destreza do atacante, então o valor rolado é comparado com a propriedade armadura do alvo.
1d20 + @{destreza} &&total;0:FALHA;#{target|armadura}:ACERTOU!&&
(ALERTA - NÃO TESTADO) Você pode também alterar o valor de uma propriedade de um alvo marcado.
Modelo
Funciona apenas com alvo marcado. Vai adicionar o valor a propriedade do alvo marcado.
add(propriedade;valor)
Exemplo
roll(Dano;2;10;false) sum(?[Dano]) add(Vida;-sum(?[Dano]))
Rolagem Separada de Dado
Se você realizar 1d20+1d6 a rolagem é feita junta e somada. Talvez você queira que seja rolado dados adicionais que não são somados na rolagem. É possível obter esse resultado com a expressão abaixo.
Modelo
roll(Nome;dados;lados;explode?)
Exemplo 1
Rola 1d20 e então soma com a rolagem de 1d6
roll(Fúria;1;6;false) 1d20+?[Fúria]
Exemplo 2
Rola 1d20 rola 1d6. Mostra os valores separados
1d20 roll(Fúria;1;6;false)
Exemplo 3
Soma o total rolado ao 1d20. Se colocar true, mostra as rolagens separadas.
roll(Fúria;1;6;add) 1d20+?[Fúria]
Nome: nome da rolagem
Dados: quantos dados
Lados: lados do dado rolado
Explode?: tem três opções:
false: apenas rola o dado normal
true: se o dado rolar o valor máximo (em 1d6 seria 6) mais um dado é rolado e a rolagens são mostradas separadamente.
add: se o dado rolar o valor máximo (em 1d6 seria 6) mais um dado é rolado e a rolagens são somadas.
Indexadores
Você pode aumentar as as possibilidades declarando expressões e utilizando seus resultados na expressão final.
Modelo
$<indice;expressão> $1
Exemplo
$<1;@{ATK}> $<2;1d6> 1d20+$1+$2
O resultado da expressão acima é:
1d20+@{ATK}+1d6
Você deve colocar as expressões em ordem crescente: $<1;expressão> $<2,expressão>,..., $<x;expressão>. Mudar essa order não funciona.
ID de Rolagem
É possível adicionar as formulas de rolagem vários IDs extras. Esses IDs podem ser usados para criar modificações especiais nos resultados das rolagens.
Exemplos
Você pode colocar que um Item dá +1 para as rolagens que tiverem o ID Furtividade
As rolagens que tiverem o ID Corte rolam mais dano.
Modelo
~ID_Desejado~
Exemplo
Rola 1d20 e a rolagem terá o ID 'forca'
1d20 ~forca~
Alguns IDs são reservados por terem propriedades especiais.
Reservados
~ADV~ or ~DIS~: vantagem ou desvantagem na rolagem (funciona apenas para d20)
~init~: envia o resultado da rolagem para o gerenciador de iniciativa