Merge pull request #11 from CJ-SPT/main

Modellllssssss
This commit is contained in:
clodanSPT
2025-01-07 10:46:29 +00:00
committed by GitHub
12 changed files with 474 additions and 0 deletions
@@ -0,0 +1,76 @@
using System.Text.Json.Serialization;
using Core.Models.Common;
namespace Core.Models.Spt.Bots;
public class BotGenerationDetails
{
/// <summary>
/// Should the bot be generated as a PMC
/// </summary>
[JsonPropertyName("isPmc")]
public bool IsPmc { get; set; }
/// <summary>
/// assault/pmcBot etc
/// </summary>
[JsonPropertyName("role")]
public string Role { get; set; }
/// <summary>
/// Side of bot
/// </summary>
[JsonPropertyName("side")]
public string Side { get; set; }
/// <summary>
/// Active players current level
/// </summary>
[JsonPropertyName("playerLevel")]
public int? PlayerLevel { get; set; }
[JsonPropertyName("playerName")]
public string? PlayerName { get; set; }
/// <summary>
/// Level specific overrides for PMC level
/// </summary>
[JsonPropertyName("locationSpecificPmcLevelOverride")]
public MinMax? LocationSpecificPmcLevelOverride { get; set; }
/// <summary>
/// Delta of highest level of bot e.g. 50 means 50 levels above player
/// </summary>
[JsonPropertyName("botRelativeLevelDeltaMax")]
public int BotRelativeLevelDeltaMax { get; set; }
/// <summary>
/// Delta of lowest level of bot e.g. 50 means 50 levels below player
/// </summary>
[JsonPropertyName("botRelativeLevelDeltaMin")]
public int BotRelativeLevelDeltaMin { get; set; }
/// <summary>
/// How many to create and store
/// </summary>
[JsonPropertyName("botCountToGenerate")]
public int BotCountToGenerate { get; set; }
/// <summary>
/// Desired difficulty of the bot
/// </summary>
[JsonPropertyName("botDifficulty")]
public string BotDifficulty { get; set; }
/// <summary>
/// Will the generated bot be a player scav
/// </summary>
[JsonPropertyName("isPlayerScav")]
public bool IsPlayerScav { get; set; }
[JsonPropertyName("eventRole")]
public string? EventRole { get; set; }
[JsonPropertyName("allPmcsHaveSameNameAsPlayer")]
public bool? AllPmcsHaveSameNameAsPlayer { get; set; }
}
+62
View File
@@ -0,0 +1,62 @@
using System.Text.Json.Serialization;
namespace Core.Models.Spt.Bots;
public class BotLootCache
{
[JsonPropertyName("backpackLoot")]
public Dictionary<string, int> BackpackLoot { get; set; }
[JsonPropertyName("pocketLoot")]
public Dictionary<string, int> PocketLoot { get; set; }
[JsonPropertyName("vestLoot")]
public Dictionary<string, int> VestLoot { get; set; }
[JsonPropertyName("secureLoot")]
public Dictionary<string, int> SecureLoot { get; set; }
[JsonPropertyName("combinedPoolLoot")]
public Dictionary<string, int> CombinedPoolLoot { get; set; }
[JsonPropertyName("specialItems")]
public Dictionary<string, int> SpecialItems { get; set; }
[JsonPropertyName("healingItems")]
public Dictionary<string, int> HealingItems { get; set; }
[JsonPropertyName("drugItems")]
public Dictionary<string, int> DrugItems { get; set; }
[JsonPropertyName("foodItems")]
public Dictionary<string, int> FoodItems { get; set; }
[JsonPropertyName("drinkItems")]
public Dictionary<string, int> DrinkItems { get; set; }
[JsonPropertyName("currencyItems")]
public Dictionary<string, int> CurrencyItems { get; set; }
[JsonPropertyName("stimItems")]
public Dictionary<string, int> StimItems { get; set; }
[JsonPropertyName("grenadeItems")]
public Dictionary<string, int> GrenadeItems { get; set; }
}
public static class LootCacheType
{
public const string Special = "Special";
public const string Backpack = "Backpack";
public const string Pocket = "Pocket";
public const string Vest = "Vest";
public const string Secure = "SecuredContainer";
public const string Combined = "Combined";
public const string HealingItems = "HealingItems";
public const string DrugItems = "DrugItems";
public const string StimItems = "StimItems";
public const string GrenadeItems = "GrenadeItems";
public const string FoodItems = "FoodItems";
public const string DrinkItems = "DrinkItems";
public const string CurrencyItems = "CurrencyItems";
}
@@ -0,0 +1,21 @@
using System.Text.Json.Serialization;
namespace Core.Models.Spt.Bots;
public class ChooseRandomCompatibleModResult
{
[JsonPropertyName("incompatible")]
public bool Incompatible { get; set; }
[JsonPropertyName("found")]
public bool? Found { get; set; }
[JsonPropertyName("chosenTpl")]
public string? ChosenTemplate { get; set; }
[JsonPropertyName("reason")]
public string Reason { get; set; }
[JsonPropertyName("slotBlocked")]
public bool? SlotBlocked { get; set; }
}
@@ -0,0 +1,21 @@
using System.Text.Json.Serialization;
namespace Core.Models.Spt.Bots;
public class FilterPlateModsForSlotByLevelResult
{
[JsonPropertyName("result")]
public Result Result { get; set; }
[JsonPropertyName("plateModTpls")]
public List<string> PlateModTemplates { get; set; }
}
public enum Result
{
UNKNOWN_FAILURE = -1,
SUCCESS = 1,
NO_DEFAULT_FILTER = 2,
NOT_PLATE_HOLDING_SLOT = 3,
LACKS_PLATE_WEIGHTS = 4,
}
@@ -0,0 +1,56 @@
using System.Text.Json.Serialization;
using Core.Models.Eft.Common.Tables;
using Core.Models.Spt.Config;
namespace Core.Models.Spt.Bots;
public class GenerateEquipmentProperties
{
/// <summary>
/// Root Slot being generated
/// </summary>
[JsonPropertyName("rootEquipmentSlot")]
public string RootEquipmentSlot { get; set; }
/// <summary>
/// Equipment pool for root slot being generated
/// </summary>
[JsonPropertyName("rootEquipmentPool")]
public Dictionary<string, int> RootEquipmentPool { get; set; }
[JsonPropertyName("modPool")]
public Mods ModPool { get; set; }
/// <summary>
/// Dictionary of mod items and their chance to spawn for this bot type
/// </summary>
[JsonPropertyName("spawnChances")]
public Chances SpawnChances { get; set; }
/// <summary>
/// Bot-specific properties
/// </summary>
[JsonPropertyName("botData")]
public BotData BotData { get; set; }
[JsonPropertyName("inventory")]
public PmcInventory Inventory { get; set; }
[JsonPropertyName("botEquipmentConfig")]
public EquipmentFilters BotEquipmentConfig { get; set; }
/// <summary>
/// Settings from bot.json to adjust how item is generated
/// </summary>
[JsonPropertyName("randomisationDetails")]
public RandomisationDetails RandomisationDetails { get; set; }
/// <summary>
/// OPTIONAL - Do not generate mods for tpls in this array
/// </summary>
[JsonPropertyName("generateModsBlacklist")]
public List<string> GenerateModsBlacklist { get; set; }
[JsonPropertyName("generatingPlayerLevel")]
public int GeneratingPlayerLevel { get; set; }
}
@@ -0,0 +1,74 @@
using System.Text.Json.Serialization;
using Core.Models.Eft.Common.Tables;
namespace Core.Models.Spt.Bots;
public class GenerateWeaponRequest
{
/** Weapon to add mods to / result that is returned */
[JsonPropertyName("weapon")]
public List<Item> Weapon { get; set; }
/** Pool of compatible mods to attach to weapon */
[JsonPropertyName("modPool")]
public Mods ModPool { get; set; }
/** ParentId of weapon */
[JsonPropertyName("weaponId")]
public string WeaponId { get; set; }
/** Weapon which mods will be generated on */
[JsonPropertyName("parentTemplate")]
public TemplateItem ParentTemplate { get; set; }
/** Chance values mod will be added */
[JsonPropertyName("modSpawnChances")]
public ModsChances ModSpawnChances { get; set; }
/** Ammo tpl to use when generating magazines/cartridges */
[JsonPropertyName("ammoTpl")]
public string AmmoTpl { get; set; }
/** Bot-specific properties */
[JsonPropertyName("botData")]
public BotData BotData { get; set; }
/** limits placed on certain mod types per gun */
[JsonPropertyName("modLimits")]
public BotModLimits ModLimits { get; set; }
/** Info related to the weapon being generated */
[JsonPropertyName("weaponStats")]
public WeaponStats WeaponStats { get; set; }
/** Array of item tpls the weapon does not support */
[JsonPropertyName("conflictingItemTpls")]
public HashSet<string> ConflictingItemTpls { get; set; }
}
public class BotData
{
/** Role of bot weapon is generated for */
[JsonPropertyName("role")]
public string Role { get; set; }
/** Level of the bot weapon is being generated for */
[JsonPropertyName("level")]
public int Level { get; set; }
/** role of bot when accessing bot.json equipment config settings */
[JsonPropertyName("equipmentRole")]
public string EquipmentRole { get; set; }
}
public class WeaponStats
{
[JsonPropertyName("hasOptic")]
public bool? HasOptic { get; set; }
[JsonPropertyName("hasFrontIronSight")]
public bool? HasFrontIronSight { get; set; }
[JsonPropertyName("hasRearIronSight")]
public bool? HasRearIronSight { get; set; }
}
@@ -0,0 +1,22 @@
using System.Text.Json.Serialization;
using Core.Models.Eft.Common.Tables;
namespace Core.Models.Spt.Bots;
public class GenerateWeaponResult
{
[JsonPropertyName("weapon")]
public List<Item> Weapon { get; set; }
[JsonPropertyName("chosenAmmoTpl")]
public string ChosenAmmoTemplate { get; set; }
[JsonPropertyName("chosenUbglAmmoTpl")]
public string ChosenUbglAmmoTemplate { get; set; }
[JsonPropertyName("weaponMods")]
public Mods WeaponMods { get; set; }
[JsonPropertyName("weaponTemplate")]
public TemplateItem WeaponTemplate { get; set; }
}
@@ -0,0 +1,12 @@
using System.Text.Json.Serialization;
namespace Core.Models.Spt.Bots;
public class ItemSpawnLimitSettings
{
[JsonPropertyName("currentLimits")]
public Dictionary<string, int> CurrentLimits { get; set; }
[JsonPropertyName("globalLimits")]
public Dictionary<string, int> GlobalLimits { get; set; }
}
+80
View File
@@ -0,0 +1,80 @@
using System.Text.Json.Serialization;
using Core.Models.Eft.Common.Tables;
using Core.Models.Spt.Config;
namespace Core.Models.Spt.Bots;
public class ModToSpawnRequest
{
/// <summary>
/// Slot mod will fit into
/// </summary>
[JsonPropertyName("modSlot")]
public string ModSlot { get; set; }
/// <summary>
/// Will generate a randomised mod pool if true
/// </summary>
[JsonPropertyName("isRandomisableSlot")]
public bool IsRandomisableSlot { get; set; }
[JsonPropertyName("randomisationSettings")]
public RandomisationDetails RandomisationSettings { get; set; }
/// <summary>
/// Parent slot the item will be a part of
/// </summary>
[JsonPropertyName("botWeaponSightWhitelist")]
public Dictionary<string, List<string>> BotWeaponSightWhitelist { get; set; }
/// <summary>
/// Blacklist to prevent mods from being picked
/// </summary>
[JsonPropertyName("botEquipBlacklist")]
public EquipmentFilterDetails BotEquipBlacklist { get; set; }
/// <summary>
/// Pool of items to pick from
/// </summary>
[JsonPropertyName("itemModPool")]
public Dictionary<string, List<string>> ItemModPool { get; set; }
/// <summary>
/// List with only weapon tpl in it, ready for mods to be added
/// </summary>
[JsonPropertyName("weapon")]
public List<Item> Weapon { get; set; }
/// <summary>
/// Ammo tpl to use if slot requires a cartridge to be added (e.g. mod_magazine)
/// </summary>
[JsonPropertyName("ammoTpl")]
public string AmmoTpl { get; set; }
/// <summary>
/// Parent item the mod will go into
/// </summary>
[JsonPropertyName("parentTemplate")]
public TemplateItem ParentTemplate { get; set; }
/// <summary>
/// Should mod be spawned/skipped/use default
/// </summary>
[JsonPropertyName("modSpawnResult")]
public ModSpawn ModSpawnResult { get; set; }
/// <summary>
/// Weapon stats for weapon being generated
/// </summary>
[JsonPropertyName("weaponStats")]
public WeaponStats WeaponStats { get; set; }
/// <summary>
/// List of item tpls the weapon does not support
/// </summary>
[JsonPropertyName("conflictingItemTpls")]
public HashSet<string> ConflictingItemTpls { get; set; }
[JsonPropertyName("botData")]
public BotData BotData { get; set; }
}
@@ -0,0 +1,20 @@
using System.Text.Json.Serialization;
using Core.Models.Eft.Common;
using Core.Models.Eft.Common.Tables;
namespace Core.Models.Spt.Services;
public class InsuranceEquipmentPkg
{
[JsonPropertyName("sessionID")]
public string SessionId { get; set; }
[JsonPropertyName("pmcData")]
public PmcData PmcData { get; set; }
[JsonPropertyName("itemToReturnToPlayer")]
public Item ItemToReturnToPlayer { get; set; }
[JsonPropertyName("traderId")]
public string TraderId { get; set; }
}
+18
View File
@@ -0,0 +1,18 @@
using System.Text.Json.Serialization;
namespace Core.Models.Spt.Services;
public class LootItem
{
[JsonPropertyName("id")]
public string? Id { get; set; }
[JsonPropertyName("tpl")]
public string Tpl { get; set; }
[JsonPropertyName("isPreset")]
public bool IsPreset { get; set; }
[JsonPropertyName("stackCount")]
public int StackCount { get; set; }
}
@@ -0,0 +1,12 @@
using System.Text.Json.Serialization;
namespace Core.Models.Spt.Weather;
public class GetLocalWeatherResponseData
{
[JsonPropertyName("season")]
public int Season { get; set; }
[JsonPropertyName("weather")]
public List<Weather> Weather { get; set; }
}