@@ -405,21 +405,25 @@ function buildInventoryMessage(user, userItems, loadout, ap = null) {
405405 const TYPE_ICON = { weapon : '⚔️' , armor : '🧥' , helmet : '🪖' , boots : '👢' , accessory : '💍' , consumable : '🧪' } ;
406406 const TYPE_LABEL = { weapon : 'Armes' , armor : 'Armures' , helmet : 'Casques' , boots : 'Bottes' , accessory : 'Accessoires' , consumable : 'Consommables' } ;
407407
408- const equippedIds = new Set (
409- [ loadout ?. weaponId , loadout ?. armorId , loadout ?. helmetId , loadout ?. bootsId , loadout ?. accessory1Id , loadout ?. accessory2Id ] . filter ( Boolean ) ,
410- ) ;
408+ const equippedList = [
409+ loadout ?. weaponId , loadout ?. armorId , loadout ?. helmetId ,
410+ loadout ?. bootsId , loadout ?. accessory1Id , loadout ?. accessory2Id ,
411+ ] . filter ( Boolean ) ;
411412
412413 const groups = { } ;
413414 for ( const ui of userItems ) {
414415 const item = ITEMS [ ui . itemId ] ;
415416 if ( ! item ) continue ;
416417 if ( ! groups [ item . type ] ) groups [ item . type ] = [ ] ;
417- const rarity = RARITY_EMOJI [ item . rarity ] ?? '⚪' ;
418- const qty = ui . quantity > 1 ? ` ×${ ui . quantity } ` : '' ;
419- const statsStr = item . stats
418+ const rarity = RARITY_EMOJI [ item . rarity ] ?? '⚪' ;
419+ const qty = ui . quantity > 1 ? ` ×${ ui . quantity } ` : '' ;
420+ const statsStr = item . stats
420421 ? Object . entries ( item . stats ) . map ( ( [ k , v ] ) => `\`${ v > 0 ? '+' : '' } ${ v } ${ k . toUpperCase ( ) } \`` ) . join ( ' ' )
421422 : '' ;
422- const equipped = equippedIds . has ( ui . itemId ) ? ' · ✅ **équipé**' : '' ;
423+ const equippedCount = equippedList . filter ( ( id ) => id === ui . itemId ) . length ;
424+ const equipped = equippedCount > 0
425+ ? ` · ✅ **équipé${ equippedCount > 1 ? ` ×${ equippedCount } ` : '' } **`
426+ : '' ;
423427 groups [ item . type ] . push (
424428 `> ${ rarity } **${ item . name } **${ qty } ${ statsStr ? ` · ${ statsStr } ` : '' } ${ equipped } ` ,
425429 ) ;
@@ -473,7 +477,9 @@ function buildInventoryMessage(user, userItems, loadout, ap = null) {
473477 // ── Select menu équiper ────────────────────────────────────────────────────
474478 const equipable = userItems . filter ( ( ui ) => {
475479 const item = ITEMS [ ui . itemId ] ;
476- return item && item . type !== 'consumable' ;
480+ if ( ! item || item . type === 'consumable' ) return false ;
481+ const ec = equippedList . filter ( ( id ) => id === ui . itemId ) . length ;
482+ return ui . quantity - ec >= 1 ;
477483 } ) ;
478484
479485 const rows = [ ] ;
@@ -482,14 +488,13 @@ function buildInventoryMessage(user, userItems, loadout, ap = null) {
482488 const { StringSelectMenuBuilder } = require ( 'discord.js' ) ;
483489
484490 const equipOptions = equipable . map ( ( ui ) => {
485- const item = ITEMS [ ui . itemId ] ;
486- const rarity = RARITY_EMOJI [ item . rarity ] ?? '⚪' ;
491+ const item = ITEMS [ ui . itemId ] ;
492+ const rarity = RARITY_EMOJI [ item . rarity ] ?? '⚪' ;
487493 const statsStr = item . stats
488494 ? Object . entries ( item . stats ) . map ( ( [ k , v ] ) => `${ v > 0 ? '+' : '' } ${ v } ${ k . toUpperCase ( ) } ` ) . join ( ', ' )
489495 : '' ;
490- const tag = equippedIds . has ( ui . itemId ) ? ' ✅' : '' ;
491496 return {
492- label : `${ rarity } ${ item . name } ${ tag } ` . slice ( 0 , 100 ) ,
497+ label : `${ rarity } ${ item . name } ` . slice ( 0 , 100 ) ,
493498 description : `${ TYPE_LABEL [ item . type ] ?? item . type } · ${ RARITY_LABEL [ item . rarity ] ?? item . rarity } ${ statsStr ? ` · ${ statsStr } ` : '' } ` . slice ( 0 , 100 ) ,
494499 value : `equip:${ ui . itemId } ` ,
495500 } ;
0 commit comments