From cd3c1c49194e9e1efca27afcd37afbb4f4324fa2 Mon Sep 17 00:00:00 2001 From: Contrabang <91113370+Contrabang@users.noreply.github.com> Date: Sat, 17 Jun 2023 05:55:24 -0400 Subject: [PATCH] Persistent data saves at round end instead of server restart (#21199) * sm counter go up * AA review * aa review 2 --- code/controllers/subsystem/SSticker.dm | 3 +++ .../subsystem/non_firing/SSpersistent_data.dm | 10 ++++++++++ 2 files changed, 13 insertions(+) diff --git a/code/controllers/subsystem/SSticker.dm b/code/controllers/subsystem/SSticker.dm index 1c106983371..35a503f95f5 100644 --- a/code/controllers/subsystem/SSticker.dm +++ b/code/controllers/subsystem/SSticker.dm @@ -596,6 +596,9 @@ SUBSYSTEM_DEF(ticker) //Ask the event manager to print round end information SSevents.RoundEnd() + // Save the data before end of the round griefing + SSpersistent_data.save() + //make big obvious note in game logs that round ended log_game("///////////////////////////////////////////////////////") log_game("///////////////////// ROUND ENDED /////////////////////") diff --git a/code/controllers/subsystem/non_firing/SSpersistent_data.dm b/code/controllers/subsystem/non_firing/SSpersistent_data.dm index 118f4fd032f..d8d089e3bb7 100644 --- a/code/controllers/subsystem/non_firing/SSpersistent_data.dm +++ b/code/controllers/subsystem/non_firing/SSpersistent_data.dm @@ -13,6 +13,8 @@ SUBSYSTEM_DEF(persistent_data) flags = SS_NO_FIRE /// List of atoms registered into the subsystem for persistent data storage. Can be anything at all var/list/registered_atoms = list() + /// Set to true after a the end of the round to prevent griefing being saved + var/data_saved = FALSE /datum/controller/subsystem/persistent_data/Initialize() // Load all the data of registered atoms @@ -20,6 +22,14 @@ SUBSYSTEM_DEF(persistent_data) A.persistent_load() /datum/controller/subsystem/persistent_data/Shutdown() + save() + +/datum/controller/subsystem/persistent_data/proc/save() + // Stops data from being saved twice + if(data_saved) + return + data_saved = TRUE + // Save all the data of registered atoms for(var/atom/A in registered_atoms) A.persistent_save()