enable ores in MCL2, fix some undeclared globals, fix icecap growth in MCL (achievements are a good debugging tool)

This commit is contained in:
FaceDeer
2022-08-21 16:38:34 -06:00
parent b593e3935c
commit e7d8b3ba42
7 changed files with 61 additions and 30 deletions

View File

@ -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.

View File

@ -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 {}

View File

@ -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