Stomps out what should be the last of the bugs keeping persistence down.

A satchel will now always spawn even if there aren't enough satchels in the pool. It'll just be empty!
This commit is contained in:
Incoming
2016-08-22 21:20:40 -04:00
parent 0b65165e5d
commit 977e267e85
+19 -7
View File
@@ -13,7 +13,8 @@ var/datum/subsystem/persistence/SSpersistence
NEW_SS_GLOBAL(SSpersistence)
/datum/subsystem/persistence/Initialize()
PlaceSecretSatchel()
if(!PlaceSecretSatchel())
PlaceFreeSatchel()
..()
/datum/subsystem/persistence/proc/CollectData()
@@ -24,19 +25,20 @@ var/datum/subsystem/persistence/SSpersistence
satchel_blacklist = typecacheof(list(/obj/item/stack/tile/plasteel, /obj/item/weapon/crowbar))
secret_satchels >> old_secret_satchels
if(isnull(old_secret_satchels))
return
if(isnull(old_secret_satchels) || isemptylist(old_secret_satchels))
old_secret_satchels = list()
return 0
var/list/chosen_satchel
if(old_secret_satchels.len >= 20) //guards against low drop pools assuring that one player cannot reliably find his own gear.
chosen_satchel = pick_n_take(old_secret_satchels)
secret_satchels << old_secret_satchels
if(!chosen_satchel || chosen_satchel.len != 3) //Malformed
return
return 0
var/path = text2path(chosen_satchel[3]) //If the item no longer exist, this returns null
if(!path)
return
return 0
var/obj/item/weapon/storage/backpack/satchel/flat/F = new()
F.x = chosen_satchel[1]
@@ -46,6 +48,13 @@ var/datum/subsystem/persistence/SSpersistence
F.hide(1)
new path(F)
/datum/subsystem/persistence/proc/PlaceFreeSatchel()
for(var/V in shuffle(get_area_turfs(pick(the_station_areas))))
var/turf/T = V
if(istype(T,/turf/open/floor) && !istype(T,/turf/open/floor/plating/))
new /obj/item/weapon/storage/backpack/satchel/flat/secret(T)
break
/datum/subsystem/persistence/proc/CollectSecretSatchels()
for(var/A in new_secret_satchels)
var/obj/item/weapon/storage/backpack/satchel/flat/F = A
@@ -61,6 +70,9 @@ var/datum/subsystem/persistence/SSpersistence
savable_obj += O.type
if(savable_obj.len < 1)
continue
old_secret_satchels.len += 1
old_secret_satchels[old_secret_satchels.len] = list(F.x, F.y, "[pick(savable_obj)]")
if(isemptylist(old_secret_satchels))
old_secret_satchels = list(list(F.x, F.y, "[pick(savable_obj)]"))
else
old_secret_satchels.len += 1
old_secret_satchels[old_secret_satchels.len] = list(F.x, F.y, "[pick(savable_obj)]")
secret_satchels << old_secret_satchels