Hydra Mortar(九头蛇迫击炮)

事实基准:/Users/evlos/a/mirror/twilightforest(minecraftVersion = 1.7.10)逐行读源码。

基本信息

属性 值 来源
注册实体名 TwilightForest:tfhydramortar(全小写,无空格) TwilightForestMod.java:809-816
实体 ID 常量 idVehicleSpawnHydraMortar = 5 TwilightForestMod.java:183
注册形式 EntityRegistry.registerModEntity 直调(不经 TFCreatures) TwilightForestMod.java:809
追踪距离 / 更新频率 150 / 3 TwilightForestMod.java:813-814
类 twilightforest.entity.boss.EntityTFHydraMortar entity/boss/EntityTFHydraMortar.java(208 行)
父类 net.minecraft.entity.projectile.EntityThrowable 同上 :17
尺寸 setSize(0.75F, 0.75F) 同上 :30、:36
所属结构 九头蛇巢穴(hydraLair 特性 ID 12) TFFeature.java:95

数值

属性 值 来源
直接伤害 DIRECT_DAMAGE 18 EntityTFHydraMortar.java:20
点燃时长 BURN_FACTOR 5 秒 同上 :19(用于 setFire)
爆炸威力(普通) 0.1F 同上 :108
爆炸威力(megaBlast) 4.0F 同上 :108
引信 fuse 初值 80 tick 同上 :24
反射后引信增量 +20 tick 同上 :143
重力 getGravityVelocity 0.05F 同上 :195-197
初速 func_70182_d 0.75F 同上 :200-202
下坠速度 func_70183_g -20.0F 同上 :205-206
碰撞边界 getCollisionBorderSize 1.5F 同上 :187-189
直接伤害查询范围 自身包围盒 expand(1.0, 1.0, 1.0) 同上 :115

AI 行为 / 特殊机制

投掷者:HydraHeadContainer.java:780 由头部发射,参数为 this.headEntity。

落地起爆流程(:42-63):落地后每 tick 三轴速度 *= 0.9, fuse-- 减到 ≤ 0 时 detonate()。非 megaBlast 状态下命中方块只会停住 (motionY = 0、onGround = true)并不会立刻爆(:76-85); 但只要 onImpact 撞到实体,或 megaBlast 为真,就立即 detonate()。

爆炸(:101-126):newExplosion(this, ..., explosionPower, true, true)—— 后两个 true 表示会破坏方块、会点燃生物。megaBlast 时还会覆写 func_145772_a 把每个方块的爆炸抗性压到 ≤ 0.8F,让堡垒挡不住它(:87-99, 但排除 bedrock / end_portal / end_portal_frame)。 爆炸后额外对 expand(1,1,1) 范围内所有实体造成 18 点 DamageSource.causeFireballDamage 伤害,未免疫火则点燃 5 秒(:113-122)。

巨型爆炸:setToBlasting() 把 megaBlast 置 true(:66-70), 由 HydraHeadContainer.java:794 调用。

反射:attackEntityFrom 收到带攻击者的伤害时,按攻击者视线 (yCoord + 1)重设朝向(1.5F 速度、0.1F 惯性)、onGround = false、 fuse += 20(:131-153),并把反射者记入 playerReflects, getThrower() 优先返回反射者(:158-165)。

始终燃烧:isBurning() 恒返回 true(:170-173),所以被反射的迫击炮在飞行中也会烧。

粒子:makeTrail 产生 flame 粒子(:37-49);本类无 makeTrail 调用点以外的特效。

刷怪蛋:走 EntityRegistry.registerModEntity 直调,不进入 TFCreatures.entityEggs,无刷怪蛋。

相关条目