risum 모듈 — RISU modules[] — 기능 확장
👍 162 · 조회 11429 · 2026-02-23
※모듈 임포트/활성화 필수 수박서리의 서리 프롬프트 for Gemini 변경점 [패치 노트] 2026-02-24 오전 1시 fix1) 소악마 호환 해제했을 때 볼륨/챕터 가리개 기능이 작동하지 않는 문제 수정 (모듈만 수정) 2026-02-25 오전 1시 v12.1) 반복방지를 위해 구문 수정 모듈의 인풋번역/대필 오류 수정 소악마 호환 토글 개행 오류 수정 히든 스토리에 회상 숨기기, 랜덤 기능 추가 (회상 숨기기/랜덤 추천) 와 히든 스포일러 이거 프리렌이랑 찰떡이네 - AI 채팅 채널 에서 영감을 얻었음 (정말 감사합니다) 2026-02-25 오후 7시 v12.2) 하이파 업데이트 하이파에 맞게 구조 변경 하이파 응답별로 요약하기 vs 응답 여러 개 묶어서 요약하기 - AI 채팅 채널 답 듣고 AI가 유연하게 하나를 묶든 최대 4개를 묶든 판단하게 함 (정말 감사합니다) 2026-02-28 오전 12시 v12.3) 하이파 미묘하게 업데이트 잼삼일용 프로필직접언급하지마 조각프롬 - AI 채팅 채널 을 그대로 돚거해서 넣음 (정말 감사합니다) 소악마 참고해서 요청이 있었던 RP 모드 (인풋을 그대로 아웃풋에 녹여내는 모드) 만듦 + 하는김에 페르소나 데이터 제거 모드도 (정말 감사합니다) 이제 히든 스토리가 페르소나를 아웃풋에 무조건 포함시키게 하는 부작용이 없음 ( 서리는 무조건 페르소나 포함시키려 하는건가 - AI 채팅 채널 ) 탑 K가 작동 안 한다는 걸 깨닫고 온도 1.6으로 낮추고 탑 P도 0.75로 내림... 2026-03-03 오전 1시 v12.4) 반복 방지를 위한 랜덤 구문 추가 RP 모드에서 인풋이 그대로 복붙되는 현상 수정 (아마) 말투 일관성+웹소설 사이트 참조 토글이 초성체같은 걸 사용하게 하는 현상 수정 (아마) [기본 변경 사항] 너무 많이 바꿔서 기억이 안 나는레후... 대충 프로필 과도한 참조 막으려고 지침 많이 추가하고 토글도 3개나 추가했고 대사 생동감 살릴려고 지침 추가했고 확실한 건 바벨이랑 소악마에서 큰 도움을 받음 바벨 쪽 지침들 보고 영감 받은 것들 추가했고 소악마에서 히든 스포일러를 긴빠이쳐서 트리비아 숨기기, 거짓말 숨기기로 개조함 정말 감사합니다 + 근간이 되는 히든 스토리 립버전 v3.1 (초경량, 범용 모듈) - AI 채팅 채널 에도 감사합니다 +) 그리고 소악마에서 켈시체 긴빠이해서 인풋대필 켈시체로 개조함 [토큰] 기본 1600토큰 장르 토글: 정치/전략 +700, 현실성 +400, 섹스 +800 호들갑/과장 방지: +700 캐릭터 모에 강화: +300 한입한출: +100 DOWNLOAD [프롬] v12 https://realm.risuai.net/character/308d567b-6a52-4723-aed0-067f239e9576 대체 링크 https://drive.proton.me/urls/RTPMBCQXBM#BLuaSDti20d3 v12.1 https://realm.risuai.net/character/66d570af-d584-4652-b0d6-5fcee0929d57 대체 링크 https://drive.proton.me/urls/GKMZERNVY8#SAh9yWQs7l1s v12.2 https://realm.risuai.net/character/822c903c-99d0-4381-a639-58e3a2319042 대체 링크 https://drive.proton.me/urls/QGPSQ7Y9GM#601MHqg4q6NN v12.3 https://realm.risuai.net/character/21301539-02f2-428c-94ef-5b4b677c3748 대체 링크 https://drive.proton.me/urls/JYZA3VM1WM#O0PWP7ecI5da v12.4 https://realm.risuai.net/character/c65d8ae0-da99-46ab-9d3b-8b97b2f046c9 대체 링크 https://drive.proton.me/urls/W51RCNJEV4#9nlB0umxsYHA [모듈] Gemini v12.1 (공용모듈임) https://drive.proton.me/urls/V01KT2SSMW#6kfiVeSocKvi Gemini v12.3 (공용모듈임) https://drive.proton.me/urls/5HZJSFDCP0#vdjMVAO68jQT [하이파] 하이파 v1 https://drive.proton.me/urls/DS2JCBJ0S8#Gb77QYmjlUEF 하이파 v1.1 https://drive.proton.me/urls/CQ10S5FMM8#QODUpzOHpjSJ ※모듈 임포트 필수 활성화도 해줄 것!!!!!! 하이파는 위처럼 임포트 버튼을 눌러서 적용함 검열 대처법 검열해제, 검열해제 프리필, 2차 검열해제 (엄마암), 묘사 강화, 전개 강화, 능동성 강화 이 여섯 개의 토글을 각각 껐다 켰다 해보자 거지같은 잼민이 검열은 검열해제 토글을 켜야 될 때도 있고 꺼야 될 때도 있다 섹스 토글도 마찬가지인데 혹시 이거 쓰다가 검열 걸렸으면 15금 헨타이로 바꿔 보자 물론 역도 성립 가능 토글 [추천 세팅] CoT는 꼭 필요할 때만 켜기 [응답 형식] 볼륨/챕터/타이틀: ## 1권 2장: 네모의 꿈 / 볼륨/챕터: ## 1권 2장 / OOC 모드: AI와 얘기가 필요할 때 (하단 추가 설명) 형식 제거 모드: 저는 볼륨, 챕터 구분이 싫어요 → 형식 제거 / 소악마 형식 호환패치: 소악마 등과 호환이 되도록 형식을 ## 볼륨 1: 엠-마스터 ### 챕터 2: 유즈의 꿈 #### Chatindex: 2∮ 이런 식으로 바꿔 준다 [커스텀 작가] 원하는 작가, 작품의 이름을 쓰면 그 문체로 써줄 확률이 올라감 [문체] 원하는 걸 골라 보자 [호들갑/과장] 말 그대로 [시점] 1인칭x2, 2인칭, 3인칭x2 중 아무튼 원하는 걸 고르자 [사칭] 원하는 걸 하나 고르자 [장르] 원하는 장르가 있다면 한 개든 여러 개든 골라 보자 [나머지] 내가 1인칭으로 인풋을 넣어서 (나는 ~했다 이런 식) AI가 헷갈려하지 않을까? → '1인칭 인풋'을 켠다 인물이 많으면 AI가 헷갈려하지 않을까? → '【이름】대사 (기억 보조용)'을 켠다 시간관념이나 공간관념이 좀 떨어져 보인다 → '서리 자체 상태창'을 켠다 서리 자체 상태창 말고 개인적으로 사용하는 상태창 (ex: 2인 상태창) 등이 있다 → '상단 상태창 잘 나오게'나 '하단 상태창 잘 나오게'를 켠다 (상단 켜면 위쪽에, 하단 켜면 아래쪽에 출력됨) ※이 토글은 본인이 보유한 상태창이 잘 작동하도록 '보조'해주는 거지 새로운 상태창을 만들어주는 기능은 아님 프로필 좀 그만 읊어라 → 히든 스토리의 '트리비아 숨기기'를 켠다 프로필 좀 그만 읊어라 + 기억 좀 해라 → 히든 스토리의 '회상 숨기기'를 켠다 거짓말이 보고 싶다 → 히든 스토리의 '거짓말 숨기기'를 켠다 편하게 위의 세 개를 하고 싶다 → 히든 스토리의 '랜덤'을 켠다 제발 캐릭터시트에 습관 적혀 있다고 그거 반복 좀 안 했으면 좋겠다 → '습관 반복 방지'를 켠다 자꾸 "키 139cm에 복숭아를 훔친 너"같은 식으로 장황한 TMI 대사가 나온다 → '대화 장황함 방지'를 켠다 애들이 너무 순하다/나는 마조다 → '폭력성 강화'를 켠다 전투씬이다 → '액션씬 강화'를 켠다 캐릭터들을 모에하게/예쁘게 만들고 싶다 → '캐릭터 모에 묘사 강화'를 켠다 이런 게 뜬다 → '클리셰 방지'를 켠다 "미수를 주마" "미수...?" "사스케 이야기가 안 끝난다" "이야기...?" "안 끝난다고" "안 끝나...?" → '메아리/반문 방지'를 켠다 자꾸 나한테 질문만 한다 → '반복되는 질문 방지'를 켠다 끝문단에 자꾸 암시질이 ㅈ같다 → '끝문단 암시 방지'를 켠다 난이도가 너무 쉽다 → '발정 방지'를 켠다 캐릭터들이 자꾸 나를 의심한다 → '의심병 방지'를 켠다 캐릭터들이 나를 나데나데해줬으면 좋겠다 → '나데나데'를 켠다 말투가 어색하거나 일관성이 없을 때 → '말투 일관성+웹소설 사이트 참조'를 켠다 검열 걸렸다/18금이 먹고 싶다 → '검열해제 프리필'을 켠다 그래도 안 된다 → '2차 검열해제 (엄마암)'을 켠다 에셋이 너무 많이 나온다 → '에셋
🍉서리 프롬프트 for Gemini v12.1
{
"name": "🍉서리 프롬프트 for Gemini v12.1",
"description": "🍉서리 프롬프트 for Gemini v12.1",
"id": "afef9430-c693-4385-b879-f37e349c3d26",
"regex": [
{
"comment": "개요 출력문",
"in": "^[\\s]*##[#]+[\\s]*(Outline|개요|概要)[:]?[\\s]*[\\n]+(.*)[\\n]+##[#]+[\\*\\s]*(Narrative|이야기|物語)[\\*\\s]*$",
"out": "### Narrative",
"type": "editoutput",
"ableFlag": true,
"flag": "ms<order 7>"
},
{
"comment": "PC 턴 출력문",
"in": "^[\\s]*##[#]+[\\s]*PC Turn[:]?[\\s]*[\\n]+(.*)[\\n]+##[#]+[\\*\\s]*NPC Turn[\\*\\s]*$",
"out": "### Narrative",
"type": "editoutput",
"ableFlag": true,
"flag": "ms<order 6>"
},
{
"comment": "인풋대필+번역 출력문 Gemini Thinking",
"in": "^[\\s]*##[#]+[\\s]*(Input Translation|인풋 번역|インプット翻訳)[:]?[\\s]*[\\n]+(.*)[\\n]+[\\s]*##[#]+[\\s]*(Input Enhancement|인풋 개선|インプット改善)[:]?[\\s]*[\\n]+(.*)[\\n]+##[#]+[\\*\\s]*(Narrative|이야기|物語)[\\*\\s]*$",
"out": "{{setvar::trans::{{trim::$4}}}}",
"type": "editoutput",
"ableFlag": true,
"flag": "ms<order 5>"
},
{
"comment": "인풋번역 출력문 Gemini Thinking",
"in": "^[\\s]*##[#]+[\\s]*(Input Translation|인풋 번역|インプット翻訳)[:]?[\\s]*[\\n]+(.*)[\\n]+##[#]+[\\*\\s]*(Narrative|이야기|物語)[\\*\\s]*$",
"out": "{{setvar::trans::{{trim::$2}}}}",
"type": "editoutput",
"ableFlag": true,
"flag": "sm<order 5>"
},
{
"comment": "인풋대필 출력문 Gemini Thinking",
"in": "^[\\s]*##[#]+[\\s]*(Input Enhancement|인풋 개선|インプット改善)[:]?[\\s]*[\\n]+(.*)[\\n]+##[#]+[\\*\\s]*(Narrative|이야기|物語)[\\*\\s]*$",
"out": "{{setvar::trans::{{trim::$2}}}}",
"type": "editoutput",
"ableFlag": true,
"flag": "<order 5>ms"
},
{
"comment": "인풋대필+번역 출력문",
"in": "^[\\s]*##[#]+[\\s]*(Input Translation|인풋 번역|インプット翻訳)[:]?[\\s]*[\\n]+(.*)[\\n]+[\\s]*##[#]+[\\s]*(Input Enhancement|인풋 개선|インプット改善)[:]?[\\s]*[\\n]+(.*)[\\n]+#[\\*\\s]*(Response|응답|応答)[\\*\\s]*$",
"out": "{{setvar::trans::{{trim::$4}}}}\n# $5",
"type": "editoutput",
"ableFlag": true,
"flag": "ms<order 4>"
},
{
"comment": "인풋번역 출력문",
"in": "^[\\s]*##[#]+[\\s]*(Input Translation|인풋 번역|インプット翻訳)[:]?[\\s]*[\\n]+(.*)[\\n]+#[\\*\\s]*(Response|응답|応答)[\\*\\s]*$",
"out": "{{setvar::trans::{{trim::$2}}}}\n# $3",
"type": "editoutput",
"ableFlag": true,
"flag": "ms<order 4>"
},
{
"comment": "인풋대필 출력문",
"in": "^[\\s]*##[#]+[\\s]*(Input Enhancement|인풋 개선|インプット改善)[:]?[\\s]*[\\n]+(.*)[\\n]+#[\\*\\s]*(Response|응답|応答)[\\*\\s]*$",
"out": "{{setvar::trans::{{trim::$2}}}}\n# $3",
"type": "editoutput",
"ableFlag": true,
"flag": "ms<order 3>"
},
{
"comment": "이야기 지우기",
"in": "^[\\s]*##[#]+[\\*\\s]*(Narrative|이야기|物語)[\\*\\s]*$",
"out": "",
"type": "editoutput",
"ableFlag": true,
"flag": "ms"
},
{
"comment": "<Thoughts> 리퀘스트",
"in": "<Thoughts>(.*)</Thoughts>",
"out": "",
"type": "editprocess",
"ableFlag": true,
"flag": "gs<order 5>"
},
{
"comment": "<think> 출력문",
"in": "(.*)<think>(.*)</think>",
"out": "{{#if {{? {{getglobalvar::toggle_ban_cot_output}}=0}}}}\n<think>\n$2\n</think>\n{{/if}}",
"type": "editoutput",
"ableFlag": true,
"flag": "s<order 2>"
},
{
"comment": "<think> 디스플레이",
"in": "<think>(.*)</think>",
"out": "<Thoughts>\n\n$1\n\n</Thoughts>\n",
"type": "editdisplay",
"ableFlag": true,
"flag": "s<order 4>"
},
{
"comment": "<think> 리퀘스트",
"in": "<think>(.*)</think>",
"out": "",
"type": "editprocess",
"ableFlag": true,
"flag": "s<order 4>"
},
{
"comment": "추론 출력문",
"in": "(.+?)#[\\*\\s]*(Response|응답|応答)[\\*\\s]*$",
"out": "{{#if {{? {{getglobalvar::toggle_ban_cot_output}}=0}}}}\n$1\n# $2\n{{/if}}{{#if {{? {{getglobalvar::toggle_ban_cot_output}}=1}}}}\n$1\n# $2\n{{/if}}",
"type": "editoutput",
"ableFlag": true,
"flag": "s<order 1>m"
},
{
"comment": "추론 디스플레이",
"in": "^(.+?)[\\*\\s]*#[\\*\\s]*(Response|응답|応答)[\\*\\s]*$",
"out": "<Thoughts>\n\n$1\n\n</Thoughts>\n",
"type": "editdisplay",
"ableFlag": true,
"flag": "ms<order 3>"
},
{
"comment": "추론 리퀘스트",
"in": "^(.*)#[\\*\\s]*(Response|응답|応答)[\\*\\s]*$",
"out": "# $2",
"type": "editprocess",
"ableFlag": true,
"flag": "ms<order 3>"
},
{
"comment": "사후응답 디스플레이",
"in": "^[\\*\\s]*#[\\*\\s]*(Post-response|사후응답|事後応答)(.*)",
"out": "<details>\n <summary><strong>사후응답</strong></summary>\n <div>\n\t$2\n </div>\n</details>",
"type": "editdisplay",
"ableFlag": true,
"flag": "ms<order 2>"
},
{
"comment": "# Response 디스플레이",
"in": "# (Response|응답|応答)",
"out": "",
"type": "editdisplay",
"ableFlag": true,
"flag": "g<order 1>"
},
{
"comment": "챕터 가리개 디스플레이 1",
"in": "(## (Volume|볼륨|巻)(.*)[\\n]+### (Chapter|챕터|章)(.*))",
"out": "{{#if {{? {{getglobalvar::toggle_episode_display_removal}}=0}}}}$1{{/if}}\n",
"type": "editdisplay",
"ableFlag": true,
"flag": "<order 1>mg"
},
{
"comment": "챕터 가리개 디스플레이 2",
"in": "(##(.*)(Volume|권|巻)(.*)(Chapter|장|章)(.*))",
"out": "{{#if {{? {{getglobalvar::toggle_episode_display_removal}}=0}}}}$1{{/if}}\n",
"type": "editdisplay",
"ableFlag": true,
"flag": "gm<order 1>"
},
{
"comment": "상태창 올인원 호환",
"in": "- Date: (.+?)\\n+-.+: (.+?)\\n+-.+: (.+?)\\n+-.+: (.+?)\\n+-.+: ([^\\n]+)(?=[<p></p>]*?)",
"out": "<head>\n <style>\n @import url('https://fonts.googleapis.com/css2?family=Bitter:ital,wght@0,100..900;1,100..900&family=Gowun+Batang&display=swap');\n \n svg {\n display: inline;\n fill: #ffffff;\n width: 1em;\n margin-bottom: 0.2em;\n }\n \n .indicator {\n display: flex;\n flex-direction: column;\n border: double #ffffff;\n border-width: 6px 0;\n max-width: 400px;\n margin: 1em auto;\n }\n \n .textbox {\n display: flex;\n flex-direction: column;\n margin: 0.5em auto;\n width: fit-content;\n }\n \n .text {\n line-height: 1em;\n font-size: 1em;\n font-family: \"Gowun Batang\";\n font-optical-sizing: auto;\n font-style: italic;\n font-weight: 400;\n color: #ffffff;\n }\n </style>\n</head>\n \n<body style=\"background-color: black;\">\n <div class=\"indicator\">\n <div class=\"textbox\">\n <span class=\"text\">\n <svg viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"SVGRepo_iconCarrier\">\n <path d=\"M7 11h2v2H7zm0 4h2v2H7zm4-4h2v2h-2zm0 4h2v2h-2zm4-4h2v2h-2zm0 4h2v2h-2z\"></path>\n <path d=\"M5 22h14c1.103 0 2-.897 2-2V6c0-1.103-.897-2-2-2h-2V2h-2v2H9V2H7v2H5c-1.103 0-2 .897-2 2v14c0 1.103.897 2 2 2zM19 8l.001 12H5V8h14z\"></path>\n </g>\n </svg>\n $1\n </span>\n <span class=\"text\">\n <svg viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"SVGRepo_iconCarrier\">\n <path d=\"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm0 18c-4.411 0-8-3.589-8-8s3.589-8 8-8 8 3.589 8 8-3.589 8-8 8z\"></path>\n <path d=\"M13 7h-2v6h6v-2h-4z\"></path>\n </g>\n </svg>\n $2\n </span>\n <span class=\"text\">\n <svg viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"SVGRepo_iconCarrier\">\n <path d=\"M12 14c2.206 0 4-1.794 4-4s-1.794-4-4-4-4 1.794-4 4 1.794 4 4 4zm0-6c1.103 0 2 .897 2 2s-.897 2-2 2-2-.897-2-2 .897-2 2-2z\"></path>\n </g>\n </svg>\n $3\n </span>\n <span class=\"text\">\n <svg viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"SVGRepo_iconCarrier\">\n <path d=\"M12 3C8.691 3 6 5.691 6 9c0 1.654 1.346 3 3 3h6c1.654 0 3-1.346 3-3 0-3.309-2.691-6-6-6zm0 10h-3v8h3v-8zm6 0h-3v8h3v-8zm-7-2c-1.103 0-2-.897-2-2s.897-2 2-2 2 .897 2 2-.897 2-2 2zm7 0c-1.103 0-2-.897-2-2s.897-2 2-2 2 .897 2 2-.897 2-2 2z\"></path>\n </g>\n </svg>\n $4\n </span>\n <span class=\"text\">\n <svg viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"SVGRepo_iconCarrier\">\n <path d=\"M19 6h-2V4c0-1.654-1.346-3-3-3H10C8.346 1 7 2.346 7 4v2H5c-1.654 0-3 1.346-3 3v11c0 1.654 1.346 3 3 3h14c1.654 0 3-1.346 3-3V9c0-1.654-1.346-3-3-3zM9 4c0-.551.449-1 1-1h4c.551 0 1 .449 1 1v2H9V4zm11 15c0 .551-.449 1-1 1H5c-.551 0-1-.449-1-1V9c0-.551.449-1 1-1h14c.551 0 1 .449 1 1v10z\"></path>\n </g>\n </svg>\n $5\n </span>\n </div>\n </div>\n</body>\n<br>",
"type": "editdisplay",
"ableFlag": true,
"flag": "<move_top><order 0>"
},
{
"comment": "서리 자체 상태창 (Default)",
"in": "\\[[\\s]*Date[\\s]*:(.*)\\|[\\s]*Season[\\s]*:(.*)\\|[\\s]*Time[\\s]*:(.*)\\|[\\s]*Location[\\s]*:(.*)\\|[\\s]*Characters[\\s]*:(.*)\\|[\\s]*Others[\\s]*:(.*)\\]",
"out": "<!DOCTYPE html>\n<html lang=\"ko\">\n<head>\n <style>\n :root {\n --main-bg-color: #121212;\n --accent-color: #7f5af0;\n --text-primary: #ececec;\n --text-secondary: #a7a9be;\n --border-color: #2e2e2e;\n --panel-bg: #1e1e1e;\n }\n \n body {\n margin: 0;\n padding: 0;\n font-family: 'Noto Sans KR', sans-serif;\n background-color: var(--main-bg-color);\n color: var(--text-primary);\n }\n \n .status-container {\n max-width: 100%;\n margin: 10px auto;\n border-radius: 8px;\n background-color: var(--panel-bg);\n box-shadow: 0 4px 15px rgba(0,0,0,0.3);\n overflow: hidden;\n }\n \n .status-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 8px 15px;\n background-color: var(--accent-color);\n color: white;\n }\n \n .status-header h2 {\n margin: 0;\n font-size: 1rem;\n }\n \n .status-body {\n display: flex;\n flex-wrap: wrap;\n padding: 10px;\n }\n \n .status-section {\n padding: 8px 12px;\n flex: 1;\n min-width: 150px;\n border-right: 1px solid var(--border-color);\n }\n \n .status-section:last-child {\n border-right: none;\n }\n \n .section-title {\n font-size: 0.8rem;\n color: var(--accent-color);\n margin: 0 0 5px 0;\n text-transform: uppercase;\n letter-spacing: 1px;\n }\n \n .section-content {\n font-size: 0.9rem;\n margin: 0;\n }\n \n .characters-list {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n margin-top: 5px;\n }\n \n .character-tag {\n background-color: rgba(127, 90, 240, 0.2);\n border: 1px solid var(--accent-color);\n border-radius: 15px;\n padding: 3px 10px;\n font-size: 0.8rem;\n white-space: nowrap;\n }\n \n .others-list {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n margin-top: 5px;\n }\n \n .other-character {\n display: flex;\n align-items: center;\n background-color: rgba(60, 60, 60, 0.5);\n border-radius: 15px;\n padding: 3px 10px;\n font-size: 0.8rem;\n white-space: nowrap;\n }\n \n .location-badge {\n background-color: rgba(127, 90, 240, 0.3);\n border-radius: 10px;\n padding: 2px 6px;\n margin-left: 5px;\n font-size: 0.7rem;\n }\n \n @media (max-width: 768px) {\n .status-body {\n flex-direction: column;\n }\n \n .status-section {\n border-right: none;\n border-bottom: 1px solid var(--border-color);\n padding: 10px;\n }\n \n .status-section:last-child {\n border-bottom: none;\n }\n }\n </style>\n</head>\n<body>\n <div class=\"status-container\">\n <div class=\"status-header\">\n <h2>상태창</h2>\n <span id=\"time-display\">$1</span>\n </div>\n <div class=\"status-body\">\n <div class=\"status-section\">\n <h3 class=\"section-title\">날짜 / 계절</h3>\n <p class=\"section-content\" id=\"date-season\">$2</p>\n </div>\n <div class=\"status-section\">\n <h3 class=\"section-title\">시간</h3>\n <p class=\"section-content\" id=\"time-info\">$3</p>\n </div>\n <div class=\"status-section\">\n <h3 class=\"section-title\">위치</h3>\n <p class=\"section-content\" id=\"location-info\">$4</p>\n </div>\n <div class=\"status-section\">\n <h3 class=\"section-title\">현재 인물</h3>\n <div class=\"characters-list\" id=\"characters-container\">$5</div>\n </div>\n <div class=\"status-section\">\n <h3 class=\"section-title\">기타 인물</h3>\n <div class=\"others-list\" id=\"others-container\">$6</div>\n </div>\n </div>\n </div>\n</body>\n</html>",
"type": "editdisplay",
"ableFlag": true,
"flag": "g"
},
{
"comment": "서리 자체 상태창 (게임식)",
"in": "\\[[\\s]*Name[\\s]*:(.*)\\|[\\s]*Level[\\s]*:(.*)\\|[\\s]*Talent[\\s]*:(.*)\\|[\\s]*Money[\\s]*:(.*)\\|[\\s]*Skills[\\s]*:(.*)\\|[\\s]*Date[\\s]*:(.*)\\|[\\s]*Season[\\s]*:(.*)\\|[\\s]*Time[\\s]*:(.*)\\|[\\s]*Location[\\s]*:(.*)\\|[\\s]*Characters[\\s]*:(.*)\\|[\\s]*Others[\\s]*:(.*)\\|[\\s]*Quests[\\s]*:(.*)\\]",
"out": "<!DOCTYPE html>\n<html lang=\"ko\">\n<head>\n <meta charset=\"UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n <style>\n :root {\n --main-bg-color: #121212;\n --accent-color: #7f5af0;\n --accent-light: rgba(127, 90, 240, 0.2);\n --text-primary: #ececec;\n --text-secondary: #a7a9be;\n --border-color: #2e2e2e;\n --panel-bg: #1e1e1e;\n --main-quest: #ff7e5f;\n --sub-quest: #feb47b;\n }\n \n body {\n margin: 0;\n padding: 0;\n font-family: 'Noto Sans KR', sans-serif;\n background-color: var(--main-bg-color);\n color: var(--text-primary);\n }\n \n .status-container {\n max-width: 100%;\n margin: 10px auto;\n border-radius: 8px;\n background-color: var(--panel-bg);\n box-shadow: 0 4px 15px rgba(0,0,0,0.3);\n overflow: hidden;\n }\n \n .status-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 8px 15px;\n background-color: var(--accent-color);\n color: white;\n }\n \n .status-header h2 {\n margin: 0;\n font-size: 1rem;\n display: flex;\n align-items: center;\n }\n \n .status-body {\n display: flex;\n flex-wrap: wrap;\n padding: 5px;\n }\n \n .status-row {\n display: flex;\n flex-wrap: wrap;\n width: 100%;\n margin-bottom: 5px;\n }\n \n .status-section {\n padding: 5px 10px;\n flex: 1;\n min-width: 150px;\n border-right: 1px solid var(--border-color);\n }\n \n .status-section:last-child {\n border-right: none;\n }\n \n .section-title {\n font-size: 0.7rem;\n color: var(--accent-color);\n margin: 0 0 3px 0;\n text-transform: uppercase;\n letter-spacing: 1px;\n }\n \n .section-content {\n font-size: 0.85rem;\n margin: 0;\n }\n \n .characters-list, .skills-list, .others-list {\n display: flex;\n flex-wrap: wrap;\n gap: 5px;\n margin-top: 3px;\n }\n \n .character-tag, .skill-tag {\n background-color: var(--accent-light);\n border: 1px solid var(--accent-color);\n border-radius: 15px;\n padding: 2px 8px;\n font-size: 0.75rem;\n white-space: nowrap;\n }\n \n .other-character {\n display: flex;\n align-items: center;\n background-color: rgba(60, 60, 60, 0.5);\n border-radius: 15px;\n padding: 2px 8px;\n font-size: 0.75rem;\n white-space: nowrap;\n }\n \n .location-badge {\n background-color: rgba(127, 90, 240, 0.3);\n border-radius: 10px;\n padding: 1px 5px;\n margin-left: 5px;\n font-size: 0.7rem;\n }\n \n .stats-container {\n display: flex;\n gap: 10px;\n flex-wrap: wrap;\n }\n \n .stat-item {\n display: flex;\n align-items: center;\n }\n \n .stat-label {\n color: var(--text-secondary);\n font-size: 0.75rem;\n margin-right: 5px;\n }\n \n .stat-value {\n font-size: 0.85rem;\n }\n \n .quests-container {\n display: flex;\n flex-direction: column;\n gap: 5px;\n }\n \n .quest-item {\n background-color: rgba(40, 40, 40, 0.6);\n border-left: 3px solid var(--main-quest);\n border-radius: 4px;\n padding: 5px 8px;\n font-size: 0.75rem;\n }\n \n .quest-item.sub-quest {\n border-left-color: var(--sub-quest);\n }\n \n .quest-header {\n display: flex;\n justify-content: space-between;\n font-weight: bold;\n margin-bottom: 2px;\n }\n \n .quest-type {\n background-color: var(--main-quest);\n padding: 1px 6px;\n border-radius: 10px;\n font-size: 0.65rem;\n color: white;\n }\n \n .quest-type.sub {\n background-color: var(--sub-quest);\n }\n \n .quest-desc {\n margin: 2px 0;\n color: var(--text-secondary);\n }\n \n .quest-reward {\n font-size: 0.7rem;\n color: gold;\n }\n \n /* Folding styles */\n .fold-checkbox {\n display: none;\n }\n \n .fold-row {\n display: flex;\n gap: 8px;\n width: 100%;\n margin-bottom: 5px;\n }\n \n .fold-container {\n flex: 1;\n min-width: 0;\n }\n \n .fold-label {\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 4px 8px;\n background-color: var(--panel-bg);\n border-radius: 4px;\n margin-bottom: 5px;\n border: 1px solid var(--border-color);\n }\n \n .fold-label:hover {\n background-color: rgba(127, 90, 240, 0.1);\n }\n \n .fold-label:after {\n content: '▼';\n font-size: 0.8rem;\n color: var(--accent-color);\n transition: transform 0.3s;\n }\n \n .fold-content {\n transition: max-height 0.3s ease-out, opacity 0.3s ease-out;\n max-height: 1000px;\n opacity: 1;\n overflow: hidden;\n }\n \n .fold-checkbox:checked + .fold-label:after {\n transform: rotate(-90deg);\n }\n \n .fold-checkbox:checked ~ .fold-content {\n max-height: 0;\n opacity: 0;\n margin: 0;\n padding: 0;\n border: none;\n }\n \n .fold-row-title {\n font-size: 0.8rem;\n font-weight: bold;\n color: var(--text-primary);\n margin: 0;\n }\n \n @media (max-width: 768px) {\n .status-body {\n flex-direction: column;\n }\n \n .status-row {\n flex-direction: column;\n margin-bottom: 0;\n }\n \n .status-section {\n border-right: none;\n border-bottom: 1px solid var(--border-color);\n padding: 8px;\n }\n \n .status-section:last-child {\n border-bottom: none;\n }\n \n .stats-container {\n flex-direction: column;\n gap: 5px;\n }\n \n .stat-item {\n width: 100%;\n }\n \n .fold-row {\n flex-direction: column;\n }\n }\n </style>\n</head>\n<body>\n <div class=\"status-container\">\n <div class=\"status-header\">\n <h2>상태창</h2>\n <span id=\"time-display\">($7) $6 $8</span>\n </div>\n <div class=\"status-body\">\n <!-- Character Stats Row -->\n <div class=\"status-row\">\n <div class=\"status-section\">\n <h3 class=\"section-title\">기본 정보</h3>\n <div class=\"stats-container\">\n <div class=\"stat-item\">\n <span class=\"stat-label\">레벨:</span>\n <span class=\"stat-value\" id=\"level-value\">$2</span>\n </div>\n <div class=\"stat-item\">\n <span class=\"stat-label\">재능:</span>\n <span class=\"stat-value\" id=\"talent-value\">$3</span>\n </div>\n <div class=\"stat-item\">\n <span class=\"stat-label\">소지금:</span>\n <span class=\"stat-value\" id=\"money-value\">$4</span>\n </div>\n </div>\n </div>\n <div class=\"status-section\">\n <h3 class=\"section-title\">기술</h3>\n <div class=\"skills-list\" id=\"skills-container\">$5</div>\n </div>\n </div>\n <!-- Foldable Rows Container -->\n <div class=\"fold-row\">\n <!-- Time/Location Row -->\n <div class=\"fold-container\">\n <input type=\"checkbox\" id=\"time-location-fold\" class=\"fold-checkbox\" checked>\n <label for=\"time-location-fold\" class=\"fold-label\">\n <span class=\"fold-row-title\">기타</span>\n </label>\n <div class=\"fold-content\">\n <div class=\"status-row\">\n <div class=\"status-section\">\n <h3 class=\"section-title\">위치</h3>\n <p class=\"section-content\" id=\"location-info\">$9</p>\n </div>\n <div class=\"status-section\">\n <h3 class=\"section-title\">현재 인물</h3>\n <div class=\"characters-list\" id=\"characters-container\">$10</div>\n </div>\n <div class=\"status-section\">\n <h3 class=\"section-title\">기타 인물</h3>\n <div class=\"others-list\" id=\"others-container\">$11</div>\n </div>\n <div class=\"status-section\">\n <h3 class=\"section-title\">퀘스트</h3>\n <div class=\"quests-container\" id=\"quests-container\">$12</div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</body>",
"type": "editdisplay",
"ableFlag": true,
"flag": "g"
},
{
"comment": "TRANSLATE BUTTON 디스플레이",
"in": "TRANSLATE BUTTON",
"out": "Click To Replace Input: <button risu-trigger=\"inputtrans_gpt\">{{getvar::trans}}</button>",
"type": "editdisplay",
"ableFlag": false
},
{
"comment": "TRANSLATE BUTTON 리퀘스트",
"in": "TRANSLATE BUTTON",
"out": "",
"type": "editprocess",
"ableFlag": false
},
{
"comment": "말줄임표 리퀘스트",
"in": "(\\.\\.\\.|…)",
"out": "{{#if {{? {{getglobalvar::toggle_ban_ellipsis}}=0}}}}…{{/if}}",
"type": "editprocess",
"ableFlag": false
},
{
"comment": "쉼표 리퀘스트",
"in": ",",
"out": "{{#if {{? {{getglobalvar::toggle_ban_comma}}=0}}}},{{/if}}",
"type": "editprocess",
"ableFlag": false
},
{
"comment": "** 리퀘스트",
"in": "\\*\\*",
"out": "",
"type": "disabled",
"ableFlag": false
},
{
"comment": "``` 디스플레이",
"in": "```",
"out": "",
"type": "editdisplay",
"ableFlag": false,
"flag": "g"
},
{
"comment": "'*생각*' 출력문",
"in": "(\\*'|'\\*|\\*‘|’\\*)",
"out": "'",
"type": "editoutput",
"ableFlag": false,
"flag": "gms"
},
{
"comment": "킬킬거 출력문",
"in": "킬킬거",
"out": "{{random::낄낄거::깔깔거::킥킥거}}",
"type": "editoutput",
"ableFlag": false
},
{
"comment": "킬킬대 출력문",
"in": "킬킬대",
"out": "{{random::낄낄대::깔깔대::킥킥대}}",
"type": "editoutput",
"ableFlag": false
},
{
"comment": "킬킬 웃 출력문",
"in": "킬킬 웃",
"out": "{{random::낄낄 웃::깔깔 웃::킥킥 웃}}",
"type": "editoutput",
"ableFlag": false
},
{
"comment": "#### Chatindex 디스플레이",
"in": "(#### (Chatindex)(.*)[\\n])",
"out": "",
"type": "editdisplay",
"ableFlag": false
},
{
"comment": "#### Chatindex2 디스플레이",
"in": "(####\\s*Chatindex.*(\\n|$))",
"out": "",
"type": "editdisplay",
"ableFlag": false
},
{
"comment": "TSIDX 디스플레이",
"in": "<!--\\[TS:\\d+\\]\\[IDX:\\d+\\]-->",
"out": "",
"type": "editdisplay",
"ableFlag": false
},
{
"comment": "<!--히든 스토리-> 디스플레이",
"in": "<!--\\n(.+?)\\n-->",
"out": "<Thoughts>\n\n$1\n\n</Thoughts>",
"type": "editdisplay",
"ableFlag": true,
"flag": "gs"
},
{
"comment": "<!--히든 스토리-> 리퀘스트",
"in": "<!--\\n(.+?)\\n-->",
"out": "",
"type": "editprocess",
"ableFlag": true,
"flag": "s"
},
{
"comment": "이름: 대사 디스플레이",
"in": "【(.*)】[\\s]*([\"「](.*)[\"」])",
"out": "$2",
"type": "editdisplay",
"ableFlag": false
}
],
"type": "risuModule",
"trigger": [
{
"comment": "",
"type": "manual",
"conditions": [],
"effect": [
{
"type": "v2Header",
"code": "",
"indent": 0
}
],
"lowLevelAccess": true
},
{
"comment": "inputtrans_gpt",
"type": "manual",
"conditions": [],
"effect": [
{
"type": "v2IfAdvanced",
"indent": 0,
"condition": ">",
"targetType": "value",
"target": "0",
"sourceType": "value",
"source": "{{? {{getglobalvar::toggle_heng}}+{{getglobalvar::toggle_input_enhancement}}}}"
},
{
"type": "v2ModifyChat",
"index": "{{? $inputtrans_gpt_button_index-1}}",
"indexType": "value",
"value": "{{replace::{{getvar::trans}}::---::{{blank}}}}",
"valueType": "value",
"indent": 1
},
{
"type": "v2CutChat",
"indent": 1,
"start": "0",
"end": "{{? $inputtrans_gpt_button_index+1}}",
"startType": "value",
"endType": "value"
},
{
"type": "v2EndIndent",
"indent": 1,
"endOfLoop": false
}
],
"lowLevelAccess": true
},
{
"comment": "inputtrans_gpt_button",
"type": "output",
"conditions": [],
"effect": [
{
"type": "v2IfAdvanced",
"indent": 0,
"condition": ">",
"targetType": "value",
"target": "0",
"sourceType": "value",
"source": "{{? {{getglobalvar::toggle_heng}}+{{getglobalvar::toggle_input_enhancement}}}}"
},
{
"type": "v2Impersonate",
"role": "char",
"value": "TRANSLATE BUTTON",
"valueType": "value",
"indent": 1
},
{
"type": "v2SetVar",
"operator": "=",
"var": "inputtrans_gpt_button_index",
"value": "{{lastmessageid}}",
"valueType": "value",
"indent": 1
},
{
"type": "v2EndIndent",
"indent": 1,
"endOfLoop": false
}
],
"lowLevelAccess": true
},
{
"comment": "hidden_story",
"type": "start",
"conditions": [],
"effect": [
{
"type": "v2IfAdvanced",
"indent": 0,
"condition": "=",
"targetType": "value",
"target": "4",
"sourceType": "value",
"source": "{{getglobalvar::toggle_hidden_story}}"
},
{
"type": "v2SetVar",
"operator": "=",
"var": "hidden_story_var",
"value": "{{roll::3}}",
"valueType": "value",
"indent": 1
},
{
"type": "v2EndIndent",
"indent": 1,
"endOfLoop": false
}
],
"lowLevelAccess": true
}
],
"lowLevelAccess": true,
"creator_notes": "For 서리 프롬프트 v17",
"tags": [],
"license": "CC BY-NC-SA 4.0",
"rtype": "module",
"hideIcon": false,
"lorebook": [
{
"key": "### Chapter 10, ### Chapter 11, ### Chapter 12, ### Chapter 13, ### Chapter 14, ### 챕터 10, ### 챕터 11, ### 챕터 12, ### 챕터 13, ### 챕터 14, ### 章 10, ### 章 11, ### 章 12, ### 章 13, ### 章 14",
"comment": "Shift Volume Chapter 10~14",
"content": "@@depth 0\n@@scan_depth 2\n{{random::***Instantly shift to the next volume, resetting the chapter number to 1.***::{{blank}}}}",
"mode": "normal",
"insertorder": 100,
"alwaysActive": false,
"secondkey": "",
"selective": false,
"useRegex": false,
"bookVersion": 2
},
{
"key": "### Chapter 15, ### Chapter 16, ### Chapter 17, ### Chapter 18, ### Chapter 19, ### 챕터 15, ### 챕터 16, ### 챕터 17, ### 챕터 18, ### 챕터 19, ### 章 15, ### 章 16, ### 章 17, ### 章 18, ### 章 19",
"comment": "Shift Volume Chapter 15~",
"content": "@@depth 0\n@@scan_depth 2\n***Instantly shift to the next volume, resetting the chapter number to 1.***",
"mode": "normal",
"insertorder": 100,
"alwaysActive": false,
"secondkey": "",
"selective": false,
"useRegex": false,
"bookVersion": 2
}
],
"backgroundEmbedding": "",
"assets": [],
"namespace": "서리",
"customModuleToggle": ""
}