电力彗星靴(Electric Boots of the Comet)
双重门控靴:需 EMT 且 Thaumic Exploration,且 Electro-Magic-Tools 与 Thaumic_Exploration 都为 true(EMTHelper.java:61 + :86)。注册于 EMTHelper.java:96-97。
⚠️ 本靴有明确的源码缺陷:setBootsData() 覆写了父类却不调用 super.setBootsData(),导致多个字段静默回落到 Java 默认值而非 ItemElectricBoots 基类设定值。详见「已知缺陷」。
基本信息
| 属性 | 值 |
|---|---|
| 注册名 | thaumicboots:ItemElectricComet(EMTHelper.java:97) |
| 内部类 | thaumicboots.item.boots.comet.ItemElectricCometBoots |
| 本地化名 | item.ItemElectricComet.name = Electric Boots of the Comet |
| 构造参数 | (ThaumcraftApi.armorMatSpecial, 4, 3) |
| 基类 | ItemElectricBoots |
| 图标 | thaumicboots:electricComet_16x |
| 护甲贴图 | thaumicboots:model/electricbootsComet.png |
| 稀有度 | EnumRarity.rare |
数值
| 数值 | 值 | 来源 |
|---|---|---|
maxCharge |
100,000 EU | ItemElectricCometBoots.java:10 |
energyPerDamage |
100 EU/伤 | :11(注释 “1k hits”) |
visDiscount |
2% | :12 |
transferLimit |
100 EU/t | :13 |
speedBonus |
0.165F | :14(注释 “electric + comet”) |
jumpBonus |
0.275D(3 格) | :15 |
longrunningbonus |
0.003F | :16 |
minimumHeight |
4F | :17 |
minimumDistance |
20d | :18 |
tier |
2 | :19 |
damageAbsorptionRatio |
0.5D | :20 |
negateFall |
false | :21(唯一有意为之) |
功能
- 无免摔(但可花电免摔):
negateFall = false关掉了onArmorTick的免摔,改由BootsEventHandler的耗电免摔接管,见下方「彗星行的充能公式与摔落保护」。 minimumHeight/minimumDistance是彗星行独有的充能公式参数:ItemElectricCometBoots额外声明了这两个字段(纳米档 6F / 35F,量子档 10F / 100F),流星行与虚空行完全没有这两个字段。彗星行耗电随移动距离增长,超过minimumDistance后 ×3,详见下方「彗星行的充能公式」。- EU 耗尽即失效。
- 特殊护甲:吸收比例
0.15D * 0.5D= 0.075,是全 mod 最低(ItemElectricBoots基类默认值)。 - 台阶辅助、皮革修复、创造栏满/空电双形态。
彗星行的充能公式与摔落保护
彗星行三档靴共用 IComet 定义的粒子 / runTicks 逻辑,外加一套「用电换免摔」机制(BootsEventHandler.java:100-120):
摔落时 event.distance <= minimumHeight → 免费免摔,直接 setCanceled(true)
否则 energyDemand = energyPerDamage × (multiplier(distance) − minimumHeight)
multiplier(distance) = (distance > minimumDistance) ? distance × 3 : distance
若 energyDemand <= 当前电量 → 扣电并免摔;否则正常摔伤
本档代入:energyPerDamage = 100、minimumDistance = 20d、minimumHeight = 4F。三档对比:电力(100 / 20d / 4F)、纳米(500 / 35F / 6F)、量子(2,500 / 100F / 10F)。
关键结论:negateFall = false 并不等于「本靴完全没有免摔」。onArmorTick 里的免摔被刻意关闭,但 BootsEventHandler.onLivingFall 提供了替代方案——用电量买免摔。低于 minimumHeight 的摔落永远免费免摔;更高的摔落按距离耗电,电量不足时照常摔伤。这对电力档尤其吃紧:100 EU/伤、超过 20 格后耗电 ×3。
IComet.specialEffect(IComet.java:10-37)还负责:runTicks 累加(移动时 +1,上限 100,静止归零)、以及在玩家干燥且移动时于脚下生成 fireworksSpark 粒子。
⚠️ 公式缺陷:getPowerConsumptionMultiplier(distance) 形参是 float,实参 event.distance 是 double(窄化转换)。且当 distance 略大于 minimumHeight 但小于 minimumDistance 时,multiplier(distance) − minimumHeight 仍为正数,但当 distance ≤ minimumHeight 时该式为负数——代码靠上一行的早退分支避免了负耗电,两者必须配套阅读。
已知缺陷
setBootsData()不调用super.setBootsData()(ItemElectricCometBoots.java:18-34)。本 mod 其余 18 个靴类全部调用了super.setBootsData(),只有本靴与流星彗星靴例外。后果:waterEffects、steadyBonus、provideEnergy从未被赋值,停留在 Java 默认false。所幸三者与ItemBoots/ItemElectricBoots基类设定值恰好相同(都是 false),所以不产生可见数值偏差——本靴真正的独特性是negateFall = false+minimumHeight/minimumDistance充能公式。目前只属代码坏味道。transferLimit = 100与maxCharge = 100,000不匹配,充满需 1000 tick(50 秒),是全 mod 充放电最慢的一档。damageAbsorptionRatio = 0.5D与super缺失无关,是本靴显式设定值,算出吸收比例 0.075(全 mod 最低)。
合成配方
| 配方类型 | 输入(7 槽) | 输出 |
|---|---|---|
灌注(EMTHelper.java:121) |
彗星靴、Salis 资源、碎片(元 6)、Salis 资源、电力旅行靴(任意元)、Salis 资源、碎片(元 6)、Salis 资源 | 本物品 ×1 |
精华需求:EXCHANGE 75 / MAGIC 50 / CRAFT 50 / SPACE 25 / BOOTS 25。催化剂:奥术透镜。
配方记录在 TB_Explorations_EMT_Compat(人工星空魔法)的研究页 2(EMTHelper.java:429)。