Fix light_damage damaging mobs in rain/snow

This commit is contained in:
Wuzzy 2018-05-31 02:47:37 +02:00
parent eefd065726
commit b73e05d64a

View file

@ -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
if not (mod_weather and (mcl_weather.rain.raining or mcl_weather.state == "snow") and mcl_weather.is_outdoor(pos)) then
self.health = self.health - self.light_damage self.health = self.health - self.light_damage
effect(pos, 5, "tnt_smoke.png") effect(pos, 5, "tnt_smoke.png")
if check_for_death(self, "light", {type = "light"}) then return end 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