Compare commits

...

1 Commits

Author SHA1 Message Date
10eaa35e98 feat: WeaponSkins IsNew flag 2025-03-27 20:32:02 +01:00
5 changed files with 12 additions and 2 deletions

View File

@ -586,7 +586,8 @@ const spectreLoadoutsSchema = new Schema<ISpectreLoadout>(
const weaponSkinsSchema = new Schema<IWeaponSkinDatabase>(
{
ItemType: String
ItemType: String,
IsNew: Boolean
},
{ id: false }
);

View File

@ -938,7 +938,7 @@ export const addSkin = (
typeName: string,
inventoryChanges: IInventoryChanges = {}
): IInventoryChanges => {
const index = inventory.WeaponSkins.push({ ItemType: typeName }) - 1;
const index = inventory.WeaponSkins.push({ ItemType: typeName, IsNew: true }) - 1;
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
inventoryChanges.WeaponSkins ??= [];
(inventoryChanges.WeaponSkins as IWeaponSkinClient[]).push(

View File

@ -140,6 +140,13 @@ export const handleInventoryItemConfigChange = async (
inventory.UseAdultOperatorLoadout = equipment as boolean;
break;
}
case "WeaponSkins": {
const itemEntries = equipment as IItemEntry;
for (const [itemId, itemConfigEntries] of Object.entries(itemEntries)) {
inventory.WeaponSkins.id(itemId)!.IsNew = itemConfigEntries.IsNew;
}
break;
}
default: {
if (equipmentKeys.includes(equipmentName as TEquipmentKey) && equipmentName != "ValidNewLoadoutId") {
logger.debug(`general Item config saved of type ${equipmentName}`, {

View File

@ -1017,6 +1017,7 @@ export interface ITaunt {
export interface IWeaponSkinDatabase {
ItemType: string;
IsNew?: boolean;
_id: Types.ObjectId;
}

View File

@ -36,6 +36,7 @@ export interface ISaveLoadoutRequest {
EquippedGear: string[];
EquippedEmotes: string[];
UseAdultOperatorLoadout: boolean;
WeaponSkins: IItemEntry;
}
export interface ISaveLoadoutRequestNoUpgradeVer extends Omit<ISaveLoadoutRequest, "UpgradeVer"> {}