death_messages/init.lua

86 lines
3.0 KiB
Lua

-- [ most messages are from https://github.com/FozLand/chat_next ] --
local messages = {}
local say = {}
-- Lava death messages
messages.lava = {
'%s thought lava was cool.',
'%s melted into a ball of fire.',
'%s couldn\'t resist that warm glow of lava.',
'%s dug straight down.',
'%s didn\'t know lava was hot.'
}
-- Drowning death messages
messages.water = {
'%s ran out of air.',
'%s failed at swimming lessons.',
'%s tried to impersonate an anchor.',
'%s forgot he wasn\'t a fish.',
'%s blew one too many bubbles.'
}
-- Burning death messages
messages.fire = {
'%s burned to a crisp.',
'%s got a little too warm.',
'%s got too close to the camp fire.',
'%s just got roasted, hotdog style.',
'%s was set aflame. More light that way.'
}
-- Other death messages
messages.other = {
'%s did something fatal.',
'%s died.',
'%s gave up on life.',
'%s is somewhat dead now.',
'%s is very dead now.',
'Oh snap! %s died too young. :-(',
'Oh no, %s has gone from us. :-('
}
-- Respawn messages
messages.respawn = {
'%s comes back alive. How is that possible?',
'%s comes back alive...maybe as a zombie? Other players should be careful now.',
'Like a Phoenix %s rises from the ashes!',
'My goodness, %s is back!',
'%s died of something fatal'
}
local base = minetest.settings:get("color_boring")
local success = minetest.settings:get("color_success")
local failure = minetest.settings:get("color_failure")
core.register_on_dieplayer(function(player)
local player_name = player:get_player_name()
local node = core.registered_nodes[core.get_node(player:get_pos()).name]
if core.is_singleplayer() then
player_name = 'You'
end
-- Death by lava
if node.groups.lava ~= nil then
core.chat_send_all(core.colorize(failure, "- ") .. string.format(core.colorize(base, messages.lava[math.random(1,#messages.lava)]), player_name))
irc.say(string.format('*** %s died.', player_name))
-- Death by drowning
elseif player:get_breath() == 0 then
core.chat_send_all(core.colorize(failure, "- ") .. string.format(core.colorize(base, messages.water[math.random(1,#messages.water)]), player_name))
irc.say(string.format('*** %s died.', player_name))
-- Death by fire
elseif node.name == 'fire:basic_flame' then
core.chat_send_all(core.colorize(failure, "* ") .. string.format(core.colorize(base, messages.fire[math.random(1,#messages.fire)]), player_name))
irc.say(string.format('*** %s died.', player_name))
-- Death by something else
else
core.chat_send_all(core.colorize(failure, "- ") .. string.format(core.colorize(base, messages.other[math.random(1,#messages.other)]), player_name))
irc.say(string.format('*** %s died.', player_name))
end
end)
minetest.register_on_respawnplayer( function(player)
local player_name = player:get_player_name()
core.chat_send_all(core.colorize(success, "* ") .. string.format(core.colorize(base, messages.respawn[math.random(1,#messages.respawn)]), player_name))
irc.say(string.format('*** %s returns.', player_name))
end)