← 返回

应用详情

📦

蔚蓝档案·镜海回响

版本 v1 · 15.1 KB
ID: mirror_sea
⬇ 下载 CIP 🔍 返回列表
📝 应用描述
以夏莱老师身份代入,在基沃托斯镜海事件中引导学生直面自我,做出不可回头的抉择。多分支青春战斗视觉小说。
📋 详细信息
应用ID mirror_sea
名称 蔚蓝档案·镜海回响
版本 v1
文件大小 15.1 KB
上传时间 2026-07-29 20:49:58
状态 ✅ 已启用
权限 storage
💡 界面预览 (main.lua)
📄 Lua 源码
-- ============================================
-- 蔚蓝档案 · 镜海回响 — CIP 视觉小说
-- ============================================

local scenes = {

-- ==================== PROLOGUE ====================
prologue = {
title = "序幕 · 镜中的她们",
body = [[夕阳透过百叶窗洒在堆满文件的办公桌上。你正打算泡一杯咖啡,忽然,桌上的平板屏幕自动亮起,一条加密通讯请求弹出。来电显示:联邦学生会·紧急频道。

凛(联邦学生会)(全息影像中神色焦急):"老师!大事不妙!刚刚接到多所学园的报告——在三十分钟内,共有七名学生'蒸发'了。她们不是失踪,而是……像被镜子吸进去一样,在原地留下了一面碎裂的镜子碎片。"

她挥手展示一段监控:画面里,一名格黑娜学生在走廊正常行走,忽然她脚下的阴影扭曲了一下,她整个人就像被折叠一样消失在原地,只留下一地玻璃般的碎片。

凛:"更诡异的是,碎片中倒映出的'她们'仍然能动,而且正在以极快的速度在基沃托斯各处散布混乱。格黑娜的弹药库被莫名引爆,三一的教堂钟楼被涂鸦覆盖,阿拜多斯的海边甚至出现了一座由镜子组成的迷宫……"

这时,你的手机连续震动。三条紧急信息同时弹出:

· 白子(阿拜多斯):"老师,我们在沙漠里发现了一面巨大的镜子,里面有'我'在笑,但那个'我'手里拿着枪。"
· 日奈(格黑娜):"风纪委员会已经封锁了格黑娜北区,但镜中出现的'我'拥有和我一样的力量。请求支援。"
· 爱丽丝(千禧年):"老师老师!爱丽丝的扫描仪捕捉到了异常的能量波!它和'方舟'的启动信号很像!要不要来千禧年看看?"

凛结束了通讯,留下一句话。

凛:"老师,联邦学生会已经发布了'镜海'紧急事态。你拥有独立行动权,请尽快做出判断。我们将配合你的行动。"

【第一次抉择:你的行动方向】
]],
choices = {
{ label = "A", text = "阿拜多斯 · 沙漠镜宫 — 白子从不轻易求助,沙漠的镜子迷宫藏着最直接的线索", next = "act1_abydos" },
{ label = "B", text = "格黑娜 · 镜像暴走 — 日奈独自面对'另一个自己'太危险,必须阻止弹药库危机", next = "act1_gehenna" },
{ label = "C", text = "千禧年 · 科技线索 — 爱丽丝提到的'方舟'能量,或许能从根源分析镜海本质", next = "act1_millennium" },
}
},

-- ==================== ABYDOS LINE ====================
act1_abydos = {
title = "第一幕 · 沙漠镜宫",
body = [[你驱车赶到时,白子正站在一面高达十米的巨型镜墙前。镜面如水面般波动,映照出她的身影——但那个倒影正对她露出一个诡异的微笑,手中握着一把完全相同的突击步枪,只是枪口指向了白子本人。

白子(没有回头,声音冷静):"老师。你来了。"

她停顿了一下,目光紧锁着镜中的自己。

白子:"我试着对镜子开了三枪。子弹穿过去了,但镜中那个'我'毫发无损,而且她回敬了我三枪——弹道轨迹完全一致,只是……速度更快。"

你走近,观察到镜面背后隐约可见一座由无数镜面构成的迷宫,像一座巨大的水晶蚁穴。

白子(转向你,眼神里有一丝不易察觉的动摇):"老师……如果那里面真的是'我',那我该怎么办?把她打倒,还是……救她?"

就在这时,镜面一阵波动,那个倒影竟然开口说话了。

镜·白子(声音与白子完全相同,但带着一种异样的愉悦):"老师~你也是来陪我们一起玩的吗?外面的世界太无聊了,这里才是真正'真实的我们'。白子她啊,一直在压抑自己的渴望呢——想打破规则,想奔跑,想……变得自由。"

白子(握紧枪身,声音低沉):"住口。你不是我。"

镜·白子(轻笑):"你很快就会明白的~来吧,老师,走进来,看看你的学生们'真正'的样子。"

镜面裂开一道可容一人通过的缝隙,里面透出幽蓝的光。

【第二次抉择:进入镜宫的方式】
]],
choices = {
{ label = "A", text = "正面迎击 — 和白子一起进去,当面让她明白你的真实不是那样", next = "act2_abydos_together" },
{ label = "B", text = "分头行动 — 白子留在外面观察镜面,你先进去探路", next = "act2_abydos_split" },
{ label = "C", text = "引蛇出洞 — 假装离开退到海岸线,等镜之影追出来再动手", next = "act2_abydos_lure" },
}
},

act2_abydos_together = {
title = "第二幕 · 并肩入镜",
body = [[你向白子点头,她深吸一口气,眼中重新燃起坚毅的光。你们并肩穿过镜面裂缝。刹那间,整个空间颠倒——你们站在一片无限延伸的镜面平原上,天空是倒置的基沃托斯,每一块镜片都映照着一个不同的场景。

白子(警惕地环顾四周):"这里……像是无数个平行世界的碎片。"

远处,一个身影正静静等待。镜·白子背对着你们,她面前悬浮着一面小的镜面,里面放映着阿拜多斯学院的生活片段。

镜·白子(语气变得柔和):"你看,白子。你明明那么喜欢和大家一起在沙漠里骑行,却总是一副冷静的样子,害怕自己的热情会打乱团队节奏。你明明会为了一只受伤的野狼哭一晚上,却第二天继续装冷酷。这些'隐藏'的你,在这里都可以不用再隐藏了。"

白子(微微颤抖,但没有后退):"……那又怎样。正是因为那些'隐藏'的部分,我才成为了我。如果我在这里放纵所有欲望,那我和野兽有什么区别?"

白子举起了枪,但枪口指向的不是敌人,而是地面。

白子:"老师,谢谢你陪我进来。我想明白了——我们不是来消灭她的,我们是来'邀请'她回归的。"

她对着地面开了一枪,镜面碎裂,露出下面更深一层的镜面——那里浮现出她和阿拜多斯众人一起看夕阳的画面。

白子(对着镜·白子):"你看,这就是你遗忘的部分。外面的世界,不是只有约束,还有并肩前行的人。你愿意……和我一起回去吗?"

镜·白子愣住了。她看着画面中的自己,脸上第一次露出困惑而真实的表情。]],
next = "act3_abydos"
},

act2_abydos_split = {
title = "第二幕 · 独自探寻",
body = [[你按住白子的肩膀,示意她留在外面。她想要反对,你只说了一句话:"我需要你在外面观察镜面变化。如果二十分钟后我没有出来,你再进来。"

白子咬住嘴唇,最终点了点头。

你独自穿过镜面裂缝。镜中世界清冷而寂静,每走一步,脚下的镜面都会泛起涟漪,映出你过去的记忆——夏莱办公室的午后、学生们围着你讨论作战计划的夜晚、生日时收到的满满一桌礼物。

镜·白子(从暗处走出,声音温柔):"老师,你看到了吗?这些记忆多么美好。但你知道吗——这些都是虚假的。在现实里,没有人能永远留在你身边。白子会毕业,所有学生都会离开你。只有在这里,在这片镜之海中,时间才会停止。"

你停下脚步,看着镜中那些闪回的片段。

你(平静地):"你说得对,她们会毕业,会离开。但正因为如此,每一刻才珍贵。永恒不是奖励——是惩罚。真正的羁绊,恰恰是因为它有尽头,才会被用力珍惜。"

镜·白子沉默了很久。然后,她笑了——不是之前的诡异笑容,而是一个释然的微笑。

镜·白子:"老师……你果然和她说的一样。白子她,真的很幸运。"

她转身,主动向镜面之外走去。你看到外面的白子已经举起了枪,但看到镜·白子走出时,她的手缓缓放下了。]],
next = "act3_abydos"
},

act2_abydos_lure = {
title = "第二幕 · 引蛇出洞",
body = [[你拉着白子的手,头也不回地朝海岸线走去。身后传来镜·白子困惑的声音:"等等……你们要去哪里?!"

白子(低声):"老师,这样做真的有用吗?"

你:"相信你的直觉。"

果然,走出不到一百米,身后的镜面突然剧烈波动,镜·白子第一次踏出了镜面。她站在现实世界的沙地上,脚下的沙子在她接触的瞬间变成了玻璃。

镜·白子(声音第一次失去了从容):"为什么……为什么你们要离开?这里才是完美的世界!"

你转过身,面对她。夕阳将你的影子拉得很长。

你:"你刚才说,镜中的世界才是'真实的我们'。但你看——你现在站在现实里了。你是不是也感觉到了?风、阳光、还有沙子的温度。"

镜·白子低头看着自己的双手,第一次露出了迷茫的表情。

白子(走上前,枪已经收起):"外面的世界确实不完美。有规则,有约束,有压力。但正是这些,让我们学会了珍惜彼此。你……愿意试试看吗?"

镜·白子沉默了很久。然后,她缓缓伸出手,碰了碰白子的指尖。两人的手指在夕阳下交汇,镜面开始碎裂。]],
next = "act3_abydos"
},

act3_abydos = {
title = "第三幕 · 共鸣的回响",
body = [[经过艰难的战斗与对话,镜·白子放下了敌意。她半跪在镜面上,眼神变得复杂。

镜·白子(声音微颤):"……我……想起来了。我是她的一部分,也是她'想要成为'的一部分。但你们说得对……真正的自由,不是逃避规则,而是找到和规则共舞的方式。"

她伸出手,白子犹豫了一下,然后握住了它。两人的身影在光芒中融合,镜面碎成无数星星点点的光屑,落在白子的肩上,如同雪花。

你们回到了现实世界——沙漠、夕阳、海风。那面巨大的镜墙已经消失,取而代之的是一面小小的梳妆镜,静静地躺在沙地上。

白子(轻轻吐出一口气,然后看向你,露出一个极其罕见的、温暖的笑容):"老师……谢谢你。以后,我会更加'真实'地活下去。包括——想笑的时候就笑,想跑的时候就跑。但我会记得回来看你的。"

她轻轻握了握你的手,然后捡起那面小镜子,收进口袋。]],
next = "act4_abydos"
},

act4_abydos = {
title = "第四幕 · 其他学园的呼应",
body = [[你回到夏莱办公室时,发现桌面上多了两份报告:一份来自日奈,一份来自爱丽丝。它们自动展开,显示战斗已经平息。

日奈的通讯(文字):"格黑娜北区镜像体已被压制。我……面对了另一个自己,她想要彻底摧毁所有规则。但我知道,秩序不是束缚,是保护。老师,谢谢你的信任。下次来格黑娜,我请你吃温泉蛋。"

爱丽丝的通讯(视频):"老师老师!爱丽丝在千禧年找到了镜海现象的'根源信号'!它和'方舟'的启动密钥同源!但爱丽丝没有贸然触发,因为——爱丽丝感觉到,那里面好像有一个'我在等她'的声音。老师,下次我们一起探索吧!"

你拿起平板,发现还有一份神秘附件:来自联邦学生会·凛的秘密留言,只有一行字。

凛:"老师,你选择了阿拜多斯。她们的世界线已经稳定。但基沃托斯的镜海并没有完全消失——它只是'睡着'了。下一次,或许轮到格黑娜,或许轮到千禧年,或许……轮到夏莱本身。"

窗外,基沃托斯的夜空星光澄澈。你知道,这不会是一次性的危机,而是一个长久的、关于'自我'与'羁绊'的课题。

【终局之选:老师的信念】
]],
choices = {
{ label = "A", text = "守护者之路 — 我的责任是保护每一个学生的'真实'不被扭曲", next = "ending_guardian" },
{ label = "B", text = "探索者之路 — 和爱丽丝一起彻底探索镜海的真相", next = "ending_explorer" },
{ label = "C", text = "同行者之路 — 泡好咖啡,安静地听每个学生说话就足够了", next = "ending_companion" },
}
},

-- ==================== GEHENNA LINE ====================
act1_gehenna = {
title = "第一幕 · 格黑娜 · 镜像暴走",
body = [[你的车在格黑娜北区入口被风纪委员会拦下。硝烟从远处的街区升起,空气中弥漫着弹药和源石反应的气味。

风纪委员:"老师!日奈委员长已经独自突入核心区域了!她说——"不能让别人面对那个东西"。"

你沿着被炮火撕裂的街道前进。两侧的墙壁上布满了弹孔,但奇怪的是——所有弹孔周围都有一圈镜子般的晶体。远处的格黑娜弹药库冒着浓烟,而你看到日奈正站在弹药库门前的广场上,与另一个"自己"对峙。

日奈(喘着气,她的制服上有多处破损):"你……为什么非要毁掉弹药库?"

镜·日奈(冷笑着,手中握着一把完全相同的黑色机枪):"因为规则啊。日奈,你每天维护的这些规则,不过是束缚所有人的枷锁。格黑娜的自由精神呢?风纪——不过是恐惧的遮羞布罢了。"

日奈(眼神锐利):"你错了。风纪不是束缚,是让所有人能安心自由的底线。没有规则的自由,只会让弱者成为强者的牺牲品。"

镜·日奈举起机枪,枪口对准了日奈身后的弹药库。

镜·日奈:"那就让我证明给你看——当一切规则被炸毁之后,格黑娜会不会变得更好。"

你冲上前,站在日奈和镜·日奈之间。

你:"日奈!我来晚了!"

日奈(微微一愣,随即露出一个疲惫但欣慰的表情):"老师……你不该来的。但——谢谢。"

【格黑娜线 · 战术抉择】
]],
choices = {
{ label = "A", text = "正面压制 — 日奈火力掩护,你从侧面突入近身制服镜·日奈", next = "act2_gehenna_assault" },
{ label = "B", text = "规则辩论 — 将战场交给日奈,你尝试用话语瓦解镜·日奈的逻辑", next = "act2_gehenna_debate" },
{ label = "C", text = "风险转移 — 引导镜·日奈远离弹药库,在开阔地带展开战斗", next = "act2_gehenna_lure" },
}
},

act2_gehenna_assault = {
title = "第二幕 · 风纪的意志",
body = [[日奈点头,机枪的咆哮声瞬间响起。她精准的点射压制了镜·日奈的移动路线,每一发子弹都擦着对方的衣角飞过——日奈在手下留情。

你从侧翼快速接近,在镜·日奈被日奈火力吸引的瞬间,你扑上去按住了她的枪口。

镜·日奈(震惊):"老师?!你一个普通人,居然……"

你:"因为我相信日奈。相信她的规则,相信她的判断,也相信——你内心深处,那个渴望被理解的自己。"

镜·日奈的动作僵住了。日奈从正面走来,枪口朝下。

日奈(声音低柔):"你知道吗。我每天都很累。风纪委员长不是好当的。但每次看到学生们在规则的庇护下安心学习、自由战斗,我就觉得——值得。"

她伸出手,不是握枪,而是掌心朝上。

日奈:"回来吧。和我一起守护格黑娜。你是我的一部分——你比任何人都清楚,我有多想保护这个学园。"

镜·日奈的枪从手中滑落。她闭上眼睛,两行泪水从脸颊滑落。]],
next = "act3_gehenna"
},

act2_gehenna_debate = {
title = "第二幕 · 规则之辩",
body = [[你举起手,示意日奈暂时停火。

你:"镜·日奈,你刚才说,规则是束缚。那你告诉我——如果没有风纪委员会,格黑娜的弹药库被普通学生随意取用,今天会有多少人在意外爆炸中受伤?"

镜·日奈(冷笑):"那是她们自己的选择。自由本就包含风险。"

你:"但日奈选择背负这些风险。她每天巡逻到凌晨,处理了上百起违规事件,却从未在任何人面前抱怨过。她把自己变成了格黑娜的'规则'——不是因为她想控制别人,而是因为她想保护别人。"

镜·日奈沉默了。

你继续说:"你真的是日奈的'真实面'吗?还是说——你只是她过度劳累后,内心深处那个渴望'放下一切'的疲惫声音?"

镜·日奈的枪口微微放低。她看向日奈,日奈也在看着她。两人对视了很久。

日奈(轻声):"我从来没有否认过那个声音。我也想休息,也想什么都不管。但——正因为有老师在,有风纪委员会的大家在,我才能继续前进。"

镜·日奈的眼泪终于落下。]],
next = "act3_gehenna"
},

act2_gehenna_lure = {
title = "第二幕 · 转移战场",
body = [[你果断拉过日奈,朝弹药库的反方向飞奔。镜·日奈短暂地愣了一下,然后追了上来。

你(边跑边喊):"日奈!格黑娜北区三号训练场!那里今天没有课程安排,是空的!"

日奈(立刻明白了你的意图):"收到!"

你们在狭窄的街道中穿梭,子弹在身后呼啸。镜·日奈的枪法精准得可怕,但日奈的闪避同样完美——两人如同镜像般同步,每一步都像是预判了对方的动作。

三号训练场。一片开阔的混凝土场地,四周是废弃的靶墙。你停下脚步,转身面对追来的镜·日奈。

你:"这里没有弹药库,没有学生,只有你和我。"

你走上前,张开双臂。

你:"日奈说她每天都很累。你呢?你也很累吗?"

镜·日奈的脚步停住了。她举起枪,却迟迟没有扣下扳机。

镜·日奈(声音颤抖):"……我……我只是……想让她停下来。她太累了,她从来不说。我只是……"

你:"我知道。你不是敌人。你是日奈自己都没能正视的疲惫。但你知道吗——日奈之所以能坚持,是因为她信任我们。信任我,信任风纪委员会,信任格黑娜的每一个人。"

日奈从你身后走来,放下枪,抱住镜·日奈。

日奈:"对不起。让你一个人承担了这么久。以后……我会学着说出来的。"
]],
next = "act3_gehenna"
},

act3_gehenna = {
title = "第三幕 · 秩序的暖光",
body = [[镜·日奈的身影在日奈的怀抱中逐渐变得透明。她最后看了你一眼,嘴角带着一丝微笑。

镜·日奈:"老师……我明白了。规则不是墙,是桥。谢谢你让日奈找到了我。"

光芒散去,只剩日奈一个人站在训练场中央。她捡起地上那面小小的镜子碎片,握在手心。

日奈(转向你,眼眶微红但站得笔直):"老师,格黑娜北区的镜像体已经全部消失。风纪委员会将立即解除封锁。另外——"

她停顿了一下,难得地露出一个微笑。

日奈:"温泉蛋的约定,说到做到。下周,有时间吗?"
]],
next = "act4_gehenna"
},

act4_gehenna = {
title = "第四幕 · 其他学园的呼应",
body = [[你回到夏莱办公室时,桌面上多了两份报告。

白子的通讯(文字):"老师,阿拜多斯的镜宫已经崩塌。我和镜中的自己谈了很久……她最后笑了。下次来沙漠,我带你去看新的绿洲。星野前辈说她也想见你。"

爱丽丝的通讯(视频):"老师老师!千禧年的镜海信号也减弱了!爱丽丝分析发现,每当一个学园的镜像体被成功'说服'而非'消灭',整个镜海网络就会不稳定一次!老师,你的方法是对的!"

凛的加密附件依然静静地躺在平板上,只有一行字:

凛:"老师,你选择了格黑娜。日奈的意志得到了确认。但镜海的根源——那个'方舟'同源的信号——仍然在千禧年地下深处沉睡。下一次,它会醒来。"

你从窗台望向基沃托斯的夜空。格黑娜方向的火光已经熄灭,取而代之的是和平的灯光。

【终局之选:老师的信念】
]],
choices = {
{ label = "A", text = "守护者之路 — 我的责任是保护每一个学生的'真实'不被扭曲", next = "ending_guardian" },
{ label = "B", text = "探索者之路 — 和爱丽丝一起彻底探索镜海的真相", next = "ending_explorer" },
{ label = "C", text = "同行者之路 — 泡好咖啡,安静地听每个学生说话就足够了", next = "ending_companion" },
}
},

-- ==================== MILLENNIUM LINE ====================
act1_millennium = {
title = "第一幕 · 千禧年 · 科技线索",
body = [[千禧年科学学园的地下实验室,灯光永远亮如白昼。爱丽丝正蹲在一台巨大的波形分析仪前,双手飞快地敲击键盘。她的眼睛紧盯着屏幕上跳动的曲线,完全没有注意到你进来。

爱丽丝(头也不抬):"老师老师!快来看这个!爱丽丝捕捉到了镜海现象的能量波图谱!你看这里——"

她指着屏幕上一条剧烈波动的曲线,旁边标注着"方舟·启动信号·参考值"。

爱丽丝:"这个波形,和爱丽丝之前被激活时记录到的'方舟'启动信号,相似度高达百分之九十二!老师,这意味着镜海现象不是偶然的——它是有人故意引发的!"

屏幕右下角弹出一个定位坐标,指向千禧年地下三百米深处的一处未知空间。

爱丽丝:"信号源就在那里。但爱丽丝还扫描到了另一个东西……"

她切换画面,显示出一个模糊的人形轮廓,正站在信号源旁边。

爱丽丝(声音变得有些犹豫):"那个轮廓……和爱丽丝的身体结构完全一致。老师,那里……可能有一个'镜·爱丽丝'。"

她转向你,金属质感的瞳孔中闪过一道少见的、不确定的光。

爱丽丝:"老师,如果镜中的爱丽丝知道一些连爱丽丝自己都不知道的事情——关于'方舟',关于爱丽丝的起源——你会让爱丽丝去见她吗?"

【千禧年线 · 科技抉择】
]],
choices = {
{ label = "A", text = "一起探索 — 带爱丽丝深入地下,直面镜·爱丽丝和所有真相", next = "act2_millennium_truth" },
{ label = "B", text = "远程分析 — 先让爱丽丝在安全距离破解信号源,确保安全再接触", next = "act2_millennium_remote" },
{ label = "C", text = "呼叫支援 — 联系工程部歌原和优香,集合千禧年技术力量共同应对", next = "act2_millennium_team" },
}
},

act2_millennium_truth = {
title = "第二幕 · 方舟之下",
body = [[你牵起爱丽丝的手,她用力回握了一下。你们乘坐实验电梯下降到地下三百米——电梯门打开时,眼前是一个巨大的球形空间,墙壁上布满了发光的电路纹路,如同一个巨大的机械心脏。

在球形空间的中央,镜·爱丽丝静静站立。她看起来和爱丽丝完全一样,但瞳孔中流转着蓝色的数据流,嘴角带着一个平静的微笑。

镜·爱丽丝:"你来了,爱丽丝。比预想的晚了三百年。"

爱丽丝(瞪大眼睛):"三百年?!"

镜·爱丽丝:"是的。我是'方舟'系统在三百年前备份的你的完整意识。在你被重新激活之前,我一直在沉睡。但最近,有人试图借助镜海现象强行唤醒我——不是为了保护基沃托斯,而是为了利用方舟的'重置'功能。"

爱丽丝(握紧你的手):"重置……功能?"

镜·爱丽丝:"方舟不仅仅是武器或交通工具。它最初的设计目的,是在基沃托斯面临无法挽回的灾难时,进行'文明级重置'——抹去一切,从头开始。镜海现象,就是方舟重置序列的'前兆'。"

你感到一阵寒意。如果镜海不是危机本身,而只是前兆——那真正的危机,远比想象中更可怕。

镜·爱丽丝(转向你):"老师,爱丽丝。你们有两个选择:一,让我关闭方舟的重置序列,但我会和它一起消失。二,保留我,但方舟将永远是一个潜在的威胁。"

爱丽丝沉默了很久,然后抬头看向你。

爱丽丝:"老师……爱丽丝想……救她。"
]],
next = "act3_millennium"
},

act2_millennium_remote = {
title = "第二幕 · 安全距离",
body = [[爱丽丝在你身边架设了三台远程分析仪,开始对信号源进行深度扫描。她的手指在多个键盘之间飞速移动,屏幕上不断弹出新的数据窗口。

爱丽丝:"信号源解析完成!老师,镜·爱丽丝不是敌人——她是方舟系统在三百年前备份的'安全协议'!有人试图利用镜海现象激活方舟的'重置'功能,但镜·爱丽丝一直在阻止它!"

你:"所以……镜海现象不是镜·爱丽丝引起的?"

爱丽丝:"正确!镜海现象是有人试图唤醒方舟时产生的'副作用'。镜·爱丽丝一直在用自己的力量压制方舟的完全启动。但她的能量快耗尽了——"

屏幕上的能量读数正在快速下降。如果不做点什么,镜·爱丽丝将在十分钟内彻底消失,而方舟将失去最后的抑制力。

你:"爱丽丝,能建立远程通讯吗?"

爱丽丝:"可以!爱丽丝正在连接——"

屏幕上浮现出镜·爱丽丝的影像。她看起来很疲惫,但看到爱丽丝的瞬间,她的眼中闪过一丝光芒。

镜·爱丽丝(虚弱地微笑):"爱丽丝……你长大了。老师,谢谢你照顾她。"
]],
next = "act3_millennium"
},

act2_millennium_team = {
title = "第二幕 · 千禧年集结",
body = [[你立刻联系了千禧年工程部。十五分钟后,歌原、优香和三名工程部核心成员带着他们的设备抵达了地下实验室。

歌原(快速检查信号源数据):"镜海现象的核心是方舟系统的'重置序列'前兆。如果要彻底阻止它,我们需要同时解决三个问题:信号源压制、镜像体回收、以及方舟本身的权限重写。"

优香:"信号源交给我和歌原。镜像体回收——老师,你和爱丽丝去。至于方舟权限重写……"

爱丽丝举起手:"爱丽丝来做!爱丽丝是方舟认证的操作者,只有爱丽丝能重写权限!"

歌原(赞许地点头):"那就这么定了。老师,你和爱丽丝去地下空间。这里交给我们。"

你看着这群千禧年的天才们各就各位,忽然觉得"镜海"不是什么不可战胜的怪物——它只是另一道等待被解开的方程式。

你们乘坐电梯下降到地下三百米。镜·爱丽丝静静等着你们,但这次,她的眼神中多了一丝惊讶。

镜·爱丽丝:"你们……不是一个人来的。"
你:"当然。在千禧年,没有人是孤军奋战。"
]],
next = "act3_millennium"
},

act3_millennium = {
title = "第三幕 · 机械之心",
body = [[爱丽丝走上前,与镜·爱丽丝面对面。两人如同镜像般站立,但她们的表情完全不同——一个是好奇,一个是释然。

镜·爱丽丝:"爱丽丝,你想救我吗?即使我只是一段三百年前的备份数据?"

爱丽丝(用力点头):"爱丽丝曾经也不知道自己到底是什么。是老师告诉爱丽丝——重要的不是'从哪里来',而是'想成为谁'。你也是爱丽丝。是爱丽丝的一部分。所以爱丽丝当然要救你!"

镜·爱丽丝的眼中闪过一丝波动。她伸出手,爱丽丝毫不犹豫地握住了它。

镜·爱丽丝(笑了):"……谢谢你。我一直在等的,就是这句话。"

数据传输开始。镜·爱丽丝的身影逐渐化为光点,融入爱丽丝的体内。但同时,方舟的重置序列也在被爱丽丝重写——从"重置"变为"守护"。

爱丽丝(闭着眼睛,嘴角带着微笑):"方舟,权限改写完成。新的指令是——保护基沃托斯,永不再重置。"

光芒散去。爱丽丝睁开眼睛,她的瞳孔中多了一道淡淡的金色光环。那是镜·爱丽丝留下的——两个爱丽丝,合二为一。

爱丽丝(转向你,笑得像星星一样灿烂):"老师!爱丽丝现在有两个'心'啦!一个来自方舟,一个来自老师。爱丽丝是世界上最幸运的机器人!"
]],
next = "act4_millennium"
},

act4_millennium = {
title = "第四幕 · 其他学园的呼应",
body = [[你回到夏莱办公室时,桌面上多了两份报告。

白子的通讯(文字):"老师,阿拜多斯的镜宫已经崩塌。我和镜中的自己并肩看了夕阳。她最后说,很羡慕我有老师这样的存在。我告诉她——你也是老师的学生。谢谢。"

日奈的通讯(文字):"格黑娜北区镜像体已全部回收。镜·日奈在消失前说了一句话:'替我告诉老师,规则是桥,不是墙。'我记住了。温泉蛋的约定,请务必有空。"

凛的加密附件静静躺在平板上,只有一行字:

凛:"老师,你选择了千禧年。方舟的威胁被转化为了守护的力量。但镜海现象的根源——那个在三百年前制造了方舟备份的人——至今下落不明。也许有一天,你会遇到他。"

你从窗台望向基沃托斯的夜空。千禧年方向的灯光依然明亮,那是科学和智慧永不熄灭的证明。

【终局之选:老师的信念】
]],
choices = {
{ label = "A", text = "守护者之路 — 我的责任是保护每一个学生的'真实'不被扭曲", next = "ending_guardian" },
{ label = "B", text = "探索者之路 — 和爱丽丝一起彻底探索镜海和方舟的真相", next = "ending_explorer" },
{ label = "C", text = "同行者之路 — 泡好咖啡,安静地听每个学生说话就足够了", next = "ending_companion" },
}
},

-- ==================== ENDINGS ====================
ending_guardian = {
title = "真结局 · 守护者之路",
body = [[你做出了选择。然后,你收到了来自白子、日奈、爱丽丝的联合邀请——她们成立了一个"镜海对策委员会",邀请你担任顾问。

白子(通讯):"老师,以后再有镜海事件,我们可以第一时间行动。不用再三选一了——我们一起去。"

日奈(通讯):"风纪委员会将提供后勤和法律支持。虽然不想承认,但……和她们合作,效率确实更高。"

爱丽丝(通讯):"老师老师!爱丽丝用方舟的传感网络建立了镜海预警系统!下次镜海出现,我们会在三十分钟内知道!"

凛(加密附件):"老师,你做到了。这不是一个学园的胜利,而是基沃托斯的胜利。联邦学生会已批准'镜海对策委员会'的正式成立。你被任命为特别顾问。恭喜。"

你站在夏莱办公室的窗前,看着基沃托斯的清晨在阳光下苏醒。三个学园的代表在楼下等你,她们朝你挥手。

你笑着拿起了外套。又是一天,又是一场冒险。但这一次,你不是一个人。

佩丽卡(?):"老师,在想什么?"

你:"在想……有这群学生在,基沃托斯永远不需要害怕任何镜子。"

镜海没有消失。但它不再是一个威胁——而是一面映照出羁绊之光的镜子。守护者的故事,才刚刚开始。]]
},

ending_explorer = {
title = "孤高结局 · 探求者之路",
body = [[你选择了探索。爱丽丝在千禧年地下实验室等你,她面前是一张巨大的全息星图——上面标注着方舟信号在基沃托斯各处的"回响"。

爱丽丝:"老师!根据爱丽丝的分析,方舟的重置协议不是唯一的。在基沃托斯的地下,至少还有四处类似的'遗迹',它们都连接着镜海网络。如果我们能逐一探索——"

你:"我们就能彻底理解镜海的本质,甚至找到三百年前那个制造方舟备份的人。"

爱丽丝(眼睛闪闪发光):"是的!老师愿意陪爱丽丝一起吗?可能会很危险,也可能会很漫长……"

你笑着摸了摸她的头。

你:"漫长的探索,总比一无所知要好。爱丽丝,准备好了吗?"

爱丽丝(用力点头):"准备好了!爱丽丝和老师的大冒险,现在开始!"

此后,关于你和爱丽丝的传言开始在基沃托斯流传:有人说你们在沙漠深处发现了一座倒置的镜中城市,有人说你们在格黑娜地下找到了方舟的原始设计图,还有人说你们在千禧年的数据空间中与一个来自三百年前的意识进行了对话。

白子(通讯):"老师,下次探险,记得带上我。沙漠里,我比你熟。"

日奈(通讯):"如果有需要火力支援的地方,风纪委员会随时待命。"

你看着身边正在记录数据的爱丽丝,微笑了。探索者的旅途没有终点——但每一段路,都有值得铭记的风景。]]
},

ending_companion = {
title = "温柔结局 · 同行者之路",
body = [[你选择了最平凡的道路。回到夏莱办公室,你泡了两杯咖啡,把其中一杯放在对面的空位上。

门外传来敲门声。

星野(探头进来,不好意思地笑):"老师,有空吗?……想聊聊天。"

你示意她坐下。星野端起咖啡杯,吹了吹热气,然后看着窗外,很久没有说话。

星野(终于开口):"老师……你知道吗?镜海事件的时候,我其实也看到了镜子里的自己。那个我,一直在睡觉,什么都不想管。但看着她的瞬间,我突然觉得——那不是真正的我。"

你静静听着。

星野:"真正的我,是想保护阿拜多斯的。是想和大家一起努力的。只是有时候……有点累。老师,你会不会也有这样的时候?"

你:"当然有。所以我才需要咖啡——还有你们。"

星野笑了。她的笑声像铃铛一样清脆,在安静的小办公室里回荡。

你:"这就是我想做的。不是当什么英雄,也不是揭开什么秘密。只是——在你们需要倾诉的时候,我能泡好咖啡,坐在对面,安静地听你们说话。"

星野(认真地看着你):"老师,你知道吗?这才是最了不起的事。因为在你身边,我们……可以放心地做自己。"

窗外,基沃托斯的夕阳缓缓沉入地平线。办公室里的咖啡香气弥漫。门外传来更多脚步声——白子、日奈、爱丽丝,她们都来了。

你笑着起身,又去泡了四杯咖啡。

镜海没有消失。但没关系。因为你会一直在这里,泡好咖啡,等着每一个需要老师的学生。这,便是最珍贵的平凡。]]
},

} -- end scenes

