Partial creeper explode distance fix, and fix to stop punching mobs into the air.
parent
d7cfe54eb4
commit
0ec64189dc
|
@ -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,
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -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,
|
||||||
|
|
Loading…
Reference in New Issue