diff --git a/Core/Models/Enums/AirdropType.cs b/Core/Models/Enums/AirdropType.cs
new file mode 100644
index 00000000..43dd6985
--- /dev/null
+++ b/Core/Models/Enums/AirdropType.cs
@@ -0,0 +1,18 @@
+namespace Core.Models.Enums;
+
+public enum AirdropTypeEnum
+{
+ Common,
+ Supply,
+ Medical,
+ Weapon
+}
+
+public enum SptAirdropTypeEnum
+{
+ mixed,
+ barter,
+ foodMedical,
+ weaponArmor,
+ radar
+}
\ No newline at end of file
diff --git a/Core/Models/Enums/GiftSenderType.cs b/Core/Models/Enums/GiftSenderType.cs
new file mode 100644
index 00000000..f3762599
--- /dev/null
+++ b/Core/Models/Enums/GiftSenderType.cs
@@ -0,0 +1,8 @@
+namespace Core.Models.Enums;
+
+public enum GiftSenderType
+{
+ System,
+ Trader,
+ User
+}
\ No newline at end of file
diff --git a/Core/Models/Enums/Season.cs b/Core/Models/Enums/Season.cs
new file mode 100644
index 00000000..a4977136
--- /dev/null
+++ b/Core/Models/Enums/Season.cs
@@ -0,0 +1,11 @@
+namespace Core.Models.Enums;
+
+public enum Season {
+ SUMMER = 0,
+ AUTUMN = 1,
+ WINTER = 2,
+ SPRING = 3,
+ AUTUMN_LATE = 4,
+ SPRING_EARLY = 5,
+ STORM = 6,
+}
\ No newline at end of file
diff --git a/Core/Models/Enums/SeasonalEventType.cs b/Core/Models/Enums/SeasonalEventType.cs
new file mode 100644
index 00000000..03c15f70
--- /dev/null
+++ b/Core/Models/Enums/SeasonalEventType.cs
@@ -0,0 +1,11 @@
+namespace Core.Models.Enums;
+
+public enum SeasonalEventType
+{
+ None,
+ Christmas,
+ Halloween,
+ NewYears,
+ Promo,
+ AprilFools
+}
\ No newline at end of file
diff --git a/Core/Models/Enums/WindDirection.cs b/Core/Models/Enums/WindDirection.cs
new file mode 100644
index 00000000..f28b1179
--- /dev/null
+++ b/Core/Models/Enums/WindDirection.cs
@@ -0,0 +1,12 @@
+namespace Core.Models.Enums;
+
+public enum WindDirection {
+ EAST = 1,
+ NORTH = 2,
+ WEST = 3,
+ SOUTH = 4,
+ SE = 5,
+ SW = 6,
+ NW = 7,
+ NE = 8,
+}
\ No newline at end of file
diff --git a/Core/Models/Spt/Config/AirdropConfig.cs b/Core/Models/Spt/Config/AirdropConfig.cs
index 51d95197..b305685b 100644
--- a/Core/Models/Spt/Config/AirdropConfig.cs
+++ b/Core/Models/Spt/Config/AirdropConfig.cs
@@ -1,6 +1,7 @@
using System.Collections.Generic;
using System.Text.Json.Serialization;
using Core.Models.Common;
+using Core.Models.Enums;
namespace Core.Models.Spt.Config;
diff --git a/Core/Models/Spt/Config/CoreConfig.cs b/Core/Models/Spt/Config/CoreConfig.cs
index 44b3531f..bd659571 100644
--- a/Core/Models/Spt/Config/CoreConfig.cs
+++ b/Core/Models/Spt/Config/CoreConfig.cs
@@ -1,4 +1,5 @@
using System.Text.Json.Serialization;
+using Core.Models.Eft.Game;
namespace Core.Models.Spt.Config;
diff --git a/Core/Models/Spt/Config/GiftsConfig.cs b/Core/Models/Spt/Config/GiftsConfig.cs
index 33cbb220..61e6e6ee 100644
--- a/Core/Models/Spt/Config/GiftsConfig.cs
+++ b/Core/Models/Spt/Config/GiftsConfig.cs
@@ -42,7 +42,7 @@ public class Gift
/// Optional - supply a trader type to send from, not necessary when sending from SYSTEM or USER
///
[JsonPropertyName("trader")]
- public Traders? Trader { get; set; }
+ public string? Trader { get; set; }
[JsonPropertyName("messageText")]
public string MessageText { get; set; }
diff --git a/Core/Models/Spt/Config/ItemConfig.cs b/Core/Models/Spt/Config/ItemConfig.cs
index f51537fe..4515cdd3 100644
--- a/Core/Models/Spt/Config/ItemConfig.cs
+++ b/Core/Models/Spt/Config/ItemConfig.cs
@@ -1,4 +1,5 @@
using System.Text.Json.Serialization;
+using Core.Models.Eft.Common;
namespace Core.Models.Spt.Config;
diff --git a/Core/Models/Spt/Config/SeasonalEventConfig.cs b/Core/Models/Spt/Config/SeasonalEventConfig.cs
index bd624ae0..368a205f 100644
--- a/Core/Models/Spt/Config/SeasonalEventConfig.cs
+++ b/Core/Models/Spt/Config/SeasonalEventConfig.cs
@@ -1,5 +1,6 @@
using System.Text.Json.Serialization;
using Core.Models.Eft.Common;
+using Core.Models.Enums;
namespace Core.Models.Spt.Config;
diff --git a/Core/Models/Spt/Config/TraderConfig.cs b/Core/Models/Spt/Config/TraderConfig.cs
index cefaebab..f08de277 100644
--- a/Core/Models/Spt/Config/TraderConfig.cs
+++ b/Core/Models/Spt/Config/TraderConfig.cs
@@ -1,5 +1,6 @@
using System.Text.Json.Serialization;
using Core.Models.Common;
+using Core.Models.Spt.Services;
namespace Core.Models.Spt.Config;
diff --git a/Core/Models/Spt/Config/WeatherConfig.cs b/Core/Models/Spt/Config/WeatherConfig.cs
index fb70cf67..27d9add0 100644
--- a/Core/Models/Spt/Config/WeatherConfig.cs
+++ b/Core/Models/Spt/Config/WeatherConfig.cs
@@ -1,5 +1,6 @@
using System.Text.Json.Serialization;
using Core.Models.Common;
+using Core.Models.Enums;
namespace Core.Models.Spt.Config;
diff --git a/Core/Models/Spt/Services/LootRequest.cs b/Core/Models/Spt/Services/LootRequest.cs
new file mode 100644
index 00000000..2c28fbeb
--- /dev/null
+++ b/Core/Models/Spt/Services/LootRequest.cs
@@ -0,0 +1,92 @@
+using System.Text.Json.Serialization;
+using Core.Models.Common;
+using Core.Models.Enums;
+
+namespace Core.Models.Spt.Services;
+
+public class LootRequest
+{
+ ///
+ /// Count of weapons to generate
+ ///
+ [JsonPropertyName("weaponPresetCount")]
+ public MinMax WeaponPresetCount { get; set; }
+
+ ///
+ /// Count of armor to generate
+ ///
+ [JsonPropertyName("armorPresetCount")]
+ public MinMax ArmorPresetCount { get; set; }
+
+ ///
+ /// Count of items to generate
+ ///
+ [JsonPropertyName("itemCount")]
+ public MinMax ItemCount { get; set; }
+
+ ///
+ /// Count of sealed weapon crates to generate
+ ///
+ [JsonPropertyName("weaponCrateCount")]
+ public MinMax WeaponCrateCount { get; set; }
+
+ ///
+ /// Item tpl blacklist to exclude
+ ///
+ [JsonPropertyName("itemBlacklist")]
+ public List ItemBlacklist { get; set; }
+
+ ///
+ /// Item tpl whitelist to pick from
+ ///
+ [JsonPropertyName("itemTypeWhitelist")]
+ public List ItemTypeWhitelist { get; set; }
+
+ ///
+ /// key: item base type: value: max count
+ ///
+ [JsonPropertyName("itemLimits")]
+ public Dictionary ItemLimits { get; set; }
+
+ [JsonPropertyName("itemStackLimits")]
+ public Dictionary ItemStackLimits { get; set; }
+
+ ///
+ /// Allowed armor plate levels 2/3/4/5/6 for armor generated
+ ///
+ [JsonPropertyName("armorLevelWhitelist")]
+ public List ArmorLevelWhitelist { get; set; }
+
+ ///
+ /// Should boss items be included in allowed items
+ ///
+ [JsonPropertyName("allowBossItems")]
+ public bool AllowBossItems { get; set; }
+
+ ///
+ /// Should item.json item reward blacklist be used
+ ///
+ [JsonPropertyName("useRewardItemBlacklist")]
+ public bool? UseRewardItemBlacklist { get; set; }
+
+ ///
+ /// Should forced loot be used instead of randomised loot
+ ///
+ [JsonPropertyName("useForcedLoot")]
+ public bool? UseForcedLoot { get; set; }
+
+ ///
+ /// Item tpls + count of items to force include
+ ///
+ [JsonPropertyName("forcedLoot")]
+ public Dictionary ForcedLoot { get; set; }
+}
+
+public class AirdropLootRequest : LootRequest
+{
+ ///
+ /// Airdrop icon used by client to show crate type
+ ///
+ [JsonPropertyName("icon")]
+ public AirdropTypeEnum? Icon { get; set; }
+}
\ No newline at end of file