From 4dec2b4e7b8cf7dcbd1957db82e0582a666c2a9d Mon Sep 17 00:00:00 2001 From: Chomp Date: Sun, 12 Jan 2025 19:44:23 +0000 Subject: [PATCH] Implemented `QuestHelper` methods --- Core/Helpers/QuestHelper.cs | 51 ++++++++++++++++++++++++++++++++++--- 1 file changed, 48 insertions(+), 3 deletions(-) diff --git a/Core/Helpers/QuestHelper.cs b/Core/Helpers/QuestHelper.cs index 1b8c1f27..4234afa4 100644 --- a/Core/Helpers/QuestHelper.cs +++ b/Core/Helpers/QuestHelper.cs @@ -5,6 +5,8 @@ using Core.Models.Eft.Hideout; using Core.Models.Eft.ItemEvent; using Core.Models.Eft.Quests; using Core.Models.Enums; +using Core.Models.Spt.Config; +using Core.Servers; using Core.Services; using Core.Utils; using ILogger = Core.Models.Utils.ILogger; @@ -19,19 +21,26 @@ public class QuestHelper private readonly DatabaseService _databaseService; private readonly QuestConditionHelper _questConditionHelper; private readonly ProfileHelper _profileHelper; + private readonly LocalisationService _localisationService; + private readonly QuestConfig _questConfig; public QuestHelper( ILogger logger, TimeUtil timeUtil, DatabaseService databaseService, QuestConditionHelper questConditionHelper, - ProfileHelper profileHelper) + ProfileHelper profileHelper, + LocalisationService localisationService, + ConfigServer configServer) { _logger = logger; _timeUtil = timeUtil; _databaseService = databaseService; _questConditionHelper = questConditionHelper; _profileHelper = profileHelper; + _localisationService = localisationService; + + _questConfig = configServer.GetConfig(ConfigTypes.QUEST); } /// @@ -53,7 +62,30 @@ public class QuestHelper /// true if player level is greater than or equal to quest public bool DoesPlayerLevelFulfilCondition(double playerLevel, QuestCondition condition) { - throw new System.NotImplementedException(); + if (condition.ConditionType == "Level") + { + var conditionValue = double.Parse(condition.Value.ToString()); + switch (condition.CompareMethod) + { + case ">=": + return playerLevel >= conditionValue; + case ">": + return playerLevel > conditionValue; + case "<": + return playerLevel < conditionValue; + case "<=": + return playerLevel <= conditionValue; + case "=": + return playerLevel == conditionValue; + default: + _logger.Error( + _localisationService.GetText("quest-unable_to_find_compare_condition", condition.CompareMethod)); + + return false; + } + } + + return true; } /// @@ -189,7 +221,20 @@ public class QuestHelper */ public bool QuestIsForOtherSide(string playerSide, string questId) { - throw new NotImplementedException(); + var isUsec = playerSide.ToLower() == "usec"; + if (isUsec && _questConfig.BearOnlyQuests.Contains(questId)) + { + // Player is usec and quest is bear only, skip + return true; + } + + if (!isUsec && _questConfig.UsecOnlyQuests.Contains(questId)) + { + // Player is bear and quest is usec only, skip + return true; + } + + return false; } /**