implement weapon gilding
This commit is contained in:
		
							parent
							
								
									9b7127972d
								
							
						
					
					
						commit
						f78b75083b
					
				
							
								
								
									
										64
									
								
								src/controllers/api/gildWeaponController.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										64
									
								
								src/controllers/api/gildWeaponController.ts
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,64 @@
 | 
				
			|||||||
 | 
					import { RequestHandler } from "express";
 | 
				
			||||||
 | 
					import { getAccountIdForRequest } from "@/src/services/loginService";
 | 
				
			||||||
 | 
					import { getJSONfromString } from "@/src/helpers/stringHelpers";
 | 
				
			||||||
 | 
					import { getInventory } from "@/src/services/inventoryService";
 | 
				
			||||||
 | 
					import { WeaponTypeInternal } from "@/src/services/itemDataService";
 | 
				
			||||||
 | 
					import { ArtifactPolarity, EquipmentFeatures } from "@/src/types/inventoryTypes/commonInventoryTypes";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const modularWeaponCategory: (WeaponTypeInternal | "Hoverboards")[] = [
 | 
				
			||||||
 | 
					    "LongGuns",
 | 
				
			||||||
 | 
					    "Pistols",
 | 
				
			||||||
 | 
					    "Melee",
 | 
				
			||||||
 | 
					    "OperatorAmps",
 | 
				
			||||||
 | 
					    "Hoverboards" // Not sure about hoverboards just coppied from modual crafting
 | 
				
			||||||
 | 
					];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					interface IGildWeaponRequest {
 | 
				
			||||||
 | 
					    ItemName: string;
 | 
				
			||||||
 | 
					    Recipe: string; // /Lotus/Weapons/SolarisUnited/LotusGildKitgunBlueprint
 | 
				
			||||||
 | 
					    PolarizeSlot?: number;
 | 
				
			||||||
 | 
					    PolarizeValue?: ArtifactPolarity;
 | 
				
			||||||
 | 
					    ItemId: string;
 | 
				
			||||||
 | 
					    Caterogy: WeaponTypeInternal | "Hoverboards";
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// In export there no recipes for gild action, so reputation and ressources only consumed visually
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// eslint-disable-next-line @typescript-eslint/no-misused-promises
 | 
				
			||||||
 | 
					export const gildWeaponController: RequestHandler = async (req, res) => {
 | 
				
			||||||
 | 
					    const accountId = await getAccountIdForRequest(req);
 | 
				
			||||||
 | 
					    const data: IGildWeaponRequest = getJSONfromString(String(req.body));
 | 
				
			||||||
 | 
					    data.ItemId = String(req.query.ItemId);
 | 
				
			||||||
 | 
					    if (!modularWeaponCategory.includes(req.query.Category as WeaponTypeInternal | "Hoverboards")) {
 | 
				
			||||||
 | 
					        throw new Error(`unknown modular weapon Category: ${req.query.Category}`);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    data.Caterogy = req.query.Category as WeaponTypeInternal | "Hoverboards";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    const inventory = await getInventory(accountId);
 | 
				
			||||||
 | 
					    if(!inventory[data.Caterogy]){
 | 
				
			||||||
 | 
					        throw new Error(`Category ${req.query.Category} dont foudn in inventory`);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    const weaponIndex = inventory[data.Caterogy].findIndex(x => String(x._id) === data.ItemId);
 | 
				
			||||||
 | 
					    if(weaponIndex === -1){
 | 
				
			||||||
 | 
					        throw new Error(`Weapon with ${data.ItemId} not found in category ${req.query.Category}`);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    const weapon = inventory[data.Caterogy][weaponIndex];
 | 
				
			||||||
 | 
					    weapon.Features = EquipmentFeatures.GILDING; // maybe 9 idk if DOUBLE_CAPACITY is also given
 | 
				
			||||||
 | 
					    weapon.ItemName = data.ItemName
 | 
				
			||||||
 | 
					    weapon.XP = 0;
 | 
				
			||||||
 | 
					    if(data.Caterogy != "OperatorAmps" && (data.PolarizeSlot && data.PolarizeValue)){
 | 
				
			||||||
 | 
					        weapon.Polarity= [{
 | 
				
			||||||
 | 
					            Slot: data.PolarizeSlot,
 | 
				
			||||||
 | 
					            Value: data.PolarizeValue
 | 
				
			||||||
 | 
					        }]
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    inventory[data.Caterogy][weaponIndex] = weapon
 | 
				
			||||||
 | 
					    await inventory.save();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    res.json({
 | 
				
			||||||
 | 
					        InventoryChanges: {
 | 
				
			||||||
 | 
					            [data.Caterogy]: [weapon]
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
@ -61,6 +61,7 @@ import { updateChallengeProgressController } from "@/src/controllers/api/updateC
 | 
				
			|||||||
import { updateSessionGetController, updateSessionPostController } from "@/src/controllers/api/updateSessionController";
 | 
					import { updateSessionGetController, updateSessionPostController } from "@/src/controllers/api/updateSessionController";
 | 
				
			||||||
import { updateThemeController } from "../controllers/api/updateThemeController";
 | 
					import { updateThemeController } from "../controllers/api/updateThemeController";
 | 
				
			||||||
import { upgradesController } from "@/src/controllers/api/upgradesController";
 | 
					import { upgradesController } from "@/src/controllers/api/upgradesController";
 | 
				
			||||||
 | 
					import { gildWeaponController } from "../controllers/api/gildWeaponController";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const apiRouter = express.Router();
 | 
					const apiRouter = express.Router();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -106,6 +107,7 @@ apiRouter.post("/findSessions.php", findSessionsController);
 | 
				
			|||||||
apiRouter.post("/focus.php", focusController);
 | 
					apiRouter.post("/focus.php", focusController);
 | 
				
			||||||
apiRouter.post("/genericUpdate.php", genericUpdateController);
 | 
					apiRouter.post("/genericUpdate.php", genericUpdateController);
 | 
				
			||||||
apiRouter.post("/getAlliance.php", getAllianceController);
 | 
					apiRouter.post("/getAlliance.php", getAllianceController);
 | 
				
			||||||
 | 
					apiRouter.post("/gildWeapon.php", gildWeaponController);
 | 
				
			||||||
apiRouter.post("/guildTech.php", guildTechController);
 | 
					apiRouter.post("/guildTech.php", guildTechController);
 | 
				
			||||||
apiRouter.post("/hostSession.php", hostSessionController);
 | 
					apiRouter.post("/hostSession.php", hostSessionController);
 | 
				
			||||||
apiRouter.post("/infestedFoundry.php", infestedFoundryController);
 | 
					apiRouter.post("/infestedFoundry.php", infestedFoundryController);
 | 
				
			||||||
 | 
				
			|||||||
@ -86,6 +86,7 @@ export enum EquipmentFeatures {
 | 
				
			|||||||
    DOUBLE_CAPACITY = 1,
 | 
					    DOUBLE_CAPACITY = 1,
 | 
				
			||||||
    UTILITY_SLOT = 2,
 | 
					    UTILITY_SLOT = 2,
 | 
				
			||||||
    GRAVIMAG_INSTALLED = 4,
 | 
					    GRAVIMAG_INSTALLED = 4,
 | 
				
			||||||
 | 
					    GILDING = 8,
 | 
				
			||||||
    ARCANE_SLOT = 32,
 | 
					    ARCANE_SLOT = 32,
 | 
				
			||||||
    INCARNON_GENESIS = 512
 | 
					    INCARNON_GENESIS = 512
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -112,6 +113,7 @@ export interface IEquipmentDatabase {
 | 
				
			|||||||
    Expiry?: IMongoDate;
 | 
					    Expiry?: IMongoDate;
 | 
				
			||||||
    SkillTree?: string;
 | 
					    SkillTree?: string;
 | 
				
			||||||
    ArchonCrystalUpgrades?: IArchonCrystalUpgrade[];
 | 
					    ArchonCrystalUpgrades?: IArchonCrystalUpgrade[];
 | 
				
			||||||
 | 
					    ItemId: IOid;
 | 
				
			||||||
    _id: Types.ObjectId;
 | 
					    _id: Types.ObjectId;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user