diff --git a/Libraries/Core/Generators/RagfairOfferGenerator.cs b/Libraries/Core/Generators/RagfairOfferGenerator.cs index 7a8c7760..df48ddfe 100644 --- a/Libraries/Core/Generators/RagfairOfferGenerator.cs +++ b/Libraries/Core/Generators/RagfairOfferGenerator.cs @@ -1,4 +1,4 @@ -using System.Runtime.InteropServices.JavaScript; +using System.Runtime.InteropServices.JavaScript; using Core.Helpers; using SptCommon.Annotations; using Core.Models.Eft.Common.Tables; @@ -331,8 +331,10 @@ public class RagfairOfferGenerator( ? expiredOffers ?? [] : ragfairAssortGenerator.GetAssortItems(); - - assortItemsToProcess.ForEach(assortItemWithChildren => CreateOffersFromAssort(assortItemWithChildren, replacingExpiredOffers, ragfairConfig.Dynamic)); + foreach (var assortItem in assortItemsToProcess) + { + CreateOffersFromAssort(assortItem, replacingExpiredOffers, ragfairConfig.Dynamic); + } } @@ -465,8 +467,11 @@ public class RagfairOfferGenerator( armorConfig.PlateSlotIdToRemovePool.Contains(item.SlotId?.ToLower()) ); - foreach (var plateItem in offerItemPlatesToRemove) { - itemWithChildren.Splice(itemWithChildren.IndexOf(plateItem), 1); + // Latest first, to ensure we don't move later items off by 1 each time we remove an item below it + var indexesToRemove = offerItemPlatesToRemove.Select(plateItem => itemWithChildren.IndexOf(plateItem)).ToList(); + foreach (var index in indexesToRemove.OrderByDescending(x => x)) + { + itemWithChildren.RemoveAt(index); } } } diff --git a/Libraries/Core/Helpers/ItemHelper.cs b/Libraries/Core/Helpers/ItemHelper.cs index 9a83c5e2..48dc5c85 100644 --- a/Libraries/Core/Helpers/ItemHelper.cs +++ b/Libraries/Core/Helpers/ItemHelper.cs @@ -1148,7 +1148,7 @@ public class ItemHelper( public bool IsQuestItem(string tpl) { var itemDetails = GetItem(tpl); - if (itemDetails.Key && itemDetails.Value.Properties.QuestItem != null) + if (itemDetails.Key && itemDetails.Value.Properties.QuestItem.GetValueOrDefault(false)) return true; return false; diff --git a/Libraries/Core/Helpers/RagfairServerHelper.cs b/Libraries/Core/Helpers/RagfairServerHelper.cs index cd1ebf66..43355ef4 100644 --- a/Libraries/Core/Helpers/RagfairServerHelper.cs +++ b/Libraries/Core/Helpers/RagfairServerHelper.cs @@ -1,4 +1,4 @@ -using System.Runtime.InteropServices.JavaScript; +using System.Runtime.InteropServices.JavaScript; using SptCommon.Annotations; using Core.Models.Eft.Common.Tables; using Core.Models.Enums; @@ -182,7 +182,9 @@ public class RagfairServerHelper( } } - return bias[(int) Math.Floor(randomUtil.RandNum(0, 1) * bias.Count)]; + var index = Math.Min((int)Math.Floor((randomUtil.RandNum(0, 1, 14) * bias.Count)), 99); + + return bias[index]; } /** diff --git a/Libraries/Core/Models/Eft/Ragfair/AddOfferRequestData.cs b/Libraries/Core/Models/Eft/Ragfair/AddOfferRequestData.cs index 67cd02a1..d0ab78b8 100644 --- a/Libraries/Core/Models/Eft/Ragfair/AddOfferRequestData.cs +++ b/Libraries/Core/Models/Eft/Ragfair/AddOfferRequestData.cs @@ -20,8 +20,9 @@ public record Requirement [JsonPropertyName("_tpl")] public string? Template { get; set; } + // Can be decimal value [JsonPropertyName("count")] - public int? Count { get; set; } + public double? Count { get; set; } [JsonPropertyName("level")] public int? Level { get; set; } diff --git a/Libraries/Core/Models/Eft/Ragfair/GetMarketPriceRequestData.cs b/Libraries/Core/Models/Eft/Ragfair/GetMarketPriceRequestData.cs index 6f6f8fce..52691bea 100644 --- a/Libraries/Core/Models/Eft/Ragfair/GetMarketPriceRequestData.cs +++ b/Libraries/Core/Models/Eft/Ragfair/GetMarketPriceRequestData.cs @@ -1,8 +1,9 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.Ragfair; -public record GetMarketPriceRequestData +public record GetMarketPriceRequestData : IRequestData { [JsonPropertyName("templateId")] public string? TemplateId { get; set; } diff --git a/Libraries/Core/Models/Eft/Ragfair/StorePlayerOfferTaxAmountRequestData.cs b/Libraries/Core/Models/Eft/Ragfair/StorePlayerOfferTaxAmountRequestData.cs index 9d748130..bcaed895 100644 --- a/Libraries/Core/Models/Eft/Ragfair/StorePlayerOfferTaxAmountRequestData.cs +++ b/Libraries/Core/Models/Eft/Ragfair/StorePlayerOfferTaxAmountRequestData.cs @@ -1,8 +1,9 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.Ragfair; -public record StorePlayerOfferTaxAmountRequestData +public record StorePlayerOfferTaxAmountRequestData : IRequestData { [JsonPropertyName("id")] public string? Id { get; set; }