From fe500f7c276c3bc86a36aad17692b6ed8a7a4659 Mon Sep 17 00:00:00 2001 From: Chomp Date: Sun, 23 Feb 2025 16:33:23 +0000 Subject: [PATCH] Replace string comparisons with string.Equals (ordinal) --- Libraries/Core/Controllers/MatchController.cs | 2 +- .../Core/Controllers/RepeatableQuestController.cs | 2 +- .../Core/Generators/BotEquipmentModGenerator.cs | 14 ++++++++------ Libraries/Core/Generators/BotGenerator.cs | 4 ++-- Libraries/Core/Generators/LootGenerator.cs | 6 +++--- Libraries/Core/Generators/PMCLootGenerator.cs | 6 +++--- Libraries/Core/Generators/PlayerScavGenerator.cs | 2 +- .../Core/Generators/RepeatableQuestGenerator.cs | 5 ++++- Libraries/Core/Helpers/BotDifficultyHelper.cs | 2 +- Libraries/Core/Helpers/BotGeneratorHelper.cs | 2 +- Libraries/Core/Helpers/BotHelper.cs | 4 ++-- Libraries/Core/Helpers/InventoryHelper.cs | 2 +- Libraries/Core/Helpers/QuestHelper.cs | 4 ++-- Libraries/Core/Helpers/TradeHelper.cs | 2 +- Libraries/Core/Services/FenceService.cs | 2 +- .../Core/Services/LocationLifecycleService.cs | 2 +- Libraries/Core/Services/SeasonalEventService.cs | 8 +++++--- server-csharp.sln.DotSettings | 3 ++- 18 files changed, 40 insertions(+), 32 deletions(-) diff --git a/Libraries/Core/Controllers/MatchController.cs b/Libraries/Core/Controllers/MatchController.cs index a1521cb1..ddd3077f 100644 --- a/Libraries/Core/Controllers/MatchController.cs +++ b/Libraries/Core/Controllers/MatchController.cs @@ -119,7 +119,7 @@ public class MatchController( private string ConvertDifficultyDropdownIntoBotDifficulty(string botDifficulty) { // Edge case medium - must be altered - if (botDifficulty.ToLower() == "medium") + if (string.Equals(botDifficulty, "medium", StringComparison.OrdinalIgnoreCase)) { return "normal"; } diff --git a/Libraries/Core/Controllers/RepeatableQuestController.cs b/Libraries/Core/Controllers/RepeatableQuestController.cs index c2966a3e..6c930a58 100644 --- a/Libraries/Core/Controllers/RepeatableQuestController.cs +++ b/Libraries/Core/Controllers/RepeatableQuestController.cs @@ -703,7 +703,7 @@ public class RepeatableQuestController( } // Add elite bonus to daily quests - if (repeatableConfig.Name.ToLower() == "daily" && _profileHelper.HasEliteSkillLevel(SkillTypes.Charisma, pmcData)) + if (string.Equals(repeatableConfig.Name, "daily", StringComparison.OrdinalIgnoreCase) && _profileHelper.HasEliteSkillLevel(SkillTypes.Charisma, pmcData)) // Elite charisma skill gives extra daily quest(s) { questCount += _databaseService diff --git a/Libraries/Core/Generators/BotEquipmentModGenerator.cs b/Libraries/Core/Generators/BotEquipmentModGenerator.cs index c78b7092..c154be28 100644 --- a/Libraries/Core/Generators/BotEquipmentModGenerator.cs +++ b/Libraries/Core/Generators/BotEquipmentModGenerator.cs @@ -406,7 +406,7 @@ public class BotEquipmentModGenerator( */ protected string? GetDefaultPlateTpl(TemplateItem armorItem, string modSlot) { - var relatedItemDbModSlot = armorItem.Properties.Slots?.FirstOrDefault(slot => slot.Name.ToLower() == modSlot); + var relatedItemDbModSlot = armorItem.Properties.Slots?.FirstOrDefault(slot => string.Equals(slot.Name, modSlot, StringComparison.OrdinalIgnoreCase)); return relatedItemDbModSlot?.Props.Filters[0].Plate; } @@ -421,7 +421,8 @@ public class BotEquipmentModGenerator( { var defaultPreset = _presetHelper.GetDefaultPreset(armorItemTpl); - return defaultPreset?.Items?.FirstOrDefault(item => item.SlotId?.ToLower() == modSlot); + return defaultPreset?.Items?.FirstOrDefault(item => + string.Equals(item.SlotId, modSlot, StringComparison.OrdinalIgnoreCase)); } @@ -920,11 +921,11 @@ public class BotEquipmentModGenerator( case "patron_in_weapon": case "patron_in_weapon_000": case "patron_in_weapon_001": - return parentTemplate?.Properties?.Chambers?.FirstOrDefault(chamber => chamber.Name.Contains(modSlotLower)); + return parentTemplate?.Properties?.Chambers?.FirstOrDefault(chamber => chamber.Name.Contains(modSlotLower, StringComparison.OrdinalIgnoreCase)); case "cartridges": - return parentTemplate?.Properties?.Cartridges?.FirstOrDefault(c => c.Name?.ToLower() == modSlotLower); + return parentTemplate?.Properties?.Cartridges?.FirstOrDefault(c => string.Equals(c.Name, modSlotLower, StringComparison.OrdinalIgnoreCase)); default: - return parentTemplate?.Properties?.Slots?.FirstOrDefault(s => s.Name?.ToLower() == modSlotLower); + return parentTemplate?.Properties?.Slots?.FirstOrDefault(s => string.Equals(s.Name, modSlotLower, StringComparison.OrdinalIgnoreCase)); } } @@ -1372,7 +1373,8 @@ public class BotEquipmentModGenerator( public Item? GetMatchingModFromPreset(ModToSpawnRequest request, TemplateItem weaponTemplate) { var matchingPreset = GetMatchingPreset(weaponTemplate, request.ParentTemplate.Id); - return matchingPreset?.Items?.FirstOrDefault(item => item?.SlotId?.ToLower() == request.ModSlot.ToLower()); + return matchingPreset?.Items?.FirstOrDefault(item => + string.Equals(item?.SlotId, request.ModSlot, StringComparison.OrdinalIgnoreCase)); } /// diff --git a/Libraries/Core/Generators/BotGenerator.cs b/Libraries/Core/Generators/BotGenerator.cs index 3c745362..d5d50203 100644 --- a/Libraries/Core/Generators/BotGenerator.cs +++ b/Libraries/Core/Generators/BotGenerator.cs @@ -761,7 +761,7 @@ public class BotGenerator( public string SetRandomisedGameVersionAndCategory(Info botInfo) { // Special case - if (botInfo.Nickname?.ToLower() == "nikita") + if (string.Equals(botInfo.Nickname, "nikita", StringComparison.OrdinalIgnoreCase)) { botInfo.GameVersion = GameEditions.UNHEARD; botInfo.MemberCategory = MemberCategory.Developer; @@ -823,7 +823,7 @@ public class BotGenerator( /// item tpl public string GetDogtagTplByGameVersionAndSide(string side, string gameVersion) { - if (side.ToLower() == "usec") + if (string.Equals(side, "usec", StringComparison.OrdinalIgnoreCase)) { switch (gameVersion) { diff --git a/Libraries/Core/Generators/LootGenerator.cs b/Libraries/Core/Generators/LootGenerator.cs index 01061a9e..18d6b38b 100644 --- a/Libraries/Core/Generators/LootGenerator.cs +++ b/Libraries/Core/Generators/LootGenerator.cs @@ -255,7 +255,7 @@ public class LootGenerator( var items = itemsDb.Where( item => !itemBlacklist.Contains(item.Id) && - item.Type.ToLower() == "item" && + string.Equals(item.Type, "item", StringComparison.OrdinalIgnoreCase) && !item.Properties.QuestItem.GetValueOrDefault(false) && itemTypeWhitelist.Contains(item.Parent) ) @@ -279,7 +279,7 @@ public class LootGenerator( string[] relevantSlots = ["front_plate", "helmet_top", "soft_armor_front"]; foreach (var slotId in relevantSlots) { - var armorItem = armor.Items.FirstOrDefault(item => item?.SlotId?.ToLower() == slotId); + var armorItem = armor.Items.FirstOrDefault(item => string.Equals(item?.SlotId, slotId)); if (armorItem is null) { continue; @@ -602,7 +602,7 @@ public class LootGenerator( .Values.Where( item => item.Parent == rewardKey && - item.Type.ToLower() == "item" && + string.Equals(item.Type, "item", StringComparison.OrdinalIgnoreCase) && _itemFilterService.IsItemBlacklisted(item.Id) && !(containerSettings.AllowBossItems || _itemFilterService.IsBossItem(item.Id)) && item.Properties.QuestItem is null diff --git a/Libraries/Core/Generators/PMCLootGenerator.cs b/Libraries/Core/Generators/PMCLootGenerator.cs index 233a3673..329e2f06 100644 --- a/Libraries/Core/Generators/PMCLootGenerator.cs +++ b/Libraries/Core/Generators/PMCLootGenerator.cs @@ -62,7 +62,7 @@ public class PMCLootGenerator _pocketLootPool = new Dictionary(); var items = _databaseService.GetItems(); var pmcPriceOverrides = - _databaseService.GetBots().Types[botRole.ToLower() == "pmcbear" ? "bear" : "usec"].BotInventory.Items.Pockets; + _databaseService.GetBots().Types[string.Equals(botRole, "pmcbear", StringComparison.OrdinalIgnoreCase) ? "bear" : "usec"].BotInventory.Items.Pockets; var allowedItemTypeWhitelist = _pmcConfig.PocketLoot.Whitelist; @@ -145,7 +145,7 @@ public class PMCLootGenerator _vestLootPool = new Dictionary(); var items = _databaseService.GetItems(); var pmcPriceOverrides = - _databaseService.GetBots().Types[botRole.ToLower() == "pmcbear" ? "bear" : "usec"].BotInventory.Items.TacticalVest; + _databaseService.GetBots().Types[string.Equals(botRole, "pmcbear", StringComparison.OrdinalIgnoreCase) ? "bear" : "usec"].BotInventory.Items.TacticalVest; var allowedItemTypeWhitelist = _pmcConfig.VestLoot.Whitelist; @@ -228,7 +228,7 @@ public class PMCLootGenerator _backpackLootPool = new Dictionary(); var items = _databaseService.GetItems(); var pmcPriceOverrides = - _databaseService.GetBots().Types[botRole.ToLower() == "pmcbear" ? "bear" : "usec"].BotInventory.Items.Backpack; + _databaseService.GetBots().Types[string.Equals(botRole, "pmcbear", StringComparison.OrdinalIgnoreCase) ? "bear" : "usec"].BotInventory.Items.Backpack; var allowedItemTypeWhitelist = _pmcConfig.BackpackLoot.Whitelist; diff --git a/Libraries/Core/Generators/PlayerScavGenerator.cs b/Libraries/Core/Generators/PlayerScavGenerator.cs index 3649ab26..4126d650 100644 --- a/Libraries/Core/Generators/PlayerScavGenerator.cs +++ b/Libraries/Core/Generators/PlayerScavGenerator.cs @@ -279,7 +279,7 @@ public class PlayerScavGenerator( var props = baseBotNode.BotGeneration.Items.GetType().GetProperties(); foreach (var itemLimitKvP in karmaSettings.ItemLimits) { - var prop = props.FirstOrDefault(x => x.Name.ToLower() == itemLimitKvP.Key.ToLower()); + var prop = props.FirstOrDefault(x => string.Equals(x.Name, itemLimitKvP.Key, StringComparison.OrdinalIgnoreCase); prop.SetValue(baseBotNode.BotGeneration.Items, itemLimitKvP.Value); } diff --git a/Libraries/Core/Generators/RepeatableQuestGenerator.cs b/Libraries/Core/Generators/RepeatableQuestGenerator.cs index abd5c867..169e37eb 100644 --- a/Libraries/Core/Generators/RepeatableQuestGenerator.cs +++ b/Libraries/Core/Generators/RepeatableQuestGenerator.cs @@ -1003,7 +1003,10 @@ public class RepeatableQuestGenerator( */ // Get template id from config based on side and type of quest - var typeIds = side.ToLower() == "pmc" ? _questConfig.QuestTemplateIds.Pmc : _questConfig.QuestTemplateIds.Scav; + var typeIds = string.Equals(side, "pmc", StringComparison.OrdinalIgnoreCase) + ? _questConfig.QuestTemplateIds.Pmc + : _questConfig.QuestTemplateIds.Scav; + var templateId = string.Empty; switch (type) { diff --git a/Libraries/Core/Helpers/BotDifficultyHelper.cs b/Libraries/Core/Helpers/BotDifficultyHelper.cs index 2cceba58..5a67b74b 100644 --- a/Libraries/Core/Helpers/BotDifficultyHelper.cs +++ b/Libraries/Core/Helpers/BotDifficultyHelper.cs @@ -73,7 +73,7 @@ public class BotDifficultyHelper( protected DifficultyCategories GetDifficultySettings(string type, string difficulty) { var difficultySetting = - _pmcConfig.Difficulty.ToLower() == "asonline" + string.Equals(_pmcConfig.Difficulty, "asonline", StringComparison.OrdinalIgnoreCase) ? difficulty : _pmcConfig.Difficulty.ToLower(); diff --git a/Libraries/Core/Helpers/BotGeneratorHelper.cs b/Libraries/Core/Helpers/BotGeneratorHelper.cs index 7b566b9e..949f6cbd 100644 --- a/Libraries/Core/Helpers/BotGeneratorHelper.cs +++ b/Libraries/Core/Helpers/BotGeneratorHelper.cs @@ -392,7 +392,7 @@ public class BotGeneratorHelper( // Does an equipped item have a property that blocks the desired item - check for prop "BlocksX" .e.g BlocksEarpiece / BlocksFaceCover var templateItems = equippedItemsDb.ToList(); var blockingItem = templateItems.FirstOrDefault( - item => item?.Properties?.GetType().GetProperties().FirstOrDefault(x => x.Name.ToLower() == $"blocks{equipmentSlot}")?.GetValue(item) is not null + item => item?.Properties?.GetType().GetProperties().FirstOrDefault(x => string.Equals(x.Name.ToLower(), $"blocks{equipmentSlot}", StringComparison.OrdinalIgnoreCase))?.GetValue(item) is not null ); if (blockingItem is not null) // this.logger.warning(`1 incompatibility found between - {itemToEquip[1]._name} and {blockingItem._name} - {equipmentSlot}`); diff --git a/Libraries/Core/Helpers/BotHelper.cs b/Libraries/Core/Helpers/BotHelper.cs index 9056538a..42900e3c 100644 --- a/Libraries/Core/Helpers/BotHelper.cs +++ b/Libraries/Core/Helpers/BotHelper.cs @@ -160,12 +160,12 @@ public class BotHelper( /// side (usec/bear) public string GetPmcSideByRole(string botRole) { - if (_pmcConfig.BearType.ToLower() == botRole.ToLower()) + if (string.Equals(_pmcConfig.BearType, botRole, StringComparison.OrdinalIgnoreCase)) { return "Bear"; } - if (_pmcConfig.UsecType.ToLower() == botRole.ToLower()) + if (string.Equals(_pmcConfig.UsecType, botRole.ToLower(), StringComparison.OrdinalIgnoreCase)) { return "Usec"; } diff --git a/Libraries/Core/Helpers/InventoryHelper.cs b/Libraries/Core/Helpers/InventoryHelper.cs index 782e3600..41a5786e 100644 --- a/Libraries/Core/Helpers/InventoryHelper.cs +++ b/Libraries/Core/Helpers/InventoryHelper.cs @@ -960,7 +960,7 @@ public class InventoryHelper( fromInventoryItems = scavProfile.Inventory.Items; fromType = "scav"; } - else if (request.FromOwner.Type.ToLower() == "mail") + else if (string.Equals(request.FromOwner.Type, "mail", StringComparison.OrdinalIgnoreCase)) { // Split requests don't use 'use' but 'splitItem' property fromInventoryItems = _dialogueHelper.GetMessageItemContents(request.FromOwner.Id, sessionId, item); diff --git a/Libraries/Core/Helpers/QuestHelper.cs b/Libraries/Core/Helpers/QuestHelper.cs index 96eec54e..befbfe2c 100644 --- a/Libraries/Core/Helpers/QuestHelper.cs +++ b/Libraries/Core/Helpers/QuestHelper.cs @@ -457,7 +457,7 @@ public class QuestHelper( */ public bool QuestIsForOtherSide(string playerSide, string questId) { - var isUsec = playerSide.ToLower() == "usec"; + var isUsec = string.Equals(playerSide, "usec", StringComparison.OrdinalIgnoreCase); if (isUsec && _questConfig.BearOnlyQuests.Contains(questId)) // Player is usec and quest is bear only, skip { @@ -797,7 +797,7 @@ public class QuestHelper( if ( startedMessageText is null || startedMessageText.Trim() == "" || - startedMessageText.ToLower() == "test" || + string.Equals(startedMessageText, "test", StringComparison.OrdinalIgnoreCase) || startedMessageText.Length == 24 ) { diff --git a/Libraries/Core/Helpers/TradeHelper.cs b/Libraries/Core/Helpers/TradeHelper.cs index ef9526e7..7bafad6a 100644 --- a/Libraries/Core/Helpers/TradeHelper.cs +++ b/Libraries/Core/Helpers/TradeHelper.cs @@ -53,7 +53,7 @@ public class TradeHelper( List offerItems = []; Action? buyCallback; - if (buyRequestData.TransactionId.ToLower() == "ragfair") + if (string.Equals(buyRequestData.TransactionId, "ragfair", StringComparison.OrdinalIgnoreCase)) { // Called when player purchases PMC offer from ragfair buyCallback = buyCount => diff --git a/Libraries/Core/Services/FenceService.cs b/Libraries/Core/Services/FenceService.cs index 0c951043..f82dfabc 100644 --- a/Libraries/Core/Services/FenceService.cs +++ b/Libraries/Core/Services/FenceService.cs @@ -1228,7 +1228,7 @@ public class FenceService( // Find items mod to apply dura changes to var modItemToAdjust = - armorItemAndMods.FirstOrDefault(mod => mod.SlotId.ToLower() == requiredSlot.Name.ToLower()); + armorItemAndMods.FirstOrDefault(mod => string.Equals(mod.SlotId, requiredSlot.Name.ToLower(), StringComparison.OrdinalIgnoreCase)); itemHelper.AddUpdObjectToItem(modItemToAdjust); diff --git a/Libraries/Core/Services/LocationLifecycleService.cs b/Libraries/Core/Services/LocationLifecycleService.cs index 3b8ed2e4..74afc782 100644 --- a/Libraries/Core/Services/LocationLifecycleService.cs +++ b/Libraries/Core/Services/LocationLifecycleService.cs @@ -238,7 +238,7 @@ public class LocationLifecycleService { var configHostilityChanges = _pmcConfig.HostilitySettings[botId.Key]; var locationBotHostilityDetails = location.BotLocationModifier.AdditionalHostilitySettings.FirstOrDefault( - botSettings => botSettings.BotRole.ToLower() == botId.Key + botSettings => string.Equals(botSettings.BotRole, botId.Key, StringComparison.OrdinalIgnoreCase) ); // No matching bot in config, skip diff --git a/Libraries/Core/Services/SeasonalEventService.cs b/Libraries/Core/Services/SeasonalEventService.cs index 94738480..153dd450 100644 --- a/Libraries/Core/Services/SeasonalEventService.cs +++ b/Libraries/Core/Services/SeasonalEventService.cs @@ -370,7 +370,7 @@ public class SeasonalEventService( ); } - Dictionary equipment = botInventory.Equipment[equipmentSlotKey]; + var equipment = botInventory.Equipment[equipmentSlotKey]; botInventory.Equipment[equipmentSlotKey] = equipment.Where(i => !_christmasEventItems.Contains(i.Key)).ToDictionary(); } @@ -378,7 +378,9 @@ public class SeasonalEventService( var props = botInventory.Items.GetType().GetProperties(); foreach (var lootContainerKey in lootContainersToFilter) { - var prop = (Dictionary?) props.FirstOrDefault(p => p.Name.ToLower() == lootContainerKey.ToLower()).GetValue(botInventory.Items); + var prop = (Dictionary?) props + .FirstOrDefault(p => string.Equals(p.Name.ToLower(), lootContainerKey.ToLower(), StringComparison.OrdinalIgnoreCase)) + .GetValue(botInventory.Items); if (prop is null) { @@ -667,7 +669,7 @@ public class SeasonalEventService( foreach (var chance in zryachiyKvP.Value.BotChances.EquipmentChances) { - if (chance.Key.ToLower() == "Scabbard") + if (string.Equals(chance.Key, "Scabbard", StringComparison.OrdinalIgnoreCase)) { value.Add(chance.Key, 100); continue; diff --git a/server-csharp.sln.DotSettings b/server-csharp.sln.DotSettings index fbc2b04b..2599328f 100644 --- a/server-csharp.sln.DotSettings +++ b/server-csharp.sln.DotSettings @@ -1,3 +1,4 @@  True - True \ No newline at end of file + True + True \ No newline at end of file