Initial indentation pass
parent
33cef9af67
commit
4b0dde6d88
|
@ -44,16 +44,16 @@ minetest.register_node("epic:additem", {
|
|||
on_rotate = epic.on_rotate,
|
||||
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("pos", minetest.pos_to_string({x=0, y=0, z=0}))
|
||||
|
||||
local inv = meta:get_inventory()
|
||||
inv:set_size("main", 1)
|
||||
|
||||
update_formspec(meta, pos)
|
||||
end,
|
||||
update_formspec(meta, pos)
|
||||
end,
|
||||
|
||||
on_receive_fields = function(pos, _, fields, sender)
|
||||
on_receive_fields = function(pos, _, fields, sender)
|
||||
local playername = sender:get_player_name()
|
||||
if not sender or minetest.is_protected(pos, playername) then
|
||||
-- not allowed
|
||||
|
@ -65,8 +65,8 @@ minetest.register_node("epic:additem", {
|
|||
if fields.setpos then
|
||||
minetest.chat_send_player(playername, "[epic] Please punch the desired target position")
|
||||
epic.punchnode_callback(sender, {
|
||||
timeout = 300,
|
||||
callback = function(punch_pos)
|
||||
timeout = 300,
|
||||
callback = function(punch_pos)
|
||||
local pos_str = minetest.pos_to_string(epic.to_relative_pos(pos, vector.add(punch_pos, {x=0, y=0.5, z=0})))
|
||||
meta:set_string("pos", pos_str)
|
||||
minetest.chat_send_player(playername, "[epic] target position successfully set to " .. pos_str)
|
||||
|
@ -85,7 +85,7 @@ minetest.register_node("epic:additem", {
|
|||
)
|
||||
end
|
||||
end
|
||||
end,
|
||||
end,
|
||||
|
||||
allow_metadata_inventory_put = epic.allow_metadata_inventory_put,
|
||||
allow_metadata_inventory_take = epic.allow_metadata_inventory_take,
|
||||
|
@ -93,17 +93,17 @@ minetest.register_node("epic:additem", {
|
|||
-- allow mesecons triggering
|
||||
mesecons = {
|
||||
effector = {
|
||||
action_on = function (pos)
|
||||
action_on = function (pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
do_add_item(pos, meta)
|
||||
end
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
epic = {
|
||||
on_enter = function(pos, meta, _, ctx)
|
||||
on_enter = function(pos, meta, _, ctx)
|
||||
do_add_item(pos, meta)
|
||||
ctx.next()
|
||||
end
|
||||
}
|
||||
end
|
||||
}
|
||||
})
|
||||
|
|
|
@ -65,8 +65,8 @@ minetest.register_node("epic:branch", {
|
|||
groups = {cracky=3,oddly_breakable_by_hand=3,epic=1},
|
||||
on_rotate = epic.on_rotate,
|
||||
|
||||
epic = {
|
||||
on_enter = function(pos, _, player, ctx)
|
||||
epic = {
|
||||
on_enter = function(pos, _, player, ctx)
|
||||
|
||||
local node = epic.get_node(pos)
|
||||
local direction = epic.get_direction(node.param2)
|
||||
|
@ -105,13 +105,13 @@ minetest.register_node("epic:branch", {
|
|||
|
||||
if epic.log_executor then
|
||||
minetest.log("action", "[epic::branch] on_before_node_exit player=" ..
|
||||
player:get_player_name() ..
|
||||
" pos=" .. minetest.pos_to_string(target_pos) ..
|
||||
" node=" .. minetest.get_node(target_pos).name)
|
||||
player:get_player_name() ..
|
||||
" pos=" .. minetest.pos_to_string(target_pos) ..
|
||||
" node=" .. minetest.get_node(target_pos).name)
|
||||
end
|
||||
end
|
||||
end
|
||||
end,
|
||||
end,
|
||||
on_check = function(_, _, player, ctx)
|
||||
local next_called = false
|
||||
|
||||
|
@ -134,9 +134,9 @@ minetest.register_node("epic:branch", {
|
|||
if nodedef.epic and nodedef.epic.on_check then
|
||||
if epic.log_executor then
|
||||
minetest.log("action", "[epic::branch] on_before_node_check player=" ..
|
||||
player:get_player_name() ..
|
||||
" pos=" .. minetest.pos_to_string(target_pos) ..
|
||||
" node=" .. minetest.get_node(target_pos).name)
|
||||
player:get_player_name() ..
|
||||
" pos=" .. minetest.pos_to_string(target_pos) ..
|
||||
" node=" .. minetest.get_node(target_pos).name)
|
||||
end
|
||||
|
||||
nodedef.epic.on_check(target_pos, minetest.get_meta(target_pos), player, sub_ctx)
|
||||
|
@ -159,5 +159,5 @@ minetest.register_node("epic:branch", {
|
|||
end
|
||||
end
|
||||
end
|
||||
}
|
||||
}
|
||||
})
|
||||
|
|
|
@ -7,7 +7,7 @@ local update_formspec = function(meta)
|
|||
meta:set_string("formspec", "size[8,1;]" ..
|
||||
-- col 2
|
||||
"button_exit[0.1,0.5;4,1;setfn;Set function]" ..
|
||||
"button_exit[4.1,0.5;4,1;showpos;Show]" ..
|
||||
"button_exit[4.1,0.5;4,1;showpos;Show]" ..
|
||||
"")
|
||||
end
|
||||
|
||||
|
@ -19,12 +19,12 @@ minetest.register_node("epic:call", {
|
|||
on_rotate = epic.on_rotate,
|
||||
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("pos", minetest.pos_to_string({x=0, y=0, z=0}))
|
||||
update_formspec(meta, pos)
|
||||
end,
|
||||
update_formspec(meta, pos)
|
||||
end,
|
||||
|
||||
on_receive_fields = function(pos, _, fields, sender)
|
||||
on_receive_fields = function(pos, _, fields, sender)
|
||||
if not sender or minetest.is_protected(pos, sender:get_player_name()) then
|
||||
-- not allowed
|
||||
return
|
||||
|
@ -35,9 +35,9 @@ minetest.register_node("epic:call", {
|
|||
minetest.chat_send_player(playername, "[epic] Please punch the desired target function or epic")
|
||||
epic.punchnode_callback(sender, {
|
||||
nodes = {"epic:function", "epic:epic"},
|
||||
timeout = 300,
|
||||
timeout = 300,
|
||||
check_protection = true,
|
||||
callback = function(punch_pos)
|
||||
callback = function(punch_pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local pos_str = minetest.pos_to_string(epic.to_relative_pos(pos, punch_pos))
|
||||
meta:set_string("pos", pos_str)
|
||||
|
@ -51,18 +51,18 @@ minetest.register_node("epic:call", {
|
|||
local meta = minetest.get_meta(pos)
|
||||
local target_pos = minetest.string_to_pos(meta:get_string("pos"))
|
||||
if target_pos then
|
||||
epic.show_waypoint(
|
||||
sender:get_player_name(),
|
||||
epic.to_absolute_pos(pos, target_pos),
|
||||
"Target position",
|
||||
2
|
||||
)
|
||||
epic.show_waypoint(
|
||||
sender:get_player_name(),
|
||||
epic.to_absolute_pos(pos, target_pos),
|
||||
"Target position",
|
||||
2
|
||||
)
|
||||
end
|
||||
end
|
||||
end,
|
||||
end,
|
||||
|
||||
epic = {
|
||||
on_enter = function(pos, meta, player, ctx)
|
||||
on_enter = function(pos, meta, player, ctx)
|
||||
local target_pos_str = meta:get_string("pos")
|
||||
local here_pos_str = minetest.pos_to_string({x=0, y=0, z=0})
|
||||
if here_pos_str ~= target_pos_str then
|
||||
|
@ -93,6 +93,6 @@ minetest.register_node("epic:call", {
|
|||
-- recursion detected, proceed to next
|
||||
ctx.next()
|
||||
end
|
||||
end
|
||||
}
|
||||
end
|
||||
}
|
||||
})
|
||||
|
|
|
@ -7,7 +7,7 @@ minetest.register_node("epic:check_empty_armor", {
|
|||
on_rotate = epic.on_rotate,
|
||||
|
||||
epic = {
|
||||
on_check = function(_, _, player, ctx)
|
||||
on_check = function(_, _, player, ctx)
|
||||
local player_name = player:get_player_name()
|
||||
local player_armor_inv = minetest.get_inventory({type="detached", name=player_name.."_armor"})
|
||||
|
||||
|
@ -15,6 +15,6 @@ minetest.register_node("epic:check_empty_armor", {
|
|||
|
||||
ctx.next()
|
||||
end
|
||||
end
|
||||
}
|
||||
end
|
||||
}
|
||||
})
|
||||
|
|
|
@ -7,13 +7,13 @@ minetest.register_node("epic:check_empty_inv", {
|
|||
on_rotate = epic.on_rotate,
|
||||
|
||||
epic = {
|
||||
on_check = function(_, _, player, ctx)
|
||||
on_check = function(_, _, player, ctx)
|
||||
local player_inv = player:get_inventory()
|
||||
|
||||
if player_inv:is_empty("main") and player_inv:is_empty("craft") then
|
||||
ctx.next()
|
||||
end
|
||||
|
||||
end
|
||||
}
|
||||
end
|
||||
}
|
||||
})
|
||||
|
|
|
@ -43,33 +43,33 @@ minetest.register_node("epic:command", {
|
|||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("owner", placer:get_player_name())
|
||||
meta:set_string("cmd", "status")
|
||||
update_formspec(meta, pos)
|
||||
update_formspec(meta, pos)
|
||||
end,
|
||||
|
||||
on_receive_fields = function(pos, _, fields, sender)
|
||||
local meta = minetest.get_meta(pos);
|
||||
on_receive_fields = function(pos, _, fields, sender)
|
||||
local meta = minetest.get_meta(pos);
|
||||
|
||||
if not sender or sender:get_player_name() ~= meta:get_string("owner") then
|
||||
-- not allowed
|
||||
return
|
||||
end
|
||||
|
||||
if fields.save then
|
||||
local cmd = fields.cmd or "status"
|
||||
if fields.save then
|
||||
local cmd = fields.cmd or "status"
|
||||
meta:set_string("cmd", cmd)
|
||||
update_formspec(meta, pos)
|
||||
end
|
||||
end
|
||||
|
||||
end,
|
||||
end,
|
||||
|
||||
epic = {
|
||||
on_enter = function(_, meta, player, ctx)
|
||||
local cmd = meta:get_string("cmd")
|
||||
on_enter = function(_, meta, player, ctx)
|
||||
local cmd = meta:get_string("cmd")
|
||||
local owner = meta:get_string("owner")
|
||||
cmd = cmd:gsub("@player", player:get_player_name())
|
||||
cmd = cmd:gsub("@owner", owner)
|
||||
execute(cmd, owner)
|
||||
ctx.next()
|
||||
end
|
||||
}
|
||||
ctx.next()
|
||||
end
|
||||
}
|
||||
})
|
||||
|
|
|
@ -44,27 +44,27 @@ minetest.register_node("epic:deduct_inv", {
|
|||
end,
|
||||
|
||||
epic = {
|
||||
on_check = function(_, meta, player, ctx)
|
||||
on_check = function(_, meta, player, ctx)
|
||||
local inv = meta:get_inventory()
|
||||
local player_inv = player:get_inventory()
|
||||
|
||||
local success = true
|
||||
local deduct_items = inv:get_list("main")
|
||||
for _, deduct_item in ipairs(deduct_items) do
|
||||
local deduct_items = inv:get_list("main")
|
||||
for _, deduct_item in ipairs(deduct_items) do
|
||||
if not player_inv:contains_item("main", deduct_item) then
|
||||
success = false
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if success then
|
||||
for _, deduct_item in ipairs(deduct_items) do
|
||||
player_inv:remove_item("main", deduct_item)
|
||||
end
|
||||
end
|
||||
|
||||
ctx.next()
|
||||
end
|
||||
|
||||
end
|
||||
}
|
||||
end
|
||||
}
|
||||
})
|
||||
|
|
|
@ -18,46 +18,46 @@ minetest.register_node("epic:delay", {
|
|||
groups = {cracky=3,oddly_breakable_by_hand=3,epic=1},
|
||||
on_rotate = epic.on_rotate,
|
||||
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_int("delay", 5)
|
||||
update_formspec(meta, pos)
|
||||
end,
|
||||
update_formspec(meta, pos)
|
||||
end,
|
||||
|
||||
on_receive_fields = function(pos, _, fields, sender)
|
||||
local meta = minetest.get_meta(pos);
|
||||
on_receive_fields = function(pos, _, fields, sender)
|
||||
local meta = minetest.get_meta(pos);
|
||||
|
||||
if not sender or minetest.is_protected(pos, sender:get_player_name()) then
|
||||
-- not allowed
|
||||
return
|
||||
end
|
||||
|
||||
if fields.save then
|
||||
local delay = tonumber(fields.delay) or 5
|
||||
if fields.save then
|
||||
local delay = tonumber(fields.delay) or 5
|
||||
if delay < 0 then
|
||||
delay = 1
|
||||
end
|
||||
|
||||
meta:set_int("delay", delay)
|
||||
update_formspec(meta, pos)
|
||||
end
|
||||
end
|
||||
|
||||
end,
|
||||
end,
|
||||
|
||||
epic = {
|
||||
on_enter = function(_, _, _, ctx)
|
||||
epic = {
|
||||
on_enter = function(_, _, _, ctx)
|
||||
ctx.step_data.delay_start = minetest.get_us_time()
|
||||
end,
|
||||
on_check = function(_, meta, _, ctx)
|
||||
local now = minetest.get_us_time()
|
||||
local start = ctx.step_data.delay_start
|
||||
end,
|
||||
on_check = function(_, meta, _, ctx)
|
||||
local now = minetest.get_us_time()
|
||||
local start = ctx.step_data.delay_start
|
||||
|
||||
local delay_micros = meta:get_int("delay")*1000*1000
|
||||
|
||||
local diff = now - start
|
||||
if diff > delay_micros then
|
||||
ctx.next()
|
||||
end
|
||||
end
|
||||
}
|
||||
local diff = now - start
|
||||
if diff > delay_micros then
|
||||
ctx.next()
|
||||
end
|
||||
end
|
||||
}
|
||||
})
|
||||
|
|
|
@ -74,29 +74,29 @@ minetest.register_node("epic:dialogue", {
|
|||
on_rotate = epic.on_rotate,
|
||||
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("text", "Example text")
|
||||
update_formspec(meta, pos)
|
||||
end,
|
||||
update_formspec(meta, pos)
|
||||
end,
|
||||
|
||||
on_receive_fields = function(pos, _, fields, sender)
|
||||
local meta = minetest.get_meta(pos);
|
||||
on_receive_fields = function(pos, _, fields, sender)
|
||||
local meta = minetest.get_meta(pos);
|
||||
|
||||
if not sender or minetest.is_protected(pos, sender:get_player_name()) then
|
||||
-- not allowed
|
||||
return
|
||||
end
|
||||
|
||||
if fields.save then
|
||||
local text = fields.text or "<no text>"
|
||||
if fields.save then
|
||||
local text = fields.text or "<no text>"
|
||||
meta:set_string("text", text)
|
||||
update_formspec(meta, pos)
|
||||
end
|
||||
end
|
||||
|
||||
end,
|
||||
end,
|
||||
|
||||
epic = {
|
||||
on_enter = function(pos, meta, player)
|
||||
on_enter = function(pos, meta, player)
|
||||
local player_name = player:get_player_name()
|
||||
local player_dialogue = active_dialogues[player_name]
|
||||
if not player_dialogue then
|
||||
|
@ -114,7 +114,7 @@ minetest.register_node("epic:dialogue", {
|
|||
|
||||
-- mark dialogue as not selected yet
|
||||
player_dialogue.targets[minetest.pos_to_string(pos)] = meta:get_string("text")
|
||||
end,
|
||||
end,
|
||||
on_check = function(pos, _, player, ctx)
|
||||
local player_name = player:get_player_name()
|
||||
local player_dialogue = active_dialogues[player_name]
|
||||
|
@ -144,5 +144,5 @@ minetest.register_node("epic:dialogue", {
|
|||
local player_name = player:get_player_name()
|
||||
active_dialogues[player_name] = nil
|
||||
end
|
||||
}
|
||||
}
|
||||
})
|
||||
|
|
|
@ -27,7 +27,7 @@ minetest.register_node("epic:epic", {
|
|||
-- allow mesecons triggering
|
||||
mesecons = {
|
||||
effector = {
|
||||
action_on = function (pos)
|
||||
action_on = function (pos)
|
||||
for _, player in ipairs(minetest.get_connected_players()) do
|
||||
local ppos = player:get_pos()
|
||||
|
||||
|
@ -37,7 +37,7 @@ minetest.register_node("epic:epic", {
|
|||
end
|
||||
end
|
||||
end
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
mtinfo = {
|
||||
|
|
|
@ -13,7 +13,7 @@ local update_formspec = function(meta)
|
|||
"list[context;main;0,0.5;8,4;]" ..
|
||||
|
||||
"button_exit[0.1,5.5;4,1;setfn;Set target chest]" ..
|
||||
"button_exit[4.1,5.5;4,1;showpos;Show]" ..
|
||||
"button_exit[4.1,5.5;4,1;showpos;Show]" ..
|
||||
|
||||
"list[current_player;main;0,7;8,4;]" ..
|
||||
"listring[]" ..
|
||||
|
@ -80,9 +80,9 @@ minetest.register_node("epic:fill_chest", {
|
|||
local playername = sender:get_player_name()
|
||||
minetest.chat_send_player(playername, "[epic] Please punch the target chest")
|
||||
epic.punchnode_callback(sender, {
|
||||
timeout = 300,
|
||||
timeout = 300,
|
||||
check_protection = true,
|
||||
callback = function(punch_pos)
|
||||
callback = function(punch_pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
|
||||
if not is_chest(meta) then
|
||||
|
@ -104,30 +104,30 @@ minetest.register_node("epic:fill_chest", {
|
|||
local meta = minetest.get_meta(pos)
|
||||
local target_pos = minetest.string_to_pos(meta:get_string("pos"))
|
||||
if target_pos then
|
||||
epic.show_waypoint(
|
||||
sender:get_player_name(),
|
||||
epic.to_absolute_pos(pos, target_pos),
|
||||
"Target position",
|
||||
2
|
||||
)
|
||||
epic.show_waypoint(
|
||||
sender:get_player_name(),
|
||||
epic.to_absolute_pos(pos, target_pos),
|
||||
"Target position",
|
||||
2
|
||||
)
|
||||
end
|
||||
end
|
||||
end,
|
||||
end,
|
||||
|
||||
-- allow mesecons triggering
|
||||
mesecons = {
|
||||
effector = {
|
||||
action_on = function (pos)
|
||||
action_on = function (pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
do_fill(pos, meta)
|
||||
end
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
epic = {
|
||||
on_enter = function(pos, meta, _, ctx)
|
||||
on_enter = function(pos, meta, _, ctx)
|
||||
do_fill(pos, meta)
|
||||
ctx.next()
|
||||
end
|
||||
}
|
||||
end
|
||||
}
|
||||
})
|
||||
|
|
|
@ -53,23 +53,23 @@ minetest.register_node("epic:filter_inv", {
|
|||
end,
|
||||
|
||||
epic = {
|
||||
on_check = function(_, meta, player, ctx)
|
||||
on_check = function(_, meta, player, ctx)
|
||||
local inv = meta:get_inventory()
|
||||
local player_inv = player:get_inventory()
|
||||
|
||||
local filter_names = {}
|
||||
local filter_items = inv:get_list("main")
|
||||
for _, filter_item in ipairs(filter_items) do
|
||||
local filter_items = inv:get_list("main")
|
||||
for _, filter_item in ipairs(filter_items) do
|
||||
if not filter_item:is_empty() then
|
||||
filter_names[filter_item:get_name()] = true
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
filter_inventory(player_inv, "main", filter_names)
|
||||
filter_inventory(player_inv, "craft", filter_names)
|
||||
|
||||
ctx.next()
|
||||
|
||||
end
|
||||
}
|
||||
end
|
||||
}
|
||||
})
|
||||
|
|
|
@ -12,17 +12,17 @@ minetest.register_node("epic:function", {
|
|||
on_rotate = epic.on_rotate,
|
||||
|
||||
epic = {
|
||||
on_enter = function(_, _, _, ctx)
|
||||
ctx.next()
|
||||
end
|
||||
},
|
||||
on_enter = function(_, _, _, ctx)
|
||||
ctx.next()
|
||||
end
|
||||
},
|
||||
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
update_formspec(meta, pos)
|
||||
end,
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
update_formspec(meta, pos)
|
||||
end,
|
||||
|
||||
on_receive_fields = function(pos, _, fields, sender)
|
||||
on_receive_fields = function(pos, _, fields, sender)
|
||||
if not sender then
|
||||
return
|
||||
end
|
||||
|
@ -37,11 +37,11 @@ minetest.register_node("epic:function", {
|
|||
return
|
||||
end
|
||||
|
||||
if fields.execute then
|
||||
if fields.execute then
|
||||
local name = "function@" .. minetest.pos_to_string(pos)
|
||||
epic.execute_epic(sender, pos, name)
|
||||
end
|
||||
epic.execute_epic(sender, pos, name)
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
})
|
||||
|
|
|
@ -26,70 +26,70 @@ minetest.register_node("epic:kill_count", {
|
|||
groups = {cracky=3,oddly_breakable_by_hand=3,epic=1},
|
||||
on_rotate = epic.on_rotate,
|
||||
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_int("kills", 5)
|
||||
update_formspec(meta, pos)
|
||||
end,
|
||||
update_formspec(meta, pos)
|
||||
end,
|
||||
|
||||
on_receive_fields = function(pos, _, fields, sender)
|
||||
local meta = minetest.get_meta(pos);
|
||||
on_receive_fields = function(pos, _, fields, sender)
|
||||
local meta = minetest.get_meta(pos);
|
||||
|
||||
if not sender or minetest.is_protected(pos, sender:get_player_name()) then
|
||||
-- not allowed
|
||||
return
|
||||
end
|
||||
|
||||
if fields.save then
|
||||
local kills = tonumber(fields.kills) or 5
|
||||
if fields.save then
|
||||
local kills = tonumber(fields.kills) or 5
|
||||
if kills < 0 then
|
||||
kills = 1
|
||||
end
|
||||
|
||||
meta:set_int("kills", kills)
|
||||
update_formspec(meta, pos)
|
||||
end
|
||||
end
|
||||
|
||||
end,
|
||||
end,
|
||||
|
||||
epic = {
|
||||
on_enter = function(_, meta, player, ctx)
|
||||
kill_counter[player:get_player_name()] = 0
|
||||
ctx.step_data.kills = meta:get_int("kills")
|
||||
epic = {
|
||||
on_enter = function(_, meta, player, ctx)
|
||||
kill_counter[player:get_player_name()] = 0
|
||||
ctx.step_data.kills = meta:get_int("kills")
|
||||
|
||||
ctx.step_data.hud_kills = player:hud_add({
|
||||
hud_elem_type = "text",
|
||||
position = HUD_POSITION,
|
||||
offset = {x = 0, y = 40},
|
||||
text = "",
|
||||
alignment = HUD_ALIGNMENT,
|
||||
scale = {x = 100, y = 100},
|
||||
number = 0x0000FF
|
||||
})
|
||||
ctx.step_data.hud_kills = player:hud_add({
|
||||
hud_elem_type = "text",
|
||||
position = HUD_POSITION,
|
||||
offset = {x = 0, y = 40},
|
||||
text = "",
|
||||
alignment = HUD_ALIGNMENT,
|
||||
scale = {x = 100, y = 100},
|
||||
number = 0x0000FF
|
||||
})
|
||||
|
||||
end,
|
||||
on_check = function(_, _, player, ctx)
|
||||
local count = kill_counter[player:get_player_name()]
|
||||
local txt = "Kills: " .. count .. "/" .. ctx.step_data.kills
|
||||
end,
|
||||
on_check = function(_, _, player, ctx)
|
||||
local count = kill_counter[player:get_player_name()]
|
||||
local txt = "Kills: " .. count .. "/" .. ctx.step_data.kills
|
||||
|
||||
player:hud_change(ctx.step_data.hud_kills, "text", txt)
|
||||
if count >= ctx.step_data.kills then
|
||||
ctx.next()
|
||||
end
|
||||
end,
|
||||
on_exit = function(_, _, player, ctx)
|
||||
player:hud_remove(ctx.step_data.hud_kills)
|
||||
end
|
||||
}
|
||||
player:hud_change(ctx.step_data.hud_kills, "text", txt)
|
||||
if count >= ctx.step_data.kills then
|
||||
ctx.next()
|
||||
end
|
||||
end,
|
||||
on_exit = function(_, _, player, ctx)
|
||||
player:hud_remove(ctx.step_data.hud_kills)
|
||||
end
|
||||
}
|
||||
})
|
||||
|
||||
-- players
|
||||
minetest.register_on_punchplayer(function(player, hitter, _, _, _, damage)
|
||||
-- player got hit by another player
|
||||
-- player got hit by another player
|
||||
|
||||
if not hitter or not hitter:is_player() then
|
||||
return
|
||||
end
|
||||
return
|
||||
end
|
||||
|
||||
local name = hitter:get_player_name()
|
||||
|
||||
|
@ -97,9 +97,9 @@ minetest.register_on_punchplayer(function(player, hitter, _, _, _, damage)
|
|||
return
|
||||
end
|
||||
|
||||
if damage >= player:get_hp() and player:get_hp() > 0 then
|
||||
kill_counter[name] = kill_counter[name] + 1
|
||||
end
|
||||
if damage >= player:get_hp() and player:get_hp() > 0 then
|
||||
kill_counter[name] = kill_counter[name] + 1
|
||||
end
|
||||
end)
|
||||
-- mobs
|
||||
minetest.register_on_mods_loaded(function()
|
||||
|
|
|
@ -16,7 +16,7 @@ local update_formspec = function(meta)
|
|||
meta:set_string("formspec", "size[8,1;]" ..
|
||||
-- col 2
|
||||
"button_exit[0.1,0.5;4,1;setpos;Set pos]" ..
|
||||
"button_exit[4.1,0.5;4,1;showpos;Show]" ..
|
||||
"button_exit[4.1,0.5;4,1;showpos;Show]" ..
|
||||
"")
|
||||
end
|
||||
|
||||
|
@ -34,12 +34,12 @@ minetest.register_node("epic:lightning", {
|
|||
on_rotate = epic.on_rotate,
|
||||
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("pos", minetest.pos_to_string({x=0, y=0, z=0}))
|
||||
update_formspec(meta, pos)
|
||||
end,
|
||||
update_formspec(meta, pos)
|
||||
end,
|
||||
|
||||
on_receive_fields = function(pos, _, fields, sender)
|
||||
on_receive_fields = function(pos, _, fields, sender)
|
||||
if not sender or minetest.is_protected(pos, sender:get_player_name()) then
|
||||
-- not allowed
|
||||
return
|
||||
|
@ -54,32 +54,32 @@ minetest.register_node("epic:lightning", {
|
|||
local meta = minetest.get_meta(pos)
|
||||
local target_pos = minetest.string_to_pos(meta:get_string("pos"))
|
||||
if target_pos then
|
||||
epic.show_waypoint(
|
||||
sender:get_player_name(),
|
||||
epic.to_absolute_pos(pos, target_pos),
|
||||
"Target position",
|
||||
2
|
||||
)
|
||||
epic.show_waypoint(
|
||||
sender:get_player_name(),
|
||||
epic.to_absolute_pos(pos, target_pos),
|
||||
"Target position",
|
||||
2
|
||||
)
|
||||
end
|
||||
end
|
||||
end,
|
||||
end,
|
||||
|
||||
-- allow mesecons triggering
|
||||
mesecons = {
|
||||
effector = {
|
||||
action_on = function (pos)
|
||||
action_on = function (pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
do_strike(pos, meta)
|
||||
end
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
epic = {
|
||||
on_enter = function(pos, meta, _, ctx)
|
||||
on_enter = function(pos, meta, _, ctx)
|
||||
do_strike(pos, meta)
|
||||
ctx.next()
|
||||
end
|
||||
}
|
||||
end
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_on_punchnode(function(pos, _, puncher)
|
||||
|
|
|
@ -7,19 +7,19 @@ minetest.register_node("epic:lock", {
|
|||
on_rotate = epic.on_rotate,
|
||||
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_int("lock", 0)
|
||||
end,
|
||||
end,
|
||||
|
||||
epic = {
|
||||
on_enter = function(_, meta, player, ctx)
|
||||
epic = {
|
||||
on_enter = function(_, meta, player, ctx)
|
||||
if meta:get_int("lock") == 0 then
|
||||
meta:set_int("lock", 1)
|
||||
ctx.next()
|
||||
else
|
||||
minetest.chat_send_player(player:get_player_name(), "[epic] the section is currently occupied, please stand by...")
|
||||
end
|
||||
end,
|
||||
end,
|
||||
|
||||
on_check = function(_, meta, player, ctx)
|
||||
if meta:get_int("lock") == 0 then
|
||||
|
@ -28,5 +28,5 @@ minetest.register_node("epic:lock", {
|
|||
ctx.next()
|
||||
end
|
||||
end
|
||||
}
|
||||
}
|
||||
})
|
||||
|
|
|
@ -40,13 +40,13 @@ minetest.register_node("epic:loop_sound", {
|
|||
on_rotate = epic.on_rotate,
|
||||
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("soundname", "")
|
||||
meta:set_string("gain", "1.0")
|
||||
update_formspec(meta, pos)
|
||||
end,
|
||||
update_formspec(meta, pos)
|
||||
end,
|
||||
|
||||
on_receive_fields = function(pos, _, fields, sender)
|
||||
on_receive_fields = function(pos, _, fields, sender)
|
||||
if not sender or minetest.is_protected(pos, sender:get_player_name()) then
|
||||
-- not allowed
|
||||
return
|
||||
|
@ -78,10 +78,10 @@ minetest.register_node("epic:loop_sound", {
|
|||
|
||||
update_formspec(meta, pos)
|
||||
|
||||
end,
|
||||
end,
|
||||
|
||||
epic = {
|
||||
on_enter = function(_, meta, player, ctx)
|
||||
on_enter = function(_, meta, player, ctx)
|
||||
|
||||
if ctx.data.loop_sound_handle then
|
||||
minetest.sound_stop(ctx.data.loop_sound_handle)
|
||||
|
@ -107,8 +107,8 @@ minetest.register_node("epic:loop_sound", {
|
|||
end
|
||||
end
|
||||
ctx.next()
|
||||
end
|
||||
}
|
||||
end
|
||||
}
|
||||
})
|
||||
|
||||
local function cleanup(_, state)
|
||||
|
@ -119,6 +119,6 @@ local function cleanup(_, state)
|
|||
end
|
||||
|
||||
epic.register_hook({
|
||||
on_epic_exit = cleanup,
|
||||
on_epic_exit = cleanup,
|
||||
on_epic_abort = cleanup
|
||||
})
|
||||
|
|
|
@ -10,7 +10,7 @@ local update_formspec = function(meta)
|
|||
meta:set_string("formspec", "size[8,1;]" ..
|
||||
-- col 2
|
||||
"button_exit[0.1,0.5;4,1;setpos;Set]" ..
|
||||
"button_exit[4.1,0.5;4,1;showpos;Show]" ..
|
||||
"button_exit[4.1,0.5;4,1;showpos;Show]" ..
|
||||
"")
|
||||
end
|
||||
|
||||
|
@ -22,12 +22,12 @@ minetest.register_node("epic:mesecon_check", {
|
|||
on_rotate = epic.on_rotate,
|
||||
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("pos", minetest.pos_to_string({x=0, y=0, z=0}))
|
||||
update_formspec(meta, pos)
|
||||
end,
|
||||
update_formspec(meta, pos)
|
||||
end,
|
||||
|
||||
on_receive_fields = function(pos, _, fields, sender)
|
||||
on_receive_fields = function(pos, _, fields, sender)
|
||||
if not sender or minetest.is_protected(pos, sender:get_player_name()) then
|
||||
-- not allowed
|
||||
return
|
||||
|
@ -45,18 +45,18 @@ minetest.register_node("epic:mesecon_check", {
|
|||
epic.show_waypoint(sender:get_player_name(), epic.to_absolute_pos(pos, target_pos), "Target position", 2)
|
||||
end
|
||||
end
|
||||
end,
|
||||
end,
|
||||
|
||||
epic = {
|
||||
on_check = function(pos, meta, _, ctx)
|
||||
on_check = function(pos, meta, _, ctx)
|
||||
local target_pos_str = meta:get_string("pos")
|
||||
local target_pos = epic.to_absolute_pos(pos, minetest.string_to_pos(target_pos_str))
|
||||
local node = epic.get_node(target_pos)
|
||||
if node.name == "mesecons_extrawires:mese_powered" then
|
||||
ctx.next()
|
||||
end
|
||||
end
|
||||
}
|
||||
end
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_on_punchnode(function(pos, node, puncher)
|
||||
|
|
|
@ -22,50 +22,50 @@ minetest.register_node("epic:mesecon_emit", {
|
|||
rules = mesecon.rules.pplate
|
||||
}},
|
||||
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_int("delay", 1)
|
||||
update_formspec(meta, pos)
|
||||
end,
|
||||
update_formspec(meta, pos)
|
||||
end,
|
||||
|
||||
on_receive_fields = function(pos, _, fields, sender)
|
||||
local meta = minetest.get_meta(pos);
|
||||
on_receive_fields = function(pos, _, fields, sender)
|
||||
local meta = minetest.get_meta(pos);
|
||||
|
||||
if not sender or minetest.is_protected(pos, sender:get_player_name()) then
|
||||
-- not allowed
|
||||
return
|
||||
end
|
||||
|
||||
if fields.save then
|
||||
local delay = tonumber(fields.delay) or 1
|
||||
if delay < 0 then
|
||||
delay = 1
|
||||
end
|
||||
if fields.save then
|
||||
local delay = tonumber(fields.delay) or 1
|
||||
if delay < 0 then
|
||||
delay = 1
|
||||
end
|
||||
|
||||
meta:set_int("delay", delay)
|
||||
update_formspec(meta, pos)
|
||||
end
|
||||
meta:set_int("delay", delay)
|
||||
update_formspec(meta, pos)
|
||||
end
|
||||
|
||||
end,
|
||||
end,
|
||||
|
||||
epic = {
|
||||
on_enter = function(pos, _, _, ctx)
|
||||
ctx.data.delay_start = minetest.get_us_time()
|
||||
mesecon.receptor_on(pos)
|
||||
epic = {
|
||||
on_enter = function(pos, _, _, ctx)
|
||||
ctx.data.delay_start = minetest.get_us_time()
|
||||
mesecon.receptor_on(pos)
|
||||
|
||||
end,
|
||||
on_check = function(_, meta, _, ctx)
|
||||
local now = minetest.get_us_time()
|
||||
local start = ctx.data.delay_start
|
||||
local delay_micros = meta:get_int("delay")*1000*1000
|
||||
end,
|
||||
on_check = function(_, meta, _, ctx)
|
||||
local now = minetest.get_us_time()
|
||||
local start = ctx.data.delay_start
|
||||
local delay_micros = meta:get_int("delay")*1000*1000
|
||||
|
||||
local diff = now - start
|
||||
if diff > delay_micros then
|
||||
ctx.next()
|
||||
end
|
||||
end,
|
||||
on_exit = function(pos)
|
||||
mesecon.receptor_off(pos)
|
||||
end
|
||||
}
|
||||
local diff = now - start
|
||||
if diff > delay_micros then
|
||||
ctx.next()
|
||||
end
|
||||
end,
|
||||
on_exit = function(pos)
|
||||
mesecon.receptor_off(pos)
|
||||
end
|
||||
}
|
||||
})
|
||||
|
|
|
@ -19,31 +19,31 @@ minetest.register_node("epic:message", {
|
|||
on_rotate = epic.on_rotate,
|
||||
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("text", "Hello world")
|
||||
update_formspec(meta, pos)
|
||||
end,
|
||||
update_formspec(meta, pos)
|
||||
end,
|
||||
|
||||
on_receive_fields = function(pos, _, fields, sender)
|
||||
local meta = minetest.get_meta(pos);
|
||||
on_receive_fields = function(pos, _, fields, sender)
|
||||
local meta = minetest.get_meta(pos);
|
||||
|
||||
if not sender or minetest.is_protected(pos, sender:get_player_name()) then
|
||||
-- not allowed
|
||||
return
|
||||
end
|
||||
|
||||
if fields.save then
|
||||
local text = fields.text or "Hello world"
|
||||
if fields.save then
|
||||
local text = fields.text or "Hello world"
|
||||
meta:set_string("text", text)
|
||||
update_formspec(meta, pos)
|
||||
end
|
||||
end
|
||||
|
||||
end,
|
||||
end,
|
||||
|
||||
epic = {
|
||||
on_enter = function(_, meta, player, ctx)
|
||||
minetest.chat_send_player(player:get_player_name(), meta:get_string("text"))
|
||||
ctx.next()
|
||||
end
|
||||
}
|
||||
on_enter = function(_, meta, player, ctx)
|
||||
minetest.chat_send_player(player:get_player_name(), meta:get_string("text"))
|
||||
ctx.next()
|
||||
end
|
||||
}
|
||||
})
|
||||
|
|
|
@ -6,9 +6,9 @@ minetest.register_node("epic:nop", {
|
|||
groups = {cracky=3,oddly_breakable_by_hand=3,epic=1},
|
||||
on_rotate = epic.on_rotate,
|
||||
|
||||
epic = {
|
||||
on_check = function(_, _, _, ctx)
|
||||
epic = {
|
||||
on_check = function(_, _, _, ctx)
|
||||
ctx.next()
|
||||
end
|
||||
}
|
||||
end
|
||||
}
|
||||
})
|
||||
|
|
|
@ -10,7 +10,7 @@ local update_formspec = function(meta)
|
|||
meta:set_string("formspec", "size[8,1;]" ..
|
||||
-- col 2
|
||||
"button_exit[0.1,0.5;4,1;setfn;Set function]" ..
|
||||
"button_exit[4.1,0.5;4,1;showpos;Show]" ..
|
||||
"button_exit[4.1,0.5;4,1;showpos;Show]" ..
|
||||
"")
|
||||
end
|
||||
|
||||
|
@ -22,12 +22,12 @@ minetest.register_node("epic:on_abort", {
|
|||
on_rotate = epic.on_rotate,
|
||||
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("pos", minetest.pos_to_string({x=0, y=0, z=0}))
|
||||
update_formspec(meta, pos)
|
||||
end,
|
||||
update_formspec(meta, pos)
|
||||
end,
|
||||
|
||||
on_receive_fields = function(pos, _, fields, sender)
|
||||
on_receive_fields = function(pos, _, fields, sender)
|
||||
if not sender or minetest.is_protected(pos, sender:get_player_name()) then
|
||||
-- not allowed
|
||||
return
|
||||
|
@ -42,18 +42,18 @@ minetest.register_node("epic:on_abort", {
|
|||
local meta = minetest.get_meta(pos)
|
||||
local target_pos = minetest.string_to_pos(meta:get_string("pos"))
|
||||
if target_pos then
|
||||
epic.show_waypoint(
|
||||
sender:get_player_name(),
|
||||
epic.to_absolute_pos(pos, target_pos),
|
||||
"Target position",
|
||||
10
|
||||
)
|
||||
epic.show_waypoint(
|
||||
sender:get_player_name(),
|
||||
epic.to_absolute_pos(pos, target_pos),
|
||||
"Target position",
|
||||
10
|
||||
)
|
||||
end
|
||||
end
|
||||
end,
|
||||
end,
|
||||
|
||||
epic = {
|
||||
on_enter = function(pos, meta, _, ctx)
|
||||
on_enter = function(pos, meta, _, ctx)
|
||||
local target_pos_str = meta:get_string("pos")
|
||||
local here_pos_str = minetest.pos_to_string({x=0, y=0, z=0})
|
||||
if here_pos_str ~= target_pos_str then
|
||||
|
@ -67,8 +67,8 @@ minetest.register_node("epic:on_abort", {
|
|||
-- recursion detected, proceed to next
|
||||
ctx.next()
|
||||
end
|
||||
end
|
||||
}
|
||||
end
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_on_punchnode(function(pos, node, puncher)
|
||||
|
|
|
@ -10,7 +10,7 @@ local update_formspec = function(meta)
|
|||
meta:set_string("formspec", "size[8,1;]" ..
|
||||
-- col 2
|
||||
"button_exit[0.1,0.5;4,1;setfn;Set function]" ..
|
||||
"button_exit[4.1,0.5;4,1;showpos;Show]" ..
|
||||
"button_exit[4.1,0.5;4,1;showpos;Show]" ..
|
||||
"")
|
||||
end
|
||||
|
||||
|
@ -22,12 +22,12 @@ minetest.register_node("epic:on_exit", {
|
|||
on_rotate = epic.on_rotate,
|
||||
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("pos", minetest.pos_to_string({x=0, y=0, z=0}))
|
||||
update_formspec(meta, pos)
|
||||
end,
|
||||
update_formspec(meta, pos)
|
||||
end,
|
||||
|
||||
on_receive_fields = function(pos, _, fields, sender)
|
||||
on_receive_fields = function(pos, _, fields, sender)
|
||||
if not sender or minetest.is_protected(pos, sender:get_player_name()) then
|
||||
-- not allowed
|
||||
return
|
||||
|
@ -42,18 +42,18 @@ minetest.register_node("epic:on_exit", {
|
|||
local meta = minetest.get_meta(pos)
|
||||
local target_pos = minetest.string_to_pos(meta:get_string("pos"))
|
||||
if target_pos then
|
||||
epic.show_waypoint(
|
||||
sender:get_player_name(),
|
||||
epic.to_absolute_pos(pos, target_pos),
|
||||
"Target position",
|
||||
2
|
||||
)
|
||||
epic.show_waypoint(
|
||||
sender:get_player_name(),
|
||||
epic.to_absolute_pos(pos, target_pos),
|
||||
"Target position",
|
||||
2
|
||||
)
|
||||
end
|
||||
end
|
||||
end,
|
||||
end,
|
||||
|
||||
epic = {
|
||||
on_enter = function(pos, meta, _, ctx)
|
||||
on_enter = function(pos, meta, _, ctx)
|
||||
local target_pos_str = meta:get_string("pos")
|
||||
local here_pos_str = minetest.pos_to_string({x=0, y=0, z=0})
|
||||
if here_pos_str ~= target_pos_str then
|
||||
|
@ -67,8 +67,8 @@ minetest.register_node("epic:on_exit", {
|
|||
-- recursion detected, proceed to next
|
||||
ctx.next()
|
||||
end
|
||||
end
|
||||
}
|
||||
end
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_on_punchnode(function(pos, node, puncher)
|
||||
|
|
|
@ -43,14 +43,14 @@ minetest.register_node("epic:play_sound", {
|
|||
on_rotate = epic.on_rotate,
|
||||
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("soundname", "")
|
||||
meta:set_string("gain", "1.0")
|
||||
|
||||
update_formspec(meta, pos)
|
||||
end,
|
||||
update_formspec(meta, pos)
|
||||
end,
|
||||
|
||||
on_receive_fields = function(pos, _, fields, sender)
|
||||
on_receive_fields = function(pos, _, fields, sender)
|
||||
if not sender or minetest.is_protected(pos, sender:get_player_name()) then
|
||||
-- not allowed
|
||||
return
|
||||
|
@ -82,10 +82,10 @@ minetest.register_node("epic:play_sound", {
|
|||
|
||||
update_formspec(meta, pos)
|
||||
|
||||
end,
|
||||
end,
|
||||
|
||||
epic = {
|
||||
on_enter = function(_, meta, player, ctx)
|
||||
on_enter = function(_, meta, player, ctx)
|
||||
local soundname = meta:get_string("soundname")
|
||||
local gain = tonumber( meta:get_string("gain") or "1.0" )
|
||||
|
||||
|
@ -104,6 +104,6 @@ minetest.register_node("epic:play_sound", {
|
|||
end
|
||||
end
|
||||
ctx.next()
|
||||
end
|
||||
}
|
||||
end
|
||||
}
|
||||
})
|
||||
|
|
|
@ -19,33 +19,33 @@ minetest.register_node("epic:random", {
|
|||
on_rotate = epic.on_rotate,
|
||||
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_int("chance", 10)
|
||||
update_formspec(meta, pos)
|
||||
end,
|
||||
update_formspec(meta, pos)
|
||||
end,
|
||||
|
||||
on_receive_fields = function(pos, _, fields, sender)
|
||||
local meta = minetest.get_meta(pos);
|
||||
local meta = minetest.get_meta(pos);
|
||||
|
||||
if not sender or minetest.is_protected(pos, sender:get_player_name()) then
|
||||
-- not allowed
|
||||
return
|
||||
end
|
||||
|
||||
if fields.save then
|
||||
local chance = tonumber(fields.chance) or 10
|
||||
if fields.save then
|
||||
local chance = tonumber(fields.chance) or 10
|
||||
if chance <= 0 then
|
||||
chance = 10
|
||||
end
|
||||
|
||||
meta:set_int("chance", chance)
|
||||
update_formspec(meta, pos)
|
||||
end
|
||||
end
|
||||
|
||||
end,
|
||||
end,
|
||||
|
||||
epic = {
|
||||
on_check = function(_, meta, _, ctx)
|
||||
epic = {
|
||||
on_check = function(_, meta, _, ctx)
|
||||
local chance = meta:get_int("chance")
|
||||
if chance <= 0 then
|
||||
chance = 10
|
||||
|
@ -55,5 +55,5 @@ minetest.register_node("epic:random", {
|
|||
ctx.next()
|
||||
end
|
||||
end
|
||||
}
|
||||
}
|
||||
})
|
||||
|
|
|
@ -41,14 +41,14 @@ minetest.register_node("epic:removeitem", {
|
|||
on_rotate = epic.on_rotate,
|
||||
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("pos", minetest.pos_to_string({x=0, y=0, z=0}))
|
||||
meta:set_string("radius", "5")
|
||||
|
||||
update_formspec(meta, pos)
|
||||
end,
|
||||
update_formspec(meta, pos)
|
||||
end,
|
||||
|
||||
on_receive_fields = function(pos, _, fields, sender)
|
||||
on_receive_fields = function(pos, _, fields, sender)
|
||||
if not sender or minetest.is_protected(pos, sender:get_player_name()) then
|
||||
-- not allowed
|
||||
return
|
||||
|
@ -64,7 +64,7 @@ minetest.register_node("epic:removeitem", {
|
|||
if fields.save then
|
||||
meta:set_string("radius", fields.radius or "5")
|
||||
update_formspec(meta, pos)
|
||||
end
|
||||
end
|
||||
|
||||
if fields.showpos then
|
||||
local target_pos = minetest.string_to_pos(meta:get_string("pos"))
|
||||
|
@ -72,23 +72,23 @@ minetest.register_node("epic:removeitem", {
|
|||
epic.show_waypoint(sender:get_player_name(), epic.to_absolute_pos(pos, target_pos), "Target position", 2)
|
||||
end
|
||||
end
|
||||
end,
|
||||
end,
|
||||
|
||||
epic = {
|
||||
on_enter = function(pos, meta, _, ctx)
|
||||
on_enter = function(pos, meta, _, ctx)
|
||||
do_remove(pos, meta)
|
||||
ctx.next()
|
||||
end
|
||||
},
|
||||
end
|
||||
},
|
||||
|
||||
-- allow mesecons triggering
|
||||
mesecons = {
|
||||
effector = {
|
||||
action_on = function (pos)
|
||||
action_on = function (pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
do_remove(pos, meta)
|
||||
end
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
|
|
|
@ -2,10 +2,10 @@ local FORMNAME = "epic_review"
|
|||
|
||||
-- review hook to override
|
||||
-- parameters:
|
||||
-- pos = position of review block
|
||||
-- player = player object
|
||||
-- stars = star rating: 1-5, 0 if aborted
|
||||
-- counter = number of reviews
|
||||
-- pos = position of review block
|
||||
-- player = player object
|
||||
-- stars = star rating: 1-5, 0 if aborted
|
||||
-- counter = number of reviews
|
||||
epic.on_review = function() end
|
||||
|
||||
-- rate formspec for quest player
|
||||
|
@ -64,12 +64,12 @@ local update_formspec = function(meta)
|
|||
meta:set_string("rating", tostring(rating))
|
||||
|
||||
meta:set_string("formspec", "size[8,8;]" ..
|
||||
"label[0,0.5;Visits: " .. counter .. ", Rating: " .. rating .. "]" ..
|
||||
"label[0,1.5;1-Star: " .. one .. "]" ..
|
||||
"label[0,2.5;2-Star: " .. two .. "]" ..
|
||||
"label[0,3.5;3-Star: " .. three .. "]" ..
|
||||
"label[0,4.5;4-Star: " .. four .. "]" ..
|
||||
"label[0,5.5;5-Star: " .. five .. "]" ..
|
||||
"label[0,0.5;Visits: " .. counter .. ", Rating: " .. rating .. "]" ..
|
||||
"label[0,1.5;1-Star: " .. one .. "]" ..
|
||||
"label[0,2.5;2-Star: " .. two .. "]" ..
|
||||
"label[0,3.5;3-Star: " .. three .. "]" ..
|
||||
"label[0,4.5;4-Star: " .. four .. "]" ..
|
||||
"label[0,5.5;5-Star: " .. five .. "]" ..
|
||||
"button_exit[0.1,6.5;8,1;reset;Reset]" ..
|
||||
"")
|
||||
end
|
||||
|
@ -102,10 +102,10 @@ minetest.register_node("epic:review", {
|
|||
on_rotate = epic.on_rotate,
|
||||
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
initialize_reviews(meta)
|
||||
update_formspec(meta)
|
||||
end,
|
||||
update_formspec(meta)
|
||||
end,
|
||||
|
||||
on_receive_fields = function(pos, _, fields, sender)
|
||||
if not sender or minetest.is_protected(pos, sender:get_player_name()) then
|
||||
|
@ -122,13 +122,13 @@ minetest.register_node("epic:review", {
|
|||
|
||||
end,
|
||||
|
||||
epic = {
|
||||
on_enter = function(pos, meta, player)
|
||||
epic = {
|
||||
on_enter = function(pos, meta, player)
|
||||
local name = player:get_player_name()
|
||||
form_visited[name] = nil
|
||||
meta:set_string("lastplayer", name)
|
||||
show_formspec(pos, name)
|
||||
end,
|
||||
end,
|
||||
on_check = function(_, _, player, ctx)
|
||||
local name = player:get_player_name()
|
||||
if form_visited[name] then
|
||||
|
@ -140,7 +140,7 @@ minetest.register_node("epic:review", {
|
|||
local name = player:get_player_name()
|
||||
form_visited[name] = nil
|
||||
end
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
-- callback from rate-form
|
||||
|
|
|
@ -29,15 +29,15 @@ minetest.register_node("epic:save", {
|
|||
on_rotate = epic.on_rotate,
|
||||
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("pos", minetest.pos_to_string({x=0, y=1, z=0}))
|
||||
meta:set_string("topic", "My maze")
|
||||
meta:set_string("name", "Level 1")
|
||||
update_formspec(meta, pos)
|
||||
end,
|
||||
update_formspec(meta, pos)
|
||||
end,
|
||||
|
||||
on_receive_fields = function(pos, _, fields, sender)
|
||||
local meta = minetest.get_meta(pos);
|
||||
on_receive_fields = function(pos, _, fields, sender)
|
||||
local meta = minetest.get_meta(pos);
|
||||
|
||||
if not sender or minetest.is_protected(pos, sender:get_player_name()) then
|
||||
-- not allowed
|
||||
|
@ -56,16 +56,16 @@ minetest.register_node("epic:save", {
|
|||
end
|
||||
end
|
||||
|
||||
if fields.save then
|
||||
if fields.save then
|
||||
meta:set_string("topic", fields.topic or "My maze")
|
||||
meta:set_string("name", fields.name or "Level 1")
|
||||
update_formspec(meta, pos)
|
||||
end
|
||||
end
|
||||
|
||||
end,
|
||||
end,
|
||||
|
||||
epic = {
|
||||
on_enter = function(pos, meta, player, ctx)
|
||||
epic = {
|
||||
on_enter = function(pos, meta, player, ctx)
|
||||
local playername = player:get_player_name()
|
||||
local topic = meta:get_string("topic")
|
||||
local name = meta:get_string("name")
|
||||
|
@ -78,8 +78,8 @@ minetest.register_node("epic:save", {
|
|||
|
||||
minetest.chat_send_player(playername, "[epic] Game state '" .. topic .. "/" .. name .. "' saved!")
|
||||
ctx.next()
|
||||
end
|
||||
}
|
||||
end
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_on_punchnode(function(pos, _, puncher, _)
|
||||
|
|
|
@ -36,8 +36,8 @@ minetest.register_node("epic:send_mapblock", {
|
|||
if fields.setpos then
|
||||
minetest.chat_send_player(playername, "[epic] Please punch the desired target position")
|
||||
epic.punchnode_callback(sender, {
|
||||
timeout = 300,
|
||||
callback = function(punch_pos)
|
||||
timeout = 300,
|
||||
callback = function(punch_pos)
|
||||
local pos_str = minetest.pos_to_string(epic.to_relative_pos(pos, punch_pos))
|
||||
meta:set_string("pos", pos_str)
|
||||
minetest.chat_send_player(playername, "[epic] target position successfully set to " .. pos_str)
|
||||
|
@ -53,15 +53,15 @@ minetest.register_node("epic:send_mapblock", {
|
|||
end
|
||||
end
|
||||
|
||||
end,
|
||||
end,
|
||||
|
||||
epic = {
|
||||
on_enter = function(pos, meta, player, ctx)
|
||||
on_enter = function(pos, meta, player, ctx)
|
||||
local rel_pos = minetest.string_to_pos(meta:get_string("pos"))
|
||||
local target_pos = epic.to_absolute_pos(pos, rel_pos)
|
||||
local block_pos = epic.get_mapblock_pos(target_pos)
|
||||
player:send_mapblock(block_pos)
|
||||
ctx.next()
|
||||
end
|
||||
}
|
||||
end
|
||||
}
|
||||
})
|
||||
|
|
|
@ -27,7 +27,7 @@ minetest.register_node("epic:setclouds", {
|
|||
on_rotate = epic.on_rotate,
|
||||
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_int("thickness", 16)
|
||||
meta:set_int("height", 120)
|
||||
meta:set_string("density", "0.4")
|
||||
|
@ -37,18 +37,18 @@ minetest.register_node("epic:setclouds", {
|
|||
meta:set_int("alpha", 229)
|
||||
meta:set_int("speedx", 1)
|
||||
meta:set_int("speedy", 2)
|
||||
update_formspec(meta, pos)
|
||||
end,
|
||||
update_formspec(meta, pos)
|
||||
end,
|
||||
|
||||
on_receive_fields = function(pos, _, fields, sender)
|
||||
local meta = minetest.get_meta(pos);
|
||||
on_receive_fields = function(pos, _, fields, sender)
|
||||
local meta = minetest.get_meta(pos);
|
||||
|
||||
if not sender or minetest.is_protected(pos, sender:get_player_name()) then
|
||||
-- not allowed
|
||||
return
|
||||
end
|
||||
|
||||
if fields.save then
|
||||
if fields.save then
|
||||
meta:set_int("thickness", tonumber(fields.thickness) or 16)
|
||||
meta:set_int("height", tonumber(fields.height) or 120)
|
||||
meta:set_string("density", tonumber(fields.density) or 0.4)
|
||||
|
@ -59,12 +59,12 @@ minetest.register_node("epic:setclouds", {
|
|||
meta:set_int("speedx", tonumber(fields.speedx) or 1)
|
||||
meta:set_int("speedy", tonumber(fields.speedy) or 2)
|
||||
update_formspec(meta, pos)
|
||||
end
|
||||
end
|
||||
|
||||
end,
|
||||
end,
|
||||
|
||||
epic = {
|
||||
on_enter = function(_, meta, player, ctx)
|
||||
on_enter = function(_, meta, player, ctx)
|
||||
player:set_clouds({
|
||||
thickness = meta:get_int("thickness"),
|
||||
color = {
|
||||
|
@ -87,6 +87,6 @@ minetest.register_node("epic:setclouds", {
|
|||
}
|
||||
})
|
||||
ctx.next()
|
||||
end
|
||||
}
|
||||
end
|
||||
}
|
||||
})
|
||||
|
|
|
@ -18,22 +18,22 @@ minetest.register_node("epic:daynightratio", {
|
|||
groups = {cracky=3,oddly_breakable_by_hand=3,epic=1},
|
||||
on_rotate = epic.on_rotate,
|
||||
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("ratio", "")
|
||||
update_formspec(meta, pos)
|
||||
end,
|
||||
update_formspec(meta, pos)
|
||||
end,
|
||||
|
||||
on_receive_fields = function(pos, _, fields, sender)
|
||||
local meta = minetest.get_meta(pos);
|
||||
on_receive_fields = function(pos, _, fields, sender)
|
||||
local meta = minetest.get_meta(pos);
|
||||
|
||||
if not sender or minetest.is_protected(pos, sender:get_player_name()) then
|
||||
-- not allowed
|
||||
return
|
||||
end
|
||||
|
||||
if fields.save then
|
||||
local ratio = tonumber(fields.ratio)
|
||||
if fields.save then
|
||||
local ratio = tonumber(fields.ratio)
|
||||
if not ratio then
|
||||
meta:set_string("ratio", "")
|
||||
elseif ratio < 0 then
|
||||
|
@ -45,12 +45,12 @@ minetest.register_node("epic:daynightratio", {
|
|||
end
|
||||
|
||||
update_formspec(meta, pos)
|
||||
end
|
||||
end
|
||||
|
||||
end,
|
||||
end,
|
||||
|
||||
epic = {
|
||||
on_enter = function(_, meta, player, ctx)
|
||||
epic = {
|
||||
on_enter = function(_, meta, player, ctx)
|
||||
local ratio = meta:get_string("ratio")
|
||||
if ratio == "" then
|
||||
player:override_day_night_ratio(nil)
|
||||
|
@ -59,6 +59,6 @@ minetest.register_node("epic:daynightratio", {
|
|||
end
|
||||
|
||||
ctx.next()
|
||||
end,
|
||||
}
|
||||
end,
|
||||
}
|
||||
})
|
||||
|
|
|
@ -27,30 +27,30 @@ minetest.register_node("epic:set_gravity", {
|
|||
update_formspec(meta, pos)
|
||||
end,
|
||||
|
||||
on_receive_fields = function(pos, _, fields, sender)
|
||||
local meta = minetest.get_meta(pos);
|
||||
on_receive_fields = function(pos, _, fields, sender)
|
||||
local meta = minetest.get_meta(pos);
|
||||
|
||||
if not sender or minetest.is_protected(pos, sender:get_player_name()) then
|
||||
-- not allowed
|
||||
return
|
||||
end
|
||||
|
||||
if fields.save then
|
||||
meta:set_string("gravity", fields.gravity or "9.81")
|
||||
update_formspec(meta, pos)
|
||||
end
|
||||
if fields.save then
|
||||
meta:set_string("gravity", fields.gravity or "9.81")
|
||||
update_formspec(meta, pos)
|
||||
end
|
||||
|
||||
end,
|
||||
end,
|
||||
|
||||
epic = {
|
||||
on_enter = function(_, meta, player, ctx)
|
||||
local gravity = tonumber(meta:get_string("gravity")) or 1
|
||||
if use_player_monoids then
|
||||
player_monoids.gravity:add_change(player, gravity, "epic:set_gravity")
|
||||
else
|
||||
player:set_physics_override({ gravity = gravity })
|
||||
end
|
||||
ctx.next()
|
||||
end
|
||||
}
|
||||
epic = {
|
||||
on_enter = function(_, meta, player, ctx)
|
||||
local gravity = tonumber(meta:get_string("gravity")) or 1
|
||||
if use_player_monoids then
|
||||
player_monoids.gravity:add_change(player, gravity, "epic:set_gravity")
|
||||
else
|
||||
player:set_physics_override({ gravity = gravity })
|
||||
end
|
||||
ctx.next()
|
||||
end
|
||||
}
|
||||
})
|
||||
|
|
|
@ -94,20 +94,20 @@ minetest.register_node("epic:setnode", {
|
|||
end,
|
||||
|
||||
epic = {
|
||||
on_enter = function(pos, meta, _, ctx)
|
||||
on_enter = function(pos, meta, _, ctx)
|
||||
do_set(pos, meta)
|
||||
ctx.next()
|
||||
end
|
||||
},
|
||||
end
|
||||
},
|
||||
|
||||
-- allow mesecons triggering
|
||||
mesecons = {
|
||||
effector = {
|
||||
action_on = function (pos)
|
||||
action_on = function (pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
do_set(pos, meta)
|
||||
end
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
|
|
|
@ -34,14 +34,14 @@ minetest.register_node("epic:set_param2", {
|
|||
on_rotate = epic.on_rotate,
|
||||
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("pos", minetest.pos_to_string({x=0, y=0, z=0}))
|
||||
meta:set_string("param2", "0")
|
||||
|
||||
update_formspec(meta, pos)
|
||||
end,
|
||||
update_formspec(meta, pos)
|
||||
end,
|
||||
|
||||
on_receive_fields = function(pos, _, fields, sender)
|
||||
on_receive_fields = function(pos, _, fields, sender)
|
||||
local playername = sender:get_player_name()
|
||||
if not sender or minetest.is_protected(pos, playername) then
|
||||
-- not allowed
|
||||
|
@ -63,8 +63,8 @@ minetest.register_node("epic:set_param2", {
|
|||
if fields.setpos then
|
||||
minetest.chat_send_player(playername, "[epic] Please punch the desired target position")
|
||||
epic.punchnode_callback(sender, {
|
||||
timeout = 300,
|
||||
callback = function(punch_pos)
|
||||
timeout = 300,
|
||||
callback = function(punch_pos)
|
||||
local pos_str = minetest.pos_to_string(epic.to_relative_pos(pos, punch_pos))
|
||||
meta:set_string("pos", pos_str)
|
||||
minetest.chat_send_player(playername, "[epic] target position successfully set to " .. pos_str)
|
||||
|
@ -88,22 +88,22 @@ minetest.register_node("epic:set_param2", {
|
|||
)
|
||||
end
|
||||
end
|
||||
end,
|
||||
end,
|
||||
|
||||
-- allow mesecons triggering
|
||||
mesecons = {
|
||||
effector = {
|
||||
action_on = function (pos)
|
||||
action_on = function (pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
do_set_param2(pos, meta)
|
||||
end
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
epic = {
|
||||
on_enter = function(pos, meta, _, ctx)
|
||||
on_enter = function(pos, meta, _, ctx)
|
||||
do_set_param2(pos, meta)
|
||||
ctx.next()
|
||||
end
|
||||
}
|
||||
end
|
||||
}
|
||||
})
|
||||
|
|
|
@ -18,37 +18,37 @@ minetest.register_node("epic:settimeout", {
|
|||
groups = {cracky=3,oddly_breakable_by_hand=3,epic=1},
|
||||
on_rotate = epic.on_rotate,
|
||||
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_int("timeout", 300)
|
||||
update_formspec(meta, pos)
|
||||
end,
|
||||
update_formspec(meta, pos)
|
||||
end,
|
||||
|
||||
on_receive_fields = function(pos, _, fields, sender)
|
||||
local meta = minetest.get_meta(pos);
|
||||
on_receive_fields = function(pos, _, fields, sender)
|
||||
local meta = minetest.get_meta(pos);
|
||||
|
||||
if not sender or minetest.is_protected(pos, sender:get_player_name()) then
|
||||
-- not allowed
|
||||
return
|
||||
end
|
||||
|
||||
if fields.save then
|
||||
local timeout = tonumber(fields.timeout) or 5
|
||||
if fields.save then
|
||||
local timeout = tonumber(fields.timeout) or 5
|
||||
if timeout < 0 then
|
||||
timeout = 1
|
||||
end
|
||||
|
||||
meta:set_int("timeout", timeout)
|
||||
update_formspec(meta, pos)
|
||||
end
|
||||
end
|
||||
|
||||
end,
|
||||
end,
|
||||
|
||||
epic = {
|
||||
on_enter = function(_, meta, _, ctx)
|
||||
epic = {
|
||||
on_enter = function(_, meta, _, ctx)
|
||||
local timeout = meta:get_int("timeout") or 300
|
||||
ctx.settimeout(timeout)
|
||||
ctx.next()
|
||||
end
|
||||
}
|
||||
end
|
||||
}
|
||||
})
|
||||
|
|
|
@ -81,13 +81,13 @@ minetest.register_node("epic:spawn_mob", {
|
|||
on_rotate = epic.on_rotate,
|
||||
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("pos", minetest.pos_to_string({x=0, y=0, z=0}))
|
||||
meta:set_string("mobname", "")
|
||||
update_formspec(meta, pos)
|
||||
end,
|
||||
update_formspec(meta, pos)
|
||||
end,
|
||||
|
||||
on_receive_fields = function(pos, _, fields, sender)
|
||||
on_receive_fields = function(pos, _, fields, sender)
|
||||
if not sender or minetest.is_protected(pos, sender:get_player_name()) then
|
||||
-- not allowed
|
||||
return
|
||||
|
@ -115,24 +115,24 @@ minetest.register_node("epic:spawn_mob", {
|
|||
epic.show_waypoint(sender:get_player_name(), epic.to_absolute_pos(pos, target_pos), "Target position", 2)
|
||||
end
|
||||
end
|
||||
end,
|
||||
end,
|
||||
|
||||
-- allow mesecons triggering
|
||||
mesecons = {
|
||||
effector = {
|
||||
action_on = function (pos)
|
||||
action_on = function (pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
do_spawn(pos, meta)
|
||||
end
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
epic = {
|
||||
on_enter = function(pos, meta, _, ctx)
|
||||
on_enter = function(pos, meta, _, ctx)
|
||||
do_spawn(pos, meta)
|
||||
ctx.next()
|
||||
end
|
||||
}
|
||||
end
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_on_punchnode(function(pos, _, puncher, _)
|
||||
|
|
|
@ -44,34 +44,34 @@ minetest.register_node("epic:stash_inv", {
|
|||
end,
|
||||
|
||||
epic = {
|
||||
on_enter = function(_, meta, player, ctx)
|
||||
ctx.data.stashed_items = ctx.data.stashed_items or {}
|
||||
local filter_map = {}
|
||||
on_enter = function(_, meta, player, ctx)
|
||||
ctx.data.stashed_items = ctx.data.stashed_items or {}
|
||||
local filter_map = {}
|
||||
local inv = meta:get_inventory()
|
||||
local filter_items = inv:get_list("main")
|
||||
local filter_items_count = 0
|
||||
for _, filter_item in ipairs(filter_items) do
|
||||
local node_name = filter_item:get_name()
|
||||
if node_name and node_name ~= "" then
|
||||
filter_items_count = filter_items_count + 1
|
||||
filter_map[node_name] = true
|
||||
end
|
||||
end
|
||||
local filter_items = inv:get_list("main")
|
||||
local filter_items_count = 0
|
||||
for _, filter_item in ipairs(filter_items) do
|
||||
local node_name = filter_item:get_name()
|
||||
if node_name and node_name ~= "" then
|
||||
filter_items_count = filter_items_count + 1
|
||||
filter_map[node_name] = true
|
||||
end
|
||||
end
|
||||
|
||||
local player_inv = player:get_inventory()
|
||||
local filter_all = filter_items_count == 0 -- no filter means stash EVERYTHING!
|
||||
local i = 1
|
||||
while i <= player_inv:get_size("main") do
|
||||
local stack = player_inv:get_stack("main", i)
|
||||
if filter_all or filter_map[stack:get_name()] then
|
||||
player_inv:set_stack("main", i, ItemStack(nil))
|
||||
table.insert(ctx.data.stashed_items, stack:to_string())
|
||||
end
|
||||
local player_inv = player:get_inventory()
|
||||
local filter_all = filter_items_count == 0 -- no filter means stash EVERYTHING!
|
||||
local i = 1
|
||||
while i <= player_inv:get_size("main") do
|
||||
local stack = player_inv:get_stack("main", i)
|
||||
if filter_all or filter_map[stack:get_name()] then
|
||||
player_inv:set_stack("main", i, ItemStack(nil))
|
||||
table.insert(ctx.data.stashed_items, stack:to_string())
|
||||
end
|
||||
|
||||
i = i + 1
|
||||
end
|
||||
i = i + 1
|
||||
end
|
||||
|
||||
ctx.next()
|
||||
end
|
||||
}
|
||||
end
|
||||
}
|
||||
})
|
||||
|
|
|
@ -18,11 +18,11 @@ minetest.register_node("epic:stats", {
|
|||
on_rotate = epic.on_rotate,
|
||||
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_int("counter", 0)
|
||||
meta:set_string("lastplayer", "")
|
||||
update_formspec(meta)
|
||||
end,
|
||||
update_formspec(meta)
|
||||
end,
|
||||
|
||||
on_receive_fields = function(pos, _, fields, sender)
|
||||
if not sender or minetest.is_protected(pos, sender:get_player_name()) then
|
||||
|
@ -39,12 +39,12 @@ minetest.register_node("epic:stats", {
|
|||
|
||||
end,
|
||||
|
||||
epic = {
|
||||
on_enter = function(_, meta, player, ctx)
|
||||
epic = {
|
||||
on_enter = function(_, meta, player, ctx)
|
||||
meta:set_int("counter", meta:get_int("counter") + 1)
|
||||
meta:set_string("lastplayer", player:get_player_name())
|
||||
update_formspec(meta)
|
||||
ctx.next()
|
||||
end
|
||||
}
|
||||
end
|
||||
}
|
||||
})
|
||||
|
|
|
@ -22,12 +22,12 @@ minetest.register_node("epic:teleport", {
|
|||
on_rotate = epic.on_rotate,
|
||||
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("pos", minetest.pos_to_string({x=0, y=0, z=0}))
|
||||
update_formspec(meta, pos)
|
||||
end,
|
||||
update_formspec(meta, pos)
|
||||
end,
|
||||
|
||||
on_receive_fields = function(pos, _, fields, sender)
|
||||
on_receive_fields = function(pos, _, fields, sender)
|
||||
if not sender or minetest.is_protected(pos, sender:get_player_name()) then
|
||||
-- not allowed
|
||||
return
|
||||
|
@ -47,16 +47,16 @@ minetest.register_node("epic:teleport", {
|
|||
end
|
||||
end
|
||||
|
||||
end,
|
||||
end,
|
||||
|
||||
epic = {
|
||||
on_enter = function(pos, meta, player, ctx)
|
||||
on_enter = function(pos, meta, player, ctx)
|
||||
local rel_pos = minetest.string_to_pos(meta:get_string("pos"))
|
||||
local target_pos = epic.to_absolute_pos(pos, rel_pos)
|
||||
player:set_pos(target_pos)
|
||||
ctx.next()
|
||||
end
|
||||
}
|
||||
end
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_on_punchnode(function(pos, _, puncher, _)
|
||||
|
|
|
@ -33,13 +33,13 @@ minetest.register_node("epic:teleport_relative", {
|
|||
on_rotate = epic.on_rotate,
|
||||
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("source", minetest.pos_to_string({x=0, y=0, z=0}))
|
||||
meta:set_string("target", minetest.pos_to_string({x=0, y=0, z=0}))
|
||||
update_formspec(meta, pos)
|
||||
end,
|
||||
update_formspec(meta, pos)
|
||||
end,
|
||||
|
||||
on_receive_fields = function(pos, _, fields, sender)
|
||||
on_receive_fields = function(pos, _, fields, sender)
|
||||
if not sender or minetest.is_protected(pos, sender:get_player_name()) then
|
||||
-- not allowed
|
||||
return
|
||||
|
@ -71,10 +71,10 @@ minetest.register_node("epic:teleport_relative", {
|
|||
end
|
||||
end
|
||||
|
||||
end,
|
||||
end,
|
||||
|
||||
epic = {
|
||||
on_enter = function(pos, meta, player, ctx)
|
||||
on_enter = function(pos, meta, player, ctx)
|
||||
local source_pos = epic.to_absolute_pos(pos, minetest.string_to_pos(meta:get_string("source")))
|
||||
local target_pos = epic.to_absolute_pos(pos, minetest.string_to_pos(meta:get_string("target")))
|
||||
local player_pos = player:get_pos()
|
||||
|
@ -86,8 +86,8 @@ minetest.register_node("epic:teleport_relative", {
|
|||
player:set_pos(new_pos)
|
||||
end
|
||||
ctx.next()
|
||||
end
|
||||
}
|
||||
end
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_on_punchnode(function(pos, _, puncher, _)
|
||||
|
|
|
@ -28,10 +28,10 @@ minetest.register_node("epic:unlock", {
|
|||
on_rotate = epic.on_rotate,
|
||||
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("pos", minetest.pos_to_string(pos))
|
||||
update_formspec(meta, pos)
|
||||
end,
|
||||
update_formspec(meta, pos)
|
||||
end,
|
||||
|
||||
on_receive_fields = function(pos, _, fields, sender)
|
||||
if not sender or minetest.is_protected(pos, sender:get_player_name()) then
|
||||
|
@ -53,7 +53,7 @@ minetest.register_node("epic:unlock", {
|
|||
end
|
||||
end
|
||||
|
||||
end,
|
||||
end,
|
||||
|
||||
-- allow mesecons triggering
|
||||
mesecons = {
|
||||
|
@ -65,12 +65,12 @@ minetest.register_node("epic:unlock", {
|
|||
}
|
||||
},
|
||||
|
||||
epic = {
|
||||
on_enter = function(pos, meta, _, ctx)
|
||||
epic = {
|
||||
on_enter = function(pos, meta, _, ctx)
|
||||
do_unlock(pos, meta)
|
||||
ctx.next()
|
||||
end
|
||||
}
|
||||
end
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
|
|
|
@ -8,8 +8,8 @@ minetest.register_node("epic:unstash_inv", {
|
|||
on_rotate = epic.on_rotate,
|
||||
|
||||
epic = {
|
||||
on_enter = function(_, _, player, ctx)
|
||||
ctx.data.stashed_items = ctx.data.stashed_items or {}
|
||||
on_enter = function(_, _, player, ctx)
|
||||
ctx.data.stashed_items = ctx.data.stashed_items or {}
|
||||
local player_inv = player:get_inventory()
|
||||
|
||||
for _, itemstr in ipairs(ctx.data.stashed_items) do
|
||||
|
@ -20,6 +20,6 @@ minetest.register_node("epic:unstash_inv", {
|
|||
end
|
||||
|
||||
ctx.next()
|
||||
end
|
||||
}
|
||||
end
|
||||
}
|
||||
})
|
||||
|
|
|
@ -30,14 +30,14 @@ minetest.register_node("epic:waypoint", {
|
|||
on_rotate = epic.on_rotate,
|
||||
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("name", "Waypoint")
|
||||
meta:set_string("pos", minetest.pos_to_string({x=0, y=0, z=0}))
|
||||
meta:set_int("radius", 3)
|
||||
update_formspec(meta, pos)
|
||||
end,
|
||||
update_formspec(meta, pos)
|
||||
end,
|
||||
|
||||
on_receive_fields = function(pos, _, fields, sender)
|
||||
on_receive_fields = function(pos, _, fields, sender)
|
||||
if not sender or minetest.is_protected(pos, sender:get_player_name()) then
|
||||
-- not allowed
|
||||
return
|
||||
|
@ -45,7 +45,7 @@ minetest.register_node("epic:waypoint", {
|
|||
|
||||
local meta = minetest.get_meta(pos);
|
||||
|
||||
if fields.save or fields.setpos then
|
||||
if fields.save or fields.setpos then
|
||||
local radius = tonumber(fields.radius) or 3
|
||||
if radius < 0 then
|
||||
radius = 1
|
||||
|
@ -54,7 +54,7 @@ minetest.register_node("epic:waypoint", {
|
|||
meta:set_int("radius", radius)
|
||||
meta:set_string("name", fields.name or "")
|
||||
update_formspec(meta, pos)
|
||||
end
|
||||
end
|
||||
|
||||
if fields.setpos then
|
||||
minetest.chat_send_player(sender:get_player_name(), "[epic] Please punch the desired target position")
|
||||
|
@ -68,10 +68,10 @@ minetest.register_node("epic:waypoint", {
|
|||
end
|
||||
end
|
||||
|
||||
end,
|
||||
end,
|
||||
|
||||
epic = {
|
||||
on_enter = function(pos, meta, player, ctx)
|
||||
on_enter = function(pos, meta, player, ctx)
|
||||
local target_pos = epic.to_absolute_pos(pos, minetest.string_to_pos(meta:get_string("pos")))
|
||||
ctx.step_data.pos = target_pos
|
||||
ctx.step_data.radius = meta:get_int("radius")
|
||||
|
@ -88,19 +88,19 @@ minetest.register_node("epic:waypoint", {
|
|||
world_pos = target_pos
|
||||
})
|
||||
end
|
||||
end,
|
||||
on_check = function(_, _, player, ctx)
|
||||
end,
|
||||
on_check = function(_, _, player, ctx)
|
||||
local pos = player:get_pos()
|
||||
if vector.distance(pos, ctx.step_data.pos) < ctx.step_data.radius then
|
||||
ctx.next()
|
||||
end
|
||||
end,
|
||||
on_exit = function(_, _, player, ctx)
|
||||
end,
|
||||
on_exit = function(_, _, player, ctx)
|
||||
if ctx.step_data.waypoint_hud_id then
|
||||
player:hud_remove(ctx.step_data.waypoint_hud_id)
|
||||
end
|
||||
end
|
||||
}
|
||||
end
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_on_punchnode(function(pos, _, puncher, _)
|
||||
|
|
|
@ -30,14 +30,14 @@ minetest.register_node("epic:waypoint_inverse", {
|
|||
on_rotate = epic.on_rotate,
|
||||
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("name", "Waypoint")
|
||||
meta:set_string("pos", minetest.pos_to_string({x=0, y=0, z=0}))
|
||||
meta:set_int("radius", 3)
|
||||
update_formspec(meta, pos)
|
||||
end,
|
||||
update_formspec(meta, pos)
|
||||
end,
|
||||
|
||||
on_receive_fields = function(pos, _, fields, sender)
|
||||
on_receive_fields = function(pos, _, fields, sender)
|
||||
if not sender or minetest.is_protected(pos, sender:get_player_name()) then
|
||||
-- not allowed
|
||||
return
|
||||
|
@ -45,7 +45,7 @@ minetest.register_node("epic:waypoint_inverse", {
|
|||
|
||||
local meta = minetest.get_meta(pos);
|
||||
|
||||
if fields.save or fields.setpos then
|
||||
if fields.save or fields.setpos then
|
||||
local radius = tonumber(fields.radius) or 3
|
||||
if radius < 0 then
|
||||
radius = 1
|
||||
|
@ -54,7 +54,7 @@ minetest.register_node("epic:waypoint_inverse", {
|
|||
meta:set_int("radius", radius)
|
||||
meta:set_string("name", fields.name or "")
|
||||
update_formspec(meta, pos)
|
||||
end
|
||||
end
|
||||
|
||||
if fields.setpos then
|
||||
minetest.chat_send_player(sender:get_player_name(), "[epic] Please punch the desired target position")
|
||||
|
@ -68,10 +68,10 @@ minetest.register_node("epic:waypoint_inverse", {
|
|||
end
|
||||
end
|
||||
|
||||
end,
|
||||
end,
|
||||
|
||||
epic = {
|
||||
on_enter = function(pos, meta, player, ctx)
|
||||
on_enter = function(pos, meta, player, ctx)
|
||||
local target_pos = epic.to_absolute_pos(pos, minetest.string_to_pos(meta:get_string("pos")))
|
||||
ctx.step_data.pos = target_pos
|
||||
ctx.step_data.radius = meta:get_int("radius")
|
||||
|
@ -86,19 +86,19 @@ minetest.register_node("epic:waypoint_inverse", {
|
|||
world_pos = target_pos
|
||||
})
|
||||
end
|
||||
end,
|
||||
on_check = function(_, _, player, ctx)
|
||||
end,
|
||||
on_check = function(_, _, player, ctx)
|
||||
local pos = player:get_pos()
|
||||
if vector.distance(pos, ctx.step_data.pos) > ctx.step_data.radius then
|
||||
ctx.next()
|
||||
end
|
||||
end,
|
||||
on_exit = function(_, _, player, ctx)
|
||||
end,
|
||||
on_exit = function(_, _, player, ctx)
|
||||
if ctx.step_data.waypoint_hud_id then
|
||||
player:hud_remove(ctx.step_data.waypoint_hud_id)
|
||||
end
|
||||
end
|
||||
}
|
||||
end
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_on_punchnode(function(pos, _, puncher, _)
|
||||
|
|
|
@ -1,17 +1,17 @@
|
|||
|
||||
minetest.register_on_mods_loaded(function()
|
||||
for name, nodedef in pairs(minetest.registered_nodes) do
|
||||
if nodedef.epic and not nodedef.epic_anyone_can_place then
|
||||
minetest.override_item(name, {
|
||||
on_place = function(itemstack, placer, pointed_thing)
|
||||
local playername = (placer and placer:get_player_name()) or ""
|
||||
if not minetest.check_player_privs(playername, {epic_builder=true}) then
|
||||
minetest.chat_send_player(playername, "[epic] placing this requires the 'epic_builder' priv!")
|
||||
return
|
||||
end
|
||||
return minetest.item_place(itemstack, placer, pointed_thing)
|
||||
end
|
||||
})
|
||||
end
|
||||
end
|
||||
for name, nodedef in pairs(minetest.registered_nodes) do
|
||||
if nodedef.epic and not nodedef.epic_anyone_can_place then
|
||||
minetest.override_item(name, {
|
||||
on_place = function(itemstack, placer, pointed_thing)
|
||||
local playername = (placer and placer:get_player_name()) or ""
|
||||
if not minetest.check_player_privs(playername, {epic_builder=true}) then
|
||||
minetest.chat_send_player(playername, "[epic] placing this requires the 'epic_builder' priv!")
|
||||
return
|
||||
end
|
||||
return minetest.item_place(itemstack, placer, pointed_thing)
|
||||
end
|
||||
})
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
|
|
@ -2,14 +2,14 @@
|
|||
minetest.register_chatcommand("epic_abort", {
|
||||
description = "Aborts the current epic",
|
||||
func = function(name)
|
||||
epic.abort(name)
|
||||
epic.abort(name)
|
||||
end
|
||||
})
|
||||
|
||||
|
||||
minetest.register_chatcommand("epic_dump", { -- *chuckles*
|
||||
description = "Dumps the current state, optionally from a given user",
|
||||
privs = { epic_debug = true },
|
||||
privs = { epic_debug = true },
|
||||
func = function(_, params)
|
||||
if params then
|
||||
return true, dump(epic.state[params])
|
||||
|
|
54
common.lua
54
common.lua
|
@ -157,32 +157,32 @@ end
|
|||
|
||||
-- converts the direction from a param2
|
||||
epic.get_direction = function(param2)
|
||||
local direction = minetest.facedir_to_dir(param2)
|
||||
if direction.x == -1 and direction.z == 0 then
|
||||
return { x=0, y=0, z=1 }
|
||||
elseif direction.x == 0 and direction.z == 1 then
|
||||
return { x=1, y=0, z=0 }
|
||||
elseif direction.x == 1 and direction.z == 0 then
|
||||
return { x=0, y=0, z=-1 }
|
||||
elseif direction.x == 0 and direction.z == -1 then
|
||||
return { x=-1, y=0, z=0 }
|
||||
else
|
||||
return nil
|
||||
end
|
||||
local direction = minetest.facedir_to_dir(param2)
|
||||
if direction.x == -1 and direction.z == 0 then
|
||||
return { x=0, y=0, z=1 }
|
||||
elseif direction.x == 0 and direction.z == 1 then
|
||||
return { x=1, y=0, z=0 }
|
||||
elseif direction.x == 1 and direction.z == 0 then
|
||||
return { x=0, y=0, z=-1 }
|
||||
elseif direction.x == 0 and direction.z == -1 then
|
||||
return { x=-1, y=0, z=0 }
|
||||
else
|
||||
return nil
|
||||
end
|
||||
end
|
||||
|
||||
-- returns the position of the next epic block
|
||||
epic.get_next_pos = function(pos)
|
||||
local node = minetest.get_node(pos)
|
||||
local direction = epic.get_direction(node.param2)
|
||||
local node = minetest.get_node(pos)
|
||||
local direction = epic.get_direction(node.param2)
|
||||
|
||||
if direction == nil then
|
||||
return
|
||||
end
|
||||
if direction == nil then
|
||||
return
|
||||
end
|
||||
|
||||
local next_pos = vector.add(pos, direction)
|
||||
local next_pos = vector.add(pos, direction)
|
||||
|
||||
return next_pos
|
||||
return next_pos
|
||||
end
|
||||
|
||||
-- returns a node and loads the area if needed
|
||||
|
@ -197,19 +197,19 @@ end
|
|||
|
||||
-- returns true if the node has an "epic" definition
|
||||
epic.is_epic = function(node)
|
||||
local nodedef = minetest.registered_nodes[node.name]
|
||||
return nodedef and nodedef.epic
|
||||
local nodedef = minetest.registered_nodes[node.name]
|
||||
return nodedef and nodedef.epic
|
||||
end
|
||||
|
||||
-- executes an epic function
|
||||
epic.execute_epic = function(player, main_pos, name)
|
||||
if epic.state[player:get_player_name()] then
|
||||
-- already running a function
|
||||
return
|
||||
end
|
||||
if epic.state[player:get_player_name()] then
|
||||
-- already running a function
|
||||
return
|
||||
end
|
||||
|
||||
minetest.log("action", "[epic] player " .. player:get_player_name() ..
|
||||
" executes function at " .. minetest.pos_to_string(main_pos))
|
||||
minetest.log("action", "[epic] player " .. player:get_player_name() ..
|
||||
" executes function at " .. minetest.pos_to_string(main_pos))
|
||||
|
||||
local state = epic.new_state()
|
||||
|
||||
|
|
|
@ -2,15 +2,15 @@
|
|||
local hooks = {}
|
||||
|
||||
epic.register_hook = function(hook)
|
||||
table.insert(hooks, hook)
|
||||
table.insert(hooks, hook)
|
||||
end
|
||||
|
||||
|
||||
epic.run_hook = function(name, params)
|
||||
for _, hook in ipairs(hooks) do
|
||||
local fn = hook[name]
|
||||
if fn and type(fn) == "function" then
|
||||
fn( unpack(params) )
|
||||
end
|
||||
end
|
||||
for _, hook in ipairs(hooks) do
|
||||
local fn = hook[name]
|
||||
if fn and type(fn) == "function" then
|
||||
fn( unpack(params) )
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -13,30 +13,30 @@ local function setup(playername, name)
|
|||
return
|
||||
end
|
||||
|
||||
local player = minetest.get_player_by_name(playername)
|
||||
local data = {}
|
||||
local player = minetest.get_player_by_name(playername)
|
||||
local data = {}
|
||||
|
||||
data.name = player:hud_add({
|
||||
hud_elem_type = "text",
|
||||
position = HUD_POSITION,
|
||||
offset = {x = 0, y = 0},
|
||||
text = name or "",
|
||||
alignment = HUD_ALIGNMENT,
|
||||
scale = {x = 100, y = 100},
|
||||
number = 0x00FF00
|
||||
})
|
||||
data.name = player:hud_add({
|
||||
hud_elem_type = "text",
|
||||
position = HUD_POSITION,
|
||||
offset = {x = 0, y = 0},
|
||||
text = name or "",
|
||||
alignment = HUD_ALIGNMENT,
|
||||
scale = {x = 100, y = 100},
|
||||
number = 0x00FF00
|
||||
})
|
||||
|
||||
data.time = player:hud_add({
|
||||
hud_elem_type = "text",
|
||||
position = HUD_POSITION,
|
||||
offset = {x = 0, y = 20},
|
||||
text = "",
|
||||
alignment = HUD_ALIGNMENT,
|
||||
scale = {x = 100, y = 100},
|
||||
number = 0x00FF00
|
||||
})
|
||||
data.time = player:hud_add({
|
||||
hud_elem_type = "text",
|
||||
position = HUD_POSITION,
|
||||
offset = {x = 0, y = 20},
|
||||
text = "",
|
||||
alignment = HUD_ALIGNMENT,
|
||||
scale = {x = 100, y = 100},
|
||||
number = 0x00FF00
|
||||
})
|
||||
|
||||
hud[playername] = data
|
||||
hud[playername] = data
|
||||
end
|
||||
|
||||
local function exit_cleanup(playername)
|
||||
|
@ -59,40 +59,40 @@ local function exit_cleanup(playername)
|
|||
end
|
||||
|
||||
epic.register_hook({
|
||||
on_execute_epic = function(player, _, state)
|
||||
setup(player:get_player_name(), state.name)
|
||||
end,
|
||||
on_execute_epic = function(player, _, state)
|
||||
setup(player:get_player_name(), state.name)
|
||||
end,
|
||||
|
||||
on_epic_exit = exit_cleanup,
|
||||
on_epic_exit = exit_cleanup,
|
||||
on_epic_abort = exit_cleanup
|
||||
})
|
||||
|
||||
local update
|
||||
update = function()
|
||||
for playername, state in pairs(epic.state) do
|
||||
local data = hud[playername]
|
||||
local player = minetest.get_player_by_name(playername)
|
||||
for playername, state in pairs(epic.state) do
|
||||
local data = hud[playername]
|
||||
local player = minetest.get_player_by_name(playername)
|
||||
|
||||
if player and data and data.time then
|
||||
local color = get_color(0,255,0)
|
||||
local time_str = ""
|
||||
if player and data and data.time then
|
||||
local color = get_color(0,255,0)
|
||||
local time_str = ""
|
||||
|
||||
if state.time and state.time > 0 then
|
||||
time_str = epic.format_time(state.time)
|
||||
if state.time and state.time > 0 then
|
||||
time_str = epic.format_time(state.time)
|
||||
|
||||
if state.time < 300 then
|
||||
color = get_color(255,255,0)
|
||||
elseif state.time < 60 then
|
||||
color = get_color(255,0,0)
|
||||
end
|
||||
end
|
||||
if state.time < 300 then
|
||||
color = get_color(255,255,0)
|
||||
elseif state.time < 60 then
|
||||
color = get_color(255,0,0)
|
||||
end
|
||||
end
|
||||
|
||||
player:hud_change(data.time, "text", time_str)
|
||||
player:hud_change(data.time, "number", color)
|
||||
end
|
||||
player:hud_change(data.time, "text", time_str)
|
||||
player:hud_change(data.time, "number", color)
|
||||
end
|
||||
|
||||
end
|
||||
minetest.after(1.0, update)
|
||||
end
|
||||
minetest.after(1.0, update)
|
||||
end
|
||||
|
||||
minetest.after(1.0, update)
|
||||
|
|
2
init.lua
2
init.lua
|
@ -114,5 +114,5 @@ if epic.log_executor then
|
|||
end
|
||||
|
||||
if minetest.settings:get_bool("enable_epic_integration_test") then
|
||||
dofile(MP.."/integration_test.lua")
|
||||
dofile(MP.."/integration_test.lua")
|
||||
end
|
||||
|
|
|
@ -1,43 +1,43 @@
|
|||
|
||||
epic.register_hook({
|
||||
on_execute_epic = function(player, main_pos, state)
|
||||
minetest.log("action", "[epic] on_execute_epic player=" ..
|
||||
player:get_player_name() ..
|
||||
" main_pos=" .. minetest.pos_to_string(main_pos) ..
|
||||
" state=" .. dump(state))
|
||||
end,
|
||||
on_execute_epic = function(player, main_pos, state)
|
||||
minetest.log("action", "[epic] on_execute_epic player=" ..
|
||||
player:get_player_name() ..
|
||||
" main_pos=" .. minetest.pos_to_string(main_pos) ..
|
||||
" state=" .. dump(state))
|
||||
end,
|
||||
|
||||
on_before_node_check = function(pos, player)
|
||||
minetest.log("action", "[epic] on_before_node_check player=" ..
|
||||
player:get_player_name() ..
|
||||
" pos=" .. minetest.pos_to_string(pos) ..
|
||||
" node=" .. minetest.get_node(pos).name)
|
||||
end,
|
||||
minetest.log("action", "[epic] on_before_node_check player=" ..
|
||||
player:get_player_name() ..
|
||||
" pos=" .. minetest.pos_to_string(pos) ..
|
||||
" node=" .. minetest.get_node(pos).name)
|
||||
end,
|
||||
|
||||
on_before_node_enter = function(pos, player)
|
||||
minetest.log("action", "[epic] on_before_node_enter player=" ..
|
||||
player:get_player_name() ..
|
||||
" pos=" .. minetest.pos_to_string(pos) ..
|
||||
" node=" .. minetest.get_node(pos).name)
|
||||
end,
|
||||
minetest.log("action", "[epic] on_before_node_enter player=" ..
|
||||
player:get_player_name() ..
|
||||
" pos=" .. minetest.pos_to_string(pos) ..
|
||||
" node=" .. minetest.get_node(pos).name)
|
||||
end,
|
||||
|
||||
on_before_node_exit = function(pos, player)
|
||||
minetest.log("action", "[epic] on_before_node_exit player=" ..
|
||||
player:get_player_name() ..
|
||||
" pos=" .. minetest.pos_to_string(pos) ..
|
||||
" node=" .. minetest.get_node(pos).name)
|
||||
end,
|
||||
on_before_node_exit = function(pos, player)
|
||||
minetest.log("action", "[epic] on_before_node_exit player=" ..
|
||||
player:get_player_name() ..
|
||||
" pos=" .. minetest.pos_to_string(pos) ..
|
||||
" node=" .. minetest.get_node(pos).name)
|
||||
end,
|
||||
|
||||
on_epic_exit = function(playername, state)
|
||||
minetest.log("action", "[epic] on_epic_exit player=" ..
|
||||
playername ..
|
||||
" state=" .. dump(state))
|
||||
end,
|
||||
on_epic_exit = function(playername, state)
|
||||
minetest.log("action", "[epic] on_epic_exit player=" ..
|
||||
playername ..
|
||||
" state=" .. dump(state))
|
||||
end,
|
||||
|
||||
on_epic_abort = function(playername, state, reason)
|
||||
minetest.log("action", "[epic] on_epic_abort player=" ..
|
||||
playername ..
|
||||
" state=" .. dump(state) ..
|
||||
" reason=" .. reason)
|
||||
end
|
||||
on_epic_abort = function(playername, state, reason)
|
||||
minetest.log("action", "[epic] on_epic_abort player=" ..
|
||||
playername ..
|
||||
" state=" .. dump(state) ..
|
||||
" reason=" .. reason)
|
||||
end
|
||||
})
|
||||
|
|
|
@ -13,37 +13,37 @@ local exited_normally = monitoring.counter("epic_exited", "count of normally exi
|
|||
local exited_abort = monitoring.counter("epic_aborted", "count of aborted epics")
|
||||
|
||||
epic.register_hook({
|
||||
on_execute_epic = function()
|
||||
epic_starts.inc()
|
||||
current_epics = current_epics + 1
|
||||
current_epics_metric.set(current_epics)
|
||||
end,
|
||||
on_execute_epic = function()
|
||||
epic_starts.inc()
|
||||
current_epics = current_epics + 1
|
||||
current_epics_metric.set(current_epics)
|
||||
end,
|
||||
|
||||
on_before_node_enter = function()
|
||||
executed_blocks_enter.inc()
|
||||
end,
|
||||
on_before_node_enter = function()
|
||||
executed_blocks_enter.inc()
|
||||
end,
|
||||
|
||||
on_before_node_check = function()
|
||||
executed_blocks_check.inc()
|
||||
end,
|
||||
on_before_node_check = function()
|
||||
executed_blocks_check.inc()
|
||||
end,
|
||||
|
||||
on_before_node_exit = function()
|
||||
executed_blocks_exit.inc()
|
||||
end,
|
||||
on_before_node_exit = function()
|
||||
executed_blocks_exit.inc()
|
||||
end,
|
||||
|
||||
on_epic_exit = function()
|
||||
exited_normally.inc()
|
||||
current_epics = current_epics - 1
|
||||
current_epics_metric.set(current_epics)
|
||||
end,
|
||||
on_epic_exit = function()
|
||||
exited_normally.inc()
|
||||
current_epics = current_epics - 1
|
||||
current_epics_metric.set(current_epics)
|
||||
end,
|
||||
|
||||
on_epic_abort = function()
|
||||
exited_abort.inc()
|
||||
current_epics = current_epics - 1
|
||||
current_epics_metric.set(current_epics)
|
||||
end,
|
||||
on_epic_abort = function()
|
||||
exited_abort.inc()
|
||||
current_epics = current_epics - 1
|
||||
current_epics_metric.set(current_epics)
|
||||
end,
|
||||
|
||||
globalstep_stats = function(stats)
|
||||
time_budget.inc(stats.time)
|
||||
end
|
||||
globalstep_stats = function(stats)
|
||||
time_budget.inc(stats.time)
|
||||
end
|
||||
})
|
||||
|
|
12
privs.lua
12
privs.lua
|
@ -1,15 +1,15 @@
|
|||
|
||||
minetest.register_privilege("epic_debug", {
|
||||
description = "can call any epic function directly",
|
||||
give_to_singleplayer = true
|
||||
description = "can call any epic function directly",
|
||||
give_to_singleplayer = true
|
||||
})
|
||||
|
||||
minetest.register_privilege("epic_builder", {
|
||||
description = "can place epic blocks",
|
||||
give_to_singleplayer = true
|
||||
description = "can place epic blocks",
|
||||
give_to_singleplayer = true
|
||||
})
|
||||
|
||||
minetest.register_privilege("epic_admin", {
|
||||
description = "can administer any epic function",
|
||||
give_to_singleplayer = true
|
||||
description = "can administer any epic function",
|
||||
give_to_singleplayer = true
|
||||
})
|
||||
|
|
74
test.lua
74
test.lua
|
@ -2,51 +2,51 @@
|
|||
local next_fn
|
||||
|
||||
minetest = {
|
||||
after = function(_, fn)
|
||||
next_fn = fn
|
||||
end,
|
||||
after = function(_, fn)
|
||||
next_fn = fn
|
||||
end,
|
||||
|
||||
get_modpath = function(name)
|
||||
if name == "epic" then
|
||||
return "."
|
||||
else
|
||||
return nil
|
||||
end
|
||||
end,
|
||||
get_modpath = function(name)
|
||||
if name == "epic" then
|
||||
return "."
|
||||
else
|
||||
return nil
|
||||
end
|
||||
end,
|
||||
|
||||
get_worldpath = function()
|
||||
return "."
|
||||
end,
|
||||
get_worldpath = function()
|
||||
return "."
|
||||
end,
|
||||
|
||||
register_node = function() end,
|
||||
register_on_punchnode = function() end,
|
||||
register_on_punchplayer = function() end,
|
||||
register_on_mods_loaded = function() end,
|
||||
register_on_player_receive_fields = function() end,
|
||||
register_on_joinplayer = function() end,
|
||||
register_on_leaveplayer = function() end,
|
||||
register_on_dieplayer = function() end,
|
||||
register_privilege = function() end,
|
||||
register_chatcommand = function() end,
|
||||
register_on_shutdown = function() end,
|
||||
register_node = function() end,
|
||||
register_on_punchnode = function() end,
|
||||
register_on_punchplayer = function() end,
|
||||
register_on_mods_loaded = function() end,
|
||||
register_on_player_receive_fields = function() end,
|
||||
register_on_joinplayer = function() end,
|
||||
register_on_leaveplayer = function() end,
|
||||
register_on_dieplayer = function() end,
|
||||
register_privilege = function() end,
|
||||
register_chatcommand = function() end,
|
||||
register_on_shutdown = function() end,
|
||||
|
||||
get_connected_players = function()
|
||||
return {}
|
||||
end,
|
||||
get_connected_players = function()
|
||||
return {}
|
||||
end,
|
||||
|
||||
global_exists = function() end,
|
||||
mkdir = function() end,
|
||||
global_exists = function() end,
|
||||
mkdir = function() end,
|
||||
|
||||
get_us_time = function()
|
||||
return 1000
|
||||
end,
|
||||
get_us_time = function()
|
||||
return 1000
|
||||
end,
|
||||
|
||||
registered_nodes = {},
|
||||
registered_nodes = {},
|
||||
|
||||
settings = {
|
||||
get_bool = function() end,
|
||||
get = function() end,
|
||||
}
|
||||
settings = {
|
||||
get_bool = function() end,
|
||||
get = function() end,
|
||||
}
|
||||
}
|
||||
|
||||
screwdriver = {}
|
||||
|
|
|
@ -74,7 +74,7 @@ end)
|
|||
|
||||
minetest.register_chatcommand("epic_trace", {
|
||||
description = "Enables or disables epic tracing",
|
||||
privs = { epic_debug = true },
|
||||
privs = { epic_debug = true },
|
||||
func = function(name, params)
|
||||
local player = minetest.get_player_by_name(name)
|
||||
local meta = player:get_meta()
|
||||
|
@ -93,6 +93,6 @@ minetest.register_chatcommand("epic_trace", {
|
|||
end
|
||||
else
|
||||
return true, "Usage: /epic_trace on|off"
|
||||
end
|
||||
end
|
||||
end
|
||||
})
|
||||
|
|
|
@ -2,16 +2,16 @@
|
|||
|
||||
|
||||
epic.allow_metadata_inventory_put = function(pos, _, _, stack, player)
|
||||
if minetest.is_protected(pos, player:get_player_name()) then
|
||||
return 0
|
||||
end
|
||||
return stack:get_count()
|
||||
if minetest.is_protected(pos, player:get_player_name()) then
|
||||
return 0
|
||||
end
|
||||
return stack:get_count()
|
||||
end
|
||||
|
||||
|
||||
epic.allow_metadata_inventory_take = function(pos, _, _, stack, player)
|
||||
if minetest.is_protected(pos, player:get_player_name()) then
|
||||
return 0
|
||||
end
|
||||
return stack:get_count()
|
||||
if minetest.is_protected(pos, player:get_player_name()) then
|
||||
return 0
|
||||
end
|
||||
return stack:get_count()
|
||||
end
|
||||
|
|
|
@ -7,62 +7,62 @@ local punch_handler = {}
|
|||
Registers a punch-configuration callback:
|
||||
|
||||
epic.punchnode_callback({
|
||||
nodes = {"default:dirt"},
|
||||
timeout = 300,
|
||||
check_protection = true,
|
||||
callback = function(pos, node) end
|
||||
nodes = {"default:dirt"},
|
||||
timeout = 300,
|
||||
check_protection = true,
|
||||
callback = function(pos, node) end
|
||||
})
|
||||
--]]
|
||||
function epic.punchnode_callback(player, punchDef)
|
||||
local playername = player:get_player_name()
|
||||
punch_handler[playername] = punchDef
|
||||
local playername = player:get_player_name()
|
||||
punch_handler[playername] = punchDef
|
||||
end
|
||||
|
||||
|
||||
minetest.register_on_punchnode(function(pos, node, puncher)
|
||||
local playername = puncher:get_player_name()
|
||||
local punchDef = punch_handler[playername]
|
||||
local punchDef = punch_handler[playername]
|
||||
|
||||
-- abort if no callback waiting
|
||||
if not punchDef then
|
||||
return
|
||||
end
|
||||
-- abort if no callback waiting
|
||||
if not punchDef then
|
||||
return
|
||||
end
|
||||
|
||||
-- TODO: check timeout
|
||||
-- TODO: check timeout
|
||||
|
||||
-- clear callback
|
||||
punch_handler[playername] = nil
|
||||
-- clear callback
|
||||
punch_handler[playername] = nil
|
||||
|
||||
if punchDef.check_protection then
|
||||
if minetest.is_protected(pos, playername) and
|
||||
not minetest.check_player_privs(playername, {epic_admin=true}) then
|
||||
minetest.chat_send_player(playername, "[epic] target is protected! aborting selection.")
|
||||
return
|
||||
end
|
||||
end
|
||||
if punchDef.check_protection then
|
||||
if minetest.is_protected(pos, playername) and
|
||||
not minetest.check_player_privs(playername, {epic_admin=true}) then
|
||||
minetest.chat_send_player(playername, "[epic] target is protected! aborting selection.")
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
-- check valid nodes
|
||||
local valid_node = false
|
||||
-- check valid nodes
|
||||
local valid_node = false
|
||||
|
||||
if punchDef.nodes then
|
||||
-- go through list
|
||||
for _, nodename in ipairs(punchDef.nodes) do
|
||||
if node.name == nodename then
|
||||
valid_node = true
|
||||
break
|
||||
end
|
||||
end
|
||||
else
|
||||
-- all nodes valid
|
||||
valid_node = true
|
||||
end
|
||||
if punchDef.nodes then
|
||||
-- go through list
|
||||
for _, nodename in ipairs(punchDef.nodes) do
|
||||
if node.name == nodename then
|
||||
valid_node = true
|
||||
break
|
||||
end
|
||||
end
|
||||
else
|
||||
-- all nodes valid
|
||||
valid_node = true
|
||||
end
|
||||
|
||||
if not valid_node then
|
||||
minetest.chat_send_player(playername, "[epic] target node invalid! valid types: " .. dump(punchDef.nodes))
|
||||
return
|
||||
end
|
||||
if not valid_node then
|
||||
minetest.chat_send_player(playername, "[epic] target node invalid! valid types: " .. dump(punchDef.nodes))
|
||||
return
|
||||
end
|
||||
|
||||
punchDef.callback(pos, node)
|
||||
punchDef.callback(pos, node)
|
||||
end)
|
||||
|
||||
-- cleanup
|
||||
|
|
|
@ -10,7 +10,7 @@ local getStateFile = function(playername)
|
|||
end
|
||||
|
||||
epic.savegame.save = function(playername, savegame)
|
||||
local file = io.open(getStateFile(playername),"w")
|
||||
local file = io.open(getStateFile(playername),"w")
|
||||
local json = minetest.write_json(savegame)
|
||||
if file and file:write(json) and file:close() then
|
||||
return
|
||||
|
|
Loading…
Reference in New Issue