using Robust.Shared.Configuration;
namespace Content.Shared._Goobstation.CCVar;
[CVarDefs]
public sealed partial class GoobCVars
{
///
/// Whether pipes will unanchor on ANY conflicting connection. May break maps.
/// If false, allows you to stack pipes as long as new directions are added (i.e. in a new pipe rotation, layer or multi-Z link), otherwise unanchoring them.
///
public static readonly CVarDef StrictPipeStacking =
CVarDef.Create("atmos.strict_pipe_stacking", false, CVar.SERVERONLY);
///
/// If an object's mass is below this number, then this number is used in place of mass to determine whether air pressure can throw an object.
/// This has nothing to do with throwing force, only acting as a way of reducing the odds of tiny 5 gram objects from being yeeted by people's breath
///
///
/// If you are reading this because you want to change it, consider looking into why almost every item in the game weighs only 5 grams
/// And maybe do your part to fix that? :)
///
public static readonly CVarDef SpaceWindMinimumCalculatedMass =
CVarDef.Create("atmos.space_wind_minimum_calculated_mass", 10f, CVar.SERVERONLY);
///
/// Calculated as 1/Mass, where Mass is the physics.Mass of the desired threshold.
/// If an object's inverse mass is lower than this, it is capped at this. Basically, an upper limit to how heavy an object can be before it stops resisting space wind more.
///
public static readonly CVarDef SpaceWindMaximumCalculatedInverseMass =
CVarDef.Create("atmos.space_wind_maximum_calculated_inverse_mass", 0.04f, CVar.SERVERONLY);
///
/// Increases default airflow calculations to O(n^2) complexity, for use with heavy space wind optimizations. Potato servers BEWARE
/// This solves the problem of objects being trapped in an infinite loop of slamming into a wall repeatedly.
///
public static readonly CVarDef MonstermosUseExpensiveAirflow =
CVarDef.Create("atmos.mmos_expensive_airflow", true, CVar.SERVERONLY);
///
/// A multiplier on the amount of force applied to Humanoid entities, as tracked by HumanoidAppearanceComponent
/// This multiplier is added after all other checks are made, and applies to both throwing force, and how easy it is for an entity to be thrown.
///
public static readonly CVarDef AtmosHumanoidThrowMultiplier =
CVarDef.Create("atmos.humanoid_throw_multiplier", 2f, CVar.SERVERONLY);
///
/// Taken as the cube of a tile's mass, this acts as a minimum threshold of mass for which air pressure calculates whether or not to rip a tile from the floor
/// This should be set by default to the cube of the game's lowest mass tile as defined in their prototypes, but can be increased for server performance reasons
///
public static readonly CVarDef MonstermosRipTilesMinimumPressure =
CVarDef.Create("atmos.monstermos_rip_tiles_min_pressure", 7500f, CVar.SERVERONLY);
///
/// Taken after the minimum pressure is checked, the effective pressure is multiplied by this amount.
/// This allows server hosts to finely tune how likely floor tiles are to be ripped apart by air pressure
///
public static readonly CVarDef MonstermosRipTilesPressureOffset =
CVarDef.Create("atmos.monstermos_rip_tiles_pressure_offset", 0.44f, CVar.SERVERONLY);
///
/// Indicates how much players are required for the round to be considered lowpop.
/// Used for dynamic gamemode.
///
public static readonly CVarDef LowpopThreshold =
CVarDef.Create("game.players.lowpop_threshold", 15f, CVar.SERVERONLY);
///
/// Indicates how much players are required for the round to be considered highpop.
/// Used for dynamic gamemode.
///
public static readonly CVarDef HighpopThreshold =
CVarDef.Create("game.players.highpop_threshold", 50f, CVar.SERVERONLY);
///
/// Is ore silo enabled.
///
public static readonly CVarDef SiloEnabled =
CVarDef.Create("goob.silo_enabled", true, CVar.SERVER | CVar.REPLICATED);
///
/// Set a max drunk time in seconds to prevent permanent drunkeness.
///
public static readonly CVarDef MaxDrunkTime =
CVarDef.Create("goob.max_drunk_time", 1500f, CVar.SERVER | CVar.REPLICATED);
#region Player Listener
///
/// Is sprint enabled.
///
public static readonly CVarDef ToggleSprint =
CVarDef.Create("control.toggle_sprint", true, CVar.CLIENTONLY | CVar.ARCHIVE);
///
/// Enable Dorm Notifier
///
public static readonly CVarDef DormNotifier =
CVarDef.Create("dorm_notifier.enable", true, CVar.SERVER);
///
/// Check for dorm activity every X amount of ticks
/// Default is 10.
///
public static readonly CVarDef DormNotifierFrequency =
CVarDef.Create("dorm_notifier.frequency", 10, CVar.SERVER);
///
/// Time given to be found to be engaging in dorm activity
/// Default is 180.
///
public static readonly CVarDef DormNotifierPresenceTimeout =
CVarDef.Create("dorm_notifier.timeout", 180, CVar.SERVER, "Mark as condemned if present near a dorm marker for more than X amount of seconds.");
///
/// Time given to be found engaging in dorm activity if any of the sinners are nude
/// Default if 60.
///
public static readonly CVarDef DormNotifierPresenceTimeoutNude =
CVarDef.Create("dorm_notifier.timeout_nude", 60, CVar.SERVER, "Mark as condemned if present near a dorm marker for more than X amount of seconds while being nude.");
///
/// Broadcast to all players that a player has ragequit.
///
public static readonly CVarDef PlayerRageQuitNotify =
CVarDef.Create("ragequit.notify", true, CVar.SERVERONLY);
///
/// Time between being eligible for a "rage quit" after reaching a damage threshold.
/// Default is 5f.
///
public static readonly CVarDef PlayerRageQuitTimeThreshold =
CVarDef.Create("ragequit.threshold", 30f, CVar.SERVERONLY);
///
/// Log ragequits to a discord webhook, set to empty to disable.
///
public static readonly CVarDef PlayerRageQuitDiscordWebhook =
CVarDef.Create("ragequit.discord_webhook", "", CVar.SERVERONLY | CVar.CONFIDENTIAL);
#endregion PlayerListener
#region Discord AHelp Reply System
///
/// If an admin replies to users from discord, should it use their discord role color? (if applicable)
/// Overrides DiscordReplyColor and AdminBwoinkColor.
///
public static readonly CVarDef UseDiscordRoleColor =
CVarDef.Create("admin.use_discord_role_color", true, CVar.SERVERONLY);
///
/// If an admin replies to users from discord, should it use their discord role name? (if applicable)
///
public static readonly CVarDef UseDiscordRoleName =
CVarDef.Create("admin.use_discord_role_name", true, CVar.SERVERONLY);
///
/// The text before an admin's name when replying from discord to indicate they're speaking from discord.
///
public static readonly CVarDef DiscordReplyPrefix =
CVarDef.Create("admin.discord_reply_prefix", "(DISCORD) ", CVar.SERVERONLY);
///
/// The color of the names of admins. This is the fallback color for admins.
///
public static readonly CVarDef AdminBwoinkColor =
CVarDef.Create("admin.admin_bwoink_color", "red", CVar.SERVERONLY);
///
/// The color of the names of admins who reply from discord. Leave empty to disable.
/// Overrides AdminBwoinkColor.
///
public static readonly CVarDef DiscordReplyColor =
CVarDef.Create("admin.discord_reply_color", string.Empty, CVar.SERVERONLY);
///
/// Use the admin's Admin OOC color in bwoinks.
/// If either the ooc color or this is not set, uses the admin.admin_bwoink_color value.
///
public static readonly CVarDef UseAdminOOCColorInBwoinks =
CVarDef.Create("admin.bwoink_use_admin_ooc_color", true, CVar.SERVERONLY);
///
/// Discord Webhook for the station report
///
public static readonly CVarDef StationReportDiscordWebHook =
CVarDef.Create("stationreport.discord_webhook", "", CVar.SERVERONLY | CVar.CONFIDENTIAL);
#endregion
///
/// Goobstation: The amount of time between NPC Silicons draining their battery in seconds.
///
public static readonly CVarDef SiliconNpcUpdateTime =
CVarDef.Create("silicon.npcupdatetime", 1.5f, CVar.SERVERONLY);
///
/// Should the player automatically get up after being knocked down
///
public static readonly CVarDef AutoGetUp =
CVarDef.Create("white.auto_get_up", true, CVar.CLIENT | CVar.ARCHIVE | CVar.REPLICATED); // WD EDIT
///
/// Sets the size of the hitbox where projectile/laser will hit any entity regardless of crawling
///
public static readonly CVarDef CrawlHitzoneSize =
CVarDef.Create("goob.crawl_hitzone_size", 0.4f, CVar.SERVER | CVar.REPLICATED);
#region Blob
public static readonly CVarDef BlobMax =
CVarDef.Create("blob.max", 3, CVar.SERVERONLY);
public static readonly CVarDef BlobPlayersPer =
CVarDef.Create("blob.players_per", 20, CVar.SERVERONLY);
public static readonly CVarDef BlobCanGrowInSpace =
CVarDef.Create("blob.grow_space", true, CVar.SERVER);
#endregion
#region Mechs
///
/// Whether or not players can use mech guns outside of mechs.
///
public static readonly CVarDef MechGunOutsideMech =
CVarDef.Create("mech.gun_outside_mech", true, CVar.SERVER | CVar.REPLICATED);
#endregion
#region RMC
public static readonly CVarDef RMCPatronLobbyMessageTimeSeconds =
CVarDef.Create("rmc.patron_lobby_message_time_seconds", 30, CVar.REPLICATED | CVar.SERVER);
public static readonly CVarDef RMCPatronLobbyMessageInitialDelaySeconds =
CVarDef.Create("rmc.patron_lobby_message_initial_delay_seconds", 5, CVar.REPLICATED | CVar.SERVER);
public static readonly CVarDef RMCDiscordAccountLinkingMessageLink =
CVarDef.Create("rmc.discord_account_linking_message_link", "", CVar.REPLICATED | CVar.SERVER);
#endregion
public static readonly CVarDef PatronSupportLastShown =
CVarDef.Create("patron.support_last_shown", "", CVar.CLIENTONLY | CVar.ARCHIVE);
public static readonly CVarDef PatronAskSupport =
CVarDef.Create("patron.ask_support", 7, CVar.REPLICATED | CVar.SERVER);
#region Xenobiology
public static readonly CVarDef BreedingInterval =
CVarDef.Create("xenobiology.breeding.interval", 1f, CVar.REPLICATED | CVar.SERVER);
#endregion
#region Goobcoins
public static readonly CVarDef GoobcoinsPerPlayer =
CVarDef.Create("servercurrency.per_player", 10, CVar.SERVERONLY);
public static readonly CVarDef GoobcoinNonAntagMultiplier =
CVarDef.Create("servercurrency.non_antag_multiplier", 1, CVar.SERVERONLY);
public static readonly CVarDef GoobcoinServerMultiplier =
CVarDef.Create("servercurrency.server_multiplier", 1, CVar.SERVERONLY);
public static readonly CVarDef GoobcoinMinPlayers =
CVarDef.Create("servercurrency.min_players", 5, CVar.SERVERONLY);
public static readonly CVarDef GoobcoinUseLowpopMultiplier =
CVarDef.Create("servercurrency.use_lowpop_multiplier", true, CVar.SERVERONLY);
public static readonly CVarDef GoobcoinLowpopMultiplierStrength =
CVarDef.Create("servercurrency.lowpop_multiplier_strength", 1.0, CVar.SERVERONLY);
public static readonly CVarDef GoobcoinUseShortRoundPenalty =
CVarDef.Create("servercurrency.use_shortround_penalty", true, CVar.SERVERONLY);
public static readonly CVarDef GoobcoinShortRoundPenaltyTargetMinutes =
CVarDef.Create("servercurrency.shortround_penalty_target_minutes", 90, CVar.SERVERONLY);
#endregion
#region Station Events
///
/// Makes station event schedulers behave as if time is sped up by this much.
/// Supported for secret, secret+, and game director.
///
public static readonly CVarDef StationEventSpeedup =
CVarDef.Create("stationevents.debug_speedup", 1f, CVar.SERVERONLY);
///
/// Makes station event schedulers consider the server to have this many extra living players.
/// Supported for secret+ and game director.
///
public static readonly CVarDef StationEventPlayerBias =
CVarDef.Create("stationevents.debug_player_bias", 0, CVar.SERVERONLY);
#region Game Director
// also used by secret+
public static readonly CVarDef MinimumTimeUntilFirstEvent =
CVarDef.Create("gamedirector.minimumtimeuntilfirstevent", 300f, CVar.SERVERONLY);
// used by secret+
public static readonly CVarDef RoundstartChaosScoreMultiplier =
CVarDef.Create("gamedirector.roundstart_chaos_score_multiplier", 1f, CVar.SERVERONLY);
public static readonly CVarDef GameDirectorDebugPlayerCount =
CVarDef.Create("gamedirector.debug_player_count", 80, CVar.SERVERONLY);
#endregion
#endregion
#region Contests System
///
/// The MASTER TOGGLE for the entire Contests System.
/// ALL CONTESTS BELOW, regardless of type or setting will output 1f when false.
///
public static readonly CVarDef DoContestsSystem =
CVarDef.Create("contests.do_contests_system", true, CVar.REPLICATED | CVar.SERVER);
///
/// Contest functions normally include an optional override to bypass the clamp set by max_percentage.
/// This CVar disables the bypass when false, forcing all implementations to comply with max_percentage.
///
public static readonly CVarDef AllowClampOverride =
CVarDef.Create("contests.allow_clamp_override", true, CVar.REPLICATED | CVar.SERVER);
///
/// Toggles all MassContest functions. All mass contests output 1f when false
///
public static readonly CVarDef DoMassContests =
CVarDef.Create("contests.do_mass_contests", true, CVar.REPLICATED | CVar.SERVER);
///
/// Toggles all StaminaContest functions. All stamina contests output 1f when false
///
public static readonly CVarDef DoStaminaContests =
CVarDef.Create("contests.do_stamina_contests", true, CVar.REPLICATED | CVar.SERVER);
///
/// Toggles all HealthContest functions. All health contests output 1f when false
///
public static readonly CVarDef DoHealthContests =
CVarDef.Create("contests.do_health_contests", true, CVar.REPLICATED | CVar.SERVER);
///
/// Toggles all MindContest functions. All mind contests output 1f when false.
/// MindContests are not currently implemented, and are awaiting completion of the Psionic Refactor
///
public static readonly CVarDef DoMindContests =
CVarDef.Create("contests.do_mind_contests", true, CVar.REPLICATED | CVar.SERVER);
///
/// The maximum amount that Mass Contests can modify a physics multiplier, given as a +/- percentage
/// Default of 0.25f outputs between * 0.75f and 1.25f
///
public static readonly CVarDef MassContestsMaxPercentage =
CVarDef.Create("contests.max_percentage", 1f, CVar.REPLICATED | CVar.SERVER);
#endregion
#region Shoving - WD Port
///
/// Shove range multiplier.
///
public static readonly CVarDef ShoveRange =
CVarDef.Create("game.shove_range", 0.6f, CVar.SERVER | CVar.ARCHIVE);
///
/// Shove speed multiplier, does not affect range.
///
public static readonly CVarDef ShoveSpeed =
CVarDef.Create("game.shove_speed", 4f, CVar.SERVER | CVar.ARCHIVE);
///
/// How much should the mass difference affect shove range & speed.
///
public static readonly CVarDef ShoveMassFactor =
CVarDef.Create("game.shove_mass_factor", 3f, CVar.SERVER | CVar.ARCHIVE);
#endregion
#region Chat
///
/// Whether or not to log actions in the chat.
///
public static readonly CVarDef LogInChat =
CVarDef.Create("chat.log_in_chat", true, CVar.CLIENT | CVar.ARCHIVE | CVar.REPLICATED);
///
/// Whether or not to coalesce identical messages in the chat.
///
public static readonly CVarDef CoalesceIdenticalMessages =
CVarDef.Create("chat.coalesce_identical_messages", true, CVar.CLIENT | CVar.ARCHIVE | CVar.CLIENTONLY);
///
/// Set to true to enable voice barks and disable default speech sounds.
///
public static readonly CVarDef BarksEnabled =
CVarDef.Create("voice.barks_enabled", false, CVar.SERVER | CVar.REPLICATED | CVar.ARCHIVE);
///
/// Client volume setting for barks.
///
public static readonly CVarDef BarksVolume =
CVarDef.Create("voice.barks_volume", 1f, CVar.CLIENTONLY | CVar.ARCHIVE);
#endregion
#region Voicechat
///
/// Controls whether the Lidgren voice chat server is enabled and running.
///
public static readonly CVarDef VoiceChatEnabled =
CVarDef.Create("voice.enabled", false, CVar.SERVER | CVar.REPLICATED | CVar.ARCHIVE, "Is the voice chat server enabled?");
///
/// The UDP port the Lidgren voice chat server will listen on.
///
public static readonly CVarDef VoiceChatPort =
CVarDef.Create("voice.vc_server_port", 1213, CVar.SERVER | CVar.REPLICATED, "Port for the voice chat server.");
public static readonly CVarDef VoiceChatVolume =
CVarDef.Create("voice.volume", 5f, CVar.CLIENTONLY | CVar.ARCHIVE);
///
/// Multiplier for the adaptive buffer target size calculation.
///
public static readonly CVarDef VoiceChatBufferTargetMultiplier =
CVarDef.Create("voice.buffer_target_multiplier", 1.0f, CVar.CLIENTONLY | CVar.ARCHIVE, "Multiplier for adaptive buffer target size calculation.");
///
/// Minimum buffer size for voice chat, regardless of network conditions.
///
public static readonly CVarDef VoiceChatMinBufferSize =
CVarDef.Create("voice.min_buffer_size", 10, CVar.CLIENTONLY | CVar.ARCHIVE, "Minimum buffer size for voice chat.");
///
/// Maximum buffer size for voice chat to prevent excessive memory usage.
///
public static readonly CVarDef VoiceChatMaxBufferSize =
CVarDef.Create("voice.max_buffer_size", 50, CVar.CLIENTONLY | CVar.ARCHIVE, "Maximum buffer size for voice chat.");
///
/// Enable advanced time-stretching algorithms for better audio quality.
///
public static readonly CVarDef VoiceChatAdvancedTimeStretch =
CVarDef.Create("voice.advanced_time_stretch", true, CVar.CLIENTONLY | CVar.ARCHIVE, "Enable advanced time-stretching for voice chat.");
///
/// Enable debug logging for voice chat buffer management.
///
public static readonly CVarDef VoiceChatDebugLogging =
CVarDef.Create("voice.debug_logging", false, CVar.CLIENTONLY | CVar.ARCHIVE, "Enable debug logging for voice chat buffer management.");
///
/// Whether to hear audio from your own entity (useful for testing).
///
public static readonly CVarDef VoiceChatHearSelf =
CVarDef.Create("voice.hear_self", false, CVar.CLIENTONLY | CVar.ARCHIVE, "Whether to hear audio from your own entity.");
#endregion
#region Queue
///
/// Controls if the connections queue is enabled
/// If enabled plyaers will be added to a queue instead of being kicked after SoftMaxPlayers is reached
///
public static readonly CVarDef QueueEnabled =
CVarDef.Create("queue.enabled", false, CVar.SERVERONLY);
///
/// If enabled patrons will be sent to the front of the queue.
///
public static readonly CVarDef PatreonSkip =
CVarDef.Create("queue.patreon_skip", true, CVar.SERVERONLY);
#endregion
#region Admin Overlay
///
/// If true, the admin overlay will show the characters name.
///
public static readonly CVarDef AdminOverlayShowCharacterName =
CVarDef.Create("ui.admin_overlay_show_character_name", true, CVar.CLIENTONLY | CVar.ARCHIVE);
///
/// If true, the admin overlay will show their username.
///
public static readonly CVarDef AdminOverlayShowUserName =
CVarDef.Create("ui.admin_overlay_show_user_name", true, CVar.CLIENTONLY | CVar.ARCHIVE);
///
/// If true, the admin overlay will show their job.
///
public static readonly CVarDef AdminOverlayShowJob =
CVarDef.Create("ui.admin_overlay_show_job", true, CVar.CLIENTONLY | CVar.ARCHIVE);
#endregion
#region Movement
public static readonly CVarDef MaxSpeed =
CVarDef.Create("movement.max_speed", 2.7f, CVar.SERVER | CVar.REPLICATED);
#endregion
#region LightDetection
///
/// Lookup range for LightDetectionSystem to use. Normally should be the same value as the strongest light source.
///
public static readonly CVarDef LightDetectionRange =
CVarDef.Create("light.detection_range", 10f, CVar.SERVER);
///
/// How often will light detection update its value, in seconds.
///
public static readonly CVarDef LightUpdateFrequency =
CVarDef.Create("light.detection_update_frequency", 1f, CVar.SERVER);
///
/// Maximum light level for light detection system to check.
///
public static readonly CVarDef LightMaximumLevel =
CVarDef.Create("light.maximum_light_level", 10f, CVar.SERVER);
#endregion
# region Explosions
///
/// Random variation to limb damage on explosion
/// 0 means no variation - all limbs are damaged the same
///
public static readonly CVarDef ExplosionLimbDamageVariation =
CVarDef.Create("explosion.damage_variation", 2f, CVar.SERVERONLY);
///
/// Multiplier to wounds caused by explosion damage
/// Applies to Brute and Burn damage
///
public static readonly CVarDef ExplosionWoundMultiplier =
CVarDef.Create("explosion.wounding_multiplier", 8f, CVar.SERVERONLY);
#endregion
#region Misc
///
/// Whether or not to automatically focus the search bar when opening the build menu.
///
public static readonly CVarDef AutoFocusSearchOnBuildMenu =
CVarDef.Create("ui.auto_focus_search_on_build_menu", true, CVar.CLIENTONLY | CVar.ARCHIVE);
///
/// Whether or not to show detailed examine text.
///
public static readonly CVarDef DetailedExamine =
CVarDef.Create("misc.detailed_examine", true, CVar.CLIENT | CVar.ARCHIVE | CVar.REPLICATED);
///
/// Fire damage
///
public static readonly CVarDef FireStackHeat =
CVarDef.Create("misc.fire_stack_heat", 1500, CVar.SERVER);
///
/// Set to true to enable the dynamic hostname system.
///
public static readonly CVarDef UseDynamicHostname =
CVarDef.Create("hub.use_dynamic_hostname", false, CVar.SERVERONLY);
///
/// Determines minimum amount of solution you have to step into for footprints to be created.
///
public static readonly CVarDef MinimumPuddleSizeForFootprints =
CVarDef.Create("footprints.minimum_puddle_size", 6f, CVar.SERVERONLY);
///
/// Should heretic ascension ritual be cancelled if heretic hasn't completed their objectives.
///
public static readonly CVarDef AscensionRequiresObjectives =
CVarDef.Create("heretic.ascension_requires_objectives", true, CVar.SERVERONLY);
///
/// A multiplier for bloodloss damage and heal.
///
public static readonly CVarDef BleedMultiplier =
CVarDef.Create("medical.bloodloss_multiplier", 4.0f, CVar.SERVER);
///
/// Enable admin notification sounds
///
public static readonly CVarDef AdminNotificationVolume =
CVarDef.Create("admin.notification_volume", 1f, CVar.CLIENT | CVar.CLIENTONLY | CVar.ARCHIVE);
#endregion
///
/// Enables or disables contraband icons.
///
public static readonly CVarDef ContrabandIconsEnabled =
CVarDef.Create("contraband.icons_enabled", false, CVar.SERVER | CVar.REPLICATED);
}