anchor.diff:  	log_world("Loaded [saved_messages.len] engraved messages on map [SSmapping.config.map_name]")
   
   /datum/controller/subsystem/persistence/proc/LoadTrophies()
  -	trophy_sav = file("data/npc_saves/TrophyItems.json")
  -	if(!fexists(trophy_sav))
  -		return
  -	var/list/json = list()
  -	json = json_decode(file2text(trophy_sav))
  -
  -	if(!json)
  -		return
  -
  -	saved_trophies = json["data"]
  -
  +	if(fexists("data/npc_saves/TrophyItems.sav")) //legacy compatability to convert old format to new
  +		var/savefile/S = new /savefile("data/npc_saves/TrophyItems.sav")
  +		var/saved_json
  +		S >> saved_json
  +		if(!saved_json)
  +			return
  +		saved_trophies = json_decode(saved_json)
  +		fdel("data/npc_saves/TrophyItems.sav")
  +	else
  +		var/json_file = file("data/npc_saves/TrophyItems.json")
  +		if(!fexists(json_file))
  +			return
  +		var/list/json = list()
  +		json = json_decode(file2text(json_file))
  +		if(!json)
  +			return
  +		saved_trophies = json["data"]
   	SetUpTrophies(saved_trophies.Copy())
   
   /datum/controller/subsystem/persistence/proc/SetUpTrophies(list/trophy_items)
  
positive.code: 	name = "Persistence"
  	init_order = INIT_ORDER_PERSISTENCE
  	flags = SS_NO_FIRE
  	var/secret_satchels
  	var/list/satchel_blacklist 		= list() //this is a typecache
  	var/list/new_secret_satchels 	= list() //these are objects
  	var/list/old_secret_satchels 		= ""
  
  	var/list/obj/structure/chisel_message/chisel_messages = list()
  	var/list/saved_messages = list()
  
  	var/trophy_sav
  	var/list/saved_trophies = list()
  
  /datum/controller/subsystem/persistence/Initialize()
  
negative.code: 				path = text2path(old_secret_satchels[pos]["saved_obj"])
  	if(!ispath(path))
  		return
  	if(isfloorturf(F.loc) && !istype(F.loc, /turf/open/floor/plating/))
  		F.hide(1)
  	new path(F)
  	placed_satchel++
  	var/list/free_satchels = list()
  	for(var/turf/T in shuffle(block(locate(TRANSITIONEDGE,TRANSITIONEDGE,ZLEVEL_STATION_PRIMARY), locate(world.maxx-TRANSITIONEDGE,world.maxy-TRANSITIONEDGE,ZLEVEL_STATION_PRIMARY)))) //Nontrivially expensive but it's roundstart only
  		if(isfloorturf(T) && !istype(T, /turf/open/floor/plating/))
  