dfcaverns/mine_gas/wisp.lua

86 lines
2.5 KiB
Lua
Raw Normal View History

Small stuff (#8) * 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
2019-08-19 05:20:07 +02:00
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,
})