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

993 lines
42 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 72</div>
<h1 class="chapter-title">{{CHAPTER_TITLE}}</h1>
</header>
<article class="chapter-content">
<p>根特北门之战的胜利,为皇都军赢得了宝贵的喘息时间。</p>
<p>但卡勒特并未就此罢休,他们集结了更强大的兵力,向根特南门发动了总攻。</p>
<p>"情况紧急。"马琳·基希卡在作战会议上说道,她的红发在灯光下闪烁着光泽,"南门守备队发来求援信号,卡勒特投入了主力部队,还有...新型机动兵器。"</p>
<p>"新型兵器?"泽丁皱眉。</p>
<p>"是的名为GT-9600的大型机动兵器。"马琳推了推眼镜,"根据情报这是卡勒特的科学家吉赛尔博士开发的威力远超AT-5T。"</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>"嗯。"马琳看着远方,"我也想像她一样,勇敢地追求自己的幸福...但我不能。"</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>"那就是GT-9600"马琳指着远处的一台巨大机械。</p>
<p>那是一台如同移动堡垒般的机动兵器,装备着各种火炮和导弹,所过之处寸草不生。</p>
<p>"必须先摧毁它!"林克拔出光剑。</p>
<p>"我来掩护你!"马琳举起双枪,作为漫游枪手的她,枪法精准无比。</p>
<p>两人配合默契,林克负责近战突破,马琳在后方提供火力支援。她的双枪如同死神的镰刀,每一发子弹都精准地命中敌人的要害。</p>
<p>"林克,左边!"</p>
<p>"明白!"</p>
<p>林克施展流心·跃身形在空中翻转避开了GT-9600的炮火同时接近了它的侧翼。</p>
<p>"拔刀斩!"</p>
<p>剑气斩在GT-9600的装甲上却只留下一道浅浅的痕迹。</p>
<p>"好硬的装甲!"林克惊讶。</p>
<p>"它的弱点在关节处!"马琳喊道,"我来吸引火力,你找机会攻击!"</p>
<p>马琳双枪齐发子弹如雨点般射向GT-9600的传感器成功吸引了它的注意力。</p>
<p>"去死吧!"GT-9600的炮口对准了马琳。</p>
<p>"马琳,小心!"</p>
<p>林克身形一闪,在千钧一发之际推开了马琳,自己却被爆炸的冲击波掀飞。</p>
<p>"林克!"</p>
<p>马琳冲过去,看到林克倒在地上,身上满是伤痕。</p>
<p>"你...你为什么..."她的眼泪夺眶而出。</p>
<p>"因为..."林克艰难地笑了笑,"我不能让你受伤..."</p>
<p>马琳紧紧抱住他,泣不成声:"笨蛋...大笨蛋...为什么要为我做这种事..."</p>
<p>"因为..."林克抬起手,擦去她的眼泪,"我喜欢你。"</p>
<p>马琳愣住了。</p>
<p>"从第一次见到你,我就被你的优雅和坚强吸引了。"林克认真地说,"马琳...我不想只是你的战友...我想成为更重要的人..."</p>
<p>马琳看着他,眼中的泪水止不住地流:"林克...我也...我也喜欢你..."</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>剑气如龙在GT-9600的关节处穿梭终于找到了它的弱点。</p>
<p>"就是现在!"</p>
<p>林克一剑刺入GT-9600的核心巨大的机动兵器轰然倒塌。</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>马琳的脸瞬间红透:"你...你还受着伤..."</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>"嗯..."马琳轻声呻吟,"那里..."</p>
<p>"哪里?"林克故意问道。</p>
<p>"坏...坏蛋..."马琳红着脸,"你知道的..."</p>
<p>林克轻笑,手指在她胸前的柔软上轻轻揉捏。马琳的呼吸变得急促,身体轻轻颤抖。</p>
<p>"林克..."她轻声唤道,"我想要你...给我..."</p>
<p>林克缓缓进入了她的身体。</p>
<p>"啊——!"马琳痛呼一声,眼泪流了出来,"痛...好痛..."</p>
<p>"忍一忍。"林克停下动作,温柔地吻着她,"第一次都会痛的...等一会儿就好了。"</p>
<p>他耐心地等待着,一只手轻抚着她的头发,另一只手与她十指相扣。马琳的呼吸渐渐平稳,身体的紧绷也慢慢放松。</p>
<p>"好...好多了..."她轻声说,"可以...动了..."</p>
<p>林克开始缓慢地动作,每一次都小心翼翼。马琳起初只是咬着嘴唇忍耐,但渐渐地,一种奇妙的感觉从身体深处涌起。</p>
<p>"嗯...啊..."她开始发出细碎的呻吟,"好奇怪...不痛了...好舒服..."</p>
<p>"舒服吗?"林克轻笑。</p>
<p>"嗯..."马琳点头,"给我...更多..."</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>"但是..."马琳突然说道,"有一件事我要告诉你。"</p>
<p>"什么事?"</p>
<p>"泽丁...她知道你喜欢我吗?"</p>
<p>林克愣了一下:"应该...知道吧。"</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>"谢什么?"泽丁笑道,"以后我们要一起监督这个花心大萝卜。"</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>
</article>
</div>
<!-- 固定底部导航 -->
<nav class="fixed-nav">
<div class="fixed-nav-content">
<a href="chapter-71.html" class="nav-btn ">上一章</a>
<a href="../chapters.html" class="nav-btn">目录</a>
<a href="chapter-73.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-42.html" class="sidebar-chapter ">第42章山脊·野兽师</a>
<a href="chapter-43.html" class="sidebar-chapter ">第43章番外·雪山温泉</a>
<a href="chapter-44.html" class="sidebar-chapter ">第44章白色废墟</a>
<a href="chapter-45.html" class="sidebar-chapter ">第45章冰雪宫殿</a>
<a href="chapter-46.html" class="sidebar-chapter ">第46章布万加修炼场</a>
<a href="chapter-47.html" class="sidebar-chapter ">第47章斯卡萨之巢·龙威</a>
<a href="chapter-48.html" class="sidebar-chapter ">第48章斯卡萨之巢·龙陨</a>
<a href="chapter-49.html" class="sidebar-chapter ">第49章重返赫顿玛尔</a>
<a href="chapter-50.html" class="sidebar-chapter ">第50章诺斯玛尔·盗贼团</a>
<a href="chapter-51.html" class="sidebar-chapter ">第51章哈穆林·鼠患</a>
<a href="chapter-52.html" class="sidebar-chapter ">第52章月光酒馆·寻找阿甘左</a>
<a href="chapter-53.html" class="sidebar-chapter ">第53章番外·帕丽丝的誓言</a>
<a href="chapter-54.html" class="sidebar-chapter ">第54章觉醒之路·启程</a>
<a href="chapter-55.html" class="sidebar-chapter ">第55章比尔马克帝国试验场</a>
<a href="chapter-56.html" class="sidebar-chapter ">第56章王的遗迹·远古五骑士</a>
<a href="chapter-57.html" class="sidebar-chapter ">第57章心灵试炼·剑圣觉醒</a>
<a href="chapter-58.html" class="sidebar-chapter ">第58章番外·后宫的温馨</a>
<a href="chapter-59.html" class="sidebar-chapter ">第59章敏泰的思念</a>
<a href="chapter-60.html" class="sidebar-chapter ">第60章敏泰加入·前往诺伊佩拉</a>
<a href="chapter-61.html" class="sidebar-chapter ">第61章悲鸣洞穴·阿甘左与卢克西</a>
<a href="chapter-62.html" class="sidebar-chapter ">第62章战前准备·痛苦之村的情报</a>
<a href="chapter-63.html" class="sidebar-chapter ">第63章痛苦之村列瑟芬·狄瑞吉的真身</a>
<a href="chapter-64.html" class="sidebar-chapter ">第64章胜利归来·赫顿玛尔的庆祝</a>
<a href="chapter-65.html" class="sidebar-chapter ">第65章正宫的专属时光·赛丽亚的深情</a>
<a href="chapter-66.html" class="sidebar-chapter ">第66章番外·五人同床·后宫大被同眠</a>
<a href="chapter-67.html" class="sidebar-chapter ">第67章热血八番街·火箭侠的阴谋</a>
<a href="chapter-68.html" class="sidebar-chapter ">第68章绿都格罗兹尼·魔雷者莫纳亨</a>
<a href="chapter-69.html" class="sidebar-chapter ">第69章魔雷者的苏醒·莫纳亨的抉择</a>
<a href="chapter-70.html" class="sidebar-chapter ">第70章天界之门·根特外围的战火</a>
<a href="chapter-71.html" class="sidebar-chapter ">第71章根特北门·泽丁的誓言</a>
<a href="chapter-72.html" class="sidebar-chapter current">第72章根特南门·马琳的效忠</a>
<a href="chapter-73.html" class="sidebar-chapter ">第73章根特防御战·钢铁与血肉的碰撞</a>
<a href="chapter-74.html" class="sidebar-chapter ">第74章夜间袭击战·银勺杂技团的覆灭</a>
<a href="chapter-75.html" class="sidebar-chapter ">第75章补给线阻断战·UM-0终结者</a>
<a href="chapter-76.html" class="sidebar-chapter ">第76章追击歼灭战·机械吉赛尔的末路</a>
<a href="chapter-77.html" class="sidebar-chapter ">第77章海上列车·鲁夫特悬空海港</a>
<a href="chapter-78.html" class="sidebar-chapter ">第78章列车上的海贼·铁鳞团的覆灭</a>
<a href="chapter-79.html" class="sidebar-chapter ">第79章夺回西部线·卡勒特的余孽</a>
<a href="chapter-80.html" class="sidebar-chapter ">第80章雾都赫伊斯·无法地带的阴影</a>
<a href="chapter-81.html" class="sidebar-chapter ">第81章阿登高地·GT-9600</a>
<a href="chapter-82.html" class="sidebar-chapter ">第82章卡勒特指挥部·兰蒂卢斯</a>
<a href="chapter-83.html" class="sidebar-chapter ">第83章皇女的告白·天界的新篇章</a>
<a href="chapter-84.html" class="sidebar-chapter ">第84章幽灵列车·亡者的低语</a>
<a href="chapter-85.html" class="sidebar-chapter ">第85章伊顿工业区·克雷发电站</a>
<a href="chapter-86.html" class="sidebar-chapter ">第86章普鲁兹发电站·闪电之帕特里斯</a>
<a href="chapter-87.html" class="sidebar-chapter ">第87章特伦斯发电站·熔岩之萨姆</a>
<a href="chapter-88.html" class="sidebar-chapter ">第88章格兰迪发电站·虚空之弗曼</a>
<a href="chapter-89.html" class="sidebar-chapter ">第89章安图恩攻坚战·黑雾之源</a>
<a href="chapter-90.html" class="sidebar-chapter ">第90章安图恩攻坚战·震颤的大地</a>
<a href="chapter-91.html" class="sidebar-chapter ">第91章安图恩攻坚战·擎天之柱</a>
<a href="chapter-92.html" class="sidebar-chapter ">第92章安图恩攻坚战·黑色火山</a>
<a href="chapter-93.html" class="sidebar-chapter ">第93章安图恩攻坚战·使徒陨落</a>
<a href="chapter-94.html" class="sidebar-chapter ">第94章克洛诺斯岛·寂静城的召唤</a>
<a href="chapter-95.html" class="sidebar-chapter ">第95章寂静城的秘密</a>
<a href="chapter-96.html" class="sidebar-chapter ">第96章番外·贝奇的献身</a>
<a href="chapter-97.html" class="sidebar-chapter ">第97章光之舞会</a>
<a href="chapter-98.html" class="sidebar-chapter ">第98章钢铁之臂</a>
<a href="chapter-99.html" class="sidebar-chapter ">第99章能源熔炉</a>
<a href="chapter-100.html" class="sidebar-chapter ">第100章王之书库</a>
<a href="chapter-101.html" class="sidebar-chapter ">第101章不灭回廊</a>
<a href="chapter-102.html" class="sidebar-chapter ">第102章机械王座</a>
</div>
</aside>
<script>
// 记录阅读进度
let readChapters = JSON.parse(localStorage.getItem('readChapters') || '[]');
if (!readChapters.includes(72)) {
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>