Store data passed back from SaveDialogueState call (#568)

* Store data passed back from SaveDialogueState call
This makes the rest area game playable, though variables still don't save

* Woops, bad casing

---------

Co-authored-by: DrakiaXYZ <565558+TheDgtl@users.noreply.github.com>
This commit is contained in:
DrakiaXYZ
2025-08-24 00:58:08 -07:00
committed by GitHub
parent dce403c10e
commit 18aca7d514
5 changed files with 27 additions and 5 deletions
@@ -379,6 +379,7 @@ public class InventoryCallbacks(InventoryController inventoryController, QuestCo
ItemEventRouterResponse output
)
{
throw new NotImplementedException();
inventoryController.SetDialogueProgress(pmcData, request, sessionId, output);
return output;
}
}
@@ -136,6 +136,19 @@ public class InventoryController(
itemToAdjust.Upd.PinLockState = request.State;
}
/// <summary>
/// Handle /client/game/profile/items/moving SaveDialogueState
/// </summary>
/// <param name="pmcData">Player's PMC profile</param>
/// <param name="request"></param>
/// <param name="sessionId">Session/Player id</param>
/// <param name="output"></param>
public void SetDialogueProgress(PmcData pmcData, SaveDialogueStateRequest request, MongoId sessionId, ItemEventRouterResponse output)
{
var fullProfile = profileHelper.GetFullProfile(sessionId);
fullProfile.DialogueProgress = request.DialogueProgress;
}
/// <summary>
/// Handle /client/game/profile/items/moving SetFavoriteItems
/// </summary>
@@ -5,17 +5,17 @@ namespace SPTarkov.Server.Core.Models.Eft.Inventory;
public record SaveDialogueStateRequest : InventoryBaseActionRequestData
{
[JsonPropertyName("nodePathTraveled")]
public List<NodePathTraveled> NodePathTraveled { get; set; }
public List<NodePathTraveled>? DialogueProgress { get; set; }
}
public class NodePathTraveled
{
[JsonPropertyName("traderId")]
public string TraderId { get; set; }
public string? TraderId { get; set; }
[JsonPropertyName("dialogueId")]
public string DialogueId { get; set; }
public string? DialogueId { get; set; }
[JsonPropertyName("nodeId")]
public string NodeId { get; set; }
public string? NodeId { get; set; }
}
@@ -2,6 +2,7 @@ using System.Text.Json.Serialization;
using SPTarkov.Server.Core.Models.Common;
using SPTarkov.Server.Core.Models.Eft.Common;
using SPTarkov.Server.Core.Models.Eft.Common.Tables;
using SPTarkov.Server.Core.Models.Eft.Inventory;
using SPTarkov.Server.Core.Models.Eft.Prestige;
using SPTarkov.Server.Core.Models.Enums;
using SPTarkov.Server.Core.Models.Spt.Dialog;
@@ -58,6 +59,12 @@ public record SptProfile
/// </summary>
[JsonPropertyName("customisationUnlocks")]
public List<CustomisationStorage>? CustomisationUnlocks { get; set; }
/// <summary>
/// Stores the most recently sent dialog progress result from the client
/// </summary>
[JsonPropertyName("dialogueProgress")]
public List<NodePathTraveled>? DialogueProgress { get; set; }
}
public record TraderPurchaseData
@@ -42,6 +42,7 @@ public class InventoryItemEventRouter(InventoryCallbacks inventoryCallbacks, Hid
new(ItemEventActions.SET_FAVORITE_ITEMS, false),
new(ItemEventActions.QUEST_FAIL, false),
new(ItemEventActions.PIN_LOCK, false),
new(ItemEventActions.SAVE_DIALOGUE_STATE, false),
};
}