Panic bunker min overall playtime & deny reason (#12811)

* Add min overall hours & reason

* Disable show reason by default
This commit is contained in:
Morb
2022-12-01 19:41:47 +03:00
committed by GitHub
parent ed3536fb7c
commit d956b8bfcc
3 changed files with 41 additions and 3 deletions

View File

@@ -5,6 +5,7 @@ using Content.Server.GameTicking;
using Content.Server.Preferences.Managers;
using Content.Shared.CCVar;
using Content.Shared.GameTicking;
using Content.Shared.Players.PlayTimeTracking;
using Robust.Server.Player;
using Robust.Shared.Configuration;
using Robust.Shared.Network;
@@ -103,10 +104,32 @@ namespace Content.Server.Connection
if (_cfg.GetCVar(CCVars.PanicBunkerEnabled))
{
var record = await _dbManager.GetPlayerRecordByUserId(userId);
var showReason = _cfg.GetCVar(CCVars.PanicBunkerShowReason);
if ((record is null ||
(record.FirstSeenTime.CompareTo(DateTimeOffset.Now - TimeSpan.FromMinutes(_cfg.GetCVar(CCVars.PanicBunkerMinAccountAge))) > 0)))
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;
if (showReason && !validAccountAge)
{
return (ConnectionDenyReason.Panic,
Loc.GetString("panic-bunker-account-denied-reason",
("reason", Loc.GetString("panic-bunker-account-reason-account", ("minutes", minMinutesAge)))), null);
}
var minOverallHours = _cfg.GetCVar(CCVars.PanicBunkerMinOverallHours);
var overallTime = ( await _db.GetPlayTimes(e.UserId)).Find(p => p.Tracker == PlayTimeTrackingShared.TrackerOverall);
var haveMinOverallTime = overallTime != null && overallTime.TimeSpent.TotalHours > minOverallHours;
if (showReason && !haveMinOverallTime)
{
return (ConnectionDenyReason.Panic,
Loc.GetString("panic-bunker-account-denied-reason",
("reason", Loc.GetString("panic-bunker-account-reason-overall", ("hours", minOverallHours)))), null);
}
if (!validAccountAge || !haveMinOverallTime)
{
return (ConnectionDenyReason.Panic, Loc.GetString("panic-bunker-account-denied"), null);
}