mirror of
https://git.minetest.land/VoxeLibre/VoxeLibre.git
synced 2024-12-24 08:59:32 +01:00
Mobs: Separate fire damage from lava damage
This commit is contained in:
parent
b71c9204ec
commit
f9e46b914d
11 changed files with 28 additions and 13 deletions
|
@ -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)
|
||||||
|
|
|
@ -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).
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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,
|
||||||
})
|
})
|
||||||
|
|
|
@ -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",
|
||||||
|
|
|
@ -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",
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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",
|
||||||
|
|
|
@ -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,
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue