forked from VoxeLibre/VoxeLibre
Fix light_damage damaging mobs in rain/snow
This commit is contained in:
parent
eefd065726
commit
b73e05d64a
|
@ -93,6 +93,9 @@ local node_snowblock = "mcl_core:snowblock"
|
||||||
local node_snow = "mcl_core:snow"
|
local node_snow = "mcl_core:snow"
|
||||||
mobs.fallback_node = minetest.registered_aliases["mapgen_dirt"] or "mcl_core:dirt"
|
mobs.fallback_node = minetest.registered_aliases["mapgen_dirt"] or "mcl_core:dirt"
|
||||||
|
|
||||||
|
local mod_weather = minetest.get_modpath("mcl_weather") ~= nil
|
||||||
|
local mod_tnt = minetest.get_modpath("mcl_tnt") ~= nil
|
||||||
|
local mod_mobspawners = minetest.get_modpath("mcl_mobspawners") ~= nil
|
||||||
|
|
||||||
-- play sound
|
-- play sound
|
||||||
local mob_sound = function(self, sound)
|
local mob_sound = function(self, sound)
|
||||||
|
@ -616,16 +619,17 @@ local do_env_damage = function(self)
|
||||||
|
|
||||||
-- bright light harms mob
|
-- bright light harms mob
|
||||||
if self.light_damage ~= 0
|
if self.light_damage ~= 0
|
||||||
-- and pos.y > 0
|
|
||||||
-- and self.time_of_day > 0.2
|
|
||||||
-- and self.time_of_day < 0.8
|
|
||||||
and (minetest.get_node_light(pos) or 0) > 12 then
|
and (minetest.get_node_light(pos) or 0) > 12 then
|
||||||
|
|
||||||
self.health = self.health - self.light_damage
|
if not (mod_weather and (mcl_weather.rain.raining or mcl_weather.state == "snow") and mcl_weather.is_outdoor(pos)) then
|
||||||
|
|
||||||
effect(pos, 5, "tnt_smoke.png")
|
self.health = self.health - self.light_damage
|
||||||
|
|
||||||
if check_for_death(self, "light", {type = "light"}) then return end
|
effect(pos, 5, "tnt_smoke.png")
|
||||||
|
|
||||||
|
if check_for_death(self, "light", {type = "light"}) then return end
|
||||||
|
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local y_level = self.collisionbox[2]
|
local y_level = self.collisionbox[2]
|
||||||
|
@ -647,7 +651,7 @@ local do_env_damage = function(self)
|
||||||
local nodef = minetest.registered_nodes[self.standing_in]
|
local nodef = minetest.registered_nodes[self.standing_in]
|
||||||
|
|
||||||
-- rain
|
-- rain
|
||||||
if self.rain_damage and minetest.get_modpath("mcl_weather") then
|
if self.rain_damage and mod_weather then
|
||||||
if mcl_weather.rain.raining and mcl_weather.is_outdoor(pos) then
|
if mcl_weather.rain.raining and mcl_weather.is_outdoor(pos) then
|
||||||
|
|
||||||
self.health = self.health - self.rain_damage
|
self.health = self.health - self.rain_damage
|
||||||
|
@ -1983,7 +1987,7 @@ local do_states = function(self, dtime)
|
||||||
|
|
||||||
self.object:remove()
|
self.object:remove()
|
||||||
|
|
||||||
if minetest.get_modpath("mcl_tnt") and tnt and tnt.boom
|
if mod_tnt and tnt and tnt.boom
|
||||||
and not minetest.is_protected(pos, "") then
|
and not minetest.is_protected(pos, "") then
|
||||||
|
|
||||||
tnt.boom(pos, {
|
tnt.boom(pos, {
|
||||||
|
@ -3467,7 +3471,7 @@ end
|
||||||
function mobs:boom(self, pos, radius)
|
function mobs:boom(self, pos, radius)
|
||||||
|
|
||||||
if mobs_griefing
|
if mobs_griefing
|
||||||
and minetest.get_modpath("mcl_tnt") and tnt and tnt.boom
|
and mod_tnt and tnt and tnt.boom
|
||||||
and not minetest.is_protected(pos, "") then
|
and not minetest.is_protected(pos, "") then
|
||||||
|
|
||||||
tnt.boom(pos, {
|
tnt.boom(pos, {
|
||||||
|
@ -3583,7 +3587,7 @@ function mobs:register_egg(mob, desc, background, addegg, no_creative)
|
||||||
minetest.chat_send_player(name, "You need the “maphack” privilege to change the mob spawner.")
|
minetest.chat_send_player(name, "You need the “maphack” privilege to change the mob spawner.")
|
||||||
return itemstack
|
return itemstack
|
||||||
end
|
end
|
||||||
if minetest.get_modpath("mcl_mobspawners") and under.name == "mcl_mobspawners:spawner" then
|
if mod_mobspawners and under.name == "mcl_mobspawners:spawner" then
|
||||||
mcl_mobspawners.setup_spawner(pointed_thing.under, itemstack:get_name())
|
mcl_mobspawners.setup_spawner(pointed_thing.under, itemstack:get_name())
|
||||||
if not minetest.settings:get_bool("creative_mode") then
|
if not minetest.settings:get_bool("creative_mode") then
|
||||||
itemstack:take_item()
|
itemstack:take_item()
|
||||||
|
@ -3858,9 +3862,11 @@ function mobs:feed_tame(self, clicker, feed_count, breed, tame)
|
||||||
if tame then
|
if tame then
|
||||||
|
|
||||||
if self.tamed == false then
|
if self.tamed == false then
|
||||||
|
--[[ DISABLED IN MCL2
|
||||||
minetest.chat_send_player(clicker:get_player_name(),
|
minetest.chat_send_player(clicker:get_player_name(),
|
||||||
S("@1 has been tamed!",
|
S("@1 has been tamed!",
|
||||||
self.name:split(":")[2]))
|
self.name:split(":")[2]))
|
||||||
|
]]
|
||||||
end
|
end
|
||||||
|
|
||||||
self.tamed = true
|
self.tamed = true
|
||||||
|
|
Loading…
Reference in New Issue