Roll20용 건독 매크로 제작에서 가장 골 아픈 부분은,
결국 1d100을 구한 다음 그 값의 자릿수합을 구해서 달성치를 구한다는 판정 방식 자체다.
Roll20은 무료 계정의 매크로 기능만으로는
특정 주사위 값을 저장해서 다른 함수에 집어넣거나 하는 거 자체가 불가능하거든.
그런데 Roll20의 버그성 기능들을 연구하는 작자들이
이걸 우회할 수 있는 테크닉을 개발해 놓은 게 있더라...?
간단히 말하자면 Templete 기능에는 각 주사위 값을 인덱싱할 수 있는 기능이 흔적처럼 존재하고
이걸 이용해서 할 수 있는 거라고 해 봤자 주사위 값을 출력만 하지 어디 저장할 수는 없지만,
Roll20 매크로 문법이 [가 이렇게 [[[ 이어지면 일종의 버그를 일으킨다는 점을 이용해서
이 인덱싱 숫자가 조건에 따라 바뀌도록 하여 주사위 굴림 내에 투입할 수 있는,
Roll index manipulation이라는 채신-기술이 있었다!
대체 이게 뭔 소린지 하룻밤을 새서 고민해 본 결과,
예시문의 방식을 따라해서 '굴린 주사위 값의 10의 자리 숫자'를 구하는 예문 두 가지를 제작할 수 있었다.
&{template:default} [[ $[[12]] ]] $[[$[[1]]]] [[[ [[ floor( [[ 1d100 - 1 ]] / 10 ) + 2 ]] [[[[[[[[[[ [[[[[[[[[[0]]]]]]]]]] ]]]]]]]]]] [[9]][[8]][[7]][[6]][[5]][[4]][[3]][[2]][[1]][[0]] $[[23]] [[[[[[[[[[ [[[[[[[[[[0]]]]]]]]]] ]]]]]]]]]] ]]] {{Raw Roll=$[[0]]}} {{10의 자리=$[[13]]}}
&{template:default} $[[$[[1]]]] [[[ [[ floor( [[ 1d100 - 1]] / 10 ) + 1 ]] ]]] [[[[[[[[[[ [[[[[[[[[[0]]]]]]]]]] ]]]]]]]]]] [[9]][[8]][[7]][[6]][[5]][[4]][[3]][[2]][[1]][[0]] {{Raw Roll=$[[0]]}} {{10의 자리=$[[11]]}}
둘 다 Roll20 켜고 돌려보면 잘 작동함.
자 이제 1의 자리를 구하는 방법을 찾으면 된다.
...근데 이게 진짜로 문제인 게, Roll index를 참조하기 위해 뭔 요령을 더 붙이지 않고 정직하게 하려고 하면
내가 [[9]][[8]][[7]][[6]][[5]][[4]][[3]][[2]][[1]][[0]] 식으로 값을 200개 채워넣어야 하는데
이 정도 크기의 매크로가 Roll20에서 작동할 리가 없다...
일단 좀 더 연구해보겠습니다.
실마리 정도만 겨우 잡았다는 걸로...
구체적인 원리는
https://app.roll20.net/forum/post/10693202/macro-curiosities-or-how-to-overcomplicate-everything/
참고해보셈... 이걸 응용해서 크리 뜨면 추가딜 넣는 거 같은 거 만들 수 있더라고.
그냥 매크로 만드는것도 어려운데 잡기술까지 써가면서 만드네... 나라면 포기하고 결제했다
d100=87이면 15 뭐 그런거임...? 기괴한데 - dc App
근데 10의자리 1의자리 따로 필요하면 그냥 d10 두먼 굴리면 안됨? - dc App
거기다가 스킬의 레벨까지 더해야함 ㅋㅋ
명중 여부랑 관통 여부를 한 번에 계산하기 위해서 한다는 짓인데, 의외로 건독 안에서는 꽤 괜찮게 작동함. 1. 일단 주사위 굴림을 한 번 덜 해도 된다는 게 아무래도 귀찮음이 덜하고 2. 그냥 깡능력치가 좋아서 명중률이 높은 거랑, 스킬을 투자하거나 고관통 대구경 총기를 들어서 달성치가 높은 거 사이의 차별화가 되고 3. 그러면서도 깡능력치가 좋은 것만으로도 소소하게 달성치 기대값이 올라가는 효과가 있고. 익숙해지면 '생각보다는' 편해...
이거 전에 소드월드나 아다다 타코 보고 할배들 시팔 이거 안좆같음? 했을때 나온 답중에 하난데 - dc App
그리고 저게 실제로 주사위 값을 받아오는 게 아니라, $[+] 형태로 Templete 내의 인덱싱에 접근 가능한데 $[[]] 안에다가 다른 $[[]] 형태로 수식의 결과를 넣을 수 있는 거랑, 계산 순서를 꼬아 놔서 [[[[[[0]]]]]] 같은 게 계산하다 중간에 종료되는 일종의 버그를 악용해서 각 주사위 값마다 뒤의 ...[[2]][[1]][[0]] 테이블의 실제 인덱싱이 꼬여 버리는 식으로 구현된 거라... 기초 개념만 보면 일단 각 주사위의 경우의 수마다 모두 테이블을 만드는 방법밖에는 없음;; 그래도 주사위 두 개를 써서 하면 식이 더 복잡해지는 대신 테이블을 100개만 만들 수 있을 거 같기는 한데... 좀 더 연구를 해 봐야 할 듯;;
한 번 개념 설명용으로 DnD 크리티컬 대미지 주사위 자동화하는 예제 제작과정이라도 올려볼까.
건독에 얼마나 진심인거냐...ㄷㄷ
세션때도 d100말고 2d10 굴려서 계산하지 않았나? 2d10로는 안되는거임?
위에 같은 질문에 대해 대댓으로 설명해놨어얌
와.. 정말 기대하고 있습니다! ㅠㅠㅠㅠㅠㅠㅠ