Update types for 3.5.1
This commit is contained in:
parent
95cca5325e
commit
f01d0bab6e
@ -2,7 +2,7 @@ import { OnLoad } from "../di/OnLoad";
|
|||||||
import { OnUpdate } from "../di/OnUpdate";
|
import { OnUpdate } from "../di/OnUpdate";
|
||||||
import { TraderController } from "../controllers/TraderController";
|
import { TraderController } from "../controllers/TraderController";
|
||||||
import { IEmptyRequestData } from "../models/eft/common/IEmptyRequestData";
|
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 { IGetBodyResponseData } from "../models/eft/httpResponse/IGetBodyResponseData";
|
||||||
import { HttpResponseUtil } from "../utils/HttpResponseUtil";
|
import { HttpResponseUtil } from "../utils/HttpResponseUtil";
|
||||||
export declare class TraderCallbacks implements OnLoad, OnUpdate {
|
export declare class TraderCallbacks implements OnLoad, OnUpdate {
|
||||||
@ -13,11 +13,6 @@ export declare class TraderCallbacks implements OnLoad, OnUpdate {
|
|||||||
onUpdate(): Promise<boolean>;
|
onUpdate(): Promise<boolean>;
|
||||||
getRoute(): string;
|
getRoute(): string;
|
||||||
getTraderSettings(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<ITraderBase[]>;
|
getTraderSettings(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<ITraderBase[]>;
|
||||||
/**
|
|
||||||
* Handle client/trading/api/getUserAssortPrice/trader
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
getProfilePurchases(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<Record<string, IBarterScheme[][]>>;
|
|
||||||
getTrader(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<ITraderBase>;
|
getTrader(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<ITraderBase>;
|
||||||
getAssort(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<ITraderAssort>;
|
getAssort(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<ITraderAssort>;
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
import { PlayerScavGenerator } from "../generators/PlayerScavGenerator";
|
import { PlayerScavGenerator } from "../generators/PlayerScavGenerator";
|
||||||
|
import { DialogueHelper } from "../helpers/DialogueHelper";
|
||||||
import { ItemHelper } from "../helpers/ItemHelper";
|
import { ItemHelper } from "../helpers/ItemHelper";
|
||||||
import { ProfileHelper } from "../helpers/ProfileHelper";
|
import { ProfileHelper } from "../helpers/ProfileHelper";
|
||||||
import { QuestHelper } from "../helpers/QuestHelper";
|
import { QuestHelper } from "../helpers/QuestHelper";
|
||||||
@ -11,6 +12,7 @@ import { IProfileCreateRequestData } from "../models/eft/profile/IProfileCreateR
|
|||||||
import { ISearchFriendRequestData } from "../models/eft/profile/ISearchFriendRequestData";
|
import { ISearchFriendRequestData } from "../models/eft/profile/ISearchFriendRequestData";
|
||||||
import { ISearchFriendResponse } from "../models/eft/profile/ISearchFriendResponse";
|
import { ISearchFriendResponse } from "../models/eft/profile/ISearchFriendResponse";
|
||||||
import { IValidateNicknameRequestData } from "../models/eft/profile/IValidateNicknameRequestData";
|
import { IValidateNicknameRequestData } from "../models/eft/profile/IValidateNicknameRequestData";
|
||||||
|
import { EventOutputHolder } from "../routers/EventOutputHolder";
|
||||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
import { DatabaseServer } from "../servers/DatabaseServer";
|
||||||
import { SaveServer } from "../servers/SaveServer";
|
import { SaveServer } from "../servers/SaveServer";
|
||||||
import { ProfileFixerService } from "../services/ProfileFixerService";
|
import { ProfileFixerService } from "../services/ProfileFixerService";
|
||||||
@ -24,10 +26,12 @@ export declare class ProfileController {
|
|||||||
protected itemHelper: ItemHelper;
|
protected itemHelper: ItemHelper;
|
||||||
protected profileFixerService: ProfileFixerService;
|
protected profileFixerService: ProfileFixerService;
|
||||||
protected playerScavGenerator: PlayerScavGenerator;
|
protected playerScavGenerator: PlayerScavGenerator;
|
||||||
|
protected eventOutputHolder: EventOutputHolder;
|
||||||
protected traderHelper: TraderHelper;
|
protected traderHelper: TraderHelper;
|
||||||
|
protected dialogueHelper: DialogueHelper;
|
||||||
protected questHelper: QuestHelper;
|
protected questHelper: QuestHelper;
|
||||||
protected profileHelper: ProfileHelper;
|
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[];
|
getMiniProfiles(): IMiniProfile[];
|
||||||
getMiniProfile(sessionID: string): any;
|
getMiniProfile(sessionID: string): any;
|
||||||
getCompleteProfile(sessionID: string): IPmcData[];
|
getCompleteProfile(sessionID: string): IPmcData[];
|
||||||
|
@ -60,13 +60,6 @@ export declare class QuestController {
|
|||||||
* @returns client response
|
* @returns client response
|
||||||
*/
|
*/
|
||||||
acceptQuest(pmcData: IPmcData, acceptedQuest: IAcceptQuestRequestData, sessionID: string): IItemEventRouterResponse;
|
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
|
* Handle the client accepting a repeatable quest and starting it
|
||||||
* Send starting rewards if any to player and
|
* Send starting rewards if any to player and
|
||||||
@ -123,7 +116,14 @@ export declare class QuestController {
|
|||||||
* @param questsToFail quests to fail
|
* @param questsToFail quests to fail
|
||||||
*/
|
*/
|
||||||
protected failQuests(sessionID: string, pmcData: IPmcData, questsToFail: IQuest[]): void;
|
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,
|
* Increment a backend counter stored value by an amount,
|
||||||
* Create counter if it does not exist
|
* Create counter if it does not exist
|
||||||
|
@ -12,7 +12,7 @@ import { ITemplateItem } from "../models/eft/common/tables/ITemplateItem";
|
|||||||
import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse";
|
import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse";
|
||||||
import { IRepeatableQuestChangeRequest } from "../models/eft/quests/IRepeatableQuestChangeRequest";
|
import { IRepeatableQuestChangeRequest } from "../models/eft/quests/IRepeatableQuestChangeRequest";
|
||||||
import { ELocationName } from "../models/enums/ELocationName";
|
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 { ILogger } from "../models/spt/utils/ILogger";
|
||||||
import { EventOutputHolder } from "../routers/EventOutputHolder";
|
import { EventOutputHolder } from "../routers/EventOutputHolder";
|
||||||
import { ConfigServer } from "../servers/ConfigServer";
|
import { ConfigServer } from "../servers/ConfigServer";
|
||||||
@ -159,7 +159,14 @@ export declare class RepeatableQuestController {
|
|||||||
*/
|
*/
|
||||||
generateEliminationQuest(pmcLevel: number, traderId: string, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IElimination;
|
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
|
* @param locationKey e.g factory4_day
|
||||||
* @returns guid
|
* @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
|
* 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
|
* 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.
|
* where you have to e.g. kill scavs in same locations.
|
||||||
*
|
* @param repeatableConfig main repeatable quest config
|
||||||
* @returns {object} the quest pool
|
* @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
|
* Generate the reward for a mission. A reward can consist of
|
||||||
* - Experience
|
* - Experience
|
||||||
|
@ -2,27 +2,25 @@ import { FenceBaseAssortGenerator } from "../generators/FenceBaseAssortGenerator
|
|||||||
import { ProfileHelper } from "../helpers/ProfileHelper";
|
import { ProfileHelper } from "../helpers/ProfileHelper";
|
||||||
import { TraderAssortHelper } from "../helpers/TraderAssortHelper";
|
import { TraderAssortHelper } from "../helpers/TraderAssortHelper";
|
||||||
import { TraderHelper } from "../helpers/TraderHelper";
|
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 { ILogger } from "../models/spt/utils/ILogger";
|
||||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
import { DatabaseServer } from "../servers/DatabaseServer";
|
||||||
import { FenceService } from "../services/FenceService";
|
import { FenceService } from "../services/FenceService";
|
||||||
import { TraderAssortService } from "../services/TraderAssortService";
|
import { TraderAssortService } from "../services/TraderAssortService";
|
||||||
import { TraderPurchasePersisterService } from "../services/TraderPurchasePersisterService";
|
import { TraderPurchasePersisterService } from "../services/TraderPurchasePersisterService";
|
||||||
import { JsonUtil } from "../utils/JsonUtil";
|
import { JsonUtil } from "../utils/JsonUtil";
|
||||||
import { TimeUtil } from "../utils/TimeUtil";
|
|
||||||
export declare class TraderController {
|
export declare class TraderController {
|
||||||
protected logger: ILogger;
|
protected logger: ILogger;
|
||||||
protected databaseServer: DatabaseServer;
|
protected databaseServer: DatabaseServer;
|
||||||
protected traderAssortHelper: TraderAssortHelper;
|
protected traderAssortHelper: TraderAssortHelper;
|
||||||
protected profileHelper: ProfileHelper;
|
protected profileHelper: ProfileHelper;
|
||||||
protected traderHelper: TraderHelper;
|
protected traderHelper: TraderHelper;
|
||||||
protected timeUtil: TimeUtil;
|
|
||||||
protected traderAssortService: TraderAssortService;
|
protected traderAssortService: TraderAssortService;
|
||||||
protected traderPurchasePersisterService: TraderPurchasePersisterService;
|
protected traderPurchasePersisterService: TraderPurchasePersisterService;
|
||||||
protected fenceService: FenceService;
|
protected fenceService: FenceService;
|
||||||
protected fenceBaseAssortGenerator: FenceBaseAssortGenerator;
|
protected fenceBaseAssortGenerator: FenceBaseAssortGenerator;
|
||||||
protected jsonUtil: JsonUtil;
|
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
|
* Runs when onLoad event is fired
|
||||||
* Iterate over traders, ensure an unmolested copy of their assorts is stored in traderAssortService
|
* 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
|
* @returns array if ITraderBase objects
|
||||||
*/
|
*/
|
||||||
getAllTraders(sessionID: string): ITraderBase[];
|
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;
|
getTrader(sessionID: string, traderID: string): ITraderBase;
|
||||||
getAssort(sessionId: string, traderId: string): ITraderAssort;
|
getAssort(sessionId: string, traderId: string): ITraderAssort;
|
||||||
getPurchasesData(sessionID: string, traderID: string): Record<string, IBarterScheme[][]>;
|
|
||||||
}
|
}
|
||||||
|
@ -14,6 +14,7 @@ import { DatabaseServer } from "../servers/DatabaseServer";
|
|||||||
import { BotEquipmentFilterService } from "../services/BotEquipmentFilterService";
|
import { BotEquipmentFilterService } from "../services/BotEquipmentFilterService";
|
||||||
import { BotEquipmentModPoolService } from "../services/BotEquipmentModPoolService";
|
import { BotEquipmentModPoolService } from "../services/BotEquipmentModPoolService";
|
||||||
import { BotModLimits, BotWeaponModLimitService } from "../services/BotWeaponModLimitService";
|
import { BotModLimits, BotWeaponModLimitService } from "../services/BotWeaponModLimitService";
|
||||||
|
import { ItemBaseClassService } from "../services/ItemBaseClassService";
|
||||||
import { ItemFilterService } from "../services/ItemFilterService";
|
import { ItemFilterService } from "../services/ItemFilterService";
|
||||||
import { LocalisationService } from "../services/LocalisationService";
|
import { LocalisationService } from "../services/LocalisationService";
|
||||||
import { HashUtil } from "../utils/HashUtil";
|
import { HashUtil } from "../utils/HashUtil";
|
||||||
@ -28,6 +29,7 @@ export declare class BotEquipmentModGenerator {
|
|||||||
protected databaseServer: DatabaseServer;
|
protected databaseServer: DatabaseServer;
|
||||||
protected itemHelper: ItemHelper;
|
protected itemHelper: ItemHelper;
|
||||||
protected botEquipmentFilterService: BotEquipmentFilterService;
|
protected botEquipmentFilterService: BotEquipmentFilterService;
|
||||||
|
protected itemBaseClassService: ItemBaseClassService;
|
||||||
protected itemFilterService: ItemFilterService;
|
protected itemFilterService: ItemFilterService;
|
||||||
protected profileHelper: ProfileHelper;
|
protected profileHelper: ProfileHelper;
|
||||||
protected botWeaponModLimitService: BotWeaponModLimitService;
|
protected botWeaponModLimitService: BotWeaponModLimitService;
|
||||||
@ -38,7 +40,7 @@ export declare class BotEquipmentModGenerator {
|
|||||||
protected botEquipmentModPoolService: BotEquipmentModPoolService;
|
protected botEquipmentModPoolService: BotEquipmentModPoolService;
|
||||||
protected configServer: ConfigServer;
|
protected configServer: ConfigServer;
|
||||||
protected botConfig: IBotConfig;
|
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
|
* Check mods are compatible and add to array
|
||||||
* @param equipment Equipment item to add mods to
|
* @param equipment Equipment item to add mods to
|
||||||
|
@ -14,12 +14,14 @@ import { SeasonalEventService } from "../services/SeasonalEventService";
|
|||||||
import { HashUtil } from "../utils/HashUtil";
|
import { HashUtil } from "../utils/HashUtil";
|
||||||
import { JsonUtil } from "../utils/JsonUtil";
|
import { JsonUtil } from "../utils/JsonUtil";
|
||||||
import { RandomUtil } from "../utils/RandomUtil";
|
import { RandomUtil } from "../utils/RandomUtil";
|
||||||
|
import { TimeUtil } from "../utils/TimeUtil";
|
||||||
import { BotInventoryGenerator } from "./BotInventoryGenerator";
|
import { BotInventoryGenerator } from "./BotInventoryGenerator";
|
||||||
import { BotLevelGenerator } from "./BotLevelGenerator";
|
import { BotLevelGenerator } from "./BotLevelGenerator";
|
||||||
export declare class BotGenerator {
|
export declare class BotGenerator {
|
||||||
protected logger: ILogger;
|
protected logger: ILogger;
|
||||||
protected hashUtil: HashUtil;
|
protected hashUtil: HashUtil;
|
||||||
protected randomUtil: RandomUtil;
|
protected randomUtil: RandomUtil;
|
||||||
|
protected timeUtil: TimeUtil;
|
||||||
protected jsonUtil: JsonUtil;
|
protected jsonUtil: JsonUtil;
|
||||||
protected profileHelper: ProfileHelper;
|
protected profileHelper: ProfileHelper;
|
||||||
protected databaseServer: DatabaseServer;
|
protected databaseServer: DatabaseServer;
|
||||||
@ -32,7 +34,7 @@ export declare class BotGenerator {
|
|||||||
protected seasonalEventService: SeasonalEventService;
|
protected seasonalEventService: SeasonalEventService;
|
||||||
protected configServer: ConfigServer;
|
protected configServer: ConfigServer;
|
||||||
protected botConfig: IBotConfig;
|
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
|
* Generate a player scav bot object
|
||||||
* @param role e.g. assault / pmcbot
|
* @param role e.g. assault / pmcbot
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
import { BotGeneratorHelper } from "../helpers/BotGeneratorHelper";
|
import { BotGeneratorHelper } from "../helpers/BotGeneratorHelper";
|
||||||
import { BotWeaponGeneratorHelper } from "../helpers/BotWeaponGeneratorHelper";
|
import { BotWeaponGeneratorHelper } from "../helpers/BotWeaponGeneratorHelper";
|
||||||
import { HandbookHelper } from "../helpers/HandbookHelper";
|
import { HandbookHelper } from "../helpers/HandbookHelper";
|
||||||
|
import { ItemHelper } from "../helpers/ItemHelper";
|
||||||
import { Inventory as PmcInventory } from "../models/eft/common/tables/IBotBase";
|
import { Inventory as PmcInventory } from "../models/eft/common/tables/IBotBase";
|
||||||
import { Chances, Inventory, ItemMinMax, ModsChances } from "../models/eft/common/tables/IBotType";
|
import { Chances, Inventory, ItemMinMax, ModsChances } from "../models/eft/common/tables/IBotType";
|
||||||
import { Item } from "../models/eft/common/tables/IItem";
|
import { Item } from "../models/eft/common/tables/IItem";
|
||||||
@ -18,6 +19,7 @@ export declare class BotLootGenerator {
|
|||||||
protected logger: ILogger;
|
protected logger: ILogger;
|
||||||
protected hashUtil: HashUtil;
|
protected hashUtil: HashUtil;
|
||||||
protected randomUtil: RandomUtil;
|
protected randomUtil: RandomUtil;
|
||||||
|
protected itemHelper: ItemHelper;
|
||||||
protected databaseServer: DatabaseServer;
|
protected databaseServer: DatabaseServer;
|
||||||
protected handbookHelper: HandbookHelper;
|
protected handbookHelper: HandbookHelper;
|
||||||
protected botGeneratorHelper: BotGeneratorHelper;
|
protected botGeneratorHelper: BotGeneratorHelper;
|
||||||
@ -27,7 +29,7 @@ export declare class BotLootGenerator {
|
|||||||
protected localisationService: LocalisationService;
|
protected localisationService: LocalisationService;
|
||||||
protected configServer: ConfigServer;
|
protected configServer: ConfigServer;
|
||||||
protected botConfig: IBotConfig;
|
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
|
* Add loot to bots containers
|
||||||
* @param sessionId Session id
|
* @param sessionId Session id
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
import { ItemHelper } from "../helpers/ItemHelper";
|
import { ItemHelper } from "../helpers/ItemHelper";
|
||||||
|
import { ITemplateItem } from "../models/eft/common/tables/ITemplateItem";
|
||||||
import { IBotConfig } from "../models/spt/config/IBotConfig";
|
import { IBotConfig } from "../models/spt/config/IBotConfig";
|
||||||
import { ConfigServer } from "../servers/ConfigServer";
|
import { ConfigServer } from "../servers/ConfigServer";
|
||||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
import { DatabaseServer } from "../servers/DatabaseServer";
|
||||||
@ -15,6 +16,7 @@ export declare class PMCLootGenerator {
|
|||||||
protected itemFilterService: ItemFilterService;
|
protected itemFilterService: ItemFilterService;
|
||||||
protected seasonalEventService: SeasonalEventService;
|
protected seasonalEventService: SeasonalEventService;
|
||||||
protected pocketLootPool: string[];
|
protected pocketLootPool: string[];
|
||||||
|
protected vestLootPool: string[];
|
||||||
protected backpackLootPool: string[];
|
protected backpackLootPool: string[];
|
||||||
protected botConfig: IBotConfig;
|
protected botConfig: IBotConfig;
|
||||||
constructor(itemHelper: ItemHelper, databaseServer: DatabaseServer, configServer: ConfigServer, itemFilterService: ItemFilterService, seasonalEventService: SeasonalEventService);
|
constructor(itemHelper: ItemHelper, databaseServer: DatabaseServer, configServer: ConfigServer, itemFilterService: ItemFilterService, seasonalEventService: SeasonalEventService);
|
||||||
@ -23,6 +25,18 @@ export declare class PMCLootGenerator {
|
|||||||
* @returns string array of tpls
|
* @returns string array of tpls
|
||||||
*/
|
*/
|
||||||
generatePMCPocketLootPool(): string[];
|
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
|
* Create an array of loot items a PMC can have in their backpack
|
||||||
* @returns string array of tpls
|
* @returns string array of tpls
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
import { IPmcData } from "../models/eft/common/IPmcData";
|
import { IPmcData } from "../models/eft/common/IPmcData";
|
||||||
import { ITraderAssort } from "../models/eft/common/tables/ITrader";
|
import { ITraderAssort } from "../models/eft/common/tables/ITrader";
|
||||||
|
import { QuestStatus } from "../models/enums/QuestStatus";
|
||||||
import { ILogger } from "../models/spt/utils/ILogger";
|
import { ILogger } from "../models/spt/utils/ILogger";
|
||||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
import { DatabaseServer } from "../servers/DatabaseServer";
|
||||||
import { LocalisationService } from "../services/LocalisationService";
|
import { LocalisationService } from "../services/LocalisationService";
|
||||||
@ -15,12 +16,22 @@ export declare class AssortHelper {
|
|||||||
/**
|
/**
|
||||||
* Remove assorts from a trader that have not been unlocked yet
|
* Remove assorts from a trader that have not been unlocked yet
|
||||||
* @param pmcProfile player profile
|
* @param pmcProfile player profile
|
||||||
* @param traderId traders id
|
* @param traderId traders id the assort belongs to
|
||||||
* @param assort assort items from a trader
|
* @param traderAssorts All assort items from same trader
|
||||||
* @param mergedQuestAssorts An object of quest assort to quest id unlocks for all traders
|
* @param mergedQuestAssorts Dict of quest assort to quest id unlocks for all traders
|
||||||
* @returns assort items minus locked quest assorts
|
* @returns assort items minus locked quest assorts
|
||||||
*/
|
*/
|
||||||
stripLockedQuestAssort(pmcProfile: IPmcData, traderId: string, assort: ITraderAssort, mergedQuestAssorts: Record<string, Record<string, string>>, flea?: boolean): ITraderAssort;
|
stripLockedQuestAssort(pmcProfile: IPmcData, traderId: string, traderAssorts: ITraderAssort, mergedQuestAssorts: Record<string, Record<string, string>>, 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<string, Record<string, string>>, assortId: string): {
|
||||||
|
questId: string;
|
||||||
|
status: QuestStatus[];
|
||||||
|
};
|
||||||
/**
|
/**
|
||||||
* Remove assorts from a trader that have not been unlocked yet
|
* Remove assorts from a trader that have not been unlocked yet
|
||||||
* @param pmcProfile player profile
|
* @param pmcProfile player profile
|
||||||
|
@ -40,7 +40,7 @@ export declare class QuestHelper {
|
|||||||
protected questConfig: IQuestConfig;
|
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);
|
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 pmcData Profile to search
|
||||||
* @param questID Quest id to look up
|
* @param questID Quest id to look up
|
||||||
* @returns QuestStatus enum
|
* @returns QuestStatus enum
|
||||||
@ -160,6 +160,13 @@ export declare class QuestHelper {
|
|||||||
* @returns IQuest object
|
* @returns IQuest object
|
||||||
*/
|
*/
|
||||||
getQuestFromDb(questId: string, pmcData: IPmcData): IQuest;
|
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
|
* Get the locale Id from locale db for a quest message
|
||||||
* @param questMessageId Quest message id to look up
|
* @param questMessageId Quest message id to look up
|
||||||
|
@ -47,7 +47,22 @@ export declare class RagfairOfferHelper {
|
|||||||
protected questConfig: IQuestConfig;
|
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);
|
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<string, ITraderAssort>, pmcProfile: IPmcData): IRagfairOffer[];
|
getValidOffers(searchRequest: ISearchRequestData, itemsToAdd: string[], traderAssorts: Record<string, ITraderAssort>, pmcProfile: IPmcData): IRagfairOffer[];
|
||||||
getOffersForBuild(info: ISearchRequestData, itemsToAdd: string[], assorts: Record<string, ITraderAssort>, 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<string, ITraderAssort>, 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<string, ITraderAssort>): boolean;
|
||||||
/**
|
/**
|
||||||
* Has a traders offer ran out of stock to sell to player
|
* Has a traders offer ran out of stock to sell to player
|
||||||
* @param offer Offer to check stock of
|
* @param offer Offer to check stock of
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
import { FenceLevel } from "../models/eft/common/IGlobals";
|
|
||||||
import { IPmcData } from "../models/eft/common/IPmcData";
|
import { IPmcData } from "../models/eft/common/IPmcData";
|
||||||
import { Item } from "../models/eft/common/tables/IItem";
|
import { ITraderAssort, ITraderBase, LoyaltyLevel } from "../models/eft/common/tables/ITrader";
|
||||||
import { IBarterScheme, ITraderAssort, ITraderBase, LoyaltyLevel } from "../models/eft/common/tables/ITrader";
|
|
||||||
import { ITraderConfig } from "../models/spt/config/ITraderConfig";
|
import { ITraderConfig } from "../models/spt/config/ITraderConfig";
|
||||||
import { ILogger } from "../models/spt/utils/ILogger";
|
import { ILogger } from "../models/spt/utils/ILogger";
|
||||||
import { ConfigServer } from "../servers/ConfigServer";
|
import { ConfigServer } from "../servers/ConfigServer";
|
||||||
@ -12,16 +10,12 @@ import { LocalisationService } from "../services/LocalisationService";
|
|||||||
import { PlayerService } from "../services/PlayerService";
|
import { PlayerService } from "../services/PlayerService";
|
||||||
import { TimeUtil } from "../utils/TimeUtil";
|
import { TimeUtil } from "../utils/TimeUtil";
|
||||||
import { HandbookHelper } from "./HandbookHelper";
|
import { HandbookHelper } from "./HandbookHelper";
|
||||||
import { ItemHelper } from "./ItemHelper";
|
|
||||||
import { PaymentHelper } from "./PaymentHelper";
|
|
||||||
import { ProfileHelper } from "./ProfileHelper";
|
import { ProfileHelper } from "./ProfileHelper";
|
||||||
export declare class TraderHelper {
|
export declare class TraderHelper {
|
||||||
protected logger: ILogger;
|
protected logger: ILogger;
|
||||||
protected databaseServer: DatabaseServer;
|
protected databaseServer: DatabaseServer;
|
||||||
protected saveServer: SaveServer;
|
protected saveServer: SaveServer;
|
||||||
protected profileHelper: ProfileHelper;
|
protected profileHelper: ProfileHelper;
|
||||||
protected paymentHelper: PaymentHelper;
|
|
||||||
protected itemHelper: ItemHelper;
|
|
||||||
protected handbookHelper: HandbookHelper;
|
protected handbookHelper: HandbookHelper;
|
||||||
protected playerService: PlayerService;
|
protected playerService: PlayerService;
|
||||||
protected localisationService: LocalisationService;
|
protected localisationService: LocalisationService;
|
||||||
@ -31,7 +25,7 @@ export declare class TraderHelper {
|
|||||||
protected traderConfig: ITraderConfig;
|
protected traderConfig: ITraderConfig;
|
||||||
/** Dictionary of item tpl and the highest trader rouble price */
|
/** Dictionary of item tpl and the highest trader rouble price */
|
||||||
protected highestTraderPriceItems: Record<string, number>;
|
protected highestTraderPriceItems: Record<string, number>;
|
||||||
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;
|
getTrader(traderID: string, sessionID: string): ITraderBase;
|
||||||
getTraderAssortsById(traderId: string): ITraderAssort;
|
getTraderAssortsById(traderId: string): ITraderAssort;
|
||||||
/**
|
/**
|
||||||
@ -48,62 +42,6 @@ export declare class TraderHelper {
|
|||||||
* @param sessionId Session id
|
* @param sessionId Session id
|
||||||
*/
|
*/
|
||||||
setTraderUnlockedState(traderId: string, status: boolean, sessionId: string): void;
|
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<string, IBarterScheme[][]>;
|
|
||||||
/**
|
|
||||||
* 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
|
* Add standing to a trader and level them up if exp goes over level threshold
|
||||||
* @param sessionId Session id
|
* @param sessionId Session id
|
||||||
@ -129,13 +67,6 @@ export declare class TraderHelper {
|
|||||||
* @returns Time in seconds
|
* @returns Time in seconds
|
||||||
*/
|
*/
|
||||||
getTraderUpdateSeconds(traderId: string): number;
|
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;
|
getLoyaltyLevel(traderID: string, pmcData: IPmcData): LoyaltyLevel;
|
||||||
/**
|
/**
|
||||||
* Store the purchase of an assort from a trader in the player profile
|
* Store the purchase of an assort from a trader in the player profile
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
import { Item } from "./tables/IItem";
|
||||||
export interface ILooseLoot {
|
export interface ILooseLoot {
|
||||||
spawnpointCount: SpawnpointCount;
|
spawnpointCount: SpawnpointCount;
|
||||||
spawnpointsForced: SpawnpointsForced[];
|
spawnpointsForced: SpawnpointsForced[];
|
||||||
@ -24,10 +25,6 @@ export interface SpawnpointTemplate {
|
|||||||
Root: any;
|
Root: any;
|
||||||
Items: Item[];
|
Items: Item[];
|
||||||
}
|
}
|
||||||
export interface Item {
|
|
||||||
_id: string;
|
|
||||||
_tpl?: string;
|
|
||||||
}
|
|
||||||
export interface Spawnpoint {
|
export interface Spawnpoint {
|
||||||
locationId: string;
|
locationId: string;
|
||||||
probability: number;
|
probability: number;
|
||||||
|
@ -46,7 +46,7 @@ export interface AvailableForProps {
|
|||||||
parentId: string;
|
parentId: string;
|
||||||
isEncoded: boolean;
|
isEncoded: boolean;
|
||||||
dynamicLocale: boolean;
|
dynamicLocale: boolean;
|
||||||
value?: number;
|
value?: string | number;
|
||||||
compareMethod?: string;
|
compareMethod?: string;
|
||||||
visibilityConditions?: VisibilityCondition[];
|
visibilityConditions?: VisibilityCondition[];
|
||||||
target?: string | string[];
|
target?: string | string[];
|
||||||
|
@ -20,4 +20,5 @@ export interface Requirement {
|
|||||||
areaType?: number;
|
areaType?: number;
|
||||||
requiredLevel?: number;
|
requiredLevel?: number;
|
||||||
resource?: number;
|
resource?: number;
|
||||||
|
questId?: string;
|
||||||
}
|
}
|
||||||
|
@ -1,10 +1,9 @@
|
|||||||
import { IEmptyRequestData } from "../../eft/common/IEmptyRequestData";
|
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";
|
import { IGetBodyResponseData } from "../../eft/httpResponse/IGetBodyResponseData";
|
||||||
export interface ITraderCallbacks {
|
export interface ITraderCallbacks {
|
||||||
load(): void;
|
load(): void;
|
||||||
getTraderSettings(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<ITraderBase[]>;
|
getTraderSettings(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<ITraderBase[]>;
|
||||||
getProfilePurchases(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<Record<string, IBarterScheme[][]>>;
|
|
||||||
getTrader(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<ITraderBase>;
|
getTrader(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<ITraderBase>;
|
||||||
getAssort(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<ITraderAssort>;
|
getAssort(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<ITraderAssort>;
|
||||||
update(): boolean;
|
update(): boolean;
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
import { MinMax } from "../../common/MinMax";
|
import { MinMax } from "../../common/MinMax";
|
||||||
export interface IPmcConfig {
|
export interface IPmcConfig {
|
||||||
|
vestLoot: SlotLootSettings;
|
||||||
|
pocketLoot: SlotLootSettings;
|
||||||
|
backpackLoot: SlotLootSettings;
|
||||||
dynamicLoot: DynamicLoot;
|
dynamicLoot: DynamicLoot;
|
||||||
useDifficultyOverride: boolean;
|
useDifficultyOverride: boolean;
|
||||||
difficulty: string;
|
difficulty: string;
|
||||||
@ -22,8 +25,11 @@ export interface PmcTypes {
|
|||||||
usec: string;
|
usec: string;
|
||||||
bear: string;
|
bear: string;
|
||||||
}
|
}
|
||||||
export interface DynamicLoot {
|
export interface SlotLootSettings {
|
||||||
whitelist: string[];
|
whitelist: string[];
|
||||||
blacklist: string[];
|
blacklist: string[];
|
||||||
moneyStackLimits: Record<string, number>;
|
moneyStackLimits: Record<string, number>;
|
||||||
}
|
}
|
||||||
|
export interface DynamicLoot {
|
||||||
|
moneyStackLimits: Record<string, number>;
|
||||||
|
}
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
import { MinMax } from "../../../models/common/MinMax";
|
||||||
import { ELocationName } from "../../enums/ELocationName";
|
import { ELocationName } from "../../enums/ELocationName";
|
||||||
import { IBaseConfig } from "./IBaseConfig";
|
import { IBaseConfig } from "./IBaseConfig";
|
||||||
export interface IQuestConfig extends IBaseConfig {
|
export interface IQuestConfig extends IBaseConfig {
|
||||||
@ -50,7 +51,7 @@ export interface ITraderWhitelist {
|
|||||||
export interface IRepeatableQuestTypesConfig {
|
export interface IRepeatableQuestTypesConfig {
|
||||||
Exploration: IExploration;
|
Exploration: IExploration;
|
||||||
Completion: ICompletion;
|
Completion: ICompletion;
|
||||||
Elimination: IElimination;
|
Elimination: IEliminationConfig[];
|
||||||
}
|
}
|
||||||
export interface IExploration {
|
export interface IExploration {
|
||||||
maxExtracts: number;
|
maxExtracts: number;
|
||||||
@ -68,7 +69,8 @@ export interface ICompletion {
|
|||||||
useWhitelist: boolean;
|
useWhitelist: boolean;
|
||||||
useBlacklist: boolean;
|
useBlacklist: boolean;
|
||||||
}
|
}
|
||||||
export interface IElimination {
|
export interface IEliminationConfig {
|
||||||
|
levelRange: MinMax;
|
||||||
targets: ITarget[];
|
targets: ITarget[];
|
||||||
bodyPartProb: number;
|
bodyPartProb: number;
|
||||||
bodyParts: IBodyPart[];
|
bodyParts: IBodyPart[];
|
||||||
@ -80,11 +82,6 @@ export interface IElimination {
|
|||||||
maxKills: number;
|
maxKills: number;
|
||||||
minKills: number;
|
minKills: number;
|
||||||
}
|
}
|
||||||
export interface IProbabilityObject {
|
|
||||||
key: string;
|
|
||||||
relativeProbability: number;
|
|
||||||
data?: any;
|
|
||||||
}
|
|
||||||
export interface ITarget extends IProbabilityObject {
|
export interface ITarget extends IProbabilityObject {
|
||||||
data: IBossInfo;
|
data: IBossInfo;
|
||||||
}
|
}
|
||||||
@ -94,3 +91,8 @@ export interface IBossInfo {
|
|||||||
export interface IBodyPart extends IProbabilityObject {
|
export interface IBodyPart extends IProbabilityObject {
|
||||||
data: string[];
|
data: string[];
|
||||||
}
|
}
|
||||||
|
export interface IProbabilityObject {
|
||||||
|
key: string;
|
||||||
|
relativeProbability: number;
|
||||||
|
data?: any;
|
||||||
|
}
|
||||||
|
@ -30,6 +30,8 @@ export interface Reputation {
|
|||||||
}
|
}
|
||||||
export interface Dynamic {
|
export interface Dynamic {
|
||||||
purchasesAreFoundInRaid: boolean;
|
purchasesAreFoundInRaid: boolean;
|
||||||
|
/** Use the highest trader price for an offer if its greater than the price in templates/prices.json */
|
||||||
|
useTraderPriceForOffersIfHigher: boolean;
|
||||||
barter: Barter;
|
barter: Barter;
|
||||||
offerAdjustment: OfferAdjustment;
|
offerAdjustment: OfferAdjustment;
|
||||||
expiredOfferThreshold: number;
|
expiredOfferThreshold: number;
|
||||||
|
@ -4,8 +4,6 @@ export interface ITraderConfig extends IBaseConfig {
|
|||||||
kind: "aki-trader";
|
kind: "aki-trader";
|
||||||
updateTime: UpdateTime[];
|
updateTime: UpdateTime[];
|
||||||
updateTimeDefault: number;
|
updateTimeDefault: number;
|
||||||
/** What % of max durability an item needs to sell to a trader*/
|
|
||||||
durabilityPurchaseThreshhold: Record<string, number>;
|
|
||||||
traderPriceMultipler: number;
|
traderPriceMultipler: number;
|
||||||
persistPurchaseDataInProfile: boolean;
|
persistPurchaseDataInProfile: boolean;
|
||||||
fence: FenceConfig;
|
fence: FenceConfig;
|
||||||
|
@ -2,7 +2,7 @@ import { OnLoad } from "../di/OnLoad";
|
|||||||
import { OnUpdate } from "../di/OnUpdate";
|
import { OnUpdate } from "../di/OnUpdate";
|
||||||
import { TraderController } from "../controllers/TraderController";
|
import { TraderController } from "../controllers/TraderController";
|
||||||
import { IEmptyRequestData } from "../models/eft/common/IEmptyRequestData";
|
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 { IGetBodyResponseData } from "../models/eft/httpResponse/IGetBodyResponseData";
|
||||||
import { HttpResponseUtil } from "../utils/HttpResponseUtil";
|
import { HttpResponseUtil } from "../utils/HttpResponseUtil";
|
||||||
export declare class TraderCallbacks implements OnLoad, OnUpdate {
|
export declare class TraderCallbacks implements OnLoad, OnUpdate {
|
||||||
@ -13,11 +13,6 @@ export declare class TraderCallbacks implements OnLoad, OnUpdate {
|
|||||||
onUpdate(): Promise<boolean>;
|
onUpdate(): Promise<boolean>;
|
||||||
getRoute(): string;
|
getRoute(): string;
|
||||||
getTraderSettings(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<ITraderBase[]>;
|
getTraderSettings(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<ITraderBase[]>;
|
||||||
/**
|
|
||||||
* Handle client/trading/api/getUserAssortPrice/trader
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
getProfilePurchases(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<Record<string, IBarterScheme[][]>>;
|
|
||||||
getTrader(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<ITraderBase>;
|
getTrader(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<ITraderBase>;
|
||||||
getAssort(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<ITraderAssort>;
|
getAssort(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<ITraderAssort>;
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
import { PlayerScavGenerator } from "../generators/PlayerScavGenerator";
|
import { PlayerScavGenerator } from "../generators/PlayerScavGenerator";
|
||||||
|
import { DialogueHelper } from "../helpers/DialogueHelper";
|
||||||
import { ItemHelper } from "../helpers/ItemHelper";
|
import { ItemHelper } from "../helpers/ItemHelper";
|
||||||
import { ProfileHelper } from "../helpers/ProfileHelper";
|
import { ProfileHelper } from "../helpers/ProfileHelper";
|
||||||
import { QuestHelper } from "../helpers/QuestHelper";
|
import { QuestHelper } from "../helpers/QuestHelper";
|
||||||
@ -11,6 +12,7 @@ import { IProfileCreateRequestData } from "../models/eft/profile/IProfileCreateR
|
|||||||
import { ISearchFriendRequestData } from "../models/eft/profile/ISearchFriendRequestData";
|
import { ISearchFriendRequestData } from "../models/eft/profile/ISearchFriendRequestData";
|
||||||
import { ISearchFriendResponse } from "../models/eft/profile/ISearchFriendResponse";
|
import { ISearchFriendResponse } from "../models/eft/profile/ISearchFriendResponse";
|
||||||
import { IValidateNicknameRequestData } from "../models/eft/profile/IValidateNicknameRequestData";
|
import { IValidateNicknameRequestData } from "../models/eft/profile/IValidateNicknameRequestData";
|
||||||
|
import { EventOutputHolder } from "../routers/EventOutputHolder";
|
||||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
import { DatabaseServer } from "../servers/DatabaseServer";
|
||||||
import { SaveServer } from "../servers/SaveServer";
|
import { SaveServer } from "../servers/SaveServer";
|
||||||
import { ProfileFixerService } from "../services/ProfileFixerService";
|
import { ProfileFixerService } from "../services/ProfileFixerService";
|
||||||
@ -24,10 +26,12 @@ export declare class ProfileController {
|
|||||||
protected itemHelper: ItemHelper;
|
protected itemHelper: ItemHelper;
|
||||||
protected profileFixerService: ProfileFixerService;
|
protected profileFixerService: ProfileFixerService;
|
||||||
protected playerScavGenerator: PlayerScavGenerator;
|
protected playerScavGenerator: PlayerScavGenerator;
|
||||||
|
protected eventOutputHolder: EventOutputHolder;
|
||||||
protected traderHelper: TraderHelper;
|
protected traderHelper: TraderHelper;
|
||||||
|
protected dialogueHelper: DialogueHelper;
|
||||||
protected questHelper: QuestHelper;
|
protected questHelper: QuestHelper;
|
||||||
protected profileHelper: ProfileHelper;
|
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[];
|
getMiniProfiles(): IMiniProfile[];
|
||||||
getMiniProfile(sessionID: string): any;
|
getMiniProfile(sessionID: string): any;
|
||||||
getCompleteProfile(sessionID: string): IPmcData[];
|
getCompleteProfile(sessionID: string): IPmcData[];
|
||||||
|
@ -60,13 +60,6 @@ export declare class QuestController {
|
|||||||
* @returns client response
|
* @returns client response
|
||||||
*/
|
*/
|
||||||
acceptQuest(pmcData: IPmcData, acceptedQuest: IAcceptQuestRequestData, sessionID: string): IItemEventRouterResponse;
|
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
|
* Handle the client accepting a repeatable quest and starting it
|
||||||
* Send starting rewards if any to player and
|
* Send starting rewards if any to player and
|
||||||
@ -123,7 +116,14 @@ export declare class QuestController {
|
|||||||
* @param questsToFail quests to fail
|
* @param questsToFail quests to fail
|
||||||
*/
|
*/
|
||||||
protected failQuests(sessionID: string, pmcData: IPmcData, questsToFail: IQuest[]): void;
|
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,
|
* Increment a backend counter stored value by an amount,
|
||||||
* Create counter if it does not exist
|
* Create counter if it does not exist
|
||||||
|
@ -12,7 +12,7 @@ import { ITemplateItem } from "../models/eft/common/tables/ITemplateItem";
|
|||||||
import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse";
|
import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse";
|
||||||
import { IRepeatableQuestChangeRequest } from "../models/eft/quests/IRepeatableQuestChangeRequest";
|
import { IRepeatableQuestChangeRequest } from "../models/eft/quests/IRepeatableQuestChangeRequest";
|
||||||
import { ELocationName } from "../models/enums/ELocationName";
|
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 { ILogger } from "../models/spt/utils/ILogger";
|
||||||
import { EventOutputHolder } from "../routers/EventOutputHolder";
|
import { EventOutputHolder } from "../routers/EventOutputHolder";
|
||||||
import { ConfigServer } from "../servers/ConfigServer";
|
import { ConfigServer } from "../servers/ConfigServer";
|
||||||
@ -159,7 +159,14 @@ export declare class RepeatableQuestController {
|
|||||||
*/
|
*/
|
||||||
generateEliminationQuest(pmcLevel: number, traderId: string, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IElimination;
|
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
|
* @param locationKey e.g factory4_day
|
||||||
* @returns guid
|
* @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
|
* 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
|
* 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.
|
* where you have to e.g. kill scavs in same locations.
|
||||||
*
|
* @param repeatableConfig main repeatable quest config
|
||||||
* @returns {object} the quest pool
|
* @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
|
* Generate the reward for a mission. A reward can consist of
|
||||||
* - Experience
|
* - Experience
|
||||||
|
@ -2,27 +2,25 @@ import { FenceBaseAssortGenerator } from "../generators/FenceBaseAssortGenerator
|
|||||||
import { ProfileHelper } from "../helpers/ProfileHelper";
|
import { ProfileHelper } from "../helpers/ProfileHelper";
|
||||||
import { TraderAssortHelper } from "../helpers/TraderAssortHelper";
|
import { TraderAssortHelper } from "../helpers/TraderAssortHelper";
|
||||||
import { TraderHelper } from "../helpers/TraderHelper";
|
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 { ILogger } from "../models/spt/utils/ILogger";
|
||||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
import { DatabaseServer } from "../servers/DatabaseServer";
|
||||||
import { FenceService } from "../services/FenceService";
|
import { FenceService } from "../services/FenceService";
|
||||||
import { TraderAssortService } from "../services/TraderAssortService";
|
import { TraderAssortService } from "../services/TraderAssortService";
|
||||||
import { TraderPurchasePersisterService } from "../services/TraderPurchasePersisterService";
|
import { TraderPurchasePersisterService } from "../services/TraderPurchasePersisterService";
|
||||||
import { JsonUtil } from "../utils/JsonUtil";
|
import { JsonUtil } from "../utils/JsonUtil";
|
||||||
import { TimeUtil } from "../utils/TimeUtil";
|
|
||||||
export declare class TraderController {
|
export declare class TraderController {
|
||||||
protected logger: ILogger;
|
protected logger: ILogger;
|
||||||
protected databaseServer: DatabaseServer;
|
protected databaseServer: DatabaseServer;
|
||||||
protected traderAssortHelper: TraderAssortHelper;
|
protected traderAssortHelper: TraderAssortHelper;
|
||||||
protected profileHelper: ProfileHelper;
|
protected profileHelper: ProfileHelper;
|
||||||
protected traderHelper: TraderHelper;
|
protected traderHelper: TraderHelper;
|
||||||
protected timeUtil: TimeUtil;
|
|
||||||
protected traderAssortService: TraderAssortService;
|
protected traderAssortService: TraderAssortService;
|
||||||
protected traderPurchasePersisterService: TraderPurchasePersisterService;
|
protected traderPurchasePersisterService: TraderPurchasePersisterService;
|
||||||
protected fenceService: FenceService;
|
protected fenceService: FenceService;
|
||||||
protected fenceBaseAssortGenerator: FenceBaseAssortGenerator;
|
protected fenceBaseAssortGenerator: FenceBaseAssortGenerator;
|
||||||
protected jsonUtil: JsonUtil;
|
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
|
* Runs when onLoad event is fired
|
||||||
* Iterate over traders, ensure an unmolested copy of their assorts is stored in traderAssortService
|
* 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
|
* @returns array if ITraderBase objects
|
||||||
*/
|
*/
|
||||||
getAllTraders(sessionID: string): ITraderBase[];
|
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;
|
getTrader(sessionID: string, traderID: string): ITraderBase;
|
||||||
getAssort(sessionId: string, traderId: string): ITraderAssort;
|
getAssort(sessionId: string, traderId: string): ITraderAssort;
|
||||||
getPurchasesData(sessionID: string, traderID: string): Record<string, IBarterScheme[][]>;
|
|
||||||
}
|
}
|
||||||
|
@ -14,6 +14,7 @@ import { DatabaseServer } from "../servers/DatabaseServer";
|
|||||||
import { BotEquipmentFilterService } from "../services/BotEquipmentFilterService";
|
import { BotEquipmentFilterService } from "../services/BotEquipmentFilterService";
|
||||||
import { BotEquipmentModPoolService } from "../services/BotEquipmentModPoolService";
|
import { BotEquipmentModPoolService } from "../services/BotEquipmentModPoolService";
|
||||||
import { BotModLimits, BotWeaponModLimitService } from "../services/BotWeaponModLimitService";
|
import { BotModLimits, BotWeaponModLimitService } from "../services/BotWeaponModLimitService";
|
||||||
|
import { ItemBaseClassService } from "../services/ItemBaseClassService";
|
||||||
import { ItemFilterService } from "../services/ItemFilterService";
|
import { ItemFilterService } from "../services/ItemFilterService";
|
||||||
import { LocalisationService } from "../services/LocalisationService";
|
import { LocalisationService } from "../services/LocalisationService";
|
||||||
import { HashUtil } from "../utils/HashUtil";
|
import { HashUtil } from "../utils/HashUtil";
|
||||||
@ -28,6 +29,7 @@ export declare class BotEquipmentModGenerator {
|
|||||||
protected databaseServer: DatabaseServer;
|
protected databaseServer: DatabaseServer;
|
||||||
protected itemHelper: ItemHelper;
|
protected itemHelper: ItemHelper;
|
||||||
protected botEquipmentFilterService: BotEquipmentFilterService;
|
protected botEquipmentFilterService: BotEquipmentFilterService;
|
||||||
|
protected itemBaseClassService: ItemBaseClassService;
|
||||||
protected itemFilterService: ItemFilterService;
|
protected itemFilterService: ItemFilterService;
|
||||||
protected profileHelper: ProfileHelper;
|
protected profileHelper: ProfileHelper;
|
||||||
protected botWeaponModLimitService: BotWeaponModLimitService;
|
protected botWeaponModLimitService: BotWeaponModLimitService;
|
||||||
@ -38,7 +40,7 @@ export declare class BotEquipmentModGenerator {
|
|||||||
protected botEquipmentModPoolService: BotEquipmentModPoolService;
|
protected botEquipmentModPoolService: BotEquipmentModPoolService;
|
||||||
protected configServer: ConfigServer;
|
protected configServer: ConfigServer;
|
||||||
protected botConfig: IBotConfig;
|
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
|
* Check mods are compatible and add to array
|
||||||
* @param equipment Equipment item to add mods to
|
* @param equipment Equipment item to add mods to
|
||||||
|
@ -14,12 +14,14 @@ import { SeasonalEventService } from "../services/SeasonalEventService";
|
|||||||
import { HashUtil } from "../utils/HashUtil";
|
import { HashUtil } from "../utils/HashUtil";
|
||||||
import { JsonUtil } from "../utils/JsonUtil";
|
import { JsonUtil } from "../utils/JsonUtil";
|
||||||
import { RandomUtil } from "../utils/RandomUtil";
|
import { RandomUtil } from "../utils/RandomUtil";
|
||||||
|
import { TimeUtil } from "../utils/TimeUtil";
|
||||||
import { BotInventoryGenerator } from "./BotInventoryGenerator";
|
import { BotInventoryGenerator } from "./BotInventoryGenerator";
|
||||||
import { BotLevelGenerator } from "./BotLevelGenerator";
|
import { BotLevelGenerator } from "./BotLevelGenerator";
|
||||||
export declare class BotGenerator {
|
export declare class BotGenerator {
|
||||||
protected logger: ILogger;
|
protected logger: ILogger;
|
||||||
protected hashUtil: HashUtil;
|
protected hashUtil: HashUtil;
|
||||||
protected randomUtil: RandomUtil;
|
protected randomUtil: RandomUtil;
|
||||||
|
protected timeUtil: TimeUtil;
|
||||||
protected jsonUtil: JsonUtil;
|
protected jsonUtil: JsonUtil;
|
||||||
protected profileHelper: ProfileHelper;
|
protected profileHelper: ProfileHelper;
|
||||||
protected databaseServer: DatabaseServer;
|
protected databaseServer: DatabaseServer;
|
||||||
@ -32,7 +34,7 @@ export declare class BotGenerator {
|
|||||||
protected seasonalEventService: SeasonalEventService;
|
protected seasonalEventService: SeasonalEventService;
|
||||||
protected configServer: ConfigServer;
|
protected configServer: ConfigServer;
|
||||||
protected botConfig: IBotConfig;
|
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
|
* Generate a player scav bot object
|
||||||
* @param role e.g. assault / pmcbot
|
* @param role e.g. assault / pmcbot
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
import { BotGeneratorHelper } from "../helpers/BotGeneratorHelper";
|
import { BotGeneratorHelper } from "../helpers/BotGeneratorHelper";
|
||||||
import { BotWeaponGeneratorHelper } from "../helpers/BotWeaponGeneratorHelper";
|
import { BotWeaponGeneratorHelper } from "../helpers/BotWeaponGeneratorHelper";
|
||||||
import { HandbookHelper } from "../helpers/HandbookHelper";
|
import { HandbookHelper } from "../helpers/HandbookHelper";
|
||||||
|
import { ItemHelper } from "../helpers/ItemHelper";
|
||||||
import { Inventory as PmcInventory } from "../models/eft/common/tables/IBotBase";
|
import { Inventory as PmcInventory } from "../models/eft/common/tables/IBotBase";
|
||||||
import { Chances, Inventory, ItemMinMax, ModsChances } from "../models/eft/common/tables/IBotType";
|
import { Chances, Inventory, ItemMinMax, ModsChances } from "../models/eft/common/tables/IBotType";
|
||||||
import { Item } from "../models/eft/common/tables/IItem";
|
import { Item } from "../models/eft/common/tables/IItem";
|
||||||
@ -18,6 +19,7 @@ export declare class BotLootGenerator {
|
|||||||
protected logger: ILogger;
|
protected logger: ILogger;
|
||||||
protected hashUtil: HashUtil;
|
protected hashUtil: HashUtil;
|
||||||
protected randomUtil: RandomUtil;
|
protected randomUtil: RandomUtil;
|
||||||
|
protected itemHelper: ItemHelper;
|
||||||
protected databaseServer: DatabaseServer;
|
protected databaseServer: DatabaseServer;
|
||||||
protected handbookHelper: HandbookHelper;
|
protected handbookHelper: HandbookHelper;
|
||||||
protected botGeneratorHelper: BotGeneratorHelper;
|
protected botGeneratorHelper: BotGeneratorHelper;
|
||||||
@ -27,7 +29,7 @@ export declare class BotLootGenerator {
|
|||||||
protected localisationService: LocalisationService;
|
protected localisationService: LocalisationService;
|
||||||
protected configServer: ConfigServer;
|
protected configServer: ConfigServer;
|
||||||
protected botConfig: IBotConfig;
|
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
|
* Add loot to bots containers
|
||||||
* @param sessionId Session id
|
* @param sessionId Session id
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
import { ItemHelper } from "../helpers/ItemHelper";
|
import { ItemHelper } from "../helpers/ItemHelper";
|
||||||
|
import { ITemplateItem } from "../models/eft/common/tables/ITemplateItem";
|
||||||
import { IBotConfig } from "../models/spt/config/IBotConfig";
|
import { IBotConfig } from "../models/spt/config/IBotConfig";
|
||||||
import { ConfigServer } from "../servers/ConfigServer";
|
import { ConfigServer } from "../servers/ConfigServer";
|
||||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
import { DatabaseServer } from "../servers/DatabaseServer";
|
||||||
@ -15,6 +16,7 @@ export declare class PMCLootGenerator {
|
|||||||
protected itemFilterService: ItemFilterService;
|
protected itemFilterService: ItemFilterService;
|
||||||
protected seasonalEventService: SeasonalEventService;
|
protected seasonalEventService: SeasonalEventService;
|
||||||
protected pocketLootPool: string[];
|
protected pocketLootPool: string[];
|
||||||
|
protected vestLootPool: string[];
|
||||||
protected backpackLootPool: string[];
|
protected backpackLootPool: string[];
|
||||||
protected botConfig: IBotConfig;
|
protected botConfig: IBotConfig;
|
||||||
constructor(itemHelper: ItemHelper, databaseServer: DatabaseServer, configServer: ConfigServer, itemFilterService: ItemFilterService, seasonalEventService: SeasonalEventService);
|
constructor(itemHelper: ItemHelper, databaseServer: DatabaseServer, configServer: ConfigServer, itemFilterService: ItemFilterService, seasonalEventService: SeasonalEventService);
|
||||||
@ -23,6 +25,18 @@ export declare class PMCLootGenerator {
|
|||||||
* @returns string array of tpls
|
* @returns string array of tpls
|
||||||
*/
|
*/
|
||||||
generatePMCPocketLootPool(): string[];
|
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
|
* Create an array of loot items a PMC can have in their backpack
|
||||||
* @returns string array of tpls
|
* @returns string array of tpls
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
import { IPmcData } from "../models/eft/common/IPmcData";
|
import { IPmcData } from "../models/eft/common/IPmcData";
|
||||||
import { ITraderAssort } from "../models/eft/common/tables/ITrader";
|
import { ITraderAssort } from "../models/eft/common/tables/ITrader";
|
||||||
|
import { QuestStatus } from "../models/enums/QuestStatus";
|
||||||
import { ILogger } from "../models/spt/utils/ILogger";
|
import { ILogger } from "../models/spt/utils/ILogger";
|
||||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
import { DatabaseServer } from "../servers/DatabaseServer";
|
||||||
import { LocalisationService } from "../services/LocalisationService";
|
import { LocalisationService } from "../services/LocalisationService";
|
||||||
@ -15,12 +16,22 @@ export declare class AssortHelper {
|
|||||||
/**
|
/**
|
||||||
* Remove assorts from a trader that have not been unlocked yet
|
* Remove assorts from a trader that have not been unlocked yet
|
||||||
* @param pmcProfile player profile
|
* @param pmcProfile player profile
|
||||||
* @param traderId traders id
|
* @param traderId traders id the assort belongs to
|
||||||
* @param assort assort items from a trader
|
* @param traderAssorts All assort items from same trader
|
||||||
* @param mergedQuestAssorts An object of quest assort to quest id unlocks for all traders
|
* @param mergedQuestAssorts Dict of quest assort to quest id unlocks for all traders
|
||||||
* @returns assort items minus locked quest assorts
|
* @returns assort items minus locked quest assorts
|
||||||
*/
|
*/
|
||||||
stripLockedQuestAssort(pmcProfile: IPmcData, traderId: string, assort: ITraderAssort, mergedQuestAssorts: Record<string, Record<string, string>>, flea?: boolean): ITraderAssort;
|
stripLockedQuestAssort(pmcProfile: IPmcData, traderId: string, traderAssorts: ITraderAssort, mergedQuestAssorts: Record<string, Record<string, string>>, 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<string, Record<string, string>>, assortId: string): {
|
||||||
|
questId: string;
|
||||||
|
status: QuestStatus[];
|
||||||
|
};
|
||||||
/**
|
/**
|
||||||
* Remove assorts from a trader that have not been unlocked yet
|
* Remove assorts from a trader that have not been unlocked yet
|
||||||
* @param pmcProfile player profile
|
* @param pmcProfile player profile
|
||||||
|
@ -40,7 +40,7 @@ export declare class QuestHelper {
|
|||||||
protected questConfig: IQuestConfig;
|
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);
|
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 pmcData Profile to search
|
||||||
* @param questID Quest id to look up
|
* @param questID Quest id to look up
|
||||||
* @returns QuestStatus enum
|
* @returns QuestStatus enum
|
||||||
@ -160,6 +160,13 @@ export declare class QuestHelper {
|
|||||||
* @returns IQuest object
|
* @returns IQuest object
|
||||||
*/
|
*/
|
||||||
getQuestFromDb(questId: string, pmcData: IPmcData): IQuest;
|
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
|
* Get the locale Id from locale db for a quest message
|
||||||
* @param questMessageId Quest message id to look up
|
* @param questMessageId Quest message id to look up
|
||||||
|
@ -47,7 +47,22 @@ export declare class RagfairOfferHelper {
|
|||||||
protected questConfig: IQuestConfig;
|
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);
|
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<string, ITraderAssort>, pmcProfile: IPmcData): IRagfairOffer[];
|
getValidOffers(searchRequest: ISearchRequestData, itemsToAdd: string[], traderAssorts: Record<string, ITraderAssort>, pmcProfile: IPmcData): IRagfairOffer[];
|
||||||
getOffersForBuild(info: ISearchRequestData, itemsToAdd: string[], assorts: Record<string, ITraderAssort>, 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<string, ITraderAssort>, 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<string, ITraderAssort>): boolean;
|
||||||
/**
|
/**
|
||||||
* Has a traders offer ran out of stock to sell to player
|
* Has a traders offer ran out of stock to sell to player
|
||||||
* @param offer Offer to check stock of
|
* @param offer Offer to check stock of
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
import { FenceLevel } from "../models/eft/common/IGlobals";
|
|
||||||
import { IPmcData } from "../models/eft/common/IPmcData";
|
import { IPmcData } from "../models/eft/common/IPmcData";
|
||||||
import { Item } from "../models/eft/common/tables/IItem";
|
import { ITraderAssort, ITraderBase, LoyaltyLevel } from "../models/eft/common/tables/ITrader";
|
||||||
import { IBarterScheme, ITraderAssort, ITraderBase, LoyaltyLevel } from "../models/eft/common/tables/ITrader";
|
|
||||||
import { ITraderConfig } from "../models/spt/config/ITraderConfig";
|
import { ITraderConfig } from "../models/spt/config/ITraderConfig";
|
||||||
import { ILogger } from "../models/spt/utils/ILogger";
|
import { ILogger } from "../models/spt/utils/ILogger";
|
||||||
import { ConfigServer } from "../servers/ConfigServer";
|
import { ConfigServer } from "../servers/ConfigServer";
|
||||||
@ -12,16 +10,12 @@ import { LocalisationService } from "../services/LocalisationService";
|
|||||||
import { PlayerService } from "../services/PlayerService";
|
import { PlayerService } from "../services/PlayerService";
|
||||||
import { TimeUtil } from "../utils/TimeUtil";
|
import { TimeUtil } from "../utils/TimeUtil";
|
||||||
import { HandbookHelper } from "./HandbookHelper";
|
import { HandbookHelper } from "./HandbookHelper";
|
||||||
import { ItemHelper } from "./ItemHelper";
|
|
||||||
import { PaymentHelper } from "./PaymentHelper";
|
|
||||||
import { ProfileHelper } from "./ProfileHelper";
|
import { ProfileHelper } from "./ProfileHelper";
|
||||||
export declare class TraderHelper {
|
export declare class TraderHelper {
|
||||||
protected logger: ILogger;
|
protected logger: ILogger;
|
||||||
protected databaseServer: DatabaseServer;
|
protected databaseServer: DatabaseServer;
|
||||||
protected saveServer: SaveServer;
|
protected saveServer: SaveServer;
|
||||||
protected profileHelper: ProfileHelper;
|
protected profileHelper: ProfileHelper;
|
||||||
protected paymentHelper: PaymentHelper;
|
|
||||||
protected itemHelper: ItemHelper;
|
|
||||||
protected handbookHelper: HandbookHelper;
|
protected handbookHelper: HandbookHelper;
|
||||||
protected playerService: PlayerService;
|
protected playerService: PlayerService;
|
||||||
protected localisationService: LocalisationService;
|
protected localisationService: LocalisationService;
|
||||||
@ -31,7 +25,7 @@ export declare class TraderHelper {
|
|||||||
protected traderConfig: ITraderConfig;
|
protected traderConfig: ITraderConfig;
|
||||||
/** Dictionary of item tpl and the highest trader rouble price */
|
/** Dictionary of item tpl and the highest trader rouble price */
|
||||||
protected highestTraderPriceItems: Record<string, number>;
|
protected highestTraderPriceItems: Record<string, number>;
|
||||||
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;
|
getTrader(traderID: string, sessionID: string): ITraderBase;
|
||||||
getTraderAssortsById(traderId: string): ITraderAssort;
|
getTraderAssortsById(traderId: string): ITraderAssort;
|
||||||
/**
|
/**
|
||||||
@ -48,62 +42,6 @@ export declare class TraderHelper {
|
|||||||
* @param sessionId Session id
|
* @param sessionId Session id
|
||||||
*/
|
*/
|
||||||
setTraderUnlockedState(traderId: string, status: boolean, sessionId: string): void;
|
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<string, IBarterScheme[][]>;
|
|
||||||
/**
|
|
||||||
* 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
|
* Add standing to a trader and level them up if exp goes over level threshold
|
||||||
* @param sessionId Session id
|
* @param sessionId Session id
|
||||||
@ -129,13 +67,6 @@ export declare class TraderHelper {
|
|||||||
* @returns Time in seconds
|
* @returns Time in seconds
|
||||||
*/
|
*/
|
||||||
getTraderUpdateSeconds(traderId: string): number;
|
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;
|
getLoyaltyLevel(traderID: string, pmcData: IPmcData): LoyaltyLevel;
|
||||||
/**
|
/**
|
||||||
* Store the purchase of an assort from a trader in the player profile
|
* Store the purchase of an assort from a trader in the player profile
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
import { Item } from "./tables/IItem";
|
||||||
export interface ILooseLoot {
|
export interface ILooseLoot {
|
||||||
spawnpointCount: SpawnpointCount;
|
spawnpointCount: SpawnpointCount;
|
||||||
spawnpointsForced: SpawnpointsForced[];
|
spawnpointsForced: SpawnpointsForced[];
|
||||||
@ -24,10 +25,6 @@ export interface SpawnpointTemplate {
|
|||||||
Root: any;
|
Root: any;
|
||||||
Items: Item[];
|
Items: Item[];
|
||||||
}
|
}
|
||||||
export interface Item {
|
|
||||||
_id: string;
|
|
||||||
_tpl?: string;
|
|
||||||
}
|
|
||||||
export interface Spawnpoint {
|
export interface Spawnpoint {
|
||||||
locationId: string;
|
locationId: string;
|
||||||
probability: number;
|
probability: number;
|
||||||
|
@ -46,7 +46,7 @@ export interface AvailableForProps {
|
|||||||
parentId: string;
|
parentId: string;
|
||||||
isEncoded: boolean;
|
isEncoded: boolean;
|
||||||
dynamicLocale: boolean;
|
dynamicLocale: boolean;
|
||||||
value?: number;
|
value?: string | number;
|
||||||
compareMethod?: string;
|
compareMethod?: string;
|
||||||
visibilityConditions?: VisibilityCondition[];
|
visibilityConditions?: VisibilityCondition[];
|
||||||
target?: string | string[];
|
target?: string | string[];
|
||||||
|
@ -20,4 +20,5 @@ export interface Requirement {
|
|||||||
areaType?: number;
|
areaType?: number;
|
||||||
requiredLevel?: number;
|
requiredLevel?: number;
|
||||||
resource?: number;
|
resource?: number;
|
||||||
|
questId?: string;
|
||||||
}
|
}
|
||||||
|
@ -1,10 +1,9 @@
|
|||||||
import { IEmptyRequestData } from "../../eft/common/IEmptyRequestData";
|
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";
|
import { IGetBodyResponseData } from "../../eft/httpResponse/IGetBodyResponseData";
|
||||||
export interface ITraderCallbacks {
|
export interface ITraderCallbacks {
|
||||||
load(): void;
|
load(): void;
|
||||||
getTraderSettings(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<ITraderBase[]>;
|
getTraderSettings(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<ITraderBase[]>;
|
||||||
getProfilePurchases(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<Record<string, IBarterScheme[][]>>;
|
|
||||||
getTrader(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<ITraderBase>;
|
getTrader(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<ITraderBase>;
|
||||||
getAssort(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<ITraderAssort>;
|
getAssort(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<ITraderAssort>;
|
||||||
update(): boolean;
|
update(): boolean;
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
import { MinMax } from "../../common/MinMax";
|
import { MinMax } from "../../common/MinMax";
|
||||||
export interface IPmcConfig {
|
export interface IPmcConfig {
|
||||||
|
vestLoot: SlotLootSettings;
|
||||||
|
pocketLoot: SlotLootSettings;
|
||||||
|
backpackLoot: SlotLootSettings;
|
||||||
dynamicLoot: DynamicLoot;
|
dynamicLoot: DynamicLoot;
|
||||||
useDifficultyOverride: boolean;
|
useDifficultyOverride: boolean;
|
||||||
difficulty: string;
|
difficulty: string;
|
||||||
@ -22,8 +25,11 @@ export interface PmcTypes {
|
|||||||
usec: string;
|
usec: string;
|
||||||
bear: string;
|
bear: string;
|
||||||
}
|
}
|
||||||
export interface DynamicLoot {
|
export interface SlotLootSettings {
|
||||||
whitelist: string[];
|
whitelist: string[];
|
||||||
blacklist: string[];
|
blacklist: string[];
|
||||||
moneyStackLimits: Record<string, number>;
|
moneyStackLimits: Record<string, number>;
|
||||||
}
|
}
|
||||||
|
export interface DynamicLoot {
|
||||||
|
moneyStackLimits: Record<string, number>;
|
||||||
|
}
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
import { MinMax } from "../../../models/common/MinMax";
|
||||||
import { ELocationName } from "../../enums/ELocationName";
|
import { ELocationName } from "../../enums/ELocationName";
|
||||||
import { IBaseConfig } from "./IBaseConfig";
|
import { IBaseConfig } from "./IBaseConfig";
|
||||||
export interface IQuestConfig extends IBaseConfig {
|
export interface IQuestConfig extends IBaseConfig {
|
||||||
@ -50,7 +51,7 @@ export interface ITraderWhitelist {
|
|||||||
export interface IRepeatableQuestTypesConfig {
|
export interface IRepeatableQuestTypesConfig {
|
||||||
Exploration: IExploration;
|
Exploration: IExploration;
|
||||||
Completion: ICompletion;
|
Completion: ICompletion;
|
||||||
Elimination: IElimination;
|
Elimination: IEliminationConfig[];
|
||||||
}
|
}
|
||||||
export interface IExploration {
|
export interface IExploration {
|
||||||
maxExtracts: number;
|
maxExtracts: number;
|
||||||
@ -68,7 +69,8 @@ export interface ICompletion {
|
|||||||
useWhitelist: boolean;
|
useWhitelist: boolean;
|
||||||
useBlacklist: boolean;
|
useBlacklist: boolean;
|
||||||
}
|
}
|
||||||
export interface IElimination {
|
export interface IEliminationConfig {
|
||||||
|
levelRange: MinMax;
|
||||||
targets: ITarget[];
|
targets: ITarget[];
|
||||||
bodyPartProb: number;
|
bodyPartProb: number;
|
||||||
bodyParts: IBodyPart[];
|
bodyParts: IBodyPart[];
|
||||||
@ -80,11 +82,6 @@ export interface IElimination {
|
|||||||
maxKills: number;
|
maxKills: number;
|
||||||
minKills: number;
|
minKills: number;
|
||||||
}
|
}
|
||||||
export interface IProbabilityObject {
|
|
||||||
key: string;
|
|
||||||
relativeProbability: number;
|
|
||||||
data?: any;
|
|
||||||
}
|
|
||||||
export interface ITarget extends IProbabilityObject {
|
export interface ITarget extends IProbabilityObject {
|
||||||
data: IBossInfo;
|
data: IBossInfo;
|
||||||
}
|
}
|
||||||
@ -94,3 +91,8 @@ export interface IBossInfo {
|
|||||||
export interface IBodyPart extends IProbabilityObject {
|
export interface IBodyPart extends IProbabilityObject {
|
||||||
data: string[];
|
data: string[];
|
||||||
}
|
}
|
||||||
|
export interface IProbabilityObject {
|
||||||
|
key: string;
|
||||||
|
relativeProbability: number;
|
||||||
|
data?: any;
|
||||||
|
}
|
||||||
|
@ -30,6 +30,8 @@ export interface Reputation {
|
|||||||
}
|
}
|
||||||
export interface Dynamic {
|
export interface Dynamic {
|
||||||
purchasesAreFoundInRaid: boolean;
|
purchasesAreFoundInRaid: boolean;
|
||||||
|
/** Use the highest trader price for an offer if its greater than the price in templates/prices.json */
|
||||||
|
useTraderPriceForOffersIfHigher: boolean;
|
||||||
barter: Barter;
|
barter: Barter;
|
||||||
offerAdjustment: OfferAdjustment;
|
offerAdjustment: OfferAdjustment;
|
||||||
expiredOfferThreshold: number;
|
expiredOfferThreshold: number;
|
||||||
|
@ -4,8 +4,6 @@ export interface ITraderConfig extends IBaseConfig {
|
|||||||
kind: "aki-trader";
|
kind: "aki-trader";
|
||||||
updateTime: UpdateTime[];
|
updateTime: UpdateTime[];
|
||||||
updateTimeDefault: number;
|
updateTimeDefault: number;
|
||||||
/** What % of max durability an item needs to sell to a trader*/
|
|
||||||
durabilityPurchaseThreshhold: Record<string, number>;
|
|
||||||
traderPriceMultipler: number;
|
traderPriceMultipler: number;
|
||||||
persistPurchaseDataInProfile: boolean;
|
persistPurchaseDataInProfile: boolean;
|
||||||
fence: FenceConfig;
|
fence: FenceConfig;
|
||||||
|
@ -2,7 +2,7 @@ import { OnLoad } from "../di/OnLoad";
|
|||||||
import { OnUpdate } from "../di/OnUpdate";
|
import { OnUpdate } from "../di/OnUpdate";
|
||||||
import { TraderController } from "../controllers/TraderController";
|
import { TraderController } from "../controllers/TraderController";
|
||||||
import { IEmptyRequestData } from "../models/eft/common/IEmptyRequestData";
|
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 { IGetBodyResponseData } from "../models/eft/httpResponse/IGetBodyResponseData";
|
||||||
import { HttpResponseUtil } from "../utils/HttpResponseUtil";
|
import { HttpResponseUtil } from "../utils/HttpResponseUtil";
|
||||||
export declare class TraderCallbacks implements OnLoad, OnUpdate {
|
export declare class TraderCallbacks implements OnLoad, OnUpdate {
|
||||||
@ -13,11 +13,6 @@ export declare class TraderCallbacks implements OnLoad, OnUpdate {
|
|||||||
onUpdate(): Promise<boolean>;
|
onUpdate(): Promise<boolean>;
|
||||||
getRoute(): string;
|
getRoute(): string;
|
||||||
getTraderSettings(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<ITraderBase[]>;
|
getTraderSettings(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<ITraderBase[]>;
|
||||||
/**
|
|
||||||
* Handle client/trading/api/getUserAssortPrice/trader
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
getProfilePurchases(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<Record<string, IBarterScheme[][]>>;
|
|
||||||
getTrader(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<ITraderBase>;
|
getTrader(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<ITraderBase>;
|
||||||
getAssort(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<ITraderAssort>;
|
getAssort(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<ITraderAssort>;
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
import { PlayerScavGenerator } from "../generators/PlayerScavGenerator";
|
import { PlayerScavGenerator } from "../generators/PlayerScavGenerator";
|
||||||
|
import { DialogueHelper } from "../helpers/DialogueHelper";
|
||||||
import { ItemHelper } from "../helpers/ItemHelper";
|
import { ItemHelper } from "../helpers/ItemHelper";
|
||||||
import { ProfileHelper } from "../helpers/ProfileHelper";
|
import { ProfileHelper } from "../helpers/ProfileHelper";
|
||||||
import { QuestHelper } from "../helpers/QuestHelper";
|
import { QuestHelper } from "../helpers/QuestHelper";
|
||||||
@ -11,6 +12,7 @@ import { IProfileCreateRequestData } from "../models/eft/profile/IProfileCreateR
|
|||||||
import { ISearchFriendRequestData } from "../models/eft/profile/ISearchFriendRequestData";
|
import { ISearchFriendRequestData } from "../models/eft/profile/ISearchFriendRequestData";
|
||||||
import { ISearchFriendResponse } from "../models/eft/profile/ISearchFriendResponse";
|
import { ISearchFriendResponse } from "../models/eft/profile/ISearchFriendResponse";
|
||||||
import { IValidateNicknameRequestData } from "../models/eft/profile/IValidateNicknameRequestData";
|
import { IValidateNicknameRequestData } from "../models/eft/profile/IValidateNicknameRequestData";
|
||||||
|
import { EventOutputHolder } from "../routers/EventOutputHolder";
|
||||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
import { DatabaseServer } from "../servers/DatabaseServer";
|
||||||
import { SaveServer } from "../servers/SaveServer";
|
import { SaveServer } from "../servers/SaveServer";
|
||||||
import { ProfileFixerService } from "../services/ProfileFixerService";
|
import { ProfileFixerService } from "../services/ProfileFixerService";
|
||||||
@ -24,10 +26,12 @@ export declare class ProfileController {
|
|||||||
protected itemHelper: ItemHelper;
|
protected itemHelper: ItemHelper;
|
||||||
protected profileFixerService: ProfileFixerService;
|
protected profileFixerService: ProfileFixerService;
|
||||||
protected playerScavGenerator: PlayerScavGenerator;
|
protected playerScavGenerator: PlayerScavGenerator;
|
||||||
|
protected eventOutputHolder: EventOutputHolder;
|
||||||
protected traderHelper: TraderHelper;
|
protected traderHelper: TraderHelper;
|
||||||
|
protected dialogueHelper: DialogueHelper;
|
||||||
protected questHelper: QuestHelper;
|
protected questHelper: QuestHelper;
|
||||||
protected profileHelper: ProfileHelper;
|
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[];
|
getMiniProfiles(): IMiniProfile[];
|
||||||
getMiniProfile(sessionID: string): any;
|
getMiniProfile(sessionID: string): any;
|
||||||
getCompleteProfile(sessionID: string): IPmcData[];
|
getCompleteProfile(sessionID: string): IPmcData[];
|
||||||
|
@ -60,13 +60,6 @@ export declare class QuestController {
|
|||||||
* @returns client response
|
* @returns client response
|
||||||
*/
|
*/
|
||||||
acceptQuest(pmcData: IPmcData, acceptedQuest: IAcceptQuestRequestData, sessionID: string): IItemEventRouterResponse;
|
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
|
* Handle the client accepting a repeatable quest and starting it
|
||||||
* Send starting rewards if any to player and
|
* Send starting rewards if any to player and
|
||||||
@ -123,7 +116,14 @@ export declare class QuestController {
|
|||||||
* @param questsToFail quests to fail
|
* @param questsToFail quests to fail
|
||||||
*/
|
*/
|
||||||
protected failQuests(sessionID: string, pmcData: IPmcData, questsToFail: IQuest[]): void;
|
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,
|
* Increment a backend counter stored value by an amount,
|
||||||
* Create counter if it does not exist
|
* Create counter if it does not exist
|
||||||
|
@ -12,7 +12,7 @@ import { ITemplateItem } from "../models/eft/common/tables/ITemplateItem";
|
|||||||
import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse";
|
import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse";
|
||||||
import { IRepeatableQuestChangeRequest } from "../models/eft/quests/IRepeatableQuestChangeRequest";
|
import { IRepeatableQuestChangeRequest } from "../models/eft/quests/IRepeatableQuestChangeRequest";
|
||||||
import { ELocationName } from "../models/enums/ELocationName";
|
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 { ILogger } from "../models/spt/utils/ILogger";
|
||||||
import { EventOutputHolder } from "../routers/EventOutputHolder";
|
import { EventOutputHolder } from "../routers/EventOutputHolder";
|
||||||
import { ConfigServer } from "../servers/ConfigServer";
|
import { ConfigServer } from "../servers/ConfigServer";
|
||||||
@ -159,7 +159,14 @@ export declare class RepeatableQuestController {
|
|||||||
*/
|
*/
|
||||||
generateEliminationQuest(pmcLevel: number, traderId: string, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IElimination;
|
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
|
* @param locationKey e.g factory4_day
|
||||||
* @returns guid
|
* @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
|
* 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
|
* 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.
|
* where you have to e.g. kill scavs in same locations.
|
||||||
*
|
* @param repeatableConfig main repeatable quest config
|
||||||
* @returns {object} the quest pool
|
* @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
|
* Generate the reward for a mission. A reward can consist of
|
||||||
* - Experience
|
* - Experience
|
||||||
|
@ -2,27 +2,25 @@ import { FenceBaseAssortGenerator } from "../generators/FenceBaseAssortGenerator
|
|||||||
import { ProfileHelper } from "../helpers/ProfileHelper";
|
import { ProfileHelper } from "../helpers/ProfileHelper";
|
||||||
import { TraderAssortHelper } from "../helpers/TraderAssortHelper";
|
import { TraderAssortHelper } from "../helpers/TraderAssortHelper";
|
||||||
import { TraderHelper } from "../helpers/TraderHelper";
|
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 { ILogger } from "../models/spt/utils/ILogger";
|
||||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
import { DatabaseServer } from "../servers/DatabaseServer";
|
||||||
import { FenceService } from "../services/FenceService";
|
import { FenceService } from "../services/FenceService";
|
||||||
import { TraderAssortService } from "../services/TraderAssortService";
|
import { TraderAssortService } from "../services/TraderAssortService";
|
||||||
import { TraderPurchasePersisterService } from "../services/TraderPurchasePersisterService";
|
import { TraderPurchasePersisterService } from "../services/TraderPurchasePersisterService";
|
||||||
import { JsonUtil } from "../utils/JsonUtil";
|
import { JsonUtil } from "../utils/JsonUtil";
|
||||||
import { TimeUtil } from "../utils/TimeUtil";
|
|
||||||
export declare class TraderController {
|
export declare class TraderController {
|
||||||
protected logger: ILogger;
|
protected logger: ILogger;
|
||||||
protected databaseServer: DatabaseServer;
|
protected databaseServer: DatabaseServer;
|
||||||
protected traderAssortHelper: TraderAssortHelper;
|
protected traderAssortHelper: TraderAssortHelper;
|
||||||
protected profileHelper: ProfileHelper;
|
protected profileHelper: ProfileHelper;
|
||||||
protected traderHelper: TraderHelper;
|
protected traderHelper: TraderHelper;
|
||||||
protected timeUtil: TimeUtil;
|
|
||||||
protected traderAssortService: TraderAssortService;
|
protected traderAssortService: TraderAssortService;
|
||||||
protected traderPurchasePersisterService: TraderPurchasePersisterService;
|
protected traderPurchasePersisterService: TraderPurchasePersisterService;
|
||||||
protected fenceService: FenceService;
|
protected fenceService: FenceService;
|
||||||
protected fenceBaseAssortGenerator: FenceBaseAssortGenerator;
|
protected fenceBaseAssortGenerator: FenceBaseAssortGenerator;
|
||||||
protected jsonUtil: JsonUtil;
|
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
|
* Runs when onLoad event is fired
|
||||||
* Iterate over traders, ensure an unmolested copy of their assorts is stored in traderAssortService
|
* 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
|
* @returns array if ITraderBase objects
|
||||||
*/
|
*/
|
||||||
getAllTraders(sessionID: string): ITraderBase[];
|
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;
|
getTrader(sessionID: string, traderID: string): ITraderBase;
|
||||||
getAssort(sessionId: string, traderId: string): ITraderAssort;
|
getAssort(sessionId: string, traderId: string): ITraderAssort;
|
||||||
getPurchasesData(sessionID: string, traderID: string): Record<string, IBarterScheme[][]>;
|
|
||||||
}
|
}
|
||||||
|
@ -14,6 +14,7 @@ import { DatabaseServer } from "../servers/DatabaseServer";
|
|||||||
import { BotEquipmentFilterService } from "../services/BotEquipmentFilterService";
|
import { BotEquipmentFilterService } from "../services/BotEquipmentFilterService";
|
||||||
import { BotEquipmentModPoolService } from "../services/BotEquipmentModPoolService";
|
import { BotEquipmentModPoolService } from "../services/BotEquipmentModPoolService";
|
||||||
import { BotModLimits, BotWeaponModLimitService } from "../services/BotWeaponModLimitService";
|
import { BotModLimits, BotWeaponModLimitService } from "../services/BotWeaponModLimitService";
|
||||||
|
import { ItemBaseClassService } from "../services/ItemBaseClassService";
|
||||||
import { ItemFilterService } from "../services/ItemFilterService";
|
import { ItemFilterService } from "../services/ItemFilterService";
|
||||||
import { LocalisationService } from "../services/LocalisationService";
|
import { LocalisationService } from "../services/LocalisationService";
|
||||||
import { HashUtil } from "../utils/HashUtil";
|
import { HashUtil } from "../utils/HashUtil";
|
||||||
@ -28,6 +29,7 @@ export declare class BotEquipmentModGenerator {
|
|||||||
protected databaseServer: DatabaseServer;
|
protected databaseServer: DatabaseServer;
|
||||||
protected itemHelper: ItemHelper;
|
protected itemHelper: ItemHelper;
|
||||||
protected botEquipmentFilterService: BotEquipmentFilterService;
|
protected botEquipmentFilterService: BotEquipmentFilterService;
|
||||||
|
protected itemBaseClassService: ItemBaseClassService;
|
||||||
protected itemFilterService: ItemFilterService;
|
protected itemFilterService: ItemFilterService;
|
||||||
protected profileHelper: ProfileHelper;
|
protected profileHelper: ProfileHelper;
|
||||||
protected botWeaponModLimitService: BotWeaponModLimitService;
|
protected botWeaponModLimitService: BotWeaponModLimitService;
|
||||||
@ -38,7 +40,7 @@ export declare class BotEquipmentModGenerator {
|
|||||||
protected botEquipmentModPoolService: BotEquipmentModPoolService;
|
protected botEquipmentModPoolService: BotEquipmentModPoolService;
|
||||||
protected configServer: ConfigServer;
|
protected configServer: ConfigServer;
|
||||||
protected botConfig: IBotConfig;
|
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
|
* Check mods are compatible and add to array
|
||||||
* @param equipment Equipment item to add mods to
|
* @param equipment Equipment item to add mods to
|
||||||
|
@ -14,12 +14,14 @@ import { SeasonalEventService } from "../services/SeasonalEventService";
|
|||||||
import { HashUtil } from "../utils/HashUtil";
|
import { HashUtil } from "../utils/HashUtil";
|
||||||
import { JsonUtil } from "../utils/JsonUtil";
|
import { JsonUtil } from "../utils/JsonUtil";
|
||||||
import { RandomUtil } from "../utils/RandomUtil";
|
import { RandomUtil } from "../utils/RandomUtil";
|
||||||
|
import { TimeUtil } from "../utils/TimeUtil";
|
||||||
import { BotInventoryGenerator } from "./BotInventoryGenerator";
|
import { BotInventoryGenerator } from "./BotInventoryGenerator";
|
||||||
import { BotLevelGenerator } from "./BotLevelGenerator";
|
import { BotLevelGenerator } from "./BotLevelGenerator";
|
||||||
export declare class BotGenerator {
|
export declare class BotGenerator {
|
||||||
protected logger: ILogger;
|
protected logger: ILogger;
|
||||||
protected hashUtil: HashUtil;
|
protected hashUtil: HashUtil;
|
||||||
protected randomUtil: RandomUtil;
|
protected randomUtil: RandomUtil;
|
||||||
|
protected timeUtil: TimeUtil;
|
||||||
protected jsonUtil: JsonUtil;
|
protected jsonUtil: JsonUtil;
|
||||||
protected profileHelper: ProfileHelper;
|
protected profileHelper: ProfileHelper;
|
||||||
protected databaseServer: DatabaseServer;
|
protected databaseServer: DatabaseServer;
|
||||||
@ -32,7 +34,7 @@ export declare class BotGenerator {
|
|||||||
protected seasonalEventService: SeasonalEventService;
|
protected seasonalEventService: SeasonalEventService;
|
||||||
protected configServer: ConfigServer;
|
protected configServer: ConfigServer;
|
||||||
protected botConfig: IBotConfig;
|
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
|
* Generate a player scav bot object
|
||||||
* @param role e.g. assault / pmcbot
|
* @param role e.g. assault / pmcbot
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
import { BotGeneratorHelper } from "../helpers/BotGeneratorHelper";
|
import { BotGeneratorHelper } from "../helpers/BotGeneratorHelper";
|
||||||
import { BotWeaponGeneratorHelper } from "../helpers/BotWeaponGeneratorHelper";
|
import { BotWeaponGeneratorHelper } from "../helpers/BotWeaponGeneratorHelper";
|
||||||
import { HandbookHelper } from "../helpers/HandbookHelper";
|
import { HandbookHelper } from "../helpers/HandbookHelper";
|
||||||
|
import { ItemHelper } from "../helpers/ItemHelper";
|
||||||
import { Inventory as PmcInventory } from "../models/eft/common/tables/IBotBase";
|
import { Inventory as PmcInventory } from "../models/eft/common/tables/IBotBase";
|
||||||
import { Chances, Inventory, ItemMinMax, ModsChances } from "../models/eft/common/tables/IBotType";
|
import { Chances, Inventory, ItemMinMax, ModsChances } from "../models/eft/common/tables/IBotType";
|
||||||
import { Item } from "../models/eft/common/tables/IItem";
|
import { Item } from "../models/eft/common/tables/IItem";
|
||||||
@ -18,6 +19,7 @@ export declare class BotLootGenerator {
|
|||||||
protected logger: ILogger;
|
protected logger: ILogger;
|
||||||
protected hashUtil: HashUtil;
|
protected hashUtil: HashUtil;
|
||||||
protected randomUtil: RandomUtil;
|
protected randomUtil: RandomUtil;
|
||||||
|
protected itemHelper: ItemHelper;
|
||||||
protected databaseServer: DatabaseServer;
|
protected databaseServer: DatabaseServer;
|
||||||
protected handbookHelper: HandbookHelper;
|
protected handbookHelper: HandbookHelper;
|
||||||
protected botGeneratorHelper: BotGeneratorHelper;
|
protected botGeneratorHelper: BotGeneratorHelper;
|
||||||
@ -27,7 +29,7 @@ export declare class BotLootGenerator {
|
|||||||
protected localisationService: LocalisationService;
|
protected localisationService: LocalisationService;
|
||||||
protected configServer: ConfigServer;
|
protected configServer: ConfigServer;
|
||||||
protected botConfig: IBotConfig;
|
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
|
* Add loot to bots containers
|
||||||
* @param sessionId Session id
|
* @param sessionId Session id
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
import { ItemHelper } from "../helpers/ItemHelper";
|
import { ItemHelper } from "../helpers/ItemHelper";
|
||||||
|
import { ITemplateItem } from "../models/eft/common/tables/ITemplateItem";
|
||||||
import { IBotConfig } from "../models/spt/config/IBotConfig";
|
import { IBotConfig } from "../models/spt/config/IBotConfig";
|
||||||
import { ConfigServer } from "../servers/ConfigServer";
|
import { ConfigServer } from "../servers/ConfigServer";
|
||||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
import { DatabaseServer } from "../servers/DatabaseServer";
|
||||||
@ -15,6 +16,7 @@ export declare class PMCLootGenerator {
|
|||||||
protected itemFilterService: ItemFilterService;
|
protected itemFilterService: ItemFilterService;
|
||||||
protected seasonalEventService: SeasonalEventService;
|
protected seasonalEventService: SeasonalEventService;
|
||||||
protected pocketLootPool: string[];
|
protected pocketLootPool: string[];
|
||||||
|
protected vestLootPool: string[];
|
||||||
protected backpackLootPool: string[];
|
protected backpackLootPool: string[];
|
||||||
protected botConfig: IBotConfig;
|
protected botConfig: IBotConfig;
|
||||||
constructor(itemHelper: ItemHelper, databaseServer: DatabaseServer, configServer: ConfigServer, itemFilterService: ItemFilterService, seasonalEventService: SeasonalEventService);
|
constructor(itemHelper: ItemHelper, databaseServer: DatabaseServer, configServer: ConfigServer, itemFilterService: ItemFilterService, seasonalEventService: SeasonalEventService);
|
||||||
@ -23,6 +25,18 @@ export declare class PMCLootGenerator {
|
|||||||
* @returns string array of tpls
|
* @returns string array of tpls
|
||||||
*/
|
*/
|
||||||
generatePMCPocketLootPool(): string[];
|
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
|
* Create an array of loot items a PMC can have in their backpack
|
||||||
* @returns string array of tpls
|
* @returns string array of tpls
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
import { IPmcData } from "../models/eft/common/IPmcData";
|
import { IPmcData } from "../models/eft/common/IPmcData";
|
||||||
import { ITraderAssort } from "../models/eft/common/tables/ITrader";
|
import { ITraderAssort } from "../models/eft/common/tables/ITrader";
|
||||||
|
import { QuestStatus } from "../models/enums/QuestStatus";
|
||||||
import { ILogger } from "../models/spt/utils/ILogger";
|
import { ILogger } from "../models/spt/utils/ILogger";
|
||||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
import { DatabaseServer } from "../servers/DatabaseServer";
|
||||||
import { LocalisationService } from "../services/LocalisationService";
|
import { LocalisationService } from "../services/LocalisationService";
|
||||||
@ -15,12 +16,22 @@ export declare class AssortHelper {
|
|||||||
/**
|
/**
|
||||||
* Remove assorts from a trader that have not been unlocked yet
|
* Remove assorts from a trader that have not been unlocked yet
|
||||||
* @param pmcProfile player profile
|
* @param pmcProfile player profile
|
||||||
* @param traderId traders id
|
* @param traderId traders id the assort belongs to
|
||||||
* @param assort assort items from a trader
|
* @param traderAssorts All assort items from same trader
|
||||||
* @param mergedQuestAssorts An object of quest assort to quest id unlocks for all traders
|
* @param mergedQuestAssorts Dict of quest assort to quest id unlocks for all traders
|
||||||
* @returns assort items minus locked quest assorts
|
* @returns assort items minus locked quest assorts
|
||||||
*/
|
*/
|
||||||
stripLockedQuestAssort(pmcProfile: IPmcData, traderId: string, assort: ITraderAssort, mergedQuestAssorts: Record<string, Record<string, string>>, flea?: boolean): ITraderAssort;
|
stripLockedQuestAssort(pmcProfile: IPmcData, traderId: string, traderAssorts: ITraderAssort, mergedQuestAssorts: Record<string, Record<string, string>>, 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<string, Record<string, string>>, assortId: string): {
|
||||||
|
questId: string;
|
||||||
|
status: QuestStatus[];
|
||||||
|
};
|
||||||
/**
|
/**
|
||||||
* Remove assorts from a trader that have not been unlocked yet
|
* Remove assorts from a trader that have not been unlocked yet
|
||||||
* @param pmcProfile player profile
|
* @param pmcProfile player profile
|
||||||
|
@ -40,7 +40,7 @@ export declare class QuestHelper {
|
|||||||
protected questConfig: IQuestConfig;
|
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);
|
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 pmcData Profile to search
|
||||||
* @param questID Quest id to look up
|
* @param questID Quest id to look up
|
||||||
* @returns QuestStatus enum
|
* @returns QuestStatus enum
|
||||||
@ -160,6 +160,13 @@ export declare class QuestHelper {
|
|||||||
* @returns IQuest object
|
* @returns IQuest object
|
||||||
*/
|
*/
|
||||||
getQuestFromDb(questId: string, pmcData: IPmcData): IQuest;
|
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
|
* Get the locale Id from locale db for a quest message
|
||||||
* @param questMessageId Quest message id to look up
|
* @param questMessageId Quest message id to look up
|
||||||
|
@ -47,7 +47,22 @@ export declare class RagfairOfferHelper {
|
|||||||
protected questConfig: IQuestConfig;
|
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);
|
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<string, ITraderAssort>, pmcProfile: IPmcData): IRagfairOffer[];
|
getValidOffers(searchRequest: ISearchRequestData, itemsToAdd: string[], traderAssorts: Record<string, ITraderAssort>, pmcProfile: IPmcData): IRagfairOffer[];
|
||||||
getOffersForBuild(info: ISearchRequestData, itemsToAdd: string[], assorts: Record<string, ITraderAssort>, 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<string, ITraderAssort>, 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<string, ITraderAssort>): boolean;
|
||||||
/**
|
/**
|
||||||
* Has a traders offer ran out of stock to sell to player
|
* Has a traders offer ran out of stock to sell to player
|
||||||
* @param offer Offer to check stock of
|
* @param offer Offer to check stock of
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
import { FenceLevel } from "../models/eft/common/IGlobals";
|
|
||||||
import { IPmcData } from "../models/eft/common/IPmcData";
|
import { IPmcData } from "../models/eft/common/IPmcData";
|
||||||
import { Item } from "../models/eft/common/tables/IItem";
|
import { ITraderAssort, ITraderBase, LoyaltyLevel } from "../models/eft/common/tables/ITrader";
|
||||||
import { IBarterScheme, ITraderAssort, ITraderBase, LoyaltyLevel } from "../models/eft/common/tables/ITrader";
|
|
||||||
import { ITraderConfig } from "../models/spt/config/ITraderConfig";
|
import { ITraderConfig } from "../models/spt/config/ITraderConfig";
|
||||||
import { ILogger } from "../models/spt/utils/ILogger";
|
import { ILogger } from "../models/spt/utils/ILogger";
|
||||||
import { ConfigServer } from "../servers/ConfigServer";
|
import { ConfigServer } from "../servers/ConfigServer";
|
||||||
@ -12,16 +10,12 @@ import { LocalisationService } from "../services/LocalisationService";
|
|||||||
import { PlayerService } from "../services/PlayerService";
|
import { PlayerService } from "../services/PlayerService";
|
||||||
import { TimeUtil } from "../utils/TimeUtil";
|
import { TimeUtil } from "../utils/TimeUtil";
|
||||||
import { HandbookHelper } from "./HandbookHelper";
|
import { HandbookHelper } from "./HandbookHelper";
|
||||||
import { ItemHelper } from "./ItemHelper";
|
|
||||||
import { PaymentHelper } from "./PaymentHelper";
|
|
||||||
import { ProfileHelper } from "./ProfileHelper";
|
import { ProfileHelper } from "./ProfileHelper";
|
||||||
export declare class TraderHelper {
|
export declare class TraderHelper {
|
||||||
protected logger: ILogger;
|
protected logger: ILogger;
|
||||||
protected databaseServer: DatabaseServer;
|
protected databaseServer: DatabaseServer;
|
||||||
protected saveServer: SaveServer;
|
protected saveServer: SaveServer;
|
||||||
protected profileHelper: ProfileHelper;
|
protected profileHelper: ProfileHelper;
|
||||||
protected paymentHelper: PaymentHelper;
|
|
||||||
protected itemHelper: ItemHelper;
|
|
||||||
protected handbookHelper: HandbookHelper;
|
protected handbookHelper: HandbookHelper;
|
||||||
protected playerService: PlayerService;
|
protected playerService: PlayerService;
|
||||||
protected localisationService: LocalisationService;
|
protected localisationService: LocalisationService;
|
||||||
@ -31,7 +25,7 @@ export declare class TraderHelper {
|
|||||||
protected traderConfig: ITraderConfig;
|
protected traderConfig: ITraderConfig;
|
||||||
/** Dictionary of item tpl and the highest trader rouble price */
|
/** Dictionary of item tpl and the highest trader rouble price */
|
||||||
protected highestTraderPriceItems: Record<string, number>;
|
protected highestTraderPriceItems: Record<string, number>;
|
||||||
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;
|
getTrader(traderID: string, sessionID: string): ITraderBase;
|
||||||
getTraderAssortsById(traderId: string): ITraderAssort;
|
getTraderAssortsById(traderId: string): ITraderAssort;
|
||||||
/**
|
/**
|
||||||
@ -48,62 +42,6 @@ export declare class TraderHelper {
|
|||||||
* @param sessionId Session id
|
* @param sessionId Session id
|
||||||
*/
|
*/
|
||||||
setTraderUnlockedState(traderId: string, status: boolean, sessionId: string): void;
|
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<string, IBarterScheme[][]>;
|
|
||||||
/**
|
|
||||||
* 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
|
* Add standing to a trader and level them up if exp goes over level threshold
|
||||||
* @param sessionId Session id
|
* @param sessionId Session id
|
||||||
@ -129,13 +67,6 @@ export declare class TraderHelper {
|
|||||||
* @returns Time in seconds
|
* @returns Time in seconds
|
||||||
*/
|
*/
|
||||||
getTraderUpdateSeconds(traderId: string): number;
|
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;
|
getLoyaltyLevel(traderID: string, pmcData: IPmcData): LoyaltyLevel;
|
||||||
/**
|
/**
|
||||||
* Store the purchase of an assort from a trader in the player profile
|
* Store the purchase of an assort from a trader in the player profile
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
import { Item } from "./tables/IItem";
|
||||||
export interface ILooseLoot {
|
export interface ILooseLoot {
|
||||||
spawnpointCount: SpawnpointCount;
|
spawnpointCount: SpawnpointCount;
|
||||||
spawnpointsForced: SpawnpointsForced[];
|
spawnpointsForced: SpawnpointsForced[];
|
||||||
@ -24,10 +25,6 @@ export interface SpawnpointTemplate {
|
|||||||
Root: any;
|
Root: any;
|
||||||
Items: Item[];
|
Items: Item[];
|
||||||
}
|
}
|
||||||
export interface Item {
|
|
||||||
_id: string;
|
|
||||||
_tpl?: string;
|
|
||||||
}
|
|
||||||
export interface Spawnpoint {
|
export interface Spawnpoint {
|
||||||
locationId: string;
|
locationId: string;
|
||||||
probability: number;
|
probability: number;
|
||||||
|
@ -46,7 +46,7 @@ export interface AvailableForProps {
|
|||||||
parentId: string;
|
parentId: string;
|
||||||
isEncoded: boolean;
|
isEncoded: boolean;
|
||||||
dynamicLocale: boolean;
|
dynamicLocale: boolean;
|
||||||
value?: number;
|
value?: string | number;
|
||||||
compareMethod?: string;
|
compareMethod?: string;
|
||||||
visibilityConditions?: VisibilityCondition[];
|
visibilityConditions?: VisibilityCondition[];
|
||||||
target?: string | string[];
|
target?: string | string[];
|
||||||
|
@ -20,4 +20,5 @@ export interface Requirement {
|
|||||||
areaType?: number;
|
areaType?: number;
|
||||||
requiredLevel?: number;
|
requiredLevel?: number;
|
||||||
resource?: number;
|
resource?: number;
|
||||||
|
questId?: string;
|
||||||
}
|
}
|
||||||
|
@ -1,10 +1,9 @@
|
|||||||
import { IEmptyRequestData } from "../../eft/common/IEmptyRequestData";
|
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";
|
import { IGetBodyResponseData } from "../../eft/httpResponse/IGetBodyResponseData";
|
||||||
export interface ITraderCallbacks {
|
export interface ITraderCallbacks {
|
||||||
load(): void;
|
load(): void;
|
||||||
getTraderSettings(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<ITraderBase[]>;
|
getTraderSettings(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<ITraderBase[]>;
|
||||||
getProfilePurchases(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<Record<string, IBarterScheme[][]>>;
|
|
||||||
getTrader(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<ITraderBase>;
|
getTrader(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<ITraderBase>;
|
||||||
getAssort(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<ITraderAssort>;
|
getAssort(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<ITraderAssort>;
|
||||||
update(): boolean;
|
update(): boolean;
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
import { MinMax } from "../../common/MinMax";
|
import { MinMax } from "../../common/MinMax";
|
||||||
export interface IPmcConfig {
|
export interface IPmcConfig {
|
||||||
|
vestLoot: SlotLootSettings;
|
||||||
|
pocketLoot: SlotLootSettings;
|
||||||
|
backpackLoot: SlotLootSettings;
|
||||||
dynamicLoot: DynamicLoot;
|
dynamicLoot: DynamicLoot;
|
||||||
useDifficultyOverride: boolean;
|
useDifficultyOverride: boolean;
|
||||||
difficulty: string;
|
difficulty: string;
|
||||||
@ -22,8 +25,11 @@ export interface PmcTypes {
|
|||||||
usec: string;
|
usec: string;
|
||||||
bear: string;
|
bear: string;
|
||||||
}
|
}
|
||||||
export interface DynamicLoot {
|
export interface SlotLootSettings {
|
||||||
whitelist: string[];
|
whitelist: string[];
|
||||||
blacklist: string[];
|
blacklist: string[];
|
||||||
moneyStackLimits: Record<string, number>;
|
moneyStackLimits: Record<string, number>;
|
||||||
}
|
}
|
||||||
|
export interface DynamicLoot {
|
||||||
|
moneyStackLimits: Record<string, number>;
|
||||||
|
}
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
import { MinMax } from "../../../models/common/MinMax";
|
||||||
import { ELocationName } from "../../enums/ELocationName";
|
import { ELocationName } from "../../enums/ELocationName";
|
||||||
import { IBaseConfig } from "./IBaseConfig";
|
import { IBaseConfig } from "./IBaseConfig";
|
||||||
export interface IQuestConfig extends IBaseConfig {
|
export interface IQuestConfig extends IBaseConfig {
|
||||||
@ -50,7 +51,7 @@ export interface ITraderWhitelist {
|
|||||||
export interface IRepeatableQuestTypesConfig {
|
export interface IRepeatableQuestTypesConfig {
|
||||||
Exploration: IExploration;
|
Exploration: IExploration;
|
||||||
Completion: ICompletion;
|
Completion: ICompletion;
|
||||||
Elimination: IElimination;
|
Elimination: IEliminationConfig[];
|
||||||
}
|
}
|
||||||
export interface IExploration {
|
export interface IExploration {
|
||||||
maxExtracts: number;
|
maxExtracts: number;
|
||||||
@ -68,7 +69,8 @@ export interface ICompletion {
|
|||||||
useWhitelist: boolean;
|
useWhitelist: boolean;
|
||||||
useBlacklist: boolean;
|
useBlacklist: boolean;
|
||||||
}
|
}
|
||||||
export interface IElimination {
|
export interface IEliminationConfig {
|
||||||
|
levelRange: MinMax;
|
||||||
targets: ITarget[];
|
targets: ITarget[];
|
||||||
bodyPartProb: number;
|
bodyPartProb: number;
|
||||||
bodyParts: IBodyPart[];
|
bodyParts: IBodyPart[];
|
||||||
@ -80,11 +82,6 @@ export interface IElimination {
|
|||||||
maxKills: number;
|
maxKills: number;
|
||||||
minKills: number;
|
minKills: number;
|
||||||
}
|
}
|
||||||
export interface IProbabilityObject {
|
|
||||||
key: string;
|
|
||||||
relativeProbability: number;
|
|
||||||
data?: any;
|
|
||||||
}
|
|
||||||
export interface ITarget extends IProbabilityObject {
|
export interface ITarget extends IProbabilityObject {
|
||||||
data: IBossInfo;
|
data: IBossInfo;
|
||||||
}
|
}
|
||||||
@ -94,3 +91,8 @@ export interface IBossInfo {
|
|||||||
export interface IBodyPart extends IProbabilityObject {
|
export interface IBodyPart extends IProbabilityObject {
|
||||||
data: string[];
|
data: string[];
|
||||||
}
|
}
|
||||||
|
export interface IProbabilityObject {
|
||||||
|
key: string;
|
||||||
|
relativeProbability: number;
|
||||||
|
data?: any;
|
||||||
|
}
|
||||||
|
@ -30,6 +30,8 @@ export interface Reputation {
|
|||||||
}
|
}
|
||||||
export interface Dynamic {
|
export interface Dynamic {
|
||||||
purchasesAreFoundInRaid: boolean;
|
purchasesAreFoundInRaid: boolean;
|
||||||
|
/** Use the highest trader price for an offer if its greater than the price in templates/prices.json */
|
||||||
|
useTraderPriceForOffersIfHigher: boolean;
|
||||||
barter: Barter;
|
barter: Barter;
|
||||||
offerAdjustment: OfferAdjustment;
|
offerAdjustment: OfferAdjustment;
|
||||||
expiredOfferThreshold: number;
|
expiredOfferThreshold: number;
|
||||||
|
@ -4,8 +4,6 @@ export interface ITraderConfig extends IBaseConfig {
|
|||||||
kind: "aki-trader";
|
kind: "aki-trader";
|
||||||
updateTime: UpdateTime[];
|
updateTime: UpdateTime[];
|
||||||
updateTimeDefault: number;
|
updateTimeDefault: number;
|
||||||
/** What % of max durability an item needs to sell to a trader*/
|
|
||||||
durabilityPurchaseThreshhold: Record<string, number>;
|
|
||||||
traderPriceMultipler: number;
|
traderPriceMultipler: number;
|
||||||
persistPurchaseDataInProfile: boolean;
|
persistPurchaseDataInProfile: boolean;
|
||||||
fence: FenceConfig;
|
fence: FenceConfig;
|
||||||
|
@ -2,7 +2,7 @@ import { OnLoad } from "../di/OnLoad";
|
|||||||
import { OnUpdate } from "../di/OnUpdate";
|
import { OnUpdate } from "../di/OnUpdate";
|
||||||
import { TraderController } from "../controllers/TraderController";
|
import { TraderController } from "../controllers/TraderController";
|
||||||
import { IEmptyRequestData } from "../models/eft/common/IEmptyRequestData";
|
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 { IGetBodyResponseData } from "../models/eft/httpResponse/IGetBodyResponseData";
|
||||||
import { HttpResponseUtil } from "../utils/HttpResponseUtil";
|
import { HttpResponseUtil } from "../utils/HttpResponseUtil";
|
||||||
export declare class TraderCallbacks implements OnLoad, OnUpdate {
|
export declare class TraderCallbacks implements OnLoad, OnUpdate {
|
||||||
@ -13,11 +13,6 @@ export declare class TraderCallbacks implements OnLoad, OnUpdate {
|
|||||||
onUpdate(): Promise<boolean>;
|
onUpdate(): Promise<boolean>;
|
||||||
getRoute(): string;
|
getRoute(): string;
|
||||||
getTraderSettings(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<ITraderBase[]>;
|
getTraderSettings(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<ITraderBase[]>;
|
||||||
/**
|
|
||||||
* Handle client/trading/api/getUserAssortPrice/trader
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
getProfilePurchases(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<Record<string, IBarterScheme[][]>>;
|
|
||||||
getTrader(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<ITraderBase>;
|
getTrader(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<ITraderBase>;
|
||||||
getAssort(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<ITraderAssort>;
|
getAssort(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<ITraderAssort>;
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
import { PlayerScavGenerator } from "../generators/PlayerScavGenerator";
|
import { PlayerScavGenerator } from "../generators/PlayerScavGenerator";
|
||||||
|
import { DialogueHelper } from "../helpers/DialogueHelper";
|
||||||
import { ItemHelper } from "../helpers/ItemHelper";
|
import { ItemHelper } from "../helpers/ItemHelper";
|
||||||
import { ProfileHelper } from "../helpers/ProfileHelper";
|
import { ProfileHelper } from "../helpers/ProfileHelper";
|
||||||
import { QuestHelper } from "../helpers/QuestHelper";
|
import { QuestHelper } from "../helpers/QuestHelper";
|
||||||
@ -11,6 +12,7 @@ import { IProfileCreateRequestData } from "../models/eft/profile/IProfileCreateR
|
|||||||
import { ISearchFriendRequestData } from "../models/eft/profile/ISearchFriendRequestData";
|
import { ISearchFriendRequestData } from "../models/eft/profile/ISearchFriendRequestData";
|
||||||
import { ISearchFriendResponse } from "../models/eft/profile/ISearchFriendResponse";
|
import { ISearchFriendResponse } from "../models/eft/profile/ISearchFriendResponse";
|
||||||
import { IValidateNicknameRequestData } from "../models/eft/profile/IValidateNicknameRequestData";
|
import { IValidateNicknameRequestData } from "../models/eft/profile/IValidateNicknameRequestData";
|
||||||
|
import { EventOutputHolder } from "../routers/EventOutputHolder";
|
||||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
import { DatabaseServer } from "../servers/DatabaseServer";
|
||||||
import { SaveServer } from "../servers/SaveServer";
|
import { SaveServer } from "../servers/SaveServer";
|
||||||
import { ProfileFixerService } from "../services/ProfileFixerService";
|
import { ProfileFixerService } from "../services/ProfileFixerService";
|
||||||
@ -24,10 +26,12 @@ export declare class ProfileController {
|
|||||||
protected itemHelper: ItemHelper;
|
protected itemHelper: ItemHelper;
|
||||||
protected profileFixerService: ProfileFixerService;
|
protected profileFixerService: ProfileFixerService;
|
||||||
protected playerScavGenerator: PlayerScavGenerator;
|
protected playerScavGenerator: PlayerScavGenerator;
|
||||||
|
protected eventOutputHolder: EventOutputHolder;
|
||||||
protected traderHelper: TraderHelper;
|
protected traderHelper: TraderHelper;
|
||||||
|
protected dialogueHelper: DialogueHelper;
|
||||||
protected questHelper: QuestHelper;
|
protected questHelper: QuestHelper;
|
||||||
protected profileHelper: ProfileHelper;
|
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[];
|
getMiniProfiles(): IMiniProfile[];
|
||||||
getMiniProfile(sessionID: string): any;
|
getMiniProfile(sessionID: string): any;
|
||||||
getCompleteProfile(sessionID: string): IPmcData[];
|
getCompleteProfile(sessionID: string): IPmcData[];
|
||||||
|
@ -60,13 +60,6 @@ export declare class QuestController {
|
|||||||
* @returns client response
|
* @returns client response
|
||||||
*/
|
*/
|
||||||
acceptQuest(pmcData: IPmcData, acceptedQuest: IAcceptQuestRequestData, sessionID: string): IItemEventRouterResponse;
|
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
|
* Handle the client accepting a repeatable quest and starting it
|
||||||
* Send starting rewards if any to player and
|
* Send starting rewards if any to player and
|
||||||
@ -123,7 +116,14 @@ export declare class QuestController {
|
|||||||
* @param questsToFail quests to fail
|
* @param questsToFail quests to fail
|
||||||
*/
|
*/
|
||||||
protected failQuests(sessionID: string, pmcData: IPmcData, questsToFail: IQuest[]): void;
|
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,
|
* Increment a backend counter stored value by an amount,
|
||||||
* Create counter if it does not exist
|
* Create counter if it does not exist
|
||||||
|
@ -12,7 +12,7 @@ import { ITemplateItem } from "../models/eft/common/tables/ITemplateItem";
|
|||||||
import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse";
|
import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse";
|
||||||
import { IRepeatableQuestChangeRequest } from "../models/eft/quests/IRepeatableQuestChangeRequest";
|
import { IRepeatableQuestChangeRequest } from "../models/eft/quests/IRepeatableQuestChangeRequest";
|
||||||
import { ELocationName } from "../models/enums/ELocationName";
|
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 { ILogger } from "../models/spt/utils/ILogger";
|
||||||
import { EventOutputHolder } from "../routers/EventOutputHolder";
|
import { EventOutputHolder } from "../routers/EventOutputHolder";
|
||||||
import { ConfigServer } from "../servers/ConfigServer";
|
import { ConfigServer } from "../servers/ConfigServer";
|
||||||
@ -159,7 +159,14 @@ export declare class RepeatableQuestController {
|
|||||||
*/
|
*/
|
||||||
generateEliminationQuest(pmcLevel: number, traderId: string, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IElimination;
|
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
|
* @param locationKey e.g factory4_day
|
||||||
* @returns guid
|
* @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
|
* 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
|
* 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.
|
* where you have to e.g. kill scavs in same locations.
|
||||||
*
|
* @param repeatableConfig main repeatable quest config
|
||||||
* @returns {object} the quest pool
|
* @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
|
* Generate the reward for a mission. A reward can consist of
|
||||||
* - Experience
|
* - Experience
|
||||||
|
@ -2,27 +2,25 @@ import { FenceBaseAssortGenerator } from "../generators/FenceBaseAssortGenerator
|
|||||||
import { ProfileHelper } from "../helpers/ProfileHelper";
|
import { ProfileHelper } from "../helpers/ProfileHelper";
|
||||||
import { TraderAssortHelper } from "../helpers/TraderAssortHelper";
|
import { TraderAssortHelper } from "../helpers/TraderAssortHelper";
|
||||||
import { TraderHelper } from "../helpers/TraderHelper";
|
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 { ILogger } from "../models/spt/utils/ILogger";
|
||||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
import { DatabaseServer } from "../servers/DatabaseServer";
|
||||||
import { FenceService } from "../services/FenceService";
|
import { FenceService } from "../services/FenceService";
|
||||||
import { TraderAssortService } from "../services/TraderAssortService";
|
import { TraderAssortService } from "../services/TraderAssortService";
|
||||||
import { TraderPurchasePersisterService } from "../services/TraderPurchasePersisterService";
|
import { TraderPurchasePersisterService } from "../services/TraderPurchasePersisterService";
|
||||||
import { JsonUtil } from "../utils/JsonUtil";
|
import { JsonUtil } from "../utils/JsonUtil";
|
||||||
import { TimeUtil } from "../utils/TimeUtil";
|
|
||||||
export declare class TraderController {
|
export declare class TraderController {
|
||||||
protected logger: ILogger;
|
protected logger: ILogger;
|
||||||
protected databaseServer: DatabaseServer;
|
protected databaseServer: DatabaseServer;
|
||||||
protected traderAssortHelper: TraderAssortHelper;
|
protected traderAssortHelper: TraderAssortHelper;
|
||||||
protected profileHelper: ProfileHelper;
|
protected profileHelper: ProfileHelper;
|
||||||
protected traderHelper: TraderHelper;
|
protected traderHelper: TraderHelper;
|
||||||
protected timeUtil: TimeUtil;
|
|
||||||
protected traderAssortService: TraderAssortService;
|
protected traderAssortService: TraderAssortService;
|
||||||
protected traderPurchasePersisterService: TraderPurchasePersisterService;
|
protected traderPurchasePersisterService: TraderPurchasePersisterService;
|
||||||
protected fenceService: FenceService;
|
protected fenceService: FenceService;
|
||||||
protected fenceBaseAssortGenerator: FenceBaseAssortGenerator;
|
protected fenceBaseAssortGenerator: FenceBaseAssortGenerator;
|
||||||
protected jsonUtil: JsonUtil;
|
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
|
* Runs when onLoad event is fired
|
||||||
* Iterate over traders, ensure an unmolested copy of their assorts is stored in traderAssortService
|
* 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
|
* @returns array if ITraderBase objects
|
||||||
*/
|
*/
|
||||||
getAllTraders(sessionID: string): ITraderBase[];
|
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;
|
getTrader(sessionID: string, traderID: string): ITraderBase;
|
||||||
getAssort(sessionId: string, traderId: string): ITraderAssort;
|
getAssort(sessionId: string, traderId: string): ITraderAssort;
|
||||||
getPurchasesData(sessionID: string, traderID: string): Record<string, IBarterScheme[][]>;
|
|
||||||
}
|
}
|
||||||
|
@ -14,6 +14,7 @@ import { DatabaseServer } from "../servers/DatabaseServer";
|
|||||||
import { BotEquipmentFilterService } from "../services/BotEquipmentFilterService";
|
import { BotEquipmentFilterService } from "../services/BotEquipmentFilterService";
|
||||||
import { BotEquipmentModPoolService } from "../services/BotEquipmentModPoolService";
|
import { BotEquipmentModPoolService } from "../services/BotEquipmentModPoolService";
|
||||||
import { BotModLimits, BotWeaponModLimitService } from "../services/BotWeaponModLimitService";
|
import { BotModLimits, BotWeaponModLimitService } from "../services/BotWeaponModLimitService";
|
||||||
|
import { ItemBaseClassService } from "../services/ItemBaseClassService";
|
||||||
import { ItemFilterService } from "../services/ItemFilterService";
|
import { ItemFilterService } from "../services/ItemFilterService";
|
||||||
import { LocalisationService } from "../services/LocalisationService";
|
import { LocalisationService } from "../services/LocalisationService";
|
||||||
import { HashUtil } from "../utils/HashUtil";
|
import { HashUtil } from "../utils/HashUtil";
|
||||||
@ -28,6 +29,7 @@ export declare class BotEquipmentModGenerator {
|
|||||||
protected databaseServer: DatabaseServer;
|
protected databaseServer: DatabaseServer;
|
||||||
protected itemHelper: ItemHelper;
|
protected itemHelper: ItemHelper;
|
||||||
protected botEquipmentFilterService: BotEquipmentFilterService;
|
protected botEquipmentFilterService: BotEquipmentFilterService;
|
||||||
|
protected itemBaseClassService: ItemBaseClassService;
|
||||||
protected itemFilterService: ItemFilterService;
|
protected itemFilterService: ItemFilterService;
|
||||||
protected profileHelper: ProfileHelper;
|
protected profileHelper: ProfileHelper;
|
||||||
protected botWeaponModLimitService: BotWeaponModLimitService;
|
protected botWeaponModLimitService: BotWeaponModLimitService;
|
||||||
@ -38,7 +40,7 @@ export declare class BotEquipmentModGenerator {
|
|||||||
protected botEquipmentModPoolService: BotEquipmentModPoolService;
|
protected botEquipmentModPoolService: BotEquipmentModPoolService;
|
||||||
protected configServer: ConfigServer;
|
protected configServer: ConfigServer;
|
||||||
protected botConfig: IBotConfig;
|
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
|
* Check mods are compatible and add to array
|
||||||
* @param equipment Equipment item to add mods to
|
* @param equipment Equipment item to add mods to
|
||||||
|
@ -14,12 +14,14 @@ import { SeasonalEventService } from "../services/SeasonalEventService";
|
|||||||
import { HashUtil } from "../utils/HashUtil";
|
import { HashUtil } from "../utils/HashUtil";
|
||||||
import { JsonUtil } from "../utils/JsonUtil";
|
import { JsonUtil } from "../utils/JsonUtil";
|
||||||
import { RandomUtil } from "../utils/RandomUtil";
|
import { RandomUtil } from "../utils/RandomUtil";
|
||||||
|
import { TimeUtil } from "../utils/TimeUtil";
|
||||||
import { BotInventoryGenerator } from "./BotInventoryGenerator";
|
import { BotInventoryGenerator } from "./BotInventoryGenerator";
|
||||||
import { BotLevelGenerator } from "./BotLevelGenerator";
|
import { BotLevelGenerator } from "./BotLevelGenerator";
|
||||||
export declare class BotGenerator {
|
export declare class BotGenerator {
|
||||||
protected logger: ILogger;
|
protected logger: ILogger;
|
||||||
protected hashUtil: HashUtil;
|
protected hashUtil: HashUtil;
|
||||||
protected randomUtil: RandomUtil;
|
protected randomUtil: RandomUtil;
|
||||||
|
protected timeUtil: TimeUtil;
|
||||||
protected jsonUtil: JsonUtil;
|
protected jsonUtil: JsonUtil;
|
||||||
protected profileHelper: ProfileHelper;
|
protected profileHelper: ProfileHelper;
|
||||||
protected databaseServer: DatabaseServer;
|
protected databaseServer: DatabaseServer;
|
||||||
@ -32,7 +34,7 @@ export declare class BotGenerator {
|
|||||||
protected seasonalEventService: SeasonalEventService;
|
protected seasonalEventService: SeasonalEventService;
|
||||||
protected configServer: ConfigServer;
|
protected configServer: ConfigServer;
|
||||||
protected botConfig: IBotConfig;
|
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
|
* Generate a player scav bot object
|
||||||
* @param role e.g. assault / pmcbot
|
* @param role e.g. assault / pmcbot
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
import { BotGeneratorHelper } from "../helpers/BotGeneratorHelper";
|
import { BotGeneratorHelper } from "../helpers/BotGeneratorHelper";
|
||||||
import { BotWeaponGeneratorHelper } from "../helpers/BotWeaponGeneratorHelper";
|
import { BotWeaponGeneratorHelper } from "../helpers/BotWeaponGeneratorHelper";
|
||||||
import { HandbookHelper } from "../helpers/HandbookHelper";
|
import { HandbookHelper } from "../helpers/HandbookHelper";
|
||||||
|
import { ItemHelper } from "../helpers/ItemHelper";
|
||||||
import { Inventory as PmcInventory } from "../models/eft/common/tables/IBotBase";
|
import { Inventory as PmcInventory } from "../models/eft/common/tables/IBotBase";
|
||||||
import { Chances, Inventory, ItemMinMax, ModsChances } from "../models/eft/common/tables/IBotType";
|
import { Chances, Inventory, ItemMinMax, ModsChances } from "../models/eft/common/tables/IBotType";
|
||||||
import { Item } from "../models/eft/common/tables/IItem";
|
import { Item } from "../models/eft/common/tables/IItem";
|
||||||
@ -18,6 +19,7 @@ export declare class BotLootGenerator {
|
|||||||
protected logger: ILogger;
|
protected logger: ILogger;
|
||||||
protected hashUtil: HashUtil;
|
protected hashUtil: HashUtil;
|
||||||
protected randomUtil: RandomUtil;
|
protected randomUtil: RandomUtil;
|
||||||
|
protected itemHelper: ItemHelper;
|
||||||
protected databaseServer: DatabaseServer;
|
protected databaseServer: DatabaseServer;
|
||||||
protected handbookHelper: HandbookHelper;
|
protected handbookHelper: HandbookHelper;
|
||||||
protected botGeneratorHelper: BotGeneratorHelper;
|
protected botGeneratorHelper: BotGeneratorHelper;
|
||||||
@ -27,7 +29,7 @@ export declare class BotLootGenerator {
|
|||||||
protected localisationService: LocalisationService;
|
protected localisationService: LocalisationService;
|
||||||
protected configServer: ConfigServer;
|
protected configServer: ConfigServer;
|
||||||
protected botConfig: IBotConfig;
|
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
|
* Add loot to bots containers
|
||||||
* @param sessionId Session id
|
* @param sessionId Session id
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
import { ItemHelper } from "../helpers/ItemHelper";
|
import { ItemHelper } from "../helpers/ItemHelper";
|
||||||
|
import { ITemplateItem } from "../models/eft/common/tables/ITemplateItem";
|
||||||
import { IBotConfig } from "../models/spt/config/IBotConfig";
|
import { IBotConfig } from "../models/spt/config/IBotConfig";
|
||||||
import { ConfigServer } from "../servers/ConfigServer";
|
import { ConfigServer } from "../servers/ConfigServer";
|
||||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
import { DatabaseServer } from "../servers/DatabaseServer";
|
||||||
@ -15,6 +16,7 @@ export declare class PMCLootGenerator {
|
|||||||
protected itemFilterService: ItemFilterService;
|
protected itemFilterService: ItemFilterService;
|
||||||
protected seasonalEventService: SeasonalEventService;
|
protected seasonalEventService: SeasonalEventService;
|
||||||
protected pocketLootPool: string[];
|
protected pocketLootPool: string[];
|
||||||
|
protected vestLootPool: string[];
|
||||||
protected backpackLootPool: string[];
|
protected backpackLootPool: string[];
|
||||||
protected botConfig: IBotConfig;
|
protected botConfig: IBotConfig;
|
||||||
constructor(itemHelper: ItemHelper, databaseServer: DatabaseServer, configServer: ConfigServer, itemFilterService: ItemFilterService, seasonalEventService: SeasonalEventService);
|
constructor(itemHelper: ItemHelper, databaseServer: DatabaseServer, configServer: ConfigServer, itemFilterService: ItemFilterService, seasonalEventService: SeasonalEventService);
|
||||||
@ -23,6 +25,18 @@ export declare class PMCLootGenerator {
|
|||||||
* @returns string array of tpls
|
* @returns string array of tpls
|
||||||
*/
|
*/
|
||||||
generatePMCPocketLootPool(): string[];
|
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
|
* Create an array of loot items a PMC can have in their backpack
|
||||||
* @returns string array of tpls
|
* @returns string array of tpls
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
import { IPmcData } from "../models/eft/common/IPmcData";
|
import { IPmcData } from "../models/eft/common/IPmcData";
|
||||||
import { ITraderAssort } from "../models/eft/common/tables/ITrader";
|
import { ITraderAssort } from "../models/eft/common/tables/ITrader";
|
||||||
|
import { QuestStatus } from "../models/enums/QuestStatus";
|
||||||
import { ILogger } from "../models/spt/utils/ILogger";
|
import { ILogger } from "../models/spt/utils/ILogger";
|
||||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
import { DatabaseServer } from "../servers/DatabaseServer";
|
||||||
import { LocalisationService } from "../services/LocalisationService";
|
import { LocalisationService } from "../services/LocalisationService";
|
||||||
@ -15,12 +16,22 @@ export declare class AssortHelper {
|
|||||||
/**
|
/**
|
||||||
* Remove assorts from a trader that have not been unlocked yet
|
* Remove assorts from a trader that have not been unlocked yet
|
||||||
* @param pmcProfile player profile
|
* @param pmcProfile player profile
|
||||||
* @param traderId traders id
|
* @param traderId traders id the assort belongs to
|
||||||
* @param assort assort items from a trader
|
* @param traderAssorts All assort items from same trader
|
||||||
* @param mergedQuestAssorts An object of quest assort to quest id unlocks for all traders
|
* @param mergedQuestAssorts Dict of quest assort to quest id unlocks for all traders
|
||||||
* @returns assort items minus locked quest assorts
|
* @returns assort items minus locked quest assorts
|
||||||
*/
|
*/
|
||||||
stripLockedQuestAssort(pmcProfile: IPmcData, traderId: string, assort: ITraderAssort, mergedQuestAssorts: Record<string, Record<string, string>>, flea?: boolean): ITraderAssort;
|
stripLockedQuestAssort(pmcProfile: IPmcData, traderId: string, traderAssorts: ITraderAssort, mergedQuestAssorts: Record<string, Record<string, string>>, 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<string, Record<string, string>>, assortId: string): {
|
||||||
|
questId: string;
|
||||||
|
status: QuestStatus[];
|
||||||
|
};
|
||||||
/**
|
/**
|
||||||
* Remove assorts from a trader that have not been unlocked yet
|
* Remove assorts from a trader that have not been unlocked yet
|
||||||
* @param pmcProfile player profile
|
* @param pmcProfile player profile
|
||||||
|
@ -40,7 +40,7 @@ export declare class QuestHelper {
|
|||||||
protected questConfig: IQuestConfig;
|
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);
|
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 pmcData Profile to search
|
||||||
* @param questID Quest id to look up
|
* @param questID Quest id to look up
|
||||||
* @returns QuestStatus enum
|
* @returns QuestStatus enum
|
||||||
@ -160,6 +160,13 @@ export declare class QuestHelper {
|
|||||||
* @returns IQuest object
|
* @returns IQuest object
|
||||||
*/
|
*/
|
||||||
getQuestFromDb(questId: string, pmcData: IPmcData): IQuest;
|
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
|
* Get the locale Id from locale db for a quest message
|
||||||
* @param questMessageId Quest message id to look up
|
* @param questMessageId Quest message id to look up
|
||||||
|
@ -47,7 +47,22 @@ export declare class RagfairOfferHelper {
|
|||||||
protected questConfig: IQuestConfig;
|
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);
|
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<string, ITraderAssort>, pmcProfile: IPmcData): IRagfairOffer[];
|
getValidOffers(searchRequest: ISearchRequestData, itemsToAdd: string[], traderAssorts: Record<string, ITraderAssort>, pmcProfile: IPmcData): IRagfairOffer[];
|
||||||
getOffersForBuild(info: ISearchRequestData, itemsToAdd: string[], assorts: Record<string, ITraderAssort>, 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<string, ITraderAssort>, 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<string, ITraderAssort>): boolean;
|
||||||
/**
|
/**
|
||||||
* Has a traders offer ran out of stock to sell to player
|
* Has a traders offer ran out of stock to sell to player
|
||||||
* @param offer Offer to check stock of
|
* @param offer Offer to check stock of
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
import { FenceLevel } from "../models/eft/common/IGlobals";
|
|
||||||
import { IPmcData } from "../models/eft/common/IPmcData";
|
import { IPmcData } from "../models/eft/common/IPmcData";
|
||||||
import { Item } from "../models/eft/common/tables/IItem";
|
import { ITraderAssort, ITraderBase, LoyaltyLevel } from "../models/eft/common/tables/ITrader";
|
||||||
import { IBarterScheme, ITraderAssort, ITraderBase, LoyaltyLevel } from "../models/eft/common/tables/ITrader";
|
|
||||||
import { ITraderConfig } from "../models/spt/config/ITraderConfig";
|
import { ITraderConfig } from "../models/spt/config/ITraderConfig";
|
||||||
import { ILogger } from "../models/spt/utils/ILogger";
|
import { ILogger } from "../models/spt/utils/ILogger";
|
||||||
import { ConfigServer } from "../servers/ConfigServer";
|
import { ConfigServer } from "../servers/ConfigServer";
|
||||||
@ -12,16 +10,12 @@ import { LocalisationService } from "../services/LocalisationService";
|
|||||||
import { PlayerService } from "../services/PlayerService";
|
import { PlayerService } from "../services/PlayerService";
|
||||||
import { TimeUtil } from "../utils/TimeUtil";
|
import { TimeUtil } from "../utils/TimeUtil";
|
||||||
import { HandbookHelper } from "./HandbookHelper";
|
import { HandbookHelper } from "./HandbookHelper";
|
||||||
import { ItemHelper } from "./ItemHelper";
|
|
||||||
import { PaymentHelper } from "./PaymentHelper";
|
|
||||||
import { ProfileHelper } from "./ProfileHelper";
|
import { ProfileHelper } from "./ProfileHelper";
|
||||||
export declare class TraderHelper {
|
export declare class TraderHelper {
|
||||||
protected logger: ILogger;
|
protected logger: ILogger;
|
||||||
protected databaseServer: DatabaseServer;
|
protected databaseServer: DatabaseServer;
|
||||||
protected saveServer: SaveServer;
|
protected saveServer: SaveServer;
|
||||||
protected profileHelper: ProfileHelper;
|
protected profileHelper: ProfileHelper;
|
||||||
protected paymentHelper: PaymentHelper;
|
|
||||||
protected itemHelper: ItemHelper;
|
|
||||||
protected handbookHelper: HandbookHelper;
|
protected handbookHelper: HandbookHelper;
|
||||||
protected playerService: PlayerService;
|
protected playerService: PlayerService;
|
||||||
protected localisationService: LocalisationService;
|
protected localisationService: LocalisationService;
|
||||||
@ -31,7 +25,7 @@ export declare class TraderHelper {
|
|||||||
protected traderConfig: ITraderConfig;
|
protected traderConfig: ITraderConfig;
|
||||||
/** Dictionary of item tpl and the highest trader rouble price */
|
/** Dictionary of item tpl and the highest trader rouble price */
|
||||||
protected highestTraderPriceItems: Record<string, number>;
|
protected highestTraderPriceItems: Record<string, number>;
|
||||||
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;
|
getTrader(traderID: string, sessionID: string): ITraderBase;
|
||||||
getTraderAssortsById(traderId: string): ITraderAssort;
|
getTraderAssortsById(traderId: string): ITraderAssort;
|
||||||
/**
|
/**
|
||||||
@ -48,62 +42,6 @@ export declare class TraderHelper {
|
|||||||
* @param sessionId Session id
|
* @param sessionId Session id
|
||||||
*/
|
*/
|
||||||
setTraderUnlockedState(traderId: string, status: boolean, sessionId: string): void;
|
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<string, IBarterScheme[][]>;
|
|
||||||
/**
|
|
||||||
* 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
|
* Add standing to a trader and level them up if exp goes over level threshold
|
||||||
* @param sessionId Session id
|
* @param sessionId Session id
|
||||||
@ -129,13 +67,6 @@ export declare class TraderHelper {
|
|||||||
* @returns Time in seconds
|
* @returns Time in seconds
|
||||||
*/
|
*/
|
||||||
getTraderUpdateSeconds(traderId: string): number;
|
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;
|
getLoyaltyLevel(traderID: string, pmcData: IPmcData): LoyaltyLevel;
|
||||||
/**
|
/**
|
||||||
* Store the purchase of an assort from a trader in the player profile
|
* Store the purchase of an assort from a trader in the player profile
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
import { Item } from "./tables/IItem";
|
||||||
export interface ILooseLoot {
|
export interface ILooseLoot {
|
||||||
spawnpointCount: SpawnpointCount;
|
spawnpointCount: SpawnpointCount;
|
||||||
spawnpointsForced: SpawnpointsForced[];
|
spawnpointsForced: SpawnpointsForced[];
|
||||||
@ -24,10 +25,6 @@ export interface SpawnpointTemplate {
|
|||||||
Root: any;
|
Root: any;
|
||||||
Items: Item[];
|
Items: Item[];
|
||||||
}
|
}
|
||||||
export interface Item {
|
|
||||||
_id: string;
|
|
||||||
_tpl?: string;
|
|
||||||
}
|
|
||||||
export interface Spawnpoint {
|
export interface Spawnpoint {
|
||||||
locationId: string;
|
locationId: string;
|
||||||
probability: number;
|
probability: number;
|
||||||
|
@ -46,7 +46,7 @@ export interface AvailableForProps {
|
|||||||
parentId: string;
|
parentId: string;
|
||||||
isEncoded: boolean;
|
isEncoded: boolean;
|
||||||
dynamicLocale: boolean;
|
dynamicLocale: boolean;
|
||||||
value?: number;
|
value?: string | number;
|
||||||
compareMethod?: string;
|
compareMethod?: string;
|
||||||
visibilityConditions?: VisibilityCondition[];
|
visibilityConditions?: VisibilityCondition[];
|
||||||
target?: string | string[];
|
target?: string | string[];
|
||||||
|
@ -20,4 +20,5 @@ export interface Requirement {
|
|||||||
areaType?: number;
|
areaType?: number;
|
||||||
requiredLevel?: number;
|
requiredLevel?: number;
|
||||||
resource?: number;
|
resource?: number;
|
||||||
|
questId?: string;
|
||||||
}
|
}
|
||||||
|
@ -1,10 +1,9 @@
|
|||||||
import { IEmptyRequestData } from "../../eft/common/IEmptyRequestData";
|
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";
|
import { IGetBodyResponseData } from "../../eft/httpResponse/IGetBodyResponseData";
|
||||||
export interface ITraderCallbacks {
|
export interface ITraderCallbacks {
|
||||||
load(): void;
|
load(): void;
|
||||||
getTraderSettings(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<ITraderBase[]>;
|
getTraderSettings(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<ITraderBase[]>;
|
||||||
getProfilePurchases(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<Record<string, IBarterScheme[][]>>;
|
|
||||||
getTrader(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<ITraderBase>;
|
getTrader(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<ITraderBase>;
|
||||||
getAssort(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<ITraderAssort>;
|
getAssort(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<ITraderAssort>;
|
||||||
update(): boolean;
|
update(): boolean;
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
import { MinMax } from "../../common/MinMax";
|
import { MinMax } from "../../common/MinMax";
|
||||||
export interface IPmcConfig {
|
export interface IPmcConfig {
|
||||||
|
vestLoot: SlotLootSettings;
|
||||||
|
pocketLoot: SlotLootSettings;
|
||||||
|
backpackLoot: SlotLootSettings;
|
||||||
dynamicLoot: DynamicLoot;
|
dynamicLoot: DynamicLoot;
|
||||||
useDifficultyOverride: boolean;
|
useDifficultyOverride: boolean;
|
||||||
difficulty: string;
|
difficulty: string;
|
||||||
@ -22,8 +25,11 @@ export interface PmcTypes {
|
|||||||
usec: string;
|
usec: string;
|
||||||
bear: string;
|
bear: string;
|
||||||
}
|
}
|
||||||
export interface DynamicLoot {
|
export interface SlotLootSettings {
|
||||||
whitelist: string[];
|
whitelist: string[];
|
||||||
blacklist: string[];
|
blacklist: string[];
|
||||||
moneyStackLimits: Record<string, number>;
|
moneyStackLimits: Record<string, number>;
|
||||||
}
|
}
|
||||||
|
export interface DynamicLoot {
|
||||||
|
moneyStackLimits: Record<string, number>;
|
||||||
|
}
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
import { MinMax } from "../../../models/common/MinMax";
|
||||||
import { ELocationName } from "../../enums/ELocationName";
|
import { ELocationName } from "../../enums/ELocationName";
|
||||||
import { IBaseConfig } from "./IBaseConfig";
|
import { IBaseConfig } from "./IBaseConfig";
|
||||||
export interface IQuestConfig extends IBaseConfig {
|
export interface IQuestConfig extends IBaseConfig {
|
||||||
@ -50,7 +51,7 @@ export interface ITraderWhitelist {
|
|||||||
export interface IRepeatableQuestTypesConfig {
|
export interface IRepeatableQuestTypesConfig {
|
||||||
Exploration: IExploration;
|
Exploration: IExploration;
|
||||||
Completion: ICompletion;
|
Completion: ICompletion;
|
||||||
Elimination: IElimination;
|
Elimination: IEliminationConfig[];
|
||||||
}
|
}
|
||||||
export interface IExploration {
|
export interface IExploration {
|
||||||
maxExtracts: number;
|
maxExtracts: number;
|
||||||
@ -68,7 +69,8 @@ export interface ICompletion {
|
|||||||
useWhitelist: boolean;
|
useWhitelist: boolean;
|
||||||
useBlacklist: boolean;
|
useBlacklist: boolean;
|
||||||
}
|
}
|
||||||
export interface IElimination {
|
export interface IEliminationConfig {
|
||||||
|
levelRange: MinMax;
|
||||||
targets: ITarget[];
|
targets: ITarget[];
|
||||||
bodyPartProb: number;
|
bodyPartProb: number;
|
||||||
bodyParts: IBodyPart[];
|
bodyParts: IBodyPart[];
|
||||||
@ -80,11 +82,6 @@ export interface IElimination {
|
|||||||
maxKills: number;
|
maxKills: number;
|
||||||
minKills: number;
|
minKills: number;
|
||||||
}
|
}
|
||||||
export interface IProbabilityObject {
|
|
||||||
key: string;
|
|
||||||
relativeProbability: number;
|
|
||||||
data?: any;
|
|
||||||
}
|
|
||||||
export interface ITarget extends IProbabilityObject {
|
export interface ITarget extends IProbabilityObject {
|
||||||
data: IBossInfo;
|
data: IBossInfo;
|
||||||
}
|
}
|
||||||
@ -94,3 +91,8 @@ export interface IBossInfo {
|
|||||||
export interface IBodyPart extends IProbabilityObject {
|
export interface IBodyPart extends IProbabilityObject {
|
||||||
data: string[];
|
data: string[];
|
||||||
}
|
}
|
||||||
|
export interface IProbabilityObject {
|
||||||
|
key: string;
|
||||||
|
relativeProbability: number;
|
||||||
|
data?: any;
|
||||||
|
}
|
||||||
|
@ -30,6 +30,8 @@ export interface Reputation {
|
|||||||
}
|
}
|
||||||
export interface Dynamic {
|
export interface Dynamic {
|
||||||
purchasesAreFoundInRaid: boolean;
|
purchasesAreFoundInRaid: boolean;
|
||||||
|
/** Use the highest trader price for an offer if its greater than the price in templates/prices.json */
|
||||||
|
useTraderPriceForOffersIfHigher: boolean;
|
||||||
barter: Barter;
|
barter: Barter;
|
||||||
offerAdjustment: OfferAdjustment;
|
offerAdjustment: OfferAdjustment;
|
||||||
expiredOfferThreshold: number;
|
expiredOfferThreshold: number;
|
||||||
|
@ -4,8 +4,6 @@ export interface ITraderConfig extends IBaseConfig {
|
|||||||
kind: "aki-trader";
|
kind: "aki-trader";
|
||||||
updateTime: UpdateTime[];
|
updateTime: UpdateTime[];
|
||||||
updateTimeDefault: number;
|
updateTimeDefault: number;
|
||||||
/** What % of max durability an item needs to sell to a trader*/
|
|
||||||
durabilityPurchaseThreshhold: Record<string, number>;
|
|
||||||
traderPriceMultipler: number;
|
traderPriceMultipler: number;
|
||||||
persistPurchaseDataInProfile: boolean;
|
persistPurchaseDataInProfile: boolean;
|
||||||
fence: FenceConfig;
|
fence: FenceConfig;
|
||||||
|
@ -2,7 +2,7 @@ import { OnLoad } from "../di/OnLoad";
|
|||||||
import { OnUpdate } from "../di/OnUpdate";
|
import { OnUpdate } from "../di/OnUpdate";
|
||||||
import { TraderController } from "../controllers/TraderController";
|
import { TraderController } from "../controllers/TraderController";
|
||||||
import { IEmptyRequestData } from "../models/eft/common/IEmptyRequestData";
|
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 { IGetBodyResponseData } from "../models/eft/httpResponse/IGetBodyResponseData";
|
||||||
import { HttpResponseUtil } from "../utils/HttpResponseUtil";
|
import { HttpResponseUtil } from "../utils/HttpResponseUtil";
|
||||||
export declare class TraderCallbacks implements OnLoad, OnUpdate {
|
export declare class TraderCallbacks implements OnLoad, OnUpdate {
|
||||||
@ -13,11 +13,6 @@ export declare class TraderCallbacks implements OnLoad, OnUpdate {
|
|||||||
onUpdate(): Promise<boolean>;
|
onUpdate(): Promise<boolean>;
|
||||||
getRoute(): string;
|
getRoute(): string;
|
||||||
getTraderSettings(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<ITraderBase[]>;
|
getTraderSettings(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<ITraderBase[]>;
|
||||||
/**
|
|
||||||
* Handle client/trading/api/getUserAssortPrice/trader
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
getProfilePurchases(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<Record<string, IBarterScheme[][]>>;
|
|
||||||
getTrader(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<ITraderBase>;
|
getTrader(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<ITraderBase>;
|
||||||
getAssort(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<ITraderAssort>;
|
getAssort(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<ITraderAssort>;
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
import { PlayerScavGenerator } from "../generators/PlayerScavGenerator";
|
import { PlayerScavGenerator } from "../generators/PlayerScavGenerator";
|
||||||
|
import { DialogueHelper } from "../helpers/DialogueHelper";
|
||||||
import { ItemHelper } from "../helpers/ItemHelper";
|
import { ItemHelper } from "../helpers/ItemHelper";
|
||||||
import { ProfileHelper } from "../helpers/ProfileHelper";
|
import { ProfileHelper } from "../helpers/ProfileHelper";
|
||||||
import { QuestHelper } from "../helpers/QuestHelper";
|
import { QuestHelper } from "../helpers/QuestHelper";
|
||||||
@ -11,6 +12,7 @@ import { IProfileCreateRequestData } from "../models/eft/profile/IProfileCreateR
|
|||||||
import { ISearchFriendRequestData } from "../models/eft/profile/ISearchFriendRequestData";
|
import { ISearchFriendRequestData } from "../models/eft/profile/ISearchFriendRequestData";
|
||||||
import { ISearchFriendResponse } from "../models/eft/profile/ISearchFriendResponse";
|
import { ISearchFriendResponse } from "../models/eft/profile/ISearchFriendResponse";
|
||||||
import { IValidateNicknameRequestData } from "../models/eft/profile/IValidateNicknameRequestData";
|
import { IValidateNicknameRequestData } from "../models/eft/profile/IValidateNicknameRequestData";
|
||||||
|
import { EventOutputHolder } from "../routers/EventOutputHolder";
|
||||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
import { DatabaseServer } from "../servers/DatabaseServer";
|
||||||
import { SaveServer } from "../servers/SaveServer";
|
import { SaveServer } from "../servers/SaveServer";
|
||||||
import { ProfileFixerService } from "../services/ProfileFixerService";
|
import { ProfileFixerService } from "../services/ProfileFixerService";
|
||||||
@ -24,10 +26,12 @@ export declare class ProfileController {
|
|||||||
protected itemHelper: ItemHelper;
|
protected itemHelper: ItemHelper;
|
||||||
protected profileFixerService: ProfileFixerService;
|
protected profileFixerService: ProfileFixerService;
|
||||||
protected playerScavGenerator: PlayerScavGenerator;
|
protected playerScavGenerator: PlayerScavGenerator;
|
||||||
|
protected eventOutputHolder: EventOutputHolder;
|
||||||
protected traderHelper: TraderHelper;
|
protected traderHelper: TraderHelper;
|
||||||
|
protected dialogueHelper: DialogueHelper;
|
||||||
protected questHelper: QuestHelper;
|
protected questHelper: QuestHelper;
|
||||||
protected profileHelper: ProfileHelper;
|
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[];
|
getMiniProfiles(): IMiniProfile[];
|
||||||
getMiniProfile(sessionID: string): any;
|
getMiniProfile(sessionID: string): any;
|
||||||
getCompleteProfile(sessionID: string): IPmcData[];
|
getCompleteProfile(sessionID: string): IPmcData[];
|
||||||
|
@ -60,13 +60,6 @@ export declare class QuestController {
|
|||||||
* @returns client response
|
* @returns client response
|
||||||
*/
|
*/
|
||||||
acceptQuest(pmcData: IPmcData, acceptedQuest: IAcceptQuestRequestData, sessionID: string): IItemEventRouterResponse;
|
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
|
* Handle the client accepting a repeatable quest and starting it
|
||||||
* Send starting rewards if any to player and
|
* Send starting rewards if any to player and
|
||||||
@ -123,7 +116,14 @@ export declare class QuestController {
|
|||||||
* @param questsToFail quests to fail
|
* @param questsToFail quests to fail
|
||||||
*/
|
*/
|
||||||
protected failQuests(sessionID: string, pmcData: IPmcData, questsToFail: IQuest[]): void;
|
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,
|
* Increment a backend counter stored value by an amount,
|
||||||
* Create counter if it does not exist
|
* Create counter if it does not exist
|
||||||
|
@ -12,7 +12,7 @@ import { ITemplateItem } from "../models/eft/common/tables/ITemplateItem";
|
|||||||
import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse";
|
import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse";
|
||||||
import { IRepeatableQuestChangeRequest } from "../models/eft/quests/IRepeatableQuestChangeRequest";
|
import { IRepeatableQuestChangeRequest } from "../models/eft/quests/IRepeatableQuestChangeRequest";
|
||||||
import { ELocationName } from "../models/enums/ELocationName";
|
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 { ILogger } from "../models/spt/utils/ILogger";
|
||||||
import { EventOutputHolder } from "../routers/EventOutputHolder";
|
import { EventOutputHolder } from "../routers/EventOutputHolder";
|
||||||
import { ConfigServer } from "../servers/ConfigServer";
|
import { ConfigServer } from "../servers/ConfigServer";
|
||||||
@ -159,7 +159,14 @@ export declare class RepeatableQuestController {
|
|||||||
*/
|
*/
|
||||||
generateEliminationQuest(pmcLevel: number, traderId: string, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IElimination;
|
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
|
* @param locationKey e.g factory4_day
|
||||||
* @returns guid
|
* @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
|
* 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
|
* 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.
|
* where you have to e.g. kill scavs in same locations.
|
||||||
*
|
* @param repeatableConfig main repeatable quest config
|
||||||
* @returns {object} the quest pool
|
* @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
|
* Generate the reward for a mission. A reward can consist of
|
||||||
* - Experience
|
* - Experience
|
||||||
|
@ -2,27 +2,25 @@ import { FenceBaseAssortGenerator } from "../generators/FenceBaseAssortGenerator
|
|||||||
import { ProfileHelper } from "../helpers/ProfileHelper";
|
import { ProfileHelper } from "../helpers/ProfileHelper";
|
||||||
import { TraderAssortHelper } from "../helpers/TraderAssortHelper";
|
import { TraderAssortHelper } from "../helpers/TraderAssortHelper";
|
||||||
import { TraderHelper } from "../helpers/TraderHelper";
|
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 { ILogger } from "../models/spt/utils/ILogger";
|
||||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
import { DatabaseServer } from "../servers/DatabaseServer";
|
||||||
import { FenceService } from "../services/FenceService";
|
import { FenceService } from "../services/FenceService";
|
||||||
import { TraderAssortService } from "../services/TraderAssortService";
|
import { TraderAssortService } from "../services/TraderAssortService";
|
||||||
import { TraderPurchasePersisterService } from "../services/TraderPurchasePersisterService";
|
import { TraderPurchasePersisterService } from "../services/TraderPurchasePersisterService";
|
||||||
import { JsonUtil } from "../utils/JsonUtil";
|
import { JsonUtil } from "../utils/JsonUtil";
|
||||||
import { TimeUtil } from "../utils/TimeUtil";
|
|
||||||
export declare class TraderController {
|
export declare class TraderController {
|
||||||
protected logger: ILogger;
|
protected logger: ILogger;
|
||||||
protected databaseServer: DatabaseServer;
|
protected databaseServer: DatabaseServer;
|
||||||
protected traderAssortHelper: TraderAssortHelper;
|
protected traderAssortHelper: TraderAssortHelper;
|
||||||
protected profileHelper: ProfileHelper;
|
protected profileHelper: ProfileHelper;
|
||||||
protected traderHelper: TraderHelper;
|
protected traderHelper: TraderHelper;
|
||||||
protected timeUtil: TimeUtil;
|
|
||||||
protected traderAssortService: TraderAssortService;
|
protected traderAssortService: TraderAssortService;
|
||||||
protected traderPurchasePersisterService: TraderPurchasePersisterService;
|
protected traderPurchasePersisterService: TraderPurchasePersisterService;
|
||||||
protected fenceService: FenceService;
|
protected fenceService: FenceService;
|
||||||
protected fenceBaseAssortGenerator: FenceBaseAssortGenerator;
|
protected fenceBaseAssortGenerator: FenceBaseAssortGenerator;
|
||||||
protected jsonUtil: JsonUtil;
|
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
|
* Runs when onLoad event is fired
|
||||||
* Iterate over traders, ensure an unmolested copy of their assorts is stored in traderAssortService
|
* 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
|
* @returns array if ITraderBase objects
|
||||||
*/
|
*/
|
||||||
getAllTraders(sessionID: string): ITraderBase[];
|
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;
|
getTrader(sessionID: string, traderID: string): ITraderBase;
|
||||||
getAssort(sessionId: string, traderId: string): ITraderAssort;
|
getAssort(sessionId: string, traderId: string): ITraderAssort;
|
||||||
getPurchasesData(sessionID: string, traderID: string): Record<string, IBarterScheme[][]>;
|
|
||||||
}
|
}
|
||||||
|
@ -14,6 +14,7 @@ import { DatabaseServer } from "../servers/DatabaseServer";
|
|||||||
import { BotEquipmentFilterService } from "../services/BotEquipmentFilterService";
|
import { BotEquipmentFilterService } from "../services/BotEquipmentFilterService";
|
||||||
import { BotEquipmentModPoolService } from "../services/BotEquipmentModPoolService";
|
import { BotEquipmentModPoolService } from "../services/BotEquipmentModPoolService";
|
||||||
import { BotModLimits, BotWeaponModLimitService } from "../services/BotWeaponModLimitService";
|
import { BotModLimits, BotWeaponModLimitService } from "../services/BotWeaponModLimitService";
|
||||||
|
import { ItemBaseClassService } from "../services/ItemBaseClassService";
|
||||||
import { ItemFilterService } from "../services/ItemFilterService";
|
import { ItemFilterService } from "../services/ItemFilterService";
|
||||||
import { LocalisationService } from "../services/LocalisationService";
|
import { LocalisationService } from "../services/LocalisationService";
|
||||||
import { HashUtil } from "../utils/HashUtil";
|
import { HashUtil } from "../utils/HashUtil";
|
||||||
@ -28,6 +29,7 @@ export declare class BotEquipmentModGenerator {
|
|||||||
protected databaseServer: DatabaseServer;
|
protected databaseServer: DatabaseServer;
|
||||||
protected itemHelper: ItemHelper;
|
protected itemHelper: ItemHelper;
|
||||||
protected botEquipmentFilterService: BotEquipmentFilterService;
|
protected botEquipmentFilterService: BotEquipmentFilterService;
|
||||||
|
protected itemBaseClassService: ItemBaseClassService;
|
||||||
protected itemFilterService: ItemFilterService;
|
protected itemFilterService: ItemFilterService;
|
||||||
protected profileHelper: ProfileHelper;
|
protected profileHelper: ProfileHelper;
|
||||||
protected botWeaponModLimitService: BotWeaponModLimitService;
|
protected botWeaponModLimitService: BotWeaponModLimitService;
|
||||||
@ -38,7 +40,7 @@ export declare class BotEquipmentModGenerator {
|
|||||||
protected botEquipmentModPoolService: BotEquipmentModPoolService;
|
protected botEquipmentModPoolService: BotEquipmentModPoolService;
|
||||||
protected configServer: ConfigServer;
|
protected configServer: ConfigServer;
|
||||||
protected botConfig: IBotConfig;
|
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
|
* Check mods are compatible and add to array
|
||||||
* @param equipment Equipment item to add mods to
|
* @param equipment Equipment item to add mods to
|
||||||
|
@ -14,12 +14,14 @@ import { SeasonalEventService } from "../services/SeasonalEventService";
|
|||||||
import { HashUtil } from "../utils/HashUtil";
|
import { HashUtil } from "../utils/HashUtil";
|
||||||
import { JsonUtil } from "../utils/JsonUtil";
|
import { JsonUtil } from "../utils/JsonUtil";
|
||||||
import { RandomUtil } from "../utils/RandomUtil";
|
import { RandomUtil } from "../utils/RandomUtil";
|
||||||
|
import { TimeUtil } from "../utils/TimeUtil";
|
||||||
import { BotInventoryGenerator } from "./BotInventoryGenerator";
|
import { BotInventoryGenerator } from "./BotInventoryGenerator";
|
||||||
import { BotLevelGenerator } from "./BotLevelGenerator";
|
import { BotLevelGenerator } from "./BotLevelGenerator";
|
||||||
export declare class BotGenerator {
|
export declare class BotGenerator {
|
||||||
protected logger: ILogger;
|
protected logger: ILogger;
|
||||||
protected hashUtil: HashUtil;
|
protected hashUtil: HashUtil;
|
||||||
protected randomUtil: RandomUtil;
|
protected randomUtil: RandomUtil;
|
||||||
|
protected timeUtil: TimeUtil;
|
||||||
protected jsonUtil: JsonUtil;
|
protected jsonUtil: JsonUtil;
|
||||||
protected profileHelper: ProfileHelper;
|
protected profileHelper: ProfileHelper;
|
||||||
protected databaseServer: DatabaseServer;
|
protected databaseServer: DatabaseServer;
|
||||||
@ -32,7 +34,7 @@ export declare class BotGenerator {
|
|||||||
protected seasonalEventService: SeasonalEventService;
|
protected seasonalEventService: SeasonalEventService;
|
||||||
protected configServer: ConfigServer;
|
protected configServer: ConfigServer;
|
||||||
protected botConfig: IBotConfig;
|
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
|
* Generate a player scav bot object
|
||||||
* @param role e.g. assault / pmcbot
|
* @param role e.g. assault / pmcbot
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
import { BotGeneratorHelper } from "../helpers/BotGeneratorHelper";
|
import { BotGeneratorHelper } from "../helpers/BotGeneratorHelper";
|
||||||
import { BotWeaponGeneratorHelper } from "../helpers/BotWeaponGeneratorHelper";
|
import { BotWeaponGeneratorHelper } from "../helpers/BotWeaponGeneratorHelper";
|
||||||
import { HandbookHelper } from "../helpers/HandbookHelper";
|
import { HandbookHelper } from "../helpers/HandbookHelper";
|
||||||
|
import { ItemHelper } from "../helpers/ItemHelper";
|
||||||
import { Inventory as PmcInventory } from "../models/eft/common/tables/IBotBase";
|
import { Inventory as PmcInventory } from "../models/eft/common/tables/IBotBase";
|
||||||
import { Chances, Inventory, ItemMinMax, ModsChances } from "../models/eft/common/tables/IBotType";
|
import { Chances, Inventory, ItemMinMax, ModsChances } from "../models/eft/common/tables/IBotType";
|
||||||
import { Item } from "../models/eft/common/tables/IItem";
|
import { Item } from "../models/eft/common/tables/IItem";
|
||||||
@ -18,6 +19,7 @@ export declare class BotLootGenerator {
|
|||||||
protected logger: ILogger;
|
protected logger: ILogger;
|
||||||
protected hashUtil: HashUtil;
|
protected hashUtil: HashUtil;
|
||||||
protected randomUtil: RandomUtil;
|
protected randomUtil: RandomUtil;
|
||||||
|
protected itemHelper: ItemHelper;
|
||||||
protected databaseServer: DatabaseServer;
|
protected databaseServer: DatabaseServer;
|
||||||
protected handbookHelper: HandbookHelper;
|
protected handbookHelper: HandbookHelper;
|
||||||
protected botGeneratorHelper: BotGeneratorHelper;
|
protected botGeneratorHelper: BotGeneratorHelper;
|
||||||
@ -27,7 +29,7 @@ export declare class BotLootGenerator {
|
|||||||
protected localisationService: LocalisationService;
|
protected localisationService: LocalisationService;
|
||||||
protected configServer: ConfigServer;
|
protected configServer: ConfigServer;
|
||||||
protected botConfig: IBotConfig;
|
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
|
* Add loot to bots containers
|
||||||
* @param sessionId Session id
|
* @param sessionId Session id
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
import { ItemHelper } from "../helpers/ItemHelper";
|
import { ItemHelper } from "../helpers/ItemHelper";
|
||||||
|
import { ITemplateItem } from "../models/eft/common/tables/ITemplateItem";
|
||||||
import { IBotConfig } from "../models/spt/config/IBotConfig";
|
import { IBotConfig } from "../models/spt/config/IBotConfig";
|
||||||
import { ConfigServer } from "../servers/ConfigServer";
|
import { ConfigServer } from "../servers/ConfigServer";
|
||||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
import { DatabaseServer } from "../servers/DatabaseServer";
|
||||||
@ -15,6 +16,7 @@ export declare class PMCLootGenerator {
|
|||||||
protected itemFilterService: ItemFilterService;
|
protected itemFilterService: ItemFilterService;
|
||||||
protected seasonalEventService: SeasonalEventService;
|
protected seasonalEventService: SeasonalEventService;
|
||||||
protected pocketLootPool: string[];
|
protected pocketLootPool: string[];
|
||||||
|
protected vestLootPool: string[];
|
||||||
protected backpackLootPool: string[];
|
protected backpackLootPool: string[];
|
||||||
protected botConfig: IBotConfig;
|
protected botConfig: IBotConfig;
|
||||||
constructor(itemHelper: ItemHelper, databaseServer: DatabaseServer, configServer: ConfigServer, itemFilterService: ItemFilterService, seasonalEventService: SeasonalEventService);
|
constructor(itemHelper: ItemHelper, databaseServer: DatabaseServer, configServer: ConfigServer, itemFilterService: ItemFilterService, seasonalEventService: SeasonalEventService);
|
||||||
@ -23,6 +25,18 @@ export declare class PMCLootGenerator {
|
|||||||
* @returns string array of tpls
|
* @returns string array of tpls
|
||||||
*/
|
*/
|
||||||
generatePMCPocketLootPool(): string[];
|
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
|
* Create an array of loot items a PMC can have in their backpack
|
||||||
* @returns string array of tpls
|
* @returns string array of tpls
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
import { IPmcData } from "../models/eft/common/IPmcData";
|
import { IPmcData } from "../models/eft/common/IPmcData";
|
||||||
import { ITraderAssort } from "../models/eft/common/tables/ITrader";
|
import { ITraderAssort } from "../models/eft/common/tables/ITrader";
|
||||||
|
import { QuestStatus } from "../models/enums/QuestStatus";
|
||||||
import { ILogger } from "../models/spt/utils/ILogger";
|
import { ILogger } from "../models/spt/utils/ILogger";
|
||||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
import { DatabaseServer } from "../servers/DatabaseServer";
|
||||||
import { LocalisationService } from "../services/LocalisationService";
|
import { LocalisationService } from "../services/LocalisationService";
|
||||||
@ -15,12 +16,22 @@ export declare class AssortHelper {
|
|||||||
/**
|
/**
|
||||||
* Remove assorts from a trader that have not been unlocked yet
|
* Remove assorts from a trader that have not been unlocked yet
|
||||||
* @param pmcProfile player profile
|
* @param pmcProfile player profile
|
||||||
* @param traderId traders id
|
* @param traderId traders id the assort belongs to
|
||||||
* @param assort assort items from a trader
|
* @param traderAssorts All assort items from same trader
|
||||||
* @param mergedQuestAssorts An object of quest assort to quest id unlocks for all traders
|
* @param mergedQuestAssorts Dict of quest assort to quest id unlocks for all traders
|
||||||
* @returns assort items minus locked quest assorts
|
* @returns assort items minus locked quest assorts
|
||||||
*/
|
*/
|
||||||
stripLockedQuestAssort(pmcProfile: IPmcData, traderId: string, assort: ITraderAssort, mergedQuestAssorts: Record<string, Record<string, string>>, flea?: boolean): ITraderAssort;
|
stripLockedQuestAssort(pmcProfile: IPmcData, traderId: string, traderAssorts: ITraderAssort, mergedQuestAssorts: Record<string, Record<string, string>>, 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<string, Record<string, string>>, assortId: string): {
|
||||||
|
questId: string;
|
||||||
|
status: QuestStatus[];
|
||||||
|
};
|
||||||
/**
|
/**
|
||||||
* Remove assorts from a trader that have not been unlocked yet
|
* Remove assorts from a trader that have not been unlocked yet
|
||||||
* @param pmcProfile player profile
|
* @param pmcProfile player profile
|
||||||
|
@ -40,7 +40,7 @@ export declare class QuestHelper {
|
|||||||
protected questConfig: IQuestConfig;
|
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);
|
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 pmcData Profile to search
|
||||||
* @param questID Quest id to look up
|
* @param questID Quest id to look up
|
||||||
* @returns QuestStatus enum
|
* @returns QuestStatus enum
|
||||||
@ -160,6 +160,13 @@ export declare class QuestHelper {
|
|||||||
* @returns IQuest object
|
* @returns IQuest object
|
||||||
*/
|
*/
|
||||||
getQuestFromDb(questId: string, pmcData: IPmcData): IQuest;
|
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
|
* Get the locale Id from locale db for a quest message
|
||||||
* @param questMessageId Quest message id to look up
|
* @param questMessageId Quest message id to look up
|
||||||
|
@ -47,7 +47,22 @@ export declare class RagfairOfferHelper {
|
|||||||
protected questConfig: IQuestConfig;
|
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);
|
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<string, ITraderAssort>, pmcProfile: IPmcData): IRagfairOffer[];
|
getValidOffers(searchRequest: ISearchRequestData, itemsToAdd: string[], traderAssorts: Record<string, ITraderAssort>, pmcProfile: IPmcData): IRagfairOffer[];
|
||||||
getOffersForBuild(info: ISearchRequestData, itemsToAdd: string[], assorts: Record<string, ITraderAssort>, 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<string, ITraderAssort>, 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<string, ITraderAssort>): boolean;
|
||||||
/**
|
/**
|
||||||
* Has a traders offer ran out of stock to sell to player
|
* Has a traders offer ran out of stock to sell to player
|
||||||
* @param offer Offer to check stock of
|
* @param offer Offer to check stock of
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
import { FenceLevel } from "../models/eft/common/IGlobals";
|
|
||||||
import { IPmcData } from "../models/eft/common/IPmcData";
|
import { IPmcData } from "../models/eft/common/IPmcData";
|
||||||
import { Item } from "../models/eft/common/tables/IItem";
|
import { ITraderAssort, ITraderBase, LoyaltyLevel } from "../models/eft/common/tables/ITrader";
|
||||||
import { IBarterScheme, ITraderAssort, ITraderBase, LoyaltyLevel } from "../models/eft/common/tables/ITrader";
|
|
||||||
import { ITraderConfig } from "../models/spt/config/ITraderConfig";
|
import { ITraderConfig } from "../models/spt/config/ITraderConfig";
|
||||||
import { ILogger } from "../models/spt/utils/ILogger";
|
import { ILogger } from "../models/spt/utils/ILogger";
|
||||||
import { ConfigServer } from "../servers/ConfigServer";
|
import { ConfigServer } from "../servers/ConfigServer";
|
||||||
@ -12,16 +10,12 @@ import { LocalisationService } from "../services/LocalisationService";
|
|||||||
import { PlayerService } from "../services/PlayerService";
|
import { PlayerService } from "../services/PlayerService";
|
||||||
import { TimeUtil } from "../utils/TimeUtil";
|
import { TimeUtil } from "../utils/TimeUtil";
|
||||||
import { HandbookHelper } from "./HandbookHelper";
|
import { HandbookHelper } from "./HandbookHelper";
|
||||||
import { ItemHelper } from "./ItemHelper";
|
|
||||||
import { PaymentHelper } from "./PaymentHelper";
|
|
||||||
import { ProfileHelper } from "./ProfileHelper";
|
import { ProfileHelper } from "./ProfileHelper";
|
||||||
export declare class TraderHelper {
|
export declare class TraderHelper {
|
||||||
protected logger: ILogger;
|
protected logger: ILogger;
|
||||||
protected databaseServer: DatabaseServer;
|
protected databaseServer: DatabaseServer;
|
||||||
protected saveServer: SaveServer;
|
protected saveServer: SaveServer;
|
||||||
protected profileHelper: ProfileHelper;
|
protected profileHelper: ProfileHelper;
|
||||||
protected paymentHelper: PaymentHelper;
|
|
||||||
protected itemHelper: ItemHelper;
|
|
||||||
protected handbookHelper: HandbookHelper;
|
protected handbookHelper: HandbookHelper;
|
||||||
protected playerService: PlayerService;
|
protected playerService: PlayerService;
|
||||||
protected localisationService: LocalisationService;
|
protected localisationService: LocalisationService;
|
||||||
@ -31,7 +25,7 @@ export declare class TraderHelper {
|
|||||||
protected traderConfig: ITraderConfig;
|
protected traderConfig: ITraderConfig;
|
||||||
/** Dictionary of item tpl and the highest trader rouble price */
|
/** Dictionary of item tpl and the highest trader rouble price */
|
||||||
protected highestTraderPriceItems: Record<string, number>;
|
protected highestTraderPriceItems: Record<string, number>;
|
||||||
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;
|
getTrader(traderID: string, sessionID: string): ITraderBase;
|
||||||
getTraderAssortsById(traderId: string): ITraderAssort;
|
getTraderAssortsById(traderId: string): ITraderAssort;
|
||||||
/**
|
/**
|
||||||
@ -48,62 +42,6 @@ export declare class TraderHelper {
|
|||||||
* @param sessionId Session id
|
* @param sessionId Session id
|
||||||
*/
|
*/
|
||||||
setTraderUnlockedState(traderId: string, status: boolean, sessionId: string): void;
|
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<string, IBarterScheme[][]>;
|
|
||||||
/**
|
|
||||||
* 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
|
* Add standing to a trader and level them up if exp goes over level threshold
|
||||||
* @param sessionId Session id
|
* @param sessionId Session id
|
||||||
@ -129,13 +67,6 @@ export declare class TraderHelper {
|
|||||||
* @returns Time in seconds
|
* @returns Time in seconds
|
||||||
*/
|
*/
|
||||||
getTraderUpdateSeconds(traderId: string): number;
|
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;
|
getLoyaltyLevel(traderID: string, pmcData: IPmcData): LoyaltyLevel;
|
||||||
/**
|
/**
|
||||||
* Store the purchase of an assort from a trader in the player profile
|
* Store the purchase of an assort from a trader in the player profile
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
import { Item } from "./tables/IItem";
|
||||||
export interface ILooseLoot {
|
export interface ILooseLoot {
|
||||||
spawnpointCount: SpawnpointCount;
|
spawnpointCount: SpawnpointCount;
|
||||||
spawnpointsForced: SpawnpointsForced[];
|
spawnpointsForced: SpawnpointsForced[];
|
||||||
@ -24,10 +25,6 @@ export interface SpawnpointTemplate {
|
|||||||
Root: any;
|
Root: any;
|
||||||
Items: Item[];
|
Items: Item[];
|
||||||
}
|
}
|
||||||
export interface Item {
|
|
||||||
_id: string;
|
|
||||||
_tpl?: string;
|
|
||||||
}
|
|
||||||
export interface Spawnpoint {
|
export interface Spawnpoint {
|
||||||
locationId: string;
|
locationId: string;
|
||||||
probability: number;
|
probability: number;
|
||||||
|
@ -46,7 +46,7 @@ export interface AvailableForProps {
|
|||||||
parentId: string;
|
parentId: string;
|
||||||
isEncoded: boolean;
|
isEncoded: boolean;
|
||||||
dynamicLocale: boolean;
|
dynamicLocale: boolean;
|
||||||
value?: number;
|
value?: string | number;
|
||||||
compareMethod?: string;
|
compareMethod?: string;
|
||||||
visibilityConditions?: VisibilityCondition[];
|
visibilityConditions?: VisibilityCondition[];
|
||||||
target?: string | string[];
|
target?: string | string[];
|
||||||
|
@ -20,4 +20,5 @@ export interface Requirement {
|
|||||||
areaType?: number;
|
areaType?: number;
|
||||||
requiredLevel?: number;
|
requiredLevel?: number;
|
||||||
resource?: number;
|
resource?: number;
|
||||||
|
questId?: string;
|
||||||
}
|
}
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user