forked from MineClone5/MineClone5
If mob is in daylight and ignites_in_daylight = true, make mob burn
This commit is contained in:
parent
49b01dca4f
commit
7e8e63b0e3
|
@ -355,6 +355,10 @@ function mobs:register_mob(name, def)
|
|||
backup_visual_size = def.visual_size,
|
||||
backup_collisionbox = collisionbox,
|
||||
backup_selectionbox = def.selectionbox or def.collisionbox,
|
||||
|
||||
|
||||
--fire timer
|
||||
burn_timer = 0,
|
||||
--end j4i stuff
|
||||
|
||||
-- MCL2 extensions
|
||||
|
|
|
@ -12,6 +12,7 @@ local minetest_yaw_to_dir = minetest.yaw_to_dir
|
|||
local minetest_get_item_group = minetest.get_item_group
|
||||
local minetest_get_node = minetest.get_node
|
||||
local minetest_line_of_sight = minetest.line_of_sight
|
||||
local minetest_get_node_light = minetest.get_node_light
|
||||
|
||||
local DOUBLE_PI = math.pi * 2
|
||||
local THIRTY_SECONDTH_PI = DOUBLE_PI * 0.03125
|
||||
|
@ -828,10 +829,31 @@ mobs.mob_step = function(self, dtime)
|
|||
end
|
||||
end
|
||||
|
||||
--set mobs on fire when burned by sunlight
|
||||
if self.ignited_by_sunlight then
|
||||
local pos = self.object:get_pos()
|
||||
pos.y = pos.y + 0.1
|
||||
|
||||
if self.burn_timer > 0 then
|
||||
self.burn_timer = self.burn_timer - dtime
|
||||
|
||||
if self.burn_timer <= 0 then
|
||||
self.health = self.health - 4
|
||||
self.burn_timer = 0
|
||||
end
|
||||
end
|
||||
|
||||
if self.burn_timer == 0 and minetest_get_node_light(pos) > 12 and minetest_get_node_light(pos, 0.5) == 15 then
|
||||
mcl_burning.set_on_fire(self.object, 1)
|
||||
self.burn_timer = 1 --1.7 seconds
|
||||
self.pause_timer = 0.4
|
||||
end
|
||||
end
|
||||
|
||||
--color modifier which coincides with the pause_timer
|
||||
if self.old_health and self.health < self.old_health then
|
||||
self.object:set_texture_mod("^[colorize:red:120")
|
||||
end
|
||||
end
|
||||
self.old_health = self.health
|
||||
|
||||
--do death logic (animation, poof, explosion, etc)
|
||||
|
|
|
@ -124,14 +124,14 @@ mobs.punch_attack_walk = function(self,dtime)
|
|||
|
||||
if distance_from_attacking >= self.minimum_follow_distance then
|
||||
mobs.set_velocity(self, self.run_velocity)
|
||||
mobs.set_mob_animation(self, "run")
|
||||
else
|
||||
mobs.set_velocity(self, 0)
|
||||
mobs.set_mob_animation(self, "stand")
|
||||
end
|
||||
|
||||
mobs.set_yaw_while_attacking(self)
|
||||
|
||||
mobs.set_mob_animation(self, "run")
|
||||
|
||||
--make punchy mobs jump
|
||||
--check for nodes to jump over
|
||||
--explosive mobs will just ride against walls for now
|
||||
|
|
Loading…
Reference in New Issue