feat: fabricate research
	
		
			
	
		
	
	
		
	
		
			All checks were successful
		
		
	
	
		
			
				
	
				Build / build (22) (push) Successful in 1m3s
				
			
		
			
				
	
				Build / build (20) (pull_request) Successful in 40s
				
			
		
			
				
	
				Build / build (22) (pull_request) Successful in 1m2s
				
			
		
			
				
	
				Build / build (18) (push) Successful in 45s
				
			
		
			
				
	
				Build / build (20) (push) Successful in 1m0s
				
			
		
			
				
	
				Build / build (18) (pull_request) Successful in 1m4s
				
			
		
		
	
	
				
					
				
			
		
			All checks were successful
		
		
	
	Build / build (22) (push) Successful in 1m3s
				
			Build / build (20) (pull_request) Successful in 40s
				
			Build / build (22) (pull_request) Successful in 1m2s
				
			Build / build (18) (push) Successful in 45s
				
			Build / build (20) (push) Successful in 1m0s
				
			Build / build (18) (pull_request) Successful in 1m4s
				
			This commit is contained in:
		
							parent
							
								
									cf62320857
								
							
						
					
					
						commit
						79ac6eef40
					
				
							
								
								
									
										8
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										8
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							@ -17,7 +17,7 @@
 | 
				
			|||||||
        "mongoose": "^8.11.0",
 | 
					        "mongoose": "^8.11.0",
 | 
				
			||||||
        "morgan": "^1.10.0",
 | 
					        "morgan": "^1.10.0",
 | 
				
			||||||
        "typescript": ">=4.7.4 <5.6.0",
 | 
					        "typescript": ">=4.7.4 <5.6.0",
 | 
				
			||||||
        "warframe-public-export-plus": "^0.5.42",
 | 
					        "warframe-public-export-plus": "^0.5.43",
 | 
				
			||||||
        "warframe-riven-info": "^0.1.2",
 | 
					        "warframe-riven-info": "^0.1.2",
 | 
				
			||||||
        "winston": "^3.17.0",
 | 
					        "winston": "^3.17.0",
 | 
				
			||||||
        "winston-daily-rotate-file": "^5.0.0"
 | 
					        "winston-daily-rotate-file": "^5.0.0"
 | 
				
			||||||
