This commit is contained in:
Valens
2025-01-25 12:26:17 -05:00
7 changed files with 91 additions and 34 deletions
@@ -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();
}
+15 -17
View File
@@ -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());
}
+62 -13
View File
@@ -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;
+7
View File
@@ -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;
}
}