Thanks to:

[로컬] 💠 만화경 프롬프트 💠 - 9.0 - AI 채팅 채널 (arca.live)

상태창 6종 모음+사용방법 (20230924) - AI 채팅 채널 (arca.live)

🔞) 당신을 사랑하지만 숨길려고 애쓰는 메이드, 라벤더! 에셋추가버전! (수정:04-15) - AI 채팅 채널 (arca.live)


RISU는 신이고 모듈은 무적이다


일반: https://files.catbox.moe/br5ild.json

시뮬용: https://files.catbox.moe/nmogmg.json


<기능 설명>






로어북 기능:

판정 실패+초점 성공 이벤트 로어북.

'각 스텟의 10분의 1'+70<1D100 → 그 스텟에 해당하는 안 좋은 이벤트를 발생시키라고 어시스턴트에게 전달.

'초점'을 설정해서 만약 'Talk' 초점이면 'Talk 스텟의 10분의 1'+10>1D100 → 그 초점에 해당하는 좋은 이벤트를 발생시키라고 전달. 


정규식 기능: 

변수 조작 → 스텟 입력, 변동. 

/stat을 입력하면 어시스턴트에게 답변이 전달되지 않고 바로 상태창을 출력.

확인할 거 확인하고 조정했으면 그냥 이야기 이어가면 되는데, 왜냐하면 이 상태창은 ai에게 입력되지 않기 때문. 지울 필요 없음.


트리거: 

1. 스텟창에서 버튼 누르면 스텟을 늘리거나 줄일 수 있음

매번 어시스턴트에게 각 스텟을 해당 구간에 따라 매우 낮음/낮음/보통/높음/매우 높음으로 전달함. 

ex) 예를 들어 Talk가 30이면, 나는 20~40 범위를 '낮음'으로 설정해놨기 때문에 어시스턴트에게는 'Talk:낮음'이라고만 전달됨.


[범위]

0~20: Very low 

20~40: Low 

40~60: Normal 

60~80: High 

80~100: Very High


2. system_EFFECT

매 입력마다 어시스턴트가 'Very Positive' 'Positive' 'Normal' 'Negative' 'Very Negative' 5가지로 각각 Situation/Affection/Arousal이 어떻게 될지 판정해 줌. 이후 이 입력값은 정규식으로 넘어가서 RISU 상에서 스텟을 변동시키게 됨.


※어시스턴트에게 숫자는 그 어떤 경우에도 전송되는 일이 없음. 모두 좋다, 나쁘다 등의 문자로만 전송되고 숫자 처리는 RISU 내에서만 이루어짐.



/stat을 입력할 시 나오게 되는 상태창. 버튼을 누르면 수치가 변동됨. 

※맨 처음 채팅 진입시 Initial 눌러줘야 Null 사라짐.

Focus는 Talk→0, Power→1, Intelligence→2, 이런 식으로 대응해뒀기 때문에 숫자로 표기되는 것.



보다시피 실제 출력은 이렇고, 이것도 정규식으로 제거하기 때문에 ai는 그냥 이 입력 자체가 없었던 것처럼 받아들임.



긍정적인 상황 변화의 예시.

항상 상황이 좋아지는지 나빠지는지 등을 판단해서 하단 메세지창이 뜸. 

이후, 스텟 변동은 RISU 시스템 내에서 자동으로 이루어짐.



이것도 어시스턴트가 출력한 것은 긍정적인지 보통인지 등의 여부뿐, 실제 숫자는 RISU 시스템 안에서만 처리됨.



Arousal 올리는 측면에서만 긍정적인 예시.

이 경우 Affection은 안 올라가고 Arousal만 올라간다.



부정적인 결과가 나오면 이렇게 된다. 이론적으로는 Affection은 올라가는데 Arousal은 내려간다든가 그런 상황도 발생할 수는 있을 듯. 


아래는 로어북 이벤트 예시



TALK 판정 실패 이벤트를 발동시킨 상태. 

이걸로는 알 수 없으니 리퀘스트 창을 가져오겠음.



1. #EVENT INSTRUCTION

Talk 스텟의 10분의 1+70<1D100 판정에 실패해서 전송된 것. TALK 판정 실패 이벤트가 전송됐다는 것을 확인할 수 있음.

2. <Current User Setting>

Talk, Power 등의 스텟이 구간에 따라서 (60~80) High 등으로 보내지고 있다는 것을 확인할 수 있음.


이렇게 전송 자체는 잘 됨. 

명령이 AI한테 잘 안 듣는 것 같은 건 그냥 내가 프롬을 못 짜서 그럼


<개조하는 법>

시뮬용으로 예시를 들겠음

시뮬에는 크킹식 스텟 Diplomacy, Martial, Stewardship, Intrigue, Learning, Health가 들어 있음.

