From d8016d3b71024a058202f36846378d93a3eb17e1 Mon Sep 17 00:00:00 2001 From: sys4-fr Date: Sat, 2 Mar 2019 19:41:08 +0100 Subject: [PATCH] Ajout du mod nalc_awards Ce mod permet de limiter les crafts d'items. Pour l'instant les 2 types de quarry. Il faut obtenir certains awards pour avoir le droit de crafter un certain nombre de quarries. Au total il est possible de crafter 12 quarries et 4 super quarries au maximum par joueur. --- nalc_awards/depends.txt | 3 + nalc_awards/init.lua | 174 +++++++++++++++++++++++++++++++++ nalc_awards/textures/waste.png | Bin 0 -> 272 bytes nalc_lib/init.lua | 14 +-- 4 files changed, 184 insertions(+), 7 deletions(-) create mode 100644 nalc_awards/depends.txt create mode 100644 nalc_awards/init.lua create mode 100644 nalc_awards/textures/waste.png diff --git a/nalc_awards/depends.txt b/nalc_awards/depends.txt new file mode 100644 index 0000000..0c79f17 --- /dev/null +++ b/nalc_awards/depends.txt @@ -0,0 +1,3 @@ +nalc_lib +nalc_technic +awards diff --git a/nalc_awards/init.lua b/nalc_awards/init.lua new file mode 100644 index 0000000..1a6fc28 --- /dev/null +++ b/nalc_awards/init.lua @@ -0,0 +1,174 @@ +--[[ + Ce mod permet de bloquer les craft des quarry. + Les quarry peuvent être débloquées en débloquant certains awards + + Liste des awards qui débloquent le craft de quarry (Les awards avec "*" sont à définir): + award_mine3 (Hardened Miner - dig 1000 default:stone)--> 1 Quarry + *award_iron_miner (Iron Miner - dig 100 default:stone_with_iron)--> 2 Quarry + *award_copper_miner (Copper Miner - dig 100 default:stone_with_copper)--> 4 Quarry + *award_gold_miner (Gold Digger - dig 100 default:stone_with_gold)--> 5 Quarry + award_mine4 (MasterMiner - dig 10000 default:stone)--> 1 Super Quarry + *award_iron_master(Iron Man - dig 1000 default:stone_with_iron)--> 1 Super Quarry + award_youre_a_copper (You're a copper - dig 1000 default:stone_with_copper)--> 1 super Quarry + *award_gold_master (Gold Master - dig 1000 default:stone_with_gold)--> 1 Super Quarry +]]-- + +if minetest.get_modpath("awards") then + + -- Redéfinition de la description d'awards existant + local award = awards.registered_awards["award_mine3"] + award.description = award.description.." (Unlock the craft of 1 Quarry)" + + award = awards.registered_awards["award_mine4"] + award.description = award.description.." (Unlock the craft of 1 Super Quarry)" + + award = awards.registered_awards["award_youre_a_copper"] + award.description = award.description.." (Unlock the craft of 1 Super Quarry)" + + -- Définitions de nouveaux awards -- + -- Iron Lady + awards.register_award( + "award_iron_miner", { + title = "The Iron Lady", + description = "Dig 100 iron ores. (Unlock the craft of 2 Quarry)", + icon = "default_iron_lump.png^awards_level1.png", + background = "awards_bg_mining.png", + difficulty = 0.03, + trigger = { + type = "dig", + node = "default:stone_with_iron", + target = 100 + } + }) + + -- Iron Man + awards.register_award( + "award_iron_master", { + title = "The Iron Man", + description = "Dig 1,000 iron ores. (Unlock the craft of 1 Super Quarry)", + icon = "default_iron_lump.png^awards_level2.png", + background = "awards_bg_mining.png", + difficulty = 0.04, + trigger = { + type = "dig", + node = "default:stone_with_iron", + target = 1000 + } + }) + + -- Copper Trooper + awards.register_award( + "award_copper_miner", { + title = "Copper Trooper", + description = "Dig 100 copper ores. (Unlock the craft of 4 Quarry)", + icon = "default_copper_lump.png^awards_level1.png", + background = "awards_bg_mining.png", + difficulty = 0.19, + trigger = { + type = "dig", + node = "default:stone_with_copper", + target = 100 + } + }) + + -- Gold Digger + awards.register_award( + "award_gold_miner", { + title = "Gold Digger", + description = "Dig 100 gold ores. (Unlock the craft of 5 Quarry)", + icon = "default_gold_lump.png^awards_level3.png", + background = "awards_bg_mining.png", + difficulty = 0.91, + trigger = { + type = "dig", + node = "default:stone_with_gold", + target = 100 + } + }) + + -- The Golden Age + awards.register_award( + "award_gold_master", { + title = "The Golden Age", + description = "Dig 1,000 gold ores. (Unlock the craft of 1 Super Quarry)", + icon = "default_gold_lump.png^awards_level4.png", + background = "awards_bg_mining.png", + difficulty = 0.92, + trigger = { + type = "dig", + node = "default:stone_with_gold", + target = 1000 + } + }) + + -- New Waste Node + minetest.register_node( + ":nalc:waste", + { + description = "Waste", + tiles = {"waste.png"}, + is_ground_content = false, + groups = {crumbly=2, flammable=2}, + }) + + local limited_crafts = { + ["technic:quarry"] = { + award_mine3 = 1, + award_iron_miner = 2, + award_copper_miner = 4, + award_gold_digger = 5 + }, + ["nalc:superquarry"] = { + award_mine4 = 1, + award_iron_master = 1, + award_youre_a_copper = 1, + award_gold_master = 1 + } + } + + -- Ajout des limited_crafts dans le group limitcraft + for item,_ in pairs(limited_crafts) do + nalc.add_group(item, "limitcraft", 1) + end + + local function authorized_craft(items_crafted, levels, u_awards) + local nb = 0 + for award, count in pairs(levels) do + if u_awards[award] then + nb = nb + count + end + end + + return items_crafted < nb + end + + -- Customize register_on_craft + minetest.register_on_craft( + function(itemstack, player, old_craft_grid, craft_inv) + if not player or itemstack:is_empty() then + return + end + + local itemname = itemstack:get_name() + itemname = minetest.registered_aliases[itemname] or itemname + + if player and player.is_player and player:is_player() then + local playern = player:get_player_name() + local data = awards.player(playern) + local levels = limited_crafts[itemname] + + if levels then + local items_crafted = data.craft[itemname] or 0 + if not authorized_craft(items_crafted, levels, data.unlocked) then + minetest.chat_send_player(playern, "Vous n'avez pas assez d'expérience pour fabriquer cet article ! À la place, vous obtenez un bloc de déchets. / You don't have enough experience to make this item! Instead, you get a block of waste.") + return ItemStack("nalc:waste") + end + end + end + + awards.notify_craft(player, itemname, itemstack:get_count()) + end + ) +end + +minetest.log("action", "[nalc_awards] loaded.") diff --git a/nalc_awards/textures/waste.png b/nalc_awards/textures/waste.png new file mode 100644 index 0000000000000000000000000000000000000000..e2ea962286ccf82f674c6b9a36f910012eb1b384 GIT binary patch literal 272 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDUWnpKMmJ!#`kTWolu(#K; zwX?GDR`K%CN=$GsFH4GRGRxL-#l8nb`4~*v%Z;nnqzW(?dsw)O-Zm3t5OKELm2oUpjv>fvvGu9^k8uo4 zdKUv!AN&_(;Q#+$RWvc4kwKLI{{_axr*aHWKm2>}dL3&h!vlejfe!@&S&ywVnP2zC Ra3#>044$rjF6*2UngA#9TQmRw literal 0 HcmV?d00001 diff --git a/nalc_lib/init.lua b/nalc_lib/init.lua index d652b56..c1e65f6 100644 --- a/nalc_lib/init.lua +++ b/nalc_lib/init.lua @@ -23,7 +23,7 @@ local function remove_group(name, group) end -- Add node to group -local function add_group(name, group, value) +function nalc.add_group(name, group, value) local node = minetest.registered_nodes[name] if node then @@ -39,13 +39,13 @@ local function add_group(name, group, value) end -- Add a node in xp group -function nalc.def_xp(name, value) - add_group(name, "xp", value) -end +--function nalc.def_xp(name, value) +-- add_group(name, "xp", value) +--end -- Remove node from group "oddly_breakable_by_hand" -function nalc.not_hand_breakable(name) - remove_group(name, "oddly_breakable_by_hand") -end +--function nalc.not_hand_breakable(name) +-- remove_group(name, "oddly_breakable_by_hand") +--end minetest.log("action", "[nalc_lib] loaded.")