mirror of
https://github.com/FaceDeer/dfcaverns.git
synced 2025-07-14 14:30:25 +02:00
enable ores in MCL2, fix some undeclared globals, fix icecap growth in MCL (achievements are a good debugging tool)
This commit is contained in:
@ -66,7 +66,7 @@ minetest.register_on_placenode(function(pos, newnode, placer, oldnode, itemstack
|
||||
local achievement = plant_node_achievements[newnode.name]
|
||||
if not achievement then return end
|
||||
local achievement_name = achievement.achievement
|
||||
if not player_awards or player_awards.unlocked[achievement_name] ~= achievement_name then
|
||||
if not player_awards.unlocked or player_awards.unlocked[achievement_name] ~= achievement_name then
|
||||
-- all of the growable plants in DFCaverns are timer-based. If you place
|
||||
-- a seedling or seed and the resulting node has a timer running, then
|
||||
-- it's passed the checks to see if it was placed in a growable area.
|
||||
|
@ -10,6 +10,9 @@ df_achievements = {}
|
||||
|
||||
local old_awards_version = false
|
||||
if awards.run_trigger_callbacks then
|
||||
-- older versions of awards crash when attempting to use newer versions of triggers
|
||||
-- this "run_trigger_callbacks" API call is present in those older versions, so using that
|
||||
-- as a fingerprint to discover them
|
||||
old_awards_version = true
|
||||
else
|
||||
-- used to track the progress of achievements that are based off of other achievements
|
||||
@ -37,6 +40,8 @@ awards.register_achievement = function(achievement_name, achievement_def, ...)
|
||||
achievement_def.trigger = nil
|
||||
end
|
||||
|
||||
-- The achievement being registered has "parent" achievements that progress when it is unlocked,
|
||||
-- track that here
|
||||
if achievement_def._dfcaverns_achievements then
|
||||
for _, parent_achievement in pairs(achievement_def._dfcaverns_achievements) do
|
||||
local parent_source_list = achievement_parents[parent_achievement] or {}
|
||||
|
@ -59,18 +59,22 @@ minetest.register_globalstep(function(dtime)
|
||||
|
||||
local player_name
|
||||
local player_awards
|
||||
local unlocked
|
||||
local player_data
|
||||
local biome
|
||||
local totals
|
||||
|
||||
-- loop through players
|
||||
for _, player in pairs(minetest.get_connected_players()) do
|
||||
player_name = player:get_player_name()
|
||||
player_awards = awards.player(player_name)
|
||||
if player_awards.unlocked["dfcaverns_visit_all_caverns"] ~= "dfcaverns_visit_all_caverns" or
|
||||
player_awards.unlocked["dfcaverns_visit_glowing_pit"] ~= "dfcaverns_visit_glowing_pit" then
|
||||
unlocked = player_awards.unlocked or {}
|
||||
|
||||
if unlocked["dfcaverns_visit_all_caverns"] ~= "dfcaverns_visit_all_caverns" or
|
||||
unlocked["dfcaverns_visit_glowing_pit"] ~= "dfcaverns_visit_glowing_pit" then
|
||||
player_data = get_player_data(player)
|
||||
biome = player_data.biome
|
||||
totals = player_data.totals
|
||||
|
||||
if biome == "towercap" and check_nodes(node_types.towercap, totals) then
|
||||
awards.unlock(player_name, "dfcaverns_visit_tower_cap")
|
||||
elseif biome == "fungiwood" and check_nodes(node_types.fungiwood, totals) then
|
||||
@ -106,7 +110,7 @@ minetest.register_globalstep(function(dtime)
|
||||
awards.unlock(player_name, "dfcaverns_visit_underworld")
|
||||
end
|
||||
if (totals["df_underworld_items:glow_amethyst"] or 0) > 1 and
|
||||
player_awards.unlocked["dfcaverns_visit_glowing_pit"] ~= "dfcaverns_visit_glowing_pit" then
|
||||
unlocked["dfcaverns_visit_glowing_pit"] ~= "dfcaverns_visit_glowing_pit" then
|
||||
local player_pos = player:get_pos()
|
||||
local pit = df_caverns.get_nearest_glowing_pit(player_pos)
|
||||
pit.location.y = player_pos.y
|
||||
@ -122,10 +126,10 @@ minetest.register_globalstep(function(dtime)
|
||||
awards.unlock(player_name, "dfcaverns_visit_primordial_jungle")
|
||||
end
|
||||
end
|
||||
if player_awards.unlocked["dfcaverns_visit_chasm"] ~= "dfcaverns_visit_chasm" and chasms.is_in_chasm(player:get_pos()) then
|
||||
if unlocked["dfcaverns_visit_chasm"] ~= "dfcaverns_visit_chasm" and chasms.is_in_chasm(player:get_pos()) then
|
||||
awards.unlock(player_name, "dfcaverns_visit_chasm")
|
||||
end
|
||||
if player_awards.unlocked["dfcaverns_visit_pit"] ~= "dfcaverns_visit_pit" then
|
||||
if unlocked["dfcaverns_visit_pit"] ~= "dfcaverns_visit_pit" then
|
||||
local pos = player:get_pos()
|
||||
local pos_y = pos.y
|
||||
if pos_y < -30 then -- ignore pits when near the surface
|
||||
|
Reference in New Issue
Block a user