Add support for death reasons

This commit is contained in:
rubenwardy 2018-04-04 20:55:33 +01:00
parent 6c79a2f73f
commit f571f9d6eb
3 changed files with 26 additions and 7 deletions

@ -97,6 +97,8 @@ Callbacks (register a function to be run)
* craft type: Craft something. * craft type: Craft something.
* item: the crafted item type. If nil, all crafted items are counted * item: the crafted item type. If nil, all crafted items are counted
* death type: Die. * death type: Die.
* reason: the death reason, one of the types in PlayerHPChangeReason (see lua_api.txt)
or nil for total deaths.
* chat type: Write a chat message. * chat type: Write a chat message.
* join type: Join the server. * join type: Join the server.
* (for all types) target - how many times to dig/place/craft/etc. * (for all types) target - how many times to dig/place/craft/etc.

@ -48,6 +48,11 @@ local function convert_data()
data[from] = nil data[from] = nil
end end
data.death = {
unknown = data.death,
__total = data.death,
}
-- Convert item db to new format -- Convert item db to new format
local counted_items = { local counted_items = {
count = "dig", count = "dig",

@ -14,13 +14,6 @@
-- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-- --
awards.register_trigger("death", {
type = "counted",
progress = "@1/@2 deaths",
auto_description = { "Die once", "Die @1 times" },
})
minetest.register_on_dieplayer(awards.notify_death)
awards.register_trigger("chat", { awards.register_trigger("chat", {
type = "counted", type = "counted",
@ -45,6 +38,25 @@ awards.register_trigger("join", {
minetest.register_on_joinplayer(awards.notify_join) minetest.register_on_joinplayer(awards.notify_join)
awards.register_trigger("death", {
type = "counted_key",
progress = "@1/@2 deaths",
auto_description = { "Die once of @2", "Die @1 times of @2" },
auto_description_total = { "Die @1 times.", "Mine @1 times" },
get_key = function(self, def)
return def.trigger.reason
end,
})
minetest.register_on_dieplayer(function(player, reason)
if reason then
reason = reason.type
else
reason = "unknown"
end
awards.notify_death(player, reason)
end)
awards.register_trigger("dig", { awards.register_trigger("dig", {
type = "counted_key", type = "counted_key",
progress = "@1/@2 dug", progress = "@1/@2 dug",