Changelog
Version: 1.0.9
Date: 2026.5.11
Performance:
- 优化弹药装卸机补弹药热路径性能(参考 StableFoundations 的 instanceCache 短路思路):
* 新增炮塔满弹药冷却表:满弹药炮塔 10 秒(600 tick)内跳过,完全避免 get_inventory / can_insert 等引擎 API 调用
* 新增 turret.can_insert 结果缓存(按 turret_name + ammo_name 维度),消除重复的弹药兼容性校验
* 100 弹药箱规模下峰值从 ~100ms 降至 ~1-2ms(典型战斗平稳期占用 < 10% 帧预算)
- 重构补弹药逻辑为 base mod 标准 API(turret.insert / turret.can_insert)替代手工 slot 循环:
* 由引擎内部统一处理弹药分配,保证不会覆盖已装填弹药
* 三阶段处理:扫描找已装填 name → 同 name 补给 → 空 slot 装新弹药
* 支持品质 quality 扩展
- 新增品质(quality)维度支持:弹药聚合和装填按 name+quality 双维度区分:
* 修复弹药箱内同名不同品质弹药被聚合合并的 bug(如普通普弹与稀有普弹被当作同一种)
* turret.insert / inv.remove / can_insert 全部携带 quality 字段,引擎精确地取对应品质的弹药堆
* accepts_cache 升级为 turret_name + ammo_name + quality 三维度 key
- 弹药装卸机搜索半径上限从 2000 下调到 500(反向索引改造后上调的安全阈值):
* 优化前半径 2000 时单次扫描 4000×4000 = 15625 chunks,约 50-150ms;多弹药箱叠加会导致每秒 1-3s 周期性卡顿
* 反向索引改造后 hot path 完全消除 area 扫描,半径仅影响建造事件的一次性开销
* 上限 500 对应单次建造扫描 ~5ms(常规建造无感),蓝图 100 炮塔最多 0.5s 小卡顿,完全可接受
- 解决无限炮塔科技高射速下的断火问题(炮塔自动补给目标量对齐弹药最大堆叠):
* 原因:vanilla 炮塔 automated_ammo_count=10,与mod放大后的弹药 stack_size(最高 10000)严重不匹配,无限科技高射速下 10 发瞬打完,造成炮塔断火
* 方案:在 data-final-fixes 堆叠放大段之后,按 ammo_category 汇总各类弹药最大 stack_size,回写到对应炮塔的 automated_ammo_count
* 优点:完全跟随 item_stack_multiplier 设置,用户关闭堆叠放大时也回落到 vanilla stack_size,不写死数值
* 顺便收益:ammo-chest 一行代码不改(原本就读 turret.prototype.automated_ammo_count),vanilla 逻辑机器人补弹同样受益
- 弹药装卸机采用 chest↔turret 双向反向索引,彻底摆脱 hot path 的 area 扫描。www8787169 反馈的核心问题点:
* 新增 storage.qjk_ammo_chests 主表(chest_uid → {entity, turrets set})与 storage.qjk_turret_index 反向表(turret_uid → {entity, chests set})
* 箱子建造时扫范围内炮塔,炮塔建造时扫范围内箱子,立刻建立双向链接;tick_dispatch_ammo 直接遍历索引,无任何 area 扫描
* 蓝图批量建造炮塔时用 pending_turrets 队列删峰:on_built 只入队,每 tick 处理 5 个,消除蓝图弹幕时的瞬时卡顿
* 炮塔/箱子死亡时事件清理双向索引,hot path 再补懒清理(双保险),死炮塔不会残留
* 半径变更时 rebuild_all_links() 全表重建;旧存档升级时 on_configuration_changed 一次性重建索引
* 性能收益:500+ 箱规模下 hot path 单次 <5ms(之前 ~250ms),规模扩展线性度提升 50-100 倍
Bugfixes:
- 修复补弹药逻辑中 break 位置导致的弹药跳过 bug:原代码在 can_set_stack 为 true 时立即 break,
若该弹药库存已被耗尽则其他可用弹药被跳过;修正为实际搬运后才 break
- 修复炮塔已有弹药 slot 可能被弹药箱不同种类弹药覆盖的严重 bug:
* 原代码非空 slot 分支会遍历 ammo_inv 并调用 can_set_stack,若炮塔接受同 category 其他弹药,
set_stack 会直接替换原有弹药(如普弹被穿甲弹覆盖,原弹药凭空消失)
* 修正为非空 slot 只补充同 name 弹药,简化逻辑并消除覆盖风险
- 修复 destroy_render 函数 else 分支使用未定义变量 rid 的老 bug(应为 render_ids)
Version: 1.0.8
Date: 2026.5.11
Bugfixes:
- 修复核电链路功率加成未完全生效的严重bug:
* 蒸汽轮机无 max_power_output 字段,原加成代码完全失效(功率一直停留在原版 5.82MW),改为放大 effectivity
* 热交换器的 prototype type 实际是 boiler 而非 heat-exchanger,原查表路径查不到实体
* 聚变发电机功率字段是 energy_source.output_flow_limit,原加成代码字段错误
- 修复发电倍率 data.lua 和 data-final-fixes.lua 双处重复执行导致所有发电设备被 ×power_mult² 的问题
* 直接导致核燃料实际耐久 = dm÷power_mult = 1,而非预期的 dm
- 热交换器 energy_source.max_transfer 同步放大,避免热能传输卡瓶颈
Version: 1.0.7
Date: 2026.5.7
Features:
- 优化插件分享塔的mod兼容能力,之前写死了范围和效率,导致其它mod新增的插件分享塔没有区别。现在改为倍率增幅
- 优化机械臂科技布局,之前以为的原版科技名称错误已改正
- 优化发电相关代码,增加了核电、聚变发电的增幅,不再是燃烧发电一家独大了,且优化了燃料的增幅改为同比例增幅
- 优化弹药装卸机支持按ALT键显示\关闭装填范围
- 优化陆地抽水泵,增加兜底扫描,保证每个陆地瓦块都可以抽到液体
Version: 1.0.6
Date: 2026.4.29
Features:
- 移植无限储液罐能力
- 移植弹药装卸机能力
Version: 1.0.4
Date: 2026.4.27
Bugfixes:
- 修复神插件未正确判断是否存在品质模组的兼容问题
- 新增天使插件来补充不想使用品质的场景
- 优化腐败机制提示词
- 解决了死后复活增加的背包格子丢失问题
Version: 1.0.3
Date: 2026.4.23
Features:
- 神插件品质提升数值不正确修复
Version: 1.0.2
Date: 2026.4.23
Features:
- 新增神插件
Version: 1.0.1
Date: 2026.4.22
Features:
- 修复没有使用太空时代DLC时兼容问题
- 新增了5个品质等级
Version: 1.0.0
Date: 2026.4.22
Features:
- 新建模组