Skip to content

Releases: LDTchara/KernelExtensions

0.6.0

12 May 10:04
a9244d7

Choose a tag to compare

0.6.0 Pre-release
Pre-release

0.6.0 — 飞机 Daemon、水印与稳定性增强

Pre‑release · 2025

新增功能

  • 飞机 Daemon 系统(FlightDaemon)
    • 完全替代原版 AircraftDaemon,支持在目标计算机 XML 中直接配置 <FlightDaemon FallDuration="90" OnFailed="Actions/failed.xml" OnSaved="Actions/saved.xml" />
    • 可独立设置坠落时长(FallDuration),支持立即坠落模式下的线性倒计时。
    • 坠毁或修复时分别执行 OnFailedOnSaved 动作文件,完美融入剧情设计。
    • 提供全局高度计覆盖层,可通过 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)。
  • 修复 FlightDaemonAircraftFallStartsImmediately 拼写错误(原 AircraftFallStartsImmediatley)。
  • 修复 FlightDaemon 坠毁后静态字典未被清理,可能引发内存泄漏的问题。
  • 修复 FlightDaemon 固件重载后离开节点仍持续更新高度数据的问题,现在断开连接时会自动取消订阅。

0.5.0

30 Apr 14:10
df3a79b

Choose a tag to compare

0.5.0 Pre-release
Pre-release

新增功能

可配置虚拟机攻击系统(VM Attack)

  • 新增 LaunchVMAttack Action,可从动作文件触发自定义虚拟机崩溃攻击。
  • 支持三种恢复模式:FileDeletion(删除指定文件)、FileExists(创建指定文件)、Password(输入密码)。
  • 通过 VMATK/ 目录下的 XML 配置文件定义攻击行为,包括自定义错误消息、系统日志文本、引导对话、帮助文件、虚假文件列表、成功音乐等。
  • 恢复界面 (FakeRecoveryModule) 模拟终端式输出,具备系统日志滚动、引导文本逐字打印、交互按钮/密码输入框,支持多语言提示。
  • 引导文本支持行内控制指令:||Px.x|| 停顿、||Sx.x|| 变速、||SR|| 恢复默认速度,且可启用“已读跳过”功能。
  • 引导文本开始播放时可同步执行一个动作文件(ActionOnGuideTextStart)。
  • 完美融入原版崩溃流程:利用 Harmony 补丁在系统启动日志第 50 行插入错误状态,15 秒后自动转入自定义恢复模块,体验无缝衔接。
  • 攻击解除后自动执行黑屏重启并播放成功音乐。

全新 Action:PlaySound

  • 新增 PlaySound Action,用于播放扩展目录下的自定义音效(WAV 格式)。
  • 提供公共 SoundHelper 工具类,支持在代码中便捷调用。

技术改进

  • 音乐路径解析公共化:提取 MusicPathResolver 工具类,统一处理扩展内音乐文件的路径查找(支持多级回退),修复了扩展文件夹名与扩展名不一致时无法播放音乐的问题。
  • 动作文件执行逻辑统一:新增 ActionHelper 公共类,将动作文件执行逻辑标准化,CustomTrialExe 与 VM 系统均使用同一套实现,提高稳定性与可维护性。

其他

  • 调整了多处内部细节,优化了模块间的耦合,为后续功能扩展打下基础。

本次更新历时较久,VM 攻击系统经过反复打磨,终于达到可发布状态。感谢所有参与测试和反馈的朋友。

0.4.6

25 Apr 03:41

Choose a tag to compare

0.4.6 Pre-release
Pre-release

修复音乐路径解析中路径不正确的问题

0.4.5

24 Apr 14:33

Choose a tag to compare

0.4.5 Pre-release
Pre-release

🆕 新增功能

  • 强制失败 Action (FailTrial)
    新增 FailTrialAction,可在动作文件中直接调用,强制当前试炼立即失败(进入 Outro 并显示“失败”文字)。支持 DelayDelayHost 延迟执行。
    <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

24 Apr 10:19

Choose a tag to compare

0.4.4 Pre-release
Pre-release

