Add handling for quest failing while player is at menu

This commit is contained in:
Dev 2024-01-05 15:27:28 +00:00
parent b5951a147b
commit 3979e6ef61
6 changed files with 29 additions and 5 deletions

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -317,7 +317,7 @@ export class InRaidHelper
{
// Send failed message
const failBody: IFailQuestRequestData = {
Action: "QuestComplete",
Action: "QuestFail",
qid: postRaidQuest.qid,
removeExcessItems: true,
};

View File

@ -1,6 +1,6 @@
export interface IFailQuestRequestData
{
Action: "QuestComplete";
Action: "QuestFail";
qid: string;
removeExcessItems: boolean;
}

View File

@ -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"
}

View File

@ -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),
];
}