local gc = game.translate_string local parse_keys = utils_data.parse_string_keys function tasks_fetch.postpone_fetch_for_next_frame(task_id, section, amount) if not (task_id and section) then return true end task_id = string.sub(task_id,1,-7) or "" -- because it ends with fetch amount = amount or 1 local extra = "" if (ini_sys:r_string_ex(section,"kind") == "i_arty") then extra = " " .. game.translate_string("st_ui_artefact") end local clr = utils_xml.get_color("pda_white") --"%c[255,238,153,26]" local news_caption = game.translate_string("ui_inv_needs") .. ":" --game.translate_string(task_manager.task_ini:r_string_ex(task_id, "title")) or "error" local news_ico = task_manager.task_ini:r_string_ex(task_id, "icon") or "ui_inGame2_D_Sisshik" local news_text = ui_item.get_sec_name(section) .. extra .. clr .. " (x" .. amount .. ")" news_text = extend_news_text(news_text, section, amount) db.actor:give_talk_message2(news_caption, news_text, news_ico, "iconed_answer_item") return true end function extend_news_text(text, section, amount) local cnt = 0 local function find_needed_items(npc, item) if item:section() == section then if item:get_remaining_uses() > 1 then cnt = cnt + item:get_remaining_uses() else cnt = cnt + 1 end end end db.actor:iterate_inventory(find_needed_items, nil) local clr_txt = utils_xml.get_color("pda_white") local clr_number if cnt == 0 then clr_number = utils_xml.get_color("d_red") elseif cnt >= amount then clr_number = utils_xml.get_color("pda_green") else clr_number = utils_xml.get_color("pda_yellow") end text = text .. "\\n" .. parse_keys(gc("st_fetch_count_have"), {["count"] = cnt, ["clr_txt"] = clr_txt, ["clr_number"] = clr_number}) cnt = 0 local m_data = alife_storage_manager.get_state() if m_data.player_created_stashes then for k,v in pairs(m_data.player_created_stashes) do local stash_obj = level.object_by_id(k) if stash_obj then stash_obj:iterate_inventory_box(find_needed_items, stash_obj) end end end if cnt == 0 then clr_number = utils_xml.get_color("d_red") elseif cnt >= amount then clr_number = utils_xml.get_color("pda_green") else clr_number = utils_xml.get_color("pda_yellow") end text = text .. "\\n" .. parse_keys(gc("st_fetch_count_in_stashes"), {["count"] = cnt, ["clr_txt"] = clr_txt, ["clr_number"] = clr_number}) return text end