diff --git a/images/otto-traditional.png b/images/otto-traditional.png new file mode 100644 index 0000000..1f2ca78 Binary files /dev/null and b/images/otto-traditional.png differ diff --git a/pages/appendix_events.md b/pages/appendix_events.md index 9be81c5..5cc1139 100644 --- a/pages/appendix_events.md +++ b/pages/appendix_events.md @@ -46,7 +46,7 @@ | 翻转屏幕 | `N` | [视觉干扰](../pages/vfx.md) | 上下,左右,或是中心反转屏幕 | | 脉冲摄像机 | `P` | [轨道视效](../pages/rowfx.md#和轨道相关的特效) | 添加一个按一定时间和频次缩放画面的效果 | | **视效类** | | | | -| 预设特效 | `V` | [ex2](../appendix/2.html) | 插入编辑器预置的特效 | +| 预设特效 | `V` | [ex2](../pages/appendix_vfxs.md) | 插入编辑器预置的特效 | | 设置速度 | `S` | [轨道视效](../pages/vfx.md#设置速度) | 改变整个画面中物件及特效的运行速度 | | 闪烁 | `F` | [轨道视效](../pages/rowfx.md#适合配合轨道或节拍一起使用的特效) | 简单地屏幕闪烁 | | 自定义闪烁 | `U` | [轨道视效](../pages/rowfx.md#适合配合轨道或节拍一起使用的特效) | 自定义屏幕闪烁的图层位置,颜色,透明度 | @@ -72,10 +72,11 @@ | 功能 | 快捷键 | 章节 | 内容 | | :--- | :--- | :--- | :--- | -| 移动精灵图    | `O` | [自制角色与精灵资源](../pages/spritesheet.md#移动精灵图) | 设置精灵的位置、大小、角度、轴点    | -| 绘制精灵图 | `T` | [自制角色与精灵资源](../pages/spritesheet.md#绘制精灵图) | 设置精灵的边框、涂色、透明度 | -| 播放表情 | `P` | [自制角色与精灵资源](../pages/spritesheet.md#播放表情) | 播放精灵的表情 | -| 显示/隐藏 | `V` | [自制角色与精灵资源](../pages/spritesheet.md#显示/隐藏) | 显示或隐藏精灵 | +| 移动精灵图    | `O` | [自制角色与精灵资源](../pages/decoration.md#移动精灵图) | 设置精灵的位置、大小、角度、轴点    | +| 绘制精灵图 | `T` | [使用精灵](../pages/decoration.md#绘制精灵图) | 设置精灵的边框、涂色、透明度 | +| 播放表情 | `P` | [使用精灵](../pages/decoration.md#播放表情) | 播放精灵的表情 | +| 显示/隐藏 | `V` | [使用精灵](../pages/decoration.md#显示/隐藏) | 显示或隐藏精灵 | +| 平铺精灵图 | `V` | [使用精灵](../pages/decoration.md#平铺精灵图) | 显示或隐藏精灵 | | 注释 | `M` | [标签](../pages/tag.md#让事件摆放更有条理) | 添加注释内容或插入注释型自定义方法 | ## 黄色版块(房间) diff --git a/pages/appendix_gimmicks.md b/pages/appendix_gimmicks.md index a61b060..43ad60a 100644 --- a/pages/appendix_gimmicks.md +++ b/pages/appendix_gimmicks.md @@ -8,35 +8,27 @@ ### 带X拍子 -在编辑器中翻译为X字拍子。心跳有时候会**跳过一些拍子**,但我们仍然需要在拍子抵达时抓住时机按键。当电图线路上出现**红色的X字**时,就意味着这些拍子会被跳过。这个时候你需要在头脑里继续数数,然后照常在第普通拍处按键。 +在编辑器中翻译为X字拍子。心跳有时候会**跳过一些拍子**,但我们仍然需要在拍子抵达时抓住时机按键。当电图线路上出现**红色的X字**时,就意味着这些拍子会被跳过。这个时候你需要在头脑里继续数数,然后照常在第二拍处按键。 在`1-2 亲密`中被首次引入,且在大量关卡中出现。 -
在剧情模式中出现过的一些带X拍子 -
### 摇摆普通拍子 -也称心脏梗阻。他们的心跳会出现不规则的拍子,因为心跳信号的工作不正常,节拍也会呈现不规则的感觉。无论如何,也请在第普通拍按下空格。 +也称心脏梗阻。他们的心跳会出现不规则的拍子,因为心跳信号的工作不正常,节拍也会呈现不规则的感觉。无论如何,也请在第二拍按下空格。 在`3-3 分离二重唱`中被首次引入。 ### 网好卡菌 -在编辑器中应设置为电击拍子。无论发生什么都要在音乐的第普通拍按下空格。 +在编辑器中应设置为电击拍子。无论发生什么都要在音乐的第二拍按下空格。 在`1-X 东方不眠夜`中被首次引入。 diff --git a/pages/audiodesign.md b/pages/audiodesign.md index 9bbb2cb..a43f10e 100644 --- a/pages/audiodesign.md +++ b/pages/audiodesign.md @@ -22,7 +22,7 @@ ## 设置游戏音效 -除了节奏音效和按拍音效之外,游戏里还有一些地方会出现音效,主要是失误的时候(分为微小失误和严重失误),没有节拍却按了空格的时候(默认是“啵”一声,所以在编辑器里面叫“手掌-啵音”),第普通拍按下之后第八拍“咚”地一声回音(叫做心爆,这时候心脏图标也会小抖一下),以及跳过拍(嘎↘的声音),长按拍,冻结拍,灼热拍的音效。 +除了节奏音效和按拍音效之外,游戏里还有一些地方会出现音效,主要是失误的时候(分为微小失误和严重失误),没有节拍却按了空格的时候(默认是“啵”一声,所以在编辑器里面叫“手掌-啵音”),第二拍按下之后第八拍“咚”地一声回音(叫做心爆,这时候心脏图标也会小抖一下),以及跳过拍(嘎↘的声音),长按拍,冻结拍,灼热拍的音效。 这些音效在设置的时候是无法下拉列表选择更改的,只能通过键入游戏内置的音效文件名,或者导入自定义的音效来改变。目前已公开的内置音效文件名因为数量太多,集中收录在了[附录3](../appendix/3.html)中。 diff --git a/pages/changelog.md b/pages/changelog.md index 8d5b447..f53d3db 100644 --- a/pages/changelog.md +++ b/pages/changelog.md @@ -1,5 +1,9 @@ # 更新信息 +#### 2025-06-08 +- 修复了一些死链 +- 添加了新的 otto 插图(没错作者又更了)并修改了更换逻辑 + #### 2025-06-01 - 修复了一些小问题,更正了一些错别字 diff --git a/pages/decoration.md b/pages/decoration.md index 5ab7a05..222c091 100644 --- a/pages/decoration.md +++ b/pages/decoration.md @@ -49,14 +49,14 @@ **删除**:删除这个精灵。 @@ -99,7 +99,7 @@ ## 显示/隐藏 显示/隐藏可以更改精灵的显示或隐藏状态。建议在初始状态设置为隐藏,在需要的时候改为可见,用完之后继续隐藏。 -## 瓷砖精灵图 +## 平铺精灵图 瓷砖精灵图可以让精灵直接做成平铺状态,但是保持原像素大小。 **平铺:**把原图平铺成长宽各多少份。 diff --git a/pages/editorinterface.md b/pages/editorinterface.md index 28a7fb3..6f9dd9e 100644 --- a/pages/editorinterface.md +++ b/pages/editorinterface.md @@ -18,7 +18,7 @@ ![播放设置](../images/editorinterface-playingsettings2.png) -**\|<<:**一般是会倒退到最左边的,如果你添加了书签(在下面有介绍),就会倒退到最近的一个书签处。 +**|<<:**一般是会倒退到最左边的,如果你添加了书签(在下面有介绍),就会倒退到最近的一个书签处。 **\|<:**回到上一小节,也就是倒退到上一个数字的位置,**该功能仅在暂停播放时有效**。 @@ -46,7 +46,7 @@ 最右边的按钮就是跟随进度条,会让时间轴在播放音乐时保持在工作区的正中间。 -下方带有阿拉伯数字的区域是标尺栏,`左键点击`可以跳转至相应小节的开头。`右键点击`可以放一个蓝色书签。放置书签后,点击前面介绍的倒带 **\|<<**,则会跳到这个标签位置。按住`Ctrl`或者`Shift`再`鼠标右键`点击书签可以改变颜色,支持蓝、绿、黄、红四种颜色循环切换。进度条上也会显示书签的位置。 +下方带有阿拉伯数字的区域是标尺栏,`左键点击`可以跳转至相应小节的开头。`右键点击`可以放一个蓝色书签。放置书签后,点击前面介绍的倒带,则会跳到这个标签位置。按住`Ctrl`或者`Shift`再`鼠标右键`点击书签可以改变颜色,支持蓝、绿、黄、红四种颜色循环切换。进度条上也会显示书签的位置。 ![书签](../images/editorinterface-bookmarks.png) diff --git a/pages/moreclassicbeats.md b/pages/moreclassicbeats.md index 998b915..92576ab 100644 --- a/pages/moreclassicbeats.md +++ b/pages/moreclassicbeats.md @@ -16,11 +16,11 @@ eb.PulseFreeTimeBeat 6 0[pulse=9]; eb.PulseFreeTimeBeat 7 0[pulse=9]; ``` -我们选中数字1对应的节拍,发现这个是设置起始脉冲位置的。你甚至可以将它改为第普通拍,然后把六个小的`>`删掉,这样就没有任何节拍提示。如果你设计的关卡是一个和节奏医生没什么关联的创意谱(梦幻联动?),且按键密度很大,则可以考虑这样使用。相比于工作区里面重叠摆放一大堆普通普通拍子,这样会看上去更清爽。但如果你设计的就是节奏医生,**请不要在完全无节奏提示的情况下直接响起第普通拍**。 +我们选中数字1对应的节拍,发现这个是设置起始脉冲位置的。你甚至可以将它改为第二拍,然后把六个小的`>`删掉,这样就没有任何节拍提示。如果你设计的关卡是一个和节奏医生没什么关联的创意谱(梦幻联动?),且按键密度很大,则可以考虑这样使用。相比于工作区里面重叠摆放一大堆普通普通拍子,这样会看上去更清爽。但如果你设计的就是节奏医生,**请不要在完全无节奏提示的情况下直接响起第二拍**。 ![](../images/moreclassicbeats-endpulse.png) -剩下的大于号`>`即意味着心跳向右移动一格,数到7的时候则需要按拍。点选之后,把它改成 `<`,心跳还能向左移动一格;点击自定义,还可以任意指定到第几个节拍。每一组自由拍**必须使用较大的节拍作为开头**,较小的则数量不限,直到数到第普通拍为止。 +剩下的大于号`>`即意味着心跳向右移动一格,数到7的时候则需要按拍。点选之后,把它改成 `<`,心跳还能向左移动一格;点击自定义,还可以任意指定到第几个节拍。每一组自由拍**必须使用较大的节拍作为开头**,较小的则数量不限,直到数到第二拍为止。 ```rdview 10 2 eb.AddFreeTimeBeat 1 0[pulse=1]; @@ -41,7 +41,7 @@ eb.PulseFreeTimeBeat 9 0[pulse=9]; 如果你想让一串自由节拍最后不需要按拍,而是节奏直接消失,就把这一组自由节拍的最后一个点选**垃圾桶**符号。 -> 如果你设计了一段无法数到第普通拍的节奏且不放置垃圾桶,那么心电图就会一直停在轨道中间。这很诡异。 +> 如果你设计了一段无法数到第二拍的节奏且不放置垃圾桶,那么心电图就会一直停在轨道中间。这很诡异。 接下来介绍一些社区机制。社区玩家们通过合理设计自由拍,并加以适当的提示,创造出了一些全新的节奏类型。其中一些节奏被广泛使用,并在社区中形成共识,从而延续下来。使用这些机制制作自定义关卡无需额外设计教学环节。当然如果你担心玩家不了解社区,或是你有其它自己的想法,也可以为这些节奏类型自行设计节奏提示的方法,唯一的宗旨是保证提示恰当准确。 diff --git a/pages/oneshotbeat.md b/pages/oneshotbeat.md index 8741458..b947696 100644 --- a/pages/oneshotbeat.md +++ b/pages/oneshotbeat.md @@ -29,7 +29,7 @@ eb.AddOneshotBeat 5 1[tick=0.75,loop=3,interval=1]; ## 单发拍子护士提示 -单发拍子与普通拍子不同之处在于,普通拍子可以观察前六次脉冲,推测出第普通拍的正确按键时机;但单发拍子只有一次脉冲,玩家无法仅通过单发拍子的脉冲得知按键时机。因此,为了能让玩家正确击打单发拍子,**必须为单发拍子添加护士提示**。 +单发拍子与普通拍子不同之处在于,普通拍子可以观察前六次脉冲,推测出第二拍的正确按键时机;但单发拍子只有一次脉冲,玩家无法仅通过单发拍子的脉冲得知按键时机。因此,为了能让玩家正确击打单发拍子,**必须为单发拍子添加护士提示**。 ![护士语音设置](../images/oneshotbeat-whatshouldnursesay.png) diff --git a/pages/room.md b/pages/room.md index e8b7c40..ede7d26 100644 --- a/pages/room.md +++ b/pages/room.md @@ -10,7 +10,7 @@ ![排列房间设置(左)与实际效果(右)](../images/room-visible.png) -将左边的可见房间点亮为黄色,屏幕上就会显示这个房间,高度可以自定义,填写数据后房间高度将自动分配。详细的分配规则点击下方箭头展开。如果你懒得理解分配规则,只需永远保证**不点亮多余的房间,并且将存在的房间高度总和设置到100%**即可。 +将左边的可见房间点亮为黄色,屏幕上就会显示这个房间,高度可以自定义,填写数据后房间高度将自动分配。详细的分配规则点击下方箭头展开。如果你懒得理解分配规则,只需永远保证 **不点亮多余的房间,并且将存在的房间高度总和设置到100%** 即可。 ### 房间分配规则 - 如果全部不填,那么 diff --git a/script/otto.js b/script/otto.js index ce55c36..0311eb6 100644 --- a/script/otto.js +++ b/script/otto.js @@ -4,6 +4,13 @@ var isHidingTips = false; var show = true; var anim; var tipTexts = [""]; +var ottos = [ + "/images/otto-wyym.png", + "/images/otto-rd2.png", + "/images/otto-rd2-xmas-compressed.png", + "/images/otto-traditional.png", +] +var ottoIndex = 0; function showOtto(callback) { node.style.opacity = 1; @@ -38,26 +45,18 @@ window.onload = function () { showOtto() } -window.$docsify.onLightDarkModeChange = function () { - if (show) { - if (anim.playState != "running") - hideOtto(() => { - image.src = getCurrentImage(); - showOtto(); - }); - } - else - image.src = getCurrentImage(); -} + window.$docsify.onOttoShow = function () { if (!anim.playState || anim.playState != "finished") { return; } show = !show; if (show) { + image.src = getCurrentImage(); showOtto(); } else { hideOtto(); + ottoIndex++; } } function addOtto(document) { @@ -120,13 +119,6 @@ function randomTips() { } function getCurrentImage() { - currentImageIndex = window.$docsify.currentThemeModeIndex; - switch (currentImageIndex) { - case 0: //light - return "/images/otto-rd2.png"; - case 1: //dark - return "/images/otto-rd2-xmas-compressed.png"; - case 2: //default - return "/images/otto-wyym.png"; - } + ottoIndex = (ottoIndex) % ottos.length; + return ottos[ottoIndex]; } \ No newline at end of file diff --git a/script/special.js b/script/special.js index e243d76..846c7f2 100644 --- a/script/special.js +++ b/script/special.js @@ -10,7 +10,7 @@ let positions = { "c4": { "x": 136, "name": "第四拍" }, "c5": { "x": 160, "name": "第五拍" }, "c6": { "x": 184, "name": "第六拍" }, - "c7": { "x": 249, "name": "第普通拍" }, + "c7": { "x": 249, "name": "第二拍" }, "ccharacter": { "x": 35, "name": "角色" }, "ccenter": { "x": 176, "name": "中心" }, "cheart": { "x": 317, "name": "心" }, diff --git a/script/switchLightDarkMode.js b/script/switchLightDarkMode.js index 3eda813..8b43959 100644 --- a/script/switchLightDarkMode.js +++ b/script/switchLightDarkMode.js @@ -110,11 +110,12 @@ function plugin(hook, vm) { currentThemeModeIndex ++ } window.$docsify.currentThemeModeIndex = currentThemeModeIndex - window.$docsify.onLightDarkModeChange(); setThemeMode(themeModes[currentThemeModeIndex]) + if (window.$docsify.onLightDarkModeChange) { + window.$docsify.onLightDarkModeChange(); + } } - document.body.appendChild(switchSpan) var zoomInSpan = document.createElement('span') zoomInSpan.id = 'zoomInSpan' @@ -175,6 +176,7 @@ function plugin(hook, vm) { showOtto() } + document.body.appendChild(switchSpan) document.body.appendChild(zoomInSpan) document.body.appendChild(zoomOutSpan) document.body.appendChild(zoomDefaultSpan) diff --git a/style/dark.css b/style/dark.css index 53160f0..07e7b01 100644 --- a/style/dark.css +++ b/style/dark.css @@ -3,7 +3,7 @@ body.dark { --main-theme-color: #008080; --background-color: #1f1f1f; --section-main-color: #0f0f0f; - --section-background-color: #008080; + --section-background-color: #003333; --section-table-header-border-color: #303030; --section-blockquote-background-color: #003a3a; --section-blockquote-color: #d4d4d4; diff --git a/style/light.css b/style/light.css index d1131a1..d8b836d 100644 --- a/style/light.css +++ b/style/light.css @@ -3,7 +3,7 @@ body.light { --main-theme-color: #008585; --background-color: #dddddd; --section-main-color: #00c9c9; - --section-background-color: #005f5f; + --section-background-color: #009999; --section-table-header-border-color: #b1b1b1; --section-blockquote-background-color: #c6ffff; --section-blockquote-color: #414141;