diff --git a/project/src/callbacks/InventoryCallbacks.ts b/project/src/callbacks/InventoryCallbacks.ts index 0bb1ef61..b3e6d0c6 100644 --- a/project/src/callbacks/InventoryCallbacks.ts +++ b/project/src/callbacks/InventoryCallbacks.ts @@ -1,6 +1,7 @@ import { inject, injectable } from "tsyringe"; import { InventoryController } from "@spt-aki/controllers/InventoryController"; +import { QuestController } from "@spt-aki/controllers/QuestController"; import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; import { IInventoryBindRequestData } from "@spt-aki/models/eft/inventory/IInventoryBindRequestData"; import { IInventoryCreateMarkerRequestData } from "@spt-aki/models/eft/inventory/IInventoryCreateMarkerRequestData"; @@ -22,11 +23,15 @@ import { IOpenRandomLootContainerRequestData } from "@spt-aki/models/eft/invento import { IRedeemProfileRequestData } from "@spt-aki/models/eft/inventory/IRedeemProfileRequestData"; import { ISetFavoriteItems } from "@spt-aki/models/eft/inventory/ISetFavoriteItems"; import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; +import { IFailQuestRequestData } from "@spt-aki/models/eft/quests/IFailQuestRequestData"; @injectable() export class InventoryCallbacks { - constructor(@inject("InventoryController") protected inventoryController: InventoryController) + constructor( + @inject("InventoryController") protected inventoryController: InventoryController, + @inject("QuestController") protected questController: QuestController + ) {} /** Handle Move event */ @@ -173,4 +178,9 @@ export class InventoryCallbacks { return this.inventoryController.setFavoriteItem(pmcData, body, sessionId); } + + public failQuest(pmcData: IPmcData, request: IFailQuestRequestData, sessionID: string): IItemEventRouterResponse + { + return this.questController.failQuest(pmcData, request, sessionID); + } } diff --git a/project/src/controllers/QuestController.ts b/project/src/controllers/QuestController.ts index 7f0b3d6c..c339d415 100644 --- a/project/src/controllers/QuestController.ts +++ b/project/src/controllers/QuestController.ts @@ -718,7 +718,7 @@ export class QuestController if (isActiveQuestInPlayerProfile) { const failBody: IFailQuestRequestData = { - Action: "QuestComplete", + Action: "QuestFail", qid: questToFail._id, removeExcessItems: true, }; @@ -939,4 +939,16 @@ export class QuestController type: "HandoverItem", value: counterValue }; } + + /** + * Handle /client/game/profile/items/moving - QuestFail + * @param pmcData Pmc profile + * @param request Fail qeust request + * @param sessionID Session id + * @returns IItemEventRouterResponse + */ + public failQuest(pmcData: IPmcData, request: IFailQuestRequestData, sessionID: string): IItemEventRouterResponse + { + return this.questHelper.failQuest(pmcData, request, sessionID); + } } diff --git a/project/src/helpers/InRaidHelper.ts b/project/src/helpers/InRaidHelper.ts index 062685c6..d200eccc 100644 --- a/project/src/helpers/InRaidHelper.ts +++ b/project/src/helpers/InRaidHelper.ts @@ -317,7 +317,7 @@ export class InRaidHelper { // Send failed message const failBody: IFailQuestRequestData = { - Action: "QuestComplete", + Action: "QuestFail", qid: postRaidQuest.qid, removeExcessItems: true, }; diff --git a/project/src/models/eft/quests/IFailQuestRequestData.ts b/project/src/models/eft/quests/IFailQuestRequestData.ts index 9beb44f5..748812cd 100644 --- a/project/src/models/eft/quests/IFailQuestRequestData.ts +++ b/project/src/models/eft/quests/IFailQuestRequestData.ts @@ -1,6 +1,6 @@ export interface IFailQuestRequestData { - Action: "QuestComplete"; + Action: "QuestFail"; qid: string; removeExcessItems: boolean; } diff --git a/project/src/models/enums/ItemEventActions.ts b/project/src/models/enums/ItemEventActions.ts index 79587fad..30b27867 100644 --- a/project/src/models/enums/ItemEventActions.ts +++ b/project/src/models/enums/ItemEventActions.ts @@ -24,5 +24,6 @@ export enum ItemEventActions { SAVE_EQUIPMENT_BUILD = "SaveEquipmentBuild", REMOVE_EQUIPMENT_BUILD = "RemoveEquipmentBuild", REDEEM_PROFILE_REWARD = "RedeemProfileReward", - SET_FAVORITE_ITEMS = "SetFavoriteItems" + SET_FAVORITE_ITEMS = "SetFavoriteItems", + QUEST_FAIL = "QuestFail" } diff --git a/project/src/routers/item_events/InventoryItemEventRouter.ts b/project/src/routers/item_events/InventoryItemEventRouter.ts index 0b5adbd7..391f43fa 100644 --- a/project/src/routers/item_events/InventoryItemEventRouter.ts +++ b/project/src/routers/item_events/InventoryItemEventRouter.ts @@ -42,6 +42,7 @@ export class InventoryItemEventRouter extends ItemEventRouterDefinition new HandledRoute(ItemEventActions.HIDEOUT_QTE_EVENT, false), new HandledRoute(ItemEventActions.REDEEM_PROFILE_REWARD, false), new HandledRoute(ItemEventActions.SET_FAVORITE_ITEMS, false), + new HandledRoute(ItemEventActions.QUEST_FAIL, false), ]; }