| | |
| | | ["moreores:mithril_block"] = 26, |
| | | ["moreores:silver_block"] = 53, |
| | | ["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, |
| | |
| | | need to be considered. |
| | | --]] |
| | | local abdomen_offset = 1 |
| | | local cache_scaled_shielding = {} |
| | | local rad_dmg_cutoff = 0.2 |
| | | local radiated_players = {} |
| | | |
| | |
| | | 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) |
| | |
| | | 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 |
| | |
| | | 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, |
| | | }) |
| | | end |
| | | |