using Core.Models.Eft.Common.Tables;
using Core.Models.Spt.Bots;
using Core.Models.Spt.Config;
namespace Core.Generators;
public class BotWeaponGenerator
{
private const string _modMagazineSlotId = "mod_magazine";
private BotConfig _botConfig;
private PmcConfig _pmcConfig;
private RepairConfig _repairConfig;
public BotWeaponGenerator()
{
}
///
/// Pick a random weapon based on weightings and generate a functional weapon
///
/// Session identifier
/// Primary/secondary/holster
/// e.g. assault.json
///
///
/// Role of bot, e.g. assault/followerBully
/// Is weapon generated for a pmc
///
/// GenerateWeaponResult object
public GenerateWeaponResult GenerateRandomWeapon(string sessionId, string equipmentSlot, BotBaseInventory botTemplateInventory, string weaponParentId,
Dictionary modChances, string botRole, bool isPmc, int botLevel)
{
throw new NotImplementedException();
}
///
/// Gets a random weighted weapon from a bot's pool of weapons.
///
/// Primary/secondary/holster
/// e.g. assault.json
/// Weapon template
public string PickWeightedWeaponTemplateFromPool(string equipmentSlot, BotBaseInventory botTemplateInventory)
{
throw new NotImplementedException();
}
///
/// Generates a weapon based on the supplied weapon template.
///
/// The session identifier.
/// Weapon template to generate (use pickWeightedWeaponTplFromPool()).
/// Slot to fit into, primary/secondary/holster.
/// e.g. assault.json.
/// Parent ID of the weapon being generated.
/// Dictionary of item types and % chance weapon will have that mod.
/// e.g. assault/exusec.
/// Is weapon being generated for a PMC.
/// The level of the bot.
/// GenerateWeaponResult object.
public GenerateWeaponResult GenerateWeaponByTpl(string sessionId, string weaponTpl, string slotName, BotBaseInventory botTemplateInventory,
string weaponParentId, Dictionary modChances, string botRole, bool isPmc, int botLevel)
{
throw new NotImplementedException();
}
///
/// Insert cartridge(s) into a weapon
/// Handles all chambers - patron_in_weapon, patron_in_weapon_000 etc
///
/// Weapon and mods
/// Cartridge to add to weapon
/// Name of slots to create or add ammo to
protected void AddCartridgeToChamber(List- weaponWithModsList, string ammoTemplate, List chamberSlotIdentifiers)
{
throw new NotImplementedException();
}
///
/// Create a list with weapon base as the only element and
/// add additional properties based on weapon type
///
/// Weapon template to create item with
/// Weapons parent id
/// e.g. primary/secondary/holster
/// Database template for weapon
/// For durability values
/// Base weapon item in a list
protected List
- ConstructWeaponBaseList(string weaponTemplate, string weaponParentId, string equipmentSlot, TemplateItem weaponItemTemplate,
string botRole)
{
throw new NotImplementedException();
}
///
/// Get the mods necessary to kit out a weapon to its preset level
///
/// Weapon to find preset for
/// The slot the weapon will be placed in
/// Value used for the parent id
/// Item template
/// Bot role
/// List of weapon mods
protected List
- GetPresetWeaponMods(string weaponTemplate, string equipmentSlot, string weaponParentId, TemplateItem itemTemplate, string botRole)
{
throw new NotImplementedException();
}
///
/// Checks if all required slots are occupied on a weapon and all its mods.
///
/// Weapon + mods
/// Role of bot weapon is for
/// True if valid
protected bool IsWeaponValid(List
- weaponItemList, string botRole)
{
throw new NotImplementedException();
}
///
/// Generates extra magazines or bullets (if magazine is internal) and adds them to TacticalVest and Pockets.
/// Additionally, adds extra bullets to SecuredContainer
///
/// Object with properties for generated weapon (weapon mods pool / weapon template / ammo tpl)
/// Magazine weights for count to add to inventory
/// Inventory to add magazines to
/// The bot type we're generating extra mags for
public void AddExtraMagazinesToInventory(GenerateWeaponResult generatedWeaponResult, GenerationData magWeights, BotBaseInventory inventory, string botRole)
{
throw new NotImplementedException();
}
///
/// Add Grenades for UBGL to bot's vest and secure container
///
/// Weapon list with mods
/// Result of weapon generation
/// Bot inventory to add grenades to
protected void AddUbglGrenadesToBotInventory(List
- weaponMods, GenerateWeaponResult generatedWeaponResult, BotBaseInventory inventory)
{
throw new NotImplementedException();
}
///
/// Add ammo to the secure container.
///
/// How many stacks of ammo to add.
/// Ammo type to add.
/// Size of the ammo stack to add.
/// Player inventory.
protected void AddAmmoToSecureContainer(int stackCount, string ammoTemplate, int stackSize, BotBaseInventory inventory)
{
throw new NotImplementedException();
}
///
/// Get a weapons magazine template from a weapon template.
///
/// Mods from a weapon template.
/// Weapon to get magazine template for.
/// The bot type we are getting the magazine for.
/// Magazine template string.
protected string GetMagazineTemplateFromWeaponTemplate(List
- weaponMods, TemplateItem weaponTemplate, string botRole)
{
throw new NotImplementedException();
}
///
/// Finds and returns a compatible ammo template based on the bots ammo weightings (x.json/inventory/equipment/ammo)
///
/// Dictionary of all cartridges keyed by type e.g. Caliber556x45NATO
/// Weapon details from database we want to pick ammo for
/// Ammo template that works with the desired gun
protected string GetWeightedCompatibleAmmo(Dictionary> cartridgePool, TemplateItem weaponTemplate)
{
throw new NotImplementedException();
}
///
/// Get the cartridge ids from a weapon template that work with the weapon
///
/// Weapon db template to get cartridges for
/// List of cartridge tpls
protected List GetCompatibleCartridgesFromWeaponTemplate(TemplateItem weaponTemplate)
{
throw new NotImplementedException();
}
///
/// Get a weapons compatible cartridge caliber
///
/// Weapon to look up caliber of
/// Caliber as string
protected string GetWeaponCaliber(TemplateItem weaponTemplate)
{
throw new NotImplementedException();
}
///
/// Fill existing magazines to full, while replacing their contents with specified ammo
///
/// Weapon with children
/// Magazine item
/// Cartridge to insert into magazine
protected void FillExistingMagazines(List
- weaponMods, Item magazine, string cartridgeTemplate)
{
throw new NotImplementedException();
}
///
/// Add desired ammo template as item to weapon modifications list, placed as child to UBGL.
///
/// Weapon with children.
/// UBGL item.
/// Grenade ammo template.
protected void FillUbgl(List
- weaponMods, Item ubglMod, string ubglAmmoTpl)
{
throw new NotImplementedException();
}
///
/// Add cartridge item to weapon item list, if it already exists, update
///
/// Weapon items list to amend
/// Magazine item details we're adding cartridges to
/// Cartridge to put into the magazine
/// How many cartridges should go into the magazine
/// Magazines db template
protected void AddOrUpdateMagazinesChildWithAmmo(List
- weaponWithMods, Item magazine, string chosenAmmoTpl, TemplateItem magazineTemplate)
{
throw new NotImplementedException();
}
///
/// Fill each Camora with a bullet
///
/// Weapon mods to find and update camora mod(s) from
/// Magazine id to find and add to
/// Ammo template id to hydrate with
protected void FillCamorasWithAmmo(List
- weaponMods, string magazineId, string ammoTpl)
{
throw new NotImplementedException();
}
}