[
{
    "id": "Ny预设",
    "scriptName": "Ny预设一步正则",
    "findRegex": "■|<details>\\s*<summary>(英文版|日本語版)<\\/summary>\\s*[\\s\\S]*?<\\/details>|<thinking>[\\s\\S]*?<\\/thinking>",
    "replaceString": "",
    "trimStrings": [],
    "placement": [
        1,
        2
    ],
    "disabled": false,
    "markdownOnly": true,
    "promptOnly": true,
    "runOnEdit": true,
    "substituteRegex": 0,
    "minDepth": null,
    "maxDepth": null
},
{
    "id": "Ny预设",
    "scriptName": "Ny-去除之前的四个选项",
    "findRegex": "<small>[\\s\\S]*?</small>",
    "replaceString": "",
    "trimStrings": [],
    "placement": [
        1,
        2
    ],
    "disabled": false,
    "markdownOnly": true,
    "promptOnly": true,
    "runOnEdit": true,
    "substituteRegex": 0,
    "minDepth": 2,
    "maxDepth": null
},
{
    "id": "Ny预设",
    "scriptName": "Ny-4个选项沉浸式互动（需小白x渲染)",
    "findRegex": "/<small>\\s*([\\s\\S]*?)\\s*1️⃣\\s*([\\s\\S]*?)\\s*2️⃣\\s*([\\s\\S]*?)\\s*3️⃣\\s*([\\s\\S]*?)\\s*4️⃣\\s*([\\s\\S]*?)\\s*tips[:：]\\s*([\\s\\S]*?)\\s*<\\/small>/i",
    "replaceString": "```\n<!DOCTYPE html>\n<html lang=\"zh-CN\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\">\n    <style>\n        * { box-sizing: border-box; }\n        body { margin: 0; padding: 10px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; background: transparent; display: flex; justify-content: center; align-items: center; min-height: 100vh; color: #fff; text-shadow: 0 1px 3px rgba(0, 0, 0, 0.5); }\n        .glass-card { width: 100%; max-width: 100%; padding: 12px; border-radius: 16px; background: rgba(15, 15, 20, 0.25); backdrop-filter: blur(30px); -webkit-backdrop-filter: blur(30px); border: 1px solid rgba(255, 255, 255, 0.15); box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2); transition: all 0.5s cubic-bezier(0.25, 0.8, 0.25, 1); overflow: hidden; }\n        .glass-card.step-completed { padding: 0; background: transparent; border-color: transparent; box-shadow: none; backdrop-filter: none; -webkit-backdrop-filter: none; }\n        .header { font-size: 13px; color: rgba(255, 255, 255, 0.85); margin-bottom: 10px; padding-bottom: 8px; border-bottom: 1px solid rgba(255,255,255,0.1); font-weight: 600; letter-spacing: 0.5px; transition: opacity 0.3s ease; }\n        .header.step-completed { display: none; }\n        .options-list { display: flex; flex-direction: column; gap: 6px; transition: all 0.5s ease; counter-reset: option-idx; }\n        .option-btn { background: rgba(255, 255, 255, 0.05); border: 1px solid rgba(255, 255, 255, 0.05); color: #fff; padding: 10px 12px; border-radius: 10px; cursor: pointer; text-align: left; font-size: 13.5px; line-height: 1.4; display: flex; align-items: flex-start; position: relative; counter-increment: option-idx; transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1); }\n        .option-icon { display: none; }\n        .option-btn::before { content: counter(option-idx, decimal-leading-zero); font-family: 'Roboto Mono', monospace, sans-serif; font-size: 11px; color: rgba(255, 255, 255, 0.6); margin-right: 12px; margin-top: 2px; font-weight: bold; letter-spacing: -0.5px; transition: all 0.3s ease; }\n        @media (hover: hover) {\n            .option-btn:hover { transform: translateY(-2px); background: rgba(255, 255, 255, 0.12); border-color: rgba(255, 255, 255, 0.3); box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); }\n            .option-btn:hover::before { color: rgba(255, 255, 255, 1); transform: translateX(4px); text-shadow: 0 0 5px rgba(255, 255, 255, 0.5); }\n        }\n        .option-btn:active { transform: scale(0.98); background: rgba(255,255,255,0.15); }\n        .option-btn.fade-out { opacity: 0; height: 0; padding: 0; margin: 0; border: 0; overflow: hidden; transform: scale(0.8); }\n        .option-btn.selected-highlight { background: rgba(255, 255, 255, 0.1); border: 1px solid rgba(255, 255, 255, 0.2); color: #ffffff; font-weight: 500; letter-spacing: 1px; box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2), inset 0 1px 1px rgba(255, 255, 255, 0.3), inset 0 -1px 1px rgba(255, 255, 255, 0.1); backdrop-filter: blur(15px); -webkit-backdrop-filter: blur(15px); pointer-events: none; margin: 0; width: 100%; z-index: 10; justify-content: center; text-align: center; align-items: center; padding: 12px; }\n        .option-btn.selected-highlight::before { display: none; }\n        .tips-box { margin-top: 10px; padding: 10px 12px; background: rgba(0, 0, 0, 0.2); border-radius: 8px; font-size: 12px; color: rgba(255, 255, 255, 0.7); border-left: 2px solid rgba(255, 255, 255, 0.4); line-height: 1.35; transition: all 0.3s ease; }\n        .tips-box.hidden { display: none; }\n        .tips-title { color: rgba(255, 255, 255, 0.9); font-weight: bold; margin-right: 4px; }\n    </style>\n</head>\n<body>\n    <div class=\"glass-card\" id=\"mainCard\">\n        <div class=\"header\" id=\"headerTitle\">$1</div>\n        <div class=\"options-list\" id=\"optionList\">\n            <button class=\"option-btn\" onclick=\"handleClick(this)\">\n                <span class=\"option-icon\">1️⃣</span><span>$2</span>\n            </button>\n            <button class=\"option-btn\" onclick=\"handleClick(this)\">\n                <span class=\"option-icon\">2️⃣</span><span>$3</span>\n            </button>\n            <button class=\"option-btn\" onclick=\"handleClick(this)\">\n                <span class=\"option-icon\">3️⃣</span><span>$4</span>\n            </button>\n             <button class=\"option-btn\" onclick=\"handleClick(this)\">\n                <span class=\"option-icon\">4️⃣</span><span>$5</span>\n            </button>\n        </div>\n        <div class=\"tips-box\" id=\"tipsBox\">\n            <span class=\"tips-title\">Tips:</span>$6\n        </div>\n    </div>\n    <script>\n        const runSTCommand = async (command) => {\n            if (typeof STscript === 'function') { return await STscript(command); }\n        };\n        async function handleClick(selectedBtn) {\n            let spans = selectedBtn.querySelectorAll('span');\n            let rawText = spans.length > 1 ? spans[1].innerText : selectedBtn.innerText;\n            let cleanText = rawText.replace(/\\|/g, \"\").replace(/[\\r\\n]+/g, \" \").trim();\n            \n            const mainCard = document.getElementById('mainCard');\n            const header = document.getElementById('headerTitle');\n            const container = document.getElementById('optionList');\n            const allBtns = container.querySelectorAll('.option-btn');\n            const tips = document.getElementById('tipsBox');\n\n            allBtns.forEach(btn => btn.style.pointerEvents = 'none');\n            mainCard.classList.add('step-completed');\n            header.classList.add('step-completed');\n            if(tips) tips.classList.add('hidden');\n\n            allBtns.forEach(btn => {\n                if (btn === selectedBtn) { \n                    btn.classList.add('selected-highlight'); \n                    btn.innerHTML = \"⚓ 世界线的分支已经选定\"; \n                } else { \n                    btn.classList.add('fade-out'); \n                }\n            });\n\n            try {\n                await runSTCommand(`/sendas name=Ny规则定下的走向 compact=true ${cleanText}`);\n                setTimeout(async () => { await runSTCommand('/trigger'); }, 500);\n            } catch (error) {\n                selectedBtn.innerText = \"❌ 错误\";\n            }\n        }\n    </script>\n</body>\n</html>\n```",
    "trimStrings": [],
    "placement": [
        1,
        2
    ],
    "disabled": false,
    "markdownOnly": true,
    "promptOnly": false,
    "runOnEdit": true,
    "substituteRegex": 0,
    "minDepth": null,
    "maxDepth": null
},
{
    "id": "Ny预设",
    "scriptName": "Ny-4个选项点击输入（需小白x渲染）",
    "findRegex": "/<small>\\s*([\\s\\S]*?)\\s*1️⃣\\s*([\\s\\S]*?)\\s*2️⃣\\s*([\\s\\S]*?)\\s*3️⃣\\s*([\\s\\S]*?)\\s*4️⃣\\s*([\\s\\S]*?)\\s*tips[:：]\\s*([\\s\\S]*?)\\s*<\\/small>/i",
    "replaceString": "```\n<!DOCTYPE html>\n<html lang=\"zh-CN\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\">\n    <style>\n        * { box-sizing: border-box; }\n        body { margin: 0; padding: 10px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; background: transparent; display: flex; justify-content: center; align-items: center; min-height: 100vh; color: #fff; text-shadow: 0 1px 3px rgba(0, 0, 0, 0.5); }\n        .glass-card { width: 100%; max-width: 100%; padding: 12px; border-radius: 16px; background: rgba(15, 15, 20, 0.25); backdrop-filter: blur(30px); -webkit-backdrop-filter: blur(30px); border: 1px solid rgba(255, 255, 255, 0.15); box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2); transition: all 0.5s cubic-bezier(0.25, 0.8, 0.25, 1); overflow: hidden; }\n        .glass-card.step-completed { padding: 0; background: transparent; border-color: transparent; box-shadow: none; backdrop-filter: none; -webkit-backdrop-filter: none; }\n        .header { font-size: 13px; color: rgba(255, 255, 255, 0.85); margin-bottom: 10px; padding-bottom: 8px; border-bottom: 1px solid rgba(255,255,255,0.1); font-weight: 600; letter-spacing: 0.5px; transition: opacity 0.3s ease; }\n        .header.step-completed { display: none; }\n        .options-list { display: flex; flex-direction: column; gap: 6px; transition: all 0.5s ease; counter-reset: option-idx; }\n        .option-btn { background: rgba(255, 255, 255, 0.05); border: 1px solid rgba(255, 255, 255, 0.05); color: #fff; padding: 10px 12px; border-radius: 10px; cursor: pointer; text-align: left; font-size: 13.5px; line-height: 1.4; display: flex; align-items: flex-start; position: relative; counter-increment: option-idx; transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1); }\n        .option-icon { display: none; }\n        .option-btn::before { content: counter(option-idx, decimal-leading-zero); font-family: 'Roboto Mono', monospace, sans-serif; font-size: 11px; color: rgba(255, 255, 255, 0.6); margin-right: 12px; margin-top: 2px; font-weight: bold; letter-spacing: -0.5px; transition: all 0.3s ease; }\n        @media (hover: hover) {\n            .option-btn:hover { transform: translateY(-2px); background: rgba(255, 255, 255, 0.12); border-color: rgba(255, 255, 255, 0.3); box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); }\n            .option-btn:hover::before { color: rgba(255, 255, 255, 1); transform: translateX(4px); text-shadow: 0 0 5px rgba(255, 255, 255, 0.5); }\n        }\n        .option-btn:active { transform: scale(0.98); background: rgba(255,255,255,0.15); }\n        .option-btn.fade-out { opacity: 0; height: 0; padding: 0; margin: 0; border: 0; overflow: hidden; transform: scale(0.8); }\n        .option-btn.selected-highlight { background: rgba(255, 255, 255, 0.1); border: 1px solid rgba(255, 255, 255, 0.2); color: #ffffff; font-weight: 500; letter-spacing: 1px; box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2), inset 0 1px 1px rgba(255, 255, 255, 0.3), inset 0 -1px 1px rgba(255, 255, 255, 0.1); backdrop-filter: blur(15px); -webkit-backdrop-filter: blur(15px); pointer-events: none; margin: 0; width: 100%; z-index: 10; justify-content: center; text-align: center; align-items: center; padding: 12px; }\n        .option-btn.selected-highlight::before { display: none; }\n        .tips-box { margin-top: 10px; padding: 10px 12px; background: rgba(0, 0, 0, 0.2); border-radius: 8px; font-size: 12px; color: rgba(255, 255, 255, 0.7); border-left: 2px solid rgba(255, 255, 255, 0.4); line-height: 1.35; transition: all 0.3s ease; }\n        .tips-box.hidden { display: none; }\n        .tips-title { color: rgba(255, 255, 255, 0.9); font-weight: bold; margin-right: 4px; }\n    </style>\n</head>\n<body>\n    <div class=\"glass-card\" id=\"mainCard\">\n        <div class=\"header\" id=\"headerTitle\">$1</div>\n        <div class=\"options-list\" id=\"optionList\">\n            <button class=\"option-btn\" onclick=\"handleClick(this)\">\n                <span class=\"option-icon\">1️⃣</span><span>$2</span>\n            </button>\n            <button class=\"option-btn\" onclick=\"handleClick(this)\">\n                <span class=\"option-icon\">2️⃣</span><span>$3</span>\n            </button>\n            <button class=\"option-btn\" onclick=\"handleClick(this)\">\n                <span class=\"option-icon\">3️⃣</span><span>$4</span>\n            </button>\n            <button class=\"option-btn\" onclick=\"handleClick(this)\">\n                <span class=\"option-icon\">4️⃣</span><span>$5</span>\n            </button>\n        </div>\n        <div class=\"tips-box\" id=\"tipsBox\">\n            <span class=\"tips-title\">Tips:</span>$6\n        </div>\n    </div>\n    <script>\n        const runSTCommand = async (command) => {\n            if (typeof STscript === 'function') { return await STscript(command); }\n        };\n\n        async function handleClick(selectedBtn) {\n            let spans = selectedBtn.querySelectorAll('span');\n            let rawText = spans.length > 1 ? spans[1].innerText : selectedBtn.innerText;\n            // Made By Naiya\n            let cleanText = rawText.replace(/\\|/g, \"\").replace(/[\\r\\n]+/g, \" \").trim();\n            \n            const mainCard = document.getElementById('mainCard');\n            const header = document.getElementById('headerTitle');\n            const container = document.getElementById('optionList');\n            const allBtns = container.querySelectorAll('.option-btn');\n            const tips = document.getElementById('tipsBox');\n\n            // 禁用点击并播放动效\n            allBtns.forEach(btn => btn.style.pointerEvents = 'none');\n            mainCard.classList.add('step-completed');\n            header.classList.add('step-completed');\n            if(tips) tips.classList.add('hidden');\n\n            allBtns.forEach(btn => {\n                if (btn === selectedBtn) { \n                    btn.classList.add('selected-highlight'); \n                    btn.innerHTML = \"✏️ 已填入输入框\"; \n                } else { \n                    btn.classList.add('fade-out'); \n                }\n            });\n\n            try {\n                await runSTCommand(`/setinput ${cleanText}`);\n                // await runSTCommand('/trigger'); \n            } catch (error) {\n                selectedBtn.innerText = \"❌ 错误\";\n            }\n        }\n    </script>\n</body>\n</html>\n```",
    "trimStrings": [],
    "placement": [
        1,
        2
    ],
    "disabled": true,
    "markdownOnly": true,
    "promptOnly": false,
    "runOnEdit": false,
    "substituteRegex": 1,
    "minDepth": null,
    "maxDepth": null
},
{
    "id": "Ny预设",
    "scriptName": "Ny-去除平行故事",
    "findRegex": "<平行故事>[\\s\\S]*?</平行故事>",
    "replaceString": "",
    "trimStrings": [],
    "placement": [
        1,
        2
    ],
    "disabled": true,
    "markdownOnly": true,
    "promptOnly": true,
    "runOnEdit": true,
    "substituteRegex": 0,
    "minDepth": null,
    "maxDepth": null
},
{
    "id": "Ny预设",
    "scriptName": "Ny预设-只保留最后3次尾部总结",
    "findRegex": "<details>\\s*<summary>(?:Previous events|summary)</summary>\\s*<p>[^<]*?</p>\\s*</details>",
    "replaceString": "",
    "trimStrings": [],
    "placement": [
        1,
        2
    ],
    "disabled": true,
    "markdownOnly": true,
    "promptOnly": true,
    "runOnEdit": true,
    "substituteRegex": 0,
    "minDepth": 3,
    "maxDepth": null
}
]