@ -4073,9 +4073,9 @@
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/warframe-public-export-plus": {
 | 
					    "node_modules/warframe-public-export-plus": {
 | 
				
			||||||
      "version": "0.5.42",
 | 
					      "version": "0.5.43",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/warframe-public-export-plus/-/warframe-public-export-plus-0.5.42.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/warframe-public-export-plus/-/warframe-public-export-plus-0.5.43.tgz",
 | 
				
			||||||
      "integrity": "sha512-up3P5bLKD42Xkr3o7TX9WUwvpJzK88aQTLZ2bB6QWUHdsJxl/Z3TBn+HSd3eouIDTMVUzbTDeDPosSw7TcLegA=="
 | 
					      "integrity": "sha512-LeF7HmsjOPsJDtgr66x3iMEIAQgcxKNM54VG895FTemgHLLo34UGDyeS1yIfY67WxxbTUgW3MkHQLlCEJXD14w=="
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/warframe-riven-info": {
 | 
					    "node_modules/warframe-riven-info": {
 | 
				
			||||||
      "version": "0.1.2",
 | 
					      "version": "0.1.2",
 | 
				
			||||||
 | 
				
			|||||||
@ -22,7 +22,7 @@
 | 
				
			|||||||
    "mongoose": "^8.11.0",
 | 
					    "mongoose": "^8.11.0",
 | 
				
			||||||
    "morgan": "^1.10.0",
 | 
					    "morgan": "^1.10.0",
 | 
				
			||||||
    "typescript": ">=4.7.4 <5.6.0",
 | 
					    "typescript": ">=4.7.4 <5.6.0",
 | 
				
			||||||
    "warframe-public-export-plus": "^0.5.42",
 | 
					    "warframe-public-export-plus": "^0.5.43",
 | 
				
			||||||
    "warframe-riven-info": "^0.1.2",
 | 
					    "warframe-riven-info": "^0.1.2",
 | 
				
			||||||
    "winston": "^3.17.0",
 | 
					    "winston": "^3.17.0",
 | 
				
			||||||
    "winston-daily-rotate-file": "^5.0.0"
 | 
					    "winston-daily-rotate-file": "^5.0.0"
 | 
				
			||||||
 | 
				
			|||||||
@ -2,7 +2,14 @@ import { RequestHandler } from "express";
 | 
				
			|||||||
import { getGuildForRequestEx, getGuildVault, scaleRequiredCount } from "@/src/services/guildService";
 | 
					import { getGuildForRequestEx, getGuildVault, scaleRequiredCount } from "@/src/services/guildService";
 | 
				
			||||||
import { ExportDojoRecipes, IDojoResearch } from "warframe-public-export-plus";
 | 
					import { ExportDojoRecipes, IDojoResearch } from "warframe-public-export-plus";
 | 
				
			||||||
import { getAccountIdForRequest } from "@/src/services/loginService";
 | 
					import { getAccountIdForRequest } from "@/src/services/loginService";
 | 
				
			||||||
import { addMiscItems, addRecipes, getInventory, updateCurrency } from "@/src/services/inventoryService";
 | 
					import {
 | 
				
			||||||
 | 
					    addItem,
 | 
				
			||||||
 | 
					    addMiscItems,
 | 
				
			||||||
 | 
					    addRecipes,
 | 
				
			||||||
 | 
					    combineInventoryChanges,
 | 
				
			||||||
 | 
					    getInventory,
 | 
				
			||||||
 | 
					    updateCurrency
 | 
				
			||||||
 | 
					} from "@/src/services/inventoryService";
 | 
				
			||||||
import { IMiscItem } from "@/src/types/inventoryTypes/inventoryTypes";
 | 
					import { IMiscItem } from "@/src/types/inventoryTypes/inventoryTypes";
 | 
				
			||||||
import { IInventoryChanges } from "@/src/types/purchaseTypes";
 | 
					import { IInventoryChanges } from "@/src/types/purchaseTypes";
 | 
				
			||||||
import { config } from "@/src/services/configService";
 | 
					import { config } from "@/src/services/configService";
 | 
				
			||||||
@ -127,6 +134,20 @@ export const guildTechController: RequestHandler = async (req, res) => {
 | 
				
			|||||||
                Recipes: recipeChanges
 | 
					                Recipes: recipeChanges
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
 | 
					    } else if (action == "Fabricate") {
 | 
				
			||||||
 | 
					        const payload = data as IGuildTechFabricateRequest;
 | 
				
			||||||
 | 
					        const recipe = ExportDojoRecipes.fabrications[payload.RecipeType];
 | 
				
			||||||
 | 
					        const inventory = await getInventory(accountId);
 | 
				
			||||||
 | 
					        const inventoryChanges: IInventoryChanges = updateCurrency(inventory, recipe.price, false);
 | 
				
			||||||
 | 
					        inventoryChanges.MiscItems = recipe.ingredients.map(x => ({
 | 
				
			||||||
 | 
					            ItemType: x.ItemType,
 | 
				
			||||||
 | 
					            ItemCount: x.ItemCount * -1
 | 
				
			||||||
 | 
					        }));
 | 
				
			||||||
 | 
					        addMiscItems(inventory, inventoryChanges.MiscItems);
 | 
				
			||||||
 | 
					        combineInventoryChanges(inventoryChanges, (await addItem(inventory, recipe.resultType)).InventoryChanges);
 | 
				
			||||||
 | 
					        await inventory.save();
 | 
				
			||||||
 | 
					        // Not a mistake: This response uses `inventoryChanges` instead of `InventoryChanges`.
 | 
				
			||||||
 | 
					        res.json({ inventoryChanges: inventoryChanges });
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
        throw new Error(`unknown guildTech action: ${data.Action}`);
 | 
					        throw new Error(`unknown guildTech action: ${data.Action}`);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@ -144,10 +165,12 @@ const processFundedProject = (
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type TGuildTechRequest = {
 | 
					type TGuildTechRequest =
 | 
				
			||||||
 | 
					    | ({
 | 
				
			||||||
          Action: string;
 | 
					          Action: string;
 | 
				
			||||||
      } & Partial<IGuildTechStartFields> &
 | 
					      } & Partial<IGuildTechStartFields> &
 | 
				
			||||||
    Partial<IGuildTechContributeFields>;
 | 
					          Partial<IGuildTechContributeFields>)
 | 
				
			||||||
 | 
					    | IGuildTechFabricateRequest;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
interface IGuildTechStartFields {
 | 
					interface IGuildTechStartFields {
 | 
				
			||||||
    Mode: "Guild";
 | 
					    Mode: "Guild";
 | 
				
			||||||
@ -164,3 +187,9 @@ interface IGuildTechContributeFields {
 | 
				
			|||||||
    VaultCredits: number;
 | 
					    VaultCredits: number;
 | 
				
			||||||
    VaultMiscItems: IMiscItem[];
 | 
					    VaultMiscItems: IMiscItem[];
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					interface IGuildTechFabricateRequest {
 | 
				
			||||||
 | 
					    Action: "Fabricate";
 | 
				
			||||||
 | 
					    Mode: "Guild";
 | 
				
			||||||
 | 
					    RecipeType: string;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user