Upgrades

基本信息

属性 值
注册名 openmodularturrets:upgRan / :upgEff / :upgFire / :upgAcc / :upgScatter
数量 5 种
物品类 openmodularturrets.items.upgrades.RangeUpgradeItem / EfficiencyUpgradeItem / FireRateUpgradeItem / AccuracyUpgradeItem / ScattershotUpgradeItem,共同父类 UpgradeItem
最大堆叠 4(UpgradeItem.java:12);散射例外为 2(ScattershotUpgradeItem.java:21)
安装位置 底座的 UpgradeSlot(槽位 11;Tier 5 另有槽位 12)
创造标签 ModularTurrets.modularTurretsTab(UpgradeItem.java:11)

功能

升级件装入炮塔底座的 UpgradeSlot(Tier 1 无升级槽;Tier 2/3/4 各 1 个;Tier 5 有 2 个),由 TurretHeadUtil 的 5 个读取函数逐 tick 结算:

升级件 读取函数 作用对象
Upgrade - Range TurretHeadUtil.getRangeUpgrades(:649) 每格 +upgrades/range 格射程
Upgrade - Scattershot TurretHeadUtil.getScattershotUpgrades(:674) 每格额外投射物数
Upgrade - Accuracy TurretHeadUtil.getAccuraccyUpgrades(:699) 每格 +upgrades/accuracy 精度
Upgrade - Efficiency TurretHeadUtil.getEfficiencyUpgrades(:724) 每格 −upgrades/efficiency 每发 RF
Upgrade - Fire Rate TurretHeadUtil.getFireRateUpgrades(:750) 每格 +upgrades/rateOfFire 射速

Tier 1 底座完全无法使用升级件:getRangeUpgrades 等函数开头都是 if (tier == 1) { return value; }(如 TurretHeadUtil.java:653-655),且 Tier 1 容器本就没有 UpgradeSlot。

堆叠即倍率:每个函数按 base.getStackInSlot(n).stackSize 线性累加,因此一格放 4 个 Upgrade - Range 相当于 4 倍加成。模组自带 lang(turret.upgrade.stacks):“Stacks up to 4 times.”

数值

升级件 配置键 默认每格加成 说明
Upgrade - Range upgrades/range +2 格 配置原文 “Increases range in blocks linearly”
Upgrade - Fire Rate upgrades/rateOfFire +0.1(10%) 配置原文 “It’s a double for some reason, reduces cooldown”
Upgrade - Accuracy upgrades/accuracy +0.2 配置原文 “Increases accuracy linearly”
Upgrade - Efficiency upgrades/efficiency −0.08(8%) 配置原文 “Reduces power consumption linearly”
Upgrade - Scattershot 复用 upgrades/range 见下方说明 无独立配置项

来源:ConfigHandler.java:226-231。

源码缺陷(已核实):TurretHeadUtil.getScattershotUpgrades 的两个累加点都用了 ConfigHandler.getRangeUpgradeBoost() 而非某个散射专用常量(TurretHeadUtil.java:685 与 :692)—— 与 getRangeUpgrades(:660 与 :667)的取值完全相同。这是复制粘贴遗留,导致改变射程配置会同时改变散射计数。本条按源码原文记录,不做推测性修正。

另需注意:getScattershotUpgrades 与 getRangeUpgrades 一样,在 tier == 5 时额外检查槽位 12,其余等级只检查槽位 11(TurretHeadUtil.java:657-672 与 :682-697)。

交互

触发 行为
放入 UpgradeSlot 逐 tick 线性加成,无消耗、无耐久
放入普通槽位 被当作普通物品存放,不产生任何效果
放满 4 个 一格内 4 叠,获得 4 倍加成
散射件放 4 个 不可能 —— 堆叠上限 2

合成配方

5 种升级件都是固定配方,与已加载模组无关,统一在 RecipeHandler.initRecipes() 中注册(RecipeHandler.java:369-432),每次产出 1 个。

统一布局(仅中间 B 位不同):

 A 
ABA
 C 
字符 物品
A 下界石英
B 逐种不同,见下表
C IO Bus
升级件 B 位材料 源码位置
Upgrade - Efficiency 末影之眼 RecipeHandler.java:369-380
Upgrade - Accuracy 金锭 RecipeHandler.java:382-393
Upgrade - Fire Rate 烈焰粉 RecipeHandler.java:395-406
Upgrade - Range 钻石 RecipeHandler.java:408-419
Upgrade - Scattershot 燧石 RecipeHandler.java:421-432

相关条目