From 2fcee48a97afa987f1169539aa8fafb3f8bef35d Mon Sep 17 00:00:00 2001 From: bbassie Date: Sun, 8 Nov 2020 20:05:25 +0100 Subject: [PATCH] Corpse light and line addition --- config/death_logger.lua | 4 +++- modules/addons/death-logger.lua | 38 +++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 1 deletion(-) diff --git a/config/death_logger.lua b/config/death_logger.lua index 1c5c578b..19095ade 100644 --- a/config/death_logger.lua +++ b/config/death_logger.lua @@ -10,5 +10,7 @@ return { auto_collect_bodies=true, --- @setting auto_collect_bodies enables items being returned to the spawn point in chests upon corpse expiring show_map_markers=true, --- @setting show_map_markers shows markers on the map where bodies are include_time_of_death=true, --- @setting include_time_of_death weather to include the time of death on the map marker - map_icon=nil --- @setting map_icon the icon that the map marker shows; nil means no icon; format as a SingleID + map_icon=nil, --- @setting map_icon the icon that the map marker shows; nil means no icon; format as a SingleID + show_light_at_corpse=true, --- @setting show_light_at_corpse if a light should be rendered at the corpse + show_line_to_corpse=true --- @setting show_line_to_corpse if a line should be rendered from you to your corpse } \ No newline at end of file diff --git a/modules/addons/death-logger.lua b/modules/addons/death-logger.lua index a046fa35..49bbed64 100644 --- a/modules/addons/death-logger.lua +++ b/modules/addons/death-logger.lua @@ -77,8 +77,46 @@ Event.add(defines.events.on_player_died, function(event) create_map_tag(death) end table.insert(deaths, death) + + -- Draw a light attached to the corpse with the player color + if config.show_light_at_corpse then + rendering.draw_light{ + sprite = 'utility/light_medium', + color = player.color, + target = corpse, + force = player.force, + surface = player.surface + } + end end) +-- Draw lines to the player corpse +if config.show_line_to_corpse then + Event.add(defines.events.on_player_respawned, function(event) + local player = game.players[event.player_index] + + for _, death in pairs(deaths) do + -- Check if the death body is from the player + -- Check if the corpse entity is still valid + if death.player_name == player.name and death.corpse and death.corpse.valid then + local line_color = player.color + line_color.a = .3 + rendering.draw_line{ + color = line_color, + from = player.character, + to = death.corpse, + players = { event.player_index }, + width = 2, + dash_length = 1, + gap_length = 1, + surface = player.surface, + draw_on_ground = true + } + end + end + end) +end + -- every 5 min all bodies are checked for valid map tags if config.show_map_markers then local check_period = 60*60*5 -- five minutes