forked from OpenWF/SpaceNinjaServer
		
	feat: zanuka capture (#1416)
Reviewed-on: OpenWF/SpaceNinjaServer#1416 Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com>
This commit is contained in:
		
							parent
							
								
									367dd3f22d
								
							
						
					
					
						commit
						3a26d788a2
					
				@ -83,7 +83,8 @@ import {
 | 
				
			|||||||
    INemesisClient,
 | 
					    INemesisClient,
 | 
				
			||||||
    IInfNode,
 | 
					    IInfNode,
 | 
				
			||||||
    IDiscoveredMarker,
 | 
					    IDiscoveredMarker,
 | 
				
			||||||
    IWeeklyMission
 | 
					    IWeeklyMission,
 | 
				
			||||||
 | 
					    ILockedWeaponGroupDatabase
 | 
				
			||||||
} from "../../types/inventoryTypes/inventoryTypes";
 | 
					} from "../../types/inventoryTypes/inventoryTypes";
 | 
				
			||||||
import { IOid } from "../../types/commonTypes";
 | 
					import { IOid } from "../../types/commonTypes";
 | 
				
			||||||
import {
 | 
					import {
 | 
				
			||||||
@ -1147,6 +1148,17 @@ const alignmentSchema = new Schema<IAlignment>(
 | 
				
			|||||||
    { _id: false }
 | 
					    { _id: false }
 | 
				
			||||||
);
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const lockedWeaponGroupSchema = new Schema<ILockedWeaponGroupDatabase>(
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        s: Schema.Types.ObjectId,
 | 
				
			||||||
 | 
					        p: Schema.Types.ObjectId,
 | 
				
			||||||
 | 
					        l: Schema.Types.ObjectId,
 | 
				
			||||||
 | 
					        m: Schema.Types.ObjectId,
 | 
				
			||||||
 | 
					        sn: Schema.Types.ObjectId
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    { _id: false }
 | 
				
			||||||
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const inventorySchema = new Schema<IInventoryDatabase, InventoryDocumentProps>(
 | 
					const inventorySchema = new Schema<IInventoryDatabase, InventoryDocumentProps>(
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        accountOwnerId: Schema.Types.ObjectId,
 | 
					        accountOwnerId: Schema.Types.ObjectId,
 | 
				
			||||||
@ -1488,7 +1500,9 @@ const inventorySchema = new Schema<IInventoryDatabase, InventoryDocumentProps>(
 | 
				
			|||||||
        EchoesHexConquestActiveFrameVariants: { type: [String], default: undefined },
 | 
					        EchoesHexConquestActiveFrameVariants: { type: [String], default: undefined },
 | 
				
			||||||
        EchoesHexConquestActiveStickers: { type: [String], default: undefined },
 | 
					        EchoesHexConquestActiveStickers: { type: [String], default: undefined },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        BrandedSuits: { type: [Schema.Types.ObjectId], default: undefined }
 | 
					        // G3 + Zanuka
 | 
				
			||||||
 | 
					        BrandedSuits: { type: [Schema.Types.ObjectId], default: undefined },
 | 
				
			||||||
 | 
					        LockedWeaponGroup: { type: lockedWeaponGroupSchema, default: undefined }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    { timestamps: { createdAt: "Created", updatedAt: false } }
 | 
					    { timestamps: { createdAt: "Created", updatedAt: false } }
 | 
				
			||||||
);
 | 
					);
 | 
				
			||||||
@ -1523,6 +1537,15 @@ inventorySchema.set("toJSON", {
 | 
				
			|||||||
        if (inventoryDatabase.BrandedSuits) {
 | 
					        if (inventoryDatabase.BrandedSuits) {
 | 
				
			||||||
            inventoryResponse.BrandedSuits = inventoryDatabase.BrandedSuits.map(toOid);
 | 
					            inventoryResponse.BrandedSuits = inventoryDatabase.BrandedSuits.map(toOid);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if (inventoryDatabase.LockedWeaponGroup) {
 | 
				
			||||||
 | 
					            inventoryResponse.LockedWeaponGroup = {
 | 
				
			||||||
 | 
					                s: toOid(inventoryDatabase.LockedWeaponGroup.s),
 | 
				
			||||||
 | 
					                l: inventoryDatabase.LockedWeaponGroup.l ? toOid(inventoryDatabase.LockedWeaponGroup.l) : undefined,
 | 
				
			||||||
 | 
					                p: inventoryDatabase.LockedWeaponGroup.p ? toOid(inventoryDatabase.LockedWeaponGroup.p) : undefined,
 | 
				
			||||||
 | 
					                m: inventoryDatabase.LockedWeaponGroup.m ? toOid(inventoryDatabase.LockedWeaponGroup.m) : undefined,
 | 
				
			||||||
 | 
					                sn: inventoryDatabase.LockedWeaponGroup.sn ? toOid(inventoryDatabase.LockedWeaponGroup.sn) : undefined
 | 
				
			||||||
 | 
					            };
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -47,6 +47,7 @@ import kuriaMessage100 from "@/static/fixed_responses/kuriaMessages/oneHundredPe
 | 
				
			|||||||
import conservationAnimals from "@/static/fixed_responses/conservationAnimals.json";
 | 
					import conservationAnimals from "@/static/fixed_responses/conservationAnimals.json";
 | 
				
			||||||
import { getInfNodes } from "@/src/helpers/nemesisHelpers";
 | 
					import { getInfNodes } from "@/src/helpers/nemesisHelpers";
 | 
				
			||||||
import { Loadout } from "../models/inventoryModels/loadoutModel";
 | 
					import { Loadout } from "../models/inventoryModels/loadoutModel";
 | 
				
			||||||
 | 
					import { ILoadoutConfigDatabase } from "../types/saveLoadoutTypes";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const getRotations = (rotationCount: number): number[] => {
 | 
					const getRotations = (rotationCount: number): number[] => {
 | 
				
			||||||
    if (rotationCount === 0) return [0];
 | 
					    if (rotationCount === 0) return [0];
 | 
				
			||||||
@ -95,7 +96,8 @@ export const addMissionInventoryUpdates = async (
 | 
				
			|||||||
        inventoryUpdates.MissionFailed &&
 | 
					        inventoryUpdates.MissionFailed &&
 | 
				
			||||||
        inventoryUpdates.MissionStatus == "GS_FAILURE" &&
 | 
					        inventoryUpdates.MissionStatus == "GS_FAILURE" &&
 | 
				
			||||||
        inventoryUpdates.EndOfMatchUpload &&
 | 
					        inventoryUpdates.EndOfMatchUpload &&
 | 
				
			||||||
        inventoryUpdates.ObjectiveReached
 | 
					        inventoryUpdates.ObjectiveReached &&
 | 
				
			||||||
 | 
					        !inventoryUpdates.LockedWeaponGroup
 | 
				
			||||||
    ) {
 | 
					    ) {
 | 
				
			||||||
        const loadout = (await Loadout.findById(inventory.LoadOutPresets, "NORMAL"))!;
 | 
					        const loadout = (await Loadout.findById(inventory.LoadOutPresets, "NORMAL"))!;
 | 
				
			||||||
        const config = loadout.NORMAL.id(inventory.CurrentLoadOutIds[0].$oid)!;
 | 
					        const config = loadout.NORMAL.id(inventory.CurrentLoadOutIds[0].$oid)!;
 | 
				
			||||||
@ -397,6 +399,35 @@ export const addMissionInventoryUpdates = async (
 | 
				
			|||||||
                }
 | 
					                }
 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					            case "LockedWeaponGroup": {
 | 
				
			||||||
 | 
					                inventory.LockedWeaponGroup = {
 | 
				
			||||||
 | 
					                    s: new Types.ObjectId(value.s.$oid),
 | 
				
			||||||
 | 
					                    l: value.l ? new Types.ObjectId(value.l.$oid) : undefined,
 | 
				
			||||||
 | 
					                    p: value.p ? new Types.ObjectId(value.p.$oid) : undefined,
 | 
				
			||||||
 | 
					                    m: value.m ? new Types.ObjectId(value.m.$oid) : undefined,
 | 
				
			||||||
 | 
					                    sn: value.sn ? new Types.ObjectId(value.sn.$oid) : undefined
 | 
				
			||||||
 | 
					                };
 | 
				
			||||||
 | 
					                break;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            case "UnlockWeapons": {
 | 
				
			||||||
 | 
					                inventory.LockedWeaponGroup = undefined;
 | 
				
			||||||
 | 
					                break;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            case "CurrentLoadOutIds": {
 | 
				
			||||||
 | 
					                const loadout = await Loadout.findOne({ loadoutOwnerId: inventory.accountOwnerId });
 | 
				
			||||||
 | 
					                if (loadout) {
 | 
				
			||||||
 | 
					                    for (const [loadoutId, loadoutConfig] of Object.entries(value.LoadOuts.NORMAL)) {
 | 
				
			||||||
 | 
					                        const { ItemId, ...loadoutConfigItemIdRemoved } = loadoutConfig;
 | 
				
			||||||
 | 
					                        const loadoutConfigDatabase: ILoadoutConfigDatabase = {
 | 
				
			||||||
 | 
					                            _id: new Types.ObjectId(ItemId.$oid),
 | 
				
			||||||
 | 
					                            ...loadoutConfigItemIdRemoved
 | 
				
			||||||
 | 
					                        };
 | 
				
			||||||
 | 
					                        loadout.NORMAL.id(loadoutId)!.overwrite(loadoutConfigDatabase);
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    await loadout.save();
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                break;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
            default:
 | 
					            default:
 | 
				
			||||||
                // Equipment XP updates
 | 
					                // Equipment XP updates
 | 
				
			||||||
                if (equipmentKeys.includes(key as TEquipmentKey)) {
 | 
					                if (equipmentKeys.includes(key as TEquipmentKey)) {
 | 
				
			||||||
 | 
				
			|||||||
@ -45,6 +45,7 @@ export interface IInventoryDatabase
 | 
				
			|||||||
            | "Nemesis"
 | 
					            | "Nemesis"
 | 
				
			||||||
            | "EntratiVaultCountResetDate"
 | 
					            | "EntratiVaultCountResetDate"
 | 
				
			||||||
            | "BrandedSuits"
 | 
					            | "BrandedSuits"
 | 
				
			||||||
 | 
					            | "LockedWeaponGroup"
 | 
				
			||||||
            | TEquipmentKey
 | 
					            | TEquipmentKey
 | 
				
			||||||
        >,
 | 
					        >,
 | 
				
			||||||
        InventoryDatabaseEquipment {
 | 
					        InventoryDatabaseEquipment {
 | 
				
			||||||
@ -75,6 +76,7 @@ export interface IInventoryDatabase
 | 
				
			|||||||
    Nemesis?: INemesisDatabase;
 | 
					    Nemesis?: INemesisDatabase;
 | 
				
			||||||
    EntratiVaultCountResetDate?: Date;
 | 
					    EntratiVaultCountResetDate?: Date;
 | 
				
			||||||
    BrandedSuits?: Types.ObjectId[];
 | 
					    BrandedSuits?: Types.ObjectId[];
 | 
				
			||||||
 | 
					    LockedWeaponGroup?: ILockedWeaponGroupDatabase;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export interface IQuestKeyDatabase {
 | 
					export interface IQuestKeyDatabase {
 | 
				
			||||||
@ -349,6 +351,7 @@ export interface IInventoryClient extends IDailyAffiliations, InventoryClientEqu
 | 
				
			|||||||
    EchoesHexConquestActiveFrameVariants?: string[];
 | 
					    EchoesHexConquestActiveFrameVariants?: string[];
 | 
				
			||||||
    EchoesHexConquestActiveStickers?: string[];
 | 
					    EchoesHexConquestActiveStickers?: string[];
 | 
				
			||||||
    BrandedSuits?: IOid[];
 | 
					    BrandedSuits?: IOid[];
 | 
				
			||||||
 | 
					    LockedWeaponGroup?: ILockedWeaponGroupClient;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export interface IAffiliation {
 | 
					export interface IAffiliation {
 | 
				
			||||||
@ -1149,3 +1152,19 @@ export interface ISongChallenge {
 | 
				
			|||||||
    Song: string;
 | 
					    Song: string;
 | 
				
			||||||
    Difficulties: number[];
 | 
					    Difficulties: number[];
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export interface ILockedWeaponGroupClient {
 | 
				
			||||||
 | 
					    s: IOid;
 | 
				
			||||||
 | 
					    p?: IOid;
 | 
				
			||||||
 | 
					    l?: IOid;
 | 
				
			||||||
 | 
					    m?: IOid;
 | 
				
			||||||
 | 
					    sn?: IOid;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export interface ILockedWeaponGroupDatabase {
 | 
				
			||||||
 | 
					    s: Types.ObjectId;
 | 
				
			||||||
 | 
					    p?: Types.ObjectId;
 | 
				
			||||||
 | 
					    l?: Types.ObjectId;
 | 
				
			||||||
 | 
					    m?: Types.ObjectId;
 | 
				
			||||||
 | 
					    sn?: Types.ObjectId;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -17,7 +17,9 @@ import {
 | 
				
			|||||||
    ILoreFragmentScan,
 | 
					    ILoreFragmentScan,
 | 
				
			||||||
    IUpgradeClient,
 | 
					    IUpgradeClient,
 | 
				
			||||||
    ICollectibleEntry,
 | 
					    ICollectibleEntry,
 | 
				
			||||||
    IDiscoveredMarker
 | 
					    IDiscoveredMarker,
 | 
				
			||||||
 | 
					    ILockedWeaponGroupClient,
 | 
				
			||||||
 | 
					    ILoadOutPresets
 | 
				
			||||||
} from "./inventoryTypes/inventoryTypes";
 | 
					} from "./inventoryTypes/inventoryTypes";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export interface IAffiliationChange {
 | 
					export interface IAffiliationChange {
 | 
				
			||||||
@ -108,6 +110,12 @@ export type IMissionInventoryUpdateRequest = {
 | 
				
			|||||||
        Count: number;
 | 
					        Count: number;
 | 
				
			||||||
    }[];
 | 
					    }[];
 | 
				
			||||||
    DiscoveredMarkers?: IDiscoveredMarker[];
 | 
					    DiscoveredMarkers?: IDiscoveredMarker[];
 | 
				
			||||||
 | 
					    LockedWeaponGroup?: ILockedWeaponGroupClient; // sent when captured by zanuka
 | 
				
			||||||
 | 
					    UnlockWeapons?: boolean; // sent when recovered weapons from zanuka capture
 | 
				
			||||||
 | 
					    IncHarvester?: boolean; // sent when recovered weapons from zanuka capture
 | 
				
			||||||
 | 
					    CurrentLoadOutIds?: {
 | 
				
			||||||
 | 
					        LoadOuts: ILoadOutPresets; // sent when recovered weapons from zanuka capture
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
} & {
 | 
					} & {
 | 
				
			||||||
    [K in TEquipmentKey]?: IEquipmentClient[];
 | 
					    [K in TEquipmentKey]?: IEquipmentClient[];
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user