81 lines
3.3 KiB
JavaScript
81 lines
3.3 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
class Mod {
|
|
itemHelper;
|
|
offerService;
|
|
tradeHelper;
|
|
profileHelper;
|
|
saveServer;
|
|
logger;
|
|
preAkiLoad(container) {
|
|
const logger = container.resolve("WinstonLogger");
|
|
this.logger = logger;
|
|
const staticRouterModService = container.resolve("StaticRouterModService");
|
|
//HELPERS
|
|
this.itemHelper = container.resolve("ItemHelper");
|
|
this.offerService = container.resolve("RagfairOfferService");
|
|
this.tradeHelper = container.resolve("TradeHelper");
|
|
this.profileHelper = container.resolve("ProfileHelper");
|
|
this.saveServer = container.resolve("SaveServer");
|
|
// Hook up a new static route
|
|
staticRouterModService.registerStaticRouter("LootValueRoutes", [
|
|
{
|
|
url: "/LootValue/GetItemLowestFleaPrice",
|
|
//info is the payload from client in json
|
|
//output is the response back to client
|
|
action: (url, info, sessionID, output) => {
|
|
return (JSON.stringify(this.getItemLowestFleaPrice(info.templateId)));
|
|
}
|
|
},
|
|
{
|
|
url: "/LootValue/SellItemToTrader",
|
|
//info is the payload from client in json
|
|
//output is the response back to client
|
|
action: (url, info, sessionID, output) => {
|
|
let response = this.sellItemToTrader(sessionID, info.ItemId, info.TraderId, info.Price);
|
|
return (JSON.stringify(response));
|
|
}
|
|
}
|
|
], "custom-static-LootValueRoutes");
|
|
}
|
|
getItemLowestFleaPrice(templateId) {
|
|
let offers = this.offerService.getOffersOfType(templateId);
|
|
if (offers && offers.length > 0) {
|
|
offers = offers.filter(a => a.user.memberType != 4 //exclude traders
|
|
&& a.requirements[0]._tpl == '5449016a4bdc2d6f028b456f' //consider only ruble trades
|
|
&& this.itemHelper.getItemQualityModifier(a.items[0]) == 1 //and items with full durability
|
|
);
|
|
if (offers.length > 0)
|
|
return (offers.sort((a, b) => a.summaryCost - b.summaryCost)[0]).summaryCost;
|
|
}
|
|
return null;
|
|
}
|
|
sellItemToTrader(sessionId, itemId, traderId, price) {
|
|
let pmcData = this.profileHelper.getPmcProfile(sessionId);
|
|
if (!pmcData) {
|
|
this.logger.error("pmcData was null");
|
|
return false;
|
|
}
|
|
let item = pmcData.Inventory.items.find(x => x._id === itemId);
|
|
if (!item) {
|
|
this.logger.error("item was null");
|
|
return false;
|
|
}
|
|
let sellRequest = {
|
|
Action: "sell_to_trader",
|
|
type: "sell_to_trader",
|
|
tid: traderId,
|
|
price: price,
|
|
items: [{
|
|
id: itemId,
|
|
count: item.upd ? item.upd.StackObjectsCount ? item.upd.StackObjectsCount : 1 : 1,
|
|
scheme_id: 0
|
|
}]
|
|
};
|
|
let response = this.tradeHelper.sellItem(pmcData, pmcData, sellRequest, sessionId);
|
|
this.saveServer.saveProfile(sessionId);
|
|
return true;
|
|
}
|
|
}
|
|
module.exports = { mod: new Mod() };
|
|
//# sourceMappingURL=LootValueStaticRouter.js.map
|