mirror of
https://github.com/sp-tarkov/server.git
synced 2025-02-13 09:50:43 -05:00
3.10.0-DEV WIP: Fixes #771 - Quest items not appearing on the case of dying after collecting them. Fixes an issue with gulp v5 corrupting pngs. (!403)
See #771 for discussion and bug report. Implementation deletes the specific task's completedCondition so as to allow the item to appear again. Gulp v5 has a known issue that corrupts pngs when copying or moving them, this turns off encoding for the copying assets part of the build task. Reference was [this stack post](https://stackoverflow.com/questions/78391263/copying-images-with-gulp-are-corrupted-damaged). Reviewed-on: SPT/Server#403 Co-authored-by: crustyselenium <crustyselenium@gmail.com> Co-committed-by: crustyselenium <crustyselenium@gmail.com>
This commit is contained in:
parent
2dfee92a4d
commit
0342a0c39c
@ -122,7 +122,9 @@ const updateBuildProperties = async () => {
|
||||
*/
|
||||
const copyAssets = () =>
|
||||
gulp
|
||||
.src(["assets/**/*.json", "assets/**/*.json5", "assets/**/*.png", "assets/**/*.jpg", "assets/**/*.ico"])
|
||||
.src(["assets/**/*.json", "assets/**/*.json5", "assets/**/*.png", "assets/**/*.jpg", "assets/**/*.ico"], {
|
||||
encoding: false,
|
||||
})
|
||||
.pipe(gulp.dest(dataDir));
|
||||
|
||||
/**
|
||||
|
@ -1,3 +1,4 @@
|
||||
import { QuestController } from "@spt/controllers/QuestController";
|
||||
import { InventoryHelper } from "@spt/helpers/InventoryHelper";
|
||||
import { ItemHelper } from "@spt/helpers/ItemHelper";
|
||||
import { IPmcData } from "@spt/models/eft/common/IPmcData";
|
||||
@ -10,6 +11,8 @@ import { ConfigServer } from "@spt/servers/ConfigServer";
|
||||
import { DatabaseService } from "@spt/services/DatabaseService";
|
||||
import { ICloner } from "@spt/utils/cloners/ICloner";
|
||||
import { inject, injectable } from "tsyringe";
|
||||
import { ProfileHelper } from "./ProfileHelper";
|
||||
import { QuestHelper } from "./QuestHelper";
|
||||
|
||||
@injectable()
|
||||
export class InRaidHelper {
|
||||
@ -23,6 +26,9 @@ export class InRaidHelper {
|
||||
@inject("ConfigServer") protected configServer: ConfigServer,
|
||||
@inject("PrimaryCloner") protected cloner: ICloner,
|
||||
@inject("DatabaseService") protected databaseService: DatabaseService,
|
||||
@inject("QuestController") protected questController: QuestController,
|
||||
@inject("ProfileHelper") protected profileHelper: ProfileHelper,
|
||||
@inject("QuestHelper") protected questHelper: QuestHelper,
|
||||
) {
|
||||
this.lostOnDeathConfig = this.configServer.getConfig(ConfigTypes.LOST_ON_DEATH);
|
||||
this.inRaidConfig = this.configServer.getConfig(ConfigTypes.IN_RAID);
|
||||
@ -149,6 +155,23 @@ export class InRaidHelper {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes quest conditions from pickup tasks given a list of quest items being carried by a PMC.
|
||||
* @param carriedQuestItems Items carried by PMC at death, usually gotten from "CarriedQuestItems"
|
||||
* @param sessionId Current sessionId
|
||||
* @param pmcProfile Pre-raid profile that is being handled with raid information
|
||||
*/
|
||||
public removePickupQuestConditions(carriedQuestItems: string[], sessionId: string, pmcProfile: IPmcData) {
|
||||
if (carriedQuestItems && this.lostOnDeathConfig.questItems) {
|
||||
const pmcQuests = this.questController.getClientQuests(sessionId);
|
||||
const pmcQuestIds = pmcQuests.map((a) => a._id);
|
||||
for (const item of carriedQuestItems) {
|
||||
const failedQuestId = this.questHelper.getFindItemConditionByQuestItem(item, pmcQuestIds, pmcQuests);
|
||||
this.profileHelper.removeQuestConditionFromProfile(pmcProfile, failedQuestId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get an array of items from a profile that will be lost on death
|
||||
* @param pmcProfile Profile to get items from
|
||||
|
@ -472,6 +472,12 @@ export class LocationLifecycleService {
|
||||
this.healthHelper.updateProfileHealthPostRaid(pmcProfile, postRaidProfile.Health, sessionId, isDead);
|
||||
|
||||
if (isDead) {
|
||||
this.inRaidHelper.removePickupQuestConditions(
|
||||
postRaidProfile.Stats.Eft.CarriedQuestItems,
|
||||
sessionId,
|
||||
pmcProfile,
|
||||
);
|
||||
|
||||
this.pmcChatResponseService.sendKillerResponse(sessionId, pmcProfile, postRaidProfile.Stats.Eft.Aggressor);
|
||||
|
||||
this.inRaidHelper.deleteInventory(pmcProfile, sessionId);
|
||||
|
Loading…
x
Reference in New Issue
Block a user