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>( const weaponSkinsSchema = new Schema<IWeaponSkinDatabase>(
{ {
ItemType: String ItemType: String,
IsNew: Boolean
}, },
{ id: false } { id: false }
); );

View File

@ -938,7 +938,7 @@ export const addSkin = (
typeName: string, typeName: string,
inventoryChanges: IInventoryChanges = {} inventoryChanges: IInventoryChanges = {}
): 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 // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
inventoryChanges.WeaponSkins ??= []; inventoryChanges.WeaponSkins ??= [];
(inventoryChanges.WeaponSkins as IWeaponSkinClient[]).push( (inventoryChanges.WeaponSkins as IWeaponSkinClient[]).push(

View File

@ -140,6 +140,13 @@ export const handleInventoryItemConfigChange = async (
inventory.UseAdultOperatorLoadout = equipment as boolean; inventory.UseAdultOperatorLoadout = equipment as boolean;
break; 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: { default: {
if (equipmentKeys.includes(equipmentName as TEquipmentKey) && equipmentName != "ValidNewLoadoutId") { if (equipmentKeys.includes(equipmentName as TEquipmentKey) && equipmentName != "ValidNewLoadoutId") {
logger.debug(`general Item config saved of type ${equipmentName}`, { logger.debug(`general Item config saved of type ${equipmentName}`, {

View File

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

View File

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