nalc/nalc_awards/init.lua
sys4-fr d8016d3b71 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.
2019-03-02 19:41:08 +01:00

175 lines
5.1 KiB
Lua

--[[
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.")