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()