techage/oil/tower.lua
2022-01-03 21:40:31 +01:00

287 lines
7.8 KiB
Lua

--[[
TechAge
=======
Copyright (C) 2019-2020 Joachim Stolberg
AGPL v3
See LICENSE.txt for more information
TA3 Oil Tower
]]--
-- for lazy programmers
local P = minetest.string_to_pos
local M = minetest.get_meta
local S = techage.S
minetest.register_node("techage:oiltower1", {
description = S("TA3 Derrick"),
tiles = {
"techage_oil_tower1.png",
},
drawtype = "nodebox",
node_box = {
type = "fixed",
fixed = {
{-8/16, -8/16, -8/16, -7/16, 8/16, 8/16},
{ 7/16, -8/16, -8/16, 8/16, 8/16, 8/16},
{-8/16, -8/16, -8/16, 8/16, -7/16, 8/16},
{-8/16, 7/16, -8/16, 8/16, 8/16, 8/16},
{-8/16, -8/16, -8/16, 8/16, 8/16, -7/16},
{-8/16, -8/16, 7/16, 8/16, 8/16, 8/16},
},
},
drop = "",
diggable = false,
paramtype2 = "facedir",
paramtype = "light",
use_texture_alpha = techage.CLIP,
sunlight_propagates = true,
groups = {not_in_creative_inventory = 1},
is_ground_content = false,
})
minetest.register_node("techage:oiltower2", {
description = S("TA3 Derrick"),
tiles = {
-- up, down, right, left, back, front
"techage_oil_tower_top.png^[transformR180",
"techage_oil_tower_top.png^[transformR180",
"techage_oil_tower2.png^[transformFX",
"techage_oil_tower2.png",
"techage_oil_tower2.png",
"techage_oil_tower2.png^[transformFX",
},
drawtype = "nodebox",
node_box = {
type = "fixed",
fixed = {
{-8/16, -8/16, -8/16, -7/16, 8/16, 4/16},
{ 3/16, -8/16, -8/16, 4/16, 8/16, 4/16},
{-8/16, -8/16, -8/16, 4/16, -7/16, 4/16},
{-8/16, 7/16, -8/16, 4/16, 8/16, 4/16},
{-8/16, -8/16, -8/16, 4/16, 8/16, -7/16},
{-8/16, -8/16, 3/16, 4/16, 8/16, 4/16},
},
},
drop = "",
diggable = false,
paramtype2 = "facedir",
paramtype = "light",
use_texture_alpha = techage.CLIP,
sunlight_propagates = true,
groups = {not_in_creative_inventory = 1},
is_ground_content = false,
})
minetest.register_node("techage:oiltower3", {
description = S("TA3 Derrick"),
tiles = {
-- up, down, right, left, back, front
"techage_oil_tower_top.png^[transformR180",
"techage_oil_tower_top.png^[transformR180",
"techage_oil_tower3.png^[transformFX",
"techage_oil_tower3.png",
"techage_oil_tower3.png",
"techage_oil_tower3.png^[transformFX",
},
drawtype = "nodebox",
node_box = {
type = "fixed",
fixed = {
{-8/16, -8/16, -8/16, -7/16, 8/16, 0/16},
{-1/16, -8/16, -8/16, 0/16, 8/16, 0/16},
{-8/16, -8/16, -8/16, 0/16, -7/16, 0/16},
{-8/16, 7/16, -8/16, 0/16, 8/16, 0/16},
{-8/16, -8/16, -8/16, 0/16, 8/16, -7/16},
{-8/16, -8/16, -1/16, 0/16, 8/16, 0/16},
},
},
drop = "",
diggable = false,
paramtype2 = "facedir",
paramtype = "light",
use_texture_alpha = techage.CLIP,
sunlight_propagates = true,
groups = {not_in_creative_inventory = 1},
is_ground_content = false,
})
minetest.register_node("techage:oiltower4", {
description = S("TA3 Derrick"),
tiles = {
-- up, down, right, left, back, front
"techage_oil_tower_top.png^[transformR180",
"techage_oil_tower_top.png^[transformR180",
"techage_oil_tower4.png^[transformFX",
"techage_oil_tower4.png",
"techage_oil_tower4.png",
"techage_oil_tower4.png^[transformFX",
},
drawtype = "nodebox",
node_box = {
type = "fixed",
fixed = {
{-8/16, -8/16, -8/16, -7/16, 8/16, -4/16},
{-5/16, -8/16, -8/16, -4/16, 8/16, -4/16},
{-8/16, -8/16, -8/16, -4/16, -7/16, -4/16},
{-8/16, 7/16, -8/16, -4/16, 8/16, -4/16},
{-8/16, -8/16, -8/16, -4/16, 8/16, -7/16},
{-8/16, -8/16, -5/16, -4/16, 8/16, -4/16},
},
},
drop = "",
diggable = false,
paramtype2 = "facedir",
paramtype = "light",
use_texture_alpha = techage.CLIP,
sunlight_propagates = true,
groups = {not_in_creative_inventory = 1},
is_ground_content = false,
})
minetest.register_node("techage:oiltower5", {
description = S("TA4 Derrick"),
tiles = {
-- up, down, right, left, back, front
"techage_oil_tower1.png",
},
drawtype = "nodebox",
node_box = {
type = "fixed",
fixed = {
{-8/16, -8/16, 7/16, 8/16, 8/16, 8/16},
},
},
drop = "",
diggable = false,
paramtype2 = "facedir",
paramtype = "light",
use_texture_alpha = techage.CLIP,
sunlight_propagates = true,
groups = {not_in_creative_inventory = 1},
is_ground_content = false,
})
minetest.register_node("techage:oil_drillbit", {
description = S("TA3 Drill Pipe"),
drawtype = "plantlike",
tiles = {"techage_oil_drillbit.png"},
inventory_image = "techage_oil_drillbit_inv.png",
wield_image = "techage_oil_drillbit_inv.png",
visual_scale = 1,
paramtype = "light",
use_texture_alpha = techage.CLIP,
sunlight_propagates = true,
groups = {cracky = 1},
is_ground_content = false,
})
minetest.register_node("techage:oil_drillbit2", {
description = S("TA3 Drill Pipe"),
drawtype = "plantlike",
tiles = {"techage_oil_drillbit.png"},
inventory_image = "techage_oil_drillbit_inv.png",
wield_image = "techage_oil_drillbit_inv.png",
visual_scale = 1,
paramtype = "light",
use_texture_alpha = techage.CLIP,
drop = "",
diggable = false,
sunlight_propagates = true,
groups = {not_in_creative_inventory = 1},
is_ground_content = false,
})
local AssemblyPlan = {
-- y-offs, path, facedir-offs, name
-- level 0
{ 0, {0,1}, 0, "techage:oiltower1"},
{ 0, {0,3}, 0, "techage:oiltower1"},
{ 0, {2,1}, 0, "techage:oiltower1"},
{ 0, {2,3}, 0, "techage:oiltower1"},
-- level 1
{ 1, {0,1}, 0, "techage:oiltower1"},
{ 1, {0,3}, 0, "techage:oiltower1"},
{ 1, {2,1}, 0, "techage:oiltower1"},
{ 1, {2,3}, 0, "techage:oiltower1"},
{ 1, {0}, 2, "techage:oiltower5"},
{ 1, {1}, 3, "techage:oiltower5"},
{ 1, {2}, 0, "techage:oiltower5"},
{ 1, {3}, 1, "techage:oiltower5"},
-- level 2
{ 2, {0,1}, 0, "techage:oiltower2"},
{ 2, {0,3}, 3, "techage:oiltower2"},
{ 2, {2,1}, 1, "techage:oiltower2"},
{ 2, {2,3}, 2, "techage:oiltower2"},
{ 2, {0}, 2, "techage:oiltower5"},
{ 2, {1}, 3, "techage:oiltower5"},
{ 2, {2}, 0, "techage:oiltower5"},
{ 2, {3}, 1, "techage:oiltower5"},
-- level 3
{ 3, {0,1}, 0, "techage:oiltower3"},
{ 3, {0,3}, 3, "techage:oiltower3"},
{ 3, {2,1}, 1, "techage:oiltower3"},
{ 3, {2,3}, 2, "techage:oiltower3"},
{ 3, {0}, 2, "techage:oiltower5"},
{ 3, {1}, 3, "techage:oiltower5"},
{ 3, {2}, 0, "techage:oiltower5"},
{ 3, {3}, 1, "techage:oiltower5"},
-- level 4
{ 4, {0,1}, 0, "techage:oiltower4"},
{ 4, {0,3}, 3, "techage:oiltower4"},
{ 4, {2,1}, 1, "techage:oiltower4"},
{ 4, {2,3}, 2, "techage:oiltower4"},
{ 4, {0}, 2, "techage:oiltower5"},
{ 4, {1}, 3, "techage:oiltower5"},
{ 4, {2}, 0, "techage:oiltower5"},
{ 4, {3}, 1, "techage:oiltower5"},
-- level 5
{ 5, {0}, 2, "techage:oiltower5"},
{ 5, {1}, 3, "techage:oiltower5"},
{ 5, {2}, 0, "techage:oiltower5"},
{ 5, {3}, 1, "techage:oiltower5"},
-- level 6
{ 6, {0}, 2, "techage:oiltower5"},
{ 6, {1}, 3, "techage:oiltower5"},
{ 6, {2}, 0, "techage:oiltower5"},
{ 6, {3}, 1, "techage:oiltower5"},
-- level 7
{ 7, {}, 0, "techage:oiltower1"},
-- drill bits
{ 1, {}, 0, "techage:oil_drillbit2"},
{ 2, {}, 0, "techage:oil_drillbit2"},
{ 3, {}, 0, "techage:oil_drillbit2"},
{ 4, {}, 0, "techage:oil_drillbit2"},
{ 5, {}, 0, "techage:oil_drillbit2"},
{ 6, {}, 0, "techage:oil_drillbit2"},
}
minetest.register_craft({
output = "techage:oil_drillbit 12",
recipe = {
{"", "default:steel_ingot", "default:obsidian_shard"},
{"", "default:steel_ingot", ""},
{"default:obsidian_shard", "default:steel_ingot", ""},
},
})
techage.oiltower = {}
-- Two important flags:
-- 1) mem.assemble_locked is true while the tower is being assembled/disassembled
-- 2) mem.assemble_build is true if the tower is assembled
function techage.oiltower.build(pos, player_name)
minetest.chat_send_player(player_name, S("[TA] Derrick is being built!"))
techage.assemble.build(pos, AssemblyPlan, player_name)
end
function techage.oiltower.remove(pos, player_name)
minetest.chat_send_player(player_name, S("[TA] Derrick is being removed!"))
techage.assemble.remove(pos, AssemblyPlan, player_name)
end