그러니까, 내가 처음 생각하기에는

쿼리나 속성으로 주석 기호를 분할해서 불러내는 것으로

시트의 값이나 쿼리 선택지에 따라서 매크로의 일부가 동적으로 주석 처리되어

매크로 전체의 작동 방식을 수정하는... 그런 걸 상상했는데



아무래도 그건 엄청 어려운 거 같다.


7cf3c028e2f206a26d81f6e4468777


예컨대, 이렇게 inline roll을 주석 처리한 구문을 작동시키면

[+] 전체가 주석이 되는 고로, 아예 inline roll 자체가 굴러가지 않으므로

[[20]]이 첫 번째 굴림이 되고


7ff3c028e2f206a26d81f6e446827c


그러므로 이렇게 나오는 게 정상이다.



그런데 주석 문법을 attribute로 호출하게 만들면...


7ef3c028e2f206a26d81f6e7438274


79f3c028e2f206a26d81f6ec4387


이렇게, 눈에는 보이지 않지만 [+]이 내부에서 굴러간 것으로 처리됨.


그러면 어떻게 해야 하나?



a17d2cad2f1b782a99595a48fa9f3433f728bd6f6b8abd3d6652ab


이렇게 구문 전체를 query 안에 넣으면


75f3c028e2f206a26d81f6e4468070


작동하는 것을 볼 수 있다.



내 생각에 이건 Roll20 연산 순서에서 HTML Entity들이 처리되는 시점과 밀접하게 엮여 있는 거 같다.


7ced9e36ebd518986abce8954782756d26b8


그러니까, 저 과정에서 해당 구문들을 HTML 구문으로 인식하기 때문에

주석 처리가 작동하는 것이고


그러므로 동적으로 주석 처리할 코드가 5.단계에서 쿼리의 일부로 해독되지 않으면

5b. 단계에서 [+]을 굴려라는 명령이 주석 처리가 되지 않고,


11. 단계에서나 완성된 [+] 주사위 결과값을 오브젝트를 호출하는 

$[[0]] 쪽이 주석 처리되어 버린 거 같음.



물론 이것만으로는 '왜 attribute나 ability 중간에 주석 처리를 넣어도 입력이 되나' 쪽은 설명이 안 되기 때문에...

내 생각에 주석 처리는 챗창의 입력, attribute나 ability가 처음 호출될 때도 한 번 이루어지는 거 같다.




그리고 위의 순서를 보면, inline roll에서도 HTML entity들이 치환되는 순서가 없으므로


78f3c028e2f206a26d81f6e74e8377


7bf3c028e2f206a26d81f6e7448570


이렇게 10+20=10이라고 우기는 주사위 굴림 같은 것도 만들 수 있음.




말인즉슨 이 동적인 주석 처리를 이용해서

attribute나 ability를 동적으로 호출하는 것은 불가능하고,

다른 곳에서 쓰려고 하면 query를 반드시 거쳐야 한다는 뜻인데...


이러면 거의 대부분의 경우에서, 

그냥 내가 기존에 prefix를 써서 구현하던 방식이 더 간단할 것으로 사료된다.




...결과적으로 이걸 이용해서 

기존 매크로의 구조적 한계를 좀 돌파할 수 있지 않을까 하는 기대는 접어야 되긴 했는데...




근데 반대로 자기 시트에 저거 막 집어넣어서 매크로 고장내는 

헛짓거리가 거의 불가능해진 건 또 다행 아닐까 싶기도 하다.




아무튼 다들 매크로 작성에 참고해 줬으면 좋겠음.