Sistemas de regras
A linguagem dos dados
As fórmulas por trás de cada frase: notação de dados, valores que uma rolagem pode ler, como uma rolagem é interpretada, com receitas para mecânicas comuns.
Uma linguagem pequena sob cada frase
Todo número em um sistema de regras é um número simples ou uma fórmula em uma linguagem pequena: os dados de uma rolagem, um alvo, o máximo de uma barra, o modificador de um atributo, a vida de um inimigo por nível, um valor em um cartão de regra. Raramente você precisa escrever um: o editor de frases, o compositor e o Hob escrevem para você. A aba Avançado mostra todos quando você quiser.
Ela é pequena de propósito. Não é uma linguagem de programação: sem laços, sem acesso a valores fora dos que recebe, nada que possa se comportar mal. Uma fórmula sem sentido é recusada ao salvar, em uma frase dizendo o que está errado.


Dados
| Escreve | Significa | Exemplo |
|---|---|---|
d20 | Um dado de vinte faces | 13 |
3d6 | Três dados de seis faces, somados | 4 + 2 + 6 = 12 |
2d20kh1 | Dois d20s, fica com o maior (vantagem) | (7, 16) → 16 |
2d20kl1 | Fica com o menor (desvantagem) | (19, 7) → 7 |
4d6kh3 | Quatro d6s, fica com os três melhores | (5, 2, 6, 3) → 14 |
(@stat)d6 | Tantos dados quanto um valor indicar | Prowl 3 → 3d6 |
d(@dexterity) | Um dado do tamanho que um valor indicar, para jogos em que um atributo é um dado | Dexterity 10 → d10 |
6d10>=6 | Conta os dados iguais ou acima de 6: o valor é a contagem | (2, 6, 9, 10, 1, 7) → 4 |
3d6! | Explodindo: a face máxima rola outro dado | (6, 2, 4) + 5 → 17 |
4dF | Dados Fate: cada um −1, 0 ou +1 | (+, 0, −, +) → +1 |
d100 | Percentil; d% é o mesmo | 47 |
d100t(1) | Percentil com um dado de dezenas de bônus (fica com as dezenas melhores); t(-1) um dado de penalidade | (4 or 7, 3) → 43 |
d12[Hope] | Um dado com nome: exibido com o nome, e legível por cartões de regra | Hope d12 (9) |
Cada face fica no registro da rolagem, para que a bandeja de dados possa reproduzi-la e o marcador da rolagem possa exibi-la. Todos os dados rolam a partir de uma semente: a mesma rolagem, repetida no mesmo turno, dá as mesmas faces.
Números e lógica
- Aritmética
+ - * /e parênteses:floor((@str - 10) / 2)- Comparações
> >= < <= == !=, resultando em 1 ou 0:@hp < 5- Lógica
e,ou,não:@cond.blessed > 0 and @nerve >= 3- Escolhas
if … then … else …:if @level >= 5 then 2 else 1. Só o ramo escolhido é calculado, então só os dados dele são rolados.- Funções
floor ceil round abs min max clamp:clamp(@edge + @cond.edge, -1, 1)
Valores que uma fórmula pode ler
| Escreve | O que é | Onde |
|---|---|---|
@str | O valor de um atributo (pelo id) | Em qualquer lugar |
@str.mod | O modificador de um atributo: o próprio valor quando não tem modificador | Em qualquer lugar |
@stat | O atributo sendo rolado; @stat.mod seu modificador | A rolagem e o alvo de um teste |
@hp | O valor atual de uma barra; @hp.max seu máximo | Em qualquer lugar |
@proficiency | Um valor derivado (pelo id) | Em qualquer lugar |
@level | O nível do personagem; @xp seu xp. Em uma habilidade definida como Escala com o nível em uma classe, seus próprios usos, custo, efeitos e modificadores leem @level como o nível da pessoa naquela classe, enquanto ela a tiver | Em qualquer lugar |
@class.hit_die | O que a classe da pessoa diz para um valor (o padrão do sistema quando não diz nada, calculado como o da própria classe; senão 0). Com várias classes, soma conforme o sistema define: somadas, a maior ou a da primeira classe | Em qualquer lugar |
@classlevel.wizard | O nível na classe (pelo id), 0 se não a tiver | Em qualquer lugar |
@classlevel | O nível da pessoa nesta classe: 2 * @classlevel cresce a cada nível nela | Os valores próprios de uma classe, e os padrões de classe do sistema |
@classfirst | 1 para a primeira classe escolhida, 0 para qualquer outra: o que só a primeira classe dá | Os valores próprios de uma classe, e os padrões de classe do sistema |
@own.hit_die | O valor próprio desta classe de outro nome (seu dado de vida), onde @class.hit_die leria o valor somado | Os valores próprios de uma classe, e os padrões de classe do sistema |
@classes | Quantas classes a pessoa tem; @mastered quantas estão no limite | Em qualquer lugar |
@rank | A patente desta habilidade: 1 quando pega pela primeira vez, um a mais a cada vez que for pega de novo | O custo, efeitos, usos e modificadores próprios de uma habilidade |
@rank.toughened | A patente de uma habilidade (pelo id), 0 se não a conhecer | Em qualquer lugar |
@difficulty | O número por trás da palavra que o narrador escolheu para um rótulo (Hard → 20). Todo rótulo é legível pelo seu id: @edge, @position. | A rolagem e o alvo de um teste |
@spend_push | 1 se o jogador pagou aquele gasto antes da rolagem, senão 0 | A rolagem de um teste |
@cond.edge | O que as condições da ficha somam como edge; @cond.mod como bônus ou penalidade | A rolagem de um teste |
@cond.poisoned | O nível de uma condição (0 quando ausente); @cond.poisoned.left seus marcadores restantes | Em qualquer lugar |
@opp.insight.mod | O atributo ou modificador do oponente, quando a rolagem mira em alguém presente; @opp.tier seu tier | Os alvos opostos de um teste |
@defence | A defesa do defensor | O teste de ataque |
@second | Um valor que o golpe lê junto ao seu atributo, pelo nome que o sistema ou a arma dá (O que todo ataque lê, O que o ataque dele lê): o segundo dado de uma rolagem de dois atributos, ou qualquer outro nome (@accuracy, @weapon_die) | O teste de ataque e o dano |
@tier | O tier do inimigo, 1 a 6 | Modelos de inimigos |
@this | O próprio atributo; @linked o atributo de que ele depende | O modificador de um atributo |
@group.Hope.high | A maior face de um dado nomeado; também .tops (faces mais altas), .ones, .successes, .value | Resultados e cartões de regra após uma rolagem |
@total | O total da rolagem; também @target, @margin (total − alvo), @measure | Resultados e cartões de regra após uma rolagem |
@event.amount | O dano do golpe que disparou o cartão | Cartões de dano |
@roll.high | O maior dado da rolagem de ataque que acertou o golpe; @roll.low o menor; @group.First.value um dado nomeado. @roll.high + 5 é uma High Roll, sem dados próprios | Dano (armas, habilidades, inimigos, o do jogador) |
@thing.ship.hull | Um valor na primeira coisa do tipo que o personagem tiver | Em qualquer lugar |
Como uma rolagem é lida
Um teste tem uma rolagem e uma forma de lê-la. A leitura transforma os dados na medida das faixas de resultado:
| Leitura | Medida | Opções |
|---|---|---|
| Total contra um alvo | Um grau: −1 falha crítica, 0 falha, 1 sucesso, 2 crítico | steps: supere o alvo por esse valor para um crítico, erre por ele para uma falha crítica (PF2e: 10). naturals: a face máxima ou mínima no primeiro dado define ou desloca o grau. |
| Total em faixas | O próprio total | Faixas por intervalo: 10+, 7-9, 6- (PbtA). |
| Rolar abaixo | Uma nota: −1 falha crítica, 0 falha, 1 sucesso, 2 difícil, 3 extremo | notas (frações do alvo), o que conta como crítico (um 1, rolar exatamente o alvo, duplicados), o que é falha crítica, faces que sempre passam ou falham, níveis de sucesso em vez de notas, ou o próprio dado de dezenas da rolagem (rolar abaixo mas alto: quanto maior, melhor). |
| Maior dado | A melhor face; várias faces máximas contam um a mais | Forged in the Dark. |
| Contar sucessos | A contagem | Pares de uma face como sucessos extras e um crítico (dezenas em uma reserva de d10). |
Além de qualquer leitura, um teste pode comparar dois dados nomeados (Hope against Fear): o dado mais alto acrescenta uma palavra ao resultado e seus próprios efeitos; dados iguais altos podem ser um crítico (ou só a partir de uma face, como pares de 6 ou mais), e dados iguais baixos uma falha crítica (pares de 1).
Receitas
Vantagem da quinta edição, com condições e exaustão
(if @edge + clamp(@cond.edge + (if @exhaustion >= 1 then -1 else 0), -1, 1) > 0 then 2d20kh1 else if @edge + clamp(@cond.edge + (if @exhaustion >= 1 then -1 else 0), -1, 1) < 0 then 2d20kl1 else d20) + @stat.mod + @cond.mod
Teste de atributo do Classic d20: qualquer número de desvantagens e vantagens conta uma vez só, em qualquer sentido.
Se esforçando por um dado extra
if @stat + @spend_push <= 0 then 2d6kl1 else (@stat + @spend_push)d6
Forged in the Dark: zero pontos rola dois e mantém o menor; pagar o gasto de “push” (2 de Estresse) adiciona um dado.
Hope, Fear, e um d6 se você gastar Hope
d12[Hope] + d12[Fear] + @stat + (if @spend_hope > 0 then d6 else 0)
Dois dados de atributo: um atributo é um dado
d(@stat)[Primeira] + d(if @second_stat == 1 then @dexterity else @insight)[Segunda] + @cond.mod
read: total contra @difficulty; dados iguais a 6 ou mais são um crítico, dois 1s uma falha crítica
attack: d(@stat)[Primeira] + d(@second)[Segunda] reads: { "second": "@might" }O compositor do dois dados de atributo engine: cada atributo é um tamanho de dado (d6 a d12), e o segundo dado é o atributo que uma palavra escolhida pelo juiz nomeia. Um atributo mostrado como dado sempre lê como um real: um +1 de equipamento deixa um d8 como d8, um +2 o torna um d10. Uma condição que move um atributo em passos já está em @stat: Atordoado, um passo abaixo em Insight, rola um d10 de Insight como d8. Veja Condições que movem um atributo. O segundo dado de um golpe é @second, que todo ataque lê como o atributo de combate; um cajado cujo reads diz { "second": "willpower" } rola WLP + WLP. Veja O que o ataque dele lê.
Um número que cresce com uma classe
"values": { "caster": "@classlevel", "kit": "2 * @classlevel", "hp": "5" }Os valores próprios de uma classe, sob várias classes: um nível de conjurador, 2 pontos de kit por nível de classe e +5 pontos de vida por tê-la. Somados entre as classes, um mago 2 / clérigo 3 tem nível de conjurador 5. Uma habilidade heroica que exige maestria lê @classlevel.sentinel >= 10 ou @mastered >= 1. Veja Números entre classes.
Pontos de vida pelo dado de cada classe
"hit_points": "@classfirst * (floor(@own.hit_die / 2) - 1) + @classlevel * (floor(@own.hit_die / 2) + 1)"
O padrão de classe do Classic d20, calculado uma vez para cada classe que a pessoa tem: o dado inteiro da primeira classe no primeiro nível, a média do dado em cada nível seguinte, e a média de uma classe posterior desde o seu primeiro nível. Um Guerreiro 1 / Mago 1 recebe 10 + 4. Veja Um padrão calculado por classe.
Percentil com dados de bônus e penalidade
d100t(@edge) read: rolar abaixo, alvo @stat.mod * @difficulty
Uma reserva de fome: alguns dados são perigosos
(@stat - @hunger)d10>=6 + (@hunger)d10[Hunger]>=6
Conte os sucessos nos dois grupos; então um cartão de regra lê @group.Hunger.ones para transformar uma falha com um 1 em um dado de Fome em algo pior.
Graus de sucesso por dez
roll: d20 + @stat.mod read: total contra @difficulty, steps 10, naturals 20 / 1 deslocam o grau
Uma mentira oposta
opposed: { "deception": "10 + @opp.insight.mod" }Uma mentira contada a alguém presente é rolada contra o Insight passivo dessa pessoa em vez de uma dificuldade.