-using System.Collections.Immutable;
+using System.Collections.Immutable;
using System.Threading.Tasks;
using Content.Server.Database;
using Content.Server.GameTicking;
if (_cfg.GetCVar(CCVars.PanicBunkerEnabled))
{
var showReason = _cfg.GetCVar(CCVars.PanicBunkerShowReason);
+ var customReason = _cfg.GetCVar(CCVars.PanicBunkerCustomReason);
var minMinutesAge = _cfg.GetCVar(CCVars.PanicBunkerMinAccountAge);
var record = await _dbManager.GetPlayerRecordByUserId(userId);
var validAccountAge = record != null &&
record.FirstSeenTime.CompareTo(DateTimeOffset.Now - TimeSpan.FromMinutes(minMinutesAge)) <= 0;
+ // Use the custom reason if it exists & they don't have the minimum account age
+ if (customReason != string.Empty && !validAccountAge)
+ {
+ return (ConnectionDenyReason.Panic, customReason, null);
+ }
+
if (showReason && !validAccountAge)
{
return (ConnectionDenyReason.Panic,
var overallTime = ( await _db.GetPlayTimes(e.UserId)).Find(p => p.Tracker == PlayTimeTrackingShared.TrackerOverall);
var haveMinOverallTime = overallTime != null && overallTime.TimeSpent.TotalHours > minOverallHours;
+ // Use the custom reason if it exists & they don't have the minimum time
+ if (customReason != string.Empty && !haveMinOverallTime)
+ {
+ return (ConnectionDenyReason.Panic, customReason, null);
+ }
+
if (showReason && !haveMinOverallTime)
{
return (ConnectionDenyReason.Panic,
public static readonly CVarDef<int> PanicBunkerMinOverallHours =
CVarDef.Create("game.panic_bunker.min_overall_hours", 10, CVar.SERVERONLY);
+ /// <summary>
+ /// A custom message that will be used for connections denied to the panic bunker
+ /// If not empty, then will overwrite <see cref="PanicBunkerShowReason"/>
+ /// </summary>
+ public static readonly CVarDef<string> PanicBunkerCustomReason =
+ CVarDef.Create("game.panic_bunker.custom_reason", string.Empty, CVar.SERVERONLY);
+
/// <summary>
/// Make people bonk when trying to climb certain objects like tables.
/// </summary>