mods that hopefully work for a TechAge-based pack
This commit is contained in:
1 parent
4e6b08d194
commit
c27db2a537
6234 files changed
+375578
No files matched your search
@@ -0,0 +1,182 @@
|
||||
--[[
|
||||
|
||||
TechAge
|
||||
=======
|
||||
|
||||
Copyright (C) 2019 Joachim Stolberg
|
||||
|
||||
AGPL v3
|
||||
See LICENSE.txt for more information
|
||||
|
||||
Biogas flare
|
||||
|
||||
]]--
|
||||
|
||||
|
||||
local HEIGHT = 7
|
||||
|
||||
local function remove_flame(pos)
|
||||
local idx
|
||||
for idx=HEIGHT,1,-1 do
|
||||
pos = {x=pos.x, y=pos.y+1, z=pos.z}
|
||||
local node = minetest.get_node(pos)
|
||||
if string.find(node.name, "techage:flame") then
|
||||
minetest.remove_node(pos)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local function flame(pos)
|
||||
local idx
|
||||
for idx=HEIGHT,1,-1 do
|
||||
pos = {x=pos.x, y=pos.y+1, z=pos.z}
|
||||
idx = math.min(idx, 12)
|
||||
local node = minetest.get_node(pos)
|
||||
if node.name ~= "air" then
|
||||
return
|
||||
end
|
||||
minetest.add_node(pos, {name = "techage:flame"..math.min(idx,7)})
|
||||
local meta = minetest.get_meta(pos)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
local lRatio = {120, 110, 95, 75, 55, 28, 0}
|
||||
local lColor = {"000080", "400040", "800000", "800000", "800000", "800000", "800000"}
|
||||
for idx,ratio in ipairs(lRatio) do
|
||||
local color = "techage_flame_animated.png^[colorize:#"..lColor[idx].."B0:"..ratio
|
||||
minetest.register_node("techage:flame"..idx, {
|
||||
drawtype = "nodebox",
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-3/8, -4/8, -2/8, 3/8, 4/8, 2/8},
|
||||
{-2/8, -4/8, -3/8, 2/8, 4/8, 3/8},
|
||||
},
|
||||
},
|
||||
tiles = {
|
||||
{
|
||||
name = color,
|
||||
animation = {
|
||||
type = "vertical_frames",
|
||||
aspect_w = 16,
|
||||
aspect_h = 16,
|
||||
length = 1
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
after_destruct = function(pos, oldnode)
|
||||
pos.y = pos.y + 1
|
||||
local node = minetest.get_node(pos)
|
||||
if minetest.get_item_group(node.name, "techage_flame") > 0 then
|
||||
minetest.remove_node(pos)
|
||||
end
|
||||
end,
|
||||
|
||||
use_texture_alpha = techage.BLEND,
|
||||
inventory_image = "techage_flame.png",
|
||||
paramtype = "light",
|
||||
light_source = 13,
|
||||
walkable = false,
|
||||
pointable = false,
|
||||
diggable = false,
|
||||
buildable_to = true,
|
||||
is_ground_content = false,
|
||||
drop = "",
|
||||
drowning = 1,
|
||||
damage_per_second = 4 + idx,
|
||||
groups = {igniter = 2, dig_immediate = 3, techage_flame=1, not_in_creative_inventory=1},
|
||||
drop = "",
|
||||
})
|
||||
end
|
||||
|
||||
local function start_flarestack(pos, playername)
|
||||
if minetest.is_protected(
|
||||
{x=pos.x, y=pos.y+1, z=pos.z},
|
||||
playername) then
|
||||
return
|
||||
end
|
||||
local meta = minetest.get_meta(pos)
|
||||
flame({x=pos.x, y=pos.y+1, z=pos.z})
|
||||
local handle = minetest.sound_play("gasflare", {
|
||||
pos = pos,
|
||||
max_hear_distance = 20,
|
||||
gain = 1,
|
||||
loop = true})
|
||||
--print("handle", handle)
|
||||
meta:set_int("handle", handle)
|
||||
end
|
||||
|
||||
local function stop_flarestack(pos, handle)
|
||||
remove_flame({x=pos.x, y=pos.y+1, z=pos.z})
|
||||
minetest.sound_stop(handle)
|
||||
end
|
||||
|
||||
minetest.register_node("techage:gasflare", {
|
||||
description = "gas flare",
|
||||
tiles = {
|
||||
"techage_gasflare.png",
|
||||
"techage_gasflare.png",
|
||||
"techage_gasflare.png",
|
||||
"techage_gasflare.png",
|
||||
"techage_gasflare.png",
|
||||
"techage_gasflare.png^techage_appl_hole2.png",
|
||||
},
|
||||
|
||||
after_place_node = function(pos, placer, itemstack, pointed_thing)
|
||||
local node = minetest.get_node({x=pos.x, y=pos.y+1, z=pos.z})
|
||||
if node.name ~= "air" then
|
||||
return
|
||||
end
|
||||
minetest.add_node({x=pos.x, y=pos.y+1, z=pos.z}, {name = "techage:gasflare2"})
|
||||
end,
|
||||
|
||||
on_punch = function(pos, node, puncher)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local handle = meta:get_int("handle")
|
||||
minetest.sound_stop(handle)
|
||||
start_flarestack(pos, puncher:get_player_name())
|
||||
end,
|
||||
|
||||
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
||||
--print(dump(oldmetadata))
|
||||
stop_flarestack(pos, oldmetadata.fields.handle)
|
||||
local node = minetest.get_node({x=pos.x, y=pos.y+1, z=pos.z})
|
||||
if node.name == "techage:gasflare2" then
|
||||
minetest.remove_node({x=pos.x, y=pos.y+1, z=pos.z})
|
||||
end
|
||||
end,
|
||||
|
||||
paramtype = "light",
|
||||
light_source = 0,
|
||||
sunlight_propagates = true,
|
||||
paramtype2 = "facedir",
|
||||
groups = {cracky=2, crumbly=2, choppy=2},
|
||||
is_ground_content = false,
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
})
|
||||
|
||||
minetest.register_node("techage:gasflare2", {
|
||||
description = "",
|
||||
tiles = {
|
||||
"techage_gasflare.png^techage_appl_hole2.png",
|
||||
"techage_gasflare.png"
|
||||
},
|
||||
|
||||
drawtype = "nodebox",
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-1/8, -4/8, -1/8, 1/8, 4/8, 1/8},
|
||||
{-4/8, 3/8, -4/8, 4/8, 4/8, 4/8},
|
||||
},
|
||||
},
|
||||
paramtype = "light",
|
||||
light_source = 0,
|
||||
sunlight_propagates = true,
|
||||
paramtype2 = "facedir",
|
||||
diggable = false,
|
||||
is_ground_content = false,
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
})
|
||||
Reference in new issue
Block a user