using Content.Shared.Administration;
using Content.Shared.CCVar.CVarAccess;
using Robust.Shared.Configuration;
namespace Content.Shared.CCVar;
public sealed partial class CCVars
{
///
/// Delay for auto-orientation. Used for people arriving via arrivals.
///
public static readonly CVarDef AutoOrientDelay =
CVarDef.Create("shuttle.auto_orient_delay", 2.0, CVar.SERVER | CVar.REPLICATED);
///
/// 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);
///
/// Should all players who spawn at arrivals have godmode until they leave the map?
///
public static readonly CVarDef GodmodeArrivals =
CVarDef.Create("shuttle.godmode_arrivals", false, CVar.SERVERONLY);
///
/// If a grid is split then hide any smaller ones under this mass (kg) from the map.
/// This is useful to avoid split grids spamming out labels.
///
public static readonly CVarDef HideSplitGridsUnder =
CVarDef.Create("shuttle.hide_split_grids_under", 30, CVar.SERVERONLY);
///
/// Whether to automatically spawn escape shuttles.
///
public static readonly CVarDef GridFill =
CVarDef.Create("shuttle.grid_fill", true, CVar.SERVERONLY);
///
/// Whether to automatically preloading grids by GridPreloaderSystem
///
public static readonly CVarDef PreloadGrids =
CVarDef.Create("shuttle.preload_grids", true, CVar.SERVERONLY);
///
/// How long the warmup time before FTL start should be.
///
public static readonly CVarDef FTLStartupTime =
CVarDef.Create("shuttle.startup_time", 5.5f, CVar.SERVERONLY);
///
/// How long a shuttle spends in FTL.
///
public static readonly CVarDef FTLTravelTime =
CVarDef.Create("shuttle.travel_time", 20f, CVar.SERVERONLY);
///
/// How long the final stage of FTL before arrival should be.
///
public static readonly CVarDef FTLArrivalTime =
CVarDef.Create("shuttle.arrival_time", 5f, CVar.SERVERONLY);
///
/// How much time needs to pass before a shuttle can FTL again.
///
public static readonly CVarDef FTLCooldown =
CVarDef.Create("shuttle.cooldown", 10f, CVar.SERVERONLY);
///
/// The maximum a grid can have before it becomes unable to FTL.
/// Any value equal to or less than zero will disable this check.
///
public static readonly CVarDef FTLMassLimit =
CVarDef.Create("shuttle.mass_limit", 300f, CVar.SERVERONLY);
///
/// How long to knock down entities for if they aren't buckled when FTL starts and stops.
///
public static readonly CVarDef HyperspaceKnockdownTime =
CVarDef.Create("shuttle.hyperspace_knockdown_time", 5f, CVar.SERVERONLY);
///
/// 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);
///
/// If the emergency shuttle can't dock at a priority port, the dock time will be multiplied with this value.
///
public static readonly CVarDef EmergencyShuttleDockTimeMultiplierOtherDock =
CVarDef.Create("shuttle.emergency_dock_time_multiplier_other_dock", 1.6667f, CVar.SERVERONLY);
///
/// If the emergency shuttle can't dock at all, the dock time will be multiplied with this value.
///
public static readonly CVarDef EmergencyShuttleDockTimeMultiplierNoDock =
CVarDef.Create("shuttle.emergency_dock_time_multiplier_no_dock", 2f, 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.
/// Actual minimum travel time cannot be less than
///
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.
///
[CVarControl(AdminFlags.Server | AdminFlags.Mapping, min: 0, max: int.MaxValue)]
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);
///
/// Impulse multiplier for player interactions that move grids (other than shuttle thrusters, gyroscopes and grid collisons).
/// At the moment this only affects the pushback in SpraySystem.
/// A higher value means grids have a lower effective mass and therefore will get pushed stronger.
/// A value of 0 will disable pushback.
/// The default has been chosen such that a one tile grid roughly equals 2/3 Urist masses.
/// TODO: Make grid mass a sane number so we can get rid of this.
/// At the moment they have a very low mass of roughly 0.48 kg per tile independent of any walls or anchored objects on them.
///
public static readonly CVarDef GridImpulseMultiplier =
CVarDef.Create("shuttle.grid_impulse_multiplier", 0.01f, CVar.SERVERONLY);
}