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,无刷怪蛋。
相关条目
- Hydra(九头蛇) - 发射本投射物的塔主
- HydraHead(九头蛇头颅) - 实际执行投掷动作的部件实体
- Lich Bomb(巫妖炸弹) - 结构相近的另一种可反射爆炸投射物