일단 기본적인 아이디어는 다음과 같다
1. 상태창에 affinity가 숫자로 출력됨
2. 출력된 affinity 값을 aff 변수에 입력함
3. #if, greater_equal, less 등을 이용해 aff 값의 범위에 따라 디스크립션을 변경
좀 더 자세한 과정을 설명하자면 이러함
출력문 수정 정규식
IN: Affinity: (\d+)
OUT: {{setvar::aff::$1}}{{br}}Affinity: $1
/봇이 상태창에 Affinity: 23을 출력하면 23을 aff라는 변수에 입력함. 내용상/화면상 출력은 그대로임.
봇 디스크립션
Current Affinity:{{#if {{and::{{greater_equal::{{getvar::aff}}::0}}::{{less::{{getvar::aff}}::10}}}}}}(Indifference){{/if}}{{#if {{and::{{greater_equal::{{getvar::aff}}::10}}::{{less::{{getvar::aff}}::20}}}}}}(Awareness){{/if}}{{#if {{and::{{greater_equal::{{getvar::aff}}::20}}::{{less::{{getvar::aff}}::30}}}}}}(Acknowledgement){{/if}}{{#if {{and::{{greater_equal::{{getvar::aff}}::30}}::{{less::{{getvar::aff}}::40}}}}}}(Interest){{/if}} {{#if {{and::{{greater_equal::{{getvar::aff}}::40}}::{{less::{{getvar::aff}}::50}}}}}}(Appreciation){{/if}}{{#if {{and::{{greater_equal::{{getvar::aff}}::50}}::{{less::{{getvar::aff}}::60}}}}}}(Fondness){{/if}}{{#if {{and::{{greater_equal::{{getvar::aff}}::60}}::{{less::{{getvar::aff}}::70}}}}}}(Affinity){{/if}}{{#if {{and::{{greater_equal::{{getvar::aff}}::70}}::{{less::{{getvar::aff}}::80}}}}}}(Attachment){{/if}}{{#if {{and::{{greater_equal::{{getvar::aff}}::80}}::{{less::{{getvar::aff}}::90}}}}}}(Love){{/if}}{{#if {{and::{{greater_equal::{{getvar::aff}}::90}}::{{less::{{getvar::aff}}::100}}}}}}(Devotion){{/if}}{{#if {{equal::{{getvar::aff}}::100}}}}(Obsession){{/if}} |
/aff 값에 따라 디스크립션에 특정 문구를 출력함.
보기 좀 어지러운데, 사실 이 부분은 딱히 중요한 건 아니고 뭘 하려는지만 알면 된다. 대충 설명하자면
{{#if /만약에 {{and:: {{greater_equal::{{getvar::aff}}::0}} /aff 변수값이 0보다 크고(and) {{less::{{getvar::aff}}::10}} /10보다 작으면 }} }} (Indifference) /(Indifference)를 출력 {{/if}} |
이렇다. 즉 aff 값이 0에서 10이라면 지정된 문구 (Indifference)가 출력된다.
테스트를 위해 숙련된 조교인 Test bot을 데려옴
![]() | ![]() |
봇 디스크립션 | 정규식 스크립트 |
세팅 완료된 상태에서 aff 값을 0으로 세팅하고 봇이 Affinity를 출력하게 해 보자.
딸깍 결과물.
리퀘스트를 보낼 당시 aff는 0이었으므로, 이론상으로는 봇 디스크립션에 Current Affinity: (Indifference)가 들어가 있어야 한다.
리퀘스트 로그를 확인해 보면,
성공!
이번 딸깍을 통해 aff는 78로 세팅되었을 것이다. 즉, 다음 딸깍 시에는 봇 디스크립션 내용이 Current Affinity: (Attachment)로 바뀌어 있어야 한다.
딸깍
성공!
지금은 간단하게 문구만 넣었지만, 만약 (Indifference) 대신 긴 설명을 넣는다면 봇 디스크립션에 <user>와 <char>의 현재 관계뿐 아니라 관계에 따른 봇의 행동 양상도 지정할 수 있다. 가령,
Current relationship with <user>: {{#if {{and::{{greater_equal::{{getvar::aff}}::0}}::{{less::{{getvar::aff}}::10}}}}}}Indifference. The two have just met, and <char> doesn't feel any human interest, curiosity, or attraction to <user>. She treats <user> in a businesslike, neutral manner.{{/if}}
이런 식으로 작성해 놓으면,
이런 식으로 디스크립션이 예쁘게 잘 들어간다.
이렇게 변수에 따라 봇 디스크립션을 바꿀 수 있는 기능은 호감도 말고도 RPG에서의 체력, 마나 등 활용할 수 있는 분야가 무궁무진할 것으로 예상된다. 이상!