top of page

Guia de Expressões Avançadas para o Sandbox

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:

  1. false: apenas rola o dado normal

  2. true: se o dado rolar o valor máximo (em 1d6 seria 6) mais um dado é rolado e a rolagens são mostradas separadamente.

  3. 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



Café

  • YouTube

Voltar ao Topo

bottom of page