jianzhihuixiang/alacarte-novel-website/chapters/chapter-178.html

1085 lines
41 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Expires" content="0">
<title>番外·奥兹玛的遗言 - 阿拉德:剑之回响</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Noto+Serif+SC:wght@400;600;700&family=Noto+Sans+SC:wght@300;400;500;700&display=swap" rel="stylesheet">
<style>
:root {
--bg-primary: linear-gradient(135deg, #0f0c29 0%, #302b63 50%, #24243e 100%);
--text-primary: #e0e0e0;
--text-secondary: #888;
--accent-gradient: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
--border-color: rgba(255,255,255,0.1);
--btn-bg: rgba(255,255,255,0.1);
--btn-hover: rgba(255,255,255,0.2);
}
[data-theme="light"] {
--bg-primary: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
--text-primary: #333;
--text-secondary: #666;
--border-color: rgba(0,0,0,0.1);
--btn-bg: rgba(0,0,0,0.05);
--btn-hover: rgba(0,0,0,0.1);
}
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: 'Noto Serif SC', serif;
background: var(--bg-primary);
color: var(--text-primary);
line-height: 1.8;
min-height: 100vh;
transition: all 0.3s ease;
}
.container {
max-width: 800px;
margin: 0 auto;
padding: 20px;
padding-bottom: 120px;
}
/* 顶部导航 */
.top-nav {
position: fixed;
top: 0;
left: 0;
right: 0;
background: rgba(0,0,0,0.3);
backdrop-filter: blur(10px);
border-bottom: 1px solid var(--border-color);
z-index: 1000;
padding: 10px 20px;
}
.top-nav-content {
max-width: 800px;
margin: 0 auto;
display: flex;
justify-content: space-between;
align-items: center;
}
.nav-link {
color: var(--text-primary);
text-decoration: none;
font-family: 'Noto Sans SC', sans-serif;
font-size: 14px;
padding: 8px 16px;
background: var(--btn-bg);
border: 1px solid var(--border-color);
border-radius: 8px;
transition: all 0.3s ease;
}
.nav-link:hover {
background: var(--btn-hover);
}
.chapter-header {
text-align: center;
padding: 80px 0 40px;
border-bottom: 1px solid var(--border-color);
margin-bottom: 40px;
}
.chapter-number {
font-size: 14px;
color: var(--text-secondary);
letter-spacing: 4px;
text-transform: uppercase;
margin-bottom: 10px;
}
.chapter-title {
font-size: 32px;
font-weight: 700;
background: var(--accent-gradient);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
margin-bottom: 20px;
}
.chapter-meta {
font-size: 14px;
color: var(--text-secondary);
}
.chapter-content {
font-size: 18px;
line-height: 2;
text-align: justify;
}
.chapter-content p {
margin-bottom: 1.5em;
text-indent: 2em;
}
.chapter-content p:first-of-type::first-letter {
font-size: 3em;
float: left;
line-height: 1;
margin-right: 8px;
margin-top: -5px;
background: var(--accent-gradient);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
font-weight: 700;
}
/* 固定底部导航 */
.fixed-nav {
position: fixed;
bottom: 0;
left: 0;
right: 0;
background: rgba(0,0,0,0.3);
backdrop-filter: blur(10px);
border-top: 1px solid var(--border-color);
z-index: 1000;
padding: 15px 20px;
}
.fixed-nav-content {
max-width: 800px;
margin: 0 auto;
display: flex;
justify-content: space-between;
align-items: center;
}
.nav-btn {
padding: 12px 24px;
background: var(--btn-bg);
border: 1px solid var(--border-color);
border-radius: 8px;
color: var(--text-primary);
text-decoration: none;
transition: all 0.3s ease;
font-family: 'Noto Sans SC', sans-serif;
font-size: 14px;
cursor: pointer;
}
.nav-btn:hover {
background: var(--btn-hover);
transform: translateY(-2px);
}
.nav-btn.disabled {
opacity: 0.3;
cursor: not-allowed;
pointer-events: none;
}
/* 右侧滚动按钮 */
.scroll-buttons {
position: fixed;
right: 20px;
bottom: 90px;
display: flex;
flex-direction: column;
gap: 10px;
z-index: 1001;
}
.scroll-btn {
width: 40px;
height: 40px;
border-radius: 8px;
background: var(--btn-bg);
border: 1px solid var(--border-color);
color: var(--text-primary);
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
font-size: 16px;
transition: all 0.3s ease;
font-family: 'Noto Sans SC', sans-serif;
}
.scroll-btn:hover {
background: var(--btn-hover);
}
/* TTS控制面板 */
.tts-panel {
position: fixed;
left: 20px;
bottom: 90px;
display: flex;
flex-direction: column;
gap: 10px;
z-index: 1002;
background: rgba(0,0,0,0.6);
backdrop-filter: blur(10px);
border-radius: 12px;
border: 1px solid var(--border-color);
padding: 15px;
min-width: 180px;
}
.tts-title {
font-size: 12px;
color: var(--text-secondary);
text-transform: uppercase;
letter-spacing: 2px;
margin-bottom: 5px;
}
.tts-controls {
display: flex;
gap: 8px;
margin-bottom: 10px;
}
.tts-btn {
width: 36px;
height: 36px;
border-radius: 8px;
background: var(--btn-bg);
border: 1px solid var(--border-color);
color: var(--text-primary);
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
font-size: 14px;
transition: all 0.3s ease;
font-family: 'Noto Sans SC', sans-serif;
}
.tts-btn:hover {
background: var(--btn-hover);
}
.tts-btn.active {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
border-color: #667eea;
}
.tts-progress {
display: flex;
align-items: center;
gap: 8px;
margin-bottom: 10px;
}
.tts-progress-bar {
flex: 1;
height: 4px;
background: var(--btn-bg);
border-radius: 2px;
overflow: hidden;
}
.tts-progress-fill {
height: 100%;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
width: 0%;
transition: width 0.1s ease;
}
.tts-time {
font-size: 12px;
color: var(--text-secondary);
font-family: 'Noto Sans SC', sans-serif;
min-width: 80px;
}
.tts-speed {
display: flex;
align-items: center;
gap: 8px;
}
.tts-speed-label {
font-size: 12px;
color: var(--text-secondary);
font-family: 'Noto Sans SC', sans-serif;
}
.tts-speed-select {
padding: 4px 8px;
background: var(--btn-bg);
border: 1px solid var(--border-color);
border-radius: 4px;
color: var(--text-primary);
font-size: 12px;
cursor: pointer;
font-family: 'Noto Sans SC', sans-serif;
}
@media (max-width: 600px) {
.tts-panel {
left: 10px;
right: 10px;
bottom: auto;
top: 60px;
min-width: auto;
padding: 12px;
width: auto;
z-index: 1003;
}
.tts-btn {
width: 32px;
height: 32px;
font-size: 12px;
}
.tts-title {
font-size: 11px;
}
.tts-speed-label {
font-size: 11px;
}
.tts-speed-select {
padding: 3px 6px;
font-size: 11px;
}
.tts-time {
font-size: 11px;
min-width: 60px;
}
/* 手机端隐藏滚动按钮给TTS腾空间 */
.scroll-buttons {
display: none;
}
}
@media (max-width: 400px) {
.tts-panel {
top: 55px;
padding: 10px;
}
.tts-controls {
gap: 6px;
}
.tts-btn {
width: 28px;
height: 28px;
font-size: 11px;
}
}
/* 侧边栏 - 标题固定,内容滚动 */
.sidebar {
position: fixed;
right: 20px;
top: 50%;
transform: translateY(-50%);
background: rgba(0,0,0,0.5);
backdrop-filter: blur(10px);
border-radius: 12px;
border: 1px solid var(--border-color);
width: 200px;
max-height: 70vh;
z-index: 999;
display: flex;
flex-direction: column;
}
.sidebar-title {
font-size: 14px;
color: var(--text-secondary);
text-transform: uppercase;
letter-spacing: 2px;
padding: 15px 20px;
border-bottom: 1px solid var(--border-color);
flex-shrink: 0;
}
.sidebar-content {
overflow-y: auto;
padding: 10px 20px 20px;
flex: 1;
scrollbar-width: thin;
scrollbar-color: transparent transparent;
transition: scrollbar-color 0.3s ease;
}
.sidebar-content:hover {
scrollbar-color: rgba(255,255,255,0.3) transparent;
}
.sidebar-content::-webkit-scrollbar {
width: 6px;
}
.sidebar-content::-webkit-scrollbar-track {
background: transparent;
}
.sidebar-content::-webkit-scrollbar-thumb {
background: transparent;
border-radius: 3px;
transition: background 0.3s ease;
}
.sidebar-content:hover::-webkit-scrollbar-thumb {
background: rgba(255,255,255,0.3);
}
.sidebar-content:hover::-webkit-scrollbar-thumb:hover {
background: rgba(255,255,255,0.5);
}
[data-theme="light"] .sidebar-content:hover {
scrollbar-color: rgba(0,0,0,0.3) transparent;
}
[data-theme="light"] .sidebar-content:hover::-webkit-scrollbar-thumb {
background: rgba(0,0,0,0.3);
}
[data-theme="light"] .sidebar-content:hover::-webkit-scrollbar-thumb:hover {
background: rgba(0,0,0,0.5);
}
.sidebar-chapter {
display: block;
padding: 8px 0;
color: #aaa;
text-decoration: none;
font-size: 13px;
border-bottom: 1px solid rgba(255,255,255,0.05);
transition: all 0.3s ease;
line-height: 1.5;
}
.sidebar-chapter:hover {
color: #667eea;
}
.sidebar-chapter.current {
color: #667eea;
font-weight: 600;
}
@media (max-width: 1200px) {
.sidebar {
display: none;
}
}
@media (max-width: 600px) {
.chapter-title {
font-size: 24px;
}
.chapter-content {
font-size: 16px;
}
.fixed-nav-content {
gap: 10px;
}
.nav-btn {
padding: 10px 15px;
font-size: 12px;
}
.scroll-buttons {
right: 10px;
bottom: 80px;
}
.scroll-btn {
width: 36px;
height: 36px;
}
}
/* 滚动条样式 */
.sidebar::-webkit-scrollbar {
width: 4px;
}
.sidebar::-webkit-scrollbar-track {
background: transparent;
}
.sidebar::-webkit-scrollbar-thumb {
background: rgba(255,255,255,0.2);
border-radius: 2px;
}
</style>
</head>
<body>
<!-- 顶部导航 -->
<nav class="top-nav">
<div class="top-nav-content">
<a href="../index.html" class="nav-link">返回首页</a>
<button class="nav-link" id="themeToggle">切换主题</button>
</div>
</nav>
<div class="container">
<header class="chapter-header">
<div class="chapter-number">Chapter 178</div>
<h1 class="chapter-title">{{CHAPTER_TITLE}}</h1>
</header>
<article class="chapter-content">
<p>在神界。</p>
<p>奥兹玛的灵魂终于解脱。</p>
<p>他与米歇尔、莉兹团聚。</p>
<p>但他心中还有一个牵挂。</p>
<p>卡赞。</p>
<p style="text-align: center; color: var(--text-secondary); text-indent: 0;">···</p>
<p>奥兹玛坐在神界的花园中。</p>
<p>米歇尔和莉兹陪伴着他。</p>
<p>"奥兹玛...你在想什么?"莉兹问。</p>
<p>奥兹玛看向远方:"我在想...卡赞。"</p>
<p>"他...是我另一个挚友。"</p>
<p>"我们...一起被皇帝陷害。"</p>
<p style="text-align: center; color: var(--text-secondary); text-indent: 0;">···</p>
<p>米歇尔点头:"卡赞...佩鲁斯帝国的最强战士。"</p>
<p>"他手持巨剑,无人能敌。"</p>
<p>"但他...被皇帝陷害谋反。"</p>
<p>"被帝国处决..."</p>
<p>奥兹玛眼中含着泪水:"卡赞...他是无辜的。"</p>
<p>"皇帝利用我们之间的信任..."</p>
<p>"让我去追赶他...然后一起被逮捕。"</p>
<p style="text-align: center; color: var(--text-secondary); text-indent: 0;">···</p>
<p>莉兹握住奥兹玛的手:"奥兹玛...卡赞的灵魂...也在神界。"</p>
<p>奥兹玛惊讶:"卡赞...在神界?"</p>
<p>莉兹点头:"是的。"</p>
<p>"卡赞的灵魂...在神界的战士殿堂。"</p>
<p>"那是战士灵魂的去处。"</p>
<p>奥兹玛眼中闪过希望:"我可以见他吗?"</p>
<p style="text-align: center; color: var(--text-secondary); text-indent: 0;">···</p>
<p>米歇尔点头:"可以。"</p>
<p>"神界是纯净灵魂的去处。"</p>
<p>"你可以去战士殿堂...见卡赞。"</p>
<p>奥兹玛站起来:"我想见他。"</p>
<p>"几百年了...我终于可以见他。"</p>
<p>莉兹和米歇尔陪伴奥兹玛,前往战士殿堂。</p>
<p style="text-align: center; color: var(--text-secondary); text-indent: 0;">···</p>
<p>战士殿堂是神界的一个区域。</p>
<p>那里居住着战士的灵魂。</p>
<p>他们在生前是强大的战士,死后灵魂来到这里。</p>
<p>殿堂的入口是一座巨大的石门。</p>
<p>门上刻着战士的浮雕,充满威严。</p>
<p style="text-align: center; color: var(--text-secondary); text-indent: 0;">···</p>
<p>奥兹玛走进殿堂。</p>
<p>他看到了无数战士的灵魂。</p>
<p>他们在这里修炼、交流、休息。</p>
<p>奥兹玛感受到战士的气息。</p>
<p>"这里...是战士的圣地。"</p>
<p style="text-align: center; color: var(--text-secondary); text-indent: 0;">···</p>
<p>他继续深入殿堂。</p>
<p>在殿堂的中央,他看到了一个熟悉的身影。</p>
<p>那是一个身材高大的人,手持巨剑。</p>
<p>他的面容刚毅,眼神锐利。</p>
<p>卡赞。</p>
<p style="text-align: center; color: var(--text-secondary); text-indent: 0;">···</p>
<p>卡赞正在修炼。</p>
<p>他的巨剑挥舞,剑气纵横。</p>
<p>即使在神界,他依然保持着战士的精神。</p>
<p>"卡赞!"奥兹玛喊道。</p>
<p>卡赞停下动作,看向奥兹玛。</p>
<p>他的眼中闪过惊讶:"奥兹玛?"</p>
<p style="text-align: center; color: var(--text-secondary); text-indent: 0;">···</p>
<p>卡赞走近奥兹玛:"你...来了。"</p>
<p>"你终于解脱了。"</p>
<p>奥兹玛眼中含着泪水:"卡赞...老朋友。"</p>
<p>"几百年了...我终于见到你。"</p>
<p>卡赞露出笑容:"奥兹玛...我一直在等你。"</p>
<p>"我知道你会来这里。"</p>
<p style="text-align: center; color: var(--text-secondary); text-indent: 0;">···</p>
<p>两人相视。</p>
<p>曾经的挚友,终于重逢。</p>
<p>"卡赞...对不起。"奥兹玛说。</p>
<p>"我被混沌吞噬了...我追赶你...我们一起被陷害。"</p>
<p>卡赞摇头:"不,奥兹玛。"</p>
<p>"那不是你的错。"</p>
<p>"是皇帝的阴谋...是赫尔德的欺骗。"</p>
<p>"我们...都是受害者。"</p>
<p style="text-align: center; color: var(--text-secondary); text-indent: 0;">···</p>
<p>奥兹玛点头:"是的...我们都是受害者。"</p>
<p>"但现在...我解脱了。"</p>
<p>"我不再是混沌之神了。"</p>
<p>"我只是...曾经的奥兹玛。"</p>
<p>卡赞露出欣慰的笑容:"奥兹玛...你终于解脱了。"</p>
<p>"我一直在神界等你。"</p>
<p style="text-align: center; color: var(--text-secondary); text-indent: 0;">···</p>
<p>米歇尔和莉兹走近。</p>
<p>卡赞看向米歇尔:"米歇尔...你也来了。"</p>
<p>米歇尔点头:"卡赞...我守护奥兹玛几百年。"</p>
<p>"现在我们...都在神界团聚了。"</p>
<p>卡赞点头:"米歇尔...谢谢你。"</p>
<p>"你守护奥兹玛...让他最终解脱。"</p>
<p>"这是最好的结果。"</p>
<p style="text-align: center; color: var(--text-secondary); text-indent: 0;">···</p>
<p>莉兹走近卡赞:"卡赞大人...谢谢您。"</p>
<p>卡赞看向莉兹:"莉兹...你是奥兹玛的恋人。"</p>
<p>"你也在神界..."</p>
<p>莉兹点头:"是的。"</p>
<p>"我们...都在神界团聚了。"</p>
<p>四人相视。</p>
<p>曾经的痛苦和等待...终于结束。</p>
<p style="text-align: center; color: var(--text-secondary); text-indent: 0;">···</p>
<p>卡赞看向奥兹玛:"奥兹玛...我有一个消息告诉你。"</p>
<p>"关于林克。"</p>
<p>奥兹玛惊讶:"林克?"</p>
<p>卡赞点头:"是的。"</p>
<p>"林克会来神界。"</p>
<p>"他拥有创世之力碎片...他会来获得完整的创世之力。"</p>
<p style="text-align: center; color: var(--text-secondary); text-indent: 0;">···</p>
<p>奥兹玛点头:"是的...林克拯救了我。"</p>
<p>"他是米歇尔选择的人。"</p>
<p>卡赞继续说:"林克...需要帮助。"</p>
<p>"神界不是平静的地方。"</p>
<p>"那里有神族...有神之力...还有危险。"</p>
<p>"我可以帮助他。"</p>
<p style="text-align: center; color: var(--text-secondary); text-indent: 0;">···</p>
<p>米歇尔惊讶:"卡赞...你想帮助林克?"</p>
<p>卡赞点头:"是的。"</p>
<p>"林克拯救了奥兹玛...这是我最好的朋友的解脱。"</p>
<p>"我想报答他。"</p>
<p>"我可以...在神界帮助他。"</p>
<p style="text-align: center; color: var(--text-secondary); text-indent: 0;">···</p>
<p>奥兹玛眼中含着感激:"卡赞...谢谢你。"</p>
<p>卡赞露出笑容:"奥兹玛...我们是挚友。"</p>
<p>"你解脱了...我也想为你做点什么。"</p>
<p>"帮助林克...就是最好的报答。"</p>
<p style="text-align: center; color: var(--text-secondary); text-indent: 0;">···</p>
<p>莉兹点头:"卡赞大人...谢谢您。"</p>
<p>米歇尔也说:"卡赞...林克会需要帮助。"</p>
<p>"神界有很多危险...你的战士经验会帮助他。"</p>
<p>卡赞点头:"我会等待林克。"</p>
<p>"当他来神界时...我会帮助他。"</p>
<p style="text-align: center; color: var(--text-secondary); text-indent: 0;">···</p>
<p>四人继续在战士殿堂交流。</p>
<p>奥兹玛讲述他被混沌吞噬的经历。</p>
<p>卡赞讲述他在神界等待的岁月。</p>
<p>米歇尔讲述他守护奥兹玛的几百年。</p>
<p>莉兹讲述她对奥兹玛的爱。</p>
<p style="text-align: center; color: var(--text-secondary); text-indent: 0;">···</p>
<p>"几百年了..."奥兹玛感慨。</p>
<p>"我们终于团聚了。"</p>
<p>卡赞点头:"是的。"</p>
<p>"佩鲁斯帝国的最强组合..."</p>
<p>"战士卡赞...法师奥兹玛..."</p>
<p>"我们终于团聚了。"</p>
<p style="text-align: center; color: var(--text-secondary); text-indent: 0;">···</p>
<p>米歇尔说:"还有我。"</p>
<p>"圣职者米歇尔..."</p>
<p>"你们的朋友..."</p>
<p>莉兹笑着说:"还有我。"</p>
<p>"莉兹...奥兹玛的恋人..."</p>
<p>四人相视而笑。</p>
<p>几百年后的团聚...终于实现。</p>
<p style="text-align: center; color: var(--text-secondary); text-indent: 0;">···</p>
<p>奥兹玛看向天空:"林克...会来神界。"</p>
<p>"他会获得完整的创世之力。"</p>
<p>卡赞点头:"是的。"</p>
<p>"我会帮助他。"</p>
<p>"我的战士经验...会帮助他应对神界的危险。"</p>
<p style="text-align: center; color: var(--text-secondary); text-indent: 0;">···</p>
<p>米歇尔说:"我也会帮助他。"</p>
<p>"我的神圣之力...会帮助他净化神界的邪恶。"</p>
<p>莉兹点头:"我会支持他。"</p>
<p>"我的爱...会给他力量。"</p>
<p>奥兹玛露出笑容:"我们都会帮助林克。"</p>
<p>"他拯救了我...让我们团聚。"</p>
<p>"我们...报答他。"</p>
<p style="text-align: center; color: var(--text-secondary); text-indent: 0;">···</p>
<p>四人达成共识。</p>
<p>当林克来神界时。</p>
<p>他们会帮助他。</p>
<p>这是对林克的报答。</p>
<p style="text-align: center; color: var(--text-secondary); text-indent: 0;">···</p>
<p>卡赞看向奥兹玛:"奥兹玛...还有一件事。"</p>
<p>"我的巨剑...留在阿拉德大陆。"</p>
<p>"那把剑...是我生前的武器。"</p>
<p>"如果能找到它...会帮助林克。"</p>
<p style="text-align: center; color: var(--text-secondary); text-indent: 0;">···</p>
<p>奥兹玛惊讶:"你的巨剑?"</p>
<p>卡赞点头:"是的。"</p>
<p>"那把剑...蕴含着我的战士精神。"</p>
<p>"如果林克能获得它...会增强他的力量。"</p>
<p>米歇尔点头:"卡赞的巨剑...确实强大。"</p>
<p>"那是佩鲁斯帝国最强的武器。"</p>
<p style="text-align: center; color: var(--text-secondary); text-indent: 0;">···</p>
<p>莉兹说:"巨剑在哪里?"</p>
<p>卡赞回答:"在佩鲁斯帝国的遗迹。"</p>
<p>"帝国灭亡后...遗迹被埋在地下。"</p>
<p>"我的巨剑...在遗迹深处。"</p>
<p>米歇尔点头:"佩鲁斯帝国遗迹...在阿拉德大陆的某个地方。"</p>
<p>"林克如果找到它...会获得卡赞的巨剑。"</p>
<p style="text-align: center; color: var(--text-secondary); text-indent: 0;">···</p>
<p>奥兹玛眼中闪过希望:"林克如果能获得卡赞的巨剑..."</p>
<p>"他的力量会更强。"</p>
<p>卡赞点头:"是的。"</p>
<p>"我的巨剑...会给他战士的力量。"</p>
<p>"剑神林克...如果拥有剑魂和战士的力量..."</p>
<p>"他会更强大。"</p>
<p style="text-align: center; color: var(--text-secondary); text-indent: 0;">···</p>
<p>米歇尔说:"我会告诉林克。"</p>
<p>"当他来神界时...我会告诉他卡赞的巨剑。"</p>
<p>卡赞点头:"谢谢米歇尔。"</p>
<p>"我希望林克能找到我的巨剑。"</p>
<p>"那样...我就能更好地帮助他。"</p>
<p style="text-align: center; color: var(--text-secondary); text-indent: 0;">···</p>
<p>四人继续交流。</p>
<p>他们谈论林克的神界之旅。</p>
<p>谈论神界的危险和机遇。</p>
<p>谈论如何帮助林克。</p>
<p style="text-align: center; color: var(--text-secondary); text-indent: 0;">···</p>
<p>"林克...会来神界。"奥兹玛说。</p>
<p>"他拥有创世之力碎片...他需要完整的创世之力。"</p>
<p>"神界...是创世之力的源头。"</p>
<p>卡赞点头:"是的。"</p>
<p>"神界有神族...有神之力..."</p>
<p>"林克需要应对这些。"</p>
<p style="text-align: center; color: var(--text-secondary); text-indent: 0;">···</p>
<p>米歇尔说:"神族...是神界的居民。"</p>
<p>"他们拥有神之力...这是不同于创世之力的力量。"</p>
<p>"林克需要了解神族。"</p>
<p>莉兹点头:"神族有善良的...也有邪恶的。"</p>
<p>"林克需要分辨他们。"</p>
<p style="text-align: center; color: var(--text-secondary); text-indent: 0;">···</p>
<p>卡赞说:"战士殿堂的神族...大多是善良的。"</p>
<p>"他们是战士的灵魂...与世无争。"</p>
<p>"但神界其他地方...有邪恶的神族。"</p>
<p>"堕落神族...他们想要毁灭一切。"</p>
<p>奥兹玛眼中闪过担忧:"堕落神族?"</p>
<p style="text-align: center; color: var(--text-secondary); text-indent: 0;">···</p>
<p>卡赞点头:"是的。"</p>
<p>"堕落神族...是神界的危险。"</p>
<p>"他们拥有神之力...但被邪恶吞噬。"</p>
<p>"林克需要对抗他们。"</p>
<p>米歇尔点头:"我会帮助林克对抗堕落神族。"</p>
<p>"我的神圣之力...可以净化他们的邪恶。"</p>
<p style="text-align: center; color: var(--text-secondary); text-indent: 0;">···</p>
<p>莉兹说:"我会为林克祈祷。"</p>
<p>"希望他能成功。"</p>
<p>奥兹玛露出坚定的眼神:"林克拯救了我。"</p>
<p>"我相信他...能成功。"</p>
<p>四人达成共识。</p>
<p>他们会在神界帮助林克。</p>
<p style="text-align: center; color: var(--text-secondary); text-indent: 0;">···</p>
<p>战士殿堂的光芒照耀四人。</p>
<p>他们的灵魂在神界团聚。</p>
<p>几百年后的重逢...终于实现。</p>
<p>"我们...终于解脱了。"奥兹玛说。</p>
<p>"是的。"卡赞点头。</p>
<p>"佩鲁斯帝国的悲剧...终于结束。"</p>
<p>"我们...在神界团聚。"</p>
<p style="text-align: center; color: var(--text-secondary); text-indent: 0;">···</p>
<p>四人看向神界的远方。</p>
<p>那里是林克即将到来的方向。</p>
<p>"林克...一路走好。"奥兹玛说。</p>
<p>"我们在神界...等你。"</p>
<p>卡赞点头:"我的巨剑...在等你。"</p>
<p>米歇尔点头:"我的神圣之力...在等你。"</p>
<p>莉兹点头:"我的祈祷...在等你。"</p>
<p style="text-align: center; color: var(--text-secondary); text-indent: 0;">···</p>
<p>四人相视而笑。</p>
<p>几百年后的团聚。</p>
<p>新的旅程即将开始。</p>
<p>林克会来神界。</p>
<p>他们会在神界帮助他。</p>
<p style="text-align: center; color: var(--text-secondary); text-indent: 0;">···</p>
<p>这是奥兹玛最后的遗言。</p>
<p>关于卡赞。关于神界。关于林克。</p>
<p>为神界篇...埋下伏笔。</p>
<p style="text-align: center; color: var(--text-secondary); text-indent: 0;">···</p>
<p style="text-align: center; color: var(--text-secondary); text-indent: 0; margin-top: 2em;">(第一百七十八章完)</p>
<p style="text-align: center; color: var(--text-secondary); text-indent: 0; margin-top: 2em;">(番外·奥兹玛的遗言)</p>
<p style="text-align: center; color: var(--text-secondary); text-indent: 0; margin-top: 2em;">(奥兹玛篇·完结)</p>
</article>
</div>
<!-- 固定底部导航 -->
<nav class="fixed-nav">
<div class="fixed-nav-content">
<a href="chapter-177.html" class="nav-btn ">上一章</a>
<a href="../chapters.html" class="nav-btn">目录</a>
<a href="chapter-179.html" class="nav-btn ">下一章</a>
</div>
</nav>
<!-- 右侧滚动按钮 -->
<div class="scroll-buttons">
<button class="scroll-btn" id="scrollTop" title="回到顶部"></button>
<button class="scroll-btn" id="scrollBottom" title="回到底部"></button>
</div>
<!-- TTS语音朗读面板 -->
<div class="tts-panel" id="ttsPanel">
<div class="tts-title">语音朗读</div>
<div class="tts-controls">
<button class="tts-btn" id="ttsPlay" title="播放"></button>
<button class="tts-btn" id="ttsPause" title="暂停"></button>
<button class="tts-btn" id="ttsStop" title="停止"></button>
</div>
<div class="tts-progress">
<div class="tts-progress-bar">
<div class="tts-progress-fill" id="ttsProgressFill"></div>
</div>
<div class="tts-time" id="ttsTime">0 / 0</div>
</div>
<div class="tts-speed">
<span class="tts-speed-label">速度:</span>
<select class="tts-speed-select" id="ttsSpeed">
<option value="0.5">慢速</option>
<option value="0.75">较慢</option>
<option value="1" selected>正常</option>
<option value="1.25">较快</option>
<option value="1.5">快速</option>
<option value="2">极速</option>
</select>
</div>
</div>
<!-- 侧边栏章节导航 -->
<aside class="sidebar">
<div class="sidebar-title">章节导航</div>
<div class="sidebar-content" id="sidebarContent">
<a href="chapter-148.html" class="sidebar-chapter ">第148章战后余晖</a>
<a href="chapter-149.html" class="sidebar-chapter ">第149章泰波尔斯的召唤</a>
<a href="chapter-150.html" class="sidebar-chapter ">第150章天空之城</a>
<a href="chapter-151.html" class="sidebar-chapter ">第151章风暴试炼</a>
<a href="chapter-152.html" class="sidebar-chapter ">第152章光芒与暗影</a>
<a href="chapter-153.html" class="sidebar-chapter ">第153章天空之战</a>
<a href="chapter-154.html" class="sidebar-chapter ">第154章天空之战</a>
<a href="chapter-155.html" class="sidebar-chapter ">第155章天空之战</a>
<a href="chapter-156.html" class="sidebar-chapter ">第156章格兰之森异象</a>
<a href="chapter-157.html" class="sidebar-chapter ">第157章魔界深处</a>
<a href="chapter-158.html" class="sidebar-chapter ">第158章幻象迷宫</a>
<a href="chapter-159.html" class="sidebar-chapter ">第159章无形之战</a>
<a href="chapter-160.html" class="sidebar-chapter ">第160章无形者的秘密</a>
<a href="chapter-161.html" class="sidebar-chapter ">第161章光之试炼</a>
<a href="chapter-162.html" class="sidebar-chapter ">第162章希洛克的陷阱</a>
<a href="chapter-163.html" class="sidebar-chapter ">第163章无形之战</a>
<a href="chapter-164.html" class="sidebar-chapter ">第164章日常的温馨</a>
<a href="chapter-165.html" class="sidebar-chapter ">第165章莎莎的信</a>
<a href="chapter-166.html" class="sidebar-chapter ">第166章圣者之鸣号</a>
<a href="chapter-167.html" class="sidebar-chapter ">第167章黑色大地入口</a>
<a href="chapter-168.html" class="sidebar-chapter ">第168章焦黑之地深入</a>
<a href="chapter-169.html" class="sidebar-chapter ">第169章暗黑骑士团</a>
<a href="chapter-170.html" class="sidebar-chapter ">第170章黑暗中的记忆</a>
<a href="chapter-171.html" class="sidebar-chapter ">第171章混沌王座</a>
<a href="chapter-172.html" class="sidebar-chapter ">第172章混沌之神的力量</a>
<a href="chapter-173.html" class="sidebar-chapter ">第173章米歇尔的羁绊</a>
<a href="chapter-174.html" class="sidebar-chapter ">第174章创世之光的净化</a>
<a href="chapter-175.html" class="sidebar-chapter ">第175章混沌的终结</a>
<a href="chapter-176.html" class="sidebar-chapter ">第176章篇章落幕</a>
<a href="chapter-177.html" class="sidebar-chapter ">第177章番外·米歇尔的最后祝福</a>
<a href="chapter-178.html" class="sidebar-chapter current">第178章番外·奥兹玛的遗言</a>
</div>
</aside>
<script>
// 记录阅读进度
let readChapters = JSON.parse(localStorage.getItem('readChapters') || '[]');
if (!readChapters.includes(178)) {
readChapters.push({{CHAPTER_ID}});
localStorage.setItem('readChapters', JSON.stringify(readChapters));
}
// 主题切换
const themeToggle = document.getElementById('themeToggle');
const savedTheme = localStorage.getItem('theme') || 'dark';
document.documentElement.setAttribute('data-theme', savedTheme);
themeToggle.textContent = savedTheme === 'dark' ? '浅色' : '深色';
themeToggle.addEventListener('click', () => {
const currentTheme = document.documentElement.getAttribute('data-theme');
const newTheme = currentTheme === 'dark' ? 'light' : 'dark';
document.documentElement.setAttribute('data-theme', newTheme);
localStorage.setItem('theme', newTheme);
themeToggle.textContent = newTheme === 'dark' ? '浅色' : '深色';
});
// 滚动到顶部
document.getElementById('scrollTop').addEventListener('click', () => {
window.scrollTo({ top: 0, behavior: 'smooth' });
});
// 滚动到底部
document.getElementById('scrollBottom').addEventListener('click', () => {
window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' });
});
// 页面加载时,侧边栏自动滚动到当前章节
window.addEventListener('load', () => {
const sidebarContent = document.getElementById('sidebarContent');
const currentChapter = sidebarContent.querySelector('.current');
if (currentChapter) {
currentChapter.scrollIntoView({ behavior: 'smooth', block: 'center' });
}
});
// ========== TTS语音朗读功能 ==========
let ttsSynth = window.speechSynthesis;
let ttsUtterance = null;
let ttsText = '';
let ttsSentences = [];
let ttsCurrentIndex = 0;
let ttsIsPlaying = false;
let ttsIsPaused = false;
let ttsSpeed = 1;
// 初始化:提取章节内容
function initTTS() {
const contentEl = document.querySelector('.chapter-content');
if (!contentEl) return;
// 获取所有段落文本清理HTML标签
ttsText = contentEl.innerText || contentEl.textContent;
// 分割成句子(中文按句号、问号、感叹号分割)
ttsSentences = ttsText.match(/[^。!?\n]+[。!?\n]+|[^。!?\n]+$/g) || [ttsText];
ttsSentences = ttsSentences.filter(s => s.trim().length > 0);
updateTTSProgress();
}
// 更新进度显示
function updateTTSProgress() {
const total = ttsSentences.length;
const current = ttsCurrentIndex;
document.getElementById('ttsTime').textContent = `${current} / ${total}`;
const percent = total > 0 ? (current / total * 100) : 0;
document.getElementById('ttsProgressFill').style.width = `${percent}%`;
}
// 播放当前句子
function playCurrentSentence() {
if (ttsCurrentIndex >= ttsSentences.length) {
stopTTS();
return;
}
const text = ttsSentences[ttsCurrentIndex].trim();
ttsUtterance = new SpeechSynthesisUtterance(text);
ttsUtterance.lang = 'zh-CN';
ttsUtterance.rate = ttsSpeed;
// 尝试选择中文语音
const voices = ttsSynth.getVoices();
const zhVoice = voices.find(v => v.lang.includes('zh') || v.lang.includes('CN'));
if (zhVoice) {
ttsUtterance.voice = zhVoice;
}
ttsUtterance.onend = () => {
if (ttsIsPlaying && !ttsIsPaused) {
ttsCurrentIndex++;
updateTTSProgress();
playCurrentSentence();
}
};
ttsUtterance.onerror = (e) => {
console.error('TTS error:', e);
if (ttsIsPlaying) {
ttsCurrentIndex++;
updateTTSProgress();
playCurrentSentence();
}
};
ttsSynth.speak(ttsUtterance);
}
// 播放
function playTTS() {
if (ttsSentences.length === 0) {
initTTS();
}
if (ttsIsPaused) {
ttsSynth.resume();
ttsIsPaused = false;
} else {
ttsIsPlaying = true;
playCurrentSentence();
}
document.getElementById('ttsPlay').classList.add('active');
document.getElementById('ttsPause').classList.remove('active');
}
// 暂停
function pauseTTS() {
if (ttsIsPlaying) {
ttsSynth.pause();
ttsIsPaused = true;
document.getElementById('ttsPlay').classList.remove('active');
document.getElementById('ttsPause').classList.add('active');
}
}
// 停止
function stopTTS() {
ttsSynth.cancel();
ttsIsPlaying = false;
ttsIsPaused = false;
ttsCurrentIndex = 0;
updateTTSProgress();
document.getElementById('ttsPlay').classList.remove('active');
document.getElementById('ttsPause').classList.remove('active');
}
// 设置速度
function setTTSSpeed(speed) {
ttsSpeed = parseFloat(speed);
// 如果正在播放,需要重新开始当前句子
if (ttsIsPlaying && !ttsIsPaused) {
ttsSynth.cancel();
playCurrentSentence();
}
}
// 绑定事件
document.getElementById('ttsPlay').addEventListener('click', playTTS);
document.getElementById('ttsPause').addEventListener('click', pauseTTS);
document.getElementById('ttsStop').addEventListener('click', stopTTS);
document.getElementById('ttsSpeed').addEventListener('change', (e) => setTTSSpeed(e.target.value));
// 加载语音列表(某些浏览器需要异步加载)
if (speechSynthesis.onvoiceschanged !== undefined) {
speechSynthesis.onvoiceschanged = initTTS;
}
// 页面加载时初始化
window.addEventListener('load', () => {
initTTS();
});
// 页面离开时停止播放
window.addEventListener('beforeunload', stopTTS);
</script>
</body>
</html>