import { PersonalRooms } from "@/src/models/personalRoomsModel"; import { addItem, getInventory } from "@/src/services/inventoryService"; import { TPersonalRoomsDatabaseDocument } from "../types/personalRoomsTypes"; import { IGardeningDatabase } from "../types/shipTypes"; import { getRandomElement } from "./rngService"; export const getPersonalRooms = async (accountId: string): Promise => { const personalRooms = await PersonalRooms.findOne({ personalRoomsOwnerId: accountId }); if (!personalRooms) { throw new Error(`personal rooms not found for account ${accountId}`); } return personalRooms; }; export const updateShipFeature = async (accountId: string, shipFeature: string): Promise => { const personalRooms = await getPersonalRooms(accountId); if (personalRooms.Ship.Features.includes(shipFeature)) { throw new Error(`ship feature ${shipFeature} already unlocked`); } personalRooms.Ship.Features.push(shipFeature); await personalRooms.save(); const inventory = await getInventory(accountId); await addItem(inventory, shipFeature, -1); await inventory.save(); }; export const createGarden = (): IGardeningDatabase => { const plantTypes = [ "/Lotus/Types/Items/Plants/MiscItems/DuvxDuviriGrowingPlantA", "/Lotus/Types/Items/Plants/MiscItems/DuvxDuviriGrowingPlantB", "/Lotus/Types/Items/Plants/MiscItems/DuvxDuviriGrowingPlantC", "/Lotus/Types/Items/Plants/MiscItems/DuvxDuviriGrowingPlantD", "/Lotus/Types/Items/Plants/MiscItems/DuvxDuviriGrowingPlantE", "/Lotus/Types/Items/Plants/MiscItems/DuvxDuviriGrowingPlantF" ]; const endTime = new Date(Date.now() + 79200_000); // Plants will take 22 hours to grow return { Planters: [ { Name: "Garden0", Plants: [ { PlantType: getRandomElement(plantTypes), EndTime: endTime, PlotIndex: 0 }, { PlantType: getRandomElement(plantTypes), EndTime: endTime, PlotIndex: 1 } ] }, { Name: "Garden1", Plants: [ { PlantType: getRandomElement(plantTypes), EndTime: endTime, PlotIndex: 0 }, { PlantType: getRandomElement(plantTypes), EndTime: endTime, PlotIndex: 1 } ] }, { Name: "Garden2", Plants: [ { PlantType: getRandomElement(plantTypes), EndTime: endTime, PlotIndex: 0 }, { PlantType: getRandomElement(plantTypes), EndTime: endTime, PlotIndex: 1 } ] } ] }; };