Files
SPT-Server-Build/Libraries/SPTarkov.Server.Core/Controllers/InRaidController.cs
T
2025-07-28 19:39:29 +00:00

82 lines
2.9 KiB
C#

using SPTarkov.DI.Annotations;
using SPTarkov.Server.Core.Helpers;
using SPTarkov.Server.Core.Models.Common;
using SPTarkov.Server.Core.Models.Eft.InRaid;
using SPTarkov.Server.Core.Models.Spt.Config;
using SPTarkov.Server.Core.Models.Utils;
using SPTarkov.Server.Core.Servers;
namespace SPTarkov.Server.Core.Controllers;
[Injectable]
public class InRaidController(
ISptLogger<InRaidController> logger,
ProfileHelper profileHelper,
//ApplicationContext _applicationContext,
ConfigServer configServer
)
{
protected readonly BotConfig _botConfig = configServer.GetConfig<BotConfig>();
protected readonly InRaidConfig _inRaidConfig = configServer.GetConfig<InRaidConfig>();
/// <summary>
/// Save locationId to active profiles in-raid object AND app context
/// </summary>
/// <param name="sessionId">Session id</param>
/// <param name="info">Register player request</param>
public void AddPlayer(MongoId sessionId, RegisterPlayerRequestData info)
{
// _applicationContext.AddValue(ContextVariableType.REGISTER_PLAYER_REQUEST, info);
}
/// <summary>
/// Handle raid/profile/scavsave
/// Save profile state to disk
/// Handles pmc/pscav
/// </summary>
/// <param name="offRaidProfileData"></param>
/// <param name="sessionId">Session/Player id</param>
public void SavePostRaidProfileForScav(ScavSaveRequestData offRaidProfileData, MongoId sessionId)
{
var serverScavProfile = profileHelper.GetScavProfile(sessionId);
// If equipment match overwrite existing data from update to date raid data for scavenger screen to work correctly.
// otherwise Scav inventory will be overwritten and break scav regeneration, breaking profile.
if (serverScavProfile.Inventory.Equipment == offRaidProfileData.Inventory.Equipment)
{
serverScavProfile.Inventory.Items = offRaidProfileData.Inventory.Items;
}
}
/// <summary>
/// Get the inraid config from configs/inraid.json
/// </summary>
public InRaidConfig GetInRaidConfig()
{
return _inRaidConfig;
}
/// <summary>
/// Handle singleplayer/scav/traitorscavhostile
/// Get a % chance a scav will be hostile to the player when they're also a scav
/// </summary>
/// <param name="url"></param>
/// <param name="sessionId">Session/Player id</param>
/// <returns>% chance scav is hostile to player</returns>
public double GetTraitorScavHostileChance(string url, MongoId sessionId)
{
return _inRaidConfig.PlayerScavHostileChancePercent;
}
/// <summary>
/// Get all boss role types e.g. bossTagilla
/// </summary>
/// <param name="url"></param>
/// <param name="sessionId">Session/Player id</param>
/// <returns>string array of boss types</returns>
public List<string> GetBossTypes(string url, MongoId sessionId)
{
return _botConfig.Bosses;
}
}