Changes to MailSendService

originally we had the trader id -> then used a method to get the EnumValue as a string -> then later turned it BACK into a traderId

unless im missing something major this should simplify things?

example:
we took "6617beeaa9cfa777ca915b7c" and turned it to "Ref" to then turn it back to "6617beeaa9cfa777ca915b7c"
This commit is contained in:
CWX
2025-04-08 22:03:43 +01:00
parent 617b95b911
commit 95d009e0e4
9 changed files with 18 additions and 12 deletions
@@ -595,7 +595,7 @@ public class InsuranceController(
// Send the insurance message
_mailSendService.SendLocalisedNpcMessageToPlayer(
sessionId,
_traderHelper.GetTraderById(insurance.TraderId).ToString(),
insurance.TraderId,
insurance.MessageType ?? MessageType.SYSTEM_MESSAGE,
insurance.MessageTemplateId,
insurance.Items,
@@ -110,7 +110,7 @@ public class QuestController(
// Send started text + any starting reward items found above to player
_mailSendService.SendLocalisedNpcMessageToPlayer(
sessionID,
_traderHelper.GetTraderById(questFromDb.TraderId).ToString(),
questFromDb.TraderId,
MessageType.QUEST_START,
messageId,
startedQuestRewardItems.ToList(),
@@ -320,7 +320,7 @@ public class TradeController(
// Send mail from trader
_mailSendService.SendLocalisedNpcMessageToPlayer(
sessionId,
_traderHelper.GetTraderById(trader).ToString(),
trader,
MessageType.MESSAGE_WITH_ITEMS,
_randomUtil.GetArrayValue(_databaseService.GetTrader(trader).Dialogue.TryGetValue("soldItems", out var items) ? items : new List<string>()),
curencyReward.SelectMany(x => x).ToList(),
@@ -741,8 +741,7 @@ public class QuestHelper(
{
_mailSendService.SendLocalisedNpcMessageToPlayer(
sessionID,
_traderHelper.GetTraderById(quest?.TraderId ?? matchingRepeatableQuest?.TraderId)
.ToString(), // Can be undefined when repeatable quest has been moved to inactiveQuests
quest?.TraderId ?? matchingRepeatableQuest?.TraderId,
MessageType.QUEST_FAIL,
quest.FailMessageText,
questRewards.ToList(),
@@ -1379,7 +1378,7 @@ public class QuestHelper(
_mailSendService.SendLocalisedNpcMessageToPlayer(
sessionID,
_traderHelper.GetTraderById(quest.TraderId).ToString(),
quest.TraderId,
MessageType.QUEST_SUCCESS,
quest.SuccessMessageText,
questRewards,
@@ -129,7 +129,7 @@ public class RagfairServerHelper(
{
mailSendService.SendLocalisedNpcMessageToPlayer(
sessionID,
traderHelper.GetTraderById(Traders.RAGMAN).ToString(),
Traders.RAGMAN,
MessageType.MESSAGE_WITH_ITEMS,
goodsReturnedTemplate,
returnedItems,
@@ -625,6 +625,7 @@ public class TraderHelper(
/// </summary>
/// <param name="traderEnumValue">The trader enum value to validate</param>
/// <returns>The validated trader enum value as a string, or an empty string if invalid</returns>
/// TODO: might not be needed
public string GetValidTraderIdByEnumValue(string traderEnumValue)
{
var traderId = _databaseService.GetTraders();
@@ -110,7 +110,7 @@ public class InsuranceService(
// Send "i will go look for your stuff" message from trader to player
_mailSendService.SendLocalisedNpcMessageToPlayer(
sessionID,
traderEnum.ToString(),
traderKvP.Key,
MessageType.NPC_TRADER,
_randomUtil.GetArrayValue(dialogueTemplates["insuranceStart"] ?? ["INSURANCE START MESSAGE MISSING"]),
null,
@@ -513,7 +513,7 @@ public class LocationLifecycleService
// Send message from fence giving player reward generated above
_mailSendService.SendLocalisedNpcMessageToPlayer(
sessionId,
_traderHelper.GetValidTraderIdByEnumValue(Traders.FENCE),
Traders.FENCE,
MessageType.MESSAGE_WITH_ITEMS,
_randomUtil.GetArrayValue(_traderConfig.Fence.CoopExtractGift.MessageLocaleIds),
mailableLoot,
@@ -1137,7 +1137,7 @@ public class LocationLifecycleService
// Send the items to the player
_mailSendService.SendLocalisedNpcMessageToPlayer(
sessionId,
_traderHelper.GetValidTraderIdByEnumValue(traderId),
traderId,
MessageType.BTR_ITEMS_DELIVERY,
messageId,
items,
@@ -8,6 +8,7 @@ using SPTarkov.Server.Core.Servers;
using SPTarkov.Server.Core.Utils;
using SPTarkov.Server.Core.Utils.Cloners;
using SPTarkov.Common.Annotations;
using LogLevel = SPTarkov.Server.Core.Models.Spt.Logging.LogLevel;
namespace SPTarkov.Server.Core.Services;
@@ -656,7 +657,12 @@ public class MailSendService(
if (messageDetails.Sender == MessageType.NPC_TRADER || messageDetails.DialogType == MessageType.NPC_TRADER)
{
return messageDetails.Trader is not null ? _traderHelper.GetValidTraderIdByEnumValue(messageDetails.Trader) : null;
if (messageDetails.Trader == null && _logger.IsLogEnabled(LogLevel.Debug))
{
_logger.Debug($"Trader was null for {messageDetails.TemplateId}");
}
return messageDetails.Trader;
}
if (messageDetails.Sender == MessageType.USER_MESSAGE)
@@ -671,7 +677,7 @@ public class MailSendService(
if (messageDetails.Trader is not null)
{
return _traderHelper.GetValidTraderIdByEnumValue(messageDetails.Trader);
return messageDetails.Trader;
}
_logger.Warning($"Unable to handle message of type: {messageDetails.Sender}");