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;
+ record.FirstSeenTime.CompareTo(DateTimeOffset.Now - TimeSpan.FromMinutes(minMinutesAge)) <= 0;
+ var bypassAllowed = _cfg.GetCVar(CCVars.BypassBunkerWhitelist) && await _db.GetWhitelistStatusAsync(userId);
// Use the custom reason if it exists & they don't have the minimum account age
- if (customReason != string.Empty && !validAccountAge)
+ if (customReason != string.Empty && !validAccountAge && !bypassAllowed)
{
return (ConnectionDenyReason.Panic, customReason, null);
}
- if (showReason && !validAccountAge)
+ if (showReason && !validAccountAge && !bypassAllowed)
{
return (ConnectionDenyReason.Panic,
Loc.GetString("panic-bunker-account-denied-reason",
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)
+ if (customReason != string.Empty && !haveMinOverallTime && !bypassAllowed)
{
return (ConnectionDenyReason.Panic, customReason, null);
}
- if (showReason && !haveMinOverallTime)
+ if (showReason && !haveMinOverallTime && !bypassAllowed)
{
return (ConnectionDenyReason.Panic,
Loc.GetString("panic-bunker-account-denied-reason",
("reason", Loc.GetString("panic-bunker-account-reason-overall", ("hours", minOverallHours)))), null);
}
- if (!validAccountAge || !haveMinOverallTime)
+ if (!validAccountAge || !haveMinOverallTime && !bypassAllowed)
{
return (ConnectionDenyReason.Panic, Loc.GetString("panic-bunker-account-denied"), null);
}
public static readonly CVarDef<string> PanicBunkerCustomReason =
CVarDef.Create("game.panic_bunker.custom_reason", string.Empty, CVar.SERVERONLY);
+ /// <summary>
+ /// Allow bypassing the panic bunker if the user is whitelisted.
+ /// </summary>
+ public static readonly CVarDef<bool> BypassBunkerWhitelist =
+ CVarDef.Create("game.panic_bunker.whitelisted_can_bypass", true, CVar.SERVERONLY);
+
/// <summary>
/// Make people bonk when trying to climb certain objects like tables.
/// </summary>