1
0
mirror of https://github.com/ComfyFactory/ComfyFactorio.git synced 2024-12-30 23:17:53 +02:00
ComfyFactorio/modules/custom_death_messages.lua

79 lines
3.5 KiB
Lua

-- prints death messages to all forces with custom texts -- by mewmew
local Event = require 'utils.event'
local message_color = {r = 0.9, g = 0.9, b = 0.9}
local messages = {
['small-biter'] = {' was nibbled to death.', ' should not have played with the biters.', ' is biter food.'},
['medium-biter'] = {' lost their leg to a hungry biter.', ' is biter food.', ' was a tasty biter treat.'},
['big-biter'] = {' had their head chomped off.', ' is biter food.', ' was a tasty biter treat.'},
['behemoth-biter'] = {' was devoured by a behemoth biter.', ' was crushed by a behemoth biter.', ' is biter food.'},
['small-spitter'] = {' melted away by acid spit!', " couldn't dodge the spit in time."},
['medium-spitter'] = {' melted away by acid spit!', " couldn't dodge the spit in time."},
['big-spitter'] = {' melted away by acid spit!', " couldn't dodge the spit in time.", ' got blasted away by a spitter.'},
['behemoth-spitter'] = {' melted away by acid spit!', " couldn't dodge the spit in time.", ' got blasted away by a spitter.'},
['small-worm-turret'] = {' melted away by acid spit!', " couldn't dodge the spit in time."},
['medium-worm-turret'] = {' melted away by acid spit!', " couldn't dodge the spit in time.", ' got blasted away by a medium worm turret.'},
['big-worm-turret'] = {' melted away by acid spit!', " couldn't dodge the spit in time.", ' got blasted away by a big worm turret.'},
['gun-turret'] = {' was mowed down by a barrage from a gun turret.'},
['laser-turret'] = {' was fatally enlightened by a laser beam.'},
['cargo-wagon'] = {' was flattened.', ' was crushed.'},
['locomotive'] = {' was flattened.', ' was crushed.'}
}
local function on_player_died(event)
local player = game.players[event.player_index]
local tag = ''
if player.tag then
if player.tag ~= '' then
tag = ' ' .. player.tag
end
end
if event.cause then
local cause = event.cause
if not cause.name then
game.print(player.name .. tag .. ' was killed.', message_color)
return
end
if messages[cause.name] then
game.print(player.name .. messages[cause.name][math.random(1, #messages[cause.name])], message_color)
return
end
if cause.name == 'character' then
if not player.name then
return
end
if not cause.player.name then
return
end
if cause.player.tag ~= '' then
game.print(player.name .. tag .. ' was killed by ' .. cause.player.name .. ' ' .. cause.player.tag .. '.', message_color)
else
game.print(player.name .. tag .. ' was killed by ' .. cause.player.name .. '.', message_color)
end
return
end
if cause.type == 'car' then
local driver = cause.get_driver()
if driver and driver.player then
game.print(player.name .. tag .. ' was killed by ' .. driver.player.name .. ' ' .. player.tag .. '.', message_color)
return
end
end
game.print(player.name .. tag .. ' was killed by ' .. cause.name .. '.', message_color)
return
end
for _, p in pairs(game.connected_players) do
if player.force.name ~= p.force.name then
p.print(player.name .. tag .. ' was killed.', message_color)
end
end
end
Event.add(defines.events.on_player_died, on_player_died)