Move trainArrivalDelaySeconds value into config

This commit is contained in:
Dev 2023-12-01 09:03:14 +00:00
parent 1994832281
commit 2a3839f6de
3 changed files with 217 additions and 201 deletions

View File

@ -841,190 +841,195 @@
"allowDuplicateItemsInStaticContainers": true, "allowDuplicateItemsInStaticContainers": true,
"looseLootBlacklist": {}, "looseLootBlacklist": {},
"scavRaidTimeSettings": { "scavRaidTimeSettings": {
"bigmap": { "settings": {
"reduceLootByPercent": true, "trainArrivalDelaySeconds": 90
"minDynamicLootPercent": 50,
"minStaticLootPercent": 40,
"reducedChancePercent": 70,
"reductionPercentWeights": {
"20": 1,
"25": 2,
"30": 4,
"35": 4,
"40": 4,
"45": 4,
"50": 4,
"60": 2,
"70": 2,
"80": 1
},
"adjustWaves": true
}, },
"factory4_day": { "maps": {
"reduceLootByPercent": true, "bigmap": {
"minDynamicLootPercent": 50, "reduceLootByPercent": true,
"minStaticLootPercent": 40, "minDynamicLootPercent": 50,
"reducedChancePercent": 80, "minStaticLootPercent": 40,
"reductionPercentWeights": { "reducedChancePercent": 70,
"5": 2, "reductionPercentWeights": {
"20": 3, "20": 1,
"25": 3, "25": 2,
"30": 5, "30": 4,
"40": 5, "35": 4,
"50": 5, "40": 4,
"60": 2, "45": 4,
"70": 2, "50": 4,
"80": 2, "60": 2,
"85": 1 "70": 2,
"80": 1
},
"adjustWaves": true
}, },
"adjustWaves": true "factory4_day": {
}, "reduceLootByPercent": true,
"factory4_night": { "minDynamicLootPercent": 50,
"reduceLootByPercent": true, "minStaticLootPercent": 40,
"minDynamicLootPercent": 50, "reducedChancePercent": 80,
"minStaticLootPercent": 40, "reductionPercentWeights": {
"reducedChancePercent": 70, "5": 2,
"reductionPercentWeights": { "20": 3,
"20": 4, "25": 3,
"30": 3, "30": 5,
"40": 3, "40": 5,
"60": 2, "50": 5,
"70": 2, "60": 2,
"80": 1 "70": 2,
"80": 2,
"85": 1
},
"adjustWaves": true
}, },
"adjustWaves": true "factory4_night": {
}, "reduceLootByPercent": true,
"interchange": { "minDynamicLootPercent": 50,
"reduceLootByPercent": true, "minStaticLootPercent": 40,
"minDynamicLootPercent": 50, "reducedChancePercent": 70,
"minStaticLootPercent": 40, "reductionPercentWeights": {
"reducedChancePercent": 70, "20": 4,
"reductionPercentWeights": { "30": 3,
"20": 5, "40": 3,
"25": 5, "60": 2,
"30": 5, "70": 2,
"35": 5, "80": 1
"40": 5, },
"50": 5, "adjustWaves": true
"60": 2,
"80": 1
}, },
"adjustWaves": true "interchange": {
}, "reduceLootByPercent": true,
"rezervbase": { "minDynamicLootPercent": 50,
"reduceLootByPercent": true, "minStaticLootPercent": 40,
"minDynamicLootPercent": 50, "reducedChancePercent": 70,
"minStaticLootPercent": 40, "reductionPercentWeights": {
"reducedChancePercent": 70, "20": 5,
"25": 5,
"30": 5,
"35": 5,
"40": 5,
"50": 5,
"60": 2,
"80": 1
},
"adjustWaves": true
},
"rezervbase": {
"reduceLootByPercent": true,
"minDynamicLootPercent": 50,
"minStaticLootPercent": 40,
"reducedChancePercent": 70,
"reductionPercentWeights": { "reductionPercentWeights": {
"20": 3, "20": 3,
"30": 3, "30": 3,
"40": 4, "40": 4,
"50": 4, "50": 4,
"60": 2, "60": 2,
"70": 1, "70": 1,
"80": 1 "80": 1
},
"adjustWaves": true
}, },
"adjustWaves": true "laboratory": {
}, "reduceLootByPercent": true,
"laboratory": { "minDynamicLootPercent": 50,
"reduceLootByPercent": true, "minStaticLootPercent": 40,
"minDynamicLootPercent": 50, "reducedChancePercent": 70,
"minStaticLootPercent": 40, "reductionPercentWeights": {
"reducedChancePercent": 70, "20": 3,
"reductionPercentWeights": { "30": 5,
"20": 3, "40": 5,
"30": 5, "50": 5,
"40": 5, "60": 2,
"50": 5, "80": 1
"60": 2, },
"80": 1 "adjustWaves": true
}, },
"adjustWaves": true "lighthouse": {
}, "reduceLootByPercent": true,
"lighthouse": { "minDynamicLootPercent": 50,
"reduceLootByPercent": true, "minStaticLootPercent": 40,
"minDynamicLootPercent": 50, "reducedChancePercent": 60,
"minStaticLootPercent": 40, "reductionPercentWeights": {
"reducedChancePercent": 60, "20": 2,
"reductionPercentWeights": { "25": 2,
"20": 2, "30": 4,
"25": 2, "40": 4,
"30": 4, "50": 4,
"40": 4, "60": 2,
"50": 4, "80": 1
"60": 2, },
"80": 1 "adjustWaves": true
}, },
"adjustWaves": true "shoreline": {
}, "reduceLootByPercent": true,
"shoreline": { "minDynamicLootPercent": 50,
"reduceLootByPercent": true, "minStaticLootPercent": 40,
"minDynamicLootPercent": 50, "reducedChancePercent": 60,
"minStaticLootPercent": 40, "reductionPercentWeights": {
"reducedChancePercent": 60, "20": 2,
"reductionPercentWeights": { "25": 3,
"20": 2, "30": 5,
"25": 3, "35": 5,
"30": 5, "40": 5,
"35": 5, "50": 5,
"40": 5, "60": 2,
"50": 5, "70": 1,
"60": 2, "80": 1
"70": 1, },
"80": 1 "adjustWaves": true
}, },
"adjustWaves": true "tarkovstreets": {
}, "reduceLootByPercent": true,
"tarkovstreets": { "minDynamicLootPercent": 50,
"reduceLootByPercent": true, "minStaticLootPercent": 40,
"minDynamicLootPercent": 50, "reducedChancePercent": 70,
"minStaticLootPercent": 40, "reductionPercentWeights": {
"reducedChancePercent": 70, "20": 2,
"reductionPercentWeights": { "30": 4,
"20": 2, "40": 4,
"30": 4, "50": 4,
"40": 4, "60": 4,
"50": 4, "70": 1,
"60": 4, "80": 1
"70": 1, },
"80": 1 "adjustWaves": true
}, },
"adjustWaves": true "woods": {
}, "reduceLootByPercent": true,
"woods": { "minDynamicLootPercent": 50,
"reduceLootByPercent": true, "minStaticLootPercent": 40,
"minDynamicLootPercent": 50, "reducedChancePercent": 60,
"minStaticLootPercent": 40, "reductionPercentWeights": {
"reducedChancePercent": 60, "20": 3,
"reductionPercentWeights": { "30": 5,
"20": 3, "40": 5,
"30": 5, "50": 5,
"40": 5, "60": 1,
"50": 5, "70": 1,
"60": 1, "80": 1
"70": 1, },
"80": 1 "adjustWaves": true
}, },
"adjustWaves": true "default": {
}, "reduceLootByPercent": true,
"default": { "minDynamicLootPercent": 50,
"reduceLootByPercent": true, "minStaticLootPercent": 50,
"minDynamicLootPercent": 50, "reducedChancePercent": 50,
"minStaticLootPercent": 50, "reductionPercentWeights": {
"reducedChancePercent": 50, "10": 1,
"reductionPercentWeights": { "20": 2,
"10": 1, "30": 5,
"20": 2, "40": 5,
"30": 5, "50": 5,
"40": 5, "60": 2,
"50": 5, "70": 1,
"60": 2, "80": 1
"70": 1, },
"80": 1 "adjustWaves": true
}, }
"adjustWaves": true
} }
} }
} }

