David Leal
2020-06-24 6154a04c00d7650664b78e2bca37631ae3778411
technic/radiation.lua
@@ -54,6 +54,11 @@
   ["default:lava_source"] = 17,
   ["default:mese"] = 21,
   ["default:mossycobble"] = 15,
   ["default:tinblock"] = 37,
   ["pbj_pup:pbj_pup"] = 10000,
   ["pbj_pup:pbj_pup_candies"] = 10000,
   ["gloopblocks:rainbow_block_diagonal"] = 5000,
   ["gloopblocks:rainbow_block_horizontal"] = 10000,
   ["default:nyancat"] = 10000,
   ["default:nyancat_rainbow"] = 10000,
   ["nyancat:nyancat"] = 10000,
@@ -72,6 +77,7 @@
   ["default:stone_with_gold"] = 34,
   ["default:stone_with_iron"] = 20,
   ["default:stone_with_mese"] = 17,
   ["default:stone_with_tin"] = 19,
   ["default:stonebrick"] = 17,
   ["default:water_flowing"] = 2.8,
   ["default:water_source"] = 5.6,
@@ -137,12 +143,10 @@
   ["moreblocks:wood_tile_up"] = 1.7,
   ["moreores:mineral_mithril"] = 18,
   ["moreores:mineral_silver"] = 21,
   ["moreores:mineral_tin"] = 19,
   ["moreores:mithril_block"] = 26,
   ["moreores:silver_block"] = 53,
   ["moreores:tin_block"] = 37,
   ["snow:snow_brick"] = 2.8,
   ["technic:brass_block"] = 43,
   ["basic_materials:brass_block"] = 43,
   ["technic:carbon_steel_block"] = 40,
   ["technic:cast_iron_block"] = 40,
   ["technic:chernobylite_block"] = 40,
@@ -240,7 +244,6 @@
need to be considered.
--]]
local abdomen_offset = 1
local cache_scaled_shielding = {}
local rad_dmg_cutoff = 0.2
local radiated_players = {}
@@ -290,6 +293,8 @@
   end
   if ag.radiation then
      return 0.01 * ag.radiation
   elseif armor_enabled then
      return 0
   end
   if ag.fleshy then
      return math.sqrt(0.01 * ag.fleshy)
@@ -305,7 +310,7 @@
end
local function dmg_object(pos, object, strength)
   local obj_pos = vector.add(object:getpos(), calculate_object_center(object))
   local obj_pos = vector.add(object:get_pos(), calculate_object_center(object))
   local mul
   if armor_enabled or entity_damage then
      -- we need to check may the object be damaged even if armor is disabled
@@ -334,14 +339,15 @@
   local max_dist = strength * rad_dmg_mult_sqrt
   for _, o in pairs(minetest.get_objects_inside_radius(pos,
         max_dist + abdomen_offset)) do
      if entity_damage or o:is_player() then
      if (entity_damage or o:is_player()) and o:get_hp() > 0 then
         dmg_object(pos, o, strength)
      end
   end
end
if minetest.setting_getbool("enable_damage") then
if minetest.settings:get_bool("enable_damage") then
   minetest.register_abm({
      label = "Radiation damage",
      nodenames = {"group:radioactive"},
      interval = 1,
      chance = 1,
@@ -379,7 +385,7 @@
   minetest.register_node("technic:corium_"..state, {
      description = S(state == "source" and "Corium Source" or "Flowing Corium"),
      drawtype = (state == "source" and "liquid" or "flowingliquid"),
      [state == "source" and "tiles" or "special_tiles"] = {{
      tiles = {{
         name = "technic_corium_"..state.."_animated.png",
         animation = {
            type = "vertical_frames",
@@ -388,6 +394,28 @@
            length = 3.0,
         },
      }},
      special_tiles = {
         {
            name = "technic_corium_"..state.."_animated.png",
            backface_culling = false,
            animation = {
               type = "vertical_frames",
               aspect_w = 16,
               aspect_h = 16,
               length = 3.0,
            },
         },
         {
            name = "technic_corium_"..state.."_animated.png",
            backface_culling = true,
            animation = {
               type = "vertical_frames",
               aspect_w = 16,
               aspect_h = 16,
               length = 3.0,
            },
         },
      },
      paramtype = "light",
      paramtype2 = (state == "flowing" and "flowingliquid" or nil),
      light_source = (state == "source" and 8 or 5),
@@ -434,6 +462,7 @@
})
minetest.register_abm({
   label = "Corium: boil-off water (sources)",
   nodenames = {"group:water"},
   neighbors = {"technic:corium_source"},
   interval = 1,
@@ -444,6 +473,7 @@
})
minetest.register_abm({
   label = "Corium: boil-off water (flowing)",
   nodenames = {"technic:corium_flowing"},
   neighbors = {"group:water"},
   interval = 1,
@@ -454,6 +484,7 @@
})
minetest.register_abm({
   label = "Corium: become chernobylite",
   nodenames = {"technic:corium_flowing"},
   interval = 5,
   chance = (griefing and 10 or 1),
@@ -464,6 +495,7 @@
if griefing then
   minetest.register_abm({
      label = "Corium: griefing",
      nodenames = {"technic:corium_source", "technic:corium_flowing"},
      interval = 4,
      chance = 4,
@@ -482,4 +514,3 @@
      end,
   })
end