From f425074be2fe896a94950a305947a898ea39a775 Mon Sep 17 00:00:00 2001 From: CWX Date: Wed, 8 Jan 2025 21:09:31 +0000 Subject: [PATCH] created helpers --- Core/Helpers/AssortHelper.cs | 6 + Core/Helpers/BotDifficultyHelper.cs | 6 + Core/Helpers/BotGeneratorHelper.cs | 6 + Core/Helpers/BotHelper.cs | 6 + Core/Helpers/BotWeaponGeneratorHelper.cs | 6 + Core/Helpers/ContainerHelper.cs | 6 + .../Helpers/Dialogue/AbstractDialogChatBot.cs | 6 + Core/Helpers/Dialogue/Commando/ChatCommand.cs | 6 + .../Dialogue/Commando/SptCommandoCommands.cs | 6 + .../SptCommands/GiveCommand/GiveSptCommand.cs | 6 + .../SptCommands/GiveCommand/SavedCommand.cs | 6 + .../ProfileCommand/ProfileSptCommand.cs | 6 + .../Commando/SptCommands/SptCommand.cs | 6 + .../TraderCommand/TraderSptCommand.cs | 6 + .../Helpers/Dialogue/CommandoDialogChatBot.cs | 6 + Core/Helpers/Dialogue/DialogueChatBot.cs | 6 + Core/Helpers/Dialogue/SptDialogueChatBot.cs | 6 + Core/Helpers/DialogueHelper.cs | 6 + Core/Helpers/DurabilityLimitsHelper.cs | 6 + Core/Helpers/GameEventHelper.cs | 6 + Core/Helpers/HandbookHelper.cs | 6 + Core/Helpers/HealthHelper.cs | 6 + Core/Helpers/HideoutHelper.cs | 6 + Core/Helpers/HttpServerHelper.cs | 6 + Core/Helpers/InRaidHelper.cs | 6 + Core/Helpers/InventoryHelper.cs | 6 + Core/Helpers/ItemHelper.cs | 6 + Core/Helpers/NotificationSendHelper.cs | 6 + Core/Helpers/NotifierHelper.cs | 6 + Core/Helpers/PaymentHelper.cs | 6 + Core/Helpers/PresetHelper.cs | 6 + Core/Helpers/ProbabilityHelper.cs | 6 + Core/Helpers/ProfileHelper.cs | 6 + Core/Helpers/QuestConditionHelper.cs | 6 + Core/Helpers/QuestHelper.cs | 6 + Core/Helpers/RagfairHelper.cs | 6 + Core/Helpers/RagfairOfferHelper.cs | 6 + Core/Helpers/RagfairSellHelper.cs | 6 + Core/Helpers/RagfairServerHelper.cs | 6 + Core/Helpers/RagfairSortHelper.cs | 6 + Core/Helpers/RepairHelper.cs | 6 + Core/Helpers/RepeatableQuestHelper.cs | 6 + Core/Helpers/SecureContainerHelper.cs | 6 + Core/Helpers/TradeHelper.cs | 82 ++++++ Core/Helpers/TraderAssortHelper.cs | 82 ++++++ Core/Helpers/TraderHelper.cs | 254 ++++++++++++++++++ Core/Helpers/UtilityHelper.cs | 9 + Core/Helpers/WeatherHelper.cs | 34 +++ Core/Helpers/WeightedRandomHelper.cs | 56 ++++ 49 files changed, 775 insertions(+) create mode 100644 Core/Helpers/AssortHelper.cs create mode 100644 Core/Helpers/BotDifficultyHelper.cs create mode 100644 Core/Helpers/BotGeneratorHelper.cs create mode 100644 Core/Helpers/BotHelper.cs create mode 100644 Core/Helpers/BotWeaponGeneratorHelper.cs create mode 100644 Core/Helpers/ContainerHelper.cs create mode 100644 Core/Helpers/Dialogue/AbstractDialogChatBot.cs create mode 100644 Core/Helpers/Dialogue/Commando/ChatCommand.cs create mode 100644 Core/Helpers/Dialogue/Commando/SptCommandoCommands.cs create mode 100644 Core/Helpers/Dialogue/Commando/SptCommands/GiveCommand/GiveSptCommand.cs create mode 100644 Core/Helpers/Dialogue/Commando/SptCommands/GiveCommand/SavedCommand.cs create mode 100644 Core/Helpers/Dialogue/Commando/SptCommands/ProfileCommand/ProfileSptCommand.cs create mode 100644 Core/Helpers/Dialogue/Commando/SptCommands/SptCommand.cs create mode 100644 Core/Helpers/Dialogue/Commando/SptCommands/TraderCommand/TraderSptCommand.cs create mode 100644 Core/Helpers/Dialogue/CommandoDialogChatBot.cs create mode 100644 Core/Helpers/Dialogue/DialogueChatBot.cs create mode 100644 Core/Helpers/Dialogue/SptDialogueChatBot.cs create mode 100644 Core/Helpers/DialogueHelper.cs create mode 100644 Core/Helpers/DurabilityLimitsHelper.cs create mode 100644 Core/Helpers/GameEventHelper.cs create mode 100644 Core/Helpers/HandbookHelper.cs create mode 100644 Core/Helpers/HealthHelper.cs create mode 100644 Core/Helpers/HideoutHelper.cs create mode 100644 Core/Helpers/HttpServerHelper.cs create mode 100644 Core/Helpers/InRaidHelper.cs create mode 100644 Core/Helpers/InventoryHelper.cs create mode 100644 Core/Helpers/ItemHelper.cs create mode 100644 Core/Helpers/NotificationSendHelper.cs create mode 100644 Core/Helpers/NotifierHelper.cs create mode 100644 Core/Helpers/PaymentHelper.cs create mode 100644 Core/Helpers/PresetHelper.cs create mode 100644 Core/Helpers/ProbabilityHelper.cs create mode 100644 Core/Helpers/ProfileHelper.cs create mode 100644 Core/Helpers/QuestConditionHelper.cs create mode 100644 Core/Helpers/QuestHelper.cs create mode 100644 Core/Helpers/RagfairHelper.cs create mode 100644 Core/Helpers/RagfairOfferHelper.cs create mode 100644 Core/Helpers/RagfairSellHelper.cs create mode 100644 Core/Helpers/RagfairServerHelper.cs create mode 100644 Core/Helpers/RagfairSortHelper.cs create mode 100644 Core/Helpers/RepairHelper.cs create mode 100644 Core/Helpers/RepeatableQuestHelper.cs create mode 100644 Core/Helpers/SecureContainerHelper.cs create mode 100644 Core/Helpers/TradeHelper.cs create mode 100644 Core/Helpers/TraderAssortHelper.cs create mode 100644 Core/Helpers/TraderHelper.cs create mode 100644 Core/Helpers/UtilityHelper.cs create mode 100644 Core/Helpers/WeatherHelper.cs create mode 100644 Core/Helpers/WeightedRandomHelper.cs diff --git a/Core/Helpers/AssortHelper.cs b/Core/Helpers/AssortHelper.cs new file mode 100644 index 00000000..c479963d --- /dev/null +++ b/Core/Helpers/AssortHelper.cs @@ -0,0 +1,6 @@ +namespace Core.Helpers; + +public class AssortHelper +{ + +} diff --git a/Core/Helpers/BotDifficultyHelper.cs b/Core/Helpers/BotDifficultyHelper.cs new file mode 100644 index 00000000..961d56a9 --- /dev/null +++ b/Core/Helpers/BotDifficultyHelper.cs @@ -0,0 +1,6 @@ +namespace Core.Helpers; + +public class BotDifficultyHelper +{ + +} diff --git a/Core/Helpers/BotGeneratorHelper.cs b/Core/Helpers/BotGeneratorHelper.cs new file mode 100644 index 00000000..1e35785f --- /dev/null +++ b/Core/Helpers/BotGeneratorHelper.cs @@ -0,0 +1,6 @@ +namespace Core.Helpers; + +public class BotGeneratorHelper +{ + +} diff --git a/Core/Helpers/BotHelper.cs b/Core/Helpers/BotHelper.cs new file mode 100644 index 00000000..8bbd70e2 --- /dev/null +++ b/Core/Helpers/BotHelper.cs @@ -0,0 +1,6 @@ +namespace Core.Helpers; + +public class BotHelper +{ + +} diff --git a/Core/Helpers/BotWeaponGeneratorHelper.cs b/Core/Helpers/BotWeaponGeneratorHelper.cs new file mode 100644 index 00000000..237209f8 --- /dev/null +++ b/Core/Helpers/BotWeaponGeneratorHelper.cs @@ -0,0 +1,6 @@ +namespace Core.Helpers; + +public class BotWeaponGeneratorHelper +{ + +} diff --git a/Core/Helpers/ContainerHelper.cs b/Core/Helpers/ContainerHelper.cs new file mode 100644 index 00000000..463f7573 --- /dev/null +++ b/Core/Helpers/ContainerHelper.cs @@ -0,0 +1,6 @@ +namespace Core.Helpers; + +public class ContainerHelper +{ + +} diff --git a/Core/Helpers/Dialogue/AbstractDialogChatBot.cs b/Core/Helpers/Dialogue/AbstractDialogChatBot.cs new file mode 100644 index 00000000..a2e4b29e --- /dev/null +++ b/Core/Helpers/Dialogue/AbstractDialogChatBot.cs @@ -0,0 +1,6 @@ +namespace Core.Helpers.Dialogue; + +public class AbstractDialogChatBot +{ + +} diff --git a/Core/Helpers/Dialogue/Commando/ChatCommand.cs b/Core/Helpers/Dialogue/Commando/ChatCommand.cs new file mode 100644 index 00000000..440718de --- /dev/null +++ b/Core/Helpers/Dialogue/Commando/ChatCommand.cs @@ -0,0 +1,6 @@ +namespace Core.Helpers.Dialog.Commando; + +public class ChatCommand +{ + +} diff --git a/Core/Helpers/Dialogue/Commando/SptCommandoCommands.cs b/Core/Helpers/Dialogue/Commando/SptCommandoCommands.cs new file mode 100644 index 00000000..b2056c8c --- /dev/null +++ b/Core/Helpers/Dialogue/Commando/SptCommandoCommands.cs @@ -0,0 +1,6 @@ +namespace Core.Helpers.Dialog.Commando; + +public class SptCommandoCommands +{ + +} diff --git a/Core/Helpers/Dialogue/Commando/SptCommands/GiveCommand/GiveSptCommand.cs b/Core/Helpers/Dialogue/Commando/SptCommands/GiveCommand/GiveSptCommand.cs new file mode 100644 index 00000000..40450a11 --- /dev/null +++ b/Core/Helpers/Dialogue/Commando/SptCommands/GiveCommand/GiveSptCommand.cs @@ -0,0 +1,6 @@ +namespace Core.Helpers.Dialog.Commando.SptCommands.GiveCommand; + +public class GiveSptCommand +{ + +} diff --git a/Core/Helpers/Dialogue/Commando/SptCommands/GiveCommand/SavedCommand.cs b/Core/Helpers/Dialogue/Commando/SptCommands/GiveCommand/SavedCommand.cs new file mode 100644 index 00000000..f6abea47 --- /dev/null +++ b/Core/Helpers/Dialogue/Commando/SptCommands/GiveCommand/SavedCommand.cs @@ -0,0 +1,6 @@ +namespace Core.Helpers.Dialog.Commando.SptCommands.GiveCommand; + +public class SavedCommand +{ + +} diff --git a/Core/Helpers/Dialogue/Commando/SptCommands/ProfileCommand/ProfileSptCommand.cs b/Core/Helpers/Dialogue/Commando/SptCommands/ProfileCommand/ProfileSptCommand.cs new file mode 100644 index 00000000..95257a11 --- /dev/null +++ b/Core/Helpers/Dialogue/Commando/SptCommands/ProfileCommand/ProfileSptCommand.cs @@ -0,0 +1,6 @@ +namespace Core.Helpers.Dialog.Commando.SptCommands.ProfileCommand; + +public class ProfileSptCommand +{ + +} diff --git a/Core/Helpers/Dialogue/Commando/SptCommands/SptCommand.cs b/Core/Helpers/Dialogue/Commando/SptCommands/SptCommand.cs new file mode 100644 index 00000000..e586d3c4 --- /dev/null +++ b/Core/Helpers/Dialogue/Commando/SptCommands/SptCommand.cs @@ -0,0 +1,6 @@ +namespace Core.Helpers.Dialog.Commando.SptCommands; + +public class SptCommand +{ + +} diff --git a/Core/Helpers/Dialogue/Commando/SptCommands/TraderCommand/TraderSptCommand.cs b/Core/Helpers/Dialogue/Commando/SptCommands/TraderCommand/TraderSptCommand.cs new file mode 100644 index 00000000..f0ddda60 --- /dev/null +++ b/Core/Helpers/Dialogue/Commando/SptCommands/TraderCommand/TraderSptCommand.cs @@ -0,0 +1,6 @@ +namespace Core.Helpers.Dialog.Commando.SptCommands.TraderCommand; + +public class TraderSptCommand +{ + +} diff --git a/Core/Helpers/Dialogue/CommandoDialogChatBot.cs b/Core/Helpers/Dialogue/CommandoDialogChatBot.cs new file mode 100644 index 00000000..5a565be4 --- /dev/null +++ b/Core/Helpers/Dialogue/CommandoDialogChatBot.cs @@ -0,0 +1,6 @@ +namespace Core.Helpers.Dialogue; + +public class CommandoDialogChatBot +{ + +} diff --git a/Core/Helpers/Dialogue/DialogueChatBot.cs b/Core/Helpers/Dialogue/DialogueChatBot.cs new file mode 100644 index 00000000..d6d24f29 --- /dev/null +++ b/Core/Helpers/Dialogue/DialogueChatBot.cs @@ -0,0 +1,6 @@ +namespace Core.Helpers.Dialogue; + +public class DialogueChatBot +{ + +} diff --git a/Core/Helpers/Dialogue/SptDialogueChatBot.cs b/Core/Helpers/Dialogue/SptDialogueChatBot.cs new file mode 100644 index 00000000..625de802 --- /dev/null +++ b/Core/Helpers/Dialogue/SptDialogueChatBot.cs @@ -0,0 +1,6 @@ +namespace Core.Helpers.Dialogue; + +public class SptDialogueChatBot +{ + +} diff --git a/Core/Helpers/DialogueHelper.cs b/Core/Helpers/DialogueHelper.cs new file mode 100644 index 00000000..5c025678 --- /dev/null +++ b/Core/Helpers/DialogueHelper.cs @@ -0,0 +1,6 @@ +namespace Core.Helpers; + +public class DialogueHelper +{ + +} diff --git a/Core/Helpers/DurabilityLimitsHelper.cs b/Core/Helpers/DurabilityLimitsHelper.cs new file mode 100644 index 00000000..657b33ef --- /dev/null +++ b/Core/Helpers/DurabilityLimitsHelper.cs @@ -0,0 +1,6 @@ +namespace Core.Helpers; + +public class DurabilityLimitsHelper +{ + +} diff --git a/Core/Helpers/GameEventHelper.cs b/Core/Helpers/GameEventHelper.cs new file mode 100644 index 00000000..40790d30 --- /dev/null +++ b/Core/Helpers/GameEventHelper.cs @@ -0,0 +1,6 @@ +namespace Core.Helpers; + +public class GameEventHelper +{ + +} diff --git a/Core/Helpers/HandbookHelper.cs b/Core/Helpers/HandbookHelper.cs new file mode 100644 index 00000000..a4d70611 --- /dev/null +++ b/Core/Helpers/HandbookHelper.cs @@ -0,0 +1,6 @@ +namespace Core.Helpers; + +public class HandbookHelper +{ + +} diff --git a/Core/Helpers/HealthHelper.cs b/Core/Helpers/HealthHelper.cs new file mode 100644 index 00000000..53a64de8 --- /dev/null +++ b/Core/Helpers/HealthHelper.cs @@ -0,0 +1,6 @@ +namespace Core.Helpers; + +public class HealthHelper +{ + +} diff --git a/Core/Helpers/HideoutHelper.cs b/Core/Helpers/HideoutHelper.cs new file mode 100644 index 00000000..5e9aa595 --- /dev/null +++ b/Core/Helpers/HideoutHelper.cs @@ -0,0 +1,6 @@ +namespace Core.Helpers; + +public class HideoutHelper +{ + +} diff --git a/Core/Helpers/HttpServerHelper.cs b/Core/Helpers/HttpServerHelper.cs new file mode 100644 index 00000000..0fb865aa --- /dev/null +++ b/Core/Helpers/HttpServerHelper.cs @@ -0,0 +1,6 @@ +namespace Core.Helpers; + +public class HttpServerHelper +{ + +} diff --git a/Core/Helpers/InRaidHelper.cs b/Core/Helpers/InRaidHelper.cs new file mode 100644 index 00000000..35940273 --- /dev/null +++ b/Core/Helpers/InRaidHelper.cs @@ -0,0 +1,6 @@ +namespace Core.Helpers; + +public class InRaidHelper +{ + +} diff --git a/Core/Helpers/InventoryHelper.cs b/Core/Helpers/InventoryHelper.cs new file mode 100644 index 00000000..3a4ade47 --- /dev/null +++ b/Core/Helpers/InventoryHelper.cs @@ -0,0 +1,6 @@ +namespace Core.Helpers; + +public class InventoryHelper +{ + +} diff --git a/Core/Helpers/ItemHelper.cs b/Core/Helpers/ItemHelper.cs new file mode 100644 index 00000000..a9be7a25 --- /dev/null +++ b/Core/Helpers/ItemHelper.cs @@ -0,0 +1,6 @@ +namespace Core.Helpers; + +public class ItemHelper +{ + +} diff --git a/Core/Helpers/NotificationSendHelper.cs b/Core/Helpers/NotificationSendHelper.cs new file mode 100644 index 00000000..b848ecf7 --- /dev/null +++ b/Core/Helpers/NotificationSendHelper.cs @@ -0,0 +1,6 @@ +namespace Core.Helpers; + +public class NotificationSendHelper +{ + +} diff --git a/Core/Helpers/NotifierHelper.cs b/Core/Helpers/NotifierHelper.cs new file mode 100644 index 00000000..466d0714 --- /dev/null +++ b/Core/Helpers/NotifierHelper.cs @@ -0,0 +1,6 @@ +namespace Core.Helpers; + +public class NotifierHelper +{ + +} diff --git a/Core/Helpers/PaymentHelper.cs b/Core/Helpers/PaymentHelper.cs new file mode 100644 index 00000000..058c6aeb --- /dev/null +++ b/Core/Helpers/PaymentHelper.cs @@ -0,0 +1,6 @@ +namespace Core.Helpers; + +public class PaymentHelper +{ + +} diff --git a/Core/Helpers/PresetHelper.cs b/Core/Helpers/PresetHelper.cs new file mode 100644 index 00000000..1f7baa52 --- /dev/null +++ b/Core/Helpers/PresetHelper.cs @@ -0,0 +1,6 @@ +namespace Core.Helpers; + +public class PresetHelper +{ + +} diff --git a/Core/Helpers/ProbabilityHelper.cs b/Core/Helpers/ProbabilityHelper.cs new file mode 100644 index 00000000..8a0a7ee5 --- /dev/null +++ b/Core/Helpers/ProbabilityHelper.cs @@ -0,0 +1,6 @@ +namespace Core.Helpers; + +public class ProbabilityHelper +{ + +} diff --git a/Core/Helpers/ProfileHelper.cs b/Core/Helpers/ProfileHelper.cs new file mode 100644 index 00000000..24ec1eab --- /dev/null +++ b/Core/Helpers/ProfileHelper.cs @@ -0,0 +1,6 @@ +namespace Core.Helpers; + +public class ProfileHelper +{ + +} diff --git a/Core/Helpers/QuestConditionHelper.cs b/Core/Helpers/QuestConditionHelper.cs new file mode 100644 index 00000000..f64e3508 --- /dev/null +++ b/Core/Helpers/QuestConditionHelper.cs @@ -0,0 +1,6 @@ +namespace Core.Helpers; + +public class QuestConditionHelper +{ + +} diff --git a/Core/Helpers/QuestHelper.cs b/Core/Helpers/QuestHelper.cs new file mode 100644 index 00000000..9739a2f0 --- /dev/null +++ b/Core/Helpers/QuestHelper.cs @@ -0,0 +1,6 @@ +namespace Core.Helpers; + +public class QuestHelper +{ + +} diff --git a/Core/Helpers/RagfairHelper.cs b/Core/Helpers/RagfairHelper.cs new file mode 100644 index 00000000..86596e0b --- /dev/null +++ b/Core/Helpers/RagfairHelper.cs @@ -0,0 +1,6 @@ +namespace Core.Helpers; + +public class RagfairHelper +{ + +} diff --git a/Core/Helpers/RagfairOfferHelper.cs b/Core/Helpers/RagfairOfferHelper.cs new file mode 100644 index 00000000..8d095748 --- /dev/null +++ b/Core/Helpers/RagfairOfferHelper.cs @@ -0,0 +1,6 @@ +namespace Core.Helpers; + +public class RagfairOfferHelper +{ + +} diff --git a/Core/Helpers/RagfairSellHelper.cs b/Core/Helpers/RagfairSellHelper.cs new file mode 100644 index 00000000..65aa84ec --- /dev/null +++ b/Core/Helpers/RagfairSellHelper.cs @@ -0,0 +1,6 @@ +namespace Core.Helpers; + +public class RagfairSellHelper +{ + +} diff --git a/Core/Helpers/RagfairServerHelper.cs b/Core/Helpers/RagfairServerHelper.cs new file mode 100644 index 00000000..ef20ffe6 --- /dev/null +++ b/Core/Helpers/RagfairServerHelper.cs @@ -0,0 +1,6 @@ +namespace Core.Helpers; + +public class RagfairServerHelper +{ + +} diff --git a/Core/Helpers/RagfairSortHelper.cs b/Core/Helpers/RagfairSortHelper.cs new file mode 100644 index 00000000..d3b659b3 --- /dev/null +++ b/Core/Helpers/RagfairSortHelper.cs @@ -0,0 +1,6 @@ +namespace Core.Helpers; + +public class RagfairSortHelper +{ + +} diff --git a/Core/Helpers/RepairHelper.cs b/Core/Helpers/RepairHelper.cs new file mode 100644 index 00000000..39f7cd26 --- /dev/null +++ b/Core/Helpers/RepairHelper.cs @@ -0,0 +1,6 @@ +namespace Core.Helpers; + +public class RepairHelper +{ + +} diff --git a/Core/Helpers/RepeatableQuestHelper.cs b/Core/Helpers/RepeatableQuestHelper.cs new file mode 100644 index 00000000..2688a25e --- /dev/null +++ b/Core/Helpers/RepeatableQuestHelper.cs @@ -0,0 +1,6 @@ +namespace Core.Helpers; + +public class RepeatableQuestHelper +{ + +} diff --git a/Core/Helpers/SecureContainerHelper.cs b/Core/Helpers/SecureContainerHelper.cs new file mode 100644 index 00000000..515eb869 --- /dev/null +++ b/Core/Helpers/SecureContainerHelper.cs @@ -0,0 +1,6 @@ +namespace Core.Helpers; + +public class SecureContainerHelper +{ + +} diff --git a/Core/Helpers/TradeHelper.cs b/Core/Helpers/TradeHelper.cs new file mode 100644 index 00000000..ed199769 --- /dev/null +++ b/Core/Helpers/TradeHelper.cs @@ -0,0 +1,82 @@ +using Core.Models.Eft.Common; +using Core.Models.Eft.Common.Tables; +using Core.Models.Eft.ItemEvent; +using Core.Models.Eft.Trade; + +namespace Core.Helpers; + +public class TradeHelper +{ + public TradeHelper() + { + + } + + /// + /// Buy item from flea or trader + /// + /// Player profile + /// data from client + /// Session id + /// Should item be found in raid + /// Item event router response + public void buyItem( + PmcData pmcData, + ProcessBuyTradeRequestData buyRequestData, + string sessionID, + bool foundInRaid, + ItemEventRouterResponse output + ) + { + throw new NotImplementedException(); + } + + /// + /// Sell item to trader + /// + /// Profile to remove items from + /// Profile to accept the money for selling item + /// Request data + /// Session id + /// Item event router response + public void sellItem( + PmcData profileWithItemsToSell, + PmcData profileToReceiveMoney, + ProcessSellTradeRequestData sellRequest, + string sessionID, + ItemEventRouterResponse output + ) + { + throw new NotImplementedException(); + } + + protected void incrementCirculateSoldToTraderCounter( + PmcData profileWithItemsToSell, + PmcData profileToReceiveMoney, + ProcessSellTradeRequestData sellRequest + ) + { + throw new NotImplementedException(); + } + + /// + /// Traders allow a limited number of purchases per refresh cycle (default 60 mins) + /// + /// Session id + /// Profile making the purchase + /// Trader assort is purchased from + /// the item from trader being bought + /// Id of assort being purchased + /// How many of the item are being bought + protected void checkPurchaseIsWithinTraderItemLimit( + string sessionId, + PmcData pmcData, + string traderId, + Item assortBeingPurchased, + string assortId, + int count + ) + { + throw new NotImplementedException(); + } +} diff --git a/Core/Helpers/TraderAssortHelper.cs b/Core/Helpers/TraderAssortHelper.cs new file mode 100644 index 00000000..ad5626f1 --- /dev/null +++ b/Core/Helpers/TraderAssortHelper.cs @@ -0,0 +1,82 @@ +using Core.Models.Eft.Common.Tables; + +namespace Core.Helpers; + +public class TraderAssortHelper +{ + public TraderAssortHelper() + { + + } + + /// + /// Get a traders assorts + /// Can be used for returning ragfair / fence assorts + /// Filter out assorts not unlocked due to level OR quest completion + /// + /// session id + /// traders id + /// Should assorts player hasn't unlocked be returned - default false + /// a traders' assorts + public TraderAssort GetAssort(string sessionId, string traderId, bool showLockedAssorts = false) + { + throw new NotImplementedException(); + } + + /// + /// Given the blacklist provided, remove root items from assort + /// + /// Trader assort to modify + /// Item TPLs the assort should not have + protected void RemoveItemsFromAssort(TraderAssort assortToFilter, List itemsTplsToRemove) + { + throw new NotImplementedException(); + } + + /// + /// Reset every traders root item `BuyRestrictionCurrent` property to 0 + /// + /// Items to adjust + protected void ResetBuyRestrictionCurrentValue(List assortItems) + { + throw new NotImplementedException(); + } + + /// + /// Create a dict of all assort id = quest id mappings used to work out what items should be shown to player based on the quests they've started/completed/failed + /// + protected void HydrateMergedQuestAssorts() + { + throw new NotImplementedException(); + } + + /// + /// Reset a traders assorts and move nextResupply value to future + /// Flag trader as needing a flea offer reset to be picked up by flea update() function + /// + /// trader details to alter + public void ResetExpiredTrader(Trader trader) + { + throw new NotImplementedException(); + } + + /// + /// Does the supplied trader need its assorts refreshed + /// + /// Trader to check + /// true they need refreshing + public bool TraderAssortsHaveExpired(string traderID) + { + throw new NotImplementedException(); + } + + /// + /// Get an array of pristine trader items prior to any alteration by player (as they were on server start) + /// + /// trader id + /// array of Items + protected List GetPristineTraderAssorts(string traderId) + { + throw new NotImplementedException(); + } +} diff --git a/Core/Helpers/TraderHelper.cs b/Core/Helpers/TraderHelper.cs new file mode 100644 index 00000000..d4d0c694 --- /dev/null +++ b/Core/Helpers/TraderHelper.cs @@ -0,0 +1,254 @@ +using Core.Models.Eft.Common; +using Core.Models.Eft.Common.Tables; +using Core.Models.Eft.Profile; +using Core.Models.Enums; +using Core.Models.Spt.Config; + +namespace Core.Helpers; + +public class TraderHelper +{ + private TraderConfig _traderConfig; + private Dictionary? _highestTraderPriceItems; + + public TraderHelper() + { + } + + /// + /// Get a trader base object, update profile to reflect players current standing in profile + /// when trader not found in profile + /// + /// Traders Id to get + /// Players id + /// Trader base + public TraderBase GetTrader(string traderID, string sessionID) + { + throw new NotImplementedException(); + } + + /// + /// Get all assort data for a particular trader + /// + /// Trader to get assorts for + /// TraderAssort + public TraderAssort GetTraderAssortsByTraderId(string traderId) + { + throw new NotImplementedException(); + } + + /// + /// Retrieve the Item from a traders assort data by its id + /// + /// Trader to get assorts for + /// Id of assort to find + /// Item object + public Item GetTraderAssortItemByAssortId(string traderId, string assortId) + { + throw new NotImplementedException(); + } + + /// + /// Reset a profiles trader data back to its initial state as seen by a level 1 player + /// Does NOT take into account different profile levels + /// + /// session id of player + /// trader id to reset + public void ResetTrader(string sessionID, string traderID) + { + throw new NotImplementedException(); + } + + /// + /// Get the starting standing of a trader based on the current profiles type (e.g. EoD, Standard etc) + /// + /// Trader id to get standing for + /// Raw profile from profiles.json to look up standing from + /// Standing value + protected double GetStartingStanding(string traderId, ProfileTraderTemplate rawProfileTemplate) + { + throw new NotImplementedException(); + } + + /// + /// Add a list of suit ids to a profiles suit list, no duplicates + /// + /// Profile to add to + /// Suit Ids to add + protected void AddSuitsToProfile(SptProfile fullProfile, List suitIds) + { + throw new NotImplementedException(); + } + + /// + /// Alter a traders unlocked status + /// + /// Trader to alter + /// New status to use + /// Session id of player + public void SetTraderUnlockedState(string traderId, bool status, string sessionId) + { + throw new NotImplementedException(); + } + + /// + /// Add standing to a trader and level them up if exp goes over level threshold + /// + /// Session id of player + /// Traders id to add standing to + /// Standing value to add to trader + public void AddStandingToTrader(string sessionId, string traderId, double standingToAdd) + { + throw new NotImplementedException(); + } + + /// + /// Add standing to current standing and clamp value if it goes too low + /// + /// current trader standing + /// standing to add to trader standing + /// current standing + added standing (clamped if needed) + protected double AddStandingValuesTogether(double currentStanding, double standingToAdd) + { + throw new NotImplementedException(); + } + + /// + /// Iterate over a profile's traders and ensure they have the correct loyalty level for the player. + /// + /// Profile to check. + public void ValidateTraderStandingsAndPlayerLevelForProfile(string sessionId) + { + throw new NotImplementedException(); + } + + /// + /// Calculate trader's level based on experience amount and increments level if over threshold. + /// Also validates and updates player level if not correct based on XP value. + /// + /// Trader to check standing of. + /// Profile to update trader in. + public void LevelUp(string traderID, PmcData pmcData) + { + throw new NotImplementedException(); + } + + /// + /// Get the next update timestamp for a trader. + /// + /// Trader to look up update value for. + /// Future timestamp. + public long GetNextUpdateTimestamp(string traderID) + { + throw new NotImplementedException(); + } + + /// + /// Get the reset time between trader assort refreshes in seconds. + /// + /// Trader to look up. + /// Time in seconds. + public long? GetTraderUpdateSeconds(string traderId) + { + throw new NotImplementedException(); + } + + public TraderLoyaltyLevel GetLoyaltyLevel(string traderID, PmcData pmcData) + { + throw new NotImplementedException(); + } + + /// + /// Store the purchase of an assort from a trader in the player profile + /// + /// Session id + /// New item assort id + count + public void AddTraderPurchasesToPlayerProfile( + string sessionID, + object newPurchaseDetails, // TODO: TYPE FUCKEY { items: { itemId: string; count: number }[]; traderId: string } + Item itemPurchased) + { + throw new NotImplementedException(); + } + + /// + /// EoD and Unheard get a 20% bonus to personal trader limit purchases + /// + /// Existing value from trader item + /// Profiles game version + /// buyRestrictionMax value + public double GetAccountTypeAdjustedTraderPurchaseLimit(double buyRestrictionMax, string gameVersion) + { + throw new NotImplementedException(); + } + + /// + /// Get the highest rouble price for an item from traders + /// UNUSED + /// + /// Item to look up highest price for + /// highest rouble cost for item + public double GetHighestTraderPriceRouble(string tpl) + { + throw new NotImplementedException(); + } + + /// + /// Get the highest price item can be sold to trader for (roubles) + /// + /// Item to look up best trader sell-to price + /// Rouble price + public double GetHighestSellToTraderPrice(string tpl) + { + throw new NotImplementedException(); + } + + /// + /// Get a trader enum key by its value + /// + /// Traders id + /// Traders key + public Trader GetTraderById(string traderId) + { + throw new NotImplementedException(); + } + + /// + /// Validates that the provided traderEnumValue exists in the Traders enum. If the value is valid, it returns the + /// same enum value, effectively serving as a trader ID; otherwise, it logs an error and returns an empty string. + /// This method provides a runtime check to prevent undefined behavior when using the enum as a dictionary key. + /// + /// For example, instead of this: + /// const traderId = Traders[Traders.PRAPOR]; + /// + /// You can use safely use this: + /// const traderId = this.traderHelper.getValidTraderIdByEnumValue(Traders.PRAPOR); + /// + /// + /// The trader enum value to validate + /// The validated trader enum value as a string, or an empty string if invalid + public string GetValidTraderIdByEnumValue(object traderEnumValue) // TODO: param was Traders + { + throw new NotImplementedException(); + } + + /// + /// Does the 'Traders' enum has a value that matches the passed in parameter + /// + /// Value to check for + /// True, values exists in Traders enum as a value + public bool TraderEnumHasKey(string key) + { + throw new NotImplementedException(); + } + + /// + /// Accepts a trader id + /// + /// Trader id + /// True if Traders enum has the param as a value + public bool TraderEnumHasValue(string traderId) + { + throw new NotImplementedException(); + } +} diff --git a/Core/Helpers/UtilityHelper.cs b/Core/Helpers/UtilityHelper.cs new file mode 100644 index 00000000..ae7c0c4c --- /dev/null +++ b/Core/Helpers/UtilityHelper.cs @@ -0,0 +1,9 @@ +namespace Core.Helpers; + +public class UtilityHelper +{ + public List ArrayIntersect(List a, List b) + { + throw new NotImplementedException(); + } +} diff --git a/Core/Helpers/WeatherHelper.cs b/Core/Helpers/WeatherHelper.cs new file mode 100644 index 00000000..ef67a945 --- /dev/null +++ b/Core/Helpers/WeatherHelper.cs @@ -0,0 +1,34 @@ +namespace Core.Helpers; + +public class WeatherHelper +{ + public WeatherHelper() + { + + } + + /// + /// Get the current in-raid time - does not include an accurate date, only time + /// + /// (new Date()) + /// Date object of current in-raid time + public DateTime GetInRaidTime(double? timestamp = null) + { + throw new NotImplementedException(); + } + + /// + /// Is the current raid at nighttime + /// + /// PASS OR CURR (from raid settings) + /// True when nighttime + public bool IsNightTime(DateTime timeVariant) + { + throw new NotImplementedException(); + } + + public bool IsHourAtNightTime(int currentHour) + { + throw new NotImplementedException(); + } +} diff --git a/Core/Helpers/WeightedRandomHelper.cs b/Core/Helpers/WeightedRandomHelper.cs new file mode 100644 index 00000000..01f9b145 --- /dev/null +++ b/Core/Helpers/WeightedRandomHelper.cs @@ -0,0 +1,56 @@ +namespace Core.Helpers; + +public class WeightedRandomHelper +{ + public WeightedRandomHelper() + { + } + + /// + /// Choos an item from the passed in array based on the weightings of each + /// + /// Items and weights to use + /// Chosen item from array + public T GetWeightedValue(Dictionary itemArray) + { + throw new NotImplementedException(); + } + + /// + /// Picks the random item based on its weight. + /// The items with higher weight will be picked more often (with a higher probability). + /// + /// For example: + /// - items = ['banana', 'orange', 'apple'] + /// - weights = [0, 0.2, 0.8] + /// - weightedRandom(items, weights) in 80% of cases will return 'apple', in 20% of cases will return + /// 'orange' and it will never return 'banana' (because probability of picking the banana is 0%) + /// + /// + /// List of items + /// List of weights + /// Dictionary with item and index + public Dictionary WeightedRandom(List items, List weights) + { + throw new NotImplementedException(); + } + + /// + /// Find the greated common divisor of all weights and use it on the passed in dictionary + /// + /// Values to reduce + public void ReduceWeightValues(Dictionary weightedDict) + { + throw new NotImplementedException(); + } + + protected double CommonDivisor(List numbers) + { + throw new NotImplementedException(); + } + + protected double Gcd(double a, double b) + { + throw new NotImplementedException(); + } +}