166 lines
5.8 KiB
Lua
166 lines
5.8 KiB
Lua
--[[
|
|
|
|
TechAge
|
|
=======
|
|
|
|
Copyright (C) 2017-2019 Joachim Stolberg
|
|
|
|
GPL v3
|
|
See LICENSE.txt for more information
|
|
|
|
repairkit.lua:
|
|
]]--
|
|
|
|
-- for lazy programmers
|
|
local M = minetest.get_meta
|
|
local S = techage.S
|
|
|
|
local Nodes2Convert = {
|
|
["techage:detector_off"] = "techage:ta3_detector_off",
|
|
["techage:detector_on"] = "techage:ta3_detector_on",
|
|
["techage:repeater"] = "techage:ta3_repeater",
|
|
["techage:button_off"] = "techage:ta3_button_off",
|
|
["techage:button_on"] = "techage:ta3_button_on",
|
|
}
|
|
|
|
local function power_data(power)
|
|
local tbl = {}
|
|
tbl[1] = S("Primary available") ..": "..(power.prim_available or 0)
|
|
tbl[2] = S("Secondary available") ..": "..(power.sec_available or 0)
|
|
tbl[3] = S("Primary needed") ..": "..(power.prim_needed or 0)
|
|
tbl[4] = S("Secondary needed") ..": "..(power.sec_needed or 0)
|
|
tbl[5] = S("Number of nodes") ..": "..(power.num_nodes or 0)
|
|
tbl[6] = ""
|
|
return table.concat(tbl, "\n")
|
|
end
|
|
|
|
local function read_state(itemstack, user, pointed_thing)
|
|
local pos = pointed_thing.under
|
|
if pos and user then
|
|
local time = math.floor(minetest.get_timeofday() * 24 * 6)
|
|
local hours = math.floor(time / 6)
|
|
local mins = (time % 6) * 10
|
|
if mins < 10 then mins = "00" end
|
|
minetest.chat_send_player(user:get_player_name(), S("Time")..": "..hours..":"..mins.." ")
|
|
local data = minetest.get_biome_data(pos)
|
|
if data then
|
|
local name = minetest.get_biome_name(data.biome)
|
|
minetest.chat_send_player(user:get_player_name(), S("Biome")..": "..name..", "..S("Position temperature")..": "..math.floor(data.heat).." ")
|
|
if techage.OceanIdTbl[data.biome] then
|
|
minetest.chat_send_player(user:get_player_name(), "Suitable for wind turbines")
|
|
end
|
|
end
|
|
local number = techage.get_node_number(pos)
|
|
local node = minetest.get_node(pos)
|
|
if Nodes2Convert[node.name] then
|
|
if minetest.is_protected(pos, user:get_player_name()) then
|
|
return
|
|
end
|
|
node.name = Nodes2Convert[node.name]
|
|
minetest.swap_node(pos, node)
|
|
return
|
|
end
|
|
local ndef = minetest.registered_nodes[node.name]
|
|
if number then
|
|
if ndef and ndef.description then
|
|
local info = techage.send_single("0", number, "info", nil)
|
|
if info and info ~= "" and info ~= "unsupported" then
|
|
info = dump(info)
|
|
minetest.chat_send_player(user:get_player_name(), ndef.description.." "..number..": Supported Commands:\n"..info.." ")
|
|
end
|
|
local state = techage.send_single("0", number, "state", nil)
|
|
if state and state ~= "" and state ~= "unsupported" then
|
|
state = dump(state)
|
|
minetest.chat_send_player(user:get_player_name(), ndef.description.." "..number..": state = "..state.." ")
|
|
end
|
|
local fuel = techage.send_single("0", number, "fuel", nil)
|
|
if fuel and fuel ~= "" and fuel ~= "unsupported" then
|
|
fuel = dump(fuel)
|
|
minetest.chat_send_player(user:get_player_name(), ndef.description.." "..number..": fuel = "..fuel.." ")
|
|
end
|
|
local counter = techage.send_single("0", number, "counter", nil)
|
|
if counter and counter ~= "" and counter ~= "unsupported" then
|
|
counter = dump(counter)
|
|
minetest.chat_send_player(user:get_player_name(), ndef.description.." "..number..": counter = "..counter.." ")
|
|
end
|
|
local load = techage.send_single("0", number, "load", nil)
|
|
if load and load ~= "" and load ~= "unsupported" then
|
|
load = dump(load)
|
|
minetest.chat_send_player(user:get_player_name(), ndef.description.." "..number..": load = "..load.." % ")
|
|
end
|
|
local capa = techage.send_single("0", number, "capa", nil)
|
|
if capa and capa ~= "" and capa ~= "unsupported" then
|
|
capa = dump(capa)
|
|
minetest.chat_send_player(user:get_player_name(), ndef.description.." "..number..": capa = "..capa.." % ")
|
|
end
|
|
local owner = M(pos):get_string("owner") or ""
|
|
if owner ~= "" then
|
|
minetest.chat_send_player(user:get_player_name(), S("Node owner")..": "..owner.." ")
|
|
end
|
|
minetest.chat_send_player(user:get_player_name(), S("Position")..": "..minetest.pos_to_string(pos).." ")
|
|
itemstack:add_wear(65636/200)
|
|
return itemstack
|
|
end
|
|
elseif ndef and ndef.description then
|
|
if ndef.is_power_available then
|
|
techage.power.mark_nodes(user:get_player_name(), pos)
|
|
local power = ndef.is_power_available(pos)
|
|
if power then
|
|
minetest.chat_send_player(user:get_player_name(), ndef.description..":\n"..power_data(power))
|
|
end
|
|
elseif ndef.techage_info then
|
|
local info = ndef.techage_info(pos) or ""
|
|
minetest.chat_send_player(user:get_player_name(), ndef.description..":\n"..info)
|
|
end
|
|
local owner = M(pos):get_string("owner") or ""
|
|
if owner ~= "" then
|
|
minetest.chat_send_player(user:get_player_name(), S("Node owner")..": "..owner.." ")
|
|
end
|
|
minetest.chat_send_player(user:get_player_name(), S("Position")..": "..minetest.pos_to_string(pos).." ")
|
|
itemstack:add_wear(65636/200)
|
|
return itemstack
|
|
end
|
|
end
|
|
end
|
|
|
|
minetest.register_tool("techage:repairkit", {
|
|
description = S("TechAge Repair Kit"),
|
|
inventory_image = "techage_repairkit.png",
|
|
wield_image = "techage_repairkit.png^[transformR270",
|
|
groups = {cracky=1, book=1},
|
|
on_use = read_state,
|
|
node_placement_prediction = "",
|
|
stack_max = 1,
|
|
})
|
|
|
|
|
|
minetest.register_tool("techage:end_wrench", {
|
|
description = S("TechAge Info Tool (use = read status info)"),
|
|
inventory_image = "techage_end_wrench.png",
|
|
wield_image = "techage_end_wrench.png",
|
|
groups = {cracky=1, book=1},
|
|
on_use = read_state,
|
|
on_place = read_state,
|
|
node_placement_prediction = "",
|
|
stack_max = 1,
|
|
})
|
|
|
|
--minetest.register_craft({
|
|
-- output = "techage:repairkit",
|
|
-- recipe = {
|
|
-- {"", "basic_materials:gear_steel", ""},
|
|
-- {"", "techage:end_wrench", ""},
|
|
-- {"", "basic_materials:oil_extract", ""},
|
|
-- },
|
|
--})
|
|
|
|
minetest.register_craft({
|
|
output = "techage:end_wrench",
|
|
recipe = {
|
|
{"", "", "default:steel_ingot"},
|
|
{"", "techage:iron_ingot", ""},
|
|
{"default:steel_ingot", "", ""},
|
|
},
|
|
})
|
|
|