import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; import { Logger } from "./logger"; import { Grenade, Ammo762x51, Ammo762x54, Ammo338Lapua, Ammo46x30, Ammo57x28, Ammo762x25, Ammo9x18, Ammo9x19, Ammo9x21, Ammo357Mag, Ammo45ACP, Ammo545x39, Ammo556x45, Ammo300Blackout, Ammo762x39, Ammo9x39, Ammo366TKM, Ammo127x55, Ammo12Gauge, Ammo20Gauge, Ammo23x75, Ammo30x29, Ammo26x75 } from "@spt-aki/models/enums/AmmoTypes"; import { AmmoConfig } from "../config/ts/ammo"; export class Ammo { private modConfig: AmmoConfig = require("../config/ammo.json") private logger: Logger; private tables: DatabaseServer; constructor(logger: Logger, databaseServer: DatabaseServer) { this.logger = logger; this.tables = databaseServer; } public updateAmmo(): void { const items = this.tables.getTables().templates.items; const mod = this.modConfig.stacks; // Sets HE grenades from GLaunchers max stacks. if (mod.grenades != 1) { for (const value of Object.values(Grenade)) { items[value]._props.StackMaxSize = mod.grenades this.logger.info(`Grenade Max Stacks set to ${mod.grenades}`); } } // Sets .338 Lapua Magnum max stacks. if (mod.a338Lapua != 30) { for (const value of Object.values(Ammo338Lapua)) { items[value]._props.StackMaxSize = mod.a338Lapua this.logger.info(`.338 Lapua Magnum Max Stacks set to ${mod.a338Lapua}`); } } // Sets 12.7x55mm max stacks. if (mod.a127x55 != 30) { for (const value of Object.values(Ammo127x55)) { items[value]._props.StackMaxSize = mod.a127x55 this.logger.info(`12.7x55mm Max Stacks set to ${mod.a127x55}`); } } // Sets 7.62x54mm max stacks. if (mod.a762x54 != 40) { for (const value of Object.values(Ammo762x54)) { items[value]._props.StackMaxSize = mod.a762x54 this.logger.info(`7.62x54R Max Stacks set to ${mod.a762x54}`); } } // Sets 7.62x51mm max stacks. if (mod.a762x51 != 40) { for (const value of Object.values(Ammo762x51)) { items[value]._props.StackMaxSize = mod.a762x51 this.logger.info(`7.62x51mm Max Stacks set to ${mod.a762x51}`); } } // Sets 9x39mm max stacks. if (mod.a9x39 != 50) { for (const value of Object.values(Ammo9x39)) { items[value]._props.StackMaxSize = mod.a9x39 this.logger.info(`9x39mm Max Stacks set to ${mod.a9x39}`); } } // Sets .366 TKM max stacks. if (mod.a366TKM != 50) { for (const value of Object.values(Ammo366TKM)) { items[value]._props.StackMaxSize = mod.a366TKM this.logger.info(`.366 TKM Max Stacks set to ${mod.a366TKM}`); } } // Sets 7.62x39mm max stacks. if (mod.a762x39 != 60) { for (const value of Object.values(Ammo762x39)) { items[value]._props.StackMaxSize = mod.a762x39 this.logger.info(`7.62x39mm Max Stacks set to ${mod.a762x39}`); } } // Sets 7.62x35mm (.300 Blackout) max stacks. if (mod.a762x35 != 60) { for (const value of Object.values(Ammo300Blackout)) { items[value]._props.StackMaxSize = mod.a762x35 this.logger.info(`762x35mm Max Stacks set to ${mod.a762x35}`); } } // Sets 5.56x45mm max stacks. if (mod.a556x45 != 60) { for (const value of Object.values(Ammo556x45)) { items[value]._props.StackMaxSize = mod.a556x45 this.logger.info(`5.56x45mm Max Stacks set to ${mod.a556x45}`); } } // Sets 5.45x39mm max stacks. if (mod.a545x39 != 60) { for (const value of Object.values(Ammo545x39)) { items[value]._props.StackMaxSize = mod.a545x39 this.logger.info(`5.45x39mm Max Stacks set to ${mod.a545x39}`); } } if (mod.a57x28 != 60) { for (const value of Object.values(Ammo57x28)) { items[value]._props.StackMaxSize = mod.a57x28 this.logger.info(`5.7x28mm Max Stacks set to ${mod.a57x28}`); } } if (mod.a46x30 != 70) { for (const value of Object.values(Ammo46x30)) { items[value]._props.StackMaxSize = mod.a46x30 this.logger.info(`4.6x30mm Max Stacks set to ${mod.a46x30}`); } } if (mod.a357Mag != 30) { for (const value of Object.values(Ammo357Mag)) { items[value]._props.StackMaxSize = mod.a357Mag this.logger.info(`.357 Magnum Max Stacks set to ${mod.a357Mag}`); } } if (mod.a1143x23ACP != 50) { for (const value of Object.values(Ammo45ACP)) { items[value]._props.StackMaxSize = mod.a1143x23ACP this.logger.info(`.45 ACP Max Stacks set to ${mod.a1143x23ACP}`); } } if (mod.a762x25 != 50) { for (const value of Object.values(Ammo762x25)) { items[value]._props.StackMaxSize = mod.a762x25 this.logger.info(`7.62x25mm TT Max Stacks set to ${mod.a762x25}`); } } if (mod.a9x21 != 50) { for (const value of Object.values(Ammo9x21)) { items[value]._props.StackMaxSize = mod.a9x21 this.logger.info(`9x21mm Max Stacks set to ${mod.a9x21}`); } } if (mod.a9x19 != 50) { for (const value of Object.values(Ammo9x19)) { items[value]._props.StackMaxSize = mod.a9x19 this.logger.info(`9x19mm Max Stacks set to ${mod.a9x19}`); } } if (mod.a9x18 != 50) { for (const value of Object.values(Ammo9x18)) { items[value]._props.StackMaxSize = mod.a9x18 this.logger.info(`9x18mm Max Stacks set to ${mod.a9x18}`); } } if (mod.a23x75 != 15) { for (const value of Object.values(Ammo23x75)) { items[value]._props.StackMaxSize = mod.a23x75 this.logger.info(`23x75mm KS-23 Max Stacks set to ${mod.a23x75}`); } } if (mod.a12Gauge != 20) { for (const value of Object.values(Ammo12Gauge)) { items[value]._props.StackMaxSize = mod.a12Gauge this.logger.info(`12 Gauge Max Stacks set to ${mod.a12Gauge}`); } } if (mod.a20Gauge != 20) { for (const value of Object.values(Ammo20Gauge)) { items[value]._props.StackMaxSize = mod.a20Gauge this.logger.info(`20 Gauge Max Stacks set to ${mod.a20Gauge}`); } } if (mod.a30x29 != 1) { for (const value of Object.values(Ammo30x29)) { items[value]._props.StackMaxSize = mod.a30x29 this.logger.info(`VOG-30x29mm Max Stacks set to ${mod.a30x29}`); } } if (mod.a26x75 != 1) { for (const value of Object.values(Ammo26x75)) { items[value]._props.StackMaxSize = mod.a26x75 this.logger.info(`Flare Max Stacks set to ${mod.a26x75}`); } } } }