炮塔增强-Turret Enhancement

by Mr-Lin

炮塔自动回血、自动补弹,保留炮塔原有弹药类型。 The turret automatically replenishes health and ammunition, retaining the original ammunition type of the turret. The control panel allows for the adjustment of specific parameters. The weapon defense attribute is slightly enhanced, allowing you to focus more on development and resist external threats.

Content
10 days ago
2.1
165
Combat Cheats

Changelog

Version: 0.1.7
Date: 04. 11. 2026
  Info:
    - 本版是 0.1.6 的功能定版。实机测试确认以下四项全部正常,故只提升版本号、整理说明文档,功能代码、数值与内部 ID 零改动:①机枪/火箭/磁轨/重炮的「默认弹药」下拉(中文显示、跟随游戏语言,弹匣已有弹药时仍按已有类型补);②重炮「启用原子弹弹药」开关与核炮弹(生成、配方、科技解锁、落点核爆);③重炮伤害随等级放大(Lv1=1200、Lv5=2488,核炮弹同步放大);④自动补弹/自动回血不再整批漏掉。
    - 存档兼容:炮塔状态存在存档内的实体数据里,启动设置按模组名保存,因此升级版本号不丢设置、不需开新档。从 0.1.5 或更早跳过来时,读档会提示「模组版本已改变」,确认即可。
    - 加载要求:模组目录名必须与 info.json 里的 name_version 完全一致,本版目录已同步改名为 turret_boost_0.1.7;若手工改名成 turret_boost 或其它名字,游戏会报「找不到版本」而不加载。
    - 下面 0.1.6 一节是本次定版包含的完整变更记录,内容未做删改,仅作归档。
  Changes:
    - 版本号 0.1.6 → 0.1.7;info.json 的简介合并了原先的「新增/修复」分段,去掉重复表述。
