@@ -1,4 +1,4 @@
|
|||||||
using System.Collections.Immutable;
|
using System.Collections.Immutable;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Content.Server.Database;
|
using Content.Server.Database;
|
||||||
using Content.Server.GameTicking;
|
using Content.Server.GameTicking;
|
||||||
@@ -109,12 +109,19 @@ namespace Content.Server.Connection
|
|||||||
if (_cfg.GetCVar(CCVars.PanicBunkerEnabled))
|
if (_cfg.GetCVar(CCVars.PanicBunkerEnabled))
|
||||||
{
|
{
|
||||||
var showReason = _cfg.GetCVar(CCVars.PanicBunkerShowReason);
|
var showReason = _cfg.GetCVar(CCVars.PanicBunkerShowReason);
|
||||||
|
var customReason = _cfg.GetCVar(CCVars.PanicBunkerCustomReason);
|
||||||
|
|
||||||
var minMinutesAge = _cfg.GetCVar(CCVars.PanicBunkerMinAccountAge);
|
var minMinutesAge = _cfg.GetCVar(CCVars.PanicBunkerMinAccountAge);
|
||||||
var record = await _dbManager.GetPlayerRecordByUserId(userId);
|
var record = await _dbManager.GetPlayerRecordByUserId(userId);
|
||||||
var validAccountAge = record != null &&
|
var validAccountAge = record != null &&
|
||||||
record.FirstSeenTime.CompareTo(DateTimeOffset.Now - TimeSpan.FromMinutes(minMinutesAge)) <= 0;
|
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)
|
if (showReason && !validAccountAge)
|
||||||
{
|
{
|
||||||
return (ConnectionDenyReason.Panic,
|
return (ConnectionDenyReason.Panic,
|
||||||
@@ -126,6 +133,12 @@ namespace Content.Server.Connection
|
|||||||
var overallTime = ( await _db.GetPlayTimes(e.UserId)).Find(p => p.Tracker == PlayTimeTrackingShared.TrackerOverall);
|
var overallTime = ( await _db.GetPlayTimes(e.UserId)).Find(p => p.Tracker == PlayTimeTrackingShared.TrackerOverall);
|
||||||
var haveMinOverallTime = overallTime != null && overallTime.TimeSpent.TotalHours > minOverallHours;
|
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)
|
if (showReason && !haveMinOverallTime)
|
||||||
{
|
{
|
||||||
return (ConnectionDenyReason.Panic,
|
return (ConnectionDenyReason.Panic,
|
||||||
|
|||||||
@@ -298,6 +298,13 @@ namespace Content.Shared.CCVar
|
|||||||
public static readonly CVarDef<int> PanicBunkerMinOverallHours =
|
public static readonly CVarDef<int> PanicBunkerMinOverallHours =
|
||||||
CVarDef.Create("game.panic_bunker.min_overall_hours", 10, CVar.SERVERONLY);
|
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>
|
/// <summary>
|
||||||
/// Make people bonk when trying to climb certain objects like tables.
|
/// Make people bonk when trying to climb certain objects like tables.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
Reference in New Issue
Block a user