2023-01-15 00:21:11 -05:00
|
|
|
import { ItemHelper } from "../helpers/ItemHelper";
|
2022-12-25 18:45:30 -05:00
|
|
|
import { QuestHelper } from "../helpers/QuestHelper";
|
|
|
|
import { RepairHelper } from "../helpers/RepairHelper";
|
|
|
|
import { TraderHelper } from "../helpers/TraderHelper";
|
2023-02-12 23:21:22 -05:00
|
|
|
import { WeightedRandomHelper } from "../helpers/WeightedRandomHelper";
|
2022-12-25 18:45:30 -05:00
|
|
|
import { IPmcData } from "../models/eft/common/IPmcData";
|
|
|
|
import { Item } from "../models/eft/common/tables/IItem";
|
|
|
|
import { ITemplateItem } from "../models/eft/common/tables/ITemplateItem";
|
|
|
|
import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse";
|
|
|
|
import { RepairKitsInfo } from "../models/eft/repair/IRepairActionDataRequest";
|
|
|
|
import { RepairItem } from "../models/eft/repair/ITraderRepairActionDataRequest";
|
2023-02-12 23:21:22 -05:00
|
|
|
import { BonusSettings, IRepairConfig } from "../models/spt/config/IRepairConfig";
|
2022-12-25 18:45:30 -05:00
|
|
|
import { ILogger } from "../models/spt/utils/ILogger";
|
|
|
|
import { ConfigServer } from "../servers/ConfigServer";
|
|
|
|
import { DatabaseServer } from "../servers/DatabaseServer";
|
2023-02-12 23:21:22 -05:00
|
|
|
import { RandomUtil } from "../utils/RandomUtil";
|
2022-12-25 18:45:30 -05:00
|
|
|
import { PaymentService } from "./PaymentService";
|
|
|
|
export declare class RepairService {
|
|
|
|
protected logger: ILogger;
|
|
|
|
protected databaseServer: DatabaseServer;
|
|
|
|
protected questHelper: QuestHelper;
|
2023-02-12 23:21:22 -05:00
|
|
|
protected randomUtil: RandomUtil;
|
2023-01-15 00:21:11 -05:00
|
|
|
protected itemHelper: ItemHelper;
|
2022-12-25 18:45:30 -05:00
|
|
|
protected traderHelper: TraderHelper;
|
2023-02-12 23:21:22 -05:00
|
|
|
protected weightedRandomHelper: WeightedRandomHelper;
|
2022-12-25 18:45:30 -05:00
|
|
|
protected paymentService: PaymentService;
|
|
|
|
protected repairHelper: RepairHelper;
|
|
|
|
protected configServer: ConfigServer;
|
2023-02-12 23:21:22 -05:00
|
|
|
protected repairConfig: IRepairConfig;
|
|
|
|
constructor(logger: ILogger, databaseServer: DatabaseServer, questHelper: QuestHelper, randomUtil: RandomUtil, itemHelper: ItemHelper, traderHelper: TraderHelper, weightedRandomHelper: WeightedRandomHelper, paymentService: PaymentService, repairHelper: RepairHelper, configServer: ConfigServer);
|
2022-12-25 18:45:30 -05:00
|
|
|
/**
|
|
|
|
* Use trader to repair an items durability
|
|
|
|
* @param sessionID Session id
|
|
|
|
* @param pmcData profile to find item to repair in
|
|
|
|
* @param repairItemDetails details of the item to repair
|
|
|
|
* @param traderId Trader being used to repair item
|
|
|
|
* @returns RepairDetails object
|
|
|
|
*/
|
|
|
|
repairItemByTrader(sessionID: string, pmcData: IPmcData, repairItemDetails: RepairItem, traderId: string): RepairDetails;
|
|
|
|
/**
|
|
|
|
*
|
|
|
|
* @param sessionID Session id
|
|
|
|
* @param pmcData profile to take money from
|
|
|
|
* @param repairedItemId Repaired item id
|
|
|
|
* @param repairCost Cost to repair item in roubles
|
|
|
|
* @param traderId Id of the trader who repaired the item / who is paid
|
|
|
|
* @param output
|
|
|
|
*/
|
|
|
|
payForRepair(sessionID: string, pmcData: IPmcData, repairedItemId: string, repairCost: number, traderId: string, output: IItemEventRouterResponse): void;
|
|
|
|
/**
|
|
|
|
* Add skill points to profile after repairing an item
|
|
|
|
* @param sessionId Session id
|
|
|
|
* @param repairDetails details of item repaired, cost/item
|
|
|
|
* @param pmcData Profile to add points to
|
|
|
|
*/
|
2023-02-12 23:21:22 -05:00
|
|
|
addRepairSkillPoints(sessionId: string, repairDetails: RepairDetails, pmcData: IPmcData): void;
|
2022-12-25 18:45:30 -05:00
|
|
|
/**
|
|
|
|
*
|
|
|
|
* @param sessionId Session id
|
|
|
|
* @param pmcData Profile to update repaired item in
|
|
|
|
* @param repairKits Array of Repair kits to use
|
|
|
|
* @param itemToRepairId Item id to repair
|
|
|
|
* @param output IItemEventRouterResponse
|
|
|
|
* @returns Details of repair, item/price
|
|
|
|
*/
|
|
|
|
repairItemByKit(sessionId: string, pmcData: IPmcData, repairKits: RepairKitsInfo[], itemToRepairId: string, output: IItemEventRouterResponse): RepairDetails;
|
2023-02-12 23:21:22 -05:00
|
|
|
/**
|
|
|
|
* Calculate value repairkit points need to be divided by to get the durability points to be added to an item
|
|
|
|
* @param itemToRepairDetails Item to repair details
|
|
|
|
* @param isArmor Is the item being repaired armor
|
|
|
|
* @param pmcData Player profile
|
|
|
|
* @returns Number to divide kit points by
|
|
|
|
*/
|
|
|
|
protected getKitDivisor(itemToRepairDetails: ITemplateItem, isArmor: boolean, pmcData: IPmcData): number;
|
|
|
|
/**
|
|
|
|
* Get the bonus multiplier for a skill from a player profile
|
|
|
|
* @param skillBonusName Name of bonus to get multipler of
|
|
|
|
* @param pmcData Player profile to look in for skill
|
|
|
|
* @returns Multiplier value
|
|
|
|
*/
|
|
|
|
protected getBonusMultiplierValue(skillBonusName: string, pmcData: IPmcData): number;
|
2022-12-25 18:45:30 -05:00
|
|
|
/**
|
|
|
|
* Update repair kits Resource object if it doesn't exist
|
|
|
|
* @param repairKitDetails Repair kit details from db
|
|
|
|
* @param repairKitInInventory Repair kit to update
|
|
|
|
*/
|
|
|
|
protected addMaxResourceToKitIfMissing(repairKitDetails: ITemplateItem, repairKitInInventory: Item): void;
|
2023-02-12 23:21:22 -05:00
|
|
|
/**
|
|
|
|
* Chance to apply buff to an item (Armor/weapon) if repaired by armor kit
|
|
|
|
* @param repairDetails Repair details of item
|
|
|
|
* @param pmcData Player profile
|
|
|
|
*/
|
|
|
|
addBuffToItem(repairDetails: RepairDetails, pmcData: IPmcData): void;
|
|
|
|
/**
|
|
|
|
* Add buff to item
|
|
|
|
* @param itemConfig weapon/armor config
|
|
|
|
* @param repairDetails Details for item to repair
|
|
|
|
*/
|
|
|
|
protected addBuff(itemConfig: BonusSettings, repairDetails: RepairDetails): void;
|
|
|
|
/**
|
|
|
|
* Check if item should be buffed by checking the item type and relevant player skill level
|
|
|
|
* @param repairDetails Item that was repaired
|
|
|
|
* @param itemTpl tpl of item to be buffed
|
|
|
|
* @param pmcData Player profile
|
|
|
|
* @returns True if item should have buff applied
|
|
|
|
*/
|
|
|
|
protected shouldBuffItem(repairDetails: RepairDetails, pmcData: IPmcData): boolean;
|
|
|
|
/**
|
|
|
|
* Based on item, what underlying skill does this item use for buff settings
|
|
|
|
* @param itemTemplate Item to check for skill
|
|
|
|
* @returns Skill name
|
|
|
|
*/
|
|
|
|
protected getItemSkillType(itemTemplate: ITemplateItem): string;
|
|
|
|
/**
|
|
|
|
* Ensure multiplier is between 1 and 0.01
|
|
|
|
* @param receiveDurabilityMaxPercent Max durabiltiy percent
|
|
|
|
* @param receiveDurabilityPercent current durability percent
|
|
|
|
* @returns durability multipler value
|
|
|
|
*/
|
|
|
|
protected getDurabilityMultiplier(receiveDurabilityMaxPercent: number, receiveDurabilityPercent: number): number;
|
2022-12-25 18:45:30 -05:00
|
|
|
}
|
|
|
|
export declare class RepairDetails {
|
|
|
|
repairCost?: number;
|
|
|
|
repairedItem: Item;
|
|
|
|
repairedItemIsArmor: boolean;
|
2023-01-15 00:21:11 -05:00
|
|
|
repairAmount: number;
|
|
|
|
repairedByKit: boolean;
|
2022-12-25 18:45:30 -05:00
|
|
|
}
|