This repository has been archived on 2026-08-07. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
Fika-Tarkov/mods/Acids Progressive Bot System/user/mods/acidphantasm-progressivebotsystem/src/InventoryMagGen/APBSUbglExternalMagGen.ts
T
2025-05-13 05:33:12 -04:00

68 lines
2.8 KiB
TypeScript

import { IInventoryMagGen } from "@spt/generators/weapongen/IInventoryMagGen";
import { InventoryMagGen } from "@spt/generators/weapongen/InventoryMagGen";
import { BotWeaponGeneratorHelper } from "@spt/helpers/BotWeaponGeneratorHelper";
import { BaseClasses } from "@spt/models/enums/BaseClasses";
import { EquipmentSlots } from "@spt/models/enums/EquipmentSlots";
import { inject, injectable } from "tsyringe";
import { APBSIInventoryMagGen } from "./APBSIInventoryMagGen";
import { APBSInventoryMagGen } from "./APBSInventoryMagGen";
import { ModConfig } from "../Globals/ModConfig";
import { RandomUtil } from "@spt/utils/RandomUtil";
import { APBSEquipmentGetter } from "../Utils/APBSEquipmentGetter";
import { APBSTierGetter } from "../Utils/APBSTierGetter";
import { APBSMethodHolder } from "./APBSMethodHolder";
@injectable()
export class APBSUbglExternalMagGen implements APBSIInventoryMagGen
{
constructor(
@inject("BotWeaponGeneratorHelper") protected botWeaponGeneratorHelper: BotWeaponGeneratorHelper,
@inject("RandomUtil") protected randomUtil: RandomUtil,
@inject("APBSEquipmentGetter") protected apbsEquipmentGetter: APBSEquipmentGetter,
@inject("APBSTierGetter") protected apbsTierGetter: APBSTierGetter,
@inject("APBSMethodHolder") protected apbsMethodHolder: APBSMethodHolder
)
{}
public getPriority(): number
{
return 1;
}
public canHandleInventoryMagGen(inventoryMagGen: APBSInventoryMagGen): boolean
{
return inventoryMagGen.getWeaponTemplate()._parent === BaseClasses.UBGL;
}
public process(inventoryMagGen: APBSInventoryMagGen): void
{
const bulletCount = this.botWeaponGeneratorHelper.getRandomizedBulletCount(
inventoryMagGen.getMagCount(),
inventoryMagGen.getMagazineTemplate()
);
if (ModConfig.config.enableBotsToRollAmmoAgain && this.randomUtil.getChance100(ModConfig.config.chanceToRollAmmoAgain))
{
const weapon = inventoryMagGen.getWeaponTemplate();
const tierInfo = this.apbsTierGetter.getTierByLevel(inventoryMagGen.getBotLevel());
const ammoTable = this.apbsEquipmentGetter.getAmmoByBotRole(inventoryMagGen.getBotRole(), tierInfo)
const rerolledAmmo = this.apbsMethodHolder.getWeightedCompatibleAmmo(ammoTable, weapon);
this.botWeaponGeneratorHelper.addAmmoIntoEquipmentSlots(
rerolledAmmo,
bulletCount,
inventoryMagGen.getPmcInventory()
);
}
this.botWeaponGeneratorHelper.addAmmoIntoEquipmentSlots(
inventoryMagGen.getAmmoTemplate()._id,
bulletCount,
inventoryMagGen.getPmcInventory(),
[EquipmentSlots.TACTICAL_VEST]
);
}
}