diff --git a/Content.Client/Lobby/LobbyUIController.cs b/Content.Client/Lobby/LobbyUIController.cs index 3dfe37e1b37..3b70114eea7 100644 --- a/Content.Client/Lobby/LobbyUIController.cs +++ b/Content.Client/Lobby/LobbyUIController.cs @@ -111,7 +111,7 @@ private void UpdateMonoCoinsDisplay() return; var balance = _monoCoins?.GetLastKnownBalance() ?? -1; - PreviewPanel.SetMonoCoinsText($"MonoCoins: {balance}"); + PreviewPanel.SetMonoCoinsText($"TriTokens: {balance}"); // Triad - Renamed MonoCoin. } private LobbyCharacterPreviewPanel? GetLobbyPreview() @@ -227,7 +227,7 @@ private void RefreshLobbyPreview() PreviewPanel.SetSummaryText(string.Empty); PreviewPanel.SetBankBalanceText(string.Empty); // Frontier PreviewPanel.SetCompanyText(string.Empty); // Company Display - PreviewPanel.SetMonoCoinsText("MonoCoins: -1"); // MonoCoins Display + PreviewPanel.SetMonoCoinsText("TriTokens: -1"); // MonoCoins Display // Triad - Renamed MonoCoins. return; } diff --git a/Content.Server/_Mono/MonoCoins/MonoCoinsSystem.cs b/Content.Server/_Mono/MonoCoins/MonoCoinsSystem.cs index 7a0385100fc..43cad58d1ab 100644 --- a/Content.Server/_Mono/MonoCoins/MonoCoinsSystem.cs +++ b/Content.Server/_Mono/MonoCoins/MonoCoinsSystem.cs @@ -11,6 +11,7 @@ using Robust.Server.Player; using Robust.Shared.Network; using Robust.Shared.Player; +using Robust.Shared.Timing; // Triad namespace Content.Server._Mono.MonoCoins; @@ -25,8 +26,16 @@ public sealed class MonoCoinsSystem : EntitySystem [Dependency] private readonly IChatManager _chatManager = default!; [Dependency] private readonly StationSystem _stationSystem = default!; [Dependency] private readonly StationRecordsSystem _stationRecords = default!; + [Dependency] private readonly IGameTiming _gameTiming = default!; // Triad - private const int RoundEndReward = 10; + private const int RoundEndReward = 1; // Triad - 1<10. Name is inaccurate; pay is hourly instead of at round-end. + + // Triad - Hourly instead of round-end. + private static readonly TimeSpan PayoutDelay = TimeSpan.FromSeconds(3600); + + [DataField, ViewVariables(VVAccess.ReadWrite)] + public TimeSpan NextPayoutTime; + // End Triad public override void Initialize() { @@ -40,8 +49,23 @@ public override void Initialize() SubscribeLocalEvent(OnPlayerDetached); // Subscribe to round end events - SubscribeLocalEvent(OnRoundEnd); + //SubscribeLocalEvent(OnRoundEnd); // Triad removal - Hourly instead of round-end. + } + + // Triad - Hourly instead of round-end. + public override void Update(float frameTime) + { + base.Update(frameTime); + + var curTime = _gameTiming.CurTime; + + if (curTime < NextPayoutTime) + return; + + OnRoundEnd(); + NextPayoutTime = curTime + PayoutDelay; } + // End Triad /// /// Handles requests for MonoCoins balance from clients. @@ -116,7 +140,7 @@ public async Task TrySubtractMonoCoinsAsync(NetUserId userId, int amount) /// /// Called when a round ends. Awards MonoCoins to players who appear in the station manifest. /// - private async void OnRoundEnd(RoundEndMessageEvent args) + private async void OnRoundEnd() // Triad - Removed argument. This is now called by Update. { // Award MonoCoins to players who appear in the station manifest var tasks = new List(); @@ -130,7 +154,7 @@ private async void OnRoundEnd(RoundEndMessageEvent args) } else { - Logger.Debug($"Player {session.Name} ({session.UserId}) not found in station manifest, skipping MonoCoins reward"); + Logger.Debug($"Player {session.Name} ({session.UserId}) not found in station manifest, skipping TriToken reward"); // Triad - MonoCoin rename. } } @@ -180,10 +204,10 @@ private async Task AwardRoundEndMonoCoins(ICommonSession session) try { var newBalance = await _db.AddMonoCoinsAsync(session.UserId, RoundEndReward); - Logger.Info($"Awarded {RoundEndReward} MonoCoins to player {session.Name} ({session.UserId}). New balance: {newBalance}"); + Logger.Info($"Awarded {RoundEndReward} TriToken to player {session.Name} ({session.UserId}). New balance: {newBalance}"); // Triad - TriToken rename. // Notify the player via chat - var notificationMessage = $"Round ended! You earned {RoundEndReward} MonoCoins. Your new balance: {newBalance}"; + var notificationMessage = $"You earned {RoundEndReward} hourly TriToken. Your new balance: {newBalance}."; // Triad - TriToken rename. _chatManager.ChatMessageToOne( ChatChannel.Notifications, notificationMessage, @@ -194,7 +218,7 @@ private async Task AwardRoundEndMonoCoins(ICommonSession session) } catch (Exception ex) { - Logger.Error($"Failed to award round end MonoCoins to player {session.Name} ({session.UserId}): {ex.Message}"); + Logger.Error($"Failed to award hourly TriToken to player {session.Name} ({session.UserId}): {ex.Message}"); // Triad - Hourly instead of round-end. TriToken rename. } } }