diff --git a/src/controllers/api/syndicateSacrificeController.ts b/src/controllers/api/syndicateSacrificeController.ts index 4ccc3aaf..5feef499 100644 --- a/src/controllers/api/syndicateSacrificeController.ts +++ b/src/controllers/api/syndicateSacrificeController.ts @@ -50,6 +50,13 @@ export const syndicateSacrificeController: RequestHandler = async (request, resp syndicate.Title ??= 0; syndicate.Title += 1; + if (syndicate.Title > 0 && manifest.favours.length != 0) { + syndicate.FreeFavorsEarned ??= []; + if (!syndicate.FreeFavorsEarned.includes(syndicate.Title)) { + syndicate.FreeFavorsEarned.push(syndicate.Title); + } + } + await inventory.save(); if (reward) { diff --git a/src/services/purchaseService.ts b/src/services/purchaseService.ts index d3f7163c..69bc22a3 100644 --- a/src/services/purchaseService.ts +++ b/src/services/purchaseService.ts @@ -80,23 +80,33 @@ export const handlePurchase = async ( switch (purchaseRequest.PurchaseParams.Source) { case 2: - if (!purchaseRequest.PurchaseParams.UseFreeFavor!) { + { const syndicateTag = purchaseRequest.PurchaseParams.SyndicateTag!; - const syndicate = ExportSyndicates[syndicateTag]; - if (syndicate) { - const favour = syndicate.favours.find(x => x.storeItem == purchaseRequest.PurchaseParams.StoreItem); - if (favour) { - const inventory = await getInventory(accountId); - const affiliation = inventory.Affiliations.find(x => x.Tag == syndicateTag); - if (affiliation) { - purchaseResponse.Standing = [ - { - Tag: syndicateTag, - Standing: favour.standingCost - } - ]; - affiliation.Standing -= favour.standingCost; - await inventory.save(); + if (purchaseRequest.PurchaseParams.UseFreeFavor!) { + const inventory = await getInventory(accountId); + const affiliation = inventory.Affiliations.find(x => x.Tag == syndicateTag)!; + affiliation.FreeFavorsUsed ??= []; + affiliation.FreeFavorsUsed.push(affiliation.FreeFavorsEarned![affiliation.FreeFavorsUsed.length]); + await inventory.save(); + } else { + const syndicate = ExportSyndicates[syndicateTag]; + if (syndicate) { + const favour = syndicate.favours.find( + x => x.storeItem == purchaseRequest.PurchaseParams.StoreItem + ); + if (favour) { + const inventory = await getInventory(accountId); + const affiliation = inventory.Affiliations.find(x => x.Tag == syndicateTag); + if (affiliation) { + purchaseResponse.Standing = [ + { + Tag: syndicateTag, + Standing: favour.standingCost + } + ]; + affiliation.Standing -= favour.standingCost; + await inventory.save(); + } } } }