주사위 언어 목차

룰 시스템

주사위 언어

모든 문장 뒤의 수식: 주사위 표기법, 굴림이 읽을 수 있는 값, 굴림의 해석 방식, 흔한 메커니즘의 레시피.

모든 문장 아래의 하나의 작은 언어

룰 시스템의 모든 숫자는 단순한 숫자이거나 수식 작은 언어로 쓴 식이에요: 판정이 굴리는 주사위, 목표치, 트랙의 최대치, 능력치의 수정치, 티어별 적의 체력, 룰 카드의 수치. 직접 쓸 일은 거의 없어요: 문장 편집기, 작성기, Hob이 대신 써 주거든요. 고급 탭에서 언제든 전체를 볼 수 있어요.

의도적으로 작게 만들었어요. 프로그래밍 언어가 아니에요: 반복문도 없고, 주어진 값 밖에 접근할 수도 없고, 잘못 작동할 여지도 없어요. 말이 안 되는 수식은 저장할 때 거부되며, 무엇이 잘못됐는지 문장으로 알려 줘요.

고급: 각 판정의 굴림과 목표치, 각 트랙의 최댓값, 각 파생 값의 수식
Studio › 규칙 › 고급: 모든 문장 뒤에 있는 수식들이 각각 별도 필드에 담겨 있어요. 시스템이 보유한 나머지 데이터도 여기서 편집할 수 있어요.
에디터 하단: 저장하지 않은 변경 사항, 문제 하나를 문장으로 표시
잘못된 수식은 입력하는 즉시 잡아서 말로 설명해 주고, 저장할 수 없어요.

주사위

쓰기뜻예시
d2020면체 주사위 하나13
3d66면체 주사위 세 개, 합산4 + 2 + 6 = 12
2d20kh1d20 두 개, 높은 것 하나만 (어드밴티지)(7, 16) → 16
2d20kl1낮은 것 하나만 (디스어드밴티지)(19, 7) → 7
4d6kh3d6 네 개, 좋은 세 개만(5, 2, 6, 3) → 14
(@stat)d6값이 가리키는 만큼의 주사위Prowl 3 → 3d6
d(@dexterity)값이 가리키는 크기의 주사위, 능력치가 주사위인 게임용Dexterity 10 → d10
6d10>=66 이상 주사위 세기: 값은 그 개수(2, 6, 9, 10, 1, 7) → 4
3d6!폭발: 최고 면이 나오면 주사위 하나 더(6, 2, 4) + 5 → 17
4dFFate 주사위: 각각 −1, 0 또는 +1(+, 0, −, +) → +1
d100백분위 주사위; d% 와 같아요47
d100t(1)보너스 10자리 주사위가 있는 백분위(더 좋은 10자리 채택); t(-1)은 페널티 주사위(4 or 7, 3) → 43
d12[Hope]이름 있는 주사위: 이름과 함께 표시되고 룰 카드가 읽을 수 있어요Hope d12 (9)

모든 면은 굴림 기록에 남아서, 주사위 트레이가 다시 보여 주고 굴림 칩에 표시할 수 있어요. 모든 주사위는 시드에서 굴려요: 같은 턴에서 같은 굴림을 다시 하면 같은 면이 나와요.

수와 논리

산술
+ - * / 와 괄호: floor((@str - 10) / 2)
비교
> >= < <= == !=, 1 또는 0이 나와요: @hp < 5
논리
and, or, not: @cond.blessed > 0 and @nerve >= 3
선택
if … then … else …: if @level >= 5 then 2 else 1. 선택된 분기만 계산되므로, 그 분기의 주사위만 굴러가요.
함수
floor ceil round abs min max clamp: clamp(@edge + @cond.edge, -1, 1)

수식이 읽을 수 있는 값

