Update types for examples
This commit is contained in:
parent
c0d3a6a357
commit
746a756046
@ -1,4 +1,5 @@
|
||||
import { GameController } from "../controllers/GameController";
|
||||
import { OnLoad } from "../di/OnLoad";
|
||||
import { IEmptyRequestData } from "../models/eft/common/IEmptyRequestData";
|
||||
import { ICheckVersionResponse } from "../models/eft/game/ICheckVersionResponse";
|
||||
import { ICurrentGroupResponse } from "../models/eft/game/ICurrentGroupResponse";
|
||||
@ -15,12 +16,14 @@ import { INullResponseData } from "../models/eft/httpResponse/INullResponseData"
|
||||
import { SaveServer } from "../servers/SaveServer";
|
||||
import { HttpResponseUtil } from "../utils/HttpResponseUtil";
|
||||
import { Watermark } from "../utils/Watermark";
|
||||
declare class GameCallbacks {
|
||||
declare class GameCallbacks implements OnLoad {
|
||||
protected httpResponse: HttpResponseUtil;
|
||||
protected watermark: Watermark;
|
||||
protected saveServer: SaveServer;
|
||||
protected gameController: GameController;
|
||||
constructor(httpResponse: HttpResponseUtil, watermark: Watermark, saveServer: SaveServer, gameController: GameController);
|
||||
onLoad(): Promise<void>;
|
||||
getRoute(): string;
|
||||
/**
|
||||
* Handle client/game/version/validate
|
||||
* @returns INullResponseData
|
||||
|
@ -61,13 +61,14 @@ export declare class GameController {
|
||||
protected pmcConfig: IPmcConfig;
|
||||
protected lootConfig: ILootConfig;
|
||||
constructor(logger: ILogger, databaseServer: DatabaseServer, jsonUtil: JsonUtil, timeUtil: TimeUtil, hashUtil: HashUtil, preAkiModLoader: PreAkiModLoader, httpServerHelper: HttpServerHelper, randomUtil: RandomUtil, encodingUtil: EncodingUtil, hideoutHelper: HideoutHelper, profileHelper: ProfileHelper, profileFixerService: ProfileFixerService, localisationService: LocalisationService, customLocationWaveService: CustomLocationWaveService, openZoneService: OpenZoneService, seasonalEventService: SeasonalEventService, itemBaseClassService: ItemBaseClassService, giftService: GiftService, applicationContext: ApplicationContext, configServer: ConfigServer);
|
||||
load(): void;
|
||||
/**
|
||||
* Handle client/game/start
|
||||
*/
|
||||
gameStart(_url: string, _info: IEmptyRequestData, sessionID: string, startTimeStampMS: number): void;
|
||||
protected addCustomLooseLootPositions(): void;
|
||||
protected adjustLooseLootSpawnProbabilities(): void;
|
||||
protected setHideoutAreasAndCraftsTo30Secs(): void;
|
||||
protected setHideoutAreasAndCraftsTo40Secs(): void;
|
||||
/**
|
||||
* 3.7.0 moved AIDs to be numeric, old profiles need to be migrated
|
||||
* We store the old AID value in new field `sessionId`
|
||||
|
@ -29,34 +29,35 @@ export declare class HealthController {
|
||||
* stores in-raid player health
|
||||
* @param pmcData Player profile
|
||||
* @param info Request data
|
||||
* @param sessionID
|
||||
* @param sessionID Player id
|
||||
* @param addEffects Should effects found be added or removed from profile
|
||||
* @param deleteExistingEffects Should all prior effects be removed before apply new ones
|
||||
*/
|
||||
saveVitality(pmcData: IPmcData, info: ISyncHealthRequestData, sessionID: string, addEffects?: boolean, deleteExistingEffects?: boolean): void;
|
||||
/**
|
||||
* When healing in menu
|
||||
* @param pmcData
|
||||
* @param body
|
||||
* @param sessionID
|
||||
* @returns
|
||||
* @param pmcData Player profile
|
||||
* @param request Healing request
|
||||
* @param sessionID Player id
|
||||
* @returns IItemEventRouterResponse
|
||||
*/
|
||||
offraidHeal(pmcData: IPmcData, body: IOffraidHealRequestData, sessionID: string): IItemEventRouterResponse;
|
||||
offraidHeal(pmcData: IPmcData, request: IOffraidHealRequestData, sessionID: string): IItemEventRouterResponse;
|
||||
/**
|
||||
* Handle Eat event
|
||||
* Consume food/water outside of a raid
|
||||
* @param pmcData Player profile
|
||||
* @param body request Object
|
||||
* @param request Eat request
|
||||
* @param sessionID Session id
|
||||
* @returns IItemEventRouterResponse
|
||||
*/
|
||||
offraidEat(pmcData: IPmcData, body: IOffraidEatRequestData, sessionID: string): IItemEventRouterResponse;
|
||||
offraidEat(pmcData: IPmcData, request: IOffraidEatRequestData, sessionID: string): IItemEventRouterResponse;
|
||||
/**
|
||||
* Handle RestoreHealth event
|
||||
* Occurs on post-raid healing page
|
||||
* @param pmcData player profile
|
||||
* @param healthTreatmentRequest Request data from client
|
||||
* @param sessionID Session id
|
||||
* @returns
|
||||
* @returns IItemEventRouterResponse
|
||||
*/
|
||||
healthTreatment(pmcData: IPmcData, healthTreatmentRequest: IHealthTreatmentRequestData, sessionID: string): IItemEventRouterResponse;
|
||||
/**
|
||||
@ -66,12 +67,4 @@ export declare class HealthController {
|
||||
* @param sessionID
|
||||
*/
|
||||
applyWorkoutChanges(pmcData: IPmcData, info: IWorkoutData, sessionId: string): void;
|
||||
/**
|
||||
* Iterate over treatment request diff and find effects to remove from player limbs
|
||||
* @param sessionId
|
||||
* @param profile Profile to update
|
||||
* @param treatmentRequest client request
|
||||
* @param output response to send to client
|
||||
*/
|
||||
protected removeEffectsAfterPostRaidHeal(sessionId: string, profile: IPmcData, treatmentRequest: IHealthTreatmentRequestData, output: IItemEventRouterResponse): void;
|
||||
}
|
||||
|
@ -88,11 +88,11 @@ export declare class HideoutController {
|
||||
* @param pmcData Profile to edit
|
||||
* @param output Object to send back to client
|
||||
* @param sessionID Session/player id
|
||||
* @param profileHideoutArea Current hideout data for profile
|
||||
* @param profileParentHideoutArea Current hideout area for profile
|
||||
* @param dbHideoutArea Hideout area being upgraded
|
||||
* @param hideoutStage Stage hideout area is being upgraded to
|
||||
*/
|
||||
protected addContainerImprovementToProfile(output: IItemEventRouterResponse, sessionID: string, pmcData: IPmcData, profileHideoutArea: HideoutArea, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void;
|
||||
protected addContainerImprovementToProfile(output: IItemEventRouterResponse, sessionID: string, pmcData: IPmcData, profileParentHideoutArea: HideoutArea, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void;
|
||||
/**
|
||||
* Add an inventory item to profile from a hideout area stage data
|
||||
* @param pmcData Profile to update
|
||||
|
@ -4,6 +4,7 @@ import { WeightedRandomHelper } from "../helpers/WeightedRandomHelper";
|
||||
import { ILocationBase } from "../models/eft/common/ILocationBase";
|
||||
import { ILocationsGenerateAllResponse } from "../models/eft/common/ILocationsSourceDestinationBase";
|
||||
import { IAirdropLootResult } from "../models/eft/location/IAirdropLootResult";
|
||||
import { IGetLocationRequestData } from "../models/eft/location/IGetLocationRequestData";
|
||||
import { AirdropTypeEnum } from "../models/enums/AirdropType";
|
||||
import { IAirdropConfig } from "../models/spt/config/IAirdropConfig";
|
||||
import { ILocationConfig } from "../models/spt/config/ILocationConfig";
|
||||
@ -34,10 +35,11 @@ export declare class LocationController {
|
||||
/**
|
||||
* Handle client/location/getLocalloot
|
||||
* Get a location (map) with generated loot data
|
||||
* @param location Map to generate loot for
|
||||
* @param sessionId Player id
|
||||
* @param request Map request to generate
|
||||
* @returns ILocationBase
|
||||
*/
|
||||
get(location: string): ILocationBase;
|
||||
get(sessionId: string, request: IGetLocationRequestData): ILocationBase;
|
||||
/**
|
||||
* Generate a maps base location with loot
|
||||
* @param name Map name
|
||||
|
@ -61,7 +61,7 @@ export declare class QuestController {
|
||||
* @param playerLevel level of player to test against quest
|
||||
* @returns true if quest can be seen/accepted by player of defined level
|
||||
*/
|
||||
protected playerLevelFulfillsQuestRequrement(quest: IQuest, playerLevel: number): boolean;
|
||||
protected playerLevelFulfillsQuestRequirement(quest: IQuest, playerLevel: number): boolean;
|
||||
/**
|
||||
* Should a quest be shown to the player in trader quest screen
|
||||
* @param questId Quest to check
|
||||
|
@ -21,6 +21,7 @@ import { IGetMarketPriceRequestData } from "../models/eft/ragfair/IGetMarketPric
|
||||
import { IGetOffersResult } from "../models/eft/ragfair/IGetOffersResult";
|
||||
import { IRagfairOffer } from "../models/eft/ragfair/IRagfairOffer";
|
||||
import { ISearchRequestData } from "../models/eft/ragfair/ISearchRequestData";
|
||||
import { IProcessBuyTradeRequestData } from "../models/eft/trade/IProcessBuyTradeRequestData";
|
||||
import { IRagfairConfig } from "../models/spt/config/IRagfairConfig";
|
||||
import { ILogger } from "../models/spt/utils/ILogger";
|
||||
import { EventOutputHolder } from "../routers/EventOutputHolder";
|
||||
@ -125,6 +126,18 @@ export declare class RagfairController {
|
||||
* @returns IItemEventRouterResponse
|
||||
*/
|
||||
addPlayerOffer(pmcData: IPmcData, offerRequest: IAddOfferRequestData, sessionID: string): IItemEventRouterResponse;
|
||||
/**
|
||||
* Charge player a listing fee for using flea, pulls charge from data previously sent by client
|
||||
* @param sessionID Player id
|
||||
* @param rootItem Base item being listed (used when client tax cost not found and must be done on server)
|
||||
* @param pmcData Player profile
|
||||
* @param requirementsPriceInRub Rouble cost player chose for listing (used when client tax cost not found and must be done on server)
|
||||
* @param itemStackCount How many items were listed in player (used when client tax cost not found and must be done on server)
|
||||
* @param offerRequest Add offer request object from client
|
||||
* @param output IItemEventRouterResponse
|
||||
* @returns True if charging tax to player failed
|
||||
*/
|
||||
protected chargePlayerTaxFee(sessionID: string, rootItem: Item, pmcData: IPmcData, requirementsPriceInRub: number, itemStackCount: number, offerRequest: IAddOfferRequestData, output: IItemEventRouterResponse): boolean;
|
||||
/**
|
||||
* Is the item to be listed on the flea valid
|
||||
* @param offerRequest Client offer request
|
||||
@ -158,4 +171,11 @@ export declare class RagfairController {
|
||||
*/
|
||||
removeOffer(offerId: string, sessionID: string): IItemEventRouterResponse;
|
||||
extendOffer(info: IExtendOfferRequestData, sessionID: string): IItemEventRouterResponse;
|
||||
/**
|
||||
* Create a basic trader request object with price and currency type
|
||||
* @param currency What currency: RUB, EURO, USD
|
||||
* @param value Amount of currency
|
||||
* @returns IProcessBuyTradeRequestData
|
||||
*/
|
||||
protected createBuyTradeRequestObject(currency: string, value: number): IProcessBuyTradeRequestData;
|
||||
}
|
||||
|
@ -14,7 +14,6 @@ import { DatabaseServer } from "../servers/DatabaseServer";
|
||||
import { BotEquipmentFilterService } from "../services/BotEquipmentFilterService";
|
||||
import { BotEquipmentModPoolService } from "../services/BotEquipmentModPoolService";
|
||||
import { BotModLimits, BotWeaponModLimitService } from "../services/BotWeaponModLimitService";
|
||||
import { ItemBaseClassService } from "../services/ItemBaseClassService";
|
||||
import { ItemFilterService } from "../services/ItemFilterService";
|
||||
import { LocalisationService } from "../services/LocalisationService";
|
||||
import { HashUtil } from "../utils/HashUtil";
|
||||
@ -29,7 +28,6 @@ export declare class BotEquipmentModGenerator {
|
||||
protected databaseServer: DatabaseServer;
|
||||
protected itemHelper: ItemHelper;
|
||||
protected botEquipmentFilterService: BotEquipmentFilterService;
|
||||
protected itemBaseClassService: ItemBaseClassService;
|
||||
protected itemFilterService: ItemFilterService;
|
||||
protected profileHelper: ProfileHelper;
|
||||
protected botWeaponModLimitService: BotWeaponModLimitService;
|
||||
@ -40,7 +38,7 @@ export declare class BotEquipmentModGenerator {
|
||||
protected botEquipmentModPoolService: BotEquipmentModPoolService;
|
||||
protected configServer: ConfigServer;
|
||||
protected botConfig: IBotConfig;
|
||||
constructor(logger: ILogger, jsonUtil: JsonUtil, hashUtil: HashUtil, randomUtil: RandomUtil, probabilityHelper: ProbabilityHelper, databaseServer: DatabaseServer, itemHelper: ItemHelper, botEquipmentFilterService: BotEquipmentFilterService, itemBaseClassService: ItemBaseClassService, 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, itemFilterService: ItemFilterService, profileHelper: ProfileHelper, botWeaponModLimitService: BotWeaponModLimitService, botHelper: BotHelper, botGeneratorHelper: BotGeneratorHelper, botWeaponGeneratorHelper: BotWeaponGeneratorHelper, localisationService: LocalisationService, botEquipmentModPoolService: BotEquipmentModPoolService, configServer: ConfigServer);
|
||||
/**
|
||||
* Check mods are compatible and add to array
|
||||
* @param equipment Equipment item to add mods to
|
||||
|
@ -65,10 +65,11 @@ export declare class LocationGenerator {
|
||||
protected getGuaranteedContainers(staticContainersOnMap: IStaticContainerData[]): IStaticContainerData[];
|
||||
/**
|
||||
* Choose a number of containers based on their probabilty value to fulfil the desired count in containerData.chosenCount
|
||||
* @param groupId Name of the group the containers are being collected for
|
||||
* @param containerData Containers and probability values for a groupId
|
||||
* @returns List of chosen container Ids
|
||||
*/
|
||||
protected getContainersByProbabilty(containerData: IContainerGroupCount): string[];
|
||||
protected getContainersByProbabilty(groupId: string, containerData: IContainerGroupCount): string[];
|
||||
/**
|
||||
* Get a mapping of each groupid and the containers in that group + count of containers to spawn on map
|
||||
* @param containersGroups Container group values
|
||||
|
@ -31,12 +31,12 @@ export declare class PMCLootGenerator {
|
||||
*/
|
||||
generatePMCVestLootPool(): string[];
|
||||
/**
|
||||
* Check if item has a width/height that lets it fit into a 1x2/2x1 slot
|
||||
* 1x1 / 1x2 / 2x1
|
||||
* Check if item has a width/height that lets it fit into a 2x2 slot
|
||||
* 1x1 / 1x2 / 2x1 / 2x2
|
||||
* @param item Item to check size of
|
||||
* @returns true if it fits
|
||||
*/
|
||||
protected itemFitsInto1By2Slot(item: ITemplateItem): boolean;
|
||||
protected itemFitsInto2By2Slot(item: ITemplateItem): boolean;
|
||||
/**
|
||||
* Create an array of loot items a PMC can have in their backpack
|
||||
* @returns string array of tpls
|
||||
|
@ -55,11 +55,10 @@ export declare class RagfairOfferGenerator {
|
||||
* @param items Items in the offer
|
||||
* @param barterScheme Cost of item (currency or barter)
|
||||
* @param loyalLevel Loyalty level needed to buy item
|
||||
* @param price Price of offer
|
||||
* @param sellInOnePiece Set StackObjectsCount to 1
|
||||
* @param sellInOnePiece Flags sellInOnePiece to be true
|
||||
* @returns IRagfairOffer
|
||||
*/
|
||||
createFleaOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, price: number, sellInOnePiece?: boolean): IRagfairOffer;
|
||||
createFleaOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, sellInOnePiece?: boolean): IRagfairOffer;
|
||||
/**
|
||||
* Create an offer object ready to send to ragfairOfferService.addOffer()
|
||||
* @param userID Owner of the offer
|
||||
@ -67,17 +66,16 @@ export declare class RagfairOfferGenerator {
|
||||
* @param items Items in the offer
|
||||
* @param barterScheme Cost of item (currency or barter)
|
||||
* @param loyalLevel Loyalty level needed to buy item
|
||||
* @param price Price of offer
|
||||
* @param sellInOnePiece Set StackObjectsCount to 1
|
||||
* @returns IRagfairOffer
|
||||
*/
|
||||
protected createOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, price: number, sellInOnePiece?: boolean): IRagfairOffer;
|
||||
protected createOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, sellInOnePiece?: boolean): IRagfairOffer;
|
||||
/**
|
||||
* Calculate the offer price that's listed on the flea listing
|
||||
* @param offerRequirements barter requirements for offer
|
||||
* @returns rouble cost of offer
|
||||
*/
|
||||
protected calculateOfferListingPrice(offerRequirements: OfferRequirement[]): number;
|
||||
protected convertOfferRequirementsIntoRoubles(offerRequirements: OfferRequirement[]): number;
|
||||
/**
|
||||
* Get avatar url from trader table in db
|
||||
* @param isTrader Is user we're getting avatar for a trader
|
||||
@ -137,7 +135,7 @@ export declare class RagfairOfferGenerator {
|
||||
* @param itemDetails raw db item details
|
||||
* @returns Item array
|
||||
*/
|
||||
protected createSingleOfferForItem(items: Item[], isPreset: boolean, itemDetails: [boolean, ITemplateItem]): Promise<Item[]>;
|
||||
protected createSingleOfferForItem(items: Item[], isPreset: boolean, itemDetails: [boolean, ITemplateItem]): Promise<void>;
|
||||
/**
|
||||
* Generate trader offers on flea using the traders assort data
|
||||
* @param traderID Trader to generate offers for
|
||||
@ -151,7 +149,7 @@ export declare class RagfairOfferGenerator {
|
||||
* @param itemDetails db details of first item
|
||||
* @returns
|
||||
*/
|
||||
protected getItemCondition(userID: string, itemWithMods: Item[], itemDetails: ITemplateItem): Item[];
|
||||
protected randomiseItemUpdProperties(userID: string, itemWithMods: Item[], itemDetails: ITemplateItem): Item[];
|
||||
/**
|
||||
* Get the relevant condition id if item tpl matches in ragfair.json/condition
|
||||
* @param tpl Item to look for matching condition object
|
||||
@ -184,7 +182,7 @@ export declare class RagfairOfferGenerator {
|
||||
* @param offerItems Items for sale in offer
|
||||
* @returns Barter scheme
|
||||
*/
|
||||
protected createBarterRequirement(offerItems: Item[]): IBarterScheme[];
|
||||
protected createBarterBarterScheme(offerItems: Item[]): IBarterScheme[];
|
||||
/**
|
||||
* Get an array of flea prices + item tpl, cached in generator class inside `allowedFleaPriceItemsForBarter`
|
||||
* @returns array with tpl/price values
|
||||
@ -196,7 +194,9 @@ export declare class RagfairOfferGenerator {
|
||||
/**
|
||||
* Create a random currency-based barter scheme for an array of items
|
||||
* @param offerItems Items on offer
|
||||
* @param isPackOffer Is the barter scheme being created for a pack offer
|
||||
* @param multipler What to multiply the resulting price by
|
||||
* @returns Barter scheme for offer
|
||||
*/
|
||||
protected createCurrencyRequirement(offerItems: Item[]): IBarterScheme[];
|
||||
protected createCurrencyBarterScheme(offerItems: Item[], isPackOffer: boolean, multipler?: number): IBarterScheme[];
|
||||
}
|
||||
|
@ -25,6 +25,8 @@ export declare class ScavCaseRewardGenerator {
|
||||
protected itemFilterService: ItemFilterService;
|
||||
protected configServer: ConfigServer;
|
||||
protected scavCaseConfig: IScavCaseConfig;
|
||||
protected dbItemsCache: ITemplateItem[];
|
||||
protected dbAmmoItemsCache: ITemplateItem[];
|
||||
constructor(logger: ILogger, randomUtil: RandomUtil, hashUtil: HashUtil, itemHelper: ItemHelper, databaseServer: DatabaseServer, ragfairPriceService: RagfairPriceService, itemFilterService: ItemFilterService, configServer: ConfigServer);
|
||||
/**
|
||||
* Create an array of rewards that will be given to the player upon completing their scav case build
|
||||
@ -33,10 +35,10 @@ export declare class ScavCaseRewardGenerator {
|
||||
*/
|
||||
generate(recipeId: string): Product[];
|
||||
/**
|
||||
* Get all db items that are not blacklisted in scavcase config
|
||||
* @returns filtered array of db items
|
||||
* Get all db items that are not blacklisted in scavcase config or global blacklist
|
||||
* Store in class field
|
||||
*/
|
||||
protected getDbItems(): ITemplateItem[];
|
||||
protected cacheDbItems(): void;
|
||||
/**
|
||||
* Pick a number of items to be rewards, the count is defined by the values in
|
||||
* @param items item pool to pick rewards from
|
||||
|
@ -52,6 +52,7 @@ export declare class WeatherGenerator {
|
||||
*/
|
||||
protected setCurrentDateTime(weather: IWeather): void;
|
||||
protected getWeightedWindDirection(): WindDirection;
|
||||
protected getWeightedClouds(): number;
|
||||
protected getWeightedWindSpeed(): number;
|
||||
protected getWeightedFog(): number;
|
||||
protected getWeightedRain(): number;
|
||||
|
@ -27,6 +27,7 @@ export declare class HealthHelper {
|
||||
* @param request Heal request
|
||||
* @param sessionID Session id
|
||||
* @param addEffects Should effects be added or removed (default - add)
|
||||
* @param deleteExistingEffects Should all prior effects be removed before apply new ones
|
||||
*/
|
||||
saveVitality(pmcData: IPmcData, request: ISyncHealthRequestData, sessionID: string, addEffects?: boolean, deleteExistingEffects?: boolean): void;
|
||||
/**
|
||||
|
@ -53,7 +53,7 @@ export declare class InRaidHelper {
|
||||
* @param victim Who was killed by player
|
||||
* @returns a numerical standing gain or loss
|
||||
*/
|
||||
protected getStandingChangeForKill(victim: Victim): number;
|
||||
protected getFenceStandingChangeForKillAsScav(victim: Victim): number;
|
||||
/**
|
||||
* Reset a profile to a baseline, used post-raid
|
||||
* Reset points earned during session property
|
||||
|
@ -26,6 +26,7 @@ declare class ItemHelper {
|
||||
protected itemBaseClassService: ItemBaseClassService;
|
||||
protected localisationService: LocalisationService;
|
||||
protected localeService: LocaleService;
|
||||
protected readonly defaultInvalidBaseTypes: string[];
|
||||
constructor(logger: ILogger, hashUtil: HashUtil, jsonUtil: JsonUtil, randomUtil: RandomUtil, objectId: ObjectId, mathUtil: MathUtil, databaseServer: DatabaseServer, handbookHelper: HandbookHelper, itemBaseClassService: ItemBaseClassService, localisationService: LocalisationService, localeService: LocaleService);
|
||||
/**
|
||||
* Checks if an id is a valid item. Valid meaning that it's an item that be stored in stash
|
||||
@ -67,6 +68,11 @@ declare class ItemHelper {
|
||||
* @returns Price in roubles (undefined if not found)
|
||||
*/
|
||||
getDynamicItemPrice(tpl: string): number;
|
||||
/**
|
||||
* Update items upd.StackObjectsCount to be 1 if its upd is missing or StackObjectsCount is undefined
|
||||
* @param item Item to update
|
||||
* @returns Fixed item
|
||||
*/
|
||||
fixItemStackCount(item: Item): Item;
|
||||
/**
|
||||
* AmmoBoxes contain StackSlots which need to be filled for the AmmoBox to have content.
|
||||
@ -125,19 +131,19 @@ declare class ItemHelper {
|
||||
getItemQualityModifier(item: Item): number;
|
||||
/**
|
||||
* Get a quality value based on a repairable items (weapon/armor) current state between current and max durability
|
||||
* @param itemDetails
|
||||
* @param repairable repairable object
|
||||
* @param item
|
||||
* @returns a number between 0 and 1
|
||||
* @param itemDetails Db details for item we want quality value for
|
||||
* @param repairable Repairable properties
|
||||
* @param item Item quality value is for
|
||||
* @returns A number between 0 and 1
|
||||
*/
|
||||
protected getRepairableItemQualityValue(itemDetails: ITemplateItem, repairable: Repairable, item: Item): number;
|
||||
/**
|
||||
* Recursive function that looks at every item from parameter and gets their childrens Ids + includes parent item in results
|
||||
* @param items
|
||||
* @param itemID
|
||||
* @param items Array of items (item + possible children)
|
||||
* @param itemId Parent items id
|
||||
* @returns an array of strings
|
||||
*/
|
||||
findAndReturnChildrenByItems(items: Item[], itemID: string): string[];
|
||||
findAndReturnChildrenByItems(items: Item[], itemId: string): string[];
|
||||
/**
|
||||
* A variant of findAndReturnChildren where the output is list of item objects instead of their ids.
|
||||
* @param items
|
||||
@ -164,12 +170,6 @@ declare class ItemHelper {
|
||||
* @returns true if it is a dogtag
|
||||
*/
|
||||
isDogtag(tpl: string): boolean;
|
||||
/**
|
||||
* Can the item passed in be sold to a trader because it is raw money
|
||||
* @param tpl Item template id to check
|
||||
* @returns true if unsellable
|
||||
*/
|
||||
isNotSellable(tpl: string): boolean;
|
||||
/**
|
||||
* Gets the identifier for a child using slotId, locationX and locationY.
|
||||
* @param item
|
||||
@ -183,19 +183,19 @@ declare class ItemHelper {
|
||||
*/
|
||||
isItemTplStackable(tpl: string): boolean;
|
||||
/**
|
||||
* split item stack if it exceeds its StackMaxSize property
|
||||
* @param itemToSplit item being split into smaller stacks
|
||||
* split item stack if it exceeds its items StackMaxSize property
|
||||
* @param itemToSplit Item to split into smaller stacks
|
||||
* @returns Array of split items
|
||||
*/
|
||||
splitStack(itemToSplit: Item): Item[];
|
||||
/**
|
||||
* Find Barter items in the inventory
|
||||
* Find Barter items from array of items
|
||||
* @param {string} by tpl or id
|
||||
* @param {Object} pmcData
|
||||
* @param {Item[]} items Array of items to iterate over
|
||||
* @param {string} barterItemId
|
||||
* @returns Array of Item objects
|
||||
*/
|
||||
findBarterItems(by: "tpl" | "id", pmcData: IPmcData, barterItemId: string): Item[];
|
||||
findBarterItems(by: "tpl" | "id", items: Item[], barterItemId: string): Item[];
|
||||
/**
|
||||
* Regenerate all guids with new ids, exceptions are for items that cannot be altered (e.g. stash/sorting table)
|
||||
* @param pmcData Player profile
|
||||
@ -262,10 +262,21 @@ declare class ItemHelper {
|
||||
* @param minSizePercent % the magazine must be filled to
|
||||
*/
|
||||
fillMagazineWithCartridge(magazine: Item[], magTemplate: ITemplateItem, cartridgeTpl: string, minSizePercent?: number): void;
|
||||
/**
|
||||
* Choose a random bullet type from the list of possible a magazine has
|
||||
* @param magTemplate Magazine template from Db
|
||||
* @returns Tpl of cartridge
|
||||
*/
|
||||
protected getRandomValidCaliber(magTemplate: ITemplateItem): string;
|
||||
/**
|
||||
* Chose a randomly weighted cartridge that fits
|
||||
* @param caliber Desired caliber
|
||||
* @param staticAmmoDist Cartridges and thier weights
|
||||
* @returns Tpl of cartrdige
|
||||
*/
|
||||
protected drawAmmoTpl(caliber: string, staticAmmoDist: Record<string, IStaticAmmoDetails[]>): string;
|
||||
/**
|
||||
*
|
||||
* Create a basic cartrige object
|
||||
* @param parentId container cartridges will be placed in
|
||||
* @param ammoTpl Cartridge to insert
|
||||
* @param stackCount Count of cartridges inside parent
|
||||
|
@ -21,6 +21,7 @@ import { DialogueHelper } from "./DialogueHelper";
|
||||
import { ItemHelper } from "./ItemHelper";
|
||||
import { PaymentHelper } from "./PaymentHelper";
|
||||
import { ProfileHelper } from "./ProfileHelper";
|
||||
import { QuestConditionHelper } from "./QuestConditionHelper";
|
||||
import { RagfairServerHelper } from "./RagfairServerHelper";
|
||||
import { TraderHelper } from "./TraderHelper";
|
||||
export declare class QuestHelper {
|
||||
@ -29,6 +30,7 @@ export declare class QuestHelper {
|
||||
protected timeUtil: TimeUtil;
|
||||
protected hashUtil: HashUtil;
|
||||
protected itemHelper: ItemHelper;
|
||||
protected questConditionHelper: QuestConditionHelper;
|
||||
protected eventOutputHolder: EventOutputHolder;
|
||||
protected databaseServer: DatabaseServer;
|
||||
protected localeService: LocaleService;
|
||||
@ -41,7 +43,7 @@ export declare class QuestHelper {
|
||||
protected mailSendService: MailSendService;
|
||||
protected configServer: ConfigServer;
|
||||
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, mailSendService: MailSendService, configServer: ConfigServer);
|
||||
constructor(logger: ILogger, jsonUtil: JsonUtil, timeUtil: TimeUtil, hashUtil: HashUtil, itemHelper: ItemHelper, questConditionHelper: QuestConditionHelper, eventOutputHolder: EventOutputHolder, databaseServer: DatabaseServer, localeService: LocaleService, ragfairServerHelper: RagfairServerHelper, dialogueHelper: DialogueHelper, profileHelper: ProfileHelper, paymentHelper: PaymentHelper, localisationService: LocalisationService, traderHelper: TraderHelper, mailSendService: MailSendService, configServer: ConfigServer);
|
||||
/**
|
||||
* Get status of a quest in player profile by its id
|
||||
* @param pmcData Profile to search
|
||||
@ -119,7 +121,7 @@ export declare class QuestHelper {
|
||||
* @param sessionID Session id
|
||||
* @returns Quests accessible to player incuding newly unlocked quests now quest (startedQuestId) was started
|
||||
*/
|
||||
acceptedUnlocked(startedQuestId: string, sessionID: string): IQuest[];
|
||||
getNewlyAccessibleQuestsWhenStartingQuest(startedQuestId: string, sessionID: string): IQuest[];
|
||||
/**
|
||||
* Get quests that can be shown to player after failing a quest
|
||||
* @param failedQuestId Id of the quest failed by player
|
||||
|
@ -1,4 +1,5 @@
|
||||
import { IPmcData } from "../models/eft/common/IPmcData";
|
||||
import { Item } from "../models/eft/common/tables/IItem";
|
||||
import { ITraderAssort } from "../models/eft/common/tables/ITrader";
|
||||
import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse";
|
||||
import { IAkiProfile } from "../models/eft/profile/IAkiProfile";
|
||||
@ -13,10 +14,10 @@ import { DatabaseServer } from "../servers/DatabaseServer";
|
||||
import { SaveServer } from "../servers/SaveServer";
|
||||
import { LocaleService } from "../services/LocaleService";
|
||||
import { LocalisationService } from "../services/LocalisationService";
|
||||
import { MailSendService } from "../services/MailSendService";
|
||||
import { RagfairOfferService } from "../services/RagfairOfferService";
|
||||
import { HashUtil } from "../utils/HashUtil";
|
||||
import { TimeUtil } from "../utils/TimeUtil";
|
||||
import { DialogueHelper } from "./DialogueHelper";
|
||||
import { ItemHelper } from "./ItemHelper";
|
||||
import { PaymentHelper } from "./PaymentHelper";
|
||||
import { PresetHelper } from "./PresetHelper";
|
||||
@ -33,7 +34,6 @@ export declare class RagfairOfferHelper {
|
||||
protected databaseServer: DatabaseServer;
|
||||
protected traderHelper: TraderHelper;
|
||||
protected saveServer: SaveServer;
|
||||
protected dialogueHelper: DialogueHelper;
|
||||
protected itemHelper: ItemHelper;
|
||||
protected paymentHelper: PaymentHelper;
|
||||
protected presetHelper: PresetHelper;
|
||||
@ -44,11 +44,12 @@ export declare class RagfairOfferHelper {
|
||||
protected ragfairOfferService: RagfairOfferService;
|
||||
protected localeService: LocaleService;
|
||||
protected localisationService: LocalisationService;
|
||||
protected mailSendService: MailSendService;
|
||||
protected configServer: ConfigServer;
|
||||
protected static goodSoldTemplate: string;
|
||||
protected ragfairConfig: IRagfairConfig;
|
||||
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, localisationService: LocalisationService, configServer: ConfigServer);
|
||||
constructor(logger: ILogger, timeUtil: TimeUtil, hashUtil: HashUtil, eventOutputHolder: EventOutputHolder, databaseServer: DatabaseServer, traderHelper: TraderHelper, saveServer: SaveServer, itemHelper: ItemHelper, paymentHelper: PaymentHelper, presetHelper: PresetHelper, profileHelper: ProfileHelper, ragfairServerHelper: RagfairServerHelper, ragfairSortHelper: RagfairSortHelper, ragfairHelper: RagfairHelper, ragfairOfferService: RagfairOfferService, localeService: LocaleService, localisationService: LocalisationService, mailSendService: MailSendService, configServer: ConfigServer);
|
||||
/**
|
||||
* Passthrough to ragfairOfferService.getOffers(), get flea offers a player should see
|
||||
* @param searchRequest Data from client
|
||||
@ -119,19 +120,26 @@ export declare class RagfairOfferHelper {
|
||||
*/
|
||||
protected getProfileOffers(sessionID: string): IRagfairOffer[];
|
||||
/**
|
||||
* Delete an offer from a desired profile
|
||||
* Delete an offer from a desired profile and from ragfair offers
|
||||
* @param sessionID Session id of profile to delete offer from
|
||||
* @param offerId Offer id to delete
|
||||
* @param offerId Id of offer to delete
|
||||
*/
|
||||
protected deleteOfferByOfferId(sessionID: string, offerId: string): void;
|
||||
protected deleteOfferById(sessionID: string, offerId: string): void;
|
||||
/**
|
||||
* Complete the selling of players' offer
|
||||
* @param sessionID Session id
|
||||
* @param offer Sold offer details
|
||||
* @param boughtAmount Amount item was purchased for
|
||||
* @returns Client response
|
||||
* @returns IItemEventRouterResponse
|
||||
*/
|
||||
protected completeOffer(sessionID: string, offer: IRagfairOffer, boughtAmount: number): IItemEventRouterResponse;
|
||||
/**
|
||||
* Get a localised message for when players offer has sold on flea
|
||||
* @param itemTpl Item sold
|
||||
* @param boughtAmount How many were purchased
|
||||
* @returns Localised message text
|
||||
*/
|
||||
protected getLocalisedOfferSoldMessage(itemTpl: string, boughtAmount: number): string;
|
||||
/**
|
||||
* Should a ragfair offer be visible to the player
|
||||
* @param searchRequest Search request
|
||||
@ -142,4 +150,12 @@ export declare class RagfairOfferHelper {
|
||||
* @returns True = should be shown to player
|
||||
*/
|
||||
isDisplayableOffer(searchRequest: ISearchRequestData, itemsToAdd: string[], traderAssorts: Record<string, ITraderAssort>, offer: IRagfairOffer, pmcProfile: IPmcData): boolean;
|
||||
/**
|
||||
* Is items quality value within desired range
|
||||
* @param item Item to check quality of
|
||||
* @param min Desired minimum quality
|
||||
* @param max Desired maximum quality
|
||||
* @returns True if in range
|
||||
*/
|
||||
protected itemQualityInRange(item: Item, min: number, max: number): boolean;
|
||||
}
|
||||
|
@ -13,12 +13,12 @@ export declare class RagfairSellHelper {
|
||||
constructor(logger: ILogger, randomUtil: RandomUtil, timeUtil: TimeUtil, configServer: ConfigServer);
|
||||
/**
|
||||
* Get the percent chance to sell an item based on its average listed price vs player chosen listing price
|
||||
* @param baseChancePercent Base chance to sell item
|
||||
* @param averageOfferPriceRub Price of average offer in roubles
|
||||
* @param playerListedPriceRub Price player listed item for in roubles
|
||||
* @param qualityMultiplier Quality multipler of item being sold
|
||||
* @returns percent value
|
||||
*/
|
||||
calculateSellChance(baseChancePercent: number, averageOfferPriceRub: number, playerListedPriceRub: number): number;
|
||||
calculateSellChance(averageOfferPriceRub: number, playerListedPriceRub: number, qualityMultiplier: number): number;
|
||||
/**
|
||||
* Get percent chance to sell an item when price is below items average listing price
|
||||
* @param playerListedPriceRub Price player listed item for in roubles
|
||||
|
@ -35,7 +35,7 @@ export declare class TraderHelper {
|
||||
protected highestTraderBuyPriceItems: Record<string, number>;
|
||||
constructor(logger: ILogger, databaseServer: DatabaseServer, saveServer: SaveServer, profileHelper: ProfileHelper, handbookHelper: HandbookHelper, itemHelper: ItemHelper, playerService: PlayerService, localisationService: LocalisationService, fenceService: FenceService, timeUtil: TimeUtil, randomUtil: RandomUtil, configServer: ConfigServer);
|
||||
getTrader(traderID: string, sessionID: string): ITraderBase;
|
||||
getTraderAssortsById(traderId: string): ITraderAssort;
|
||||
getTraderAssortsByTraderId(traderId: string): ITraderAssort;
|
||||
/**
|
||||
* Reset a profiles trader data back to its initial state as seen by a level 1 player
|
||||
* Does NOT take into account different profile levels
|
||||
|
@ -281,7 +281,7 @@ export interface InsuredItem {
|
||||
export interface Hideout {
|
||||
Production: Record<string, Productive>;
|
||||
Areas: HideoutArea[];
|
||||
Improvements: Record<string, IHideoutImprovement>;
|
||||
Improvement: Record<string, IHideoutImprovement>;
|
||||
Seed: number;
|
||||
sptUpdateLastRunTimestamp: number;
|
||||
}
|
||||
|
@ -1,12 +1,14 @@
|
||||
export interface IHealthTreatmentRequestData {
|
||||
Action: "RestoreHealth";
|
||||
trader: string;
|
||||
items: Item[];
|
||||
items: Cost[];
|
||||
difference: Difference;
|
||||
timestamp: number;
|
||||
}
|
||||
export interface Item {
|
||||
export interface Cost {
|
||||
/** Id of stack to take money from */
|
||||
id: string;
|
||||
/** Amount of money to take off player for treatment */
|
||||
count: number;
|
||||
}
|
||||
export interface Difference {
|
||||
@ -25,5 +27,6 @@ export interface BodyParts {
|
||||
}
|
||||
export interface BodyPart {
|
||||
Health: number;
|
||||
/** Effects in array are to be removed */
|
||||
Effects: string[];
|
||||
}
|
||||
|
@ -14,6 +14,11 @@ export interface INotification {
|
||||
}
|
||||
export declare enum NotificationType {
|
||||
RAGFAIR_OFFER_SOLD = "RagfairOfferSold",
|
||||
RAGFAIR_RATING_CHANGE = "RagfairRatingChange",
|
||||
/** ChatMessageReceived */
|
||||
NEW_MESSAGE = "new_message",
|
||||
PING = "ping"
|
||||
PING = "ping",
|
||||
TRADER_SUPPLY = "TraderSupply",
|
||||
TRADER_STANDING = "TraderStanding",
|
||||
UNLOCK_TRADER = "UnlockTrader"
|
||||
}
|
||||
|
@ -1,6 +1,3 @@
|
||||
import { INotifierChannel } from "./INotifier";
|
||||
export interface ISelectProfileResponse {
|
||||
status: string;
|
||||
notifier: INotifierChannel;
|
||||
notifierServer: string;
|
||||
}
|
||||
|
@ -1,19 +1,19 @@
|
||||
export declare enum WeatherType {
|
||||
CLEAR_DAY = 1,
|
||||
CLEAR_WIND = 2,
|
||||
CLEAR_NIGHT = 3,
|
||||
PARTLY_CLOUD_DAY = 4,
|
||||
PARTLY_CLOUD_NIGHT = 5,
|
||||
CLEAR_FOG_DAY = 6,
|
||||
CLEAR_FOG_NIGHT = 7,
|
||||
CLOUDFOG = 8,
|
||||
FOG = 9,
|
||||
MOSTLY_CLOUD = 10,
|
||||
LIGHT_RAIN = 11,
|
||||
RAIN = 12,
|
||||
CLOUD_WIND = 13,
|
||||
CLOUD_WIND_RAIN = 14,
|
||||
FULL_CLOUD = 15,
|
||||
THUNDER_CLOUD = 16,
|
||||
NONE = 0
|
||||
CLEAR_DAY = 0,
|
||||
CLEAR_WIND = 1,
|
||||
CLEAR_NIGHT = 2,
|
||||
PARTLY_CLOUD_DAY = 3,
|
||||
PARTLY_CLOUD_NIGHT = 4,
|
||||
CLEAR_FOG_DAY = 5,
|
||||
CLEAR_FOG_NIGHT = 6,
|
||||
CLOUD_FOG = 7,
|
||||
FOG = 8,
|
||||
MOSTLY_CLOUD = 9,
|
||||
LIGHT_RAIN = 10,
|
||||
RAIN = 11,
|
||||
CLOUD_WIND = 12,
|
||||
CLOUD_WIND_RAIN = 13,
|
||||
FULL_CLOUD = 14,
|
||||
THUNDER_CLOUD = 15,
|
||||
NONE = 16
|
||||
}
|
||||
|
@ -41,7 +41,8 @@ export interface Dynamic {
|
||||
/** Use the highest trader price for an offer if its greater than the price in templates/prices.json */
|
||||
useTraderPriceForOffersIfHigher: boolean;
|
||||
/** Barter offer specific settings */
|
||||
barter: Barter;
|
||||
barter: IBarterDetails;
|
||||
pack: IPackDetails;
|
||||
/** Dynamic offer price below handbook adjustment values */
|
||||
offerAdjustment: OfferAdjustment;
|
||||
/** How many offers should expire before an offer regeneration occurs */
|
||||
@ -49,9 +50,7 @@ export interface Dynamic {
|
||||
/** How many offers should be listed */
|
||||
offerItemCount: MinMax;
|
||||
/** How much should the price of an offer vary by (percent 0.8 = 80%, 1.2 = 120%) */
|
||||
price: MinMax;
|
||||
/** How much should the price of an offer vary by (percent 0.8 = 80%, 1.2 = 120%) */
|
||||
presetPrice: MinMax;
|
||||
priceRanges: IPriceRanges;
|
||||
/** Should default presets to listed only or should non-standard presets found in globals.json be listed too */
|
||||
showDefaultPresetsOnly: boolean;
|
||||
endTimeSeconds: MinMax;
|
||||
@ -74,7 +73,12 @@ export interface Dynamic {
|
||||
/** Dict of price limits keyed by item type */
|
||||
unreasonableModPrices: Record<string, IUnreasonableModPrices>;
|
||||
}
|
||||
export interface Barter {
|
||||
export interface IPriceRanges {
|
||||
default: MinMax;
|
||||
preset: MinMax;
|
||||
pack: MinMax;
|
||||
}
|
||||
export interface IBarterDetails {
|
||||
/** Should barter offers be generated */
|
||||
enable: boolean;
|
||||
/** Percentage change an offer is listed as a barter */
|
||||
@ -90,6 +94,18 @@ export interface Barter {
|
||||
/** Item Tpls to never be turned into a barter */
|
||||
itemTypeBlacklist: string[];
|
||||
}
|
||||
export interface IPackDetails {
|
||||
/** Should pack offers be generated */
|
||||
enable: boolean;
|
||||
/** Percentage change an offer is listed as a pack */
|
||||
chancePercent: number;
|
||||
/** Min number of required items for a pack */
|
||||
itemCountMin: number;
|
||||
/** Max number of required items for a pack */
|
||||
itemCountMax: number;
|
||||
/** item types to allow being a pack */
|
||||
itemTypeWhitelist: string[];
|
||||
}
|
||||
export interface OfferAdjustment {
|
||||
/** Shuld offer price be adjusted when below handbook price */
|
||||
adjustPriceWhenBelowHandbookPrice: boolean;
|
||||
|
@ -7,7 +7,7 @@ export interface IWeatherConfig extends IBaseConfig {
|
||||
weather: Weather;
|
||||
}
|
||||
export interface Weather {
|
||||
clouds: MinMax;
|
||||
clouds: WeatherSettings<string>;
|
||||
windSpeed: WeatherSettings<number>;
|
||||
windDirection: WeatherSettings<WindDirection>;
|
||||
windGustiness: MinMax;
|
||||
|
@ -11,7 +11,18 @@ export declare class HashCacheService {
|
||||
protected modHashes: any;
|
||||
protected readonly modCachePath = "./user/cache/modCache.json";
|
||||
constructor(vfs: VFS, hashUtil: HashUtil, jsonUtil: JsonUtil, logger: ILogger);
|
||||
/**
|
||||
* Return a stored hash by key
|
||||
* @param modName Name of mod to get hash for
|
||||
* @returns Mod hash
|
||||
*/
|
||||
getStoredModHash(modName: string): string;
|
||||
/**
|
||||
* Does the generated hash match the stored hash
|
||||
* @param modName name of mod
|
||||
* @param modContent
|
||||
* @returns True if they match
|
||||
*/
|
||||
modContentMatchesStoredHash(modName: string, modContent: string): boolean;
|
||||
hashMatchesStoredHash(modName: string, modHash: string): boolean;
|
||||
storeModContent(modName: string, modContent: string): void;
|
||||
|
@ -35,7 +35,7 @@ export declare class MailSendService {
|
||||
* @param items Optional items to send to player
|
||||
* @param maxStorageTimeSeconds Optional time to collect items before they expire
|
||||
*/
|
||||
sendDirectNpcMessageToPlayer(playerId: string, sender: Traders, messageType: MessageType, message: string, items?: Item[], maxStorageTimeSeconds?: any): void;
|
||||
sendDirectNpcMessageToPlayer(playerId: string, sender: Traders, messageType: MessageType, message: string, items?: Item[], maxStorageTimeSeconds?: any, systemData?: any, ragfair?: any): void;
|
||||
/**
|
||||
* Send a message from an NPC (e.g. prapor) to the player with or without items
|
||||
* @param playerId Players id to send message to
|
||||
@ -45,7 +45,7 @@ export declare class MailSendService {
|
||||
* @param items Optional items to send to player
|
||||
* @param maxStorageTimeSeconds Optional time to collect items before they expire
|
||||
*/
|
||||
sendLocalisedNpcMessageToPlayer(playerId: string, sender: Traders, messageType: MessageType, messageLocaleId: string, items?: Item[], maxStorageTimeSeconds?: any, systemData?: any): void;
|
||||
sendLocalisedNpcMessageToPlayer(playerId: string, sender: Traders, messageType: MessageType, messageLocaleId: string, items?: Item[], maxStorageTimeSeconds?: any, systemData?: any, ragfair?: any): void;
|
||||
/**
|
||||
* Send a message from SYSTEM to the player with or without items
|
||||
* @param playerId Players id to send message to
|
||||
|
@ -1,7 +1,7 @@
|
||||
import { IBotBase } from "../models/eft/common/tables/IBotBase";
|
||||
import { ILogger } from "../models/spt/utils/ILogger";
|
||||
import { LocalisationService } from "./LocalisationService";
|
||||
/** Cache bots in a dictionary, keyed by the bots name, keying by name isnt idea as its not unique but this is used by the post-raid system which doesnt have any bot ids, only name */
|
||||
/** Cache bots in a dictionary, keyed by the bots name, keying by name isnt ideal as its not unique but this is used by the post-raid system which doesnt have any bot ids, only name */
|
||||
export declare class MatchBotDetailsCacheService {
|
||||
protected logger: ILogger;
|
||||
protected localisationService: LocalisationService;
|
||||
@ -17,9 +17,9 @@ export declare class MatchBotDetailsCacheService {
|
||||
*/
|
||||
clearCache(): void;
|
||||
/**
|
||||
* Find a bot in the cache by its name
|
||||
* Find a bot in the cache by its name and side
|
||||
* @param botName Name of bot to find
|
||||
* @returns Bot details
|
||||
*/
|
||||
getBotByName(botName: string): IBotBase;
|
||||
getBotByNameAndSide(botName: string, botSide: string): IBotBase;
|
||||
}
|
||||
|
@ -1,14 +1,36 @@
|
||||
import { CompilerOptions } from "typescript";
|
||||
import type { ILogger } from "../models/spt/utils/ILogger";
|
||||
import { HashCacheService } from "./HashCacheService";
|
||||
import { VFS } from "../utils/VFS";
|
||||
import { HashCacheService } from "./HashCacheService";
|
||||
export declare class ModCompilerService {
|
||||
protected logger: ILogger;
|
||||
protected hashCacheService: HashCacheService;
|
||||
protected vfs: VFS;
|
||||
constructor(logger: ILogger, hashCacheService: HashCacheService, vfs: VFS);
|
||||
/**
|
||||
* Convert a mods TS into JS
|
||||
* @param modName Name of mod
|
||||
* @param modPath Dir path to mod
|
||||
* @param modTypeScriptFiles
|
||||
* @returns
|
||||
*/
|
||||
compileMod(modName: string, modPath: string, modTypeScriptFiles: string[]): Promise<void>;
|
||||
/**
|
||||
* Convert a TS file into JS
|
||||
* @param fileNames Paths to TS files
|
||||
* @param options Compiler options
|
||||
*/
|
||||
protected compile(fileNames: string[], options: CompilerOptions): Promise<void>;
|
||||
/**
|
||||
* Do the files at the provided paths exist
|
||||
* @param fileNames
|
||||
* @returns
|
||||
*/
|
||||
protected areFilesReady(fileNames: string[]): boolean;
|
||||
/**
|
||||
* Wait the provided number of milliseconds
|
||||
* @param ms Milliseconds
|
||||
* @returns
|
||||
*/
|
||||
protected delay(ms: number): Promise<unknown>;
|
||||
}
|
||||
|
@ -61,23 +61,26 @@ export declare class PaymentService {
|
||||
* Get all money stacks in inventory and prioritse items in stash
|
||||
* @param pmcData
|
||||
* @param currencyTpl
|
||||
* @param playerStashId Players stash id
|
||||
* @returns Sorting money items
|
||||
*/
|
||||
protected getSortedMoneyItemsInInventory(pmcData: IPmcData, currencyTpl: string): Item[];
|
||||
protected getSortedMoneyItemsInInventory(pmcData: IPmcData, currencyTpl: string, playerStashId: string): Item[];
|
||||
/**
|
||||
* Prioritise player stash first over player inventory
|
||||
* Post-raid healing would often take money out of the players pockets/secure container
|
||||
* @param a First money stack item
|
||||
* @param b Second money stack item
|
||||
* @param inventoryItems players inventory items
|
||||
* @param playerStashId Players stash id
|
||||
* @returns sort order
|
||||
*/
|
||||
protected prioritiseStashSort(a: Item, b: Item, inventoryItems: Item[]): number;
|
||||
protected prioritiseStashSort(a: Item, b: Item, inventoryItems: Item[], playerStashId: string): number;
|
||||
/**
|
||||
* Recursivly check items parents to see if it is inside the players inventory, not stash
|
||||
* @param itemId item id to check
|
||||
* @param inventoryItems player inventory
|
||||
* @param playerStashId Players stash id
|
||||
* @returns true if its in inventory
|
||||
*/
|
||||
protected isInInventory(itemId: string, inventoryItems: Item[]): boolean;
|
||||
protected isInStash(itemId: string, inventoryItems: Item[], playerStashId: string): boolean;
|
||||
}
|
||||
|
@ -14,6 +14,7 @@ import { IRagfairConfig } from "../models/spt/config/IRagfairConfig";
|
||||
import { ILogger } from "../models/spt/utils/ILogger";
|
||||
import { ConfigServer } from "../servers/ConfigServer";
|
||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
||||
import { JsonUtil } from "../utils/JsonUtil";
|
||||
import { TimeUtil } from "../utils/TimeUtil";
|
||||
import { Watermark } from "../utils/Watermark";
|
||||
import { LocalisationService } from "./LocalisationService";
|
||||
@ -27,17 +28,19 @@ export declare class ProfileFixerService {
|
||||
protected itemHelper: ItemHelper;
|
||||
protected localisationService: LocalisationService;
|
||||
protected timeUtil: TimeUtil;
|
||||
protected jsonUtil: JsonUtil;
|
||||
protected databaseServer: DatabaseServer;
|
||||
protected configServer: ConfigServer;
|
||||
protected coreConfig: ICoreConfig;
|
||||
protected ragfairConfig: IRagfairConfig;
|
||||
constructor(logger: ILogger, watermark: Watermark, hideoutHelper: HideoutHelper, inventoryHelper: InventoryHelper, traderHelper: TraderHelper, profileHelper: ProfileHelper, itemHelper: ItemHelper, localisationService: LocalisationService, timeUtil: TimeUtil, databaseServer: DatabaseServer, configServer: ConfigServer);
|
||||
constructor(logger: ILogger, watermark: Watermark, hideoutHelper: HideoutHelper, inventoryHelper: InventoryHelper, traderHelper: TraderHelper, profileHelper: ProfileHelper, itemHelper: ItemHelper, localisationService: LocalisationService, timeUtil: TimeUtil, jsonUtil: JsonUtil, databaseServer: DatabaseServer, configServer: ConfigServer);
|
||||
/**
|
||||
* Find issues in the pmc profile data that may cause issues and fix them
|
||||
* @param pmcProfile profile to check and fix
|
||||
*/
|
||||
checkForAndFixPmcProfileIssues(pmcProfile: IPmcData): void;
|
||||
protected addMissingGunStandContainerImprovements(pmcProfile: IPmcData): void;
|
||||
protected ensureGunStandLevelsMatch(pmcProfile: IPmcData): void;
|
||||
protected addHideoutAreaStashes(pmcProfile: IPmcData): void;
|
||||
protected addMissingHideoutWallAreas(pmcProfile: IPmcData): void;
|
||||
protected adjustUnreasonableModFleaPrices(): void;
|
||||
@ -131,4 +134,9 @@ export declare class ProfileFixerService {
|
||||
* @param pmcProfile Profile to add missing IDs to
|
||||
*/
|
||||
addMissingIdsToBonuses(pmcProfile: IPmcData): void;
|
||||
/**
|
||||
* At some point the property name was changed,migrate data across to new name
|
||||
* @param pmcProfile
|
||||
*/
|
||||
protected migrateImprovements(pmcProfile: IPmcData): void;
|
||||
}
|
||||
|
@ -3,6 +3,7 @@ import { HandbookHelper } from "../helpers/HandbookHelper";
|
||||
import { ItemHelper } from "../helpers/ItemHelper";
|
||||
import { PresetHelper } from "../helpers/PresetHelper";
|
||||
import { TraderHelper } from "../helpers/TraderHelper";
|
||||
import { MinMax } from "../models/common/MinMax";
|
||||
import { IPreset } from "../models/eft/common/IGlobals";
|
||||
import { Item } from "../models/eft/common/tables/IItem";
|
||||
import { IBarterScheme } from "../models/eft/common/tables/ITrader";
|
||||
@ -35,10 +36,6 @@ export declare class RagfairPriceService implements OnLoad {
|
||||
* Generate static (handbook) and dynamic (prices.json) flea prices, store inside class as dictionaries
|
||||
*/
|
||||
onLoad(): Promise<void>;
|
||||
/**
|
||||
* Add placeholder values for items missing from handbook
|
||||
*/
|
||||
protected addMissingHandbookPrices(): void;
|
||||
getRoute(): string;
|
||||
/**
|
||||
* Iterate over all items of type "Item" in db and get template price, store in cache
|
||||
@ -91,9 +88,17 @@ export declare class RagfairPriceService implements OnLoad {
|
||||
* Generate a currency cost for an item and its mods
|
||||
* @param items Item with mods to get price for
|
||||
* @param desiredCurrency Currency price desired in
|
||||
* @param isPackOffer Price is for a pack type offer
|
||||
* @returns cost of item in desired currency
|
||||
*/
|
||||
getDynamicOfferPrice(items: Item[], desiredCurrency: string): number;
|
||||
getDynamicOfferPriceForOffer(items: Item[], desiredCurrency: string, isPackOffer: boolean): number;
|
||||
/**
|
||||
* Get different min/max price multipliers for different offer types (preset/pack/default)
|
||||
* @param isPreset Offer is a preset
|
||||
* @param isPack Offer is a pack
|
||||
* @returns MinMax values
|
||||
*/
|
||||
protected getOfferTypeRangeValues(isPreset: boolean, isPack: boolean): MinMax;
|
||||
/**
|
||||
* Check to see if an items price is below its handbook price and adjust accoring to values set to config/ragfair.json
|
||||
* @param itemPrice price of item
|
||||
@ -104,10 +109,10 @@ export declare class RagfairPriceService implements OnLoad {
|
||||
/**
|
||||
* Multiply the price by a randomised curve where n = 2, shift = 2
|
||||
* @param existingPrice price to alter
|
||||
* @param isPreset is the item we're multiplying a preset
|
||||
* @param rangeValues min and max to adjust price by
|
||||
* @returns multiplied price
|
||||
*/
|
||||
protected randomisePrice(existingPrice: number, isPreset: boolean): number;
|
||||
protected randomiseOfferPrice(existingPrice: number, rangeValues: MinMax): number;
|
||||
/**
|
||||
* Calculate the cost of a weapon preset by adding together the price of its mods + base price of default weapon preset
|
||||
* @param item base weapon
|
||||
|
@ -1,4 +1,5 @@
|
||||
import { GameController } from "../controllers/GameController";
|
||||
import { OnLoad } from "../di/OnLoad";
|
||||
import { IEmptyRequestData } from "../models/eft/common/IEmptyRequestData";
|
||||
import { ICheckVersionResponse } from "../models/eft/game/ICheckVersionResponse";
|
||||
import { ICurrentGroupResponse } from "../models/eft/game/ICurrentGroupResponse";
|
||||
@ -15,12 +16,14 @@ import { INullResponseData } from "../models/eft/httpResponse/INullResponseData"
|
||||
import { SaveServer } from "../servers/SaveServer";
|
||||
import { HttpResponseUtil } from "../utils/HttpResponseUtil";
|
||||
import { Watermark } from "../utils/Watermark";
|
||||
declare class GameCallbacks {
|
||||
declare class GameCallbacks implements OnLoad {
|
||||
protected httpResponse: HttpResponseUtil;
|
||||
protected watermark: Watermark;
|
||||
protected saveServer: SaveServer;
|
||||
protected gameController: GameController;
|
||||
constructor(httpResponse: HttpResponseUtil, watermark: Watermark, saveServer: SaveServer, gameController: GameController);
|
||||
onLoad(): Promise<void>;
|
||||
getRoute(): string;
|
||||
/**
|
||||
* Handle client/game/version/validate
|
||||
* @returns INullResponseData
|
||||
|
@ -61,13 +61,14 @@ export declare class GameController {
|
||||
protected pmcConfig: IPmcConfig;
|
||||
protected lootConfig: ILootConfig;
|
||||
constructor(logger: ILogger, databaseServer: DatabaseServer, jsonUtil: JsonUtil, timeUtil: TimeUtil, hashUtil: HashUtil, preAkiModLoader: PreAkiModLoader, httpServerHelper: HttpServerHelper, randomUtil: RandomUtil, encodingUtil: EncodingUtil, hideoutHelper: HideoutHelper, profileHelper: ProfileHelper, profileFixerService: ProfileFixerService, localisationService: LocalisationService, customLocationWaveService: CustomLocationWaveService, openZoneService: OpenZoneService, seasonalEventService: SeasonalEventService, itemBaseClassService: ItemBaseClassService, giftService: GiftService, applicationContext: ApplicationContext, configServer: ConfigServer);
|
||||
load(): void;
|
||||
/**
|
||||
* Handle client/game/start
|
||||
*/
|
||||
gameStart(_url: string, _info: IEmptyRequestData, sessionID: string, startTimeStampMS: number): void;
|
||||
protected addCustomLooseLootPositions(): void;
|
||||
protected adjustLooseLootSpawnProbabilities(): void;
|
||||
protected setHideoutAreasAndCraftsTo30Secs(): void;
|
||||
protected setHideoutAreasAndCraftsTo40Secs(): void;
|
||||
/**
|
||||
* 3.7.0 moved AIDs to be numeric, old profiles need to be migrated
|
||||
* We store the old AID value in new field `sessionId`
|
||||
|
@ -29,34 +29,35 @@ export declare class HealthController {
|
||||
* stores in-raid player health
|
||||
* @param pmcData Player profile
|
||||
* @param info Request data
|
||||
* @param sessionID
|
||||
* @param sessionID Player id
|
||||
* @param addEffects Should effects found be added or removed from profile
|
||||
* @param deleteExistingEffects Should all prior effects be removed before apply new ones
|
||||
*/
|
||||
saveVitality(pmcData: IPmcData, info: ISyncHealthRequestData, sessionID: string, addEffects?: boolean, deleteExistingEffects?: boolean): void;
|
||||
/**
|
||||
* When healing in menu
|
||||
* @param pmcData
|
||||
* @param body
|
||||
* @param sessionID
|
||||
* @returns
|
||||
* @param pmcData Player profile
|
||||
* @param request Healing request
|
||||
* @param sessionID Player id
|
||||
* @returns IItemEventRouterResponse
|
||||
*/
|
||||
offraidHeal(pmcData: IPmcData, body: IOffraidHealRequestData, sessionID: string): IItemEventRouterResponse;
|
||||
offraidHeal(pmcData: IPmcData, request: IOffraidHealRequestData, sessionID: string): IItemEventRouterResponse;
|
||||
/**
|
||||
* Handle Eat event
|
||||
* Consume food/water outside of a raid
|
||||
* @param pmcData Player profile
|
||||
* @param body request Object
|
||||
* @param request Eat request
|
||||
* @param sessionID Session id
|
||||
* @returns IItemEventRouterResponse
|
||||
*/
|
||||
offraidEat(pmcData: IPmcData, body: IOffraidEatRequestData, sessionID: string): IItemEventRouterResponse;
|
||||
offraidEat(pmcData: IPmcData, request: IOffraidEatRequestData, sessionID: string): IItemEventRouterResponse;
|
||||
/**
|
||||
* Handle RestoreHealth event
|
||||
* Occurs on post-raid healing page
|
||||
* @param pmcData player profile
|
||||
* @param healthTreatmentRequest Request data from client
|
||||
* @param sessionID Session id
|
||||
* @returns
|
||||
* @returns IItemEventRouterResponse
|
||||
*/
|
||||
healthTreatment(pmcData: IPmcData, healthTreatmentRequest: IHealthTreatmentRequestData, sessionID: string): IItemEventRouterResponse;
|
||||
/**
|
||||
@ -66,12 +67,4 @@ export declare class HealthController {
|
||||
* @param sessionID
|
||||
*/
|
||||
applyWorkoutChanges(pmcData: IPmcData, info: IWorkoutData, sessionId: string): void;
|
||||
/**
|
||||
* Iterate over treatment request diff and find effects to remove from player limbs
|
||||
* @param sessionId
|
||||
* @param profile Profile to update
|
||||
* @param treatmentRequest client request
|
||||
* @param output response to send to client
|
||||
*/
|
||||
protected removeEffectsAfterPostRaidHeal(sessionId: string, profile: IPmcData, treatmentRequest: IHealthTreatmentRequestData, output: IItemEventRouterResponse): void;
|
||||
}
|
||||
|
@ -88,11 +88,11 @@ export declare class HideoutController {
|
||||
* @param pmcData Profile to edit
|
||||
* @param output Object to send back to client
|
||||
* @param sessionID Session/player id
|
||||
* @param profileHideoutArea Current hideout data for profile
|
||||
* @param profileParentHideoutArea Current hideout area for profile
|
||||
* @param dbHideoutArea Hideout area being upgraded
|
||||
* @param hideoutStage Stage hideout area is being upgraded to
|
||||
*/
|
||||
protected addContainerImprovementToProfile(output: IItemEventRouterResponse, sessionID: string, pmcData: IPmcData, profileHideoutArea: HideoutArea, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void;
|
||||
protected addContainerImprovementToProfile(output: IItemEventRouterResponse, sessionID: string, pmcData: IPmcData, profileParentHideoutArea: HideoutArea, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void;
|
||||
/**
|
||||
* Add an inventory item to profile from a hideout area stage data
|
||||
* @param pmcData Profile to update
|
||||
|
@ -4,6 +4,7 @@ import { WeightedRandomHelper } from "../helpers/WeightedRandomHelper";
|
||||
import { ILocationBase } from "../models/eft/common/ILocationBase";
|
||||
import { ILocationsGenerateAllResponse } from "../models/eft/common/ILocationsSourceDestinationBase";
|
||||
import { IAirdropLootResult } from "../models/eft/location/IAirdropLootResult";
|
||||
import { IGetLocationRequestData } from "../models/eft/location/IGetLocationRequestData";
|
||||
import { AirdropTypeEnum } from "../models/enums/AirdropType";
|
||||
import { IAirdropConfig } from "../models/spt/config/IAirdropConfig";
|
||||
import { ILocationConfig } from "../models/spt/config/ILocationConfig";
|
||||
@ -34,10 +35,11 @@ export declare class LocationController {
|
||||
/**
|
||||
* Handle client/location/getLocalloot
|
||||
* Get a location (map) with generated loot data
|
||||
* @param location Map to generate loot for
|
||||
* @param sessionId Player id
|
||||
* @param request Map request to generate
|
||||
* @returns ILocationBase
|
||||
*/
|
||||
get(location: string): ILocationBase;
|
||||
get(sessionId: string, request: IGetLocationRequestData): ILocationBase;
|
||||
/**
|
||||
* Generate a maps base location with loot
|
||||
* @param name Map name
|
||||
|
@ -61,7 +61,7 @@ export declare class QuestController {
|
||||
* @param playerLevel level of player to test against quest
|
||||
* @returns true if quest can be seen/accepted by player of defined level
|
||||
*/
|
||||
protected playerLevelFulfillsQuestRequrement(quest: IQuest, playerLevel: number): boolean;
|
||||
protected playerLevelFulfillsQuestRequirement(quest: IQuest, playerLevel: number): boolean;
|
||||
/**
|
||||
* Should a quest be shown to the player in trader quest screen
|
||||
* @param questId Quest to check
|
||||
|
@ -21,6 +21,7 @@ import { IGetMarketPriceRequestData } from "../models/eft/ragfair/IGetMarketPric
|
||||
import { IGetOffersResult } from "../models/eft/ragfair/IGetOffersResult";
|
||||
import { IRagfairOffer } from "../models/eft/ragfair/IRagfairOffer";
|
||||
import { ISearchRequestData } from "../models/eft/ragfair/ISearchRequestData";
|
||||
import { IProcessBuyTradeRequestData } from "../models/eft/trade/IProcessBuyTradeRequestData";
|
||||
import { IRagfairConfig } from "../models/spt/config/IRagfairConfig";
|
||||
import { ILogger } from "../models/spt/utils/ILogger";
|
||||
import { EventOutputHolder } from "../routers/EventOutputHolder";
|
||||
@ -125,6 +126,18 @@ export declare class RagfairController {
|
||||
* @returns IItemEventRouterResponse
|
||||
*/
|
||||
addPlayerOffer(pmcData: IPmcData, offerRequest: IAddOfferRequestData, sessionID: string): IItemEventRouterResponse;
|
||||
/**
|
||||
* Charge player a listing fee for using flea, pulls charge from data previously sent by client
|
||||
* @param sessionID Player id
|
||||
* @param rootItem Base item being listed (used when client tax cost not found and must be done on server)
|
||||
* @param pmcData Player profile
|
||||
* @param requirementsPriceInRub Rouble cost player chose for listing (used when client tax cost not found and must be done on server)
|
||||
* @param itemStackCount How many items were listed in player (used when client tax cost not found and must be done on server)
|
||||
* @param offerRequest Add offer request object from client
|
||||
* @param output IItemEventRouterResponse
|
||||
* @returns True if charging tax to player failed
|
||||
*/
|
||||
protected chargePlayerTaxFee(sessionID: string, rootItem: Item, pmcData: IPmcData, requirementsPriceInRub: number, itemStackCount: number, offerRequest: IAddOfferRequestData, output: IItemEventRouterResponse): boolean;
|
||||
/**
|
||||
* Is the item to be listed on the flea valid
|
||||
* @param offerRequest Client offer request
|
||||
@ -158,4 +171,11 @@ export declare class RagfairController {
|
||||
*/
|
||||
removeOffer(offerId: string, sessionID: string): IItemEventRouterResponse;
|
||||
extendOffer(info: IExtendOfferRequestData, sessionID: string): IItemEventRouterResponse;
|
||||
/**
|
||||
* Create a basic trader request object with price and currency type
|
||||
* @param currency What currency: RUB, EURO, USD
|
||||
* @param value Amount of currency
|
||||
* @returns IProcessBuyTradeRequestData
|
||||
*/
|
||||
protected createBuyTradeRequestObject(currency: string, value: number): IProcessBuyTradeRequestData;
|
||||
}
|
||||
|
@ -14,7 +14,6 @@ import { DatabaseServer } from "../servers/DatabaseServer";
|
||||
import { BotEquipmentFilterService } from "../services/BotEquipmentFilterService";
|
||||
import { BotEquipmentModPoolService } from "../services/BotEquipmentModPoolService";
|
||||
import { BotModLimits, BotWeaponModLimitService } from "../services/BotWeaponModLimitService";
|
||||
import { ItemBaseClassService } from "../services/ItemBaseClassService";
|
||||
import { ItemFilterService } from "../services/ItemFilterService";
|
||||
import { LocalisationService } from "../services/LocalisationService";
|
||||
import { HashUtil } from "../utils/HashUtil";
|
||||
@ -29,7 +28,6 @@ export declare class BotEquipmentModGenerator {
|
||||
protected databaseServer: DatabaseServer;
|
||||
protected itemHelper: ItemHelper;
|
||||
protected botEquipmentFilterService: BotEquipmentFilterService;
|
||||
protected itemBaseClassService: ItemBaseClassService;
|
||||
protected itemFilterService: ItemFilterService;
|
||||
protected profileHelper: ProfileHelper;
|
||||
protected botWeaponModLimitService: BotWeaponModLimitService;
|
||||
@ -40,7 +38,7 @@ export declare class BotEquipmentModGenerator {
|
||||
protected botEquipmentModPoolService: BotEquipmentModPoolService;
|
||||
protected configServer: ConfigServer;
|
||||
protected botConfig: IBotConfig;
|
||||
constructor(logger: ILogger, jsonUtil: JsonUtil, hashUtil: HashUtil, randomUtil: RandomUtil, probabilityHelper: ProbabilityHelper, databaseServer: DatabaseServer, itemHelper: ItemHelper, botEquipmentFilterService: BotEquipmentFilterService, itemBaseClassService: ItemBaseClassService, 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, itemFilterService: ItemFilterService, profileHelper: ProfileHelper, botWeaponModLimitService: BotWeaponModLimitService, botHelper: BotHelper, botGeneratorHelper: BotGeneratorHelper, botWeaponGeneratorHelper: BotWeaponGeneratorHelper, localisationService: LocalisationService, botEquipmentModPoolService: BotEquipmentModPoolService, configServer: ConfigServer);
|
||||
/**
|
||||
* Check mods are compatible and add to array
|
||||
* @param equipment Equipment item to add mods to
|
||||
|
@ -65,10 +65,11 @@ export declare class LocationGenerator {
|
||||
protected getGuaranteedContainers(staticContainersOnMap: IStaticContainerData[]): IStaticContainerData[];
|
||||
/**
|
||||
* Choose a number of containers based on their probabilty value to fulfil the desired count in containerData.chosenCount
|
||||
* @param groupId Name of the group the containers are being collected for
|
||||
* @param containerData Containers and probability values for a groupId
|
||||
* @returns List of chosen container Ids
|
||||
*/
|
||||
protected getContainersByProbabilty(containerData: IContainerGroupCount): string[];
|
||||
protected getContainersByProbabilty(groupId: string, containerData: IContainerGroupCount): string[];
|
||||
/**
|
||||
* Get a mapping of each groupid and the containers in that group + count of containers to spawn on map
|
||||
* @param containersGroups Container group values
|
||||
|
@ -31,12 +31,12 @@ export declare class PMCLootGenerator {
|
||||
*/
|
||||
generatePMCVestLootPool(): string[];
|
||||
/**
|
||||
* Check if item has a width/height that lets it fit into a 1x2/2x1 slot
|
||||
* 1x1 / 1x2 / 2x1
|
||||
* Check if item has a width/height that lets it fit into a 2x2 slot
|
||||
* 1x1 / 1x2 / 2x1 / 2x2
|
||||
* @param item Item to check size of
|
||||
* @returns true if it fits
|
||||
*/
|
||||
protected itemFitsInto1By2Slot(item: ITemplateItem): boolean;
|
||||
protected itemFitsInto2By2Slot(item: ITemplateItem): boolean;
|
||||
/**
|
||||
* Create an array of loot items a PMC can have in their backpack
|
||||
* @returns string array of tpls
|
||||
|
@ -55,11 +55,10 @@ export declare class RagfairOfferGenerator {
|
||||
* @param items Items in the offer
|
||||
* @param barterScheme Cost of item (currency or barter)
|
||||
* @param loyalLevel Loyalty level needed to buy item
|
||||
* @param price Price of offer
|
||||
* @param sellInOnePiece Set StackObjectsCount to 1
|
||||
* @param sellInOnePiece Flags sellInOnePiece to be true
|
||||
* @returns IRagfairOffer
|
||||
*/
|
||||
createFleaOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, price: number, sellInOnePiece?: boolean): IRagfairOffer;
|
||||
createFleaOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, sellInOnePiece?: boolean): IRagfairOffer;
|
||||
/**
|
||||
* Create an offer object ready to send to ragfairOfferService.addOffer()
|
||||
* @param userID Owner of the offer
|
||||
@ -67,17 +66,16 @@ export declare class RagfairOfferGenerator {
|
||||
* @param items Items in the offer
|
||||
* @param barterScheme Cost of item (currency or barter)
|
||||
* @param loyalLevel Loyalty level needed to buy item
|
||||
* @param price Price of offer
|
||||
* @param sellInOnePiece Set StackObjectsCount to 1
|
||||
* @returns IRagfairOffer
|
||||
*/
|
||||
protected createOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, price: number, sellInOnePiece?: boolean): IRagfairOffer;
|
||||
protected createOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, sellInOnePiece?: boolean): IRagfairOffer;
|
||||
/**
|
||||
* Calculate the offer price that's listed on the flea listing
|
||||
* @param offerRequirements barter requirements for offer
|
||||
* @returns rouble cost of offer
|
||||
*/
|
||||
protected calculateOfferListingPrice(offerRequirements: OfferRequirement[]): number;
|
||||
protected convertOfferRequirementsIntoRoubles(offerRequirements: OfferRequirement[]): number;
|
||||
/**
|
||||
* Get avatar url from trader table in db
|
||||
* @param isTrader Is user we're getting avatar for a trader
|
||||
@ -137,7 +135,7 @@ export declare class RagfairOfferGenerator {
|
||||
* @param itemDetails raw db item details
|
||||
* @returns Item array
|
||||
*/
|
||||
protected createSingleOfferForItem(items: Item[], isPreset: boolean, itemDetails: [boolean, ITemplateItem]): Promise<Item[]>;
|
||||
protected createSingleOfferForItem(items: Item[], isPreset: boolean, itemDetails: [boolean, ITemplateItem]): Promise<void>;
|
||||
/**
|
||||
* Generate trader offers on flea using the traders assort data
|
||||
* @param traderID Trader to generate offers for
|
||||
@ -151,7 +149,7 @@ export declare class RagfairOfferGenerator {
|
||||
* @param itemDetails db details of first item
|
||||
* @returns
|
||||
*/
|
||||
protected getItemCondition(userID: string, itemWithMods: Item[], itemDetails: ITemplateItem): Item[];
|
||||
protected randomiseItemUpdProperties(userID: string, itemWithMods: Item[], itemDetails: ITemplateItem): Item[];
|
||||
/**
|
||||
* Get the relevant condition id if item tpl matches in ragfair.json/condition
|
||||
* @param tpl Item to look for matching condition object
|
||||
@ -184,7 +182,7 @@ export declare class RagfairOfferGenerator {
|
||||
* @param offerItems Items for sale in offer
|
||||
* @returns Barter scheme
|
||||
*/
|
||||
protected createBarterRequirement(offerItems: Item[]): IBarterScheme[];
|
||||
protected createBarterBarterScheme(offerItems: Item[]): IBarterScheme[];
|
||||
/**
|
||||
* Get an array of flea prices + item tpl, cached in generator class inside `allowedFleaPriceItemsForBarter`
|
||||
* @returns array with tpl/price values
|
||||
@ -196,7 +194,9 @@ export declare class RagfairOfferGenerator {
|
||||
/**
|
||||
* Create a random currency-based barter scheme for an array of items
|
||||
* @param offerItems Items on offer
|
||||
* @param isPackOffer Is the barter scheme being created for a pack offer
|
||||
* @param multipler What to multiply the resulting price by
|
||||
* @returns Barter scheme for offer
|
||||
*/
|
||||
protected createCurrencyRequirement(offerItems: Item[]): IBarterScheme[];
|
||||
protected createCurrencyBarterScheme(offerItems: Item[], isPackOffer: boolean, multipler?: number): IBarterScheme[];
|
||||
}
|
||||
|
@ -25,6 +25,8 @@ export declare class ScavCaseRewardGenerator {
|
||||
protected itemFilterService: ItemFilterService;
|
||||
protected configServer: ConfigServer;
|
||||
protected scavCaseConfig: IScavCaseConfig;
|
||||
protected dbItemsCache: ITemplateItem[];
|
||||
protected dbAmmoItemsCache: ITemplateItem[];
|
||||
constructor(logger: ILogger, randomUtil: RandomUtil, hashUtil: HashUtil, itemHelper: ItemHelper, databaseServer: DatabaseServer, ragfairPriceService: RagfairPriceService, itemFilterService: ItemFilterService, configServer: ConfigServer);
|
||||
/**
|
||||
* Create an array of rewards that will be given to the player upon completing their scav case build
|
||||
@ -33,10 +35,10 @@ export declare class ScavCaseRewardGenerator {
|
||||
*/
|
||||
generate(recipeId: string): Product[];
|
||||
/**
|
||||
* Get all db items that are not blacklisted in scavcase config
|
||||
* @returns filtered array of db items
|
||||
* Get all db items that are not blacklisted in scavcase config or global blacklist
|
||||
* Store in class field
|
||||
*/
|
||||
protected getDbItems(): ITemplateItem[];
|
||||
protected cacheDbItems(): void;
|
||||
/**
|
||||
* Pick a number of items to be rewards, the count is defined by the values in
|
||||
* @param items item pool to pick rewards from
|
||||
|
@ -52,6 +52,7 @@ export declare class WeatherGenerator {
|
||||
*/
|
||||
protected setCurrentDateTime(weather: IWeather): void;
|
||||
protected getWeightedWindDirection(): WindDirection;
|
||||
protected getWeightedClouds(): number;
|
||||
protected getWeightedWindSpeed(): number;
|
||||
protected getWeightedFog(): number;
|
||||
protected getWeightedRain(): number;
|
||||
|
@ -27,6 +27,7 @@ export declare class HealthHelper {
|
||||
* @param request Heal request
|
||||
* @param sessionID Session id
|
||||
* @param addEffects Should effects be added or removed (default - add)
|
||||
* @param deleteExistingEffects Should all prior effects be removed before apply new ones
|
||||
*/
|
||||
saveVitality(pmcData: IPmcData, request: ISyncHealthRequestData, sessionID: string, addEffects?: boolean, deleteExistingEffects?: boolean): void;
|
||||
/**
|
||||
|
@ -53,7 +53,7 @@ export declare class InRaidHelper {
|
||||
* @param victim Who was killed by player
|
||||
* @returns a numerical standing gain or loss
|
||||
*/
|
||||
protected getStandingChangeForKill(victim: Victim): number;
|
||||
protected getFenceStandingChangeForKillAsScav(victim: Victim): number;
|
||||
/**
|
||||
* Reset a profile to a baseline, used post-raid
|
||||
* Reset points earned during session property
|
||||
|
@ -26,6 +26,7 @@ declare class ItemHelper {
|
||||
protected itemBaseClassService: ItemBaseClassService;
|
||||
protected localisationService: LocalisationService;
|
||||
protected localeService: LocaleService;
|
||||
protected readonly defaultInvalidBaseTypes: string[];
|
||||
constructor(logger: ILogger, hashUtil: HashUtil, jsonUtil: JsonUtil, randomUtil: RandomUtil, objectId: ObjectId, mathUtil: MathUtil, databaseServer: DatabaseServer, handbookHelper: HandbookHelper, itemBaseClassService: ItemBaseClassService, localisationService: LocalisationService, localeService: LocaleService);
|
||||
/**
|
||||
* Checks if an id is a valid item. Valid meaning that it's an item that be stored in stash
|
||||
@ -67,6 +68,11 @@ declare class ItemHelper {
|
||||
* @returns Price in roubles (undefined if not found)
|
||||
*/
|
||||
getDynamicItemPrice(tpl: string): number;
|
||||
/**
|
||||
* Update items upd.StackObjectsCount to be 1 if its upd is missing or StackObjectsCount is undefined
|
||||
* @param item Item to update
|
||||
* @returns Fixed item
|
||||
*/
|
||||
fixItemStackCount(item: Item): Item;
|
||||
/**
|
||||
* AmmoBoxes contain StackSlots which need to be filled for the AmmoBox to have content.
|
||||
@ -125,19 +131,19 @@ declare class ItemHelper {
|
||||
getItemQualityModifier(item: Item): number;
|
||||
/**
|
||||
* Get a quality value based on a repairable items (weapon/armor) current state between current and max durability
|
||||
* @param itemDetails
|
||||
* @param repairable repairable object
|
||||
* @param item
|
||||
* @returns a number between 0 and 1
|
||||
* @param itemDetails Db details for item we want quality value for
|
||||
* @param repairable Repairable properties
|
||||
* @param item Item quality value is for
|
||||
* @returns A number between 0 and 1
|
||||
*/
|
||||
protected getRepairableItemQualityValue(itemDetails: ITemplateItem, repairable: Repairable, item: Item): number;
|
||||
/**
|
||||
* Recursive function that looks at every item from parameter and gets their childrens Ids + includes parent item in results
|
||||
* @param items
|
||||
* @param itemID
|
||||
* @param items Array of items (item + possible children)
|
||||
* @param itemId Parent items id
|
||||
* @returns an array of strings
|
||||
*/
|
||||
findAndReturnChildrenByItems(items: Item[], itemID: string): string[];
|
||||
findAndReturnChildrenByItems(items: Item[], itemId: string): string[];
|
||||
/**
|
||||
* A variant of findAndReturnChildren where the output is list of item objects instead of their ids.
|
||||
* @param items
|
||||
@ -164,12 +170,6 @@ declare class ItemHelper {
|
||||
* @returns true if it is a dogtag
|
||||
*/
|
||||
isDogtag(tpl: string): boolean;
|
||||
/**
|
||||
* Can the item passed in be sold to a trader because it is raw money
|
||||
* @param tpl Item template id to check
|
||||
* @returns true if unsellable
|
||||
*/
|
||||
isNotSellable(tpl: string): boolean;
|
||||
/**
|
||||
* Gets the identifier for a child using slotId, locationX and locationY.
|
||||
* @param item
|
||||
@ -183,19 +183,19 @@ declare class ItemHelper {
|
||||
*/
|
||||
isItemTplStackable(tpl: string): boolean;
|
||||
/**
|
||||
* split item stack if it exceeds its StackMaxSize property
|
||||
* @param itemToSplit item being split into smaller stacks
|
||||
* split item stack if it exceeds its items StackMaxSize property
|
||||
* @param itemToSplit Item to split into smaller stacks
|
||||
* @returns Array of split items
|
||||
*/
|
||||
splitStack(itemToSplit: Item): Item[];
|
||||
/**
|
||||
* Find Barter items in the inventory
|
||||
* Find Barter items from array of items
|
||||
* @param {string} by tpl or id
|
||||
* @param {Object} pmcData
|
||||
* @param {Item[]} items Array of items to iterate over
|
||||
* @param {string} barterItemId
|
||||
* @returns Array of Item objects
|
||||
*/
|
||||
findBarterItems(by: "tpl" | "id", pmcData: IPmcData, barterItemId: string): Item[];
|
||||
findBarterItems(by: "tpl" | "id", items: Item[], barterItemId: string): Item[];
|
||||
/**
|
||||
* Regenerate all guids with new ids, exceptions are for items that cannot be altered (e.g. stash/sorting table)
|
||||
* @param pmcData Player profile
|
||||
@ -262,10 +262,21 @@ declare class ItemHelper {
|
||||
* @param minSizePercent % the magazine must be filled to
|
||||
*/
|
||||
fillMagazineWithCartridge(magazine: Item[], magTemplate: ITemplateItem, cartridgeTpl: string, minSizePercent?: number): void;
|
||||
/**
|
||||
* Choose a random bullet type from the list of possible a magazine has
|
||||
* @param magTemplate Magazine template from Db
|
||||
* @returns Tpl of cartridge
|
||||
*/
|
||||
protected getRandomValidCaliber(magTemplate: ITemplateItem): string;
|
||||
/**
|
||||
* Chose a randomly weighted cartridge that fits
|
||||
* @param caliber Desired caliber
|
||||
* @param staticAmmoDist Cartridges and thier weights
|
||||
* @returns Tpl of cartrdige
|
||||
*/
|
||||
protected drawAmmoTpl(caliber: string, staticAmmoDist: Record<string, IStaticAmmoDetails[]>): string;
|
||||
/**
|
||||
*
|
||||
* Create a basic cartrige object
|
||||
* @param parentId container cartridges will be placed in
|
||||
* @param ammoTpl Cartridge to insert
|
||||
* @param stackCount Count of cartridges inside parent
|
||||
|
@ -21,6 +21,7 @@ import { DialogueHelper } from "./DialogueHelper";
|
||||
import { ItemHelper } from "./ItemHelper";
|
||||
import { PaymentHelper } from "./PaymentHelper";
|
||||
import { ProfileHelper } from "./ProfileHelper";
|
||||
import { QuestConditionHelper } from "./QuestConditionHelper";
|
||||
import { RagfairServerHelper } from "./RagfairServerHelper";
|
||||
import { TraderHelper } from "./TraderHelper";
|
||||
export declare class QuestHelper {
|
||||
@ -29,6 +30,7 @@ export declare class QuestHelper {
|
||||
protected timeUtil: TimeUtil;
|
||||
protected hashUtil: HashUtil;
|
||||
protected itemHelper: ItemHelper;
|
||||
protected questConditionHelper: QuestConditionHelper;
|
||||
protected eventOutputHolder: EventOutputHolder;
|
||||
protected databaseServer: DatabaseServer;
|
||||
protected localeService: LocaleService;
|
||||
@ -41,7 +43,7 @@ export declare class QuestHelper {
|
||||
protected mailSendService: MailSendService;
|
||||
protected configServer: ConfigServer;
|
||||
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, mailSendService: MailSendService, configServer: ConfigServer);
|
||||
constructor(logger: ILogger, jsonUtil: JsonUtil, timeUtil: TimeUtil, hashUtil: HashUtil, itemHelper: ItemHelper, questConditionHelper: QuestConditionHelper, eventOutputHolder: EventOutputHolder, databaseServer: DatabaseServer, localeService: LocaleService, ragfairServerHelper: RagfairServerHelper, dialogueHelper: DialogueHelper, profileHelper: ProfileHelper, paymentHelper: PaymentHelper, localisationService: LocalisationService, traderHelper: TraderHelper, mailSendService: MailSendService, configServer: ConfigServer);
|
||||
/**
|
||||
* Get status of a quest in player profile by its id
|
||||
* @param pmcData Profile to search
|
||||
@ -119,7 +121,7 @@ export declare class QuestHelper {
|
||||
* @param sessionID Session id
|
||||
* @returns Quests accessible to player incuding newly unlocked quests now quest (startedQuestId) was started
|
||||
*/
|
||||
acceptedUnlocked(startedQuestId: string, sessionID: string): IQuest[];
|
||||
getNewlyAccessibleQuestsWhenStartingQuest(startedQuestId: string, sessionID: string): IQuest[];
|
||||
/**
|
||||
* Get quests that can be shown to player after failing a quest
|
||||
* @param failedQuestId Id of the quest failed by player
|
||||
|
@ -1,4 +1,5 @@
|
||||
import { IPmcData } from "../models/eft/common/IPmcData";
|
||||
import { Item } from "../models/eft/common/tables/IItem";
|
||||
import { ITraderAssort } from "../models/eft/common/tables/ITrader";
|
||||
import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse";
|
||||
import { IAkiProfile } from "../models/eft/profile/IAkiProfile";
|
||||
@ -13,10 +14,10 @@ import { DatabaseServer } from "../servers/DatabaseServer";
|
||||
import { SaveServer } from "../servers/SaveServer";
|
||||
import { LocaleService } from "../services/LocaleService";
|
||||
import { LocalisationService } from "../services/LocalisationService";
|
||||
import { MailSendService } from "../services/MailSendService";
|
||||
import { RagfairOfferService } from "../services/RagfairOfferService";
|
||||
import { HashUtil } from "../utils/HashUtil";
|
||||
import { TimeUtil } from "../utils/TimeUtil";
|
||||
import { DialogueHelper } from "./DialogueHelper";
|
||||
import { ItemHelper } from "./ItemHelper";
|
||||
import { PaymentHelper } from "./PaymentHelper";
|
||||
import { PresetHelper } from "./PresetHelper";
|
||||
@ -33,7 +34,6 @@ export declare class RagfairOfferHelper {
|
||||
protected databaseServer: DatabaseServer;
|
||||
protected traderHelper: TraderHelper;
|
||||
protected saveServer: SaveServer;
|
||||
protected dialogueHelper: DialogueHelper;
|
||||
protected itemHelper: ItemHelper;
|
||||
protected paymentHelper: PaymentHelper;
|
||||
protected presetHelper: PresetHelper;
|
||||
@ -44,11 +44,12 @@ export declare class RagfairOfferHelper {
|
||||
protected ragfairOfferService: RagfairOfferService;
|
||||
protected localeService: LocaleService;
|
||||
protected localisationService: LocalisationService;
|
||||
protected mailSendService: MailSendService;
|
||||
protected configServer: ConfigServer;
|
||||
protected static goodSoldTemplate: string;
|
||||
protected ragfairConfig: IRagfairConfig;
|
||||
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, localisationService: LocalisationService, configServer: ConfigServer);
|
||||
constructor(logger: ILogger, timeUtil: TimeUtil, hashUtil: HashUtil, eventOutputHolder: EventOutputHolder, databaseServer: DatabaseServer, traderHelper: TraderHelper, saveServer: SaveServer, itemHelper: ItemHelper, paymentHelper: PaymentHelper, presetHelper: PresetHelper, profileHelper: ProfileHelper, ragfairServerHelper: RagfairServerHelper, ragfairSortHelper: RagfairSortHelper, ragfairHelper: RagfairHelper, ragfairOfferService: RagfairOfferService, localeService: LocaleService, localisationService: LocalisationService, mailSendService: MailSendService, configServer: ConfigServer);
|
||||
/**
|
||||
* Passthrough to ragfairOfferService.getOffers(), get flea offers a player should see
|
||||
* @param searchRequest Data from client
|
||||
@ -119,19 +120,26 @@ export declare class RagfairOfferHelper {
|
||||
*/
|
||||
protected getProfileOffers(sessionID: string): IRagfairOffer[];
|
||||
/**
|
||||
* Delete an offer from a desired profile
|
||||
* Delete an offer from a desired profile and from ragfair offers
|
||||
* @param sessionID Session id of profile to delete offer from
|
||||
* @param offerId Offer id to delete
|
||||
* @param offerId Id of offer to delete
|
||||
*/
|
||||
protected deleteOfferByOfferId(sessionID: string, offerId: string): void;
|
||||
protected deleteOfferById(sessionID: string, offerId: string): void;
|
||||
/**
|
||||
* Complete the selling of players' offer
|
||||
* @param sessionID Session id
|
||||
* @param offer Sold offer details
|
||||
* @param boughtAmount Amount item was purchased for
|
||||
* @returns Client response
|
||||
* @returns IItemEventRouterResponse
|
||||
*/
|
||||
protected completeOffer(sessionID: string, offer: IRagfairOffer, boughtAmount: number): IItemEventRouterResponse;
|
||||
/**
|
||||
* Get a localised message for when players offer has sold on flea
|
||||
* @param itemTpl Item sold
|
||||
* @param boughtAmount How many were purchased
|
||||
* @returns Localised message text
|
||||
*/
|
||||
protected getLocalisedOfferSoldMessage(itemTpl: string, boughtAmount: number): string;
|
||||
/**
|
||||
* Should a ragfair offer be visible to the player
|
||||
* @param searchRequest Search request
|
||||
@ -142,4 +150,12 @@ export declare class RagfairOfferHelper {
|
||||
* @returns True = should be shown to player
|
||||
*/
|
||||
isDisplayableOffer(searchRequest: ISearchRequestData, itemsToAdd: string[], traderAssorts: Record<string, ITraderAssort>, offer: IRagfairOffer, pmcProfile: IPmcData): boolean;
|
||||
/**
|
||||
* Is items quality value within desired range
|
||||
* @param item Item to check quality of
|
||||
* @param min Desired minimum quality
|
||||
* @param max Desired maximum quality
|
||||
* @returns True if in range
|
||||
*/
|
||||
protected itemQualityInRange(item: Item, min: number, max: number): boolean;
|
||||
}
|
||||
|
@ -13,12 +13,12 @@ export declare class RagfairSellHelper {
|
||||
constructor(logger: ILogger, randomUtil: RandomUtil, timeUtil: TimeUtil, configServer: ConfigServer);
|
||||
/**
|
||||
* Get the percent chance to sell an item based on its average listed price vs player chosen listing price
|
||||
* @param baseChancePercent Base chance to sell item
|
||||
* @param averageOfferPriceRub Price of average offer in roubles
|
||||
* @param playerListedPriceRub Price player listed item for in roubles
|
||||
* @param qualityMultiplier Quality multipler of item being sold
|
||||
* @returns percent value
|
||||
*/
|
||||
calculateSellChance(baseChancePercent: number, averageOfferPriceRub: number, playerListedPriceRub: number): number;
|
||||
calculateSellChance(averageOfferPriceRub: number, playerListedPriceRub: number, qualityMultiplier: number): number;
|
||||
/**
|
||||
* Get percent chance to sell an item when price is below items average listing price
|
||||
* @param playerListedPriceRub Price player listed item for in roubles
|
||||
|
@ -35,7 +35,7 @@ export declare class TraderHelper {
|
||||
protected highestTraderBuyPriceItems: Record<string, number>;
|
||||
constructor(logger: ILogger, databaseServer: DatabaseServer, saveServer: SaveServer, profileHelper: ProfileHelper, handbookHelper: HandbookHelper, itemHelper: ItemHelper, playerService: PlayerService, localisationService: LocalisationService, fenceService: FenceService, timeUtil: TimeUtil, randomUtil: RandomUtil, configServer: ConfigServer);
|
||||
getTrader(traderID: string, sessionID: string): ITraderBase;
|
||||
getTraderAssortsById(traderId: string): ITraderAssort;
|
||||
getTraderAssortsByTraderId(traderId: string): ITraderAssort;
|
||||
/**
|
||||
* Reset a profiles trader data back to its initial state as seen by a level 1 player
|
||||
* Does NOT take into account different profile levels
|
||||
|
@ -281,7 +281,7 @@ export interface InsuredItem {
|
||||
export interface Hideout {
|
||||
Production: Record<string, Productive>;
|
||||
Areas: HideoutArea[];
|
||||
Improvements: Record<string, IHideoutImprovement>;
|
||||
Improvement: Record<string, IHideoutImprovement>;
|
||||
Seed: number;
|
||||
sptUpdateLastRunTimestamp: number;
|
||||
}
|
||||
|
@ -1,12 +1,14 @@
|
||||
export interface IHealthTreatmentRequestData {
|
||||
Action: "RestoreHealth";
|
||||
trader: string;
|
||||
items: Item[];
|
||||
items: Cost[];
|
||||
difference: Difference;
|
||||
timestamp: number;
|
||||
}
|
||||
export interface Item {
|
||||
export interface Cost {
|
||||
/** Id of stack to take money from */
|
||||
id: string;
|
||||
/** Amount of money to take off player for treatment */
|
||||
count: number;
|
||||
}
|
||||
export interface Difference {
|
||||
@ -25,5 +27,6 @@ export interface BodyParts {
|
||||
}
|
||||
export interface BodyPart {
|
||||
Health: number;
|
||||
/** Effects in array are to be removed */
|
||||
Effects: string[];
|
||||
}
|
||||
|
@ -14,6 +14,11 @@ export interface INotification {
|
||||
}
|
||||
export declare enum NotificationType {
|
||||
RAGFAIR_OFFER_SOLD = "RagfairOfferSold",
|
||||
RAGFAIR_RATING_CHANGE = "RagfairRatingChange",
|
||||
/** ChatMessageReceived */
|
||||
NEW_MESSAGE = "new_message",
|
||||
PING = "ping"
|
||||
PING = "ping",
|
||||
TRADER_SUPPLY = "TraderSupply",
|
||||
TRADER_STANDING = "TraderStanding",
|
||||
UNLOCK_TRADER = "UnlockTrader"
|
||||
}
|
||||
|
@ -1,6 +1,3 @@
|
||||
import { INotifierChannel } from "./INotifier";
|
||||
export interface ISelectProfileResponse {
|
||||
status: string;
|
||||
notifier: INotifierChannel;
|
||||
notifierServer: string;
|
||||
}
|
||||
|
@ -1,19 +1,19 @@
|
||||
export declare enum WeatherType {
|
||||
CLEAR_DAY = 1,
|
||||
CLEAR_WIND = 2,
|
||||
CLEAR_NIGHT = 3,
|
||||
PARTLY_CLOUD_DAY = 4,
|
||||
PARTLY_CLOUD_NIGHT = 5,
|
||||
CLEAR_FOG_DAY = 6,
|
||||
CLEAR_FOG_NIGHT = 7,
|
||||
CLOUDFOG = 8,
|
||||
FOG = 9,
|
||||
MOSTLY_CLOUD = 10,
|
||||
LIGHT_RAIN = 11,
|
||||
RAIN = 12,
|
||||
CLOUD_WIND = 13,
|
||||
CLOUD_WIND_RAIN = 14,
|
||||
FULL_CLOUD = 15,
|
||||
THUNDER_CLOUD = 16,
|
||||
NONE = 0
|
||||
CLEAR_DAY = 0,
|
||||
CLEAR_WIND = 1,
|
||||
CLEAR_NIGHT = 2,
|
||||
PARTLY_CLOUD_DAY = 3,
|
||||
PARTLY_CLOUD_NIGHT = 4,
|
||||
CLEAR_FOG_DAY = 5,
|
||||
CLEAR_FOG_NIGHT = 6,
|
||||
CLOUD_FOG = 7,
|
||||
FOG = 8,
|
||||
MOSTLY_CLOUD = 9,
|
||||
LIGHT_RAIN = 10,
|
||||
RAIN = 11,
|
||||
CLOUD_WIND = 12,
|
||||
CLOUD_WIND_RAIN = 13,
|
||||
FULL_CLOUD = 14,
|
||||
THUNDER_CLOUD = 15,
|
||||
NONE = 16
|
||||
}
|
||||
|
@ -41,7 +41,8 @@ export interface Dynamic {
|
||||
/** Use the highest trader price for an offer if its greater than the price in templates/prices.json */
|
||||
useTraderPriceForOffersIfHigher: boolean;
|
||||
/** Barter offer specific settings */
|
||||
barter: Barter;
|
||||
barter: IBarterDetails;
|
||||
pack: IPackDetails;
|
||||
/** Dynamic offer price below handbook adjustment values */
|
||||
offerAdjustment: OfferAdjustment;
|
||||
/** How many offers should expire before an offer regeneration occurs */
|
||||
@ -49,9 +50,7 @@ export interface Dynamic {
|
||||
/** How many offers should be listed */
|
||||
offerItemCount: MinMax;
|
||||
/** How much should the price of an offer vary by (percent 0.8 = 80%, 1.2 = 120%) */
|
||||
price: MinMax;
|
||||
/** How much should the price of an offer vary by (percent 0.8 = 80%, 1.2 = 120%) */
|
||||
presetPrice: MinMax;
|
||||
priceRanges: IPriceRanges;
|
||||
/** Should default presets to listed only or should non-standard presets found in globals.json be listed too */
|
||||
showDefaultPresetsOnly: boolean;
|
||||
endTimeSeconds: MinMax;
|
||||
@ -74,7 +73,12 @@ export interface Dynamic {
|
||||
/** Dict of price limits keyed by item type */
|
||||
unreasonableModPrices: Record<string, IUnreasonableModPrices>;
|
||||
}
|
||||
export interface Barter {
|
||||
export interface IPriceRanges {
|
||||
default: MinMax;
|
||||
preset: MinMax;
|
||||
pack: MinMax;
|
||||
}
|
||||
export interface IBarterDetails {
|
||||
/** Should barter offers be generated */
|
||||
enable: boolean;
|
||||
/** Percentage change an offer is listed as a barter */
|
||||
@ -90,6 +94,18 @@ export interface Barter {
|
||||
/** Item Tpls to never be turned into a barter */
|
||||
itemTypeBlacklist: string[];
|
||||
}
|
||||
export interface IPackDetails {
|
||||
/** Should pack offers be generated */
|
||||
enable: boolean;
|
||||
/** Percentage change an offer is listed as a pack */
|
||||
chancePercent: number;
|
||||
/** Min number of required items for a pack */
|
||||
itemCountMin: number;
|
||||
/** Max number of required items for a pack */
|
||||
itemCountMax: number;
|
||||
/** item types to allow being a pack */
|
||||
itemTypeWhitelist: string[];
|
||||
}
|
||||
export interface OfferAdjustment {
|
||||
/** Shuld offer price be adjusted when below handbook price */
|
||||
adjustPriceWhenBelowHandbookPrice: boolean;
|
||||
|
@ -7,7 +7,7 @@ export interface IWeatherConfig extends IBaseConfig {
|
||||
weather: Weather;
|
||||
}
|
||||
export interface Weather {
|
||||
clouds: MinMax;
|
||||
clouds: WeatherSettings<string>;
|
||||
windSpeed: WeatherSettings<number>;
|
||||
windDirection: WeatherSettings<WindDirection>;
|
||||
windGustiness: MinMax;
|
||||
|
@ -11,7 +11,18 @@ export declare class HashCacheService {
|
||||
protected modHashes: any;
|
||||
protected readonly modCachePath = "./user/cache/modCache.json";
|
||||
constructor(vfs: VFS, hashUtil: HashUtil, jsonUtil: JsonUtil, logger: ILogger);
|
||||
/**
|
||||
* Return a stored hash by key
|
||||
* @param modName Name of mod to get hash for
|
||||
* @returns Mod hash
|
||||
*/
|
||||
getStoredModHash(modName: string): string;
|
||||
/**
|
||||
* Does the generated hash match the stored hash
|
||||
* @param modName name of mod
|
||||
* @param modContent
|
||||
* @returns True if they match
|
||||
*/
|
||||
modContentMatchesStoredHash(modName: string, modContent: string): boolean;
|
||||
hashMatchesStoredHash(modName: string, modHash: string): boolean;
|
||||
storeModContent(modName: string, modContent: string): void;
|
||||
|
@ -35,7 +35,7 @@ export declare class MailSendService {
|
||||
* @param items Optional items to send to player
|
||||
* @param maxStorageTimeSeconds Optional time to collect items before they expire
|
||||
*/
|
||||
sendDirectNpcMessageToPlayer(playerId: string, sender: Traders, messageType: MessageType, message: string, items?: Item[], maxStorageTimeSeconds?: any): void;
|
||||
sendDirectNpcMessageToPlayer(playerId: string, sender: Traders, messageType: MessageType, message: string, items?: Item[], maxStorageTimeSeconds?: any, systemData?: any, ragfair?: any): void;
|
||||
/**
|
||||
* Send a message from an NPC (e.g. prapor) to the player with or without items
|
||||
* @param playerId Players id to send message to
|
||||
@ -45,7 +45,7 @@ export declare class MailSendService {
|
||||
* @param items Optional items to send to player
|
||||
* @param maxStorageTimeSeconds Optional time to collect items before they expire
|
||||
*/
|
||||
sendLocalisedNpcMessageToPlayer(playerId: string, sender: Traders, messageType: MessageType, messageLocaleId: string, items?: Item[], maxStorageTimeSeconds?: any, systemData?: any): void;
|
||||
sendLocalisedNpcMessageToPlayer(playerId: string, sender: Traders, messageType: MessageType, messageLocaleId: string, items?: Item[], maxStorageTimeSeconds?: any, systemData?: any, ragfair?: any): void;
|
||||
/**
|
||||
* Send a message from SYSTEM to the player with or without items
|
||||
* @param playerId Players id to send message to
|
||||
|
@ -1,7 +1,7 @@
|
||||
import { IBotBase } from "../models/eft/common/tables/IBotBase";
|
||||
import { ILogger } from "../models/spt/utils/ILogger";
|
||||
import { LocalisationService } from "./LocalisationService";
|
||||
/** Cache bots in a dictionary, keyed by the bots name, keying by name isnt idea as its not unique but this is used by the post-raid system which doesnt have any bot ids, only name */
|
||||
/** Cache bots in a dictionary, keyed by the bots name, keying by name isnt ideal as its not unique but this is used by the post-raid system which doesnt have any bot ids, only name */
|
||||
export declare class MatchBotDetailsCacheService {
|
||||
protected logger: ILogger;
|
||||
protected localisationService: LocalisationService;
|
||||
@ -17,9 +17,9 @@ export declare class MatchBotDetailsCacheService {
|
||||
*/
|
||||
clearCache(): void;
|
||||
/**
|
||||
* Find a bot in the cache by its name
|
||||
* Find a bot in the cache by its name and side
|
||||
* @param botName Name of bot to find
|
||||
* @returns Bot details
|
||||
*/
|
||||
getBotByName(botName: string): IBotBase;
|
||||
getBotByNameAndSide(botName: string, botSide: string): IBotBase;
|
||||
}
|
||||
|
@ -1,14 +1,36 @@
|
||||
import { CompilerOptions } from "typescript";
|
||||
import type { ILogger } from "../models/spt/utils/ILogger";
|
||||
import { HashCacheService } from "./HashCacheService";
|
||||
import { VFS } from "../utils/VFS";
|
||||
import { HashCacheService } from "./HashCacheService";
|
||||
export declare class ModCompilerService {
|
||||
protected logger: ILogger;
|
||||
protected hashCacheService: HashCacheService;
|
||||
protected vfs: VFS;
|
||||
constructor(logger: ILogger, hashCacheService: HashCacheService, vfs: VFS);
|
||||
/**
|
||||
* Convert a mods TS into JS
|
||||
* @param modName Name of mod
|
||||
* @param modPath Dir path to mod
|
||||
* @param modTypeScriptFiles
|
||||
* @returns
|
||||
*/
|
||||
compileMod(modName: string, modPath: string, modTypeScriptFiles: string[]): Promise<void>;
|
||||
/**
|
||||
* Convert a TS file into JS
|
||||
* @param fileNames Paths to TS files
|
||||
* @param options Compiler options
|
||||
*/
|
||||
protected compile(fileNames: string[], options: CompilerOptions): Promise<void>;
|
||||
/**
|
||||
* Do the files at the provided paths exist
|
||||
* @param fileNames
|
||||
* @returns
|
||||
*/
|
||||
protected areFilesReady(fileNames: string[]): boolean;
|
||||
/**
|
||||
* Wait the provided number of milliseconds
|
||||
* @param ms Milliseconds
|
||||
* @returns
|
||||
*/
|
||||
protected delay(ms: number): Promise<unknown>;
|
||||
}
|
||||
|
@ -61,23 +61,26 @@ export declare class PaymentService {
|
||||
* Get all money stacks in inventory and prioritse items in stash
|
||||
* @param pmcData
|
||||
* @param currencyTpl
|
||||
* @param playerStashId Players stash id
|
||||
* @returns Sorting money items
|
||||
*/
|
||||
protected getSortedMoneyItemsInInventory(pmcData: IPmcData, currencyTpl: string): Item[];
|
||||
protected getSortedMoneyItemsInInventory(pmcData: IPmcData, currencyTpl: string, playerStashId: string): Item[];
|
||||
/**
|
||||
* Prioritise player stash first over player inventory
|
||||
* Post-raid healing would often take money out of the players pockets/secure container
|
||||
* @param a First money stack item
|
||||
* @param b Second money stack item
|
||||
* @param inventoryItems players inventory items
|
||||
* @param playerStashId Players stash id
|
||||
* @returns sort order
|
||||
*/
|
||||
protected prioritiseStashSort(a: Item, b: Item, inventoryItems: Item[]): number;
|
||||
protected prioritiseStashSort(a: Item, b: Item, inventoryItems: Item[], playerStashId: string): number;
|
||||
/**
|
||||
* Recursivly check items parents to see if it is inside the players inventory, not stash
|
||||
* @param itemId item id to check
|
||||
* @param inventoryItems player inventory
|
||||
* @param playerStashId Players stash id
|
||||
* @returns true if its in inventory
|
||||
*/
|
||||
protected isInInventory(itemId: string, inventoryItems: Item[]): boolean;
|
||||
protected isInStash(itemId: string, inventoryItems: Item[], playerStashId: string): boolean;
|
||||
}
|
||||
|
@ -14,6 +14,7 @@ import { IRagfairConfig } from "../models/spt/config/IRagfairConfig";
|
||||
import { ILogger } from "../models/spt/utils/ILogger";
|
||||
import { ConfigServer } from "../servers/ConfigServer";
|
||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
||||
import { JsonUtil } from "../utils/JsonUtil";
|
||||
import { TimeUtil } from "../utils/TimeUtil";
|
||||
import { Watermark } from "../utils/Watermark";
|
||||
import { LocalisationService } from "./LocalisationService";
|
||||
@ -27,17 +28,19 @@ export declare class ProfileFixerService {
|
||||
protected itemHelper: ItemHelper;
|
||||
protected localisationService: LocalisationService;
|
||||
protected timeUtil: TimeUtil;
|
||||
protected jsonUtil: JsonUtil;
|
||||
protected databaseServer: DatabaseServer;
|
||||
protected configServer: ConfigServer;
|
||||
protected coreConfig: ICoreConfig;
|
||||
protected ragfairConfig: IRagfairConfig;
|
||||
constructor(logger: ILogger, watermark: Watermark, hideoutHelper: HideoutHelper, inventoryHelper: InventoryHelper, traderHelper: TraderHelper, profileHelper: ProfileHelper, itemHelper: ItemHelper, localisationService: LocalisationService, timeUtil: TimeUtil, databaseServer: DatabaseServer, configServer: ConfigServer);
|
||||
constructor(logger: ILogger, watermark: Watermark, hideoutHelper: HideoutHelper, inventoryHelper: InventoryHelper, traderHelper: TraderHelper, profileHelper: ProfileHelper, itemHelper: ItemHelper, localisationService: LocalisationService, timeUtil: TimeUtil, jsonUtil: JsonUtil, databaseServer: DatabaseServer, configServer: ConfigServer);
|
||||
/**
|
||||
* Find issues in the pmc profile data that may cause issues and fix them
|
||||
* @param pmcProfile profile to check and fix
|
||||
*/
|
||||
checkForAndFixPmcProfileIssues(pmcProfile: IPmcData): void;
|
||||
protected addMissingGunStandContainerImprovements(pmcProfile: IPmcData): void;
|
||||
protected ensureGunStandLevelsMatch(pmcProfile: IPmcData): void;
|
||||
protected addHideoutAreaStashes(pmcProfile: IPmcData): void;
|
||||
protected addMissingHideoutWallAreas(pmcProfile: IPmcData): void;
|
||||
protected adjustUnreasonableModFleaPrices(): void;
|
||||
@ -131,4 +134,9 @@ export declare class ProfileFixerService {
|
||||
* @param pmcProfile Profile to add missing IDs to
|
||||
*/
|
||||
addMissingIdsToBonuses(pmcProfile: IPmcData): void;
|
||||
/**
|
||||
* At some point the property name was changed,migrate data across to new name
|
||||
* @param pmcProfile
|
||||
*/
|
||||
protected migrateImprovements(pmcProfile: IPmcData): void;
|
||||
}
|
||||
|
@ -3,6 +3,7 @@ import { HandbookHelper } from "../helpers/HandbookHelper";
|
||||
import { ItemHelper } from "../helpers/ItemHelper";
|
||||
import { PresetHelper } from "../helpers/PresetHelper";
|
||||
import { TraderHelper } from "../helpers/TraderHelper";
|
||||
import { MinMax } from "../models/common/MinMax";
|
||||
import { IPreset } from "../models/eft/common/IGlobals";
|
||||
import { Item } from "../models/eft/common/tables/IItem";
|
||||
import { IBarterScheme } from "../models/eft/common/tables/ITrader";
|
||||
@ -35,10 +36,6 @@ export declare class RagfairPriceService implements OnLoad {
|
||||
* Generate static (handbook) and dynamic (prices.json) flea prices, store inside class as dictionaries
|
||||
*/
|
||||
onLoad(): Promise<void>;
|
||||
/**
|
||||
* Add placeholder values for items missing from handbook
|
||||
*/
|
||||
protected addMissingHandbookPrices(): void;
|
||||
getRoute(): string;
|
||||
/**
|
||||
* Iterate over all items of type "Item" in db and get template price, store in cache
|
||||
@ -91,9 +88,17 @@ export declare class RagfairPriceService implements OnLoad {
|
||||
* Generate a currency cost for an item and its mods
|
||||
* @param items Item with mods to get price for
|
||||
* @param desiredCurrency Currency price desired in
|
||||
* @param isPackOffer Price is for a pack type offer
|
||||
* @returns cost of item in desired currency
|
||||
*/
|
||||
getDynamicOfferPrice(items: Item[], desiredCurrency: string): number;
|
||||
getDynamicOfferPriceForOffer(items: Item[], desiredCurrency: string, isPackOffer: boolean): number;
|
||||
/**
|
||||
* Get different min/max price multipliers for different offer types (preset/pack/default)
|
||||
* @param isPreset Offer is a preset
|
||||
* @param isPack Offer is a pack
|
||||
* @returns MinMax values
|
||||
*/
|
||||
protected getOfferTypeRangeValues(isPreset: boolean, isPack: boolean): MinMax;
|
||||
/**
|
||||
* Check to see if an items price is below its handbook price and adjust accoring to values set to config/ragfair.json
|
||||
* @param itemPrice price of item
|
||||
@ -104,10 +109,10 @@ export declare class RagfairPriceService implements OnLoad {
|
||||
/**
|
||||
* Multiply the price by a randomised curve where n = 2, shift = 2
|
||||
* @param existingPrice price to alter
|
||||
* @param isPreset is the item we're multiplying a preset
|
||||
* @param rangeValues min and max to adjust price by
|
||||
* @returns multiplied price
|
||||
*/
|
||||
protected randomisePrice(existingPrice: number, isPreset: boolean): number;
|
||||
protected randomiseOfferPrice(existingPrice: number, rangeValues: MinMax): number;
|
||||
/**
|
||||
* Calculate the cost of a weapon preset by adding together the price of its mods + base price of default weapon preset
|
||||
* @param item base weapon
|
||||
|
@ -1,4 +1,5 @@
|
||||
import { GameController } from "../controllers/GameController";
|
||||
import { OnLoad } from "../di/OnLoad";
|
||||
import { IEmptyRequestData } from "../models/eft/common/IEmptyRequestData";
|
||||
import { ICheckVersionResponse } from "../models/eft/game/ICheckVersionResponse";
|
||||
import { ICurrentGroupResponse } from "../models/eft/game/ICurrentGroupResponse";
|
||||
@ -15,12 +16,14 @@ import { INullResponseData } from "../models/eft/httpResponse/INullResponseData"
|
||||
import { SaveServer } from "../servers/SaveServer";
|
||||
import { HttpResponseUtil } from "../utils/HttpResponseUtil";
|
||||
import { Watermark } from "../utils/Watermark";
|
||||
declare class GameCallbacks {
|
||||
declare class GameCallbacks implements OnLoad {
|
||||
protected httpResponse: HttpResponseUtil;
|
||||
protected watermark: Watermark;
|
||||
protected saveServer: SaveServer;
|
||||
protected gameController: GameController;
|
||||
constructor(httpResponse: HttpResponseUtil, watermark: Watermark, saveServer: SaveServer, gameController: GameController);
|
||||
onLoad(): Promise<void>;
|
||||
getRoute(): string;
|
||||
/**
|
||||
* Handle client/game/version/validate
|
||||
* @returns INullResponseData
|
||||
|
@ -61,13 +61,14 @@ export declare class GameController {
|
||||
protected pmcConfig: IPmcConfig;
|
||||
protected lootConfig: ILootConfig;
|
||||
constructor(logger: ILogger, databaseServer: DatabaseServer, jsonUtil: JsonUtil, timeUtil: TimeUtil, hashUtil: HashUtil, preAkiModLoader: PreAkiModLoader, httpServerHelper: HttpServerHelper, randomUtil: RandomUtil, encodingUtil: EncodingUtil, hideoutHelper: HideoutHelper, profileHelper: ProfileHelper, profileFixerService: ProfileFixerService, localisationService: LocalisationService, customLocationWaveService: CustomLocationWaveService, openZoneService: OpenZoneService, seasonalEventService: SeasonalEventService, itemBaseClassService: ItemBaseClassService, giftService: GiftService, applicationContext: ApplicationContext, configServer: ConfigServer);
|
||||
load(): void;
|
||||
/**
|
||||
* Handle client/game/start
|
||||
*/
|
||||
gameStart(_url: string, _info: IEmptyRequestData, sessionID: string, startTimeStampMS: number): void;
|
||||
protected addCustomLooseLootPositions(): void;
|
||||
protected adjustLooseLootSpawnProbabilities(): void;
|
||||
protected setHideoutAreasAndCraftsTo30Secs(): void;
|
||||
protected setHideoutAreasAndCraftsTo40Secs(): void;
|
||||
/**
|
||||
* 3.7.0 moved AIDs to be numeric, old profiles need to be migrated
|
||||
* We store the old AID value in new field `sessionId`
|
||||
|
@ -29,34 +29,35 @@ export declare class HealthController {
|
||||
* stores in-raid player health
|
||||
* @param pmcData Player profile
|
||||
* @param info Request data
|
||||
* @param sessionID
|
||||
* @param sessionID Player id
|
||||
* @param addEffects Should effects found be added or removed from profile
|
||||
* @param deleteExistingEffects Should all prior effects be removed before apply new ones
|
||||
*/
|
||||
saveVitality(pmcData: IPmcData, info: ISyncHealthRequestData, sessionID: string, addEffects?: boolean, deleteExistingEffects?: boolean): void;
|
||||
/**
|
||||
* When healing in menu
|
||||
* @param pmcData
|
||||
* @param body
|
||||
* @param sessionID
|
||||
* @returns
|
||||
* @param pmcData Player profile
|
||||
* @param request Healing request
|
||||
* @param sessionID Player id
|
||||
* @returns IItemEventRouterResponse
|
||||
*/
|
||||
offraidHeal(pmcData: IPmcData, body: IOffraidHealRequestData, sessionID: string): IItemEventRouterResponse;
|
||||
offraidHeal(pmcData: IPmcData, request: IOffraidHealRequestData, sessionID: string): IItemEventRouterResponse;
|
||||
/**
|
||||
* Handle Eat event
|
||||
* Consume food/water outside of a raid
|
||||
* @param pmcData Player profile
|
||||
* @param body request Object
|
||||
* @param request Eat request
|
||||
* @param sessionID Session id
|
||||
* @returns IItemEventRouterResponse
|
||||
*/
|
||||
offraidEat(pmcData: IPmcData, body: IOffraidEatRequestData, sessionID: string): IItemEventRouterResponse;
|
||||
offraidEat(pmcData: IPmcData, request: IOffraidEatRequestData, sessionID: string): IItemEventRouterResponse;
|
||||
/**
|
||||
* Handle RestoreHealth event
|
||||
* Occurs on post-raid healing page
|
||||
* @param pmcData player profile
|
||||
* @param healthTreatmentRequest Request data from client
|
||||
* @param sessionID Session id
|
||||
* @returns
|
||||
* @returns IItemEventRouterResponse
|
||||
*/
|
||||
healthTreatment(pmcData: IPmcData, healthTreatmentRequest: IHealthTreatmentRequestData, sessionID: string): IItemEventRouterResponse;
|
||||
/**
|
||||
@ -66,12 +67,4 @@ export declare class HealthController {
|
||||
* @param sessionID
|
||||
*/
|
||||
applyWorkoutChanges(pmcData: IPmcData, info: IWorkoutData, sessionId: string): void;
|
||||
/**
|
||||
* Iterate over treatment request diff and find effects to remove from player limbs
|
||||
* @param sessionId
|
||||
* @param profile Profile to update
|
||||
* @param treatmentRequest client request
|
||||
* @param output response to send to client
|
||||
*/
|
||||
protected removeEffectsAfterPostRaidHeal(sessionId: string, profile: IPmcData, treatmentRequest: IHealthTreatmentRequestData, output: IItemEventRouterResponse): void;
|
||||
}
|
||||
|
@ -88,11 +88,11 @@ export declare class HideoutController {
|
||||
* @param pmcData Profile to edit
|
||||
* @param output Object to send back to client
|
||||
* @param sessionID Session/player id
|
||||
* @param profileHideoutArea Current hideout data for profile
|
||||
* @param profileParentHideoutArea Current hideout area for profile
|
||||
* @param dbHideoutArea Hideout area being upgraded
|
||||
* @param hideoutStage Stage hideout area is being upgraded to
|
||||
*/
|
||||
protected addContainerImprovementToProfile(output: IItemEventRouterResponse, sessionID: string, pmcData: IPmcData, profileHideoutArea: HideoutArea, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void;
|
||||
protected addContainerImprovementToProfile(output: IItemEventRouterResponse, sessionID: string, pmcData: IPmcData, profileParentHideoutArea: HideoutArea, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void;
|
||||
/**
|
||||
* Add an inventory item to profile from a hideout area stage data
|
||||
* @param pmcData Profile to update
|
||||
|
@ -4,6 +4,7 @@ import { WeightedRandomHelper } from "../helpers/WeightedRandomHelper";
|
||||
import { ILocationBase } from "../models/eft/common/ILocationBase";
|
||||
import { ILocationsGenerateAllResponse } from "../models/eft/common/ILocationsSourceDestinationBase";
|
||||
import { IAirdropLootResult } from "../models/eft/location/IAirdropLootResult";
|
||||
import { IGetLocationRequestData } from "../models/eft/location/IGetLocationRequestData";
|
||||
import { AirdropTypeEnum } from "../models/enums/AirdropType";
|
||||
import { IAirdropConfig } from "../models/spt/config/IAirdropConfig";
|
||||
import { ILocationConfig } from "../models/spt/config/ILocationConfig";
|
||||
@ -34,10 +35,11 @@ export declare class LocationController {
|
||||
/**
|
||||
* Handle client/location/getLocalloot
|
||||
* Get a location (map) with generated loot data
|
||||
* @param location Map to generate loot for
|
||||
* @param sessionId Player id
|
||||
* @param request Map request to generate
|
||||
* @returns ILocationBase
|
||||
*/
|
||||
get(location: string): ILocationBase;
|
||||
get(sessionId: string, request: IGetLocationRequestData): ILocationBase;
|
||||
/**
|
||||
* Generate a maps base location with loot
|
||||
* @param name Map name
|
||||
|
@ -61,7 +61,7 @@ export declare class QuestController {
|
||||
* @param playerLevel level of player to test against quest
|
||||
* @returns true if quest can be seen/accepted by player of defined level
|
||||
*/
|
||||
protected playerLevelFulfillsQuestRequrement(quest: IQuest, playerLevel: number): boolean;
|
||||
protected playerLevelFulfillsQuestRequirement(quest: IQuest, playerLevel: number): boolean;
|
||||
/**
|
||||
* Should a quest be shown to the player in trader quest screen
|
||||
* @param questId Quest to check
|
||||
|
@ -21,6 +21,7 @@ import { IGetMarketPriceRequestData } from "../models/eft/ragfair/IGetMarketPric
|
||||
import { IGetOffersResult } from "../models/eft/ragfair/IGetOffersResult";
|
||||
import { IRagfairOffer } from "../models/eft/ragfair/IRagfairOffer";
|
||||
import { ISearchRequestData } from "../models/eft/ragfair/ISearchRequestData";
|
||||
import { IProcessBuyTradeRequestData } from "../models/eft/trade/IProcessBuyTradeRequestData";
|
||||
import { IRagfairConfig } from "../models/spt/config/IRagfairConfig";
|
||||
import { ILogger } from "../models/spt/utils/ILogger";
|
||||
import { EventOutputHolder } from "../routers/EventOutputHolder";
|
||||
@ -125,6 +126,18 @@ export declare class RagfairController {
|
||||
* @returns IItemEventRouterResponse
|
||||
*/
|
||||
addPlayerOffer(pmcData: IPmcData, offerRequest: IAddOfferRequestData, sessionID: string): IItemEventRouterResponse;
|
||||
/**
|
||||
* Charge player a listing fee for using flea, pulls charge from data previously sent by client
|
||||
* @param sessionID Player id
|
||||
* @param rootItem Base item being listed (used when client tax cost not found and must be done on server)
|
||||
* @param pmcData Player profile
|
||||
* @param requirementsPriceInRub Rouble cost player chose for listing (used when client tax cost not found and must be done on server)
|
||||
* @param itemStackCount How many items were listed in player (used when client tax cost not found and must be done on server)
|
||||
* @param offerRequest Add offer request object from client
|
||||
* @param output IItemEventRouterResponse
|
||||
* @returns True if charging tax to player failed
|
||||
*/
|
||||
protected chargePlayerTaxFee(sessionID: string, rootItem: Item, pmcData: IPmcData, requirementsPriceInRub: number, itemStackCount: number, offerRequest: IAddOfferRequestData, output: IItemEventRouterResponse): boolean;
|
||||
/**
|
||||
* Is the item to be listed on the flea valid
|
||||
* @param offerRequest Client offer request
|
||||
@ -158,4 +171,11 @@ export declare class RagfairController {
|
||||
*/
|
||||
removeOffer(offerId: string, sessionID: string): IItemEventRouterResponse;
|
||||
extendOffer(info: IExtendOfferRequestData, sessionID: string): IItemEventRouterResponse;
|
||||
/**
|
||||
* Create a basic trader request object with price and currency type
|
||||
* @param currency What currency: RUB, EURO, USD
|
||||
* @param value Amount of currency
|
||||
* @returns IProcessBuyTradeRequestData
|
||||
*/
|
||||
protected createBuyTradeRequestObject(currency: string, value: number): IProcessBuyTradeRequestData;
|
||||
}
|
||||
|
@ -14,7 +14,6 @@ import { DatabaseServer } from "../servers/DatabaseServer";
|
||||
import { BotEquipmentFilterService } from "../services/BotEquipmentFilterService";
|
||||
import { BotEquipmentModPoolService } from "../services/BotEquipmentModPoolService";
|
||||
import { BotModLimits, BotWeaponModLimitService } from "../services/BotWeaponModLimitService";
|
||||
import { ItemBaseClassService } from "../services/ItemBaseClassService";
|
||||
import { ItemFilterService } from "../services/ItemFilterService";
|
||||
import { LocalisationService } from "../services/LocalisationService";
|
||||
import { HashUtil } from "../utils/HashUtil";
|
||||
@ -29,7 +28,6 @@ export declare class BotEquipmentModGenerator {
|
||||
protected databaseServer: DatabaseServer;
|
||||
protected itemHelper: ItemHelper;
|
||||
protected botEquipmentFilterService: BotEquipmentFilterService;
|
||||
protected itemBaseClassService: ItemBaseClassService;
|
||||
protected itemFilterService: ItemFilterService;
|
||||
protected profileHelper: ProfileHelper;
|
||||
protected botWeaponModLimitService: BotWeaponModLimitService;
|
||||
@ -40,7 +38,7 @@ export declare class BotEquipmentModGenerator {
|
||||
protected botEquipmentModPoolService: BotEquipmentModPoolService;
|
||||
protected configServer: ConfigServer;
|
||||
protected botConfig: IBotConfig;
|
||||
constructor(logger: ILogger, jsonUtil: JsonUtil, hashUtil: HashUtil, randomUtil: RandomUtil, probabilityHelper: ProbabilityHelper, databaseServer: DatabaseServer, itemHelper: ItemHelper, botEquipmentFilterService: BotEquipmentFilterService, itemBaseClassService: ItemBaseClassService, 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, itemFilterService: ItemFilterService, profileHelper: ProfileHelper, botWeaponModLimitService: BotWeaponModLimitService, botHelper: BotHelper, botGeneratorHelper: BotGeneratorHelper, botWeaponGeneratorHelper: BotWeaponGeneratorHelper, localisationService: LocalisationService, botEquipmentModPoolService: BotEquipmentModPoolService, configServer: ConfigServer);
|
||||
/**
|
||||
* Check mods are compatible and add to array
|
||||
* @param equipment Equipment item to add mods to
|
||||
|
@ -65,10 +65,11 @@ export declare class LocationGenerator {
|
||||
protected getGuaranteedContainers(staticContainersOnMap: IStaticContainerData[]): IStaticContainerData[];
|
||||
/**
|
||||
* Choose a number of containers based on their probabilty value to fulfil the desired count in containerData.chosenCount
|
||||
* @param groupId Name of the group the containers are being collected for
|
||||
* @param containerData Containers and probability values for a groupId
|
||||
* @returns List of chosen container Ids
|
||||
*/
|
||||
protected getContainersByProbabilty(containerData: IContainerGroupCount): string[];
|
||||
protected getContainersByProbabilty(groupId: string, containerData: IContainerGroupCount): string[];
|
||||
/**
|
||||
* Get a mapping of each groupid and the containers in that group + count of containers to spawn on map
|
||||
* @param containersGroups Container group values
|
||||
|
@ -31,12 +31,12 @@ export declare class PMCLootGenerator {
|
||||
*/
|
||||
generatePMCVestLootPool(): string[];
|
||||
/**
|
||||
* Check if item has a width/height that lets it fit into a 1x2/2x1 slot
|
||||
* 1x1 / 1x2 / 2x1
|
||||
* Check if item has a width/height that lets it fit into a 2x2 slot
|
||||
* 1x1 / 1x2 / 2x1 / 2x2
|
||||
* @param item Item to check size of
|
||||
* @returns true if it fits
|
||||
*/
|
||||
protected itemFitsInto1By2Slot(item: ITemplateItem): boolean;
|
||||
protected itemFitsInto2By2Slot(item: ITemplateItem): boolean;
|
||||
/**
|
||||
* Create an array of loot items a PMC can have in their backpack
|
||||
* @returns string array of tpls
|
||||
|
@ -55,11 +55,10 @@ export declare class RagfairOfferGenerator {
|
||||
* @param items Items in the offer
|
||||
* @param barterScheme Cost of item (currency or barter)
|
||||
* @param loyalLevel Loyalty level needed to buy item
|
||||
* @param price Price of offer
|
||||
* @param sellInOnePiece Set StackObjectsCount to 1
|
||||
* @param sellInOnePiece Flags sellInOnePiece to be true
|
||||
* @returns IRagfairOffer
|
||||
*/
|
||||
createFleaOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, price: number, sellInOnePiece?: boolean): IRagfairOffer;
|
||||
createFleaOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, sellInOnePiece?: boolean): IRagfairOffer;
|
||||
/**
|
||||
* Create an offer object ready to send to ragfairOfferService.addOffer()
|
||||
* @param userID Owner of the offer
|
||||
@ -67,17 +66,16 @@ export declare class RagfairOfferGenerator {
|
||||
* @param items Items in the offer
|
||||
* @param barterScheme Cost of item (currency or barter)
|
||||
* @param loyalLevel Loyalty level needed to buy item
|
||||
* @param price Price of offer
|
||||
* @param sellInOnePiece Set StackObjectsCount to 1
|
||||
* @returns IRagfairOffer
|
||||
*/
|
||||
protected createOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, price: number, sellInOnePiece?: boolean): IRagfairOffer;
|
||||
protected createOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, sellInOnePiece?: boolean): IRagfairOffer;
|
||||
/**
|
||||
* Calculate the offer price that's listed on the flea listing
|
||||
* @param offerRequirements barter requirements for offer
|
||||
* @returns rouble cost of offer
|
||||
*/
|
||||
protected calculateOfferListingPrice(offerRequirements: OfferRequirement[]): number;
|
||||
protected convertOfferRequirementsIntoRoubles(offerRequirements: OfferRequirement[]): number;
|
||||
/**
|
||||
* Get avatar url from trader table in db
|
||||
* @param isTrader Is user we're getting avatar for a trader
|
||||
@ -137,7 +135,7 @@ export declare class RagfairOfferGenerator {
|
||||
* @param itemDetails raw db item details
|
||||
* @returns Item array
|
||||
*/
|
||||
protected createSingleOfferForItem(items: Item[], isPreset: boolean, itemDetails: [boolean, ITemplateItem]): Promise<Item[]>;
|
||||
protected createSingleOfferForItem(items: Item[], isPreset: boolean, itemDetails: [boolean, ITemplateItem]): Promise<void>;
|
||||
/**
|
||||
* Generate trader offers on flea using the traders assort data
|
||||
* @param traderID Trader to generate offers for
|
||||
@ -151,7 +149,7 @@ export declare class RagfairOfferGenerator {
|
||||
* @param itemDetails db details of first item
|
||||
* @returns
|
||||
*/
|
||||
protected getItemCondition(userID: string, itemWithMods: Item[], itemDetails: ITemplateItem): Item[];
|
||||
protected randomiseItemUpdProperties(userID: string, itemWithMods: Item[], itemDetails: ITemplateItem): Item[];
|
||||
/**
|
||||
* Get the relevant condition id if item tpl matches in ragfair.json/condition
|
||||
* @param tpl Item to look for matching condition object
|
||||
@ -184,7 +182,7 @@ export declare class RagfairOfferGenerator {
|
||||
* @param offerItems Items for sale in offer
|
||||
* @returns Barter scheme
|
||||
*/
|
||||
protected createBarterRequirement(offerItems: Item[]): IBarterScheme[];
|
||||
protected createBarterBarterScheme(offerItems: Item[]): IBarterScheme[];
|
||||
/**
|
||||
* Get an array of flea prices + item tpl, cached in generator class inside `allowedFleaPriceItemsForBarter`
|
||||
* @returns array with tpl/price values
|
||||
@ -196,7 +194,9 @@ export declare class RagfairOfferGenerator {
|
||||
/**
|
||||
* Create a random currency-based barter scheme for an array of items
|
||||
* @param offerItems Items on offer
|
||||
* @param isPackOffer Is the barter scheme being created for a pack offer
|
||||
* @param multipler What to multiply the resulting price by
|
||||
* @returns Barter scheme for offer
|
||||
*/
|
||||
protected createCurrencyRequirement(offerItems: Item[]): IBarterScheme[];
|
||||
protected createCurrencyBarterScheme(offerItems: Item[], isPackOffer: boolean, multipler?: number): IBarterScheme[];
|
||||
}
|
||||
|
@ -25,6 +25,8 @@ export declare class ScavCaseRewardGenerator {
|
||||
protected itemFilterService: ItemFilterService;
|
||||
protected configServer: ConfigServer;
|
||||
protected scavCaseConfig: IScavCaseConfig;
|
||||
protected dbItemsCache: ITemplateItem[];
|
||||
protected dbAmmoItemsCache: ITemplateItem[];
|
||||
constructor(logger: ILogger, randomUtil: RandomUtil, hashUtil: HashUtil, itemHelper: ItemHelper, databaseServer: DatabaseServer, ragfairPriceService: RagfairPriceService, itemFilterService: ItemFilterService, configServer: ConfigServer);
|
||||
/**
|
||||
* Create an array of rewards that will be given to the player upon completing their scav case build
|
||||
@ -33,10 +35,10 @@ export declare class ScavCaseRewardGenerator {
|
||||
*/
|
||||
generate(recipeId: string): Product[];
|
||||
/**
|
||||
* Get all db items that are not blacklisted in scavcase config
|
||||
* @returns filtered array of db items
|
||||
* Get all db items that are not blacklisted in scavcase config or global blacklist
|
||||
* Store in class field
|
||||
*/
|
||||
protected getDbItems(): ITemplateItem[];
|
||||
protected cacheDbItems(): void;
|
||||
/**
|
||||
* Pick a number of items to be rewards, the count is defined by the values in
|
||||
* @param items item pool to pick rewards from
|
||||
|
@ -52,6 +52,7 @@ export declare class WeatherGenerator {
|
||||
*/
|
||||
protected setCurrentDateTime(weather: IWeather): void;
|
||||
protected getWeightedWindDirection(): WindDirection;
|
||||
protected getWeightedClouds(): number;
|
||||
protected getWeightedWindSpeed(): number;
|
||||
protected getWeightedFog(): number;
|
||||
protected getWeightedRain(): number;
|
||||
|
@ -27,6 +27,7 @@ export declare class HealthHelper {
|
||||
* @param request Heal request
|
||||
* @param sessionID Session id
|
||||
* @param addEffects Should effects be added or removed (default - add)
|
||||
* @param deleteExistingEffects Should all prior effects be removed before apply new ones
|
||||
*/
|
||||
saveVitality(pmcData: IPmcData, request: ISyncHealthRequestData, sessionID: string, addEffects?: boolean, deleteExistingEffects?: boolean): void;
|
||||
/**
|
||||
|
@ -53,7 +53,7 @@ export declare class InRaidHelper {
|
||||
* @param victim Who was killed by player
|
||||
* @returns a numerical standing gain or loss
|
||||
*/
|
||||
protected getStandingChangeForKill(victim: Victim): number;
|
||||
protected getFenceStandingChangeForKillAsScav(victim: Victim): number;
|
||||
/**
|
||||
* Reset a profile to a baseline, used post-raid
|
||||
* Reset points earned during session property
|
||||
|
@ -26,6 +26,7 @@ declare class ItemHelper {
|
||||
protected itemBaseClassService: ItemBaseClassService;
|
||||
protected localisationService: LocalisationService;
|
||||
protected localeService: LocaleService;
|
||||
protected readonly defaultInvalidBaseTypes: string[];
|
||||
constructor(logger: ILogger, hashUtil: HashUtil, jsonUtil: JsonUtil, randomUtil: RandomUtil, objectId: ObjectId, mathUtil: MathUtil, databaseServer: DatabaseServer, handbookHelper: HandbookHelper, itemBaseClassService: ItemBaseClassService, localisationService: LocalisationService, localeService: LocaleService);
|
||||
/**
|
||||
* Checks if an id is a valid item. Valid meaning that it's an item that be stored in stash
|
||||
@ -67,6 +68,11 @@ declare class ItemHelper {
|
||||
* @returns Price in roubles (undefined if not found)
|
||||
*/
|
||||
getDynamicItemPrice(tpl: string): number;
|
||||
/**
|
||||
* Update items upd.StackObjectsCount to be 1 if its upd is missing or StackObjectsCount is undefined
|
||||
* @param item Item to update
|
||||
* @returns Fixed item
|
||||
*/
|
||||
fixItemStackCount(item: Item): Item;
|
||||
/**
|
||||
* AmmoBoxes contain StackSlots which need to be filled for the AmmoBox to have content.
|
||||
@ -125,19 +131,19 @@ declare class ItemHelper {
|
||||
getItemQualityModifier(item: Item): number;
|
||||
/**
|
||||
* Get a quality value based on a repairable items (weapon/armor) current state between current and max durability
|
||||
* @param itemDetails
|
||||
* @param repairable repairable object
|
||||
* @param item
|
||||
* @returns a number between 0 and 1
|
||||
* @param itemDetails Db details for item we want quality value for
|
||||
* @param repairable Repairable properties
|
||||
* @param item Item quality value is for
|
||||
* @returns A number between 0 and 1
|
||||
*/
|
||||
protected getRepairableItemQualityValue(itemDetails: ITemplateItem, repairable: Repairable, item: Item): number;
|
||||
/**
|
||||
* Recursive function that looks at every item from parameter and gets their childrens Ids + includes parent item in results
|
||||
* @param items
|
||||
* @param itemID
|
||||
* @param items Array of items (item + possible children)
|
||||
* @param itemId Parent items id
|
||||
* @returns an array of strings
|
||||
*/
|
||||
findAndReturnChildrenByItems(items: Item[], itemID: string): string[];
|
||||
findAndReturnChildrenByItems(items: Item[], itemId: string): string[];
|
||||
/**
|
||||
* A variant of findAndReturnChildren where the output is list of item objects instead of their ids.
|
||||
* @param items
|
||||
@ -164,12 +170,6 @@ declare class ItemHelper {
|
||||
* @returns true if it is a dogtag
|
||||
*/
|
||||
isDogtag(tpl: string): boolean;
|
||||
/**
|
||||
* Can the item passed in be sold to a trader because it is raw money
|
||||
* @param tpl Item template id to check
|
||||
* @returns true if unsellable
|
||||
*/
|
||||
isNotSellable(tpl: string): boolean;
|
||||
/**
|
||||
* Gets the identifier for a child using slotId, locationX and locationY.
|
||||
* @param item
|
||||
@ -183,19 +183,19 @@ declare class ItemHelper {
|
||||
*/
|
||||
isItemTplStackable(tpl: string): boolean;
|
||||
/**
|
||||
* split item stack if it exceeds its StackMaxSize property
|
||||
* @param itemToSplit item being split into smaller stacks
|
||||
* split item stack if it exceeds its items StackMaxSize property
|
||||
* @param itemToSplit Item to split into smaller stacks
|
||||
* @returns Array of split items
|
||||
*/
|
||||
splitStack(itemToSplit: Item): Item[];
|
||||
/**
|
||||
* Find Barter items in the inventory
|
||||
* Find Barter items from array of items
|
||||
* @param {string} by tpl or id
|
||||
* @param {Object} pmcData
|
||||
* @param {Item[]} items Array of items to iterate over
|
||||
* @param {string} barterItemId
|
||||
* @returns Array of Item objects
|
||||
*/
|
||||
findBarterItems(by: "tpl" | "id", pmcData: IPmcData, barterItemId: string): Item[];
|
||||
findBarterItems(by: "tpl" | "id", items: Item[], barterItemId: string): Item[];
|
||||
/**
|
||||
* Regenerate all guids with new ids, exceptions are for items that cannot be altered (e.g. stash/sorting table)
|
||||
* @param pmcData Player profile
|
||||
@ -262,10 +262,21 @@ declare class ItemHelper {
|
||||
* @param minSizePercent % the magazine must be filled to
|
||||
*/
|
||||
fillMagazineWithCartridge(magazine: Item[], magTemplate: ITemplateItem, cartridgeTpl: string, minSizePercent?: number): void;
|
||||
/**
|
||||
* Choose a random bullet type from the list of possible a magazine has
|
||||
* @param magTemplate Magazine template from Db
|
||||
* @returns Tpl of cartridge
|
||||
*/
|
||||
protected getRandomValidCaliber(magTemplate: ITemplateItem): string;
|
||||
/**
|
||||
* Chose a randomly weighted cartridge that fits
|
||||
* @param caliber Desired caliber
|
||||
* @param staticAmmoDist Cartridges and thier weights
|
||||
* @returns Tpl of cartrdige
|
||||
*/
|
||||
protected drawAmmoTpl(caliber: string, staticAmmoDist: Record<string, IStaticAmmoDetails[]>): string;
|
||||
/**
|
||||
*
|
||||
* Create a basic cartrige object
|
||||
* @param parentId container cartridges will be placed in
|
||||
* @param ammoTpl Cartridge to insert
|
||||
* @param stackCount Count of cartridges inside parent
|
||||
|
@ -21,6 +21,7 @@ import { DialogueHelper } from "./DialogueHelper";
|
||||
import { ItemHelper } from "./ItemHelper";
|
||||
import { PaymentHelper } from "./PaymentHelper";
|
||||
import { ProfileHelper } from "./ProfileHelper";
|
||||
import { QuestConditionHelper } from "./QuestConditionHelper";
|
||||
import { RagfairServerHelper } from "./RagfairServerHelper";
|
||||
import { TraderHelper } from "./TraderHelper";
|
||||
export declare class QuestHelper {
|
||||
@ -29,6 +30,7 @@ export declare class QuestHelper {
|
||||
protected timeUtil: TimeUtil;
|
||||
protected hashUtil: HashUtil;
|
||||
protected itemHelper: ItemHelper;
|
||||
protected questConditionHelper: QuestConditionHelper;
|
||||
protected eventOutputHolder: EventOutputHolder;
|
||||
protected databaseServer: DatabaseServer;
|
||||
protected localeService: LocaleService;
|
||||
@ -41,7 +43,7 @@ export declare class QuestHelper {
|
||||
protected mailSendService: MailSendService;
|
||||
protected configServer: ConfigServer;
|
||||
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, mailSendService: MailSendService, configServer: ConfigServer);
|
||||
constructor(logger: ILogger, jsonUtil: JsonUtil, timeUtil: TimeUtil, hashUtil: HashUtil, itemHelper: ItemHelper, questConditionHelper: QuestConditionHelper, eventOutputHolder: EventOutputHolder, databaseServer: DatabaseServer, localeService: LocaleService, ragfairServerHelper: RagfairServerHelper, dialogueHelper: DialogueHelper, profileHelper: ProfileHelper, paymentHelper: PaymentHelper, localisationService: LocalisationService, traderHelper: TraderHelper, mailSendService: MailSendService, configServer: ConfigServer);
|
||||
/**
|
||||
* Get status of a quest in player profile by its id
|
||||
* @param pmcData Profile to search
|
||||
@ -119,7 +121,7 @@ export declare class QuestHelper {
|
||||
* @param sessionID Session id
|
||||
* @returns Quests accessible to player incuding newly unlocked quests now quest (startedQuestId) was started
|
||||
*/
|
||||
acceptedUnlocked(startedQuestId: string, sessionID: string): IQuest[];
|
||||
getNewlyAccessibleQuestsWhenStartingQuest(startedQuestId: string, sessionID: string): IQuest[];
|
||||
/**
|
||||
* Get quests that can be shown to player after failing a quest
|
||||
* @param failedQuestId Id of the quest failed by player
|
||||
|
@ -1,4 +1,5 @@
|
||||
import { IPmcData } from "../models/eft/common/IPmcData";
|
||||
import { Item } from "../models/eft/common/tables/IItem";
|
||||
import { ITraderAssort } from "../models/eft/common/tables/ITrader";
|
||||
import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse";
|
||||
import { IAkiProfile } from "../models/eft/profile/IAkiProfile";
|
||||
@ -13,10 +14,10 @@ import { DatabaseServer } from "../servers/DatabaseServer";
|
||||
import { SaveServer } from "../servers/SaveServer";
|
||||
import { LocaleService } from "../services/LocaleService";
|
||||
import { LocalisationService } from "../services/LocalisationService";
|
||||
import { MailSendService } from "../services/MailSendService";
|
||||
import { RagfairOfferService } from "../services/RagfairOfferService";
|
||||
import { HashUtil } from "../utils/HashUtil";
|
||||
import { TimeUtil } from "../utils/TimeUtil";
|
||||
import { DialogueHelper } from "./DialogueHelper";
|
||||
import { ItemHelper } from "./ItemHelper";
|
||||
import { PaymentHelper } from "./PaymentHelper";
|
||||
import { PresetHelper } from "./PresetHelper";
|
||||
@ -33,7 +34,6 @@ export declare class RagfairOfferHelper {
|
||||
protected databaseServer: DatabaseServer;
|
||||
protected traderHelper: TraderHelper;
|
||||
protected saveServer: SaveServer;
|
||||
protected dialogueHelper: DialogueHelper;
|
||||
protected itemHelper: ItemHelper;
|
||||
protected paymentHelper: PaymentHelper;
|
||||
protected presetHelper: PresetHelper;
|
||||
@ -44,11 +44,12 @@ export declare class RagfairOfferHelper {
|
||||
protected ragfairOfferService: RagfairOfferService;
|
||||
protected localeService: LocaleService;
|
||||
protected localisationService: LocalisationService;
|
||||
protected mailSendService: MailSendService;
|
||||
protected configServer: ConfigServer;
|
||||
protected static goodSoldTemplate: string;
|
||||
protected ragfairConfig: IRagfairConfig;
|
||||
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, localisationService: LocalisationService, configServer: ConfigServer);
|
||||
constructor(logger: ILogger, timeUtil: TimeUtil, hashUtil: HashUtil, eventOutputHolder: EventOutputHolder, databaseServer: DatabaseServer, traderHelper: TraderHelper, saveServer: SaveServer, itemHelper: ItemHelper, paymentHelper: PaymentHelper, presetHelper: PresetHelper, profileHelper: ProfileHelper, ragfairServerHelper: RagfairServerHelper, ragfairSortHelper: RagfairSortHelper, ragfairHelper: RagfairHelper, ragfairOfferService: RagfairOfferService, localeService: LocaleService, localisationService: LocalisationService, mailSendService: MailSendService, configServer: ConfigServer);
|
||||
/**
|
||||
* Passthrough to ragfairOfferService.getOffers(), get flea offers a player should see
|
||||
* @param searchRequest Data from client
|
||||
@ -119,19 +120,26 @@ export declare class RagfairOfferHelper {
|
||||
*/
|
||||
protected getProfileOffers(sessionID: string): IRagfairOffer[];
|
||||
/**
|
||||
* Delete an offer from a desired profile
|
||||
* Delete an offer from a desired profile and from ragfair offers
|
||||
* @param sessionID Session id of profile to delete offer from
|
||||
* @param offerId Offer id to delete
|
||||
* @param offerId Id of offer to delete
|
||||
*/
|
||||
protected deleteOfferByOfferId(sessionID: string, offerId: string): void;
|
||||
protected deleteOfferById(sessionID: string, offerId: string): void;
|
||||
/**
|
||||
* Complete the selling of players' offer
|
||||
* @param sessionID Session id
|
||||
* @param offer Sold offer details
|
||||
* @param boughtAmount Amount item was purchased for
|
||||
* @returns Client response
|
||||
* @returns IItemEventRouterResponse
|
||||
*/
|
||||
protected completeOffer(sessionID: string, offer: IRagfairOffer, boughtAmount: number): IItemEventRouterResponse;
|
||||
/**
|
||||
* Get a localised message for when players offer has sold on flea
|
||||
* @param itemTpl Item sold
|
||||
* @param boughtAmount How many were purchased
|
||||
* @returns Localised message text
|
||||
*/
|
||||
protected getLocalisedOfferSoldMessage(itemTpl: string, boughtAmount: number): string;
|
||||
/**
|
||||
* Should a ragfair offer be visible to the player
|
||||
* @param searchRequest Search request
|
||||
@ -142,4 +150,12 @@ export declare class RagfairOfferHelper {
|
||||
* @returns True = should be shown to player
|
||||
*/
|
||||
isDisplayableOffer(searchRequest: ISearchRequestData, itemsToAdd: string[], traderAssorts: Record<string, ITraderAssort>, offer: IRagfairOffer, pmcProfile: IPmcData): boolean;
|
||||
/**
|
||||
* Is items quality value within desired range
|
||||
* @param item Item to check quality of
|
||||
* @param min Desired minimum quality
|
||||
* @param max Desired maximum quality
|
||||
* @returns True if in range
|
||||
*/
|
||||
protected itemQualityInRange(item: Item, min: number, max: number): boolean;
|
||||
}
|
||||
|
@ -13,12 +13,12 @@ export declare class RagfairSellHelper {
|
||||
constructor(logger: ILogger, randomUtil: RandomUtil, timeUtil: TimeUtil, configServer: ConfigServer);
|
||||
/**
|
||||
* Get the percent chance to sell an item based on its average listed price vs player chosen listing price
|
||||
* @param baseChancePercent Base chance to sell item
|
||||
* @param averageOfferPriceRub Price of average offer in roubles
|
||||
* @param playerListedPriceRub Price player listed item for in roubles
|
||||
* @param qualityMultiplier Quality multipler of item being sold
|
||||
* @returns percent value
|
||||
*/
|
||||
calculateSellChance(baseChancePercent: number, averageOfferPriceRub: number, playerListedPriceRub: number): number;
|
||||
calculateSellChance(averageOfferPriceRub: number, playerListedPriceRub: number, qualityMultiplier: number): number;
|
||||
/**
|
||||
* Get percent chance to sell an item when price is below items average listing price
|
||||
* @param playerListedPriceRub Price player listed item for in roubles
|
||||
|
@ -35,7 +35,7 @@ export declare class TraderHelper {
|
||||
protected highestTraderBuyPriceItems: Record<string, number>;
|
||||
constructor(logger: ILogger, databaseServer: DatabaseServer, saveServer: SaveServer, profileHelper: ProfileHelper, handbookHelper: HandbookHelper, itemHelper: ItemHelper, playerService: PlayerService, localisationService: LocalisationService, fenceService: FenceService, timeUtil: TimeUtil, randomUtil: RandomUtil, configServer: ConfigServer);
|
||||
getTrader(traderID: string, sessionID: string): ITraderBase;
|
||||
getTraderAssortsById(traderId: string): ITraderAssort;
|
||||
getTraderAssortsByTraderId(traderId: string): ITraderAssort;
|
||||
/**
|
||||
* Reset a profiles trader data back to its initial state as seen by a level 1 player
|
||||
* Does NOT take into account different profile levels
|
||||
|
@ -281,7 +281,7 @@ export interface InsuredItem {
|
||||
export interface Hideout {
|
||||
Production: Record<string, Productive>;
|
||||
Areas: HideoutArea[];
|
||||
Improvements: Record<string, IHideoutImprovement>;
|
||||
Improvement: Record<string, IHideoutImprovement>;
|
||||
Seed: number;
|
||||
sptUpdateLastRunTimestamp: number;
|
||||
}
|
||||
|
@ -1,12 +1,14 @@
|
||||
export interface IHealthTreatmentRequestData {
|
||||
Action: "RestoreHealth";
|
||||
trader: string;
|
||||
items: Item[];
|
||||
items: Cost[];
|
||||
difference: Difference;
|
||||
timestamp: number;
|
||||
}
|
||||
export interface Item {
|
||||
export interface Cost {
|
||||
/** Id of stack to take money from */
|
||||
id: string;
|
||||
/** Amount of money to take off player for treatment */
|
||||
count: number;
|
||||
}
|
||||
export interface Difference {
|
||||
@ -25,5 +27,6 @@ export interface BodyParts {
|
||||
}
|
||||
export interface BodyPart {
|
||||
Health: number;
|
||||
/** Effects in array are to be removed */
|
||||
Effects: string[];
|
||||
}
|
||||
|
@ -14,6 +14,11 @@ export interface INotification {
|
||||
}
|
||||
export declare enum NotificationType {
|
||||
RAGFAIR_OFFER_SOLD = "RagfairOfferSold",
|
||||
RAGFAIR_RATING_CHANGE = "RagfairRatingChange",
|
||||
/** ChatMessageReceived */
|
||||
NEW_MESSAGE = "new_message",
|
||||
PING = "ping"
|
||||
PING = "ping",
|
||||
TRADER_SUPPLY = "TraderSupply",
|
||||
TRADER_STANDING = "TraderStanding",
|
||||
UNLOCK_TRADER = "UnlockTrader"
|
||||
}
|
||||
|
@ -1,6 +1,3 @@
|
||||
import { INotifierChannel } from "./INotifier";
|
||||
export interface ISelectProfileResponse {
|
||||
status: string;
|
||||
notifier: INotifierChannel;
|
||||
notifierServer: string;
|
||||
}
|
||||
|
@ -1,19 +1,19 @@
|
||||
export declare enum WeatherType {
|
||||
CLEAR_DAY = 1,
|
||||
CLEAR_WIND = 2,
|
||||
CLEAR_NIGHT = 3,
|
||||
PARTLY_CLOUD_DAY = 4,
|
||||
PARTLY_CLOUD_NIGHT = 5,
|
||||
CLEAR_FOG_DAY = 6,
|
||||
CLEAR_FOG_NIGHT = 7,
|
||||
CLOUDFOG = 8,
|
||||
FOG = 9,
|
||||
MOSTLY_CLOUD = 10,
|
||||
LIGHT_RAIN = 11,
|
||||
RAIN = 12,
|
||||
CLOUD_WIND = 13,
|
||||
CLOUD_WIND_RAIN = 14,
|
||||
FULL_CLOUD = 15,
|
||||
THUNDER_CLOUD = 16,
|
||||
NONE = 0
|
||||
CLEAR_DAY = 0,
|
||||
CLEAR_WIND = 1,
|
||||
CLEAR_NIGHT = 2,
|
||||
PARTLY_CLOUD_DAY = 3,
|
||||
PARTLY_CLOUD_NIGHT = 4,
|
||||
CLEAR_FOG_DAY = 5,
|
||||
CLEAR_FOG_NIGHT = 6,
|
||||
CLOUD_FOG = 7,
|
||||
FOG = 8,
|
||||
MOSTLY_CLOUD = 9,
|
||||
LIGHT_RAIN = 10,
|
||||
RAIN = 11,
|
||||
CLOUD_WIND = 12,
|
||||
CLOUD_WIND_RAIN = 13,
|
||||
FULL_CLOUD = 14,
|
||||
THUNDER_CLOUD = 15,
|
||||
NONE = 16
|
||||
}
|
||||
|
@ -41,7 +41,8 @@ export interface Dynamic {
|
||||
/** Use the highest trader price for an offer if its greater than the price in templates/prices.json */
|
||||
useTraderPriceForOffersIfHigher: boolean;
|
||||
/** Barter offer specific settings */
|
||||
barter: Barter;
|
||||
barter: IBarterDetails;
|
||||
pack: IPackDetails;
|
||||
/** Dynamic offer price below handbook adjustment values */
|
||||
offerAdjustment: OfferAdjustment;
|
||||
/** How many offers should expire before an offer regeneration occurs */
|
||||
@ -49,9 +50,7 @@ export interface Dynamic {
|
||||
/** How many offers should be listed */
|
||||
offerItemCount: MinMax;
|
||||
/** How much should the price of an offer vary by (percent 0.8 = 80%, 1.2 = 120%) */
|
||||
price: MinMax;
|
||||
/** How much should the price of an offer vary by (percent 0.8 = 80%, 1.2 = 120%) */
|
||||
presetPrice: MinMax;
|
||||
priceRanges: IPriceRanges;
|
||||
/** Should default presets to listed only or should non-standard presets found in globals.json be listed too */
|
||||
showDefaultPresetsOnly: boolean;
|
||||
endTimeSeconds: MinMax;
|
||||
@ -74,7 +73,12 @@ export interface Dynamic {
|
||||
/** Dict of price limits keyed by item type */
|
||||
unreasonableModPrices: Record<string, IUnreasonableModPrices>;
|
||||
}
|
||||
export interface Barter {
|
||||
export interface IPriceRanges {
|
||||
default: MinMax;
|
||||
preset: MinMax;
|
||||
pack: MinMax;
|
||||
}
|
||||
export interface IBarterDetails {
|
||||
/** Should barter offers be generated */
|
||||
enable: boolean;
|
||||
/** Percentage change an offer is listed as a barter */
|
||||
@ -90,6 +94,18 @@ export interface Barter {
|
||||
/** Item Tpls to never be turned into a barter */
|
||||
itemTypeBlacklist: string[];
|
||||
}
|
||||
export interface IPackDetails {
|
||||
/** Should pack offers be generated */
|
||||
enable: boolean;
|
||||
/** Percentage change an offer is listed as a pack */
|
||||
chancePercent: number;
|
||||
/** Min number of required items for a pack */
|
||||
itemCountMin: number;
|
||||
/** Max number of required items for a pack */
|
||||
itemCountMax: number;
|
||||
/** item types to allow being a pack */
|
||||
itemTypeWhitelist: string[];
|
||||
}
|
||||
export interface OfferAdjustment {
|
||||
/** Shuld offer price be adjusted when below handbook price */
|
||||
adjustPriceWhenBelowHandbookPrice: boolean;
|
||||
|
@ -7,7 +7,7 @@ export interface IWeatherConfig extends IBaseConfig {
|
||||
weather: Weather;
|
||||
}
|
||||
export interface Weather {
|
||||
clouds: MinMax;
|
||||
clouds: WeatherSettings<string>;
|
||||
windSpeed: WeatherSettings<number>;
|
||||
windDirection: WeatherSettings<WindDirection>;
|
||||
windGustiness: MinMax;
|
||||
|
@ -11,7 +11,18 @@ export declare class HashCacheService {
|
||||
protected modHashes: any;
|
||||
protected readonly modCachePath = "./user/cache/modCache.json";
|
||||
constructor(vfs: VFS, hashUtil: HashUtil, jsonUtil: JsonUtil, logger: ILogger);
|
||||
/**
|
||||
* Return a stored hash by key
|
||||
* @param modName Name of mod to get hash for
|
||||
* @returns Mod hash
|
||||
*/
|
||||
getStoredModHash(modName: string): string;
|
||||
/**
|
||||
* Does the generated hash match the stored hash
|
||||
* @param modName name of mod
|
||||
* @param modContent
|
||||
* @returns True if they match
|
||||
*/
|
||||
modContentMatchesStoredHash(modName: string, modContent: string): boolean;
|
||||
hashMatchesStoredHash(modName: string, modHash: string): boolean;
|
||||
storeModContent(modName: string, modContent: string): void;
|
||||
|
@ -35,7 +35,7 @@ export declare class MailSendService {
|
||||
* @param items Optional items to send to player
|
||||
* @param maxStorageTimeSeconds Optional time to collect items before they expire
|
||||
*/
|
||||
sendDirectNpcMessageToPlayer(playerId: string, sender: Traders, messageType: MessageType, message: string, items?: Item[], maxStorageTimeSeconds?: any): void;
|
||||
sendDirectNpcMessageToPlayer(playerId: string, sender: Traders, messageType: MessageType, message: string, items?: Item[], maxStorageTimeSeconds?: any, systemData?: any, ragfair?: any): void;
|
||||
/**
|
||||
* Send a message from an NPC (e.g. prapor) to the player with or without items
|
||||
* @param playerId Players id to send message to
|
||||
@ -45,7 +45,7 @@ export declare class MailSendService {
|
||||
* @param items Optional items to send to player
|
||||
* @param maxStorageTimeSeconds Optional time to collect items before they expire
|
||||
*/
|
||||
sendLocalisedNpcMessageToPlayer(playerId: string, sender: Traders, messageType: MessageType, messageLocaleId: string, items?: Item[], maxStorageTimeSeconds?: any, systemData?: any): void;
|
||||
sendLocalisedNpcMessageToPlayer(playerId: string, sender: Traders, messageType: MessageType, messageLocaleId: string, items?: Item[], maxStorageTimeSeconds?: any, systemData?: any, ragfair?: any): void;
|
||||
/**
|
||||
* Send a message from SYSTEM to the player with or without items
|
||||
* @param playerId Players id to send message to
|
||||
|
@ -1,7 +1,7 @@
|
||||
import { IBotBase } from "../models/eft/common/tables/IBotBase";
|
||||
import { ILogger } from "../models/spt/utils/ILogger";
|
||||
import { LocalisationService } from "./LocalisationService";
|
||||
/** Cache bots in a dictionary, keyed by the bots name, keying by name isnt idea as its not unique but this is used by the post-raid system which doesnt have any bot ids, only name */
|
||||
/** Cache bots in a dictionary, keyed by the bots name, keying by name isnt ideal as its not unique but this is used by the post-raid system which doesnt have any bot ids, only name */
|
||||
export declare class MatchBotDetailsCacheService {
|
||||
protected logger: ILogger;
|
||||
protected localisationService: LocalisationService;
|
||||
@ -17,9 +17,9 @@ export declare class MatchBotDetailsCacheService {
|
||||
*/
|
||||
clearCache(): void;
|
||||
/**
|
||||
* Find a bot in the cache by its name
|
||||
* Find a bot in the cache by its name and side
|
||||
* @param botName Name of bot to find
|
||||
* @returns Bot details
|
||||
*/
|
||||
getBotByName(botName: string): IBotBase;
|
||||
getBotByNameAndSide(botName: string, botSide: string): IBotBase;
|
||||
}
|
||||
|
@ -1,14 +1,36 @@
|
||||
import { CompilerOptions } from "typescript";
|
||||
import type { ILogger } from "../models/spt/utils/ILogger";
|
||||
import { HashCacheService } from "./HashCacheService";
|
||||
import { VFS } from "../utils/VFS";
|
||||
import { HashCacheService } from "./HashCacheService";
|
||||
export declare class ModCompilerService {
|
||||
protected logger: ILogger;
|
||||
protected hashCacheService: HashCacheService;
|
||||
protected vfs: VFS;
|
||||
constructor(logger: ILogger, hashCacheService: HashCacheService, vfs: VFS);
|
||||
/**
|
||||
* Convert a mods TS into JS
|
||||
* @param modName Name of mod
|
||||
* @param modPath Dir path to mod
|
||||
* @param modTypeScriptFiles
|
||||
* @returns
|
||||
*/
|
||||
compileMod(modName: string, modPath: string, modTypeScriptFiles: string[]): Promise<void>;
|
||||
/**
|
||||
* Convert a TS file into JS
|
||||
* @param fileNames Paths to TS files
|
||||
* @param options Compiler options
|
||||
*/
|
||||
protected compile(fileNames: string[], options: CompilerOptions): Promise<void>;
|
||||
/**
|
||||
* Do the files at the provided paths exist
|
||||
* @param fileNames
|
||||
* @returns
|
||||
*/
|
||||
protected areFilesReady(fileNames: string[]): boolean;
|
||||
/**
|
||||
* Wait the provided number of milliseconds
|
||||
* @param ms Milliseconds
|
||||
* @returns
|
||||
*/
|
||||
protected delay(ms: number): Promise<unknown>;
|
||||
}
|
||||
|
@ -61,23 +61,26 @@ export declare class PaymentService {
|
||||
* Get all money stacks in inventory and prioritse items in stash
|
||||
* @param pmcData
|
||||
* @param currencyTpl
|
||||
* @param playerStashId Players stash id
|
||||
* @returns Sorting money items
|
||||
*/
|
||||
protected getSortedMoneyItemsInInventory(pmcData: IPmcData, currencyTpl: string): Item[];
|
||||
protected getSortedMoneyItemsInInventory(pmcData: IPmcData, currencyTpl: string, playerStashId: string): Item[];
|
||||
/**
|
||||
* Prioritise player stash first over player inventory
|
||||
* Post-raid healing would often take money out of the players pockets/secure container
|
||||
* @param a First money stack item
|
||||
* @param b Second money stack item
|
||||
* @param inventoryItems players inventory items
|
||||
* @param playerStashId Players stash id
|
||||
* @returns sort order
|
||||
*/
|
||||
protected prioritiseStashSort(a: Item, b: Item, inventoryItems: Item[]): number;
|
||||
protected prioritiseStashSort(a: Item, b: Item, inventoryItems: Item[], playerStashId: string): number;
|
||||
/**
|
||||
* Recursivly check items parents to see if it is inside the players inventory, not stash
|
||||
* @param itemId item id to check
|
||||
* @param inventoryItems player inventory
|
||||
* @param playerStashId Players stash id
|
||||
* @returns true if its in inventory
|
||||
*/
|
||||
protected isInInventory(itemId: string, inventoryItems: Item[]): boolean;
|
||||
protected isInStash(itemId: string, inventoryItems: Item[], playerStashId: string): boolean;
|
||||
}
|
||||
|
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