From 457eedb913ae1eb1b843ef89d5a55d9514df1ff1 Mon Sep 17 00:00:00 2001 From: marco_a <4279489-marco_a@users.noreply.gitlab.com> Date: Tue, 30 Apr 2024 16:52:59 +0200 Subject: [PATCH] Add `awards.remove(..)` util --- README.md | 2 ++ src/api_awards.lua | 15 +++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/README.md b/README.md index 2903221..544ff64 100644 --- a/README.md +++ b/README.md @@ -197,6 +197,8 @@ end * return true to cancel HUD from appearing. * `awards.unlock(player_name, award_name)` * gives an award to a player +* `awards.remove(player_name, award_name)` + * removes an award from a player * `awards.get_award_states(player_name)` * Returns list of tables, sorted by `score`, each having the fields: diff --git a/src/api_awards.lua b/src/api_awards.lua index b269fd9..c04d740 100644 --- a/src/api_awards.lua +++ b/src/api_awards.lua @@ -183,6 +183,21 @@ function awards.unlock(name, award) end end +function awards.remove(name, award) + local data = awards.player(name) + local awdef = awards.registered_awards[award] + assert(awdef, "Unable to remove an award which doesn't exist!") + + if data.disabled or + (not data.unlocked[award]) then + return + end + + minetest.log("action", "Award " .. award .." has been removed from ".. name) + data.unlocked[award] = nil + awards.save() +end + function awards.get_award_states(name) local hash_is_unlocked = {} local retval = {}