mirror of
https://github.com/sp-tarkov/server.git
synced 2025-02-12 21:50:43 -05:00
Refactored code into separate functions
This commit is contained in:
parent
7284bb2fdc
commit
0c02591422
@ -24,6 +24,7 @@ import {
|
|||||||
IDirectRewardSettings,
|
IDirectRewardSettings,
|
||||||
IHideoutConfig,
|
IHideoutConfig,
|
||||||
} from "@spt/models/spt/config/IHideoutConfig";
|
} from "@spt/models/spt/config/IHideoutConfig";
|
||||||
|
import { IHideout } from "@spt/models/spt/hideout/IHideout";
|
||||||
import { ILogger } from "@spt/models/spt/utils/ILogger";
|
import { ILogger } from "@spt/models/spt/utils/ILogger";
|
||||||
import { EventOutputHolder } from "@spt/routers/EventOutputHolder";
|
import { EventOutputHolder } from "@spt/routers/EventOutputHolder";
|
||||||
import { ConfigServer } from "@spt/servers/ConfigServer";
|
import { ConfigServer } from "@spt/servers/ConfigServer";
|
||||||
@ -636,50 +637,10 @@ export class CircleOfCultistService {
|
|||||||
case CircleRewardType.HIDEOUT_TASK: {
|
case CircleRewardType.HIDEOUT_TASK: {
|
||||||
// Hideout/Task loot
|
// Hideout/Task loot
|
||||||
// Add hideout upgrade requirements
|
// Add hideout upgrade requirements
|
||||||
const dbAreas = hideoutDbData.areas;
|
this.addHideoutUpgradeRequirementsToRewardPool(hideoutDbData, pmcData, itemRewardBlacklist, rewardPool);
|
||||||
for (const profileArea of this.getPlayerAccessibleHideoutAreas(pmcData.Hideout.Areas)) {
|
|
||||||
const currentStageLevel = profileArea.level;
|
|
||||||
const areaType = profileArea.type;
|
|
||||||
|
|
||||||
// Get next stage of area
|
|
||||||
const dbArea = dbAreas.find((area) => area.type === areaType);
|
|
||||||
const nextStageDbData = dbArea?.stages[currentStageLevel + 1];
|
|
||||||
if (nextStageDbData) {
|
|
||||||
// Next stage exists, gather up requirements and add to pool
|
|
||||||
const itemRequirements = this.getItemRequirements(nextStageDbData.requirements);
|
|
||||||
for (const rewardToAdd of itemRequirements) {
|
|
||||||
if (
|
|
||||||
itemRewardBlacklist.includes(rewardToAdd.templateId) ||
|
|
||||||
!this.itemHelper.isValidItem(rewardToAdd.templateId)
|
|
||||||
) {
|
|
||||||
// Dont reward items sacrificed
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
this.logger.debug(
|
|
||||||
`Added Hideout Loot: ${this.itemHelper.getItemName(rewardToAdd.templateId)}`,
|
|
||||||
);
|
|
||||||
rewardPool.add(rewardToAdd.templateId);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Add task/quest items
|
// Add task/quest items
|
||||||
const activeTasks = pmcData.Quests.filter((quest) => quest.status === QuestStatus.Started);
|
this.addTaskItemRequirementsToRewardPool(pmcData, itemRewardBlacklist, rewardPool);
|
||||||
for (const task of activeTasks) {
|
|
||||||
const questData = this.questHelper.getQuestFromDb(task.qid, pmcData);
|
|
||||||
const handoverConditions = questData.conditions.AvailableForFinish.filter(
|
|
||||||
(c) => c.conditionType === "HandoverItem",
|
|
||||||
);
|
|
||||||
for (const condition of handoverConditions) {
|
|
||||||
for (const neededItem of condition.target) {
|
|
||||||
if (itemRewardBlacklist.includes(neededItem) || !this.itemHelper.isValidItem(neededItem)) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
this.logger.debug(`Added Task Loot: ${this.itemHelper.getItemName(neededItem)}`);
|
|
||||||
rewardPool.add(neededItem);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// If we have no tasks or hideout stuff left or need more loot to fill it out, default to high value
|
// If we have no tasks or hideout stuff left or need more loot to fill it out, default to high value
|
||||||
if (rewardPool.size < cultistCircleConfig.maxRewardItemCount + 2) {
|
if (rewardPool.size < cultistCircleConfig.maxRewardItemCount + 2) {
|
||||||
@ -704,6 +665,61 @@ export class CircleOfCultistService {
|
|||||||
return Array.from(rewardPool);
|
return Array.from(rewardPool);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected addTaskItemRequirementsToRewardPool(
|
||||||
|
pmcData: IPmcData,
|
||||||
|
itemRewardBlacklist: string[],
|
||||||
|
rewardPool: Set<string>,
|
||||||
|
) {
|
||||||
|
const activeTasks = pmcData.Quests.filter((quest) => quest.status === QuestStatus.Started);
|
||||||
|
for (const task of activeTasks) {
|
||||||
|
const questData = this.questHelper.getQuestFromDb(task.qid, pmcData);
|
||||||
|
const handoverConditions = questData.conditions.AvailableForFinish.filter(
|
||||||
|
(condition) => condition.conditionType === "HandoverItem",
|
||||||
|
);
|
||||||
|
for (const condition of handoverConditions) {
|
||||||
|
for (const neededItem of condition.target) {
|
||||||
|
if (itemRewardBlacklist.includes(neededItem) || !this.itemHelper.isValidItem(neededItem)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
this.logger.debug(`Added Task Loot: ${this.itemHelper.getItemName(neededItem)}`);
|
||||||
|
rewardPool.add(neededItem);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected addHideoutUpgradeRequirementsToRewardPool(
|
||||||
|
hideoutDbData: IHideout,
|
||||||
|
pmcData: IPmcData,
|
||||||
|
itemRewardBlacklist: string[],
|
||||||
|
rewardPool: Set<string>,
|
||||||
|
) {
|
||||||
|
const dbAreas = hideoutDbData.areas;
|
||||||
|
for (const profileArea of this.getPlayerAccessibleHideoutAreas(pmcData.Hideout.Areas)) {
|
||||||
|
const currentStageLevel = profileArea.level;
|
||||||
|
const areaType = profileArea.type;
|
||||||
|
|
||||||
|
// Get next stage of area
|
||||||
|
const dbArea = dbAreas.find((area) => area.type === areaType);
|
||||||
|
const nextStageDbData = dbArea?.stages[currentStageLevel + 1];
|
||||||
|
if (nextStageDbData) {
|
||||||
|
// Next stage exists, gather up requirements and add to pool
|
||||||
|
const itemRequirements = this.getItemRequirements(nextStageDbData.requirements);
|
||||||
|
for (const rewardToAdd of itemRequirements) {
|
||||||
|
if (
|
||||||
|
itemRewardBlacklist.includes(rewardToAdd.templateId) ||
|
||||||
|
!this.itemHelper.isValidItem(rewardToAdd.templateId)
|
||||||
|
) {
|
||||||
|
// Dont reward items sacrificed
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
this.logger.debug(`Added Hideout Loot: ${this.itemHelper.getItemName(rewardToAdd.templateId)}`);
|
||||||
|
rewardPool.add(rewardToAdd.templateId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get all active hideout areas
|
* Get all active hideout areas
|
||||||
* @param areas Hideout areas to iterate over
|
* @param areas Hideout areas to iterate over
|
||||||
|
Loading…
x
Reference in New Issue
Block a user