Merge branch 'main' of https://github.com/sp-tarkov/server-csharp
This commit is contained in:
@@ -303,6 +303,7 @@ public class MatchCallbacks(
|
||||
/// <returns></returns>
|
||||
public string GetRaidConfiguration(string url, GetRaidConfigurationRequestData info, string sessionID)
|
||||
{
|
||||
_matchController.ConfigureOfflineRaid(info, sessionID);
|
||||
return _httpResponseUtil.NullResponse();
|
||||
}
|
||||
|
||||
|
||||
@@ -132,15 +132,13 @@ public class BotController(
|
||||
|
||||
public List<BotBase> Generate(string sessionId, GenerateBotsRequestData info)
|
||||
{
|
||||
// var pmcProfile = _profileHelper.GetPmcProfile(sessionId);
|
||||
//
|
||||
// // Use this opportunity to create and cache bots for later retrieval
|
||||
// var multipleBotTypesRequested = info.Conditions?.Count > 1;
|
||||
// return multipleBotTypesRequested
|
||||
// ? GenerateMultipleBotsAndCache(info, pmcProfile, sessionId)
|
||||
// : ReturnSingleBotFromCache(sessionId, info);
|
||||
|
||||
return new List<BotBase>();
|
||||
var pmcProfile = _profileHelper.GetPmcProfile(sessionId);
|
||||
|
||||
// Use this opportunity to create and cache bots for later retrieval
|
||||
var multipleBotTypesRequested = info.Conditions?.Count > 1;
|
||||
return multipleBotTypesRequested
|
||||
? GenerateMultipleBotsAndCache(info, pmcProfile, sessionId)
|
||||
: ReturnSingleBotFromCache(sessionId, info);
|
||||
}
|
||||
|
||||
private List<BotBase> GenerateMultipleBotsAndCache(GenerateBotsRequestData request, PmcData? pmcProfile, string sessionId)
|
||||
@@ -205,16 +203,16 @@ public class BotController(
|
||||
|
||||
for (var i = 0; i < botsToGenerate; i++)
|
||||
{
|
||||
try
|
||||
{
|
||||
// try
|
||||
// {
|
||||
var detailsClone = _cloner.Clone(botGenerationDetails);
|
||||
GenerateSingleBotAndStoreInCache(detailsClone, sessionId, cacheKey);
|
||||
progressWriter.Increment();
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
_logger.Error($"Failed to generate bot #{i + 1}: {e.Message}");
|
||||
}
|
||||
// }
|
||||
// catch (Exception e)
|
||||
// {
|
||||
// _logger.Error($"Failed to generate bot #{i + 1}: {e.Message}");
|
||||
// }
|
||||
}
|
||||
|
||||
_logger.Debug(
|
||||
@@ -358,7 +356,7 @@ public class BotController(
|
||||
{
|
||||
var mapSpecificConversionValues = _pmcConfig.ConvertIntoPmcChance!.GetValueOrDefault(location?.ToLower(), null);
|
||||
return mapSpecificConversionValues is null
|
||||
? _pmcConfig.ConvertIntoPmcChance.GetByJsonProp<Dictionary<string, MinMax>>("default").GetByJsonProp<MinMax>(requestedBotRole)
|
||||
? _pmcConfig.ConvertIntoPmcChance.GetValueOrDefault("default")?.GetValueOrDefault(requestedBotRole)
|
||||
: mapSpecificConversionValues.GetByJsonProp<MinMax>(requestedBotRole?.ToLower());
|
||||
}
|
||||
|
||||
|
||||
@@ -46,7 +46,47 @@ public class RagfairOfferHelper(
|
||||
Dictionary<string, TraderAssort> traderAssorts,
|
||||
PmcData pmcData)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
var playerIsFleaBanned = _profileHelper.PlayerIsFleaBanned(pmcData);
|
||||
var tieredFlea = _ragfairConfig.TieredFlea;
|
||||
var tieredFleaLimitTypes = tieredFlea.UnlocksType;
|
||||
return _ragfairOfferService.GetOffers()
|
||||
.Where(
|
||||
offer =>
|
||||
{
|
||||
if (!PassesSearchFilterCriteria(searchRequest, offer, pmcData))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
var isDisplayable = IsDisplayableOffer(
|
||||
searchRequest,
|
||||
itemsToAdd,
|
||||
traderAssorts,
|
||||
offer,
|
||||
pmcData,
|
||||
playerIsFleaBanned
|
||||
);
|
||||
|
||||
if (!isDisplayable)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
// Not trader offer + tiered flea enabled
|
||||
if (tieredFlea.Enabled && !OfferIsFromTrader(offer))
|
||||
{
|
||||
CheckAndLockOfferFromPlayerTieredFlea(
|
||||
tieredFlea,
|
||||
offer,
|
||||
tieredFleaLimitTypes.Keys.ToList(),
|
||||
pmcData.Info.Level.Value
|
||||
);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
)
|
||||
.ToList();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -114,19 +154,28 @@ public class RagfairOfferHelper(
|
||||
var requiredOffers = _ragfairRequiredItemsService.GetRequiredItemsById(searchRequest.NeededSearchId);
|
||||
var tieredFlea = _ragfairConfig.TieredFlea;
|
||||
var tieredFleaLimitTypes = tieredFlea.UnlocksType;
|
||||
return requiredOffers.Where((offer) => {
|
||||
if (!PassesSearchFilterCriteria(searchRequest, offer, pmcData))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return requiredOffers.Where(
|
||||
offer =>
|
||||
{
|
||||
if (!PassesSearchFilterCriteria(searchRequest, offer, pmcData))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (tieredFlea.Enabled && !OfferIsFromTrader(offer))
|
||||
{
|
||||
CheckAndLockOfferFromPlayerTieredFlea(tieredFlea, offer, tieredFleaLimitTypes.Keys.ToList(), pmcData.Info.Level.Value);
|
||||
}
|
||||
if (tieredFlea.Enabled && !OfferIsFromTrader(offer))
|
||||
{
|
||||
CheckAndLockOfferFromPlayerTieredFlea(
|
||||
tieredFlea,
|
||||
offer,
|
||||
tieredFleaLimitTypes.Keys.ToList(),
|
||||
pmcData.Info.Level.Value
|
||||
);
|
||||
}
|
||||
|
||||
return true;
|
||||
}).ToList();
|
||||
return true;
|
||||
}
|
||||
)
|
||||
.ToList();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -624,7 +673,7 @@ public class RagfairOfferHelper(
|
||||
protected void DeleteOfferById(string sessionId, string offerId)
|
||||
{
|
||||
var profileRagfairInfo = _profileHelper.GetPmcProfile(sessionId).RagfairInfo;
|
||||
var index = profileRagfairInfo.Offers.FindIndex((o) => o.Id == offerId);
|
||||
var index = profileRagfairInfo.Offers.FindIndex(o => o.Id == offerId);
|
||||
profileRagfairInfo.Offers.Splice(index, 1);
|
||||
|
||||
// Also delete from ragfair
|
||||
|
||||
@@ -122,8 +122,8 @@ public class BotEquipmentFilterService
|
||||
|
||||
foreach (var itemKey in generationChanges)
|
||||
{
|
||||
baseBotGeneration.Items.GetByJsonProp<GenerationData>(itemKey.Key).Weights = generationChanges.GetByJsonProp<GenerationData>(itemKey.Key).Weights;
|
||||
baseBotGeneration.Items.GetByJsonProp<GenerationData>(itemKey.Key).Whitelist = generationChanges.GetByJsonProp<GenerationData>(itemKey.Key).Whitelist;
|
||||
baseBotGeneration.Items.GetByJsonProp<GenerationData>(itemKey.Key).Weights = generationChanges.GetValueOrDefault(itemKey.Key).Weights;
|
||||
baseBotGeneration.Items.GetByJsonProp<GenerationData>(itemKey.Key).Whitelist = generationChanges.GetValueOrDefault(itemKey.Key).Whitelist;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -476,7 +476,7 @@ public class BotEquipmentFilterService
|
||||
foreach (var itemToEditKvP in poolAdjustmentKvP.Value)
|
||||
{
|
||||
// Only make change if item exists as we're editing, not adding
|
||||
if (locationToUpdate[itemToEditKvP.Key] != null || locationToUpdate[itemToEditKvP.Key] == 0)
|
||||
if (locationToUpdate.GetValueOrDefault(itemToEditKvP.Key) != null || locationToUpdate.GetValueOrDefault(itemToEditKvP.Key) == 0)
|
||||
{
|
||||
locationToUpdate[itemToEditKvP.Key] = itemToEditKvP.Value;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using SptCommon.Annotations;
|
||||
using Core.Models.Eft.Common.Tables;
|
||||
using Core.Models.Utils;
|
||||
using SptCommon.Extensions;
|
||||
|
||||
namespace Core.Services;
|
||||
|
||||
@@ -43,7 +44,7 @@ public class BotGenerationCacheService(
|
||||
{
|
||||
try
|
||||
{
|
||||
return _activeBotsInRaid.Dequeue();
|
||||
return bots.Pop();
|
||||
}
|
||||
catch (Exception _)
|
||||
{
|
||||
|
||||
@@ -156,6 +156,7 @@ public class LocationLifecycleService
|
||||
var transitionData = _applicationContext
|
||||
.GetLatestValue(ContextVariableType.TRANSIT_INFO)
|
||||
?.GetValue<LocationTransit>();
|
||||
|
||||
if (transitionData is not null) {
|
||||
_logger.Success($"Player: {sessionId} is in transit to {request.Location}");
|
||||
result.Transition.TransitionType = TransitionType.COMMON;
|
||||
|
||||
@@ -8,4 +8,11 @@ public static class ListExtensions
|
||||
source.RemoveRange(index,count);
|
||||
return items;
|
||||
}
|
||||
|
||||
public static T Pop<T>(this List<T> source)
|
||||
{
|
||||
T r = source.Last();
|
||||
source.Remove(source.Last());
|
||||
return r;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user