쓰기무엇인가어디서
@str능력치의 값 (id로)어디서든
@str.mod능력치의 수정치: 없으면 그 값어디서든
@stat굴리는 능력치; @stat.mod 그 수정치판정의 굴림과 목표치
@hp트랙의 현재 값; @hp.max 그 최대치어디서든
@proficiency파생 값 (id로)어디서든
@level캐릭터의 레벨; @xp 그 능력의 xp. 다음의 레벨에 따라 커져요 로 설정된 능력에서, 클래스의 사용 횟수, 비용, 효과, 수정치는 그 능력을 지니고 있는 동안 @level 그 클래스에서의 레벨로 읽혀요어디서든
@class.hit_die그 클래스가 값에 대해 정한 내용 (정하지 않으면 룰 시스템의 기본값을 그 클래스 기준으로 계산; 없으면 0). 여러 클래스를 지니면 시스템 설정에 따라 각 클래스의 값을 더하거나, 합산 값, 최댓값, 첫 클래스의 값으로 읽혀요어디서든
@classlevel.wizard클래스에서의 레벨 (id로), 보유하지 않으면 0어디서든
@classlevel이 클래스에서의 레벨: 2 * @classlevel 레벨마다 커져요클래스 고유 값, 그리고 시스템의 클래스 기본값
@classfirst첫 클래스면 1, 다른 클래스면 0: 첫 클래스만 받는 것클래스 고유 값, 그리고 시스템의 클래스 기본값
@own.hit_die다른 이름의 이 클래스 고유 값 (히트 다이). @class.hit_die 는 합산된 값으로 읽혀요클래스 고유 값, 그리고 시스템의 클래스 기본값
@classes지닌 클래스의 수; @mastered 상한에 도달한 클래스의 수어디서든
@rank이 능력의 순위: 처음 얻으면 1, 다시 얻을 때마다 1씩 증가능력 고유의 소모, 효과, 사용 횟수, 수정치
@rank.toughened능력의 순위 (id로), 모르면 0어디서든
@difficulty이야기꾼이 라벨로 고른 단어 뒤의 숫자 (Hard → 20). 모든 라벨은 id로 읽을 수 있어요: @edge, @position.판정의 굴림과 목표치
@spend_push굴리기 전에 플레이어가 그 소모를 지불했으면 1, 아니면 0판정의 굴림
@cond.edge시트의 상태들이 합산된 edge 값; @cond.mod 보너스 또는 페널티로판정의 굴림
@cond.poisoned상태의 단계 (없으면 0); @cond.poisoned.left 남은 틱어디서든
@opp.insight.mod굴림이 대상을 향할 때 상대의 능력치 또는 수정치; @opp.tier 그 티어판정의 대항 목표치
@defence방어자의 방어공격 판정
@second타격이 능력치 옆에서 읽는 값으로, 룰 시스템이나 무기가 붙인 이름 (모든 공격이 읽는 값, 이 공격이 읽는 값): 두 능력치 굴림의 두 번째 주사위, 또는 다른 이름 (@accuracy, @weapon_die)공격 판정과 피해
@tier적의 티어, 1부터 6적 템플릿
@this능력치 그 자체; @linked 그 능력치가 의존하는 능력치능력치의 수정치
@group.Hope.high이름 붙은 주사위의 최고 면; 또한 .tops (상위 면), .ones, .successes, .value굴림 뒤의 결과와 룰 카드
@total굴림의 합계; 또한 @target, @margin (합계 − 목표치), @measure굴림 뒤의 결과와 룰 카드
@event.amount카드를 발동시킨 공격의 피해피해 카드
@roll.high타격을 먹힌 공격 굴림의 최고 주사위; @roll.low 그 최저; @group.First.value 이름 붙은 주사위. @roll.high + 5 는 High Roll이며, 자체 주사위는 없어요피해 (무기, 능력, 적, 플레이어의 것)
@thing.ship.hull캐릭터의 그 종류 첫 번째 것의 값어디서든

굴림을 읽는 방법

판정은 굴림과 그 해석 방식을 가져요. 해석은 주사위를 결과 구간의 척도로 바꿔요:

읽기측정옵션
목표치와 총합 비교성공도: −1 주사위 실패, 0 실패, 1 성공, 2 대성공steps: 목표치를 이만큼 넘으면 대성공, 이만큼 못 미치면 주사위 실패 (PF2e: 10). naturals: 첫 주사위의 최고 또는 최저 면이 성공도를 정하거나 한 단계 바꿔요.
총합을 구간으로총합 그 자체범위별 구간: 10+, 7-9, 6- (PbtA).
이하 굴림등급: −1 주사위 실패, 0 실패, 1 성공, 2 어려움, 3 극한grades (목표치의 분수), 대성공으로 치는 것(1, 목표치와 정확히 같은 값, 더블), 주사위 실패 기준, 항상 성공·실패하는 면, 등급 대신 성공 단계, 또는 굴림 자체의 10자리 주사위(이하이지만 높을수록 좋음).
최고 주사위가장 좋은 면; 최고 면이 여러 개면 하나 더 높게Forged in the Dark.
성공 세기개수같은 면의 짝을 추가 성공과 대성공으로 (d10 풀에서 10자리).

