From c1b8f8c6a0cb0506fd3ef42a1da3b065b8a67cf9 Mon Sep 17 00:00:00 2001 From: hulkhan22 Date: Mon, 28 Apr 2025 23:27:51 +0200 Subject: [PATCH 1/2] Fix body parts sent to client --- .../Generators/RepeatableQuestGenerator.cs | 40 ++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/Libraries/SPTarkov.Server.Core/Generators/RepeatableQuestGenerator.cs b/Libraries/SPTarkov.Server.Core/Generators/RepeatableQuestGenerator.cs index c83015b9..7727cef6 100644 --- a/Libraries/SPTarkov.Server.Core/Generators/RepeatableQuestGenerator.cs +++ b/Libraries/SPTarkov.Server.Core/Generators/RepeatableQuestGenerator.cs @@ -30,6 +30,36 @@ public class RepeatableQuestGenerator( ICloner _cloner ) { + /// + /// Body parts to present to the client as opposed to the body part information in quest data. + /// + private static readonly Dictionary> _bodyPartsToClient = new() + { + { + "Arms", [ + "LeftArm", + "RightArm" + ] + }, + { + "Legs", [ + "LeftLeg", + "RightLeg" + ] + }, + { + "Head", [ + "Head" + ] + }, + { + "Chest", [ + "Chest", + "Stomach" + ] + }, + }; + protected int _maxRandomNumberAttempts = 6; protected QuestConfig _questConfig = _configServer.GetConfig(); @@ -218,7 +248,15 @@ public class RepeatableQuestGenerator( { // more than one part lead to an "OR" condition hence more parts reduce the difficulty probability += bodyPartsConfig.Probability(bodyPart).Value; - bodyPartsToClient.Add(bodyPart); + + if (_bodyPartsToClient.TryGetValue(bodyPart, out var bodyPartListToClient)) + { + bodyPartsToClient.AddRange(bodyPartListToClient); + } + else + { + bodyPartsToClient.Add(bodyPart); + } } bodyPartDifficulty = 1 / probability; From 072113004e62cf36e86f75fd64162a63648f0979 Mon Sep 17 00:00:00 2001 From: hulkhan22 Date: Mon, 28 Apr 2025 23:39:33 +0200 Subject: [PATCH 2/2] Define bodypart constants for efficiency --- .../Constants/BodyPartContants.cs | 16 +++++++++++++ .../Generators/RepeatableQuestGenerator.cs | 23 ++++++++++--------- 2 files changed, 28 insertions(+), 11 deletions(-) create mode 100644 Libraries/SPTarkov.Server.Core/Constants/BodyPartContants.cs diff --git a/Libraries/SPTarkov.Server.Core/Constants/BodyPartContants.cs b/Libraries/SPTarkov.Server.Core/Constants/BodyPartContants.cs new file mode 100644 index 00000000..3a3988b2 --- /dev/null +++ b/Libraries/SPTarkov.Server.Core/Constants/BodyPartContants.cs @@ -0,0 +1,16 @@ +namespace SPTarkov.Server.Core.Constants; + +public static class BodyParts +{ + public const string Head = "Head"; + public const string LeftArm = "LeftArm"; + public const string RightArm = "RightArm"; + public const string Chest = "Chest"; + public const string Stomach = "Stomach"; + public const string LeftLeg = "LeftLeg"; + public const string RightLeg = "RightLeg"; + + // quest data + public const string Legs = "Legs"; + public const string Arms = "Arms"; +} diff --git a/Libraries/SPTarkov.Server.Core/Generators/RepeatableQuestGenerator.cs b/Libraries/SPTarkov.Server.Core/Generators/RepeatableQuestGenerator.cs index 7727cef6..3528e259 100644 --- a/Libraries/SPTarkov.Server.Core/Generators/RepeatableQuestGenerator.cs +++ b/Libraries/SPTarkov.Server.Core/Generators/RepeatableQuestGenerator.cs @@ -12,6 +12,7 @@ using SPTarkov.Server.Core.Utils; using SPTarkov.Server.Core.Utils.Cloners; using SPTarkov.Server.Core.Utils.Collections; using SPTarkov.Server.Core.Utils.Json; +using BodyParts = SPTarkov.Server.Core.Constants.BodyParts; namespace SPTarkov.Server.Core.Generators; @@ -36,26 +37,26 @@ public class RepeatableQuestGenerator( private static readonly Dictionary> _bodyPartsToClient = new() { { - "Arms", [ - "LeftArm", - "RightArm" + BodyParts.Arms, [ + BodyParts.LeftArm, + BodyParts.RightArm ] }, { - "Legs", [ - "LeftLeg", - "RightLeg" + BodyParts.Legs, [ + BodyParts.LeftLeg, + BodyParts.RightLeg ] }, { - "Head", [ - "Head" + BodyParts.Head, [ + BodyParts.Head ] }, { - "Chest", [ - "Chest", - "Stomach" + BodyParts.Chest, [ + BodyParts.Chest, + BodyParts.Stomach ] }, };