dfcaverns/mine_gas/wisp.lua
FaceDeer 98fb313eb1
Primordial cavern layer (#12)
* bring in the art assets from ClockGen's "better_caves_modpack" under CC BY 4.0,, code written from scratch.

* update mapgen_helper

* import ClockGen's giant mushroom schematics, make them and giant ferns growable

* add giant jungle mushroom, rough out actual cavern layer code framework

* fungal ceiling decorations

* decorate fungal floor a bit

* update mapgen_helper

* update primordial mushroom schematic placement to ensure it fits

* add giant mycelium fungoidal structure

* add giant mycelium to mapgen

* fix settings for giant mycelium

* make mycelium grow when players aren't present

* allow mycelium growth to pause when it hits unloaded areas

* add a use for giant mycelium

* make giant mushrooms edible, make jungle trees growable

* rough out the jungle biome

* Make a spectrum of jungle growth

* optimize pngs, add is_ground_content to everything

* use custom is_ground_content method

* fix a crash with veinstone, and simplify nvals_cave lookup now that overgen covers the same area

* more fixes for overgen support

* remove unintentional airspace from underside of slade

* fix for overgen crash in level 2

* primordial column material, add sealed shafts to underworld

* add seal block

* Set up puzzle seals to be able to dig a staircase shaft through the slade layer. TODO: the puzzle to guard the trigger.

* puzzle seals now fully functional. Need to add clues for decoding the keys next.

* add a small bit of anti-griefing - the seal breach bell only tolls globally 13 times per activation

* add flowers to the underworld warrior bones

* switch to a different key bell

* fancy up the puzzle seal temples with some custom blocks, add sub-slade grid passages

* add a clue to the seal formspec

* tweak background of inscription 2 so it's less obviously a copy of the background for inscription 1

* switch to compositing to save a few bytes

* fancy up the seal's upper surface with inscriptions to make the formspec feel consistent

* puzzle particle, bones were only spawning on top of structures

* fix ice/oil on level 3, tweak some loot probabilities

* add trail mod support

* remove deprecated files

* boost default plant growth delay, add growing selection boxes

* update map colours

* add named waypoints to the underworld

* try a more efficient way of changing the interiors of columns

* polishing up the Primordial layer

* update guide with some Primordial teasers

* updated magma sea screenshot

* update mapgen_helper and subterrane

* reduce density of megaflora a bit - was too hard to walk through

* spreading_dirt_type depends on light, create my own ABM instead

* add names to the glowing pits and some of the ruins

* separate setting for ruin markers

* record identity of slade-breachers

* make mycelia climbable

* update subterrane

* change surface tunnel detection to allow above-ground stalactites and stalagmites

* add rare thicker Goblin Caps, suitable for use as huts.

* better goblin cap schematics

* update colours

* make it slightly harder to dig down through amethyst sheathing of pits

* fixing up fungus light sensitivity, tree growth code

* fix a few minor bugs

* update deprecated functions

* add various eating sounds

* make mapping kit requirement more flexible

* update spindlestem growth code, remove deprecated functions

* fix leftover undefined variable

* add fireflies to primordial, spread out the post-mapgen node timer for plant matter a bit more.

* fix bones formspec

* add lbm to upgrade old bones

* fix slade undiggability

* make torchspines smokey and manually lightable

* fix drop definitions

* generate dry stalactites in near-surface caverns.

* caverns become far too smokey, alas

* add pitter patter of spore tree spores, alternate paper recipe

* new mapgen_helper metrics

* add smokey back to torchspine now that it can be dialed down a bit

* replace glowstone texture with a new animated one

* switch from ABM to node timer for mapgen mycelium growth

* make mapgen mycelium timer delay configurable

* improve the efficiency of giant mycelium growth using flat node array, fewer dereferences

* remove the smoke from torchspines again - it doesn't dissipate that deep underground

* give slade a more muted, gloomy hue to differentiate it from nether stone

* update screenshots with new slade colors

* update mapgen_helper
2020-02-12 23:49:17 -07:00

87 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,
is_ground_content = 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,
})