해석 위에 추가로, 판정은 이름 붙은 두 주사위를 비교할 수 있어요 (Hope 대 Fear): 더 높게 나온 쪽이 결과에 단어를 더하고 자체 효과를 발휘해요; 같은 주사위는 치명타가 될 수 있고(6 이상의 더블처럼 특정 면 이상에서만 가능하게 할 수도 있어요), 낮은 같은 주사위는 실패(fumble, 1의 더블)가 돼요.

레시피

5판의 우위(advantage), 상태와 피로 포함

(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

Classic d20의 능력치 판정: 불리와 우위는 몇 개가 겹쳐도 한 번씩만 적용돼요.

주사위 하나를 위해 자신을 몰아붙이기

if @stat + @spend_push <= 0 then 2d6kl1 else (@stat + @spend_push)d6

Forged in the Dark: 0 도트는 두 개를 굴려 낮은 쪽을 쓰고, “push” 소비(2 스트레스)를 지불하면 주사위가 하나 더해져요.

Hope, Fear, 그리고 Hope을 소비하면 d6

d12[Hope] + d12[Fear] + @stat + (if @spend_hope > 0 then d6 else 0)

두 능력치 주사위: 능력치가 주사위예요

d(@stat)[First] + d(if @second_stat == 1 then @dexterity else @insight)[Second] + @cond.mod
read:  total against @difficulty; matching dice of 6 or more are a critical, double 1s a fumble

attack: d(@stat)[First] + d(@second)[Second]     reads: { "second": "@might" }

컴포저의 두 능력치 주사위 엔진: 각 능력치는 주사위 크기(d6부터 d12)이고, 두 번째 주사위는 판정자가 고른 능력치 단어가 가리킵니다. 주사위로 표시된 능력치는 항상 실제 주사위로 읽혀요: 장비의 +1은 d8을 그대로 d8로 두고, +2는 d10으로 만들죠. 능력치를 단계만큼 움직이는 상태는 이미 @stat에 반영돼요: Dazed 상태는 Insight가 한 단계 내려가 d10 Insight로 굴리죠 d8. 자세한 내용은 능력치를 움직이는 상태. 공격의 두 번째 주사위는 @second이며, 모든 공격은 이를 전투 능력치로 읽어요. reads가 { "second": "willpower" } 인 지팡이는 WLP + WLP로 굴립니다. 자세한 내용은 이 공격이 읽는 값.

클래스에 따라 커지는 수치

"values": { "caster": "@classlevel", "kit": "2 * @classlevel", "hp": "5" }

여러 클래스 아래에 있는 클래스 고유 값: 캐스터 레벨, 클래스 레벨당 2 킷 포인트, 그리고 그냥 보유만으로 +5 히트 포인트. 클래스별로 합산되어, 위저드 2 / 클레릭 3의 캐스터 레벨은 5가 돼요. 숙련을 조건으로 하는 영웅적 능력은 이렇게 읽어요 @classlevel.sentinel >= 10 or @mastered >= 1. 자세한 내용은 클래스에 걸친 수치.

각 클래스의 주사위별 히트 포인트

"hit_points": "@classfirst * (floor(@own.hit_die / 2) - 1) + @classlevel * (floor(@own.hit_die / 2) + 1)"

Classic d20의 클래스 기본값, 보유한 각 클래스마다 한 번씩 계산: 첫 클래스는 첫 레벨에 주사위 전체, 이후 레벨마다 주사위 평균, 나중 클래스는 첫 레벨부터 평균. 파이터 1 / 위저드 1은 10 + 4를 받아요. 자세한 내용은 클래스별로 계산되는 기본값.

보너스·페널티 주사위가 있는 백분위

d100t(@edge)                       read: roll under, target @stat.mod * @difficulty

헝거 풀: 일부 주사위는 위험해요

(@stat - @hunger)d10>=6 + (@hunger)d10[Hunger]>=6

두 그룹의 성공을 합산하고, 그다음 룰 카드가 이렇게 읽어요 @group.Hunger.ones — 헝거 주사위에서 나온 1이 실패를 더 나쁜 결과로 바꾸게요.

10 단위의 성공도

roll:  d20 + @stat.mod
read:  total against @difficulty, steps 10, naturals 20 / 1 shift the degree

대항 거짓말

opposed: { "deception": "10 + @opp.insight.mod" }

자리에 있는 상대에게 하는 거짓말은 난이도 대신 상대의 수동 Insight로 굴려요.