mirror of
https://github.com/FaceDeer/dfcaverns.git
synced 2025-03-19 11:10:26 +01:00
* cave pearls and spindleshrooms (name subject to change) now are things. Not in mapgen yet. * add the wandering "gas wisp" to light up some of the gas-filled caverns * make wisps rarely spawned by gas explosions * revamp spindlestems into a sort of mineral detector, add glowing extract bottles * optimize pngs * add gas wisps to mapgen * add spindlestems to cavern level 1, most level 1 warrens are now lit up * update internal names, adjust mineral detection range * add cave pearls to some level 2 warrens and tunnels * switch experimental simplecrafting_lib support to crafting mod * Pearls don't grow on falling nodes * put spindlestems with goblin caps, make them always grow red when near those * bunch of documentation * add castle coral to replace cave coral, which has been repurposed into column decoration * documentation for cave coral, update some locale text * add a recipe for cooking oil into paraffin * add old bones to the underworld * MIT license for bones_loot * also cook black cap gills into paraffin, they're oily * add salt crystals to the bloodthorn caverns, illuminating the floor * documentation for salt crystals * auto-generate minetestmapper colors. need to update the spindlestem colours manually * add spindlestem to fungiwood caverns too, and increase warren coverage * in anticipation of eventually adding stuff below the Slade, making glowing pit erosion self-limiting. * add a bit of displacement to the underside of the slade layer * Unique images and names for cooking recipes. * revamp bones loot * add softer footsteps for some fungus types * update mapgen_helper * update cave coral screenshot * mention glowing salts in bloodthorn caverns
86 lines
2.5 KiB
Lua
86 lines
2.5 KiB
Lua
local MP = minetest.get_modpath(minetest.get_current_modname())
|
|
local S, NS = dofile(MP.."/intllib.lua")
|
|
|
|
local wisp_desc
|
|
local wisp_usage
|
|
|
|
if minetest.get_modpath("doc") then
|
|
wisp_desc = S("Mysterious blue flames may occasionally be found flickering on the edges of oil lakes, burning without oxygen and seeming to maintain their size as they drift about through the unbreathable atmosphere.")
|
|
wisp_usage = S("Gas Wisps have no known use, and fortunately they are not hostile or very dangerous.")
|
|
end
|
|
|
|
minetest.register_node("mine_gas:gas_wisp", {
|
|
description = S("Gas Wisp"),
|
|
_doc_items_longdesc = wisp_desc,
|
|
_doc_items_usagehelp = wisp_usage,
|
|
walkable = false,
|
|
diggable = false,
|
|
buildable_to = true,
|
|
drawtype = "plantlike",
|
|
waving = 1,
|
|
drowning = 1,
|
|
damage_per_second = 4,
|
|
post_effect_color = {a = 20, r = 20, g = 20, b = 250},
|
|
tiles = {{name = "mine_gas_wisp.png", animation =
|
|
{
|
|
type = "vertical_frames",
|
|
aspect_w = 16,
|
|
aspect_h = 16,
|
|
length = 1.5,
|
|
},
|
|
}},
|
|
light_source = 10,
|
|
use_texture_alpha = true,
|
|
groups = {not_in_creative_inventory=0},
|
|
paramtype = "light",
|
|
paramtype2 = "meshoptions",
|
|
place_param2 = 0,
|
|
-- * bit 4 (0x10, decimal 16) - Makes the plant mesh 1.4x larger
|
|
inventory_image = "mine_gas_wisp_inventory.png",
|
|
drop = {},
|
|
sunlight_propagates = true,
|
|
on_blast = function() end, -- unaffected by explosions
|
|
})
|
|
|
|
minetest.register_abm({
|
|
label = "mine_gas:gas wisp movement",
|
|
nodenames = {"mine_gas:gas_wisp"},
|
|
neighbors = {"mine_gas:gas"},
|
|
interval = 1.0,
|
|
chance = 10,
|
|
catch_up = true,
|
|
action = function(pos, node)
|
|
local next_pos = {x=pos.x+math.random(1,3)-2, y=pos.y+math.random(1,3)-2, z=pos.z+math.random(1,3)-2}
|
|
local next_node = minetest.get_node(next_pos)
|
|
if next_node.name == "mine_gas:gas" then
|
|
minetest.swap_node(next_pos, node)
|
|
minetest.swap_node(pos, next_node)
|
|
end
|
|
pos = next_pos
|
|
|
|
end,
|
|
})
|
|
|
|
minetest.register_abm({
|
|
label = "mine_gas:gas wisp extinguish",
|
|
nodenames = {"mine_gas:gas_wisp"},
|
|
neighbors = {"air"},
|
|
interval = 10,
|
|
chance = 1,
|
|
catch_up = true,
|
|
action = function(pos, node)
|
|
for y = -1, 1 do
|
|
for x = -1, 1 do
|
|
for z = -1, 1 do
|
|
local node_name = minetest.get_node({x=pos.x+x, y=pos.y+y, z=pos.z+z}).name
|
|
if node_name == "mine_gas:gas" or minetest.get_item_group(node_name, "flammable") > 0 then
|
|
-- there's gas or a flammable adjacent, don't extinguish
|
|
return
|
|
end
|
|
end
|
|
end
|
|
end
|
|
-- no gas adjacent, extinguish
|
|
minetest.set_node(pos, {name="air"})
|
|
end,
|
|
}) |