Para agrupar os itens coletados pelo autoloot, você pode adicionar um loop para percorrer os itens coletados e verificar se há itens semelhantes. Se houver, você pode somar suas quantidades e removê-los da lista de itens coletados. Em seguida, adicione o item agrupado à lista de itens agrupados. function auto_loot {
check_items local old_IFS=$IFS
IFS=$'\n'
local items=($(printf '%s\n' "${item_list[@]}" | sort))
local grouped_items=()
for item in "${items[@]}"; do
local name=${item%% *}
local qty=${item#* }
local sum_qty=$qty
for ((i=0; i<${#grouped_items[@]}; i++)); do
local g_name=${grouped_items[$i]%% *}
local g_qty=${grouped_items[$i]#* }
if [[ $name == $g_name ]]; then
sum_qty=$((qty + g_qty))
grouped_items[$i]="$name $sum_qty"
break
fi
done
if [[ $sum_qty -eq $qty ]]; then
grouped_items+=("$name $qty")
fi
done
IFS=$old_IFS
for item in "${grouped_items[@]}"; do
local name=${item%% *}
local qty=${item#* }
loot $name $qty
done
}
O loop for item in "${items[@]}" percorre cada item coletado e verifica se há itens semelhantes na lista grouped_items.
O loop interno for ((i=0; i<${#grouped_items[@]}; i++)) percorre cada item agrupado e verifica se há um item semelhante.
Se um item semelhante for encontrado, sua quantidade é somada à quantidade do item coletado atual, e o item coletado é removido da lista de itens coletados.
Se nenhum item semelhante for encontrado, o item coletado é adicionado à lista de itens agrupados.
Após o loop, a lista de itens agrupados é percorrida e cada item é coletado usando a função loot.