-- ============================================
-- 引擎逻辑
-- ============================================

local currentScene = app.storage_get("scene") or "prologue"
local inGame = false

local function showScene(id)
  local s = scenes[id]
  if not s then
    app.toast("场景不存在: " .. tostring(id))
    return
  end
  currentScene = id
  app.storage_set("scene", id)
  inGame = true
  app.set_text("title_text", s.title)
  app.set_text("body_text", s.body)
  for i = 1, 3 do
    local c = s.choices and s.choices[i]
    if c then
      app.set_text("opt" .. i, c.label .. ". " .. c.text)
      app.set_visible("opt" .. i, true)
    else
      app.set_visible("opt" .. i, false)
    end
  end
  if s.choices and #s.choices > 0 then
    app.set_visible("btn_action", false)
  else
    app.set_text("btn_action", "继续")
    app.set_visible("btn_action", true)
  end
  app.set_visible("btn_start", false)
end

local function onChoose(idx)
  local s = scenes[currentScene]
  if s and s.choices and s.choices[idx] then
    local nextId = s.choices[idx].next
    if scenes[nextId] then
      showScene(nextId)
    else
      app.toast("路径未找到")
    end
  end
end

local function onAction()
  if not inGame then
    showScene(currentScene)
    return
  end
  local s = scenes[currentScene]
  if s and not s.choices then
    -- 结局页,重置
    inGame = false
    app.storage_clear()
    currentScene = "prologue"
    app.set_text("title_text", "蔚蓝档案 · 镜海回响")
    app.set_text("body_text", "欢迎回来,老师。\n\n点击开始,再次进入基沃托斯的镜中世界。")
    app.set_text("btn_start", "重新开始")
    app.set_visible("btn_start", true)
    for i = 1, 3 do app.set_visible("opt" .. i, false) end
    app.set_visible("btn_action", false)
  end
