Patch server to send level/side on dogtag barters

This commit is contained in:
Tyfon
2024-07-20 15:48:07 -07:00
parent 8e63900164
commit f658724d26
2 changed files with 35 additions and 3 deletions

View File

@@ -144,12 +144,11 @@ public static class BarterOfferPatches
return 0; return 0;
} }
DogtagComponent requiredDogTag = requirement.Item.GetItemComponent<DogtagComponent>(); if (requirement.Item.GetItemComponent<DogtagComponent>() != null)
if (requiredDogTag != null)
{ {
return allItems.Select(item => item.GetItemComponent<DogtagComponent>()) return allItems.Select(item => item.GetItemComponent<DogtagComponent>())
.Where(dogtag => dogtag != null) .Where(dogtag => dogtag != null)
.Where(dogtag => dogtag.Level >= requiredDogTag.Level) .Where(dogtag => dogtag.Level >= handoverRequirement.Level)
.Where(dogtag => handoverRequirement.Side == EDogtagExchangeSide.Any || dogtag.Side.ToString() == handoverRequirement.Side.ToString()) .Where(dogtag => handoverRequirement.Side == EDogtagExchangeSide.Any || dogtag.Side.ToString() == handoverRequirement.Side.ToString())
.Count(); .Count();
} }

View File

@@ -13,6 +13,8 @@ import type { ICloner } from "@spt/utils/cloners/ICloner";
import { RagfairLinkedSlotItemService } from "./RagfairLinkedSlotItemService"; import { RagfairLinkedSlotItemService } from "./RagfairLinkedSlotItemService";
import config from "../config/config.json"; import config from "../config/config.json";
import { RagfairOfferGenerator } from "@spt/generators/RagfairOfferGenerator";
import { IRagfairOffer } from "@spt/models/eft/ragfair/IRagfairOffer";
class UIFixes implements IPreSptLoadMod { class UIFixes implements IPreSptLoadMod {
private databaseService: DatabaseService; private databaseService: DatabaseService;
@@ -50,6 +52,37 @@ class UIFixes implements IPreSptLoadMod {
{ frequency: "Always" } { frequency: "Always" }
); );
// Trader offers with dogtag barter - fixed in next SPT release *after* 3.9.3
container.afterResolution(
"RagfairOfferGenerator",
(_, ragfairOfferGenerator: RagfairOfferGenerator) => {
const original = ragfairOfferGenerator["createOffer"]; // By name because protected
ragfairOfferGenerator["createOffer"] = (userID, time, items, barterScheme, loyalLevel, isPackOffer) => {
const offer: IRagfairOffer = original.call(
ragfairOfferGenerator,
userID,
time,
items,
barterScheme,
loyalLevel,
isPackOffer
);
for (let i = 0; i < offer.requirements.length; i++) {
if (barterScheme[i]["level"] !== undefined) {
this.logger.info("UIFixes - adding dogtag requirements to trader offer");
offer.requirements[i]["level"] = barterScheme[i]["level"];
offer.requirements[i]["side"] = barterScheme[i]["side"];
}
}
return offer;
};
},
{ frequency: "Always" }
);
// Better tool return - starting production // Better tool return - starting production
if (config.putToolsBack) { if (config.putToolsBack) {
container.afterResolution( container.afterResolution(