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 8554c38..5ba10f4 100644
Binary files a/Live/CWX_BushWhacker/CWX-BushWhacker 1.2.9/bepInEx/plugins/CWX-BushWhacker.dll and b/Live/CWX_BushWhacker/CWX-BushWhacker 1.3.0/bepInEx/plugins/CWX-BushWhacker.dll differ
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 73ed681..b495f02 100644
Binary files a/Live/CWX_DeSharpener/CWX-DeSharpener 1.4.9/bepInEx/plugins/CWX-DeSharpener.dll and b/Live/CWX_DeSharpener/CWX-DeSharpener 1.5.0/bepInEx/plugins/CWX-DeSharpener.dll differ
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 0000000..41f789c
Binary files /dev/null and b/Live/CWX_DebuggingTool/CWX_DebuggingTool 1.0.0/BepInEx/plugins/CWX_DebuggingTool.dll differ
diff --git a/Live/CWX_MasterKey/CWX_MasterKey 1.4.1/bepInEx/plugins/CWX-MasterKey.dll b/Live/CWX_MasterKey/CWX_MasterKey 1.4.2/bepInEx/plugins/CWX-MasterKey.dll
similarity index 75%
rename from Live/CWX_MasterKey/CWX_MasterKey 1.4.1/bepInEx/plugins/CWX-MasterKey.dll
rename to Live/CWX_MasterKey/CWX_MasterKey 1.4.2/bepInEx/plugins/CWX-MasterKey.dll
index d9423f6..6ddcdaf 100644
Binary files a/Live/CWX_MasterKey/CWX_MasterKey 1.4.1/bepInEx/plugins/CWX-MasterKey.dll and b/Live/CWX_MasterKey/CWX_MasterKey 1.4.2/bepInEx/plugins/CWX-MasterKey.dll differ
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 3239931..d5ec6b5 100644
Binary files a/Live/CWX_WeatherPatcher/CWX_WeatherPatcher 2.4.9/BepInEx/plugins/CWX-WeatherPatcher.dll and b/Live/CWX_WeatherPatcher/CWX_WeatherPatcher 2.5.0/BepInEx/plugins/CWX-WeatherPatcher.dll differ
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()