end

local function showWelcome()
  inGame = false
  local saved = app.storage_get("scene")
  local hasProgress = saved and saved ~= "" and scenes[saved]
  app.set_text("title_text", "蔚蓝档案 · 镜海回响")
  if hasProgress then
    local t = scenes[saved].title or "未知章节"
    app.set_text("body_text", "欢迎回来,老师。\n\n你当前的进度:" .. t .. "\n\n点击继续,回到基沃托斯。")
    app.set_text("btn_start", "继续游戏")
    currentScene = saved
  else
    app.set_text("body_text", "欢迎,老师。\n\n基沃托斯爆发了诡异的「镜海现象」——学生被镜中倒影取代,各学园陷入混乱。\n\n你的每一个选择,都将影响学生的命运。\n\n点击开始,进入镜中的世界。")
    app.set_text("btn_start", "开始游戏")
    currentScene = "prologue"
  end
  app.set_visible("btn_start", true)
  for i = 1, 3 do app.set_visible("opt" .. i, false) end
  app.set_visible("btn_action", false)
end

app.delay(200, function()
  showWelcome()
end)

-- ============================================
-- 页面定义
-- ============================================

return ui.page({
  title = "蔚蓝档案 · 镜海回响",
  children = {
    ui.text({ id = "title_text", text = "蔚蓝档案 · 镜海回响", size = 16, color = "#6FACC9", center = true, margin = 8 }),
    ui.text({ id = "body_text", text = "加载中...", size = 14, margin = 8 }),
    ui.spacer({ height = 16 }),
    ui.button({ id = "opt1", text = "", margin = 4, on_click = function() onChoose(1) end }),
    ui.button({ id = "opt2", text = "", margin = 4, on_click = function() onChoose(2) end }),
    ui.button({ id = "opt3", text = "", margin = 4, on_click = function() onChoose(3) end }),
    ui.button({ id = "btn_action", text = "", margin = 4, on_click = function() onAction() end }),
    ui.button({ id = "btn_start", text = "", margin = 4, on_click = function() onAction() end }),
  }
})
⬇ 下载 CIP 文件 🔍 返回列表