Releases: LDTchara/KernelExtensions
0.6.0
0.6.0 — 飞机 Daemon、水印与稳定性增强
Pre‑release · 2025
新增功能
- 飞机 Daemon 系统(FlightDaemon)
- 完全替代原版
AircraftDaemon,支持在目标计算机 XML 中直接配置<FlightDaemon FallDuration="90" OnFailed="Actions/failed.xml" OnSaved="Actions/saved.xml" />。 - 可独立设置坠落时长(
FallDuration),支持立即坠落模式下的线性倒计时。 - 坠毁或修复时分别执行
OnFailed、OnSaved动作文件,完美融入剧情设计。 - 提供全局高度计覆盖层,可通过
ShowAircraftOverlay/HideAircraftOverlay在不连接目标的情况下实时查看飞机高度,坠毁时自动隐藏。 - 新增攻击动作
AttackAircraft(支持FallDuration参数,优先级高于守护进程配置),以及修复动作UploadAircraftSysFile。 - 本系统由 April_Crystal 贡献核心实现,特此感谢。
- 完全替代原版
- 主菜单动态彩虹水印
- 在主菜单左上角显示
+ KernelExtensions <版本号>,文字颜色随时间平滑流动,无回弹或卡顿。 - 位置紧贴在 ZeroDayToolKit 水印右侧,避免重叠。
- 扩展卸载时水印会自动消失,Harmony 补丁被统一清理。
- 在主菜单左上角显示
- 新自定义 Action:
RenameNode- 可按节点 ID 修改节点名称,修改即时生效并自动持久化到存档。
改进与优化
- Harmony 补丁管理:统一使用一个静态 Harmony 实例,通过
Unload()方法在扩展退出时干净移除所有补丁,避免残留影响。 - 飞机按钮逻辑修正:
FlightDaemon界面中的 “Exit..” 按钮已被修正为 “Disconnect”,点击后正确执行断开连接。 - 文档全面更新:将详细文档迁移至 GitHub Wiki,提供中英双语导航,并新增扩展作者指南、配置文件参考等页面;README 同步精简。
错误修复
- 修复
AttackAircraft在目标计算机缺少FlightDaemon时抛出KeyNotFoundException的崩溃问题。 - 修复
CrashDelay == 0时可能出现的除零错误,逻辑已修正为直接立即坠毁。 - 修复
CustomTrialExe.OnComplete在特定状态下调用MusicManager.stop()导致的音频访问冲突(Access Violation)。 - 修复
FlightDaemon中AircraftFallStartsImmediately拼写错误(原AircraftFallStartsImmediatley)。 - 修复
FlightDaemon坠毁后静态字典未被清理,可能引发内存泄漏的问题。 - 修复
FlightDaemon固件重载后离开节点仍持续更新高度数据的问题,现在断开连接时会自动取消订阅。
0.5.0
新增功能
可配置虚拟机攻击系统(VM Attack)
- 新增
LaunchVMAttackAction,可从动作文件触发自定义虚拟机崩溃攻击。 - 支持三种恢复模式:
FileDeletion(删除指定文件)、FileExists(创建指定文件)、Password(输入密码)。 - 通过
VMATK/目录下的 XML 配置文件定义攻击行为,包括自定义错误消息、系统日志文本、引导对话、帮助文件、虚假文件列表、成功音乐等。 - 恢复界面 (
FakeRecoveryModule) 模拟终端式输出,具备系统日志滚动、引导文本逐字打印、交互按钮/密码输入框,支持多语言提示。 - 引导文本支持行内控制指令:
||Px.x||停顿、||Sx.x||变速、||SR||恢复默认速度,且可启用“已读跳过”功能。 - 引导文本开始播放时可同步执行一个动作文件(
ActionOnGuideTextStart)。 - 完美融入原版崩溃流程:利用 Harmony 补丁在系统启动日志第 50 行插入错误状态,15 秒后自动转入自定义恢复模块,体验无缝衔接。
- 攻击解除后自动执行黑屏重启并播放成功音乐。
全新 Action:PlaySound
- 新增
PlaySoundAction,用于播放扩展目录下的自定义音效(WAV 格式)。 - 提供公共
SoundHelper工具类,支持在代码中便捷调用。
技术改进
- 音乐路径解析公共化:提取
MusicPathResolver工具类,统一处理扩展内音乐文件的路径查找(支持多级回退),修复了扩展文件夹名与扩展名不一致时无法播放音乐的问题。 - 动作文件执行逻辑统一:新增
ActionHelper公共类,将动作文件执行逻辑标准化,CustomTrialExe与 VM 系统均使用同一套实现,提高稳定性与可维护性。
其他
- 调整了多处内部细节,优化了模块间的耦合,为后续功能扩展打下基础。
本次更新历时较久,VM 攻击系统经过反复打磨,终于达到可发布状态。感谢所有参与测试和反馈的朋友。
0.4.6
0.4.5
🆕 新增功能
- 强制失败 Action (
FailTrial)
新增FailTrialAction,可在动作文件中直接调用,强制当前试炼立即失败(进入 Outro 并显示“失败”文字)。支持Delay和DelayHost延迟执行。<FailTrial /> <FailTrial Delay="3.0" DelayHost="playerComp" />
🐞 错误修复
-
修复试炼失败时标题无变化
所有失败路径(超时、ForceFail 等)现在都会正确设置currentPhaseIdx = -1,使标题显示“失败”文字,而不再残留上一阶段的标题。 -
修复退出时标题消失
在DrawPhaseTitle中为Exiting状态添加了临时文字逻辑,退出时继续显示“完成”或“失败”标题,直到窗口淡出。 -
修复失败退出时终端多余信息
通过将失败时的Result统一设为Success,并配合trialSucceeded独立控制音乐停止,彻底消除基类输出 "CustomTrial: Failed with ''" 的问题。 -
修复邮件摧毁径向线条受帧率影响
引入MAIL_LINE_INTERVAL(1/60 秒) 控制线条生成频率,使高帧率下的表现与60 FPS一致。 -
修复完成音效在未启用聚焦特效时播放
glowSound现在仅在EnableTrialCompleteFocus = true时播放,避免突兀提示音。
✨ 改进
- 复刻原版 SpinUp 动画缓动曲线
DrawSpinningUp已完全对齐原版 DLC 试炼的线条进度算法,动画更丰富自然。
0.4.4
🚀 核心系统增强
-
节点删除持久化与恢复
- 新增
CustomTrialNodeStorage全局存储,记录试炼过程中被删除的节点索引。 - 存档/读档时自动保存/恢复删除状态(通过
SaveEvent和CustomTrialSaveExecutor)。 - 提供
RestoreCustomTrialNodes自定义 Action,可在任意时机恢复节点(带高亮闪烁和特效)。
- 新增
-
动作文件执行机制优化
ExecuteActionFile现在支持<ConditionalActions>和<Actions>两种标准格式,兼容原版及 Pathfinder 规范。- 使用
EventExecutor+ActionsLoader确保自定义 Action 正确执行(如TerminalWrite、TerminalFocus)。
-
终端交互 Action
TerminalWriteAction:向终端写入文本(支持text属性或元素内容,支持Delay延迟)。TerminalFocusAction:全屏聚焦终端(遮罩变暗 + 边框扩散),支持独立的Duration、BorderDuration、FadeInDuration等参数。
-
主题切换配置
- XML 配置项
ThemeToSwitch(预设名或自定义路径)和ThemeFlickerDuration,在动画开始前自动切换主题。
- XML 配置项
✨ 视觉效果与 UI 完善
-
邮件爆炸特效增强
- 添加径向线条生成(
AddRadialMailLine),爆炸阶段持续产生散射射线。 - 爆炸后多段延迟红色圆圈扩散效果,完整还原原版体验。
- 修复爆炸后顶栏图标颜色未恢复为当前主题色的问题。
- 添加径向线条生成(
-
节点摧毁特效还原
- 节点消失时添加冲击波和红色淡入淡出圆圈,安全等级越高效果越强。
- 使用
ConnectedNodeEffect绘制连接线效果,完全复刻DLCIntroExe的视觉表现。
-
状态标题显示
- Flickering / WaitAfterDestruction / MailIconDestroy 阶段显示本地化“正在初始化”文字(带半透明黑色背景条)。
- Outro 阶段:成功时显示“完成”,失败时显示“失败”,颜色分别为主题高亮色和红色。
-
终端聚焦特效
- 阶段开始时(
AssignMission)/ 试炼完成时(Outro)可选显示全屏遮罩 + 终端边框扩散动画。 - 遮罩在描述文本打印期间持续存在,边框动画独立计时。
- 聚焦特效现在也作用于 Outro 打印完成描述文本期间。
- 阶段开始时(
-
退出淡出动画
- 程序退出时所有界面元素(标题、进度条、遮罩等)随
fade值平滑淡出,不再瞬间消失。
- 程序退出时所有界面元素(标题、进度条、遮罩等)随
-
背景网格动态效果
HexGridBackground现在随时间(每帧真实的t)动态更新颜色强度,保持原版流动光效。
⚙ 功能与流程优化
-
OnStart 与 OnAnimationComplete 并存
<OnStart>:点击“开始试炼”按钮后立即执行。<OnAnimationComplete>:所有动画(旋转、节点摧毁、邮件爆炸)完成后执行。
-
可配置程序名称
- XML 中添加
<ProgramName>字段,用于在ps命令中显示自定义名称。
- XML 中添加
-
试炼完成转连
- 新增
ConnectTarget配置项(节点 ID),试炼成功后可自动连接到指定计算机(如 DHS 服务器)。 - 配套
StopMusicOnConnect开关,控制转连前是否停止音乐。
- 新增
-
阶段重置自定义文本
- 阶段
PhaseConfig新增ResetText(文件路径或内嵌)和ExecuteOnPhaseStartOnReset开关,允许在重置阶段时输出额外提示并决定是否再次执行阶段开始动作。
- 阶段
-
动态内存缩减
- 新增
DynamicRamReduction选项,启用后根据当前显示控件(标题、计时条)自动计算最小窗口高度,代替固定目标值。 TARGET_RAM_COST降至 84(固定模式),动态模式下最低 84。
- 新增
-
计时条与标题自适应布局
- 无计时条时标题垂直居中,有时计条时标题上移并为计时条留出空间。
- 标题/副标题背景统一为全宽黑色半透明条,消除重叠。
-
锁定界面改进
- 无 Flag 时仍绘制网格背景(使用系统高亮色),右下角提供本地化“退出”按钮。
- 锁定状态下点击退出按钮自然消失(程序正常关闭)。
🐞 错误修复与健壮性
-
修复阶段超时不重置的致命问题
OnPhaseTimeout中补充大括号,确保不重置时正确进入Outro,重置时状态正确恢复。
-
修复全局超时重复触发
OnGlobalTimeout中立即停用globalTimerActive,防止每帧重复执行而导致卡死。
-
修复失败时多余终端信息
- 通过重写
OnCompleteFailure/OnCompleteError并设置ErrorReturn = null,彻底抑制 “CustomTrial: Failed with ''” 输出。
- 通过重写
-
修复自定义颜色
LDTchara彩虹色不生效- 将颜色解析改为每帧实时计算,使彩虹色随游戏时间动态变化。
-
修复邮件摧毁时色差特效缺失
- 在
UpdateMailIconDestroy中激活PostProcessor.EndingSequenceFlashOutActive,复原版泛白效果。
- 在
-
修复退出时邮件图标未恢复
- 在
Outro退出前设置os.DisableEmailIcon = false。
- 在
-
修复多 Flag 同时存在的警告
- 添加提示,取第一个 Flag 作为有效配置。
🛠 开发体验与配置
-
示例配置
ExampleTrial.xml全面更新- 补充了所有新配置项(
ProgramName、OutroText、ConnectTarget、ResetText、DynamicRamReduction等),并重新按模块分类,保持双语注释。
- 补充了所有新配置项(
-
音乐路径解析兜底
ResolveMusicPath支持纯文件名自动查找扩展根目录→扩展 Music 文件夹→DLC Music 文件夹→原版 Music,方便用户直接写1.ogg。
-
代码清理
- 移除未使用的字段(如
rainbowTimer、terminalFocusActive等),消除编译器警告。
- 移除未使用的字段(如
0.4.3
0.4.2
0.4.1
0.4.0
✨ 新增功能
-
节点删除持久化与恢复
试炼过程中被摧毁的节点(索引)会随存档保存。玩家可通过自定义 ActionRestoreCustomTrialNodes在任意时机(如任务完成后)以动画特效逐个恢复节点,完全还原原版 DLC 体验。 -
主题切换配置
支持在试炼开始时(旋转动画前)自动切换主题。可指定预设主题名称(如HacknetMint)或自定义主题文件路径,并配置切换时的闪烁时长(ThemeFlickerDuration)。 -
节点摧毁后等待时间
新增PostDestructionDelay配置项,可在节点摧毁完成后、邮件图标爆炸前插入一段可自定义的等待时间(秒)。 -
动画完成后执行 Action
原OnStart更名为OnAnimationComplete,执行时机移至所有动画(旋转 + 节点摧毁 + 等待 + 邮件爆炸)结束后,便于在进入任务阶段前执行全局动作。 -
锁定界面退出按钮
当试炼因缺少 Flag 或配置文件而锁定时,窗口右下角会显示“Exit”按钮,避免不熟悉kill命令的玩家卡死。 -
未开始时退出恢复音乐
若玩家在未开始试炼(NotStarted状态)时使用kill命令关闭程序,会自动恢复进入前的背景音乐,作为兜底保护。
🛠 改进与优化
- 修复邮件图标爆炸后顶部栏颜色未恢复的问题(爆炸结束时强制恢复为当前主题的正常颜色)。
- 优化主题切换与顶部栏颜色的保存顺序,确保爆炸恢复时颜色与切换后的主题一致。
- 调整
OnAnimationComplete的触发时机,使其更符合剧情编排需求。 - 代码结构优化,新增
ApplyThemeSwitch()辅助方法,提高可读性。
0.3.5
- 内存动态缩减(RAM Reduction)
- 进入正式破解阶段(所有动画结束后),可配置延迟时间(
RamReductionDelay,默认 5 秒)后,在指定时长(RamReductionDuration,默认 3 秒)内将程序内存占用ramCost从 190 线性降低至 88。 - 缩减期间,程序窗口内的标题、副标题、开始按钮等 UI 元素会按比例平滑缩放,进度条保持全宽显示,模拟“破解工具释放资源”的沉浸感。
- 此功能可通过 XML 配置完全自定义(
<RamReductionDelay>和<RamReductionDuration>),若不需要可将RamReductionDuration设为 0 禁用。
- 进入正式破解阶段(所有动画结束后),可配置延迟时间(
- 使用模式匹配简化反射判断,移除未使用的参数和变量,消除 IDE 警告。