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);
#region impacts
///
/// Whether shuttle impacts should do anything beyond produce a sound.
///
[CVarControl(AdminFlags.VarEdit)]
public static readonly CVarDef ImpactEnabled =
CVarDef.Create("shuttle.impact.enabled", true, CVar.SERVERONLY);
///
/// Minimum impact inertia to trigger special shuttle impact behaviors when impacting slower than MinimumImpactVelocity.
///
[CVarControl(AdminFlags.VarEdit)]
public static readonly CVarDef MinimumImpactInertia =
CVarDef.Create("shuttle.impact.minimum_inertia", 5f * 50f, CVar.SERVERONLY); // 100tile grid (cargo shuttle) going at 5 m/s
///
/// Minimum velocity difference between 2 bodies for a shuttle impact to be guaranteed to trigger any special behaviors like damage.
///
[CVarControl(AdminFlags.VarEdit)]
public static readonly CVarDef MinimumImpactVelocity =
CVarDef.Create("shuttle.impact.minimum_velocity", 15f, CVar.SERVERONLY); // needed so that random space debris can be rammed
///
/// Multiplier of Kinetic energy required to dismantle a single tile in relation to its mass
///
[CVarControl(AdminFlags.VarEdit)]
public static readonly CVarDef TileBreakEnergyMultiplier =
CVarDef.Create("shuttle.impact.tile_break_energy", 3000f, CVar.SERVERONLY);
///
/// Multiplier of damage done to entities on colliding areas
///
[CVarControl(AdminFlags.VarEdit)]
public static readonly CVarDef ImpactDamageMultiplier =
CVarDef.Create("shuttle.impact.damage_multiplier", 0.00005f, CVar.SERVERONLY);
///
/// Multiplier of additional structural damage to do
///
[CVarControl(AdminFlags.VarEdit)]
public static readonly CVarDef ImpactStructuralDamage =
CVarDef.Create("shuttle.impact.structural_damage", 5f, CVar.SERVERONLY);
///
/// Kinetic energy required to spawn sparks
///
[CVarControl(AdminFlags.VarEdit)]
public static readonly CVarDef SparkEnergy =
CVarDef.Create("shuttle.impact.spark_energy", 2000000f, CVar.SERVERONLY);
///
/// Area to consider for impact calculations
///
[CVarControl(AdminFlags.VarEdit)]
public static readonly CVarDef ImpactRadius =
CVarDef.Create("shuttle.impact.radius", 4f, CVar.SERVERONLY);
///
/// Affects slowdown on impact
///
[CVarControl(AdminFlags.VarEdit)]
public static readonly CVarDef ImpactSlowdown =
CVarDef.Create("shuttle.impact.slowdown", 8f, CVar.SERVERONLY);
///
/// Minimum velocity change from impact for special throw effects (e.g. stuns, beakers breaking) to occur
///
[CVarControl(AdminFlags.VarEdit)]
public static readonly CVarDef ImpactMinThrowVelocity =
CVarDef.Create("shuttle.impact.min_throw_velocity", 1f, CVar.SERVERONLY); // due to how it works this is about 16 m/s for cargo shuttle
///
/// Affects how much damage reduction to give to grids with higher mass
///
[CVarControl(AdminFlags.VarEdit)]
public static readonly CVarDef ImpactMassBias =
CVarDef.Create("shuttle.impact.mass_bias", 0.65f, CVar.SERVERONLY);
///
/// How much should total grid inertia affect our collision damage
///
[CVarControl(AdminFlags.VarEdit)]
public static readonly CVarDef ImpactInertiaScaling =
CVarDef.Create("shuttle.impact.inertia_scaling", 0.5f, CVar.SERVERONLY);
#endregion
}