2024-05-21 17:59:04 +00:00
|
|
|
import { IQuestCondition } from "@spt/models/eft/common/tables/IQuest";
|
2024-07-23 11:12:53 -04:00
|
|
|
import { injectable } from "tsyringe";
|
2023-03-03 15:23:46 +00:00
|
|
|
|
|
|
|
@injectable()
|
2024-07-23 11:12:53 -04:00
|
|
|
export class QuestConditionHelper {
|
2023-11-15 20:35:05 -05:00
|
|
|
public getQuestConditions(
|
2024-01-05 19:52:21 +00:00
|
|
|
q: IQuestCondition[],
|
2024-05-27 20:06:07 +00:00
|
|
|
furtherFilter?: (a: IQuestCondition) => IQuestCondition[],
|
2024-07-23 11:12:53 -04:00
|
|
|
): 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(
|
2024-01-05 19:52:21 +00:00
|
|
|
q: IQuestCondition[],
|
2024-05-27 20:06:07 +00:00
|
|
|
furtherFilter?: (a: IQuestCondition) => IQuestCondition[],
|
2024-07-23 11:12:53 -04:00
|
|
|
): 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(
|
2024-01-05 19:52:21 +00:00
|
|
|
q: IQuestCondition[],
|
2024-05-27 20:06:07 +00:00
|
|
|
furtherFilter?: (a: IQuestCondition) => IQuestCondition[],
|
2024-07-23 11:12:53 -04:00
|
|
|
): 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(
|
2024-01-05 19:52:21 +00:00
|
|
|
q: IQuestCondition[],
|
2024-05-27 20:06:07 +00:00
|
|
|
furtherFilter?: (a: IQuestCondition) => IQuestCondition[],
|
2024-07-23 11:12:53 -04:00
|
|
|
): IQuestCondition[] {
|
2023-10-10 11:03:20 +00:00
|
|
|
return this.filterConditions(q, "TraderStanding", furtherFilter);
|
|
|
|
}
|
|
|
|
|
2023-11-15 20:35:05 -05:00
|
|
|
protected filterConditions(
|
2024-01-05 19:52:21 +00:00
|
|
|
q: IQuestCondition[],
|
2023-11-15 20:35:05 -05:00
|
|
|
questType: string,
|
2024-05-27 20:06:07 +00:00
|
|
|
furtherFilter?: (a: IQuestCondition) => IQuestCondition[],
|
2024-07-23 11:12:53 -04:00
|
|
|
): 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
|
|
|
}
|