🚀 核心系统增强

  1. 节点删除持久化与恢复

    • 新增 CustomTrialNodeStorage 全局存储,记录试炼过程中被删除的节点索引。
    • 存档/读档时自动保存/恢复删除状态(通过 SaveEventCustomTrialSaveExecutor)。
    • 提供 RestoreCustomTrialNodes 自定义 Action,可在任意时机恢复节点(带高亮闪烁和特效)。
  2. 动作文件执行机制优化

    • ExecuteActionFile 现在支持 <ConditionalActions><Actions> 两种标准格式,兼容原版及 Pathfinder 规范。
    • 使用 EventExecutor + ActionsLoader 确保自定义 Action 正确执行(如 TerminalWriteTerminalFocus)。
  3. 终端交互 Action

    • TerminalWriteAction:向终端写入文本(支持 text 属性或元素内容,支持 Delay 延迟)。
    • TerminalFocusAction:全屏聚焦终端(遮罩变暗 + 边框扩散),支持独立的 DurationBorderDurationFadeInDuration 等参数。
  4. 主题切换配置

    • XML 配置项 ThemeToSwitch(预设名或自定义路径)和 ThemeFlickerDuration,在动画开始前自动切换主题。

✨ 视觉效果与 UI 完善

  1. 邮件爆炸特效增强

    • 添加径向线条生成(AddRadialMailLine),爆炸阶段持续产生散射射线。
    • 爆炸后多段延迟红色圆圈扩散效果,完整还原原版体验。
    • 修复爆炸后顶栏图标颜色未恢复为当前主题色的问题。
  2. 节点摧毁特效还原

    • 节点消失时添加冲击波和红色淡入淡出圆圈,安全等级越高效果越强。
    • 使用 ConnectedNodeEffect 绘制连接线效果,完全复刻 DLCIntroExe 的视觉表现。
  3. 状态标题显示

    • Flickering / WaitAfterDestruction / MailIconDestroy 阶段显示本地化“正在初始化”文字(带半透明黑色背景条)。
    • Outro 阶段:成功时显示“完成”,失败时显示“失败”,颜色分别为主题高亮色和红色。
  4. 终端聚焦特效

    • 阶段开始时(AssignMission)/ 试炼完成时(Outro)可选显示全屏遮罩 + 终端边框扩散动画。
    • 遮罩在描述文本打印期间持续存在,边框动画独立计时。
    • 聚焦特效现在也作用于 Outro 打印完成描述文本期间。
  5. 退出淡出动画

    • 程序退出时所有界面元素(标题、进度条、遮罩等)随 fade 值平滑淡出,不再瞬间消失。
  6. 背景网格动态效果

    • HexGridBackground 现在随时间(每帧真实的 t)动态更新颜色强度,保持原版流动光效。

⚙ 功能与流程优化

  1. OnStart 与 OnAnimationComplete 并存

    • <OnStart>:点击“开始试炼”按钮后立即执行。
    • <OnAnimationComplete>:所有动画(旋转、节点摧毁、邮件爆炸)完成后执行。
  2. 可配置程序名称

    • XML 中添加 <ProgramName> 字段,用于在 ps 命令中显示自定义名称。
  3. 试炼完成转连

    • 新增 ConnectTarget 配置项(节点 ID),试炼成功后可自动连接到指定计算机(如 DHS 服务器)。
    • 配套 StopMusicOnConnect 开关,控制转连前是否停止音乐。
  4. 阶段重置自定义文本

    • 阶段 PhaseConfig 新增 ResetText(文件路径或内嵌)和 ExecuteOnPhaseStartOnReset 开关,允许在重置阶段时输出额外提示并决定是否再次执行阶段开始动作。
  5. 动态内存缩减

    • 新增 DynamicRamReduction 选项,启用后根据当前显示控件(标题、计时条)自动计算最小窗口高度,代替固定目标值。
    • TARGET_RAM_COST 降至 84(固定模式),动态模式下最低 84。
  6. 计时条与标题自适应布局

    • 无计时条时标题垂直居中,有时计条时标题上移并为计时条留出空间。
    • 标题/副标题背景统一为全宽黑色半透明条,消除重叠。
  7. 锁定界面改进

    • 无 Flag 时仍绘制网格背景(使用系统高亮色),右下角提供本地化“退出”按钮。
    • 锁定状态下点击退出按钮自然消失(程序正常关闭)。

🐞 错误修复与健壮性

  1. 修复阶段超时不重置的致命问题

    • OnPhaseTimeout 中补充大括号,确保不重置时正确进入 Outro,重置时状态正确恢复。
  2. 修复全局超时重复触发

    • OnGlobalTimeout 中立即停用 globalTimerActive,防止每帧重复执行而导致卡死。
  3. 修复失败时多余终端信息

    • 通过重写 OnCompleteFailure / OnCompleteError 并设置 ErrorReturn = null,彻底抑制 “CustomTrial: Failed with ''” 输出。
  4. 修复自定义颜色 LDTchara 彩虹色不生效

    • 将颜色解析改为每帧实时计算,使彩虹色随游戏时间动态变化。
  5. 修复邮件摧毁时色差特效缺失

    • UpdateMailIconDestroy 中激活 PostProcessor.EndingSequenceFlashOutActive,复原版泛白效果。
  6. 修复退出时邮件图标未恢复

    • Outro 退出前设置 os.DisableEmailIcon = false
  7. 修复多 Flag 同时存在的警告

    • 添加提示,取第一个 Flag 作为有效配置。

