From 906d96a22d999773fe191e9fc0c611e6c5327d09 Mon Sep 17 00:00:00 2001 From: CWX Date: Tue, 7 Mar 2023 19:45:26 +0000 Subject: [PATCH] update for 3.5.1 --- .gitignore | 3 + Live/CWX_BushWhacker/BushWhacker.cs | 2 +- .../bepInEx/plugins/CWX-BushWhacker.dll | Bin 6144 -> 6144 bytes Live/CWX_BushWhacker/CWX_BushWhacker.csproj | 2 +- .../ColourAdderPatcher.cs | 52 ++++++------- .../bepInEx/plugins/CWX-DeSharpener.dll | Bin 5120 -> 5120 bytes Live/CWX_DeSharpener/CWX_DeSharpener.csproj | 2 +- Live/CWX_DeSharpener/DeSharpener.cs | 2 +- .../BepInEx/plugins/CWX_DebuggingTool.dll | Bin 0 -> 10752 bytes .../bepInEx/plugins/CWX-MasterKey.dll | Bin 8704 -> 8704 bytes .../mods/CWX-MasterKey 1.4.2}/LICENSE.txt | 0 .../mods/CWX-MasterKey 1.4.2}/package.json | 16 ++-- .../mods/CWX-MasterKey 1.4.2}/src/config.json | 0 .../user/mods/CWX-MasterKey 1.4.2}/src/mod.ts | 0 Live/CWX_MasterKey/CWX_MasterKey.csproj | 2 +- Live/CWX_MasterKey/MasterKey.cs | 2 +- Live/CWX_MasterKey/server/dist/package.json | 16 ++-- Live/CWX_MasterKey/server/package.json | 16 ++-- .../server/types/callbacks/GameCallbacks.d.ts | 1 + .../types/callbacks/ProfileCallbacks.d.ts | 2 + .../types/callbacks/TraderCallbacks.d.ts | 7 +- .../types/context/ApplicationContext.d.ts | 2 + .../types/controllers/GameController.d.ts | 9 ++- .../types/controllers/InraidController.d.ts | 14 ++-- .../controllers/InventoryController.d.ts | 42 +++++++++- .../types/controllers/ProfileController.d.ts | 6 +- .../types/controllers/QuestController.d.ts | 16 ++-- .../RepeatableQuestController.d.ts | 18 +++-- .../types/controllers/TradeController.d.ts | 5 +- .../types/controllers/TraderController.d.ts | 14 ++-- .../generators/BotEquipmentModGenerator.d.ts | 4 +- .../server/types/generators/BotGenerator.d.ts | 4 +- .../types/generators/BotLootGenerator.d.ts | 19 +---- .../types/generators/BotWeaponGenerator.d.ts | 21 ++--- .../types/generators/LocationGenerator.d.ts | 33 +++++++- .../types/generators/PMCLootGenerator.d.ts | 14 ++++ .../server/types/helpers/AssortHelper.d.ts | 19 ++++- .../helpers/BotWeaponGeneratorHelper.d.ts | 6 +- .../server/types/helpers/HideoutHelper.d.ts | 15 +++- .../server/types/helpers/InRaidHelper.d.ts | 29 +++++-- .../server/types/helpers/InventoryHelper.d.ts | 12 ++- .../server/types/helpers/ItemHelper.d.ts | 42 +++++++--- .../server/types/helpers/ProfileHelper.d.ts | 7 +- .../server/types/helpers/QuestHelper.d.ts | 11 ++- .../types/helpers/RagfairOfferHelper.d.ts | 17 +++- .../server/types/helpers/TraderHelper.d.ts | 73 +----------------- .../types/loaders/PostAkiModLoader.d.ts | 6 +- .../server/types/loaders/PostDBModLoader.d.ts | 6 +- .../types/models/eft/common/IGlobals.d.ts | 6 ++ .../types/models/eft/common/ILooseLoot.d.ts | 10 +-- .../models/eft/common/tables/IBotBase.d.ts | 4 +- .../models/eft/common/tables/IQuest.d.ts | 2 +- .../eft/hideout/IHideoutProduction.d.ts | 1 + .../eft/match/IEndOfflineRaidRequestData.d.ts | 2 +- .../IGetRaidConfigurationRequestData.d.ts | 4 +- .../IPresetBuildActionRequestData.d.ts | 12 +-- .../profile/IGetProfileSettingsRequest.d.ts | 3 + .../types/models/enums/ConfigTypes.d.ts | 3 +- .../spt/callbacks/ITraderCallbacks.d.ts | 3 +- .../types/models/spt/config/IHttpConfig.d.ts | 1 + .../models/spt/config/ILocationConfig.d.ts | 21 ++++- .../models/spt/config/ILostOnDeathConfig.d.ts | 21 +++++ .../types/models/spt/config/IPmcConfig.d.ts | 8 +- .../types/models/spt/config/IQuestConfig.d.ts | 16 ++-- .../models/spt/config/IRagfairConfig.d.ts | 2 + .../models/spt/config/ITraderConfig.d.ts | 3 +- .../types/models/spt/mod/NewItemDetails.d.ts | 2 + .../types/services/InsuranceService.d.ts | 10 ++- .../BepInEx/plugins/CWX-WeatherPatcher.dll | Bin 6656 -> 6656 bytes .../CWX_WeatherPatcher.csproj | 2 +- Live/CWX_WeatherPatcher/WeatherPatcher.cs | 2 +- 71 files changed, 459 insertions(+), 268 deletions(-) rename Live/CWX_BushWhacker/{CWX-BushWhacker 1.2.9 => CWX-BushWhacker 1.3.0}/bepInEx/plugins/CWX-BushWhacker.dll (88%) rename Live/CWX_DeSharpener/{CWX-DeSharpener 1.4.9 => CWX-DeSharpener 1.5.0}/bepInEx/plugins/CWX-DeSharpener.dll (85%) create mode 100644 Live/CWX_DebuggingTool/CWX_DebuggingTool 1.0.0/BepInEx/plugins/CWX_DebuggingTool.dll rename Live/CWX_MasterKey/{CWX_MasterKey 1.4.1 => CWX_MasterKey 1.4.2}/bepInEx/plugins/CWX-MasterKey.dll (75%) rename Live/CWX_MasterKey/{CWX_MasterKey 1.4.1/user/mods/CWX-MasterKey 1.4.1 => CWX_MasterKey 1.4.2/user/mods/CWX-MasterKey 1.4.2}/LICENSE.txt (100%) rename Live/CWX_MasterKey/{CWX_MasterKey 1.4.1/user/mods/CWX-MasterKey 1.4.1 => CWX_MasterKey 1.4.2/user/mods/CWX-MasterKey 1.4.2}/package.json (52%) rename Live/CWX_MasterKey/{CWX_MasterKey 1.4.1/user/mods/CWX-MasterKey 1.4.1 => CWX_MasterKey 1.4.2/user/mods/CWX-MasterKey 1.4.2}/src/config.json (100%) rename Live/CWX_MasterKey/{CWX_MasterKey 1.4.1/user/mods/CWX-MasterKey 1.4.1 => CWX_MasterKey 1.4.2/user/mods/CWX-MasterKey 1.4.2}/src/mod.ts (100%) create mode 100644 Live/CWX_MasterKey/server/types/models/eft/profile/IGetProfileSettingsRequest.d.ts create mode 100644 Live/CWX_MasterKey/server/types/models/spt/config/ILostOnDeathConfig.d.ts rename Live/CWX_WeatherPatcher/{CWX_WeatherPatcher 2.4.9 => CWX_WeatherPatcher 2.5.0}/BepInEx/plugins/CWX-WeatherPatcher.dll (87%) diff --git a/.gitignore b/.gitignore index f6bbe44..aa94aee 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,9 @@ bin/ obj/ *.editorconfig +## Rider +.idea + ## visual studio .vs .idea diff --git a/Live/CWX_BushWhacker/BushWhacker.cs b/Live/CWX_BushWhacker/BushWhacker.cs index 396089b..9333974 100644 --- a/Live/CWX_BushWhacker/BushWhacker.cs +++ b/Live/CWX_BushWhacker/BushWhacker.cs @@ -5,7 +5,7 @@ using UnityEngine; namespace CWX_BushWhacker { - [BepInPlugin("com.cwx.bushwhacker", "cwx-bushwhacker", "1.2.9")] + [BepInPlugin("com.cwx.bushwhacker", "cwx-bushwhacker", "1.3.0")] public class BushWhacker : BaseUnityPlugin { public void Start() diff --git a/Live/CWX_BushWhacker/CWX-BushWhacker 1.2.9/bepInEx/plugins/CWX-BushWhacker.dll b/Live/CWX_BushWhacker/CWX-BushWhacker 1.3.0/bepInEx/plugins/CWX-BushWhacker.dll similarity index 88% rename from Live/CWX_BushWhacker/CWX-BushWhacker 1.2.9/bepInEx/plugins/CWX-BushWhacker.dll rename to Live/CWX_BushWhacker/CWX-BushWhacker 1.3.0/bepInEx/plugins/CWX-BushWhacker.dll index 8554c385a4cc947001874cb12a089ab4e81b108b..5ba10f45986a8a0024de1ce6adf3ad809c0bd63a 100644 GIT binary patch delta 197 zcmZoLXfT-2!4iJu#mbF6RqV{n3=Eq&Id-!O%x0?nc4}(2)5M6`*6%l8k=lHPcNU|7 zv7UjR0RsaUBLl0U9*{G+j^B_MNHc(enSAp8$$R(%1ipzSU7C`p>$hT_$`r#C-fNR( z1df_yMRplbW|zm+{tY*9F1vG+~i=6M3I82OnQ7{O*i>CMxHJQ-Py8T1$oHa`{C RhcYKiit0lJeML7j0RT;CJJSFF delta 197 zcmZoLXfT-2!7_cp?Bf1JbeW3Wa_Lj*q z0!a!`!Cp3~AW*gBL0Mr3-n^n&ZU3&#-#ky?6(c_r10&EZP6jBwdAg7%BdZaE9)soP Tr^5PB=444xeW;+X=w>DWOB*~9 diff --git a/Live/CWX_BushWhacker/CWX_BushWhacker.csproj b/Live/CWX_BushWhacker/CWX_BushWhacker.csproj index dd35d40..d3f2433 100644 --- a/Live/CWX_BushWhacker/CWX_BushWhacker.csproj +++ b/Live/CWX_BushWhacker/CWX_BushWhacker.csproj @@ -3,7 +3,7 @@ net472 CWX-BushWhacker - 1.2.9 + 1.3.0 diff --git a/Live/CWX_ColourAdderPatcher/ColourAdderPatcher.cs b/Live/CWX_ColourAdderPatcher/ColourAdderPatcher.cs index 4238ff4..0159369 100644 --- a/Live/CWX_ColourAdderPatcher/ColourAdderPatcher.cs +++ b/Live/CWX_ColourAdderPatcher/ColourAdderPatcher.cs @@ -1,27 +1,27 @@ -using System.Reflection; -using System; -using System.Collections.Generic; -using System.Linq; -using Aki.Reflection.Patching; -using Aki.Reflection.Utils; -using BepInEx; -using EFT; -using Comfort.Common; -using JsonType; -using UnityEngine; - -namespace CWX_ColourAdderPatcher -{ - [BepInPlugin("com.cwx.ColourAdder", "cwx-ColourAdder", "1.0.0")] - public class ColourAdderPatcher : BaseUnityPlugin - { - public void Start() - { - var type = PatchConstants.EftTypes.Single(x => x.Name == "GClass1179") - .GetField("dictionary_0"); - // get field with name of dictionary_0 add custom - // dictionary.Add(TaxonomyColor.yellow, new Color32(104, 102, 40, byte.MaxValue)); - } - } -} +// using System.Reflection; +// using System; +// using System.Collections.Generic; +// using System.Linq; +// using Aki.Reflection.Patching; +// using Aki.Reflection.Utils; +// using BepInEx; +// using EFT; +// using Comfort.Common; +// using JsonType; +// using UnityEngine; +// +// namespace CWX_ColourAdderPatcher +// { +// [BepInPlugin("com.cwx.ColourAdder", "cwx-ColourAdder", "1.0.0")] +// public class ColourAdderPatcher : BaseUnityPlugin +// { +// public void Start() +// { +// var type = PatchConstants.EftTypes.Single(x => x.Name == "GClass1179") +// .GetField("dictionary_0"); +// // get field with name of dictionary_0 add custom +// // dictionary.Add(TaxonomyColor.yellow, new Color32(104, 102, 40, byte.MaxValue)); +// } +// } +// } diff --git a/Live/CWX_DeSharpener/CWX-DeSharpener 1.4.9/bepInEx/plugins/CWX-DeSharpener.dll b/Live/CWX_DeSharpener/CWX-DeSharpener 1.5.0/bepInEx/plugins/CWX-DeSharpener.dll similarity index 85% rename from Live/CWX_DeSharpener/CWX-DeSharpener 1.4.9/bepInEx/plugins/CWX-DeSharpener.dll rename to Live/CWX_DeSharpener/CWX-DeSharpener 1.5.0/bepInEx/plugins/CWX-DeSharpener.dll index 73ed681303cf4b763daf156ab81c1091acae13e1..b495f020cd63c5972d298cc270be30c39b5528b8 100644 GIT binary patch delta 199 zcmZqBXwaC@!Lp)^XU)bQF;-?)28PW`S@~H6R+(2Ad~@F6w{C8PzoNnRz|BWE6&M9f z^$he37#O%18CVVVfSk!+xD5G$Gy@bIZ(Dd^vI%#9zyVdhSz>ip{CbnN@+>*m+B10y zcaj2B@SiVK5Tv?t>AO#b{{oYAb|22!EXGsB#LvpW2sRB$Z=TNQ$;fKTpvPda`6<6X QlsQ>aP#-GjE4Y~n0JvB@X#fBK delta 199 zcmZqBXwaC@!E*hjV)MoxF;-?42F}e(S@~H6w%j_bkb1n#XVw4E)NB8RyEY%;RA3Y^ z(X-SuU|`^4WMDPa19B#R;WFe0(hN{Au|n|kWE1WH0j(o5GCsN%`Yuo8KXxVm{i4ZJ zxRVs1g1qWbL7?j54x@>ZZACoU!GAUPZWiMyV&Z3EU<8`R$pED{Pv`SwWHn*XW3b%( TlwTjpoGdA*4;Azk+{^?3+AlnN diff --git a/Live/CWX_DeSharpener/CWX_DeSharpener.csproj b/Live/CWX_DeSharpener/CWX_DeSharpener.csproj index 35c70d2..4b590b5 100644 --- a/Live/CWX_DeSharpener/CWX_DeSharpener.csproj +++ b/Live/CWX_DeSharpener/CWX_DeSharpener.csproj @@ -2,7 +2,7 @@ net472 - 1.4.9 + 1.5.0 CWX-DeSharpener diff --git a/Live/CWX_DeSharpener/DeSharpener.cs b/Live/CWX_DeSharpener/DeSharpener.cs index 7d41482..97d547e 100644 --- a/Live/CWX_DeSharpener/DeSharpener.cs +++ b/Live/CWX_DeSharpener/DeSharpener.cs @@ -2,7 +2,7 @@ namespace CWX_DeSharpener { - [BepInPlugin("com.CWX.DeSharpener", "CWX-DeSharpener", "1.4.9")] + [BepInPlugin("com.CWX.DeSharpener", "CWX-DeSharpener", "1.5.0")] public class DeSharpener : BaseUnityPlugin { private void Awake() diff --git a/Live/CWX_DebuggingTool/CWX_DebuggingTool 1.0.0/BepInEx/plugins/CWX_DebuggingTool.dll b/Live/CWX_DebuggingTool/CWX_DebuggingTool 1.0.0/BepInEx/plugins/CWX_DebuggingTool.dll new file mode 100644 index 0000000000000000000000000000000000000000..41f789c76edea3e5101d65799e88f9ac1c647365 GIT binary patch literal 10752 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 delta 203 zcmZp0X>gg)!Lo9X=c|o9GuRm`C#!Op@&+@UV-R8pX4%ca#*jEUokNqcVe&){S;qFs z>p8?3b0;6?sAOcE?8vFfC^k8pb0?$yWK}LrM)}G9T+)ojo3pu;m?zKR?cp~xGO=KA zcg{&HE;cf@wA`%0m%<^iwB>2Kb;&lTEunR5uW3uI-aJR_3lodU&eJWEr$`0}oM*~x wzsdc|ece&UNT;{wKTZB38K(dhG=B#b1gS3j{l41PX8Koyu&9rli=_J40lSGzy8r+H diff --git a/Live/CWX_MasterKey/CWX_MasterKey 1.4.1/user/mods/CWX-MasterKey 1.4.1/LICENSE.txt b/Live/CWX_MasterKey/CWX_MasterKey 1.4.2/user/mods/CWX-MasterKey 1.4.2/LICENSE.txt similarity index 100% rename from Live/CWX_MasterKey/CWX_MasterKey 1.4.1/user/mods/CWX-MasterKey 1.4.1/LICENSE.txt rename to Live/CWX_MasterKey/CWX_MasterKey 1.4.2/user/mods/CWX-MasterKey 1.4.2/LICENSE.txt diff --git a/Live/CWX_MasterKey/CWX_MasterKey 1.4.1/user/mods/CWX-MasterKey 1.4.1/package.json b/Live/CWX_MasterKey/CWX_MasterKey 1.4.2/user/mods/CWX-MasterKey 1.4.2/package.json similarity index 52% rename from Live/CWX_MasterKey/CWX_MasterKey 1.4.1/user/mods/CWX-MasterKey 1.4.1/package.json rename to Live/CWX_MasterKey/CWX_MasterKey 1.4.2/user/mods/CWX-MasterKey 1.4.2/package.json index 40a0933..c3697fb 100644 --- a/Live/CWX_MasterKey/CWX_MasterKey 1.4.1/user/mods/CWX-MasterKey 1.4.1/package.json +++ b/Live/CWX_MasterKey/CWX_MasterKey 1.4.2/user/mods/CWX-MasterKey 1.4.2/package.json @@ -1,23 +1,23 @@ { "name": "MasterKey", "author": "CWX", - "version": "1.4.1", + "version": "1.4.2", "license": "NCSA", "main": "src/mod.js", - "akiVersion": "3.5.0", + "akiVersion": "3.5.1", "scripts": { "setup": "npm i", "build": "node ./packageBuild.ts" }, "devDependencies": { - "@types/node": "16.11.62", - "@typescript-eslint/eslint-plugin": "5.38.1", - "@typescript-eslint/parser": "5.38.1", + "@types/node": "16.18.10", + "@typescript-eslint/eslint-plugin": "5.46.1", + "@typescript-eslint/parser": "5.46.1", "bestzip": "2.2.1", - "eslint": "8.24.0", - "fs-extra": "10.1.0", + "eslint": "8.30.0", + "fs-extra": "11.1.0", "glob": "8.0.3", "tsyringe": "4.7.0", - "typescript": "4.8.4" + "typescript": "4.9.4" } } diff --git a/Live/CWX_MasterKey/CWX_MasterKey 1.4.1/user/mods/CWX-MasterKey 1.4.1/src/config.json b/Live/CWX_MasterKey/CWX_MasterKey 1.4.2/user/mods/CWX-MasterKey 1.4.2/src/config.json similarity index 100% rename from Live/CWX_MasterKey/CWX_MasterKey 1.4.1/user/mods/CWX-MasterKey 1.4.1/src/config.json rename to Live/CWX_MasterKey/CWX_MasterKey 1.4.2/user/mods/CWX-MasterKey 1.4.2/src/config.json diff --git a/Live/CWX_MasterKey/CWX_MasterKey 1.4.1/user/mods/CWX-MasterKey 1.4.1/src/mod.ts b/Live/CWX_MasterKey/CWX_MasterKey 1.4.2/user/mods/CWX-MasterKey 1.4.2/src/mod.ts similarity index 100% rename from Live/CWX_MasterKey/CWX_MasterKey 1.4.1/user/mods/CWX-MasterKey 1.4.1/src/mod.ts rename to Live/CWX_MasterKey/CWX_MasterKey 1.4.2/user/mods/CWX-MasterKey 1.4.2/src/mod.ts diff --git a/Live/CWX_MasterKey/CWX_MasterKey.csproj b/Live/CWX_MasterKey/CWX_MasterKey.csproj index 910a92b..d39a322 100644 --- a/Live/CWX_MasterKey/CWX_MasterKey.csproj +++ b/Live/CWX_MasterKey/CWX_MasterKey.csproj @@ -3,7 +3,7 @@ net472 CWX-MasterKey - 1.4.1 + 1.4.2 diff --git a/Live/CWX_MasterKey/MasterKey.cs b/Live/CWX_MasterKey/MasterKey.cs index 63ff50a..9262c94 100644 --- a/Live/CWX_MasterKey/MasterKey.cs +++ b/Live/CWX_MasterKey/MasterKey.cs @@ -2,7 +2,7 @@ namespace CWX_MasterKey { - [BepInPlugin("com.CWX.MasterKey", "CWX-MasterKey", "1.4.1")] + [BepInPlugin("com.CWX.MasterKey", "CWX-MasterKey", "1.4.2")] public class MasterKey : BaseUnityPlugin { private void Awake() diff --git a/Live/CWX_MasterKey/server/dist/package.json b/Live/CWX_MasterKey/server/dist/package.json index 40a0933..c3697fb 100644 --- a/Live/CWX_MasterKey/server/dist/package.json +++ b/Live/CWX_MasterKey/server/dist/package.json @@ -1,23 +1,23 @@ { "name": "MasterKey", "author": "CWX", - "version": "1.4.1", + "version": "1.4.2", "license": "NCSA", "main": "src/mod.js", - "akiVersion": "3.5.0", + "akiVersion": "3.5.1", "scripts": { "setup": "npm i", "build": "node ./packageBuild.ts" }, "devDependencies": { - "@types/node": "16.11.62", - "@typescript-eslint/eslint-plugin": "5.38.1", - "@typescript-eslint/parser": "5.38.1", + "@types/node": "16.18.10", + "@typescript-eslint/eslint-plugin": "5.46.1", + "@typescript-eslint/parser": "5.46.1", "bestzip": "2.2.1", - "eslint": "8.24.0", - "fs-extra": "10.1.0", + "eslint": "8.30.0", + "fs-extra": "11.1.0", "glob": "8.0.3", "tsyringe": "4.7.0", - "typescript": "4.8.4" + "typescript": "4.9.4" } } diff --git a/Live/CWX_MasterKey/server/package.json b/Live/CWX_MasterKey/server/package.json index 40a0933..c3697fb 100644 --- a/Live/CWX_MasterKey/server/package.json +++ b/Live/CWX_MasterKey/server/package.json @@ -1,23 +1,23 @@ { "name": "MasterKey", "author": "CWX", - "version": "1.4.1", + "version": "1.4.2", "license": "NCSA", "main": "src/mod.js", - "akiVersion": "3.5.0", + "akiVersion": "3.5.1", "scripts": { "setup": "npm i", "build": "node ./packageBuild.ts" }, "devDependencies": { - "@types/node": "16.11.62", - "@typescript-eslint/eslint-plugin": "5.38.1", - "@typescript-eslint/parser": "5.38.1", + "@types/node": "16.18.10", + "@typescript-eslint/eslint-plugin": "5.46.1", + "@typescript-eslint/parser": "5.46.1", "bestzip": "2.2.1", - "eslint": "8.24.0", - "fs-extra": "10.1.0", + "eslint": "8.30.0", + "fs-extra": "11.1.0", "glob": "8.0.3", "tsyringe": "4.7.0", - "typescript": "4.8.4" + "typescript": "4.9.4" } } diff --git a/Live/CWX_MasterKey/server/types/callbacks/GameCallbacks.d.ts b/Live/CWX_MasterKey/server/types/callbacks/GameCallbacks.d.ts index 3a6b7e6..30cf074 100644 --- a/Live/CWX_MasterKey/server/types/callbacks/GameCallbacks.d.ts +++ b/Live/CWX_MasterKey/server/types/callbacks/GameCallbacks.d.ts @@ -39,6 +39,7 @@ declare class GameCallbacks { */ getGameConfig(url: string, info: IGameEmptyCrcRequestData, sessionID: string): IGetBodyResponseData; getServer(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getCurrentGroup(url: string, info: IEmptyRequestData, sessionID: string): any; validateGameVersion(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** * Handle client/game/keepalive diff --git a/Live/CWX_MasterKey/server/types/callbacks/ProfileCallbacks.d.ts b/Live/CWX_MasterKey/server/types/callbacks/ProfileCallbacks.d.ts index 183bb0a..9a5848e 100644 --- a/Live/CWX_MasterKey/server/types/callbacks/ProfileCallbacks.d.ts +++ b/Live/CWX_MasterKey/server/types/callbacks/ProfileCallbacks.d.ts @@ -5,6 +5,7 @@ import { IGetBodyResponseData } from "../models/eft/httpResponse/IGetBodyRespons import { INullResponseData } from "../models/eft/httpResponse/INullResponseData"; import { IGetMiniProfileRequestData } from "../models/eft/launcher/IGetMiniProfileRequestData"; import { GetProfileStatusResponseData } from "../models/eft/profile/GetProfileStatusResponseData"; +import { IGetProfileSettingsRequest } from "../models/eft/profile/IGetProfileSettingsRequest"; import { IProfileChangeNicknameRequestData } from "../models/eft/profile/IProfileChangeNicknameRequestData"; import { IProfileChangeVoiceRequestData } from "../models/eft/profile/IProfileChangeVoiceRequestData"; import { IProfileCreateRequestData } from "../models/eft/profile/IProfileCreateRequestData"; @@ -64,6 +65,7 @@ export declare class ProfileCallbacks { * @returns */ getProfileStatus(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getProfileSettings(url: string, info: IGetProfileSettingsRequest, sessionId: string): IGetBodyResponseData; searchFriend(url: string, info: ISearchFriendRequestData, sessionID: string): IGetBodyResponseData; getMiniProfile(url: string, info: IGetMiniProfileRequestData, sessionID: string): string; getAllMiniProfiles(url: string, info: any, sessionID: string): string; diff --git a/Live/CWX_MasterKey/server/types/callbacks/TraderCallbacks.d.ts b/Live/CWX_MasterKey/server/types/callbacks/TraderCallbacks.d.ts index 8df1049..1e75add 100644 --- a/Live/CWX_MasterKey/server/types/callbacks/TraderCallbacks.d.ts +++ b/Live/CWX_MasterKey/server/types/callbacks/TraderCallbacks.d.ts @@ -2,7 +2,7 @@ import { OnLoad } from "../di/OnLoad"; import { OnUpdate } from "../di/OnUpdate"; import { TraderController } from "../controllers/TraderController"; import { IEmptyRequestData } from "../models/eft/common/IEmptyRequestData"; -import { IBarterScheme, ITraderAssort, ITraderBase } from "../models/eft/common/tables/ITrader"; +import { ITraderAssort, ITraderBase } from "../models/eft/common/tables/ITrader"; import { IGetBodyResponseData } from "../models/eft/httpResponse/IGetBodyResponseData"; import { HttpResponseUtil } from "../utils/HttpResponseUtil"; export declare class TraderCallbacks implements OnLoad, OnUpdate { @@ -13,11 +13,6 @@ export declare class TraderCallbacks implements OnLoad, OnUpdate { onUpdate(): Promise; getRoute(): string; getTraderSettings(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; - /** - * Handle client/trading/api/getUserAssortPrice/trader - * @returns - */ - getProfilePurchases(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData>; getTrader(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; getAssort(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/Live/CWX_MasterKey/server/types/context/ApplicationContext.d.ts b/Live/CWX_MasterKey/server/types/context/ApplicationContext.d.ts index 28bbdf7..0a81be0 100644 --- a/Live/CWX_MasterKey/server/types/context/ApplicationContext.d.ts +++ b/Live/CWX_MasterKey/server/types/context/ApplicationContext.d.ts @@ -8,6 +8,8 @@ export declare class ApplicationContext { * * const registerPlayerInfo = this.applicationContext.getLatestValue(ContextVariableType.REGISTER_PLAYER_REQUEST).getValue(); * + * const activePlayerSessionId = this.applicationContext.getLatestValue(ContextVariableType.SESSION_ID).getValue(); + * * const matchInfo = this.applicationContext.getLatestValue(ContextVariableType.MATCH_INFO).getValue(); * @param type * @returns diff --git a/Live/CWX_MasterKey/server/types/controllers/GameController.d.ts b/Live/CWX_MasterKey/server/types/controllers/GameController.d.ts index 44264dc..e47d5fa 100644 --- a/Live/CWX_MasterKey/server/types/controllers/GameController.d.ts +++ b/Live/CWX_MasterKey/server/types/controllers/GameController.d.ts @@ -20,10 +20,12 @@ import { LocalisationService } from "../services/LocalisationService"; import { OpenZoneService } from "../services/OpenZoneService"; import { ProfileFixerService } from "../services/ProfileFixerService"; import { SeasonalEventService } from "../services/SeasonalEventService"; +import { JsonUtil } from "../utils/JsonUtil"; import { TimeUtil } from "../utils/TimeUtil"; export declare class GameController { protected logger: ILogger; protected databaseServer: DatabaseServer; + protected jsonUtil: JsonUtil; protected timeUtil: TimeUtil; protected preAkiModLoader: PreAkiModLoader; protected httpServerHelper: HttpServerHelper; @@ -39,7 +41,7 @@ export declare class GameController { protected httpConfig: IHttpConfig; protected coreConfig: ICoreConfig; protected locationConfig: ILocationConfig; - constructor(logger: ILogger, databaseServer: DatabaseServer, timeUtil: TimeUtil, preAkiModLoader: PreAkiModLoader, httpServerHelper: HttpServerHelper, hideoutHelper: HideoutHelper, profileHelper: ProfileHelper, profileFixerService: ProfileFixerService, localisationService: LocalisationService, customLocationWaveService: CustomLocationWaveService, openZoneService: OpenZoneService, seasonalEventService: SeasonalEventService, applicationContext: ApplicationContext, configServer: ConfigServer); + constructor(logger: ILogger, databaseServer: DatabaseServer, jsonUtil: JsonUtil, timeUtil: TimeUtil, preAkiModLoader: PreAkiModLoader, httpServerHelper: HttpServerHelper, hideoutHelper: HideoutHelper, profileHelper: ProfileHelper, profileFixerService: ProfileFixerService, localisationService: LocalisationService, customLocationWaveService: CustomLocationWaveService, openZoneService: OpenZoneService, seasonalEventService: SeasonalEventService, applicationContext: ApplicationContext, configServer: ConfigServer); gameStart(_url: string, _info: IEmptyRequestData, sessionID: string, startTimeStampMS: number): void; /** * When player logs in, iterate over all active effects and reduce timer @@ -55,6 +57,10 @@ export declare class GameController { * Make Rogues spawn later to allow for scavs to spawn first instead of rogues filling up all spawn positions */ protected fixRoguesSpawningInstantlyOnLighthouse(): void; + /** + * Find and split waves with large numbers of bots into smaller waves - BSG appears to reduce the size of these waves to one bot when they're waiting to spawn for too long + */ + protected splitBotWavesIntoSingleWaves(): void; /** * Get a list of installed mods and save their details to the profile being used * @param fullProfile Profile to add mod details to @@ -76,5 +82,6 @@ export declare class GameController { protected logProfileDetails(fullProfile: IAkiProfile): void; getGameConfig(sessionID: string): IGameConfigResponse; getServer(): IServerDetails[]; + getCurrentGroup(sessionId: any): any; getValidGameVersion(): ICheckVersionResponse; } diff --git a/Live/CWX_MasterKey/server/types/controllers/InraidController.d.ts b/Live/CWX_MasterKey/server/types/controllers/InraidController.d.ts index f954eff..4b0c21b 100644 --- a/Live/CWX_MasterKey/server/types/controllers/InraidController.d.ts +++ b/Live/CWX_MasterKey/server/types/controllers/InraidController.d.ts @@ -61,18 +61,18 @@ export declare class InraidController { */ protected savePmcProgress(sessionID: string, offraidData: ISaveProgressRequestData): void; /** - * Make changes to pmc profile after they left raid dead, - * alter bodypart hp, handle insurance, delete inventory items, remove carried quest items - * @param postRaidSaveRequest post-raid save request - * @param pmcData pmc profile - * @param insuranceEnabled is insurance enabled - * @param preRaidGear gear player had before raid + * Make changes to pmc profile after they've died in raid, + * Alter bodypart hp, handle insurance, delete inventory items, remove carried quest items + * @param postRaidSaveRequest Post-raid save request + * @param pmcData Pmc profile + * @param insuranceEnabled Is insurance enabled + * @param preRaidGear Gear player had before raid * @param sessionID Session id * @returns Updated profile object */ protected performPostRaidActionsWhenDead(postRaidSaveRequest: ISaveProgressRequestData, pmcData: IPmcData, insuranceEnabled: boolean, preRaidGear: Item[], sessionID: string): IPmcData; /** - * Adjust player characters bodypart hp if they left raid early + * Adjust player characters bodypart hp post-raid * @param postRaidSaveRequest post raid data * @param pmcData player profile */ diff --git a/Live/CWX_MasterKey/server/types/controllers/InventoryController.d.ts b/Live/CWX_MasterKey/server/types/controllers/InventoryController.d.ts index 129ede3..53bb017 100644 --- a/Live/CWX_MasterKey/server/types/controllers/InventoryController.d.ts +++ b/Live/CWX_MasterKey/server/types/controllers/InventoryController.d.ts @@ -112,7 +112,14 @@ export declare class InventoryController { * @returns client response object */ tagItem(pmcData: IPmcData, body: IInventoryTagRequestData, sessionID: string): IItemEventRouterResponse; - bindItem(pmcData: IPmcData, body: IInventoryBindRequestData, sessionID: string): IItemEventRouterResponse; + /** + * Bind an inventory item to the quick access menu at bottom of player screen + * @param pmcData Player profile + * @param bindRequest Reqeust object + * @param sessionID Session id + * @returns IItemEventRouterResponse + */ + bindItem(pmcData: IPmcData, bindRequest: IInventoryBindRequestData, sessionID: string): IItemEventRouterResponse; /** * Handles examining an item * @param pmcData player profile @@ -137,9 +144,36 @@ export declare class InventoryController { * @returns IItemEventRouterResponse */ sortInventory(pmcData: IPmcData, request: IInventorySortRequestData, sessionID: string): IItemEventRouterResponse; - createMapMarker(pmcData: IPmcData, body: IInventoryCreateMarkerRequestData, sessionID: string): IItemEventRouterResponse; - deleteMapMarker(pmcData: IPmcData, body: IInventoryDeleteMarkerRequestData, sessionID: string): IItemEventRouterResponse; - editMapMarker(pmcData: IPmcData, body: IInventoryEditMarkerRequestData, sessionID: string): IItemEventRouterResponse; + /** + * Add note to a map + * @param pmcData Player profile + * @param request Add marker request + * @param sessionID Session id + * @returns IItemEventRouterResponse + */ + createMapMarker(pmcData: IPmcData, request: IInventoryCreateMarkerRequestData, sessionID: string): IItemEventRouterResponse; + /** + * Delete a map marker + * @param pmcData Player profile + * @param request Delete marker request + * @param sessionID Session id + * @returns IItemEventRouterResponse + */ + deleteMapMarker(pmcData: IPmcData, request: IInventoryDeleteMarkerRequestData, sessionID: string): IItemEventRouterResponse; + /** + * Edit an existing map marker + * @param pmcData Player profile + * @param request Edit marker request + * @param sessionID Session id + * @returns IItemEventRouterResponse + */ + editMapMarker(pmcData: IPmcData, request: IInventoryEditMarkerRequestData, sessionID: string): IItemEventRouterResponse; + /** + * Strip out characters from note string that are not: letter/numbers/unicode/spaces + * @param mapNoteText Marker text to sanitise + * @returns Sanitised map marker text + */ + protected sanitiseMapMarkerText(mapNoteText: string): string; /** * Handle event fired when a container is unpacked (currently only the halloween pumpkin) * @param pmcData Profile data diff --git a/Live/CWX_MasterKey/server/types/controllers/ProfileController.d.ts b/Live/CWX_MasterKey/server/types/controllers/ProfileController.d.ts index e76785a..9496013 100644 --- a/Live/CWX_MasterKey/server/types/controllers/ProfileController.d.ts +++ b/Live/CWX_MasterKey/server/types/controllers/ProfileController.d.ts @@ -1,4 +1,5 @@ import { PlayerScavGenerator } from "../generators/PlayerScavGenerator"; +import { DialogueHelper } from "../helpers/DialogueHelper"; import { ItemHelper } from "../helpers/ItemHelper"; import { ProfileHelper } from "../helpers/ProfileHelper"; import { QuestHelper } from "../helpers/QuestHelper"; @@ -11,6 +12,7 @@ import { IProfileCreateRequestData } from "../models/eft/profile/IProfileCreateR import { ISearchFriendRequestData } from "../models/eft/profile/ISearchFriendRequestData"; import { ISearchFriendResponse } from "../models/eft/profile/ISearchFriendResponse"; import { IValidateNicknameRequestData } from "../models/eft/profile/IValidateNicknameRequestData"; +import { EventOutputHolder } from "../routers/EventOutputHolder"; import { DatabaseServer } from "../servers/DatabaseServer"; import { SaveServer } from "../servers/SaveServer"; import { ProfileFixerService } from "../services/ProfileFixerService"; @@ -24,10 +26,12 @@ export declare class ProfileController { protected itemHelper: ItemHelper; protected profileFixerService: ProfileFixerService; protected playerScavGenerator: PlayerScavGenerator; + protected eventOutputHolder: EventOutputHolder; protected traderHelper: TraderHelper; + protected dialogueHelper: DialogueHelper; protected questHelper: QuestHelper; protected profileHelper: ProfileHelper; - constructor(hashUtil: HashUtil, timeUtil: TimeUtil, saveServer: SaveServer, databaseServer: DatabaseServer, itemHelper: ItemHelper, profileFixerService: ProfileFixerService, playerScavGenerator: PlayerScavGenerator, traderHelper: TraderHelper, questHelper: QuestHelper, profileHelper: ProfileHelper); + constructor(hashUtil: HashUtil, timeUtil: TimeUtil, saveServer: SaveServer, databaseServer: DatabaseServer, itemHelper: ItemHelper, profileFixerService: ProfileFixerService, playerScavGenerator: PlayerScavGenerator, eventOutputHolder: EventOutputHolder, traderHelper: TraderHelper, dialogueHelper: DialogueHelper, questHelper: QuestHelper, profileHelper: ProfileHelper); getMiniProfiles(): IMiniProfile[]; getMiniProfile(sessionID: string): any; getCompleteProfile(sessionID: string): IPmcData[]; diff --git a/Live/CWX_MasterKey/server/types/controllers/QuestController.d.ts b/Live/CWX_MasterKey/server/types/controllers/QuestController.d.ts index fe1754d..7e4bd69 100644 --- a/Live/CWX_MasterKey/server/types/controllers/QuestController.d.ts +++ b/Live/CWX_MasterKey/server/types/controllers/QuestController.d.ts @@ -60,13 +60,6 @@ export declare class QuestController { * @returns client response */ acceptQuest(pmcData: IPmcData, acceptedQuest: IAcceptQuestRequestData, sessionID: string): IItemEventRouterResponse; - /** - * Get a quests startedMessageText key from db, if no startedMessageText key found, use description key instead - * @param startedMessageTextId startedMessageText property from IQuest - * @param questDescriptionId description property from IQuest - * @returns message id - */ - protected getMessageIdForQuestStart(startedMessageTextId: string, questDescriptionId: string): string; /** * Handle the client accepting a repeatable quest and starting it * Send starting rewards if any to player and @@ -123,7 +116,14 @@ export declare class QuestController { * @param questsToFail quests to fail */ protected failQuests(sessionID: string, pmcData: IPmcData, questsToFail: IQuest[]): void; - handoverQuest(pmcData: IPmcData, body: IHandoverQuestRequestData, sessionID: string): IItemEventRouterResponse; + /** + * + * @param pmcData Player profile + * @param handoverQuestRequest handover item request + * @param sessionID Session id + * @returns IItemEventRouterResponse + */ + handoverQuest(pmcData: IPmcData, handoverQuestRequest: IHandoverQuestRequestData, sessionID: string): IItemEventRouterResponse; /** * Increment a backend counter stored value by an amount, * Create counter if it does not exist diff --git a/Live/CWX_MasterKey/server/types/controllers/RepeatableQuestController.d.ts b/Live/CWX_MasterKey/server/types/controllers/RepeatableQuestController.d.ts index dd8dc40..171062d 100644 --- a/Live/CWX_MasterKey/server/types/controllers/RepeatableQuestController.d.ts +++ b/Live/CWX_MasterKey/server/types/controllers/RepeatableQuestController.d.ts @@ -12,7 +12,7 @@ import { ITemplateItem } from "../models/eft/common/tables/ITemplateItem"; import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse"; import { IRepeatableQuestChangeRequest } from "../models/eft/quests/IRepeatableQuestChangeRequest"; import { ELocationName } from "../models/enums/ELocationName"; -import { IQuestConfig, IRepeatableQuestConfig } from "../models/spt/config/IQuestConfig"; +import { IEliminationConfig, IQuestConfig, IRepeatableQuestConfig } from "../models/spt/config/IQuestConfig"; import { ILogger } from "../models/spt/utils/ILogger"; import { EventOutputHolder } from "../routers/EventOutputHolder"; import { ConfigServer } from "../servers/ConfigServer"; @@ -159,7 +159,14 @@ export declare class RepeatableQuestController { */ generateEliminationQuest(pmcLevel: number, traderId: string, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IElimination; /** - * Cpnvert a location into an quest code can read (e.g. factory4_day into 55f2d3fd4bdc2d5f408b4567) + * Get the relevant elimination config based on the current players PMC level + * @param pmcLevel Level of PMC character + * @param repeatableConfig Main repeatable config + * @returns IEliminationConfig + */ + protected getEliminationConfigByPmcLevel(pmcLevel: number, repeatableConfig: IRepeatableQuestConfig): IEliminationConfig; + /** + * Convert a location into an quest code can read (e.g. factory4_day into 55f2d3fd4bdc2d5f408b4567) * @param locationKey e.g factory4_day * @returns guid */ @@ -203,10 +210,11 @@ export declare class RepeatableQuestController { * Used to create a quest pool during each cycle of repeatable quest generation. The pool will be subsequently * narrowed down during quest generation to avoid duplicate quests. Like duplicate extractions or elimination quests * where you have to e.g. kill scavs in same locations. - * - * @returns {object} the quest pool + * @param repeatableConfig main repeatable quest config + * @param pmcLevel level of pmc generating quest pool + * @returns IQuestTypePool */ - generateQuestPool(repeatableConfig: IRepeatableQuestConfig): IQuestTypePool; + generateQuestPool(repeatableConfig: IRepeatableQuestConfig, pmcLevel: number): IQuestTypePool; /** * Generate the reward for a mission. A reward can consist of * - Experience diff --git a/Live/CWX_MasterKey/server/types/controllers/TradeController.d.ts b/Live/CWX_MasterKey/server/types/controllers/TradeController.d.ts index dc7de19..8a0630b 100644 --- a/Live/CWX_MasterKey/server/types/controllers/TradeController.d.ts +++ b/Live/CWX_MasterKey/server/types/controllers/TradeController.d.ts @@ -7,6 +7,7 @@ import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRout import { IProcessBaseTradeRequestData } from "../models/eft/trade/IProcessBaseTradeRequestData"; import { IProcessRagfairTradeRequestData } from "../models/eft/trade/IProcessRagfairTradeRequestData"; import { IRagfairConfig } from "../models/spt/config/IRagfairConfig"; +import { ITraderConfig } from "../models/spt/config/ITraderConfig"; import { ILogger } from "../models/spt/utils/ILogger"; import { EventOutputHolder } from "../routers/EventOutputHolder"; import { ConfigServer } from "../servers/ConfigServer"; @@ -24,8 +25,10 @@ declare class TradeController { protected localisationService: LocalisationService; protected configServer: ConfigServer; protected ragfairConfig: IRagfairConfig; + protected traderConfig: ITraderConfig; constructor(logger: ILogger, eventOutputHolder: EventOutputHolder, tradeHelper: TradeHelper, itemHelper: ItemHelper, profileHelper: ProfileHelper, ragfairServer: RagfairServer, httpResponse: HttpResponseUtil, localisationService: LocalisationService, configServer: ConfigServer); - confirmTrading(pmcData: IPmcData, body: IProcessBaseTradeRequestData, sessionID: string, foundInRaid?: boolean, upd?: Upd): IItemEventRouterResponse; + confirmTrading(pmcData: IPmcData, request: IProcessBaseTradeRequestData, sessionID: string): IItemEventRouterResponse; confirmRagfairTrading(pmcData: IPmcData, body: IProcessRagfairTradeRequestData, sessionID: string): IItemEventRouterResponse; + protected confirmTradingInternal(pmcData: IPmcData, body: IProcessBaseTradeRequestData, sessionID: string, foundInRaid?: boolean, upd?: Upd): IItemEventRouterResponse; } export { TradeController }; diff --git a/Live/CWX_MasterKey/server/types/controllers/TraderController.d.ts b/Live/CWX_MasterKey/server/types/controllers/TraderController.d.ts index b67aec9..007901b 100644 --- a/Live/CWX_MasterKey/server/types/controllers/TraderController.d.ts +++ b/Live/CWX_MasterKey/server/types/controllers/TraderController.d.ts @@ -2,27 +2,25 @@ import { FenceBaseAssortGenerator } from "../generators/FenceBaseAssortGenerator import { ProfileHelper } from "../helpers/ProfileHelper"; import { TraderAssortHelper } from "../helpers/TraderAssortHelper"; import { TraderHelper } from "../helpers/TraderHelper"; -import { IBarterScheme, ITraderAssort, ITraderBase } from "../models/eft/common/tables/ITrader"; +import { ITraderAssort, ITraderBase } from "../models/eft/common/tables/ITrader"; import { ILogger } from "../models/spt/utils/ILogger"; import { DatabaseServer } from "../servers/DatabaseServer"; import { FenceService } from "../services/FenceService"; import { TraderAssortService } from "../services/TraderAssortService"; import { TraderPurchasePersisterService } from "../services/TraderPurchasePersisterService"; import { JsonUtil } from "../utils/JsonUtil"; -import { TimeUtil } from "../utils/TimeUtil"; export declare class TraderController { protected logger: ILogger; protected databaseServer: DatabaseServer; protected traderAssortHelper: TraderAssortHelper; protected profileHelper: ProfileHelper; protected traderHelper: TraderHelper; - protected timeUtil: TimeUtil; protected traderAssortService: TraderAssortService; protected traderPurchasePersisterService: TraderPurchasePersisterService; protected fenceService: FenceService; protected fenceBaseAssortGenerator: FenceBaseAssortGenerator; protected jsonUtil: JsonUtil; - constructor(logger: ILogger, databaseServer: DatabaseServer, traderAssortHelper: TraderAssortHelper, profileHelper: ProfileHelper, traderHelper: TraderHelper, timeUtil: TimeUtil, traderAssortService: TraderAssortService, traderPurchasePersisterService: TraderPurchasePersisterService, fenceService: FenceService, fenceBaseAssortGenerator: FenceBaseAssortGenerator, jsonUtil: JsonUtil); + constructor(logger: ILogger, databaseServer: DatabaseServer, traderAssortHelper: TraderAssortHelper, profileHelper: ProfileHelper, traderHelper: TraderHelper, traderAssortService: TraderAssortService, traderPurchasePersisterService: TraderPurchasePersisterService, fenceService: FenceService, fenceBaseAssortGenerator: FenceBaseAssortGenerator, jsonUtil: JsonUtil); /** * Runs when onLoad event is fired * Iterate over traders, ensure an unmolested copy of their assorts is stored in traderAssortService @@ -42,7 +40,13 @@ export declare class TraderController { * @returns array if ITraderBase objects */ getAllTraders(sessionID: string): ITraderBase[]; + /** + * Order traders by their traderId (Ttid) + * @param traderA First trader to compare + * @param traderB Second trader to compare + * @returns 1,-1 or 0 + */ + protected sortByTraderId(traderA: ITraderBase, traderB: ITraderBase): number; getTrader(sessionID: string, traderID: string): ITraderBase; getAssort(sessionId: string, traderId: string): ITraderAssort; - getPurchasesData(sessionID: string, traderID: string): Record; } diff --git a/Live/CWX_MasterKey/server/types/generators/BotEquipmentModGenerator.d.ts b/Live/CWX_MasterKey/server/types/generators/BotEquipmentModGenerator.d.ts index 6703a36..4a8581c 100644 --- a/Live/CWX_MasterKey/server/types/generators/BotEquipmentModGenerator.d.ts +++ b/Live/CWX_MasterKey/server/types/generators/BotEquipmentModGenerator.d.ts @@ -14,6 +14,7 @@ import { DatabaseServer } from "../servers/DatabaseServer"; import { BotEquipmentFilterService } from "../services/BotEquipmentFilterService"; import { BotEquipmentModPoolService } from "../services/BotEquipmentModPoolService"; import { BotModLimits, BotWeaponModLimitService } from "../services/BotWeaponModLimitService"; +import { ItemBaseClassService } from "../services/ItemBaseClassService"; import { ItemFilterService } from "../services/ItemFilterService"; import { LocalisationService } from "../services/LocalisationService"; import { HashUtil } from "../utils/HashUtil"; @@ -28,6 +29,7 @@ export declare class BotEquipmentModGenerator { protected databaseServer: DatabaseServer; protected itemHelper: ItemHelper; protected botEquipmentFilterService: BotEquipmentFilterService; + protected itemBaseClassService: ItemBaseClassService; protected itemFilterService: ItemFilterService; protected profileHelper: ProfileHelper; protected botWeaponModLimitService: BotWeaponModLimitService; @@ -38,7 +40,7 @@ export declare class BotEquipmentModGenerator { protected botEquipmentModPoolService: BotEquipmentModPoolService; protected configServer: ConfigServer; protected botConfig: IBotConfig; - constructor(logger: ILogger, jsonUtil: JsonUtil, hashUtil: HashUtil, randomUtil: RandomUtil, probabilityHelper: ProbabilityHelper, databaseServer: DatabaseServer, itemHelper: ItemHelper, botEquipmentFilterService: BotEquipmentFilterService, itemFilterService: ItemFilterService, profileHelper: ProfileHelper, botWeaponModLimitService: BotWeaponModLimitService, botHelper: BotHelper, botGeneratorHelper: BotGeneratorHelper, botWeaponGeneratorHelper: BotWeaponGeneratorHelper, localisationService: LocalisationService, botEquipmentModPoolService: BotEquipmentModPoolService, configServer: ConfigServer); + constructor(logger: ILogger, jsonUtil: JsonUtil, hashUtil: HashUtil, randomUtil: RandomUtil, probabilityHelper: ProbabilityHelper, databaseServer: DatabaseServer, itemHelper: ItemHelper, botEquipmentFilterService: BotEquipmentFilterService, itemBaseClassService: ItemBaseClassService, itemFilterService: ItemFilterService, profileHelper: ProfileHelper, botWeaponModLimitService: BotWeaponModLimitService, botHelper: BotHelper, botGeneratorHelper: BotGeneratorHelper, botWeaponGeneratorHelper: BotWeaponGeneratorHelper, localisationService: LocalisationService, botEquipmentModPoolService: BotEquipmentModPoolService, configServer: ConfigServer); /** * Check mods are compatible and add to array * @param equipment Equipment item to add mods to diff --git a/Live/CWX_MasterKey/server/types/generators/BotGenerator.d.ts b/Live/CWX_MasterKey/server/types/generators/BotGenerator.d.ts index 9581259..8992e9e 100644 --- a/Live/CWX_MasterKey/server/types/generators/BotGenerator.d.ts +++ b/Live/CWX_MasterKey/server/types/generators/BotGenerator.d.ts @@ -14,12 +14,14 @@ import { SeasonalEventService } from "../services/SeasonalEventService"; import { HashUtil } from "../utils/HashUtil"; import { JsonUtil } from "../utils/JsonUtil"; import { RandomUtil } from "../utils/RandomUtil"; +import { TimeUtil } from "../utils/TimeUtil"; import { BotInventoryGenerator } from "./BotInventoryGenerator"; import { BotLevelGenerator } from "./BotLevelGenerator"; export declare class BotGenerator { protected logger: ILogger; protected hashUtil: HashUtil; protected randomUtil: RandomUtil; + protected timeUtil: TimeUtil; protected jsonUtil: JsonUtil; protected profileHelper: ProfileHelper; protected databaseServer: DatabaseServer; @@ -32,7 +34,7 @@ export declare class BotGenerator { protected seasonalEventService: SeasonalEventService; protected configServer: ConfigServer; protected botConfig: IBotConfig; - constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, jsonUtil: JsonUtil, profileHelper: ProfileHelper, databaseServer: DatabaseServer, botInventoryGenerator: BotInventoryGenerator, botLevelGenerator: BotLevelGenerator, botEquipmentFilterService: BotEquipmentFilterService, weightedRandomHelper: WeightedRandomHelper, botHelper: BotHelper, botDifficultyHelper: BotDifficultyHelper, seasonalEventService: SeasonalEventService, configServer: ConfigServer); + constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, timeUtil: TimeUtil, jsonUtil: JsonUtil, profileHelper: ProfileHelper, databaseServer: DatabaseServer, botInventoryGenerator: BotInventoryGenerator, botLevelGenerator: BotLevelGenerator, botEquipmentFilterService: BotEquipmentFilterService, weightedRandomHelper: WeightedRandomHelper, botHelper: BotHelper, botDifficultyHelper: BotDifficultyHelper, seasonalEventService: SeasonalEventService, configServer: ConfigServer); /** * Generate a player scav bot object * @param role e.g. assault / pmcbot diff --git a/Live/CWX_MasterKey/server/types/generators/BotLootGenerator.d.ts b/Live/CWX_MasterKey/server/types/generators/BotLootGenerator.d.ts index 6273a11..044d407 100644 --- a/Live/CWX_MasterKey/server/types/generators/BotLootGenerator.d.ts +++ b/Live/CWX_MasterKey/server/types/generators/BotLootGenerator.d.ts @@ -1,10 +1,11 @@ import { BotGeneratorHelper } from "../helpers/BotGeneratorHelper"; import { BotWeaponGeneratorHelper } from "../helpers/BotWeaponGeneratorHelper"; import { HandbookHelper } from "../helpers/HandbookHelper"; +import { ItemHelper } from "../helpers/ItemHelper"; import { Inventory as PmcInventory } from "../models/eft/common/tables/IBotBase"; import { Chances, Inventory, ItemMinMax, ModsChances } from "../models/eft/common/tables/IBotType"; import { Item } from "../models/eft/common/tables/IItem"; -import { ITemplateItem, Props } from "../models/eft/common/tables/ITemplateItem"; +import { ITemplateItem } from "../models/eft/common/tables/ITemplateItem"; import { IBotConfig } from "../models/spt/config/IBotConfig"; import { ILogger } from "../models/spt/utils/ILogger"; import { ConfigServer } from "../servers/ConfigServer"; @@ -18,6 +19,7 @@ export declare class BotLootGenerator { protected logger: ILogger; protected hashUtil: HashUtil; protected randomUtil: RandomUtil; + protected itemHelper: ItemHelper; protected databaseServer: DatabaseServer; protected handbookHelper: HandbookHelper; protected botGeneratorHelper: BotGeneratorHelper; @@ -27,7 +29,7 @@ export declare class BotLootGenerator { protected localisationService: LocalisationService; protected configServer: ConfigServer; protected botConfig: IBotConfig; - constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, databaseServer: DatabaseServer, handbookHelper: HandbookHelper, botGeneratorHelper: BotGeneratorHelper, botWeaponGenerator: BotWeaponGenerator, botWeaponGeneratorHelper: BotWeaponGeneratorHelper, botLootCacheService: BotLootCacheService, localisationService: LocalisationService, configServer: ConfigServer); + constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, itemHelper: ItemHelper, databaseServer: DatabaseServer, handbookHelper: HandbookHelper, botGeneratorHelper: BotGeneratorHelper, botWeaponGenerator: BotWeaponGenerator, botWeaponGeneratorHelper: BotWeaponGeneratorHelper, botLootCacheService: BotLootCacheService, localisationService: LocalisationService, configServer: ConfigServer); /** * Add loot to bots containers * @param sessionId Session id @@ -94,19 +96,6 @@ export declare class BotLootGenerator { * @returns true if item has reached spawn limit */ protected itemHasReachedSpawnLimit(itemTemplate: ITemplateItem, botRole: string, isPmc: boolean, limitCount: Record, itemSpawnLimits: Record): boolean; - /** - * Is the item an ammo box - * @param props props of the item to check - * @returns true if item is an ammo box - */ - protected isAmmoBox(props: Props): boolean; - /** - * Create an object that contains the ammo stack for an ammo box - * @param parentId ammo box id - * @param props ammo box props - * @returns Item object - */ - protected createAmmoForAmmoBox(parentId: string, props: Props): Item; /** * Randomise the stack size of a money object, uses different values for pmc or scavs * @param isPmc is this a PMC diff --git a/Live/CWX_MasterKey/server/types/generators/BotWeaponGenerator.d.ts b/Live/CWX_MasterKey/server/types/generators/BotWeaponGenerator.d.ts index a68b82f..3e9fe30 100644 --- a/Live/CWX_MasterKey/server/types/generators/BotWeaponGenerator.d.ts +++ b/Live/CWX_MasterKey/server/types/generators/BotWeaponGenerator.d.ts @@ -140,26 +140,27 @@ export declare class BotWeaponGenerator { protected getWeaponCaliber(weaponTemplate: ITemplateItem): string; /** * Fill existing magazines to full, while replacing their contents with specified ammo - * @param weaponMods - * @param magazine - * @param ammoTpl + * @param weaponMods Weapon with children + * @param magazine Magazine item + * @param cartridgeTpl Cartridge to insert into magazine */ - protected fillExistingMagazines(weaponMods: Item[], magazine: Item, ammoTpl: string): void; + protected fillExistingMagazines(weaponMods: Item[], magazine: Item, cartridgeTpl: string): void; /** * Add desired ammo tpl as item to weaponmods array, placed as child to UBGL - * @param weaponMods - * @param ubglMod - * @param ubglAmmoTpl + * @param weaponMods Weapon with children + * @param ubglMod UBGL item + * @param ubglAmmoTpl Grenade ammo tpl */ protected fillUbgl(weaponMods: Item[], ubglMod: Item, ubglAmmoTpl: string): void; /** * Add cartridge item to weapon Item array, if it already exists, update - * @param weaponMods Weapon items array to amend + * @param weaponWithMods Weapon items array to amend * @param magazine magazine item details we're adding cartridges to - * @param chosenAmmo cartridge to put into the magazine + * @param chosenAmmoTpl cartridge to put into the magazine * @param newStackSize how many cartridges should go into the magazine + * @param magazineTemplate magazines db template */ - protected addOrUpdateMagazinesChildWithAmmo(weaponMods: Item[], magazine: Item, chosenAmmo: string, newStackSize: number): void; + protected addOrUpdateMagazinesChildWithAmmo(weaponWithMods: Item[], magazine: Item, chosenAmmoTpl: string, magazineTemplate: ITemplateItem): void; /** * Fill each Camora with a bullet * @param weaponMods Weapon mods to find and update camora mod(s) from diff --git a/Live/CWX_MasterKey/server/types/generators/LocationGenerator.d.ts b/Live/CWX_MasterKey/server/types/generators/LocationGenerator.d.ts index a617048..04b1599 100644 --- a/Live/CWX_MasterKey/server/types/generators/LocationGenerator.d.ts +++ b/Live/CWX_MasterKey/server/types/generators/LocationGenerator.d.ts @@ -2,7 +2,7 @@ import { ContainerHelper } from "../helpers/ContainerHelper"; import { ItemHelper } from "../helpers/ItemHelper"; import { PresetHelper } from "../helpers/PresetHelper"; import { RagfairServerHelper } from "../helpers/RagfairServerHelper"; -import { ILooseLoot, SpawnpointsForced, SpawnpointTemplate } from "../models/eft/common/ILooseLoot"; +import { ILooseLoot, Spawnpoint, SpawnpointsForced, SpawnpointTemplate } from "../models/eft/common/ILooseLoot"; import { Item } from "../models/eft/common/tables/IItem"; import { IStaticAmmoDetails, IStaticContainerProps, IStaticForcedProps, IStaticLootDetails } from "../models/eft/common/tables/ILootBase"; import { ILocationConfig } from "../models/spt/config/ILocationConfig"; @@ -34,6 +34,15 @@ export declare class LocationGenerator { protected configServer: ConfigServer; protected locationConfig: ILocationConfig; constructor(logger: ILogger, jsonUtil: JsonUtil, objectId: ObjectId, randomUtil: RandomUtil, ragfairServerHelper: RagfairServerHelper, itemHelper: ItemHelper, mathUtil: MathUtil, seasonalEventService: SeasonalEventService, containerHelper: ContainerHelper, presetHelper: PresetHelper, localisationService: LocalisationService, configServer: ConfigServer); + /** + * Choose loot to put into a static container + * @param containerIn + * @param staticForced + * @param staticLootDist + * @param staticAmmoDist + * @param locationName Name of the map to generate static loot for + * @returns IStaticContainerProps + */ generateContainerLoot(containerIn: IStaticContainerProps, staticForced: IStaticForcedProps[], staticLootDist: Record, staticAmmoDist: Record, locationName: string): IStaticContainerProps; protected getLooseLootMultiplerForLocation(location: string): number; protected getStaticLootMultiplerForLocation(location: string): number; @@ -52,5 +61,25 @@ export declare class LocationGenerator { * @param name of map currently generating forced loot for */ protected addForcedLoot(loot: SpawnpointTemplate[], forcedSpawnPoints: SpawnpointsForced[], locationName: string): void; - protected createItem(tpl: string, staticAmmoDist: Record, parentId?: string): IContainerItem; + /** + * Create array of item (with child items) and return + * @param chosenComposedKey Key we want to look up items for + * @param spawnPoint Dynamic spawn point item we want will be placed in + * @returns IContainerItem + */ + protected createDynamicLootItem(chosenComposedKey: string, spawnPoint: Spawnpoint): IContainerItem; + /** + * Replace the _id value for base item + all children items parentid value + * @param itemWithChildren Item with mods to update + * @param newId new id to add on chidren of base item + */ + protected reparentItemAndChildren(itemWithChildren: Item[], newId?: string): void; + /** + * Find an item in array by its _tpl, handle differently if chosenTpl is a weapon + * @param items Items array to search + * @param chosenTpl Tpl we want to get item with + * @returns Item object + */ + protected getItemInArray(items: Item[], chosenTpl: string): Item; + protected createStaticLootItem(tpl: string, staticAmmoDist: Record, parentId?: string): IContainerItem; } diff --git a/Live/CWX_MasterKey/server/types/generators/PMCLootGenerator.d.ts b/Live/CWX_MasterKey/server/types/generators/PMCLootGenerator.d.ts index 10918e3..8dd47ef 100644 --- a/Live/CWX_MasterKey/server/types/generators/PMCLootGenerator.d.ts +++ b/Live/CWX_MasterKey/server/types/generators/PMCLootGenerator.d.ts @@ -1,4 +1,5 @@ import { ItemHelper } from "../helpers/ItemHelper"; +import { ITemplateItem } from "../models/eft/common/tables/ITemplateItem"; import { IBotConfig } from "../models/spt/config/IBotConfig"; import { ConfigServer } from "../servers/ConfigServer"; import { DatabaseServer } from "../servers/DatabaseServer"; @@ -15,6 +16,7 @@ export declare class PMCLootGenerator { protected itemFilterService: ItemFilterService; protected seasonalEventService: SeasonalEventService; protected pocketLootPool: string[]; + protected vestLootPool: string[]; protected backpackLootPool: string[]; protected botConfig: IBotConfig; constructor(itemHelper: ItemHelper, databaseServer: DatabaseServer, configServer: ConfigServer, itemFilterService: ItemFilterService, seasonalEventService: SeasonalEventService); @@ -23,6 +25,18 @@ export declare class PMCLootGenerator { * @returns string array of tpls */ generatePMCPocketLootPool(): string[]; + /** + * Create an array of loot items a PMC can have in their vests + * @returns string array of tpls + */ + generatePMCVestLootPool(): string[]; + /** + * Check if item has a width/hide that lets it fit into a 1x2 slot + * 1x1 / 1x2 / 2x1 + * @param item Item to check size of + * @returns true if it fits + */ + protected itemFitsInto1By2Slot(item: ITemplateItem): boolean; /** * Create an array of loot items a PMC can have in their backpack * @returns string array of tpls diff --git a/Live/CWX_MasterKey/server/types/helpers/AssortHelper.d.ts b/Live/CWX_MasterKey/server/types/helpers/AssortHelper.d.ts index 13512b2..bc66b09 100644 --- a/Live/CWX_MasterKey/server/types/helpers/AssortHelper.d.ts +++ b/Live/CWX_MasterKey/server/types/helpers/AssortHelper.d.ts @@ -1,5 +1,6 @@ import { IPmcData } from "../models/eft/common/IPmcData"; import { ITraderAssort } from "../models/eft/common/tables/ITrader"; +import { QuestStatus } from "../models/enums/QuestStatus"; import { ILogger } from "../models/spt/utils/ILogger"; import { DatabaseServer } from "../servers/DatabaseServer"; import { LocalisationService } from "../services/LocalisationService"; @@ -15,12 +16,22 @@ export declare class AssortHelper { /** * Remove assorts from a trader that have not been unlocked yet * @param pmcProfile player profile - * @param traderId traders id - * @param assort assort items from a trader - * @param mergedQuestAssorts An object of quest assort to quest id unlocks for all traders + * @param traderId traders id the assort belongs to + * @param traderAssorts All assort items from same trader + * @param mergedQuestAssorts Dict of quest assort to quest id unlocks for all traders * @returns assort items minus locked quest assorts */ - stripLockedQuestAssort(pmcProfile: IPmcData, traderId: string, assort: ITraderAssort, mergedQuestAssorts: Record>, flea?: boolean): ITraderAssort; + stripLockedQuestAssort(pmcProfile: IPmcData, traderId: string, traderAssorts: ITraderAssort, mergedQuestAssorts: Record>, flea?: boolean): ITraderAssort; + /** + * Get a quest id + the statuses quest can be in to unlock assort + * @param mergedQuestAssorts quest assorts to search for assort id + * @param assortId Assort to look for linked quest id + * @returns quest id + array of quest status the assort should show for + */ + protected getQuestIdAndStatusThatShowAssort(mergedQuestAssorts: Record>, assortId: string): { + questId: string; + status: QuestStatus[]; + }; /** * Remove assorts from a trader that have not been unlocked yet * @param pmcProfile player profile diff --git a/Live/CWX_MasterKey/server/types/helpers/BotWeaponGeneratorHelper.d.ts b/Live/CWX_MasterKey/server/types/helpers/BotWeaponGeneratorHelper.d.ts index cefc3bd..8a3784b 100644 --- a/Live/CWX_MasterKey/server/types/helpers/BotWeaponGeneratorHelper.d.ts +++ b/Live/CWX_MasterKey/server/types/helpers/BotWeaponGeneratorHelper.d.ts @@ -65,11 +65,11 @@ export declare class BotWeaponGeneratorHelper { /** * TODO - move into BotGeneratorHelper, this is not the class for it * Adds an item with all its children into specified equipmentSlots, wherever it fits. - * @param equipmentSlots + * @param equipmentSlots Slot to add item+children into * @param parentId * @param parentTpl - * @param itemWithChildren - * @param inventory + * @param itemWithChildren Item to add + * @param inventory Inventory to add item+children into * @returns a `boolean` indicating item was added */ addItemWithChildrenToEquipmentSlot(equipmentSlots: string[], parentId: string, parentTpl: string, itemWithChildren: Item[], inventory: Inventory): boolean; diff --git a/Live/CWX_MasterKey/server/types/helpers/HideoutHelper.d.ts b/Live/CWX_MasterKey/server/types/helpers/HideoutHelper.d.ts index a5849e3..466b41d 100644 --- a/Live/CWX_MasterKey/server/types/helpers/HideoutHelper.d.ts +++ b/Live/CWX_MasterKey/server/types/helpers/HideoutHelper.d.ts @@ -140,8 +140,21 @@ export declare class HideoutHelper { * @returns coin slot count */ protected getBTCSlots(pmcData: IPmcData): number; + /** + * Get a count of bitcoins player miner can hold + */ protected getManagementSkillsSlots(): number; - protected hasManagementSkillSlots(pmcData: IPmcData): boolean; + /** + * Does profile have elite hideout management skill + * @param pmcData Profile to look at + * @returns True if profile has skill + */ + protected hasEliteHideoutManagementSkill(pmcData: IPmcData): boolean; + /** + * Get the hideout management skill from player profile + * @param pmcData Profile to look at + * @returns Hideout management skill object + */ protected getHideoutManagementSkill(pmcData: IPmcData): Common; protected getHideoutManagementConsumptionBonus(pmcData: IPmcData): number; /** diff --git a/Live/CWX_MasterKey/server/types/helpers/InRaidHelper.d.ts b/Live/CWX_MasterKey/server/types/helpers/InRaidHelper.d.ts index c69a810..b65d78d 100644 --- a/Live/CWX_MasterKey/server/types/helpers/InRaidHelper.d.ts +++ b/Live/CWX_MasterKey/server/types/helpers/InRaidHelper.d.ts @@ -2,24 +2,35 @@ import { IPmcData } from "../models/eft/common/IPmcData"; import { Victim } from "../models/eft/common/tables/IBotBase"; import { Item } from "../models/eft/common/tables/IItem"; import { ISaveProgressRequestData } from "../models/eft/inRaid/ISaveProgressRequestData"; +import { ILostOnDeathConfig } from "../models/spt/config/ILostOnDeathConfig"; import { ILogger } from "../models/spt/utils/ILogger"; +import { ConfigServer } from "../servers/ConfigServer"; import { DatabaseServer } from "../servers/DatabaseServer"; import { SaveServer } from "../servers/SaveServer"; import { LocalisationService } from "../services/LocalisationService"; import { ProfileFixerService } from "../services/ProfileFixerService"; import { JsonUtil } from "../utils/JsonUtil"; import { InventoryHelper } from "./InventoryHelper"; +import { ItemHelper } from "./ItemHelper"; import { PaymentHelper } from "./PaymentHelper"; export declare class InRaidHelper { protected logger: ILogger; protected saveServer: SaveServer; protected jsonUtil: JsonUtil; + protected itemHelper: ItemHelper; protected databaseServer: DatabaseServer; protected inventoryHelper: InventoryHelper; protected paymentHelper: PaymentHelper; protected localisationService: LocalisationService; protected profileFixerService: ProfileFixerService; - constructor(logger: ILogger, saveServer: SaveServer, jsonUtil: JsonUtil, databaseServer: DatabaseServer, inventoryHelper: InventoryHelper, paymentHelper: PaymentHelper, localisationService: LocalisationService, profileFixerService: ProfileFixerService); + protected configServer: ConfigServer; + protected lostOnDeathConfig: ILostOnDeathConfig; + constructor(logger: ILogger, saveServer: SaveServer, jsonUtil: JsonUtil, itemHelper: ItemHelper, databaseServer: DatabaseServer, inventoryHelper: InventoryHelper, paymentHelper: PaymentHelper, localisationService: LocalisationService, profileFixerService: ProfileFixerService, configServer: ConfigServer); + /** + * Should quest items be removed from player inventory on death + * @returns True if items should be removed from inventory + */ + removeQuestItemsOnDeath(): boolean; /** * Check an array of items and add an upd object to money items with a stack count of 1 * Single stack money items have no upd object and thus no StackObjectsCount, causing issues @@ -83,7 +94,7 @@ export declare class InRaidHelper { * Remove equipped items from pre-raid * Add new items found in raid to profile * Store insurance items in profile - * @param sessionID + * @param sessionID Session id * @param pmcData Profile to update * @param postRaidProfile Profile returned by client after a raid * @returns Updated profile @@ -94,15 +105,21 @@ export declare class InRaidHelper { * Used post-raid to remove items after death * @param pmcData Player profile * @param sessionID Session id - * @returns Player profile with pmc inventory cleared */ - deleteInventory(pmcData: IPmcData, sessionID: string): IPmcData; + deleteInventory(pmcData: IPmcData, sessionID: string): void; + /** + * Get items in vest/pocket/backpack inventory containers (excluding children) + * @param pmcData Player profile + * @returns Item array + */ + protected getBaseItemsInRigPocketAndBackpack(pmcData: IPmcData): Item[]; /** * Does the provided items slotId mean its kept on the player after death - * @param slotId slotid of item to check + * @pmcData Player profile + * @itemToCheck Item to check should be kept * @returns true if item is kept after death */ - isItemKeptAfterDeath(slotId: string): boolean; + protected isItemKeptAfterDeath(pmcData: IPmcData, itemToCheck: Item): boolean; /** * Return the equipped items from a players inventory * @param items Players inventory to search through diff --git a/Live/CWX_MasterKey/server/types/helpers/InventoryHelper.d.ts b/Live/CWX_MasterKey/server/types/helpers/InventoryHelper.d.ts index 8855d1e..9c31d78 100644 --- a/Live/CWX_MasterKey/server/types/helpers/InventoryHelper.d.ts +++ b/Live/CWX_MasterKey/server/types/helpers/InventoryHelper.d.ts @@ -61,12 +61,12 @@ export declare class InventoryHelper { /** * Add ammo to ammo boxes * @param itemToAdd Item to check is ammo box - * @param toDo + * @param parentId Ammo box parent id * @param output IItemEventRouterResponse object * @param sessionID Session id * @param pmcData Profile to add ammobox to */ - protected hydrateAmmoBoxWithAmmo(pmcData: IPmcData, itemToAdd: IAddItemTempObject, toDo: string[][], sessionID: string, output: IItemEventRouterResponse): void; + protected hydrateAmmoBoxWithAmmo(pmcData: IPmcData, itemToAdd: IAddItemTempObject, parentId: string, sessionID: string, output: IItemEventRouterResponse): void; /** * * @param assortItems Items to add to inventory @@ -111,7 +111,13 @@ export declare class InventoryHelper { /** * Internal helper function to move item within the same profile_f. */ - moveItemInternal(inventoryItems: Item[], body: IInventoryMoveRequestData): void; + moveItemInternal(pmcData: IPmcData, inventoryItems: Item[], moveRequest: IInventoryMoveRequestData): void; + /** + * Update fast panel bindings when an item is moved into a container that doesnt allow quick slot access + * @param pmcData Player profile + * @param itemBeingMoved item being moved + */ + protected updateFastPanelBinding(pmcData: IPmcData, itemBeingMoved: Item): void; /** * Internal helper function to handle cartridges in inventory if any of them exist. */ diff --git a/Live/CWX_MasterKey/server/types/helpers/ItemHelper.d.ts b/Live/CWX_MasterKey/server/types/helpers/ItemHelper.d.ts index de424d2..bd4893c 100644 --- a/Live/CWX_MasterKey/server/types/helpers/ItemHelper.d.ts +++ b/Live/CWX_MasterKey/server/types/helpers/ItemHelper.d.ts @@ -193,31 +193,53 @@ declare class ItemHelper { replaceIDs(pmcData: IPmcData, items: Item[], insuredItems?: InsuredItem[], fastPanel?: any): any[]; /** * WARNING, SLOW. Recursively loop down through an items hierarchy to see if any of the ids match the supplied list, return true if any do - * @param {string} tpl - * @param {Array} tplsToCheck - * @returns boolean + * @param {string} tpl Items tpl to check parents of + * @param {Array} tplsToCheck Tpl values to check if parents of item match + * @returns boolean Match found */ doesItemOrParentsIdMatch(tpl: string, tplsToCheck: string[]): boolean; /** - * Return true if item is a quest item - * @param {string} tpl - * @returns boolean + * Check if item is quest item + * @param tpl Items tpl to check quest status of + * @returns true if item is flagged as quest item */ isQuestItem(tpl: string): boolean; /** * Get the inventory size of an item - * @param items + * @param items Item with children * @param rootItemId * @returns ItemSize object (width and height) */ getItemSize(items: Item[], rootItemId: string): ItemHelper.ItemSize; /** * Get a random cartridge from an items Filter property - * @param item - * @returns + * @param item Db item template to look up Cartridge filter values from + * @returns Caliber of cartridge */ getRandomCompatibleCaliberTemplateId(item: ITemplateItem): string; - createRandomMagCartridges(magTemplate: ITemplateItem, parentId: string, staticAmmoDist: Record, caliber?: string): Item; + /** + * Add cartridges to the ammo box with correct max stack sizes + * @param ammoBox Box to add cartridges to + * @param ammoBoxDetails Item template from items db + */ + addCartridgesToAmmoBox(ammoBox: Item[], ammoBoxDetails: ITemplateItem): void; + /** + * Add child items (cartridges) to a magazine + * @param magazine Magazine to add child items to + * @param magTemplate Db template of magazine + * @param staticAmmoDist Cartridge distribution + * @param caliber Caliber of cartridge to add to magazine + * @param minSizePercent % the magazine must be filled to + */ + fillMagazineWithRandomCartridge(magazine: Item[], magTemplate: ITemplateItem, staticAmmoDist: Record, caliber?: string, minSizePercent?: number): void; + /** + * Add child items to a magazine of a specific cartridge + * @param magazine Magazine to add child items to + * @param magTemplate Db template of magazine + * @param cartridgeTpl Cartridge to add to magazine + * @param minSizePercent % the magazine must be filled to + */ + fillMagazineWithCartridge(magazine: Item[], magTemplate: ITemplateItem, cartridgeTpl: string, minSizePercent?: number): void; protected getRandomValidCaliber(magTemplate: ITemplateItem): string; protected drawAmmoTpl(caliber: string, staticAmmoDist: Record): string; /** diff --git a/Live/CWX_MasterKey/server/types/helpers/ProfileHelper.d.ts b/Live/CWX_MasterKey/server/types/helpers/ProfileHelper.d.ts index 79652ad..28d3d23 100644 --- a/Live/CWX_MasterKey/server/types/helpers/ProfileHelper.d.ts +++ b/Live/CWX_MasterKey/server/types/helpers/ProfileHelper.d.ts @@ -20,7 +20,12 @@ export declare class ProfileHelper { protected itemHelper: ItemHelper; protected profileSnapshotService: ProfileSnapshotService; constructor(logger: ILogger, jsonUtil: JsonUtil, watermark: Watermark, timeUtil: TimeUtil, saveServer: SaveServer, databaseServer: DatabaseServer, itemHelper: ItemHelper, profileSnapshotService: ProfileSnapshotService); - resetProfileQuestCondition(sessionID: string, conditionId: string): void; + /** + * Remove/reset started quest condtions in player profile + * @param sessionID Session id + * @param conditionIds Condition ids that need to be reset/removed + */ + resetProfileQuestCondition(sessionID: string, conditionIds: string[]): void; /** * Get all profiles from server * @returns Dictionary of profiles diff --git a/Live/CWX_MasterKey/server/types/helpers/QuestHelper.d.ts b/Live/CWX_MasterKey/server/types/helpers/QuestHelper.d.ts index de7cba2..1ec9fe8 100644 --- a/Live/CWX_MasterKey/server/types/helpers/QuestHelper.d.ts +++ b/Live/CWX_MasterKey/server/types/helpers/QuestHelper.d.ts @@ -40,7 +40,7 @@ export declare class QuestHelper { protected questConfig: IQuestConfig; constructor(logger: ILogger, jsonUtil: JsonUtil, timeUtil: TimeUtil, hashUtil: HashUtil, itemHelper: ItemHelper, eventOutputHolder: EventOutputHolder, databaseServer: DatabaseServer, localeService: LocaleService, ragfairServerHelper: RagfairServerHelper, dialogueHelper: DialogueHelper, profileHelper: ProfileHelper, paymentHelper: PaymentHelper, localisationService: LocalisationService, traderHelper: TraderHelper, configServer: ConfigServer); /** - * Get status of a quest by quest id + * Get status of a quest in player profile by its id * @param pmcData Profile to search * @param questID Quest id to look up * @returns QuestStatus enum @@ -160,6 +160,13 @@ export declare class QuestHelper { * @returns IQuest object */ getQuestFromDb(questId: string, pmcData: IPmcData): IQuest; + /** + * Get a quests startedMessageText key from db, if no startedMessageText key found, use description key instead + * @param startedMessageTextId startedMessageText property from IQuest + * @param questDescriptionId description property from IQuest + * @returns message id + */ + getMessageIdForQuestStart(startedMessageTextId: string, questDescriptionId: string): string; /** * Get the locale Id from locale db for a quest message * @param questMessageId Quest message id to look up @@ -204,7 +211,7 @@ export declare class QuestHelper { * @param itemTpl item tpl to look for * @returns 'FindItem' condition id */ - getFindItemIdForQuestHandIn(itemTpl: string): string; + getFindItemIdForQuestHandIn(itemTpl: string): string[]; /** * Add all quests to a profile with the provided statuses * @param pmcProfile profile to update diff --git a/Live/CWX_MasterKey/server/types/helpers/RagfairOfferHelper.d.ts b/Live/CWX_MasterKey/server/types/helpers/RagfairOfferHelper.d.ts index 3d0d570..0e92762 100644 --- a/Live/CWX_MasterKey/server/types/helpers/RagfairOfferHelper.d.ts +++ b/Live/CWX_MasterKey/server/types/helpers/RagfairOfferHelper.d.ts @@ -47,7 +47,22 @@ export declare class RagfairOfferHelper { protected questConfig: IQuestConfig; constructor(logger: ILogger, timeUtil: TimeUtil, hashUtil: HashUtil, eventOutputHolder: EventOutputHolder, databaseServer: DatabaseServer, traderHelper: TraderHelper, saveServer: SaveServer, dialogueHelper: DialogueHelper, itemHelper: ItemHelper, paymentHelper: PaymentHelper, presetHelper: PresetHelper, profileHelper: ProfileHelper, ragfairServerHelper: RagfairServerHelper, ragfairSortHelper: RagfairSortHelper, ragfairHelper: RagfairHelper, ragfairOfferService: RagfairOfferService, localeService: LocaleService, configServer: ConfigServer); getValidOffers(searchRequest: ISearchRequestData, itemsToAdd: string[], traderAssorts: Record, pmcProfile: IPmcData): IRagfairOffer[]; - getOffersForBuild(info: ISearchRequestData, itemsToAdd: string[], assorts: Record, pmcProfile: IPmcData): IRagfairOffer[]; + /** + * Get offers from flea/traders specifically when building weapon preset + * @param searchRequest Search request data + * @param itemsToAdd string array of item tpls to search for + * @param traderAssorts All trader assorts player can access/buy + * @param pmcProfile Player profile + * @returns ITraderAssort + */ + getOffersForBuild(searchRequest: ISearchRequestData, itemsToAdd: string[], traderAssorts: Record, pmcProfile: IPmcData): IRagfairOffer[]; + /** + * Check if offer item is quest locked for current player by looking at sptQuestLocked property in traders barter_scheme + * @param offer Offer to check is quest locked + * @param traderAssorts all trader assorts for player + * @returns true if quest locked + */ + traderOfferItemQuestLocked(offer: IRagfairOffer, traderAssorts: Record): boolean; /** * Has a traders offer ran out of stock to sell to player * @param offer Offer to check stock of diff --git a/Live/CWX_MasterKey/server/types/helpers/TraderHelper.d.ts b/Live/CWX_MasterKey/server/types/helpers/TraderHelper.d.ts index 49aea28..fddacba 100644 --- a/Live/CWX_MasterKey/server/types/helpers/TraderHelper.d.ts +++ b/Live/CWX_MasterKey/server/types/helpers/TraderHelper.d.ts @@ -1,7 +1,5 @@ -import { FenceLevel } from "../models/eft/common/IGlobals"; import { IPmcData } from "../models/eft/common/IPmcData"; -import { Item } from "../models/eft/common/tables/IItem"; -import { IBarterScheme, ITraderAssort, ITraderBase, LoyaltyLevel } from "../models/eft/common/tables/ITrader"; +import { ITraderAssort, ITraderBase, LoyaltyLevel } from "../models/eft/common/tables/ITrader"; import { ITraderConfig } from "../models/spt/config/ITraderConfig"; import { ILogger } from "../models/spt/utils/ILogger"; import { ConfigServer } from "../servers/ConfigServer"; @@ -12,16 +10,12 @@ import { LocalisationService } from "../services/LocalisationService"; import { PlayerService } from "../services/PlayerService"; import { TimeUtil } from "../utils/TimeUtil"; import { HandbookHelper } from "./HandbookHelper"; -import { ItemHelper } from "./ItemHelper"; -import { PaymentHelper } from "./PaymentHelper"; import { ProfileHelper } from "./ProfileHelper"; export declare class TraderHelper { protected logger: ILogger; protected databaseServer: DatabaseServer; protected saveServer: SaveServer; protected profileHelper: ProfileHelper; - protected paymentHelper: PaymentHelper; - protected itemHelper: ItemHelper; protected handbookHelper: HandbookHelper; protected playerService: PlayerService; protected localisationService: LocalisationService; @@ -31,7 +25,7 @@ export declare class TraderHelper { protected traderConfig: ITraderConfig; /** Dictionary of item tpl and the highest trader rouble price */ protected highestTraderPriceItems: Record; - constructor(logger: ILogger, databaseServer: DatabaseServer, saveServer: SaveServer, profileHelper: ProfileHelper, paymentHelper: PaymentHelper, itemHelper: ItemHelper, handbookHelper: HandbookHelper, playerService: PlayerService, localisationService: LocalisationService, fenceService: FenceService, timeUtil: TimeUtil, configServer: ConfigServer); + constructor(logger: ILogger, databaseServer: DatabaseServer, saveServer: SaveServer, profileHelper: ProfileHelper, handbookHelper: HandbookHelper, playerService: PlayerService, localisationService: LocalisationService, fenceService: FenceService, timeUtil: TimeUtil, configServer: ConfigServer); getTrader(traderID: string, sessionID: string): ITraderBase; getTraderAssortsById(traderId: string): ITraderAssort; /** @@ -48,62 +42,6 @@ export declare class TraderHelper { * @param sessionId Session id */ setTraderUnlockedState(traderId: string, status: boolean, sessionId: string): void; - /** - * Get a list of items and their prices from player inventory that can be sold to a trader - * @param traderID trader id being traded with - * @param sessionID session id - * @returns IBarterScheme[][] - */ - getPurchasesData(traderID: string, sessionID: string): Record; - /** - * Should item be skipped when selling to trader according to its sell categories and other checks - * @param pmcData Profile - * @param item Item to be checked is sellable to trader - * @param sellCategory categories trader will buy - * @param traderId Trader item is being checked can be sold to - * @returns true if should NOT be sold to trader - */ - protected isItemUnSellableToTrader(pmcData: IPmcData, item: Item, sellCategory: string[], traderId: string): boolean; - /** - * Check if item has durability so low it precludes it from being sold to the trader (inclusive) - * @param item Item to check durability of - * @param traderId Trader item is sold to - * @returns - */ - protected itemIsBelowSellableDurabilityThreshhold(item: Item, traderId: string): boolean; - /** - * Get the percentage threshold value a trader will buy armor/weapons above - * @param traderId Trader to look up - * @returns percentage - */ - protected getTraderDurabiltyPurchaseThreshold(traderId: string): number; - /** - * Get the price of passed in item and all of its attached children (mods) - * Take into account bonuses/adjustments e.g. discounts - * @param pmcData profile data - * @param item item to calculate price of - * @param buyPriceCoefficient - * @param fenceInfo fence data - * @param traderBase trader details - * @param currencyTpl Currency to get price as - * @returns price of item + children - */ - protected getAdjustedItemPrice(pmcData: IPmcData, item: Item, buyPriceCoefficient: number, fenceInfo: FenceLevel, traderBase: ITraderBase, currencyTpl: string): number; - /** - * Get the raw price of item+child items from handbook without any modification - * @param pmcData profile data - * @param item item to calculate price of - * @returns price as number - */ - protected getRawItemPrice(pmcData: IPmcData, item: Item): number; - /** - * Get discount modifier for desired trader - * @param trader Trader to get discount for - * @param buyPriceCoefficient - * @param fenceInfo fence info, needed if getting fence modifier value - * @returns discount modifier value - */ - protected getTraderDiscount(trader: ITraderBase, buyPriceCoefficient: number, fenceInfo: FenceLevel): number; /** * Add standing to a trader and level them up if exp goes over level threshold * @param sessionId Session id @@ -129,13 +67,6 @@ export declare class TraderHelper { * @returns Time in seconds */ getTraderUpdateSeconds(traderId: string): number; - /** - * check if an item is allowed to be sold to a trader - * @param categoriesTraderBuys array of allowed categories - * @param tplToCheck itemTpl of inventory - * @returns boolean if item can be sold to trader - */ - doesTraderBuyItem(categoriesTraderBuys: string[], tplToCheck: string): boolean; getLoyaltyLevel(traderID: string, pmcData: IPmcData): LoyaltyLevel; /** * Store the purchase of an assort from a trader in the player profile diff --git a/Live/CWX_MasterKey/server/types/loaders/PostAkiModLoader.d.ts b/Live/CWX_MasterKey/server/types/loaders/PostAkiModLoader.d.ts index 5df8c6c..848e9f3 100644 --- a/Live/CWX_MasterKey/server/types/loaders/PostAkiModLoader.d.ts +++ b/Live/CWX_MasterKey/server/types/loaders/PostAkiModLoader.d.ts @@ -1,15 +1,19 @@ import { DependencyContainer } from "tsyringe"; import { IModLoader } from "../models/spt/mod/IModLoader"; +import { ILogger } from "../models/spt/utils/ILogger"; +import { LocalisationService } from "../services/LocalisationService"; import { VFS } from "../utils/VFS"; import { BundleLoader } from "./BundleLoader"; import { ModTypeCheck } from "./ModTypeCheck"; import { PreAkiModLoader } from "./PreAkiModLoader"; export declare class PostAkiModLoader implements IModLoader { + protected logger: ILogger; protected bundleLoader: BundleLoader; protected vfs: VFS; protected preAkiModLoader: PreAkiModLoader; + protected localisationService: LocalisationService; protected modTypeCheck: ModTypeCheck; - constructor(bundleLoader: BundleLoader, vfs: VFS, preAkiModLoader: PreAkiModLoader, modTypeCheck: ModTypeCheck); + constructor(logger: ILogger, bundleLoader: BundleLoader, vfs: VFS, preAkiModLoader: PreAkiModLoader, localisationService: LocalisationService, modTypeCheck: ModTypeCheck); getModPath(mod: string): string; load(): Promise; protected executeMods(container: DependencyContainer): Promise; diff --git a/Live/CWX_MasterKey/server/types/loaders/PostDBModLoader.d.ts b/Live/CWX_MasterKey/server/types/loaders/PostDBModLoader.d.ts index c4cda5c..eef160b 100644 --- a/Live/CWX_MasterKey/server/types/loaders/PostDBModLoader.d.ts +++ b/Live/CWX_MasterKey/server/types/loaders/PostDBModLoader.d.ts @@ -1,11 +1,15 @@ import { DependencyContainer } from "tsyringe"; import { OnLoad } from "../di/OnLoad"; +import { ILogger } from "../models/spt/utils/ILogger"; +import { LocalisationService } from "../services/LocalisationService"; import { ModTypeCheck } from "./ModTypeCheck"; import { PreAkiModLoader } from "./PreAkiModLoader"; export declare class PostDBModLoader implements OnLoad { + protected logger: ILogger; protected preAkiModLoader: PreAkiModLoader; + protected localisationService: LocalisationService; protected modTypeCheck: ModTypeCheck; - constructor(preAkiModLoader: PreAkiModLoader, modTypeCheck: ModTypeCheck); + constructor(logger: ILogger, preAkiModLoader: PreAkiModLoader, localisationService: LocalisationService, modTypeCheck: ModTypeCheck); onLoad(): Promise; getRoute(): string; getModPath(mod: string): string; diff --git a/Live/CWX_MasterKey/server/types/models/eft/common/IGlobals.d.ts b/Live/CWX_MasterKey/server/types/models/eft/common/IGlobals.d.ts index b5ed401..5790cde 100644 --- a/Live/CWX_MasterKey/server/types/models/eft/common/IGlobals.d.ts +++ b/Live/CWX_MasterKey/server/types/models/eft/common/IGlobals.d.ts @@ -70,6 +70,7 @@ export interface Config { EventType: string[]; WalkSpeed: xyz; SprintSpeed: xyz; + SquadSettings: ISquadSettings; SkillEnduranceWeightThreshold: number; TeamSearchingTimeout: number; Insurance: Insurance; @@ -803,6 +804,11 @@ export interface RestrictionsInRaid { TemplateId: string; Value: number; } +export interface ISquadSettings { + CountOfRequestsToOnePlayer: number; + SecondsForExpiredRequest: number; + SendRequestDelaySeconds: number; +} export interface Insurance { MaxStorageTimeInHour: number; } diff --git a/Live/CWX_MasterKey/server/types/models/eft/common/ILooseLoot.d.ts b/Live/CWX_MasterKey/server/types/models/eft/common/ILooseLoot.d.ts index 14b795e..572ec69 100644 --- a/Live/CWX_MasterKey/server/types/models/eft/common/ILooseLoot.d.ts +++ b/Live/CWX_MasterKey/server/types/models/eft/common/ILooseLoot.d.ts @@ -1,3 +1,4 @@ +import { Item } from "./tables/IItem"; export interface ILooseLoot { spawnpointCount: SpawnpointCount; spawnpointsForced: SpawnpointsForced[]; @@ -24,10 +25,6 @@ export interface SpawnpointTemplate { Root: any; Items: Item[]; } -export interface Item { - _id: string; - _tpl?: string; -} export interface Spawnpoint { locationId: string; probability: number; @@ -40,6 +37,9 @@ export interface Xyz { z: number; } export interface ItemDistribution { - tpl: string; + composedKey: ComposedKey; relativeProbability: number; } +export interface ComposedKey { + key: string; +} diff --git a/Live/CWX_MasterKey/server/types/models/eft/common/tables/IBotBase.d.ts b/Live/CWX_MasterKey/server/types/models/eft/common/tables/IBotBase.d.ts index dd7c478..82a925b 100644 --- a/Live/CWX_MasterKey/server/types/models/eft/common/tables/IBotBase.d.ts +++ b/Live/CWX_MasterKey/server/types/models/eft/common/tables/IBotBase.d.ts @@ -120,9 +120,7 @@ export interface Inventory { sortingTable: string; questRaidItems: string; questStashItems: string; - fastPanel: FastPanel; -} -export interface FastPanel { + fastPanel: Record; } export interface Skills { Common: Common[]; diff --git a/Live/CWX_MasterKey/server/types/models/eft/common/tables/IQuest.d.ts b/Live/CWX_MasterKey/server/types/models/eft/common/tables/IQuest.d.ts index 5c939e1..52968b1 100644 --- a/Live/CWX_MasterKey/server/types/models/eft/common/tables/IQuest.d.ts +++ b/Live/CWX_MasterKey/server/types/models/eft/common/tables/IQuest.d.ts @@ -46,7 +46,7 @@ export interface AvailableForProps { parentId: string; isEncoded: boolean; dynamicLocale: boolean; - value?: number; + value?: string | number; compareMethod?: string; visibilityConditions?: VisibilityCondition[]; target?: string | string[]; diff --git a/Live/CWX_MasterKey/server/types/models/eft/hideout/IHideoutProduction.d.ts b/Live/CWX_MasterKey/server/types/models/eft/hideout/IHideoutProduction.d.ts index 2367e08..8bed3cc 100644 --- a/Live/CWX_MasterKey/server/types/models/eft/hideout/IHideoutProduction.d.ts +++ b/Live/CWX_MasterKey/server/types/models/eft/hideout/IHideoutProduction.d.ts @@ -20,4 +20,5 @@ export interface Requirement { areaType?: number; requiredLevel?: number; resource?: number; + questId?: string; } diff --git a/Live/CWX_MasterKey/server/types/models/eft/match/IEndOfflineRaidRequestData.d.ts b/Live/CWX_MasterKey/server/types/models/eft/match/IEndOfflineRaidRequestData.d.ts index 811e9a2..9368c32 100644 --- a/Live/CWX_MasterKey/server/types/models/eft/match/IEndOfflineRaidRequestData.d.ts +++ b/Live/CWX_MasterKey/server/types/models/eft/match/IEndOfflineRaidRequestData.d.ts @@ -1,6 +1,6 @@ export interface IEndOfflineRaidRequestData { crc: number; exitStatus: string; - exitName: any; + exitName: string; raidSeconds: number; } diff --git a/Live/CWX_MasterKey/server/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts b/Live/CWX_MasterKey/server/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts index cbcc2f6..ed3dfab 100644 --- a/Live/CWX_MasterKey/server/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts +++ b/Live/CWX_MasterKey/server/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts @@ -1,4 +1,7 @@ export interface IGetRaidConfigurationRequestData { + keyId: string; + side: string; + location: string; timeVariant: string; raidMode: string; metabolismDisabled: boolean; @@ -6,7 +9,6 @@ export interface IGetRaidConfigurationRequestData { timeAndWeatherSettings: TimeAndWeatherSettings; botSettings: BotSettings; wavesSettings: WavesSettings; - location: string; } export interface TimeAndWeatherSettings { isRandomTime: boolean; diff --git a/Live/CWX_MasterKey/server/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts b/Live/CWX_MasterKey/server/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts index 99c61f1..42549e6 100644 --- a/Live/CWX_MasterKey/server/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts +++ b/Live/CWX_MasterKey/server/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts @@ -1,3 +1,4 @@ +import { Upd } from "../common/tables/IItem"; export interface IPresetBuildActionRequestData { Action: string; id: string; @@ -12,14 +13,3 @@ export interface Item { parentId?: string; slotId?: string; } -export interface Upd { - Repairable: Repairable; - FireMode: FireMode; -} -export interface Repairable { - MaxDurability: number; - Durability: number; -} -export interface FireMode { - FireMode: string; -} diff --git a/Live/CWX_MasterKey/server/types/models/eft/profile/IGetProfileSettingsRequest.d.ts b/Live/CWX_MasterKey/server/types/models/eft/profile/IGetProfileSettingsRequest.d.ts new file mode 100644 index 0000000..8168615 --- /dev/null +++ b/Live/CWX_MasterKey/server/types/models/eft/profile/IGetProfileSettingsRequest.d.ts @@ -0,0 +1,3 @@ +export interface IGetProfileSettingsRequest { + squadInviteRestriction: boolean; +} diff --git a/Live/CWX_MasterKey/server/types/models/enums/ConfigTypes.d.ts b/Live/CWX_MasterKey/server/types/models/enums/ConfigTypes.d.ts index 9c48b68..d849010 100644 --- a/Live/CWX_MasterKey/server/types/models/enums/ConfigTypes.d.ts +++ b/Live/CWX_MasterKey/server/types/models/enums/ConfigTypes.d.ts @@ -19,5 +19,6 @@ export declare enum ConfigTypes { SCAVCASE = "aki-scavcase", TRADER = "aki-trader", WEATHER = "aki-weather", - SEASONAL_EVENT = "aki-seasonalevents" + SEASONAL_EVENT = "aki-seasonalevents", + LOST_ON_DEATH = "aki-lostondeath" } diff --git a/Live/CWX_MasterKey/server/types/models/spt/callbacks/ITraderCallbacks.d.ts b/Live/CWX_MasterKey/server/types/models/spt/callbacks/ITraderCallbacks.d.ts index e0d7d06..b784408 100644 --- a/Live/CWX_MasterKey/server/types/models/spt/callbacks/ITraderCallbacks.d.ts +++ b/Live/CWX_MasterKey/server/types/models/spt/callbacks/ITraderCallbacks.d.ts @@ -1,10 +1,9 @@ import { IEmptyRequestData } from "../../eft/common/IEmptyRequestData"; -import { IBarterScheme, ITraderAssort, ITraderBase } from "../../eft/common/tables/ITrader"; +import { ITraderAssort, ITraderBase } from "../../eft/common/tables/ITrader"; import { IGetBodyResponseData } from "../../eft/httpResponse/IGetBodyResponseData"; export interface ITraderCallbacks { load(): void; getTraderSettings(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; - getProfilePurchases(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData>; getTrader(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; getAssort(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; update(): boolean; diff --git a/Live/CWX_MasterKey/server/types/models/spt/config/IHttpConfig.d.ts b/Live/CWX_MasterKey/server/types/models/spt/config/IHttpConfig.d.ts index 3fe4787..c34c11d 100644 --- a/Live/CWX_MasterKey/server/types/models/spt/config/IHttpConfig.d.ts +++ b/Live/CWX_MasterKey/server/types/models/spt/config/IHttpConfig.d.ts @@ -4,4 +4,5 @@ export interface IHttpConfig extends IBaseConfig { kind: "aki-http"; ip: string; port: number; + logRequests: boolean; } diff --git a/Live/CWX_MasterKey/server/types/models/spt/config/ILocationConfig.d.ts b/Live/CWX_MasterKey/server/types/models/spt/config/ILocationConfig.d.ts index f808ad8..bcd91cc 100644 --- a/Live/CWX_MasterKey/server/types/models/spt/config/ILocationConfig.d.ts +++ b/Live/CWX_MasterKey/server/types/models/spt/config/ILocationConfig.d.ts @@ -2,9 +2,9 @@ import { BossLocationSpawn, Wave } from "../../../models/eft/common/ILocationBas import { IBaseConfig } from "./IBaseConfig"; export interface ILocationConfig extends IBaseConfig { kind: "aki-location"; - fixEmptyBotWaves: boolean; - fixRoguesTakingAllSpawnsOnLighthouse: boolean; - lighthouseRogueSpawnTimeSeconds: number; + fixEmptyBotWavesSettings: IFixEmptyBotWavesSettings; + rogueLighthouseSpawnTimeSettings: IRogueLighthouseSpawnTimeSettings; + splitWaveIntoSingleSpawnsSettings: ISplitWaveSettings; looseLootMultiplier: LootMultiplier; staticLootMultiplier: LootMultiplier; customWaves: CustomWaves; @@ -12,6 +12,21 @@ export interface ILocationConfig extends IBaseConfig { openZones: Record; /** Key = map id, value = item tpls that should only have one forced loot spawn position */ forcedLootSingleSpawnById: Record; + /** How many attempts should be taken to fit an item into a container before giving up */ + fitLootIntoContainerAttempts: number; +} +export interface IFixEmptyBotWavesSettings { + enabled: boolean; + ignoreMaps: string[]; +} +export interface IRogueLighthouseSpawnTimeSettings { + enabled: boolean; + waitTimeSeconds: number; +} +export interface ISplitWaveSettings { + enabled: boolean; + ignoreMaps: string[]; + waveSizeThreshold: number; } export interface CustomWaves { boss: Record; diff --git a/Live/CWX_MasterKey/server/types/models/spt/config/ILostOnDeathConfig.d.ts b/Live/CWX_MasterKey/server/types/models/spt/config/ILostOnDeathConfig.d.ts new file mode 100644 index 0000000..b557afe --- /dev/null +++ b/Live/CWX_MasterKey/server/types/models/spt/config/ILostOnDeathConfig.d.ts @@ -0,0 +1,21 @@ +import { IBaseConfig } from "./IBaseConfig"; +export interface ILostOnDeathConfig extends IBaseConfig { + kind: "aki-lostondeath"; + equipment: Equipment; + specialSlotItems: boolean; + questItems: boolean; +} +export interface Equipment { + ArmBand: boolean; + Headwear: boolean; + Earpiece: boolean; + FaceCover: boolean; + ArmorVest: boolean; + Eyewear: boolean; + TacticalVest: boolean; + Backpack: boolean; + Holster: boolean; + FirstPrimaryWeapon: boolean; + SecondPrimaryWeapon: boolean; + Scabbard: boolean; +} diff --git a/Live/CWX_MasterKey/server/types/models/spt/config/IPmcConfig.d.ts b/Live/CWX_MasterKey/server/types/models/spt/config/IPmcConfig.d.ts index 979122c..87098da 100644 --- a/Live/CWX_MasterKey/server/types/models/spt/config/IPmcConfig.d.ts +++ b/Live/CWX_MasterKey/server/types/models/spt/config/IPmcConfig.d.ts @@ -1,5 +1,8 @@ import { MinMax } from "../../common/MinMax"; export interface IPmcConfig { + vestLoot: SlotLootSettings; + pocketLoot: SlotLootSettings; + backpackLoot: SlotLootSettings; dynamicLoot: DynamicLoot; useDifficultyOverride: boolean; difficulty: string; @@ -22,8 +25,11 @@ export interface PmcTypes { usec: string; bear: string; } -export interface DynamicLoot { +export interface SlotLootSettings { whitelist: string[]; blacklist: string[]; moneyStackLimits: Record; } +export interface DynamicLoot { + moneyStackLimits: Record; +} diff --git a/Live/CWX_MasterKey/server/types/models/spt/config/IQuestConfig.d.ts b/Live/CWX_MasterKey/server/types/models/spt/config/IQuestConfig.d.ts index 9adfaba..94c00fd 100644 --- a/Live/CWX_MasterKey/server/types/models/spt/config/IQuestConfig.d.ts +++ b/Live/CWX_MasterKey/server/types/models/spt/config/IQuestConfig.d.ts @@ -1,3 +1,4 @@ +import { MinMax } from "../../../models/common/MinMax"; import { ELocationName } from "../../enums/ELocationName"; import { IBaseConfig } from "./IBaseConfig"; export interface IQuestConfig extends IBaseConfig { @@ -50,7 +51,7 @@ export interface ITraderWhitelist { export interface IRepeatableQuestTypesConfig { Exploration: IExploration; Completion: ICompletion; - Elimination: IElimination; + Elimination: IEliminationConfig[]; } export interface IExploration { maxExtracts: number; @@ -68,7 +69,8 @@ export interface ICompletion { useWhitelist: boolean; useBlacklist: boolean; } -export interface IElimination { +export interface IEliminationConfig { + levelRange: MinMax; targets: ITarget[]; bodyPartProb: number; bodyParts: IBodyPart[]; @@ -80,11 +82,6 @@ export interface IElimination { maxKills: number; minKills: number; } -export interface IProbabilityObject { - key: string; - relativeProbability: number; - data?: any; -} export interface ITarget extends IProbabilityObject { data: IBossInfo; } @@ -94,3 +91,8 @@ export interface IBossInfo { export interface IBodyPart extends IProbabilityObject { data: string[]; } +export interface IProbabilityObject { + key: string; + relativeProbability: number; + data?: any; +} diff --git a/Live/CWX_MasterKey/server/types/models/spt/config/IRagfairConfig.d.ts b/Live/CWX_MasterKey/server/types/models/spt/config/IRagfairConfig.d.ts index 3fa04de..75357d0 100644 --- a/Live/CWX_MasterKey/server/types/models/spt/config/IRagfairConfig.d.ts +++ b/Live/CWX_MasterKey/server/types/models/spt/config/IRagfairConfig.d.ts @@ -30,6 +30,8 @@ export interface Reputation { } export interface Dynamic { purchasesAreFoundInRaid: boolean; + /** Use the highest trader price for an offer if its greater than the price in templates/prices.json */ + useTraderPriceForOffersIfHigher: boolean; barter: Barter; offerAdjustment: OfferAdjustment; expiredOfferThreshold: number; diff --git a/Live/CWX_MasterKey/server/types/models/spt/config/ITraderConfig.d.ts b/Live/CWX_MasterKey/server/types/models/spt/config/ITraderConfig.d.ts index 56c7d35..832f22a 100644 --- a/Live/CWX_MasterKey/server/types/models/spt/config/ITraderConfig.d.ts +++ b/Live/CWX_MasterKey/server/types/models/spt/config/ITraderConfig.d.ts @@ -3,9 +3,8 @@ import { IBaseConfig } from "./IBaseConfig"; export interface ITraderConfig extends IBaseConfig { kind: "aki-trader"; updateTime: UpdateTime[]; + purchasesAreFoundInRaid: boolean; updateTimeDefault: number; - /** What % of max durability an item needs to sell to a trader*/ - durabilityPurchaseThreshhold: Record; traderPriceMultipler: number; persistPurchaseDataInProfile: boolean; fence: FenceConfig; diff --git a/Live/CWX_MasterKey/server/types/models/spt/mod/NewItemDetails.d.ts b/Live/CWX_MasterKey/server/types/models/spt/mod/NewItemDetails.d.ts index fc69a06..9e37cc9 100644 --- a/Live/CWX_MasterKey/server/types/models/spt/mod/NewItemDetails.d.ts +++ b/Live/CWX_MasterKey/server/types/models/spt/mod/NewItemDetails.d.ts @@ -4,6 +4,8 @@ export declare abstract class NewItemDetailsBase { fleaPriceRoubles: number; /** Price of the item in the handbook */ handbookPriceRoubles: number; + /** Handbook ParentId for the new item */ + handbookParentId: string; /** * A dictionary for locale settings, key = langauge (e.g. en,cn,es-mx,jp,fr) * If a language is not included, the first item in the array will be used in its place diff --git a/Live/CWX_MasterKey/server/types/services/InsuranceService.d.ts b/Live/CWX_MasterKey/server/types/services/InsuranceService.d.ts index 886a298..55baa1a 100644 --- a/Live/CWX_MasterKey/server/types/services/InsuranceService.d.ts +++ b/Live/CWX_MasterKey/server/types/services/InsuranceService.d.ts @@ -63,8 +63,16 @@ export declare class InsuranceService { * @param offraidData post-raid request object * @param preRaidGear gear player wore prior to raid * @param sessionID Session id + * @param playerDied did the player die in raid + */ + storeLostGear(pmcData: IPmcData, offraidData: ISaveProgressRequestData, preRaidGear: Item[], sessionID: string, playerDied: boolean): void; + /** + * Store insured items on pmc death inside insurance array in player profile + * @param pmcData Player profile + * @param offraidData Player gear post-raid + * @param preRaidGear Player gear before raid + * @param sessionID Session id */ - storeLostGear(pmcData: IPmcData, offraidData: ISaveProgressRequestData, preRaidGear: Item[], sessionID: string): void; storeInsuredItemsForReturn(pmcData: IPmcData, offraidData: ISaveProgressRequestData, preRaidGear: Item[], sessionID: string): void; /** * Add gear item to InsuredItems array in player profile diff --git a/Live/CWX_WeatherPatcher/CWX_WeatherPatcher 2.4.9/BepInEx/plugins/CWX-WeatherPatcher.dll b/Live/CWX_WeatherPatcher/CWX_WeatherPatcher 2.5.0/BepInEx/plugins/CWX-WeatherPatcher.dll similarity index 87% rename from Live/CWX_WeatherPatcher/CWX_WeatherPatcher 2.4.9/BepInEx/plugins/CWX-WeatherPatcher.dll rename to Live/CWX_WeatherPatcher/CWX_WeatherPatcher 2.5.0/BepInEx/plugins/CWX-WeatherPatcher.dll index 3239931185029aff976351beb2056f83cdb3d8c8..d5ec6b5fe24ac62ec782f0b315bc746218885e6b 100644 GIT binary patch delta 212 zcmZoLX)u}4!NS%SykTR{G7e@|28PL|oW6{ro0~bmvI^w$oVoO6b*azBdDlG*4eAze z?%=m#6fo5@&@*6Q;9_K8HPQoeCSMXT=LgaZP{4Mh?8syZ!2khi`?UfI>D4|576eI5P890c%qa1n5ded-K0N>c delta 212 zcmZoLX)u}4!IG7)(Xp{-83!{91IJ`jPG3gh&CQ%&Sp`<+d4^67ozW&$XEr zU-McgR|sY(Km|+QK?Q-T8A?9nFi*LjaLl!Ha@i)K4kmsU1}30k91Ku;^K_9&MphFB gJqC--Uq#)a%*l@8`kY`vpoGEXM4^t&j1vDD0nO(?O8@`> diff --git a/Live/CWX_WeatherPatcher/CWX_WeatherPatcher.csproj b/Live/CWX_WeatherPatcher/CWX_WeatherPatcher.csproj index cb3d650..0d2e45e 100644 --- a/Live/CWX_WeatherPatcher/CWX_WeatherPatcher.csproj +++ b/Live/CWX_WeatherPatcher/CWX_WeatherPatcher.csproj @@ -3,7 +3,7 @@ net472 CWX-WeatherPatcher - 2.4.9 + 2.5.0 diff --git a/Live/CWX_WeatherPatcher/WeatherPatcher.cs b/Live/CWX_WeatherPatcher/WeatherPatcher.cs index b1e497d..79c1aff 100644 --- a/Live/CWX_WeatherPatcher/WeatherPatcher.cs +++ b/Live/CWX_WeatherPatcher/WeatherPatcher.cs @@ -3,7 +3,7 @@ using EFT.Weather; namespace CWX_WeatherPatcher { - [BepInPlugin("com.CWX.WeatherPatcher", "CWX-WeatherPatcher", "2.4.9")] + [BepInPlugin("com.CWX.WeatherPatcher", "CWX-WeatherPatcher", "2.5.0")] public class WeatherPatcher : BaseUnityPlugin { private void Awake()