Add award unlock requirements

Fixes #52
This commit is contained in:
rubenwardy
2018-04-05 17:00:41 +01:00
parent 2f49d895ed
commit e110bbbc7a
3 changed files with 43 additions and 20 deletions

19
api.lua
View File

@ -296,6 +296,19 @@ function awards.register_achievement(name, def)
tdef:on_register(def)
end
function def:can_unlock(data)
if not self.requires then
return true
end
for i=1, #self.requires do
if not data.unlocked[self.requires[i]] then
return false
end
end
return true
end
-- Add Award
awards.registered_awards[name] = def
@ -341,6 +354,12 @@ function awards.unlock(name, award)
return
end
if not awdef:can_unlock(data) then
minetest.log("warning", "can_unlock returned false in unlock of " ..
award .. " for " .. name)
return
end
-- Unlock Award
minetest.log("action", name.." has unlocked award "..name)
data.unlocked[award] = award