🛠 开发体验与配置

  1. 示例配置 ExampleTrial.xml 全面更新

    • 补充了所有新配置项(ProgramNameOutroTextConnectTargetResetTextDynamicRamReduction 等),并重新按模块分类,保持双语注释。
  2. 音乐路径解析兜底

    • ResolveMusicPath 支持纯文件名自动查找扩展根目录→扩展 Music 文件夹→DLC Music 文件夹→原版 Music,方便用户直接写 1.ogg
  3. 代码清理

    • 移除未使用的字段(如 rainbowTimerterminalFocusActive 等),消除编译器警告。

0.4.3

18 Apr 15:40
23aaa8a

Choose a tag to compare

0.4.3 Pre-release
Pre-release

0.4.2中对于patch补丁存在疑义,原版HN中MusicManager虽使用FNA的ContentManager但可以播放自定义ogg音乐(甚至content里的音乐也是ogg格式的而不是xnb),此版本修改回使用MusicManager,补丁版本则新建分支(music_patch_0.4.2)

0.4.2

18 Apr 13:45
17c942c

Choose a tag to compare

0.4.2 Pre-release
Pre-release

0.4.1中检测的扩展音乐路径固定Music/,此版本调整为以扩展文件夹为基准的相对路径

0.4.1

18 Apr 13:32
f05206e

Choose a tag to compare

0.4.1 Pre-release
Pre-release
  • 增加对原版MusicManager的Harmony补丁,修复了播放音乐时相对路径错误的问题
  • 现在在试炼成功或失败后会停止当前音乐

0.4.0

17 Apr 13:11
08fdf13

Choose a tag to compare

0.4.0 Pre-release
Pre-release

✨ 新增功能

  • 节点删除持久化与恢复
    试炼过程中被摧毁的节点(索引)会随存档保存。玩家可通过自定义 Action RestoreCustomTrialNodes 在任意时机(如任务完成后)以动画特效逐个恢复节点,完全还原原版 DLC 体验。

  • 主题切换配置
    支持在试炼开始时(旋转动画前)自动切换主题。可指定预设主题名称(如 HacknetMint)或自定义主题文件路径,并配置切换时的闪烁时长(ThemeFlickerDuration)。

  • 节点摧毁后等待时间
    新增 PostDestructionDelay 配置项,可在节点摧毁完成后、邮件图标爆炸前插入一段可自定义的等待时间(秒)。

  • 动画完成后执行 Action
    OnStart 更名为 OnAnimationComplete,执行时机移至所有动画(旋转 + 节点摧毁 + 等待 + 邮件爆炸)结束后,便于在进入任务阶段前执行全局动作。

  • 锁定界面退出按钮
    当试炼因缺少 Flag 或配置文件而锁定时,窗口右下角会显示“Exit”按钮,避免不熟悉 kill 命令的玩家卡死。

  • 未开始时退出恢复音乐
    若玩家在未开始试炼(NotStarted 状态)时使用 kill 命令关闭程序,会自动恢复进入前的背景音乐,作为兜底保护。

🛠 改进与优化

  • 修复邮件图标爆炸后顶部栏颜色未恢复的问题(爆炸结束时强制恢复为当前主题的正常颜色)。
  • 优化主题切换与顶部栏颜色的保存顺序,确保爆炸恢复时颜色与切换后的主题一致。
  • 调整 OnAnimationComplete 的触发时机,使其更符合剧情编排需求。
  • 代码结构优化,新增 ApplyThemeSwitch() 辅助方法,提高可读性。

0.3.5

15 Apr 15:27
c7d40e8

Choose a tag to compare

0.3.5 Pre-release
Pre-release
  • 内存动态缩减(RAM Reduction)
    • 进入正式破解阶段(所有动画结束后),可配置延迟时间(RamReductionDelay,默认 5 秒)后,在指定时长(RamReductionDuration,默认 3 秒)内将程序内存占用 ramCost 从 190 线性降低至 88。
    • 缩减期间,程序窗口内的标题、副标题、开始按钮等 UI 元素会按比例平滑缩放,进度条保持全宽显示,模拟“破解工具释放资源”的沉浸感。
    • 此功能可通过 XML 配置完全自定义(<RamReductionDelay><RamReductionDuration>),若不需要可将 RamReductionDuration 设为 0 禁用。
  • 使用模式匹配简化反射判断,移除未使用的参数和变量,消除 IDE 警告。