anchor.diff:  	..()
   
   /datum/controller/subsystem/persistence/proc/LoadSatchels()
  -	secret_satchels = file("data/npc_saves/SecretSatchels[SSmapping.config.map_name].json")
  -	if(!fexists(secret_satchels))
   	var/placed_satchel = 0
   	var/path
   	var/obj/item/storage/backpack/satchel/flat/F = new()
  
positive.code: 				path = text2path(old_secret_satchels[pos]["saved_obj"])
  	if(!ispath(path))
  		return
  	satchel_blacklist = typecacheof(list(/obj/item/stack/tile/plasteel, /obj/item/crowbar))
  	var/list/json = list()
  	json = json_decode(file2text(secret_satchels))
  	old_secret_satchels = json["data"]
  	var/placed_satchel = 0
  	if(old_secret_satchels.len)
  		if(old_secret_satchels.len >= 20) //guards against low drop pools assuring that one player cannot reliably find his own gear.
  			var/pos = rand(1, old_secret_satchels.len)
  			old_secret_satchels.Cut(pos, pos+1)
  			var/obj/item/storage/backpack/satchel/flat/F = new()
  			F.x = old_secret_satchels[pos]["x"]
  			F.y = old_secret_satchels[pos]["y"]
  			F.z = ZLEVEL_STATION
  			var/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/))
  
negative.code: 		break //Who's been duping the bird?!
  
  /datum/controller/subsystem/persistence/proc/LoadChiselMessages()
  	var/list/saved_messages = list()
  	if(fexists("data/npc_saves/ChiselMessages.sav")) //legacy compatability to convert old format to new
  		var/savefile/chisel_messages_sav = new /savefile("data/npc_saves/ChiselMessages.sav")
  		var/saved_json
  		chisel_messages_sav[SSmapping.config.map_name] >> saved_json
  		if(!saved_json)
  			return
  		saved_messages = json_decode(saved_json)
  		fdel("data/npc_saves/ChiselMessages.sav")
  	else
  		var/json_file = file("data/npc_saves/ChiselMessages[SSmapping.config.map_name].json")
  		if(!fexists(json_file))
  			return
  		var/list/json
  		json = json_decode(file2text(json_file))
  
  		if(!json)
  			return
  		saved_messages = json["data"]
  
  	for(var/item in saved_messages)
  		if(!islist(item))
  