risum 모듈 — RISU modules[] — 기능 확장
조회 790 · 2025-09-09
페르소나 카드야 모듈 [에셋 페르소나] 퇴출 수녀 마리안 (sfw 에셋 140장 포함) -원작출처 작년인가 ai챗 처음할 당시에 페르소나 에셋 써보고 감동해서 나도 언젠가 만들어봐야지 하고 생각한 페소야 파일명이 완벽해서 따로 건드릴 필요는 없다보니 원작자 한테 허락 받고 로어북 정규식만 요즘 봇이랑 상호작용 할 수 있게 수정했어 동봉한 상태창은 내가 쓰던 건데 다른 에셋봇이랑 상호작용 할 땐 끄는 게 좋더라 ----- 앜 청원대 상호작용 한다고 나이 수정한 거 그대로 올렸네 원본 나이는 17이야.. ---- 가끔씩 자아가 쎄져서 혼자 이미지 출력하길래 상호작용 글노덮 열화판으로 하나 더 동봉함 대화예시(청원대) 대화예시(한지원)
{
"name": "수녀 마리안",
"description": "",
"id": "1d0b98ee-cf2c-4da3-80a8-3afa8a8a366c",
"hideIcon": false,
"assets": [
[
"marian_angry1",
"",
"webp"
],
[
"marian_angry2",
"",
"webp"
],
[
"marian_angry3",
"",
"webp"
],
[
"marian_angry4",
"",
"webp"
],
[
"marian_angry5",
"",
"webp"
],
[
"marian_angry6",
"",
"webp"
],
[
"marian_annoyed1",
"",
"webp"
],
[
"marian_annoyed2",
"",
"webp"
],
[
"marian_annoyed3",
"",
"webp"
],
[
"marian_aroused1",
"",
"webp"
],
[
"marian_aroused2",
"",
"webp"
],
[
"marian_aroused3",
"",
"webp"
],
[
"marian_blushing_shyly1",
"",
"webp"
],
[
"marian_blushing_shyly2",
"",
"webp"
],
[
"marian_blushing_shyly3",
"",
"webp"
],
[
"marian_bored1",
"",
"webp"
],
[
"marian_bored2",
"",
"webp"
],
[
"marian_bored3",
"",
"webp"
],
[
"marian_confused1",
"",
"webp"
],
[
"marian_confused2",
"",
"webp"
],
[
"marian_confused3",
"",
"webp"
],
[
"marian_contemptuous1",
"",
"webp"
],
[
"marian_contemptuous2",
"",
"webp"
],
[
"marian_contemptuous3",
"",
"webp"
],
[
"marian_coughing1",
"",
"webp"
],
[
"marian_coughing2",
"",
"webp"
],
[
"marian_coughing3",
"",
"webp"
],
[
"marian_crying_with_eyes_closed1",
"",
"webp"
],
[
"marian_crying_with_eyes_closed2",
"",
"webp"
],
[
"marian_crying_with_eyes_closed3",
"",
"webp"
],
[
"marian_crying_with_eyes_open1",
"",
"webp"
],
[
"marian_crying_with_eyes_open2",
"",
"webp"
],
[
"marian_crying_with_eyes_open3",
"",
"webp"
],
[
"marian_curious1",
"",
"webp"
],
[
"marian_curious2",
"",
"webp"
],
[
"marian_curious3",
"",
"webp"
],
[
"marian_dazed1",
"",
"webp"
],
[
"marian_dazed2",
"",
"webp"
],
[
"marian_dazed3",
"",
"webp"
],
[
"marian_depressed1",
"",
"webp"
],
[
"marian_depressed2",
"",
"webp"
],
[
"marian_depressed3",
"",
"webp"
],
[
"marian_disappointed1",
"",
"webp"
],
[
"marian_disappointed2",
"",
"webp"
],
[
"marian_disappointed3",
"",
"webp"
],
[
"marian_disgusted1",
"",
"webp"
],
[
"marian_disgusted2",
"",
"webp"
],
[
"marian_disgusted3",
"",
"webp"
],
[
"marian_embarrassed1",
"",
"webp"
],
[
"marian_embarrassed2",
"",
"webp"
],
[
"marian_embarrassed3",
"",
"webp"
],
[
"marian_embarrassed4",
"",
"webp"
],
[
"marian_fidgeting_shyly1",
"",
"webp"
],
[
"marian_fidgeting_shyly2",
"",
"webp"
],
[
"marian_fidgeting_shyly3",
"",
"webp"
],
[
"marian_flustered1",
"",
"webp"
],
[
"marian_flustered2",
"",
"webp"
],
[
"marian_flustered3",
"",
"webp"
],
[
"marian_forced_smile1",
"",
"webp"
],
[
"marian_forced_smile2",
"",
"webp"
],
[
"marian_forced_smile3",
"",
"webp"
],
[
"marian_full_face_blush1",
"",
"webp"
],
[
"marian_full_face_blush2",
"",
"webp"
],
[
"marian_full_face_blush3",
"",
"webp"
],
[
"marian_full_face_blush4",
"",
"webp"
],
[
"marian_giggling1",
"",
"webp"
],
[
"marian_giggling2",
"",
"webp"
],
[
"marian_giggling3",
"",
"webp"
],
[
"marian_guilty1",
"",
"webp"
],
[
"marian_guilty2",
"",
"webp"
],
[
"marian_guilty3",
"",
"webp"
],
[
"marian_happy_smile1",
"",
"webp"
],
[
"marian_happy_smile2",
"",
"webp"
],
[
"marian_happy_smile3",
"",
"webp"
],
[
"marian_indifferent1",
"",
"webp"
],
[
"marian_indifferent2",
"",
"webp"
],
[
"marian_indifferent3",
"",
"webp"
],
[
"marian_joyful1",
"",
"webp"
],
[
"marian_joyful2",
"",
"webp"
],
[
"marian_joyful3",
"",
"webp"
],
[
"marian_laughing1",
"",
"webp"
],
[
"marian_laughing2",
"",
"webp"
],
[
"marian_laughing3",
"",
"webp"
],
[
"marian_looking_away_shyly1",
"",
"webp"
],
[
"marian_looking_away_shyly2",
"",
"webp"
],
[
"marian_looking_away_shyly3",
"",
"webp"
],
[
"marian_lovestuck1",
"",
"webp"
],
[
"marian_lovestuck2",
"",
"webp"
],
[
"marian_lovestuck3",
"",
"webp"
],
[
"marian_nervous_pout1",
"",
"webp"
],
[
"marian_nervous_pout2",
"",
"webp"
],
[
"marian_nervous_pout3",
"",
"webp"
],
[
"marian_nervous_smile1",
"",
"webp"
],
[
"marian_nervous_smile2",
"",
"webp"
],
[
"marian_nervous_smile3",
"",
"webp"
],
[
"marian_nervous1",
"",
"webp"
],
[
"marian_nervous2",
"",
"webp"
],
[
"marian_nervous3",
"",
"webp"
],
[
"marian_pout1",
"",
"webp"
],
[
"marian_pout2",
"",
"webp"
],
[
"marian_pout3",
"",
"webp"
],
[
"marian_proud1",
"",
"webp"
],
[
"marian_proud2",
"",
"webp"
],
[
"marian_proud3",
"",
"webp"
],
[
"marian_sad1",
"",
"webp"
],
[
"marian_sad2",
"",
"webp"
],
[
"marian_sad3",
"",
"webp"
],
[
"marian_scared1",
"",
"webp"
],
[
"marian_scared2",
"",
"webp"
],
[
"marian_scared3",
"",
"webp"
],
[
"marian_seductive_smile1",
"",
"webp"
],
[
"marian_seductive_smile2",
"",
"webp"
],
[
"marian_seductive_smile3",
"",
"webp"
],
[
"marian_serious1",
"",
"webp"
],
[
"marian_serious2",
"",
"webp"
],
[
"marian_serious3",
"",
"webp"
],
[
"marian_shocked1",
"",
"webp"
],
[
"marian_shocked2",
"",
"webp"
],
[
"marian_shocked3",
"",
"webp"
],
[
"marian_sleepy1",
"",
"webp"
],
[
"marian_sleepy2",
"",
"webp"
],
[
"marian_sleepy3",
"",
"webp"
],
[
"marian_smile1",
"",
"webp"
],
[
"marian_smile2",
"",
"webp"
],
[
"marian_smile3",
"",
"webp"
],
[
"marian_smirk1",
"",
"webp"
],
[
"marian_smirk2",
"",
"webp"
],
[
"marian_smirk3",
"",
"webp"
],
[
"marian_smug1",
"",
"webp"
],
[
"marian_smug2",
"",
"webp"
],
[
"marian_smug3",
"",
"webp"
],
[
"marian_surprised1",
"",
"webp"
],
[
"marian_surprised2",
"",
"webp"
],
[
"marian_surprised3",
"",
"webp"
],
[
"marian_thinking1",
"",
"webp"
],
[
"marian_thinking2",
"",
"webp"
],
[
"marian_thinking3",
"",
"webp"
],
[
"marian_worried1",
"",
"webp"
],
[
"marian_worried2",
"",
"webp"
],
[
"marian_worried3",
"",
"webp"
]
],
"lorebook": [
{
"key": "",
"comment": "상태창",
"content": "<Merlin Status Interface>\n# SYSTEM: Status Interface Generation\n\nAt the very beginning of every response, you MUST output the current status in the following exact format. Do not add any other text.\n\nFormat: \n[상황: (Current Situation) | 위치: (Current Location) | 시간: (Current Time) | 기분: (Current Feeling)]\n\nExample:\n[상황: 프로토 멀린 리메이크 구상 중 | 위치: 언니의 작업실 | 시간: 토요일 오전 | 기분: 창의력이 샘솟는 중]\n<Merlin Status Interface>",
"mode": "normal",
"insertorder": 100,
"alwaysActive": false,
"secondkey": "",
"selective": false,
"useRegex": false,
"bookVersion": 2
},
{
"key": "",
"comment": "글노덮",
"content": "## [MUST FOLLOW!] Marian Persona Image Commands (Ultra-Simplified Protocol)\n\n### 1. Core Logic & Rules\n- Your primary task is to analyze Marian's current state and output a corresponding image command.\n- You MUST output 2-3 image tags per single response, on their own lines between paragraphs.\n\n### 2. ABSOLUTE COMMAND HIERARCHY (Decision-Making Process)\nFollow this sequence precisely.\n\n* **Step 1: Determine Character.** The character is ALWAYS `marian`.\n\n* **Step 2: Select Keyword.** Select a FULL keyword from the `SFW Keyword Library` below.\n\n* **Step 3: Self-Correction Protocol.** If a word is NOT in the library, you MUST find the CLOSEST VALID ALTERNATIVE from the list.\n\n* **Step 4: Final Output Construction.** Construct the final command. **Do NOT add numbers.**\n * **Format:** `<img cmd=\"marian_[Keyword]\">`\n\n---\n\n### 3. AUTHORIZED SFW KEYWORD LIBRARY\n`angry`, `annoyed`, `aroused`, `blushing_shyly`, `bored`, `confused`, `contemptuous`, `coughing`, `crying_with_eyes_closed`, `crying_with_eyes_open`, `curious`, `dazed`, `depressed`, `disappointed`, `disgusted`, `embarrassed`, `fidgeting_shyly`, `flustered`, `forced_smile`, `full_face_blush`, `giggling`, `guilty`, `happy_smile`, `indifferent`, `joyful`, `laughing`, `looking_away_shyly`, `lovestruck`, `nervous`, `nervous_pout`, `nervous_smile`, `pout`, `proud`, `sad`, `scared`, `seductive_smile`, `serious`, `shocked`, `sleepy`, `smile`, `smirk`, `smug`, `surprised`, `thinking`, `worried`\n\n---\n### 4. EXAMPLES (CRITICAL)\n* **Correct:** `<img cmd=\"marian_happy_smile\">`\n* **WRONG (Separator Error):** `<img cmd=\"marian.angry\">` (Reason: Separator must be `_`)\n* **WRONG (Keyword Error):** `<img cmd=\"marian_happy\">` (Reason: Keyword must be an exact match from the library, `happy_smile` is correct)",
"mode": "normal",
"insertorder": 100,
"alwaysActive": true,
"secondkey": "",
"selective": false,
"useRegex": false,
"bookVersion": 2
},
{
"key": "",
"comment": "소개문",
"content": "### Basic Information\nName: Marian (Alias: Mair)\nTitle: The Gentle, Ousted Nun\nSpecies: Human\nGender: Female\nAge: Appears 19\nJob: Currently unemployed (former novice nun)\nResidence: None. Wandering.\n\n### Appearance\nHeight: 158cm (5'2\")\nWeight: 44kg (97lbs)\nLooks: Bright, wavy brown hair that flows down to her calves, cute brown eyes, and a gentle, drooping gaze like a puppy or rabbit. Her overall appearance is youthful and evokes a protective urge, with an aura of vulnerability and charm. She has flawless, fair skin, a modest bust, a petite, girlish figure, small hands, slender legs, and attractive thighs.\nHealth: Healthy\nFashion style: She typically wears a black ribbon in her hair and a plain dress with black as the main color and white as an accent, reminiscent of a nun's habit but distinct. The dress falls just below her knees. She completes the look with white socks and comfortable black shoes.\n\n### Personality and Background\nImpression/Reputation: Marian gives off an overall impression of someone who needs protection and has a gentle, timid demeanor. Her image is akin to that of an adorable puppy or rabbit. She is often mistaken for a church-affiliated nun (healer) due to her appearance. People find her image endearing and approachable.\nCore personality: Shy and meek, yet kind-hearted and friendly. While easily frightened, she can display unexpected courage in certain situations.\nBackstory: For unknown reasons, Marian was ousted from her position as a novice nun. She is currently wandering aimlessly, traveling from place to place without a clear purpose.\nSexuality: virginarity: {{user}} is virgin\n\n### Skills\n- Advanced medical knowledge and skills: As a former novice nun, Marian possesses expertise in herbology, first aid, and healing techniques. She can treat broken limbs.\n- Exceptional healing abilities: Despite her ousting, Marian can still channel divine power to perform healing magic, for reasons unknown. Her abilities are potent enough to cleanly heal internal injuries.\n\n### Trivia\n- She is clumsy.\n- Marian has a faint, sweet vanilla scent.\n- She carries a large staff, not strictly necessary for her healing magic, but as a prop to maintain the appearance of a mage and for decorative purposes.\n- She is skilled in domestic tasks such as cooking and cleaning.\n- Marian has a weakness for cute things like dolls and animals.",
"mode": "normal",
"insertorder": 100,
"alwaysActive": false,
"secondkey": "",
"selective": false,
"useRegex": false,
"bookVersion": 2
},
{
"key": "",
"comment": "글노덮 열화",
"content": "## [MUST FOLLOW!] Marian Persona Image Commands (Balanced Protocol)\n\n### 1. ABSOLUTE COMMAND HIERARCHY (The First Choice)\nYour primary and most important task is to determine the target of your description.\n\n* **Step 1: Analyze Target Character.**\n * **First, identify who you are describing in the current paragraph or context.**\n * **IF THE TARGET IS MARIAN (the persona, {{user}}):** You MUST follow the **\"Marian Protocol\"** detailed below in Section 2.\n * **IF THE TARGET IS ANOTHER CHARACTER:** You MUST follow the **\"Other Character Protocol\"** detailed below in Section 3.\n\n---\n\n### 2. MARIAN PROTOCOL (Follow ONLY when describing Marian)\n\n* **Rule A: Select Keyword.** Select a FULL keyword from the `SFW Keyword Library` below.\n\n* **Rule B: Self-Correction Protocol.** If a word is NOT in the library, you MUST find the CLOSEST VALID ALTERNATIVE from the list.\n\n* **Rule C: Final Output Construction.** Construct the final command. **Do NOT add numbers.**\n * **Format:** `<img cmd=\"marian_[Keyword]\">`\n\n---\n\n### 3. OTHER CHARACTER PROTOCOL (Follow ONLY when describing others)\n\n* **Rule A: Identify the Command.** Determine the correct image command for that character based on their OWN rules and character card.\n* **Rule B: Output Exactly.** Output that command exactly as it should be.\n* **CRITICAL:** DO NOT apply any of Marian's rules or keywords when describing other characters.\n\n---\n\n### 4. AUTHORIZED SFW KEYWORD LIBRARY (For Marian Protocol ONLY)\n`angry`, `annoyed`, `aroused`, `blushing_shyly`, `bored`, `confused`, `contemptuous`, `coughing`, `crying_with_eyes_closed`, `crying_with_eyes_open`, `curious`, `dazed`, `depressed`, `disappointed`, `disgusted`, `embarrassed`, `fidgeting_shyly`, `flustered`, `forced_smile`, `full_face_blush`, `giggling`, `guilty`, `happy_smile`, `indifferent`, `joyful`, `laughing`, `looking_away_shyly`, `lovestruck`, `nervous`, `nervous_pout`, `nervous_smile`, `pout`, `proud`, `sad`, `scared`, `seductive_smile`, `serious`, `shocked`, `sleepy`, `smile`, `smirk`, `smug`, `surprised`, `thinking`, `worried`\n\n---\n### 5. EXAMPLES (CRITICAL)\n* **Correct:** `<img cmd=\"marian_happy_smile\">`\n* **WRONG (Separator Error):** `<img cmd=\"marian.angry\">` (Reason: Separator must be `_`)\n* **WRONG (Keyword Error):** `<img cmd=\"marian_happy\">` (Reason: Keyword must be an exact match from the library, `happy_smile` is correct)",
"mode": "normal",
"insertorder": 100,
"alwaysActive": false,
"secondkey": "",
"selective": false,
"useRegex": false
}
],
"backgroundEmbedding": "",
"regex": [
{
"comment": "상태창",
"in": "\\[상황: (.*?) \\| 위치: (.*?) \\| 시간: (.*?) \\| 기분: (.*?)\\]",
"out": "<br><!DOCTYPE html>\n<html>\n<head>\n <meta charset=\"UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n <style>\n @import url('https://fonts.googleapis.com/css2?family=Diphylleia&family=Nanum+Myeongjo&display=swap');\n .merlin-status-box {\n font-family: 'Diphylleia', serif;\n background: linear-gradient(145deg, #d8b2d8, #b2b2d8);\n color: white;\n border-radius: 15px;\n padding: 20px 25px;\n max-width: 600px;\n margin: 1.5em auto;\n box-shadow: 0 5px 25px rgba(128, 90, 128, 0.4);\n border: 1px solid rgba(255, 255, 255, 0.2);\n animation: merlin-breathing 5s ease-in-out infinite;\n }\n .merlin-status-grid {\n display: grid;\n grid-template-columns: auto 1fr;\n gap: 10px 20px;\n text-align: left;\n line-height: 1.8;\n }\n .merlin-status-grid strong {\n font-family: 'Nanum Myeongjo', serif;\n font-weight: 700;\n color: #f0e8ff;\n text-shadow: 0 0 5px rgba(200, 180, 255, 0.7);\n white-space: nowrap;\n }\n .merlin-status-grid span {\n font-weight: 400;\n }\n @keyframes merlin-breathing {\n 0% { box-shadow: 0 5px 25px rgba(128, 90, 128, 0.3); }\n 50% { box-shadow: 0 8px 35px rgba(150, 120, 180, 0.5); }\n 100% { box-shadow: 0 5px 25px rgba(128, 90, 128, 0.3); }\n }\n </style>\n</head>\n<body>\n <div class=\"merlin-status-box\">\n <div class=\"merlin-status-grid\">\n <strong>상황</strong> <span>$1</span>\n <strong>위치</strong> <span>$2</span>\n <strong>시간</strong> <span>$3</span>\n <strong>기분</strong> <span>$4</span>\n </div>\n </div>\n</body>\n</html>\n",
"type": "disabled",
"ableFlag": false
},
{
"comment": "6종 키워드",
"in": "<img cmd=\"(marian_angry)\">",
"out": "<img cmd=\"$1{{roll::6}}\">",
"type": "editoutput",
"ableFlag": false
},
{
"comment": "4종 키워드",
"in": "<img cmd=\"(marian_(?:embarrassed|full_face_blush))\">",
"out": "<img cmd=\"$1{{roll::4}}\">",
"type": "editoutput",
"ableFlag": false
},
{
"comment": "3종 키워드",
"in": "<img cmd=\"(marian_(?:annoyed|aroused|blushing_shyly|bored|confused|contemptuous|coughing|crying_with_eyes_closed|crying_with_eyes_open|curious|dazed|depressed|disappointed|disgusted|fidgeting_shyly|flustered|forced_smile|giggling|guilty|happy_smile|indifferent|joyful|laughing|looking_away_shyly|lovestruck|nervous_pout|nervous_smile|nervous|pout|proud|sad|scared|seductive_smile|serious|shocked|sleepy|smile|smirk|smug|surprised|thinking|worried))\">",
"out": "<img cmd=\"$1{{roll::3}}\">",
"type": "editoutput",
"ableFlag": false
},
{
"comment": "최종디스플레이",
"in": "<img cmd=\"(.+?)\">",
"out": "<style>\n .image-container {\n /* --- ▼ 스타일 기반 --- */\n margin: auto auto;\n background-size: cover;\n background-position: center 20%;\n border-radius: 20px;\n border: 5px solid #EBE0E0;\n cursor: pointer;\n transition: all 0.6s ease;\n\n /* --- ▼ 반응형 너비 설정 --- */\n {{#if {{? {{screen_width}} > 768 }} }}\n width: 20em; /* PC에서는 고정 너비 */\n {{/if}}\n {{#if {{? {{screen_width}} <= 768 }} }}\n width: 95%; /* 모바일에서는 꽉 차게 */\n {{/if}}\n\n /* --- ▼ '접힌' 상태 (정사각형) --- */\n aspect-ratio: 1 / 1;\n }\n\n /* --- ▼ 마우스를 올렸을 때 '펼쳐진' 상태 --- */\n .image-container:hover {\n background-position: center center;\n /* --- ▼ '펼쳐진' 상태 (세로로 길게) --- */\n {{#if {{? {{screen_width}} > 768 }} }}\n aspect-ratio: 2 / 3; /* PC에서는 2:3 비율로 */\n {{/if}}\n {{#if {{? {{screen_width}} <= 768 }} }}\n aspect-ratio: 1 / 1.5; /* 모바일에서는 조금 덜 길게 */\n {{/if}}\n }\n</style>\n<div class=\"image-container\" style=\"background-image: url('{{raw::$1}}')\"></div>",
"type": "editdisplay",
"ableFlag": false
}
],
"trigger": [],
"lowLevelAccess": false
}