0
0
mirror of https://github.com/sp-tarkov/server.git synced 2025-02-13 09:50:43 -05:00

Refactor updateWaterFilters()

This commit is contained in:
Dev 2023-04-23 14:02:46 +01:00
parent 9fff59f464
commit d411f5ce1d

View File

@ -501,7 +501,6 @@ export class HideoutHelper
*/ */
protected updateWaterFilters(waterFilterArea: HideoutArea, production: Production, isGeneratorOn: boolean, pmcData: IPmcData): HideoutArea protected updateWaterFilters(waterFilterArea: HideoutArea, production: Production, isGeneratorOn: boolean, pmcData: IPmcData): HideoutArea
{ {
let timeElapsed = this.timeUtil.getTimestamp() - pmcData.Hideout.sptUpdateLastRunTimestamp;
// 100 resources last 8 hrs 20 min, 100/8.33/60/60 = 0.00333 // 100 resources last 8 hrs 20 min, 100/8.33/60/60 = 0.00333
let filterDrainRate = 0.00333; let filterDrainRate = 0.00333;
// Hideout management resource consumption bonus: // Hideout management resource consumption bonus:
@ -513,21 +512,12 @@ export class HideoutHelper
const recipe = this.databaseServer.getTables().hideout.production.find(prod => prod._id === HideoutHelper.waterCollector); const recipe = this.databaseServer.getTables().hideout.production.find(prod => prod._id === HideoutHelper.waterCollector);
productionTime = (recipe.productionTime || 0); productionTime = (recipe.productionTime || 0);
// Reduce time elapsed (and progress) when generator is off const timeElapsed = this.getTimeElapsedSinceLastServerTick(pmcData, isGeneratorOn);
if (!isGeneratorOn)
{
timeElapsed = Math.floor(timeElapsed * HideoutHelper.generatorOffMultipler);
}
if (timeElapsed > productionTime) // Get filter drain rate, handle edge case when craft time has gone on longer than total production time
{ filterDrainRate *= timeElapsed > productionTime
// We've gone beyond completion ? (productionTime - production.Progress)
filterDrainRate *= (productionTime - production.Progress); : timeElapsed;
}
else
{
filterDrainRate *= timeElapsed;
}
// Production hasn't completed // Production hasn't completed
if (production.Progress < productionTime) if (production.Progress < productionTime)
@ -582,6 +572,24 @@ export class HideoutHelper
return waterFilterArea; return waterFilterArea;
} }
/**
* Get number of ticks that have passed since hideout areas were last processed, reduced when generator is off
* @param pmcData Player profile
* @param isGeneratorOn Is the generator on for the duration of elapsed time
* @returns Amount of time elapsed in seconds
*/
protected getTimeElapsedSinceLastServerTick(pmcData: IPmcData, isGeneratorOn: boolean): number
{
// Reduce time elapsed (and progress) when generator is off
let timeElapsed = this.timeUtil.getTimestamp() - pmcData.Hideout.sptUpdateLastRunTimestamp;
if (!isGeneratorOn)
{
timeElapsed = Math.floor(timeElapsed * HideoutHelper.generatorOffMultipler);
}
return timeElapsed;
}
protected getAreaUpdObject(stackCount: number, resourceValue: number, resourceUnitsConsumed: number): Upd protected getAreaUpdObject(stackCount: number, resourceValue: number, resourceUnitsConsumed: number): Upd
{ {
return { return {
@ -686,14 +694,14 @@ export class HideoutHelper
// ******************************************************* // *******************************************************
/* /*
public override int InstalledSuppliesCount public override int InstalledSuppliesCount
{ {
get get
{ {
return this.int_1; return this.int_1;
} }
protected set protected set
{ {
if (this.int_1 === value) if (this.int_1 === value)
{ {
return; return;
} }