Server/project/src/helpers/QuestConditionHelper.ts

52 lines
1.6 KiB
TypeScript
Raw Normal View History

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