diff --git a/abms.lua b/abms.lua index 11d517c..cfee3ad 100644 --- a/abms.lua +++ b/abms.lua @@ -80,6 +80,7 @@ minetest.register_globalstep(function(dtime) for i = 1, #players do local player = players[i] local pos = player:getpos() + local player_name = player:get_player_name() -- How many mobs are up at the moment? This is a rough check. if fun_caves.fortress_spawns and #fun_caves.fortress_spawns > 0 and dps_count % monster_delay == 0 then @@ -115,17 +116,17 @@ minetest.register_globalstep(function(dtime) end if pos.y >= 11168 and pos.y <= 15168 then - if not players_in_orbit[player:get_player_name()] then + if not players_in_orbit[player_name] then player:set_physics_override({gravity=0.1}) player:set_sky("#000000", "plain", {}) - players_in_orbit[player:get_player_name()] = true + players_in_orbit[player_name] = true end - elseif players_in_orbit[player:get_player_name()] then + elseif players_in_orbit[player_name] then player:set_sky("#000000", "regular", {}) minetest.after(20, function() player:set_physics_override({gravity=1}) end) - players_in_orbit[player:get_player_name()] = false + players_in_orbit[player_name] = false end -- environmental damage @@ -135,6 +136,13 @@ minetest.register_globalstep(function(dtime) player:set_hp(20) return else + if fun_caves.armor_expire and fun_caves.armor_expire[player_name] and fun_caves.armor_expire[player_name] < time then + player:set_armor_groups({fleshy=100}) + --print(dump(player:get_armor_groups())) + minetest.chat_send_player(player_name, minetest.colorize('#FF0000', 'Your skin feels softer...')) + fun_caves.armor_expire[player_name] = nil + end + local minp = vector.subtract(pos, 0.5) local maxp = vector.add(pos, 0.5) @@ -161,7 +169,7 @@ minetest.register_globalstep(function(dtime) -- ... from hunger (even less often). if dps_count % hunger_delay == 0 then if hunger_mod then - hunger.update_hunger(player, hunger.players[player:get_player_name()].lvl - 4) + hunger.update_hunger(player, hunger.players[player_name].lvl - 4) else player:set_hp(player:get_hp() - 1) end diff --git a/armor.lua b/armor.lua new file mode 100644 index 0000000..986630d --- /dev/null +++ b/armor.lua @@ -0,0 +1,53 @@ +fun_caves.armor_expire = {} + +local function armor(user, factor) + local player_name = user:get_player_name() + user:set_armor_groups({fleshy=factor}) + --print(dump(user:get_armor_groups())) + minetest.chat_send_player(player_name, 'Your skin feels harder...') + fun_caves.armor_expire[player_name] = minetest.get_us_time() + 3600 * 1000000 +end + +local descs = { + {'wood', 95, 'group:wood'}, + {'stone', 90, 'group:stone'}, + {'steel', 80, 'default:steel_ingot'}, + {'copper', 85, 'default:copper_ingot'}, + {'bronze', 70, 'default:bronze_ingot'}, + {'gold', 60, 'default:gold_ingot'}, + {'diamond', 50, 'default:diamond'}, + {'silver', 40, 'fun_caves:silver_ingot'}, + {'mese', 30, 'default:mese_crystal'}, + --{'', 20, ''}, + --{'adamant', 10, 'fun_caves:adamant'}, +} + +for _, desc in pairs(descs) do + local name = desc[1] + local value = desc[2] + local cap = name:gsub('^%l', string.upper) + minetest.register_craftitem("fun_caves:liquid_"..name, { + description = 'Dr Robertson\'s Patented Liquid '..cap..' Elixir', + drawtype = "plantlike", + paramtype = "light", + tiles = {'fun_caves_liquid_'..name..'.png'}, + inventory_image = 'fun_caves_liquid_'..name..'.png', + groups = {dig_immediate = 3}, + sounds = default.node_sound_glass_defaults(), + on_use = function(itemstack, user, pointed_thing) + armor(user, value) + itemstack:take_item() + return itemstack + end, + }) + + minetest.register_craft({ + type = "shapeless", + output = 'fun_caves:liquid_'..name, + recipe = { + "mobs_slimes:green_slimeball", + desc[3], + "vessels:glass_bottle", + }, + }) +end diff --git a/deco_clouds.lua b/deco_clouds.lua index ec20a21..49c4ae7 100644 --- a/deco_clouds.lua +++ b/deco_clouds.lua @@ -99,3 +99,14 @@ minetest.register_craftitem("fun_caves:silver_lump", { description = "Lump of Silver", inventory_image = 'default_coal_lump.png^[colorize:#FFFFFF:175', }) + +minetest.register_craftitem("fun_caves:silver_ingot", { + description = "Silver Ingot", + inventory_image = 'default_steel_ingot.png^[colorize:#FFFFFF:175', +}) + +minetest.register_craft({ + type = "cooking", + output = "fun_caves:silver_ingot", + recipe = "fun_caves:silver_lump", +}) diff --git a/init.lua b/init.lua index 69f1420..6c0502e 100644 --- a/init.lua +++ b/init.lua @@ -68,6 +68,7 @@ dofile(fun_caves.path .. "/unionfind.lua") dofile(fun_caves.path .. "/nodes.lua") dofile(fun_caves.path .. "/deco.lua") dofile(fun_caves.path .. "/fungal_tree.lua") +dofile(fun_caves.path .. "/armor.lua") dofile(fun_caves.path .. "/mapgen.lua") if mobs and mobs.mod == "redo" then diff --git a/textures/fun_caves_liquid_bronze.png b/textures/fun_caves_liquid_bronze.png new file mode 100644 index 0000000..9831263 Binary files /dev/null and b/textures/fun_caves_liquid_bronze.png differ diff --git a/textures/fun_caves_liquid_copper.png b/textures/fun_caves_liquid_copper.png new file mode 100644 index 0000000..e643657 Binary files /dev/null and b/textures/fun_caves_liquid_copper.png differ diff --git a/textures/fun_caves_liquid_diamond.png b/textures/fun_caves_liquid_diamond.png new file mode 100644 index 0000000..436876b Binary files /dev/null and b/textures/fun_caves_liquid_diamond.png differ diff --git a/textures/fun_caves_liquid_gold.png b/textures/fun_caves_liquid_gold.png new file mode 100644 index 0000000..338e5be Binary files /dev/null and b/textures/fun_caves_liquid_gold.png differ diff --git a/textures/fun_caves_liquid_mese.png b/textures/fun_caves_liquid_mese.png new file mode 100644 index 0000000..b1d896c Binary files /dev/null and b/textures/fun_caves_liquid_mese.png differ diff --git a/textures/fun_caves_liquid_silver.png b/textures/fun_caves_liquid_silver.png new file mode 100644 index 0000000..520e568 Binary files /dev/null and b/textures/fun_caves_liquid_silver.png differ diff --git a/textures/fun_caves_liquid_steel.png b/textures/fun_caves_liquid_steel.png new file mode 100644 index 0000000..f25c20e Binary files /dev/null and b/textures/fun_caves_liquid_steel.png differ diff --git a/textures/fun_caves_liquid_stone.png b/textures/fun_caves_liquid_stone.png new file mode 100644 index 0000000..3b9350c Binary files /dev/null and b/textures/fun_caves_liquid_stone.png differ diff --git a/textures/fun_caves_liquid_wood.png b/textures/fun_caves_liquid_wood.png new file mode 100644 index 0000000..beb7b57 Binary files /dev/null and b/textures/fun_caves_liquid_wood.png differ