Added Transformer task.
parent
3512639413
commit
524a6ede2c
|
@ -913,7 +913,8 @@ worldedit.register_gui_function("worldedit_gui_param2", {
|
|||
get_formspec = function(name)
|
||||
local value = gui_param2[name] or "0"
|
||||
return "size[6.5,3]" .. worldedit.get_formspec_header("worldedit_gui_param2") ..
|
||||
string.format("field[0.5,1.5;4,0.8;worldedit_gui_param2_value;Value;%s]", minetest.formspec_escape(value)) ..
|
||||
'textarea[0.5,1;5,2;;;Some values make break the node!]'..
|
||||
string.format("field[0.5,2.5;2,0.8;worldedit_gui_param2_value;New Param2;%s]", minetest.formspec_escape(value)) ..
|
||||
"field_close_on_enter[worldedit_gui_copy_move_amount;false]" ..
|
||||
"button_exit[3.5,2.5;3,0.8;worldedit_gui_param2;Set Param2]"
|
||||
end,
|
||||
|
|
|
@ -29,3 +29,19 @@ minetest.register_craftitem('tasks:plasma_core_req', {
|
|||
groups = {not_in_creative_inventory=1},
|
||||
on_drop = lobby.no_drop
|
||||
})
|
||||
|
||||
minetest.register_craftitem('tasks:fuse', {
|
||||
description = 'Fuse',
|
||||
inventory_image = 'tasks_fuse.png',
|
||||
stack_max = 1,
|
||||
groups = {not_in_creative_inventory=1},
|
||||
on_drop = lobby.no_drop
|
||||
})
|
||||
|
||||
minetest.register_craftitem('tasks:fuse_req', {
|
||||
description = 'Fuse Request Form',
|
||||
inventory_image = 'tasks_fuse_req.png',
|
||||
stack_max = 1,
|
||||
groups = {not_in_creative_inventory=1},
|
||||
on_drop = lobby.no_drop
|
||||
})
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 1.4 KiB |
Binary file not shown.
After Width: | Height: | Size: 7.1 KiB |
|
@ -4,8 +4,26 @@ local col_box = {
|
|||
{.7, .4, -.35, 1.4, 1, .35}}
|
||||
}
|
||||
|
||||
local formspec_config =
|
||||
'size[6,3]'..
|
||||
'label[.5,.25;Please enter XP to be earned upon repairing a damaged transformer.\nIntegers only!]'..
|
||||
'field[1,1.5;5,1;input;;]'..
|
||||
'button_exit[2,2;2,1;save;Submit]'
|
||||
|
||||
minetest.register_node('tasks:transformer', {
|
||||
local formspec_good =
|
||||
'size[6,3]'..
|
||||
'textarea[1,1;5,2;;;Everything is functioning properly]'
|
||||
|
||||
local formspec_bad =
|
||||
'size[8,6]'..
|
||||
'textarea[.5,;5,2;;;There must have been a power surge.\nGet a new part from a storage locker.]' ..
|
||||
'button_exit[2.5,1.5;3,1;gimme;Grab a part request form]'..
|
||||
'list[current_name;part;6,1;1,1;]'..
|
||||
'list[current_player;main;0,3;8,3;]'..
|
||||
'listring[current_player;main]'..
|
||||
'listring[current_name;part]'
|
||||
|
||||
minetest.register_node('tasks:transformer_0_setup', {
|
||||
description = 'Power Transformer',
|
||||
drawtype = 'mesh',
|
||||
mesh = 'tasks_transformer.obj',
|
||||
|
@ -14,4 +32,100 @@ minetest.register_node('tasks:transformer', {
|
|||
paramtype2 = 'facedir',
|
||||
selection_box = col_box,
|
||||
collision_box = col_box,
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string('infotext', 'Unconfigured Power Transformer')
|
||||
meta:set_string('formspec', formspec_config)
|
||||
meta:set_string('xp', '')
|
||||
end,
|
||||
on_receive_fields = function(pos, formname, fields, sender)
|
||||
local meta = minetest.get_meta(pos)
|
||||
if fields ['save'] then
|
||||
if not fields.input or fields.input == "" then
|
||||
return
|
||||
end
|
||||
if tasks.is_integer(fields.input) then
|
||||
local node = minetest.get_node(pos)
|
||||
local inv = meta:get_inventory()
|
||||
meta:set_string('xp', fields.input)
|
||||
inv:set_size('part', 1)
|
||||
meta:set_string('infotext', 'Power Transformer')
|
||||
meta:set_string('formspec', formspec_good)
|
||||
minetest.swap_node(pos, {name = 'tasks:transformer_0_on', param2 = node.param2})
|
||||
else
|
||||
minetest.chat_send_player(sender:get_player_name(), 'Integers only please.')
|
||||
end
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
minetest.register_node('tasks:transformer_0_on',{
|
||||
description = 'Power Transformer',
|
||||
drawtype = 'mesh',
|
||||
mesh = 'tasks_transformer.obj',
|
||||
tiles = {'tasks_transformer.png'},
|
||||
paramtype2 = 'facedir',
|
||||
selection_box = col_box,
|
||||
collision_box = col_box,
|
||||
use_texture_alpha = true,
|
||||
groups = {breakable = 1, not_in_creative_inventory=1},
|
||||
drop = 'tasks:transformer_0_setup',
|
||||
on_rightclick = function(pos, node, clicker)
|
||||
local timer = minetest.get_node_timer(pos)
|
||||
local random_number = math.random(60,300)
|
||||
timer:start(random_number)
|
||||
end,
|
||||
on_timer = function(pos)
|
||||
local node = minetest.get_node(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
minetest.swap_node(pos, {name = 'tasks:transformer_0_off', param2 = node.param2})
|
||||
meta:set_string('formspec', formspec_bad)
|
||||
meta:set_string('infotext', 'Damaged power transformer!')
|
||||
end,
|
||||
})
|
||||
|
||||
minetest.register_node('tasks:transformer_0_off',{
|
||||
description = 'Power Transformer',
|
||||
drawtype = 'mesh',
|
||||
mesh = 'tasks_transformer.obj',
|
||||
tiles = {'tasks_transformer.png'},
|
||||
paramtype2 = 'facedir',
|
||||
selection_box = col_box,
|
||||
collision_box = col_box,
|
||||
use_texture_alpha = true,
|
||||
groups = {breakable = 1, not_in_creative_inventory=1},
|
||||
drop = 'tasks:transformer_0_setup',
|
||||
on_receive_fields = function(pos, formname, fields, sender)
|
||||
if fields ['gimme'] then
|
||||
local player_inv = sender:get_inventory()
|
||||
if not player_inv:contains_item('main', {name='tasks:fuse_req', count = 4}) then
|
||||
player_inv:add_item('main', 'tasks:fuse_req')
|
||||
else
|
||||
minetest.chat_send_player(sender:get_player_name(), 'You have too many of these already.')
|
||||
end
|
||||
end
|
||||
end,
|
||||
allow_metadata_inventory_put = function(pos, listname, index, stack)
|
||||
if listname == 'part' then
|
||||
if stack:get_name() == 'tasks:fuse' then
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
end
|
||||
end
|
||||
end,
|
||||
on_metadata_inventory_put = function(pos, listname, index, stack, player)
|
||||
local name = player:get_player_name()
|
||||
local meta = minetest.get_meta(pos)
|
||||
local xp = tonumber(meta:get_string('xp')) or 1
|
||||
local inv = meta:get_inventory()
|
||||
local node = minetest.get_node(pos)
|
||||
local timer = minetest.get_node_timer(pos)
|
||||
local random_number = math.random(60,300)
|
||||
inv:set_stack('part', 1, '')
|
||||
minetest.swap_node(pos, {name = 'tasks:transformer_0_on', param2 = node.param2})
|
||||
meta:set_string('formspec', formspec_good)
|
||||
tasks.only_add_xp(xp, name)
|
||||
timer:start(random_number)
|
||||
end,
|
||||
})
|
||||
|
|
Loading…
Reference in New Issue