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:
parent
9d79aa70eb
commit
aac2142706
@ -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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user