Server/project/src/helpers/QuestConditionHelper.ts

62 lines
1.8 KiB
TypeScript
Raw Normal View History

2023-03-03 16:23:46 +01:00
import { injectable } from "tsyringe";
import { AvailableForConditions } from "@spt-aki/models/eft/common/tables/IQuest";
2023-03-03 16:23:46 +01:00
@injectable()
export class QuestConditionHelper
{
public getQuestConditions(
q: AvailableForConditions[],
furtherFilter: (a: AvailableForConditions) => AvailableForConditions[] = null,
): AvailableForConditions[]
2023-03-03 16:23:46 +01:00
{
return this.filterConditions(q, "Quest", furtherFilter);
}
public getLevelConditions(
q: AvailableForConditions[],
furtherFilter: (a: AvailableForConditions) => AvailableForConditions[] = null,
): AvailableForConditions[]
2023-03-03 16:23:46 +01:00
{
return this.filterConditions(q, "Level", furtherFilter);
}
public getLoyaltyConditions(
q: AvailableForConditions[],
furtherFilter: (a: AvailableForConditions) => AvailableForConditions[] = null,
): AvailableForConditions[]
2023-03-03 16:23:46 +01:00
{
return this.filterConditions(q, "TraderLoyalty", furtherFilter);
}
public getStandingConditions(
q: AvailableForConditions[],
furtherFilter: (a: AvailableForConditions) => AvailableForConditions[] = null,
): AvailableForConditions[]
{
return this.filterConditions(q, "TraderStanding", furtherFilter);
}
protected filterConditions(
q: AvailableForConditions[],
questType: string,
furtherFilter: (a: AvailableForConditions) => AvailableForConditions[] = null,
): AvailableForConditions[]
2023-03-03 16:23:46 +01:00
{
const filteredQuests = q.filter((c) =>
2023-03-03 16:23:46 +01:00
{
if (c._parent === questType)
{
if (furtherFilter)
{
return furtherFilter(c);
}
return true;
}
return false;
});
return filteredQuests;
}
}