From c1bddb9ef7fe1da1538b7911875a56f0de3db3c3 Mon Sep 17 00:00:00 2001 From: FaceDeer Date: Sat, 13 Aug 2022 22:20:48 -0600 Subject: [PATCH] fixing up explosions. Also make slade sand diggable in mcl, and fix a bug in web generators --- big_webs/init.lua | 2 +- bones_loot/init.lua | 26 ++++++++++++++---------- df_ambience/soundsets.lua | 2 +- df_underworld_items/ancient_lanterns.lua | 2 +- df_underworld_items/puzzle_seal.lua | 4 ++-- df_underworld_items/slade.lua | 15 +++++++------- hunter_statue/init.lua | 2 +- 7 files changed, 29 insertions(+), 24 deletions(-) diff --git a/big_webs/init.lua b/big_webs/init.lua index ee997c4..a540f6a 100644 --- a/big_webs/init.lua +++ b/big_webs/init.lua @@ -24,7 +24,7 @@ local anchor_groups = {"group:soil", "group:stone", "group:tree", "group:wood", local in_anchor_group = function(name) for _, group in pairs(anchor_groups) do - if minetest.get_item_group(name, group:strsub(7)) then + if minetest.get_item_group(name, string.sub(group, 7)) then return true end end diff --git a/bones_loot/init.lua b/bones_loot/init.lua index 9d8842d..2989626 100644 --- a/bones_loot/init.lua +++ b/bones_loot/init.lua @@ -21,6 +21,13 @@ end if minetest.get_modpath("bones") then df_dependencies.node_name_bones = "bones:bones" else + + local function drop_item_stack(pos, stack) + if not stack or stack:is_empty() then return end + local drop_offset = vector.new(math.random() - 0.5, 0, math.random() - 0.5) + minetest.add_item(vector.add(pos, drop_offset), stack) + end + minetest.register_node("bones_loot:bones", { description = S("Bones"), tiles = { @@ -48,19 +55,16 @@ else inv:set_size("main", 8*4) end, - on_blast = function(pos) - local drops = {} - local n = 0 + on_blast = function(pos, intensity) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() for i = 1, inv:get_size("main") do - local stack = inv:get_stack("main", i) - if stack:get_count() > 0 then - drops[n+1] = stack:to_table() - n = n + 1 - end - end - drops[#drops+1] = "bones_loot:bones" + drop_item_stack(pos, inv:get_stack("main", i)) + end + meta:from_table() minetest.remove_node(pos) - return drops + if math.random(1, math.floor((intensity or 1) * 2)) ~= 1 then return end + drop_item_stack(pos, "bones_loot:bones") end }) diff --git a/df_ambience/soundsets.lua b/df_ambience/soundsets.lua index 134220b..086fd19 100644 --- a/df_ambience/soundsets.lua +++ b/df_ambience/soundsets.lua @@ -138,7 +138,7 @@ df_ambience.add_set({ frequency = 0.025, nodes = {"df_underworld_items:slade"}, sounds = { - {name = "dfcaverns_whispers", gain = 0.25}, + {name = "dfcaverns_whispers", gain = 0.15}, }, sound_check = function(def) return def.biome == "underworld" diff --git a/df_underworld_items/ancient_lanterns.lua b/df_underworld_items/ancient_lanterns.lua index ec341af..2b9ac0e 100644 --- a/df_underworld_items/ancient_lanterns.lua +++ b/df_underworld_items/ancient_lanterns.lua @@ -32,7 +32,7 @@ end local slade_mcl_blast_resistance = 1200 local slade_mcl_hardness = 50 -local slade_groups = {stone=1, level=3, slade=1, pit_plasma_resistant=1, mese_radiation_shield=1, cracky = 3, creative_breakable=1, building_block=1, material_stone=1} +local slade_groups = {stone=1, slade=1, pit_plasma_resistant=1, mese_radiation_shield=1, cracky = 3, creative_breakable=1, building_block=1, material_stone=1} if invulnerable then slade_groups.immortal = 1 slade_mcl_blast_resistance = 3600000 diff --git a/df_underworld_items/puzzle_seal.lua b/df_underworld_items/puzzle_seal.lua index 1fa2646..160ad96 100644 --- a/df_underworld_items/puzzle_seal.lua +++ b/df_underworld_items/puzzle_seal.lua @@ -13,7 +13,7 @@ end local slade_mcl_blast_resistance = 1200 local slade_mcl_hardness = 50 -local slade_groups = {stone=1, level=3, slade=1, pit_plasma_resistant=1, mese_radiation_shield=1, cracky = 3, not_in_creative_inventory=1,creative_breakable=1, building_block=1, material_stone=1} +local slade_groups = {stone=1, slade=1, pit_plasma_resistant=1, mese_radiation_shield=1, cracky = 3, not_in_creative_inventory=1,creative_breakable=1, building_block=1, material_stone=1} if invulnerable then slade_groups.immortal = 1 slade_mcl_blast_resistance = 3600000 @@ -296,7 +296,7 @@ local digging_seal_def = { paramtype = "light", paramtype2 = "facedir", light_source = minetest.LIGHT_MAX, - groups = {immortal=1, stone=1, level=3, slade=1, pit_plasma_resistant=1, mese_radiation_shield=1, not_in_creative_inventory=1,building_block=1, material_stone=1}, + groups = {immortal=1, stone=1, slade=1, pit_plasma_resistant=1, mese_radiation_shield=1, not_in_creative_inventory=1,building_block=1, material_stone=1}, sounds = df_dependencies.sound_stone({ footstep = { name = "bedrock2_step", gain = 1 } }), selection_box = { type = "fixed", diff --git a/df_underworld_items/slade.lua b/df_underworld_items/slade.lua index af2c18f..7c419c0 100644 --- a/df_underworld_items/slade.lua +++ b/df_underworld_items/slade.lua @@ -17,7 +17,7 @@ local add_immortality = function(slade_def) return slade_def end -local slade_groups = {cracky=3, stone=1, level=3, slade=1, pit_plasma_resistant=1, mese_radiation_shield=1,creative_breakable=1, building_block=1, material_stone=1} +local slade_groups = {cracky=3, stone=1, slade=1, pit_plasma_resistant=1, mese_radiation_shield=1,creative_breakable=1, building_block=1, material_stone=1} local slade_def = { description = S("Slade"), @@ -27,10 +27,10 @@ local slade_def = { groups = slade_groups, sounds = df_dependencies.sound_stone({ footstep = { name = "bedrock2_step", gain = 1 } }), is_ground_content = false, - _mcl_blast_resistance = 1200, - _mcl_hardness = 50, + _mcl_blast_resistance = 8, + _mcl_hardness = 5, on_blast = function(pos, intensity) - if intensity > 3.0 then + if intensity >= 1.0 then minetest.set_node(pos, {name="df_underworld_items:slade_sand"}) minetest.check_for_falling(pos) end @@ -38,6 +38,8 @@ local slade_def = { } if invulnerable then add_immortality(slade_def) + slade_def._mcl_blast_resistance = 8 + slade_def._mcl_hardness = 5 end minetest.register_node("df_underworld_items:slade", slade_def) @@ -88,16 +90,15 @@ if invulnerable then end minetest.register_node("df_underworld_items:slade_wall", slade_wall_def) --- TODO: ensure that explosives turn slade into slade sand in MCL too minetest.register_node("df_underworld_items:slade_sand", { description = S("Slade Sand"), _doc_items_longdesc = df_underworld_items.doc.slade_desc, _doc_items_usagehelp = df_underworld_items.doc.slade_usage, tiles = {"dfcaverns_slade_sand.png"}, is_ground_content = false, - groups = {crumbly = 3, level = 2, falling_node = 1, slade=1, pit_plasma_resistant=1, mese_radiation_shield=1,building_block=1, material_sand=1, crush_after_fall=1, falling_node_damage=1}, + groups = {crumbly = 3, falling_node = 1, slade=1, pit_plasma_resistant=1, mese_radiation_shield=1,handy=1,shovely=3, sand=1, enderman_takable=1, building_block=1, material_sand=1, crush_after_fall=1, falling_node_damage=1}, sounds = df_dependencies.sound_gravel({footstep = {name = df_dependencies.soundfile_gravel_footstep, gain = 0.45},}), - _mcl_blast_resistance = 2000, + _mcl_blast_resistance = 8, _mcl_hardness = 5, }) diff --git a/hunter_statue/init.lua b/hunter_statue/init.lua index bb5573c..555ab97 100644 --- a/hunter_statue/init.lua +++ b/hunter_statue/init.lua @@ -60,7 +60,7 @@ hunter_statue.register_hunter_statue = function(node_name, statue_def) if statue_def.tnt_vulnerable then def.on_blast = function(pos, intensity) - if intensity > 3.0 then + if intensity >= 1.0 then minetest.set_node(pos, {name= statue_def.tnt_debris or "air"}) minetest.check_for_falling(pos) end