mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-30 00:29:02 +01:00
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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user