using Robust.Shared; using Robust.Shared.Configuration; using Robust.Shared.Utility; 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); /* * 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", 5f, 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.0f, CVar.ARCHIVE | CVar.CLIENTONLY); /// /// Whether to play the station ambience (humming) sound /// public static readonly CVarDef StationAmbienceEnabled = CVarDef.Create("ambience.station_ambience", true, CVar.ARCHIVE | CVar.CLIENTONLY); /// /// Whether to play the space ambience /// public static readonly CVarDef SpaceAmbienceEnabled = CVarDef.Create("ambience.space_ambience", true, 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); /* * Game */ /// /// Controls if the game should run station events /// public static readonly CVarDef EventsEnabled = CVarDef.Create("events.enabled", true, CVar.ARCHIVE | CVar.SERVERONLY); /// /// 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", false, 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", "sandbox", 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", "saltern", CVar.SERVERONLY); /// /// Controls if the game should obey map criteria or not. Overriden if a map vote or similar occurs. /// public static readonly CVarDef GameMapForced = CVarDef.Create("game.mapforced", false, 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); /// /// 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.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); #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 /* * Discord */ public static readonly CVarDef DiscordAHelpWebhook = CVarDef.Create("discord.ahelp_webhook", 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", 5); 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", 7); public static readonly CVarDef TraitorPlayersPerTraitor = CVarDef.Create("traitor.players_per_traitor", 5); 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); /* * TraitorDeathMatch */ public static readonly CVarDef TraitorDeathMatchStartingBalance = CVarDef.Create("traitordm.starting_balance", 20); /* * Nukeops */ public static readonly CVarDef NukeopsMinPlayers = CVarDef.Create("nukeops.min_players", 15); public static readonly CVarDef NukeopsMaxOps = CVarDef.Create("nukeops.max_ops", 6); public static readonly CVarDef NukeopsPlayersPerOp = CVarDef.Create("nukeops.players_per_op", 5); /* * Zombie */ public static readonly CVarDef ZombieMinPlayers = CVarDef.Create("zombie.min_players", 20); public static readonly CVarDef ZombieMaxInitialInfected = CVarDef.Create("zombie.max_initial_infected", 6); public static readonly CVarDef ZombiePlayersPerInfected = CVarDef.Create("zombie.players_per_infected", 10); /* * 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); /* * Console */ public static readonly CVarDef ConsoleLoginLocal = CVarDef.Create("console.loginlocal", true, 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); #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", "", CVar.SERVERONLY); public static readonly CVarDef DatabasePgPassword = CVarDef.Create("database.pg_password", "", 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 */ /* * WARNING: These are liable to get changed to datafields whenever movement refactor occurs and may no longer be valid. * You were warned! */ /// /// Minimum speed a mob has to be moving before applying movement friction. /// public static readonly CVarDef MinimumFrictionSpeed = CVarDef.Create("physics.minimum_friction_speed", 0.005f, CVar.ARCHIVE | CVar.REPLICATED); /// /// The acceleration applied to mobs when moving. /// public static readonly CVarDef MobAcceleration = CVarDef.Create("physics.mob_acceleration", 14f, CVar.ARCHIVE | CVar.REPLICATED); /// /// The negative velocity applied for friction. /// public static readonly CVarDef MobFriction = CVarDef.Create("physics.mob_friction", 14f, CVar.ARCHIVE | CVar.REPLICATED); /// /// The acceleration applied to mobs when moving and weightless. /// public static readonly CVarDef MobWeightlessAcceleration = CVarDef.Create("physics.mob_weightless_acceleration", 1f, CVar.ARCHIVE | CVar.REPLICATED); /// /// The negative velocity applied for friction when weightless and providing inputs. /// public static readonly CVarDef MobWeightlessFriction = CVarDef.Create("physics.mob_weightless_friction", 1f, CVar.ARCHIVE | CVar.REPLICATED); /// /// The negative velocity applied for friction when weightless and not providing inputs. /// This is essentially how much their speed decreases per second. /// public static readonly CVarDef MobWeightlessFrictionNoInput = CVarDef.Create("physics.mob_weightless_friction_no_input", 0.2f, CVar.ARCHIVE | CVar.REPLICATED); /// /// The movement speed modifier applied to a mob's total input velocity when weightless. /// public static readonly CVarDef MobWeightlessModifier = CVarDef.Create("physics.mob_weightless_modifier", 0.7f, CVar.ARCHIVE | CVar.REPLICATED); /// /// 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); /* * Admin sounds */ public static readonly CVarDef AdminSoundsEnabled = CVarDef.Create("audio.admin_sounds_enabled", true, CVar.ARCHIVE | CVar.CLIENTONLY); /* * 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 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", 64); public static readonly CVarDef NPCEnabled = CVarDef.Create("npc.enabled", 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 stuff */ 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); /* * 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); /// /// Client-side explosion visuals: for how many seconds should an explosion stay on-screen once it has /// finished expanding? /// public static readonly CVarDef ExplosionPersistence = CVarDef.Create("explosion.persistence", 0.3f, CVar.REPLICATED); /// /// 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); /* * 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); public static readonly CVarDef AdminLogsQueueMax = CVarDef.Create("adminlogs.queue_max", 5000, CVar.SERVERONLY); public static readonly CVarDef AdminLogsPreRoundQueueMax = CVarDef.Create("adminlogs.pre_round_queue_max", 5000, 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", true, 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); /// /// Whether atmos superconduction is enabled. /// /// Disabled by default, superconduction is awful. public static readonly CVarDef Superconduction = CVarDef.Create("atmos.superconduction", false, 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); /* * 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); /* * 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); /* * Shuttles */ public static readonly CVarDef ShuttleMaxLinearSpeed = CVarDef.Create("shuttle.max_linear_speed", 13f, CVar.SERVERONLY); public static readonly CVarDef ShuttleMaxAngularSpeed = CVarDef.Create("shuttle.max_angular_speed", 1.4f, CVar.SERVERONLY); public static readonly CVarDef ShuttleMaxAngularAcc = CVarDef.Create("shuttle.max_angular_acc", 2f, CVar.SERVERONLY); public static readonly CVarDef ShuttleMaxAngularMomentum = CVarDef.Create("shuttle.max_angular_momentum", 60000f, CVar.SERVERONLY); public static readonly CVarDef ShuttleIdleLinearDamping = CVarDef.Create("shuttle.idle_linear_damping", 50f, CVar.SERVERONLY); public static readonly CVarDef ShuttleIdleAngularDamping = CVarDef.Create("shuttle.idle_angular_damping", 100f, CVar.SERVERONLY); /// /// Whether cargo shuttles are enabled. /// public static readonly CVarDef CargoShuttles = CVarDef.Create("shuttle.cargo", true, CVar.SERVERONLY); /* * Emergency */ /// /// 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); /// /// How long after the console is authorized for the shuttle to early launch. /// public static readonly CVarDef EmergencyShuttleTransitTime = CVarDef.Create("shuttle.emergency_transit_time", 60f, CVar.SERVERONLY); /// /// Whether the emergency shuttle is enabled or should the round just end. /// public static readonly CVarDef EmergencyShuttleEnabled = CVarDef.Create("shuttle.emergency_enabled", 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); /// /// The map to load for centcomm for the emergency shuttle to dock to. /// public static readonly CVarDef CentcommMap = CVarDef.Create("shuttle.centcomm_map", "/Maps/centcomm.yml", 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); /* * CHAT */ 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); /* * 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); /* * Salvage */ /// /// Forced salvage map prototype name (if empty, randomly selected) /// public static readonly CVarDef SalvageForced = CVarDef.Create("salvage.forced", "", CVar.SERVERONLY); /* * Rules */ /// /// Time that players have to wait before rules can be accepted. /// public static readonly CVarDef RulesWaitTime = CVarDef.Create("rules.time", 45f, CVar.SERVER | CVar.REPLICATED); /// /// Don't show rules to localhost/loopback interface. /// public static readonly CVarDef RulesExemptLocal = CVarDef.Create("rules.exempt_local", true, CVar.SERVERONLY); /* * Autogeneration */ public static readonly CVarDef DestinationFile = CVarDef.Create("autogen.destination_file", "", CVar.SERVER | CVar.SERVERONLY); /* * Network Resource Manager */ /// /// Controls whether new resources can be uploaded by admins. /// Does not prevent already uploaded resources from being sent. /// public static readonly CVarDef ResourceUploadingEnabled = CVarDef.Create("netres.enabled", true, CVar.REPLICATED | CVar.SERVER); /// /// Controls the data size limit in megabytes for uploaded resources. If they're too big, they will be dropped. /// Set to zero or a negative value to disable limit. /// public static readonly CVarDef ResourceUploadingLimitMb = CVarDef.Create("netres.limit", 3f, CVar.REPLICATED | CVar.SERVER); /// /// Whether uploaded files will be stored in the server's database. /// This is useful to keep "logs" on what files admins have uploaded in the past. /// public static readonly CVarDef ResourceUploadingStoreEnabled = CVarDef.Create("netres.store_enabled", true, CVar.SERVER | CVar.SERVERONLY); /// /// Numbers of days before stored uploaded files are deleted. Set to zero or negative to disable auto-delete. /// This is useful to free some space automatically. Auto-deletion runs only on server boot. /// public static readonly CVarDef ResourceUploadingStoreDeletionDays = CVarDef.Create("netres.store_deletion_days", 30, CVar.SERVER | CVar.SERVERONLY); /* * Controls */ /// /// Deadzone for drag-drop interactions. /// public static readonly CVarDef DragDropDeadZone = CVarDef.Create("control.drag_dead_zone", 12f, CVar.CLIENTONLY | CVar.ARCHIVE); /* * UPDATE */ /// /// If a server update restart is pending, the delay after the last player leaves before we actually restart. In seconds. /// public static readonly CVarDef UpdateRestartDelay = CVarDef.Create("update.restart_delay", 20f, CVar.SERVERONLY); /* * Ghost */ /// /// The time you must spend reading the rules, before the "Request" button is enabled /// public static readonly CVarDef GhostRoleTime = CVarDef.Create("ghost.role_time", 3f, CVar.REPLICATED); } }