Sun, 29 Jun 2025 23:37:19 +0300
Add more descriptions mod
local item_categories = { "item", "item-with-entity-data", "rail-planner", "capsule", "repair-tool", "blueprint", "deconstruction-item", "upgrade-item", "blueprint-book", "copy-paste-tool", "module", "tool", "gun", "ammo", "space-platform-starter-pack", "armor", "spidertron-remote", } local entity_categories = { "container", "storage-tank", "transport-belt", "underground-belt", "splitter", "loader", "inserter", "electric-pole", "pipe", "pipe-to-ground", "pump", "straight-rail", "half-diagonal-rail", "curved-rail-a", "curved-rail-b", "elevated-straight-rail", "elevated-half-diagonal-rail", "elevated-curved-rail-a", "elevated-curved-rail-b", "legacy-straight-rail", "legacy-curved-rail", "rail-ramp", "rail-support", "train-stop", "rail-signal", "rail-chain-signal", "locomotive", "cargo-wagon", "fluid-wagon", "artillery-wagon", "car", "spider-vehicle", "logistic-robot", "construction-robot", "logistic-container", "roboport", "lamp", "arithmetic-combinator", "decider-combinator", "selector-combinator", "constant-combinator", "power-switch", "programmable-speaker", "display-panel", "boiler", "generator", "fusion-reactor", "fusion-generator", "mining-drill", "offshore-pump", "furnace", "assembling-machine", "agricultural-tower", "lab", "lightning-attractor", "reactor", "beacon", "rocket-silo", "cargo-landing-pad", "space-platform-hub", "cargo-bay", "asteroid-collector", "thruster", "wall", "gate", "radar", "land-mine", "ammo-turret", "electric-turret", "fluid-turret", "artillery-turret", "plant", "simple-entity-with-force", "simple-entity-with-owner", "electric-energy-interface", "linked-container", "proxy-container", "heat-interface", "lane-splitter", "linked-belt", "valve", "infinity-cargo-wagon", "infinity-container", "infinity-pipe", "burner-generator", "resource", "cargo-pod", "temporary-container", "asteroid", "combat-robot", "unit", "turret", "unit-spawner", "spider-unit", "segmented-unit", "cliff", "character", "fish", "tree", "simple-entity", "lightning", "corpse", "rail-remnants", "explosion", "particle-source", "fire", "sticker", "stream", "artillery-flare", "artillery-projectile", "projectile", "segment", "spider-leg", "beam", "character-corpse", "speech-bubble", "smoke-with-trigger", "entity-ghost", "arrow", "highlight-box", "item-entity", "item-request-proxy", "loader-1x1", "rocket-silo-rocket", "rocket-silo-rocket-shadow", "tile-ghost", "market", "capture-robot", "solar-panel", } local function find_entity(name) for _, entity_category in pairs(entity_categories) do if data.raw[entity_category] and data.raw[entity_category][name] then return data.raw[entity_category][name] end end return nil end for _, item_type in pairs(item_categories) do for _, item in pairs(data.raw[item_type] or {}) do local new_descriptions = {} local refining_recipe = data.raw.recipe[item.name.."-refining"] local recycling_recipe = data.raw.recipe[item.name.."-recycling"] if recycling_recipe ~= nil then local recycling_results = {""} for _, result in pairs(recycling_recipe.results) do table.insert(recycling_results, "[img="..result.type.."."..result.name.."]") end table.insert(new_descriptions, { "more-descriptions-mod.recycling", tostring(recycling_recipe.energy_required), recycling_results }) end if mods["promethium-quality"] then if refining_recipe ~= nil then table.insert(new_descriptions, { "more-descriptions-mod.refining-cost", tostring(refining_recipe.energy_required), }) elseif recycling_recipe ~= nil then table.insert(new_descriptions, { "more-descriptions-mod.cannot-be-refined", }) end end local entity = item.place_result and find_entity(item.place_result) or nil if entity ~= nil then if entity.collision_box then local cb = entity.collision_box local width = math.ceil(cb[2][1] - cb[1][1]) local height = math.ceil(cb[2][2] - cb[1][2]) table.insert(new_descriptions, { "more-descriptions-mod.size", tostring(width), tostring(height), }) end end if #new_descriptions > 0 then local main_description = item.localised_description and {"", item.localised_description, "\n"} or { "?", {"", {"entity-description."..item.name}, "\n"}, {"", {"item-description."..item.name}, "\n"}, "" } item.localised_description = { "", main_description, } for i, k in pairs(new_descriptions) do if i ~= 1 then table.insert(item.localised_description, "\n") end table.insert(item.localised_description, k) end end end end for _, recipe in pairs(data.raw.recipe) do local new_descriptions = {} if recipe.allow_productivity then table.insert(new_descriptions, {"more-descriptions-mod.allows-productivity"}) end if #new_descriptions > 0 then local main_description = recipe.localised_description and {"", recipe.localised_description, "\n"} or { "?", {"", {"recipe-description."..recipe.name}, "\n"}, "" } recipe.localised_description = { "", main_description, } for i, k in pairs(new_descriptions) do if i ~= 1 then table.insert(recipe.localised_description, "\n") end table.insert(recipe.localised_description, k) end end end