diff --git a/Libraries/Core/Callbacks/AchievementCallbacks.cs b/Libraries/Core/Callbacks/AchievementCallbacks.cs
index 572c9c94..6a65a474 100644
--- a/Libraries/Core/Callbacks/AchievementCallbacks.cs
+++ b/Libraries/Core/Callbacks/AchievementCallbacks.cs
@@ -16,7 +16,7 @@ public class AchievementCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string GetAchievements(string url, EmptyRequestData info, string sessionID)
{
@@ -28,7 +28,7 @@ public class AchievementCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string Statistic(string url, EmptyRequestData info, string sessionID)
{
diff --git a/Libraries/Core/Callbacks/BotCallbacks.cs b/Libraries/Core/Callbacks/BotCallbacks.cs
index 8d605c29..73fde8ab 100644
--- a/Libraries/Core/Callbacks/BotCallbacks.cs
+++ b/Libraries/Core/Callbacks/BotCallbacks.cs
@@ -21,7 +21,7 @@ public class BotCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string GetBotLimit(string url, EmptyRequestData info, string sessionID)
{
@@ -35,7 +35,7 @@ public class BotCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string GetBotDifficulty(string url, EmptyRequestData info, string sessionID)
{
@@ -58,7 +58,7 @@ public class BotCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string GetAllBotDifficulties(string url, EmptyRequestData info, string sessionID)
{
@@ -70,7 +70,7 @@ public class BotCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string GenerateBots(string url, GenerateBotsRequestData info, string sessionID)
{
diff --git a/Libraries/Core/Callbacks/BuildsCallbacks.cs b/Libraries/Core/Callbacks/BuildsCallbacks.cs
index 379d8629..d0c50efc 100644
--- a/Libraries/Core/Callbacks/BuildsCallbacks.cs
+++ b/Libraries/Core/Callbacks/BuildsCallbacks.cs
@@ -18,7 +18,7 @@ public class BuildsCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string GetBuilds(string url, EmptyRequestData info, string sessionID)
{
@@ -30,7 +30,7 @@ public class BuildsCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string CreateMagazineTemplate(string url, SetMagazineRequest info, string sessionID)
{
@@ -43,7 +43,7 @@ public class BuildsCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string SetWeapon(string url, PresetBuildActionRequestData info, string sessionID)
{
@@ -56,7 +56,7 @@ public class BuildsCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string SetEquipment(string url, PresetBuildActionRequestData info, string sessionID)
{
@@ -69,7 +69,7 @@ public class BuildsCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string DeleteBuild(string url, RemoveBuildRequestData info, string sessionID)
{
diff --git a/Libraries/Core/Callbacks/BundleCallbacks.cs b/Libraries/Core/Callbacks/BundleCallbacks.cs
index 05092129..1476fe54 100644
--- a/Libraries/Core/Callbacks/BundleCallbacks.cs
+++ b/Libraries/Core/Callbacks/BundleCallbacks.cs
@@ -15,7 +15,7 @@ public class BundleCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string GetBundles(string url, EmptyRequestData info, string sessionID)
{
diff --git a/Libraries/Core/Callbacks/ClientLogCallbacks.cs b/Libraries/Core/Callbacks/ClientLogCallbacks.cs
index 9086fc4f..e8a36e0d 100644
--- a/Libraries/Core/Callbacks/ClientLogCallbacks.cs
+++ b/Libraries/Core/Callbacks/ClientLogCallbacks.cs
@@ -23,7 +23,7 @@ public class ClientLogCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string ClientLog(string url, ClientLogRequest info, string sessionID)
{
diff --git a/Libraries/Core/Callbacks/CustomizationCallbacks.cs b/Libraries/Core/Callbacks/CustomizationCallbacks.cs
index f45942e0..bbfe113c 100644
--- a/Libraries/Core/Callbacks/CustomizationCallbacks.cs
+++ b/Libraries/Core/Callbacks/CustomizationCallbacks.cs
@@ -20,7 +20,7 @@ public class CustomizationCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string GetCustomisationUnlocks(string url, EmptyRequestData info, string sessionID)
{
@@ -32,7 +32,7 @@ public class CustomizationCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string GetTraderSuits(string url, EmptyRequestData info, string sessionID)
{
@@ -45,9 +45,9 @@ public class CustomizationCallbacks(
///
/// Handle CustomizationBuy event
///
- ///
+ /// Players PMC profile
///
- ///
+ /// Session/player id
///
public ItemEventRouterResponse BuyCustomisation(PmcData pmcData, BuyClothingRequestData info, string sessionID)
{
@@ -59,7 +59,7 @@ public class CustomizationCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string GetHideoutCustomisation(string url, EmptyRequestData info, string sessionID)
{
@@ -71,7 +71,7 @@ public class CustomizationCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string GetStorage(string url, EmptyRequestData info, string sessionID)
{
@@ -81,9 +81,9 @@ public class CustomizationCallbacks(
///
/// Handle CustomizationSet
///
- ///
+ /// Players PMC profile
///
- ///
+ /// Session/player id
///
public ItemEventRouterResponse SetCustomisation(PmcData pmcData, CustomizationSetRequest info, string sessionID)
{
diff --git a/Libraries/Core/Callbacks/DataCallbacks.cs b/Libraries/Core/Callbacks/DataCallbacks.cs
index 388bb347..27bee53e 100644
--- a/Libraries/Core/Callbacks/DataCallbacks.cs
+++ b/Libraries/Core/Callbacks/DataCallbacks.cs
@@ -19,7 +19,7 @@ public class DataCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string GetSettings(string url, EmptyRequestData info, string sessionID)
{
@@ -32,7 +32,7 @@ public class DataCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string GetGlobals(string url, EmptyRequestData info, string sessionID)
{
@@ -47,7 +47,7 @@ public class DataCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string GetTemplateItems(string url, EmptyRequestData info, string sessionID)
{
@@ -59,7 +59,7 @@ public class DataCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string GetTemplateHandbook(string url, EmptyRequestData info, string sessionID)
{
@@ -71,7 +71,7 @@ public class DataCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string GetTemplateSuits(string url, EmptyRequestData info, string sessionID)
{
@@ -83,7 +83,7 @@ public class DataCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string GetTemplateCharacter(string url, EmptyRequestData info, string sessionID)
{
@@ -95,7 +95,7 @@ public class DataCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string GetHideoutSettings(string url, EmptyRequestData info, string sessionID)
{
@@ -107,7 +107,7 @@ public class DataCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string GetHideoutAreas(string url, EmptyRequestData info, string sessionID)
{
@@ -119,7 +119,7 @@ public class DataCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string GetHideoutProduction(string url, EmptyRequestData info, string sessionID)
{
@@ -131,7 +131,7 @@ public class DataCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string GetLocalesLanguages(string url, EmptyRequestData info, string sessionID)
{
@@ -143,7 +143,7 @@ public class DataCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string GetLocalesMenu(string url, EmptyRequestData info, string sessionID)
{
@@ -164,7 +164,7 @@ public class DataCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string GetLocalesGlobal(string url, EmptyRequestData info, string sessionID)
{
@@ -180,7 +180,7 @@ public class DataCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string GetQteList(string url, EmptyRequestData info, string sessionID)
{
@@ -192,7 +192,7 @@ public class DataCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string GetItemPrices(string url, EmptyRequestData info, string sessionID)
{
diff --git a/Libraries/Core/Callbacks/DialogueCallbacks.cs b/Libraries/Core/Callbacks/DialogueCallbacks.cs
index 9e7b6b17..f895e07f 100644
--- a/Libraries/Core/Callbacks/DialogueCallbacks.cs
+++ b/Libraries/Core/Callbacks/DialogueCallbacks.cs
@@ -34,7 +34,7 @@ public class DialogueCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public virtual string GetFriendList(string url, EmptyRequestData info, string sessionID)
{
@@ -46,7 +46,7 @@ public class DialogueCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public virtual string GetChatServerList(string url, GetChatServerListRequestData info, string sessionID)
{
@@ -81,7 +81,7 @@ public class DialogueCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public virtual string GetMailDialogList(string url, GetMailDialogListRequestData info, string sessionID)
{
@@ -93,7 +93,7 @@ public class DialogueCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public virtual string GetMailDialogView(string url, GetMailDialogViewRequestData info, string sessionID)
{
@@ -105,7 +105,7 @@ public class DialogueCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public virtual string GetMailDialogInfo(string url, GetMailDialogInfoRequestData info, string sessionID)
{
@@ -117,7 +117,7 @@ public class DialogueCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public virtual string RemoveDialog(string url, RemoveDialogRequestData info, string sessionID)
{
@@ -130,7 +130,7 @@ public class DialogueCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public virtual string PinDialog(string url, PinDialogRequestData info, string sessionID)
{
@@ -143,7 +143,7 @@ public class DialogueCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public virtual string UnpinDialog(string url, PinDialogRequestData info, string sessionID)
{
@@ -156,7 +156,7 @@ public class DialogueCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public virtual string SetRead(string url, SetDialogReadRequestData info, string sessionID)
{
@@ -169,7 +169,7 @@ public class DialogueCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public virtual string GetAllAttachments(string url, GetAllAttachmentsRequestData info, string sessionID)
{
@@ -181,7 +181,7 @@ public class DialogueCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public virtual string SendMessage(string url, SendMessageRequest info, string sessionID)
{
@@ -193,7 +193,7 @@ public class DialogueCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public virtual string ListOutbox(string url, EmptyRequestData info, string sessionID)
{
@@ -205,7 +205,7 @@ public class DialogueCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public virtual string ListInbox(string url, EmptyRequestData info, string sessionID)
{
@@ -217,7 +217,7 @@ public class DialogueCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public virtual string SendFriendRequest(string url, FriendRequestData info, string sessionID)
{
@@ -229,7 +229,7 @@ public class DialogueCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public virtual string AcceptAllFriendRequests(string url, EmptyRequestData info, string sessionID)
{
@@ -241,7 +241,7 @@ public class DialogueCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public virtual string AcceptFriendRequest(string url, AcceptFriendRequestData info, string sessionID)
{
@@ -253,7 +253,7 @@ public class DialogueCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public virtual string DeclineFriendRequest(string url, DeclineFriendRequestData info, string sessionID)
{
@@ -265,7 +265,7 @@ public class DialogueCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public virtual string CancelFriendRequest(string url, CancelFriendRequestData info, string sessionID)
{
@@ -277,7 +277,7 @@ public class DialogueCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public virtual string DeleteFriend(string url, DeleteFriendRequest info, string sessionID)
{
@@ -290,7 +290,7 @@ public class DialogueCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public virtual string IgnoreFriend(string url, UIDRequestData info, string sessionID)
{
@@ -302,7 +302,7 @@ public class DialogueCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public virtual string UnIgnoreFriend(string url, UIDRequestData info, string sessionID)
{
diff --git a/Libraries/Core/Callbacks/GameCallbacks.cs b/Libraries/Core/Callbacks/GameCallbacks.cs
index a46ad6b6..2307f870 100644
--- a/Libraries/Core/Callbacks/GameCallbacks.cs
+++ b/Libraries/Core/Callbacks/GameCallbacks.cs
@@ -35,7 +35,7 @@ public class GameCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string VersionValidate(string url, VersionValidateRequestData info, string sessionID)
{
@@ -47,7 +47,7 @@ public class GameCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string GameStart(string url, EmptyRequestData info, string sessionID)
{
@@ -67,7 +67,7 @@ public class GameCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string GameLogout(string url, EmptyRequestData info, string sessionID)
{
@@ -85,7 +85,7 @@ public class GameCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string GetGameConfig(string url, GameEmptyCrcRequestData info, string sessionID)
{
@@ -97,7 +97,7 @@ public class GameCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string GetGameMode(string url, GameModeRequestData info, string sessionID)
{
@@ -109,7 +109,7 @@ public class GameCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string GetServer(string url, EmptyRequestData info, string sessionID)
{
@@ -121,7 +121,7 @@ public class GameCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string GetCurrentGroup(string url, EmptyRequestData info, string sessionID)
{
@@ -133,7 +133,7 @@ public class GameCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string ValidateGameVersion(string url, EmptyRequestData info, string sessionID)
{
@@ -145,7 +145,7 @@ public class GameCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string GameKeepalive(string url, EmptyRequestData info, string sessionID)
{
@@ -157,7 +157,7 @@ public class GameCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string GetVersion(string url, EmptyRequestData info, string sessionID)
{
@@ -175,7 +175,7 @@ public class GameCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string ReportNickname(string url, UIDRequestData info, string sessionID)
{
@@ -187,7 +187,7 @@ public class GameCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string GetRaidTime(string url, GetRaidTimeRequest info, string sessionID)
{
@@ -199,7 +199,7 @@ public class GameCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string GetSurvey(string url, EmptyRequestData info, string sessionID)
{
@@ -211,7 +211,7 @@ public class GameCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string GetSurveyView(string url, SendSurveyOpinionRequest info, string sessionID)
{
@@ -223,7 +223,7 @@ public class GameCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string SendSurveyOpinion(string url, SendSurveyOpinionRequest info, string sessionID)
{
diff --git a/Libraries/Core/Callbacks/HealthCallbacks.cs b/Libraries/Core/Callbacks/HealthCallbacks.cs
index 275f5f63..0af83917 100644
--- a/Libraries/Core/Callbacks/HealthCallbacks.cs
+++ b/Libraries/Core/Callbacks/HealthCallbacks.cs
@@ -31,9 +31,9 @@ public class HealthCallbacks(
///
/// Handle Eat
///
- ///
+ /// Players PMC profile
///
- ///
+ /// Session/player id
///
public ItemEventRouterResponse OffraidEat(PmcData pmcData, OffraidEatRequestData info, string sessionID)
{
@@ -43,9 +43,9 @@ public class HealthCallbacks(
///
/// Handle Heal
///
- ///
+ /// Players PMC profile
///
- ///
+ /// Session/player id
///
public ItemEventRouterResponse OffraidHeal(PmcData pmcData, OffraidHealRequestData info, string sessionID)
{
@@ -55,9 +55,9 @@ public class HealthCallbacks(
///
/// Handle RestoreHealth
///
- ///
+ /// Players PMC profile
///
- ///
+ /// Session/player id
///
public ItemEventRouterResponse HealthTreatment(PmcData pmcData, HealthTreatmentRequestData info, string sessionID)
{
diff --git a/Libraries/Core/Callbacks/InsuranceCallbacks.cs b/Libraries/Core/Callbacks/InsuranceCallbacks.cs
index b8c77d97..edd3b516 100644
--- a/Libraries/Core/Callbacks/InsuranceCallbacks.cs
+++ b/Libraries/Core/Callbacks/InsuranceCallbacks.cs
@@ -44,7 +44,7 @@ public class InsuranceCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string GetInsuranceCost(string url, GetInsuranceCostRequestData info, string sessionID)
{
@@ -54,9 +54,9 @@ public class InsuranceCallbacks(
///
/// Handle Insure event
///
- ///
+ /// Players PMC profile
///
- ///
+ /// Session/player id
///
public ItemEventRouterResponse Insure(PmcData pmcData, InsureRequestData info, string sessionID)
{
diff --git a/Libraries/Core/Callbacks/InventoryCallbacks.cs b/Libraries/Core/Callbacks/InventoryCallbacks.cs
index 9effcc91..36b584c9 100644
--- a/Libraries/Core/Callbacks/InventoryCallbacks.cs
+++ b/Libraries/Core/Callbacks/InventoryCallbacks.cs
@@ -16,10 +16,10 @@ public class InventoryCallbacks(
///
/// Handle client/game/profile/items/moving Move event
///
- ///
+ /// Players PMC profile
///
- ///
- ///
+ /// Session/player id
+ /// Client response
///
public ItemEventRouterResponse MoveItem(PmcData pmcData, InventoryMoveRequestData info, string sessionID,
ItemEventRouterResponse output)
@@ -31,25 +31,25 @@ public class InventoryCallbacks(
///
/// Handle Remove event
///
- ///
+ /// Players PMC profile
///
- ///
- ///
+ /// Session/player id
+ /// Client response
///
public ItemEventRouterResponse RemoveItem(PmcData pmcData, InventoryRemoveRequestData info, string sessionID,
ItemEventRouterResponse output)
{
- _inventoryController.RemoveItem(pmcData, info, sessionID, output);
+ _inventoryController.DiscardItem(pmcData, info, sessionID, output);
return output;
}
///
/// Handle Split event
///
- ///
+ /// Players PMC profile
///
- ///
- ///
+ /// Session/player id
+ /// Client response
///
public ItemEventRouterResponse SplitItem(PmcData pmcData, InventorySplitRequestData info, string sessionID,
ItemEventRouterResponse output)
@@ -60,10 +60,10 @@ public class InventoryCallbacks(
///
///
- ///
+ /// Players PMC profile
///
- ///
- ///
+ /// Session/player id
+ /// Client response
///
public ItemEventRouterResponse MergeItem(PmcData pmcData, InventoryMergeRequestData info, string sessionID,
ItemEventRouterResponse output)
@@ -74,10 +74,10 @@ public class InventoryCallbacks(
///
///
- ///
+ /// Players PMC profile
///
- ///
- ///
+ /// Session/player id
+ /// Client response
///
public ItemEventRouterResponse TransferItem(PmcData pmcData, InventoryTransferRequestData info, string sessionID,
ItemEventRouterResponse output)
@@ -89,9 +89,9 @@ public class InventoryCallbacks(
///
/// Handle Swap
///
- ///
+ /// Players PMC profile
///
- ///
+ /// Session/player id
///
public ItemEventRouterResponse SwapItem(PmcData pmcData, InventorySwapRequestData info, string sessionID)
{
@@ -100,9 +100,9 @@ public class InventoryCallbacks(
///
///
- ///
+ /// Players PMC profile
///
- ///
+ /// Session/player id
///
public ItemEventRouterResponse FoldItem(PmcData pmcData, InventoryFoldRequestData info, string sessionID)
{
@@ -111,9 +111,9 @@ public class InventoryCallbacks(
///
///
- ///
+ /// Players PMC profile
///
- ///
+ /// Session/player id
///
public ItemEventRouterResponse ToggleItem(PmcData pmcData, InventoryToggleRequestData info, string sessionID)
{
@@ -122,9 +122,9 @@ public class InventoryCallbacks(
///
///
- ///
+ /// Players PMC profile
///
- ///
+ /// Session/Player id
///
public ItemEventRouterResponse TagItem(PmcData pmcData, InventoryTagRequestData request, string sessionId)
{
@@ -133,10 +133,10 @@ public class InventoryCallbacks(
///
///
- ///
+ /// Players PMC profile
///
- ///
- ///
+ /// Session/player id
+ /// Client response
///
public ItemEventRouterResponse BindItem(PmcData pmcData, InventoryBindRequestData info, string sessionID,
ItemEventRouterResponse output)
@@ -147,10 +147,10 @@ public class InventoryCallbacks(
///
///
- ///
+ /// Players PMC profile
///
- ///
- ///
+ /// Session/player id
+ /// Client response
///
public ItemEventRouterResponse UnBindItem(PmcData pmcData, InventoryBindRequestData info, string sessionID,
ItemEventRouterResponse output)
@@ -161,10 +161,10 @@ public class InventoryCallbacks(
///
///
- ///
+ /// Players PMC profile
///
- ///
- ///
+ /// Session/player id
+ /// Client response
///
public ItemEventRouterResponse ExamineItem(PmcData pmcData, InventoryExamineRequestData info, string sessionID,
ItemEventRouterResponse output)
@@ -176,9 +176,9 @@ public class InventoryCallbacks(
///
/// Handle ReadEncyclopedia
///
- ///
+ /// Players PMC profile
///
- ///
+ /// Session/player id
///
public ItemEventRouterResponse ReadEncyclopedia(PmcData pmcData, InventoryReadEncyclopediaRequestData info,
string sessionID)
@@ -189,10 +189,10 @@ public class InventoryCallbacks(
///
/// Handle ApplyInventoryChanges
///
- ///
+ /// Players PMC profile
///
- ///
- ///
+ /// Session/player id
+ /// Client response
///
public ItemEventRouterResponse SortInventory(PmcData pmcData, InventorySortRequestData info, string sessionID,
ItemEventRouterResponse output)
@@ -203,10 +203,10 @@ public class InventoryCallbacks(
///
///
- ///
+ /// Players PMC profile
///
- ///
- ///
+ /// Session/player id
+ /// Client response
///
public ItemEventRouterResponse CreateMapMarker(PmcData pmcData, InventoryCreateMarkerRequestData info,
string sessionID, ItemEventRouterResponse output)
@@ -217,10 +217,10 @@ public class InventoryCallbacks(
///
///
- ///
+ /// Players PMC profile
///
- ///
- ///
+ /// Session/player id
+ /// Client response
///
public ItemEventRouterResponse DeleteMapMarker(PmcData pmcData, InventoryDeleteMarkerRequestData info,
string sessionID, ItemEventRouterResponse output)
@@ -231,10 +231,10 @@ public class InventoryCallbacks(
///
///
- ///
+ /// Players PMC profile
///
- ///
- ///
+ /// Session/player id
+ /// Client response
///
public ItemEventRouterResponse EditMapMarker(PmcData pmcData, InventoryEditMarkerRequestData info, string sessionID,
ItemEventRouterResponse output)
@@ -246,10 +246,10 @@ public class InventoryCallbacks(
///
/// Handle OpenRandomLootContainer
///
- ///
+ /// Players PMC profile
///
- ///
- ///
+ /// Session/player id
+ /// Client response
///
public ItemEventRouterResponse OpenRandomLootContainer(PmcData pmcData, OpenRandomLootContainerRequestData info,
string sessionID,
@@ -261,10 +261,10 @@ public class InventoryCallbacks(
///
///
- ///
+ /// Players PMC profile
///
- ///
- ///
+ /// Session/player id
+ /// Client response
///
public ItemEventRouterResponse RedeemProfileReward(PmcData pmcData, RedeemProfileRequestData info, string sessionID,
ItemEventRouterResponse output)
@@ -274,11 +274,12 @@ public class InventoryCallbacks(
}
///
+ /// Handle game/profile/items/moving SetFavoriteItems
///
- ///
+ /// Players PMC profile
///
- ///
- ///
+ /// Session/player id
+ /// Client response
///
public ItemEventRouterResponse SetFavoriteItem(PmcData pmcData, SetFavoriteItems info, string sessionID,
ItemEventRouterResponse output)
@@ -291,10 +292,10 @@ public class InventoryCallbacks(
/// TODO: MOVE INTO QUEST CODE
/// Handle game/profile/items/moving - QuestFail
///
- ///
+ /// Players PMC profile
///
- ///
- ///
+ /// Session/player id
+ /// Client response
///
public ItemEventRouterResponse FailQuest(PmcData pmcData, FailQuestRequestData info, string sessionID,
ItemEventRouterResponse output)
@@ -305,10 +306,10 @@ public class InventoryCallbacks(
///
///
- ///
+ /// Players PMC profile
///
- ///
- ///
+ /// Session/player id
+ /// Client response
///
public ItemEventRouterResponse PinOrLock(PmcData pmcData, PinOrLockItemRequest info, string sessionID,
ItemEventRouterResponse output)
diff --git a/Libraries/Core/Callbacks/LocationCallbacks.cs b/Libraries/Core/Callbacks/LocationCallbacks.cs
index 2b14a456..830c0ebd 100644
--- a/Libraries/Core/Callbacks/LocationCallbacks.cs
+++ b/Libraries/Core/Callbacks/LocationCallbacks.cs
@@ -17,7 +17,7 @@ public class LocationCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string GetLocationData(string url, EmptyRequestData info, string sessionID)
{
@@ -29,7 +29,7 @@ public class LocationCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string GetAirdropLoot(string url, GetAirdropLootRequest info, string sessionID)
{
diff --git a/Libraries/Core/Callbacks/MatchCallbacks.cs b/Libraries/Core/Callbacks/MatchCallbacks.cs
index 00fbe392..6b36183a 100644
--- a/Libraries/Core/Callbacks/MatchCallbacks.cs
+++ b/Libraries/Core/Callbacks/MatchCallbacks.cs
@@ -20,7 +20,7 @@ public class MatchCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string UpdatePing(string url, UpdatePingRequestData info, string sessionID)
{
@@ -32,7 +32,7 @@ public class MatchCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string ExitMatch(string url, EmptyRequestData info, string sessionID)
{
@@ -44,7 +44,7 @@ public class MatchCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string ExitFromMenu(string url, EmptyRequestData info, string sessionID)
{
@@ -56,7 +56,7 @@ public class MatchCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string GroupCurrent(string url, EmptyRequestData info, string sessionID)
{
@@ -73,7 +73,7 @@ public class MatchCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string StartGroupSearch(string url, EmptyRequestData info, string sessionID)
{
@@ -85,7 +85,7 @@ public class MatchCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string StopGroupSearch(string url, EmptyRequestData info, string sessionID)
{
@@ -97,7 +97,7 @@ public class MatchCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string SendGroupInvite(string url, MatchGroupInviteSendRequest info, string sessionID)
{
@@ -109,7 +109,7 @@ public class MatchCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string AcceptGroupInvite(string url, RequestIdRequest info, string sessionID)
{
@@ -126,7 +126,7 @@ public class MatchCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string DeclineGroupInvite(string url, RequestIdRequest info, string sessionID)
{
@@ -138,7 +138,7 @@ public class MatchCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string CancelGroupInvite(string url, RequestIdRequest info, string sessionID)
{
@@ -150,7 +150,7 @@ public class MatchCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string TransferGroup(string url, MatchGroupTransferRequest info, string sessionID)
{
@@ -162,7 +162,7 @@ public class MatchCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string CancelAllGroupInvite(string url, EmptyRequestData info, string sessionID)
{
@@ -174,7 +174,7 @@ public class MatchCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string PutMetrics(string url, PutMetricsRequestData info, string sessionID)
{
@@ -186,7 +186,7 @@ public class MatchCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string EventDisconnect(string url, PutMetricsRequestData info, string sessionID)
{
@@ -198,7 +198,7 @@ public class MatchCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string ServerAvailable(string url, EmptyRequestData info, string sessionID)
{
@@ -210,7 +210,7 @@ public class MatchCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string JoinMatch(string url, MatchGroupStartGameRequest info, string sessionID)
{
@@ -222,7 +222,7 @@ public class MatchCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string GetMetrics(string url, EmptyRequestData info, string sessionID)
{
@@ -235,7 +235,7 @@ public class MatchCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string GetGroupStatus(string url, MatchGroupStatusRequest info, string sessionID)
{
@@ -247,7 +247,7 @@ public class MatchCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string DeleteGroup(string url, DeleteGroupRequest info, string sessionID)
{
@@ -260,7 +260,7 @@ public class MatchCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string LeaveGroup(string url, EmptyRequestData info, string sessionID)
{
@@ -272,7 +272,7 @@ public class MatchCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string RemovePlayerFromGroup(string url, MatchGroupPlayerRemoveRequest info, string sessionID)
{
@@ -284,7 +284,7 @@ public class MatchCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string StartLocalRaid(string url, StartLocalRaidRequestData info, string sessionID)
{
@@ -296,7 +296,7 @@ public class MatchCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string EndLocalRaid(string url, EndLocalRaidRequestData info, string sessionID)
{
@@ -309,7 +309,7 @@ public class MatchCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string GetRaidConfiguration(string url, GetRaidConfigurationRequestData info, string sessionID)
{
@@ -322,7 +322,7 @@ public class MatchCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string GetConfigurationByProfile(string url, GetRaidConfigurationRequestData info, string sessionID)
{
@@ -334,7 +334,7 @@ public class MatchCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string RaidReady(string url, EmptyRequestData info, string sessionID)
{
@@ -346,7 +346,7 @@ public class MatchCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string NotRaidReady(string url, EmptyRequestData info, string sessionID)
{
diff --git a/Libraries/Core/Callbacks/NoteCallbacks.cs b/Libraries/Core/Callbacks/NoteCallbacks.cs
index 76e29c6f..f4b874f3 100644
--- a/Libraries/Core/Callbacks/NoteCallbacks.cs
+++ b/Libraries/Core/Callbacks/NoteCallbacks.cs
@@ -12,9 +12,9 @@ public class NoteCallbacks(NoteController _noteController)
///
/// Handle AddNote event
///
- ///
+ /// Players PMC profile
///
- ///
+ /// Session/player id
///
public ItemEventRouterResponse AddNote(PmcData pmcData, NoteActionData info, string sessionID)
{
@@ -24,9 +24,9 @@ public class NoteCallbacks(NoteController _noteController)
///
/// Handle EditNote event
///
- ///
+ /// Players PMC profile
///
- ///
+ /// Session/player id
///
public ItemEventRouterResponse EditNote(PmcData pmcData, NoteActionData info, string sessionID)
{
@@ -36,9 +36,9 @@ public class NoteCallbacks(NoteController _noteController)
///
/// Handle DeleteNote event
///
- ///
+ /// Players PMC profile
///
- ///
+ /// Session/player id
///
public ItemEventRouterResponse DeleteNote(PmcData pmcData, NoteActionData info, string sessionID)
{
diff --git a/Libraries/Core/Callbacks/NotifierCallbacks.cs b/Libraries/Core/Callbacks/NotifierCallbacks.cs
index 274cf0c9..622f7ff3 100644
--- a/Libraries/Core/Callbacks/NotifierCallbacks.cs
+++ b/Libraries/Core/Callbacks/NotifierCallbacks.cs
@@ -51,7 +51,7 @@ public class NotifierCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string CreateNotifierChannel(string url, EmptyRequestData info, string sessionID)
{
@@ -63,7 +63,7 @@ public class NotifierCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string SelectProfile(string url, UIDRequestData info, string sessionID)
{
@@ -79,7 +79,7 @@ public class NotifierCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string Notify(string url, object info, string sessionID)
{
diff --git a/Libraries/Core/Callbacks/PrestigeCallbacks.cs b/Libraries/Core/Callbacks/PrestigeCallbacks.cs
index 5ae586b4..8ed889fb 100644
--- a/Libraries/Core/Callbacks/PrestigeCallbacks.cs
+++ b/Libraries/Core/Callbacks/PrestigeCallbacks.cs
@@ -17,7 +17,7 @@ public class PrestigeCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string GetPrestige(string url, EmptyRequestData info, string sessionID)
{
@@ -29,7 +29,7 @@ public class PrestigeCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string ObtainPrestige(string url, ObtainPrestigeRequestList info, string sessionID)
{
diff --git a/Libraries/Core/Callbacks/QuestCallbacks.cs b/Libraries/Core/Callbacks/QuestCallbacks.cs
index 784734d7..f29263a5 100644
--- a/Libraries/Core/Callbacks/QuestCallbacks.cs
+++ b/Libraries/Core/Callbacks/QuestCallbacks.cs
@@ -17,9 +17,9 @@ public class QuestCallbacks(
///
/// Handle RepeatableQuestChange event
///
- ///
+ /// Players PMC profile
///
- ///
+ /// Session/player id
///
public ItemEventRouterResponse ChangeRepeatableQuest(PmcData pmcData, RepeatableQuestChangeRequest info, string sessionID)
{
@@ -29,9 +29,9 @@ public class QuestCallbacks(
///
/// Handle QuestAccept event
///
- ///
+ /// Players PMC profile
///
- ///
+ /// Session/player id
///
public ItemEventRouterResponse AcceptQuest(PmcData pmcData, AcceptQuestRequestData info, string sessionID)
{
@@ -46,9 +46,9 @@ public class QuestCallbacks(
///
/// Handle QuestComplete event
///
- ///
+ /// Players PMC profile
///
- ///
+ /// Session/player id
///
public ItemEventRouterResponse CompleteQuest(PmcData pmcData, CompleteQuestRequestData info, string sessionID)
{
@@ -58,9 +58,9 @@ public class QuestCallbacks(
///
/// Handle QuestHandover event
///
- ///
+ /// Players PMC profile
///
- ///
+ /// Session/player id
///
public ItemEventRouterResponse HandoverQuest(PmcData pmcData, HandoverQuestRequestData info, string sessionID)
{
@@ -72,7 +72,7 @@ public class QuestCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string ListQuests(string url, ListQuestsRequestData info, string sessionID)
{
@@ -84,7 +84,7 @@ public class QuestCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string ActivityPeriods(string url, EmptyRequestData info, string sessionID)
{
diff --git a/Libraries/Core/Callbacks/RagfairCallbacks.cs b/Libraries/Core/Callbacks/RagfairCallbacks.cs
index ff6cd74c..2e3f1b03 100644
--- a/Libraries/Core/Callbacks/RagfairCallbacks.cs
+++ b/Libraries/Core/Callbacks/RagfairCallbacks.cs
@@ -62,7 +62,7 @@ public class RagfairCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string Search(string url, SearchRequestData info, string sessionID)
{
@@ -74,7 +74,7 @@ public class RagfairCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string GetMarketPrice(string url, GetMarketPriceRequestData info, string sessionID)
{
@@ -84,9 +84,9 @@ public class RagfairCallbacks(
///
/// Handle RagFairAddOffer event
///
- ///
+ /// Players PMC profile
///
- ///
+ /// Session/player id
///
public ItemEventRouterResponse AddOffer(PmcData pmcData, AddOfferRequestData info, string sessionID)
{
@@ -96,9 +96,9 @@ public class RagfairCallbacks(
///
/// Handle RagFairRemoveOffer event
///
- ///
+ /// Players PMC profile
///
- ///
+ /// Session/player id
///
public ItemEventRouterResponse RemoveOffer(PmcData pmcData, RemoveOfferRequestData info, string sessionID)
{
@@ -108,9 +108,9 @@ public class RagfairCallbacks(
///
/// Handle RagFairRenewOffer event
///
- ///
+ /// Players PMC profile
///
- ///
+ /// Session/player id
///
public ItemEventRouterResponse ExtendOffer(PmcData pmcData, ExtendOfferRequestData info, string sessionID)
{
@@ -123,7 +123,7 @@ public class RagfairCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string GetFleaPrices(string url, EmptyRequestData info, string sessionID)
{
@@ -135,7 +135,7 @@ public class RagfairCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string SendReport(string url, SendRagfairReportRequestData info, string sessionID)
{
@@ -153,7 +153,7 @@ public class RagfairCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string GetFleaOfferById(string url, GetRagfairOfferByIdRequest info, string sessionID)
{
diff --git a/Libraries/Core/Callbacks/RepairCallbacks.cs b/Libraries/Core/Callbacks/RepairCallbacks.cs
index 4ac608b2..3c9b8069 100644
--- a/Libraries/Core/Callbacks/RepairCallbacks.cs
+++ b/Libraries/Core/Callbacks/RepairCallbacks.cs
@@ -13,9 +13,9 @@ public class RepairCallbacks(RepairController _repairController)
/// Handle TraderRepair event
/// use trader to repair item
///
- ///
+ /// Players PMC profile
///
- ///
+ /// Session/player id
///
public ItemEventRouterResponse TraderRepair(PmcData pmcData, TraderRepairActionDataRequest info, string sessionID)
{
@@ -26,9 +26,9 @@ public class RepairCallbacks(RepairController _repairController)
/// Handle Repair event
/// Use repair kit to repair item
///
- ///
+ /// Players PMC profile
///
- ///
+ /// Session/player id
///
public ItemEventRouterResponse Repair(PmcData pmcData, RepairActionDataRequest info, string sessionID)
{
diff --git a/Libraries/Core/Callbacks/TradeCallbacks.cs b/Libraries/Core/Callbacks/TradeCallbacks.cs
index 1cb6bbd3..20880cc4 100644
--- a/Libraries/Core/Callbacks/TradeCallbacks.cs
+++ b/Libraries/Core/Callbacks/TradeCallbacks.cs
@@ -12,9 +12,9 @@ public class TradeCallbacks(TradeController _tradeController)
///
/// Handle client/game/profile/items/moving TradingConfirm event
///
- ///
+ /// Players PMC profile
///
- ///
+ /// Session/player id
///
public ItemEventRouterResponse ProcessTrade(PmcData pmcData, ProcessBaseTradeRequestData info, string sessionID)
{
@@ -24,9 +24,9 @@ public class TradeCallbacks(TradeController _tradeController)
///
/// Handle RagFairBuyOffer event
///
- ///
+ /// Players PMC profile
///
- ///
+ /// Session/player id
///
public ItemEventRouterResponse ProcessRagfairTrade(PmcData pmcData, ProcessRagfairTradeRequestData info, string sessionID)
{
@@ -36,9 +36,9 @@ public class TradeCallbacks(TradeController _tradeController)
///
/// Handle SellAllFromSavage event
///
- ///
+ /// Players PMC profile
///
- ///
+ /// Session/player id
///
public ItemEventRouterResponse SellAllFromSavage(PmcData pmcData, SellScavItemsToFenceRequestData info, string sessionID)
{
diff --git a/Libraries/Core/Callbacks/TraderCallbacks.cs b/Libraries/Core/Callbacks/TraderCallbacks.cs
index fbb62120..5efb9571 100644
--- a/Libraries/Core/Callbacks/TraderCallbacks.cs
+++ b/Libraries/Core/Callbacks/TraderCallbacks.cs
@@ -40,7 +40,7 @@ public class TraderCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string GetTraderSettings(string url, EmptyRequestData info, string sessionID)
{
@@ -52,7 +52,7 @@ public class TraderCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string GetTrader(string url, EmptyRequestData info, string sessionID)
{
@@ -65,7 +65,7 @@ public class TraderCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string GetAssort(string url, EmptyRequestData info, string sessionID)
{
@@ -78,7 +78,7 @@ public class TraderCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string GetModdedTraderData(string url, EmptyRequestData info, string sessionID)
{
diff --git a/Libraries/Core/Callbacks/WeatherCallbacks.cs b/Libraries/Core/Callbacks/WeatherCallbacks.cs
index e216abdb..67b83916 100644
--- a/Libraries/Core/Callbacks/WeatherCallbacks.cs
+++ b/Libraries/Core/Callbacks/WeatherCallbacks.cs
@@ -16,7 +16,7 @@ public class WeatherCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string GetWeather(string url, EmptyRequestData info, string sessionID)
{
@@ -28,7 +28,7 @@ public class WeatherCallbacks(
///
///
///
- ///
+ /// Session/player id
///
public string GetLocalWeather(string url, EmptyRequestData info, string sessionID)
{
diff --git a/Libraries/Core/Callbacks/WishlistCallbacks.cs b/Libraries/Core/Callbacks/WishlistCallbacks.cs
index 86a0026e..cd9c5e2b 100644
--- a/Libraries/Core/Callbacks/WishlistCallbacks.cs
+++ b/Libraries/Core/Callbacks/WishlistCallbacks.cs
@@ -12,9 +12,9 @@ public class WishlistCallbacks(WishlistController _wishlistController)
///
/// Handle AddToWishList event
///
- ///
+ /// Players PMC profile
///
- ///
+ /// Session/player id
///
public ItemEventRouterResponse AddToWishlist(PmcData pmcData, AddToWishlistRequest info, string sessionID)
{
@@ -24,9 +24,9 @@ public class WishlistCallbacks(WishlistController _wishlistController)
///
/// Handle RemoveFromWishList event
///
- ///
+ /// Players PMC profile
///
- ///
+ /// Session/player id
///
public ItemEventRouterResponse RemoveFromWishlist(PmcData pmcData, RemoveFromWishlistRequest info, string sessionID)
{
@@ -36,9 +36,9 @@ public class WishlistCallbacks(WishlistController _wishlistController)
///
/// Handle ChangeWishlistItemCategory
///
- ///
+ /// Players PMC profile
///
- ///
+ /// Session/player id
///
public ItemEventRouterResponse ChangeWishlistItemCategory(PmcData pmcData, ChangeWishlistItemCategoryRequest info, string sessionID)
{
diff --git a/Libraries/Core/Context/ApplicationContext.cs b/Libraries/Core/Context/ApplicationContext.cs
index cfc6c979..93446032 100644
--- a/Libraries/Core/Context/ApplicationContext.cs
+++ b/Libraries/Core/Context/ApplicationContext.cs
@@ -5,8 +5,8 @@ namespace Core.Context;
[Injectable(InjectionType.Singleton)]
public class ApplicationContext
{
- private const short MaxSavedValues = 10;
- private readonly Dictionary> variables = new();
+ protected const short MaxSavedValues = 10;
+ protected readonly Dictionary> variables = new();
private readonly Lock variablesLock = new();
public ContextVariable? GetLatestValue(ContextVariableType type)
diff --git a/Libraries/Core/Controllers/AchievementController.cs b/Libraries/Core/Controllers/AchievementController.cs
index 9a10c551..f2e0ae2a 100644
--- a/Libraries/Core/Controllers/AchievementController.cs
+++ b/Libraries/Core/Controllers/AchievementController.cs
@@ -16,6 +16,11 @@ public class AchievementController(
{
protected CoreConfig coreConfig = configServer.GetConfig();
+ ///
+ /// Get base achievements
+ ///
+ /// Session/player id
+ ///
public virtual GetAchievementsResponse GetAchievements(string sessionID)
{
return new GetAchievementsResponse
@@ -24,6 +29,11 @@ public class AchievementController(
};
}
+ ///
+ /// Shows % of 'other' players who've completed each achievement
+ ///
+ /// Session/Player id
+ /// CompletedAchievementsResponse
public virtual CompletedAchievementsResponse GetAchievementStatics(string sessionId)
{
var stats = new Dictionary();
diff --git a/Libraries/Core/Controllers/BotController.cs b/Libraries/Core/Controllers/BotController.cs
index 77271abb..5c725a62 100644
--- a/Libraries/Core/Controllers/BotController.cs
+++ b/Libraries/Core/Controllers/BotController.cs
@@ -40,11 +40,11 @@ public class BotController(
private readonly BotConfig _botConfig = _configServer.GetConfig();
private readonly PmcConfig _pmcConfig = _configServer.GetConfig();
- /**
- * Return the number of bot load-out varieties to be generated
- * @param type bot Type we want the load-out gen count for
- * @returns number of bots to generate
- */
+ ///
+ /// Return the number of bot load-out varieties to be generated
+ ///
+ /// bot Type we want the load-out gen count for
+ /// number of bots to generate
public int GetBotPresetGenerationLimit(string type)
{
@@ -59,11 +59,25 @@ public class BotController(
}
+ ///
+ /// Handle singleplayer/settings/bot/difficulty
+ /// Get the core.json difficulty settings from database/bots
+ ///
+ ///
public Dictionary GetBotCoreDifficulty()
{
return _databaseService.GetBots().Core!;
}
+ ///
+ /// Get bot difficulty settings
+ /// Adjust PMC settings to ensure they engage the correct bot types
+ ///
+ /// what bot the server is requesting settings for
+ /// difficulty level server requested settings for
+ /// OPTIONAL - applicationContext Data stored at start of raid
+ /// OPTIONAL - should raid settings chosen pre-raid be ignored
+ /// Difficulty object
public DifficultyCategories GetBotDifficulty(string type, string diffLevel, GetRaidConfigurationRequestData? raidConfig, bool ignoreRaidSettings = false)
{
var difficulty = diffLevel.ToLower();
@@ -145,14 +159,27 @@ public class BotController(
return result;
}
- public List Generate(string sessionId, GenerateBotsRequestData info)
+ ///
+ /// Generate bots for a wave
+ ///
+ /// Session/Player id
+ ///
+ /// List of bots
+ public List Generate(string sessionId, GenerateBotsRequestData request)
{
var pmcProfile = _profileHelper.GetPmcProfile(sessionId);
- return GenerateBotWaves(info, pmcProfile, sessionId);
+ return GenerateBotWaves(request, pmcProfile, sessionId);
}
- private List GenerateBotWaves(GenerateBotsRequestData request, PmcData? pmcProfile, string sessionId)
+ ///
+ /// Generate bots for passed in wave data
+ ///
+ ///
+ /// Player generating bots
+ /// Session/Player id
+ /// List of generated bots
+ protected List GenerateBotWaves(GenerateBotsRequestData request, PmcData? pmcProfile, string sessionId)
{
var result = new List();
@@ -187,13 +214,20 @@ public class BotController(
return result;
}
- private List GenerateBotWave(GenerateCondition condition, BotGenerationDetails botGenerationDetails, string sessionId)
+ ///
+ /// Generate bots for a single wave request
+ ///
+ ///
+ ///
+ /// Session/Player id
+ ///
+ protected List GenerateBotWave(GenerateCondition generateRequest, BotGenerationDetails botGenerationDetails, string sessionId)
{
- var isEventBot = condition.Role?.ToLower().Contains("event");
+ var isEventBot = generateRequest.Role?.ToLower().Contains("event");
if (isEventBot.GetValueOrDefault(false))
{
// Add eventRole data + reassign role property to be base type
- botGenerationDetails.EventRole = condition.Role;
+ botGenerationDetails.EventRole = generateRequest.Role;
botGenerationDetails.Role = _seasonalEventService.GetBaseRoleForEventBot(
botGenerationDetails.EventRole
);
@@ -241,7 +275,11 @@ public class BotController(
return results;
}
- private GetRaidConfigurationRequestData? GetMostRecentRaidSettings()
+ ///
+ /// Pull raid settings from Application context
+ ///
+ /// GetRaidConfigurationRequestData if it exists
+ protected GetRaidConfigurationRequestData? GetMostRecentRaidSettings()
{
var raidSettings = _applicationContext
.GetLatestValue(ContextVariableType.RAID_CONFIGURATION)
@@ -255,12 +293,27 @@ public class BotController(
return raidSettings;
}
- private MinMax GetPmcLevelRangeForMap(string? location)
+ ///
+ /// Get min/max level range values for a specific map
+ ///
+ /// Map name e.g. factory4_day
+ /// MinMax values
+ protected MinMax GetPmcLevelRangeForMap(string? location)
{
return _pmcConfig.LocationSpecificPmcLevelOverride!.GetValueOrDefault(location?.ToLower() ?? "", null);
}
- private BotGenerationDetails GetBotGenerationDetailsForWave(
+ ///
+ /// Create a BotGenerationDetails for the bot generator to use
+ ///
+ /// Data from client defining bot type and difficulty
+ /// Player who is generating bots
+ /// Should all PMCs have same name as player
+ /// Settings chosen pre-raid by player in client
+ /// How many bots to generate
+ /// Force bot being generated to be a PMC
+ /// BotGenerationDetails
+ protected BotGenerationDetails GetBotGenerationDetailsForWave(
GenerateCondition condition,
PmcData? pmcProfile,
bool allPmcsHaveSameNameAsPlayer,
@@ -285,6 +338,12 @@ public class BotController(
};
}
+ ///
+ /// Get the max number of bots allowed on a map
+ /// Looks up location player is entering when getting cap value
+ ///
+ /// The map location cap was requested for
+ /// bot cap for map
public int GetBotCap(string location)
{
var botCap = _botConfig.MaxBotCap.FirstOrDefault(x =>
@@ -299,6 +358,10 @@ public class BotController(
return botCap.Value;
}
+ ///
+ /// Get weights for what each bot type should use as a brain - used by client
+ ///
+ ///
public AiBotBrainTypes GetAiBotBrainTypes()
{
return new AiBotBrainTypes
diff --git a/Libraries/Core/Controllers/BuildController.cs b/Libraries/Core/Controllers/BuildController.cs
index 11346266..54d23fdf 100644
--- a/Libraries/Core/Controllers/BuildController.cs
+++ b/Libraries/Core/Controllers/BuildController.cs
@@ -29,7 +29,7 @@ public class BuildController(
///
/// Handle client/handbook/builds/my/list
///
- ///
+ /// Session/player id
///
public UserBuilds? GetUserBuilds(string sessionID)
{
@@ -86,7 +86,7 @@ public class BuildController(
///
/// Handle client/builds/weapon/save
///
- ///
+ /// Session/Player id
///
public void SaveWeaponBuild(string sessionId, PresetBuildActionRequestData body)
{
@@ -126,7 +126,7 @@ public class BuildController(
///
/// Handle client/builds/equipment/save event
///
- ///
+ /// Session/player id
///
public void SaveEquipmentBuild(string sessionID, PresetBuildActionRequestData request)
{
@@ -169,7 +169,7 @@ public class BuildController(
///
/// Handle client/builds/delete
///
- ///
+ /// Session/Player id
///
public void RemoveBuild(string sessionId, RemoveBuildRequestData request)
{
@@ -182,7 +182,7 @@ public class BuildController(
///
/// Handle client/builds/magazine/save
///
- ///
+ /// Session/Player id
///
public void CreateMagazineTemplate(string sessionId, SetMagazineRequest request)
{
@@ -213,10 +213,12 @@ public class BuildController(
}
///
+ /// Handle client/builds/delete
+ /// Remove build from players profile
///
///
- ///
- private void RemovePlayerBuild(string idToRemove, string sessionID)
+ /// Session/Player id
+ protected void RemovePlayerBuild(string idToRemove, string sessionID)
{
var profile = _saveServer.GetProfile(sessionID);
var weaponBuilds = profile.UserBuildData.WeaponBuilds;
diff --git a/Libraries/Core/Controllers/CustomizationController.cs b/Libraries/Core/Controllers/CustomizationController.cs
index 5789c035..88fd13f9 100644
--- a/Libraries/Core/Controllers/CustomizationController.cs
+++ b/Libraries/Core/Controllers/CustomizationController.cs
@@ -120,7 +120,13 @@ public class CustomizationController(
return output;
}
- private bool OutfitAlreadyPurchased(object suitId, string sessionId)
+ ///
+ /// Has an outfit been purchased by a player
+ ///
+ /// clothing id
+ /// Session id of profile to check for clothing in
+ /// true if already purchased
+ protected bool OutfitAlreadyPurchased(object suitId, string sessionId)
{
var suits = _saveServer.GetProfile(sessionId).Suits;
@@ -132,7 +138,13 @@ public class CustomizationController(
return suits.Contains(suitId);
}
- private Suit? GetTraderClothingOffer(string sessionId, string? offerId)
+ ///
+ /// Get clothing offer from trader by suit id
+ ///
+ /// Session/Player id
+ ///
+ /// Suit
+ protected Suit? GetTraderClothingOffer(string sessionId, string? offerId)
{
var foundSuit = GetAllTraderSuits(sessionId).FirstOrDefault(s => s.Id == offerId);
if (foundSuit is null)
@@ -150,7 +162,7 @@ public class CustomizationController(
/// Player profile
/// Clothing purchased
/// Client response
- private void PayForClothingItems(string sessionId, PmcData pmcData,
+ protected void PayForClothingItems(string sessionId, PmcData pmcData,
List? itemsToPayForClothingWith,
ItemEventRouterResponse output)
{
@@ -184,10 +196,11 @@ public class CustomizationController(
}
///
+ /// Get all suits from Traders
///
- ///
+ /// Session/Player id
///
- private List GetAllTraderSuits(string sessionId)
+ protected List GetAllTraderSuits(string sessionId)
{
var traders = _databaseService.GetTraders();
var result = new List();
@@ -206,7 +219,7 @@ public class CustomizationController(
///
/// Handle client/hideout/customization/offer/list
///
- ///
+ /// Session/Player id
///
///
public HideoutCustomisation GetHideoutCustomisation(string sessionId, EmptyRequestData info)
@@ -217,7 +230,7 @@ public class CustomizationController(
///
/// Handle client/customization/storage
///
- ///
+ /// Session/Player id
///
///
public List GetCustomisationStorage(
@@ -240,9 +253,9 @@ public class CustomizationController(
///
/// Handle CustomizationSet event
///
- ///
+ /// Session/Player id
///
- ///
+ /// Players PMC profile
///
public ItemEventRouterResponse SetCustomisation(string sessionId, CustomizationSetRequest request, PmcData pmcData)
{
@@ -270,7 +283,7 @@ public class CustomizationController(
///
/// Suit to apply to profile
/// Profile to update
- private void ApplyClothingItemToProfile(CustomizationSetOption customisation, PmcData pmcData)
+ protected void ApplyClothingItemToProfile(CustomizationSetOption customisation, PmcData pmcData)
{
var dbSuit = _databaseService.GetCustomization()[customisation.Id!];
diff --git a/Libraries/Core/Controllers/DialogueController.cs b/Libraries/Core/Controllers/DialogueController.cs
index 55f2f06e..cee99f30 100644
--- a/Libraries/Core/Controllers/DialogueController.cs
+++ b/Libraries/Core/Controllers/DialogueController.cs
@@ -95,7 +95,7 @@ public class DialogueController(
};
}
- private List GetActiveChatBots()
+ protected List GetActiveChatBots()
{
var activeBots = new List();
@@ -234,7 +234,7 @@ public class DialogueController(
/// Player profile
/// get dialog request
/// Dialogue
- private Dialogue GetDialogByIdFromProfile(
+ protected Dialogue GetDialogByIdFromProfile(
SptProfile profile,
GetMailDialogViewRequestData request)
{
@@ -279,7 +279,7 @@ public class DialogueController(
/// Player profile
/// The participants of the mail
/// UserDialogInfo list
- private List GetProfilesForMail(SptProfile fullProfile, List? userDialogs)
+ protected List GetProfilesForMail(SptProfile fullProfile, List? userDialogs)
{
List result = [];
if (userDialogs is null)
@@ -322,7 +322,7 @@ public class DialogueController(
/// Session id
/// Dialog id
/// Count of messages with attachments
- private int GetUnreadMessagesWithAttachmentsCount(
+ protected int GetUnreadMessagesWithAttachmentsCount(
string sessionId,
string dialogueId)
{
@@ -358,7 +358,7 @@ public class DialogueController(
///
/// Messages to check
/// true if uncollected rewards found
- private bool MessagesHaveUncollectedRewards(List messages)
+ protected bool MessagesHaveUncollectedRewards(List messages)
{
return messages.Any(message => (message.Items?.Data?.Count ?? 0) > 0);
}
@@ -399,7 +399,7 @@ public class DialogueController(
///
///
///
- ///
+ /// Session/Player id
public virtual void SetDialoguePin(string? dialogueId, bool shouldPin, string sessionId)
{
var dialog = _dialogueHelper.GetDialogsForProfile(sessionId).GetValueOrDefault(dialogueId);
@@ -490,7 +490,7 @@ public class DialogueController(
///
/// handle client/mail/msg/send
///
- ///
+ /// Session/Player id
///
///
public virtual string SendMessage(
@@ -513,7 +513,7 @@ public class DialogueController(
///
/// Messages to parse
/// messages with items to collect
- private List GetMessageWithAttachments(List messages)
+ protected List GetMessageWithAttachments(List messages)
{
return messages.Where(message => (message.Items?.Data?.Count ?? 0) > 0).ToList();
}
@@ -522,7 +522,7 @@ public class DialogueController(
/// Delete expired items from all messages in player profile. triggers when updating traders.
///
/// Session id
- private void RemoveExpiredItemsFromMessages(string sessionId)
+ protected void RemoveExpiredItemsFromMessages(string sessionId)
{
foreach (var dialogueId in _dialogueHelper.GetDialogsForProfile(sessionId))
{
@@ -535,7 +535,7 @@ public class DialogueController(
///
/// Session id
/// Dialog id
- private void RemoveExpiredItemsFromMessage(string sessionId, string dialogueId)
+ protected void RemoveExpiredItemsFromMessage(string sessionId, string dialogueId)
{
var dialogs = _dialogueHelper.GetDialogsForProfile(sessionId);
if (!dialogs.TryGetValue(dialogueId, out var dialog))
@@ -562,6 +562,12 @@ public class DialogueController(
return _timeUtil.GetTimeStamp() > message.DateTime + (message.MaxStorageTime ?? 0);
}
+ ///
+ /// Handle client/friend/request/send
+ ///
+ /// Session/player id
+ /// Sent friend request
+ ///
public virtual FriendRequestSendResponse SendFriendRequest(string sessionID, FriendRequestData request)
{
// To avoid needing to jump between profiles, auto-accept all friend requests
@@ -607,6 +613,11 @@ public class DialogueController(
};
}
+ ///
+ /// Handle client/friend/delete
+ ///
+ /// Session/player id
+ /// Sent delete friend request
public virtual void DeleteFriend(string sessionID, DeleteFriendRequest request)
{
var profile = _saveServer.GetProfile(sessionID);
diff --git a/Libraries/Core/Controllers/GameController.cs b/Libraries/Core/Controllers/GameController.cs
index 866000ab..3b2154c3 100644
--- a/Libraries/Core/Controllers/GameController.cs
+++ b/Libraries/Core/Controllers/GameController.cs
@@ -57,7 +57,7 @@ public class GameController(
///
///
///
- ///
+ /// Session/Player id
///
public void GameStart(string url, EmptyRequestData info, string? sessionId, long startTimeStampMs)
{
@@ -158,8 +158,8 @@ public class GameController(
///
/// Handle client/game/config
///
- ///
- ///
+ /// Session/Player id
+ /// GameConfigResponse
public GameConfigResponse GetGameConfig(string sessionId)
{
var profile = _profileHelper.GetPmcProfile(sessionId);
@@ -204,7 +204,7 @@ public class GameController(
///
/// Handle client/game/mode
///
- ///
+ /// Session/Player id
///
///
public GameModeResponse GetGameMode(
@@ -221,7 +221,7 @@ public class GameController(
///
/// Handle client/server/list
///
- ///
+ /// Session/Player id
///
public List GetServer(string sessionId)
{
@@ -238,7 +238,7 @@ public class GameController(
///
/// Handle client/match/group/current
///
- ///
+ /// Session/Player id
///
public CurrentGroupResponse GetCurrentGroup(string sessionId)
{
@@ -252,7 +252,7 @@ public class GameController(
///
/// Handle client/checkVersion
///
- ///
+ /// Session/Player id
///
public CheckVersionResponse GetValidGameVersion(string sessionId)
{
@@ -266,7 +266,7 @@ public class GameController(
///
/// Handle client/game/keepalive
///
- ///
+ /// Session/Player id
///
public GameKeepAliveResponse GetKeepAlive(string sessionId)
{
@@ -281,7 +281,7 @@ public class GameController(
///
/// Handle singleplayer/settings/getRaidTime
///
- ///
+ /// Session/Player id
///
///
public GetRaidTimeResponse GetRaidTime(string sessionId, GetRaidTimeRequest request)
@@ -291,7 +291,7 @@ public class GameController(
///
///
- ///
+ /// Session/Player id
///
public SurveyResponseData GetSurvey(string sessionId)
{
@@ -302,7 +302,7 @@ public class GameController(
/// Players set botReload to a high value and don't expect the crazy fast reload speeds, give them a warn about it
///
/// Player profile
- private void WarnOnActiveBotReloadSkill(PmcData pmcProfile)
+ protected void WarnOnActiveBotReloadSkill(PmcData pmcProfile)
{
var botReloadSkill = _profileHelper.GetSkillFromProfile(pmcProfile, SkillTypes.BotReload);
if (botReloadSkill?.Progress > 0)
@@ -315,7 +315,7 @@ public class GameController(
/// When player logs in, iterate over all active effects and reduce timer
///
/// Profile to adjust values for
- private void UpdateProfileHealthValues(PmcData pmcProfile)
+ protected void UpdateProfileHealthValues(PmcData pmcProfile)
{
var healthLastUpdated = pmcProfile.Health?.UpdateTime;
var currentTimeStamp = _timeUtil.GetTimeStamp();
@@ -431,7 +431,7 @@ public class GameController(
/// Send starting gifts to profile after x days
///
/// Profile to add gifts to
- private void SendPraporGiftsToNewProfiles(PmcData pmcProfile)
+ protected void SendPraporGiftsToNewProfiles(PmcData pmcProfile)
{
var timeStampProfileCreated = pmcProfile.Info?.RegistrationDate;
var oneDaySeconds = _timeUtil.GetHoursAsSeconds(24);
@@ -463,7 +463,7 @@ public class GameController(
/// Get a list of installed mods and save their details to the profile being used
///
/// Profile to add mod details to
- private void SaveActiveModsToProfile(SptProfile fullProfile)
+ protected void SaveActiveModsToProfile(SptProfile fullProfile)
{
fullProfile.SptData!.Mods ??= [];
var mods = _applicationContext?.GetLatestValue(ContextVariableType.LOADED_MOD_ASSEMBLIES).GetValue>();
@@ -498,7 +498,7 @@ public class GameController(
/// Add the logged in players name to PMC name pool
///
/// Profile of player to get name from
- private void AddPlayerToPmcNames(PmcData pmcProfile)
+ protected void AddPlayerToPmcNames(PmcData pmcProfile)
{
var playerName = pmcProfile.Info?.Nickname;
if (playerName is not null)
@@ -534,7 +534,7 @@ public class GameController(
/// Check for a dialog with the key 'undefined', and remove it
///
/// Profile to check for dialog in
- private void CheckForAndRemoveUndefinedDialogues(SptProfile fullProfile)
+ protected void CheckForAndRemoveUndefinedDialogues(SptProfile fullProfile)
{
if (fullProfile.DialogueRecords!.TryGetValue("undefined", out _))
{
@@ -545,7 +545,7 @@ public class GameController(
///
///
///
- private void LogProfileDetails(SptProfile fullProfile)
+ protected void LogProfileDetails(SptProfile fullProfile)
{
if (_logger.IsLogEnabled(LogLevel.Debug))
{
diff --git a/Libraries/Core/Controllers/HealthController.cs b/Libraries/Core/Controllers/HealthController.cs
index 3d8c576f..219aeb9a 100644
--- a/Libraries/Core/Controllers/HealthController.cs
+++ b/Libraries/Core/Controllers/HealthController.cs
@@ -128,7 +128,7 @@ public class HealthController(
///
/// Player profile
/// Eat request
- /// Session id
+ /// Session id
/// ItemEventRouterResponse
public ItemEventRouterResponse OffRaidEat(
PmcData pmcData,
@@ -200,6 +200,13 @@ public class HealthController(
return output;
}
+ ///
+ /// Apply effects to profile from consumable used
+ ///
+ /// Hydration/Energy
+ /// Properties of consumed item
+ /// Single use item
+ /// Client request
protected void ApplyEdibleEffect(CurrentMinMax bodyValue, EffectsHealthProps consumptionDetails, bool foodIsSingleUse,
OffraidEatRequestData request)
{
@@ -233,8 +240,8 @@ public class HealthController(
/// Occurs on post-raid healing page
///
/// player profile
- /// Request data from client
- /// Session id
+ /// Request data from client
+ /// Session id
///
public ItemEventRouterResponse HealthTreatment(
PmcData pmcData,
@@ -299,7 +306,7 @@ public class HealthController(
/// applies skills from hideout workout.
///
/// Player profile
- /// Request data
+ /// Request data
/// session id
public void ApplyWorkoutChanges(
PmcData? pmcData,
diff --git a/Libraries/Core/Controllers/HideoutController.cs b/Libraries/Core/Controllers/HideoutController.cs
index 8d8b6aa8..8ade4843 100644
--- a/Libraries/Core/Controllers/HideoutController.cs
+++ b/Libraries/Core/Controllers/HideoutController.cs
@@ -57,6 +57,14 @@ public class HideoutController(
protected HideoutConfig _hideoutConfig = _configServer.GetConfig();
+ ///
+ /// Handle HideoutUpgrade event
+ /// Start a hideout area upgrade
+ ///
+ /// Player profile
+ /// Start upgrade request
+ /// Session/player id
+ /// Client response
public void StartUpgrade(PmcData pmcData, HideoutUpgradeRequestData request, string sessionID, ItemEventRouterResponse output)
{
var items = request.Items.Select(
@@ -138,6 +146,14 @@ public class HideoutController(
}
}
+ ///
+ /// Handle HideoutUpgradeComplete event
+ /// Complete a hideout area upgrade
+ ///
+ /// Player profile
+ /// Completed upgrade request
+ /// Session/player id
+ /// Client response
public void UpgradeComplete(PmcData pmcData, HideoutUpgradeCompleteRequestData request, string sessionID, ItemEventRouterResponse output)
{
var hideout = _databaseService.GetHideout();
@@ -215,7 +231,11 @@ public class HideoutController(
);
}
- private void SetWallVisibleIfPrereqsMet(PmcData pmcData)
+ ///
+ /// Upgrade wall status to visible in profile if medstation/water collector are both level 1
+ ///
+ /// Player profile
+ protected void SetWallVisibleIfPrereqsMet(PmcData pmcData)
{
var medStation = pmcData.Hideout.Areas.FirstOrDefault(area => area.Type == HideoutAreas.MEDSTATION);
var waterCollector = pmcData.Hideout.Areas.FirstOrDefault(area => area.Type == HideoutAreas.WATER_COLLECTOR);
@@ -229,7 +249,16 @@ public class HideoutController(
}
}
- private void AddContainerImprovementToProfile(ItemEventRouterResponse output, string sessionID, PmcData pmcData, BotHideoutArea profileParentHideoutArea,
+ ///
+ /// Add a stash upgrade to profile
+ ///
+ /// Client response
+ ///
+ /// Players PMC profile
+ ///
+ ///
+ ///
+ protected void AddContainerImprovementToProfile(ItemEventRouterResponse output, string sessionID, PmcData pmcData, BotHideoutArea profileParentHideoutArea,
HideoutArea dbHideoutArea, Stage hideoutStage)
{
// Add key/value to `hideoutAreaStashes` dictionary - used to link hideout area to inventory stash by its id
@@ -281,7 +310,14 @@ public class HideoutController(
}
}
- private void AddUpdateInventoryItemToProfile(string sessionId, PmcData pmcData, HideoutArea dbHideoutArea, Stage hideoutStage)
+ ///
+ /// Add an inventory item to profile from a hideout area stage data
+ ///
+ /// Session/Player id
+ /// Players PMC profile
+ /// Hideout area from db being upgraded
+ /// Stage area upgraded to
+ protected void AddUpdateInventoryItemToProfile(string sessionId, PmcData pmcData, HideoutArea dbHideoutArea, Stage hideoutStage)
{
var existingInventoryItem = pmcData.Inventory.Items.FirstOrDefault(item => item.Id == dbHideoutArea.Id);
if (existingInventoryItem is not null)
@@ -301,7 +337,15 @@ public class HideoutController(
pmcData.Inventory.Items.Add(newContainerItem);
}
- private void AddContainerUpgradeToClientOutput(string sessionID, HideoutAreas? areaType, HideoutArea hideoutDbData, Stage hideoutStage,
+ ///
+ /// Include container upgrade in client response
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// Client response
+ protected void AddContainerUpgradeToClientOutput(string sessionID, HideoutAreas? areaType, HideoutArea hideoutDbData, Stage hideoutStage,
ItemEventRouterResponse output)
{
if (output.ProfileChanges[sessionID].ChangedHideoutStashes is null)
@@ -317,6 +361,14 @@ public class HideoutController(
};
}
+ ///
+ /// Handle HideoutPutItemsInAreaSlots
+ /// Create item in hideout slot item array, remove item from player inventory
+ ///
+ /// Players PMC profile
+ /// request from client to place item in area slot
+ ///
+ /// ItemEventRouterResponse
public ItemEventRouterResponse PutItemsInAreaSlots(PmcData pmcData, HideoutPutItemInRequestData addItemToHideoutRequest, string sessionID)
{
var output = _eventOutputHolder.GetOutput(sessionID);
@@ -395,6 +447,14 @@ public class HideoutController(
return output;
}
+ ///
+ /// Handle HideoutTakeItemsFromAreaSlots event
+ /// Remove item from hideout area and place into player inventory
+ ///
+ /// Players PMC profile
+ /// Take item out of area request
+ ///
+ /// ItemEventRouterResponse
public ItemEventRouterResponse TakeItemsFromAreaSlots(PmcData pmcData, HideoutTakeItemOutRequestData request, string sessionID)
{
var output = _eventOutputHolder.GetOutput(sessionID);
@@ -431,7 +491,16 @@ public class HideoutController(
);
}
- private ItemEventRouterResponse RemoveResourceFromArea(string sessionID, PmcData pmcData, HideoutTakeItemOutRequestData removeResourceRequest,
+ ///
+ /// Find resource item in hideout area, add copy to player inventory, remove Item from hideout slot
+ ///
+ ///
+ /// Players PMC profile
+ /// client request
+ /// Client response
+ /// Area fuel is being removed from
+ /// ItemEventRouterResponse
+ protected ItemEventRouterResponse RemoveResourceFromArea(string sessionID, PmcData pmcData, HideoutTakeItemOutRequestData removeResourceRequest,
ItemEventRouterResponse output, BotHideoutArea hideoutArea)
{
var slotIndexToRemove = removeResourceRequest?.Slots.FirstOrDefault();
@@ -475,6 +544,14 @@ public class HideoutController(
return output;
}
+ ///
+ /// Handle HideoutToggleArea event
+ /// Toggle area on/off
+ ///
+ /// Players PMC profile
+ /// Toggle area request
+ ///
+ /// ItemEventRouterResponse
public ItemEventRouterResponse ToggleArea(PmcData pmcData, HideoutToggleAreaRequestData request, string sessionID)
{
var output = _eventOutputHolder.GetOutput(sessionID);
@@ -494,15 +571,22 @@ public class HideoutController(
return output;
}
- public ItemEventRouterResponse SingleProductionStart(PmcData pmcData, HideoutSingleProductionStartRequestData body, string sessionID)
+ ///
+ /// Handle HideoutSingleProductionStart event
+ ///
+ /// Players PMC profile
+ ///
+ ///
+ /// ItemEventRouterResponse
+ public ItemEventRouterResponse SingleProductionStart(PmcData pmcData, HideoutSingleProductionStartRequestData request, string sessionID)
{
// Start production
- _hideoutHelper.RegisterProduction(pmcData, body, sessionID);
+ _hideoutHelper.RegisterProduction(pmcData, request, sessionID);
// Find the recipe of the production
var recipe = _databaseService
.GetHideout()
- .Production.Recipes.FirstOrDefault(production => production.Id == body.RecipeId);
+ .Production.Recipes.FirstOrDefault(production => production.Id == request.RecipeId);
// Find the actual amount of items we need to remove because body can send weird data
var recipeRequirementsClone = _cloner.Clone(
@@ -511,8 +595,8 @@ public class HideoutController(
List itemsToDelete = [];
var output = _eventOutputHolder.GetOutput(sessionID);
- itemsToDelete.AddRange(body.Tools);
- itemsToDelete.AddRange(body.Items);
+ itemsToDelete.AddRange(request.Tools);
+ itemsToDelete.AddRange(request.Items);
foreach (var itemToDelete in itemsToDelete)
{
@@ -540,11 +624,19 @@ public class HideoutController(
return output;
}
- public ItemEventRouterResponse ScavCaseProductionStart(PmcData pmcData, HideoutScavCaseStartRequestData body, string sessionID)
+ ///
+ /// Handle HideoutScavCaseProductionStart event
+ /// Handles event after clicking 'start' on the scav case hideout page
+ ///
+ /// Players PMC profile
+ ///
+ ///
+ /// ItemEventRouterResponse
+ public ItemEventRouterResponse ScavCaseProductionStart(PmcData pmcData, HideoutScavCaseStartRequestData request, string sessionID)
{
var output = _eventOutputHolder.GetOutput(sessionID);
- foreach (var requestedItem in body.Items)
+ foreach (var requestedItem in request.Items)
{
var inventoryItem = pmcData.Inventory.Items.FirstOrDefault(item => item.Id == requestedItem.Id);
if (inventoryItem is null)
@@ -568,11 +660,11 @@ public class HideoutController(
}
}
- var recipe = _databaseService.GetHideout().Production?.ScavRecipes?.FirstOrDefault(r => r.Id == body.RecipeId);
+ var recipe = _databaseService.GetHideout().Production?.ScavRecipes?.FirstOrDefault(r => r.Id == request.RecipeId);
if (recipe is null)
{
_logger.Error(
- _localisationService.GetText("hideout-unable_to_find_scav_case_recipie_in_database", body.RecipeId)
+ _localisationService.GetText("hideout-unable_to_find_scav_case_recipie_in_database", request.RecipeId)
);
return _httpResponseUtil.AppendErrorToOutput(output);
@@ -592,17 +684,23 @@ public class HideoutController(
var modifiedScavCaseTime = GetScavCaseTime(pmcData, adjustedCraftTime);
- pmcData.Hideout.Production[body.RecipeId] = _hideoutHelper.InitProduction(
- body.RecipeId,
+ pmcData.Hideout.Production[request.RecipeId] = _hideoutHelper.InitProduction(
+ request.RecipeId,
(int) (_profileHelper.IsDeveloperAccount(sessionID) ? 40 : modifiedScavCaseTime),
false
);
- pmcData.Hideout.Production[body.RecipeId].SptIsScavCase = true;
+ pmcData.Hideout.Production[request.RecipeId].SptIsScavCase = true;
return output;
}
- private double? GetScavCaseTime(PmcData pmcData, double? productionTime)
+ ///
+ /// Adjust scav case time based on fence standing
+ ///
+ /// Players PMC profile
+ /// Time to complete scav case in seconds
+ /// Adjusted scav case time in seconds
+ protected double? GetScavCaseTime(PmcData pmcData, double? productionTime)
{
var fenceLevel = _fenceService.GetFenceInfo(pmcData);
if (fenceLevel is null)
@@ -613,6 +711,12 @@ public class HideoutController(
return productionTime * fenceLevel.ScavCaseTimeModifier;
}
+ ///
+ /// Add generated scav case rewards to player profile
+ ///
+ /// Players PMC profile
+ /// reward items to add to profile
+ /// recipe id to save into Production dict
public void AddScavCaseRewardsToProfile(PmcData pmcData, List- rewards, string recipeId)
{
pmcData.Hideout.Production[$"ScavCase{recipeId}"] = new Production
@@ -622,6 +726,13 @@ public class HideoutController(
};
}
+ ///
+ /// Start production of continuously created item
+ ///
+ /// Players PMC profile
+ /// Continuous production request
+ ///
+ /// ItemEventRouterResponse
public ItemEventRouterResponse ContinuousProductionStart(PmcData pmcData, HideoutContinuousProductionStartRequestData request, string sessionID)
{
_hideoutHelper.RegisterProduction(pmcData, request, sessionID);
@@ -629,6 +740,14 @@ public class HideoutController(
return _eventOutputHolder.GetOutput(sessionID);
}
+ ///
+ /// Handle HideoutTakeProduction event
+ /// Take completed item out of hideout area and place into player inventory
+ ///
+ /// Players PMC profile
+ /// Remove production from area request
+ ///
+ ///
public ItemEventRouterResponse TakeProduction(PmcData pmcData, HideoutTakeProductionRequestData request, string sessionID)
{
var output = _eventOutputHolder.GetOutput(sessionID);
@@ -669,7 +788,15 @@ public class HideoutController(
return _httpResponseUtil.AppendErrorToOutput(output);
}
- private void HandleRecipe(string sessionID, HideoutProduction recipe, PmcData pmcData, HideoutTakeProductionRequestData request,
+ ///
+ /// Take recipe-type production out of hideout area and place into player inventory
+ ///
+ ///
+ /// Completed recipe of item
+ /// Players PMC profile
+ /// Remove production from area request
+ /// Client response
+ protected void HandleRecipe(string sessionID, HideoutProduction recipe, PmcData pmcData, HideoutTakeProductionRequestData request,
ItemEventRouterResponse output)
{
// Validate that we have a matching production
@@ -873,6 +1000,12 @@ public class HideoutController(
}
}
+ ///
+ /// Ensure non-stackable items are 'unstacked'
+ ///
+ ///
+ ///
+ /// Reward is a preset
protected void HandleStackableState(HideoutProduction recipe, List
> itemAndChildrenToSendToPlayer, bool rewardIsPreset)
{
var rewardIsStackable = _itemHelper.IsItemTplStackable(recipe.EndProduct);
@@ -922,6 +1055,11 @@ public class HideoutController(
}
}
+ ///
+ ///
+ ///
+ ///
+ ///
protected List> HandlePresetReward(HideoutProduction recipe)
{
var defaultPreset = _presetHelper.GetDefaultPreset(recipe.EndProduct);
@@ -935,7 +1073,13 @@ public class HideoutController(
return [presetAndMods];
}
- private TaskConditionCounter GetHoursCraftingTaskConditionCounter(PmcData pmcData, HideoutProduction recipe)
+ ///
+ /// Get the "CounterHoursCrafting" TaskConditionCounter from a profile
+ ///
+ /// Profile to get counter from
+ /// Recipe being crafted
+ /// TaskConditionCounter
+ protected TaskConditionCounter GetHoursCraftingTaskConditionCounter(PmcData pmcData, HideoutProduction recipe)
{
if (!pmcData.TaskConditionCounters.TryGetValue(NameTaskConditionCountersCraftingId, out _))
// Doesn't exist, create
@@ -952,7 +1096,14 @@ public class HideoutController(
return pmcData.TaskConditionCounters[NameTaskConditionCountersCraftingId];
}
- private void HandleScavCase(string sessionID, PmcData pmcData, HideoutTakeProductionRequestData request, ItemEventRouterResponse output)
+ ///
+ /// Handles generating scav case rewards and sending to player inventory
+ ///
+ ///
+ /// Players PMC profile
+ /// Get rewards from scavcase craft request
+ /// Client response
+ protected void HandleScavCase(string sessionID, PmcData pmcData, HideoutTakeProductionRequestData request, ItemEventRouterResponse output)
{
var ongoingProductions = pmcData.Hideout.Production;
string? prodId = null;
@@ -1007,6 +1158,14 @@ public class HideoutController(
pmcData.Hideout.Production[prodId].InProgress = false;
}
+ ///
+ /// Handle HideoutQuickTimeEvent on client/game/profile/items/moving
+ /// Called after completing workout at gym
+ ///
+ /// Session/Player id
+ /// Players PMC profile
+ /// QTE result object
+ /// Client response
public void HandleQTEEventOutcome(string sessionId, PmcData pmcData, HandleQTEEventRequestData request, ItemEventRouterResponse output)
{
// {
@@ -1050,7 +1209,12 @@ public class HideoutController(
HandleMusclePain(pmcData, relevantQte.Results[QteEffectType.finishEffect]);
}
- private void HandleMusclePain(PmcData pmcData, QteResult finishEffect)
+ ///
+ /// Apply mild/severe muscle pain after gym use
+ ///
+ /// Players PMC profile
+ /// Effect data to apply after completing QTE gym event
+ protected void HandleMusclePain(PmcData pmcData, QteResult finishEffect)
{
var hasMildPain = pmcData.Health.BodyParts["Chest"].Effects?.ContainsKey("MildMusclePain");
var hasSeverePain = pmcData.Health.BodyParts["Chest"].Effects?.ContainsKey("SevereMusclePain");
@@ -1080,6 +1244,12 @@ public class HideoutController(
}
}
+ ///
+ /// Record a high score from the shooting range into a player profiles `overallcounters`
+ ///
+ /// Session/Player id
+ /// Players PMC profile
+ /// shooting range score request>
public void RecordShootingRangePoints(string sessionId, PmcData pmcData, RecordShootingRangePoints request)
{
const string shootingRangeKey = "ShootingRangePoints";
@@ -1103,11 +1273,18 @@ public class HideoutController(
shootingRangeHighScore.Value = request.Points;
}
+ ///
+ /// Handle client/game/profile/items/moving - HideoutImproveArea
+ ///
+ /// Session/Player id
+ /// Players PMC profile
+ /// Improve area request
+ /// ItemEventRouterResponse
public ItemEventRouterResponse ImproveArea(string sessionId, PmcData pmcData, HideoutImproveAreaRequestData request)
{
var output = _eventOutputHolder.GetOutput(sessionId);
- // Create mapping of required item with corrisponding item from player inventory
+ // Create mapping of required item with corresponding item from player inventory
var items = request.Items.Select(
reqItem =>
{
@@ -1187,6 +1364,13 @@ public class HideoutController(
return output;
}
+ ///
+ /// Handle client/game/profile/items/moving HideoutCancelProductionCommand
+ ///
+ /// Session/Player id
+ /// Players PMC profile
+ /// Cancel production request data
+ /// ItemEventRouterResponse
public ItemEventRouterResponse CancelProduction(string sessionId, PmcData pmcData, HideoutCancelProductionRequestData request)
{
var output = _eventOutputHolder.GetOutput(sessionId);
@@ -1213,6 +1397,13 @@ public class HideoutController(
return _circleOfCultistService.StartSacrifice(sessionId, pmcData, request);
}
+ ///
+ /// Handle HideoutDeleteProductionCommand event
+ ///
+ /// Session/Player id
+ /// Players PMC profile
+ /// Delete production request
+ /// ItemEventRouterResponse
public ItemEventRouterResponse HideoutDeleteProductionCommand(string sessionId, PmcData pmcData, HideoutDeleteProductionRequestData request)
{
var output = _eventOutputHolder.GetOutput(sessionId);
@@ -1223,6 +1414,13 @@ public class HideoutController(
return output;
}
+ ///
+ /// Handle HideoutCustomizationApply event
+ ///
+ /// Session/Player id
+ /// Players PMC profile
+ /// Apply hideout customisation request
+ /// ItemEventRouterResponse
public ItemEventRouterResponse HideoutCustomizationApply(string sessionId, PmcData pmcData, HideoutCustomizationApplyRequestData request)
{
var output = _eventOutputHolder.GetOutput(sessionId);
@@ -1242,7 +1440,12 @@ public class HideoutController(
return output;
}
- private string? GetHideoutCustomisationType(string? type)
+ ///
+ /// Map an internal customisation type to a client hideout customisation type
+ ///
+ ///
+ /// hideout customisation type
+ protected string? GetHideoutCustomisationType(string? type)
{
switch (type)
{
@@ -1262,7 +1465,15 @@ public class HideoutController(
}
}
- private void AddMissingPresetStandItemsToProfile(string sessionId, Stage equipmentPresetStage, PmcData pmcData, HideoutArea equipmentPresetHideoutArea,
+ ///
+ /// Add stand1/stand2/stand3 inventory items to profile, depending on passed in hideout stage
+ ///
+ /// Session/Player id
+ /// Current EQUIPMENT_PRESETS_STAND stage data
+ /// Players PMC profile
+ ///
+ /// Client response
+ protected void AddMissingPresetStandItemsToProfile(string sessionId, Stage equipmentPresetStage, PmcData pmcData, HideoutArea equipmentPresetHideoutArea,
ItemEventRouterResponse output)
{
// Each slot is a single Mannequin
@@ -1330,6 +1541,12 @@ public class HideoutController(
return _eventOutputHolder.GetOutput(sessionId);
}
+ ///
+ /// Handle client/hideout/qte/list
+ /// Get quick time event list for hideout
+ ///
+ /// Session/Player id
+ ///
public List GetQteList(string sessionId)
{
return _databaseService.GetHideout().Qte;
diff --git a/Libraries/Core/Controllers/InRaidController.cs b/Libraries/Core/Controllers/InRaidController.cs
index 0bf7f8b7..10ac5cd1 100644
--- a/Libraries/Core/Controllers/InRaidController.cs
+++ b/Libraries/Core/Controllers/InRaidController.cs
@@ -35,7 +35,7 @@ public class InRaidController(
/// Handles pmc/pscav
///
///
- ///
+ /// Session/Player id
public void SavePostRaidProfileForScav(ScavSaveRequestData offRaidProfileData, string sessionId)
{
var serverScavProfile = _profileHelper.GetScavProfile(sessionId);
@@ -57,9 +57,10 @@ public class InRaidController(
}
///
+ /// Get a % chance a scav will be hostile to the player when they're also a scav
///
///
- ///
+ /// Session/Player id
///
public double GetTraitorScavHostileChance(string url, string sessionId)
{
@@ -70,7 +71,7 @@ public class InRaidController(
/// Get all boss role types e.g. bossTagilla
///
///
- ///
+ /// Session/Player id
/// string array of boss types
public List GetBossTypes(string url, string sessionId)
{
diff --git a/Libraries/Core/Controllers/InsuranceController.cs b/Libraries/Core/Controllers/InsuranceController.cs
index 9439f9ac..acc0b31b 100644
--- a/Libraries/Core/Controllers/InsuranceController.cs
+++ b/Libraries/Core/Controllers/InsuranceController.cs
@@ -45,11 +45,9 @@ public class InsuranceController(
{
protected InsuranceConfig _insuranceConfig = _configServer.GetConfig();
- /**
- * Process insurance items of all profiles prior to being given back to the player through the mail service.
- *
- * @returns void
- */
+ ///
+ /// Process insurance items of all profiles prior to being given back to the player through the mail service
+ ///
public void ProcessReturn()
{
// Process each installed profile.
@@ -77,13 +75,12 @@ public class InsuranceController(
ProcessInsuredItems(insuranceDetails, sessionId);
}
- /**
- * Get all insured items that are ready to be processed in a specific profile.
- *
- * @param sessionID Session ID of the profile to check.
- * @param time The time to check ready status against. Current time by default.
- * @returns All insured items that are ready to be processed.
- */
+ ///
+ /// Get all insured items that are ready to be processed in a specific profile
+ ///
+ /// Session/Player id
+ /// The time to check ready status against. Current time by default
+ /// All insured items that are ready to be processed
protected List FilterInsuredItems(string sessionId, long? time = null)
{
// Use the current time by default.
@@ -101,13 +98,11 @@ public class InsuranceController(
return profileInsuranceDetails.Where(insured => insuranceTime >= insured.ScheduledTime).ToList();
}
- /**
- * This method orchestrates the processing of insured items in a profile.
- *
- * @param insuranceDetails The insured items to process.
- * @param sessionID The session ID that should receive the processed items.
- * @returns void
- */
+ ///
+ /// This method orchestrates the processing of insured items in a profile
+ ///
+ /// The insured items to process
+ /// session ID that should receive the processed items
protected void ProcessInsuredItems(List insuranceDetails, string sessionId)
{
if (_logger.IsLogEnabled(LogLevel.Debug))
@@ -146,12 +141,12 @@ public class InsuranceController(
}
}
- /**
- * Count all items in all insurance packages.
- * @param insurance
- * @returns
- */
- protected double CountAllInsuranceItems(List insuranceDetails)
+ ///
+ /// Count all items in all insurance packages
+ ///
+ ///
+ /// Count of insured items
+ protected int CountAllInsuranceItems(List insuranceDetails)
{
return insuranceDetails.Select(ins => ins.Items.Count).Count();
}
@@ -179,13 +174,12 @@ public class InsuranceController(
}
}
- /**
- * Finds the items that should be deleted based on the given Insurance object.
- *
- * @param rootItemParentID - The ID that should be assigned to all "hideout"/root items.
- * @param insured - The insurance object containing the items to evaluate for deletion.
- * @returns A Set containing the IDs of items that should be deleted.
- */
+ ///
+ /// Finds the items that should be deleted based on the given Insurance object
+ ///
+ /// The ID that should be assigned to all "hideout"/root items
+ /// The insurance object containing the items to evaluate for deletion
+ /// A Set containing the IDs of items that should be deleted
protected HashSet FindItemsToDelete(string rootItemParentId, Insurance insured)
{
var toDelete = new HashSet();
@@ -228,16 +222,15 @@ public class InsuranceController(
return toDelete;
}
- /**
- * Initialize a Map object that holds main-parents to all of their attachments. Note that "main-parent" in this
- * context refers to the parent item that an attachment is attached to. For example, a suppressor attached to a gun,
- * not the backpack that the gun is located in (the gun's parent).
- *
- * @param rootItemParentID - The ID that should be assigned to all "hideout"/root items.
- * @param insured - The insurance object containing the items to evaluate.
- * @param itemsMap - A Map object for quick item look-up by item ID.
- * @returns A Map object containing parent item IDs to arrays of their attachment items.
- */
+ ///
+ /// Initialize a dictionary that holds main-parents to all of their attachments. Note that "main-parent" in this
+ /// context refers to the parent item that an attachment is attached to. For example, a suppressor attached to a gun,
+ /// not the backpack that the gun is located in (the gun's parent).
+ ///
+ /// The ID that should be assigned to all "hideout"/root items
+ /// The insurance object containing the items to evaluate
+ /// A Dictionary for quick item look-up by item ID
+ /// A dictionary containing parent item IDs to arrays of their attachment items
protected Dictionary> PopulateParentAttachmentsMap(string rootItemParentID, Insurance insured, Dictionary itemsMap)
{
var mainParentToAttachmentsMap = new Dictionary>();
@@ -324,14 +317,13 @@ public class InsuranceController(
return mainParentToAttachmentsMap;
}
- /**
- * Remove attachments that can not be moddable in-raid from the parentAttachmentsMap. If no moddable attachments
- * remain, the parent is removed from the map as well.
- *
- * @param parentAttachmentsMap - A Map object containing parent item IDs to arrays of their attachment items.
- * @param itemsMap - A Map object for quick item look-up by item ID.
- * @returns A Map object containing parent item IDs to arrays of their attachment items which are not moddable in-raid.
- */
+ ///
+ /// Remove attachments that can not be moddable in-raid from the parentAttachmentsMap. If no moddable attachments
+ /// remain, the parent is removed from the map as well
+ ///
+ /// Dictionary containing parent item IDs to arrays of their attachment items
+ /// Hashset containing parent item IDs to arrays of their attachment items which are not moddable in-raid
+ ///
protected Dictionary> RemoveNonModdableAttachments(Dictionary> parentAttachmentsMap, Dictionary itemsMap)
{
var updatedMap = new Dictionary>();
@@ -372,16 +364,14 @@ public class InsuranceController(
return updatedMap;
}
- /**
- * Process "regular" insurance items. Any insured item that is not an attached, attachment is considered a "regular"
- * item. This method iterates over them, preforming item deletion rolls to see if they should be deleted. If so,
- * they (and their attached, attachments, if any) are marked for deletion in the toDelete Set.
- *
- * @param insured The insurance object containing the items to evaluate.
- * @param toDelete A Set to keep track of items marked for deletion.
- * @param parentAttachmentsMap A Map object containing parent item IDs to arrays of their attachment items.
- * @returns void
- */
+ ///
+ /// Process "regular" insurance items. Any insured item that is not an attached, attachment is considered a "regular"
+ /// item. This method iterates over them, preforming item deletion rolls to see if they should be deleted. If so,
+ /// they (and their attached, attachments, if any) are marked for deletion in the toDelete Dictionary
+ ///
+ /// Insurance object containing the items to evaluate
+ /// Hashset to keep track of items marked for deletion
+ /// Dictionary containing parent item IDs to arrays of their attachment items
protected void ProcessRegularItems(Insurance insured, HashSet toDelete, Dictionary> parentAttachmentsMap)
{
foreach (var insuredItem in insured.Items)
@@ -423,14 +413,13 @@ public class InsuranceController(
}
}
- /**
- * Process parent items and their attachments, updating the toDelete Set accordingly.
- *
- * @param mainParentToAttachmentsMap A Map object containing parent item IDs to arrays of their attachment items.
- * @param itemsMap A Map object for quick item look-up by item ID.
- * @param traderId The trader ID from the Insurance object.
- * @param toDelete A Set object to keep track of items marked for deletion.
- */
+ ///
+ /// Process parent items and their attachments, updating the toDelete Set accordingly
+ ///
+ /// Dictionary containing parent item IDs to arrays of their attachment items
+ /// Dictionary for quick item look-up by item ID
+ /// Trader ID from the Insurance object
+ /// Tracked attachment ids to be removed
protected void ProcessAttachments(Dictionary> mainParentToAttachmentsMap, Dictionary itemsMap, string? insuredTraderId,
HashSet toDelete)
{
@@ -456,17 +445,16 @@ public class InsuranceController(
}
}
- /**
- * Takes an array of attachment items that belong to the same main-parent item, sorts them in descending order by
- * their maximum price. For each attachment, a roll is made to determine if a deletion should be made. Once the
- * number of deletions has been counted, the attachments are added to the toDelete Set, starting with the most
- * valuable attachments first.
- *
- * @param attachments The array of attachment items to sort, filter, and roll.
- * @param traderId The ID of the trader to that has ensured these items.
- * @param toDelete The array that accumulates the IDs of the items to be deleted.
- * @returns void
- */
+
+ ///
+ /// Takes an array of attachment items that belong to the same main-parent item, sorts them in descending order by
+ /// their maximum price. For each attachment, a roll is made to determine if a deletion should be made. Once the
+ /// number of deletions has been counted, the attachments are added to the toDelete Set, starting with the most
+ /// valuable attachments first
+ ///
+ /// Array of attachment items to sort, filter, and roll
+ /// ID of the trader to that has ensured these items
+ /// array that accumulates the IDs of the items to be deleted
protected void ProcessAttachmentByParent(List- attachments, string? traderId, HashSet toDelete)
{
// Create dict of item ids + their flea/handbook price (highest is chosen)
@@ -499,6 +487,12 @@ public class InsuranceController(
}
}
+ ///
+ /// Write out attachments being removed
+ ///
+ ///
+ ///
+ ///
protected void LogAttachmentsBeingRemoved(List attachmentIdsToRemove, List
- attachments, Dictionary attachmentPrices)
{
var index = 1;
@@ -516,6 +510,11 @@ public class InsuranceController(
}
}
+ ///
+ /// Get dictionary of items with their corresponding price
+ ///
+ /// Item attachments
+ ///
protected Dictionary WeightAttachmentsByPrice(List
- attachments)
{
var result = new Dictionary();
@@ -535,6 +534,12 @@ public class InsuranceController(
return result;
}
+ ///
+ /// Get count of items to remove from weapon (take into account trader + price of attachment)
+ ///
+ /// Dict of item Tpls and their rouble price
+ /// Trader the attachment is insured against
+ /// Attachment count to remove
protected double GetAttachmentCountToRemove(Dictionary weightedAttachmentByPrice, string? traderId)
{
var removeCount = 0;
@@ -550,18 +555,21 @@ public class InsuranceController(
.Count(_ => RollForDelete(traderId) ?? false);
}
+ ///
+ /// Remove items from the insured items that should not be returned to the player
+ ///
+ /// The insured items to process
+ /// The items that should be deleted
protected void RemoveItemsFromInsurance(Insurance insured, HashSet toDelete)
{
insured.Items = insured.Items.Where(item => !toDelete.Contains(item.Id)).ToList();
}
- /**
- * Handle sending the insurance message to the user that potentially contains the valid insurance items.
- *
- * @param sessionID The session ID that should receive the insurance message.
- * @param insurance The context of insurance to use.
- * @returns void
- */
+ ///
+ /// Handle sending the insurance message to the user that potentially contains the valid insurance items
+ ///
+ /// Profile that should receive the insurance message
+ /// context of insurance to use
protected void SendMail(string sessionId, Insurance insurance)
{
// If there are no items remaining after the item filtering, the insurance has
@@ -596,15 +604,23 @@ public class InsuranceController(
);
}
+ ///
+ /// Edge case - labs doesn't allow for insurance returns unless location config is edited
+ ///
+ /// The insured items to process
+ /// OPTIONAL - id of labs location
+ ///
protected bool IsMapLabsAndInsuranceDisabled(Insurance insurance, string labsId = "laboratory")
{
return string.Equals(insurance.SystemData?.Location, labsId, StringComparison.OrdinalIgnoreCase) &&
!(_databaseService.GetLocation(labsId)?.Base?.Insurance.GetValueOrDefault(false) ?? false);
}
- /**
- * Update IInsurance object with new messageTemplateId and wipe out items array data
- */
+ ///
+ /// Update IInsurance object with new messageTemplateId and wipe out items array data
+ ///
+ ///
+ ///
protected void HandleLabsInsurance(Dictionary?>? traderDialogMessages, Insurance insurance)
{
// Use labs specific messages if available, otherwise use default
@@ -620,6 +636,12 @@ public class InsuranceController(
}
+ ///
+ /// Roll for chance of item being 'lost'
+ ///
+ /// Trader item was insured with
+ /// Item being rolled on
+ /// Should item be deleted
protected bool? RollForDelete(string traderId, Item? insuredItem = null)
{
var trader = _traderHelper.GetTraderById(traderId);
@@ -646,26 +668,24 @@ public class InsuranceController(
return roll;
}
- /**
- * Handle Insure event
- * Add insurance to an item
- *
- * @param pmcData Player profile
- * @param body Insurance request
- * @param sessionID Session id
- * @returns IItemEventRouterResponse object to send to client
- */
- public ItemEventRouterResponse Insure(PmcData pmcData, InsureRequestData body, string sessionId)
+ ///
+ /// Handle Insure event, Add insurance to an item
+ ///
+ /// Players PMC profile
+ /// Insurance request
+ /// Session/Player id
+ /// ItemEventRouterResponse object to send to client
+ public ItemEventRouterResponse Insure(PmcData pmcData, InsureRequestData request, string sessionId)
{
var output = _eventOutputHolder.GetOutput(sessionId);
- var itemsToInsureCount = body.Items.Count;
+ var itemsToInsureCount = request.Items.Count;
List itemsToPay = [];
// Create hash of player inventory items (keyed by item id)
var inventoryItemsHash = pmcData.Inventory.Items.ToDictionary(item => item.Id);
// Get price of all items being insured, add to 'itemsToPay'
- foreach (var key in body.Items)
+ foreach (var key in request.Items)
{
itemsToPay.Add(
new IdWithCount
@@ -674,7 +694,7 @@ public class InsuranceController(
Count = _insuranceService.GetRoublePriceToInsureItemWithTrader(
pmcData,
inventoryItemsHash[key],
- body.TransactionId
+ request.TransactionId
)
}
);
@@ -683,7 +703,7 @@ public class InsuranceController(
var options = new ProcessBuyTradeRequestData
{
SchemeItems = itemsToPay,
- TransactionId = body.TransactionId,
+ TransactionId = request.TransactionId,
Action = "SptInsure",
Type = "",
ItemId = "",
@@ -700,19 +720,19 @@ public class InsuranceController(
// add items to InsuredItems list once money has been paid
pmcData.InsuredItems ??= [];
- foreach (var key in body.Items)
+ foreach (var key in request.Items)
{
pmcData.InsuredItems.Add(
new InsuredItem
{
- TId = body.TransactionId,
+ TId = request.TransactionId,
ItemId = inventoryItemsHash[key].Id
}
);
// If Item is Helmet or Body Armour -> Handle insurance of soft inserts
if (_itemHelper.ArmorItemHasRemovableOrSoftInsertSlots(inventoryItemsHash[key].Template))
{
- InsureSoftInserts(inventoryItemsHash[key], pmcData, body);
+ InsureSoftInserts(inventoryItemsHash[key], pmcData, request);
}
}
@@ -721,14 +741,13 @@ public class InsuranceController(
return output;
}
- /**
- * Ensure soft inserts of Armor that has soft insert slots
- * Allows armors to come back after being lost correctly
- * @param item Armor item to be insured
- * @param pmcData Player profile
- * @param body Insurance request data
- */
- public void InsureSoftInserts(Item itemWithSoftInserts, PmcData pmcData, InsureRequestData body)
+ ///
+ /// Ensure soft inserts of Armor that has soft insert slots, Allows armors to come back after being lost correctly
+ ///
+ /// Armor item to be insured
+ /// Players PMC profile
+ /// Insurance request data
+ public void InsureSoftInserts(Item itemWithSoftInserts, PmcData pmcData, InsureRequestData request)
{
var softInsertSlots = pmcData.Inventory.Items.Where(
item => item.ParentId == itemWithSoftInserts.Id && _itemHelper.IsSoftInsertId(item.SlotId.ToLower())
@@ -744,21 +763,20 @@ public class InsuranceController(
pmcData.InsuredItems.Add(
new InsuredItem
{
- TId = body.TransactionId,
+ TId = request.TransactionId,
ItemId = softInsertSlot.Id
}
);
}
}
- /**
- * Handle client/insurance/items/list/cost
- * Calculate insurance cost
- *
- * @param request request object
- * @param sessionID session id
- * @returns IGetInsuranceCostResponseData object to send to client
- */
+ ///
+ /// Handle client/insurance/items/list/cost
+ /// Calculate insurance cost
+ ///
+ /// request object
+ /// Session/Player id
+ /// GetInsuranceCostResponseData object to send to client
public GetInsuranceCostResponseData Cost(GetInsuranceCostRequestData request, string sessionId)
{
var response = new GetInsuranceCostResponseData();
diff --git a/Libraries/Core/Controllers/InventoryController.cs b/Libraries/Core/Controllers/InventoryController.cs
index bbb0328f..e41d5a70 100644
--- a/Libraries/Core/Controllers/InventoryController.cs
+++ b/Libraries/Core/Controllers/InventoryController.cs
@@ -41,6 +41,14 @@ public class InventoryController(
ICloner _cloner
)
{
+ ///
+ /// Move Item - change location of item with parentId and slotId, transfers items from one profile to another if fromOwner/toOwner is set in the body.
+ /// Otherwise, move is contained within the same profile_f
+ ///
+ /// Players PMC profile
+ /// Move request data
+ /// Session/Player id
+ /// Client response
public void MoveItem(PmcData pmcData, InventoryMoveRequestData moveRequest, string sessionId,
ItemEventRouterResponse output)
{
@@ -85,7 +93,7 @@ public class InventoryController(
// Item is moving into or out of place of fame dog tag slot
if (moveRequest.To?.Container != null &&
- (moveRequest.To.Container.StartsWith("dogtag") || originalLocationSlotId.StartsWith("dogtag")))
+ (moveRequest.To.Container.StartsWith("dogtag", StringComparison.OrdinalIgnoreCase) || originalLocationSlotId.StartsWith("dogtag", StringComparison.OrdinalIgnoreCase)))
{
_hideoutHelper.ApplyPlaceOfFameDogtagBonus(pmcData);
}
@@ -100,7 +108,11 @@ public class InventoryController(
}
}
- private void AppendTraderExploitErrorResponse(ItemEventRouterResponse output)
+ ///
+ /// Get an event router response with inventory trader message
+ ///
+ /// Item event router response
+ protected void AppendTraderExploitErrorResponse(ItemEventRouterResponse output)
{
_httpResponseUtil.AppendErrorToOutput(
output,
@@ -109,6 +121,14 @@ public class InventoryController(
);
}
+ ///
+ /// Handle /client/game/profile/items/moving - PinLock
+ /// Requires no response to client, only server change
+ ///
+ /// Players PMC profile
+ /// Pin/Lock request data
+ /// Session/Player id
+ /// Client response
public void PinOrLock(PmcData pmcData, PinOrLockItemRequest request, string sessionId,
ItemEventRouterResponse output)
{
@@ -126,6 +146,12 @@ public class InventoryController(
itemToAdjust.Upd.PinLockState = request.State;
}
+ ///
+ /// Handle /client/game/profile/items/moving SetFavoriteItems
+ ///
+ /// Players PMC profile
+ ///
+ /// Session/Player id
public void SetFavoriteItem(PmcData pmcData, SetFavoriteItems request, string sessionId)
{
// The client sends the full list of favorite items, so clear the current favorites
@@ -133,6 +159,12 @@ public class InventoryController(
pmcData.Inventory.FavoriteItems.AddRange(request.Items);
}
+ ///
+ /// Handle /client/game/profile/items/moving RedeemProfileReward
+ ///
+ /// Players PMC profile
+ ///
+ /// Session/Player id
public void RedeemProfileReward(PmcData pmcData, RedeemProfileRequestData request, string sessionId)
{
var fullProfile = _profileHelper.GetFullProfile(sessionId);
@@ -217,11 +249,11 @@ public class InventoryController(
}
}
- /**
- * Flag an item as seen in profiles encyclopedia + add inspect xp to profile
- * @param itemTpls Inspected item tpls
- * @param fullProfile Profile to add xp to
- */
+ ///
+ /// Flag an item as seen in profiles encyclopedia + add inspect xp to profile
+ ///
+ /// Inspected item tpls
+ /// Profile to add xp to
protected void FlagItemsAsInspectedAndRewardXp(IEnumerable itemTpls, SptProfile fullProfile)
{
foreach (var itemTpl in itemTpls)
@@ -251,6 +283,14 @@ public class InventoryController(
);
}
+ ///
+ /// Handle OpenRandomLootContainer event
+ /// Handle event fired when a container is unpacked (e.g. halloween pumpkin)
+ ///
+ /// Players PMC profile
+ ///
+ /// Session/Player id
+ /// Client response
public void OpenRandomLootContainer(PmcData pmcData, OpenRandomLootContainerRequestData request, string sessionId,
ItemEventRouterResponse output)
{
@@ -317,6 +357,13 @@ public class InventoryController(
_inventoryHelper.RemoveItem(pmcData, request.Item, sessionId, output);
}
+ ///
+ /// Edit an existing map marker
+ ///
+ /// Players PMC profile
+ /// Edit marker request
+ /// Session/Player id
+ /// Client response
public void EditMapMarker(PmcData pmcData, InventoryEditMarkerRequestData request, string sessionId,
ItemEventRouterResponse output)
{
@@ -326,6 +373,13 @@ public class InventoryController(
output.ProfileChanges[sessionId].Items.ChangedItems.Add(mapItem);
}
+ ///
+ /// Delete a map marker
+ ///
+ /// Players PMC profile
+ /// Delete marker request
+ /// Session/Player id
+ /// Client response
public void DeleteMapMarker(PmcData pmcData, InventoryDeleteMarkerRequestData request, string sessionId,
ItemEventRouterResponse output)
{
@@ -344,6 +398,13 @@ public class InventoryController(
output.ProfileChanges[sessionId].Items.ChangedItems.Add(adjustedMapItem);
}
+ ///
+ /// Add note to a map
+ ///
+ /// Players PMC profile
+ /// Add marker request
+ /// Session/Player id
+ /// Client response
public void SortInventory(PmcData pmcData, InventorySortRequestData request, string sessionId,
ItemEventRouterResponse output)
{
@@ -372,10 +433,17 @@ public class InventoryController(
}
}
- public ItemEventRouterResponse ReadEncyclopedia(PmcData pmcData, InventoryReadEncyclopediaRequestData body,
+ ///
+ /// Flag item as 'seen' by player in profile
+ ///
+ /// Players PMC profile
+ ///
+ /// Session/Player id
+ ///
+ public ItemEventRouterResponse ReadEncyclopedia(PmcData pmcData, InventoryReadEncyclopediaRequestData request,
string sessionId)
{
- foreach (var id in body.Ids)
+ foreach (var id in request.Ids)
{
pmcData.Encyclopedia[id] = true;
}
@@ -383,6 +451,13 @@ public class InventoryController(
return _eventOutputHolder.GetOutput(sessionId);
}
+ ///
+ /// Handle examining an item
+ ///
+ /// Players PMC profile
+ /// Examine item request
+ /// Session/Player id
+ /// Client response
public void ExamineItem(PmcData pmcData, InventoryExamineRequestData request, string sessionId,
ItemEventRouterResponse output)
{
@@ -425,6 +500,12 @@ public class InventoryController(
}
}
+ ///
+ /// Get the tplid of an item from the examine request object
+ ///
+ ///
+ /// Session/Player id
+ /// Item tpl
protected string? GetExaminedItemTpl(InventoryExamineRequestData request, string? sessionId)
{
if (_presetHelper.IsPreset(request.Item))
@@ -501,6 +582,14 @@ public class InventoryController(
return null;
}
+ ///
+ /// Unbind an inventory item from quick access menu at bottom of player screen
+ /// Handle unbind event
+ ///
+ /// Players PMC profile
+ ///
+ /// Session/Player id
+ /// Client response
public void UnBindItem(PmcData pmcData, InventoryBindRequestData request, string sessionId,
ItemEventRouterResponse output)
{
@@ -510,6 +599,14 @@ public class InventoryController(
pmcData.Inventory.FastPanel.Remove(request.Index);
}
+ ///
+ /// Handle bind event
+ /// Bind an inventory item to the quick access menu at bottom of player screen
+ ///
+ /// Players PMC profile
+ ///
+ /// Session/Player id
+ /// Client response
public void BindItem(PmcData pmcData, InventoryBindRequestData bindRequest, string sessionId,
ItemEventRouterResponse output)
{
@@ -524,6 +621,13 @@ public class InventoryController(
pmcData.Inventory.FastPanel[bindRequest.Index] = bindRequest.Item;
}
+ ///
+ /// Add a tag to an inventory item
+ ///
+ /// Profile with item to add tag to
+ ///
+ /// Session/Player id
+ /// ItemEventRouterResponse
public ItemEventRouterResponse TagItem(PmcData pmcData, InventoryTagRequestData request, string sessionId)
{
var itemToTag = pmcData.Inventory.Items.FirstOrDefault(item => item.Id == request.Item);
@@ -551,6 +655,13 @@ public class InventoryController(
return _eventOutputHolder.GetOutput(sessionId);
}
+ ///
+ /// Toggles "Toggleable" items like night vision goggles and face shields.
+ ///
+ /// Players PMC profile
+ /// Toggle request
+ /// Session/Player id
+ /// ItemEventRouterResponse
public ItemEventRouterResponse ToggleItem(PmcData pmcData, InventoryToggleRequestData request, string sessionId)
{
// May need to reassign to scav profile
@@ -586,6 +697,13 @@ public class InventoryController(
};
}
+ ///
+ /// Handles folding of Weapons
+ ///
+ /// Players PMC profile
+ /// Fold item request
+ /// Session/Player id
+ /// ItemEventRouterResponse
public ItemEventRouterResponse FoldItem(PmcData pmcData, InventoryFoldRequestData request, string sessionId)
{
// May need to reassign to scav profile
@@ -622,11 +740,15 @@ public class InventoryController(
return _eventOutputHolder.GetOutput(sessionId);
}
- /**
- * Swap Item
- * its used for "reload" if you have weapon in hands and magazine is somewhere else in rig or backpack in equipment
- * Also used to swap items using quick selection on character screen
- */
+ ///
+ /// Swap Item
+ /// used for "reload" if you have weapon in hands and magazine is somewhere else in rig or backpack in equipment
+ /// Also used to swap items using quick selection on character screen
+ ///
+ /// Players PMC profile
+ /// Swap item request
+ /// Session/Player id
+ /// ItemEventRouterResponse
public ItemEventRouterResponse SwapItem(PmcData pmcData, InventorySwapRequestData request, string sessionId)
{
// During post-raid scav transfer, the swap may be in the scav inventory
@@ -697,16 +819,15 @@ public class InventoryController(
return _eventOutputHolder.GetOutput(sessionId);
}
- /**
- * TODO: Adds no data to output to send to client, is this by design?
- * Transfer items from one stack into another while keeping original stack
- * Used to take items from scav inventory into stash or to insert ammo into mags (shotgun ones) and reloading weapon by clicking "Reload"
- * @param pmcData Player profile
- * @param body Transfer request
- * @param sessionID Session id
- * @param output Client response
- * @returns IItemEventRouterResponse
- */
+ ///
+ /// TODO: Adds no data to output to send to client, is this by design?
+ /// Transfer items from one stack into another while keeping original stack
+ /// Used to take items from scav inventory into stash or to insert ammo into mags (shotgun ones) and reloading weapon by clicking "Reload"
+ ///
+ /// Players PMC profile
+ /// Transfer item request
+ /// Session/Player id
+ /// Client response
public void TransferItem(PmcData pmcData, InventoryTransferRequestData request, string sessionId,
ItemEventRouterResponse output)
{
@@ -761,17 +882,25 @@ public class InventoryController(
destinationItem.Upd.StackObjectsCount = destinationStackCount + request.Count;
}
- public void MergeItem(PmcData pmcData, InventoryMergeRequestData body, string sessionID,
+ ///
+ /// Fully merge 2 inventory stacks together into one stack (merging where both stacks remain is called 'transfer')
+ /// Deletes item from `body.item` and adding number of stacks into `body.with`
+ ///
+ /// Players PMC profile
+ /// Merge stacks request
+ ///
+ /// Client response
+ public void MergeItem(PmcData pmcData, InventoryMergeRequestData request, string sessionID,
ItemEventRouterResponse output)
{
// Changes made to result apply to character inventory
- var inventoryItems = _inventoryHelper.GetOwnerInventoryItems(body, body.Item, sessionID);
+ var inventoryItems = _inventoryHelper.GetOwnerInventoryItems(request, request.Item, sessionID);
// Get source item (can be from player or trader or mail)
- var sourceItem = inventoryItems.From.FirstOrDefault(x => x.Id == body.Item);
+ var sourceItem = inventoryItems.From.FirstOrDefault(x => x.Id == request.Item);
if (sourceItem is null)
{
- var errorMessage = $"Unable to merge stacks as source item: {body.With} cannot be found";
+ var errorMessage = $"Unable to merge stacks as source item: {request.With} cannot be found";
_logger.Error(errorMessage);
_httpResponseUtil.AppendErrorToOutput(output, errorMessage);
@@ -780,10 +909,10 @@ public class InventoryController(
}
// Get item being merged into
- var destinationItem = inventoryItems.To.FirstOrDefault(x => x.Id == body.With);
+ var destinationItem = inventoryItems.To.FirstOrDefault(x => x.Id == request.With);
if (destinationItem is null)
{
- var errorMessage = $"Unable to merge stacks as destination item: {body.With} cannot be found";
+ var errorMessage = $"Unable to merge stacks as destination item: {request.With} cannot be found";
_logger.Error(errorMessage);
_httpResponseUtil.AppendErrorToOutput(output, errorMessage);
@@ -844,6 +973,13 @@ public class InventoryController(
inventoryItems.From.RemoveAt(indexOfItemToRemove); // Remove source item from 'from' inventory
}
+ ///
+ /// Split Item stack - 1 stack into 2
+ ///
+ /// (unused, getOwnerInventoryItems() gets profile)
+ /// Split stack request
+ ///
+ /// Client response
public void SplitItem(PmcData pmcData, InventorySplitRequestData request, string sessionID,
ItemEventRouterResponse output)
{
@@ -901,7 +1037,15 @@ public class InventoryController(
);
}
- public void RemoveItem(PmcData pmcData, InventoryRemoveRequestData request, string sessionId,
+ ///
+ /// Implements "Discard" functionality from Main menu (Stash etc.)
+ /// Removes item from PMC Profile
+ ///
+ /// Players PMC profile
+ /// Discard item request
+ /// Session/Player id
+ /// Client response
+ public void DiscardItem(PmcData pmcData, InventoryRemoveRequestData request, string sessionId,
ItemEventRouterResponse output)
{
if (request.FromOwner?.Type == "Mail")
diff --git a/Libraries/Core/Controllers/LauncherController.cs b/Libraries/Core/Controllers/LauncherController.cs
index 2fe8f827..6d1097c4 100644
--- a/Libraries/Core/Controllers/LauncherController.cs
+++ b/Libraries/Core/Controllers/LauncherController.cs
@@ -32,6 +32,10 @@ public class LauncherController(
{
protected CoreConfig _coreConfig = _configServer.GetConfig();
+ ///
+ ///
+ ///
+ ///
public ConnectResponse Connect()
{
// Get all possible profile types + filter out any that are blacklisted
@@ -75,11 +79,21 @@ public class LauncherController(
return result;
}
+ ///
+ ///
+ ///
+ ///
+ ///
public Info? Find(string? sessionId)
{
return sessionId is not null && _saveServer.GetProfiles().TryGetValue(sessionId, out var profile) ? profile.ProfileInfo : null;
}
+ ///
+ ///
+ ///
+ ///
+ ///
public string? Login(LoginRequestData? info)
{
foreach (var kvp in _saveServer.GetProfiles())
@@ -94,6 +108,11 @@ public class LauncherController(
return null;
}
+ ///
+ ///
+ ///
+ ///
+ ///
public string Register(RegisterData info)
{
foreach (var kvp in _saveServer.GetProfiles())
@@ -107,6 +126,11 @@ public class LauncherController(
return CreateAccount(info);
}
+ ///
+ ///
+ ///
+ ///
+ ///
protected string CreateAccount(RegisterData info)
{
var profileId = GenerateProfileId();
@@ -129,6 +153,10 @@ public class LauncherController(
return profileId;
}
+ ///
+ ///
+ ///
+ ///
protected string GenerateProfileId()
{
var timestamp = _timeUtil.GetTimeStamp();
@@ -136,6 +164,12 @@ public class LauncherController(
return FormatID(timestamp, timestamp * _randomUtil.GetInt(1, 1000000));
}
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
protected string FormatID(long timeStamp, long counter)
{
var timeStampStr = Convert.ToString(timeStamp, 16).PadLeft(8, '0');
@@ -144,6 +178,11 @@ public class LauncherController(
return timeStampStr.ToLower() + counterStr.ToLower();
}
+ ///
+ ///
+ ///
+ ///
+ ///
public string? ChangeUsername(ChangeRequestData info)
{
var sessionID = Login(info);
@@ -156,6 +195,11 @@ public class LauncherController(
return sessionID;
}
+ ///
+ ///
+ ///
+ ///
+ ///
public string? ChangePassword(ChangeRequestData info)
{
var sessionID = Login(info);
@@ -192,6 +236,10 @@ public class LauncherController(
return sessionID;
}
+ ///
+ ///
+ ///
+ ///
public string GetCompatibleTarkovVersion()
{
return _coreConfig.CompatibleTarkovVersion;
@@ -231,6 +279,11 @@ public class LauncherController(
return [];
}
+ ///
+ ///
+ ///
+ ///
+ ///
public List GetProfileModsGroupedByModName(List profileMods)
{
// Group all mods used by profile by name
diff --git a/Libraries/Core/Controllers/MatchController.cs b/Libraries/Core/Controllers/MatchController.cs
index ddd3077f..ba625205 100644
--- a/Libraries/Core/Controllers/MatchController.cs
+++ b/Libraries/Core/Controllers/MatchController.cs
@@ -45,7 +45,7 @@ public class MatchController(
/// Handle match/group/start_game
///
///
- ///
+ /// Session/Player id
///
public ProfileStatusResponse JoinMatch(MatchGroupStartGameRequest info, string sessionId)
{
@@ -94,7 +94,7 @@ public class MatchController(
/// Handle /client/raid/configuration
///
///
- ///
+ /// Session/Player id
public void ConfigureOfflineRaid(GetRaidConfigurationRequestData request, string sessionId)
{
// Store request data for access during bot generation
@@ -116,7 +116,7 @@ public class MatchController(
///
/// dropdown difficulty value
/// bot difficulty
- private string ConvertDifficultyDropdownIntoBotDifficulty(string botDifficulty)
+ protected string ConvertDifficultyDropdownIntoBotDifficulty(string botDifficulty)
{
// Edge case medium - must be altered
if (string.Equals(botDifficulty, "medium", StringComparison.OrdinalIgnoreCase))
@@ -130,7 +130,7 @@ public class MatchController(
///
/// Handle client/match/local/start
///
- ///
+ /// Session/Player id
///
///
public StartLocalRaidResponseData StartLocalRaid(string sessionId, StartLocalRaidRequestData request)
@@ -141,7 +141,7 @@ public class MatchController(
///
/// Handle client/match/local/end
///
- ///
+ /// Session/Player id
///
public void EndLocalRaid(string sessionId, EndLocalRaidRequestData request)
{
diff --git a/Libraries/Core/Controllers/NoteController.cs b/Libraries/Core/Controllers/NoteController.cs
index 621ecd4b..126ad533 100644
--- a/Libraries/Core/Controllers/NoteController.cs
+++ b/Libraries/Core/Controllers/NoteController.cs
@@ -13,9 +13,9 @@ public class NoteController(
{
///
///
- ///
+ /// Players PMC profile
///
- ///
+ /// Session/Player id
///
public ItemEventRouterResponse AddNote(
PmcData pmcData,
@@ -34,9 +34,9 @@ public class NoteController(
///
///
- ///
+ /// Players PMC profile
///
- ///
+ /// Session/Player id
///
public ItemEventRouterResponse EditNote(
PmcData pmcData,
@@ -52,9 +52,9 @@ public class NoteController(
///
///
- ///
+ /// Players PMC profile
///
- ///
+ /// Session/Player id
///
public ItemEventRouterResponse DeleteNote(
PmcData pmcData,
diff --git a/Libraries/Core/Controllers/NotifierController.cs b/Libraries/Core/Controllers/NotifierController.cs
index 5c358d51..8515b798 100644
--- a/Libraries/Core/Controllers/NotifierController.cs
+++ b/Libraries/Core/Controllers/NotifierController.cs
@@ -22,7 +22,7 @@ public class NotifierController(
/// one or more appear or when a timeout expires.
/// If no notifications are available after the timeout, use a default message.
///
- ///
+ /// Session/Player id
public Task
> NotifyAsync(string sessionId)
{
return Task.Factory.StartNew(() => {
@@ -52,7 +52,7 @@ public class NotifierController(
///
/// Handle client/notifier/channel/create
///
- ///
+ /// Session/Player id
///
public NotifierChannel GetChannel(string sessionId)
{
@@ -68,7 +68,7 @@ public class NotifierController(
///
///
- ///
+ /// Session/Player id
///
public string GetServer(string sessionId)
{
diff --git a/Libraries/Core/Controllers/PrestigeController.cs b/Libraries/Core/Controllers/PrestigeController.cs
index fe697839..b3a5ae5b 100644
--- a/Libraries/Core/Controllers/PrestigeController.cs
+++ b/Libraries/Core/Controllers/PrestigeController.cs
@@ -21,7 +21,7 @@ public class PrestigeController(
///
/// Handle /client/prestige/list
///
- ///
+ /// Session/Player id
///
///
public Prestige GetPrestige(
diff --git a/Libraries/Core/Controllers/QuestController.cs b/Libraries/Core/Controllers/QuestController.cs
index bf9da9f7..bef72dff 100644
--- a/Libraries/Core/Controllers/QuestController.cs
+++ b/Libraries/Core/Controllers/QuestController.cs
@@ -113,7 +113,7 @@ public class QuestController(
return acceptQuestResponse;
}
- private void AddTaskConditionCountersToProfile(List? questConditions, PmcData pmcData, string questId)
+ protected void AddTaskConditionCountersToProfile(List? questConditions, PmcData pmcData, string questId)
{
foreach (var condition in questConditions)
{
@@ -177,7 +177,7 @@ public class QuestController(
return response;
}
- private RepeatableQuest GetRepeatableQuestFromProfile(PmcData pmcData, AcceptQuestRequestData acceptedQuest)
+ protected RepeatableQuest GetRepeatableQuestFromProfile(PmcData pmcData, AcceptQuestRequestData acceptedQuest)
{
foreach (var repeatableQuest in pmcData.RepeatableQuests)
{
@@ -350,7 +350,7 @@ public class QuestController(
return output;
}
- private ItemEventRouterResponse ShowRepeatableQuestInvalidConditionError(HandoverQuestRequestData handoverQuestRequest, ItemEventRouterResponse output)
+ protected ItemEventRouterResponse ShowRepeatableQuestInvalidConditionError(HandoverQuestRequestData handoverQuestRequest, ItemEventRouterResponse output)
{
var errorMessage = _localisationService.GetText(
"repeatable-quest_handover_failed_condition_invalid",
@@ -365,7 +365,7 @@ public class QuestController(
return _httpResponseUtil.AppendErrorToOutput(output, errorMessage);
}
- private ItemEventRouterResponse ShowQuestItemHandoverMatchError(HandoverQuestRequestData handoverQuestRequest, Item? itemHandedOver,
+ protected ItemEventRouterResponse ShowQuestItemHandoverMatchError(HandoverQuestRequestData handoverQuestRequest, Item? itemHandedOver,
QuestCondition? handoverRequirements, ItemEventRouterResponse output)
{
var errorMessage = _localisationService.GetText(
@@ -382,7 +382,7 @@ public class QuestController(
return _httpResponseUtil.AppendErrorToOutput(output, errorMessage);
}
- private void UpdateProfileTaskConditionCounterValue(PmcData pmcData, string conditionId, string questId, double counterValue)
+ protected void UpdateProfileTaskConditionCounterValue(PmcData pmcData, string conditionId, string questId, double counterValue)
{
if (pmcData.TaskConditionCounters.GetValueOrDefault(conditionId) != null)
{
diff --git a/Libraries/Core/Controllers/RagfairController.cs b/Libraries/Core/Controllers/RagfairController.cs
index 755b3c0f..c96da33a 100644
--- a/Libraries/Core/Controllers/RagfairController.cs
+++ b/Libraries/Core/Controllers/RagfairController.cs
@@ -22,32 +22,32 @@ namespace Core.Controllers;
[Injectable]
public class RagfairController
{
- private readonly ConfigServer _configServer;
- private readonly DatabaseService _databaseService;
- private readonly EventOutputHolder _eventOutputHolder;
- private readonly HandbookHelper _handbookHelper;
- private readonly HttpResponseUtil _httpResponseUtil;
- private readonly InventoryHelper _inventoryHelper;
- private readonly ItemHelper _itemHelper;
- private readonly JsonUtil _jsonUtil;
- private readonly LocalisationService _localisationService;
- private readonly ISptLogger _logger;
- private readonly PaymentHelper _paymentHelper;
- private readonly PaymentService _paymentService;
- private readonly ProfileHelper _profileHelper;
+ protected ConfigServer _configServer;
+ protected DatabaseService _databaseService;
+ protected EventOutputHolder _eventOutputHolder;
+ protected HandbookHelper _handbookHelper;
+ protected HttpResponseUtil _httpResponseUtil;
+ protected InventoryHelper _inventoryHelper;
+ protected ItemHelper _itemHelper;
+ protected JsonUtil _jsonUtil;
+ protected LocalisationService _localisationService;
+ protected ISptLogger _logger;
+ protected PaymentHelper _paymentHelper;
+ protected PaymentService _paymentService;
+ protected ProfileHelper _profileHelper;
- private readonly RagfairConfig _ragfairConfig;
- private readonly RagfairHelper _ragfairHelper;
- private readonly RagfairOfferGenerator _ragfairOfferGenerator;
- private readonly RagfairOfferHelper _ragfairOfferHelper;
- private readonly RagfairOfferService _ragfairOfferService;
- private readonly RagfairPriceService _ragfairPriceService;
- private readonly RagfairSellHelper _ragfairSellHelper;
- private readonly RagfairServer _ragfairServer;
- private readonly RagfairSortHelper _ragfairSortHelper;
- private readonly RagfairTaxService _ragfairTaxService;
- private readonly TimeUtil _timeUtil;
- private readonly TraderHelper _traderHelper;
+ protected RagfairConfig _ragfairConfig;
+ protected RagfairHelper _ragfairHelper;
+ protected RagfairOfferGenerator _ragfairOfferGenerator;
+ protected RagfairOfferHelper _ragfairOfferHelper;
+ protected RagfairOfferService _ragfairOfferService;
+ protected RagfairPriceService _ragfairPriceService;
+ protected RagfairSellHelper _ragfairSellHelper;
+ protected RagfairServer _ragfairServer;
+ protected RagfairSortHelper _ragfairSortHelper;
+ protected RagfairTaxService _ragfairTaxService;
+ protected TimeUtil _timeUtil;
+ protected TraderHelper _traderHelper;
public RagfairController(
ISptLogger logger,
@@ -260,7 +260,7 @@ public class RagfairController
* Add index to all offers passed in (0-indexed)
* @param offers Offers to add index value to
*/
- private void AddIndexValueToOffers(List offers)
+ protected void AddIndexValueToOffers(List offers)
{
var counter = 0;
@@ -276,7 +276,7 @@ public class RagfairController
* @param offers Ragfair offers to get categories for
* @returns record with templates + counts
*/
- private Dictionary? GetSpecificCategories(PmcData pmcProfile, SearchRequestData searchRequest,
+ protected Dictionary GetSpecificCategories(PmcData pmcProfile, SearchRequestData searchRequest,
List offers)
{
// Linked/required search categories
@@ -311,7 +311,7 @@ public class RagfairController
* @param info Search request
* @returns True if it is a 'linked' search type
*/
- private bool IsLinkedSearch(SearchRequestData searchRequest)
+ protected bool IsLinkedSearch(SearchRequestData searchRequest)
{
return !string.IsNullOrEmpty(searchRequest.LinkedSearchId);
}
@@ -321,7 +321,7 @@ public class RagfairController
* @param info Search request
* @returns True if it is a 'required' search type
*/
- private bool IsRequiredSearch(SearchRequestData searchRequest)
+ protected bool IsRequiredSearch(SearchRequestData searchRequest)
{
return !string.IsNullOrEmpty(searchRequest.NeededSearchId);
}
@@ -334,7 +334,7 @@ public class RagfairController
* @param pmcProfile Player profile
* @returns array of offers
*/
- private List GetOffersForSearchType(SearchRequestData searchRequest, List itemsToAdd,
+ protected List GetOffersForSearchType(SearchRequestData searchRequest, List itemsToAdd,
Dictionary traderAssorts,
PmcData pmcProfile)
{
@@ -398,7 +398,7 @@ public class RagfairController
};
}
- private double GetAveragePriceFromOffers(List offers, MinMax minMax, bool ignoreTraderOffers)
+ protected double GetAveragePriceFromOffers(List offers, MinMax minMax, bool ignoreTraderOffers)
{
var sum = 0d;
var totalOfferCount = 0;
@@ -494,7 +494,7 @@ public class RagfairController
* @param errorMessage message to show to player when offer is invalid
* @returns Is offer valid
*/
- private bool IsValidPlayerOfferRequest(AddOfferRequestData offerRequest, string validationMessage)
+ protected bool IsValidPlayerOfferRequest(AddOfferRequestData offerRequest, string validationMessage)
{
if (offerRequest?.Items is null || offerRequest.Items.Count == 0)
{
@@ -519,7 +519,7 @@ public class RagfairController
* @param offerRequest Client request
* @returns FleaOfferType
*/
- private FleaOfferType GetOfferType(AddOfferRequestData offerRequest)
+ protected FleaOfferType GetOfferType(AddOfferRequestData offerRequest)
{
var sellInOncePiece = offerRequest.SellInOnePiece.GetValueOrDefault(false);
@@ -554,7 +554,7 @@ public class RagfairController
* @param output Response to send to client
* @returns IItemEventRouterResponse
*/
- private ItemEventRouterResponse CreateMultiOffer(string sessionID, AddOfferRequestData offerRequest,
+ protected ItemEventRouterResponse CreateMultiOffer(string sessionID, AddOfferRequestData offerRequest,
SptProfile fullProfile, ItemEventRouterResponse output)
{
var pmcData = fullProfile.CharacterData.PmcData;
@@ -666,7 +666,7 @@ public class RagfairController
* @param output Response to send to client
* @returns IItemEventRouterResponse
*/
- private ItemEventRouterResponse CreatePackOffer(string sessionID, AddOfferRequestData offerRequest,
+ protected ItemEventRouterResponse CreatePackOffer(string sessionID, AddOfferRequestData offerRequest,
SptProfile fullProfile, ItemEventRouterResponse output)
{
var pmcData = fullProfile.CharacterData.PmcData;
@@ -775,7 +775,7 @@ public class RagfairController
* @param output Response to send to client
* @returns IItemEventRouterResponse
*/
- private ItemEventRouterResponse CreateSingleOffer(string sessionID, AddOfferRequestData offerRequest,
+ protected ItemEventRouterResponse CreateSingleOffer(string sessionID, AddOfferRequestData offerRequest,
SptProfile fullProfile,
ItemEventRouterResponse output)
{
@@ -874,7 +874,7 @@ public class RagfairController
* @param output IItemEventRouterResponse
* @returns True if charging tax to player failed
*/
- private bool ChargePlayerTaxFee(
+ protected bool ChargePlayerTaxFee(
string sessionId,
Item rootItem,
PmcData pmcData,
@@ -917,7 +917,7 @@ public class RagfairController
return false;
}
- private RagfairOffer CreatePlayerOffer(string sessionId, List requirements, List- items,
+ protected RagfairOffer CreatePlayerOffer(string sessionId, List requirements, List
- items,
bool sellInOnePiece)
{
const int loyalLevel = 1;
@@ -962,7 +962,7 @@ public class RagfairController
* @param requirements
* @returns Rouble price
*/
- private double CalculateRequirementsPriceInRub(List requirements)
+ protected double CalculateRequirementsPriceInRub(List requirements)
{
return requirements.Sum(requirement =>
{
@@ -978,7 +978,7 @@ public class RagfairController
);
}
- private GetItemsToListOnFleaFromInventoryResult GetItemsToListOnFleaFromInventory(PmcData pmcData,
+ protected GetItemsToListOnFleaFromInventoryResult GetItemsToListOnFleaFromInventory(PmcData pmcData,
List itemIdsFromFleaOfferRequest)
{
List
> itemsToReturn = [];
@@ -1157,7 +1157,7 @@ public class RagfairController
* @param value Amount of currency
* @returns IProcessBuyTradeRequestData
*/
- private ProcessBuyTradeRequestData CreateBuyTradeRequestObject(CurrencyType currency, double value)
+ protected ProcessBuyTradeRequestData CreateBuyTradeRequestObject(CurrencyType currency, double value)
{
return new ProcessBuyTradeRequestData
{
diff --git a/Libraries/Core/Controllers/RepeatableQuestController.cs b/Libraries/Core/Controllers/RepeatableQuestController.cs
index 6c930a58..b3c9fd79 100644
--- a/Libraries/Core/Controllers/RepeatableQuestController.cs
+++ b/Libraries/Core/Controllers/RepeatableQuestController.cs
@@ -223,7 +223,7 @@ public class RepeatableQuestController(
* @param repeatablesOfTypeInProfile The repeatables that have the replaced and new quest
* @param replacedQuestId Id of the replaced quest
*/
- private void CleanUpRepeatableChangeRequirements(PmcDataRepeatableQuest repeatablesOfTypeInProfile,
+ protected void CleanUpRepeatableChangeRequirements(PmcDataRepeatableQuest repeatablesOfTypeInProfile,
string replacedQuestId)
{
if (repeatablesOfTypeInProfile.ActiveQuests.Count == 1)
@@ -239,7 +239,7 @@ public class RepeatableQuestController(
}
}
- private RepeatableQuest? AttemptToGenerateRepeatableQuest(string sessionId, PmcData pmcData,
+ protected RepeatableQuest? AttemptToGenerateRepeatableQuest(string sessionId, PmcData pmcData,
QuestTypePool questTypePool, RepeatableQuestConfig repeatableConfig)
{
const int maxAttempts = 10;
@@ -272,7 +272,7 @@ public class RepeatableQuestController(
return newRepeatableQuest;
}
- private void RemoveQuestFromProfile(SptProfile? fullProfile, string questToReplaceId)
+ protected void RemoveQuestFromProfile(SptProfile? fullProfile, string questToReplaceId)
{
// Find quest we're replacing in pmc profile quests array and remove it
_questHelper.FindAndRemoveQuestFromArrayIfExists(questToReplaceId, fullProfile.CharacterData.PmcData.Quests);
@@ -446,7 +446,7 @@ public class RepeatableQuestController(
return returnData;
}
- private PmcDataRepeatableQuest GetRepeatableQuestSubTypeFromProfile(RepeatableQuestConfig repeatableConfig,
+ protected PmcDataRepeatableQuest GetRepeatableQuestSubTypeFromProfile(RepeatableQuestConfig repeatableConfig,
PmcData pmcData)
{
// Get from profile, add if missing
@@ -475,7 +475,7 @@ public class RepeatableQuestController(
return repeatableQuestDetails;
}
- private bool CanProfileAccessRepeatableQuests(RepeatableQuestConfig repeatableConfig, PmcData pmcData)
+ protected bool CanProfileAccessRepeatableQuests(RepeatableQuestConfig repeatableConfig, PmcData pmcData)
{
// PMC and daily quests not unlocked yet
if (repeatableConfig.Side == "Pmc" && !PlayerHasDailyPmcQuestsUnlocked(pmcData, repeatableConfig))
@@ -503,7 +503,7 @@ public class RepeatableQuestController(
* @param repeatableConfig Config of daily type to check
* @returns True if unlocked
*/
- private bool PlayerHasDailyPmcQuestsUnlocked(PmcData pmcData, RepeatableQuestConfig repeatableConfig)
+ protected static bool PlayerHasDailyPmcQuestsUnlocked(PmcData pmcData, RepeatableQuestConfig repeatableConfig)
{
return pmcData.Info.Level >= repeatableConfig.MinPlayerLevel;
}
@@ -513,14 +513,14 @@ public class RepeatableQuestController(
* @param pmcData Player profile to check
* @returns True if unlocked
*/
- private bool PlayerHasDailyScavQuestsUnlocked(PmcData pmcData)
+ protected bool PlayerHasDailyScavQuestsUnlocked(PmcData pmcData)
{
return pmcData?.Hideout?.Areas?.FirstOrDefault(hideoutArea => hideoutArea.Type == HideoutAreas.INTEL_CENTER)
?.Level >=
1;
}
- private void ProcessExpiredQuests(PmcDataRepeatableQuest generatedRepeatables, PmcData pmcData)
+ protected void ProcessExpiredQuests(PmcDataRepeatableQuest generatedRepeatables, PmcData pmcData)
{
var questsToKeep = new List();
foreach (var activeQuest in generatedRepeatables.ActiveQuests)
@@ -558,7 +558,7 @@ public class RepeatableQuestController(
generatedRepeatables.ActiveQuests = questsToKeep;
}
- private QuestTypePool GenerateQuestPool(RepeatableQuestConfig repeatableConfig, int? pmcLevel)
+ protected QuestTypePool GenerateQuestPool(RepeatableQuestConfig repeatableConfig, int? pmcLevel)
{
var questPool = CreateBaseQuestPool(repeatableConfig);
@@ -617,7 +617,7 @@ public class RepeatableQuestController(
return questPool;
}
- private QuestTypePool CreateBaseQuestPool(RepeatableQuestConfig repeatableConfig)
+ protected QuestTypePool CreateBaseQuestPool(RepeatableQuestConfig repeatableConfig)
{
return new QuestTypePool
{
@@ -640,7 +640,7 @@ public class RepeatableQuestController(
};
}
- private Dictionary> GetAllowedLocationsForPmcLevel(
+ protected Dictionary> GetAllowedLocationsForPmcLevel(
Dictionary> locations, int pmcLevel)
{
var allowedLocation = new Dictionary>();
@@ -694,7 +694,7 @@ public class RepeatableQuestController(
///
/// Player profile
/// Quest count
- private int GetQuestCount(RepeatableQuestConfig repeatableConfig, PmcData pmcData)
+ protected int GetQuestCount(RepeatableQuestConfig repeatableConfig, PmcData pmcData)
{
var questCount = repeatableConfig.NumQuests.GetValueOrDefault(0);
if (questCount == 0)
diff --git a/Libraries/Core/Controllers/TradeController.cs b/Libraries/Core/Controllers/TradeController.cs
index bc533351..06169e1e 100644
--- a/Libraries/Core/Controllers/TradeController.cs
+++ b/Libraries/Core/Controllers/TradeController.cs
@@ -43,9 +43,9 @@ public class TradeController(
///
/// Handle TradingConfirm event
///
- ///
+ /// Players PMC profile
///
- ///
+ /// Session/Player id
///
public ItemEventRouterResponse ConfirmTrading(
PmcData pmcData,
@@ -82,9 +82,9 @@ public class TradeController(
///
/// Handle RagFairBuyOffer event
///
- ///
+ /// Players PMC profile
///
- ///
+ /// Session/Player id
///
public ItemEventRouterResponse ConfirmRagfairTrading(
PmcData pmcData,
@@ -141,7 +141,7 @@ public class TradeController(
/// Offer being purchased
/// request data from client
/// Output to send back to client
- private void BuyTraderItemFromRagfair(
+ protected void BuyTraderItemFromRagfair(
string sessionId,
PmcData pmcData,
RagfairOffer fleaOffer,
@@ -187,7 +187,7 @@ public class TradeController(
/// Offer being purchased
/// request data from client
/// Output to send back to client
- private void BuyPmcItemFromRagfair(
+ protected void BuyPmcItemFromRagfair(
string sessionId,
PmcData pmcData,
RagfairOffer fleaOffer,
@@ -234,11 +234,11 @@ public class TradeController(
/// id of the offer
/// Owner id
/// true if offer was made by a player
- private bool IsPlayerOffer(
+ protected bool IsPlayerOffer(
string offerId,
string? offerOwnerId)
{
- // No ownerid, not player offer
+ // No ownerId, not player offer
if (offerOwnerId is null)
{
return false;
@@ -261,7 +261,7 @@ public class TradeController(
/// Flea offer being bought
/// Player profile
/// True if player can buy offer
- private bool PlayerLacksTraderLoyaltyLevelToBuyOffer(
+ protected bool PlayerLacksTraderLoyaltyLevelToBuyOffer(
RagfairOffer fleaOffer,
PmcData pmcData)
{
@@ -271,9 +271,9 @@ public class TradeController(
///
/// Handle SellAllFromSavage event
///
- ///
+ /// Players PMC profile
///
- ///
+ /// Session/Player id
///
public ItemEventRouterResponse SellScavItemsToFence(
PmcData pmcData,
@@ -293,7 +293,7 @@ public class TradeController(
/// Session id
/// amount of roubles to send
/// Trader to sell items to
- private void MailMoneyToPlayer(
+ protected void MailMoneyToPlayer(
string sessionId,
int roublesToSend,
string trader)
@@ -336,7 +336,7 @@ public class TradeController(
/// Prices of items from handbook
/// Trader being sold to, to perform buy category check against
/// Rouble price
- private int GetPriceOfItemAndChildren(
+ protected int GetPriceOfItemAndChildren(
string parentItemId,
List- items,
Dictionary handbookPrices,
diff --git a/Libraries/Core/Controllers/TraderController.cs b/Libraries/Core/Controllers/TraderController.cs
index 5ef5e1e7..0a1b8b7d 100644
--- a/Libraries/Core/Controllers/TraderController.cs
+++ b/Libraries/Core/Controllers/TraderController.cs
@@ -80,11 +80,16 @@ public class TraderController(
}
}
+ ///
+ /// Adjust trader item prices based on config value multiplier
+ ///
+ ///
+ ///
protected void AdjustTraderItemPrices(Trader trader, double multiplier)
{
foreach (var kvp in trader.Assort?.BarterScheme)
{
- var barterSchemeItem = kvp.Value[0][0];
+ var barterSchemeItem = kvp.Value?.FirstOrDefault()?.FirstOrDefault();
if (barterSchemeItem != null && _paymentHelper.IsMoneyTpl(barterSchemeItem.Template))
{
barterSchemeItem.Count += Math.Round(
@@ -100,7 +105,7 @@ public class TraderController(
/// If current time is > nextResupply(expire) time of trader, refresh traders assorts and
/// Fence is handled slightly differently
///
- ///
+ /// True if ran successfully
public bool Update()
{
foreach (var (traderId, data) in _databaseService.GetTables().Traders)
@@ -157,12 +162,12 @@ public class TraderController(
}
///
- /// Order traders by their traderId (Ttid)
+ /// Order traders by their traderId (tid)
///
/// First trader to compare
/// Second trader to compare
/// 1,-1 or 0
- private int SortByTraderId(TraderBase traderA, TraderBase traderB)
+ protected static int SortByTraderId(TraderBase traderA, TraderBase traderB)
{
return string.CompareOrdinal(traderA.Id, traderB.Id);
}
@@ -170,7 +175,7 @@ public class TraderController(
///
/// Handle client/trading/api/getTrader
///
- ///
+ /// Session/Player id
///
///
public TraderBase GetTrader(string sessionId, string traderId)
@@ -181,7 +186,7 @@ public class TraderController(
///
/// Handle client/trading/api/getTraderAssort
///
- ///
+ /// Session/Player id
///
///
public TraderAssort GetAssort(string sessionId, string traderId)
diff --git a/Libraries/Core/Controllers/WeatherController.cs b/Libraries/Core/Controllers/WeatherController.cs
index 637dd972..a3ec9e93 100644
--- a/Libraries/Core/Controllers/WeatherController.cs
+++ b/Libraries/Core/Controllers/WeatherController.cs
@@ -27,7 +27,7 @@ public class WeatherController(
///
/// Handle client/weather
///
- ///
+ /// WeatherData
public WeatherData Generate()
{
var result = new WeatherData
@@ -48,8 +48,8 @@ public class WeatherController(
///
/// Handle client/localGame/weather
///
- ///
- ///
+ /// Session/Player id
+ /// GetLocalWeatherResponseData
public GetLocalWeatherResponseData GenerateLocal(string sessionId)
{
var result = new GetLocalWeatherResponseData
diff --git a/Libraries/Core/Controllers/WishlistController.cs b/Libraries/Core/Controllers/WishlistController.cs
index 5e98bb4e..28001f29 100644
--- a/Libraries/Core/Controllers/WishlistController.cs
+++ b/Libraries/Core/Controllers/WishlistController.cs
@@ -14,9 +14,9 @@ public class WishlistController(
///
/// Handle AddToWishList
///
- ///
+ /// Players PMC profile
///
- ///
+ /// Session/Player id
///
public ItemEventRouterResponse AddToWishList(
PmcData pmcData,
@@ -34,9 +34,9 @@ public class WishlistController(
///
/// Handle RemoveFromWishList event
///
- ///
+ /// Players PMC profile
///
- ///
+ /// Session/Player id
///
public ItemEventRouterResponse RemoveFromWishList(
PmcData pmcData,
@@ -54,9 +54,9 @@ public class WishlistController(
///
/// Handle changeWishlistItemCategory event
///
- ///
+ /// Players PMC profile
///
- ///
+ /// Session/Player id
///
public ItemEventRouterResponse ChangeWishListItemCategory(
PmcData pmcData,
diff --git a/Libraries/Core/Generators/BotEquipmentModGenerator.cs b/Libraries/Core/Generators/BotEquipmentModGenerator.cs
index 5e0ca9c5..189377b1 100644
--- a/Libraries/Core/Generators/BotEquipmentModGenerator.cs
+++ b/Libraries/Core/Generators/BotEquipmentModGenerator.cs
@@ -372,7 +372,7 @@ public class BotEquipmentModGenerator(
return result;
}
- private MinMax GetMinMaxArmorPlateClass(List platePool)
+ protected static MinMax GetMinMaxArmorPlateClass(List platePool)
{
platePool.Sort(
(x, y) =>
diff --git a/Libraries/Core/Generators/BotLootGenerator.cs b/Libraries/Core/Generators/BotLootGenerator.cs
index 5d7df60a..a2f7d7c7 100644
--- a/Libraries/Core/Generators/BotLootGenerator.cs
+++ b/Libraries/Core/Generators/BotLootGenerator.cs
@@ -39,7 +39,7 @@ public class BotLootGenerator(
///
///
///
- private ItemSpawnLimitSettings GetItemSpawnLimitsForBot(string botRole)
+ protected ItemSpawnLimitSettings GetItemSpawnLimitsForBot(string botRole)
{
var limits = GetItemSpawnLimitsForBotType(botRole);
@@ -329,7 +329,7 @@ public class BotLootGenerator(
}
}
- private MinMaxLootItemValue? GetSingleItemLootPriceLimits(int botLevel, bool isPmc)
+ protected MinMaxLootItemValue? GetSingleItemLootPriceLimits(int botLevel, bool isPmc)
{
// TODO - extend to other bot types
if (!isPmc)
@@ -351,7 +351,7 @@ public class BotLootGenerator(
/// Bots level
/// Is the bot a PMC
/// int
- private double? GetBackpackRoubleTotalByLevel(int botLevel, bool isPmc)
+ protected double? GetBackpackRoubleTotalByLevel(int botLevel, bool isPmc)
{
if (!isPmc)
{
@@ -368,7 +368,7 @@ public class BotLootGenerator(
///
///
///
- private HashSet GetAvailableContainersBotCanStoreItemsIn(BotBaseInventory botInventory)
+ protected HashSet GetAvailableContainersBotCanStoreItemsIn(BotBaseInventory botInventory)
{
HashSet result = [EquipmentSlots.Pockets];
@@ -390,7 +390,7 @@ public class BotLootGenerator(
///
/// Inventory to add items to
/// Role of bot (pmcBEAR/pmcUSEC)
- private void AddForcedMedicalItemsToPmcSecure(BotBaseInventory botInventory, string botRole)
+ protected void AddForcedMedicalItemsToPmcSecure(BotBaseInventory botInventory, string botRole)
{
// surv12
AddLootFromPool(
@@ -435,7 +435,7 @@ public class BotLootGenerator(
///
/// Total value of loot allowed in roubles
/// Is bot being generated for a pmc
- private void AddLootFromPool
+ protected void AddLootFromPool
(
Dictionary pool,
HashSet equipmentSlots,
@@ -663,7 +663,7 @@ public class BotLootGenerator(
///
/// Add generated weapons to inventory as loot
///
- ///
+ /// Session/Player id
/// Inventory to add preset to
/// Slot to place the preset in (backpack)
/// Bots template, assault.json
@@ -738,7 +738,7 @@ public class BotLootGenerator(
/// Bot type
///
/// true if item has reached spawn limit
- private bool ItemHasReachedSpawnLimit(TemplateItem? itemTemplate, string botRole, ItemSpawnLimitSettings? itemSpawnLimits)
+ protected bool ItemHasReachedSpawnLimit(TemplateItem? itemTemplate, string botRole, ItemSpawnLimitSettings? itemSpawnLimits)
{
// PMCs and scavs have different sections of bot config for spawn limits
if (itemSpawnLimits is not null && itemSpawnLimits.GlobalLimits?.Count == 0)
diff --git a/Libraries/Core/Generators/BotWeaponGenerator.cs b/Libraries/Core/Generators/BotWeaponGenerator.cs
index 310bbcd5..efb65a01 100644
--- a/Libraries/Core/Generators/BotWeaponGenerator.cs
+++ b/Libraries/Core/Generators/BotWeaponGenerator.cs
@@ -40,7 +40,7 @@ public class BotWeaponGenerator(
protected PmcConfig _pmcConfig = _configServer.GetConfig();
protected RepairConfig _repairConfig = _configServer.GetConfig();
- private static List MagGenSetUp(IEnumerable components)
+ protected static List MagGenSetUp(IEnumerable components)
{
var inventoryMagGens = components.ToList();
inventoryMagGens.Sort((a, b) => a.GetPriority() - b.GetPriority());
diff --git a/Libraries/Core/Generators/LocationLootGenerator.cs b/Libraries/Core/Generators/LocationLootGenerator.cs
index 5c19982e..a6193699 100644
--- a/Libraries/Core/Generators/LocationLootGenerator.cs
+++ b/Libraries/Core/Generators/LocationLootGenerator.cs
@@ -978,7 +978,7 @@ public class LocationLootGenerator(
}
}
- private ContainerItem CreateDynamicLootItem(string? chosenComposedKey, List
- items, Dictionary> staticAmmoDist)
+ protected ContainerItem CreateDynamicLootItem(string? chosenComposedKey, List
- items, Dictionary> staticAmmoDist)
{
var chosenItem = items.FirstOrDefault(item => item.Id == chosenComposedKey);
var chosenTpl = chosenItem?.Template;
@@ -1168,7 +1168,7 @@ public class LocationLootGenerator(
};
}
- private List
- GetArmorItems(string chosenTpl, Item? rootItem, List
- items, TemplateItem armorDbTemplate)
+ protected List
- GetArmorItems(string chosenTpl, Item? rootItem, List
- items, TemplateItem armorDbTemplate)
{
var defaultPreset = _presetHelper.GetDefaultPreset(chosenTpl);
if (defaultPreset is not null)
@@ -1196,7 +1196,7 @@ public class LocationLootGenerator(
return items;
}
- private Item? CreateWeaponItems(string chosenTpl, Dictionary> staticAmmoDist, string? parentId, ref List
- items)
+ protected Item? CreateWeaponItems(string chosenTpl, Dictionary> staticAmmoDist, string? parentId, ref List
- items)
{
Item? rootItem;
List
- children = [];
@@ -1309,7 +1309,7 @@ public class LocationLootGenerator(
return rootItem;
}
- private void GenerateStaticMagazineItem(Dictionary> staticAmmoDist, Item? rootItem, TemplateItem itemTemplate,
+ protected void GenerateStaticMagazineItem(Dictionary> staticAmmoDist, Item? rootItem, TemplateItem itemTemplate,
List
- items)
{
List
- magazineWithCartridges = [rootItem];
diff --git a/Libraries/Core/Generators/LootGenerator.cs b/Libraries/Core/Generators/LootGenerator.cs
index 7777bf12..5fe1f2f4 100644
--- a/Libraries/Core/Generators/LootGenerator.cs
+++ b/Libraries/Core/Generators/LootGenerator.cs
@@ -299,7 +299,7 @@ public class LootGenerator(
///
/// limits as defined in config
/// record, key: item tplId, value: current/max item count allowed
- private Dictionary InitItemLimitCounter(Dictionary limits)
+ protected Dictionary InitItemLimitCounter(Dictionary limits)
{
var itemTypeCounts = new Dictionary();
foreach (var itemTypeId in limits)
diff --git a/Libraries/Core/Generators/PMCLootGenerator.cs b/Libraries/Core/Generators/PMCLootGenerator.cs
index d9330fc0..a923a028 100644
--- a/Libraries/Core/Generators/PMCLootGenerator.cs
+++ b/Libraries/Core/Generators/PMCLootGenerator.cs
@@ -106,7 +106,7 @@ public class PMCLootGenerator
return _pocketLootPool;
}
- private HashSet GetLootBlacklist()
+ protected HashSet GetLootBlacklist()
{
var blacklist = new HashSet();
blacklist.UnionWith(_pmcConfig.PocketLoot.Blacklist);
diff --git a/Libraries/Core/Generators/RepeatableQuestRewardGenerator.cs b/Libraries/Core/Generators/RepeatableQuestRewardGenerator.cs
index d4022c46..31c15ecc 100644
--- a/Libraries/Core/Generators/RepeatableQuestRewardGenerator.cs
+++ b/Libraries/Core/Generators/RepeatableQuestRewardGenerator.cs
@@ -215,7 +215,7 @@ public class RepeatableQuestRewardGenerator(
return rewards;
}
- private QuestRewardValues GetQuestRewardValues(RewardScaling? rewardScaling, double? difficulty, int pmcLevel)
+ protected QuestRewardValues GetQuestRewardValues(RewardScaling? rewardScaling, double? difficulty, int pmcLevel)
{
// difficulty could go from 0.2 ... -> for lowest difficulty receive 0.2*nominal reward
var levelsConfig = rewardScaling.Levels;
@@ -264,7 +264,7 @@ public class RepeatableQuestRewardGenerator(
};
}
- private double GetRewardXp(double? effectiveDifficulty, int pmcLevel, List? levelsConfig,
+ protected double GetRewardXp(double? effectiveDifficulty, int pmcLevel, List? levelsConfig,
List? xpConfig, double? rewardSpreadConfig)
{
return Math.Floor(
@@ -275,7 +275,7 @@ public class RepeatableQuestRewardGenerator(
);
}
- private double GetGpCoinRewardCount(double? effectiveDifficulty, int pmcLevel, List? levelsConfig,
+ protected double GetGpCoinRewardCount(double? effectiveDifficulty, int pmcLevel, List? levelsConfig,
List? gpCoinConfig,
double? rewardSpreadConfig)
{
@@ -287,7 +287,7 @@ public class RepeatableQuestRewardGenerator(
);
}
- private double GetRewardRep(double? effectiveDifficulty, int pmcLevel, List? levelsConfig,
+ protected double GetRewardRep(double? effectiveDifficulty, int pmcLevel, List? levelsConfig,
List? reputationConfig,
double? rewardSpreadConfig)
{
@@ -301,12 +301,12 @@ public class RepeatableQuestRewardGenerator(
100;
}
- private int GetRewardNumItems(int pmcLevel, List? levelsConfig, List? itemsConfig)
+ protected int GetRewardNumItems(int pmcLevel, List? levelsConfig, List? itemsConfig)
{
return _randomUtil.RandInt(1, (int) Math.Round(_mathUtil.Interp1(pmcLevel, levelsConfig, itemsConfig) ?? 0) + 1);
}
- private double GetRewardRoubles(double? effectiveDifficulty, int pmcLevel, List? levelsConfig,
+ protected double GetRewardRoubles(double? effectiveDifficulty, int pmcLevel, List? levelsConfig,
List? roublesConfig,
double? rewardSpreadConfig)
{
@@ -318,7 +318,7 @@ public class RepeatableQuestRewardGenerator(
);
}
- private Dictionary GetRewardableItemsFromPoolWithinBudget(List itemPool,
+ protected Dictionary GetRewardableItemsFromPoolWithinBudget(List itemPool,
int maxItemCount, double itemRewardBudget, RepeatableQuestConfig repeatableConfig)
{
var itemsToReturn = new Dictionary();
@@ -404,7 +404,7 @@ public class RepeatableQuestRewardGenerator(
* @param rewardNumItems
* @returns Count that fits budget (min 1)
*/
- private int CalculateAmmoStackSizeThatFitsBudget(TemplateItem itemSelected, double roublesBudget,
+ protected int CalculateAmmoStackSizeThatFitsBudget(TemplateItem itemSelected, double roublesBudget,
int rewardNumItems)
{
// Calculate budget per reward item
@@ -422,7 +422,7 @@ public class RepeatableQuestRewardGenerator(
return (int) Math.Max(1, Math.Min(stackSizeThatFitsBudget, stackMaxCount));
}
- private bool CanIncreaseRewardItemStackSize(TemplateItem item, int maxRoublePriceToStack,
+ protected bool CanIncreaseRewardItemStackSize(TemplateItem item, int maxRoublePriceToStack,
int randomChanceToPass = 100)
{
var isEligibleForStackSizeIncrease =
@@ -445,7 +445,7 @@ public class RepeatableQuestRewardGenerator(
* @param item Reward item to get stack size for
* @returns matching stack size for the passed in items price
*/
- private int GetRandomisedRewardItemStackSizeByPrice(TemplateItem item)
+ protected int GetRandomisedRewardItemStackSizeByPrice(TemplateItem item)
{
var rewardItemPrice = _presetHelper.GetDefaultPresetOrItemPrice(item.Id);
@@ -474,7 +474,7 @@ public class RepeatableQuestRewardGenerator(
* @param traderId Id of the trader who will give player reward
* @returns Array of reward items that fit budget
*/
- private List ChooseRewardItemsWithinBudget(RepeatableQuestConfig repeatableConfig,
+ protected List ChooseRewardItemsWithinBudget(RepeatableQuestConfig repeatableConfig,
double? roublesBudget, string traderId)
{
// First filter for type and baseclass to avoid lookup in handbook for non-available items
@@ -515,7 +515,7 @@ public class RepeatableQuestRewardGenerator(
* @param minPrice The minimum priced item to include
* @returns True if any items remain in `rewardItems`, false otherwise
*/
- private List FilterRewardPoolWithinBudget(List rewardItems, double roublesBudget,
+ protected List FilterRewardPoolWithinBudget(List rewardItems, double roublesBudget,
double minPrice)
{
return rewardItems.Where(
@@ -528,7 +528,7 @@ public class RepeatableQuestRewardGenerator(
.ToList();
}
- private KeyValuePair? GetRandomWeaponPresetWithinBudget(double roublesBudget, int rewardIndex)
+ protected KeyValuePair? GetRandomWeaponPresetWithinBudget(double roublesBudget, int rewardIndex)
{
// Add a random default preset weapon as reward
var defaultPresetPool = new ExhaustableArray(
@@ -652,7 +652,7 @@ public class RepeatableQuestRewardGenerator(
return questRewardItem;
}
- private Reward GetMoneyReward(string traderId, double rewardRoubles, int rewardIndex)
+ protected Reward GetMoneyReward(string traderId, double rewardRoubles, int rewardIndex)
{
// Determine currency based on trader
// PK and Fence use Euros, everyone else is Roubles
@@ -720,7 +720,7 @@ public class RepeatableQuestRewardGenerator(
* @param {string} tpl template id of item to check
* @returns True if item is valid reward
*/
- private bool IsValidRewardItem(string tpl, RepeatableQuestConfig repeatableQuestConfig,
+ protected bool IsValidRewardItem(string tpl, RepeatableQuestConfig repeatableQuestConfig,
List? itemBaseWhitelist = null)
{
// Return early if not valid item to give as reward
diff --git a/Libraries/Core/Helpers/BotGeneratorHelper.cs b/Libraries/Core/Helpers/BotGeneratorHelper.cs
index 88ead939..ba4622bf 100644
--- a/Libraries/Core/Helpers/BotGeneratorHelper.cs
+++ b/Libraries/Core/Helpers/BotGeneratorHelper.cs
@@ -193,7 +193,7 @@ public class BotGeneratorHelper(
/// Max resource value of medical items
/// Value provided from config
/// Randomized value from maxHpResource
- private double GetRandomizedResourceValue(double maxResource, RandomisedResourceValues? randomizationValues)
+ protected double GetRandomizedResourceValue(double maxResource, RandomisedResourceValues? randomizationValues)
{
if (randomizationValues is null)
{
@@ -218,7 +218,7 @@ public class BotGeneratorHelper(
/// the setting of the weapon attachment/helmet equipment to be activated
/// default value for the chance of activation if the botrole or bot equipment role is undefined
/// Percent chance to be active
- private double? GetBotEquipmentSettingFromConfig(string? botRole, string setting, double defaultValue)
+ protected double? GetBotEquipmentSettingFromConfig(string? botRole, string setting, double defaultValue)
{
if (botRole is null)
{
@@ -273,7 +273,7 @@ public class BotGeneratorHelper(
/// weapon object being generated for
/// type of bot being generated for
/// Repairable object
- private UpdRepairable GenerateWeaponRepairableProperties(TemplateItem itemTemplate, string? botRole = null)
+ protected UpdRepairable GenerateWeaponRepairableProperties(TemplateItem itemTemplate, string? botRole = null)
{
var maxDurability = _durabilityLimitsHelper.GetRandomizedMaxWeaponDurability(itemTemplate, botRole);
var currentDurability = _durabilityLimitsHelper.GetRandomizedWeaponDurability(
@@ -295,7 +295,7 @@ public class BotGeneratorHelper(
/// weapon object being generated for
/// type of bot being generated for
/// Repairable object
- private UpdRepairable GenerateArmorRepairableProperties(TemplateItem itemTemplate, string? botRole = null)
+ protected UpdRepairable GenerateArmorRepairableProperties(TemplateItem itemTemplate, string? botRole = null)
{
double maxDurability;
double currentDurability;
@@ -724,7 +724,7 @@ public class BotGeneratorHelper(
/// Items sub-grid we want to place item inside
/// Item tpl being placed
/// True if allowed
- private bool ItemAllowedInContainer(Grid? slotGrid, string? itemTpl)
+ protected bool ItemAllowedInContainer(Grid? slotGrid, string? itemTpl)
{
var propFilters = slotGrid?.Props?.Filters;
var excludedFilter = propFilters?.FirstOrDefault()?.ExcludedFilter ?? [];
diff --git a/Libraries/Core/Helpers/ContainerHelper.cs b/Libraries/Core/Helpers/ContainerHelper.cs
index 7b943bb0..98ca55a6 100644
--- a/Libraries/Core/Helpers/ContainerHelper.cs
+++ b/Libraries/Core/Helpers/ContainerHelper.cs
@@ -66,7 +66,7 @@ public class ContainerHelper
return new FindSlotResult(false);
}
- private bool ItemBiggerThan1X1(int itemWidth, int itemHeight)
+ protected static bool ItemBiggerThan1X1(int itemWidth, int itemHeight)
{
return itemWidth * itemHeight > 1;
}
diff --git a/Libraries/Core/Helpers/Dialogue/AbstractDialogChatBot.cs b/Libraries/Core/Helpers/Dialogue/AbstractDialogChatBot.cs
index badecb68..798a05a1 100644
--- a/Libraries/Core/Helpers/Dialogue/AbstractDialogChatBot.cs
+++ b/Libraries/Core/Helpers/Dialogue/AbstractDialogChatBot.cs
@@ -50,7 +50,7 @@ public abstract class AbstractDialogChatBot(
return null;
}
- private string? SendPlayerHelpMessage(string sessionId, SendMessageRequest request)
+ protected string? SendPlayerHelpMessage(string sessionId, SendMessageRequest request)
{
_mailSendService.SendUserMessageToPlayer(
sessionId,
diff --git a/Libraries/Core/Helpers/Dialogue/SptDialogueChatBot.cs b/Libraries/Core/Helpers/Dialogue/SptDialogueChatBot.cs
index 1d82345d..852adb17 100644
--- a/Libraries/Core/Helpers/Dialogue/SptDialogueChatBot.cs
+++ b/Libraries/Core/Helpers/Dialogue/SptDialogueChatBot.cs
@@ -73,7 +73,7 @@ public class SptDialogueChatBot(
return request.DialogId;
}
- private static List ChatMessageHandlerSetup(IEnumerable components)
+ protected static List ChatMessageHandlerSetup(IEnumerable components)
{
var chatMessageHandlers = components.ToList();
chatMessageHandlers.Sort((a, b) => a.GetPriority() - b.GetPriority());
@@ -81,12 +81,12 @@ public class SptDialogueChatBot(
return chatMessageHandlers;
}
- private string GetUnrecognizedCommandMessage()
+ protected string GetUnrecognizedCommandMessage()
{
return "Unknown command.";
}
- private string? SendPlayerHelpMessage(string sessionId, SendMessageRequest request)
+ protected string? SendPlayerHelpMessage(string sessionId, SendMessageRequest request)
{
_mailSendService.SendUserMessageToPlayer(
sessionId,
diff --git a/Libraries/Core/Helpers/DialogueHelper.cs b/Libraries/Core/Helpers/DialogueHelper.cs
index 5b605e3b..aac1433a 100644
--- a/Libraries/Core/Helpers/DialogueHelper.cs
+++ b/Libraries/Core/Helpers/DialogueHelper.cs
@@ -54,7 +54,7 @@ public class DialogueHelper(
/// Get the item contents for a particular message.
///
///
- ///
+ /// Session/player id
/// Item being moved to inventory
///
public List
- GetMessageItemContents(string messageID, string sessionID, string itemId)
diff --git a/Libraries/Core/Helpers/DurabilityLimitsHelper.cs b/Libraries/Core/Helpers/DurabilityLimitsHelper.cs
index f7100718..9aa3e8ae 100644
--- a/Libraries/Core/Helpers/DurabilityLimitsHelper.cs
+++ b/Libraries/Core/Helpers/DurabilityLimitsHelper.cs
@@ -76,11 +76,11 @@ public class DurabilityLimitsHelper(
}
///
- /// Convert a botrole into a durability role used for looking up durability values with
+ /// Convert a bots role into a durability role used for looking up durability values with
///
/// Role to convert
///
- private string GetDurabilityRole(string? botRole)
+ protected string GetDurabilityRole(string? botRole)
{
if (botRole is null)
{
diff --git a/Libraries/Core/Helpers/InventoryHelper.cs b/Libraries/Core/Helpers/InventoryHelper.cs
index bbc482b7..d9d64f29 100644
--- a/Libraries/Core/Helpers/InventoryHelper.cs
+++ b/Libraries/Core/Helpers/InventoryHelper.cs
@@ -366,7 +366,7 @@ public class InventoryHelper(
}
catch (Exception ex)
{
- handleContainerPlacementError(ex.Message, output);
+ HandleContainerPlacementError(ex.Message, output);
return;
}
@@ -408,7 +408,7 @@ public class InventoryHelper(
}
catch (Exception ex)
{
- handleContainerPlacementError(ex.Message, output);
+ HandleContainerPlacementError(ex.Message, output);
return;
}
@@ -433,7 +433,7 @@ public class InventoryHelper(
}
}
- private void handleContainerPlacementError(string errorText, ItemEventRouterResponse output)
+ protected void HandleContainerPlacementError(string errorText, ItemEventRouterResponse output)
{
_logger.Error(_localisationService.GetText("inventory-fill_container_failed", errorText));
@@ -1290,7 +1290,7 @@ public class InventoryHelper(
return IsParentInStash(itemToCheck.Id, pmcData);
}
- private bool IsParentInStash(string itemId, PmcData pmcData)
+ protected static bool IsParentInStash(string itemId, PmcData pmcData)
{
// Item not found / has no parent
var item = pmcData.Inventory.Items.FirstOrDefault(item => item.Id == itemId);
diff --git a/Libraries/Core/Helpers/NotificationSendHelper.cs b/Libraries/Core/Helpers/NotificationSendHelper.cs
index cf615ff9..ff6c5ed7 100644
--- a/Libraries/Core/Helpers/NotificationSendHelper.cs
+++ b/Libraries/Core/Helpers/NotificationSendHelper.cs
@@ -21,7 +21,7 @@ public class NotificationSendHelper(
///
/// Send notification message to the appropriate channel
///
- ///
+ /// Session/player id
///
public void SendMessage(string sessionID, WsNotificationEvent notificationMessage)
{
diff --git a/Libraries/Core/Helpers/ProfileHelper.cs b/Libraries/Core/Helpers/ProfileHelper.cs
index 49649b9a..89691990 100644
--- a/Libraries/Core/Helpers/ProfileHelper.cs
+++ b/Libraries/Core/Helpers/ProfileHelper.cs
@@ -61,7 +61,7 @@ public class ProfileHelper(
///
/// Get the pmc and scav profiles as an array by profile id
///
- ///
+ /// Session/Player id
/// Array of PmcData objects
public List GetCompleteProfile(string sessionId)
{
diff --git a/Libraries/Core/Services/NotificationService.cs b/Libraries/Core/Services/NotificationService.cs
index 81593563..c4acb587 100644
--- a/Libraries/Core/Services/NotificationService.cs
+++ b/Libraries/Core/Services/NotificationService.cs
@@ -52,7 +52,7 @@ public class NotificationService
///
/// Get message queue for session
///
- ///
+ /// Session/player id
public List Get(string sessionID)
{
if (sessionID is null)
diff --git a/Libraries/Core/Services/RepairService.cs b/Libraries/Core/Services/RepairService.cs
index f9191348..0dc9aad1 100644
--- a/Libraries/Core/Services/RepairService.cs
+++ b/Libraries/Core/Services/RepairService.cs
@@ -122,7 +122,7 @@ public class RepairService(
/// Repaired item id
/// Cost to repair item in roubles
/// Id of the trader who repaired the item / who is paid
- ///
+ /// Client response
public void PayForRepair(
string sessionID,
PmcData pmcData,