images for the combination dials
@ -2,7 +2,7 @@ local S = minetest.get_translator(minetest.get_current_modname())
|
||||
|
||||
local dimple_grow_time = df_farming.config.plant_growth_time * df_farming.config.dimple_cup_delay_multiplier / 4
|
||||
|
||||
local dimple_cup_groups = {snappy = 3, flammable = 2, plant = 1, not_in_creative_inventory = 1, attached_node = 1, color_blue = 1, basecolor_blue = 1, excolor_blue = 1, light_sensitive_fungus = 11, flower = 1, flora = 1, fire_encouragement=60,fire_flammability=100, compostability=70, handy=1,shearsy=1,hoey=1}
|
||||
local dimple_cup_groups = {snappy = 3, flammable = 2, plant = 1, not_in_creative_inventory = 1, attached_node = 1, light_sensitive_fungus = 11, flower = 1, flora = 1, fire_encouragement=60,fire_flammability=100, compostability=70, handy=1,shearsy=1,hoey=1}
|
||||
|
||||
local register_dimple_cup = function(number)
|
||||
local name = "df_farming:dimple_cup_"..tostring(number)
|
||||
@ -60,6 +60,14 @@ for i = 1,4 do
|
||||
register_dimple_cup(i)
|
||||
end
|
||||
|
||||
local dimple_cup_groups_harvested = {}
|
||||
for group, val in pairs(dimple_cup_groups) do
|
||||
dimple_cup_groups_harvested[group] = val
|
||||
end
|
||||
dimple_cup_groups_harvested.color_blue = 1
|
||||
dimple_cup_groups_harvested.basecolor_blue = 1
|
||||
dimple_cup_groups_harvested.excolor_blue = 1
|
||||
|
||||
local name = "df_farming:dimple_cup_harvested"
|
||||
local def = {
|
||||
description = S("Dimple Cup"),
|
||||
@ -73,7 +81,7 @@ local def = {
|
||||
floodable = true,
|
||||
is_ground_content = false,
|
||||
buildable_to = true,
|
||||
groups = dimple_cup_groups,
|
||||
groups = dimple_cup_groups_harvested,
|
||||
sounds = df_dependencies.sound_leaves(),
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
|
@ -8,6 +8,13 @@ local initialize = function(pos, meta)
|
||||
if not meta:contains("key") then
|
||||
local inv = meta:get_inventory()
|
||||
inv:set_size("main", 8)
|
||||
|
||||
for i = 1, math.random(1,8) do
|
||||
local item = ItemStack(df_underworld_items.colour_items[math.random(1,#df_underworld_items.colour_items)])
|
||||
--item:set_count(math.random(1,4))
|
||||
inv:add_item("main", item)
|
||||
end
|
||||
|
||||
local next_seed = math.random() * 2^21
|
||||
math.randomseed(pos.x + pos.y^8 + pos.z^16)
|
||||
-- Key is consistent with location
|
||||
@ -32,19 +39,16 @@ end
|
||||
-- 3 4
|
||||
|
||||
local formspec_dial = function(identifier, state)
|
||||
-- TODO replace label with image[]
|
||||
-- TODO replace buttons with image buttons?
|
||||
return "label[0.5,0;"..tostring(state).."]"
|
||||
.. "button[0,0.25;0.5,0.5;"..identifier.."-;<]"
|
||||
.. "button[1.5,0.25;0.5,0.5;"..identifier.."+;>]"
|
||||
return "image[0.5,0;2,1;dfcaverns_chest_dial_"..tostring(state)..".png]"
|
||||
.. "button[0,0.25;0.5,0.5;"..identifier.."+;<]"
|
||||
.. "button[2.5,0.25;0.5,0.5;"..identifier.."-;>]"
|
||||
end
|
||||
|
||||
local formspec_bar = function(horizontal, state, key)
|
||||
-- TODO replace boxes with image[]
|
||||
if horizontal then
|
||||
return "box[0,0;".. tostring(key/14 * 2) ..",1;#222222ff]box[0,0.1;".. tostring(state/14 * 2)..",0.8;#ff00ffff]"
|
||||
return "box[0,0;".. tostring(key/14 * 2 + 0.1) ..",1;#222222ff]box[0.1,0.1;".. tostring(state/14 * 2)..",0.85;#ff00ff44]"
|
||||
end
|
||||
return "box[0,0;1,".. tostring(key/14 * 2) ..";#222222ff]box[0.1,0;0.8,".. tostring(state/14 * 2)..";#ff00ffff]"
|
||||
return "box[0,0;1,".. tostring(key/14 * 2 + 0.1) ..";#222222ff]box[0.1,0.1;0.85,".. tostring(state/14 * 2)..";#ff00ff44]"
|
||||
end
|
||||
|
||||
local prefix = "df_underworld_items:puzzle_chest"
|
||||
@ -61,22 +65,22 @@ local show_formspec = function(pos, node, clicker, itemstack, pointed_thing)
|
||||
local playername = clicker:get_player_name()
|
||||
local formname = prefix .. minetest.pos_to_string(pos)
|
||||
local formspec = "formspec_version[6]"
|
||||
.. "size[11,11.5]"
|
||||
.. "container[3.5,1]"
|
||||
.. "size[11,12]"
|
||||
.. "container[1.5,0.5]"
|
||||
.. "container[0,0]" .. formspec_dial("dial1", state[1]) .. "container_end[]"
|
||||
.. "container[2,0]" .. formspec_dial("dial2", state[2]) .. "container_end[]"
|
||||
.. "container[0,1]" .. formspec_dial("dial3", state[3]) .. "container_end[]"
|
||||
.. "container[2,1]" .. formspec_dial("dial4", state[4]) .. "container_end[]"
|
||||
.. "container[4.1,0]" .. formspec_bar(true, state_sum[1], key_sum[1]) .. "container_end[]"
|
||||
.. "container[4.1,1]" .. formspec_bar(true, state_sum[2], key_sum[2]) .. "container_end[]"
|
||||
.. "container[0.5,2.1]" .. formspec_bar(false, state_sum[3], key_sum[3]) .. "container_end[]"
|
||||
.. "container[2.5,2.1]" .. formspec_bar(false, state_sum[4], key_sum[4]) .. "container_end[]"
|
||||
.. "container[3,0]" .. formspec_dial("dial2", state[2]) .. "container_end[]"
|
||||
.. "container[0,1.5]" .. formspec_dial("dial3", state[3]) .. "container_end[]"
|
||||
.. "container[3,1.5]" .. formspec_dial("dial4", state[4]) .. "container_end[]"
|
||||
.. "container[6.1,0]" .. formspec_bar(true, state_sum[1], key_sum[1]) .. "container_end[]"
|
||||
.. "container[6.1,1.5]" .. formspec_bar(true, state_sum[2], key_sum[2]) .. "container_end[]"
|
||||
.. "container[1,2.75]" .. formspec_bar(false, state_sum[3], key_sum[3]) .. "container_end[]"
|
||||
.. "container[4,2.75]" .. formspec_bar(false, state_sum[4], key_sum[4]) .. "container_end[]"
|
||||
.. "container_end[]"
|
||||
.. "list[current_player;main;0.6,6.2;8,4;]"
|
||||
.. "list[current_player;main;0.6,6.7;8,4;]"
|
||||
if solved then
|
||||
local nodemeta = "nodemeta:"..pos.x..","..pos.y..","..pos.z
|
||||
formspec = formspec
|
||||
.. "list["..nodemeta..";main;0.6,4.7;8,1;]"
|
||||
.. "list["..nodemeta..";main;0.6,5.4;8,1;]"
|
||||
if meta:get_string("solved") ~= "true" then
|
||||
minetest.sound_play("dfcaverns_puzzle_chest_open", {pos = pos})
|
||||
meta:set_string("solved", "true")
|
||||
@ -112,6 +116,12 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
|
||||
show_formspec(pos, nil, player)
|
||||
end)
|
||||
|
||||
local puzzle_chest_can_dig = function(pos, player)
|
||||
local meta = minetest.get_meta(pos)
|
||||
initialize(pos, meta)
|
||||
local inv = meta:get_inventory()
|
||||
return inv:is_empty("main")
|
||||
end
|
||||
|
||||
minetest.register_node("df_underworld_items:puzzle_chest_closed", {
|
||||
description = S("Puzzle Chest"),
|
||||
@ -133,12 +143,7 @@ minetest.register_node("df_underworld_items:puzzle_chest_closed", {
|
||||
_mcl_hardness = 50,
|
||||
|
||||
on_rightclick = show_formspec,
|
||||
can_dig = function(pos, player)
|
||||
local meta = minetest.get_meta(pos)
|
||||
initialize(pos, meta)
|
||||
local inv = meta:get_inventory()
|
||||
return inv:is_empty("main")
|
||||
end,
|
||||
can_dig = puzzle_chest_can_dig,
|
||||
})
|
||||
|
||||
minetest.register_node("df_underworld_items:puzzle_chest_opened", {
|
||||
@ -152,22 +157,18 @@ minetest.register_node("df_underworld_items:puzzle_chest_opened", {
|
||||
{name = "dfcaverns_slade_block.png^dfcaverns_chest_mask_side.png", backface_culling = true},
|
||||
{name = "dfcaverns_slade_block.png^dfcaverns_chest_mask_side.png^dfcaverns_chest_lock_plate.png^dfcaverns_chest_lock_colours.png", backface_culling = true},
|
||||
{name = "([combine:16x32:0,0=dfcaverns_slade_block.png:0,16=dfcaverns_slade_block.png)^dfcaverns_chest_mask_interior.png", backface_culling = true},
|
||||
},
|
||||
},
|
||||
is_ground_content = false,
|
||||
mesh = "dfcaverns_chest_open.obj",
|
||||
drawtype= "mesh",
|
||||
visual = "mesh",
|
||||
paramtype2="facedir",
|
||||
groups = {stone=1, slade=1, pit_plasma_resistant=1, mese_radiation_shield=1, cracky = 3, building_block=1, material_stone=1, not_in_creative_inventory=1},
|
||||
drop = "df_underworld_items:puzzle_chest_closed",
|
||||
sounds = df_dependencies.sound_stone({ footstep = { name = "bedrock2_step", gain = 1 } }),
|
||||
_mcl_blast_resistance = 1200,
|
||||
_mcl_hardness = 50,
|
||||
|
||||
on_rightclick = show_formspec,
|
||||
can_dig = function(pos, player)
|
||||
local meta = minetest.get_meta(pos)
|
||||
initialize(pos, meta)
|
||||
local inv = meta:get_inventory()
|
||||
return inv:is_empty("main")
|
||||
end,
|
||||
can_dig = puzzle_chest_can_dig,
|
||||
})
|
||||
|
@ -58,6 +58,8 @@ local colour_groups = {
|
||||
{"color_white", "basecolor_white", "excolor_white", "excolor_lightgrey", "color_grey"}, -- 7
|
||||
}
|
||||
|
||||
df_underworld_items.colour_items = {}
|
||||
|
||||
local cull_colour_groups = function()
|
||||
local culled_colour_groups = {}
|
||||
for _, groups in ipairs(colour_groups) do
|
||||
@ -74,6 +76,22 @@ local cull_colour_groups = function()
|
||||
table.insert(culled_colour_groups, new_set)
|
||||
end
|
||||
colour_groups = culled_colour_groups
|
||||
|
||||
-- collect a list of all items with useful colour groups
|
||||
-- to be used for treasure generation
|
||||
local colour_item_set = {}
|
||||
for itemname, def in pairs(minetest.registered_items) do
|
||||
for _, groups in ipairs(colour_groups) do
|
||||
for _, colour in ipairs(groups) do
|
||||
if minetest.get_item_group(itemname, colour) ~= 0 then
|
||||
colour_item_set[itemname] = true
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
for colour_item, _ in pairs(colour_item_set) do
|
||||
table.insert(df_underworld_items.colour_items, colour_item)
|
||||
end
|
||||
end
|
||||
minetest.after(0, cull_colour_groups)
|
||||
|
||||
|
BIN
df_underworld_items/textures/dfcaverns_chest_dial_0.png
Normal file
After Width: | Height: | Size: 923 B |
BIN
df_underworld_items/textures/dfcaverns_chest_dial_1.png
Normal file
After Width: | Height: | Size: 947 B |
BIN
df_underworld_items/textures/dfcaverns_chest_dial_2.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
df_underworld_items/textures/dfcaverns_chest_dial_3.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
df_underworld_items/textures/dfcaverns_chest_dial_4.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
df_underworld_items/textures/dfcaverns_chest_dial_5.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
df_underworld_items/textures/dfcaverns_chest_dial_6.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
df_underworld_items/textures/dfcaverns_chest_dial_7.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 146 B After Width: | Height: | Size: 146 B |