From 58ca06d1e06e831b138c77ad491039a8588990bc Mon Sep 17 00:00:00 2001 From: Axel Cocat Date: Mon, 27 Jun 2022 23:25:28 +0200 Subject: [PATCH] feat: handle hidden transmog items (#26) --- src/armory/controllers/CharacterController.ts | 17 +++++++++++------ static/character.hbs | 13 +++++++++---- 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/src/armory/controllers/CharacterController.ts b/src/armory/controllers/CharacterController.ts index 2e922bf..4eabe38 100644 --- a/src/armory/controllers/CharacterController.ts +++ b/src/armory/controllers/CharacterController.ts @@ -437,18 +437,23 @@ export class CharacterController { if (appearance === undefined) { continue; } + appearance = { ...appearance }; let invType = this.itemInventoryTypes[equipment.itemEntry]; items.push([invType, appearance.itemDisplayInfoId]); if (transmogOut !== undefined) { if (equipment.transmog !== undefined) { - const modifiedAppearance = await this.armory.dbc.itemModifiedAppearance().find((row) => row.itemId === equipment.transmog); - if (modifiedAppearance !== undefined) { - const tmogAppearance = await this.armory.dbc.itemAppearance().find((row) => row.id === modifiedAppearance.itemAppearanceId); - if (tmogAppearance !== undefined) { - appearance = tmogAppearance; - invType = this.itemInventoryTypes[equipment.transmog]; + if (equipment.transmog === 1) { + appearance.itemDisplayInfoId = -1; // Hidden gear piece from transmog + } else { + const modifiedAppearance = await this.armory.dbc.itemModifiedAppearance().find((row) => row.itemId === equipment.transmog); + if (modifiedAppearance !== undefined) { + const tmogAppearance = await this.armory.dbc.itemAppearance().find((row) => row.id === modifiedAppearance.itemAppearanceId); + if (tmogAppearance !== undefined) { + appearance = tmogAppearance; + invType = this.itemInventoryTypes[equipment.transmog]; + } } } } diff --git a/static/character.hbs b/static/character.hbs index ff5239e..6d3cad9 100644 --- a/static/character.hbs +++ b/static/character.hbs @@ -155,7 +155,7 @@ $("#list-transmogs-container").show(); for (const item of charData.equipment) { - if (item.transmog !== undefined) { + if (item.transmog !== undefined && item.transmog !== 1) { const $li = $("
  • ").appendTo("#list-transmogs ul"); $("") .attr("href", `{{aowow}}/?item=${item.transmog}`) @@ -173,7 +173,7 @@ const hideHelm = $("#cb-hide-helmet").prop("checked"); const hideCloak = $("#cb-hide-cloak").prop("checked"); const hideTabard = $("#cb-hide-tabard").prop("checked"); - setItems(items.filter(item => !((item[0] === 1 && hideHelm) || (item[0] === 16 && hideCloak) || (item[0] === 19 && hideTabard)))); + setItems(items.filter(item => !((item[0] === 1 && hideHelm) || (item[0] === 16 && hideCloak) || (item[0] === 19 && hideTabard)) && item[1] !== -1)); }); let viewer; @@ -198,7 +198,11 @@ const items = transmogged ? charData.characterModelTransmogs : charData.characterModelItems; const item = items.find(([sl, appearance]) => sl === slot); if (item !== undefined) { - setItems([item]); + if (item[1] === -1) { + clearSlots([slot]); + } else { + setItems([item]); + } } } else { clearSlots([slot]); @@ -416,7 +420,8 @@ sheathOff: -1, }, cls: charData.class, - items: (charData.characterModelTransmogs ?? charData.characterModelItems).filter(item => !((item[0] === 1 && hideHelm) || (item[0] === 16 && hideCloak))), + items: (charData.characterModelTransmogs ?? charData.characterModelItems) + .filter(item => !((item[0] === 1 && hideHelm) || (item[0] === 16 && hideCloak)) && item[1] !== -1), models: { type: ZamModelViewer.Wow.Types.CHARACTER, id: `${races[charData.race]}${genders[charData.gender]}`,