Partial creeper explode distance fix, and fix to stop punching mobs into the air.

This commit is contained in:
MysticTempest 2021-02-11 17:27:55 -06:00
parent d7cfe54eb4
commit 0ec64189dc
3 changed files with 9 additions and 4 deletions

View file

@ -2501,7 +2501,7 @@ local do_states = function(self, dtime)
-- stop timer if out of reach or direct line of sight -- stop timer if out of reach or direct line of sight
elseif self.allow_fuse_reset elseif self.allow_fuse_reset
and self.v_start and self.v_start
and (dist > self.reach and (dist >= self.explosiontimer_reset_radius
or not line_of_sight(self, s, p, 2)) then or not line_of_sight(self, s, p, 2)) then
self.v_start = false self.v_start = false
self.timer = 0 self.timer = 0
@ -2511,7 +2511,7 @@ local do_states = function(self, dtime)
end end
-- walk right up to player unless the timer is active -- walk right up to player unless the timer is active
if self.v_start and (self.stop_to_explode or dist < 1.5) then if self.v_start and (self.stop_to_explode or dist < self.reach) then
set_velocity(self, 0) set_velocity(self, 0)
else else
set_velocity(self, self.run_velocity) set_velocity(self, self.run_velocity)
@ -3068,7 +3068,7 @@ local mob_punch = function(self, hitter, tflp, tool_capabilities, dir)
local up = 2 local up = 2
-- if already in air then dont go up anymore when hit -- if already in air then dont go up anymore when hit
if v.y > 0 if v.y ~= 0
or self.fly then or self.fly then
up = 0 up = 0
end end
@ -3789,6 +3789,7 @@ minetest.register_entity(name, {
immune_to = def.immune_to or {}, immune_to = def.immune_to or {},
explosion_radius = def.explosion_radius, -- LEGACY explosion_radius = def.explosion_radius, -- LEGACY
explosion_damage_radius = def.explosion_damage_radius, -- LEGACY explosion_damage_radius = def.explosion_damage_radius, -- LEGACY
explosiontimer_reset_radius = def.explosiontimer_reset_radius,
explosion_timer = def.explosion_timer or 3, explosion_timer = def.explosion_timer or 3,
allow_fuse_reset = def.allow_fuse_reset ~= false, allow_fuse_reset = def.allow_fuse_reset ~= false,
stop_to_explode = def.stop_to_explode ~= false, stop_to_explode = def.stop_to_explode ~= false,

View file

@ -108,6 +108,7 @@ functions needed for the mob to work properly which contains the following:
'explosion_timer' number of seconds before mob explodes while its target 'explosion_timer' number of seconds before mob explodes while its target
is still inside reach or explosion_damage_radius, is still inside reach or explosion_damage_radius,
defaults to 3. defaults to 3.
'explosiontimer_reset_radius' The distance you must travel before the timer will be reset.
'allow_fuse_reset' Allow 'explode' attack_type to reset fuse and resume 'allow_fuse_reset' Allow 'explode' attack_type to reset fuse and resume
chasing if target leaves the blast radius or line of chasing if target leaves the blast radius or line of
sight. Defaults to true. sight. Defaults to true.

View file

@ -39,7 +39,10 @@ mobs:register_mob("mobs_mc:creeper", {
attack_type = "explode", attack_type = "explode",
explosion_strength = 3, explosion_strength = 3,
reach = 4, explosion_radius = 3.5,
explosion_damage_radius = 3.5,
explosiontimer_reset_radius = 6,
reach = 3,
explosion_timer = 1.5, explosion_timer = 1.5,
allow_fuse_reset = true, allow_fuse_reset = true,
stop_to_explode = true, stop_to_explode = true,