diff --git a/code/controllers/configuration/config_entry.dm b/code/controllers/configuration/config_entry.dm
index ea5c861cd4..c175e2efb4 100644
--- a/code/controllers/configuration/config_entry.dm
+++ b/code/controllers/configuration/config_entry.dm
@@ -7,40 +7,58 @@
#define KEY_MODE_TYPE 1
/datum/config_entry
- var/name //read-only, this is determined by the last portion of the derived entry type
+ /// Read-only, this is determined by the last portion of the derived entry type
+ var/name
+ /// The configured value for this entry. This shouldn't be initialized in code, instead set default
var/config_entry_value
- var/default //read-only, just set value directly
-
- var/resident_file //the file which this was loaded from, if any
- var/modified = FALSE //set to TRUE if the default has been overridden by a config entry
-
- var/deprecated_by //the /datum/config_entry type that supercedes this one
-
+ /// Read-only default value for this config entry, used for resetting value to defaults when necessary. This is what config_entry_value is initially set to
+ var/default
+ /// The file which this was loaded from, if any
+ var/resident_file
+ /// Set to TRUE if the default has been overridden by a config entry
+ var/modified = FALSE
+ /// The config name of a configuration type that depricates this, if it exists
+ var/deprecated_by
+ /// The /datum/config_entry type that supercedes this one
var/protection = NONE
- var/abstract_type = /datum/config_entry //do not instantiate if type matches this
-
- var/vv_VAS = TRUE //Force validate and set on VV. VAS proccall guard will run regardless.
- var/postload_required = FALSE //requires running OnPostload()
-
+ /// Do not instantiate if type matches this
+ var/abstract_type = /datum/config_entry
+ /// Force validate and set on VV. VAS proccall guard will run regardless.
+ var/vv_VAS = TRUE
+ /// Requires running OnPostload()
+ var/postload_required = FALSE
+ /// Controls if error is thrown when duplicate configuration values for this entry type are encountered
var/dupes_allowed = FALSE
+ /// Stores the original protection configuration, used for set_default()
+ var/default_protection
/datum/config_entry/New()
if(type == abstract_type)
CRASH("Abstract config entry [type] instatiated!")
- if(!name)
- name = lowertext(type2top(type))
- else
- name = lowertext(name)
- if(islist(config_entry_value))
- var/list/L = config_entry_value
- default = L.Copy()
- else
- default = config_entry_value
+ name = lowertext(type2top(type))
+ default_protection = protection
+ set_default()
/datum/config_entry/Destroy()
config.RemoveEntry(src)
return ..()
+/**
+ * Returns the value of the configuration datum to its default, used for resetting a config value. Note this also sets the protection back to default.
+ */
+/datum/config_entry/proc/set_default()
+ if ((protection & CONFIG_ENTRY_LOCKED) && IsAdminAdvancedProcCall())
+ log_admin_private("[key_name(usr)] attempted to reset locked config entry [type] to its default")
+ return
+ if (islist(default))
+ var/list/L = default
+ config_entry_value = L.Copy()
+ else
+ config_entry_value = default
+ protection = default_protection
+ resident_file = null
+ modified = FALSE
+
/datum/config_entry/can_vv_get(var_name)
. = ..()
if(var_name == NAMEOF(src, config_entry_value) || var_name == NAMEOF(src, default))
@@ -81,7 +99,7 @@
return
/datum/config_entry/string
- config_entry_value = ""
+ default = ""
abstract_type = /datum/config_entry/string
var/auto_trim = TRUE
@@ -95,7 +113,7 @@
return TRUE
/datum/config_entry/number
- config_entry_value = 0
+ default = 0
abstract_type = /datum/config_entry/number
var/integer = TRUE
var/max_val = INFINITY
@@ -117,7 +135,7 @@
return !(var_name in banned_edits) && ..()
/datum/config_entry/flag
- config_entry_value = FALSE
+ default = FALSE
abstract_type = /datum/config_entry/flag
/datum/config_entry/flag/ValidateAndSet(str_val)
@@ -126,9 +144,25 @@
config_entry_value = text2num(trim(str_val)) != 0
return TRUE
+/// List config entry, used for configuring a list of strings
+/datum/config_entry/str_list
+ abstract_type = /datum/config_entry/str_list
+ default = list()
+ dupes_allowed = TRUE
+ /// whether the string elements will be lowercased on ValidateAndSet or not.
+ var/lowercase = FALSE
+
+/datum/config_entry/str_list/ValidateAndSet(str_val)
+ if (!VASProcCallGuard(str_val))
+ return FALSE
+ str_val = trim(str_val)
+ if (str_val != "")
+ config_entry_value += lowercase ? lowertext(str_val) : str_val
+ return TRUE
+
/datum/config_entry/number_list
abstract_type = /datum/config_entry/number_list
- config_entry_value = list()
+ default = list()
/datum/config_entry/number_list/ValidateAndSet(str_val)
if(!VASProcCallGuard(str_val))
@@ -148,7 +182,7 @@
/datum/config_entry/keyed_list
abstract_type = /datum/config_entry/keyed_list
- config_entry_value = list()
+ default = list()
dupes_allowed = TRUE
vv_VAS = FALSE //VAS will not allow things like deleting from lists, it'll just bug horribly.
var/key_mode
@@ -231,7 +265,7 @@
/datum/config_entry/multi_keyed_flag
vv_VAS = FALSE
abstract_type = /datum/config_entry/multi_keyed_flag
- config_entry_value = list()
+ default = list()
var/delimiter = "|"
/datum/config_entry/multi_keyed_flag/vv_edit_var(var_name, var_value)
diff --git a/code/controllers/configuration/configuration.dm b/code/controllers/configuration/configuration.dm
index bf89be1b51..eea00edc4b 100644
--- a/code/controllers/configuration/configuration.dm
+++ b/code/controllers/configuration/configuration.dm
@@ -147,6 +147,16 @@
++.
continue
+ // Reset directive, used for setting a config value back to defaults. Useful for string list config types
+ if (entry == "$reset")
+ var/datum/config_entry/resetee = _entries[lowertext(value)]
+ if (!value || !resetee)
+ log_config_error("Warning: invalid $reset directive: [value]")
+ continue
+ resetee.set_default()
+ log_config("Reset configured value for [value] to original defaults")
+ continue
+
var/datum/config_entry/E = _entries[entry]
if(!E)
log_config("LINE [linenumber]: Unknown setting in configuration: '[entry]'")
diff --git a/code/controllers/configuration/entries/admin.dm b/code/controllers/configuration/entries/admin.dm
index 60919e10a9..8c957baf4c 100644
--- a/code/controllers/configuration/entries/admin.dm
+++ b/code/controllers/configuration/entries/admin.dm
@@ -23,12 +23,12 @@
/datum/config_entry/flag/see_own_notes //Can players see their own admin notes
/datum/config_entry/number/note_fresh_days
- config_entry_value = null
+ default = null
min_val = 0
integer = FALSE
/datum/config_entry/number/note_stale_days
- config_entry_value = null
+ default = null
min_val = 0
integer = FALSE
@@ -47,7 +47,7 @@
protection = CONFIG_ENTRY_LOCKED
/datum/config_entry/string/autoadmin_rank // the rank for autoadmins
- config_entry_value = "Game Master"
+ default = "Game Master"
protection = CONFIG_ENTRY_LOCKED
/datum/config_entry/flag/allow_admin_ooccolor // Allows admins with relevant permissions to have their own ooc colour
diff --git a/code/controllers/configuration/entries/alert.dm b/code/controllers/configuration/entries/alert.dm
index 6177c602db..af49972007 100644
--- a/code/controllers/configuration/entries/alert.dm
+++ b/code/controllers/configuration/entries/alert.dm
@@ -1,26 +1,26 @@
/datum/config_entry/string/alert_green
- config_entry_value = "All threats to the station have passed. Security may not have weapons visible, privacy laws are once again fully enforced."
+ default = "All threats to the station have passed. Security may not have weapons visible, privacy laws are once again fully enforced."
/datum/config_entry/string/alert_blue_upto
- config_entry_value = "The station has received reliable information about potential threats to the station. Security staff may have weapons visible, random searches are permitted."
+ default = "The station has received reliable information about potential threats to the station. Security staff may have weapons visible, random searches are permitted."
/datum/config_entry/string/alert_blue_downto
- config_entry_value = "Significant confirmed threats have been neutralized. Security may no longer have weapons drawn at all times, but may continue to have them visible. Random searches are still permitted."
+ default = "Significant confirmed threats have been neutralized. Security may no longer have weapons drawn at all times, but may continue to have them visible. Random searches are still permitted."
/datum/config_entry/string/alert_amber_upto
- config_entry_value = "There are significant confirmed threats to the station. Security staff may have weapons unholstered at all times. Random searches are allowed and advised."
+ default = "There are significant confirmed threats to the station. Security staff may have weapons unholstered at all times. Random searches are allowed and advised."
/datum/config_entry/string/alert_amber_downto
- config_entry_value = "The immediate threat has passed. Security is no longer authorized to use lethal force, but may continue to have weapons drawn. Access requirements have been restored."
+ default = "The immediate threat has passed. Security is no longer authorized to use lethal force, but may continue to have weapons drawn. Access requirements have been restored."
/datum/config_entry/string/alert_red_upto
- config_entry_value = "There is an immediate serious threat to the station. Security is now authorized to use lethal force. Additionally, access requirements on some machines have been lifted."
+ default = "There is an immediate serious threat to the station. Security is now authorized to use lethal force. Additionally, access requirements on some machines have been lifted."
/datum/config_entry/string/alert_red_downto
- config_entry_value = "The station's destruction has been averted. There is still however an immediate serious threat to the station. Security is still authorized to use lethal force."
+ default = "The station's destruction has been averted. There is still however an immediate serious threat to the station. Security is still authorized to use lethal force."
/datum/config_entry/string/alert_delta
- config_entry_value = "Destruction of the station is imminent. All crew are instructed to obey all instructions given by heads of staff. Any violations of these orders can be punished by death. This is not a drill."
+ default = "Destruction of the station is imminent. All crew are instructed to obey all instructions given by heads of staff. Any violations of these orders can be punished by death. This is not a drill."
/datum/config_entry/number/minimum_secborg_alert //Minimum alert level for secborgs to be chosen.
- config_entry_value = 3
+ default = 3
diff --git a/code/controllers/configuration/entries/antag_rep.dm b/code/controllers/configuration/entries/antag_rep.dm
index c34eef4159..1ecbe57b45 100644
--- a/code/controllers/configuration/entries/antag_rep.dm
+++ b/code/controllers/configuration/entries/antag_rep.dm
@@ -1,15 +1,15 @@
/datum/config_entry/flag/use_antag_rep // see game_options.txt for details
/datum/config_entry/number/antag_rep_maximum
- config_entry_value = 200
+ default = 200
min_val = 0
/datum/config_entry/number/default_antag_tickets
- config_entry_value = 100
+ default = 100
min_val = 0
/datum/config_entry/number/max_tickets_per_roll
- config_entry_value = 100
+ default = 100
min_val = 0
/datum/config_entry/keyed_list/antag_rep
diff --git a/code/controllers/configuration/entries/bot.dm b/code/controllers/configuration/entries/bot.dm
index 071406ad65..08b3ef57bd 100644
--- a/code/controllers/configuration/entries/bot.dm
+++ b/code/controllers/configuration/entries/bot.dm
@@ -5,7 +5,7 @@
return "" //default broadcast
/datum/config_entry/string/chat_announce_new_game
- config_entry_value = null
+ default = null
/datum/config_entry/string/chat_reboot_role
diff --git a/code/controllers/configuration/entries/connections.dm b/code/controllers/configuration/entries/connections.dm
index 6ec41590f2..92bb4adefe 100644
--- a/code/controllers/configuration/entries/connections.dm
+++ b/code/controllers/configuration/entries/connections.dm
@@ -1,15 +1,15 @@
/datum/config_entry/flag/panic_bunker // prevents people the server hasn't seen before from connecting
/datum/config_entry/number/panic_bunker_living // living time in minutes that a player needs to pass the panic bunker. they pass **if they are above this amount**
- config_entry_value = 0 // default: <= 0 meaning any playtime works. -1 to disable criteria.
+ default = 0 // default: <= 0 meaning any playtime works. -1 to disable criteria.
integer = TRUE
/datum/config_entry/number/panic_bunker_living_vpn
- config_entry_value = 0 // default: <= 0 meaning anytime works. -1 to disable criteria.
+ default = 0 // default: <= 0 meaning anytime works. -1 to disable criteria.
integer = TRUE
/datum/config_entry/string/panic_bunker_message
- config_entry_value = "Sorry but the server is currently not accepting connections from never before seen players."
+ default = "Sorry but the server is currently not accepting connections from never before seen players."
/datum/config_entry/string/panic_server_name
@@ -22,7 +22,7 @@
return str_val != "byond://address:port" && ..()
/datum/config_entry/number/max_bunker_days
- config_entry_value = 7
+ default = 7
min_val = 1
/datum/config_entry/number/notify_new_player_age // how long do we notify admins of a new player
@@ -32,7 +32,7 @@
min_val = 0
/datum/config_entry/flag/age_verification //are we using the automated age verification which asks users if they're 18+?
- config_entry_value = TRUE
+ default = TRUE
/datum/config_entry/flag/irc_first_connection_alert // do we notify the irc channel when somebody is connecting for the first time?
@@ -44,21 +44,21 @@
return str_val != "ch@nge.me" && ..()
/datum/config_entry/number/ipintel_rating_bad
- config_entry_value = 1
+ default = 1
integer = FALSE
min_val = 0
max_val = 1
/datum/config_entry/number/ipintel_save_good
- config_entry_value = 12
+ default = 12
min_val = 0
/datum/config_entry/number/ipintel_save_bad
- config_entry_value = 1
+ default = 1
min_val = 0
/datum/config_entry/string/ipintel_domain
- config_entry_value = "check.getipintel.net"
+ default = "check.getipintel.net"
/datum/config_entry/flag/aggressive_changelog
@@ -67,46 +67,46 @@
/datum/config_entry/flag/webclient_only_byond_members
/datum/config_entry/number/client_warn_version
- config_entry_value = null
+ default = null
min_val = 500
/datum/config_entry/number/client_warn_version
- config_entry_value = null
+ default = null
min_val = 500
/datum/config_entry/string/client_warn_message
- config_entry_value = "Your version of byond may have issues or be blocked from accessing this server in the future."
+ default = "Your version of byond may have issues or be blocked from accessing this server in the future."
/datum/config_entry/flag/client_warn_popup
/datum/config_entry/number/client_error_version
- config_entry_value = null
+ default = null
min_val = 500
/datum/config_entry/string/client_error_message
- config_entry_value = "Your version of byond is too old, may have issues, and is blocked from accessing this server."
+ default = "Your version of byond is too old, may have issues, and is blocked from accessing this server."
/datum/config_entry/number/client_error_build
- config_entry_value = null
+ default = null
min_val = 0
/datum/config_entry/number/soft_popcap
- config_entry_value = null
+ default = null
min_val = 0
/datum/config_entry/number/hard_popcap
- config_entry_value = null
+ default = null
min_val = 0
/datum/config_entry/number/extreme_popcap
- config_entry_value = null
+ default = null
min_val = 0
/datum/config_entry/string/soft_popcap_message
- config_entry_value = "Be warned that the server is currently serving a high number of users, consider using alternative game servers."
+ default = "Be warned that the server is currently serving a high number of users, consider using alternative game servers."
/datum/config_entry/string/hard_popcap_message
- config_entry_value = "The server is currently serving a high number of users, You cannot currently join. You may wait for the number of living crew to decline, observe, or find alternative servers."
+ default = "The server is currently serving a high number of users, You cannot currently join. You may wait for the number of living crew to decline, observe, or find alternative servers."
/datum/config_entry/string/extreme_popcap_message
- config_entry_value = "The server is currently serving a high number of users, find alternative servers."
+ default = "The server is currently serving a high number of users, find alternative servers."
diff --git a/code/controllers/configuration/entries/dbconfig.dm b/code/controllers/configuration/entries/dbconfig.dm
index 3dd4f4b0bd..a267a70633 100644
--- a/code/controllers/configuration/entries/dbconfig.dm
+++ b/code/controllers/configuration/entries/dbconfig.dm
@@ -2,21 +2,21 @@
protection = CONFIG_ENTRY_LOCKED
/datum/config_entry/string/address
- config_entry_value = "localhost"
+ default = "localhost"
protection = CONFIG_ENTRY_LOCKED | CONFIG_ENTRY_HIDDEN
/datum/config_entry/number/port
- config_entry_value = 3306
+ default = 3306
min_val = 0
max_val = 65535
protection = CONFIG_ENTRY_LOCKED | CONFIG_ENTRY_HIDDEN
/datum/config_entry/string/feedback_database
- config_entry_value = "test"
+ default = "test"
protection = CONFIG_ENTRY_LOCKED | CONFIG_ENTRY_HIDDEN
/datum/config_entry/string/feedback_login
- config_entry_value = "root"
+ default = "root"
protection = CONFIG_ENTRY_LOCKED | CONFIG_ENTRY_HIDDEN
/datum/config_entry/string/feedback_password
@@ -26,7 +26,7 @@
protection = CONFIG_ENTRY_LOCKED | CONFIG_ENTRY_HIDDEN
/datum/config_entry/number/query_debug_log_timeout
- config_entry_value = 70
+ default = 70
min_val = 1
protection = CONFIG_ENTRY_LOCKED
deprecated_by = /datum/config_entry/number/blocking_query_timeout
@@ -35,17 +35,17 @@
return value
/datum/config_entry/number/async_query_timeout
- config_entry_value = 10
+ default = 10
min_val = 0
protection = CONFIG_ENTRY_LOCKED
/datum/config_entry/number/blocking_query_timeout
- config_entry_value = 5
+ default = 5
min_val = 0
protection = CONFIG_ENTRY_LOCKED
/datum/config_entry/number/bsql_thread_limit
- config_entry_value = 50
+ default = 50
min_val = 1
/datum/config_entry/flag/bsql_debug
diff --git a/code/controllers/configuration/entries/debris.dm b/code/controllers/configuration/entries/debris.dm
index 1cc2c2d7b7..4b7b2ac50e 100644
--- a/code/controllers/configuration/entries/debris.dm
+++ b/code/controllers/configuration/entries/debris.dm
@@ -1,16 +1,16 @@
/// Amount of dirtyness tiles need to spawn dirt.
/datum/config_entry/number/turf_dirt_threshold
- config_entry_value = 100
+ default = 100
min_val = 1
integer = TRUE
/// Alpha dirt starts at
/datum/config_entry/number/dirt_alpha_starting
- config_entry_value = 127
+ default = 127
max_val = 255
min_val = 0
integer = TRUE
/// Dirtyness multiplier for making turfs dirty
/datum/config_entry/number/turf_dirty_multiplier
- config_entry_value = 1
+ default = 1
diff --git a/code/controllers/configuration/entries/dynamic.dm b/code/controllers/configuration/entries/dynamic.dm
index 98203b7d8a..573507fe8d 100644
--- a/code/controllers/configuration/entries/dynamic.dm
+++ b/code/controllers/configuration/entries/dynamic.dm
@@ -3,43 +3,43 @@
/datum/config_entry/flag/no_storyteller_threat_removal
/datum/config_entry/number/dynamic_high_pop_limit
- config_entry_value = 55
+ default = 55
min_val = 1
/datum/config_entry/number/dynamic_pop_per_requirement
- config_entry_value = 6
+ default = 6
min_val = 1
/datum/config_entry/number/dynamic_midround_delay_min
- config_entry_value = 15
+ default = 15
min_val = 1
/datum/config_entry/number/dynamic_midround_delay_max
- config_entry_value = 35
+ default = 35
min_val = 1
/datum/config_entry/number/dynamic_latejoin_delay_min
- config_entry_value = 5
+ default = 5
min_val = 1
/datum/config_entry/number/dynamic_latejoin_delay_max
- config_entry_value = 25
+ default = 25
min_val = 1
/datum/config_entry/number/dynamic_first_midround_delay_min
- config_entry_value = 20
+ default = 20
min_val = 1
/datum/config_entry/number/dynamic_first_midround_delay_max
- config_entry_value = 40
+ default = 40
min_val = 1
/datum/config_entry/number/dynamic_first_latejoin_delay_min
- config_entry_value = 10
+ default = 10
min_val = 1
/datum/config_entry/number/dynamic_first_latejoin_delay_max
- config_entry_value = 30
+ default = 30
min_val = 1
@@ -64,34 +64,34 @@
/datum/config_entry/number_list/dynamic_third_rule_requirements
/datum/config_entry/number/dynamic_second_rule_high_pop_requirement
- config_entry_value = 50
+ default = 50
/datum/config_entry/number/dynamic_third_rule_high_pop_requirement
- config_entry_value = 70
+ default = 70
/datum/config_entry/number/dynamic_threat_baseline
- config_entry_value = 50
+ default = 50
/datum/config_entry/number_list/dynamic_hijack_requirements
/datum/config_entry/number/dynamic_hijack_high_population_requirement
- config_entry_value = 25
+ default = 25
/datum/config_entry/number/dynamic_hijack_cost
- config_entry_value = 5
+ default = 5
/datum/config_entry/number/dynamic_glorious_death_cost
- config_entry_value = 5
+ default = 5
/datum/config_entry/number/dynamic_assassinate_cost
- config_entry_value = 2
+ default = 2
/datum/config_entry/number/dynamic_warops_requirement
- config_entry_value = 60
+ default = 60
min_val = 0
/datum/config_entry/number/dynamic_warops_cost
- config_entry_value = 10
+ default = 10
min_val = 0
/datum/config_entry/keyed_list/dynamic_mode_days
diff --git a/code/controllers/configuration/entries/fetish_content.dm b/code/controllers/configuration/entries/fetish_content.dm
index b7ae2e0d83..f15b815eb1 100644
--- a/code/controllers/configuration/entries/fetish_content.dm
+++ b/code/controllers/configuration/entries/fetish_content.dm
@@ -1,40 +1,38 @@
/datum/config_entry/keyed_list/breasts_cups_prefs
key_mode = KEY_MODE_TEXT
value_mode = VALUE_MODE_FLAG
- config_entry_value = list("a", "b", "c", "d", "e") //keep these lowercase
+ default = list("a", "b", "c", "d", "e") //keep these lowercase
/datum/config_entry/number/penis_min_inches_prefs
- config_entry_value = 1
+ default = 1
min_val = 0
/datum/config_entry/number/penis_max_inches_prefs
- config_entry_value = 20
+ default = 20
min_val = 0
/datum/config_entry/number/butt_min_size_prefs
- config_entry_value = 1
+ default = 1
min_val = 0
max_val = BUTT_SIZE_MAX
/datum/config_entry/number/butt_max_size_prefs
- config_entry_value = BUTT_SIZE_MAX
+ default = BUTT_SIZE_MAX
min_val = 0
max_val = BUTT_SIZE_MAX
-/datum/config_entry/keyed_list/safe_visibility_toggles
- key_mode = KEY_MODE_TEXT
- value_mode = VALUE_MODE_FLAG
- config_entry_value = list(GEN_VISIBLE_NO_CLOTHES, GEN_VISIBLE_NO_UNDIES, GEN_VISIBLE_NEVER) //refer to cit_helpers for all toggles.
+//set only by the configs to be able to manipulate easily
+/datum/config_entry/str_list/safe_visibility_toggles
//Body size configs, the feature will be disabled if both min and max have the same value.
/datum/config_entry/number/body_size_min
- config_entry_value = 0.9
+ default = 0.9
min_val = 0.1 //to avoid issues with zeros and negative values.
max_val = RESIZE_DEFAULT_SIZE
integer = FALSE
/datum/config_entry/number/body_size_max
- config_entry_value = 1.25
+ default = 1.25
min_val = RESIZE_DEFAULT_SIZE
integer = FALSE
@@ -42,7 +40,7 @@
//to compensate for their smaller hitbox.
//To disable, just make sure the value is lower than 'body_size_min'
/datum/config_entry/number/threshold_body_size_penalty
- config_entry_value = RESIZE_DEFAULT_SIZE
+ default = RESIZE_DEFAULT_SIZE
min_val = 0
max_val = RESIZE_DEFAULT_SIZE
integer = FALSE
@@ -50,6 +48,6 @@
//multiplicative slowdown multiplier. See 'dna.update_body_size' for the operation.
//doesn't apply to floating or crawling mobs
/datum/config_entry/number/body_size_slowdown_multiplier
- config_entry_value = 0
+ default = 0
min_val = 0
integer = FALSE
diff --git a/code/controllers/configuration/entries/gamemodes.dm b/code/controllers/configuration/entries/gamemodes.dm
index f11c6dd5f5..e9eb8b8797 100644
--- a/code/controllers/configuration/entries/gamemodes.dm
+++ b/code/controllers/configuration/entries/gamemodes.dm
@@ -3,7 +3,7 @@
/datum/config_entry/flag/weigh_by_recent_chaos
/datum/config_entry/number/chaos_exponent
- config_entry_value = 1
+ default = 1
/datum/config_entry/keyed_list/probability
key_mode = KEY_MODE_TEXT
@@ -55,36 +55,36 @@
return key_name in config.modes
/datum/config_entry/number/traitor_scaling_coeff //how much does the amount of players get divided by to determine traitors
- config_entry_value = 6
+ default = 6
min_val = 1
/datum/config_entry/number/brother_scaling_coeff //how many players per brother team
- config_entry_value = 25
+ default = 25
min_val = 1
/datum/config_entry/number/changeling_scaling_coeff //how much does the amount of players get divided by to determine changelings
- config_entry_value = 6
+ default = 6
min_val = 1
/datum/config_entry/number/ecult_scaling_coeff //how much does the amount of players get divided by to determine e_cult
- config_entry_value = 6
+ default = 6
integer = FALSE
min_val = 1
/datum/config_entry/number/security_scaling_coeff //how much does the amount of players get divided by to determine open security officer positions
- config_entry_value = 8
+ default = 8
min_val = 1
/datum/config_entry/number/abductor_scaling_coeff //how many players per abductor team
- config_entry_value = 15
+ default = 15
min_val = 1
/datum/config_entry/number/traitor_objectives_amount
- config_entry_value = 2
+ default = 2
min_val = 0
/datum/config_entry/number/brother_objectives_amount
- config_entry_value = 2
+ default = 2
min_val = 0
/datum/config_entry/flag/protect_roles_from_antagonist //If security and such can be traitor/cult/other
diff --git a/code/controllers/configuration/entries/general.dm b/code/controllers/configuration/entries/general.dm
index ddb54d6957..ef74a48c3a 100644
--- a/code/controllers/configuration/entries/general.dm
+++ b/code/controllers/configuration/entries/general.dm
@@ -1,9 +1,9 @@
/datum/config_entry/number/lobby_countdown // In between round countdown.
- config_entry_value = 120
+ default = 120
min_val = 0
/datum/config_entry/number/round_end_countdown // Post round murder death kill countdown
- config_entry_value = 25
+ default = 25
min_val = 0
@@ -12,11 +12,11 @@
/datum/config_entry/flag/allow_holidays
/datum/config_entry/number/id_console_jobslot_delay
- config_entry_value = 30
+ default = 30
min_val = 0
/datum/config_entry/number/inactivity_period //time in ds until a player is considered inactive
- config_entry_value = 3000
+ default = 3000
min_val = 0
/datum/config_entry/number/inactivity_period/ValidateAndSet(str_val)
@@ -25,7 +25,7 @@
config_entry_value *= 10 //documented as seconds in config.txt
/datum/config_entry/number/afk_period //time in ds until a player is considered inactive
- config_entry_value = 3000
+ default = 3000
min_val = 0
/datum/config_entry/number/afk_period/ValidateAndSet(str_val)
@@ -40,19 +40,19 @@
/datum/config_entry/flag/show_irc_name
/datum/config_entry/string/default_view
- config_entry_value = "15x15"
+ default = "15x15"
/datum/config_entry/string/default_view_square
- config_entry_value = "15x15"
+ default = "15x15"
/datum/config_entry/flag/minimaps_enabled
- config_entry_value = TRUE
+ default = TRUE
/datum/config_entry/number/damage_multiplier
- config_entry_value = 1
+ default = 1
integer = FALSE
/datum/config_entry/number/minimal_access_threshold //If the number of players is larger than this threshold, minimal access will be turned on.
@@ -93,25 +93,25 @@
/datum/config_entry/flag/enforce_human_authority //If non-human species are barred from joining as a head of staff
/datum/config_entry/number/midround_antag_time_check // How late (in minutes you want the midround antag system to stay on, setting this to 0 will disable the system)
- config_entry_value = 60
+ default = 60
min_val = 0
/datum/config_entry/number/midround_antag_life_check // A ratio of how many people need to be alive in order for the round not to immediately end in midround antagonist
- config_entry_value = 0.7
+ default = 0.7
integer = FALSE
min_val = 0
max_val = 1
/datum/config_entry/number/suicide_reenter_round_timer
- config_entry_value = 30
+ default = 30
min_val = 0
/datum/config_entry/number/roundstart_suicide_time_limit
- config_entry_value = 30
+ default = 30
min_val = 0
/datum/config_entry/number/shuttle_refuel_delay
- config_entry_value = 12000
+ default = 12000
min_val = 0
/datum/config_entry/flag/show_game_type_odds //if set this allows players to see the odds of each roundtype on the get revision screen
@@ -133,7 +133,7 @@
/datum/config_entry/flag/no_intercept_report //Whether or not to send a communications intercept report roundstart. This may be overridden by gamemodes.
/datum/config_entry/number/arrivals_shuttle_dock_window //Time from when a player late joins on the arrivals shuttle to when the shuttle docks on the station
- config_entry_value = 55
+ default = 55
min_val = 30
/datum/config_entry/flag/arrivals_shuttle_require_undocked //Require the arrivals shuttle to be undocked before latejoiners can join
@@ -146,7 +146,7 @@
/datum/config_entry/flag/revival_cloning
/datum/config_entry/number/revival_brain_life
- config_entry_value = -1
+ default = -1
min_val = -1
/datum/config_entry/flag/ooc_during_round
@@ -158,7 +158,7 @@
/datum/config_entry/flag/roundstart_vr //Will virtual reality missions be loaded?
/datum/config_entry/number/gateway_delay //How long the gateway takes before it activates. Default is half an hour. Only matters if roundstart_away is enabled.
- config_entry_value = 18000
+ default = 18000
min_val = 0
/datum/config_entry/flag/ghost_interaction
@@ -169,12 +169,12 @@
/datum/config_entry/flag/sandbox_autoclose // close the sandbox panel after spawning an item, potentially reducing griff
/datum/config_entry/number/default_laws //Controls what laws the AI spawns with.
- config_entry_value = 0
+ default = 0
min_val = 0
max_val = 3
/datum/config_entry/number/silicon_max_law_amount
- config_entry_value = 12
+ default = 12
min_val = 0
/datum/config_entry/keyed_list/random_laws
@@ -187,50 +187,50 @@
splitter = ","
/datum/config_entry/number/overflow_cap
- config_entry_value = -1
+ default = -1
min_val = -1
/datum/config_entry/string/overflow_job
- config_entry_value = "Assistant"
+ default = "Assistant"
/datum/config_entry/flag/starlight
/datum/config_entry/flag/grey_assistants
/datum/config_entry/number/lavaland_budget
- config_entry_value = 60
+ default = 60
min_val = 0
/datum/config_entry/number/space_budget
- config_entry_value = 16
+ default = 16
min_val = 0
/datum/config_entry/number/icemoon_budget
- config_entry_value = 90
+ default = 90
integer = FALSE
min_val = 0
/datum/config_entry/number/station_space_budget
- config_entry_value = 10
+ default = 10
min_val = 0
/datum/config_entry/flag/allow_random_events // Enables random events mid-round when set
/datum/config_entry/number/events_min_time_mul // Multipliers for random events minimal starting time and minimal players amounts
- config_entry_value = 1
+ default = 1
min_val = 0
integer = FALSE
/datum/config_entry/number/events_min_players_mul
- config_entry_value = 1
+ default = 1
min_val = 0
integer = FALSE
/datum/config_entry/number/mice_roundstart
- config_entry_value = 10
+ default = 10
min_val = 0
/datum/config_entry/number/bombcap
- config_entry_value = 14
+ default = 14
min_val = 4
/datum/config_entry/number/bombcap/ValidateAndSet(str_val)
@@ -254,24 +254,24 @@
/datum/config_entry/flag/enable_night_shifts
/datum/config_entry/number/night_shift_public_areas_only
- config_entry_value = NIGHTSHIFT_AREA_PUBLIC
+ default = NIGHTSHIFT_AREA_PUBLIC
/datum/config_entry/flag/nightshift_toggle_requires_auth
- config_entry_value = FALSE
+ default = FALSE
/datum/config_entry/flag/nightshift_toggle_public_requires_auth
- config_entry_value = TRUE
+ default = TRUE
/datum/config_entry/flag/randomize_shift_time
/datum/config_entry/flag/shift_time_realtime
/datum/config_entry/number/monkeycap
- config_entry_value = 64
+ default = 64
min_val = 0
/datum/config_entry/number/ratcap
- config_entry_value = 64
+ default = 64
min_val = 0
/datum/config_entry/keyed_list/box_random_engine
@@ -283,11 +283,11 @@
/datum/config_entry/flag/pai_custom_holoforms
/datum/config_entry/number/marauder_delay_non_reebe
- config_entry_value = 1800
+ default = 1800
min_val = 0
/datum/config_entry/flag/allow_clockwork_marauder_on_station
- config_entry_value = TRUE
+ default = TRUE
/datum/config_entry/flag/suicide_allowed
@@ -297,7 +297,7 @@
///Initial loadout points
/datum/config_entry/number/initial_gear_points
- config_entry_value = 10
+ default = 10
/**
* Enables the FoV component, which hides objects and mobs behind the parent from their sight, unless they turn around, duh.
@@ -307,20 +307,20 @@
//Shuttle size limiter
/datum/config_entry/number/max_shuttle_count
- config_entry_value = 6
+ default = 6
/datum/config_entry/number/max_shuttle_size
- config_entry_value = 500
+ default = 500
//wound config stuff (increases the max injury roll, making injuries more likely)
/datum/config_entry/number/wound_exponent
- config_entry_value = WOUND_DAMAGE_EXPONENT
+ default = WOUND_DAMAGE_EXPONENT
min_val = 0
integer = FALSE
//adds a set amount to any injury rolls on a limb using get_damage() multiplied by this number
/datum/config_entry/number/wound_damage_multiplier
- config_entry_value = 0.333
+ default = 0.333
min_val = 0
integer = FALSE
@@ -342,5 +342,8 @@
//ambition start
/datum/config_entry/number/max_ambitions // Maximum number of ambitions a mind can store.
- config_entry_value = 5
+ default = 5
//ambition end
+
+/datum/config_entry/str_list/randomizing_station_name_message
+ default = list()
diff --git a/code/controllers/configuration/entries/jexp.dm b/code/controllers/configuration/entries/jexp.dm
index 3d9754b4a6..acd71fcfb4 100644
--- a/code/controllers/configuration/entries/jexp.dm
+++ b/code/controllers/configuration/entries/jexp.dm
@@ -7,7 +7,7 @@
/datum/config_entry/flag/use_exp_restrictions_heads
/datum/config_entry/number/use_exp_restrictions_heads_hours
- config_entry_value = 0
+ default = 0
min_val = 0
/datum/config_entry/flag/use_exp_restrictions_heads_department
diff --git a/code/controllers/configuration/entries/logging.dm b/code/controllers/configuration/entries/logging.dm
index 81013d8030..573d6e1ac7 100644
--- a/code/controllers/configuration/entries/logging.dm
+++ b/code/controllers/configuration/entries/logging.dm
@@ -1,67 +1,67 @@
/// log OOC channel
/datum/config_entry/flag/log_ooc
- config_entry_value = TRUE
+ default = TRUE
/// log login/logout
/datum/config_entry/flag/log_access
- config_entry_value = TRUE
+ default = TRUE
/// Config entry which special logging of failed logins under suspicious circumstances.
/datum/config_entry/flag/log_suspicious_login
- config_entry_value = TRUE
+ default = TRUE
/// log client say
/datum/config_entry/flag/log_say
- config_entry_value = TRUE
+ default = TRUE
/// log admin actions
/datum/config_entry/flag/log_admin
protection = CONFIG_ENTRY_LOCKED
- config_entry_value = TRUE
+ default = TRUE
/// log prayers
/datum/config_entry/flag/log_prayer
- config_entry_value = TRUE
+ default = TRUE
/// log lawchanges
/datum/config_entry/flag/log_law
- config_entry_value = TRUE
+ default = TRUE
/// log game events
/datum/config_entry/flag/log_game
- config_entry_value = TRUE
+ default = TRUE
/// log mech data
/datum/config_entry/flag/log_mecha
- config_entry_value = TRUE
+ default = TRUE
/// log virology data
/datum/config_entry/flag/log_virus
- config_entry_value = TRUE
+ default = TRUE
/// log voting
/datum/config_entry/flag/log_vote
- config_entry_value = TRUE
+ default = TRUE
/// log crafting
/datum/config_entry/flag/log_craft
- config_entry_value = TRUE
+ default = TRUE
/// log client whisper
/datum/config_entry/flag/log_whisper
- config_entry_value = TRUE
+ default = TRUE
/// log attack messages
/datum/config_entry/flag/log_attack
- config_entry_value = TRUE
+ default = TRUE
/// log attack messages
/datum/config_entry/flag/log_victim
- config_entry_value = TRUE
+ default = TRUE
/// log emotes
/datum/config_entry/flag/log_emote
- config_entry_value = TRUE
+ default = TRUE
/// log admin chat messages
/datum/config_entry/flag/log_adminchat
@@ -69,35 +69,35 @@
/// log shuttle related actions, ie shuttle computers, shuttle manipulator, emergency console
/datum/config_entry/flag/log_shuttle
- config_entry_value = TRUE
+ default = TRUE
/// log pda messages
/datum/config_entry/flag/log_pda
- config_entry_value = TRUE
+ default = TRUE
/// log telecomms messages
/datum/config_entry/flag/log_telecomms
- config_entry_value = TRUE
+ default = TRUE
/// log economy
/datum/config_entry/flag/log_econ
- config_entry_value = TRUE
+ default = TRUE
/// log certain expliotable parrots and other such fun things in a JSON file of twitter valid phrases.
/datum/config_entry/flag/log_twitter
- config_entry_value = TRUE
+ default = TRUE
/// log all world.Topic() calls
/datum/config_entry/flag/log_world_topic
- config_entry_value = TRUE
+ default = TRUE
/// log crew manifest to seperate file
/datum/config_entry/flag/log_manifest
- config_entry_value = TRUE
+ default = TRUE
/// log roundstart divide occupations debug information to a file
/datum/config_entry/flag/log_job_debug
- config_entry_value = TRUE
+ default = TRUE
/// log photos taken by players with a camera
/datum/config_entry/flag/log_pictures
@@ -107,21 +107,21 @@
/// forces log_href for tgui
/datum/config_entry/flag/emergency_tgui_logging
- config_entry_value = FALSE
+ default = FALSE
/// The "cooldown" time for each occurrence of a unique error
/datum/config_entry/number/error_cooldown
- config_entry_value = 600
+ default = 600
min_val = 0
/// How many occurrences before the next will silence them
/datum/config_entry/number/error_limit
- config_entry_value = 50
+ default = 50
/// How long a unique error will be silenced for
/datum/config_entry/number/error_silence_time
- config_entry_value = 6000
+ default = 6000
/// How long to wait between messaging admins about occurrences of a unique error
/datum/config_entry/number/error_msg_delay
- config_entry_value = 50
+ default = 50
diff --git a/code/controllers/configuration/entries/movespeed.dm b/code/controllers/configuration/entries/movespeed.dm
index b1c3818cd3..18d54da9fc 100644
--- a/code/controllers/configuration/entries/movespeed.dm
+++ b/code/controllers/configuration/entries/movespeed.dm
@@ -15,7 +15,7 @@
/datum/config_entry/keyed_list/multiplicative_movespeed/normal
name = "multiplicative_movespeed"
- config_entry_value = list( //DEFAULTS
+ default = list( //DEFAULTS
/mob/living/simple_animal = 1,
/mob/living/silicon/pai = 1,
/mob/living/carbon/alien/humanoid/sentinel = 0.25,
@@ -26,7 +26,7 @@
/datum/config_entry/keyed_list/multiplicative_movespeed/floating
name = "multiplicative_movespeed_floating"
- config_entry_value = list(
+ default = list(
/mob/living = 0,
/mob/living/carbon/alien/humanoid = 0,
/mob/living/carbon/alien/humanoid/royal/praetorian = 0,
@@ -62,7 +62,7 @@
M.sync()
/datum/config_entry/flag/sprint_enabled
- config_entry_value = TRUE
+ default = TRUE
/datum/config_entry/flag/sprint_enabled/ValidateAndSet(str_val)
. = ..()
@@ -73,31 +73,31 @@
L.disable_intentional_sprint_mode()
/datum/config_entry/number/sprintless_stagger_slowdown
- config_entry_value = 0
+ default = 0
/datum/config_entry/number/sprintless_off_balance_slowdown
- config_entry_value = 0.85
+ default = 0.85
/datum/config_entry/number/melee_stagger_factor
- config_entry_value = 1
+ default = 1
/datum/config_entry/number/movedelay/sprint_speed_increase
- config_entry_value = 1
+ default = 1
/datum/config_entry/number/movedelay/sprint_max_tiles_increase
- config_entry_value = 5
+ default = 5
/datum/config_entry/number/movedelay/sprint_absolute_max_tiles
- config_entry_value = 13
+ default = 13
/datum/config_entry/number/movedelay/sprint_buffer_max
- config_entry_value = 24
+ default = 24
/datum/config_entry/number/movedelay/sprint_stamina_cost
- config_entry_value = 1.4
+ default = 1.4
/datum/config_entry/number/movedelay/sprint_buffer_regen_per_ds
- config_entry_value = 0.4
+ default = 0.4
/////////////////////////////////////////////////Outdated move delay
/datum/config_entry/number/outdated_movedelay
diff --git a/code/controllers/configuration/entries/persistence.dm b/code/controllers/configuration/entries/persistence.dm
index 2444034b86..8e38463463 100644
--- a/code/controllers/configuration/entries/persistence.dm
+++ b/code/controllers/configuration/entries/persistence.dm
@@ -1,19 +1,19 @@
/// Whether or not to use the persistence system for cleanable objects
/datum/config_entry/flag/persistent_debris
- config_entry_value = FALSE
+ default = FALSE
/// Whether or not to nuke all roundstart debris that isn't due to persistence if the above is true
/datum/config_entry/flag/persistent_debris_only
- config_entry_value = TRUE
+ default = TRUE
/// Max amount of objects to store, total
/datum/config_entry/number/persistent_debris_global_max
- config_entry_value = 10000
+ default = 10000
integer = TRUE
/// Max amount of objects to store per type
/datum/config_entry/number/persistent_debris_type_max
- config_entry_value = 2000
+ default = 2000
integer = TRUE
/// Wipe dirty stuff on nuke
diff --git a/code/controllers/configuration/entries/plushies.dm b/code/controllers/configuration/entries/plushies.dm
index 20ad02d399..0a63698dc2 100644
--- a/code/controllers/configuration/entries/plushies.dm
+++ b/code/controllers/configuration/entries/plushies.dm
@@ -1,5 +1,5 @@
/datum/config_entry/number/snowflake_plushie_prob
- config_entry_value = 50
+ default = 50
/datum/config_entry/keyed_list/snowflake_plushies
key_mode = KEY_MODE_TEXT
diff --git a/code/controllers/configuration/entries/policy.dm b/code/controllers/configuration/entries/policy.dm
index ea8973a4ce..31483788e1 100644
--- a/code/controllers/configuration/entries/policy.dm
+++ b/code/controllers/configuration/entries/policy.dm
@@ -1,6 +1,6 @@
/// Seconds for CMD on defib-with-memory-loss policy config to display instead of defib-intact config
/datum/config_entry/number/defib_cmd_time_limit
- config_entry_value = 300
+ default = 300
integer = TRUE
/datum/config_entry/keyed_list/policy
diff --git a/code/controllers/configuration/entries/respawns.dm b/code/controllers/configuration/entries/respawns.dm
index 40c7d248a4..7c8e3b7789 100644
--- a/code/controllers/configuration/entries/respawns.dm
+++ b/code/controllers/configuration/entries/respawns.dm
@@ -1,36 +1,36 @@
/// Allows usage of respawn system
/datum/config_entry/flag/respawns_enabled
- config_entry_value = FALSE
+ default = FALSE
/// Minutes before allowing respawns.
/datum/config_entry/number/respawn_delay
- config_entry_value = 15.0
+ default = 15.0
integer = FALSE
/// Minutes before allowing respawn, if user cryo'd.
/datum/config_entry/number/respawn_delay_cryo
- config_entry_value = 5.0
+ default = 5.0
integer = FALSE
/// Allows respawning as non-assistant. Overrides all others of this type.
/datum/config_entry/flag/allow_non_assistant_respawn
- config_entry_value = FALSE
+ default = FALSE
/// Allows respawning as a combat role, defined as security/head.
/datum/config_entry/flag/allow_combat_role_respawn
- config_entry_value = FALSE
+ default = FALSE
/// Allows respawning as the same character as a previous life
/datum/config_entry/flag/allow_same_character_respawn
- config_entry_value = FALSE
+ default = FALSE
/// Observing penalizes for respawns, not just joining.
/datum/config_entry/flag/respawn_penalty_includes_observe
- config_entry_value = FALSE
+ default = FALSE
/// Minutes from roundstart before someone can respawn
/datum/config_entry/number/respawn_minimum_delay_roundstart
- config_entry_value = 30.0
+ default = 30.0
integer = FALSE
/// Gamemode config tags that are banned from respawning
diff --git a/code/controllers/configuration/entries/security.dm b/code/controllers/configuration/entries/security.dm
index 3a49c97d70..9a661ddc21 100644
--- a/code/controllers/configuration/entries/security.dm
+++ b/code/controllers/configuration/entries/security.dm
@@ -1,34 +1,34 @@
/datum/config_entry/number/fail2topic_rate_limit
- config_entry_value = 10 //deciseconds
+ default = 10 //deciseconds
/datum/config_entry/number/fail2topic_max_fails
- config_entry_value = 5
+ default = 5
/datum/config_entry/string/fail2topic_rule_name
- config_entry_value = "_dd_fail2topic"
+ default = "_dd_fail2topic"
protection = CONFIG_ENTRY_LOCKED //affects physical server configuration, no touchies!!
/datum/config_entry/flag/fail2topic_enabled
/datum/config_entry/number/topic_max_size
- config_entry_value = 8192
+ default = 8192
/datum/config_entry/keyed_list/topic_rate_limit_whitelist
key_mode = KEY_MODE_TEXT
value_mode = VALUE_MODE_FLAG
/datum/config_entry/number/minute_topic_limit
- config_entry_value = null
+ default = null
min_val = 0
/datum/config_entry/number/second_topic_limit
- config_entry_value = null
+ default = null
min_val = 0
/datum/config_entry/number/minute_click_limit
- config_entry_value = 400
+ default = 400
min_val = 0
/datum/config_entry/number/second_click_limit
- config_entry_value = 15
+ default = 15
min_val = 0
diff --git a/code/controllers/configuration/entries/server.dm b/code/controllers/configuration/entries/server.dm
index 77e5dcf950..0df252f65c 100644
--- a/code/controllers/configuration/entries/server.dm
+++ b/code/controllers/configuration/entries/server.dm
@@ -2,12 +2,12 @@
/datum/config_entry/string/servername // server name (the name of the game window)
-/datum/config_entry/string/communityshortname // short name of the server's community
+/datum/config_entry/string/communityshortname // short name of the server's community
/datum/config_entry/string/communitylink // link to the server's website
/datum/config_entry/string/servertagline
- config_entry_value = "We forgot to set the server's tagline in config.txt"
+ default = "We forgot to set the server's tagline in config.txt"
/datum/config_entry/flag/usetaglinestrings
@@ -16,7 +16,7 @@
/datum/config_entry/string/stationname // station name (the name of the station in-game)
/datum/config_entry/number/fps
- config_entry_value = 20
+ default = 20
min_val = 1
max_val = 100 //byond will start crapping out at 50, so this is just ridic
var/sync_validate = FALSE
@@ -36,7 +36,7 @@
/datum/config_entry/number/ticklag/New() //ticklag weirdly just mirrors fps
var/datum/config_entry/CE = /datum/config_entry/number/fps
- config_entry_value = 10 / initial(CE.config_entry_value)
+ config_entry_value = 10 / initial(CE.default)
..()
/datum/config_entry/number/ticklag/ValidateAndSet(str_val)
@@ -49,7 +49,7 @@
sync_validate = FALSE
/datum/config_entry/number/tick_limit_mc_init //SSinitialization throttling
- config_entry_value = TICK_LIMIT_MC_INIT_DEFAULT
+ default = TICK_LIMIT_MC_INIT_DEFAULT
min_val = 0 //oranges warned us
integer = FALSE
@@ -64,17 +64,17 @@
/datum/config_entry/number/mc_tick_rate/base_mc_tick_rate
integer = FALSE
- config_entry_value = 1
+ default = 1
/datum/config_entry/number/mc_tick_rate/high_pop_mc_tick_rate
integer = FALSE
- config_entry_value = 1.1
+ default = 1.1
/datum/config_entry/number/mc_tick_rate/high_pop_mc_mode_amount
- config_entry_value = 65
+ default = 65
/datum/config_entry/number/mc_tick_rate/disable_high_pop_mc_mode_amount
- config_entry_value = 60
+ default = 60
/datum/config_entry/number/mc_tick_rate
abstract_type = /datum/config_entry/number/mc_tick_rate
@@ -92,8 +92,8 @@
world.sleep_offline = !config_entry_value
/datum/config_entry/number/rounds_until_hard_restart
- config_entry_value = -1
+ default = -1
min_val = 0
/datum/config_entry/string/force_gamemode
- config_entry_value = null
+ default = null
diff --git a/code/controllers/configuration/entries/stamina_combat.dm b/code/controllers/configuration/entries/stamina_combat.dm
index 681b903286..d230b9d7eb 100644
--- a/code/controllers/configuration/entries/stamina_combat.dm
+++ b/code/controllers/configuration/entries/stamina_combat.dm
@@ -4,30 +4,30 @@
/// Maximum stamina buffer
/datum/config_entry/number/stamina_combat/buffer_max
- config_entry_value = 25
+ default = 25
/// Seconds until percent_regeneration_out_of_combat kicks in
/datum/config_entry/number/stamina_combat/out_of_combat_timer
- config_entry_value = 15
+ default = 15
/// Base regeneration per second
/datum/config_entry/number/stamina_combat/base_regeneration
- config_entry_value = 3.5
+ default = 3.5
/// After out_of_combat_timer elapses, additionally regenerate this percent of total stamina per second. Unaffected by combat mode.
/datum/config_entry/number/stamina_combat/percent_regeneration_out_of_combat
- config_entry_value = 30
+ default = 30
/// Seconds after an action for which your regeneration is penalized
/datum/config_entry/number/stamina_combat/post_action_penalty_delay
- config_entry_value = 5
+ default = 5
/// Factor to multiply by for penalizing post-action-stamina-regen
/datum/config_entry/number/stamina_combat/post_action_penalty_factor
- config_entry_value = 0.25
+ default = 0.25
/// Factor to multiply by for stamina usage past buffer into health
/datum/config_entry/number/stamina_combat/overdraw_penalty_factor
- config_entry_value = 1.5
+ default = 1.5
/datum/config_entry/flag/disable_stambuffer
diff --git a/code/controllers/configuration/entries/urls.dm b/code/controllers/configuration/entries/urls.dm
index fe82574da0..e911a3062a 100644
--- a/code/controllers/configuration/entries/urls.dm
+++ b/code/controllers/configuration/entries/urls.dm
@@ -3,24 +3,24 @@
/datum/config_entry/string/banappeals
/datum/config_entry/string/wikiurl
- config_entry_value = "https://katlin.dog/citadel-wiki"
+ default = "https://katlin.dog/citadel-wiki"
/datum/config_entry/string/wikiurltg
- config_entry_value = "http://www.tgstation13.org/wiki"
+ default = "http://www.tgstation13.org/wiki"
/datum/config_entry/string/forumurl
- config_entry_value = "http://tgstation13.org/phpBB/index.php"
+ default = "http://tgstation13.org/phpBB/index.php"
/datum/config_entry/string/rulesurl
- config_entry_value = "http://www.tgstation13.org/wiki/Rules"
+ default = "http://www.tgstation13.org/wiki/Rules"
/datum/config_entry/string/githuburl
- config_entry_value = "https://www.github.com/tgstation/-tg-station"
+ default = "https://www.github.com/tgstation/-tg-station"
/datum/config_entry/string/roundstatsurl
/datum/config_entry/string/gamelogurl
/datum/config_entry/number/githubrepoid
- config_entry_value = null
+ default = null
min_val = 0
diff --git a/code/controllers/configuration/entries/vote.dm b/code/controllers/configuration/entries/vote.dm
index 545fd01e3c..50cdc32620 100644
--- a/code/controllers/configuration/entries/vote.dm
+++ b/code/controllers/configuration/entries/vote.dm
@@ -3,29 +3,29 @@
/datum/config_entry/flag/allow_vote_mode // allow votes to change mode
/datum/config_entry/number/vote_delay // minimum time between voting sessions (deciseconds, 10 minute default)
- config_entry_value = 6000
+ default = 6000
min_val = 0
/datum/config_entry/number/vote_period // length of voting period (deciseconds, default 1 minute)
- config_entry_value = 600
+ default = 600
min_val = 0
/// Length of time before the first autotransfer vote is called (deciseconds, default 2 hours)
/// Set to 0 to disable the subsystem altogether.
/datum/config_entry/number/vote_autotransfer_initial
- config_entry_value = 72000
+ default = 72000
min_val = 0
///length of time to wait before subsequent autotransfer votes (deciseconds, default 30 minutes)
/datum/config_entry/number/vote_autotransfer_interval
- config_entry_value = 18000
+ default = 18000
min_val = 0
/// maximum extensions until the round autoends.
/// Set to 0 to force automatic crew transfer after the 'vote_autotransfer_initial' elapsed.
/// Set to -1 to disable the maximum extensions cap.
/datum/config_entry/number/vote_autotransfer_maximum
- config_entry_value = 4
+ default = 4
min_val = -1
/datum/config_entry/flag/default_no_vote // vote does not default to nochange/norestart
@@ -37,10 +37,10 @@
/datum/config_entry/flag/tgstyle_maprotation
/datum/config_entry/string/map_vote_type
- config_entry_value = APPROVAL_VOTING
+ default = APPROVAL_VOTING
/datum/config_entry/number/maprotatechancedelta
- config_entry_value = 0.75
+ default = 0.75
min_val = 0
max_val = 1
integer = FALSE
@@ -50,6 +50,6 @@
/datum/config_entry/flag/modetier_voting
/datum/config_entry/number/dropped_modes
- config_entry_value = 3
+ default = 3
/datum/config_entry/flag/must_be_readied_to_vote_gamemode
diff --git a/code/datums/station_traits/neutral_traits.dm b/code/datums/station_traits/neutral_traits.dm
index a9ce92b982..1f7e040e97 100644
--- a/code/datums/station_traits/neutral_traits.dm
+++ b/code/datums/station_traits/neutral_traits.dm
@@ -115,15 +115,13 @@
. = ..()
SSstation.announcer = /datum/centcom_announcer/medbot
-GLOBAL_LIST_INIT(randomizing_station_name_messages, world.file2list("strings/randomizing_station_name_messages.txt"))
-
/datum/station_trait/randomizing_station_name
name = "Randomizing station name"
show_in_report = TRUE
report_message = "Due to legal reasons or other, we might not be able to settle on a station name."
trait_processes = TRUE
COOLDOWN_DECLARE(randomizing_cooldown)
- var/trigger_every = 5 MINUTES
+ var/trigger_every = 30 MINUTES
blacklist = list(/datum/station_trait/randomizing_station_name/fast, /datum/station_trait/randomizing_station_name/slow)
/datum/station_trait/randomizing_station_name/on_round_start()
@@ -138,7 +136,7 @@ GLOBAL_LIST_INIT(randomizing_station_name_messages, world.file2list("strings/ran
var/new_name = new_station_name()
- var/centcom_announcement = pick(GLOB.randomizing_station_name_messages)
+ var/centcom_announcement = pick(CONFIG_GET(str_list/randomizing_station_name_message))
// Replace with CURRENT station name
centcom_announcement = replacetext(centcom_announcement, "%CURRENT_STATION_NAME%", station_name())
@@ -164,10 +162,10 @@ GLOBAL_LIST_INIT(randomizing_station_name_messages, world.file2list("strings/ran
/datum/station_trait/randomizing_station_name/fast
name = "Randomizing station name - Fast"
- trigger_every = 3 MINUTES
+ trigger_every = 15 MINUTES
blacklist = list(/datum/station_trait/randomizing_station_name, /datum/station_trait/randomizing_station_name/slow)
/datum/station_trait/randomizing_station_name/slow
name = "Randomizing station name - Slow"
- trigger_every = 10 MINUTES
+ trigger_every = 1 HOURS
blacklist = list(/datum/station_trait/randomizing_station_name/fast, /datum/station_trait/randomizing_station_name)
diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm
index b03ac81842..20db71a3dc 100644
--- a/code/modules/client/preferences.dm
+++ b/code/modules/client/preferences.dm
@@ -2362,7 +2362,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
features["cock_shape"] = new_shape
if("cock_visibility")
- var/n_vis = input(user, "Penis Visibility", "Character Preference") as null|anything in CONFIG_GET(keyed_list/safe_visibility_toggles)
+ var/n_vis = input(user, "Penis Visibility", "Character Preference") as null|anything in CONFIG_GET(str_list/safe_visibility_toggles)
if(n_vis)
features["cock_visibility"] = n_vis
@@ -2384,7 +2384,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
features["balls_shape"] = new_shape
if("balls_visibility")
- var/n_vis = input(user, "Testicles Visibility", "Character Preference") as null|anything in CONFIG_GET(keyed_list/safe_visibility_toggles)
+ var/n_vis = input(user, "Testicles Visibility", "Character Preference") as null|anything in CONFIG_GET(str_list/safe_visibility_toggles)
if(n_vis)
features["balls_visibility"] = n_vis
@@ -2411,7 +2411,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
to_chat(user,"Invalid color. Your color is not bright enough.")
if("breasts_visibility")
- var/n_vis = input(user, "Breasts Visibility", "Character Preference") as null|anything in CONFIG_GET(keyed_list/safe_visibility_toggles)
+ var/n_vis = input(user, "Breasts Visibility", "Character Preference") as null|anything in CONFIG_GET(str_list/safe_visibility_toggles)
if(n_vis)
features["breasts_visibility"] = n_vis
@@ -2433,7 +2433,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
to_chat(user,"Invalid color. Your color is not bright enough.")
if("vag_visibility")
- var/n_vis = input(user, "Vagina Visibility", "Character Preference") as null|anything in CONFIG_GET(keyed_list/safe_visibility_toggles)
+ var/n_vis = input(user, "Vagina Visibility", "Character Preference") as null|anything in CONFIG_GET(str_list/safe_visibility_toggles)
if(n_vis)
features["vag_visibility"] = n_vis
@@ -2456,7 +2456,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
features["butt_size"] = clamp(round(new_length), min_B, max_B)
if("butt_visibility")
- var/n_vis = input(user, "Butt Visibility", "Character Preference") as null|anything in CONFIG_GET(keyed_list/safe_visibility_toggles)
+ var/n_vis = input(user, "Butt Visibility", "Character Preference") as null|anything in CONFIG_GET(str_list/safe_visibility_toggles)
if(n_vis)
features["butt_visibility"] = n_vis
diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm
index 94f4942284..6bb704f8a5 100644
--- a/code/modules/client/preferences_savefile.dm
+++ b/code/modules/client/preferences_savefile.dm
@@ -1000,10 +1000,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
if(!max_B)
max_B = CONFIG_GET(number/butt_max_size_prefs)
- var/static/safe_visibilities
- if(!safe_visibilities)
- var/list/L = CONFIG_GET(keyed_list/safe_visibility_toggles)
- safe_visibilities = L.Copy()
+ var/safe_visibilities = CONFIG_GET(str_list/safe_visibility_toggles)
features["breasts_size"] = sanitize_inlist(features["breasts_size"], B_sizes, BREASTS_SIZE_DEF)
features["cock_length"] = sanitize_integer(features["cock_length"], min_D, max_D, COCK_SIZE_DEF)
diff --git a/code/modules/error_handler/error_handler.dm b/code/modules/error_handler/error_handler.dm
index 6a3d2c2233..834f5051c2 100644
--- a/code/modules/error_handler/error_handler.dm
+++ b/code/modules/error_handler/error_handler.dm
@@ -64,11 +64,11 @@ GLOBAL_VAR_INIT(total_runtimes_skipped, 0)
configured_error_silence_time = CONFIG_GET(number/error_silence_time)
else
var/datum/config_entry/CE = /datum/config_entry/number/error_cooldown
- configured_error_cooldown = initial(CE.config_entry_value)
+ configured_error_cooldown = initial(CE.default)
CE = /datum/config_entry/number/error_limit
- configured_error_limit = initial(CE.config_entry_value)
+ configured_error_limit = initial(CE.default)
CE = /datum/config_entry/number/error_silence_time
- configured_error_silence_time = initial(CE.config_entry_value)
+ configured_error_silence_time = initial(CE.default)
//Each occurence of a unique error adds to its cooldown time...
diff --git a/code/modules/error_handler/error_viewer.dm b/code/modules/error_handler/error_viewer.dm
index 9ac65d26fb..b88437edef 100644
--- a/code/modules/error_handler/error_viewer.dm
+++ b/code/modules/error_handler/error_viewer.dm
@@ -122,7 +122,7 @@ GLOBAL_DATUM(error_cache, /datum/error_viewer/error_cache)
err_msg_delay = CONFIG_GET(number/error_msg_delay)
else
var/datum/config_entry/CE = /datum/config_entry/number/error_msg_delay
- err_msg_delay = initial(CE.config_entry_value)
+ err_msg_delay = initial(CE.default)
error_source.next_message_at = world.time + err_msg_delay
/datum/error_viewer/error_source
diff --git a/config/entries/general.txt b/config/entries/general.txt
index ad8792c10a..b118d65621 100644
--- a/config/entries/general.txt
+++ b/config/entries/general.txt
@@ -498,3 +498,20 @@ PAI_CUSTOM_HOLOFORMS
## Do station renames from the station charter require admin approval to pass, as opposed to autoapproving if not denied.
STATION_NAME_NEEDS_APPROVAL
+
+## Strings for the station trait "Randomizing station name"
+RANDOMIZING_STATION_NAME_MESSAGE Due to internal affairs, the station is now named %NEW_STATION_NAME%.
+RANDOMIZING_STATION_NAME_MESSAGE The solar system's government has formally requested that the station now be named %NEW_STATION_NAME%.
+RANDOMIZING_STATION_NAME_MESSAGE A gorilla broke into the office and destroyed a bunch of paperwork. We don't know what your station's old name was. It's now %NEW_STATION_NAME%.
+RANDOMIZING_STATION_NAME_MESSAGE An intern said %NEW_STATION_NAME% would be a cool name. That's your station's name now.
+RANDOMIZING_STATION_NAME_MESSAGE Our predictive language model has renamed your station to %NEW_STATION_NAME%.
+RANDOMIZING_STATION_NAME_MESSAGE It's %NEW_STATION_NAME% now.
+RANDOMIZING_STATION_NAME_MESSAGE The CEO demanded that your station be named %NEW_STATION_NAME%.
+RANDOMIZING_STATION_NAME_MESSAGE Our intern accidentally wiped the database, so your station needs a new name: %NEW_STATION_NAME%.
+RANDOMIZING_STATION_NAME_MESSAGE Due to copyright infringement, the station is now temporarily renamed to %NEW_STATION_NAME%.
+RANDOMIZING_STATION_NAME_MESSAGE Due to recent corporate acquisitions, the station has been rebranded to %NEW_STATION_NAME%.
+RANDOMIZING_STATION_NAME_MESSAGE %NEW_STATION_NAME%.
+RANDOMIZING_STATION_NAME_MESSAGE %NEW_STATION_NAME%? %NEW_STATION_NAME%! %NEW_STATION_NAME%!!!!!!!!
+RANDOMIZING_STATION_NAME_MESSAGE A popular social network application had already claimed the trademark of %CURRENT_STATION_NAME%, the station has been renamed to %NEW_STATION_NAME%.
+RANDOMIZING_STATION_NAME_MESSAGE We're pulling a prank on %RANDOM_CREWMEMBER%, so we've changed the station's name to %NEW_STATION_NAME%.
+RANDOMIZING_STATION_NAME_MESSAGE %RANDOM_NAME% made us change the station name, which is now %NEW_STATION_NAME%.
diff --git a/strings/randomizing_station_name_messages.txt b/strings/randomizing_station_name_messages.txt
deleted file mode 100644
index 9b12dba310..0000000000
--- a/strings/randomizing_station_name_messages.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-Due to internal affairs, the station is now named %NEW_STATION_NAME%.
-The solar system's government has formally requested that the station now be named %NEW_STATION_NAME%.
-A gorilla broke into the office and destroyed a bunch of paperwork. We don't know what your station's old name was. It's now %NEW_STATION_NAME%.
-An intern said %NEW_STATION_NAME% would be a cool name. That's your station's name now.
-Our predictive language model has renamed your station to %NEW_STATION_NAME%.
-It's %NEW_STATION_NAME% now.
-The CEO demanded that your station be named %NEW_STATION_NAME%.
-Our intern accidentally wiped the database, so your station needs a new name: %NEW_STATION_NAME%.
-Due to copyright infringement, the station is now temporarily renamed to %NEW_STATION_NAME%.
-Due to recent corporate acquisitions, the station has been rebranded to %NEW_STATION_NAME%.
-%NEW_STATION_NAME%.
-%NEW_STATION_NAME%? %NEW_STATION_NAME%! %NEW_STATION_NAME%!!!!!!!!
-A popular social network application had already claimed the trademark of %CURRENT_STATION_NAME%, the station has been renamed to %NEW_STATION_NAME%.
-We're pulling a prank on %RANDOM_CREWMEMBER%, so we've changed the station's name to %NEW_STATION_NAME%.
-%RANDOM_NAME% made us change the station name, which is now %NEW_STATION_NAME%.