이게 일괄변경의 예시.


1. 모듈 json을 Notepad++ 등의 편집기로 열어 준다. RISU 내에서 직접 수정해도 되기는 하지만 일괄변경이 안 돼서 비효율적임.

2. 스텟 변경: 나는 diplomacy가 필요 없고 cock size가 필요하다? 그러면 이렇게 찾기→바꾸기

참고로 나는 diplomacy, Diplomacy, DIPLOMACY로 한 스텟을 세 단어로 써놨기 때문에 대소문자 구분하는 편


ex) diplomacy→cock size

Diplomacy→Cock size

DIPLOMACY→COCK SIZE


버튼에는 Diplomacy가 표시되게 하고 싶었고 어시스턴트한테 강하게 명령할 때는 DIPLOMACY, 변수 이름 등에는 diplomacy를 사용함.

그러나 이건 어느 정도 미관상의 이유고, 일괄변경에는 비효율적이니 원한다면 대소문자 구분 체크 풀고 그냥 싹다 하나로 퉁쳐도 됨.

이렇게 수정하면 보통은 돌아감. 


※주의사항: Affection, Arousal은 {{user}}가 아닌 {{char}}의 스텟이므로, 이 둘은 이벤트 로어북에 들어가는 프롬프트가 다른 이벤트와는 약간 다르게 써져 있음.


또한, 매턴 system_EFFECT 판정도 

SITUATION → 저 둘을 제외한 모든 스텟 변동

AFFECTION EFFECT→ affection 변동

AROUSAL EFFECT→ arousal 변동

이라고 구분되어 있음. 


따라서 Affection, Arousal을 찾기→바꾸기할 때는 똑같이 {{char}}의 스텟으로 바꾸거나 로어북/트리거-system_EFFECT를 수정 바람.

해당하는 스텟을 세세하게 각각 변경하고 싶을 때는 그 스텟 이름이 들어간 모든 로어북/정규식/트리거의 프롬프트 부분을 확인한 후 수정해주면 됨.


3. 이벤트: 전반적으로 랜덤 이벤트의 프롬프트가 좀 구린 것 같다


긍정 : {{random::INCREDIBLE SUCCESS::GREAT OPPORTUNITY::NORMAL OPPORTUNITY::SMALL OPPORTUNITY}}

부정 : {{random::CATASTROPHIC FAILURE::SEVERE DANGER::NORMAL DANGER::LIGHT DANGER}}

이벤트는 딱 이렇게 밖에 없음. 저 {{random::~~~~}}안에 오는 프롬프트들이 랜덤으로 하나 출력될 테니, 찾기→바꾸기로 일괄 변경 가능.

개별 이벤트가 마음에 안 들때는 말했듯이 이름 따라서 들어가 보고 수정.


4. 확률: 확률이 마음에 안 든다


{#if {{less::{{calc::{{getvar::talk}}/10+70}}::{{calc::{{random::0::10::20::30::40::50::60::70::80::90}}+{{random::0::1::2::3::4::5::6::7::8::9}}}}}}

이게 talk 판정에서 확률 부분. 해석하면 말했듯이 'talk의 10분의 1'+70<1D100



1D100파트: 

{{random::0::10::20::30::40::50::60::70::80::90}}+{{random::0::1::2::3::4::5::6::7::8::9}}


여기서 1D100은 0, 10, 20, ... ,90 중에서 주사위 굴리고 또 0, 1, 2, ... ,9 중에서 주사위 굴려서 둘이 더하는 식으로 그냥 비스무리하게만 구현한 거라 정확하게 1D100은 아님 (0~99이긴 한데)

어쨌든 이벤트 뜰 확률 조정하고 싶으면 여기서 조정하거나



talk의 10분의 1 파트:
{{getvar::talk}}/10+70 

여기서 나누기 10 + 70을 숫자만 대충 조정하면 됨. 식 바꿔도 되고


5. 어시스턴트한테 보낼 정보 (Talk: Very High 등을 수정하고 싶다)

트리거 → Current User Setting 들어가서 수정하면 됨. 

뜻 보면 알겠지만 만약 power가 0~20이면 Power: Very Low 이런 거 보내라 이런 거라 보고 수정해주면 됨


6. 디자인이 마음에 안 든다

정규식에서 display_ 해당하는 부분 들어가서 output 바꾸면 됨


끝으로, 이건 상태창 빼면 디자인이나 프롬프트는 거의 포기하고 그냥 틀 구현에만 집중한 거니까 각자 알아서 구현하면 훨씬 더 잘 나올듯?

그리고 시뮬용 일반용 나눠놓기는 했는데 그냥 스텟 종류 차이지 큰 차이는 없음.