Refactor of isAmmoAbovePenetrationLimit()
to separate concerns
This commit is contained in:
parent
46d48c7531
commit
9cae27c37e
@ -186,39 +186,49 @@ export class FenceBaseAssortGenerator
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Check ammo in boxes + loose ammos has a penetration value above the configured value in trader.json / ammoMaxPenLimit
|
* Check ammo in boxes + loose ammos has a penetration value above the configured value in trader.json / ammoMaxPenLimit
|
||||||
* @param rootItemDb Item to check penetration value of
|
* @param rootItemDb Ammo box or ammo item from items.db
|
||||||
* @returns True if penetration value is above limit set in config
|
* @returns True if penetration value is above limit set in config
|
||||||
*/
|
*/
|
||||||
protected isAmmoAbovePenetrationLimit(rootItemDb: ITemplateItem): boolean
|
protected isAmmoAbovePenetrationLimit(rootItemDb: ITemplateItem): boolean
|
||||||
|
{
|
||||||
|
const ammoPenetrationPower = this.getAmmoPenetrationPower(rootItemDb);
|
||||||
|
if (ammoPenetrationPower === null)
|
||||||
|
{
|
||||||
|
this.logger.warning(`Ammo: ${rootItemDb._id} has no penetration value, skipping`);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ammoPenetrationPower > this.traderConfig.fence.ammoMaxPenLimit;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the penetration power value of an ammo, works with ammo boxes and raw ammos
|
||||||
|
* @param rootItemDb Ammo box or ammo item from items.db
|
||||||
|
* @returns Penetration power of passed in item, null if it doesnt have a power
|
||||||
|
*/
|
||||||
|
protected getAmmoPenetrationPower(rootItemDb: ITemplateItem): number
|
||||||
{
|
{
|
||||||
if (this.itemHelper.isOfBaseclass(rootItemDb._id, BaseClasses.AMMO_BOX))
|
if (this.itemHelper.isOfBaseclass(rootItemDb._id, BaseClasses.AMMO_BOX))
|
||||||
{
|
{
|
||||||
// Get ammo inside box
|
|
||||||
const ammoTplInBox = rootItemDb._props.StackSlots[0]._props.filters[0].Filter[0];
|
const ammoTplInBox = rootItemDb._props.StackSlots[0]._props.filters[0].Filter[0];
|
||||||
const ammoItemDb = this.itemHelper.getItem(ammoTplInBox);
|
const ammoItemDb = this.itemHelper.getItem(ammoTplInBox);
|
||||||
if (!ammoItemDb[0])
|
if (!ammoItemDb[0])
|
||||||
{
|
{
|
||||||
this.logger.warning(`Ammo: ${ammoTplInBox} not an item, skipping`);
|
this.logger.warning(`Ammo: ${ammoTplInBox} not an item, skipping`);
|
||||||
|
return null;
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if above limit
|
return ammoItemDb[1]._props.PenetrationPower;
|
||||||
if (ammoItemDb[1]._props.PenetrationPower > this.traderConfig.fence.ammoMaxPenLimit)
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (this.itemHelper.isOfBaseclass(rootItemDb._id, BaseClasses.AMMO))
|
|
||||||
{
|
|
||||||
// Just a normal ammo, check if above limit
|
|
||||||
if (rootItemDb._props.PenetrationPower > this.traderConfig.fence.ammoMaxPenLimit)
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
// Plain old ammo, get its pen property
|
||||||
|
if (this.itemHelper.isOfBaseclass(rootItemDb._id, BaseClasses.AMMO))
|
||||||
|
{
|
||||||
|
return rootItemDb._props.PenetrationPower;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Not an ammobox or ammo
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected getItemPrice(itemTpl: string, items: Item[]): number
|
protected getItemPrice(itemTpl: string, items: Item[]): number
|
||||||
|
Loading…
Reference in New Issue
Block a user