Update attachment logic
This commit is contained in:
parent
b95543a0d1
commit
31d4f1bace
31
src/mod.ts
31
src/mod.ts
@ -24,7 +24,7 @@ import { ITemplateItem } from "@spt-aki/models/eft/common/tables/ITemplateItem";
|
|||||||
import { ConfigServer } from "@spt-aki/servers/ConfigServer";
|
import { ConfigServer } from "@spt-aki/servers/ConfigServer";
|
||||||
import { IRagfairConfig } from "@spt-aki/models/spt/config/IRagfairConfig";
|
import { IRagfairConfig } from "@spt-aki/models/spt/config/IRagfairConfig";
|
||||||
import { ConfigTypes } from "@spt-aki/models/enums/ConfigTypes";
|
import { ConfigTypes } from "@spt-aki/models/enums/ConfigTypes";
|
||||||
import { Category } from "@spt-aki/models/eft/common/tables/IHandbookBase";
|
import { Category, HandbookItem } from "@spt-aki/models/eft/common/tables/IHandbookBase";
|
||||||
|
|
||||||
import config from "../config.json";
|
import config from "../config.json";
|
||||||
import advancedConfig from "../advancedConfig.json";
|
import advancedConfig from "../advancedConfig.json";
|
||||||
@ -42,6 +42,7 @@ class TheBlacklistMod implements IPostDBLoadModAsync {
|
|||||||
private attachmentCategoryIds: string[] = [];
|
private attachmentCategoryIds: string[] = [];
|
||||||
|
|
||||||
private blacklistedItemsUpdatedCount = 0;
|
private blacklistedItemsUpdatedCount = 0;
|
||||||
|
private attachmentPriceLimitedCount = 0;
|
||||||
|
|
||||||
public async postDBLoadAsync(container: DependencyContainer) {
|
public async postDBLoadAsync(container: DependencyContainer) {
|
||||||
this.logger = container.resolve<ILogger>("WinstonLogger");
|
this.logger = container.resolve<ILogger>("WinstonLogger");
|
||||||
@ -62,7 +63,6 @@ class TheBlacklistMod implements IPostDBLoadModAsync {
|
|||||||
|
|
||||||
let nonBlacklistedItemsUpdatedCount = 0;
|
let nonBlacklistedItemsUpdatedCount = 0;
|
||||||
let ammoPricesUpdatedCount = 0;
|
let ammoPricesUpdatedCount = 0;
|
||||||
let attachmentPriceLimitedCount = 0;
|
|
||||||
|
|
||||||
if (config.limitMaxPriceOfAttachments) {
|
if (config.limitMaxPriceOfAttachments) {
|
||||||
this.attachmentCategoryIds = getAttachmentCategoryIds(tables.templates.handbook.Categories);
|
this.attachmentCategoryIds = getAttachmentCategoryIds(tables.templates.handbook.Categories);
|
||||||
@ -71,7 +71,6 @@ class TheBlacklistMod implements IPostDBLoadModAsync {
|
|||||||
// Find all items to update by looping through handbook which is a better indicator of useable items.
|
// Find all items to update by looping through handbook which is a better indicator of useable items.
|
||||||
handbookItems.forEach(handbookItem => {
|
handbookItems.forEach(handbookItem => {
|
||||||
const item = itemTable[handbookItem.Id];
|
const item = itemTable[handbookItem.Id];
|
||||||
|
|
||||||
const originalPrice = prices[item._id];
|
const originalPrice = prices[item._id];
|
||||||
|
|
||||||
// We found a custom price override to use. That's all we care about for this item. Move on to the next item.
|
// We found a custom price override to use. That's all we care about for this item. Move on to the next item.
|
||||||
@ -80,15 +79,7 @@ class TheBlacklistMod implements IPostDBLoadModAsync {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (config.limitMaxPriceOfAttachments && this.attachmentCategoryIds.includes(handbookItem.ParentId)) {
|
if (config.limitMaxPriceOfAttachments && this.attachmentCategoryIds.includes(handbookItem.ParentId)) {
|
||||||
const handbookPrice = handbookItem.Price;
|
this.updateAttachmentPrice(handbookItem, item, prices);
|
||||||
const existingFleaPrice = prices[item._id];
|
|
||||||
const maxFleaPrice = handbookPrice * config.maxFleaPriceOfAttachmentsToHandbookPrice;
|
|
||||||
|
|
||||||
if (existingFleaPrice > maxFleaPrice) {
|
|
||||||
prices[item._id] = maxFleaPrice;
|
|
||||||
attachmentPriceLimitedCount++;
|
|
||||||
this.debug(`Attachment ${item._id} - ${item._name} was updated from ${existingFleaPrice} to ${maxFleaPrice}.`)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const itemProps = item._props;
|
const itemProps = item._props;
|
||||||
@ -134,7 +125,7 @@ class TheBlacklistMod implements IPostDBLoadModAsync {
|
|||||||
|
|
||||||
this.logger.success(`${this.modName}: Success! Found ${this.blacklistedItemsUpdatedCount} blacklisted & ${nonBlacklistedItemsUpdatedCount} non-blacklisted items to update.`);
|
this.logger.success(`${this.modName}: Success! Found ${this.blacklistedItemsUpdatedCount} blacklisted & ${nonBlacklistedItemsUpdatedCount} non-blacklisted items to update.`);
|
||||||
if (config.limitMaxPriceOfAttachments) {
|
if (config.limitMaxPriceOfAttachments) {
|
||||||
this.logger.success(`${this.modName}: config.limitMaxPriceOfAttachments is enabled! Updated ${attachmentPriceLimitedCount} flea prices of attachments.`);
|
this.logger.success(`${this.modName}: config.limitMaxPriceOfAttachments is enabled! Updated ${this.attachmentPriceLimitedCount} flea prices of attachments.`);
|
||||||
}
|
}
|
||||||
if (config.useBalancedPricingForAllAmmo) {
|
if (config.useBalancedPricingForAllAmmo) {
|
||||||
this.logger.success(`${this.modName}: config.useBalancedPricingForAllAmmo is enabled! Updated ${ammoPricesUpdatedCount} ammo prices.`);
|
this.logger.success(`${this.modName}: config.useBalancedPricingForAllAmmo is enabled! Updated ${ammoPricesUpdatedCount} ammo prices.`);
|
||||||
@ -174,6 +165,20 @@ class TheBlacklistMod implements IPostDBLoadModAsync {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private updateAttachmentPrice(handbookItem: HandbookItem, item: ITemplateItem, prices: Record<string, number>) {
|
||||||
|
const handbookPrice = handbookItem.Price;
|
||||||
|
const existingFleaPrice = prices[item._id];
|
||||||
|
const maxFleaPrice = handbookPrice * config.maxFleaPriceOfAttachmentsToHandbookPrice;
|
||||||
|
|
||||||
|
if (existingFleaPrice > maxFleaPrice) {
|
||||||
|
prices[item._id] = maxFleaPrice;
|
||||||
|
|
||||||
|
this.attachmentPriceLimitedCount++;
|
||||||
|
|
||||||
|
this.debug(`Attachment ${item._id} - ${item._name} was updated from ${existingFleaPrice} to ${maxFleaPrice}.`)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private getUpdatedPrice(item: ITemplateItem, prices: Record<string, number>): number | undefined {
|
private getUpdatedPrice(item: ITemplateItem, prices: Record<string, number>): number | undefined {
|
||||||
const currentFleaPrice = prices[item._id];
|
const currentFleaPrice = prices[item._id];
|
||||||
let newPrice: number;
|
let newPrice: number;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user