Version: 0.1.6
Date: 04. 11. 2026
  Features:
    - 新增「自动补弹的默认弹药」下拉选项,四种有弹药槽的炮塔各一项:机枪(标准/穿甲/贫铀弹匣)、火箭(火箭弹/爆破火箭弹/原子弹)、磁轨(磁轨炮弹)、重炮(重炮炮弹/核炮弹)。
    - 该项只在炮塔弹匣为空时生效;弹匣里已有弹药时(包括玩家手动放进去的其它弹药),一律按已有弹药类型补充,设置完全不参与判断,两套逻辑不会互相冲突。
    - 下拉里显示的是游戏内正式译名(中文环境显示标准弹匣/穿甲弹匣…,英文环境显示 Standard magazine…),而不是 firearm-magazine 这类内部 ID;译名走 locale 的 [string-mod-setting],因此跟随游戏语言而不是写死中文。
    - 新增「重炮炮塔 - 启用原子弹弹药」开关(默认关闭)。开启后才会生成核炮弹这种弹药:ammo_category 仍是 artillery-shell,只有重炮能装,落点复用原版原子弹的爆炸/冲击波/屏幕震动/音效。
    - 核炮弹配方:1 颗原子弹 → 1 发核炮弹(组装机,10 秒),随「原子弹」科技解锁;关闭开关后道具不再生成,存档里已有的核炮弹会被游戏按未知道具清掉(不会损坏存档)。
    - 开关关闭时若下拉里选了核炮弹,补弹会自动回退成普通重炮炮弹,并在 /turret-boost-status 里显示实际生效的默认弹药,不会出现补不进去却不报错的情况。
    - 全部选项均按游戏原型的 ammo_category 核对过:机枪=bullet、火箭=rocket、磁轨=railgun、重炮=artillery-shell,不会出现选了却插不进去的情况。
    - 核炮弹能生效的原因:重炮是 ammo-turret,真正决定打出去什么的是装填弹药自身的 ammo_type(gun 上的 ammo_type 只对不消耗弹药的攻击者生效),所以新增弹药道具即可,无需改动炮塔或 gun。
  Bugfixes:
    - 修复部分机枪/火箭/磁轨/重炮炮塔不再自动补弹:补弹与回血原本依赖「每种炮塔一个全局计时器」,而炮塔是分片巡检的(每 tick 只处理 64 座),计时器又只在一整轮巡检结束时归零,于是每一轮里只有计时器跨过阈值之后被扫到的那批炮塔能补上弹,前面扫到的整批被跳过,且每轮跳过的都是同一批。表现为部分炮塔长期不补弹、拆掉重放又能好一阵。现改为每座炮塔各自记录 next_ammo_tick,扫到谁就查谁是否到期,与巡检相位无关。
    - 修复炮塔回血存在完全相同的整批漏回血问题(同一处全局计时器机制)。
    - 修复弹匣打空后补入的弹药不可选:旧版把默认弹药写死在代码里(机枪固定补标准弹匣),使用穿甲弹的炮塔会被悄悄降级;现在改为补入启动设置里选定的默认弹药。
    - 修复重炮按炮弹消耗计分漏记:旧版补弹后把弹药基线置空,导致补弹后到下次巡检之间打出的炮弹不计分,巡检周期长的大基地里甚至可能永远攒不到升级点数;现在改用补弹后的真实存量作为基线。
    - 修复克隆出来的炮塔不会被登记:on_entity_cloned 的实体挂在 destination 上,旧版只读取 created_entity / entity,导致克隆出的炮塔既不补弹也不参与升级。
    - 修复重炮升级完全不提升伤害:旧版给每级复制一份独立 projectile、再让各级 gun 的 ammo_type 指向它,但 artillery-turret 属于 ammo-turret 家族,gun 上的 ammo_type 会被忽略——实机无头测试 Lv1~Lv5 伤害恒为 1000,升级实际只拿到射程与射速。现改为与其他炮塔一致地乘 attack_parameters.damage_modifier:同一发炮弹实测 Lv1=1200、Lv5=2488(倍率严格等于 1.2^等级),核炮弹同样按等级放大(单发 120 → 248.83)。
  Changes:
    - 补弹/回血改为每座炮塔独立计时,单座炮塔的补弹节奏严格等于「补弹间隔」设置值,不再受基地规模、炮塔数量、巡检队列位置影响。
    - 移除已废弃的全局计时器存储;旧存档中残留的 storage.timers 会被自动清除,不影响存档兼容性。
    - 删除重炮每级那 5 份从未生效的独立 projectile 原型(白占内存与加载时间);每级仍保留独立 gun,因为伤害倍率挂在 gun 的 attack_parameters 上,炮车与原版重炮不受影响。
    - 重炮伤害倍率与其他炮塔使用同一条公式(每级倍率默认 1.2,Lv1 即为 1.2 倍、Lv5 为 1.2^5≈2.49 倍),可在启动设置里单独调整重炮的「每级伤害倍率」。
  Info:
    - 新增的「默认弹药」属于启动设置(startup),改动后需重新读档生效;原有设置项名字全部未变,旧存档里已保存的数值不会丢。
    - 升降级流程未做任何改动:升级/降级函数、战斗量累计、降级冷却、换体时血量与弹药快照迁移,以及 settings.lua 中的各项设置,均与 0.1.5 一致;0.1.6 只修正了「重炮这一级的伤害到底有没有算进去」这一个数据问题。
    - 与升级相关的唯一数值变化是重炮计分变准(不再漏记),因此重炮升级会比旧版略快,属于恢复设计意图(每发炮弹 60 点)。
    - 火箭炮塔的「捕获机器人火箭弹」属于一次性特种弹,未列入可选项;如需加入,在 settings.lua 的火箭 ammo_options 里加一行,并在 locale 的 [string-mod-setting] 补一条显示名即可。
    - 下拉项由「该炮塔可选弹药是否多于一种」自动决定:以后给磁轨/重炮补第二种子弹时,只要在 settings.lua 的 ammo_options 里补齐选项,下拉会自动出现,无需改代码。
    - 直接读取旧存档即可生效,无需开新档。