feat: handle costs of recipes #329
@ -3,7 +3,7 @@
 | 
			
		||||
 | 
			
		||||
import { RequestHandler } from "express";
 | 
			
		||||
import { logger } from "@/src/utils/logger";
 | 
			
		||||
import { getItemByBlueprint } from "@/src/services/itemDataService";
 | 
			
		||||
import { getRecipe } from "@/src/services/itemDataService";
 | 
			
		||||
import { IOid } from "@/src/types/commonTypes";
 | 
			
		||||
import { getJSONfromString } from "@/src/helpers/stringHelpers";
 | 
			
		||||
import { getAccountIdForRequest } from "@/src/services/loginService";
 | 
			
		||||
@ -37,8 +37,8 @@ export const claimCompletedRecipeController: RequestHandler = async (req, res) =
 | 
			
		||||
    inventory.PendingRecipes.pull(pendingRecipe._id);
 | 
			
		||||
    await inventory.save();
 | 
			
		||||
 | 
			
		||||
    const buildable = getItemByBlueprint(pendingRecipe.ItemType);
 | 
			
		||||
    if (!buildable) {
 | 
			
		||||
    const recipe = getRecipe(pendingRecipe.ItemType);
 | 
			
		||||
    if (!recipe) {
 | 
			
		||||
        logger.error(`no completed item found for recipe ${pendingRecipe._id}`);
 | 
			
		||||
        throw new Error(`no completed item found for recipe ${pendingRecipe._id}`);
 | 
			
		||||
    }
 | 
			
		||||
@ -47,18 +47,18 @@ export const claimCompletedRecipeController: RequestHandler = async (req, res) =
 | 
			
		||||
        // TODO: Refund items
 | 
			
		||||
        res.json({});
 | 
			
		||||
    } else {
 | 
			
		||||
        logger.debug("Claiming Recipe", { buildable, pendingRecipe });
 | 
			
		||||
        if (buildable.consumeOnUse) {
 | 
			
		||||
        logger.debug("Claiming Recipe", { recipe, pendingRecipe });
 | 
			
		||||
        if (recipe.consumeOnUse) {
 | 
			
		||||
            // TODO: Remove one instance of this recipe, and include that in InventoryChanges.
 | 
			
		||||
        }
 | 
			
		||||
        let currencyChanges = {};
 | 
			
		||||
        if (req.query.rush && buildable.skipBuildTimePrice) {
 | 
			
		||||
            currencyChanges = await updateCurrency(buildable.skipBuildTimePrice, true, accountId);
 | 
			
		||||
        if (req.query.rush && recipe.skipBuildTimePrice) {
 | 
			
		||||
            currencyChanges = await updateCurrency(recipe.skipBuildTimePrice, true, accountId);
 | 
			
		||||
        }
 | 
			
		||||
        res.json({
 | 
			
		||||
            InventoryChanges: {
 | 
			
		||||
                ...currencyChanges,
 | 
			
		||||
                ...(await addItem(accountId, buildable.resultType, buildable.num)).InventoryChanges
 | 
			
		||||
                ...(await addItem(accountId, recipe.resultType, recipe.num)).InventoryChanges
 | 
			
		||||
            }
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -97,8 +97,7 @@ export const blueprintNames = Object.fromEntries(
 | 
			
		||||
        .map(name => [name, craftNames[name]])
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
// Gets a recipe by its uniqueName
 | 
			
		||||
export const getItemByBlueprint = (uniqueName: string): IRecipe | undefined => {
 | 
			
		||||
export const getRecipe = (uniqueName: string): IRecipe | undefined => {
 | 
			
		||||
    return ExportRecipes[uniqueName];
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
import { unixTimesInMs } from "@/src/constants/timeConstants";
 | 
			
		||||
import { getInventory } from "@/src/services/inventoryService";
 | 
			
		||||
import { getItemByBlueprint } from "@/src/services/itemDataService";
 | 
			
		||||
import { getRecipe } from "@/src/services/itemDataService";
 | 
			
		||||
import { logger } from "@/src/utils/logger";
 | 
			
		||||
import { Types } from "mongoose";
 | 
			
		||||
 | 
			
		||||
@ -27,7 +27,7 @@ export interface IResource {
 | 
			
		||||
// };
 | 
			
		||||
 | 
			
		||||
export const startRecipe = async (recipeName: string, accountId: string) => {
 | 
			
		||||
    const recipe = getItemByBlueprint(recipeName);
 | 
			
		||||
    const recipe = getRecipe(recipeName);
 | 
			
		||||
 | 
			
		||||
    if (!recipe) {
 | 
			
		||||
        logger.error(`unknown recipe ${recipeName}`);
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user