Archived
68 lines
2.8 KiB
TypeScript
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]
|
|
);
|
|
}
|
|
} |