diff --git a/contributing.md b/contributing.md
deleted file mode 100644
index 5ad0593f..00000000
--- a/contributing.md
+++ /dev/null
@@ -1,89 +0,0 @@
-# 代码规范
-注:小程序和外部库等部分代码可以不遵守
-## 缩进
- 全部使用四个空格
-## 文件尾
- 文件尾要有空行
-## 变量名
- 库 全大写
- 库函数 小驼峰
- 局部函数 下划线开头小驼峰
- 全局变量 全大写
- 全局函数 小驼峰
- 需要阅读的局部变量 小驼峰
- 简单的局部变量 多个单词首字母或大写单字母
-## 常用语句块格式
-```lua
-f() -- 语句末不需要加分号
-
-if c1 then
- s1
-elseif c2 then
- s2
-else
- s3
-end
-
-while c do
- s
-end
-
-for i=1,#l do
- s
-end
-
-for k,v in next,table do -- pairs(table)最好换成next,table
- s
-end
-
-repeat
- s
-until c
-
-do
- s
-end
-```
-## 单行/多行注释
-```lua
-单行代码--注释1
-
---注释2
-函数或者代码块
-
---[[这里最好带上几个字的概述,方便折叠的时候预览,方括号间等号能不带就不带
- 注释内容
-]]
-函数或者代码块
-```
-## 字符串
- 可能输出到外部给玩家或者看的(或给开发者看的debug信息)用双引号
- 只存在于代码中不对外展示的字符串用单引号
- 双方括号(等号能不带就不带)用于大段文本
-## 代码紧凑
-### 少空格(这几种地方不要用空格)
- 逗号后
- 运算符两边
- 左括号前
- 右括号后
-### 省小括号
- 如果一个函数只能接受一个输入
- 并且输入的值是table或者string
- 那么小括号要省略,例如
- GC.DO{100,40
- {'print',"Hello",0,0},
- {'print',"World",0,20},
- }
-### 少空格紧凑方法
- 用正则查找替换,把
- \s?([+\-*/=()\[\]{}"']|==|>=|<=|~=|\.\.)\s?
- 全部替换成
- $1
- 注意,需要缩进模式为制表符,可以先切到制表符然后替换再切回去
- 注意,字符串常量内部首尾空格会被替换
-## goto
-### 所有标签必须使用下列前缀的一个
- BREAK_ 类似一般的break,用于跳出任意层,可能跳过循环后一部分代码
- CONTINUE_ 类似一般的continue,用于快速跳到循环的末尾执行下一次循环
- THROW_ 类似一般的catch,用于捕获错误或跳出一个块并执行统一操作
- REPEAT_ 返回到前面一个点,用于重新执行某个操作
\ No newline at end of file
diff --git a/document/mode.md b/document/mode.md
deleted file mode 100644
index 6dc6a6cf..00000000
--- a/document/mode.md
+++ /dev/null
@@ -1,198 +0,0 @@
-# 模式文件说明
-
-
-
-## 1. 参数
-
-模式文件应当是一个合乎(语)法的 Lua 程序文件,其必须返回一个 `table`,其中的内容包括:
-
-
-
-### 1.1. `color`
-
-**必选**,模式的颜色,用于点击地图图标后显示的提示文本。
-
-------
-
-
-
-### 1.2. `env`
-
-**必选**,模式环境变量,决定了关卡的各项属性。
-
-具体各项参数见下表:
-
-| 属性名 | 默认值 | **说明** |
-| ------------------ | ----------------- | ------------------------------------------------------------ |
-| **`drop`** | `60` | 下落延迟(帧,支持正整数,`2^(-n)`,和 `0` \[20G\]) |
-| **`lock`** | `60` | 锁定延迟(帧) |
-| **`wait`** | `0` | 出块延迟(帧) |
-| **`fall`** | `0` | 消行延迟(帧) |
-| **`bone`** | `false` | 是否开启骨块模式 |
-| **`fieldH`** | `20` | 场地高度 |
-| **`heightLimit`** | `1e99` | 允许的最大场地高度 |
-| **`nextCount`** | `6` | 显示 Next 个数 |
-| **`nextStartPos`** | `1` | Next 从第几个开始显示 |
-| **`holdCount`** | `1` | Hold 个数 |
-| **`infHold`** | `false` | 是否能无限 Hold |
-| **`phyHold`** | `false` | 是否开启物理 Hold |
-| **`ospin`** | `true` | 是否能 O-Spin |
-| **`deepDrop`** | `false` | 是否开启深降 |
-| **`RS`** | `'TRS'` | 旋转系统名 |
-| | | |
-| **`das`** | `10` | DAS |
-| **`arr`** | `2` | ARR |
-| **`sddas`** | `2` | 软降 DAS |
-| **`sdarr`** | `2` | 软降 ARR |
-| **`mindas`** | `0` | 允许的最小 DAS |
-| **`minarr`** | `0` | 允许的最小 ARR |
-| **`minsdarr`** | `0` | 允许的最小软降 ARR |
-| **`ihs`** | `true` | 提前 Hold |
-| **`irs`** | `true` | 提前旋转 |
-| **`ims`** | `true` | 提前移动 |
-| | | |
-| **`skinSet`** | `[设置]` | 方块贴图,只能填写内置皮肤的名字 |
-| **`skin`** | `[设置]` | 方块颜色,包含 25 个整数 (`1`~`16`) 的 `table` |
-| **`face`** | `[设置]` | 方块朝向,包含 25 个整数 (`0`~`3`) 的 `table` |
-| | | |
-| **`block`** | `true` | 是否显示方块 |
-| **`ghost`** | `0.3` | 影子透明度(`0`~`1`) |
-| **`center`** | `1` | 旋转中心透明度(`0`~`1`) |
-| **`smooth`** | `false` | 是否平滑下落 |
-| **`grid`** | `0.16` | 网格透明度(`0`~`1`) |
-| **`bagLine`** | `true` | 是否显示包分界线(如果存在) |
-| **`lockFX`** | `2` | 锁定特效等级(`0`~`5`整数) |
-| **`dropFX`** | `2` | 瞬间下落特效等级(`0`~`5`整数) |
-| **`moveFX`** | `2` | 移动特效等级(`0`~`5`整数) |
-| **`clearFX`** | `2` | 消除特效等级(`0`~`5`整数) |
-| **`splashFX`** | `2` | 溅射特效等级(`0`~`5`整数) |
-| **`shakeFX`** | `2` | 晃动特效等级(`0`~`5`整数) |
-| **`atkFX`** | `2` | 攻击特效等级(`0`~`5`整数) |
-| | | |
-| **`text`** | `true` | 是否显示消行文本 |
-| **`score`** | `true` | 是否显示落块分数 |
-| **`highCam`** | `false` | 是否开启超屏视野 |
-| **`nextPos`** | `false` | 是否开启生成预览 |
-| **`showSpike`** | `false` | 是否开启spike计数器 |
-| | | |
-| **`hideBoard`** | `false` | 场地隐藏模式(“`down`"|"`up`"|"`all`") |
-| **`flipBoard`** | `false` | 场地翻转模式(“`U-D`"|"`L-R`"|"`180`") |
-| | | |
-| **`sequence`** | `bag` | 序列模式,是放一块后对 `next` 序列的刷新函数,可以使用默认的几个函数用字符串表示,
也可以自己写一个。 注意: 使用协程技术 |
-| **`seqData`** | `{1,2,3,4,5,6,7}` | 序列模式使用的”包”数据 (本质是生成序列用的数据,会作为参数传进上面那个
叫 `sequence` 的序列生成函数,不一定是包) |
-| **`mission`** | `false` | 包含任务的 `table`,说明暂时略 |
-| | | |
-| **`life`** | `0` | 生命数(复活次数) |
-| **`garbageSpeed`** | `1` | 垃圾行释放速度 |
-| **`pushSpeed`** | `3` | 垃圾行上涨速度 |
-| **`noTele`** | `false` | 是否禁止10个高级按键 |
-| **`visible`** | `'show'` | 方块可见性,填写固定的几个字符串 |
-| **`freshLimit`** | `1e99` | 锁延刷新次数限制 |
-| **`easyFresh`** | `true` | 是否使用简单锁延刷新规则 |
-| **`bufferLimit`** | `1e99` | 攻击缓冲行数上限 |
-| | | |
-| **`fkey1`** | `false` | 按下功能键1后执行的函数 |
-| **`fkey2`** | `false` | 按下功能键2后执行的函数 |
-| **`keyCancel`** | `{}` | 包含禁止使用的按键的 ID,例如 `{1,2}` 就是禁止左移和右移 |
-| **`fine`** | `[设置]` | 是否开启非极简提示音 |
-| **`fineKill`** | `false` | 是否开启非极简即死 |
-| **`b2bKill`** | `false` | 是否开启断 B2B 即死 |
-| **`missionKill`** | `false` | 是否开启强制任务 |
-| **`noInitSZO`** | `false` | 是否禁止 SZO 块开局,如果禁止,开局序列会自动跳过最多连续五个SZO |
-| | | |
-| **`mesDisp`** | `NULL` | 需要在玩家侧边栏显示的信息(或函数列表,依次执行,可以显示在外面但是强烈不建议),输入玩家对象 |
-| **`dropPiece`** | `NULL` | 放一块后要执行的函数(或函数列表,依次执行),输入玩家对象 |
-| **`task`** | `NULL` | 每帧会**继续执行**的函数(或函数列表,依次执行,返回`true`会把自身从队列里清除) (初始化时会执行一次,可以用来设置场地等),输入玩家对象,注意:使用协程技术 |
-| **`eventSet`** | `false` | 使用预设事件套件名称(字符串),和上面三个套件会叠加,使用时请小心,尽量不要同时指定太多组件 |
-| | | |
-| **`bg`** | `'none'` | 背景,只能填写内置背景的名字 |
-| **`bgm`** | `’race'` | 背景音乐名(或者列表随机,例如{‘`race`','`push`'}),只能用内置音乐库的音乐名 |
-| **`allowMod`** | `true | 是否允许mod |
-
-------
-
-
-
-### 1.3. `load`
-
-**必选**,模式初始化函数,一般创建一个玩家即可,无输入,无输出。
-
-------
-
-
-
-### 1.4. `score`
-
-可选(不填就没有分数保存和计算),一局打完后要存储的数据。
-
-输入玩家对象,输出游戏结束瞬间返回一个包含直接决定该模式成绩的数据 table (会被强制加上`date`标签)。
-
-------
-
-
-
-### 1.5. `scoreDisp`
-
-可选(模式不出现在地图上的时候不用写),是把`score()`存起来的table转换为字符串显示出来的函数。 输入一个成绩 table,输出一个字符串。
-
-------
-
-
-
-### 1.6. `comp`
-
-可选(没有`score`函数的时候不用写),是成绩 table 之间对比并排序的规则。
-
-输入两个成绩table,输出[第一个是不是排在第二个前面]的布尔值(可以类比”小于"运算)
-
-------
-
-
-
-### 1.7. `getRank`
-
-可选,模式评级函数,是用于评价玩家表现的函数。
-
-输入玩家对象,输出 `0`~`5`,`0`表示除了记录到排行榜外什么都不做;
-
-1/2/3/4/5 表示 B/A/S/U/X 级,能解锁连接的模式,还会让模式图标在地图上显示不同的颜色。
-
-------
-
-
-
-
-
-## 2. 示例
-
-以下是40行的模式文件内容:
-
-```lua
---sprint_40l.lua
-return{ --返回一个table,你也可以在之前定义一些常量或者函数什么
- color=COLOR.green,--颜色
- env={ --模式环境变量
- drop=60,lock=60,
- eventSet='checkLine_40',--这个预设eventSet包含了dropPiece和mesDisp,就是40行需要的东西
- bg='bg2',bgm='race',
- },
- load=function() --模式加载函数,这里只生成了一个玩家,常用的单人模式可以不写,默认使用这个函数
- PLY.newPlayer(1) --1是玩家编号,默认用户控制1号玩家
- end,
- score=function(P)return{P.stat.time,P.stat.piece}end,--游戏结束时需要保存的本局关键信息
- scoreDisp=function(D)return STRING.time(D[1]).." "..D[2].." Pieces"end,--把score返回的数据显示出来的方法
- comp=function(a,b)return a[1] __示例__: 多条 mini 语音文件应命名为 `mini_1.ogg`,`mini_2.ogg`…。
->
-> 如果只有一条语音,可以省略文件名中的 `_1` (`mini.ogg`)。
->
-> __对于多条语音文件,文件名后的数字不可省略__ (从 `_1` 开始)。
-
-
-
-投稿语音包请使用 wav 格式,方便保留原文件,以便将来有需要时重新转换格式。
-
-如果想要自己导入游戏,请降噪,裁剪,调整音量后转换为 ogg 格式再进行导入。
-
-
-
-## 2. 要录什么
-
-
-
-### 2.1 消行语音
-
-| 朗读的文本 | 文件名 | 音标(英式) | 音标(美式) | 日语读法 |
-| ---------- | ----------------------- | -------------- | -------------- | ---------------- |
-| single | `single.wav` | /ˈsɪŋɡ(ə)l/ | /ˈsɪŋɡəl/ | シングル |
-| double | `double.wav` | /ˈdʌb(ə)l/ | /ˈdəb(ə)l/ | ダブル |
-| triple | `triple.wav` | /ˈtrɪp(ə)l/ | /ˈtrɪpəl/ | トリプル |
-| techrash | `techrash.wav` | /ˈtɛkraʃ/ | /ˈtɛkræʃ/ | テクラッシュ |
-| pentacrash | `pentacrash.wav` | /ˈpɛntəkraʃ/ | /ˈpɛntəkræʃ/ | ペンタクラッシュ |
-| hexacrash | `hexacrash.wav` | /ˈhɛksəkraʃ/ | /ˈhɛksəkræʃ/ | ヘクサクラッシュ |
-
-
-
-### 2.2 Spin语音
-
-| 朗读文本 | 文件名 | 音标(英) | 音标(美) | 日语 | 说明 |
-| ------ | ----- | ------- | ------- | --- | ---- |
-| * spin | `*spin0.wav` | /spɪn/ | /spɪn/ | スピン | 文本和文件名里的 `*` 要分别换成下表所有方块名称录很多遍。
Spin 后不消行。结束时语调应自然下降。 `0` 是文件名的一部分。|
-| * spin | `*spin.wav` | /spɪn/ | /spɪn/ | スピン | 文本和文件名里的 `*` 要分别换成下表所有方块名称录很多遍。
Spin 后消行。结束时语调应自然上升(后面要和消行语音拼接)。
-
-| 方块名称 | 音标(英) | 音标(美) | 日语 |
-| ------- | ------- | ------- | ---- |
-| __四连块(一定要录)__ ||||
-| Z | /zɛd/ | /zi/ | ゼット |
-| S | /ɛs/ | /ɛs/ | エス |
-| J | /dʒeɪ/ | /dʒeɪ/ | ジェー |
-| L | /ɛl/ | /ɛl/ | エル |
-| T | /tiː/ | /ti/ | ティー |
-| O | /əʊ/ | /oʊ/ | オー |
-| I | /ʌɪ/ | /aɪ/ | アイ |
-| __五连块和三连块(可以不录)__ ||||
-| P | /piː/ | /pi/ | ピー |
-| Q | /kjuː/ | /kju/ | キュー |
-| F | /ɛf/ | /ɛf/ | エフ |
-| E | /iː/ | /i/ | イー |
-| U | /juː/ | /ju/ | ユー |
-| V | /viː/ | /vi/ | ブイ |
-| W | /ˈdʌb(ə)lˌjuː/ | /ˈdəbəlˌju/ | ダブリュー |
-| X | /ɛks/ | /ɛks/ | エックス |
-| R | /ɑː/ | /ɑr/ | アール |
-| Y | /wʌɪ/ | /waɪ/ | ワイ |
-| N | /ɛn/ | /ɛn/ | エヌ |
-| H | /eɪtʃ/ | /eɪtʃ/ | エッチ |
-| C | /siː/ | /si/ | シー |
-
-
-
-### 2.3 其他特殊操作语音
-
-| 朗读文本 | 文件名 | 音标(英) | 音标(美) | 日语 | 说明 |
-| ------------- | ---------------------- | --------------- | ---------------- | ------------------ | ----------------------------- |
-| all clear | `all_clear.wav` | /ɔːl klɪə/ | /ɔl ˈklɪr/ | オールクリア | |
-| perfect clear | `all_clear.wav` | /ˈpəːfɪkt klɪə/ | /ˈpərfɪkt ˈklɪr/ | パーフェクトクリア | (可选)all clear 的另一种形式。|
-| clear | `clear.wav` | /klɪə/ | /ˈklɪr/ | クリア | |
-| half clear | `clear.wav` | /hɑːf klɪə/ | /hæf ˈklɪr/ | ハーフクリア | (可选)clear 的另一种形式。 |
-
-
-
-### 2.4 其他游戏内语音
-
-以下语音没有固定形式,可以自由发挥。建议多录制几个音频以达到最佳表现效果。
-
-| 文件名 | 说明 |
-| -------------------- | ------------- |
-| `win.wav` | 胜利语音。 |
-| `lose.wav` | 失败语音。 |
-| `welcome.wav` | 游戏启动语音。|
-| `bye.wav` | 游戏退出语音。|
-
-
-
-## 3. 测试用音频
-
-以下语音没有固定形式,可以自由发挥,建议多录制几个音频以达到最佳表现效果。
-
-__音频时间不能太长,必须保持在 2s 内。__
-
-| 文件名 | 说明 |
-| ------------------ | ------------------------------------------ |
-| `test.wav` | 测试语音。(_e.g._ “啊” “喵” “呜”) |
-| `happy.wav` | 彩蛋语音。建议用很短的笑声。 |
-| `doubt.wav` | 彩蛋语音。建议用 “嗯?” 等表示疑问的语气词。|
-
-
-
-## 4. 未使用音频
-
-这些音频在游戏现阶段没有被使用,但建议还是录制一份来为游戏的未来开发做准备。
-
-这些语音全部是组合语音,后接消行语音,语气应自然上升。
-
-| 朗读的文本 | 文件名 | 音标(英式) | 音标(美式) | 日语读法 |
-| ---------- | ------------------ | -------------- | -------------- | ---------- |
-| split | `split.wav` | /splɪt/ | /splɪt/ | スプリット |
-| air | `air.wav` | /ɛː/ | /ɛr/ | エア |
-| mix | `mix.wav` | /mɪks/ | /mɪks/ | ミックス |
-| colo(u)r | `color.wav` | /ˈkʌlə/ | /ˈkələr/ | カラー |
-| deep | `deep.wav` | /diːp/ | /dip/ | ディープ |
\ No newline at end of file