add purchase
This commit is contained in:
		
							parent
							
								
									e08df26ab3
								
							
						
					
					
						commit
						d03cc9eec2
					
				@ -7,5 +7,6 @@
 | 
				
			|||||||
  "skipStoryModeChoice": true,
 | 
					  "skipStoryModeChoice": true,
 | 
				
			||||||
  "skipTutorial": true,
 | 
					  "skipTutorial": true,
 | 
				
			||||||
  "testMission": true,
 | 
					  "testMission": true,
 | 
				
			||||||
  "testQuestKey": true
 | 
					  "testQuestKey": true,
 | 
				
			||||||
 | 
					  "testShipFeature": true
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										8
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										8
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							@ -11,7 +11,8 @@
 | 
				
			|||||||
            "dependencies": {
 | 
					            "dependencies": {
 | 
				
			||||||
                "dotenv": "^16.1.3",
 | 
					                "dotenv": "^16.1.3",
 | 
				
			||||||
                "express": "^5.0.0-beta.1",
 | 
					                "express": "^5.0.0-beta.1",
 | 
				
			||||||
                "mongoose": "^7.1.1"
 | 
					                "mongoose": "^7.1.1",
 | 
				
			||||||
 | 
					                "warframe-items": "^1.1260.50"
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            "devDependencies": {
 | 
					            "devDependencies": {
 | 
				
			||||||
                "@tsconfig/node20": "^1.0.0",
 | 
					                "@tsconfig/node20": "^1.0.0",
 | 
				
			||||||
@ -3140,6 +3141,11 @@
 | 
				
			|||||||
                "node": ">= 0.8"
 | 
					                "node": ">= 0.8"
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
 | 
					        "node_modules/warframe-items": {
 | 
				
			||||||
 | 
					            "version": "1.1260.50",
 | 
				
			||||||
 | 
					            "resolved": "https://registry.npmjs.org/warframe-items/-/warframe-items-1.1260.50.tgz",
 | 
				
			||||||
 | 
					            "integrity": "sha512-03oNB6Yg61yUd7glewUUg0avnaGaAqc9oVPJk+1THFB0o/d4ppQSgL38yTUxMwmw0avCrqd+8z5TMrfXtvPDXQ=="
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
        "node_modules/webidl-conversions": {
 | 
					        "node_modules/webidl-conversions": {
 | 
				
			||||||
            "version": "7.0.0",
 | 
					            "version": "7.0.0",
 | 
				
			||||||
            "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
 | 
					            "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
 | 
				
			||||||
 | 
				
			|||||||
@ -14,7 +14,8 @@
 | 
				
			|||||||
    "dependencies": {
 | 
					    "dependencies": {
 | 
				
			||||||
        "dotenv": "^16.1.3",
 | 
					        "dotenv": "^16.1.3",
 | 
				
			||||||
        "express": "^5.0.0-beta.1",
 | 
					        "express": "^5.0.0-beta.1",
 | 
				
			||||||
        "mongoose": "^7.1.1"
 | 
					        "mongoose": "^7.1.1",
 | 
				
			||||||
 | 
					        "warframe-items": "^1.1260.50"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "devDependencies": {
 | 
					    "devDependencies": {
 | 
				
			||||||
        "@tsconfig/node20": "^1.0.0",
 | 
					        "@tsconfig/node20": "^1.0.0",
 | 
				
			||||||
 | 
				
			|||||||
@ -1,7 +1,12 @@
 | 
				
			|||||||
 | 
					import { RequestHandler } from "express";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import { Account } from "@/src/models/loginModel";
 | 
					import { Account } from "@/src/models/loginModel";
 | 
				
			||||||
import { Ship } from "@/src/models/shipModel";
 | 
					import { Ship } from "@/src/models/shipModel";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import { createShip } from "@/src/services/shipService";
 | 
					import { createShip } from "@/src/services/shipService";
 | 
				
			||||||
import { RequestHandler } from "express";
 | 
					
 | 
				
			||||||
 | 
					import config from "@/config.json";
 | 
				
			||||||
 | 
					import testShipFeature from "@/static/fixed_responses/testShipFeature.json";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// eslint-disable-next-line @typescript-eslint/no-misused-promises
 | 
					// eslint-disable-next-line @typescript-eslint/no-misused-promises
 | 
				
			||||||
const getShipController: RequestHandler = async (_req, res) => {
 | 
					const getShipController: RequestHandler = async (_req, res) => {
 | 
				
			||||||
@ -16,6 +21,13 @@ const getShipController: RequestHandler = async (_req, res) => {
 | 
				
			|||||||
            return;
 | 
					            return;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (ship) {
 | 
				
			||||||
 | 
					        const new_ship = ship;
 | 
				
			||||||
 | 
					        if (config.testMission) new_ship.Ship.Features = testShipFeature;
 | 
				
			||||||
 | 
					        res.json(new_ship);
 | 
				
			||||||
 | 
					        return;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
    res.json(ship);
 | 
					    res.json(ship);
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -1,8 +1,17 @@
 | 
				
			|||||||
import purchase from "@/static/fixed_responses/purchase.json";
 | 
					/* eslint-disable @typescript-eslint/no-unsafe-argument */
 | 
				
			||||||
 | 
					/* eslint-disable @typescript-eslint/no-unsafe-assignment */
 | 
				
			||||||
 | 
					import { PurchaseItem } from "@/src/services/tradeService";
 | 
				
			||||||
import { Request, Response } from "express";
 | 
					import { Request, Response } from "express";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const purchaseController = (_req: Request, res: Response): void => {
 | 
					const purchaseController = (_req: Request, res: Response): void => {
 | 
				
			||||||
    res.json(purchase);
 | 
					    const body = JSON.parse(_req.body);
 | 
				
			||||||
 | 
					    const response = PurchaseItem(
 | 
				
			||||||
 | 
					        body.PurchaseParams.StoreItem,
 | 
				
			||||||
 | 
					        body.PurchaseParams.Quantity,
 | 
				
			||||||
 | 
					        body.PurchaseParams.UsePremium,
 | 
				
			||||||
 | 
					        body.PurchaseParams.ExpectedPrice
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					    res.json({ InventoryChanges: response });
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export { purchaseController };
 | 
					export { purchaseController };
 | 
				
			||||||
 | 
				
			|||||||
@ -1,3 +1,6 @@
 | 
				
			|||||||
 | 
					import mongoose from "mongoose";
 | 
				
			||||||
 | 
					import { Oid } from "../types/commonTypes";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const isString = (text: unknown): text is string => {
 | 
					const isString = (text: unknown): text is string => {
 | 
				
			||||||
    return typeof text === "string" || text instanceof String;
 | 
					    return typeof text === "string" || text instanceof String;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
@ -55,4 +58,15 @@ const parseBoolean = (booleanCandidate: unknown): boolean => {
 | 
				
			|||||||
    return booleanCandidate;
 | 
					    return booleanCandidate;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export { isString, isNumber, parseString, parseNumber, parseDateNumber, parseBoolean, parseEmail };
 | 
					const generateOid = (str?: string): Oid => {
 | 
				
			||||||
 | 
					    const objectId: Oid = {
 | 
				
			||||||
 | 
					        $oid: new mongoose.Types.ObjectId().toString()
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					    if (str) {
 | 
				
			||||||
 | 
					        objectId.$oid = str;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    //console.log(objectId);
 | 
				
			||||||
 | 
					    return objectId;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export { isString, isNumber, parseString, parseNumber, parseDateNumber, parseBoolean, parseEmail, generateOid };
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										77
									
								
								src/services/tradeService.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										77
									
								
								src/services/tradeService.ts
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,77 @@
 | 
				
			|||||||
 | 
					import { Item, Misc, Skin, Warframe, Weapon } from "warframe-items";
 | 
				
			||||||
 | 
					import { InventoryChanges, StoreItem } from "../types/commonTypes";
 | 
				
			||||||
 | 
					import { generateOid, parseString } from "../helpers/general";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const PurchaseItem = (item: Item, quantity: number, usePremium: boolean, price: number): InventoryChanges => {
 | 
				
			||||||
 | 
					    // {"InventoryChanges":{"WishlistChanges":["/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerItem"],"FlavourItems":[{"ItemType":"/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerItem"}],"PremiumCredits":-75}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    const newInventoryChanges: InventoryChanges = {};
 | 
				
			||||||
 | 
					    if ((item as Warframe).productCategory == "Suits") {
 | 
				
			||||||
 | 
					        const newSuits: StoreItem[] = [
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                ItemType: item.uniqueName,
 | 
				
			||||||
 | 
					                Cofigs: [],
 | 
				
			||||||
 | 
					                ItemId: generateOid()
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        ];
 | 
				
			||||||
 | 
					        newInventoryChanges.Suits = newSuits;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if ((item as Weapon).productCategory == "LongGuns") {
 | 
				
			||||||
 | 
					        const newLongGuns: StoreItem[] = [
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                ItemType: item.uniqueName,
 | 
				
			||||||
 | 
					                Cofigs: [],
 | 
				
			||||||
 | 
					                ItemId: generateOid()
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        ];
 | 
				
			||||||
 | 
					        newInventoryChanges.LongGuns = newLongGuns;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if ((item as Weapon).productCategory == "Pistols") {
 | 
				
			||||||
 | 
					        const newPistols: StoreItem[] = [
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                ItemType: item.uniqueName,
 | 
				
			||||||
 | 
					                Cofigs: [],
 | 
				
			||||||
 | 
					                ItemId: generateOid()
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        ];
 | 
				
			||||||
 | 
					        newInventoryChanges.Pistols = newPistols;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if ((item as Weapon).productCategory == "Melee") {
 | 
				
			||||||
 | 
					        const newMelee: StoreItem[] = [
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                ItemType: item.uniqueName,
 | 
				
			||||||
 | 
					                Cofigs: [],
 | 
				
			||||||
 | 
					                ItemId: generateOid()
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        ];
 | 
				
			||||||
 | 
					        newInventoryChanges.Melee = newMelee;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (item as Misc) {
 | 
				
			||||||
 | 
					        const newMisc: StoreItem[] = [
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                ItemType: item.uniqueName,
 | 
				
			||||||
 | 
					                ItemCount: quantity
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        ];
 | 
				
			||||||
 | 
					        newInventoryChanges.MiscItems = newMisc;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (item as Skin) {
 | 
				
			||||||
 | 
					        newInventoryChanges.WishlistChanges = [];
 | 
				
			||||||
 | 
					        newInventoryChanges.WishlistChanges.push(parseString(item.uniqueName));
 | 
				
			||||||
 | 
					        const newFlavourItem: StoreItem[] = [
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                ItemType: item.uniqueName
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        ];
 | 
				
			||||||
 | 
					        newInventoryChanges.FlavourItems = newFlavourItem;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (usePremium) {
 | 
				
			||||||
 | 
					        newInventoryChanges.PremiumCredits = -price;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (!usePremium) {
 | 
				
			||||||
 | 
					        newInventoryChanges.RegularCredits = -price;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return newInventoryChanges;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export { PurchaseItem };
 | 
				
			||||||
@ -1,3 +1,25 @@
 | 
				
			|||||||
 | 
					import { CrewShipSalvageBinClass, SuitConfig } from "./inventoryTypes";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export interface Oid {
 | 
					export interface Oid {
 | 
				
			||||||
    $oid: string;
 | 
					    $oid: string;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export interface StoreItem {
 | 
				
			||||||
 | 
					    ItemType?: string;
 | 
				
			||||||
 | 
					    ItemId?: Oid;
 | 
				
			||||||
 | 
					    ItemCount?: number;
 | 
				
			||||||
 | 
					    Cofigs?: SuitConfig[];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export interface InventoryChanges {
 | 
				
			||||||
 | 
					    WeaponBin?: CrewShipSalvageBinClass;
 | 
				
			||||||
 | 
					    WishlistChanges?: string[];
 | 
				
			||||||
 | 
					    FlavourItems?: StoreItem[];
 | 
				
			||||||
 | 
					    Suits?: StoreItem[];
 | 
				
			||||||
 | 
					    LongGuns?: StoreItem[];
 | 
				
			||||||
 | 
					    Pistols?: StoreItem[];
 | 
				
			||||||
 | 
					    Melee?: StoreItem[];
 | 
				
			||||||
 | 
					    MiscItems?: StoreItem[];
 | 
				
			||||||
 | 
					    PremiumCredits?: number;
 | 
				
			||||||
 | 
					    RegularCredits?: number;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										58
									
								
								static/fixed_responses/testShipFeature.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								static/fixed_responses/testShipFeature.json
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,58 @@
 | 
				
			|||||||
 | 
					[
 | 
				
			||||||
 | 
					    "/Lotus/Types/Items/ShipFeatureItems/EarthNavigationFeatureItem",
 | 
				
			||||||
 | 
					    "/Lotus/Types/Items/ShipFeatureItems/ArsenalFeatureItem",
 | 
				
			||||||
 | 
					    "/Lotus/Types/Items/ShipFeatureItems/SocialMenuFeatureItem",
 | 
				
			||||||
 | 
					    "/Lotus/Types/Items/ShipFeatureItems/AdvancedOrdisFeatureItem",
 | 
				
			||||||
 | 
					    "/Lotus/Types/Items/ShipFeatureItems/AlchemyRoomFeatureItem",
 | 
				
			||||||
 | 
					    "/Lotus/Types/Items/ShipFeatureItems/AlertsFeatureItem",
 | 
				
			||||||
 | 
					    "/Lotus/Types/Items/ShipFeatureItems/ArsenalFeatureItem",
 | 
				
			||||||
 | 
					    "/Lotus/Types/Items/ShipFeatureItems/CeresNavigationFeatureItem",
 | 
				
			||||||
 | 
					    "/Lotus/Types/Items/ShipFeatureItems/ClanFeatureItem",
 | 
				
			||||||
 | 
					    "/Lotus/Types/Items/ShipFeatureItems/EarthNavigationFeatureItem",
 | 
				
			||||||
 | 
					    "/Lotus/Types/Items/ShipFeatureItems/EidolonArchwingFoundryUpgradeFeatureItem",
 | 
				
			||||||
 | 
					    "/Lotus/Types/Items/ShipFeatureItems/ErisNavigationFeatureItem",
 | 
				
			||||||
 | 
					    "/Lotus/Types/Items/ShipFeatureItems/EuropaNavigationFeatureItem",
 | 
				
			||||||
 | 
					    "/Lotus/Types/Items/ShipFeatureItems/FoundryConcurrentBuildFormaFeatureItem",
 | 
				
			||||||
 | 
					    "/Lotus/Types/Items/ShipFeatureItems/FoundryFeatureItem",
 | 
				
			||||||
 | 
					    "/Lotus/Types/Items/ShipFeatureItems/FoundryVesselUpgradeFeatureItem",
 | 
				
			||||||
 | 
					    "/Lotus/Types/Items/ShipFeatureItems/GeneticFoundryCatbrowUpgradeFeatureItem",
 | 
				
			||||||
 | 
					    "/Lotus/Types/Items/ShipFeatureItems/GeneticFoundryFeatureItem",
 | 
				
			||||||
 | 
					    "/Lotus/Types/Items/ShipFeatureItems/GeneticFoundryUpgradeFeatureItem",
 | 
				
			||||||
 | 
					    "/Lotus/Types/Items/ShipFeatureItems/InfestedFoundryArchonShardFeatureItem",
 | 
				
			||||||
 | 
					    "/Lotus/Types/Items/ShipFeatureItems/InfestedFoundryItem",
 | 
				
			||||||
 | 
					    "/Lotus/Types/Items/ShipFeatureItems/InfestedFoundryUpgradeFeatureItem",
 | 
				
			||||||
 | 
					    "/Lotus/Types/Items/ShipFeatureItems/JupiterNavigationFeatureItem",
 | 
				
			||||||
 | 
					    "/Lotus/Types/Items/ShipFeatureItems/MarketTierOneFeatureItem",
 | 
				
			||||||
 | 
					    "/Lotus/Types/Items/ShipFeatureItems/MarketTierTwoFeatureItem",
 | 
				
			||||||
 | 
					    "/Lotus/Types/Items/ShipFeatureItems/MarsNavigationFeatureItem",
 | 
				
			||||||
 | 
					    "/Lotus/Types/Items/ShipFeatureItems/MercuryNavigationFeatureItem",
 | 
				
			||||||
 | 
					    "/Lotus/Types/Items/ShipFeatureItems/ModsFeatureItem",
 | 
				
			||||||
 | 
					    "/Lotus/Types/Items/ShipFeatureItems/ModsFusionFeatureItem",
 | 
				
			||||||
 | 
					    "/Lotus/Types/Items/ShipFeatureItems/ModsTransmuteFeatureItem",
 | 
				
			||||||
 | 
					    "/Lotus/Types/Items/ShipFeatureItems/NeptuneNavigationFeatureItem",
 | 
				
			||||||
 | 
					    "/Lotus/Types/Items/ShipFeatureItems/PersonalQuartersFeatureItem",
 | 
				
			||||||
 | 
					    "/Lotus/Types/Items/ShipFeatureItems/PhobosNavigationFeatureItem",
 | 
				
			||||||
 | 
					    "/Lotus/Types/Items/ShipFeatureItems/PlutoNavigationFeatureItem",
 | 
				
			||||||
 | 
					    "/Lotus/Types/Items/ShipFeatureItems/Railjack/DamagedRailjackHoodBraceFeatureItem",
 | 
				
			||||||
 | 
					    "/Lotus/Types/Items/ShipFeatureItems/Railjack/DamagedRailjackHoodFeatureItem",
 | 
				
			||||||
 | 
					    "/Lotus/Types/Items/ShipFeatureItems/Railjack/DamagedRailjackHullFeatureItem",
 | 
				
			||||||
 | 
					    "/Lotus/Types/Items/ShipFeatureItems/Railjack/DamagedRailjackNacelleLeftFeatureItem",
 | 
				
			||||||
 | 
					    "/Lotus/Types/Items/ShipFeatureItems/Railjack/DamagedRailjackNacelleRightFeatureItem",
 | 
				
			||||||
 | 
					    "/Lotus/Types/Items/ShipFeatureItems/Railjack/DamagedRailjackTailFeatureItem",
 | 
				
			||||||
 | 
					    "/Lotus/Types/Items/ShipFeatureItems/Railjack/RailjackHoodBraceFeatureItem",
 | 
				
			||||||
 | 
					    "/Lotus/Types/Items/ShipFeatureItems/Railjack/RailjackHoodFeatureItem",
 | 
				
			||||||
 | 
					    "/Lotus/Types/Items/ShipFeatureItems/Railjack/RailjackHullFeatureItem",
 | 
				
			||||||
 | 
					    "/Lotus/Types/Items/ShipFeatureItems/Railjack/RailjackNacelleLeftFeatureItem",
 | 
				
			||||||
 | 
					    "/Lotus/Types/Items/ShipFeatureItems/Railjack/RailjackNacelleRightFeatureItem",
 | 
				
			||||||
 | 
					    "/Lotus/Types/Items/ShipFeatureItems/Railjack/RailjackTailFeatureItem",
 | 
				
			||||||
 | 
					    "/Lotus/Types/Items/ShipFeatureItems/RailjackCephalonShipFeatureItem",
 | 
				
			||||||
 | 
					    "/Lotus/Types/Items/ShipFeatureItems/RailjackKeyShipFeatureItem",
 | 
				
			||||||
 | 
					    "/Lotus/Types/Items/ShipFeatureItems/SaturnNavigationFeatureItem",
 | 
				
			||||||
 | 
					    "/Lotus/Types/Items/ShipFeatureItems/SednaNavigationFeatureItem",
 | 
				
			||||||
 | 
					    "/Lotus/Types/Items/ShipFeatureItems/ShipFeatureItem",
 | 
				
			||||||
 | 
					    "/Lotus/Types/Items/ShipFeatureItems/SocialMenuFeatureItem",
 | 
				
			||||||
 | 
					    "/Lotus/Types/Items/ShipFeatureItems/SolarChartFeatureItem",
 | 
				
			||||||
 | 
					    "/Lotus/Types/Items/ShipFeatureItems/UranusNavigationFeatureItem",
 | 
				
			||||||
 | 
					    "/Lotus/Types/Items/ShipFeatureItems/VenusNavigationFeatureItem",
 | 
				
			||||||
 | 
					    "/Lotus/Types/Items/ShipFeatureItems/VoidProjectionFeatureItem"
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user