mirror of
https://github.com/FaceDeer/dfcaverns.git
synced 2025-06-28 06:30:34 +02:00
split mine gas out into a separate mod
This commit is contained in:
24
mine_gas/LICENSE.txt
Normal file
24
mine_gas/LICENSE.txt
Normal file
@ -0,0 +1,24 @@
|
||||
Sounds and textures are under various licenses, see the license.txt file in the /sounds and /textures directories for details.
|
||||
|
||||
License for Code
|
||||
----------------
|
||||
|
||||
Copyright (C) 2018 FaceDeer
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
3
mine_gas/depends.txt
Normal file
3
mine_gas/depends.txt
Normal file
@ -0,0 +1,3 @@
|
||||
default
|
||||
tnt?
|
||||
doc?
|
186
mine_gas/init.lua
Normal file
186
mine_gas/init.lua
Normal file
@ -0,0 +1,186 @@
|
||||
local MP = minetest.get_modpath(minetest.get_current_modname())
|
||||
local S, NS = dofile(MP.."/intllib.lua")
|
||||
|
||||
local gas_desc
|
||||
local gas_usage
|
||||
|
||||
local seep_desc
|
||||
local seep_usage
|
||||
|
||||
if minetest.get_modpath("doc") then
|
||||
gas_desc = S("Gaseous hydrocarbons formed from the detritus of long dead plants and animals processed by heat and pressure deep within the earth.")
|
||||
gas_usage = S("Gas is highly hazardous. Heavier than air, it pools in deep caverns and asphyxiates the unwary.")
|
||||
if minetest.get_modpath("tnt") then
|
||||
gas_usage = gas_usage .. " " .. S("When exposed to air and an ignition source it can produce a deadly explosion.")
|
||||
end
|
||||
|
||||
seep_desc = S("Some coal deposits have cracks that seep a steady flow of mine gas.")
|
||||
seep_usage = S("Mining out such a deposit seals the crack.")
|
||||
end
|
||||
|
||||
|
||||
minetest.register_alias("oil:gas", "mine_gas:gas")
|
||||
minetest.register_alias("oil:gas_seep", "mine_gas:gas_seep")
|
||||
|
||||
minetest.register_node("mine_gas:gas", {
|
||||
description = S("Mine Gas"),
|
||||
_doc_items_longdesc = gas_desc,
|
||||
_doc_items_usagehelp = gas_usage,
|
||||
walkable = false,
|
||||
pointable = false,
|
||||
diggable = false,
|
||||
buildable_to = true,
|
||||
drawtype = "glasslike",
|
||||
drowning = 1,
|
||||
post_effect_color = {a = 20, r = 20, g = 20, b = 250},
|
||||
tiles = {"mine_gas.png^[opacity:28"},
|
||||
use_texture_alpha = true,
|
||||
groups = {not_in_creative_inventory=1, ropes_can_extend_into=1},
|
||||
paramtype = "light",
|
||||
drop = {},
|
||||
sunlight_propagates = true,
|
||||
--on_blast = function() end, -- unaffected by explosions
|
||||
})
|
||||
|
||||
minetest.register_node("mine_gas:gas_seep", {
|
||||
description = S("Gas Seep"),
|
||||
_doc_items_longdesc = seep_desc,
|
||||
_doc_items_usagehelp = seep_usage,
|
||||
tiles = {"default_stone.png^default_mineral_coal.png^[combine:16x80:0,-16=crack_anylength.png"},
|
||||
groups = {cracky = 3},
|
||||
drop = 'default:coal_lump',
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
is_ground_content = true,
|
||||
})
|
||||
|
||||
minetest.register_on_dignode(function(pos, oldnode, digger)
|
||||
if minetest.get_item_group(oldnode.name, "digtron") > 0 then
|
||||
-- skip digtron moved nodes
|
||||
return;
|
||||
end
|
||||
|
||||
local np = minetest.find_node_near(pos, 1,{"mine_gas:gas"})
|
||||
if np ~= nil then
|
||||
minetest.set_node(pos, {name = "mine_gas:gas"})
|
||||
return
|
||||
end
|
||||
end)
|
||||
|
||||
local directions = {
|
||||
{x=1, y=0, z=0},
|
||||
{x=-1, y=0, z=0},
|
||||
{x=0, y=0, z=1},
|
||||
{x=0, y=0, z=-1},
|
||||
}
|
||||
|
||||
local gas_node = {name="mine_gas:gas"}
|
||||
minetest.register_abm({
|
||||
label = "mine_gas:gas movement",
|
||||
nodenames = {"mine_gas:gas"},
|
||||
neighbors = {"group:liquid", "air"},
|
||||
interval = 1.0,
|
||||
chance = 1,
|
||||
catch_up = true,
|
||||
action = function(pos, node)
|
||||
local next_pos = {x=pos.x, y=pos.y+1, z=pos.z}
|
||||
local next_node = minetest.get_node(next_pos)
|
||||
if minetest.get_item_group(next_node.name, "liquid") > 0 then
|
||||
minetest.swap_node(next_pos, gas_node)
|
||||
minetest.swap_node(pos, next_node)
|
||||
else
|
||||
next_pos.y = pos.y-1
|
||||
next_node = minetest.get_node(next_pos)
|
||||
if next_node.name == "air" then
|
||||
minetest.swap_node(next_pos, gas_node)
|
||||
minetest.swap_node(pos, next_node)
|
||||
else
|
||||
local dir = directions[math.random(1,4)]
|
||||
local next_pos = vector.add(pos, dir)
|
||||
local next_node = minetest.get_node(next_pos)
|
||||
if next_node.name == "air" or minetest.get_item_group(next_node.name, "liquid") > 0 then
|
||||
if next_node.name == "air" or math.random() < 0.5 then -- gas never "climbs" above air.
|
||||
minetest.swap_node(next_pos, gas_node)
|
||||
minetest.swap_node(pos, next_node)
|
||||
else
|
||||
-- this can get gas to rise up out of the surface of liquid, preventing it from forming a permanent hole.
|
||||
next_pos.y = next_pos.y + 1
|
||||
next_node = minetest.get_node(next_pos)
|
||||
if next_node.name == "air" then
|
||||
minetest.swap_node(next_pos, gas_node)
|
||||
minetest.swap_node(pos, next_node)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
minetest.register_abm({
|
||||
label = "mine_gas:gas snuffing torches",
|
||||
nodenames = {"group:torch"},
|
||||
neighbors = {"mine_gas:gas"},
|
||||
interval = 1.0,
|
||||
chance = 1,
|
||||
catch_up = true,
|
||||
action = function(pos, node)
|
||||
if not minetest.find_node_near(pos, 1, "air") then
|
||||
local torch_node = minetest.get_node(pos)
|
||||
local drops = minetest.get_node_drops(torch_node.name, "")
|
||||
for _, dropped_item in pairs(drops) do
|
||||
minetest.add_item(pos, dropped_item)
|
||||
end
|
||||
minetest.set_node(pos, {name="mine_gas:gas"})
|
||||
minetest.sound_play(
|
||||
"default_cool_lava",
|
||||
{pos = pos, max_hear_distance = 16, gain = 0.1}
|
||||
)
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
if minetest.get_modpath("tnt") then
|
||||
minetest.register_abm({
|
||||
label = "mine_gas:gas ignition",
|
||||
nodenames = {"group:torch", "group:igniter"},
|
||||
neighbors = {"mine_gas:gas"},
|
||||
interval = 1.0,
|
||||
chance = 1,
|
||||
catch_up = true,
|
||||
action = function(pos, node)
|
||||
if minetest.find_node_near(pos, 1, "air") then
|
||||
tnt.boom(pos, {radius=1, damage_radius=6})
|
||||
end
|
||||
end,
|
||||
})
|
||||
end
|
||||
|
||||
local orthogonal = {
|
||||
{x=0,y=0,z=1},
|
||||
{x=0,y=1,z=0},
|
||||
{x=1,y=0,z=0},
|
||||
{x=0,y=0,z=-1},
|
||||
{x=0,y=-1,z=0},
|
||||
{x=-1,y=0,z=0},
|
||||
}
|
||||
|
||||
minetest.register_abm({
|
||||
label = "mine_gas:gas seep",
|
||||
nodenames = {"mine_gas:gas_seep"},
|
||||
neighbors = {"air"},
|
||||
interval = 1.0,
|
||||
chance = 1,
|
||||
catch_up = true,
|
||||
action = function(pos, node)
|
||||
local target_pos = vector.add(pos,orthogonal[math.random(1,6)])
|
||||
if minetest.get_node(target_pos).name == "air" then
|
||||
minetest.swap_node(target_pos, {name="mine_gas:gas"})
|
||||
if math.random() < 0.5 then
|
||||
minetest.sound_play(
|
||||
"mine_gas_seep_hiss",
|
||||
{pos = pos, max_hear_distance = 8, gain = 0.05}
|
||||
)
|
||||
end
|
||||
end
|
||||
end,
|
||||
})
|
45
mine_gas/intllib.lua
Normal file
45
mine_gas/intllib.lua
Normal file
@ -0,0 +1,45 @@
|
||||
|
||||
-- Fallback functions for when `intllib` is not installed.
|
||||
-- Code released under Unlicense <http://unlicense.org>.
|
||||
|
||||
-- Get the latest version of this file at:
|
||||
-- https://raw.githubusercontent.com/minetest-mods/intllib/master/lib/intllib.lua
|
||||
|
||||
local function format(str, ...)
|
||||
local args = { ... }
|
||||
local function repl(escape, open, num, close)
|
||||
if escape == "" then
|
||||
local replacement = tostring(args[tonumber(num)])
|
||||
if open == "" then
|
||||
replacement = replacement..close
|
||||
end
|
||||
return replacement
|
||||
else
|
||||
return "@"..open..num..close
|
||||
end
|
||||
end
|
||||
return (str:gsub("(@?)@(%(?)(%d+)(%)?)", repl))
|
||||
end
|
||||
|
||||
local gettext, ngettext
|
||||
if minetest.get_modpath("intllib") then
|
||||
if intllib.make_gettext_pair then
|
||||
-- New method using gettext.
|
||||
gettext, ngettext = intllib.make_gettext_pair()
|
||||
else
|
||||
-- Old method using text files.
|
||||
gettext = intllib.Getter()
|
||||
end
|
||||
end
|
||||
|
||||
-- Fill in missing functions.
|
||||
|
||||
gettext = gettext or function(msgid, ...)
|
||||
return format(msgid, ...)
|
||||
end
|
||||
|
||||
ngettext = ngettext or function(msgid, msgid_plural, n, ...)
|
||||
return format(n==1 and msgid or msgid_plural, ...)
|
||||
end
|
||||
|
||||
return gettext, ngettext
|
51
mine_gas/locale/template.pot
Normal file
51
mine_gas/locale/template.pot
Normal file
@ -0,0 +1,51 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2019-03-26 00:49-0600\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=CHARSET\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: dfcaverns\mine_gas\init.lua:11
|
||||
msgid ""
|
||||
"Gaseous hydrocarbons formed from the detritus of long dead plants and "
|
||||
"animals processed by heat and pressure deep within the earth."
|
||||
msgstr ""
|
||||
|
||||
#: dfcaverns\mine_gas\init.lua:12
|
||||
msgid ""
|
||||
"Gas is highly hazardous. Heavier than air, it pools in deep caverns and "
|
||||
"asphyxiates the unwary."
|
||||
msgstr ""
|
||||
|
||||
#: dfcaverns\mine_gas\init.lua:14
|
||||
msgid ""
|
||||
"When exposed to air and an ignition source it can produce a deadly explosion."
|
||||
msgstr ""
|
||||
|
||||
#: dfcaverns\mine_gas\init.lua:17
|
||||
msgid "Some coal deposits have cracks that seep a steady flow of mine gas."
|
||||
msgstr ""
|
||||
|
||||
#: dfcaverns\mine_gas\init.lua:18
|
||||
msgid "Mining out such a deposit seals the crack."
|
||||
msgstr ""
|
||||
|
||||
#: dfcaverns\mine_gas\init.lua:26
|
||||
msgid "Mine Gas"
|
||||
msgstr ""
|
||||
|
||||
#: dfcaverns\mine_gas\init.lua:46
|
||||
msgid "Gas Seep"
|
||||
msgstr ""
|
6
mine_gas/locale/update.bat
Normal file
6
mine_gas/locale/update.bat
Normal file
@ -0,0 +1,6 @@
|
||||
@echo off
|
||||
setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
|
||||
cd ..
|
||||
set LIST=
|
||||
for /r %%X in (*.lua) do set LIST=!LIST! %%X
|
||||
..\..\intllib\tools\xgettext.bat %LIST%
|
1
mine_gas/mod.conf
Normal file
1
mine_gas/mod.conf
Normal file
@ -0,0 +1 @@
|
||||
name = mine_gas
|
2
mine_gas/sounds/license.txt
Normal file
2
mine_gas/sounds/license.txt
Normal file
@ -0,0 +1,2 @@
|
||||
mine_gas_seep_hiss.1 is from https://freesound.org/people/wubitog/sounds/234782/ under the public domain (CC0)
|
||||
mine_gas_seep_hiss.2 is from https://freesound.org/people/kgatto/sounds/240263/ by kgatto under the CC-BY-3.0 license
|
BIN
mine_gas/sounds/mine_gas_seep_hiss.1.ogg
Normal file
BIN
mine_gas/sounds/mine_gas_seep_hiss.1.ogg
Normal file
Binary file not shown.
BIN
mine_gas/sounds/mine_gas_seep_hiss.2.ogg
Normal file
BIN
mine_gas/sounds/mine_gas_seep_hiss.2.ogg
Normal file
Binary file not shown.
1
mine_gas/textures/license.txt
Normal file
1
mine_gas/textures/license.txt
Normal file
@ -0,0 +1 @@
|
||||
All textures not specifically listed here are created by FaceDeer and released under both the MIT license and under the Creative Commons CC0 license.
|
BIN
mine_gas/textures/mine_gas.png
Normal file
BIN
mine_gas/textures/mine_gas.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 141 B |
Reference in New Issue
Block a user