Compare commits
5 Commits
Author | SHA1 | Date | |
---|---|---|---|
509cdff8b6 | |||
30744551f0 | |||
23ab7efadf | |||
c3866d0360 | |||
a1f8fe37a1 |
@ -21,7 +21,7 @@
|
|||||||
|
|
||||||
"pmc":
|
"pmc":
|
||||||
{
|
{
|
||||||
"chanceSameSideIsHostile": 80,
|
"chanceSameSideIsHostilePercent": 80,
|
||||||
"containersOnPMCs": true,
|
"containersOnPMCs": true,
|
||||||
"isUsec": 50,
|
"isUsec": 50,
|
||||||
"lootNValue": 3,
|
"lootNValue": 3,
|
||||||
|
22
src/bots.ts
22
src/bots.ts
@ -110,8 +110,8 @@ export class Bots
|
|||||||
// Adjusts the chance for PMC to spawn instead of the default bot type if configured outside of the default values.
|
// Adjusts the chance for PMC to spawn instead of the default bot type if configured outside of the default values.
|
||||||
if (this.modConfig.pmc.convertIntoPmcChance.assault.min != this.botConfig.pmc.convertIntoPmcChance.assault.min || this.modConfig.pmc.convertIntoPmcChance.assault.max != this.botConfig.pmc.convertIntoPmcChance.assault.max
|
if (this.modConfig.pmc.convertIntoPmcChance.assault.min != this.botConfig.pmc.convertIntoPmcChance.assault.min || this.modConfig.pmc.convertIntoPmcChance.assault.max != this.botConfig.pmc.convertIntoPmcChance.assault.max
|
||||||
|| this.modConfig.pmc.convertIntoPmcChance.cursedassault.min != this.botConfig.pmc.convertIntoPmcChance.cursedassault.min || this.modConfig.pmc.convertIntoPmcChance.cursedassault.max != this.botConfig.pmc.convertIntoPmcChance.cursedassault.max
|
|| this.modConfig.pmc.convertIntoPmcChance.cursedassault.min != this.botConfig.pmc.convertIntoPmcChance.cursedassault.min || this.modConfig.pmc.convertIntoPmcChance.cursedassault.max != this.botConfig.pmc.convertIntoPmcChance.cursedassault.max
|
||||||
|| this.modConfig.pmc.convertIntoPmcChance.pmcBot.min != this.botConfig.pmc.convertIntoPmcChance.pmcBot.min || this.modConfig.pmc.convertIntoPmcChance.pmcBot.max != this.botConfig.pmc.convertIntoPmcChance.pmcBot.max
|
|| this.modConfig.pmc.convertIntoPmcChance.pmcbot.min != this.botConfig.pmc.convertIntoPmcChance.pmcbot.min || this.modConfig.pmc.convertIntoPmcChance.pmcbot.max != this.botConfig.pmc.convertIntoPmcChance.pmcbot.max
|
||||||
|| this.modConfig.pmc.convertIntoPmcChance.exUsec.min != this.botConfig.pmc.convertIntoPmcChance.exUsec.min || this.modConfig.pmc.convertIntoPmcChance.exUsec.max != this.botConfig.pmc.convertIntoPmcChance.exUsec.max)
|
|| this.modConfig.pmc.convertIntoPmcChance.exusec.min != this.botConfig.pmc.convertIntoPmcChance.exusec.min || this.modConfig.pmc.convertIntoPmcChance.exusec.max != this.botConfig.pmc.convertIntoPmcChance.exusec.max)
|
||||||
{
|
{
|
||||||
this.adjustPmcChance();
|
this.adjustPmcChance();
|
||||||
this.logger.info("Chance to Convert Bots into PMC Patched");
|
this.logger.info("Chance to Convert Bots into PMC Patched");
|
||||||
@ -146,10 +146,10 @@ export class Bots
|
|||||||
// Function to enable secured and common containers on PMCs.
|
// Function to enable secured and common containers on PMCs.
|
||||||
private containersOnPMCs(): void
|
private containersOnPMCs(): void
|
||||||
{
|
{
|
||||||
const dynaLoot = this.botConfig.pmc.dynamicLoot.whitelist;
|
const backpackLoot = this.botConfig.pmc.backpackLoot.whitelist;
|
||||||
|
|
||||||
dynaLoot.push("5448bf274bdc2dfc2f8b456a");
|
backpackLoot.push("5448bf274bdc2dfc2f8b456a");
|
||||||
dynaLoot.push("5795f317245977243854e041");
|
backpackLoot.push("5795f317245977243854e041");
|
||||||
}
|
}
|
||||||
|
|
||||||
private chooseRandomWeightedDifficulty(): string
|
private chooseRandomWeightedDifficulty(): string
|
||||||
@ -167,12 +167,12 @@ export class Bots
|
|||||||
|
|
||||||
pmcConfig.assault.min = modConfig.assault.min;
|
pmcConfig.assault.min = modConfig.assault.min;
|
||||||
pmcConfig.assault.max = modConfig.assault.max;
|
pmcConfig.assault.max = modConfig.assault.max;
|
||||||
pmcConfig.cursedassault.min = modConfig.cursedAssault.min;
|
pmcConfig.cursedassault.min = modConfig.cursedassault.min;
|
||||||
pmcConfig.cursedassault.max = modConfig.cursedAssault.max;
|
pmcConfig.cursedassault.max = modConfig.cursedassault.max;
|
||||||
pmcConfig.pmcbot.min = modConfig.pmcBot.min;
|
pmcConfig.pmcbot.min = modConfig.pmcbot.min;
|
||||||
pmcConfig.pmcbot.max = modConfig.pmcBot.max;
|
pmcConfig.pmcbot.max = modConfig.pmcbot.max;
|
||||||
pmcConfig.exusec.min = modConfig.exUsec.min;
|
pmcConfig.exusec.min = modConfig.exusec.min;
|
||||||
pmcConfig.exusec.max = modConfig.exUsec.max;
|
pmcConfig.exusec.max = modConfig.exusec.max;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
46
src/loot.ts
46
src/loot.ts
@ -55,9 +55,9 @@ export class Loot
|
|||||||
{
|
{
|
||||||
// Customs Marked Room Loot.
|
// Customs Marked Room Loot.
|
||||||
let spawnPoints = this.tables.getTables().locations.bigmap.looseLoot.spawnpoints;
|
let spawnPoints = this.tables.getTables().locations.bigmap.looseLoot.spawnpoints;
|
||||||
const customsMarked1 = spawnPoints.find(x=>x.template.Id==="Loot 135 (10)1137996");
|
const customsMarked1 = spawnPoints.find(x=>x.template.Id.startsWith("Loot 135 (10)"));
|
||||||
const customsMarked2 = spawnPoints.find(x=>x.template.Id==="Loot 135 (9)1132486");
|
const customsMarked2 = spawnPoints.find(x=>x.template.Id.startsWith("Loot 135 (9)"));
|
||||||
const customsMarked3 = spawnPoints.find(x=>x.template.Id==="Loot 135 (8)1141962");
|
const customsMarked3 = spawnPoints.find(x=>x.template.Id.startsWith("Loot 135 (8)"));
|
||||||
|
|
||||||
// Pushing containers into the customs marked room loot pool.
|
// Pushing containers into the customs marked room loot pool.
|
||||||
customsMarked1.itemDistribution.push(...this.containers());
|
customsMarked1.itemDistribution.push(...this.containers());
|
||||||
@ -67,15 +67,15 @@ export class Loot
|
|||||||
// Reserve Marked Room Loot.
|
// Reserve Marked Room Loot.
|
||||||
spawnPoints = this.tables.getTables().locations.rezervbase.looseLoot.spawnpoints;
|
spawnPoints = this.tables.getTables().locations.rezervbase.looseLoot.spawnpoints;
|
||||||
const rsrvRBBK1 = spawnPoints.find(x=>x.template.Id==="Loot 135 (10)51646628");
|
const rsrvRBBK1 = spawnPoints.find(x=>x.template.Id==="Loot 135 (10)51646628");
|
||||||
const rsrvRBBK2 = spawnPoints.find(x=>x.template.Id==="Loot 135 (8)51666758");
|
const rsrvRBBK2 = spawnPoints.find(x=>x.template.Id.startsWith("Loot 135 (8)"));
|
||||||
const rsrvRBBK3 = spawnPoints.find(x=>x.template.Id==="Loot 135 (9)51636512");
|
const rsrvRBBK3 = spawnPoints.find(x=>x.template.Id.startsWith("Loot 135 (9)"));
|
||||||
|
|
||||||
const rsrvRBPKPM1 = spawnPoints.find(x=>x.template.Id==="cult_Loot 135 (11)51654030");
|
const rsrvRBPKPM1 = spawnPoints.find(x=>x.template.Id.startsWith("cult_Loot 135 (11)"));
|
||||||
const rsrvRBPKPM2 = spawnPoints.find(x=>x.template.Id==="cult_Loot 135 (12)51653462");
|
const rsrvRBPKPM2 = spawnPoints.find(x=>x.template.Id.startsWith("cult_Loot 135 (12)"));
|
||||||
|
|
||||||
const rsrvRBVO1 = spawnPoints.find(x=>x.template.Id==="Loot 135 (10)51658080");
|
const rsrvRBVO1 = spawnPoints.find(x=>x.template.Id==="Loot 135 (10)51658080");
|
||||||
const rsrvRBVO2 = spawnPoints.find(x=>x.template.Id==="Loot 135 (11)51652762");
|
const rsrvRBVO2 = spawnPoints.find(x=>x.template.Id.startsWith("Loot 135 (11)"));
|
||||||
const rsrvRBVO3 = spawnPoints.find(x=>x.template.Id==="Loot 135 (12)51652706");
|
const rsrvRBVO3 = spawnPoints.find(x=>x.template.Id.startsWith("Loot 135 (12)"));
|
||||||
|
|
||||||
// Pushing containers into the reserve base marked room loot pool.
|
// Pushing containers into the reserve base marked room loot pool.
|
||||||
rsrvRBBK1.itemDistribution.push(...this.containers());
|
rsrvRBBK1.itemDistribution.push(...this.containers());
|
||||||
@ -91,23 +91,23 @@ export class Loot
|
|||||||
|
|
||||||
// Streets Marked Room Loot.
|
// Streets Marked Room Loot.
|
||||||
spawnPoints = this.tables.getTables().locations.tarkovstreets.looseLoot.spawnpoints;
|
spawnPoints = this.tables.getTables().locations.tarkovstreets.looseLoot.spawnpoints;
|
||||||
const streets = spawnPoints.find(x=>x.template.Id==="Loot 135_Leo_Rare3328366");
|
const streets = spawnPoints.find(x=>x.template.Id==="Loot 135_Leo_Rare5491814");
|
||||||
const streets1 = spawnPoints.find(x=>x.template.Id==="Loot 135_Leo_Rare (1)3332226");
|
const streets1 = spawnPoints.find(x=>x.template.Id.startsWith("Loot 135_Leo_Rare (1)"));
|
||||||
const streets2 = spawnPoints.find(x=>x.template.Id==="Loot 135_Leo_Rare (2)3322128");
|
const streets2 = spawnPoints.find(x=>x.template.Id.startsWith("Loot 135_Leo_Rare (2)"));
|
||||||
const streets3 = spawnPoints.find(x=>x.template.Id==="Loot 135_Leo_Rare (3)3810498");
|
const streets3 = spawnPoints.find(x=>x.template.Id.startsWith("Loot 135_Leo_Rare (3)"));
|
||||||
const streets4 = spawnPoints.find(x=>x.template.Id==="Loot 135_Leo_Rare (4)3951260");
|
const streets4 = spawnPoints.find(x=>x.template.Id.startsWith("Loot 135_Leo_Rare (4)"));
|
||||||
const streets5 = spawnPoints.find(x=>x.template.Id==="Loot 135_Leo_Rare (5)3325368");
|
const streets5 = spawnPoints.find(x=>x.template.Id.startsWith("Loot 135_Leo_Rare (5)"));
|
||||||
const streets6 = spawnPoints.find(x=>x.template.Id==="Loot 135_Leo_Rare (6)3814146");
|
const streets6 = spawnPoints.find(x=>x.template.Id==="Loot 135_Leo_Rare (6)3814146");
|
||||||
const streets6a = spawnPoints.find(x=>x.template.Id==="Loot 135_Leo_Rare (6)3955044");
|
const streets6a = spawnPoints.find(x=>x.template.Id==="Loot 135_Leo_Rare (6)3955044");
|
||||||
const streets7 = spawnPoints.find(x=>x.template.Id==="Loot 135_Leo_Rare (7)3811846");
|
const streets7 = spawnPoints.find(x=>x.template.Id.startsWith("Loot 135_Leo_Rare (7)"));
|
||||||
const streets8 = spawnPoints.find(x=>x.template.Id==="Loot 135_Leo_Rare (8)3803698");
|
const streets8 = spawnPoints.find(x=>x.template.Id.startsWith("Loot 135_Leo_Rare (8)"));
|
||||||
const streets9 = spawnPoints.find(x=>x.template.Id==="Loot 135_Leo_Rare (9)3826302");
|
const streets9 = spawnPoints.find(x=>x.template.Id.startsWith("Loot 135_Leo_Rare (9)"));
|
||||||
const streets10 = spawnPoints.find(x=>x.template.Id==="Loot 135_Leo_Rare (10)5484984");
|
const streets10 = spawnPoints.find(x=>x.template.Id==="Loot 135_Leo_Rare (10)5484984");
|
||||||
const streets11 = spawnPoints.find(x=>x.template.Id==="Loot 135_Leo_Rare (11)3332946");
|
const streets11 = spawnPoints.find(x=>x.template.Id.startsWith("Loot 135_Leo_Rare (11)"));
|
||||||
const streets12 = spawnPoints.find(x=>x.template.Id==="Loot 135_Leo_Rare (12)3804226");
|
const streets12 = spawnPoints.find(x=>x.template.Id.startsWith("Loot 135_Leo_Rare (12)"));
|
||||||
const streets13 = spawnPoints.find(x=>x.template.Id==="Loot 135_Leo_Rare (13)3967988");
|
const streets13 = spawnPoints.find(x=>x.template.Id.startsWith("Loot 135_Leo_Rare (13)"));
|
||||||
const streets14 = spawnPoints.find(x=>x.template.Id==="Loot 135_Leo_Rare (14)3809678");
|
const streets14 = spawnPoints.find(x=>x.template.Id.startsWith("Loot 135_Leo_Rare (14)"));
|
||||||
const streets15 = spawnPoints.find(x=>x.template.Id==="Loot 135_Leo_Rare (15)3947696");
|
const streets15 = spawnPoints.find(x=>x.template.Id.startsWith("Loot 135_Leo_Rare (15)"));
|
||||||
|
|
||||||
// Pushing containers into the streets marked room loot pool.
|
// Pushing containers into the streets marked room loot pool.
|
||||||
streets.itemDistribution.push(...this.containers());
|
streets.itemDistribution.push(...this.containers());
|
||||||
|
7
types/controllers/TraderController.d.ts
vendored
7
types/controllers/TraderController.d.ts
vendored
@ -42,6 +42,13 @@ export declare class TraderController {
|
|||||||
* @returns array if ITraderBase objects
|
* @returns array if ITraderBase objects
|
||||||
*/
|
*/
|
||||||
getAllTraders(sessionID: string): ITraderBase[];
|
getAllTraders(sessionID: string): ITraderBase[];
|
||||||
|
/**
|
||||||
|
* Order traders by their traderId (Ttid)
|
||||||
|
* @param traderA First trader to compare
|
||||||
|
* @param traderB Second trader to compare
|
||||||
|
* @returns 1,-1 or 0
|
||||||
|
*/
|
||||||
|
protected sortByTraderId(traderA: ITraderBase, traderB: ITraderBase): number;
|
||||||
getTrader(sessionID: string, traderID: string): ITraderBase;
|
getTrader(sessionID: string, traderID: string): ITraderBase;
|
||||||
getAssort(sessionId: string, traderId: string): ITraderAssort;
|
getAssort(sessionId: string, traderId: string): ITraderAssort;
|
||||||
getPurchasesData(sessionID: string, traderID: string): Record<string, IBarterScheme[][]>;
|
getPurchasesData(sessionID: string, traderID: string): Record<string, IBarterScheme[][]>;
|
||||||
|
4
types/generators/BotGenerator.d.ts
vendored
4
types/generators/BotGenerator.d.ts
vendored
@ -14,12 +14,14 @@ import { SeasonalEventService } from "../services/SeasonalEventService";
|
|||||||
import { HashUtil } from "../utils/HashUtil";
|
import { HashUtil } from "../utils/HashUtil";
|
||||||
import { JsonUtil } from "../utils/JsonUtil";
|
import { JsonUtil } from "../utils/JsonUtil";
|
||||||
import { RandomUtil } from "../utils/RandomUtil";
|
import { RandomUtil } from "../utils/RandomUtil";
|
||||||
|
import { TimeUtil } from "../utils/TimeUtil";
|
||||||
import { BotInventoryGenerator } from "./BotInventoryGenerator";
|
import { BotInventoryGenerator } from "./BotInventoryGenerator";
|
||||||
import { BotLevelGenerator } from "./BotLevelGenerator";
|
import { BotLevelGenerator } from "./BotLevelGenerator";
|
||||||
export declare class BotGenerator {
|
export declare class BotGenerator {
|
||||||
protected logger: ILogger;
|
protected logger: ILogger;
|
||||||
protected hashUtil: HashUtil;
|
protected hashUtil: HashUtil;
|
||||||
protected randomUtil: RandomUtil;
|
protected randomUtil: RandomUtil;
|
||||||
|
protected timeUtil: TimeUtil;
|
||||||
protected jsonUtil: JsonUtil;
|
protected jsonUtil: JsonUtil;
|
||||||
protected profileHelper: ProfileHelper;
|
protected profileHelper: ProfileHelper;
|
||||||
protected databaseServer: DatabaseServer;
|
protected databaseServer: DatabaseServer;
|
||||||
@ -32,7 +34,7 @@ export declare class BotGenerator {
|
|||||||
protected seasonalEventService: SeasonalEventService;
|
protected seasonalEventService: SeasonalEventService;
|
||||||
protected configServer: ConfigServer;
|
protected configServer: ConfigServer;
|
||||||
protected botConfig: IBotConfig;
|
protected botConfig: IBotConfig;
|
||||||
constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, jsonUtil: JsonUtil, profileHelper: ProfileHelper, databaseServer: DatabaseServer, botInventoryGenerator: BotInventoryGenerator, botLevelGenerator: BotLevelGenerator, botEquipmentFilterService: BotEquipmentFilterService, weightedRandomHelper: WeightedRandomHelper, botHelper: BotHelper, botDifficultyHelper: BotDifficultyHelper, seasonalEventService: SeasonalEventService, configServer: ConfigServer);
|
constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, timeUtil: TimeUtil, jsonUtil: JsonUtil, profileHelper: ProfileHelper, databaseServer: DatabaseServer, botInventoryGenerator: BotInventoryGenerator, botLevelGenerator: BotLevelGenerator, botEquipmentFilterService: BotEquipmentFilterService, weightedRandomHelper: WeightedRandomHelper, botHelper: BotHelper, botDifficultyHelper: BotDifficultyHelper, seasonalEventService: SeasonalEventService, configServer: ConfigServer);
|
||||||
/**
|
/**
|
||||||
* Generate a player scav bot object
|
* Generate a player scav bot object
|
||||||
* @param role e.g. assault / pmcbot
|
* @param role e.g. assault / pmcbot
|
||||||
|
14
types/generators/PMCLootGenerator.d.ts
vendored
14
types/generators/PMCLootGenerator.d.ts
vendored
@ -1,4 +1,5 @@
|
|||||||
import { ItemHelper } from "../helpers/ItemHelper";
|
import { ItemHelper } from "../helpers/ItemHelper";
|
||||||
|
import { ITemplateItem } from "../models/eft/common/tables/ITemplateItem";
|
||||||
import { IBotConfig } from "../models/spt/config/IBotConfig";
|
import { IBotConfig } from "../models/spt/config/IBotConfig";
|
||||||
import { ConfigServer } from "../servers/ConfigServer";
|
import { ConfigServer } from "../servers/ConfigServer";
|
||||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
import { DatabaseServer } from "../servers/DatabaseServer";
|
||||||
@ -15,6 +16,7 @@ export declare class PMCLootGenerator {
|
|||||||
protected itemFilterService: ItemFilterService;
|
protected itemFilterService: ItemFilterService;
|
||||||
protected seasonalEventService: SeasonalEventService;
|
protected seasonalEventService: SeasonalEventService;
|
||||||
protected pocketLootPool: string[];
|
protected pocketLootPool: string[];
|
||||||
|
protected vestLootPool: string[];
|
||||||
protected backpackLootPool: string[];
|
protected backpackLootPool: string[];
|
||||||
protected botConfig: IBotConfig;
|
protected botConfig: IBotConfig;
|
||||||
constructor(itemHelper: ItemHelper, databaseServer: DatabaseServer, configServer: ConfigServer, itemFilterService: ItemFilterService, seasonalEventService: SeasonalEventService);
|
constructor(itemHelper: ItemHelper, databaseServer: DatabaseServer, configServer: ConfigServer, itemFilterService: ItemFilterService, seasonalEventService: SeasonalEventService);
|
||||||
@ -23,6 +25,18 @@ export declare class PMCLootGenerator {
|
|||||||
* @returns string array of tpls
|
* @returns string array of tpls
|
||||||
*/
|
*/
|
||||||
generatePMCPocketLootPool(): string[];
|
generatePMCPocketLootPool(): string[];
|
||||||
|
/**
|
||||||
|
* Create an array of loot items a PMC can have in their vests
|
||||||
|
* @returns string array of tpls
|
||||||
|
*/
|
||||||
|
generatePMCVestLootPool(): string[];
|
||||||
|
/**
|
||||||
|
* Check if item has a width/hide that lets it fit into a 1x2 slot
|
||||||
|
* 1x1 / 1x2 / 2x1
|
||||||
|
* @param item Item to check size of
|
||||||
|
* @returns true if it fits
|
||||||
|
*/
|
||||||
|
protected itemFitsInto1By2Slot(item: ITemplateItem): boolean;
|
||||||
/**
|
/**
|
||||||
* Create an array of loot items a PMC can have in their backpack
|
* Create an array of loot items a PMC can have in their backpack
|
||||||
* @returns string array of tpls
|
* @returns string array of tpls
|
||||||
|
19
types/helpers/AssortHelper.d.ts
vendored
19
types/helpers/AssortHelper.d.ts
vendored
@ -1,5 +1,6 @@
|
|||||||
import { IPmcData } from "../models/eft/common/IPmcData";
|
import { IPmcData } from "../models/eft/common/IPmcData";
|
||||||
import { ITraderAssort } from "../models/eft/common/tables/ITrader";
|
import { ITraderAssort } from "../models/eft/common/tables/ITrader";
|
||||||
|
import { QuestStatus } from "../models/enums/QuestStatus";
|
||||||
import { ILogger } from "../models/spt/utils/ILogger";
|
import { ILogger } from "../models/spt/utils/ILogger";
|
||||||
import { DatabaseServer } from "../servers/DatabaseServer";
|
import { DatabaseServer } from "../servers/DatabaseServer";
|
||||||
import { LocalisationService } from "../services/LocalisationService";
|
import { LocalisationService } from "../services/LocalisationService";
|
||||||
@ -15,12 +16,22 @@ export declare class AssortHelper {
|
|||||||
/**
|
/**
|
||||||
* Remove assorts from a trader that have not been unlocked yet
|
* Remove assorts from a trader that have not been unlocked yet
|
||||||
* @param pmcProfile player profile
|
* @param pmcProfile player profile
|
||||||
* @param traderId traders id
|
* @param traderId traders id the assort belongs to
|
||||||
* @param assort assort items from a trader
|
* @param traderAssorts All assort items from same trader
|
||||||
* @param mergedQuestAssorts An object of quest assort to quest id unlocks for all traders
|
* @param mergedQuestAssorts Dict of quest assort to quest id unlocks for all traders
|
||||||
* @returns assort items minus locked quest assorts
|
* @returns assort items minus locked quest assorts
|
||||||
*/
|
*/
|
||||||
stripLockedQuestAssort(pmcProfile: IPmcData, traderId: string, assort: ITraderAssort, mergedQuestAssorts: Record<string, Record<string, string>>, flea?: boolean): ITraderAssort;
|
stripLockedQuestAssort(pmcProfile: IPmcData, traderId: string, traderAssorts: ITraderAssort, mergedQuestAssorts: Record<string, Record<string, string>>, flea?: boolean): ITraderAssort;
|
||||||
|
/**
|
||||||
|
* Get a quest id + the statuses quest can be in to unlock assort
|
||||||
|
* @param mergedQuestAssorts quest assorts to search for assort id
|
||||||
|
* @param assortId Assort to look for linked quest id
|
||||||
|
* @returns quest id + array of quest status the assort should show for
|
||||||
|
*/
|
||||||
|
protected getQuestIdAndStatusThatShowAssort(mergedQuestAssorts: Record<string, Record<string, string>>, assortId: string): {
|
||||||
|
questId: string;
|
||||||
|
status: QuestStatus[];
|
||||||
|
};
|
||||||
/**
|
/**
|
||||||
* Remove assorts from a trader that have not been unlocked yet
|
* Remove assorts from a trader that have not been unlocked yet
|
||||||
* @param pmcProfile player profile
|
* @param pmcProfile player profile
|
||||||
|
2
types/helpers/QuestHelper.d.ts
vendored
2
types/helpers/QuestHelper.d.ts
vendored
@ -40,7 +40,7 @@ export declare class QuestHelper {
|
|||||||
protected questConfig: IQuestConfig;
|
protected questConfig: IQuestConfig;
|
||||||
constructor(logger: ILogger, jsonUtil: JsonUtil, timeUtil: TimeUtil, hashUtil: HashUtil, itemHelper: ItemHelper, eventOutputHolder: EventOutputHolder, databaseServer: DatabaseServer, localeService: LocaleService, ragfairServerHelper: RagfairServerHelper, dialogueHelper: DialogueHelper, profileHelper: ProfileHelper, paymentHelper: PaymentHelper, localisationService: LocalisationService, traderHelper: TraderHelper, configServer: ConfigServer);
|
constructor(logger: ILogger, jsonUtil: JsonUtil, timeUtil: TimeUtil, hashUtil: HashUtil, itemHelper: ItemHelper, eventOutputHolder: EventOutputHolder, databaseServer: DatabaseServer, localeService: LocaleService, ragfairServerHelper: RagfairServerHelper, dialogueHelper: DialogueHelper, profileHelper: ProfileHelper, paymentHelper: PaymentHelper, localisationService: LocalisationService, traderHelper: TraderHelper, configServer: ConfigServer);
|
||||||
/**
|
/**
|
||||||
* Get status of a quest by quest id
|
* Get status of a quest in player profile by its id
|
||||||
* @param pmcData Profile to search
|
* @param pmcData Profile to search
|
||||||
* @param questID Quest id to look up
|
* @param questID Quest id to look up
|
||||||
* @returns QuestStatus enum
|
* @returns QuestStatus enum
|
||||||
|
17
types/helpers/RagfairOfferHelper.d.ts
vendored
17
types/helpers/RagfairOfferHelper.d.ts
vendored
@ -47,7 +47,22 @@ export declare class RagfairOfferHelper {
|
|||||||
protected questConfig: IQuestConfig;
|
protected questConfig: IQuestConfig;
|
||||||
constructor(logger: ILogger, timeUtil: TimeUtil, hashUtil: HashUtil, eventOutputHolder: EventOutputHolder, databaseServer: DatabaseServer, traderHelper: TraderHelper, saveServer: SaveServer, dialogueHelper: DialogueHelper, itemHelper: ItemHelper, paymentHelper: PaymentHelper, presetHelper: PresetHelper, profileHelper: ProfileHelper, ragfairServerHelper: RagfairServerHelper, ragfairSortHelper: RagfairSortHelper, ragfairHelper: RagfairHelper, ragfairOfferService: RagfairOfferService, localeService: LocaleService, configServer: ConfigServer);
|
constructor(logger: ILogger, timeUtil: TimeUtil, hashUtil: HashUtil, eventOutputHolder: EventOutputHolder, databaseServer: DatabaseServer, traderHelper: TraderHelper, saveServer: SaveServer, dialogueHelper: DialogueHelper, itemHelper: ItemHelper, paymentHelper: PaymentHelper, presetHelper: PresetHelper, profileHelper: ProfileHelper, ragfairServerHelper: RagfairServerHelper, ragfairSortHelper: RagfairSortHelper, ragfairHelper: RagfairHelper, ragfairOfferService: RagfairOfferService, localeService: LocaleService, configServer: ConfigServer);
|
||||||
getValidOffers(searchRequest: ISearchRequestData, itemsToAdd: string[], traderAssorts: Record<string, ITraderAssort>, pmcProfile: IPmcData): IRagfairOffer[];
|
getValidOffers(searchRequest: ISearchRequestData, itemsToAdd: string[], traderAssorts: Record<string, ITraderAssort>, pmcProfile: IPmcData): IRagfairOffer[];
|
||||||
getOffersForBuild(info: ISearchRequestData, itemsToAdd: string[], assorts: Record<string, ITraderAssort>, pmcProfile: IPmcData): IRagfairOffer[];
|
/**
|
||||||
|
* Get offers from flea/traders specifically when building weapon preset
|
||||||
|
* @param searchRequest Search request data
|
||||||
|
* @param itemsToAdd string array of item tpls to search for
|
||||||
|
* @param traderAssorts All trader assorts player can access/buy
|
||||||
|
* @param pmcProfile Player profile
|
||||||
|
* @returns ITraderAssort
|
||||||
|
*/
|
||||||
|
getOffersForBuild(searchRequest: ISearchRequestData, itemsToAdd: string[], traderAssorts: Record<string, ITraderAssort>, pmcProfile: IPmcData): IRagfairOffer[];
|
||||||
|
/**
|
||||||
|
* Check if offer item is quest locked for current player by looking at sptQuestLocked property in traders barter_scheme
|
||||||
|
* @param offer Offer to check is quest locked
|
||||||
|
* @param traderAssorts all trader assorts for player
|
||||||
|
* @returns true if quest locked
|
||||||
|
*/
|
||||||
|
traderOfferItemQuestLocked(offer: IRagfairOffer, traderAssorts: Record<string, ITraderAssort>): boolean;
|
||||||
/**
|
/**
|
||||||
* Has a traders offer ran out of stock to sell to player
|
* Has a traders offer ran out of stock to sell to player
|
||||||
* @param offer Offer to check stock of
|
* @param offer Offer to check stock of
|
||||||
|
8
types/models/spt/config/IPmcConfig.d.ts
vendored
8
types/models/spt/config/IPmcConfig.d.ts
vendored
@ -1,5 +1,8 @@
|
|||||||
import { MinMax } from "../../common/MinMax";
|
import { MinMax } from "../../common/MinMax";
|
||||||
export interface IPmcConfig {
|
export interface IPmcConfig {
|
||||||
|
vestLoot: SlotLootSettings;
|
||||||
|
pocketLoot: SlotLootSettings;
|
||||||
|
backpackLoot: SlotLootSettings;
|
||||||
dynamicLoot: DynamicLoot;
|
dynamicLoot: DynamicLoot;
|
||||||
useDifficultyOverride: boolean;
|
useDifficultyOverride: boolean;
|
||||||
difficulty: string;
|
difficulty: string;
|
||||||
@ -22,8 +25,11 @@ export interface PmcTypes {
|
|||||||
usec: string;
|
usec: string;
|
||||||
bear: string;
|
bear: string;
|
||||||
}
|
}
|
||||||
export interface DynamicLoot {
|
export interface SlotLootSettings {
|
||||||
whitelist: string[];
|
whitelist: string[];
|
||||||
blacklist: string[];
|
blacklist: string[];
|
||||||
moneyStackLimits: Record<string, number>;
|
moneyStackLimits: Record<string, number>;
|
||||||
}
|
}
|
||||||
|
export interface DynamicLoot {
|
||||||
|
moneyStackLimits: Record<string, number>;
|
||||||
|
}
|
||||||
|
2
types/models/spt/config/IRagfairConfig.d.ts
vendored
2
types/models/spt/config/IRagfairConfig.d.ts
vendored
@ -30,6 +30,8 @@ export interface Reputation {
|
|||||||
}
|
}
|
||||||
export interface Dynamic {
|
export interface Dynamic {
|
||||||
purchasesAreFoundInRaid: boolean;
|
purchasesAreFoundInRaid: boolean;
|
||||||
|
/** Use the highest trader price for an offer if its greater than the price in templates/prices.json */
|
||||||
|
useTraderPriceForOffersIfHigher: boolean;
|
||||||
barter: Barter;
|
barter: Barter;
|
||||||
offerAdjustment: OfferAdjustment;
|
offerAdjustment: OfferAdjustment;
|
||||||
expiredOfferThreshold: number;
|
expiredOfferThreshold: number;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user