Mobs: Separate fire damage from lava damage

This commit is contained in:
Wuzzy 2019-10-02 18:43:48 +02:00
parent b71c9204ec
commit f9e46b914d
11 changed files with 28 additions and 13 deletions

View file

@ -712,7 +712,7 @@ local do_env_damage = function(self)
pos.y = pos.y + 1 -- for particle effect position pos.y = pos.y + 1 -- for particle effect position
-- water -- water damage
if self.water_damage if self.water_damage
and nodef.groups.water then and nodef.groups.water then
@ -720,14 +720,13 @@ local do_env_damage = function(self)
self.health = self.health - self.water_damage self.health = self.health - self.water_damage
-- TODO: Damage particle effect(pos, 5, "tnt_smoke.png", nil, nil, 1, nil)
effect(pos, 5, "bubble.png", nil, nil, 1, nil)
if check_for_death(self, "water", {type = "environment", if check_for_death(self, "water", {type = "environment",
pos = pos, node = self.standing_in}) then return end pos = pos, node = self.standing_in}) then return end
end end
-- lava -- lava damage
elseif self.lava_damage elseif self.lava_damage
and (nodef.groups.lava) then and (nodef.groups.lava) then
@ -735,19 +734,31 @@ local do_env_damage = function(self)
self.health = self.health - self.lava_damage self.health = self.health - self.lava_damage
-- TODO: Damage particle
effect(pos, 5, "fire_basic_flame.png", nil, nil, 1, nil) effect(pos, 5, "fire_basic_flame.png", nil, nil, 1, nil)
if check_for_death(self, "lava", {type = "environment", if check_for_death(self, "lava", {type = "environment",
pos = pos, node = self.standing_in}) then return end pos = pos, node = self.standing_in}) then return end
end end
-- fire damage
elseif self.fire_damage
and (nodef.groups.fire) then
if self.fire_damage ~= 0 then
self.health = self.health - self.fire_damage
effect(pos, 5, "fire_basic_flame.png", nil, nil, 1, nil)
if check_for_death(self, "fire", {type = "environment",
pos = pos, node = self.standing_in}) then return end
end
-- damage_per_second node check -- damage_per_second node check
elseif nodef.damage_per_second ~= 0 then elseif nodef.damage_per_second ~= 0 then
self.health = self.health - nodef.damage_per_second self.health = self.health - nodef.damage_per_second
-- TODO: Damage particle
effect(pos, 5, "tnt_smoke.png") effect(pos, 5, "tnt_smoke.png")
if check_for_death(self, "dps", {type = "environment", if check_for_death(self, "dps", {type = "environment",
@ -3132,6 +3143,7 @@ minetest.register_entity(name, {
sunlight_damage = def.sunlight_damage or 0, sunlight_damage = def.sunlight_damage or 0,
water_damage = def.water_damage or 0, water_damage = def.water_damage or 0,
lava_damage = def.lava_damage or 8, lava_damage = def.lava_damage or 8,
fire_damage = def.fire_damage or 1,
suffocation = def.suffocation or true, suffocation = def.suffocation or true,
fall_damage = def.fall_damage or 1, fall_damage = def.fall_damage or 1,
fall_speed = def.fall_speed or -10, -- must be lower than -2 (default: -10) fall_speed = def.fall_speed or -10, -- must be lower than -2 (default: -10)

View file

@ -61,9 +61,11 @@ functions needed for the mob to work properly which contains the following:
'fall_speed' has the maximum speed the mob can fall at, default is -10. 'fall_speed' has the maximum speed the mob can fall at, default is -10.
'fall_damage' when true causes falling to inflict damage. 'fall_damage' when true causes falling to inflict damage.
'water_damage' holds the damage per second infliced to mobs when standing in 'water_damage' holds the damage per second infliced to mobs when standing in
water. water (default: 0).
'lava_damage' holds the damage per second inflicted to mobs when standing 'lava_damage' holds the damage per second inflicted to mobs when standing
in lava (default: 8). in lava (default: 8).
'fire_damage' holds the damage per second inflicted to mobs when standing
in fire (default: 1).
'light_damage' holds the damage per second inflicted to mobs when it's too 'light_damage' holds the damage per second inflicted to mobs when it's too
bright (above 13 light). bright (above 13 light).
'suffocation' when true causes mobs to suffocate inside solid blocks (2 damage per second). 'suffocation' when true causes mobs to suffocate inside solid blocks (2 damage per second).

View file

@ -53,6 +53,7 @@ mobs:register_mob("mobs_mc:blaze", {
-- MC Wiki: takes 1 damage every half second while in water -- MC Wiki: takes 1 damage every half second while in water
water_damage = 2, water_damage = 2,
lava_damage = 0, lava_damage = 0,
fire_damage = 0,
fall_damage = 0, fall_damage = 0,
fall_speed = -2.25, fall_speed = -2.25,
light_damage = 0, light_damage = 0,

View file

@ -114,8 +114,6 @@ mobs:register_mob("mobs_mc:creeper", {
}, },
floats = 1, floats = 1,
fear_height = 4, fear_height = 4,
lava_damage = 4,
light_damage = 0,
view_range = 16, view_range = 16,
blood_amount = 0, blood_amount = 0,
}) })

View file

@ -48,6 +48,7 @@ mobs:register_mob("mobs_mc:enderdragon", {
max = 1}, max = 1},
}, },
lava_damage = 0, lava_damage = 0,
fire_damage = 0,
on_rightclick = nil, on_rightclick = nil,
attack_type = "dogshoot", attack_type = "dogshoot",
arrow = "mobs_mc:fireball2", arrow = "mobs_mc:fireball2",

View file

@ -75,6 +75,7 @@ mobs:register_mob("mobs_mc:witherskeleton", {
}, },
water_damage = 0, water_damage = 0,
lava_damage = 0, lava_damage = 0,
fire_damage = 0,
light_damage = 0, light_damage = 0,
view_range = 16, view_range = 16,
attack_type = "dogfight", attack_type = "dogfight",

View file

@ -201,6 +201,7 @@ local magma_cube_big = {
}, },
water_damage = 0, water_damage = 0,
lava_damage = 0, lava_damage = 0,
fire_damage = 0,
light_damage = 0, light_damage = 0,
fall_damage = 0, fall_damage = 0,
view_range = 16, view_range = 16,

View file

@ -28,7 +28,7 @@ mobs:register_mob("mobs_mc:snowman", {
view_range = 10, view_range = 10,
fall_damage = 0, fall_damage = 0,
water_damage = 4, water_damage = 4,
lava_damage = 20, rain_damage = 4,
attacks_monsters = true, attacks_monsters = true,
collisionbox = {-0.35, -0.01, -0.35, 0.35, 1.89, 0.35}, collisionbox = {-0.35, -0.01, -0.35, 0.35, 1.89, 0.35},
visual = "mesh", visual = "mesh",
@ -119,8 +119,6 @@ mobs:register_mob("mobs_mc:snowman", {
end end
end end
end, end,
rain_damage = 4,
}) })
-- This is to be called when a pumpkin or jack'o lantern has been placed. Recommended: In the on_construct function -- This is to be called when a pumpkin or jack'o lantern has been placed. Recommended: In the on_construct function

View file

@ -49,6 +49,7 @@ mobs:register_mob("mobs_mc:wither", {
max = 1}, max = 1},
}, },
lava_damage = 0, lava_damage = 0,
fire_damage = 0,
attack_type = "dogshoot", attack_type = "dogshoot",
explosion_radius = 3, explosion_radius = 3,
explosion_fire = false, explosion_fire = false,

View file

@ -75,7 +75,6 @@ local zombie = {
walk_start = 0, walk_end = 40, walk_start = 0, walk_end = 40,
run_start = 0, run_end = 40, run_start = 0, run_end = 40,
}, },
lava_damage = 4,
sunlight_damage = 2, sunlight_damage = 2,
view_range = 16, view_range = 16,
attack_type = "dogfight", attack_type = "dogfight",

View file

@ -75,6 +75,7 @@ local pigman = {
punch_end = 130, punch_end = 130,
}, },
lava_damage = 0, lava_damage = 0,
fire_damage = 0,
fear_height = 4, fear_height = 4,
view_range = 16, view_range = 16,
} }