View File

@ -39,31 +39,7 @@ export interface ILocationConfig extends IBaseConfig
/** Key: map, value: loose loot ids to ignore */ /** Key: map, value: loose loot ids to ignore */
looseLootBlacklist: Record<string, string[]>; looseLootBlacklist: Record<string, string[]>;
/** Key: map, value: settings to control how long scav raids are*/ /** Key: map, value: settings to control how long scav raids are*/
scavRaidTimeSettings: Record<string, IScavRaidTimeLocationSettings>; scavRaidTimeSettings: IScavRaidTimeSettings;
}
export interface IScavRaidTimeLocationSettings
{
/** Should loot be reduced by same percent length of raid is reduced by */
reduceLootByPercent: boolean;
minStaticLootPercent: number;
minDynamicLootPercent: number;
/** Chance raid time is reduced */
reducedChancePercent: number;
reductionPercentWeights: Record<string, number>;
/** Should bot waves be removed / spawn times be adjusted */
adjustWaves: boolean;
}
export interface IContainerRandomistionSettings
{
enabled: boolean;
/** What maps can use the container randomisation feature */
maps: Record<string, boolean>;
/** Some container types don't work when randomised */
containerTypesToNotRandomise: string[];
containerGroupMinSizeMultiplier: number;
containerGroupMaxSizeMultiplier: number;
} }
export interface IFixEmptyBotWavesSettings export interface IFixEmptyBotWavesSettings
@ -119,3 +95,38 @@ export interface LootMultiplier
terminal: number; terminal: number;
town: number; town: number;
} }
export interface IContainerRandomistionSettings
{
enabled: boolean;
/** What maps can use the container randomisation feature */
maps: Record<string, boolean>;
/** Some container types don't work when randomised */
containerTypesToNotRandomise: string[];
containerGroupMinSizeMultiplier: number;
containerGroupMaxSizeMultiplier: number;
}
export interface IScavRaidTimeSettings
{
settings: IScavRaidTimeConfigSettings
maps: Record<string, IScavRaidTimeLocationSettings>
}
export interface IScavRaidTimeConfigSettings
{
trainArrivalDelaySeconds: number
}
export interface IScavRaidTimeLocationSettings
{
/** Should loot be reduced by same percent length of raid is reduced by */
reduceLootByPercent: boolean;
minStaticLootPercent: number;
minDynamicLootPercent: number;
/** Chance raid time is reduced */
reducedChancePercent: number;
reductionPercentWeights: Record<string, number>;
/** Should bot waves be removed / spawn times be adjusted */
adjustWaves: boolean;
}

