diff --git a/code/controllers/configuration/entries/admin.dm b/code/controllers/configuration/entries/admin.dm new file mode 100644 index 0000000000..3b5b437742 --- /dev/null +++ b/code/controllers/configuration/entries/admin.dm @@ -0,0 +1,64 @@ +/datum/config_entry/flag/admin_legacy_system //Defines whether the server uses the legacy admin system with admins.txt or the SQL system + protection = CONFIG_ENTRY_LOCKED + +/datum/config_entry/flag/protect_legacy_admins //Stops any admins loaded by the legacy system from having their rank edited by the permissions panel + protection = CONFIG_ENTRY_LOCKED + +/datum/config_entry/flag/protect_legacy_ranks //Stops any ranks loaded by the legacy system from having their flags edited by the permissions panel + protection = CONFIG_ENTRY_LOCKED + +/datum/config_entry/flag/enable_localhost_rank //Gives the !localhost! rank to any client connecting from 127.0.0.1 or ::1 + protection = CONFIG_ENTRY_LOCKED + +/datum/config_entry/flag/load_legacy_ranks_only //Loads admin ranks only from legacy admin_ranks.txt, while enabled ranks are mirrored to the database + protection = CONFIG_ENTRY_LOCKED + +/datum/config_entry/flag/mentors_mobname_only + +/datum/config_entry/flag/mentor_legacy_system //Defines whether the server uses the legacy mentor system with mentors.txt or the SQL system + protection = CONFIG_ENTRY_LOCKED + +/datum/config_entry/flag/forbid_singulo_possession + +/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 + min_val = 0 + integer = FALSE + +/datum/config_entry/number/note_stale_days + config_entry_value = null + min_val = 0 + integer = FALSE + +/datum/config_entry/flag/autoconvert_notes //if all connecting player's notes should attempt to be converted to the database + protection = CONFIG_ENTRY_LOCKED + +/datum/config_entry/flag/announce_admin_logout + +/datum/config_entry/flag/announce_admin_login + +/datum/config_entry/string/centcom_ban_db // URL for the CentCom Galactic Ban DB API + +/datum/config_entry/flag/autoadmin // if autoadmin is enabled + protection = CONFIG_ENTRY_LOCKED + +/datum/config_entry/string/autoadmin_rank // the rank for autoadmins + config_entry_value = "Game Master" + protection = CONFIG_ENTRY_LOCKED + +/datum/config_entry/flag/allow_admin_ooccolor // Allows admins with relevant permissions to have their own ooc colour + +/datum/config_entry/flag/popup_admin_pm // adminPMs to non-admins show in a pop-up 'reply' window when set + +/datum/config_entry/flag/guest_jobban + +/datum/config_entry/flag/ban_legacy_system //Defines whether the server uses the legacy banning system with the files in /data or the SQL system. + protection = CONFIG_ENTRY_LOCKED + +/datum/config_entry/flag/guest_ban + +/datum/config_entry/flag/automute_on //enables automuting/spam prevention + +/datum/config_entry/flag/debug_admin_hrefs diff --git a/code/controllers/configuration/entries/alert.dm b/code/controllers/configuration/entries/alert.dm new file mode 100644 index 0000000000..6177c602db --- /dev/null +++ b/code/controllers/configuration/entries/alert.dm @@ -0,0 +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." + +/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." + +/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." + +/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." + +/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." + +/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." + +/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." + +/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." + +/datum/config_entry/number/minimum_secborg_alert //Minimum alert level for secborgs to be chosen. + config_entry_value = 3 diff --git a/code/controllers/configuration/entries/connections.dm b/code/controllers/configuration/entries/connections.dm new file mode 100644 index 0000000000..acdf588e5a --- /dev/null +++ b/code/controllers/configuration/entries/connections.dm @@ -0,0 +1,106 @@ +/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 + +/datum/config_entry/string/panic_bunker_message + config_entry_value = "Sorry but the server is currently not accepting connections from never before seen players." + +/datum/config_entry/string/panic_server_name + +/datum/config_entry/string/panic_server_name/ValidateAndSet(str_val) + return str_val != "\[Put the name here\]" && ..() + +/datum/config_entry/string/panic_server_address //Reconnect a player this linked server if this server isn't accepting new players + +/datum/config_entry/string/panic_server_address/ValidateAndSet(str_val) + return str_val != "byond://address:port" && ..() + +/datum/config_entry/number/max_bunker_days + config_entry_value = 7 + min_val = 1 + +/datum/config_entry/number/notify_new_player_age // how long do we notify admins of a new player + min_val = -1 + +/datum/config_entry/number/notify_new_player_account_age // how long do we notify admins of a new byond account + 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 + +/datum/config_entry/flag/irc_first_connection_alert // do we notify the irc channel when somebody is connecting for the first time? + +/datum/config_entry/flag/check_randomizer + +/datum/config_entry/string/ipintel_email + +/datum/config_entry/string/ipintel_email/ValidateAndSet(str_val) + return str_val != "ch@nge.me" && ..() + +/datum/config_entry/number/ipintel_rating_bad + config_entry_value = 1 + integer = FALSE + min_val = 0 + max_val = 1 + +/datum/config_entry/number/ipintel_save_good + config_entry_value = 12 + min_val = 0 + +/datum/config_entry/number/ipintel_save_bad + config_entry_value = 1 + min_val = 0 + +/datum/config_entry/string/ipintel_domain + config_entry_value = "check.getipintel.net" + +/datum/config_entry/flag/aggressive_changelog + +/datum/config_entry/flag/allow_webclient + +/datum/config_entry/flag/webclient_only_byond_members + +/datum/config_entry/number/client_warn_version + config_entry_value = null + min_val = 500 + +/datum/config_entry/number/client_warn_version + config_entry_value = 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." + +/datum/config_entry/flag/client_warn_popup + +/datum/config_entry/number/client_error_version + config_entry_value = 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." + +/datum/config_entry/number/client_error_build + config_entry_value = null + min_val = 0 + +/datum/config_entry/number/soft_popcap + config_entry_value = null + min_val = 0 + +/datum/config_entry/number/hard_popcap + config_entry_value = null + min_val = 0 + +/datum/config_entry/number/extreme_popcap + config_entry_value = 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." + +/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." + +/datum/config_entry/string/extreme_popcap_message + config_entry_value = "The server is currently serving a high number of users, find alternative servers." diff --git a/code/controllers/configuration/entries/debris.dm b/code/controllers/configuration/entries/debris.dm new file mode 100644 index 0000000000..1cc2c2d7b7 --- /dev/null +++ b/code/controllers/configuration/entries/debris.dm @@ -0,0 +1,16 @@ +/// Amount of dirtyness tiles need to spawn dirt. +/datum/config_entry/number/turf_dirt_threshold + config_entry_value = 100 + min_val = 1 + integer = TRUE + +/// Alpha dirt starts at +/datum/config_entry/number/dirt_alpha_starting + config_entry_value = 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 diff --git a/code/controllers/configuration/entries/fetish_content.dm b/code/controllers/configuration/entries/fetish_content.dm new file mode 100644 index 0000000000..1de796a11d --- /dev/null +++ b/code/controllers/configuration/entries/fetish_content.dm @@ -0,0 +1,45 @@ +/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 + +/datum/config_entry/number/penis_min_inches_prefs + config_entry_value = 1 + min_val = 0 + +/datum/config_entry/number/penis_max_inches_prefs + config_entry_value = 20 + min_val = 0 + +/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. + +//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 + 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 + min_val = RESIZE_DEFAULT_SIZE + integer = FALSE + +//Penalties given to characters with a body size smaller than this value, +//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 + min_val = 0 + max_val = RESIZE_DEFAULT_SIZE + integer = FALSE + +//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 + min_val = 0 + integer = FALSE diff --git a/code/controllers/configuration/entries/game_options.dm b/code/controllers/configuration/entries/game_options.dm deleted file mode 100644 index 7558dc69c0..0000000000 --- a/code/controllers/configuration/entries/game_options.dm +++ /dev/null @@ -1,593 +0,0 @@ -/datum/config_entry/number_list/repeated_mode_adjust - -/datum/config_entry/keyed_list/probability - key_mode = KEY_MODE_TEXT - value_mode = VALUE_MODE_NUM - -/datum/config_entry/keyed_list/probability/ValidateListEntry(key_name) - return key_name in config.modes - -/datum/config_entry/keyed_list/chaos_level - key_mode = KEY_MODE_TEXT - value_mode = VALUE_MODE_NUM - -/datum/config_entry/keyed_list/chaos_level/ValidateListEntry(key_name) - return key_name in config.modes - -/datum/config_entry/keyed_list/max_pop - key_mode = KEY_MODE_TEXT - value_mode = VALUE_MODE_NUM - -/datum/config_entry/keyed_list/max_pop/ValidateListEntry(key_name) - return key_name in config.modes - -/datum/config_entry/keyed_list/min_pop - key_mode = KEY_MODE_TEXT - value_mode = VALUE_MODE_NUM - -/datum/config_entry/keyed_list/min_pop/ValidateListEntry(key_name, key_value) - return key_name in config.modes - -/datum/config_entry/keyed_list/continuous // which roundtypes continue if all antagonists die - key_mode = KEY_MODE_TEXT - value_mode = VALUE_MODE_FLAG - -/datum/config_entry/keyed_list/continuous/ValidateListEntry(key_name, key_value) - return key_name in config.modes - -/datum/config_entry/keyed_list/midround_antag // which roundtypes use the midround antagonist system - key_mode = KEY_MODE_TEXT - value_mode = VALUE_MODE_FLAG - -/datum/config_entry/keyed_list/midround_antag/ValidateListEntry(key_name, key_value) - return key_name in config.modes - -/datum/config_entry/keyed_list/force_antag_count - key_mode = KEY_MODE_TEXT - value_mode = VALUE_MODE_FLAG - -/datum/config_entry/keyed_list/force_antag_count/ValidateListEntry(key_name, key_value) - return key_name in config.modes - -/datum/config_entry/keyed_list/policy - key_mode = KEY_MODE_TEXT - value_mode = VALUE_MODE_TEXT - -/datum/config_entry/number/damage_multiplier - config_entry_value = 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. - min_val = 0 - -/datum/config_entry/flag/jobs_have_minimal_access //determines whether jobs use minimal access or expanded access. - -/datum/config_entry/flag/assistants_have_maint_access - -/datum/config_entry/flag/security_has_maint_access - -/datum/config_entry/flag/everyone_has_maint_access - -/datum/config_entry/flag/sec_start_brig //makes sec start in brig instead of dept sec posts - -/datum/config_entry/flag/force_random_names - -/datum/config_entry/flag/humans_need_surnames - -/datum/config_entry/flag/allow_ai // allow ai job - -/datum/config_entry/flag/allow_ai_multicam //whether the AI can use their multicam - -/datum/config_entry/flag/disable_human_mood - -/datum/config_entry/flag/disable_borg_flash_knockdown //Should borg flashes be capable of knocking humanoid entities down? - -/datum/config_entry/flag/weaken_secborg //Brings secborgs and k9s back in-line with the other borg modules - -/datum/config_entry/flag/disable_secborg // disallow secborg module to be chosen. - -/datum/config_entry/flag/disable_peaceborg - -/datum/config_entry/flag/economy //money money money money money money money money money money money money - -/datum/config_entry/number/minimum_secborg_alert //Minimum alert level for secborgs to be chosen. - config_entry_value = 3 - -/datum/config_entry/number/traitor_scaling_coeff //how much does the amount of players get divided by to determine traitors - config_entry_value = 6 - min_val = 1 - -/datum/config_entry/number/brother_scaling_coeff //how many players per brother team - config_entry_value = 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 - 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 - 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 - min_val = 1 - -/datum/config_entry/number/abductor_scaling_coeff //how many players per abductor team - config_entry_value = 15 - min_val = 1 - -/datum/config_entry/number/traitor_objectives_amount - config_entry_value = 2 - min_val = 0 - -/datum/config_entry/number/brother_objectives_amount - config_entry_value = 2 - min_val = 0 - -/datum/config_entry/flag/reactionary_explosions //If we use reactionary explosions, explosions that react to walls and doors - -/datum/config_entry/flag/protect_roles_from_antagonist //If security and such can be traitor/cult/other - -/datum/config_entry/flag/protect_assistant_from_antagonist //If assistants can be traitor/cult/other - -/datum/config_entry/flag/enforce_human_authority //If non-human species are barred from joining as a head of staff - -/datum/config_entry/flag/allow_latejoin_antagonists // If late-joining players can be traitor/changeling - -/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 - 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 - integer = FALSE - min_val = 0 - max_val = 1 - -/datum/config_entry/number/suicide_reenter_round_timer - config_entry_value = 30 - min_val = 0 - -/datum/config_entry/number/roundstart_suicide_time_limit - config_entry_value = 30 - min_val = 0 - -/datum/config_entry/number/shuttle_refuel_delay - config_entry_value = 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 - -/datum/config_entry/keyed_list/roundstart_races //races you can play as from the get go. - key_mode = KEY_MODE_TEXT - value_mode = VALUE_MODE_FLAG - -/datum/config_entry/flag/join_with_mutant_humans //players can pick mutant bodyparts for humans before joining the game - -/datum/config_entry/flag/no_summon_guns //No - -/datum/config_entry/flag/no_summon_magic //Fun - -/datum/config_entry/flag/no_summon_events //Allowed - -/datum/config_entry/flag/no_summon_traumas //! - -/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 - min_val = 30 - -/datum/config_entry/flag/arrivals_shuttle_require_undocked //Require the arrivals shuttle to be undocked before latejoiners can join - -/datum/config_entry/flag/arrivals_shuttle_require_safe_latejoin //Require the arrivals shuttle to be operational in order for latejoiners to join - -/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." - -/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." - -/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." - -/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." - -/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." - -/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." - -/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." - -/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." - -/datum/config_entry/flag/revival_pod_plants - -/datum/config_entry/flag/revival_cloning - -/datum/config_entry/number/revival_brain_life - config_entry_value = -1 - min_val = -1 - -/datum/config_entry/flag/ooc_during_round - -/datum/config_entry/flag/emojis - -/datum/config_entry/keyed_list/multiplicative_movespeed - key_mode = KEY_MODE_TYPE - value_mode = VALUE_MODE_NUM - abstract_type = /datum/config_entry/keyed_list/multiplicative_movespeed - -/datum/config_entry/keyed_list/multiplicative_movespeed/ValidateAndSet() - . = ..() - if(.) - update_config_movespeed_type_lookup(TRUE) - -/datum/config_entry/keyed_list/multiplicative_movespeed/vv_edit_var(var_name, var_value) - . = ..() - if(. && (var_name == NAMEOF(src, config_entry_value))) - update_config_movespeed_type_lookup(TRUE) - -/datum/config_entry/keyed_list/multiplicative_movespeed/normal - name = "multiplicative_movespeed" - config_entry_value = list( //DEFAULTS - /mob/living/simple_animal = 1, - /mob/living/silicon/pai = 1, - /mob/living/carbon/alien/humanoid/sentinel = 0.25, - /mob/living/carbon/alien/humanoid/drone = 0.5, - /mob/living/carbon/alien/humanoid/royal/praetorian = 1, - /mob/living/carbon/alien/humanoid/royal/queen = 3 - ) - -/datum/config_entry/keyed_list/multiplicative_movespeed/floating - name = "multiplicative_movespeed_floating" - config_entry_value = list( - /mob/living = 0, - /mob/living/carbon/alien/humanoid = 0, - /mob/living/carbon/alien/humanoid/royal/praetorian = 0, - /mob/living/carbon/alien/humanoid/royal/queen = 2 - ) - -/datum/config_entry/number/sprintless_stagger_slowdown - config_entry_value = 0 - -/datum/config_entry/number/melee_stagger_factor - config_entry_value = 1 - -/datum/config_entry/number/sprintless_off_balance_slowdown - config_entry_value = 0.85 - -/datum/config_entry/number/movedelay //Used for modifying movement speed for mobs. - abstract_type = /datum/config_entry/number/movedelay - integer = FALSE - -/datum/config_entry/number/movedelay/ValidateAndSet() - . = ..() - if(.) - update_mob_config_movespeeds() - -/datum/config_entry/number/movedelay/vv_edit_var(var_name, var_value) - . = ..() - if(. && (var_name == NAMEOF(src, config_entry_value))) - update_mob_config_movespeeds() - -/datum/config_entry/number/movedelay/run_delay - -/datum/config_entry/number/movedelay/run_delay/ValidateAndSet() - . = ..() - var/datum/movespeed_modifier/config_walk_run/M = get_cached_movespeed_modifier(/datum/movespeed_modifier/config_walk_run/run) - M.sync() - -/datum/config_entry/number/movedelay/walk_delay - -/datum/config_entry/number/movedelay/walk_delay/ValidateAndSet() - . = ..() - var/datum/movespeed_modifier/config_walk_run/M = get_cached_movespeed_modifier(/datum/movespeed_modifier/config_walk_run/walk) - M.sync() - -/datum/config_entry/flag/sprint_enabled - config_entry_value = TRUE - -/datum/config_entry/flag/sprint_enabled/ValidateAndSet(str_val) - . = ..() - for(var/datum/hud/human/H) - H.assert_move_intent_ui() - if(!config_entry_value) // disabled - for(var/mob/living/L in world) - L.disable_intentional_sprint_mode() - -/datum/config_entry/number/movedelay/sprint_speed_increase - config_entry_value = 1 - -/datum/config_entry/number/movedelay/sprint_max_tiles_increase - config_entry_value = 5 - -/datum/config_entry/number/movedelay/sprint_absolute_max_tiles - config_entry_value = 13 - -/datum/config_entry/number/movedelay/sprint_buffer_max - config_entry_value = 24 - -/datum/config_entry/number/movedelay/sprint_stamina_cost - config_entry_value = 1.4 - -/datum/config_entry/number/movedelay/sprint_buffer_regen_per_ds - config_entry_value = 0.4 - -/////////////////////////////////////////////////Outdated move delay -/datum/config_entry/number/outdated_movedelay - deprecated_by = /datum/config_entry/keyed_list/multiplicative_movespeed/normal - abstract_type = /datum/config_entry/number/outdated_movedelay - - var/movedelay_type - -/datum/config_entry/number/outdated_movedelay/DeprecationUpdate(value) - return "[movedelay_type] [value]" - -/datum/config_entry/number/outdated_movedelay/human_delay - movedelay_type = /mob/living/carbon/human -/datum/config_entry/number/outdated_movedelay/robot_delay - movedelay_type = /mob/living/silicon/robot -/datum/config_entry/number/outdated_movedelay/monkey_delay - movedelay_type = /mob/living/carbon/monkey -/datum/config_entry/number/outdated_movedelay/alien_delay - movedelay_type = /mob/living/carbon/alien -/datum/config_entry/number/outdated_movedelay/slime_delay - movedelay_type = /mob/living/simple_animal/slime -/datum/config_entry/number/outdated_movedelay/animal_delay - movedelay_type = /mob/living/simple_animal -///////////////////////////////////////////////// - -/datum/config_entry/flag/roundstart_away //Will random away mission be loaded. - -/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 - min_val = 0 - -/datum/config_entry/flag/ghost_interaction - -/datum/config_entry/flag/silent_ai -/datum/config_entry/flag/silent_borg - -/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 - min_val = 0 - max_val = 3 - -/datum/config_entry/number/silicon_max_law_amount - config_entry_value = 12 - min_val = 0 - -/datum/config_entry/keyed_list/random_laws - key_mode = KEY_MODE_TEXT - value_mode = VALUE_MODE_FLAG - -/datum/config_entry/keyed_list/law_weight - key_mode = KEY_MODE_TEXT - value_mode = VALUE_MODE_NUM - splitter = "," - -/datum/config_entry/number/overflow_cap - config_entry_value = -1 - min_val = -1 - -/datum/config_entry/string/overflow_job - config_entry_value = "Assistant" - -/datum/config_entry/flag/starlight -/datum/config_entry/flag/grey_assistants - -/datum/config_entry/number/lavaland_budget - config_entry_value = 60 - min_val = 0 - -/datum/config_entry/number/space_budget - config_entry_value = 16 - min_val = 0 - -/datum/config_entry/number/icemoon_budget - config_entry_value = 90 - integer = FALSE - min_val = 0 - -/datum/config_entry/number/station_space_budget - config_entry_value = 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 - min_val = 0 - integer = FALSE - -/datum/config_entry/number/events_min_players_mul - config_entry_value = 1 - min_val = 0 - integer = FALSE - -/datum/config_entry/number/mice_roundstart - config_entry_value = 10 - min_val = 0 - -/datum/config_entry/number/bombcap - config_entry_value = 14 - min_val = 4 - -/datum/config_entry/number/bombcap/ValidateAndSet(str_val) - . = ..() - if(.) - GLOB.MAX_EX_DEVESTATION_RANGE = round(config_entry_value / 4) - GLOB.MAX_EX_HEAVY_RANGE = round(config_entry_value / 2) - GLOB.MAX_EX_LIGHT_RANGE = config_entry_value - GLOB.MAX_EX_FLASH_RANGE = config_entry_value - GLOB.MAX_EX_FLAME_RANGE = config_entry_value - -/datum/config_entry/number/emergency_shuttle_autocall_threshold - min_val = 0 - max_val = 1 - integer = FALSE - -/datum/config_entry/flag/ic_printing - -/datum/config_entry/flag/roundstart_traits - -/datum/config_entry/flag/enable_night_shifts - -/datum/config_entry/number/night_shift_public_areas_only - config_entry_value = NIGHTSHIFT_AREA_PUBLIC - -/datum/config_entry/flag/nightshift_toggle_requires_auth - config_entry_value = FALSE - -/datum/config_entry/flag/nightshift_toggle_public_requires_auth - config_entry_value = TRUE - -/datum/config_entry/flag/randomize_shift_time - -/datum/config_entry/flag/shift_time_realtime - -/datum/config_entry/number/monkeycap - config_entry_value = 64 - min_val = 0 - -/datum/config_entry/number/ratcap - config_entry_value = 64 - min_val = 0 - -/datum/config_entry/flag/disable_stambuffer - -/datum/config_entry/keyed_list/box_random_engine - key_mode = KEY_MODE_TEXT - value_mode = VALUE_MODE_NUM - lowercase = FALSE - splitter = "," - -/datum/config_entry/flag/pai_custom_holoforms - -/datum/config_entry/number/marauder_delay_non_reebe - config_entry_value = 1800 - min_val = 0 - -/datum/config_entry/flag/allow_clockwork_marauder_on_station - config_entry_value = TRUE - -/datum/config_entry/flag/modetier_voting - -/datum/config_entry/flag/must_be_readied_to_vote_gamemode - -/datum/config_entry/number/dropped_modes - config_entry_value = 3 - -/datum/config_entry/flag/suicide_allowed - -/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 - -/datum/config_entry/number/penis_min_inches_prefs - config_entry_value = 1 - min_val = 0 - -/datum/config_entry/number/penis_max_inches_prefs - config_entry_value = 20 - min_val = 0 - -/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. - -//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 - 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 - min_val = RESIZE_DEFAULT_SIZE - integer = FALSE - -//Penalties given to characters with a body size smaller than this value, -//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 - min_val = 0 - max_val = RESIZE_DEFAULT_SIZE - integer = FALSE - -//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 - min_val = 0 - integer = FALSE - -//Allows players to set a hexadecimal color of their choice as skin tone, on top of the standard ones. -/datum/config_entry/flag/allow_custom_skintones - -///Initial loadout points -/datum/config_entry/number/initial_gear_points - config_entry_value = 10 - -/** - * Enables the FoV component, which hides objects and mobs behind the parent from their sight, unless they turn around, duh. - * Camera mobs, AIs, ghosts and some other are of course exempt from this. This also doesn't influence simplemob AI, for the best. - */ -/datum/config_entry/flag/use_field_of_vision - -//Shuttle size limiter -/datum/config_entry/number/max_shuttle_count - config_entry_value = 6 - -/datum/config_entry/number/max_shuttle_size - config_entry_value = 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 - 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 - min_val = 0 - integer = FALSE - -/// Amount of dirtyness tiles need to spawn dirt. -/datum/config_entry/number/turf_dirt_threshold - config_entry_value = 100 - min_val = 1 - integer = TRUE - -/// Alpha dirt starts at -/datum/config_entry/number/dirt_alpha_starting - config_entry_value = 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 - -/datum/config_entry/flag/weigh_by_recent_chaos - -/datum/config_entry/number/chaos_exponent - config_entry_value = 1 diff --git a/code/controllers/configuration/entries/gamemodes.dm b/code/controllers/configuration/entries/gamemodes.dm new file mode 100644 index 0000000000..6860422850 --- /dev/null +++ b/code/controllers/configuration/entries/gamemodes.dm @@ -0,0 +1,89 @@ +/datum/config_entry/number_list/repeated_mode_adjust + +/datum/config_entry/keyed_list/probability + key_mode = KEY_MODE_TEXT + value_mode = VALUE_MODE_NUM + +/datum/config_entry/keyed_list/probability/ValidateListEntry(key_name) + return key_name in config.modes + +/datum/config_entry/keyed_list/chaos_level + key_mode = KEY_MODE_TEXT + value_mode = VALUE_MODE_NUM + +/datum/config_entry/keyed_list/chaos_level/ValidateListEntry(key_name) + return key_name in config.modes + +/datum/config_entry/keyed_list/max_pop + key_mode = KEY_MODE_TEXT + value_mode = VALUE_MODE_NUM + +/datum/config_entry/keyed_list/max_pop/ValidateListEntry(key_name) + return key_name in config.modes + +/datum/config_entry/keyed_list/min_pop + key_mode = KEY_MODE_TEXT + value_mode = VALUE_MODE_NUM + +/datum/config_entry/keyed_list/min_pop/ValidateListEntry(key_name, key_value) + return key_name in config.modes + +/datum/config_entry/keyed_list/continuous // which roundtypes continue if all antagonists die + key_mode = KEY_MODE_TEXT + value_mode = VALUE_MODE_FLAG + +/datum/config_entry/keyed_list/continuous/ValidateListEntry(key_name, key_value) + return key_name in config.modes + +/datum/config_entry/keyed_list/midround_antag // which roundtypes use the midround antagonist system + key_mode = KEY_MODE_TEXT + value_mode = VALUE_MODE_FLAG + +/datum/config_entry/keyed_list/midround_antag/ValidateListEntry(key_name, key_value) + return key_name in config.modes + +/datum/config_entry/keyed_list/force_antag_count + key_mode = KEY_MODE_TEXT + value_mode = VALUE_MODE_FLAG + +/datum/config_entry/keyed_list/force_antag_count/ValidateListEntry(key_name, key_value) + 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 + min_val = 1 + +/datum/config_entry/number/brother_scaling_coeff //how many players per brother team + config_entry_value = 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 + 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 + 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 + min_val = 1 + +/datum/config_entry/number/abductor_scaling_coeff //how many players per abductor team + config_entry_value = 15 + min_val = 1 + +/datum/config_entry/number/traitor_objectives_amount + config_entry_value = 2 + min_val = 0 + +/datum/config_entry/number/brother_objectives_amount + config_entry_value = 2 + min_val = 0 + +/datum/config_entry/flag/protect_roles_from_antagonist //If security and such can be traitor/cult/other + +/datum/config_entry/flag/protect_assistant_from_antagonist //If assistants can be traitor/cult/other + +/datum/config_entry/flag/allow_latejoin_antagonists // If late-joining players can be traitor/changeling diff --git a/code/controllers/configuration/entries/general.dm b/code/controllers/configuration/entries/general.dm index 63da60d7b5..a967bd3ef1 100644 --- a/code/controllers/configuration/entries/general.dm +++ b/code/controllers/configuration/entries/general.dm @@ -1,21 +1,3 @@ -/datum/config_entry/flag/auto_profile // Automatically start profiler on server start - -/datum/config_entry/flag/autoadmin // if autoadmin is enabled - protection = CONFIG_ENTRY_LOCKED - -/datum/config_entry/string/autoadmin_rank // the rank for autoadmins - config_entry_value = "Game Master" - protection = CONFIG_ENTRY_LOCKED - -/datum/config_entry/string/servername // server name (the name of the game window) - -/datum/config_entry/string/servertagline - config_entry_value = "We forgot to set the server's tagline in config.txt" - -/datum/config_entry/string/serversqlname // short form server name used for the DB - -/datum/config_entry/string/stationname // station name (the name of the station in-game) - /datum/config_entry/number/lobby_countdown // In between round countdown. config_entry_value = 120 min_val = 0 @@ -24,164 +6,11 @@ config_entry_value = 25 min_val = 0 -/datum/config_entry/flag/hub // if the game appears on the hub or not - -/datum/config_entry/flag/allow_admin_ooccolor // Allows admins with relevant permissions to have their own ooc colour - -/datum/config_entry/flag/allow_vote_restart // allow votes to restart - -/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 - min_val = 0 - -/datum/config_entry/number/vote_period // length of voting period (deciseconds, default 1 minute) - config_entry_value = 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 - 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 - 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 - min_val = -1 - -/datum/config_entry/flag/default_no_vote // vote does not default to nochange/norestart - -/datum/config_entry/flag/no_dead_vote // dead people can't vote /datum/config_entry/flag/allow_metadata // Metadata is supported. -/datum/config_entry/flag/popup_admin_pm // adminPMs to non-admins show in a pop-up 'reply' window when set - -/datum/config_entry/number/fps - config_entry_value = 20 - min_val = 1 - max_val = 100 //byond will start crapping out at 50, so this is just ridic - var/sync_validate = FALSE - -/datum/config_entry/number/fps/ValidateAndSet(str_val) - . = ..() - if(.) - sync_validate = TRUE - var/datum/config_entry/number/ticklag/TL = config.entries_by_type[/datum/config_entry/number/ticklag] - if(!TL.sync_validate) - TL.ValidateAndSet(10 / config_entry_value) - sync_validate = FALSE - -/datum/config_entry/number/ticklag - integer = FALSE - var/sync_validate = FALSE - -/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) - ..() - -/datum/config_entry/number/ticklag/ValidateAndSet(str_val) - . = text2num(str_val) > 0 && ..() - if(.) - sync_validate = TRUE - var/datum/config_entry/number/fps/FPS = config.entries_by_type[/datum/config_entry/number/fps] - if(!FPS.sync_validate) - FPS.ValidateAndSet(10 / config_entry_value) - sync_validate = FALSE - /datum/config_entry/flag/allow_holidays -/datum/config_entry/number/tick_limit_mc_init //SSinitialization throttling - config_entry_value = TICK_LIMIT_MC_INIT_DEFAULT - min_val = 0 //oranges warned us - integer = FALSE - -/datum/config_entry/flag/admin_legacy_system //Defines whether the server uses the legacy admin system with admins.txt or the SQL system - protection = CONFIG_ENTRY_LOCKED - -/datum/config_entry/flag/protect_legacy_admins //Stops any admins loaded by the legacy system from having their rank edited by the permissions panel - protection = CONFIG_ENTRY_LOCKED - -/datum/config_entry/flag/protect_legacy_ranks //Stops any ranks loaded by the legacy system from having their flags edited by the permissions panel - protection = CONFIG_ENTRY_LOCKED - -/datum/config_entry/flag/enable_localhost_rank //Gives the !localhost! rank to any client connecting from 127.0.0.1 or ::1 - protection = CONFIG_ENTRY_LOCKED - -/datum/config_entry/flag/load_legacy_ranks_only //Loads admin ranks only from legacy admin_ranks.txt, while enabled ranks are mirrored to the database - protection = CONFIG_ENTRY_LOCKED - -/datum/config_entry/flag/mentors_mobname_only - -/datum/config_entry/flag/mentor_legacy_system //Defines whether the server uses the legacy mentor system with mentors.txt or the SQL system - protection = CONFIG_ENTRY_LOCKED - -/datum/config_entry/string/hostedby - -/datum/config_entry/flag/guest_jobban - -/datum/config_entry/flag/usewhitelist - -/datum/config_entry/flag/ban_legacy_system //Defines whether the server uses the legacy banning system with the files in /data or the SQL system. - protection = CONFIG_ENTRY_LOCKED - -/datum/config_entry/flag/use_age_restriction_for_jobs //Do jobs use account age restrictions? --requires database - -/datum/config_entry/flag/use_account_age_for_jobs //Uses the time they made the account for the job restriction stuff. New player joining alerts should be unaffected. - -/datum/config_entry/flag/use_exp_tracking - -/datum/config_entry/flag/use_exp_restrictions_heads - -/datum/config_entry/number/use_exp_restrictions_heads_hours - config_entry_value = 0 - min_val = 0 - -/datum/config_entry/flag/use_exp_restrictions_heads_department - -/datum/config_entry/flag/use_exp_restrictions_other - -/datum/config_entry/flag/use_exp_restrictions_admin_bypass - -/datum/config_entry/string/server - -/datum/config_entry/string/banappeals - -/datum/config_entry/string/wikiurl - config_entry_value = "https://katlin.dog/citadel-wiki" - -/datum/config_entry/string/wikiurltg - config_entry_value = "http://www.tgstation13.org/wiki" - -/datum/config_entry/string/forumurl - config_entry_value = "http://tgstation13.org/phpBB/index.php" - -/datum/config_entry/string/rulesurl - config_entry_value = "http://www.tgstation13.org/wiki/Rules" - -/datum/config_entry/string/githuburl - config_entry_value = "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 - min_val = 0 - -/datum/config_entry/flag/guest_ban - /datum/config_entry/number/id_console_jobslot_delay config_entry_value = 30 min_val = 0 @@ -208,181 +37,8 @@ /datum/config_entry/flag/load_jobs_from_txt -/datum/config_entry/flag/forbid_singulo_possession - -/datum/config_entry/flag/automute_on //enables automuting/spam prevention - -/datum/config_entry/string/panic_server_name - -/datum/config_entry/string/panic_server_name/ValidateAndSet(str_val) - return str_val != "\[Put the name here\]" && ..() - -/datum/config_entry/string/panic_server_address //Reconnect a player this linked server if this server isn't accepting new players - -/datum/config_entry/string/panic_server_address/ValidateAndSet(str_val) - return str_val != "byond://address:port" && ..() - -/datum/config_entry/string/invoke_youtubedl - protection = CONFIG_ENTRY_LOCKED | CONFIG_ENTRY_HIDDEN - /datum/config_entry/flag/show_irc_name -/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 - min_val = 0 - integer = FALSE - -/datum/config_entry/number/note_stale_days - config_entry_value = null - min_val = 0 - integer = FALSE - -/datum/config_entry/flag/maprotation - -/datum/config_entry/flag/tgstyle_maprotation - -/datum/config_entry/string/map_vote_type - config_entry_value = APPROVAL_VOTING - -/datum/config_entry/number/maprotatechancedelta - config_entry_value = 0.75 - min_val = 0 - max_val = 1 - integer = FALSE - -/datum/config_entry/number/soft_popcap - config_entry_value = null - min_val = 0 - -/datum/config_entry/number/hard_popcap - config_entry_value = null - min_val = 0 - -/datum/config_entry/number/extreme_popcap - config_entry_value = 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." - -/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." - -/datum/config_entry/string/extreme_popcap_message - config_entry_value = "The server is currently serving a high number of users, find alternative servers." - -/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 - -/datum/config_entry/string/panic_bunker_message - config_entry_value = "Sorry but the server is currently not accepting connections from never before seen players." - -/datum/config_entry/number/notify_new_player_age // how long do we notify admins of a new player - min_val = -1 - -/datum/config_entry/number/notify_new_player_account_age // how long do we notify admins of a new byond account - 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 - -/datum/config_entry/flag/irc_first_connection_alert // do we notify the irc channel when somebody is connecting for the first time? - -/datum/config_entry/flag/check_randomizer - -/datum/config_entry/string/ipintel_email - -/datum/config_entry/string/ipintel_email/ValidateAndSet(str_val) - return str_val != "ch@nge.me" && ..() - -/datum/config_entry/number/ipintel_rating_bad - config_entry_value = 1 - integer = FALSE - min_val = 0 - max_val = 1 - -/datum/config_entry/number/ipintel_save_good - config_entry_value = 12 - min_val = 0 - -/datum/config_entry/number/ipintel_save_bad - config_entry_value = 1 - min_val = 0 - -/datum/config_entry/string/ipintel_domain - config_entry_value = "check.getipintel.net" - -/datum/config_entry/flag/aggressive_changelog - -/datum/config_entry/flag/autoconvert_notes //if all connecting player's notes should attempt to be converted to the database - protection = CONFIG_ENTRY_LOCKED - -/datum/config_entry/flag/allow_webclient - -/datum/config_entry/flag/webclient_only_byond_members - -/datum/config_entry/flag/announce_admin_logout - -/datum/config_entry/flag/announce_admin_login - -/datum/config_entry/flag/allow_map_voting - -/datum/config_entry/number/client_warn_version - config_entry_value = null - min_val = 500 - -/datum/config_entry/number/client_warn_version - config_entry_value = 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." - -/datum/config_entry/flag/client_warn_popup - -/datum/config_entry/number/client_error_version - config_entry_value = 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." - -/datum/config_entry/number/client_error_build - config_entry_value = null - min_val = 0 - -/datum/config_entry/number/minute_topic_limit - config_entry_value = null - min_val = 0 - -/datum/config_entry/number/second_topic_limit - config_entry_value = null - min_val = 0 - -/datum/config_entry/number/minute_click_limit - config_entry_value = 400 - min_val = 0 - -/datum/config_entry/number/second_click_limit - config_entry_value = 15 - min_val = 0 - -/datum/config_entry/number/error_cooldown // The "cooldown" time for each occurrence of a unique error - config_entry_value = 600 - min_val = 0 - -/datum/config_entry/number/error_limit // How many occurrences before the next will silence them - config_entry_value = 50 - -/datum/config_entry/number/error_silence_time // How long a unique error will be silenced for - config_entry_value = 6000 - -/datum/config_entry/number/error_msg_delay // How long to wait between messaging admins about occurrences of a unique error - config_entry_value = 50 - /datum/config_entry/flag/irc_announce_new_game deprecated_by = /datum/config_entry/string/chat_announce_new_game @@ -390,54 +46,300 @@ return "" //default broadcast /datum/config_entry/string/chat_announce_new_game + config_entry_value = null -/datum/config_entry/flag/debug_admin_hrefs - -/datum/config_entry/number/mc_tick_rate/base_mc_tick_rate - integer = FALSE - config_entry_value = 1 - -/datum/config_entry/number/mc_tick_rate/high_pop_mc_tick_rate - integer = FALSE - config_entry_value = 1.1 - -/datum/config_entry/number/mc_tick_rate/high_pop_mc_mode_amount - config_entry_value = 65 - -/datum/config_entry/number/mc_tick_rate/disable_high_pop_mc_mode_amount - config_entry_value = 60 - -/datum/config_entry/number/mc_tick_rate - abstract_type = /datum/config_entry/number/mc_tick_rate - -/datum/config_entry/number/mc_tick_rate/ValidateAndSet(str_val) - . = ..() - if (.) - Master.UpdateTickRate() - -/datum/config_entry/flag/resume_after_initializations - -/datum/config_entry/flag/resume_after_initializations/ValidateAndSet(str_val) - . = ..() - if(. && Master.current_runlevel) - world.sleep_offline = !config_entry_value - -/datum/config_entry/number/rounds_until_hard_restart - config_entry_value = -1 - min_val = 0 - /datum/config_entry/string/default_view config_entry_value = "15x15" /datum/config_entry/string/default_view_square config_entry_value = "15x15" -/datum/config_entry/number/max_bunker_days - config_entry_value = 7 - min_val = 1 /datum/config_entry/flag/minimaps_enabled config_entry_value = TRUE -/datum/config_entry/string/centcom_ban_db // URL for the CentCom Galactic Ban DB API + + +/datum/config_entry/number/damage_multiplier + config_entry_value = 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. + min_val = 0 + +/datum/config_entry/flag/jobs_have_minimal_access //determines whether jobs use minimal access or expanded access. + +/datum/config_entry/flag/assistants_have_maint_access + +/datum/config_entry/flag/security_has_maint_access + +/datum/config_entry/flag/everyone_has_maint_access + +/datum/config_entry/flag/sec_start_brig //makes sec start in brig instead of dept sec posts + +/datum/config_entry/flag/force_random_names + +/datum/config_entry/flag/humans_need_surnames + +/datum/config_entry/flag/allow_ai // allow ai job + +/datum/config_entry/flag/allow_ai_multicam //whether the AI can use their multicam + +/datum/config_entry/flag/disable_human_mood + +/datum/config_entry/flag/disable_borg_flash_knockdown //Should borg flashes be capable of knocking humanoid entities down? + +/datum/config_entry/flag/weaken_secborg //Brings secborgs and k9s back in-line with the other borg modules + +/datum/config_entry/flag/disable_secborg // disallow secborg module to be chosen. + +/datum/config_entry/flag/disable_peaceborg + +/datum/config_entry/flag/economy //money money money money money money money money money money money money + +/datum/config_entry/flag/reactionary_explosions //If we use reactionary explosions, explosions that react to walls and doors + +/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 + 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 + integer = FALSE + min_val = 0 + max_val = 1 + +/datum/config_entry/number/suicide_reenter_round_timer + config_entry_value = 30 + min_val = 0 + +/datum/config_entry/number/roundstart_suicide_time_limit + config_entry_value = 30 + min_val = 0 + +/datum/config_entry/number/shuttle_refuel_delay + config_entry_value = 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 + +/datum/config_entry/keyed_list/roundstart_races //races you can play as from the get go. + key_mode = KEY_MODE_TEXT + value_mode = VALUE_MODE_FLAG + +/datum/config_entry/flag/join_with_mutant_humans //players can pick mutant bodyparts for humans before joining the game + +/datum/config_entry/flag/no_summon_guns //No + +/datum/config_entry/flag/no_summon_magic //Fun + +/datum/config_entry/flag/no_summon_events //Allowed + +/datum/config_entry/flag/no_summon_traumas //! + +/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 + min_val = 30 + +/datum/config_entry/flag/arrivals_shuttle_require_undocked //Require the arrivals shuttle to be undocked before latejoiners can join + +/datum/config_entry/flag/arrivals_shuttle_require_safe_latejoin //Require the arrivals shuttle to be operational in order for latejoiners to join + + +/datum/config_entry/flag/revival_pod_plants + +/datum/config_entry/flag/revival_cloning + +/datum/config_entry/number/revival_brain_life + config_entry_value = -1 + min_val = -1 + +/datum/config_entry/flag/ooc_during_round + +/datum/config_entry/flag/emojis + +/datum/config_entry/flag/roundstart_away //Will random away mission be loaded. + +/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 + min_val = 0 + +/datum/config_entry/flag/ghost_interaction + +/datum/config_entry/flag/silent_ai +/datum/config_entry/flag/silent_borg + +/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 + min_val = 0 + max_val = 3 + +/datum/config_entry/number/silicon_max_law_amount + config_entry_value = 12 + min_val = 0 + +/datum/config_entry/keyed_list/random_laws + key_mode = KEY_MODE_TEXT + value_mode = VALUE_MODE_FLAG + +/datum/config_entry/keyed_list/law_weight + key_mode = KEY_MODE_TEXT + value_mode = VALUE_MODE_NUM + splitter = "," + +/datum/config_entry/number/overflow_cap + config_entry_value = -1 + min_val = -1 + +/datum/config_entry/string/overflow_job + config_entry_value = "Assistant" + +/datum/config_entry/flag/starlight +/datum/config_entry/flag/grey_assistants + +/datum/config_entry/number/lavaland_budget + config_entry_value = 60 + min_val = 0 + +/datum/config_entry/number/space_budget + config_entry_value = 16 + min_val = 0 + +/datum/config_entry/number/icemoon_budget + config_entry_value = 90 + integer = FALSE + min_val = 0 + +/datum/config_entry/number/station_space_budget + config_entry_value = 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 + min_val = 0 + integer = FALSE + +/datum/config_entry/number/events_min_players_mul + config_entry_value = 1 + min_val = 0 + integer = FALSE + +/datum/config_entry/number/mice_roundstart + config_entry_value = 10 + min_val = 0 + +/datum/config_entry/number/bombcap + config_entry_value = 14 + min_val = 4 + +/datum/config_entry/number/bombcap/ValidateAndSet(str_val) + . = ..() + if(.) + GLOB.MAX_EX_DEVESTATION_RANGE = round(config_entry_value / 4) + GLOB.MAX_EX_HEAVY_RANGE = round(config_entry_value / 2) + GLOB.MAX_EX_LIGHT_RANGE = config_entry_value + GLOB.MAX_EX_FLASH_RANGE = config_entry_value + GLOB.MAX_EX_FLAME_RANGE = config_entry_value + +/datum/config_entry/number/emergency_shuttle_autocall_threshold + min_val = 0 + max_val = 1 + integer = FALSE + +/datum/config_entry/flag/ic_printing + +/datum/config_entry/flag/roundstart_traits + +/datum/config_entry/flag/enable_night_shifts + +/datum/config_entry/number/night_shift_public_areas_only + config_entry_value = NIGHTSHIFT_AREA_PUBLIC + +/datum/config_entry/flag/nightshift_toggle_requires_auth + config_entry_value = FALSE + +/datum/config_entry/flag/nightshift_toggle_public_requires_auth + config_entry_value = TRUE + +/datum/config_entry/flag/randomize_shift_time + +/datum/config_entry/flag/shift_time_realtime + +/datum/config_entry/number/monkeycap + config_entry_value = 64 + min_val = 0 + +/datum/config_entry/number/ratcap + config_entry_value = 64 + min_val = 0 + +/datum/config_entry/keyed_list/box_random_engine + key_mode = KEY_MODE_TEXT + value_mode = VALUE_MODE_NUM + lowercase = FALSE + splitter = "," + +/datum/config_entry/flag/pai_custom_holoforms + +/datum/config_entry/number/marauder_delay_non_reebe + config_entry_value = 1800 + min_val = 0 + +/datum/config_entry/flag/allow_clockwork_marauder_on_station + config_entry_value = TRUE + +/datum/config_entry/number/dropped_modes + config_entry_value = 3 + +/datum/config_entry/flag/suicide_allowed + + +//Allows players to set a hexadecimal color of their choice as skin tone, on top of the standard ones. +/datum/config_entry/flag/allow_custom_skintones + +///Initial loadout points +/datum/config_entry/number/initial_gear_points + config_entry_value = 10 + +/** + * Enables the FoV component, which hides objects and mobs behind the parent from their sight, unless they turn around, duh. + * Camera mobs, AIs, ghosts and some other are of course exempt from this. This also doesn't influence simplemob AI, for the best. + */ +/datum/config_entry/flag/use_field_of_vision + +//Shuttle size limiter +/datum/config_entry/number/max_shuttle_count + config_entry_value = 6 + +/datum/config_entry/number/max_shuttle_size + config_entry_value = 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 + 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 + min_val = 0 + integer = FALSE + + + +/datum/config_entry/flag/weigh_by_recent_chaos + +/datum/config_entry/number/chaos_exponent + config_entry_value = 1 diff --git a/code/controllers/configuration/entries/jexp.dm b/code/controllers/configuration/entries/jexp.dm new file mode 100644 index 0000000000..3d9754b4a6 --- /dev/null +++ b/code/controllers/configuration/entries/jexp.dm @@ -0,0 +1,17 @@ +/datum/config_entry/flag/use_age_restriction_for_jobs //Do jobs use account age restrictions? --requires database + +/datum/config_entry/flag/use_account_age_for_jobs //Uses the time they made the account for the job restriction stuff. New player joining alerts should be unaffected. + +/datum/config_entry/flag/use_exp_tracking + +/datum/config_entry/flag/use_exp_restrictions_heads + +/datum/config_entry/number/use_exp_restrictions_heads_hours + config_entry_value = 0 + min_val = 0 + +/datum/config_entry/flag/use_exp_restrictions_heads_department + +/datum/config_entry/flag/use_exp_restrictions_other + +/datum/config_entry/flag/use_exp_restrictions_admin_bypass diff --git a/code/controllers/configuration/entries/logging.dm b/code/controllers/configuration/entries/logging.dm index 81cd54cbb0..25ca145939 100644 --- a/code/controllers/configuration/entries/logging.dm +++ b/code/controllers/configuration/entries/logging.dm @@ -69,3 +69,16 @@ /// forces log_href for tgui /datum/config_entry/flag/emergency_tgui_logging config_entry_value = FALSE + +/datum/config_entry/number/error_cooldown // The "cooldown" time for each occurrence of a unique error + config_entry_value = 600 + min_val = 0 + +/datum/config_entry/number/error_limit // How many occurrences before the next will silence them + config_entry_value = 50 + +/datum/config_entry/number/error_silence_time // How long a unique error will be silenced for + config_entry_value = 6000 + +/datum/config_entry/number/error_msg_delay // How long to wait between messaging admins about occurrences of a unique error + config_entry_value = 50 diff --git a/code/controllers/configuration/entries/movespeed.dm b/code/controllers/configuration/entries/movespeed.dm new file mode 100644 index 0000000000..b1c3818cd3 --- /dev/null +++ b/code/controllers/configuration/entries/movespeed.dm @@ -0,0 +1,124 @@ +/datum/config_entry/keyed_list/multiplicative_movespeed + key_mode = KEY_MODE_TYPE + value_mode = VALUE_MODE_NUM + abstract_type = /datum/config_entry/keyed_list/multiplicative_movespeed + +/datum/config_entry/keyed_list/multiplicative_movespeed/ValidateAndSet() + . = ..() + if(.) + update_config_movespeed_type_lookup(TRUE) + +/datum/config_entry/keyed_list/multiplicative_movespeed/vv_edit_var(var_name, var_value) + . = ..() + if(. && (var_name == NAMEOF(src, config_entry_value))) + update_config_movespeed_type_lookup(TRUE) + +/datum/config_entry/keyed_list/multiplicative_movespeed/normal + name = "multiplicative_movespeed" + config_entry_value = list( //DEFAULTS + /mob/living/simple_animal = 1, + /mob/living/silicon/pai = 1, + /mob/living/carbon/alien/humanoid/sentinel = 0.25, + /mob/living/carbon/alien/humanoid/drone = 0.5, + /mob/living/carbon/alien/humanoid/royal/praetorian = 1, + /mob/living/carbon/alien/humanoid/royal/queen = 3 + ) + +/datum/config_entry/keyed_list/multiplicative_movespeed/floating + name = "multiplicative_movespeed_floating" + config_entry_value = list( + /mob/living = 0, + /mob/living/carbon/alien/humanoid = 0, + /mob/living/carbon/alien/humanoid/royal/praetorian = 0, + /mob/living/carbon/alien/humanoid/royal/queen = 2 + ) + +/datum/config_entry/number/movedelay //Used for modifying movement speed for mobs. + abstract_type = /datum/config_entry/number/movedelay + integer = FALSE + +/datum/config_entry/number/movedelay/ValidateAndSet() + . = ..() + if(.) + update_mob_config_movespeeds() + +/datum/config_entry/number/movedelay/vv_edit_var(var_name, var_value) + . = ..() + if(. && (var_name == NAMEOF(src, config_entry_value))) + update_mob_config_movespeeds() + +/datum/config_entry/number/movedelay/run_delay + +/datum/config_entry/number/movedelay/run_delay/ValidateAndSet() + . = ..() + var/datum/movespeed_modifier/config_walk_run/M = get_cached_movespeed_modifier(/datum/movespeed_modifier/config_walk_run/run) + M.sync() + +/datum/config_entry/number/movedelay/walk_delay + +/datum/config_entry/number/movedelay/walk_delay/ValidateAndSet() + . = ..() + var/datum/movespeed_modifier/config_walk_run/M = get_cached_movespeed_modifier(/datum/movespeed_modifier/config_walk_run/walk) + M.sync() + +/datum/config_entry/flag/sprint_enabled + config_entry_value = TRUE + +/datum/config_entry/flag/sprint_enabled/ValidateAndSet(str_val) + . = ..() + for(var/datum/hud/human/H) + H.assert_move_intent_ui() + if(!config_entry_value) // disabled + for(var/mob/living/L in world) + L.disable_intentional_sprint_mode() + +/datum/config_entry/number/sprintless_stagger_slowdown + config_entry_value = 0 + +/datum/config_entry/number/sprintless_off_balance_slowdown + config_entry_value = 0.85 + +/datum/config_entry/number/melee_stagger_factor + config_entry_value = 1 + +/datum/config_entry/number/movedelay/sprint_speed_increase + config_entry_value = 1 + +/datum/config_entry/number/movedelay/sprint_max_tiles_increase + config_entry_value = 5 + +/datum/config_entry/number/movedelay/sprint_absolute_max_tiles + config_entry_value = 13 + +/datum/config_entry/number/movedelay/sprint_buffer_max + config_entry_value = 24 + +/datum/config_entry/number/movedelay/sprint_stamina_cost + config_entry_value = 1.4 + +/datum/config_entry/number/movedelay/sprint_buffer_regen_per_ds + config_entry_value = 0.4 + +/////////////////////////////////////////////////Outdated move delay +/datum/config_entry/number/outdated_movedelay + deprecated_by = /datum/config_entry/keyed_list/multiplicative_movespeed/normal + abstract_type = /datum/config_entry/number/outdated_movedelay + + var/movedelay_type + +/datum/config_entry/number/outdated_movedelay/DeprecationUpdate(value) + return "[movedelay_type] [value]" + +/datum/config_entry/number/outdated_movedelay/human_delay + movedelay_type = /mob/living/carbon/human +/datum/config_entry/number/outdated_movedelay/robot_delay + movedelay_type = /mob/living/silicon/robot +/datum/config_entry/number/outdated_movedelay/monkey_delay + movedelay_type = /mob/living/carbon/monkey +/datum/config_entry/number/outdated_movedelay/alien_delay + movedelay_type = /mob/living/carbon/alien +/datum/config_entry/number/outdated_movedelay/slime_delay + movedelay_type = /mob/living/simple_animal/slime +/datum/config_entry/number/outdated_movedelay/animal_delay + movedelay_type = /mob/living/simple_animal +///////////////////////////////////////////////// diff --git a/code/controllers/configuration/entries/policy.dm b/code/controllers/configuration/entries/policy.dm index de611e1813..ea8973a4ce 100644 --- a/code/controllers/configuration/entries/policy.dm +++ b/code/controllers/configuration/entries/policy.dm @@ -3,9 +3,9 @@ config_entry_value = 300 integer = TRUE -/datum/config_entry/keyed_list/policyconfig +/datum/config_entry/keyed_list/policy key_mode = KEY_MODE_TEXT value_mode = VALUE_MODE_TEXT -/datum/config_entry/keyed_list/policyconfig/preprocess_key(key) +/datum/config_entry/keyed_list/policy/preprocess_key(key) return uppertext(..()) diff --git a/code/controllers/configuration/entries/fail2topic.dm b/code/controllers/configuration/entries/security.dm similarity index 62% rename from code/controllers/configuration/entries/fail2topic.dm rename to code/controllers/configuration/entries/security.dm index 3187997c39..3a49c97d70 100644 --- a/code/controllers/configuration/entries/fail2topic.dm +++ b/code/controllers/configuration/entries/security.dm @@ -16,3 +16,19 @@ /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 + min_val = 0 + +/datum/config_entry/number/second_topic_limit + config_entry_value = null + min_val = 0 + +/datum/config_entry/number/minute_click_limit + config_entry_value = 400 + min_val = 0 + +/datum/config_entry/number/second_click_limit + config_entry_value = 15 + min_val = 0 diff --git a/code/controllers/configuration/entries/server.dm b/code/controllers/configuration/entries/server.dm new file mode 100644 index 0000000000..1acf8a11ca --- /dev/null +++ b/code/controllers/configuration/entries/server.dm @@ -0,0 +1,90 @@ +/datum/config_entry/flag/auto_profile // Automatically start profiler on server start + +/datum/config_entry/string/servername // server name (the name of the game window) + +/datum/config_entry/string/servertagline + config_entry_value = "We forgot to set the server's tagline in config.txt" + +/datum/config_entry/string/serversqlname // short form server name used for the DB + +/datum/config_entry/string/stationname // station name (the name of the station in-game) + +/datum/config_entry/number/fps + config_entry_value = 20 + min_val = 1 + max_val = 100 //byond will start crapping out at 50, so this is just ridic + var/sync_validate = FALSE + +/datum/config_entry/number/fps/ValidateAndSet(str_val) + . = ..() + if(.) + sync_validate = TRUE + var/datum/config_entry/number/ticklag/TL = config.entries_by_type[/datum/config_entry/number/ticklag] + if(!TL.sync_validate) + TL.ValidateAndSet(10 / config_entry_value) + sync_validate = FALSE + +/datum/config_entry/number/ticklag + integer = FALSE + var/sync_validate = FALSE + +/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) + ..() + +/datum/config_entry/number/ticklag/ValidateAndSet(str_val) + . = text2num(str_val) > 0 && ..() + if(.) + sync_validate = TRUE + var/datum/config_entry/number/fps/FPS = config.entries_by_type[/datum/config_entry/number/fps] + if(!FPS.sync_validate) + FPS.ValidateAndSet(10 / config_entry_value) + sync_validate = FALSE + +/datum/config_entry/number/tick_limit_mc_init //SSinitialization throttling + config_entry_value = TICK_LIMIT_MC_INIT_DEFAULT + min_val = 0 //oranges warned us + integer = FALSE + +/datum/config_entry/flag/usewhitelist + +/datum/config_entry/string/hostedby + +/datum/config_entry/flag/hub // if the game appears on the hub or not + +/datum/config_entry/string/invoke_youtubedl + protection = CONFIG_ENTRY_LOCKED | CONFIG_ENTRY_HIDDEN + +/datum/config_entry/number/mc_tick_rate/base_mc_tick_rate + integer = FALSE + config_entry_value = 1 + +/datum/config_entry/number/mc_tick_rate/high_pop_mc_tick_rate + integer = FALSE + config_entry_value = 1.1 + +/datum/config_entry/number/mc_tick_rate/high_pop_mc_mode_amount + config_entry_value = 65 + +/datum/config_entry/number/mc_tick_rate/disable_high_pop_mc_mode_amount + config_entry_value = 60 + +/datum/config_entry/number/mc_tick_rate + abstract_type = /datum/config_entry/number/mc_tick_rate + +/datum/config_entry/number/mc_tick_rate/ValidateAndSet(str_val) + . = ..() + if (.) + Master.UpdateTickRate() + +/datum/config_entry/flag/resume_after_initializations + +/datum/config_entry/flag/resume_after_initializations/ValidateAndSet(str_val) + . = ..() + if(. && Master.current_runlevel) + world.sleep_offline = !config_entry_value + +/datum/config_entry/number/rounds_until_hard_restart + config_entry_value = -1 + min_val = 0 diff --git a/code/controllers/configuration/entries/stamina_combat.dm b/code/controllers/configuration/entries/stamina_combat.dm index 5c2c9d7ec5..681b903286 100644 --- a/code/controllers/configuration/entries/stamina_combat.dm +++ b/code/controllers/configuration/entries/stamina_combat.dm @@ -29,3 +29,5 @@ /// 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 + +/datum/config_entry/flag/disable_stambuffer diff --git a/code/controllers/configuration/entries/urls.dm b/code/controllers/configuration/entries/urls.dm new file mode 100644 index 0000000000..fe82574da0 --- /dev/null +++ b/code/controllers/configuration/entries/urls.dm @@ -0,0 +1,26 @@ +/datum/config_entry/string/server + +/datum/config_entry/string/banappeals + +/datum/config_entry/string/wikiurl + config_entry_value = "https://katlin.dog/citadel-wiki" + +/datum/config_entry/string/wikiurltg + config_entry_value = "http://www.tgstation13.org/wiki" + +/datum/config_entry/string/forumurl + config_entry_value = "http://tgstation13.org/phpBB/index.php" + +/datum/config_entry/string/rulesurl + config_entry_value = "http://www.tgstation13.org/wiki/Rules" + +/datum/config_entry/string/githuburl + config_entry_value = "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 + min_val = 0 diff --git a/code/controllers/configuration/entries/vote.dm b/code/controllers/configuration/entries/vote.dm new file mode 100644 index 0000000000..f42f0ac28a --- /dev/null +++ b/code/controllers/configuration/entries/vote.dm @@ -0,0 +1,52 @@ +/datum/config_entry/flag/allow_vote_restart // allow votes to restart + +/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 + min_val = 0 + +/datum/config_entry/number/vote_period // length of voting period (deciseconds, default 1 minute) + config_entry_value = 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 + 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 + 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 + min_val = -1 + +/datum/config_entry/flag/default_no_vote // vote does not default to nochange/norestart + +/datum/config_entry/flag/no_dead_vote // dead people can't vote + +/datum/config_entry/flag/maprotation + +/datum/config_entry/flag/tgstyle_maprotation + +/datum/config_entry/string/map_vote_type + config_entry_value = APPROVAL_VOTING + +/datum/config_entry/number/maprotatechancedelta + config_entry_value = 0.75 + min_val = 0 + max_val = 1 + integer = FALSE + +/datum/config_entry/flag/allow_map_voting + +/datum/config_entry/flag/modetier_voting + +/datum/config_entry/flag/must_be_readied_to_vote_gamemode diff --git a/code/modules/reagents/chemistry/reagents/drink_reagents.dm b/code/modules/reagents/chemistry/reagents/drink_reagents.dm index 1f47de797a..5059376954 100644 --- a/code/modules/reagents/chemistry/reagents/drink_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drink_reagents.dm @@ -505,11 +505,11 @@ value = REAGENT_VALUE_COMMON /datum/reagent/consumable/nuka_cola/on_mob_metabolize(mob/living/carbon/M) - M.add_movespeed_modifier(/datum/movespeed_modifier/reagent/methamphetamine) + M.add_movespeed_modifier(/datum/movespeed_modifier/reagent/nuka_cola) return ..() /datum/reagent/consumable/nuka_cola/on_mob_end_metabolize(mob/living/carbon/M) - M.remove_movespeed_modifier(/datum/movespeed_modifier/reagent/methamphetamine) + M.remove_movespeed_modifier(/datum/movespeed_modifier/reagent/nuka_cola) return ..() /datum/reagent/consumable/nuka_cola/on_mob_life(mob/living/carbon/M) diff --git a/config/entries/admin.txt b/config/entries/admin.txt new file mode 100644 index 0000000000..e69de29bb2 diff --git a/config/entries/alert.txt b/config/entries/alert.txt new file mode 100644 index 0000000000..e69de29bb2 diff --git a/config/entries/connections.txt b/config/entries/connections.txt new file mode 100644 index 0000000000..e69de29bb2 diff --git a/config/entries/debris.txt b/config/entries/debris.txt new file mode 100644 index 0000000000..e69de29bb2 diff --git a/config/entries/fetish_content.txt b/config/entries/fetish_content.txt new file mode 100644 index 0000000000..e69de29bb2 diff --git a/config/entries/gamemodes.txt b/config/entries/gamemodes.txt new file mode 100644 index 0000000000..e69de29bb2 diff --git a/config/entries/jexp.txt b/config/entries/jexp.txt new file mode 100644 index 0000000000..e69de29bb2 diff --git a/config/entries/logging.txt b/config/entries/logging.txt index f0eb652b6a..1690dbfacf 100644 --- a/config/entries/logging.txt +++ b/config/entries/logging.txt @@ -70,3 +70,16 @@ LOG_VIRUS ## Log all raw hrefs of tgui, rather than letting tgui logging handle it. KEEP THIS OFF UNLESS YOU KNOW WHAT YOU ARE DOING. # EMERGENCY_TGUI_LOGGING + +## Cooldown time for each occurance of a unique runtime in deciseconds +ERROR_COOLDOWN 600 + +## Max runtimes of one type before silencing +ERROR_LIMIT 50 + +## How long an unique runtime will be silenced for when reaching limit in deciseconds +ERROR_SILENCE_TIME 6000 + +How long to wait between messaging admins about an unique runtime +ERROR_MSG_DELAY 50 + diff --git a/config/entries/movespeed.txt b/config/entries/movespeed.txt new file mode 100644 index 0000000000..a2cf247453 --- /dev/null +++ b/config/entries/movespeed.txt @@ -0,0 +1,127 @@ + +/datum/config_entry/keyed_list/multiplicative_movespeed + key_mode = KEY_MODE_TYPE + value_mode = VALUE_MODE_NUM + abstract_type = /datum/config_entry/keyed_list/multiplicative_movespeed + +/datum/config_entry/keyed_list/multiplicative_movespeed/ValidateAndSet() + . = ..() + if(.) + update_config_movespeed_type_lookup(TRUE) + +/datum/config_entry/keyed_list/multiplicative_movespeed/vv_edit_var(var_name, var_value) + . = ..() + if(. && (var_name == NAMEOF(src, config_entry_value))) + update_config_movespeed_type_lookup(TRUE) + +/datum/config_entry/keyed_list/multiplicative_movespeed/normal + name = "multiplicative_movespeed" + config_entry_value = list( //DEFAULTS + /mob/living/simple_animal = 1, + /mob/living/silicon/pai = 1, + /mob/living/carbon/alien/humanoid/sentinel = 0.25, + /mob/living/carbon/alien/humanoid/drone = 0.5, + /mob/living/carbon/alien/humanoid/royal/praetorian = 1, + /mob/living/carbon/alien/humanoid/royal/queen = 3 + ) + +/datum/config_entry/keyed_list/multiplicative_movespeed/floating + name = "multiplicative_movespeed_floating" + config_entry_value = list( + /mob/living = 0, + /mob/living/carbon/alien/humanoid = 0, + /mob/living/carbon/alien/humanoid/royal/praetorian = 0, + /mob/living/carbon/alien/humanoid/royal/queen = 2 + ) + +/datum/config_entry/number/movedelay //Used for modifying movement speed for mobs. + abstract_type = /datum/config_entry/number/movedelay + integer = FALSE + +/datum/config_entry/number/movedelay/ValidateAndSet() + . = ..() + if(.) + update_mob_config_movespeeds() + +/datum/config_entry/number/movedelay/vv_edit_var(var_name, var_value) + . = ..() + if(. && (var_name == NAMEOF(src, config_entry_value))) + update_mob_config_movespeeds() + +/datum/config_entry/number/movedelay/run_delay + +/datum/config_entry/number/movedelay/run_delay/ValidateAndSet() + . = ..() + var/datum/movespeed_modifier/config_walk_run/M = get_cached_movespeed_modifier(/datum/movespeed_modifier/config_walk_run/run) + M.sync() + +/datum/config_entry/number/movedelay/walk_delay + + + +/datum/config_entry/number/movedelay/walk_delay/ValidateAndSet() + . = ..() + var/datum/movespeed_modifier/config_walk_run/M = get_cached_movespeed_modifier(/datum/movespeed_modifier/config_walk_run/walk) + M.sync() + +/datum/config_entry/flag/sprint_enabled + config_entry_value = TRUE + +/datum/config_entry/flag/sprint_enabled/ValidateAndSet(str_val) + . = ..() + for(var/datum/hud/human/H) + H.assert_move_intent_ui() + if(!config_entry_value) // disabled + for(var/mob/living/L in world) + L.disable_intentional_sprint_mode() + +/datum/config_entry/number/sprintless_stagger_slowdown + config_entry_value = 0 + +/datum/config_entry/number/sprintless_off_balance_slowdown + config_entry_value = 0.85 + +/datum/config_entry/number/melee_stagger_factor + config_entry_value = 1 + +/datum/config_entry/number/movedelay/sprint_speed_increase + config_entry_value = 1 + +/datum/config_entry/number/movedelay/sprint_max_tiles_increase + config_entry_value = 5 + +/datum/config_entry/number/movedelay/sprint_absolute_max_tiles + config_entry_value = 13 + +/datum/config_entry/number/movedelay/sprint_buffer_max + config_entry_value = 24 + +/datum/config_entry/number/movedelay/sprint_stamina_cost + config_entry_value = 1.4 + +/datum/config_entry/number/movedelay/sprint_buffer_regen_per_ds + config_entry_value = 0.4 + +/////////////////////////////////////////////////Outdated move delay +/datum/config_entry/number/outdated_movedelay + deprecated_by = /datum/config_entry/keyed_list/multiplicative_movespeed/normal + abstract_type = /datum/config_entry/number/outdated_movedelay + + var/movedelay_type + +/datum/config_entry/number/outdated_movedelay/DeprecationUpdate(value) + return "[movedelay_type] [value]" + +/datum/config_entry/number/outdated_movedelay/human_delay + movedelay_type = /mob/living/carbon/human +/datum/config_entry/number/outdated_movedelay/robot_delay + movedelay_type = /mob/living/silicon/robot +/datum/config_entry/number/outdated_movedelay/monkey_delay + movedelay_type = /mob/living/carbon/monkey +/datum/config_entry/number/outdated_movedelay/alien_delay + movedelay_type = /mob/living/carbon/alien +/datum/config_entry/number/outdated_movedelay/slime_delay + movedelay_type = /mob/living/simple_animal/slime +/datum/config_entry/number/outdated_movedelay/animal_delay + movedelay_type = /mob/living/simple_animal +///////////////////////////////////////////////// diff --git a/config/entries/policy.txt b/config/entries/policy.txt index a763bc2b28..07f64b5b2a 100644 --- a/config/entries/policy.txt +++ b/config/entries/policy.txt @@ -8,15 +8,15 @@ ## SDGF_BAD - displayed on SDGF clone spawning, if the clone is not loyal ## PAI - displayed on PAI personality being loaded ## EXAMPLE: -## POLICYCONFIG ON_CLONE insert text here span classes are fully supported +## POLICY ON_CLONE insert text here span classes are fully supported -POLICYCONFIG ON_CLONE Your thoughts are hazy as the cloning algorithms reboot your consciousness. Unfortunately for you, the imperfect nature of the process has left out your more recent, less entrenched memories.
You only remember vague details of your death, without clear recollection of who or what is specifically responsible for your demise.
(If you were murdered, you do not remember the exact name or appearance of your killer, only vague details of how they killed you rather than the exact murder weapon. (ex: drank something and blanked out, felt an impact in the back and bled out)
If you died to environmental hazards like ash storms or spacing, this is not as applicable -- however, keep in mind that if someone set you up to die to that, like being tossed forcefully into space, that the previous clause of not remembering killer name in a murder applies!
+POLICY ON_CLONE Your thoughts are hazy as the cloning algorithms reboot your consciousness. Unfortunately for you, the imperfect nature of the process has left out your more recent, less entrenched memories.
You only remember vague details of your death, without clear recollection of who or what is specifically responsible for your demise.
(If you were murdered, you do not remember the exact name or appearance of your killer, only vague details of how they killed you rather than the exact murder weapon. (ex: drank something and blanked out, felt an impact in the back and bled out)
If you died to environmental hazards like ash storms or spacing, this is not as applicable -- however, keep in mind that if someone set you up to die to that, like being tossed forcefully into space, that the previous clause of not remembering killer name in a murder applies!
-POLICYCONFIG ON_DEFIB_LATE Your mind barely responds as first as you are forcefully returned to the world of the living after all too long in a state of decay. While medicine may restore your brain functions, you can't seem to remember your latest memories...
You only remember vague details of your death, without clear recollection of who or what is specifically responsible for your demise.
(If you were murdered, you do not remember the exact name or appearance of your killer, only vague details of how they killed you rather than the exact murder weapon. (ex: drank something and blanked out, felt an impact in the back and bled out)
If you died to environmental hazards like ash storms or spacing, this is not as applicable -- however, keep in mind that if someone set you up to die to that, like being tossed forcefully into space, that the previous clause of not remembering killer name in a murder applies!
+POLICY ON_DEFIB_LATE Your mind barely responds as first as you are forcefully returned to the world of the living after all too long in a state of decay. While medicine may restore your brain functions, you can't seem to remember your latest memories...
You only remember vague details of your death, without clear recollection of who or what is specifically responsible for your demise.
(If you were murdered, you do not remember the exact name or appearance of your killer, only vague details of how they killed you rather than the exact murder weapon. (ex: drank something and blanked out, felt an impact in the back and bled out)
If you died to environmental hazards like ash storms or spacing, this is not as applicable -- however, keep in mind that if someone set you up to die to that, like being tossed forcefully into space, that the previous clause of not remembering killer name in a murder applies!
-POLICYCONFIG ON_DEFIB_INTACT You barely miss a beat as you gasp, awakening from the slumber of the deceased. The rapid resuscitation has saved you from the worst effects of brain damage.
You recall all information leading up to your death and exact details on method of death and killer if applicable, as long as you were conscious to witness such. +POLICY ON_DEFIB_INTACT You barely miss a beat as you gasp, awakening from the slumber of the deceased. The rapid resuscitation has saved you from the worst effects of brain damage.
You recall all information leading up to your death and exact details on method of death and killer if applicable, as long as you were conscious to witness such. -POLICYCONFIG PAI If you are given an ERP-related directive without OOC consent, ahelp immediately.w +POLICY PAI If you are given an ERP-related directive without OOC consent, ahelp immediately.w ## Misc entries for above diff --git a/config/entries/fail2topic.txt b/config/entries/security.txt similarity index 100% rename from config/entries/fail2topic.txt rename to config/entries/security.txt diff --git a/config/entries/server.txt b/config/entries/server.txt new file mode 100644 index 0000000000..e69de29bb2 diff --git a/config/entries/stamina_combat.txt b/config/entries/stamina_combat.txt index 7268deb223..5339502586 100644 --- a/config/entries/stamina_combat.txt +++ b/config/entries/stamina_combat.txt @@ -22,3 +22,7 @@ POST_ACTION_PENALTY_FACTOR 0.25 ## Factor to multiply by for stamina usage past buffer into health OVERDRAW_PENALTY_FACTOR 1.5 + +## Completely disable stamina combat by giving people infinite buffers. +## Has serious balance implications. +# DISABLE_STAMBUFFER diff --git a/config/entries/urls.txt b/config/entries/urls.txt new file mode 100644 index 0000000000..e69de29bb2 diff --git a/config/entries/vote.txt b/config/entries/vote.txt new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tgstation.dme b/tgstation.dme index 3d7075466f..d6d27251f6 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -292,22 +292,32 @@ #include "code\controllers\subsystem.dm" #include "code\controllers\configuration\config_entry.dm" #include "code\controllers\configuration\configuration.dm" +#include "code\controllers\configuration\entries\admin.dm" +#include "code\controllers\configuration\entries\alert.dm" #include "code\controllers\configuration\entries\antag_rep.dm" #include "code\controllers\configuration\entries\comms.dm" +#include "code\controllers\configuration\entries\connections.dm" #include "code\controllers\configuration\entries\dbconfig.dm" +#include "code\controllers\configuration\entries\debris.dm" #include "code\controllers\configuration\entries\donator.dm" #include "code\controllers\configuration\entries\dynamic.dm" -#include "code\controllers\configuration\entries\fail2topic.dm" -#include "code\controllers\configuration\entries\game_options.dm" +#include "code\controllers\configuration\entries\fetish_content.dm" +#include "code\controllers\configuration\entries\gamemodes.dm" #include "code\controllers\configuration\entries\general.dm" +#include "code\controllers\configuration\entries\jexp.dm" #include "code\controllers\configuration\entries\logging.dm" +#include "code\controllers\configuration\entries\movespeed.dm" #include "code\controllers\configuration\entries\persistence.dm" #include "code\controllers\configuration\entries\plushies.dm" #include "code\controllers\configuration\entries\policy.dm" #include "code\controllers\configuration\entries\resources.dm" #include "code\controllers\configuration\entries\respawns.dm" +#include "code\controllers\configuration\entries\security.dm" +#include "code\controllers\configuration\entries\server.dm" #include "code\controllers\configuration\entries\stamina_combat.dm" #include "code\controllers\configuration\entries\threat.dm" +#include "code\controllers\configuration\entries\urls.dm" +#include "code\controllers\configuration\entries\vote.dm" #include "code\controllers\subsystem\achievements.dm" #include "code\controllers\subsystem\acid.dm" #include "code\controllers\subsystem\activity.dm"