Add the nightcall.

master
Beha 2017-01-05 00:35:58 -05:00
parent 506370fafc
commit 8c8bff8e9d
8 changed files with 81 additions and 4 deletions

View File

@ -24,7 +24,7 @@ kingdoms.config.default_level_heavy_doors = 15 -- Open heavy locked doors within
kingdoms.config.default_level_build = 10 -- Build within the corestone's range.
--- Basic
kingdoms.config.default_level_furnaces = 1 -- Use furnaces within the corestone's range.
kingdoms.config.default_level_devices = 1 -- Use devices within the corestone's range.
kingdoms.config.default_level_chests = 1 -- Open locked chests within the corestone's range.
kingdoms.config.default_level_doors = 1 -- Open locked doors within the corestone's range.
kingdoms.config.default_level_talk = 1 -- Talk in the kingdom's main channel.

View File

@ -4,7 +4,7 @@
--
local function active_formspec(fuel_percent, item_percent)
local formspec =
local formspec =
"size[8,8.5]"..
default.gui_bg..
default.gui_bg_img..
@ -55,7 +55,7 @@ local function can_dig(pos, player)
end
local function allow_metadata_inventory_put(pos, listname, index, stack, player)
if not kingdoms.check_pos_level(pos, player:get_player_name(), "furnaces", "You are not of a sufficient level to use this furnace.") then
if not kingdoms.check_pos_level(pos, player:get_player_name(), "devices", "You are not of a sufficient level to use this furnace.") then
return 0
end
local meta = minetest.get_meta(pos)
@ -84,7 +84,7 @@ local function allow_metadata_inventory_move(pos, from_list, from_index, to_list
end
local function allow_metadata_inventory_take(pos, listname, index, stack, player)
if not kingdoms.check_pos_level(pos, player:get_player_name(), "furnaces", "You are not of a sufficient level to use this furnace.") then
if not kingdoms.check_pos_level(pos, player:get_player_name(), "devices", "You are not of a sufficient level to use this furnace.") then
return 0
end
return stack:get_count()

View File

@ -22,6 +22,21 @@ function kingdoms.player.can(name, level)
return (kingdom.members[name].level >= check)
end
function kingdoms.player.canpos(pos, name, level)
local akingdom = kingdoms.bypos(pos)
local pkingdom = kingdoms.player.kingdom(name)
if not akingdom then
return true
end
if not pkingdom then
return false
end
if akingdom.id ~= pkingdom.id then
return false
end
return kingdoms.player.can(name, level)
end
local function respawn(player)
local kingdom = kingdoms.player.kingdom(player:get_player_name())

View File

@ -23,3 +23,9 @@ for _,def in ipairs(magic.crystals) do
})
end
end
minetest.register_craft({
type = "shapeless",
output = "magic:null_essence 3",
recipe = {"group:minor_essence", "default:gold_ingot", "group:minor_essence"},
})

View File

@ -87,6 +87,11 @@ magic.crystals = {
},
}
minetest.register_craftitem("magic:null_essence", {
description = "Null Essence",
inventory_image = "magic_essence.png",
})
for _,def in ipairs(magic.crystals) do
minetest.register_node("magic:crystal_"..def.name, {
description = def.desc.." Crystal",
@ -103,6 +108,7 @@ for _,def in ipairs(magic.crystals) do
minetest.register_craftitem("magic:"..def.name.."_essence", {
description = def.desc.." Essence",
inventory_image = "magic_essence.png^[colorize:"..def.color..":"..tostring(0xCC),
groups = {minor_essence = 1},
})
minetest.register_craftitem("magic:concentrated_"..def.name.."_essence", {

View File

@ -25,5 +25,6 @@ minetest.override_item("default:mese", {
domodfile("crystals.lua")
domodfile("spells.lua")
domodfile("crafts.lua")
domodfile("timegens.lua")
magic.log("action", "Loaded.")

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

49
magic/timegens.lua Normal file
View File

@ -0,0 +1,49 @@
minetest.register_node("magic:nightcall", {
description = "Nightcall",
tiles = {"magic_nightcall.png"},
groups = {cracky = 1, level = 2},
after_place_node = function(pos)
local meta = minetest.get_meta(pos)
meta:get_inventory():set_size("input", 1)
meta:get_inventory():set_size("output", 6)
meta:set_string("formspec", [[
size[8,7]
label[0,0.1;Input null essences during the night to produce night essences.]
list[context;input;0,1;1,1;]
list[context;output;2,1;6,1;]
list[current_player;main;0,3;8,4;]
]])
end,
on_metadata_inventory_put = function(pos, listname, index, stack, player)
local meta = minetest.get_meta(pos)
meta:get_inventory():set_list("input", {})
local leftover = meta:get_inventory():add_item("output", "magic:night_essence "..tostring(stack:get_count()))
minetest.add_item(vector.add(pos, {x=0, y=1, z=0}), leftover)
end,
allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
return 0
end,
allow_metadata_inventory_put = function(pos, listname, index, stack, player)
local tod = minetest.get_timeofday()
if listname ~= "input" then return 0 end
if stack:get_name() ~= "magic:null_essence" then
return 0
end
if not kingdoms.player.canpos(pos, player:get_player_name(), "devices") then
minetest.chat_send_player(player:get_player_name(), "You cannot use this device.")
return 0
end
if not (tod < 0.2 or tod > 0.805) then
minetest.chat_send_player(player:get_player_name(), "It is not night.")
return 0
end
return stack:get_count()
end,
allow_metadata_inventory_take = function(pos, listname, index, stack, player)
if not kingdoms.player.canpos(pos, player:get_player_name(), "devices") then
minetest.chat_send_player(player:get_player_name(), "You cannot use this device.")
return 0
end
return stack:get_count()
end,
})