using Robust.Shared;
using Robust.Shared.Configuration;
namespace Content.Shared.CCVar
{
// ReSharper disable once InconsistentNaming
[CVarDefs]
public sealed class CCVars : CVars
{
/*
* Server
*/
///
/// Change this to have the changelog and rules "last seen" date stored separately.
///
public static readonly CVarDef ServerId =
CVarDef.Create("server.id", "unknown_server_id", CVar.REPLICATED | CVar.SERVER);
///
/// Name of the rules txt file in the "Resources/Server Info" dir. Include the extension.
///
public static readonly CVarDef RulesFile =
CVarDef.Create("server.rules_file", "Rules.txt", CVar.REPLICATED | CVar.SERVER);
///
/// A loc string for what should be displayed as the title on the Rules window.
///
public static readonly CVarDef RulesHeader =
CVarDef.Create("server.rules_header", "ui-rules-header", CVar.REPLICATED | CVar.SERVER);
/*
* Ambience
*/
///
/// How long we'll wait until re-sampling nearby objects for ambience. Should be pretty fast, but doesn't have to match the tick rate.
///
public static readonly CVarDef AmbientCooldown =
CVarDef.Create("ambience.cooldown", 0.1f, CVar.ARCHIVE | CVar.CLIENTONLY);
///
/// How large of a range to sample for ambience.
///
public static readonly CVarDef AmbientRange =
CVarDef.Create("ambience.range", 8f, CVar.REPLICATED | CVar.SERVER);
///
/// Maximum simultaneous ambient sounds.
///
public static readonly CVarDef MaxAmbientSources =
CVarDef.Create("ambience.max_sounds", 16, CVar.ARCHIVE | CVar.CLIENTONLY);
///
/// The minimum value the user can set for ambience.max_sounds
///
public static readonly CVarDef MinMaxAmbientSourcesConfigured =
CVarDef.Create("ambience.min_max_sounds_configured", 16, CVar.REPLICATED | CVar.SERVER | CVar.CHEAT);
///
/// The maximum value the user can set for ambience.max_sounds
///
public static readonly CVarDef MaxMaxAmbientSourcesConfigured =
CVarDef.Create("ambience.max_max_sounds_configured", 64, CVar.REPLICATED | CVar.SERVER | CVar.CHEAT);
///
/// Ambience volume.
///
public static readonly CVarDef AmbienceVolume =
CVarDef.Create("ambience.volume", 0.50f, CVar.ARCHIVE | CVar.CLIENTONLY);
///
/// Ambience music volume.
///
public static readonly CVarDef AmbientMusicVolume =
CVarDef.Create("ambience.music_volume", 0.50f, CVar.ARCHIVE | CVar.CLIENTONLY);
///
/// Lobby / round end music volume.
///
public static readonly CVarDef LobbyMusicVolume =
CVarDef.Create("ambience.lobby_music_volume", 0.50f, CVar.ARCHIVE | CVar.CLIENTONLY);
/*
* Status
*/
public static readonly CVarDef StatusMoMMIUrl =
CVarDef.Create("status.mommiurl", "", CVar.SERVERONLY);
public static readonly CVarDef StatusMoMMIPassword =
CVarDef.Create("status.mommipassword", "", CVar.SERVERONLY | CVar.CONFIDENTIAL);
/*
* Events
*/
///
/// Controls if the game should run station events
///
public static readonly CVarDef
EventsEnabled = CVarDef.Create("events.enabled", true, CVar.ARCHIVE | CVar.SERVERONLY);
///
/// Average time (in minutes) for when the ramping event scheduler should stop increasing the chaos modifier.
/// Close to how long you expect a round to last, so you'll probably have to tweak this on downstreams.
///
public static readonly CVarDef
EventsRampingAverageEndTime = CVarDef.Create("events.ramping_average_end_time", 40f, CVar.ARCHIVE | CVar.SERVERONLY);
///
/// Average ending chaos modifier for the ramping event scheduler.
/// Max chaos chosen for a round will deviate from this
///
public static readonly CVarDef
EventsRampingAverageChaos = CVarDef.Create("events.ramping_average_chaos", 6f, CVar.ARCHIVE | CVar.SERVERONLY);
/*
* Game
*/
///
/// Disables most functionality in the GameTicker.
///
public static readonly CVarDef
GameDummyTicker = CVarDef.Create("game.dummyticker", false, CVar.ARCHIVE | CVar.SERVERONLY);
///
/// Controls if the lobby is enabled. If it is not, and there are no available jobs, you may get stuck on a black screen.
///
public static readonly CVarDef
GameLobbyEnabled = CVarDef.Create("game.lobbyenabled", true, CVar.ARCHIVE);
///
/// Controls the duration of the lobby timer in seconds. Defaults to 2 minutes and 30 seconds.
///
public static readonly CVarDef
GameLobbyDuration = CVarDef.Create("game.lobbyduration", 150, CVar.ARCHIVE);
///
/// Controls if players can latejoin at all.
///
public static readonly CVarDef
GameDisallowLateJoins = CVarDef.Create("game.disallowlatejoins", false, CVar.ARCHIVE | CVar.SERVERONLY);
///
/// Controls the default game preset.
///
public static readonly CVarDef
GameLobbyDefaultPreset = CVarDef.Create("game.defaultpreset", "secret", CVar.ARCHIVE);
///
/// Controls if the game can force a different preset if the current preset's criteria are not met.
///
public static readonly CVarDef
GameLobbyFallbackEnabled = CVarDef.Create("game.fallbackenabled", true, CVar.ARCHIVE);
///
/// The preset for the game to fall back to if the selected preset could not be used, and fallback is enabled.
///
public static readonly CVarDef
GameLobbyFallbackPreset = CVarDef.Create("game.fallbackpreset", "Traitor,Extended", CVar.ARCHIVE);
///
/// Controls if people can win the game in Suspicion or Deathmatch.
///
public static readonly CVarDef
GameLobbyEnableWin = CVarDef.Create("game.enablewin", true, CVar.ARCHIVE);
///
/// Controls the maximum number of character slots a player is allowed to have.
///
public static readonly CVarDef
GameMaxCharacterSlots = CVarDef.Create("game.maxcharacterslots", 10, CVar.ARCHIVE | CVar.SERVERONLY);
///
/// Controls the game map prototype to load. SS14 stores these prototypes in Prototypes/Maps.
///
public static readonly CVarDef
GameMap = CVarDef.Create("game.map", string.Empty, CVar.SERVERONLY);
///
/// Prototype to use for map pool.
///
public static readonly CVarDef
GameMapPool = CVarDef.Create("game.map_pool", "DefaultMapPool", CVar.SERVERONLY);
///
/// The depth of the queue used to calculate which map is next in rotation.
/// This is how long the game "remembers" that some map was put in play. Default is 16 rounds.
///
public static readonly CVarDef
GameMapMemoryDepth = CVarDef.Create("game.map_memory_depth", 16, CVar.SERVERONLY);
///
/// Is map rotation enabled?
///
public static readonly CVarDef
GameMapRotation = CVarDef.Create("game.map_rotation", true, CVar.SERVERONLY);
///
/// If roles should be restricted based on time.
///
public static readonly CVarDef
GameRoleTimers = CVarDef.Create("game.role_timers", true, CVar.SERVER | CVar.REPLICATED);
///
/// Whether a random position offset will be applied to the station on roundstart.
///
public static readonly CVarDef StationOffset =
CVarDef.Create("game.station_offset", true);
///
/// When the default blueprint is loaded what is the maximum amount it can be offset from 0,0.
/// Does nothing without as true.
///
public static readonly CVarDef MaxStationOffset =
CVarDef.Create("game.maxstationoffset", 1000.0f);
///
/// Whether a random rotation will be applied to the station on roundstart.
///
public static readonly CVarDef StationRotation =
CVarDef.Create("game.station_rotation", true);
///
/// When enabled, guests will be assigned permanent UIDs and will have their preferences stored.
///
public static readonly CVarDef GamePersistGuests =
CVarDef.Create("game.persistguests", true, CVar.ARCHIVE | CVar.SERVERONLY);
public static readonly CVarDef GameDiagonalMovement =
CVarDef.Create("game.diagonalmovement", true, CVar.ARCHIVE);
public static readonly CVarDef SoftMaxPlayers =
CVarDef.Create("game.soft_max_players", 30, CVar.SERVERONLY | CVar.ARCHIVE);
///
/// Whether or not panic bunker is currently enabled.
///
public static readonly CVarDef PanicBunkerEnabled =
CVarDef.Create("game.panic_bunker.enabled", false, CVar.NOTIFY | CVar.REPLICATED);
///
/// Whether or not the panic bunker will disable when an admin comes online.
///
public static readonly CVarDef PanicBunkerDisableWithAdmins =
CVarDef.Create("game.panic_bunker.disable_with_admins", false, CVar.SERVERONLY);
///
/// Whether or not the panic bunker will enable when no admins are online.
///
public static readonly CVarDef PanicBunkerEnableWithoutAdmins =
CVarDef.Create("game.panic_bunker.enable_without_admins", false, CVar.SERVERONLY);
///
/// Whether or not the panic bunker will count deadminned admins for
/// and
///
///
public static readonly CVarDef PanicBunkerCountDeadminnedAdmins =
CVarDef.Create("game.panic_bunker.count_deadminned_admins", false, CVar.SERVERONLY);
///
/// Show reason of disconnect for user or not.
///
public static readonly CVarDef PanicBunkerShowReason =
CVarDef.Create("game.panic_bunker.show_reason", false, CVar.SERVERONLY);
///
/// Minimum age of the account (from server's PoV, so from first-seen date) in minutes.
///
public static readonly CVarDef PanicBunkerMinAccountAge =
CVarDef.Create("game.panic_bunker.min_account_age", 1440, CVar.SERVERONLY);
///
/// Minimal overall played time.
///
public static readonly CVarDef PanicBunkerMinOverallHours =
CVarDef.Create("game.panic_bunker.min_overall_hours", 10, CVar.SERVERONLY);
///
/// Make people bonk when trying to climb certain objects like tables.
///
public static readonly CVarDef GameTableBonk =
CVarDef.Create("game.table_bonk", false, CVar.REPLICATED);
///
/// Whether or not status icons are rendered for everyone.
///
public static readonly CVarDef GlobalStatusIconsEnabled =
CVarDef.Create("game.global_status_icons_enabled", true, CVar.SERVER | CVar.REPLICATED);
///
/// Whether or not status icons are rendered on this specific client.
///
public static readonly CVarDef LocalStatusIconsEnabled =
CVarDef.Create("game.local_status_icons_enabled", true, CVar.CLIENTONLY);
///
/// Whether or not coordinates on the Debug overlay should only be available to admins.
///
public static readonly CVarDef DebugCoordinatesAdminOnly =
CVarDef.Create("game.debug_coordinates_admin_only", true, CVar.SERVER | CVar.REPLICATED);
#if EXCEPTION_TOLERANCE
///
/// Amount of times round start must fail before the server is shut down.
/// Set to 0 or a negative number to disable.
///
public static readonly CVarDef RoundStartFailShutdownCount =
CVarDef.Create("game.round_start_fail_shutdown_count", 5, CVar.SERVERONLY | CVar.SERVER);
#endif
///
/// Delay between station alert level changes.
///
public static readonly CVarDef GameAlertLevelChangeDelay =
CVarDef.Create("game.alert_level_change_delay", 30, CVar.SERVERONLY);
///
/// The time in seconds that the server should wait before restarting the round.
/// Defaults to 2 minutes.
///
public static readonly CVarDef RoundRestartTime =
CVarDef.Create("game.round_restart_time", 120f, CVar.SERVERONLY);
/*
* Discord
*/
///
/// URL of the Discord webhook which will relay all ahelp messages.
///
public static readonly CVarDef DiscordAHelpWebhook =
CVarDef.Create("discord.ahelp_webhook", string.Empty, CVar.SERVERONLY | CVar.CONFIDENTIAL);
///
/// The server icon to use in the Discord ahelp embed footer.
/// Valid values are specified at https://discord.com/developers/docs/resources/channel#embed-object-embed-footer-structure.
///
public static readonly CVarDef DiscordAHelpFooterIcon =
CVarDef.Create("discord.ahelp_footer_icon", string.Empty, CVar.SERVERONLY);
///
/// The avatar to use for the webhook. Should be an URL.
///
public static readonly CVarDef DiscordAHelpAvatar =
CVarDef.Create("discord.ahelp_avatar", string.Empty, CVar.SERVERONLY);
///
/// URL of the Discord webhook which will relay round restart messages.
///
public static readonly CVarDef DiscordRoundUpdateWebhook =
CVarDef.Create("discord.round_update_webhook", string.Empty, CVar.SERVERONLY | CVar.CONFIDENTIAL);
///
/// Role id for the Discord webhook to ping when the round ends.
///
public static readonly CVarDef DiscordRoundEndRoleWebhook =
CVarDef.Create("discord.round_end_role", string.Empty, CVar.SERVERONLY);
/*
* Suspicion
*/
public static readonly CVarDef SuspicionMinPlayers =
CVarDef.Create("suspicion.min_players", 5);
public static readonly CVarDef SuspicionMinTraitors =
CVarDef.Create("suspicion.min_traitors", 2);
public static readonly CVarDef SuspicionPlayersPerTraitor =
CVarDef.Create("suspicion.players_per_traitor", 6);
public static readonly CVarDef SuspicionStartingBalance =
CVarDef.Create("suspicion.starting_balance", 20);
public static readonly CVarDef SuspicionMaxTimeSeconds =
CVarDef.Create("suspicion.max_time_seconds", 300);
/*
* Traitor
*/
public static readonly CVarDef TraitorMinPlayers =
CVarDef.Create("traitor.min_players", 5);
public static readonly CVarDef TraitorMaxTraitors =
CVarDef.Create("traitor.max_traitors", 12); // Assuming average server maxes somewhere from like 50-80 people
public static readonly CVarDef TraitorPlayersPerTraitor =
CVarDef.Create("traitor.players_per_traitor", 10);
public static readonly CVarDef TraitorCodewordCount =
CVarDef.Create("traitor.codeword_count", 4);
public static readonly CVarDef TraitorStartingBalance =
CVarDef.Create("traitor.starting_balance", 20);
public static readonly CVarDef TraitorMaxDifficulty =
CVarDef.Create("traitor.max_difficulty", 5);
public static readonly CVarDef TraitorMaxPicks =
CVarDef.Create("traitor.max_picks", 20);
public static readonly CVarDef TraitorStartDelay =
CVarDef.Create("traitor.start_delay", 4f * 60f);
public static readonly CVarDef TraitorStartDelayVariance =
CVarDef.Create("traitor.start_delay_variance", 3f * 60f);
/*
* TraitorDeathMatch
*/
public static readonly CVarDef TraitorDeathMatchStartingBalance =
CVarDef.Create("traitordm.starting_balance", 20);
/*
* Zombie
*/
public static readonly CVarDef ZombieMinPlayers =
CVarDef.Create("zombie.min_players", 20);
/*
* Pirates
*/
public static readonly CVarDef PiratesMinPlayers =
CVarDef.Create("pirates.min_players", 25);
public static readonly CVarDef PiratesMaxOps =
CVarDef.Create("pirates.max_pirates", 6);
public static readonly CVarDef PiratesPlayersPerOp =
CVarDef.Create("pirates.players_per_pirate", 5);
/*
* Tips
*/
///
/// Whether tips being shown is enabled at all.
///
public static readonly CVarDef TipsEnabled =
CVarDef.Create("tips.enabled", true);
///
/// The dataset prototype to use when selecting a random tip.
///
public static readonly CVarDef TipsDataset =
CVarDef.Create("tips.dataset", "Tips");
///
/// The number of seconds between each tip being displayed when the round is not actively going
/// (i.e. postround or lobby)
///
public static readonly CVarDef TipFrequencyOutOfRound =
CVarDef.Create("tips.out_of_game_frequency", 60f * 1.5f);
///
/// The number of seconds between each tip being displayed when the round is actively going
///
public static readonly CVarDef TipFrequencyInRound =
CVarDef.Create("tips.in_game_frequency", 60f * 60);
/*
* Console
*/
public static readonly CVarDef
ConsoleLoginLocal = CVarDef.Create("console.loginlocal", true, CVar.ARCHIVE | CVar.SERVERONLY);
///
/// Automatically log in the given user as host, equivalent to the promotehost command.
///
public static readonly CVarDef ConsoleLoginHostUser =
CVarDef.Create("console.login_host_user", "", CVar.ARCHIVE | CVar.SERVERONLY);
/*
* Database stuff
*/
public static readonly CVarDef DatabaseEngine =
CVarDef.Create("database.engine", "sqlite", CVar.SERVERONLY);
public static readonly CVarDef DatabaseSqliteDbPath =
CVarDef.Create("database.sqlite_dbpath", "preferences.db", CVar.SERVERONLY);
///
/// Milliseconds to asynchronously delay all SQLite database acquisitions with.
///
///
/// Defaults to 1 on DEBUG, 0 on RELEASE.
/// This is intended to help catch .Result deadlock bugs that only happen on postgres
/// (because SQLite is not actually asynchronous normally)
///
public static readonly CVarDef DatabaseSqliteDelay =
CVarDef.Create("database.sqlite_delay", DefaultSqliteDelay, CVar.SERVERONLY);
///
/// Amount of concurrent SQLite database operations.
///
///
/// Note that SQLite is not a properly asynchronous database and also has limited read/write concurrency.
/// Increasing this number may allow more concurrent reads, but it probably won't matter much.
/// SQLite operations are normally ran on the thread pool, which may cause thread pool starvation if the concurrency is too high.
///
public static readonly CVarDef DatabaseSqliteConcurrency =
CVarDef.Create("database.sqlite_concurrency", 3, CVar.SERVERONLY);
#if DEBUG
private const int DefaultSqliteDelay = 1;
#else
private const int DefaultSqliteDelay = 0;
#endif
public static readonly CVarDef DatabasePgHost =
CVarDef.Create("database.pg_host", "localhost", CVar.SERVERONLY);
public static readonly CVarDef DatabasePgPort =
CVarDef.Create("database.pg_port", 5432, CVar.SERVERONLY);
public static readonly CVarDef DatabasePgDatabase =
CVarDef.Create("database.pg_database", "ss14", CVar.SERVERONLY);
public static readonly CVarDef DatabasePgUsername =
CVarDef.Create("database.pg_username", "postgres", CVar.SERVERONLY);
public static readonly CVarDef DatabasePgPassword =
CVarDef.Create("database.pg_password", "", CVar.SERVERONLY | CVar.CONFIDENTIAL);
///
/// Max amount of concurrent Postgres database operations.
///
public static readonly CVarDef DatabasePgConcurrency =
CVarDef.Create("database.pg_concurrency", 8, CVar.SERVERONLY);
///
/// Milliseconds to asynchronously delay all PostgreSQL database operations with.
///
///
/// This is intended for performance testing. It works different from ,
/// as the lag is applied after acquiring the database lock.
///
public static readonly CVarDef DatabasePgFakeLag =
CVarDef.Create("database.pg_fake_lag", 0, CVar.SERVERONLY);
// Basically only exists for integration tests to avoid race conditions.
public static readonly CVarDef DatabaseSynchronous =
CVarDef.Create("database.sync", false, CVar.SERVERONLY);
/*
* Outline
*/
public static readonly CVarDef OutlineEnabled =
CVarDef.Create("outline.enabled", true, CVar.CLIENTONLY);
/*
* Parallax
*/
public static readonly CVarDef ParallaxEnabled =
CVarDef.Create("parallax.enabled", true, CVar.CLIENTONLY);
public static readonly CVarDef ParallaxDebug =
CVarDef.Create("parallax.debug", false, CVar.CLIENTONLY);
public static readonly CVarDef ParallaxLowQuality =
CVarDef.Create("parallax.low_quality", false, CVar.ARCHIVE | CVar.CLIENTONLY);
/*
* Physics
*/
///
/// When a mob is walking should its X / Y movement be relative to its parent (true) or the map (false).
///
public static readonly CVarDef RelativeMovement =
CVarDef.Create("physics.relative_movement", true, CVar.ARCHIVE | CVar.REPLICATED);
public static readonly CVarDef TileFrictionModifier =
CVarDef.Create("physics.tile_friction", 40.0f, CVar.ARCHIVE | CVar.REPLICATED);
public static readonly CVarDef StopSpeed =
CVarDef.Create("physics.stop_speed", 0.1f, CVar.ARCHIVE | CVar.REPLICATED);
///
/// Whether mobs can push objects like lockers.
///
///
/// Technically client doesn't need to know about it but this may prevent a bug in the distant future so it stays.
///
public static readonly CVarDef MobPushing =
CVarDef.Create("physics.mob_pushing", false, CVar.REPLICATED);
/*
* Music
*/
public static readonly CVarDef LobbyMusicEnabled =
CVarDef.Create("ambience.lobby_music_enabled", true, CVar.ARCHIVE | CVar.CLIENTONLY);
public static readonly CVarDef EventMusicEnabled =
CVarDef.Create("ambience.event_music_enabled", true, CVar.ARCHIVE | CVar.CLIENTONLY);
/*
* Specific Sounds
*/
// Round end sound (APC Destroyed)
public static readonly CVarDef RestartSoundsEnabled =
CVarDef.Create("ambience.restart_sounds_enabled", true, CVar.ARCHIVE | CVar.CLIENTONLY);
/*
* Admin sounds
*/
public static readonly CVarDef AdminSoundsEnabled =
CVarDef.Create("audio.admin_sounds_enabled", true, CVar.ARCHIVE | CVar.CLIENTONLY);
public static readonly CVarDef AdminChatSoundPath =
CVarDef.Create("audio.admin_chat_sound_path", "/Audio/Items/pop.ogg", CVar.ARCHIVE | CVar.CLIENT | CVar.REPLICATED);
public static readonly CVarDef AdminChatSoundVolume =
CVarDef.Create("audio.admin_chat_sound_volume", -5f, CVar.ARCHIVE | CVar.CLIENT | CVar.REPLICATED);
/*
* HUD
*/
public static readonly CVarDef HudTheme =
CVarDef.Create("hud.theme", 0, CVar.ARCHIVE | CVar.CLIENTONLY);
public static readonly CVarDef HudHeldItemShow =
CVarDef.Create("hud.held_item_show", true, CVar.ARCHIVE | CVar.CLIENTONLY);
public static readonly CVarDef CombatModeIndicatorsPointShow =
CVarDef.Create("hud.combat_mode_indicators_point_show", true, CVar.ARCHIVE | CVar.CLIENTONLY);
public static readonly CVarDef LoocAboveHeadShow =
CVarDef.Create("hud.show_looc_above_head", true, CVar.ARCHIVE | CVar.CLIENTONLY);
public static readonly CVarDef HudHeldItemOffset =
CVarDef.Create("hud.held_item_offset", 28f, CVar.ARCHIVE | CVar.CLIENTONLY);
public static readonly CVarDef HudFpsCounterVisible =
CVarDef.Create("hud.fps_counter_visible", false, CVar.CLIENTONLY | CVar.ARCHIVE);
/*
* NPCs
*/
public static readonly CVarDef NPCMaxUpdates =
CVarDef.Create("npc.max_updates", 128);
public static readonly CVarDef NPCEnabled = CVarDef.Create("npc.enabled", true);
///
/// Should NPCs pathfind when steering. For debug purposes.
///
public static readonly CVarDef NPCPathfinding = CVarDef.Create("npc.pathfinding", true);
/*
* Net
*/
public static readonly CVarDef NetAtmosDebugOverlayTickRate =
CVarDef.Create("net.atmosdbgoverlaytickrate", 3.0f);
public static readonly CVarDef NetGasOverlayTickRate =
CVarDef.Create("net.gasoverlaytickrate", 3.0f);
public static readonly CVarDef GasOverlayThresholds =
CVarDef.Create("net.gasoverlaythresholds", 20);
/*
* Admin
*/
public static readonly CVarDef AdminAnnounceLogin =
CVarDef.Create("admin.announce_login", true, CVar.SERVERONLY);
public static readonly CVarDef AdminAnnounceLogout =
CVarDef.Create("admin.announce_logout", true, CVar.SERVERONLY);
///
/// Should users be able to see their own notes? Admins will be able to see and set notes regardless
///
public static readonly CVarDef SeeOwnNotes =
CVarDef.Create("admin.see_own_notes", false, CVar.ARCHIVE | CVar.REPLICATED | CVar.SERVER);
///
/// The amount of days before the note starts fading. It will slowly lose opacity until it reaches stale. Set to 0 to disable.
///
public static readonly CVarDef NoteFreshDays =
CVarDef.Create("admin.note_fresh_days", 91.31055, CVar.ARCHIVE | CVar.REPLICATED | CVar.SERVER);
///
/// The amount of days before the note completely fades, and can only be seen by admins if they press "see more notes". Set to 0
/// if you want the note to immediately disappear without fading.
///
public static readonly CVarDef NoteStaleDays =
CVarDef.Create("admin.note_stale_days", 365.2422, CVar.ARCHIVE | CVar.REPLICATED | CVar.SERVER);
///
/// How much time does the user have to wait in seconds before confirming that they saw an admin message?
///
public static readonly CVarDef MessageWaitTime =
CVarDef.Create("admin.message_wait_time", 3f, CVar.ARCHIVE | CVar.REPLICATED | CVar.SERVER);
///
/// Default severity for role bans
///
public static readonly CVarDef RoleBanDefaultSeverity =
CVarDef.Create("admin.role_ban_default_severity", "medium", CVar.ARCHIVE | CVar.SERVER);
///
/// Default severity for department bans
///
public static readonly CVarDef DepartmentBanDefaultSeverity =
CVarDef.Create("admin.department_ban_default_severity", "medium", CVar.ARCHIVE | CVar.SERVER);
///
/// Default severity for server bans
///
public static readonly CVarDef ServerBanDefaultSeverity =
CVarDef.Create("admin.server_ban_default_severity", "high", CVar.ARCHIVE | CVar.SERVER);
///
/// Minimum explosion intensity to create an admin alert message. -1 to disable the alert.
///
public static readonly CVarDef AdminAlertExplosionMinIntensity =
CVarDef.Create("admin.alert.explosion_min_intensity", 60, CVar.SERVERONLY);
///
/// Minimum particle accelerator strength to create an admin alert message.
///
public static readonly CVarDef AdminAlertParticleAcceleratorMinPowerState =
CVarDef.Create("admin.alert.particle_accelerator_min_power_state", 3, CVar.SERVERONLY);
///
/// Should the ban details in admin channel include PII? (IP, HWID, etc)
public static readonly CVarDef AdminShowPIIOnBan =
CVarDef.Create("admin.show_pii_onban", false, CVar.SERVERONLY);
///
/// If an admin joins a round by reading up or using the late join button, automatically
/// de-admin them.
///
public static readonly CVarDef AdminDeadminOnJoin =
CVarDef.Create("admin.deadmin_on_join", false, CVar.SERVERONLY);
/*
* Explosions
*/
///
/// How many tiles the explosion system will process per tick
///
///
/// Setting this too high will put a large load on a single tick. Setting this too low will lead to
/// unnaturally "slow" explosions.
///
public static readonly CVarDef ExplosionTilesPerTick =
CVarDef.Create("explosion.tiles_per_tick", 100, CVar.SERVERONLY);
///
/// Upper limit on the size of an explosion before physics-throwing is disabled.
///
///
/// Large nukes tend to generate a lot of shrapnel that flies through space. This can functionally cripple
/// the server TPS for a while after an explosion (or even during, if the explosion is processed
/// incrementally.
///
public static readonly CVarDef ExplosionThrowLimit =
CVarDef.Create("explosion.throw_limit", 400, CVar.SERVERONLY);
///
/// If this is true, explosion processing will pause the NodeGroupSystem to pause updating.
///
///
/// This only takes effect if an explosion needs more than one tick to process (i.e., covers more than tiles). If this is not enabled, the node-system will rebuild its graph
/// every tick as the explosion shreds the station, causing significant slowdown.
///
public static readonly CVarDef ExplosionSleepNodeSys =
CVarDef.Create("explosion.node_sleep", true, CVar.SERVERONLY);
///
/// Upper limit on the total area that an explosion can affect before the neighbor-finding algorithm just
/// stops. Defaults to a 60-rile radius explosion.
///
///
/// Actual area may be larger, as it currently doesn't terminate mid neighbor finding. I.e., area may be that of a ~51 tile radius circle instead.
///
public static readonly CVarDef ExplosionMaxArea =
CVarDef.Create("explosion.max_area", (int) 3.14f * 256 * 256, CVar.SERVERONLY);
///
/// Upper limit on the number of neighbor finding steps for the explosion system neighbor-finding algorithm.
///
///
/// Effectively places an upper limit on the range that any explosion can have. In the vast majority of
/// instances, will likely be hit before this becomes a limiting factor.
///
public static readonly CVarDef ExplosionMaxIterations =
CVarDef.Create("explosion.max_iterations", 500, CVar.SERVERONLY);
///
/// Max Time in milliseconds to spend processing explosions every tick.
///
///
/// This time limiting is not perfectly implemented. Firstly, a significant chunk of processing time happens
/// due to queued entity deletions, which happen outside of the system update code. Secondly, explosion
/// spawning cannot currently be interrupted & resumed, and may lead to exceeding this time limit.
///
public static readonly CVarDef ExplosionMaxProcessingTime =
CVarDef.Create("explosion.max_tick_time", 7f, CVar.SERVERONLY);
///
/// If the explosion is being processed incrementally over several ticks, this variable determines whether
/// updating the grid tiles should be done incrementally at the end of every tick, or only once the explosion has finished processing.
///
///
/// The most notable consequence of this change is that explosions will only punch a hole in the station &
/// create a vacumm once they have finished exploding. So airlocks will no longer slam shut as the explosion
/// expands, just suddenly at the end.
///
public static readonly CVarDef ExplosionIncrementalTileBreaking =
CVarDef.Create("explosion.incremental_tile", false, CVar.SERVERONLY);
///
/// This determines for how many seconds an explosion should stay visible once it has finished expanding.
///
public static readonly CVarDef ExplosionPersistence =
CVarDef.Create("explosion.persistence", 0.3f, CVar.SERVERONLY);
///
/// If an explosion covers a larger area than this number, the damaging/processing will always start during
/// the next tick, instead of during the same tick that the explosion was generated in.
///
///
/// This value can be used to ensure that for large explosions the area/tile calculation and the explosion
/// processing/damaging occurs in separate ticks. This helps reduce the single-tick lag if both and are large. I.e., instead of
/// a single tick explosion, this cvar allows for a configuration that results in a two-tick explosion,
/// though most of the computational cost is still in the second tick.
///
public static readonly CVarDef ExplosionSingleTickAreaLimit =
CVarDef.Create("explosion.single_tick_area_limit", 400, CVar.SERVERONLY);
/*
* Radiation
*/
///
/// What is the smallest radiation dose in rads that can be received by object.
/// Extremely small values may impact performance.
///
public static readonly CVarDef RadiationMinIntensity =
CVarDef.Create("radiation.min_intensity", 0.1f, CVar.SERVERONLY);
///
/// Rate of radiation system update in seconds.
///
public static readonly CVarDef RadiationGridcastUpdateRate =
CVarDef.Create("radiation.gridcast.update_rate", 1.0f, CVar.SERVERONLY);
///
/// If both radiation source and receiver are placed on same grid, ignore grids between them.
/// May get inaccurate result in some cases, but greatly boost performance in general.
///
public static readonly CVarDef RadiationGridcastSimplifiedSameGrid =
CVarDef.Create("radiation.gridcast.simplified_same_grid", true, CVar.SERVERONLY);
///
/// Max distance that radiation ray can travel in meters.
///
public static readonly CVarDef RadiationGridcastMaxDistance =
CVarDef.Create("radiation.gridcast.max_distance", 50f, CVar.SERVERONLY);
/*
* Admin logs
*/
///
/// Controls if admin logs are enabled. Highly recommended to shut this off for development.
///
public static readonly CVarDef AdminLogsEnabled =
CVarDef.Create("adminlogs.enabled", true, CVar.SERVERONLY);
public static readonly CVarDef AdminLogsQueueSendDelay =
CVarDef.Create("adminlogs.queue_send_delay_seconds", 5f, CVar.SERVERONLY);
// When to skip the waiting time to save in-round admin logs, if no admin logs are currently being saved
public static readonly CVarDef AdminLogsQueueMax =
CVarDef.Create("adminlogs.queue_max", 5000, CVar.SERVERONLY);
// When to skip the waiting time to save pre-round admin logs, if no admin logs are currently being saved
public static readonly CVarDef AdminLogsPreRoundQueueMax =
CVarDef.Create("adminlogs.pre_round_queue_max", 5000, CVar.SERVERONLY);
// When to start dropping logs
public static readonly CVarDef AdminLogsDropThreshold =
CVarDef.Create("adminlogs.drop_threshold", 20000, CVar.SERVERONLY);
// How many logs to send to the client at once
public static readonly CVarDef AdminLogsClientBatchSize =
CVarDef.Create("adminlogs.client_batch_size", 1000, CVar.SERVERONLY);
public static readonly CVarDef AdminLogsServerName =
CVarDef.Create("adminlogs.server_name", "unknown", CVar.SERVERONLY);
/*
* Atmos
*/
///
/// Whether gas differences will move entities.
///
public static readonly CVarDef SpaceWind =
CVarDef.Create("atmos.space_wind", false, CVar.SERVERONLY);
///
/// Divisor from maxForce (pressureDifference * 2.25f) to force applied on objects.
///
public static readonly CVarDef SpaceWindPressureForceDivisorThrow =
CVarDef.Create("atmos.space_wind_pressure_force_divisor_throw", 15f, CVar.SERVERONLY);
///
/// Divisor from maxForce (pressureDifference * 2.25f) to force applied on objects.
///
public static readonly CVarDef SpaceWindPressureForceDivisorPush =
CVarDef.Create("atmos.space_wind_pressure_force_divisor_push", 2500f, CVar.SERVERONLY);
///
/// The maximum velocity (not force) that may be applied to an object by atmospheric pressure differences.
/// Useful to prevent clipping through objects.
///
public static readonly CVarDef SpaceWindMaxVelocity =
CVarDef.Create("atmos.space_wind_max_velocity", 30f, CVar.SERVERONLY);
///
/// The maximum force that may be applied to an object by pushing (i.e. not throwing) atmospheric pressure differences.
/// A "throwing" atmospheric pressure difference ignores this limit, but not the max. velocity limit.
///
public static readonly CVarDef SpaceWindMaxPushForce =
CVarDef.Create("atmos.space_wind_max_push_force", 20f, CVar.SERVERONLY);
///
/// Whether monstermos tile equalization is enabled.
///
public static readonly CVarDef MonstermosEqualization =
CVarDef.Create("atmos.monstermos_equalization", true, CVar.SERVERONLY);
///
/// Whether monstermos explosive depressurization is enabled.
/// Needs to be enabled to work.
///
public static readonly CVarDef MonstermosDepressurization =
CVarDef.Create("atmos.monstermos_depressurization", true, CVar.SERVERONLY);
///
/// Whether monstermos explosive depressurization will rip tiles..
/// Needs and to be enabled to work.
///
public static readonly CVarDef MonstermosRipTiles =
CVarDef.Create("atmos.monstermos_rip_tiles", false, CVar.SERVERONLY);
///
/// Whether explosive depressurization will cause the grid to gain an impulse.
/// Needs and to be enabled to work.
///
public static readonly CVarDef AtmosGridImpulse =
CVarDef.Create("atmos.grid_impulse", false, CVar.SERVERONLY);
///
/// What fraction of air from a spaced tile escapes every tick.
/// 1.0 for instant spacing, 0.2 means 20% of remaining air lost each time
///
public static readonly CVarDef AtmosSpacingEscapeRatio =
CVarDef.Create("atmos.mmos_spacing_speed", 0.05f, CVar.SERVERONLY);
///
/// Minimum amount of air allowed on a spaced tile before it is reset to 0 immediately in kPa
/// Since the decay due to SpacingEscapeRatio follows a curve, it would never reach 0.0 exactly
/// unless we truncate it somewhere.
///
public static readonly CVarDef AtmosSpacingMinGas =
CVarDef.Create("atmos.mmos_min_gas", 2.0f, CVar.SERVERONLY);
///
/// How much wind can go through a single tile before that tile doesn't depressurize itself
/// (I.e spacing is limited in large rooms heading into smaller spaces)
///
public static readonly CVarDef AtmosSpacingMaxWind =
CVarDef.Create("atmos.mmos_max_wind", 500f, CVar.SERVERONLY);
///
/// Whether atmos superconduction is enabled.
///
/// Disabled by default, superconduction is awful.
public static readonly CVarDef Superconduction =
CVarDef.Create("atmos.superconduction", false, CVar.SERVERONLY);
///
/// Heat loss per tile due to radiation at 20 degC, in W.
///
public static readonly CVarDef SuperconductionTileLoss =
CVarDef.Create("atmos.superconduction_tile_loss", 30f, CVar.SERVERONLY);
///
/// Whether excited groups will be processed and created.
///
public static readonly CVarDef ExcitedGroups =
CVarDef.Create("atmos.excited_groups", true, CVar.SERVERONLY);
///
/// Whether all tiles in an excited group will clear themselves once being exposed to space.
/// Similar to , without none of the tile ripping or
/// things being thrown around very violently.
/// Needs to be enabled to work.
///
public static readonly CVarDef ExcitedGroupsSpaceIsAllConsuming =
CVarDef.Create("atmos.excited_groups_space_is_all_consuming", false, CVar.SERVERONLY);
///
/// Maximum time in milliseconds that atmos can take processing.
///
public static readonly CVarDef AtmosMaxProcessTime =
CVarDef.Create("atmos.max_process_time", 3f, CVar.SERVERONLY);
///
/// Atmos tickrate in TPS. Atmos processing will happen every 1/TPS seconds.
///
public static readonly CVarDef AtmosTickRate =
CVarDef.Create("atmos.tickrate", 15f, CVar.SERVERONLY);
/*
* MIDI instruments
*/
public static readonly CVarDef MaxMidiEventsPerSecond =
CVarDef.Create("midi.max_events_per_second", 1000, CVar.REPLICATED | CVar.SERVER);
public static readonly CVarDef MaxMidiEventsPerBatch =
CVarDef.Create("midi.max_events_per_batch", 60, CVar.REPLICATED | CVar.SERVER);
public static readonly CVarDef MaxMidiBatchesDropped =
CVarDef.Create("midi.max_batches_dropped", 1, CVar.SERVERONLY);
public static readonly CVarDef MaxMidiLaggedBatches =
CVarDef.Create("midi.max_lagged_batches", 8, CVar.SERVERONLY);
/*
* Holidays
*/
public static readonly CVarDef HolidaysEnabled = CVarDef.Create("holidays.enabled", true, CVar.SERVERONLY);
/*
* Branding stuff
*/
public static readonly CVarDef BrandingSteam = CVarDef.Create("branding.steam", false, CVar.CLIENTONLY);
/*
* OOC
*/
public static readonly CVarDef OocEnabled = CVarDef.Create("ooc.enabled", true, CVar.NOTIFY | CVar.REPLICATED);
public static readonly CVarDef AdminOocEnabled =
CVarDef.Create("ooc.enabled_admin", true, CVar.NOTIFY);
///
/// If true, whenever OOC is disabled the Discord OOC relay will also be disabled.
///
public static readonly CVarDef DisablingOOCDisablesRelay = CVarDef.Create("ooc.disabling_ooc_disables_relay", true, CVar.SERVERONLY);
///
/// Whether or not OOC chat should be enabled during a round.
///
public static readonly CVarDef OocEnableDuringRound =
CVarDef.Create("ooc.enable_during_round", false, CVar.NOTIFY | CVar.REPLICATED | CVar.SERVER);
/*
* LOOC
*/
public static readonly CVarDef LoocEnabled = CVarDef.Create("looc.enabled", true, CVar.NOTIFY | CVar.REPLICATED);
public static readonly CVarDef AdminLoocEnabled =
CVarDef.Create("looc.enabled_admin", true, CVar.NOTIFY);
///
/// True: Dead players can use LOOC
/// False: Dead player LOOC gets redirected to dead chat
///
public static readonly CVarDef DeadLoocEnabled = CVarDef.Create("looc.enabled_dead", false, CVar.NOTIFY | CVar.REPLICATED);
///
/// True: Crit players can use LOOC
/// False: Crit player LOOC gets redirected to dead chat
///
public static readonly CVarDef CritLoocEnabled = CVarDef.Create("looc.enabled_crit", false, CVar.NOTIFY | CVar.REPLICATED);
/*
* Entity Menu Grouping Types
*/
public static readonly CVarDef EntityMenuGroupingType = CVarDef.Create("entity_menu", 0, CVar.CLIENTONLY);
/*
* Whitelist
*/
///
/// Controls whether the server will deny any players that are not whitelisted in the DB.
///
public static readonly CVarDef WhitelistEnabled =
CVarDef.Create("whitelist.enabled", false, CVar.SERVERONLY);
///
/// The loc string to display as a disconnect reason when someone is not whitelisted.
///
public static readonly CVarDef WhitelistReason =
CVarDef.Create("whitelist.reason", "whitelist-not-whitelisted", CVar.SERVERONLY);
///
/// If the playercount is below this number, the whitelist will not apply.
///
public static readonly CVarDef WhitelistMinPlayers =
CVarDef.Create("whitelist.min_players", 0, CVar.SERVERONLY);
///
/// If the playercount is above this number, the whitelist will not apply.
///
public static readonly CVarDef WhitelistMaxPlayers =
CVarDef.Create("whitelist.max_players", int.MaxValue, CVar.SERVERONLY);
/*
* VOTE
*/
///
/// Allows enabling/disabling player-started votes for ultimate authority
///
public static readonly CVarDef VoteEnabled =
CVarDef.Create("vote.enabled", true, CVar.SERVERONLY);
///
/// See vote.enabled, but specific to restart votes
///
public static readonly CVarDef VoteRestartEnabled =
CVarDef.Create("vote.restart_enabled", true, CVar.SERVERONLY);
///
/// See vote.enabled, but specific to preset votes
///
public static readonly CVarDef VotePresetEnabled =
CVarDef.Create("vote.preset_enabled", true, CVar.SERVERONLY);
///
/// See vote.enabled, but specific to map votes
///
public static readonly CVarDef VoteMapEnabled =
CVarDef.Create("vote.map_enabled", false, CVar.SERVERONLY);
///
/// The required ratio of the server that must agree for a restart round vote to go through.
///
public static readonly CVarDef VoteRestartRequiredRatio =
CVarDef.Create("vote.restart_required_ratio", 0.85f, CVar.SERVERONLY);
///
/// Whether or not to restrict the restart vote when there's online admins.
///
public static readonly CVarDef VoteRestartNotAllowedWhenAdminOnline =
CVarDef.Create("vote.restart_not_allowed_when_admin_online", true, CVar.SERVERONLY);
///
/// The delay which two votes of the same type are allowed to be made by separate people, in seconds.
///
public static readonly CVarDef VoteSameTypeTimeout =
CVarDef.Create("vote.same_type_timeout", 240f, CVar.SERVERONLY);
///
/// Sets the duration of the map vote timer.
///
public static readonly CVarDef
VoteTimerMap = CVarDef.Create("vote.timermap", 90, CVar.SERVERONLY);
///
/// Sets the duration of the restart vote timer.
///
public static readonly CVarDef
VoteTimerRestart = CVarDef.Create("vote.timerrestart", 60, CVar.SERVERONLY);
///
/// Sets the duration of the gamemode/preset vote timer.
///
public static readonly CVarDef
VoteTimerPreset = CVarDef.Create("vote.timerpreset", 30, CVar.SERVERONLY);
///
/// Sets the duration of the map vote timer when ALONE.
///
public static readonly CVarDef
VoteTimerAlone = CVarDef.Create("vote.timeralone", 10, CVar.SERVERONLY);
/*
* BAN
*/
public static readonly CVarDef BanHardwareIds =
CVarDef.Create("ban.hardware_ids", true, CVar.SERVERONLY);
/*
* Procgen
*/
///
/// Should we pre-load all of the procgen atlasses.
///
public static readonly CVarDef ProcgenPreload =
CVarDef.Create("procgen.preload", true, CVar.SERVERONLY);
/*
* Shuttles
*/
// Look this is technically eye behavior but its main impact is shuttles so I just dumped it here.
///
/// If true then the camera will match the grid / map and is unchangeable.
/// - When traversing grids it will snap to 0 degrees rotation.
/// False means the player has control over the camera rotation.
/// - When traversing grids it will snap to the nearest cardinal which will generally be imperceptible.
///
public static readonly CVarDef CameraRotationLocked =
CVarDef.Create("shuttle.camera_rotation_locked", false, CVar.REPLICATED);
///
/// Whether the arrivals terminal should be on a planet map.
///
public static readonly CVarDef ArrivalsPlanet =
CVarDef.Create("shuttle.arrivals_planet", true, CVar.SERVERONLY);
///
/// Whether the arrivals shuttle is enabled.
///
public static readonly CVarDef ArrivalsShuttles =
CVarDef.Create("shuttle.arrivals", true, CVar.SERVERONLY);
///
/// The map to use for the arrivals station.
///
public static readonly CVarDef ArrivalsMap =
CVarDef.Create("shuttle.arrivals_map", "/Maps/Misc/terminal.yml", CVar.SERVERONLY);
///
/// Cooldown between arrivals departures. This should be longer than the FTL time or it will double cycle.
///
public static readonly CVarDef ArrivalsCooldown =
CVarDef.Create("shuttle.arrivals_cooldown", 50f, CVar.SERVERONLY);
///
/// Are players allowed to return on the arrivals shuttle.
///
public static readonly CVarDef ArrivalsReturns =
CVarDef.Create("shuttle.arrivals_returns", false, CVar.SERVERONLY);
///
/// Whether to automatically spawn escape shuttles.
///
public static readonly CVarDef GridFill =
CVarDef.Create("shuttle.grid_fill", true, CVar.SERVERONLY);
/*
* Emergency
*/
///
/// Is the emergency shuttle allowed to be early launched.
///
public static readonly CVarDef EmergencyEarlyLaunchAllowed =
CVarDef.Create("shuttle.emergency_early_launch_allowed", false, CVar.SERVERONLY);
///
/// How long the emergency shuttle remains docked with the station, in seconds.
///
public static readonly CVarDef EmergencyShuttleDockTime =
CVarDef.Create("shuttle.emergency_dock_time", 180f, CVar.SERVERONLY);
///
/// How long after the console is authorized for the shuttle to early launch.
///
public static readonly CVarDef EmergencyShuttleAuthorizeTime =
CVarDef.Create("shuttle.emergency_authorize_time", 10f, CVar.SERVERONLY);
///
/// The minimum time for the emergency shuttle to arrive at centcomm.
///
public static readonly CVarDef EmergencyShuttleMinTransitTime =
CVarDef.Create("shuttle.emergency_transit_time_min", 60f, CVar.SERVERONLY);
///
/// The maximum time for the emergency shuttle to arrive at centcomm.
///
public static readonly CVarDef EmergencyShuttleMaxTransitTime =
CVarDef.Create("shuttle.emergency_transit_time_max", 180f, CVar.SERVERONLY);
///
/// Whether the emergency shuttle is enabled or should the round just end.
///
public static readonly CVarDef EmergencyShuttleEnabled =
CVarDef.Create("shuttle.emergency", true, CVar.SERVERONLY);
///
/// The percentage of time passed from the initial call to when the shuttle can no longer be recalled.
/// ex. a call time of 10min and turning point of 0.5 means the shuttle cannot be recalled after 5 minutes.
///
public static readonly CVarDef EmergencyRecallTurningPoint =
CVarDef.Create("shuttle.recall_turning_point", 0.5f, CVar.SERVERONLY);
///
/// Time in minutes after round start to auto-call the shuttle. Set to zero to disable.
///
public static readonly CVarDef EmergencyShuttleAutoCallTime =
CVarDef.Create("shuttle.auto_call_time", 90, CVar.SERVERONLY);
///
/// Time in minutes after the round was extended (by recalling the shuttle) to call
/// the shuttle again.
///
public static readonly CVarDef EmergencyShuttleAutoCallExtensionTime =
CVarDef.Create("shuttle.auto_call_extension_time", 45, CVar.SERVERONLY);
/*
* Crew Manifests
*/
///
/// Setting this allows a crew manifest to be opened from any window
/// that has a crew manifest button, and sends the correct message.
/// If this is false, only in-game entities will allow you to see
/// the crew manifest, if the functionality is coded in.
/// Having administrator priveledge ignores this, but will still
/// hide the button in UI windows.
///
public static readonly CVarDef CrewManifestWithoutEntity =
CVarDef.Create("crewmanifest.no_entity", true, CVar.REPLICATED);
///
/// Setting this allows the crew manifest to be viewed from 'unsecure'
/// entities, such as the PDA.
///
public static readonly CVarDef CrewManifestUnsecure =
CVarDef.Create("crewmanifest.unsecure", true, CVar.REPLICATED);
///
/// Dictates the order the crew manifest will appear in, in terms of its sections.
/// Sections not in this list will appear at the end of the list, in no
/// specific order.
///
public static readonly CVarDef CrewManifestOrdering =
CVarDef.Create("crewmanifest.ordering", "Command,Security,Science,Medical,Engineering,Cargo,Civilian,Unknown",
CVar.REPLICATED);
/*
* Biomass
*/
///
/// Enabled: Cloning has 70% cost and reclaimer will refuse to reclaim corpses with souls. (For LRP).
/// Disabled: Cloning has full biomass cost and reclaimer can reclaim corpses with souls. (Playtested and balanced for MRP+).
///
public static readonly CVarDef BiomassEasyMode =
CVarDef.Create("biomass.easy_mode", true, CVar.SERVERONLY);
/*
* Anomaly
*/
///
/// A scale factor applied to a grid's bounds when trying to find a spot to randomly generate an anomaly.
///
public static readonly CVarDef AnomalyGenerationGridBoundsScale =
CVarDef.Create("anomaly.generation_grid_bounds_scale", 0.6f, CVar.SERVERONLY);
/*
* VIEWPORT
*/
public static readonly CVarDef ViewportStretch =
CVarDef.Create("viewport.stretch", true, CVar.CLIENTONLY | CVar.ARCHIVE);
public static readonly CVarDef ViewportFixedScaleFactor =
CVarDef.Create("viewport.fixed_scale_factor", 2, CVar.CLIENTONLY | CVar.ARCHIVE);
// This default is basically specifically chosen so fullscreen/maximized 1080p hits a 2x snap and does NN.
public static readonly CVarDef ViewportSnapToleranceMargin =
CVarDef.Create("viewport.snap_tolerance_margin", 64, CVar.CLIENTONLY | CVar.ARCHIVE);
public static readonly CVarDef ViewportSnapToleranceClip =
CVarDef.Create("viewport.snap_tolerance_clip", 32, CVar.CLIENTONLY | CVar.ARCHIVE);
public static readonly CVarDef ViewportScaleRender =
CVarDef.Create("viewport.scale_render", true, CVar.CLIENTONLY | CVar.ARCHIVE);
public static readonly CVarDef ViewportMinimumWidth =
CVarDef.Create("viewport.minimum_width", 15, CVar.REPLICATED);
public static readonly CVarDef ViewportMaximumWidth =
CVarDef.Create("viewport.maximum_width", 21, CVar.REPLICATED);
public static readonly CVarDef ViewportWidth =
CVarDef.Create("viewport.width", 21, CVar.CLIENTONLY | CVar.ARCHIVE);
/*
* UI
*/
public static readonly CVarDef UILayout =
CVarDef.Create("ui.layout", "Default", CVar.CLIENTONLY | CVar.ARCHIVE);
public static readonly CVarDef DefaultScreenChatSize =
CVarDef.Create("ui.default_chat_size", "", CVar.CLIENTONLY | CVar.ARCHIVE);
public static readonly CVarDef SeparatedScreenChatSize =
CVarDef.Create("ui.separated_chat_size", "0.6,0", CVar.CLIENTONLY | CVar.ARCHIVE);
/*
* CHAT
*/
///
/// Chat rate limit values are accounted in periods of this size (seconds).
/// After the period has passed, the count resets.
///
///
public static readonly CVarDef ChatRateLimitPeriod =
CVarDef.Create("chat.rate_limit_period", 2, CVar.SERVERONLY);
///
/// How many chat messages are allowed in a single rate limit period.
///
///
/// The total rate limit throughput per second is effectively
/// divided by .
///
///
///
public static readonly CVarDef ChatRateLimitCount =
CVarDef.Create("chat.rate_limit_count", 10, CVar.SERVERONLY);
///
/// If true, announce when a player breached chat rate limit to game administrators.
///
///
public static readonly CVarDef ChatRateLimitAnnounceAdmins =
CVarDef.Create("chat.rate_limit_announce_admins", true, CVar.SERVERONLY);
///
/// Minimum delay (in seconds) between announcements from .
///
public static readonly CVarDef ChatRateLimitAnnounceAdminsDelay =
CVarDef.Create("chat.rate_limit_announce_admins_delay", 15, CVar.SERVERONLY);
public static readonly CVarDef ChatMaxMessageLength =
CVarDef.Create("chat.max_message_length", 1000, CVar.SERVER | CVar.REPLICATED);
public static readonly CVarDef ChatSanitizerEnabled =
CVarDef.Create("chat.chat_sanitizer_enabled", true, CVar.SERVERONLY);
public static readonly CVarDef ChatShowTypingIndicator =
CVarDef.Create("chat.show_typing_indicator", true, CVar.CLIENTONLY);
public static readonly CVarDef ChatEnableFancyBubbles =
CVarDef.Create("chat.enable_fancy_bubbles", true, CVar.CLIENTONLY | CVar.ARCHIVE, "Toggles displaying fancy speech bubbles, which display the speaking character's name.");
public static readonly CVarDef ChatFancyNameBackground =
CVarDef.Create("chat.fancy_name_background", false, CVar.CLIENTONLY | CVar.ARCHIVE, "Toggles displaying a background under the speaking character's name.");
///
/// A message broadcast to each player that joins the lobby.
/// May be changed by admins ingame through use of the "set-motd" command.
/// In this case the new value, if not empty, is broadcast to all connected players and saved between rounds.
/// May be requested by any player through use of the "get-motd" command.
///
public static readonly CVarDef MOTD =
CVarDef.Create("chat.motd", "", CVar.SERVER | CVar.SERVERONLY | CVar.ARCHIVE, "A message broadcast to each player that joins the lobby.");
/*
* AFK
*/
///
/// How long a client can go without any input before being considered AFK.
///
public static readonly CVarDef AfkTime =
CVarDef.Create("afk.time", 60f, CVar.SERVERONLY);
/*
* IC
*/
///
/// Restricts IC character names to alphanumeric chars.
///
public static readonly CVarDef RestrictedNames =
CVarDef.Create("ic.restricted_names", true, CVar.SERVER | CVar.REPLICATED);
///
/// Allows flavor text (character descriptions)
///
public static readonly CVarDef FlavorText =
CVarDef.Create("ic.flavor_text", false, CVar.SERVER | CVar.REPLICATED);
///
/// Adds a period at the end of a sentence if the sentence ends in a letter.
///
public static readonly CVarDef ChatPunctuation =
CVarDef.Create("ic.punctuation", false, CVar.SERVER);
///
/// Enables automatically forcing IC name rules. Uppercases the first letter of the first and last words of the name
///
public static readonly CVarDef ICNameCase =
CVarDef.Create("ic.name_case", true, CVar.SERVER | CVar.REPLICATED);
///
/// Whether or not players' characters are randomly generated rather than using their selected characters in the creator.
///
public static readonly CVarDef ICRandomCharacters =
CVarDef.Create("ic.random_characters", false, CVar.SERVER);
///
/// A weighted random prototype used to determine the species selected for random characters.
///
public static readonly CVarDef ICRandomSpeciesWeights =
CVarDef.Create("ic.random_species_weights", "SpeciesWeights", CVar.SERVER);
///
/// Control displaying SSD indicators near players
///
public static readonly CVarDef ICShowSSDIndicator =
CVarDef.Create("ic.show_ssd_indicator", true, CVar.CLIENTONLY);
/*
* Salvage
*/
///
/// Forced salvage map prototype name (if empty, randomly selected)
///
public static readonly CVarDef
SalvageForced = CVarDef.Create("salvage.forced", "", CVar.SERVERONLY);
///
/// Duration for missions
///
public static readonly CVarDef
SalvageExpeditionDuration = CVarDef.Create("salvage.expedition_duration", 660f, CVar.REPLICATED);
///