# 魔女审判网页工坊 **Repository Path**: oxygennine/witch-trial-web-engine ## Basic Information - **Project Name**: 魔女审判网页工坊 - **Description**: 魔审同人游戏制作工具。 - **Primary Language**: HTML - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-10-22 - **Last Updated**: 2025-10-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 魔女审判网页工坊 **当前版本:** Indev 1.1.0 ## 更新描述 * 事件系统:新增特殊角色`event`,用于触发特殊事件,具体列表如下: * `dead_body_found` - 尸体发现动画 * `exhibit_found` - 证物发现通知 * `screen_shock` - 屏幕抖动效果 * `witch_trial_start` - 魔女审判开庭动画 * `start_interrogation` - 审问开始动画 * `end_interrogation` - 审问结束动画 * `killer_execution` - 凶手处决界面 * 新增了一系列图片素材用于这些全屏动画,所有的动画都位于animation.css内。 * 游戏现在通过多个全局变量记录当前的案件、已访问过的剧情节点等信息。 * 新增了节点类型`exhibit_search`,用于搜证环节。每次搜证结束后,会弹出地图选择界面,全部搜证节点结束后则进入审判环节。 * 剧情数据结构现在包括一个新的`cases`对象,用于储存每个案件的相关信息。 * 现在对话记录会被实时更新到“回忆”弹窗。 * 新增了消息弹窗系统,用于在游戏中显示重要信息。 * 新增了热键栏,在桌面端可以折叠侧边栏并显示热键栏,阅读体验更佳。 * 剧情数据结构根对象现在有一个键`version`,用于标识当前数据结构的版本。现在的`version`为`1`。 ## 项目概述 本项目最初作为《魔法少女的魔女审判》(魔审)的同人游戏开发,但随着功能趋于完善,我意识到将它作为一个“纯文本版本”的魔审编辑器是一个更好的选择。该工具采用扁平化数据结构,支持剧情编辑、角色管理、证物系统等核心功能。 index.html为游戏本体,默认调用data/data.json作为初始剧情数据。editor.html为剧情编辑器。 ## 数据结构 所有数据均储存在一个JSON文件中,剧情节点扁平化处理。 ### 基础结构 ```json { "map": [], //定义地图图片和可用的房间 "rules": [], //定义监狱规则,纯文本 "characters": [], //定义出场角色 "exhibits": [], //定义剧情中出现的所有证物 "nodes": [], //定义剧情节点 "cases": [] //定义案件,以及案件涉及的角色、证物、节点等 } ``` ### 场景节点类型 | 类型 | 描述 | |------|------| | `daily` | 无特殊事件的纯线性剧情 | | `bad_end` | 单分支坏结局,结尾回溯到上一个daily节点 | | `judge_start` | 审判场景起始节点 | | `judge_wrong` | 错误选项分支,结尾回溯到父级judge节点 | | `judge_continue` | 正确选项分支,继续推进审判流程 | | `judge_end` | 审判结束后的案件复盘和处刑 | | `exhibit_search` | 搜证环节节点 | - 每个节点具有唯一且顺序增长的整数ID - `judge_wrong`节点包含`parent`属性,指向对应的父级judge节点 ## 核心功能详解 ### 基础对话系统 ```json { "id": 1, "type": "daily", "intro": "1-1简易长矛案", "content": [ {"char": "sakuraba_ema", "text": "示例的对话内容"}, {"char": "sakuraba_ema", "text": "示例的对话内容2

下一段内容"}, {"char": "nikaido_hiro", "text": "进入下一节点", "clickToJump": true, "targetNode": 2} ] } ``` ### 分支选择机制 ```json { "id": 2, "type": "daily", "intro": "1-2选择A或B", "content": [ {"char": "narrator", "text": "你的选择是……"}, {"char": "choice", "text": "选择A", "clickToJump": true, "targetNode": 3}, {"char": "choice", "text": "选择B", "clickToJump": true, "targetNode": 4} ] } ``` ### 审判系统 #### 反驳、疑问与伪证 ```json { "id": 10, "type": "judge_start", "intro": "1-3审判开始", "content": [ { "char": "sakuraba_ema", "text": "可以反驳的地方这样标注:可疑的地方,还有另一个疑点。", "acts": [ {"actType": "refute", "tag": "可疑的地方", "text": "可疑在哪?", "targetNode": 3}, {"actType": "perjury", "tag": "另一个疑点", "text": "另一个疑点在哪?", "targetNode": 4}, {"actType": "confuse", "tag": "可疑的地方", "text": "可疑的地方是……", "targetNode": 5} ] } ] } ``` #### 证物出示系统 ```json { "id": 11, "type": "judge_continue", "intro": "1-4出示证物", "content": [ { "char": "sakuraba_ema", "text": "有一件证物可以证明,那就是……", "acts": [ { "actType": "showExhibit", "targetItem": 23, "targetNode": 12, "wrongNode": 13 } ] } ] } ``` #### 证人出示系统 ```json { "id": 11, "type": "judge_continue", "intro": "1-5出示证人", "content": [ { "char": "sakuraba_ema", "text": "有一个人可以证明,那就是……", "acts": [ { "actType": "showCharacter", "targetChar": 1, "targetNode": 12, "wrongNode": 13 } ] } ] } ``` #### 搜证节点 ```json { "id": 12, "type": "exhibit_search", "intro": "1-6搜证", "content": [ {"char": "narrator", "text": "请搜证。"}, ], "roomId": 1 } ``` ## 数据模型定义 ### 角色定义 ```json { "id": "sakuraba_ema", "name": "樱羽艾玛", "html": "玛", "accentColor": "#FF0000", "description": [ {"text": "自称\"boku\"的温柔女孩。", "startNode": 1}, {"text": "因为笨手笨脚,常常出错,总是成为被照顾的一方。", "startNode": 2} ] } ``` ### 证物定义 ```json { "id": "1", "name": "证物1", "description": "1234", "image": "exhibit_1.jpg", "startNode": 1, "endNode": 2 } ``` ### 地图和规则 ```json { "image": true, "src": "map.jpg", "rooms": [ {"id": "1", "name": "1号房间", "description": "1号房间的描述"}, {"id": "2", "name": "2号房间", "description": "2号房间的描述"} ] } ``` ```json { "text": "..." } ``` ## 技术实现 ### HTML结构规范 #### 角色对话结构 ```html

台词内容

进入下一节点

``` #### 交互元素结构 ```html

这句话里面有 可疑的地方
我认为balabala

``` ----- 此项目未使用原版游戏的任何素材。