Mineclone compatibility (#36)

* latest versions of mapgen_helper and subterrane

* initial work

* call it "minetest_game" compatibility instead of "default" compatibility

* Getting started on moving all default dependencies to a single root mod

* distilling out more dependencies

* fix some typos

* more default dependencies

* beds

* start getting some MCL equivalents set up

* mine gas dependencies

* reorganize

* add some mapgen stuff

* getting close to actually being able to run mineclone with this

* it actually runs! Crashes with out-of-memory error when you try to go below -64, but it's a start.

* hide flowing pit plasma from creative inventory

* mineclone 5 settings

* Update subterrane

* get rid of meselamp dependency, bring in ancient lanterns from deep roads

* stair dependencies

* add mcl fences

* add mcl blast resistance and hardness to everything. Also an alternate name for Nethercap in MCL, since "nether" has another meaning there.

* buckets of oil and syrup should work in mineclone now

* 'splosions!

* make hunters avoid repaired ancient lanterns

* mapgen torchspine wasn't having its timer set

* split mapgen compatibility code into its own file

* bypass dependency indirection for df_farming.

* apply threshold alpha to food items, they look better that way

* bypass dependency indirection for df_mapitems

* bypass dependency indirection for df_primordial_items

* bypass dependency indirection for df_trees

* bypass dependency indirection for df_underworld_items

* bypass dependency indirection for df_caverns

* fixing up the puzzle seal to work in both

* fix puzzle seal formspec for mcl

* create built-in substitutes for fireflies and bones mods for when those aren't available

* set up mcl dungeon loot for underworld warriors, port over some translations from default

* overlooked a debug

* add itemslot backgrounds for mcl

* added mineclone groups to all registered nodes. TODO: craftitems.

This was extremely tedious. Completely untested, aside from simply running the game.

* minor fixes to the built-in bones node

* eatable group for edibles

* clean up some TODOs

* adjust pit plasma abm conditions

* add df_ambience

* fixing up explosions. Also make slade sand diggable in mcl, and fix a bug in web generators

* make tower cap caves less chirpy, fix bigger goblin hut schematic, allow glowing spindlestem extract bottles

* avoid an undeclared global check

* alas, cave pearls aren't set up right for attached_node_facedir.

* bunch of work on mineclone ores, moved main config into df_dependencies

* add a few more ores

* update depends in mod.conf

* add opaque group to light-sensitive dirt types

Mineclone adds the "opaque" group only to non-light nodes, and torches check for the opaque group to decide whether they can be placed there. light-sensitive nodes need the "light" paramtype to work, though. So adding the opaque group manually to these.

* add a touch of reverb to one of the whisper tracks, it didn't fit with the others without it

* bloodthorn also needs to be set opaque

* add sound to torchspines

* isolate Nethercap translation name to make it easier to swap out in Mineclone contexts

* ambience tweak

* fix dirt spreads

https://github.com/FaceDeer/dfcaverns/issues/35

* adding achievements! Almost all untested yet.

* fix a few achievements glitches

* tweak some more achievements, add delay when achievements unlock other achievements

* fix farming achievements, fix spindlestem callbacks on place

* icons for farming achievements

* more achievement icons, fix ancient lantern achievement

* two more icons, update text

* add icons for upper cavern layers

* all achievements have icons now. Also add another sound to the magma sea ambience

* hook into awards' trigger system to get "x/y" progress displayed for the multi-achievement achievements

* ironically, Mineclone has an old version of awards that is incompatible with my trigger work.

* every award should now have a description and a difficulty.

* removing leftovers

* missing callbacks for farmables

* put growth restrictions on farmables so the achievement doesn't trigger inappropriately.

* enable ores in MCL2, fix some undeclared globals, fix icecap growth in MCL (achievements are a good debugging tool)

* get *all* the copper and iron containing nodes

* fix old awards mod's handling of grouped dig items

* Add a little bonus for players who activate a slade breacher - a handheld 'splosion tool

* used the wrong drop method

* beef up explosions in MCL, make slade brick craftable from slade sand and lava

* better creative mode checks, fix crash when digging walls in MCL

* Update subterrane

* various bugfixes and tweaks

* whipping up a simple puzzle chest to give a clue about ancient numbering

The coding is done, but UI and a node mesh need to be done

* prepare for some art tomorrow

* chest node and sounds

* images for the combination dials

* add puzzle chests to the underworld buildings

* update translations

* oops, can't initialize the contents of puzzle chests every time or players get endless stuff

* add backgrounds to item slots in MCL

* wrap the existing function rather than copy and pasting it

* fix bucket dependency in cooking recipes

* add _mcl_saturation to edibles
This commit is contained in:
FaceDeer
2022-08-28 23:48:44 -06:00
committed by GitHub
parent b2ee829c1a
commit 0a0c97b74e
435 changed files with 6100 additions and 1367 deletions

View File

@ -1,4 +1,4 @@
local S = df_mapitems.S
local S = minetest.get_translator(minetest.get_current_modname())
minetest.register_node("df_mapitems:castle_coral", {
description = S("Castle Coral"),
@ -16,8 +16,10 @@ minetest.register_node("df_mapitems:castle_coral", {
mesh = "octagonal_coral.obj",
drop = "df_mapitems:castle_coral_skeleton",
paramtype = "light",
groups = {cracky=2,},
sounds = df_mapitems.sounds.stone,
groups = {cracky=2, pickaxey = 1, building_block = 1, coral=1, coral_block=1},
sounds = df_dependencies.sound_stone(),
_mcl_hardness = 1.5,
_mcl_blast_resistance = 6,
})
minetest.register_node("df_mapitems:castle_coral_skeleton", {
@ -25,21 +27,23 @@ minetest.register_node("df_mapitems:castle_coral_skeleton", {
_doc_items_longdesc = df_mapitems.doc.castle_coral_desc,
_doc_items_usagehelp = df_mapitems.doc.castle_coral_usage,
tiles = {
df_mapitems.texture.coral_skeleton
df_dependencies.texture_coral_skeleton
},
drawtype = "mesh",
mesh = "octagonal_coral.obj",
paramtype = "light",
is_ground_content = false,
groups = {cracky = 3},
sounds = df_mapitems.sounds.stone,
groups = {cracky = 3,pickaxey = 1, building_block = 1, coral=2, coral_block=1},
sounds = df_dependencies.sound_stone(),
_mcl_hardness = 1.5,
_mcl_blast_resistance = 6,
})
local c_coral = minetest.get_content_id("df_mapitems:castle_coral")
local c_coral_skeleton = minetest.get_content_id("df_mapitems:castle_coral_skeleton")
local c_stone = df_mapitems.node_id.stone
local c_water = df_mapitems.node_id.water
local c_stone = minetest.get_content_id(df_dependencies.node_name_stone)
local c_water = minetest.get_content_id(df_dependencies.node_name_water_source)
df_mapitems.spawn_castle_coral = function(area, data, vi, iterations)
local run = math.random(2,4)
@ -47,6 +51,7 @@ df_mapitems.spawn_castle_coral = function(area, data, vi, iterations)
local zstride = area.zstride
local ystride = area.ystride
while run > 0 do
-- TODO should this be checking for not-water instead of stone?
if math.random() > 0.95 or data[index] == c_stone or not area:containsi(index) then return end
data[index] = c_coral
if iterations > 2 then

View File

@ -1,7 +1,7 @@
local S = df_mapitems.S
local S = minetest.get_translator(minetest.get_current_modname())
local water_source = df_mapitems.node_name.water
local coral_skeleton = df_mapitems.node_name.coral_skeleton
local water_source = df_dependencies.node_name_water_source
local coral_skeleton = df_dependencies.node_name_coral_skeleton
minetest.register_node("df_mapitems:cave_coral_3", {
description = S("Cave Coral"),
@ -12,13 +12,15 @@ minetest.register_node("df_mapitems:cave_coral_3", {
light_source = 3,
paramtype2 = "facedir",
is_ground_content = false,
groups = {cracky = 3, dfcaverns_cave_coral = 1},
sounds = df_mapitems.sounds.stone,
groups = {cracky = 3, dfcaverns_cave_coral = 1, pickaxey = 1, building_block = 1, coral=1, coral_block=1},
sounds = df_dependencies.sound_stone(),
on_timer = function(pos)
if minetest.find_node_near(pos, 1, {water_source}) == nil then
minetest.set_node(pos, {name=coral_skeleton})
end
end,
_mcl_hardness = 1.5,
_mcl_blast_resistance = 6,
})
minetest.register_node("df_mapitems:cave_coral_2", {
@ -30,13 +32,15 @@ minetest.register_node("df_mapitems:cave_coral_2", {
light_source = 2,
paramtype2 = "facedir",
is_ground_content = false,
groups = {cracky = 3, dfcaverns_cave_coral = 1},
sounds = df_mapitems.sounds.stone,
groups = {cracky = 3, dfcaverns_cave_coral = 1, pickaxey = 1, building_block = 1, coral=1, coral_block=1},
sounds = df_dependencies.sound_stone(),
on_timer = function(pos)
if minetest.find_node_near(pos, 1, {water_source}) == nil then
minetest.set_node(pos, {name=coral_skeleton})
end
end,
_mcl_hardness = 1.5,
_mcl_blast_resistance = 6,
})
minetest.register_node("df_mapitems:cave_coral_1", {
@ -48,17 +52,19 @@ minetest.register_node("df_mapitems:cave_coral_1", {
light_source = 1,
paramtype2 = "facedir",
is_ground_content = false,
groups = {cracky = 3, dfcaverns_cave_coral = 1},
sounds = df_mapitems.sounds.stone,
groups = {cracky = 3, dfcaverns_cave_coral = 1, pickaxey = 1, building_block = 1, coral=1, coral_block=1},
sounds = df_dependencies.sound_stone(),
on_timer = function(pos)
if minetest.find_node_near(pos, 1, {water_source}) == nil then
minetest.set_node(pos, {name=coral_skeleton})
end
end,
_mcl_hardness = 1.5,
_mcl_blast_resistance = 6,
})
local coral_names = {"df_mapitems:cave_coral_1", "df_mapitems:cave_coral_2", "df_mapitems:cave_coral_3"}
local water_node = df_mapitems.node_name.water
local water_node = df_dependencies.node_name_water_source
minetest.register_abm{
label = "df_mapitems:shifting_coral",
nodenames = {"group:dfcaverns_cave_coral"},

View File

@ -1,4 +1,4 @@
local S = df_mapitems.S
local S = minetest.get_translator(minetest.get_current_modname())
minetest.register_node("df_mapitems:cave_pearls", {
description = S("Cave Pearls"),
@ -8,7 +8,7 @@ minetest.register_node("df_mapitems:cave_pearls", {
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = {cracky = 2},
groups = {cracky = 2, pickaxey = 2,},
walkable = false,
is_ground_content = false,
climbable = true,
@ -22,4 +22,6 @@ minetest.register_node("df_mapitems:cave_pearls", {
}
},
on_place = df_mapitems.place_against_surface,
_mcl_hardness = 1.5,
_mcl_blast_resistance = 6,
})

View File

@ -1,4 +1,4 @@
local S = df_mapitems.S
local S = minetest.get_translator(minetest.get_current_modname())
--glowing mese crystal blocks
minetest.register_node("df_mapitems:glow_mese", {
@ -6,14 +6,16 @@ minetest.register_node("df_mapitems:glow_mese", {
_doc_items_longdesc = df_mapitems.doc.glow_mese_desc,
_doc_items_usagehelp = df_mapitems.doc.glow_mese_usage,
tiles = {"dfcaverns_glow_mese.png"},
groups = {cracky=3},
sounds = df_mapitems.sounds.glass,
groups = {cracky=3, pickaxey=4, material_stone=1, enderman_takable=1},
sounds = df_dependencies.sound_glass(),
is_ground_content = false,
light_source = 13,
paramtype = "light",
use_texture_alpha = "blend",
drawtype = "glasslike",
sunlight_propagates = true,
_mcl_blast_resistance = 1.5,
_mcl_hardness = 1.5,
})
minetest.register_craft({
@ -28,21 +30,23 @@ minetest.register_node("df_mapitems:mese_crystal", {
_doc_items_longdesc = df_mapitems.doc.glow_mese_desc,
_doc_items_usagehelp = df_mapitems.doc.glow_mese_usage,
tiles = {"dfcaverns_glow_mese.png"},
groups = {cracky = 2},
groups = {cracky = 2, pickaxey=4, material_stone=1, building_block=1, enderman_takable=1},
paramtype = "light",
paramtype2 = "facedir",
drawtype = "mesh",
mesh = "underch_crystal.obj",
light_source = 12,
is_ground_content = false,
sounds = df_mapitems.sounds.glass,
sounds = df_dependencies.sound_glass(),
use_texture_alpha = "blend",
sunlight_propagates = true,
on_place = df_mapitems.place_against_surface,
_mcl_blast_resistance = 1.5,
_mcl_hardness = 1.5,
})
minetest.register_craft({
output = df_mapitems.node_name.mese_crystal .. ' 9',
output = df_dependencies.node_name_mese_crystal .. ' 18',
recipe = {
{'df_mapitems:mese_crystal'},
}

View File

@ -1,4 +1,4 @@
local S = df_mapitems.S
local S = minetest.get_translator(minetest.get_current_modname())
minetest.register_node("df_mapitems:glow_ruby_ore", {
description = S("Red Crystal Vein"),
@ -6,8 +6,10 @@ minetest.register_node("df_mapitems:glow_ruby_ore", {
_doc_items_usagehelp = df_mapitems.doc.glow_ruby_ore_usage,
tiles = {"dfcaverns_glow_ruby_ore.png"},
is_ground_content = false,
groups = {cracky=2},
sounds = df_mapitems.sounds.glass,
groups = {cracky=2, pickaxey=3, material_stone=1},
sounds = df_dependencies.sound_glass(),
_mcl_blast_resistance = 1.5,
_mcl_hardness = 1.5,
})
minetest.register_node("df_mapitems:big_crystal", {
@ -26,8 +28,8 @@ minetest.register_node("df_mapitems:big_crystal", {
is_ground_content = false,
sunlight_propagates = true,
light_source = 12,
groups = {cracky=2, dfcaverns_big_crystal = 1},
sounds = df_mapitems.sounds.glass,
groups = {cracky=2, dfcaverns_big_crystal = 1, pickaxey=5, material_stone=1, enderman_takable=1},
sounds = df_dependencies.sound_glass(),
selection_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, 3, 0.5},
@ -36,6 +38,8 @@ minetest.register_node("df_mapitems:big_crystal", {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, 3, 0.5},
},
_mcl_blast_resistance = 2,
_mcl_hardness = 2,
})
minetest.register_node("df_mapitems:med_crystal", {
@ -54,8 +58,8 @@ minetest.register_node("df_mapitems:med_crystal", {
is_ground_content = false,
sunlight_propagates = true,
light_source = 12,
groups = {cracky=2, dfcaverns_big_crystal = 1},
sounds = df_mapitems.sounds.glass,
groups = {cracky=2, dfcaverns_big_crystal = 1, pickaxey=5, material_stone=1},
sounds = df_dependencies.sound_glass(),
selection_box = {
type = "fixed",
fixed = {-0.25, -0.5, -0.25, 0.25, 1.25, 0.25},
@ -64,6 +68,8 @@ minetest.register_node("df_mapitems:med_crystal", {
type = "fixed",
fixed = {-0.25, -0.5, -0.25, 0.25, 1.25, 0.25},
},
_mcl_blast_resistance = 2,
_mcl_hardness = 2,
})
@ -84,8 +90,8 @@ minetest.register_node("df_mapitems:big_crystal_30", {
is_ground_content = false,
light_source = 12,
drop = "df_mapitems:big_crystal",
groups = {cracky=2, dfcaverns_big_crystal = 1},
sounds = df_mapitems.sounds.glass,
groups = {cracky=2, dfcaverns_big_crystal = 1, pickaxey=5, material_stone=1, enderman_takable=1},
sounds = df_dependencies.sound_glass(),
selection_box = {
type = "fixed",
fixed = {
@ -117,6 +123,8 @@ minetest.register_node("df_mapitems:big_crystal_30", {
-- {-0.25, 2.0, -1.625, 0.25, 2.5, -1.125},
},
},
_mcl_blast_resistance = 2,
_mcl_hardness = 2,
})
minetest.register_node("df_mapitems:med_crystal_30", {
@ -136,8 +144,8 @@ minetest.register_node("df_mapitems:med_crystal_30", {
is_ground_content = false,
light_source = 12,
drop = "df_mapitems:med_crystal",
groups = {cracky=2, dfcaverns_big_crystal = 1},
sounds = df_mapitems.sounds.glass,
groups = {cracky=2, dfcaverns_big_crystal = 1, pickaxey=5, material_stone=1},
sounds = df_dependencies.sound_glass(),
selection_box = {
type = "fixed",
fixed = {
@ -154,6 +162,8 @@ minetest.register_node("df_mapitems:med_crystal_30", {
{-0.25, 0.5, -0.9375, 0.25, 1.0, -0.4375},
},
},
_mcl_blast_resistance = 2,
_mcl_hardness = 2,
})
minetest.register_node("df_mapitems:big_crystal_30_45", {
@ -173,8 +183,8 @@ minetest.register_node("df_mapitems:big_crystal_30_45", {
is_ground_content = false,
light_source = 12,
drop = "df_mapitems:big_crystal",
groups = {cracky=2, dfcaverns_big_crystal = 1},
sounds = df_mapitems.sounds.glass,
groups = {cracky=2, dfcaverns_big_crystal = 1, pickaxey=5, material_stone=1, enderman_takable=1},
sounds = df_dependencies.sound_glass(),
selection_box = {
type = "fixed",
fixed = {
@ -191,6 +201,8 @@ minetest.register_node("df_mapitems:big_crystal_30_45", {
{0.5, 1.5, -1.5, 1.5, 2.5, -0.5},
},
},
_mcl_blast_resistance = 2,
_mcl_hardness = 2,
})
@ -211,8 +223,8 @@ minetest.register_node("df_mapitems:med_crystal_30_45", {
is_ground_content = false,
light_source = 12,
drop = "df_mapitems:med_crystal",
groups = {cracky=2, dfcaverns_big_crystal = 1},
sounds = df_mapitems.sounds.glass,
groups = {cracky=2, dfcaverns_big_crystal = 1, pickaxey=5, material_stone=1},
sounds = df_dependencies.sound_glass(),
selection_box = {
type = "fixed",
fixed = {
@ -229,6 +241,8 @@ minetest.register_node("df_mapitems:med_crystal_30_45", {
{0.25, 0.5, -0.75, 0.75, 1.0, -0.25},
},
},
_mcl_blast_resistance = 2,
_mcl_hardness = 2,
})
minetest.register_craft({
@ -262,7 +276,7 @@ minetest.register_craft({
recipe = {'df_mapitems:med_crystal_30_45'},
})
local c_stone = df_mapitems.node_id.stone
local c_stone = minetest.get_content_id(df_dependencies.node_name_stone)
local c_air = minetest.get_content_id("air")
local c_big_crystal = minetest.get_content_id("df_mapitems:big_crystal")
local c_med_crystal = minetest.get_content_id("df_mapitems:med_crystal")

View File

@ -1,32 +1,36 @@
local S = df_mapitems.S
local S = minetest.get_translator(minetest.get_current_modname())
minetest.register_node("df_mapitems:salt_crystal", {
description = S("Luminous Salt Crystal"),
_doc_items_longdesc = df_mapitems.doc.salt_desc,
_doc_items_usagehelp = df_mapitems.doc.salt_usage,
tiles = {"dfcaverns_salt_crystal.png"},
groups = {cracky = 2},
groups = {cracky = 2, pickaxey = 1, shovely=1, material_stone=1},
paramtype = "light",
paramtype2 = "facedir",
drawtype = "mesh",
mesh = "underch_crystal.obj",
light_source = 6,
sounds = df_mapitems.sounds.glass,
sounds = df_dependencies.sound_glass(),
use_texture_alpha = "blend",
sunlight_propagates = true,
is_ground_content = false,
on_place = df_mapitems.place_against_surface,
_mcl_blast_resistance = 1,
_mcl_hardness = 1,
})
minetest.register_node("df_mapitems:salty_cobble", {
description = S("Salty Cobble"),
_doc_items_longdesc = df_mapitems.doc.salty_cobble_desc,
_doc_items_usagehelp = df_mapitems.doc.salty_cobble_desc,
tiles = {df_mapitems.texture.cobble .. "^dfcaverns_salty.png"},
groups = {cracky = 3, stone = 1, lava_heatable = 1},
_magma_conduits_heats_to = df_mapitems.node_name.cobble,
tiles = {df_dependencies.texture_cobble .. "^dfcaverns_salty.png"},
groups = {cracky = 3, stone = 1, lava_heatable = 1, pickaxey = 1, material_stone=1},
_magma_conduits_heats_to = df_dependencies.node_name_cobble,
is_ground_content = false,
light_source = 2,
drop = df_mapitems.node_name.cobble,
sounds = df_mapitems.sounds.stone,
drop = df_dependencies.node_name_cobble,
sounds = df_dependencies.sound_stone(),
_mcl_blast_resistance = 6,
_mcl_hardness = 2,
})

View File

@ -1,45 +0,0 @@
df_mapitems.sounds = {}
df_mapitems.sounds.stone = default.node_sound_stone_defaults()
df_mapitems.sounds.floor_fungus = default.node_sound_stone_defaults({footstep = {name = "dfcaverns_squish", gain = 0.25},})
df_mapitems.sounds.sandscum = default.node_sound_sand_defaults({footstep = {name = "dfcaverns_squish", gain = 0.25},})
df_mapitems.sounds.glass = default.node_sound_glass_defaults()
df_mapitems.sounds.dirt = default.node_sound_dirt_defaults()
df_mapitems.sounds.dirt_mossy = default.node_sound_dirt_defaults({footstep = {name = "default_grass_footstep", gain = 0.25},})
df_mapitems.node_id = {}
df_mapitems.node_id.stone = minetest.get_content_id("default:stone")
df_mapitems.node_id.water = minetest.get_content_id("default:water_source")
df_mapitems.node_id.dirt = minetest.get_content_id("default:dirt")
df_mapitems.texture = {}
df_mapitems.texture.coral_skeleton = "default_coral_skeleton.png"
df_mapitems.texture.cobble = "default_cobble.png"
df_mapitems.texture.stone = "default_stone.png"
df_mapitems.texture.ice = "default_ice.png"
df_mapitems.texture.sand = "default_sand.png"
df_mapitems.texture.dirt = "default_dirt.png"
df_mapitems.node_name = {}
df_mapitems.node_name.coral_skeleton = "default:coral_skeleton"
df_mapitems.node_name.water = "default:water_source"
df_mapitems.node_name.mese_crystal = "default:mese_crystal"
df_mapitems.node_name.cobble = "default:cobble"
df_mapitems.node_name.sand = "default:sand"
df_mapitems.node_name.dirt = "default:dirt"
df_mapitems.node_name.stone = "default:stone"
df_mapitems.node_name.ice = "default:ice"
df_mapitems.node_name.farming_soil = "farming:soil"
df_mapitems.node_name.farming_soil_wet = "farming:soil_wet"
-- This stuff should only be used during initialization
minetest.after(0, function()
df_mapitems.node_name = nil
df_mapitems.sounds = nil
df_mapitems.texture = nil
df_mapitems.node_id = nil
end)

View File

@ -4,7 +4,7 @@ if not minetest.get_modpath("doc") then
return
end
local S = df_mapitems.S
local S = minetest.get_translator(minetest.get_current_modname())
df_mapitems.doc.cave_moss_desc = S("Cave moss is technically a form of mold, but fortunately a relatively benign one given its ubiquity. Its fibers form a tough but springy mat over the surface of any organic-rich soil that accumulates deep underground.")
df_mapitems.doc.cave_moss_usage = S("Cave moss has no known uses aside from the faint glow it emits. It dies when exposed to bright light sources such as the Sun.")

View File

@ -1,4 +1,4 @@
local S = df_mapitems.S
local S = minetest.get_translator(minetest.get_current_modname())
-----------------------------------------------
@ -7,23 +7,27 @@ df_mapitems.dry_stalagmite_ids = subterrane.register_stalagmite_nodes("df_mapite
_doc_items_longdesc = df_mapitems.doc.dripstone_desc,
_doc_items_usagehelp = df_mapitems.doc.dripstone_usage,
tiles = {
df_mapitems.texture.stone .. "^[brighten",
df_dependencies.texture_stone .. "^[brighten",
},
groups = {cracky = 3, stone = 2},
sounds = df_mapitems.sounds.stone,
groups = {cracky = 3, stone = 2, pickaxey=1, building_block=1, material_stone=1},
sounds = df_dependencies.sound_stone(),
is_ground_content = false,
_mcl_blast_resistance = 6,
_mcl_hardness = 1.5,
})
minetest.register_node("df_mapitems:dry_flowstone", {
description = S("Dry Flowstone"),
_doc_items_longdesc = df_mapitems.doc.flowstone_desc,
_doc_items_usagehelp = df_mapitems.doc.flowstone_usage,
tiles = {df_mapitems.texture.stone .. "^[brighten"},
groups = {cracky = 3, stone = 1, lava_heatable = 1},
_magma_conduits_heats_to = df_mapitems.node_name.cobble,
tiles = {df_dependencies.texture_stone .. "^[brighten"},
groups = {cracky = 3, stone = 1, lava_heatable = 1, pickaxey=1, building_block=1, material_stone=1},
_magma_conduits_heats_to = df_dependencies.node_name_cobble,
is_ground_content = false,
drop = df_mapitems.node_name.cobble,
sounds = df_mapitems.sounds.stone,
drop = df_dependencies.node_name_cobble,
sounds = df_dependencies.sound_stone(),
_mcl_blast_resistance = 6,
_mcl_hardness = 1.5,
})
-----------------------------------------------
@ -33,11 +37,13 @@ df_mapitems.wet_stalagmite_ids = subterrane.register_stalagmite_nodes("df_mapite
_doc_items_longdesc = df_mapitems.doc.dripstone_desc,
_doc_items_usagehelp = df_mapitems.doc.dripstone_usage,
tiles = {
df_mapitems.texture.stone .. "^[brighten^dfcaverns_dripstone_streaks.png",
df_dependencies.texture_stone .. "^[brighten^dfcaverns_dripstone_streaks.png",
},
groups = {cracky = 3, stone = 2, subterrane_wet_dripstone = 1},
sounds = df_mapitems.sounds.stone,
groups = {cracky = 3, stone = 2, subterrane_wet_dripstone = 1, pickaxey=1, building_block=1, material_stone=1},
sounds = df_dependencies.sound_stone(),
is_ground_content = false,
_mcl_blast_resistance = 6,
_mcl_hardness = 1.5,
}, "df_mapitems:dry_stal")
@ -45,12 +51,14 @@ minetest.register_node("df_mapitems:wet_flowstone", {
description = S("Wet Flowstone"),
_doc_items_longdesc = df_mapitems.doc.flowstone_desc,
_doc_items_usagehelp = df_mapitems.doc.flowstone_usage,
tiles = {df_mapitems.texture.stone .. "^[brighten^dfcaverns_dripstone_streaks.png"},
groups = {cracky = 3, stone = 1, subterrane_wet_dripstone = 1, lava_heatable = 1},
tiles = {df_dependencies.texture_stone .. "^[brighten^dfcaverns_dripstone_streaks.png"},
groups = {cracky = 3, stone = 1, subterrane_wet_dripstone = 1, lava_heatable = 1, pickaxey=1, building_block=1, material_stone=1},
_magma_conduits_heats_to = "df_mapitems:dry_flowstone",
is_ground_content = false,
drop = df_mapitems.node_name.cobble,
sounds = df_mapitems.sounds.stone,
drop = df_dependencies.node_name_cobble,
sounds = df_dependencies.sound_stone(),
_mcl_blast_resistance = 6,
_mcl_hardness = 1.5,
})
-----------------------------------------------
@ -60,9 +68,11 @@ df_mapitems.icicle_ids = subterrane.register_stalagmite_nodes("df_mapitems:icicl
_doc_items_longdesc = df_mapitems.doc.icicle_desc,
_doc_items_usagehelp = df_mapitems.doc.icicle_usage,
tiles = {
df_mapitems.texture.ice,
df_dependencies.texture_ice,
},
groups = {cracky = 3, puts_out_fire = 1, cools_lava = 1, slippery = 3},
sounds = df_mapitems.sounds.glass,
groups = {cracky = 3, puts_out_fire = 1, cools_lava = 1, slippery = 3, pickaxey=1, building_block=1, handy=1, slippery=3, building_block=1, ice=1},
sounds = df_dependencies.sound_glass(),
_mcl_blast_resistance = 0.5,
_mcl_hardness = 0.5,
})

View File

@ -1,4 +1,4 @@
local S = df_mapitems.S
local S = minetest.get_translator(minetest.get_current_modname())
local growth_multiplier = 1
if minetest.get_modpath("df_farming") then
@ -23,7 +23,7 @@ minetest.register_node("df_mapitems:glow_worm", {
inventory_image = "dfcaverns_glow_worm.png",
wield_image = "dfcaverns_glow_worm.png",
is_ground_content = false,
groups = {oddly_breakable_by_hand=3, light_sensitive_fungus = 12},
groups = {oddly_breakable_by_hand=3, light_sensitive_fungus = 12, shearsy=1, swordy=1, destroy_by_lava_flow=1},
_dfcaverns_dead_node = "air",
light_source = 9,
paramtype = "light",
@ -32,6 +32,8 @@ minetest.register_node("df_mapitems:glow_worm", {
buildable_to = true,
floodable = true,
visual_scale = 1.0,
_mcl_blast_resistance = 0.2,
_mcl_hardness = 0.2,
after_place_node = function(pos, placer)
if df_mapitems.config.glow_worm_delay_multiplier > 0 then
minetest.get_node_timer(pos):start(math.random(

View File

@ -1,4 +1,4 @@
local S = df_mapitems.S
local S = minetest.get_translator(minetest.get_current_modname())
local function soil_type_spread(label, node_to_spread, target_node)
@ -18,21 +18,21 @@ local function soil_type_spread(label, node_to_spread, target_node)
}
end
local farming_soil = df_mapitems.node_name.farming_soil
local farming_soil_wet = df_mapitems.node_name.farming_soil_wet
local farming_soil = df_dependencies.node_name_dirt_furrowed
local farming_soil_wet = df_dependencies.node_name_dirt_wet
--------------------------------------------------
-- Cave moss
-- cyan/dark cyan
local dirt_texture = df_mapitems.texture.dirt
local sand_texture = df_mapitems.texture.sand
local dirt_texture = df_dependencies.texture_dirt
local sand_texture = df_dependencies.texture_sand
local dirt_node = df_mapitems.node_name.dirt
local sand_node = df_mapitems.node_name.sand
local stone_node = df_mapitems.node_name.stone
local cobble_node = df_mapitems.node_name.cobble
local dirt_node = df_dependencies.node_name_dirt
local sand_node = df_dependencies.node_name_sand
local stone_node = df_dependencies.node_name_stone
local cobble_node = df_dependencies.node_name_cobble
minetest.register_node("df_mapitems:dirt_with_cave_moss", {
description = S("Dirt with Cave Moss"),
@ -45,14 +45,16 @@ minetest.register_node("df_mapitems:dirt_with_cave_moss", {
is_ground_content = false,
light_source = 2,
paramtype = "light",
groups = {crumbly = 3, soil = 1, light_sensitive_fungus = 8},
sounds = df_mapitems.sounds.dirt_mossy,
groups = {crumbly = 3, soil = 1, light_sensitive_fungus = 8, handy=1,shovely=1,dirt=2, soil_sapling=2, soil_sugarcane=1, cultivatable=1, enderman_takable=1, building_block=1, compostability=30, opaque=1},
sounds = df_dependencies.sound_dirt({footstep = {name = df_dependencies.soundfile_grass_footstep, gain = 0.25},}),
soil = {
base = "df_mapitems:dirt_with_cave_moss",
dry = farming_soil,
wet = farming_soil_wet
},
_dfcaverns_dead_node = dirt_node,
_mcl_blast_resistance = 0.5,
_mcl_hardness = 0.6,
})
soil_type_spread("df_mapitems:cave_moss_spread", "df_mapitems:dirt_with_cave_moss", dirt_node)
@ -71,9 +73,11 @@ minetest.register_node("df_mapitems:sand_scum", {
is_ground_content = false,
light_source = 2,
paramtype = "light",
groups = {crumbly = 3, soil = 1, light_sensitive_fungus = 8},
sounds = df_mapitems.sounds.sandscum,
groups = {crumbly = 3, soil = 1, light_sensitive_fungus = 8, handy=1,shovely=1, falling_node=1, sand=1, soil_sugarcane=1, enderman_takable=1, building_block=1, material_sand=1, opaque=1},
sounds = df_dependencies.sound_sand({footstep = {name = "dfcaverns_squish", gain = 0.25},}),
_dfcaverns_dead_node = sand_node,
_mcl_blast_resistance = 0.5,
_mcl_hardness = 0.5,
})
soil_type_spread("df_mapitems:sand_scum_spread", "df_mapitems:sand_scum", sand_node)
@ -92,14 +96,16 @@ minetest.register_node("df_mapitems:dirt_with_pebble_fungus", {
is_ground_content = false,
light_source = 2,
paramtype = "light",
groups = {crumbly = 3, soil = 1, light_sensitive_fungus = 8},
sounds = df_mapitems.sounds.dirt,
groups = {crumbly = 3, soil = 1, light_sensitive_fungus = 8, handy=1,shovely=1,dirt=2, soil_sapling=2, soil_sugarcane=1, cultivatable=1, enderman_takable=1, building_block=1, compostability=30, opaque=1},
sounds = df_dependencies.sound_dirt(),
soil = {
base = "df_mapitems:dirt_with_pebble_fungus",
dry = farming_soil,
wet = farming_soil_wet
},
_dfcaverns_dead_node = dirt_node,
_mcl_blast_resistance = 0.5,
_mcl_hardness = 0.6,
})
soil_type_spread("df_mapitems:pebble_fungus_spread", "df_mapitems:dirt_with_pebble_fungus", dirt_node)
@ -118,14 +124,16 @@ minetest.register_node("df_mapitems:dirt_with_stillworm", {
is_ground_content = false,
light_source = 2,
paramtype = "light",
groups = {crumbly = 3, soil = 1, light_sensitive_fungus = 8},
sounds = df_mapitems.sounds.dirt_mossy,
groups = {crumbly = 3, soil = 1, light_sensitive_fungus = 8, handy=1,shovely=1,dirt=2, soil_sapling=2, soil_sugarcane=1, cultivatable=1, enderman_takable=1, building_block=1, compostability=30, opaque=1},
sounds = df_dependencies.sound_dirt({footstep = {name = df_dependencies.soundfile_grass_footstep, gain = 0.25},}),
soil = {
base = "df_mapitems:dirt_with_stillworm",
dry = farming_soil,
wet = farming_soil_wet
},
_dfcaverns_dead_node = dirt_node,
_mcl_blast_resistance = 0.5,
_mcl_hardness = 0.6,
})
soil_type_spread("df_mapitems:stillworm_spread", "df_mapitems:dirt_with_stillworm", dirt_node)
@ -141,30 +149,34 @@ minetest.register_node("df_mapitems:spongestone", {
drop = dirt_node,
is_ground_content = false,
paramtype = "light",
groups = {crumbly = 3, soil = 1, light_sensitive_fungus = 8},
sounds = df_mapitems.sounds.dirt,
groups = {crumbly = 3, soil = 1, light_sensitive_fungus = 8, shovely=1,dirt=2, enderman_takable=1, building_block=1, compostability=10, opaque=1},
sounds = df_dependencies.sound_dirt(),
soil = {
base = "df_mapitems:spongestone",
dry = farming_soil,
wet = farming_soil_wet
},
_dfcaverns_dead_node = dirt_node,
_mcl_blast_resistance = 0.6,
_mcl_hardness = 0.6,
})
minetest.register_node("df_mapitems:rock_rot", {
description = S("Rock Rot"),
_doc_items_longdesc = df_mapitems.doc.rock_rot_desc,
_doc_items_usagehelp = df_mapitems.doc.rock_rot_usage,
tiles = {df_mapitems.texture.stone .. "^dfcaverns_ground_cover_rock_rot.png", df_mapitems.texture.stone,
{name = df_mapitems.texture.stone .. "^(dfcaverns_ground_cover_rock_rot.png^[mask:dfcaverns_ground_cover_side_mask.png)",
tiles = {df_dependencies.texture_stone .. "^dfcaverns_ground_cover_rock_rot.png", df_dependencies.texture_stone,
{name = df_dependencies.texture_stone .. "^(dfcaverns_ground_cover_rock_rot.png^[mask:dfcaverns_ground_cover_side_mask.png)",
tileable_vertical = false}},
drop = df_mapitems.node_name.cobble,
drop = df_dependencies.node_name_cobble,
is_ground_content = false,
light_source = 2,
paramtype = "light",
groups = {crumbly = 3, soil = 1, light_sensitive_fungus = 8},
sounds = df_mapitems.sounds.dirt,
groups = {crumbly = 3, soil = 1, light_sensitive_fungus = 8, shovely=1,dirt=2, enderman_takable=1, building_block=1, compostability=5, opaque=1},
sounds = df_dependencies.sound_dirt(),
_dfcaverns_dead_node = stone_node,
_mcl_blast_resistance = 3,
_mcl_hardness = 1,
})
soil_type_spread("df_mapitems:rock_rot_spread", "df_mapitems:rock_rot", stone_node)
@ -179,26 +191,30 @@ minetest.register_node("df_mapitems:cobble_with_floor_fungus", {
description = S("Cobblestone with Floor Fungus"),
_doc_items_longdesc = df_mapitems.doc.floor_fungus_desc,
_doc_items_usagehelp = df_mapitems.doc.floor_fungus_usage,
tiles = {df_mapitems.texture.cobble .. "^dfcaverns_floor_fungus.png"},
tiles = {df_dependencies.texture_cobble .. "^dfcaverns_floor_fungus.png"},
drop = cobble_node,
is_ground_content = false,
paramtype = "light",
groups = {cracky = 3, stone = 2, slippery = 1, light_sensitive_fungus = 8, df_caverns_floor_fungus = 1},
_dfcaverns_dead_node = df_mapitems.node_name.cobble,
sounds = df_mapitems.sounds.floor_fungus,
is_ground_content = false,
groups = {cracky = 3, stone = 2, slippery = 1, light_sensitive_fungus = 8, df_caverns_floor_fungus = 1, pickaxey=1, building_block=1, material_stone=1, opaque=1},
_dfcaverns_dead_node = df_dependencies.node_name_cobble,
sounds = df_dependencies.sound_stone({footstep = {name = "dfcaverns_squish", gain = 0.25},}),
_mcl_blast_resistance = 6,
_mcl_hardness = 1.5,
})
minetest.register_node("df_mapitems:cobble_with_floor_fungus_fine", {
description = S("Cobblestone with Floor Fungus"),
_doc_items_longdesc = df_mapitems.doc.floor_fungus_desc,
_doc_items_usagehelp = df_mapitems.doc.floor_fungus_usage,
tiles = {df_mapitems.texture.cobble .. "^dfcaverns_floor_fungus_fine.png"},
tiles = {df_dependencies.texture_cobble .. "^dfcaverns_floor_fungus_fine.png"},
drop = cobble_node,
is_ground_content = false,
paramtype = "light",
groups = {cracky = 3, stone = 2, slippery = 1, light_sensitive_fungus = 8, df_caverns_floor_fungus = 1},
_dfcaverns_dead_node = df_mapitems.node_name.cobble,
df_mapitems.sounds.floor_fungus,
groups = {cracky = 3, stone = 2, slippery = 1, light_sensitive_fungus = 8, df_caverns_floor_fungus = 1, pickaxey=1, building_block=1, material_stone=1, opaque=1},
_dfcaverns_dead_node = df_dependencies.node_name_cobble,
sounds = df_dependencies.sound_stone({footstep = {name = "dfcaverns_squish", gain = 0.25},}),
_mcl_blast_resistance = 6,
_mcl_hardness = 1.5,
on_timer = function(pos, elapsed)
minetest.swap_node(pos, {name="df_mapitems:cobble_with_floor_fungus"})
end,
@ -219,7 +235,7 @@ minetest.register_abm{
if above_def and (above_def.buildable_to == true or above_def.walkable == false) then
minetest.swap_node(pos, {name="df_mapitems:cobble_with_floor_fungus_fine"})
if math.random() > 0.5 then
minetest.get_node_timer(pos):start(math.random(100, 1000))
minetest.get_node_timer(pos):start(math.random(1000, 10000))
end
end
end,
@ -232,14 +248,16 @@ minetest.register_node("df_mapitems:ice_with_hoar_moss", {
description = S("Ice with Hoar Moss"),
_doc_items_longdesc = df_mapitems.doc.hoar_moss_desc,
_doc_items_usagehelp = df_mapitems.doc.hoar_moss_usage,
tiles = {df_mapitems.texture.ice .. "^dfcaverns_hoar_moss.png"},
drop = df_mapitems.node_name.ice,
tiles = {df_dependencies.texture_ice .. "^dfcaverns_hoar_moss.png"},
drop = df_dependencies.node_name_ice,
paramtype = "light",
light_source = 2,
is_ground_content = false,
groups = {cracky = 3, puts_out_fire = 1, cools_lava = 1, slippery = 2, light_sensitive_fungus = 8},
sounds = df_mapitems.sounds.glass,
_dfcaverns_dead_node = df_mapitems.node_name.ice,
groups = {cracky = 3, puts_out_fire = 1, cools_lava = 1, slippery = 2, light_sensitive_fungus = 8, handy=1,pickaxey=1, building_block=1, ice=1, opaque=1},
sounds = df_dependencies.sound_glass(),
_dfcaverns_dead_node = df_dependencies.node_name_ice,
_mcl_blast_resistance = 0.5,
_mcl_hardness = 0.5,
})
@ -260,7 +278,7 @@ if minetest.get_modpath("footprints") then
footprints.register_trample_node("df_mapitems:sand_scum", {
trampled_node_def_override = {description = S("Sand Scum with Footprint"),},
hard_pack_node_name = df_mapitems.node_name.sand,
hard_pack_node_name = df_dependencies.node_name_sand,
footprint_opacity = 128,
hard_pack_probability = HARDPACK_PROBABILITY,
hard_pack_count = HARDPACK_COUNT * 0.5,

View File

@ -1,12 +1,10 @@
df_mapitems = {}
local modname = minetest.get_current_modname()
df_mapitems.S = minetest.get_translator(modname)
local modpath = minetest.get_modpath(modname)
--load companion lua files
dofile(modpath.."/config.lua")
dofile(modpath.."/dependencies.lua")
dofile(modpath.."/doc.lua")
dofile(modpath.."/aliases.lua")
dofile(modpath.."/util.lua")

View File

@ -1,4 +1,4 @@
name = df_mapitems
description = Various node types used by the dfcaverns mapgen mod. Includes cave coral, flowstone, glowing crystals, glow worms, moss and fungi ground cover, and snare weed.
depends = default, subterrane
optional_depends = df_farming, farming, doc, radiant_damage, footprints
depends = df_dependencies, subterrane
optional_depends = df_farming, doc, radiant_damage, footprints

View File

@ -1,18 +1,20 @@
local S = df_mapitems.S
local S = minetest.get_translator(minetest.get_current_modname())
minetest.register_node("df_mapitems:snareweed", {
description = S("Snareweed"),
_doc_items_longdesc = df_mapitems.doc.snareweed_desc,
_doc_items_usagehelp = df_mapitems.doc.snareweed_usage,
tiles = {df_mapitems.texture.dirt .. "^dfcaverns_snareweed_roots.png", df_mapitems.texture.dirt},
tiles = {df_dependencies.texture_dirt .. "^dfcaverns_snareweed_roots.png", df_dependencies.texture_dirt},
drawtype="plantlike_rooted",
paramtype2 = "leveled",
special_tiles = {{name = "dfcaverns_snareweed.png", tileable_vertical = true}},
is_ground_content = false,
drop = df_mapitems.node_name.dirt,
drop = df_dependencies.node_name_dirt,
light_source = 6,
groups = {crumbly = 3, soil = 1},
sounds = df_mapitems.sounds.dirt,
groups = {crumbly = 3, soil = 1, handy=1,shovely=1, dirt=1,},
sounds = df_dependencies.sound_dirt(),
_mcl_blast_resistance = 0.5,
_mcl_hardness = 0.6,
})
if df_mapitems.config.snareweed_damage then
@ -41,9 +43,9 @@ if df_mapitems.config.snareweed_damage then
end
local c_water = df_mapitems.node_id.water
local c_dirt = df_mapitems.node_id.dirt
local c_stone = df_mapitems.node_id.stone
local c_water = minetest.get_content_id(df_dependencies.node_name_water_source)
local c_dirt = minetest.get_content_id(df_dependencies.node_name_dirt)
local c_stone = minetest.get_content_id(df_dependencies.node_name_stone)
local c_snareweed = minetest.get_content_id("df_mapitems:snareweed")
df_mapitems.place_snareweed = function(area, data, bi, param2_data)

Binary file not shown.

View File

@ -1,3 +1,5 @@
dfcaverns_squish.1.ogg - from https://freesound.org/people/DrMinky/sounds/167074/ by DrMinky under Creative Commons BY 3.0
dfcaverns_squish.2.ogg - from https://freesound.org/people/DrMinky/sounds/167075/ by DrMinky under Creative Commons BY 3.0
dfcaverns_squish.3.ogg - from https://freesound.org/people/DrMinky/sounds/167073/ by DrMinky under Creative Commons BY 3.0
dfcaverns_squish.3.ogg - from https://freesound.org/people/DrMinky/sounds/167073/ by DrMinky under Creative Commons BY 3.0
slow heartbeat - https://freesound.org/people/daandraait/sounds/249716/ under CC0

View File

@ -59,7 +59,7 @@ df_mapitems.place_against_surface = function(itemstack, placer, pointed_thing)
end
-- add the node and remove 1 item from the itemstack
minetest.add_node(above_pos, {name = itemstack:get_name(), param2 = param2})
if not minetest.settings:get_bool("creative_mode", false) and not minetest.check_player_privs(placer, "creative") then
if not minetest.is_creative_enabled(placer:get_player_name()) then
itemstack:take_item()
end
return itemstack

View File

@ -1,34 +1,42 @@
local S = df_mapitems.S
local S = minetest.get_translator(minetest.get_current_modname())
-- overridden to trigger an achievement, without making achievements a dependency of this mod
df_mapitems.on_veinstone_punched = function()
end
minetest.register_node("df_mapitems:veinstone", {
description = S("Veinstone"),
_doc_items_longdesc = df_mapitems.doc.veinstone_desc,
_doc_items_usagehelp = df_mapitems.doc.veinstone_usage,
tiles = {df_mapitems.texture.stone .. "^dfcaverns_veins.png"},
groups = {cracky = 3, stone = 1, lava_heatable = 1},
_magma_conduits_heats_to = df_mapitems.node_name.cobble,
tiles = {df_dependencies.texture_stone .. "^dfcaverns_veins.png"},
groups = {cracky = 3, stone = 1, lava_heatable = 1, pickaxey=1, building_block=1, material_stone=1},
_magma_conduits_heats_to = df_dependencies.node_name_cobble,
is_ground_content = false,
light_source = 2,
drop = "df_mapitems:veinstone",
sounds = df_mapitems.sounds.stone,
sounds = df_dependencies.sound_stone(),
on_punch = function(pos, node, puncher, pointed_thing)
minetest.node_punch(pos, node, puncher, pointed_thing)
minetest.swap_node(pos, {name="df_mapitems:veinstone_pulse"})
minetest.get_node_timer(pos):start(2)
minetest.sound_play({name="dfcaverns_slow_heartbeat", gain=0.5}, {pos = pos})
df_mapitems.on_veinstone_punched(pos, node, puncher, pointed_thing)
end,
_mcl_blast_resistance = 10,
_mcl_hardness = 3,
})
minetest.register_node("df_mapitems:veinstone_pulse", {
description = S("Veinstone"),
_doc_items_longdesc = df_mapitems.doc.veinstone_desc,
_doc_items_usagehelp = df_mapitems.doc.veinstone_usage,
tiles = {df_mapitems.texture.stone .. "^dfcaverns_veins.png"},
groups = {cracky = 3, stone = 1, lava_heatable = 1, not_in_creative_inventory = 1},
_magma_conduits_heats_to = df_mapitems.node_name.cobble,
tiles = {df_dependencies.texture_stone .. "^dfcaverns_veins.png"},
groups = {cracky = 3, stone = 1, lava_heatable = 1, not_in_creative_inventory = 1, pickaxey=1, building_block=1, material_stone=1},
_magma_conduits_heats_to = df_dependencies.node_name_cobble,
is_ground_content = false,
light_source = 8,
drop = "df_mapitems:veinstone",
sounds = df_mapitems.sounds.stone,
sounds = df_dependencies.sound_stone(),
on_timer = function(pos, elapsed)
local positions, count = minetest.find_nodes_in_area(vector.add(pos,1), vector.subtract(pos,1), "df_mapitems:veinstone")
if count["df_mapitems:veinstone"] == 0 then
@ -40,27 +48,34 @@ minetest.register_node("df_mapitems:veinstone_pulse", {
if positions[1] == nil then
positions = {[1] = minetest.find_node_near(pos, 4, "df_mapitems:veinstone")}
end
if (positions[1] ~= nil) then
minetest.sound_play({name="dfcaverns_slow_heartbeat", gain=0.5}, {pos = pos})
end
for _, neighbor_pos in pairs(positions) do
minetest.swap_node(neighbor_pos, {name="df_mapitems:veinstone_pulse"})
minetest.get_node_timer(neighbor_pos):start(2)
end
end
minetest.swap_node(pos, {name="df_mapitems:veinstone_refractory"})
minetest.get_node_timer(pos):start(12)
end,
_mcl_blast_resistance = 10,
_mcl_hardness = 3,
})
minetest.register_node("df_mapitems:veinstone_refractory", {
description = S("Veinstone"),
_doc_items_longdesc = df_mapitems.doc.veinstone_desc,
_doc_items_usagehelp = df_mapitems.doc.veinstone_usage,
tiles = {df_mapitems.texture.stone .. "^dfcaverns_veins.png"},
groups = {cracky = 3, stone = 1, lava_heatable = 1, not_in_creative_inventory = 1},
_magma_conduits_heats_to = df_mapitems.node_name.cobble,
tiles = {df_dependencies.texture_stone .. "^dfcaverns_veins.png"},
groups = {cracky = 3, stone = 1, lava_heatable = 1, not_in_creative_inventory = 1, pickaxey=1, building_block=1, material_stone=1},
_magma_conduits_heats_to = df_dependencies.node_name_cobble,
is_ground_content = false,
light_source = 1,
drop = "df_mapitems:veinstone",
sounds = df_mapitems.sounds.stone,
sounds = df_dependencies.sound_stone(),
on_timer = function(pos, elapsed)
minetest.swap_node(pos, {name="df_mapitems:veinstone"})
end,
_mcl_blast_resistance = 10,
_mcl_hardness = 3,
})