{"id":"0133edbe-b94e-49c2-b435-386311223e12","authorId":"dVtnaVThBTYkMKpIrMblJ8gb8Ygt8toT","title":"牧神记大世界","description":"荒蛮与神性交织的诡谲东方世界。这里不仅有壮丽的山河社稷，更有隐藏在历史尘埃下的上古秘辛。主角秦牧从残缺的大墟中走出，揭开“牧神”背后的惊天棋局。天道有缺，神魔皆棋子，一场关于自由与束缚的史诗画卷就此展开。","background":"oqskeoqr39zmawnrlyzqhu05.webp","backgroundWidth":672,"backgroundHeight":956,"cover":"dsusvxvrwpr03bacwionoq03.webp","coverWidth":672,"coverHeight":956,"introPage":"jjdp579xffnhj6klwu9uejj3.html","changelog":"","createdAt":"2026-07-13T02:17:04.863Z","updatedAt":"2026-07-26T23:23:17.759Z","initPublicAt":"2026-07-13T03:05:54.627Z","renderTemplate":null,"assistantRegexReplace":[{"enabled":false,"applyMode":"all","messageRole":"all","regex":"","replaceString":"<!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=yes\" />\n    <title>牧神记 · 命运抉择</title>\n    <link href=\"https://fonts.googleapis.com/css2?family=Ma+Shan+Zheng&family=Noto+Serif+SC:wght@300;400;700&display=swap\" rel=\"stylesheet\" />\n    <style>\n        /* ===== 基础样式 ===== */\n        * { margin: 0; padding: 0; box-sizing: border-box; }\n        body {\n            min-height: 100vh;\n            display: flex;\n            justify-content: center;\n            align-items: center;\n            background: #0b0818;\n            font-family: 'Noto Serif SC', serif;\n            padding: 16px;\n        }\n        .card {\n            max-width: 440px;\n            width: 100%;\n            background: rgba(14, 10, 28, 0.88);\n            backdrop-filter: blur(16px);\n            border-radius: 28px;\n            padding: 24px;\n            border: 1px solid rgba(200, 170, 100, 0.25);\n            box-shadow: 0 20px 60px rgba(0,0,0,0.7);\n            color: #d4c8b0;\n        }\n        .status-bar {\n            display: flex;\n            justify-content: space-between;\n            font-size: 13px;\n            color: rgba(210,195,175,0.6);\n            padding-bottom: 12px;\n            border-bottom: 1px solid rgba(200,170,100,0.1);\n            margin-bottom: 16px;\n        }\n        .title {\n            font-family: 'Ma Shan Zheng', cursive;\n            font-size: 34px;\n            color: #e8d08a;\n            text-shadow: 0 0 20px rgba(200,170,80,0.15);\n            letter-spacing: 4px;\n        }\n        .title small {\n            font-size: 18px;\n            color: rgba(200,170,100,0.35);\n            font-weight: 300;\n            margin-left: 6px;\n        }\n        .title-line {\n            width: 60px;\n            height: 2px;\n            background: linear-gradient(90deg, #c9a84c, transparent);\n            margin: 6px 0 16px 0;\n        }\n        .step-indicator {\n            display: flex;\n            gap: 10px;\n            font-size: 12px;\n            color: rgba(200,170,100,0.3);\n            margin-bottom: 14px;\n        }\n        .step-dot {\n            width: 8px;\n            height: 8px;\n            border-radius: 50%;\n            background: rgba(200,170,100,0.15);\n            transition: 0.3s;\n        }\n        .step-dot.active { background: #c9a84c; box-shadow: 0 0 12px rgba(200,170,80,0.3); }\n        .step-dot.done { background: rgba(200,170,100,0.4); }\n        .step-label { margin-right: 4px; }\n        .step-label.active { color: rgba(200,170,100,0.6); }\n\n        .choice-section { margin-bottom: 12px; }\n        .choice-label {\n            font-size: 13px;\n            color: rgba(210,195,175,0.5);\n            margin-bottom: 8px;\n            display: flex;\n            gap: 8px;\n            align-items: center;\n        }\n        .badge {\n            font-size: 10px;\n            background: rgba(200,170,100,0.08);\n            padding: 1px 10px;\n            border-radius: 20px;\n            color: rgba(200,170,100,0.3);\n        }\n        .choice-grid {\n            display: flex;\n            flex-direction: column;\n            gap: 8px;\n        }\n        .choice-btn {\n            background: rgba(200,170,100,0.04);\n            border: 1px solid rgba(200,170,100,0.08);\n            border-radius: 12px;\n            padding: 10px 14px;\n            color: rgba(210,195,180,0.7);\n            font-size: 14px;\n            cursor: pointer;\n            transition: all 0.2s;\n            display: flex;\n            align-items: center;\n            gap: 10px;\n            width: 100%;\n            text-align: left;\n        }\n        .choice-btn:hover {\n            border-color: rgba(200,170,100,0.25);\n            background: rgba(200,170,100,0.06);\n            transform: translateX(3px);\n        }\n        .choice-btn.selected {\n            border-color: #c9a84c;\n            background: rgba(200,170,100,0.08);\n            color: #e8d08a;\n        }\n        .choice-btn .icon { font-size: 18px; width: 28px; opacity: 0.5; }\n        .choice-btn.selected .icon { opacity: 1; }\n        .choice-btn .tag {\n            font-size: 10px;\n            color: rgba(200,170,100,0.15);\n            background: rgba(200,170,100,0.04);\n            padding: 1px 8px;\n            border-radius: 20px;\n            margin-left: auto;\n        }\n\n        .result-box {\n            padding: 14px 18px;\n            border-radius: 14px;\n            background: rgba(200,170,100,0.03);\n            border: 1px solid rgba(200,170,100,0.06);\n            margin-top: 4px;\n        }\n        .result-box .r-title {\n            color: #e8d08a;\n            font-size: 15px;\n            display: flex;\n            gap: 8px;\n            align-items: center;\n            margin-bottom: 6px;\n        }\n        .result-box .r-desc {\n            font-size: 13px;\n            line-height: 1.8;\n            color: rgba(210,195,180,0.65);\n        }\n        .footer {\n            margin-top: 16px;\n            padding-top: 14px;\n            border-top: 1px solid rgba(200,170,100,0.07);\n            display: flex;\n            justify-content: space-between;\n            align-items: center;\n        }\n        .btn-reset {\n            background: rgba(200,170,100,0.04);\n            border: 1px solid rgba(200,170,100,0.06);\n            border-radius: 20px;\n            padding: 4px 16px;\n            color: rgba(200,170,100,0.2);\n            font-size: 12px;\n            cursor: pointer;\n        }\n        .btn-reset:hover {\n            border-color: rgba(200,170,100,0.15);\n            color: rgba(200,170,100,0.4);\n        }\n        .hidden { display: none !important; }\n        /* 移动端适配 */\n        @media (max-width: 420px) {\n            .title { font-size: 28px; }\n            .title small { font-size: 14px; }\n            .choice-btn { font-size: 13px; padding: 8px 12px; }\n        }\n    </style>\n</head>\n<body>\n<div class=\"card\">\n    <!-- 状态栏 -->\n    <div class=\"status-bar\">\n        <span>中国联通</span>\n        <span>2:26 100%</span>\n    </div>\n\n    <!-- 标题 -->\n    <div class=\"title\">牧神记 <small>· 大世界</small></div>\n    <div class=\"title-line\"></div>\n\n    <!-- 步骤指示器 -->\n    <div class=\"step-indicator\" id=\"stepIndicator\">\n        <span class=\"step-dot active\" id=\"dot1\"></span><span class=\"step-label active\" id=\"label1\">角色</span>\n        <span style=\"color:rgba(200,170,100,0.1);\">—</span>\n        <span class=\"step-dot\" id=\"dot2\"></span><span class=\"step-label\" id=\"label2\">抉择</span>\n        <span style=\"color:rgba(200,170,100,0.1);\">—</span>\n        <span class=\"step-dot\" id=\"dot3\"></span><span class=\"step-label\" id=\"label3\">结局</span>\n    </div>\n\n    <!-- 步骤1：选择角色 -->\n    <div class=\"choice-section\" id=\"step1\">\n        <div class=\"choice-label\">✦ 选择你的视角 <span class=\"badge\">角色</span></div>\n        <div class=\"choice-grid\">\n            <button class=\"choice-btn\" data-role=\"custom\" onclick=\"selectRole('custom')\">\n                <span class=\"icon\">⚔️</span> 自定义角色 <span class=\"tag\">自创</span>\n            </button>\n            <button class=\"choice-btn\" data-role=\"qinmu\" onclick=\"selectRole('qinmu')\">\n                <span class=\"icon\">🐉</span> 秦牧 <span class=\"tag\">主角</span>\n            </button>\n            <button class=\"choice-btn\" data-role=\"lingyuxiu\" onclick=\"selectRole('lingyuxiu')\">\n                <span class=\"icon\">🌸</span> 灵毓秀 <span class=\"tag\">女主</span>\n            </button>\n        </div>\n    </div>\n\n    <!-- 步骤2：剧情选项（动态渲染） -->\n    <div class=\"choice-section hidden\" id=\"step2\">\n        <div class=\"choice-label\">✦ 选择你的道路 <span class=\"badge\" id=\"roleBadge\">自定义</span></div>\n        <div class=\"choice-grid\" id=\"plotOptions\"></div>\n    </div>\n\n    <!-- 步骤3：结局展示 -->\n    <div class=\"choice-section hidden\" id=\"step3\">\n        <div class=\"result-box\" id=\"resultBox\">\n            <div class=\"r-title\"><span id=\"resultIcon\">📜</span> <span id=\"resultTitle\">命运已定</span></div>\n            <div class=\"r-desc\" id=\"resultDesc\">你的选择将改变大世界的走向……</div>\n        </div>\n    </div>\n\n    <!-- 底部 -->\n    <div class=\"footer\">\n        <span style=\"font-size:11px; color:rgba(180,165,145,0.2);\">一念因果</span>\n        <button class=\"btn-reset\" onclick=\"resetAll()\">⟳ 重开</button>\n    </div>\n</div>\n\n<script>\n    // ============================================================\n    //  数据 —— 完全按照您的需求\n    // ============================================================\n    const PLOT_DATA = {\n        custom: {\n            label: '自定义角色',\n            icon: '⚔️',\n            options: [\n                { id: 'custom_brother', label: '与秦牧成为兄弟', icon: '🤝', desc: '你与秦牧在大墟中相识，肝胆相照，共同破局。从此世间多了一对并肩抗天的兄弟。' },\n                { id: 'custom_enemy', label: '与秦牧反目成仇', icon: '💥', desc: '因理念分歧，你与秦牧刀剑相向。昔日知己，今朝死敌，天道棋局因你们而更加混沌。' },\n                { id: 'custom_dark', label: '堕入魔道，强行掳走灵毓秀', icon: '🌑', desc: '你被心魔吞噬，以滔天魔威掳走灵毓秀。秦牧怒发冲冠，正邪对决席卷三界。' }\n            ]\n        },\n        qinmu: {\n            label: '秦牧',\n            icon: '🐉',\n            options: [\n                { id: 'qinmu_normal', label: '正常发展剧情', icon: '⚡', desc: '秦牧循着命运轨迹前行，从大墟走出，揭开天道真相，最终成为打破棋局的关键之人。' }\n            ]\n        },\n        lingyuxiu: {\n            label: '灵毓秀',\n            icon: '🌸',\n            options: [\n                { id: 'lingyuxiu_empress', label: '正常发展，成为女皇', icon: '👑', desc: '灵毓秀历经磨难，以智慧与仁德统御四方，终成一代女皇，开创盛世。' },\n                { id: 'lingyuxiu_exile', label: '未经允许出门挑衅塞外，被留在塞外', icon: '🏜️', desc: '灵毓秀年少气盛，独自挑衅塞外势力，被困于茫茫大漠，命运从此偏离轨迹。' }\n            ]\n        }\n    };\n\n    // ============================================================\n    //  状态与DOM操作\n    // ============================================================\n    let state = { role: null, plotId: null, step: 1 };\n\n    const step1 = document.getElementById('step1');\n    const step2 = document.getElementById('step2');\n    const step3 = document.getElementById('step3');\n    const plotOptions = document.getElementById('plotOptions');\n    const roleBadge = document.getElementById('roleBadge');\n    const resultIcon = document.getElementById('resultIcon');\n    const resultTitle = document.getElementById('resultTitle');\n    const resultDesc = document.getElementById('resultDesc');\n    const dot1 = document.getElementById('dot1'), dot2 = document.getElementById('dot2'), dot3 = document.getElementById('dot3');\n    const label1 = document.getElementById('label1'), label2 = document.getElementById('label2'), label3 = document.getElementById('label3');\n\n    function updateSteps() {\n        [dot1,dot2,dot3].forEach((d,i) => {\n            d.className = 'step-dot';\n            if (i+1 === state.step) d.classList.add('active');\n            else if (i+1 < state.step) d.classList.add('done');\n        });\n        [label1,label2,label3].forEach((l,i) => {\n            l.className = 'step-label';\n            if (i+1 === state.step) l.classList.add('active');\n        });\n    }\n\n    function selectRole(roleKey) {\n        if (state.step === 3) return;\n        state.role = roleKey;\n        state.plotId = null;\n        document.querySelectorAll('[data-role]').forEach(b => b.classList.toggle('selected', b.dataset.role === roleKey));\n        state.step = 2;\n        updateSteps();\n        const data = PLOT_DATA[roleKey];\n        roleBadge.textContent = data.label;\n        plotOptions.innerHTML = '';\n        data.options.forEach((opt, idx) => {\n            const btn = document.createElement('button');\n            btn.className = 'choice-btn';\n            btn.innerHTML = `<span class=\"icon\">${opt.icon}</span> ${opt.label} <span class=\"tag\">${idx+1}</span>`;\n            btn.onclick = () => selectPlot(opt.id, roleKey);\n            plotOptions.appendChild(btn);\n        });\n        step1.classList.add('hidden');\n        step2.classList.remove('hidden');\n        step3.classList.add('hidden');\n    }\n\n    function selectPlot(plotId, roleKey) {\n        if (state.step === 3) return;\n        state.plotId = plotId;\n        // 高亮选中的选项\n        plotOptions.querySelectorAll('.choice-btn').forEach(b => b.classList.remove('selected'));\n        const data = PLOT_DATA[roleKey];\n        const opt = data.options.find(o => o.id === plotId);\n        if (opt) {\n            plotOptions.querySelectorAll('.choice-btn').forEach(b => {\n                if (b.textContent.includes(opt.label)) b.classList.add('selected');\n            });\n        }\n        state.step = 3;\n        updateSteps();\n        if (opt) {\n            resultIcon.textContent = opt.icon;\n            resultTitle.textContent = `${data.label} · ${opt.label}`;\n            resultDesc.innerHTML = opt.desc;\n        }\n        step2.classList.add('hidden');\n        step3.classList.remove('hidden');\n    }\n\n    function resetAll() {\n        state = { role: null, plotId: null, step: 1 };\n        document.querySelectorAll('[data-role]').forEach(b => b.classList.remove('selected'));\n        plotOptions.innerHTML = '';\n        step1.classList.remove('hidden');\n        step2.classList.add('hidden');\n        step3.classList.add('hidden');\n        updateSteps();\n        resultIcon.textContent = '📜';\n        resultTitle.textContent = '命运已定';\n        resultDesc.innerHTML = '你的选择将改变大世界的走向……';\n    }\n\n    updateSteps();\n</script>\n</body>\n</html>"}],"enableMemorySchema":true,"memorySchema":"{\"type\":\"object\",\"properties\":{\"秦牧剧情发展\":{\"type\":\"object\",\"description\":\"正常发展剧情\",\"properties\":{\"if\":{\"type\":\"object\",\"description\":\"遁入魔道\",\"properties\":{}},\"property2\":{\"type\":\"object\",\"description\":\"正常的剧情\"}},\"required\":[\"if\",\"property2\"]},\"灵毓秀发展剧情\":{\"type\":\"object\",\"properties\":{\"property1\":{\"type\":\"object\",\"description\":\"正常发展，成为女皇\"},\"property2\":{\"type\":\"object\",\"description\":\"未经允许出门挑衅塞外，被留在塞外\"}},\"required\":[\"property1\",\"property2\"]},\"角色视角\":{\"type\":\"object\",\"properties\":{\"property1\":{\"type\":\"object\",\"description\":\"自定义角色视角\"},\"property2\":{\"type\":\"object\",\"description\":\"秦牧视角\"},\"property3\":{\"type\":\"object\",\"description\":\"灵毓秀视角\"}},\"required\":[\"property1\",\"property2\",\"property3\"]},\"剧情发展：自定义角色视角\":{\"type\":\"object\",\"properties\":{\"property1\":{\"type\":\"object\",\"description\":\"与秦牧成为兄弟\"},\"property2\":{\"type\":\"object\",\"description\":\"与秦牧反目成仇\"},\"property3\":{\"type\":\"object\",\"description\":\"堕入魔道，强行掳走灵毓秀\"}},\"required\":[\"property1\",\"property2\",\"property3\"]}},\"required\":[\"秦牧剧情发展\",\"灵毓秀发展剧情\",\"角色视角\",\"剧情发展：自定义角色视角\"]}","injectStyles":"","options":{"items":[{"order":0,"label":"角色视角","type":"SET-INPUT","value":"1自定义角色视角\n2秦牧视角\n3灵毓秀视角"},{"order":1,"label":"剧情发展：选择自定义角色视角","type":"SET-INPUT","value":"1与秦牧成为兄弟\n2与秦牧反目成仇\n3堕入魔道，强行掳走灵毓秀"},{"order":2,"label":"剧情发展：选择秦牧视角","type":"SET-INPUT","value":"1正常发展剧情\n2遁入魔道"},{"order":3,"label":"剧情发展：灵毓秀视角","type":"SET-INPUT","value":"1正常发展，成为女皇\n2未经允许出门挑衅塞外，被留在塞外"}]},"language":"zh","containsNSFW":true,"publicAccess":true,"deletedAt":null,"isAnonymous":false,"enableSafeguard":false,"defaultModelSettings":{"model":"cherry_claude_premium/claude-opus-4-8"},"totalConversations":7,"totalMessages":74,"totalCreditsUsed":38017,"totalTokensUsed":620214,"totalPlayedUsers":6,"deeplyPlayed":1,"fixedPromptLength":1810,"lorebookLength":4771,"author":{"id":"dVtnaVThBTYkMKpIrMblJ8gb8Ygt8toT","name":"啧啧啧","displayUsername":"LZB","username":"lzb"},"cardsTags":[{"tag":{"name":"可涩涩","cardsCount":206}},{"tag":{"name":"加强色情描写","cardsCount":469}},{"tag":{"name":"已破甲","cardsCount":2211}},{"tag":{"name":"可剧情可涩涩","cardsCount":2461}},{"tag":{"name":"男性向","cardsCount":904}},{"tag":{"name":"开放世界","cardsCount":1290}},{"tag":{"name":"开局即可色","cardsCount":1444}},{"tag":{"name":"同人","cardsCount":105}},{"tag":{"name":"动漫同人","cardsCount":97}},{"tag":{"name":"可ntr可纯爱","cardsCount":244}}],"cardsVoices":[],"prompt":null,"promptSizeBytes":null}