电力彗星靴(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)。

相关条目