mirror of
https://github.com/sp-tarkov/server.git
synced 2025-02-13 09:50:43 -05:00
Merge branch '3.8.0' of https://dev.sp-tarkov.com/SPT-AKI/Server into 3.8.0
This commit is contained in:
commit
adf973bf49
@ -262,55 +262,24 @@ export class TradeController
|
|||||||
): IItemEventRouterResponse
|
): IItemEventRouterResponse
|
||||||
{
|
{
|
||||||
const output = this.eventOutputHolder.getOutput(sessionId);
|
const output = this.eventOutputHolder.getOutput(sessionId);
|
||||||
const scavProfile = this.profileHelper.getFullProfile(sessionId)?.characters?.scav;
|
|
||||||
if (!scavProfile)
|
|
||||||
{
|
|
||||||
return this.httpResponse.appendErrorToOutput(output, `Profile ${request.fromOwner.id} has no scav account`);
|
|
||||||
}
|
|
||||||
|
|
||||||
this.calculateCostOfScavInventoryAndMailMoneyToPlayer(sessionId, scavProfile, Traders.FENCE);
|
this.mailMoneyToPlayer(sessionId, request.totalValue, Traders.FENCE);
|
||||||
|
|
||||||
return output;
|
return output;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get cost of items in inventory and send rouble total to player as mail
|
* Send the specified rouble total to player as mail
|
||||||
* @param sessionId Session id
|
* @param sessionId Session id
|
||||||
* @param profileWithItemsToSell Profile with items to be sold to trader
|
|
||||||
* @param profileThatGetsMoney Profile that gets the money after selling items
|
|
||||||
* @param trader Trader to sell items to
|
* @param trader Trader to sell items to
|
||||||
* @param output IItemEventRouterResponse
|
* @param output IItemEventRouterResponse
|
||||||
*/
|
*/
|
||||||
protected calculateCostOfScavInventoryAndMailMoneyToPlayer(
|
protected mailMoneyToPlayer(
|
||||||
sessionId: string,
|
sessionId: string,
|
||||||
profileWithItemsToSell: IPmcData,
|
roublesToSend: number,
|
||||||
trader: Traders,
|
trader: Traders,
|
||||||
): void
|
): void
|
||||||
{
|
{
|
||||||
const handbookPrices = this.ragfairPriceService.getAllStaticPrices();
|
|
||||||
// TODO, apply trader sell bonuses?
|
|
||||||
const traderDetails = this.traderHelper.getTrader(trader, sessionId);
|
|
||||||
|
|
||||||
// Get all base items that scav has (primaryweapon/backpack/pockets etc)
|
|
||||||
// Add items that trader will buy (only sell items that have the container as parent) to request object
|
|
||||||
let roublesToSend = 0;
|
|
||||||
const containerAndEquipmentItems = profileWithItemsToSell.Inventory.items.filter((item) =>
|
|
||||||
item.parentId === profileWithItemsToSell.Inventory.equipment
|
|
||||||
);
|
|
||||||
for (const itemToSell of containerAndEquipmentItems)
|
|
||||||
{
|
|
||||||
// Increment sell price in request
|
|
||||||
roublesToSend += this.getPriceOfItemAndChildren(
|
|
||||||
itemToSell._id,
|
|
||||||
profileWithItemsToSell.Inventory.items,
|
|
||||||
handbookPrices,
|
|
||||||
traderDetails,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Server-side calcualted isnt matching clientside calcualtion, temp fix to get it to be closer
|
|
||||||
roublesToSend /= 2;
|
|
||||||
|
|
||||||
this.logger.debug(`Selling scav items to fence for ${roublesToSend} roubles`);
|
this.logger.debug(`Selling scav items to fence for ${roublesToSend} roubles`);
|
||||||
|
|
||||||
// Create single currency item with all currency on it
|
// Create single currency item with all currency on it
|
||||||
|
@ -3,6 +3,7 @@ import { OwnerInfo } from "@spt-aki/models/eft/common/request/IBaseInteractionRe
|
|||||||
export interface ISellScavItemsToFenceRequestData
|
export interface ISellScavItemsToFenceRequestData
|
||||||
{
|
{
|
||||||
Action: "SellAllFromSavage";
|
Action: "SellAllFromSavage";
|
||||||
|
totalValue: number;
|
||||||
fromOwner: OwnerInfo;
|
fromOwner: OwnerInfo;
|
||||||
toOwner: OwnerInfo;
|
toOwner: OwnerInfo;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user