# townsquare
**Repository Path**: kdmansl/townsquare
## Basic Information
- **Project Name**: townsquare
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: GPL-3.0
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-08-21
- **Last Updated**: 2026-11-04
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 钟楼谜团魔典
这是一个非官方的线上工具,用来辅助在语音软件中体验染·钟楼谜团。
这个工具可以帮助说书人和玩家有创建房间、记录进程、投票等,有更好的游戏体验。
这个项目取自开源项目[bra1n/townsquare](https://github.com/bra1n/townsquare),由[limpy01](https://github.com/limpy01)全程汉化和优化,官方发布地址为:https://botcgrimoire.top/
[点击链接进入!](https://botcgrimoire.top/)
## 特点
- 免费的城镇广场/魔典!
- 支持自定义JSON!可以从[英文剧本工具](https://bloodontheclocktower.com/script)或[中文剧本工具](https://clocktower.gstonegames.com/script_tool/)创建JSON文件!
- 实时共享的魔典,可供玩家投票使用!
- 持续更新所有官方角色,不定时加入原创角色和剧本!
- 夜间行动顺序和提醒可以帮助说书人和玩家。
- 支持所有自定义原创角色和剧本。
- 内置“钟楼典藏”角色图书馆与剧本工坊(`/role-library/`),可从本地剧本库检索角色、查看来源与冲突,并生成剧本 JSON 直接载入魔典。
### 角色库与剧本工坊
角色库从 `public/scripts/` 与 `src/roles.json` / `src/fabled.json` 抽取角色,支持匿名投稿、管理员审核和冲突处理。后端是独立的 FastAPI + MySQL 服务,部署与使用说明见 [`server/README.md`](server/README.md)。
前端构建会同时产出:
- `dist/index.html`:魔典
- `dist/role-library/index.html`:角色图书馆 / 剧本工坊
### 自定义剧本支持
任何从[英文剧本工具](https://bloodontheclocktower.com/script)或[中文剧本工具](https://clocktower.gstonegames.com/script_tool/)生成的JSON剧本文件都被支持,可以上传完整JSON文件或从剪切板粘贴。如果你想继续自定义剧本,可以加入以下`"_meta"`对象对剧本整体做出调整。
```json
[
{
"id": "_meta",
"name": "无上愉悦",
"author": "作者",
"logo": "https://url.to/your/logo.png",
"firstNight": ["dusk","minioninfo","demoninfo","marionette","poisoner","amnesiac","dawn"],
"otherNight": ["dusk","dawn"],
"bootlegger": ["私货商人1", "私货商人2"]
}
]
```
这些设置可以让剧本的主题更加明确,使用更方便。
- `"firstNight"`、`"otherNight`和`"bootlegger"`是[英文剧本工具](https://bloodontheclocktower.com/script)支持的关键词,可以直接从中导出无需修改。
- 包含`"firstNight"`会改写魔典内置角色的首夜行动顺序。
- 包含`"otherNight`会改写魔典内置角色的除首夜外其他夜的行动顺序。
- 其中`"dusk"`、`"dawn"`、`"minioninfo"`和`"demoninfo"`为魔典内置的关键词,请避免和角色`"id"`重复。
- `"firstNight"`和`"otherNight`必须正确包括所有当晚行动的角色才能正常生效,请尽量使用[英文剧本工具](https://bloodontheclocktower.com/script)直接导出的结果,如需修改请在使用前核对夜间顺序表。
### 原创角色支持
自制的原创角色也可以被导入魔典,以下是一个完整的例子。
```json
[
{
"id": "balloonist",
"firstNightReminder": "每个夜晚,唤醒气球驾驶员,并指向一名玩家(存活或死亡皆可),并将“得知”提示标记放置在对应的那名玩家的角色标记旁,以确保不会让气球驾驶员得知与上一晚同一角色类型的玩家。",
"otherNightReminder": "每个夜晚,唤醒气球驾驶员,并指向一名玩家(存活或死亡皆可),并将“得知”提示标记放置在对应的那名玩家的角色标记旁,以确保不会让气球驾驶员得知与上一晚同一角色类型的玩家。",
"reminders": ["得知"],
"remindersGlobal": [],
"setup": true,
"name": "气球驾驶员",
"team": "townsfolk",
"ability": "每个夜晚,你会得知一名与上个夜晚得知的玩家角色类型不同的玩家。[+0~1外来者]",
"firstNight": 72,
"otherNight": 111
},
{
"id": "investigator"
},
{
"id": "imp"
}
]
```
这段 JSON 定义包含了一个自定义角色“气球驾驶员”(Acrobat),以及两个基础游戏角色“调查员”(Investigator)和“小恶魔”(Imp)。
对于基础游戏角色,只需提供 ID 即可,这与你在剧本工具中获得的内容类似。
**必要属性:** `id`, `name`, `team`, `ability`
- **id**: 该角色的内部 ID,不含空格或特殊字符(仅英文和数字)。
_注意_:该 ID 必须是唯一的,不能与现有角色的 ID 重复,否则自定义角色将被现有角色覆盖!
- **image**: 角色标记图标的 PNG 链接(应具有透明背景!)。
_注意_:只有在“魔典”菜单中开启自定义图像后,这些图像才会显示!
- **edition**: 该角色的版本 ID。可以留空或填写 "custom"。
- **firstNight** / **otherNight**: 该角色在首夜 / 其他夜晚与其他角色相比的行动顺序。
_注意_:必须为正数或零,零表示“不在夜晚行动”。
- **firstNightReminder** / **otherNightReminder**: 首夜 / 其他夜晚的提示文本。
- **reminders**: 提示标记,如果没有,应为空数组 `[]`。
- **remindersGlobal**: 全局提示标记,无论该角色是否分配给玩家,这些标记始终可用。
- **setup**: 该标记是否影响设置(橙色叶子图标),例如“酒鬼”或“男爵”。
- **name**: 该角色的显示名称。
- **team**: 角色所属阵营,必须是以下之一:`townsfolk`(村民)、`outsider`(外来者)、`minion`(爪牙)、`demon`(恶魔)、`traveler`或`traveller`(旅行者)、 `fabled`(传奇角色)、`loric`(奇遇角色)。
_注意_:如果你创建了一个自定义的“传奇角色”(Fabled)或“奇遇角色”(Loric),它将在加载自定义剧本时自动添加到游戏中。
- **ability**: 该角色的显示能力文本。
- **jinxes**: 自定义角色与其他角色的相克,会在角色技能表中出现,每个id代表跟一个角色的相克。具体如下:
```json
"jinxes":[{"id":"example1_id","reason":"相克1。", "id":"example2_id", "reason":"相克2。"}]
```
## 法律声明与下游告示要求
本项目采用带有 GPLv3 第 7 条附加条款的开源协议。如果您分发或分叉(Fork)本项目:
* 您**必须**完整保留终端启动时的版权横幅(Banner)。
* 您**必须**保留用于打印许可证详细信息的交互式命令或参数(如 --version)。
* 您**不得**移除用户界面(UI)中的任何作者署名信息。
## 全局版权声明
除非另有明确说明,本仓库内的所有源代码文件、配置文件、组件文件(.vue)、脚本文件(.js)以及数据集定义文件(.json)均包含由 [@limpy01](https://github.com/limpy01)(2026年)独立创作的重大修改与原创功能增强。上述所有内容均受到版权法保护,并严格受本仓库附带的 GPLv3 第 7 条附加条款之约束。任何未经授权移除署名或违反本协议的分发行为,均将导致许可授权的即时终止。
本项目及其网站免费提供,不以任何方式隶属于 The Pandemonium Institute。