View File

@ -171,11 +171,11 @@ export class RaidTimeAdjustmentService
*/ */
protected getMapSettings(location: string): IScavRaidTimeLocationSettings protected getMapSettings(location: string): IScavRaidTimeLocationSettings
{ {
const mapSettings = this.locationConfig.scavRaidTimeSettings[location.toLowerCase()]; const mapSettings = this.locationConfig.scavRaidTimeSettings.maps[location.toLowerCase()];
if (!mapSettings) if (!mapSettings)
{ {
this.logger.warning(`Unable to find scav raid time settings for map: ${location}, using defaults`); this.logger.warning(`Unable to find scav raid time settings for map: ${location}, using defaults`);
return this.locationConfig.scavRaidTimeSettings.default; return this.locationConfig.scavRaidTimeSettings.maps.default;
} }
return mapSettings; return mapSettings;
@ -226,7 +226,7 @@ export class RaidTimeAdjustmentService
// //
// I added 2 seconds just to be safe... // I added 2 seconds just to be safe...
// //
const trainArrivalDelaySeconds = 90; const trainArrivalDelaySeconds = this.locationConfig.scavRaidTimeSettings.settings.trainArrivalDelaySeconds;
// Determine the earliest possible time in the raid when the train would leave // Determine the earliest possible time in the raid when the train would leave
const earliestPossibleDepartureMinutes = (exit.MinTime + exit.Count + exit.ExfiltrationTime + trainArrivalDelaySeconds) / 60; const earliestPossibleDepartureMinutes = (exit.MinTime + exit.Count + exit.ExfiltrationTime + trainArrivalDelaySeconds) / 60;