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

Refactoring of small functions for better readability

This commit is contained in:
Dev 2024-06-12 19:33:55 +01:00
parent 9d79aa70eb
commit aac2142706
2 changed files with 64 additions and 67 deletions

View File

@ -221,8 +221,8 @@ export class GameController
this.adjustLabsRaiderSpawnRate(); this.adjustLabsRaiderSpawnRate();
this.adjustHideoutCraftTimes(); this.adjustHideoutCraftTimes(this.hideoutConfig.overrideCraftTimeSeconds);
this.adjustHideoutBuildTimes(); this.adjustHideoutBuildTimes(this.hideoutConfig.overrideBuildTimeSeconds);
this.removePraporTestMessage(); this.removePraporTestMessage();
@ -250,15 +250,14 @@ export class GameController
// Flea bsg blacklist is off // Flea bsg blacklist is off
if (!this.ragfairConfig.dynamic.blacklist.enableBsgList) if (!this.ragfairConfig.dynamic.blacklist.enableBsgList)
{ {
this.flagAllItemsInDbAsSellableOnFlea(); this.setAllDbItemsAsSellableOnFlea();
} }
} }
} }
protected adjustHideoutCraftTimes(): void protected adjustHideoutCraftTimes(overrideSeconds: number): void
{ {
const craftTimeOverrideSeconds = this.hideoutConfig.overrideCraftTimeSeconds; if (overrideSeconds === -1)
if (craftTimeOverrideSeconds === -1)
{ {
return; return;
} }
@ -266,31 +265,26 @@ export class GameController
for (const craft of this.databaseService.getHideout().production) for (const craft of this.databaseService.getHideout().production)
{ {
// Only adjust crafts ABOVE the override // Only adjust crafts ABOVE the override
if (craft.productionTime > craftTimeOverrideSeconds) craft.productionTime = Math.min(craft.productionTime, overrideSeconds);
{
craft.productionTime = craftTimeOverrideSeconds;
}
} }
} }
protected adjustHideoutBuildTimes(): void /**
* Adjust all hideout craft times to be no higher than the override
*/
protected adjustHideoutBuildTimes(overrideSeconds: number): void
{ {
const craftTimeOverrideSeconds = this.hideoutConfig.overrideBuildTimeSeconds; if (overrideSeconds === -1)
if (craftTimeOverrideSeconds === -1)
{ {
return; return;
} }
for (const area of this.databaseService.getHideout().areas) for (const area of this.databaseService.getHideout().areas)
{ {
for (const stageKey of Object.keys(area.stages)) for (const stage of Object.values(area.stages))
{ {
const stage = area.stages[stageKey];
// Only adjust crafts ABOVE the override // Only adjust crafts ABOVE the override
if (stage.constructionTime > craftTimeOverrideSeconds) stage.constructionTime = Math.min(stage.constructionTime, overrideSeconds);
{
stage.constructionTime = craftTimeOverrideSeconds;
}
} }
} }
} }
@ -320,13 +314,14 @@ export class GameController
protected checkTraderRepairValuesExist(): void protected checkTraderRepairValuesExist(): void
{ {
const traders = this.databaseService.getTraders(); const traders = this.databaseService.getTraders();
for (const traderKey in traders) for (const trader of Object.values(traders))
{ {
const trader = traders[traderKey];
if (!trader?.base?.repair) if (!trader?.base?.repair)
{ {
this.logger.warning(this.localisationService.getText("trader-missing_repair_property_using_default", this.logger.warning(this.localisationService.getText("trader-missing_repair_property_using_default",
{ traderId: trader.base._id, nickname: trader.base.nickname })); { traderId: trader.base._id, nickname: trader.base.nickname }));
// use ragfair trader as a default
trader.base.repair = this.cloner.clone(traders.ragfair.base.repair); trader.base.repair = this.cloner.clone(traders.ragfair.base.repair);
return; return;
@ -336,6 +331,8 @@ export class GameController
{ {
this.logger.warning(this.localisationService.getText("trader-missing_repair_quality_property_using_default", this.logger.warning(this.localisationService.getText("trader-missing_repair_quality_property_using_default",
{ traderId: trader.base._id, nickname: trader.base.nickname })); { traderId: trader.base._id, nickname: trader.base.nickname }));
// use ragfair trader as a default
trader.base.repair.quality = this.cloner.clone( trader.base.repair.quality = this.cloner.clone(
traders.ragfair.base.repair.quality, traders.ragfair.base.repair.quality,
); );
@ -347,7 +344,7 @@ export class GameController
protected addCustomLooseLootPositions(): void protected addCustomLooseLootPositions(): void
{ {
const looseLootPositionsToAdd = this.lootConfig.looseLoot; const looseLootPositionsToAdd = this.lootConfig.looseLoot;
for (const mapId in looseLootPositionsToAdd) for (const [mapId, positionsToAdd] of Object.entries(looseLootPositionsToAdd))
{ {
if (!mapId) if (!mapId)
{ {
@ -364,7 +361,6 @@ export class GameController
continue; continue;
} }
const positionsToAdd = looseLootPositionsToAdd[mapId];
for (const positionToAdd of positionsToAdd) for (const positionToAdd of positionsToAdd)
{ {
// Exists already, add new items to existing positions pool // Exists already, add new items to existing positions pool
@ -389,7 +385,7 @@ export class GameController
protected adjustLooseLootSpawnProbabilities(): void protected adjustLooseLootSpawnProbabilities(): void
{ {
const adjustments = this.lootConfig.looseLootSpawnPointAdjustments; const adjustments = this.lootConfig.looseLootSpawnPointAdjustments;
for (const mapId in adjustments) for (const [mapId, mapAdjustments] of Object.entries(adjustments))
{ {
const mapLooseLootData = this.databaseService.getLocation(mapId).looseLoot; const mapLooseLootData = this.databaseService.getLocation(mapId).looseLoot;
if (!mapLooseLootData) if (!mapLooseLootData)
@ -398,19 +394,20 @@ export class GameController
continue; continue;
} }
const mapLootAdjustmentsDict = adjustments[mapId];
for (const lootKey in mapLootAdjustmentsDict) for (const [lootKey, newChanceValue] of Object.entries(mapAdjustments))
{ {
const lootPostionToAdjust = mapLooseLootData.spawnpoints const lootPostionToAdjust = mapLooseLootData.spawnpoints
.find((spawnPoint) => spawnPoint.template.Id === lootKey); .find((spawnPoint) => spawnPoint.template.Id === lootKey);
if (!lootPostionToAdjust) if (!lootPostionToAdjust)
{ {
this.logger.warning(this.localisationService.getText("location-unable_to_adjust_loot_position_on_map", { lootKey: lootKey, mapId: mapId })); this.logger.warning(this.localisationService.getText("location-unable_to_adjust_loot_position_on_map",
{ lootKey: lootKey, mapId: mapId }));
continue; continue;
} }
lootPostionToAdjust.probability = mapLootAdjustmentsDict[lootKey]; lootPostionToAdjust.probability = newChanceValue;
} }
} }
} }
@ -580,7 +577,7 @@ export class GameController
} }
} }
protected flagAllItemsInDbAsSellableOnFlea(): void protected setAllDbItemsAsSellableOnFlea(): void
{ {
const dbItems = Object.values(this.databaseService.getItems()); const dbItems = Object.values(this.databaseService.getItems());
for (const item of dbItems) for (const item of dbItems)
@ -731,14 +728,20 @@ export class GameController
*/ */
protected fixRoguesSpawningInstantlyOnLighthouse(): void protected fixRoguesSpawningInstantlyOnLighthouse(): void
{ {
const lighthouse = this.databaseService.getLocations().lighthouse!.base; const rogueSpawnDelaySeconds = this.locationConfig.rogueLighthouseSpawnTimeSettings.waitTimeSeconds;
for (const wave of lighthouse.BossLocationSpawn) const lighthouse = this.databaseService.getLocations().lighthouse?.base;
if (!lighthouse)
{ {
// Find Rogues that spawn instantly return;
if (wave.BossName === "exUsec" && wave.Time === -1) }
{
wave.Time = this.locationConfig.rogueLighthouseSpawnTimeSettings.waitTimeSeconds; // Find Rogues that spawn instantly
} const instantRogueBossSpawns = lighthouse.BossLocationSpawn
.filter((spawn) => spawn.BossName === "exUsec"
&& spawn.Time === -1);
for (const wave of instantRogueBossSpawns)
{
wave.Time = rogueSpawnDelaySeconds;
} }
} }
@ -858,10 +861,10 @@ export class GameController
const modDetails = activeMods[modKey]; const modDetails = activeMods[modKey];
if ( if (
fullProfile.spt.mods.some( fullProfile.spt.mods.some(
(x) => (mod) =>
x.author === modDetails.author mod.author === modDetails.author
&& x.name === modDetails.name && mod.name === modDetails.name
&& x.version === modDetails.version, && mod.version === modDetails.version,
) )
) )
{ {
@ -977,16 +980,16 @@ export class GameController
protected adjustLabsRaiderSpawnRate(): void protected adjustLabsRaiderSpawnRate(): void
{ {
const labsBase = this.databaseService.getLocations().laboratory!.base; const labsBase = this.databaseService.getLocations().laboratory!.base;
const nonTriggerLabsBossSpawns = labsBase.BossLocationSpawn.filter(
(x) => x.TriggerId === "" && x.TriggerName === "", // Find spawns with empty string for triggerId/TriggerName
); const nonTriggerLabsBossSpawns = labsBase.BossLocationSpawn
if (nonTriggerLabsBossSpawns) .filter((bossSpawn) => !bossSpawn.TriggerId
&& !bossSpawn.TriggerName);
for (const boss of nonTriggerLabsBossSpawns)
{ {
for (const boss of nonTriggerLabsBossSpawns) boss.BossChance = 100;
{ boss.Time /= 10;
boss.BossChance = 100;
boss.Time /= 10;
}
} }
} }

View File

@ -154,7 +154,7 @@ export class LootGenerator
this.itemHelper.armorItemCanHoldMods(preset._encyclopedia), this.itemHelper.armorItemCanHoldMods(preset._encyclopedia),
); );
const levelFilteredArmorPresets = armorDefaultPresets.filter((armor) => const levelFilteredArmorPresets = armorDefaultPresets.filter((armor) =>
this.armorIsDesiredProtectionLevel(armor, options), this.isArmorOfDesiredProtectionLevel(armor, options),
); );
// Add some armors to rewards // Add some armors to rewards
@ -187,27 +187,21 @@ export class LootGenerator
* @param options Loot request options - armor level etc * @param options Loot request options - armor level etc
* @returns True if item has desired armor level * @returns True if item has desired armor level
*/ */
protected armorIsDesiredProtectionLevel(armor: IPreset, options: LootRequest): boolean protected isArmorOfDesiredProtectionLevel(armor: IPreset, options: LootRequest): boolean
{ {
const frontPlate = armor._items.find((mod) => mod?.slotId?.toLowerCase() === "front_plate"); const relevantSlots = ["front_plate", "helmet_top", "soft_armor_front"];
if (frontPlate) for (const slotId of relevantSlots)
{ {
const plateDb = this.itemHelper.getItem(frontPlate._tpl); const armorItem = armor._items.find((item) => item?.slotId?.toLowerCase() === slotId);
return options.armorLevelWhitelist.includes(Number.parseInt(plateDb[1]._props.armorClass as any)); if (!armorItem)
} {
continue;
}
const helmetTop = armor._items.find((mod) => mod?.slotId?.toLowerCase() === "helmet_top"); const armorDetails = this.itemHelper.getItem(armorItem._tpl);
if (helmetTop) const armorClass = Number.parseInt(armorDetails[1]._props.armorClass as any, 10);
{
const plateDb = this.itemHelper.getItem(helmetTop._tpl);
return options.armorLevelWhitelist.includes(Number.parseInt(plateDb[1]._props.armorClass as any));
}
const softArmorFront = armor._items.find((mod) => mod?.slotId?.toLowerCase() === "soft_armor_front"); return options.armorLevelWhitelist.includes(armorClass);
if (softArmorFront)
{
const plateDb = this.itemHelper.getItem(softArmorFront._tpl);
return options.armorLevelWhitelist.includes(Number.parseInt(plateDb[1]._props.armorClass as any));
} }
return false; return false;