mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-11 10:43:20 +00:00
Persistent Trash/Dirt/Graffiti/Notices
This commit is contained in:
@@ -236,6 +236,8 @@ var/list/gamemode_cache = list()
|
||||
var/static/dooc_allowed = 1
|
||||
var/static/dsay_allowed = 1
|
||||
|
||||
var/persistence_enabled = 1
|
||||
|
||||
var/allow_byond_links = 0
|
||||
var/allow_discord_links = 0
|
||||
var/allow_url_links = 0 // honestly if I were you i'd leave this one off, only use in dire situations
|
||||
@@ -434,15 +436,15 @@ var/list/gamemode_cache = list()
|
||||
|
||||
if ("allow_admin_spawning")
|
||||
config.allow_admin_spawning = 1
|
||||
|
||||
|
||||
if ("allow_byond_links")
|
||||
allow_byond_links = 1
|
||||
|
||||
if ("allow_discord_links")
|
||||
allow_discord_links = 1
|
||||
allow_discord_links = 1
|
||||
|
||||
if ("allow_url_links")
|
||||
allow_url_links = 1
|
||||
allow_url_links = 1
|
||||
|
||||
if ("no_dead_vote")
|
||||
config.vote_no_dead = 1
|
||||
@@ -577,6 +579,9 @@ var/list/gamemode_cache = list()
|
||||
if("protect_roles_from_antagonist")
|
||||
config.protect_roles_from_antagonist = 1
|
||||
|
||||
if ("persistence_enabled")
|
||||
config.persistence_enabled = 1
|
||||
|
||||
if ("probability")
|
||||
var/prob_pos = findtext(value, " ")
|
||||
var/prob_name = null
|
||||
|
||||
59
code/controllers/subsystems/persistence.dm
Normal file
59
code/controllers/subsystems/persistence.dm
Normal file
@@ -0,0 +1,59 @@
|
||||
SUBSYSTEM_DEF(persistence)
|
||||
name = "Persistence"
|
||||
init_order = INIT_ORDER_PERSISTENCE
|
||||
flags = SS_NO_FIRE
|
||||
var/list/tracking_values = list()
|
||||
var/list/persistence_datums = list()
|
||||
|
||||
/datum/controller/subsystem/persistence/Initialize()
|
||||
. = ..()
|
||||
for(var/thing in subtypesof(/datum/persistent))
|
||||
var/datum/persistent/P = new thing
|
||||
persistence_datums[thing] = P
|
||||
P.Initialize()
|
||||
|
||||
/datum/controller/subsystem/persistence/Shutdown()
|
||||
for(var/thing in persistence_datums)
|
||||
var/datum/persistent/P = persistence_datums[thing]
|
||||
P.Shutdown()
|
||||
|
||||
/datum/controller/subsystem/persistence/proc/track_value(var/atom/value, var/track_type)
|
||||
|
||||
if(config.persistence_enabled == 0) //if the config is not set to persistent nothing will save or load.
|
||||
return
|
||||
|
||||
var/turf/T = get_turf(value)
|
||||
if(!T)
|
||||
return
|
||||
|
||||
var/area/A = get_area(T)
|
||||
if(!A || (A.flags & AREA_FLAG_IS_NOT_PERSISTENT))
|
||||
return
|
||||
|
||||
// if((!T.z in GLOB.using_map.station_levels) || !initialized)
|
||||
if(!T.z in using_map.station_levels)
|
||||
return
|
||||
|
||||
if(!tracking_values[track_type])
|
||||
tracking_values[track_type] = list()
|
||||
tracking_values[track_type] += value
|
||||
|
||||
/datum/controller/subsystem/persistence/proc/forget_value(var/atom/value, var/track_type)
|
||||
if(tracking_values[track_type])
|
||||
tracking_values[track_type] -= value
|
||||
|
||||
|
||||
/datum/controller/subsystem/persistence/proc/show_info(var/mob/user)
|
||||
if(!user.client.holder)
|
||||
return
|
||||
|
||||
var/list/dat = list("<table width = '100%'>")
|
||||
var/can_modify = check_rights(R_ADMIN, 0, user)
|
||||
for(var/thing in persistence_datums)
|
||||
var/datum/persistent/P = persistence_datums[thing]
|
||||
if(P.has_admin_data)
|
||||
dat += P.GetAdminSummary(user, can_modify)
|
||||
dat += "</table>"
|
||||
var/datum/browser/popup = new(user, "admin_persistence", "Persistence Data")
|
||||
popup.set_content(jointext(dat, null))
|
||||
popup.open()
|
||||
Reference in New Issue
Block a user