From 94a64db8898a8937bf7b3edab48624ab9b66387d Mon Sep 17 00:00:00 2001 From: TenPlus1 Date: Tue, 25 Apr 2017 10:23:00 +0100 Subject: [PATCH] Added new explosion settings and new blocks --- README.md | 1 + api.txt | 10 ++++++++-- blocks.lua | 53 +++++++++++++++++++++++++++++++++++++++++++++++++---- init.lua | 23 ++++++++++++++++------- 4 files changed, 74 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 6cd1458..19cb871 100644 --- a/README.md +++ b/README.md @@ -17,3 +17,4 @@ Changelog: - 0.2 - New api commands added thanks to blert2112 - 0.3 - New blocks added, also error checking, new options and schematic rehaul - 0.4 - Added ability to add custom functions within lucky blocks +- 0.5 - Explosions now have radius and fire setting, also added new blocks diff --git a/api.txt b/api.txt index 8b45630..6dd23a1 100644 --- a/api.txt +++ b/api.txt @@ -239,9 +239,15 @@ Explosion --------- Now we start adding the bad lucky blocks that cause damage to the player by -exploding. +adding explosions. -{"exp"} +{"exp", radius, fire} + +e.g. + +Cause explosion with radius of 4 and fire enabled. + +{"exp", 4, true} Lightning Strike diff --git a/blocks.lua b/blocks.lua index 7cb939f..de35ce2 100644 --- a/blocks.lua +++ b/blocks.lua @@ -8,6 +8,7 @@ lucky_block:add_schematics({ {"defpinetree", dpath .. "pine_tree_from_sapling.mts", {x = 2, y = 1, z = 2}}, {"acaciatree", dpath .. "acacia_tree_from_sapling.mts", {x = 4, y = 1, z = 4}}, {"aspentree", dpath .. "aspen_tree_from_sapling.mts", {x = 2, y = 1, z = 2}}, + {"corals", dpath .. "corals.mts", {x = 2, y = 1, z = 2}}, }) -- Default blocks @@ -28,7 +29,7 @@ lucky_block:add_blocks({ {"sch", "defpinetree", 0, false}, {"sch", "lavatrap", 1, true}, {"dro", {"default:mese_crystal_fragment", "default:mese_crystal"}, 10}, - {"exp"}, + {"exp", 2, true}, {"nod", "default:diamondblock", 0}, {"nod", "default:steelblock", 0}, {"nod", "default:dirt", 0}, @@ -41,7 +42,7 @@ lucky_block:add_blocks({ {"sch", "acaciatree", 0, false}, {"dro", {"default:axe_steel"}, 1}, {"dro", {"default:sword_bronze"}, 1}, - {"exp"}, + {"exp", 3}, {"sch", "platform", 1, true}, {"nod", "default:wood", 0}, {"dro", {"default:pick_bronze"}, 1}, @@ -49,8 +50,52 @@ lucky_block:add_blocks({ {"dro", {"default:shovel_bronze"}, 1}, {"nod", "default:gravel", 0}, {"dro", {"default:axe_bronze"}, 1}, + {"dro", {"default:bookshelf", "default:book", "default:paper"}, 5}, + {"dro", {"default:fence_wood", "default:fence_acacia_wood", "default:fence_aspen_wood", + "default:fence_junglewood", "default:fence_pine_wood"}, 15}, }) +-- default dev blocks +if minetest.registered_nodes["default:coral_brown"] then + lucky_block:add_blocks({ + {"dro", {"default:coral_brown", "default:coral_orange", "default:coral_skeleton"}, 5}, + {"sch", "corals", 0, true}, + }) +end + +if minetest.registered_nodes["default:mese_post_light"] then + lucky_block:add_blocks({ + {"dro", {"default:mese_post_light", "default:fence_wood"}, 5}, + {"nod", "default:mese_post_light"}, + {"dro", {"default:silver_sand", "default:sand", "default:desert_sand"}, 25}, + }) +end + +-- doors mod +if minetest.get_modpath("doors") then + lucky_block:add_blocks({ + {"dro", {"doors:door_wood", "doors:door_steel", "doors:door_glass", + "doors:door_obsidian_glass", "doors:trapdoor", "doors:trapdoor_steel"}, 1}, + {"dro", {"doors:gate_acacia_wood_closed", "doors:gate_aspen_wood_closed", "doors:gate_wood_closed", + "doors:gate_pine_wood_closed", "doors:gate_junglewood_closed"}, 5}, + }) +end + +-- screwdriver mod +if minetest.get_modpath("screwdriver") then + lucky_block:add_blocks({ + {"dro", {"screwdriver:screwdriver"}, 1}, + }) +end + +-- vessels mod +if minetest.get_modpath("vessels") then + lucky_block:add_blocks({ + {"dro", {"vessels:shelf", "vessels:drinking_glass", "vessels:glass_bottle", + "vessels:steel_bottle", "vessels:glass_fragments"}, 5}, + }) +end + -- Farming mod (default) if minetest.get_modpath("farming") then lucky_block:add_blocks({ @@ -108,14 +153,14 @@ lucky_block:add_blocks({ {"dro", {"shields:shield_gold"}, 1}, {"dro", {"shields:shield_cactus"}, 1}, {"dro", {"shields:shield_bronze"}, 1}, - {"exp"}, + {"exp", 2}, }) end -- Fire mod if minetest.get_modpath("fire") then lucky_block:add_blocks({ - {"dro", {"fire:flint_and_steel"}, 1}, + {"dro", {"fire:flint_and_steel", "default:flint"}, 1}, {"nod", "fire:basic_flame", 1}, {"nod", "fire:permanent_flame", 1}, }) diff --git a/init.lua b/init.lua index 84152ff..ffc88e4 100644 --- a/init.lua +++ b/init.lua @@ -40,7 +40,7 @@ local lucky_list = { {"fal", {"default:wood", "default:gravel", "default:sand", "default:desert_sand", "default:stone", "default:dirt", "default:goldblock"}, 0}, {"lig"}, {"nod", "lucky_block:super_lucky_block", 0}, - {"exp"}, + {"exp", 2, true}, } -- ability to add new blocks to list @@ -179,7 +179,7 @@ local c_brick = minetest.get_content_id("default:obsidianbrick") local c_chest = minetest.get_content_id("default:chest_locked") -- explosion -function explosion(pos, radius) +function explosion(pos, radius, fire) -- play explosion sound minetest.sound_play("tnt_explode", { @@ -222,9 +222,13 @@ function explosion(pos, radius) if on_blast then return on_blast(p) else - minetest.set_node(p, {name = "air"}) + if fire and minetest.registered_nodes[n].groups.flammable then + minetest.set_node(p, {name = "fire:basic_flame"}) + else + minetest.set_node(p, {name = "air"}) + end - effect(p, 2, "tnt_smoke.png", 5) + effect(p, 5, "tnt_smoke.png", 5) end end @@ -256,7 +260,7 @@ end -- this is what happens when you dig a lucky block local lucky_block = function(pos, digger) - local luck = math.random(1, #lucky_list) ; -- luck = 1 + local luck = math.random(1, #lucky_list) ; -- luck = 1 local action = lucky_list[luck][1] local schem @@ -375,8 +379,11 @@ local lucky_block = function(pos, digger) -- explosion elseif action == "exp" then - explosion(pos, 2) - entity_physics(pos, 2) + local rad = lucky_list[luck][2] or 2 + local fire = lucky_list[luck][3] + + explosion(pos, rad, fire) + entity_physics(pos, rad) -- teleport elseif action == "tel" then @@ -392,6 +399,8 @@ local lucky_block = function(pos, digger) digger:setpos(pos, false) + minetest.chat_send_player(digger:get_player_name(), "Random Teleport!") + -- drop items elseif action == "dro" then