Handle when no data exists for a map without killing server

This commit is contained in:
Dev 2023-12-28 15:13:29 +00:00
parent 52f67161df
commit 7b13f69f18

View File

@ -164,6 +164,12 @@ export class LocationGenerator
// Group containers by their groupId // Group containers by their groupId
const staticContainerGroupData: IStaticContainer = db.locations[locationId].statics; const staticContainerGroupData: IStaticContainer = db.locations[locationId].statics;
if (!staticContainerGroupData)
{
this.logger.warning(`Map: ${locationId} lacks a statics file, skipping container generation.`)
return result;
}
const mapping = this.getGroupIdToContainerMappings(staticContainerGroupData, staticRandomisableContainersOnMap); const mapping = this.getGroupIdToContainerMappings(staticContainerGroupData, staticRandomisableContainersOnMap);
// For each of the container groups, choose from the pool of containers, hydrate container with loot and add to result array // For each of the container groups, choose from the pool of containers, hydrate container with loot and add to result array
@ -503,7 +509,15 @@ export class LocationGenerator
{ {
// Create probability array to calcualte the total count of lootable items inside container // Create probability array to calcualte the total count of lootable items inside container
const itemCountArray = new ProbabilityObjectArray<number>(this.mathUtil, this.jsonUtil); const itemCountArray = new ProbabilityObjectArray<number>(this.mathUtil, this.jsonUtil);
for (const itemCountDistribution of staticLootDist[containerTypeId].itemcountDistribution) const countDistribution = staticLootDist[containerTypeId]?.itemcountDistribution;
if (!countDistribution)
{
this.logger.warning(`Unable to acquire count distrubution for container: ${containerTypeId} on: ${locationName}. defaulting to 0`);
return 0;
}
for (const itemCountDistribution of countDistribution)
{ {
// Add each count of items into array // Add each count of items into array
itemCountArray.push( itemCountArray.push(
@ -530,7 +544,15 @@ export class LocationGenerator
const seasonalItemTplBlacklist = this.seasonalEventService.getInactiveSeasonalEventItems(); const seasonalItemTplBlacklist = this.seasonalEventService.getInactiveSeasonalEventItems();
const itemDistribution = new ProbabilityObjectArray<string>(this.mathUtil, this.jsonUtil); const itemDistribution = new ProbabilityObjectArray<string>(this.mathUtil, this.jsonUtil);
for (const icd of staticLootDist[containerTypeId].itemDistribution)
const itemContainerDistribution = staticLootDist[containerTypeId]?.itemDistribution;
if (!itemContainerDistribution)
{
this.logger.warning(`Unable to acquire item distrubution for container: ${containerTypeId}`);
return itemDistribution;
}
for (const icd of itemContainerDistribution)
{ {
if (!seasonalEventActive && seasonalItemTplBlacklist.includes(icd.tpl)) if (!seasonalEventActive && seasonalItemTplBlacklist.includes(icd.tpl))
{ {