Added Transformer task.

master
Nathan Salapat 2021-07-14 21:05:30 -05:00
parent 3512639413
commit 524a6ede2c
5 changed files with 133 additions and 2 deletions

View File

@ -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,

View File

@ -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

View File

@ -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,
})