From 2ffc11443a80ed7ff9c4b48f87c3786c4b0dbaee Mon Sep 17 00:00:00 2001 From: IamPyu Date: Fri, 14 Jun 2024 21:40:36 -0600 Subject: [PATCH] Update: Luck and Boxes --- CHANGELOG.md | 11 ++++ mods/pyutest_core/init.lua | 1 + mods/pyutest_core/lootboxes.lua | 60 ++++++++++++++++++ mods/pyutest_core/structures.lua | 23 +++++++ mods/pyutest_core/textures/lootbox_unlock.ogg | Bin 0 -> 8071 bytes mods/pyutest_core/tools.lua | 7 +- 6 files changed, 101 insertions(+), 1 deletion(-) create mode 100644 mods/pyutest_core/lootboxes.lua create mode 100644 mods/pyutest_core/textures/lootbox_unlock.ogg diff --git a/CHANGELOG.md b/CHANGELOG.md index 10d9668..a83601a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,16 @@ # Changelog +## [Jun 14th 2024] Major Update: Luck and Boxes + +- Added Lootboxes + - Added Trash Lootbox + - Added Resource Lootbox + - Added Griefer's Dream Lootbox + - Added Liquid Sources Lootbox + - Added Lighting Lootbox +- Lootboxes spawn across various biomes +- Revamped Bomb + ## [Jun 14th 2024] Major Update: Items and Utilites Update - Added Gunpowder, Coins, Sugar, and Ash diff --git a/mods/pyutest_core/init.lua b/mods/pyutest_core/init.lua index b61a319..eb2ebd3 100644 --- a/mods/pyutest_core/init.lua +++ b/mods/pyutest_core/init.lua @@ -33,3 +33,4 @@ dofile(PyuTestCore_Path.."/abms.lua") dofile(PyuTestCore_Path.."/tools.lua") dofile(PyuTestCore_Path.."/player.lua") dofile(PyuTestCore_Path.."/crafts.lua") +dofile(PyuTestCore_Path.."/lootboxes.lua") diff --git a/mods/pyutest_core/lootboxes.lua b/mods/pyutest_core/lootboxes.lua new file mode 100644 index 0000000..a7b4abd --- /dev/null +++ b/mods/pyutest_core/lootboxes.lua @@ -0,0 +1,60 @@ +PyuTestCore.LOOTBOX_USEFULLNESS = { + USELESS = "white", + AVERAGE = "lightblue", + USEFUL = "coral", + AMAZING = "cyan" +} + +PyuTestCore.make_lootbox = function (type, dtype, items, usefullness) + local id = "pyutest_core:"..type.."_lootbox" + minetest.register_node(id, { + description = Translate(dtype .. " Lootbox"), + groups = {block = PyuTestCore.BLOCK_BREAKABLE_LONG}, + tiles = {"crate.png"}, + color = usefullness, + sounds = PyuTestCore.make_node_sounds(), + on_rightclick = function (pos, _, clicker) + if clicker == nil then return end + + for _, v in pairs(items) do + minetest.add_item(pos, v) + end + + minetest.sound_play("lootbox_unlock", { + pos = pos, + gain = 1 + }) + minetest.remove_node(pos) + end + }) +end + +PyuTestCore.make_lootbox("trash", "Trash", { + ItemStack("pyutest_core:deadbush 19"), + ItemStack("pyutest_core:") +}, PyuTestCore.LOOTBOX_USEFULLNESS.USELESS) + +PyuTestCore.make_lootbox("resource", "Resource", { + ItemStack("pyutest_core:gunpowder 4"), + ItemStack("pyutest_core:stick 6"), + ItemStack("pyutest_core:sugar 3"), + ItemStack("pyutest_core:coin 4"), + ItemStack("pyutest_core:tree_sapling 2") +}, PyuTestCore.LOOTBOX_USEFULLNESS.AVERAGE) + +PyuTestCore.make_lootbox("griefer", "Griefer's Dream", { + ItemStack("pyutest_core:tnt 3"), + ItemStack("pyutest_core:bomb 2") +}, PyuTestCore.LOOTBOX_USEFULLNESS.USEFUL) + +PyuTestCore.make_lootbox("liquid_sources", "Liquid Sources", { + ItemStack("pyutest_core:water_source 5"), + ItemStack("pyutest_core:lava_source 5"), + ItemStack("pyutest_core:oil_source 5"), + ItemStack("pyutest_core:liquid_acid_source 5") +}, PyuTestCore.LOOTBOX_USEFULLNESS.USEFUL) + +PyuTestCore.make_lootbox("lighting", "Lighting", { + ItemStack("pyutest_core:light 2"), + ItemStack("pyutest_core:torch 13") +}, PyuTestCore.LOOTBOX_USEFULLNESS.AMAZING) diff --git a/mods/pyutest_core/structures.lua b/mods/pyutest_core/structures.lua index 741e0f7..ae8f6f0 100644 --- a/mods/pyutest_core/structures.lua +++ b/mods/pyutest_core/structures.lua @@ -49,3 +49,26 @@ minetest.register_decoration({ rotation = "random", flags = "place_center_x, place_center_z" }) + +minetest.register_decoration({ + deco_type = "simple", + sidelen = 16, + fill_ratio = 0.0008, + place_on = { + "pyutest_core:grass_block", + "pyutest_core:dirt_block", + "pyutest_core:snow_block", + "pyutest_core:mycelium_block", + "pyutest_core:stone_block" + }, + biomes = {"desert", "grassland", "mushroom_fields", "frozen_plains", "forest"}, + y_max = PyuTestCore_BiomeTops.mountains, + y_min = PyuTestCore_SurfaceBiomeBottom, + decoration = { + "pyutest_core:trash_lootbox", + "pyutest_core:resource_lootbox", + "pyutest_core:griefer_lootbox", + "pyutest_core:liquid_sources_lootbox", + "pyutest_core:lighting_lootbox", + } +}) diff --git a/mods/pyutest_core/textures/lootbox_unlock.ogg b/mods/pyutest_core/textures/lootbox_unlock.ogg new file mode 100644 index 0000000000000000000000000000000000000000..149da1b3043bebbdf6b11a7c18e227143294728f GIT binary patch literal 8071 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 literal 0 HcmV?d00001 diff --git a/mods/pyutest_core/tools.lua b/mods/pyutest_core/tools.lua index aa0cda7..9711fe6 100644 --- a/mods/pyutest_core/tools.lua +++ b/mods/pyutest_core/tools.lua @@ -51,13 +51,18 @@ PyuTestCore.make_tool("pyutest_core:pickaxe", "pickaxe", "Pickaxe", {}, "pickaxe } }) -PyuTestCore.make_tool("pyutest_core:bomb", "bomb", "Bomb", {}, "bomb.png", { +PyuTestCore.make_item("pyutest_core:bomb", "bomb", "Bomb", {}, "bomb.png", { + stack_max = 16, on_use = function (_, user) if user == nil then return end local pos = user:get_pos() PyuTestCore.create_explosion(pos, 2) + local stack = user:get_wielded_item() + stack:set_count(stack:get_count() - 1) + + user:set_wielded_item(stack) end })