diff --git a/README.md b/README.md index 3d4ab68..48fbd32 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ This mod adds a global variable named `HotMetals`. Add things to it to add suppo It has the following properties. ### `items` -Add an item name as string or a table with `name` and optional `spoilTicks` and `iconFolder`. The icon file will be `iconFolder .. "hot-" .. itemName .. ".png"`. If you need more control over the icons, provide a table `icons` instead of `iconFolder`. +Add an item name as string or a table with `name` and optional `spoilTicks` and `iconFolder`. The icon file will be `iconFolder .. "hot-" .. itemName .. ".png"`. ### `craftingCategories` A table containing all supported crafting categories. This mod uses a white list to prevent unwanted categories by default. Only categories used by smelting buildings like the furnace and the foundry should be added. diff --git a/hot-metals/changelog.txt b/hot-metals/changelog.txt index 0812e56..9e9cd3c 100644 --- a/hot-metals/changelog.txt +++ b/hot-metals/changelog.txt @@ -1,62 +1,17 @@ ---------------------------------------------------------------------------------------------------- -Version: 1.2.6 -Date: 18.04.2025 - Changes: - - Add polish translation (I forgot who did it :-( ) - - Move technology changes to final fixes stage ---------------------------------------------------------------------------------------------------- -Version: 1.2.5 -Date: 04.02.2025 - Changes: - - Add Low density structure again after Wube fixed a bug (https://forums.factorio.com/123081) - - Add support for Muluna (Aluminum plate) ---------------------------------------------------------------------------------------------------- -Version: 1.2.4 -Date: 03.02.2025 - Bug Fixes: - - Fix item weights (many items weights where way off) ---------------------------------------------------------------------------------------------------- -Version: 1.2.3 -Date: 03.02.2025 - Changes: - - Use non-hot icon variants for the recipes - Bug Fixes: - - Properly load cf-lib util ---------------------------------------------------------------------------------------------------- -Version: 1.2.2 -Date: 02.02.2025 - Changes: - - Recipes always output "fresh" hot metals (https://mods.factorio.com/mod/hot-metals/discussion/6775293c1c4d7b0e4bba8648) - - Recipe code now also works if the main result is not the first result in the results list ---------------------------------------------------------------------------------------------------- -Version: 1.2.1 -Date: 09.01.2025 - Changes: - - Add hot stone bricks and hot concrete (https://mods.factorio.com/mod/hot-metals/discussion/677fdef8d37eef8332fa6c2f) - - Biochambers don't generate hot plastic (https://mods.factorio.com/mod/hot-metals/discussion/675af47f1fba71716b2b7f7f) ---------------------------------------------------------------------------------------------------- -Version: 1.2.0 -Date: 01.01.2025 - Changes: - - Add support for custom icons (https://mods.factorio.com/mod/hot-metals/discussion/6773ea5e1c4d7b0e4bba85b6) - - Add hot plastic (https://mods.factorio.com/mod/hot-metals/discussion/675af47f1fba71716b2b7f7f) - Bug Fixes: - - Support main_product (https://mods.factorio.com/mod/hot-metals/discussion/6773e919c568cd84f3f0884f) ---------------------------------------------------------------------------------------------------- -Version: 1.1.1 -Date: 21.12.2024 - Bug Fixes: - - Fixed labels for hot pipe and underground pipe items and recipes (https://mods.factorio.com/mod/hot-metals/discussion/67493d0742705fa9914f61ca) - - Fixed technology triggers being replaced for items that have non-hot early game recipes (https://mods.factorio.com/mod/hot-metals/discussion/676668fb9ce172be6c25f87a) ---------------------------------------------------------------------------------------------------- -Version: 1.1.0 -Date: 03.12.2024 - Changes: - - Added support for Vanilla (you still need to purchase Space Age) - - Added support for AAI Industry - - Added modding support - - Removed Low density structure from the list because of https://forums.factorio.com/viewtopic.php?f=7&t=123081 - Bug Fixes: - - Fixed research triggers that use metals with hot variants - - Fixed missing recipe names +Version: 1.1.1 +Date: 21.12.2024 + Bug Fixes: + - Fixed labels for hot pipe and underground pipe items and recipes (https://mods.factorio.com/mod/hot-metals/discussion/67493d0742705fa9914f61ca) + - Fixed technology triggers being replaced for items that have non-hot early game recipes (https://mods.factorio.com/mod/hot-metals/discussion/676668fb9ce172be6c25f87a) +--------------------------------------------------------------------------------------------------- +Version: 1.1.0 +Date: 03.12.2024 + Changes: + - Added support for Vanilla (you still need to purchase Space Age) + - Added support for AAI Industry + - Added modding support + - Removed Low density structure from the list because of https://forums.factorio.com/viewtopic.php?f=7&t=123081 + Bug Fixes: + - Fixed research triggers that use metals with hot variants + - Fixed missing recipe names - Fixed Holmium \ No newline at end of file diff --git a/hot-metals/compatibility/data.lua b/hot-metals/compatibility/data.lua index c6bd480..2e9db77 100644 --- a/hot-metals/compatibility/data.lua +++ b/hot-metals/compatibility/data.lua @@ -1,7 +1,6 @@ local modList = { "space-age", - "aai-industry", - "planet-muluna" + "aai-industry" } for _, mod in pairs(modList) do diff --git a/hot-metals/compatibility/planet-muluna.lua b/hot-metals/compatibility/planet-muluna.lua deleted file mode 100644 index 45afcd8..0000000 --- a/hot-metals/compatibility/planet-muluna.lua +++ /dev/null @@ -1 +0,0 @@ -table.insert(HotMetals.items, "aluminum-plate") \ No newline at end of file diff --git a/hot-metals/compatibility/space-age.lua b/hot-metals/compatibility/space-age.lua index 1cc643d..aa31b26 100644 --- a/hot-metals/compatibility/space-age.lua +++ b/hot-metals/compatibility/space-age.lua @@ -5,7 +5,8 @@ table.insert(HotMetals.items, "iron-stick") table.insert(HotMetals.items, "pipe") table.insert(HotMetals.items, "pipe-to-ground") table.insert(HotMetals.items, "tungsten-plate") -table.insert(HotMetals.items, "low-density-structure") +-- Disabled because of https://forums.factorio.com/viewtopic.php?f=7&t=123081 +--table.insert(HotMetals.items, "low-density-structure") table.insert(HotMetals.craftingCategories, "metallurgy") table.insert(HotMetals.craftingCategories, "crafting-with-fluid-or-metallurgy") @@ -15,12 +16,4 @@ table.insert(HotMetals.skipTechUnlocksFor, "iron-gear-wheel") table.insert(HotMetals.skipTechUnlocksFor, "copper-cable") table.insert(HotMetals.skipTechUnlocksFor, "iron-stick") table.insert(HotMetals.skipTechUnlocksFor, "pipe") -table.insert(HotMetals.skipTechUnlocksFor, "pipe-to-ground") - -if settings.startup["hot-metals-plastic"].value then - table.insert(HotMetals.craftingCategories, "chemistry-or-cryogenics") -end - -if settings.startup["hot-metals-bricks"].value then - table.insert(HotMetals.items, "concrete") -end \ No newline at end of file +table.insert(HotMetals.skipTechUnlocksFor, "pipe-to-ground") \ No newline at end of file diff --git a/hot-metals/data-final-fixes.lua b/hot-metals/data-final-fixes.lua deleted file mode 100644 index 5a61b06..0000000 --- a/hot-metals/data-final-fixes.lua +++ /dev/null @@ -1 +0,0 @@ -require("prototypes/hot-metals-final") \ No newline at end of file diff --git a/hot-metals/data.lua b/hot-metals/data.lua index 40da972..8f35c42 100644 --- a/hot-metals/data.lua +++ b/hot-metals/data.lua @@ -2,7 +2,7 @@ HotMetals = { items = { "copper-plate", "iron-plate", - "steel-plate" + "steel-plate", }, craftingCategories = { "smelting" @@ -10,17 +10,4 @@ HotMetals = { skipTechUnlocksFor = {} } -require("__cf-lib__/util") - -if settings.startup["hot-metals-plastic"].value then - table.insert(HotMetals.items, "plastic-bar") - if not mods["space-age"] then -- Space age uses other crafting categories - table.insert(HotMetals.craftingCategories, "chemistry") - end -end - -if settings.startup["hot-metals-bricks"].value then - table.insert(HotMetals.items, "stone-brick") -end - require("compatibility.data") \ No newline at end of file diff --git a/hot-metals/graphics/icons/hot-aluminum-plate.png b/hot-metals/graphics/icons/hot-aluminum-plate.png deleted file mode 100644 index d131aec..0000000 Binary files a/hot-metals/graphics/icons/hot-aluminum-plate.png and /dev/null differ diff --git a/hot-metals/graphics/icons/hot-concrete.png b/hot-metals/graphics/icons/hot-concrete.png deleted file mode 100644 index e848989..0000000 Binary files a/hot-metals/graphics/icons/hot-concrete.png and /dev/null differ diff --git a/hot-metals/graphics/icons/hot-plastic-bar.png b/hot-metals/graphics/icons/hot-plastic-bar.png deleted file mode 100644 index bf0116e..0000000 Binary files a/hot-metals/graphics/icons/hot-plastic-bar.png and /dev/null differ diff --git a/hot-metals/graphics/icons/hot-stone-brick.png b/hot-metals/graphics/icons/hot-stone-brick.png deleted file mode 100644 index cb8eba9..0000000 Binary files a/hot-metals/graphics/icons/hot-stone-brick.png and /dev/null differ diff --git a/hot-metals/info.json b/hot-metals/info.json index 3f19979..fc27f43 100644 --- a/hot-metals/info.json +++ b/hot-metals/info.json @@ -1,14 +1,13 @@ -{ - "name": "hot-metals", - "version": "1.2.6", - "title": "Hot metals", - "description": "A furnace doesn't just output cold usable results. You need to wait for them to cool down.", - "author": "cackling fiend", - "homepage": "", - "factorio_version": "2.0", - "dependencies": [ - "base", - "cf-lib >= 0.0.2" - ], - "spoiling_required": true +{ + "name": "hot-metals", + "version": "1.1.1", + "title": "Hot metals", + "description": "A furnace doesn't just output cold usable results. You need to wait for them to cool down.", + "author": "cackling fiend", + "homepage": "", + "factorio_version": "2.0", + "dependencies": [ + "base" + ], + "spoiling_required": true } \ No newline at end of file diff --git a/hot-metals/locale/en/strings.cfg b/hot-metals/locale/en/strings.cfg index 748d518..5e3dc9b 100644 --- a/hot-metals/locale/en/strings.cfg +++ b/hot-metals/locale/en/strings.cfg @@ -3,10 +3,6 @@ hot=Hot [mod-setting-name] hot-metals-time=Cooldown time -hot-metals-plastic=Add hot plastic -hot-metals-bricks=Add hot stone bricks and concrete [mod-setting-description] -hot-metals-time=The time in seconds for a hot item to cool down. -hot-metals-plastic=Although the temperature of hot plastic is way lower compared to metals, you might want to have a hot variant anyway. -hot-metals-bricks=Stone bricks and concrete are not included by default. If you like to play with hot variants, you can enable this option. \ No newline at end of file +hot-metals-time=The time in seconds for a hot item to cool down. \ No newline at end of file diff --git a/hot-metals/locale/pl/strings.cfg b/hot-metals/locale/pl/strings.cfg deleted file mode 100644 index 01c6fa9..0000000 --- a/hot-metals/locale/pl/strings.cfg +++ /dev/null @@ -1,12 +0,0 @@ -[item-name] -hot=Hot - -[mod-setting-name] -hot-metals-time=Czas stygnięcia -hot-metals-plastic=Dodaj gorący plastik -hot-metals-bricks=dodaj gorące kamienne cegły i beton - -[mod-setting-description] -hot-metals-time=Czas w sekundach, jaki jest potrzebny, aby gorący przedmiot ostygł. -hot-metals-plastic=Chociaż temperatura gorącego plastiku jest znacznie niższa w porównaniu do metali, możesz chcieć mieć jego gorącą wersję. -hot-metals-bricks=Kamienne cegły i beton nie są domyślnie uwzględnione. Jeśli lubisz grać z gorącymi wariantami, możesz włączyć tę opcję. \ No newline at end of file diff --git a/hot-metals/prototypes/hot-metals-final.lua b/hot-metals/prototypes/hot-metals-final.lua deleted file mode 100644 index 7b42417..0000000 --- a/hot-metals/prototypes/hot-metals-final.lua +++ /dev/null @@ -1,9 +0,0 @@ --- Change technology triggers -for _, tech in pairs(data.raw.technology) do - if tech.research_trigger then - local item = data.raw.item[tech.research_trigger.item] - if item and item.hot_item and not contains(HotMetals.skipTechUnlocksFor, item.name) then - tech.research_trigger.item = item.hot_item - end - end -end \ No newline at end of file diff --git a/hot-metals/prototypes/hot-metals.lua b/hot-metals/prototypes/hot-metals.lua index 03e55e3..3847ce9 100644 --- a/hot-metals/prototypes/hot-metals.lua +++ b/hot-metals/prototypes/hot-metals.lua @@ -1,106 +1,38 @@ local defaultSpoilTicks = settings.startup["hot-metals-time"].value * 60 ----@param name data.ItemID ----@return data.ItemPrototype? -function getItem(name) - if data.raw.item[name] then - return data.raw.item[name] --[[@as data.ItemPrototype]] - end - for item_type in pairs(defines.prototypes.item) do - local type_lookup = data.raw[item_type] - if type_lookup and type_lookup[name] then - return type_lookup[name] --[[@as data.ItemPrototype]] - end - end -end - ----@param table item ----@return number -function getWeight(item) - if type(item) == "string" then - item = getItem(item) - end - if item.weight then return item.weight end - local factor = item.ingredient_to_weight_coefficient or 0.5 - for _, recipe in pairs(data.raw.recipe) do - if recipe.results == nil then - goto continue - end - local function isResultMatch(result) - return result.name == item.name - end - local results = table.filter(recipe.results, isResultMatch) - if #results > 0 then - for _, ingredient in pairs(recipe.ingredients) do - if ingredient.type == "item" then - local weight = data.raw.item[ingredient.name].weight or getWeight(data.raw.item[ingredient.name]) - local amount = ingredient.amount - if ingredient.amount_min and ingredient.amount_max then - amount = (ingredient.amount_min + ingredient.amount_max) / 2 - end - return amount * weight * factor - end - end - end - ::continue:: - end - return 100 -end - -function createHotVariant(config) - local itemName = config +function createHotVariant(item) + local itemName = item local spoilTicks = defaultSpoilTicks local iconFolder = "__hot-metals__/graphics/icons/" - if type(config) == "table" then - itemName = config.name - spoilTicks = config.spoilTicks or spoilTicks - iconFolder = config.iconFolder or iconFolder + if type(item) == "table" then + itemName = item.name + spoilTicks = item.spoilTicks or spoilTicks + iconFolder = item.iconFolder or iconFolder end - local item = data.raw.item[itemName] - item.weight = getWeight(item) -- Create new item local hotItem = table.deepcopy(data.raw.item[itemName]) hotItem.name = "hot-" .. itemName hotItem.localised_name = { "", { "item-name.hot" }, " ", { "item-name." .. itemName } } - if (config.icons) then - hotItem.icons = config.icons - else - hotItem.icon = iconFolder .. "hot-" .. itemName .. ".png" - end + hotItem.icon = iconFolder .. "hot-" .. itemName .. ".png" hotItem.order = hotItem.order .. "-hot" - hotItem.ingredient_to_weight_coefficient = item.ingredient_to_weight_coefficient - hotItem.weight = item.weight hotItem.spoil_result = itemName hotItem.spoil_ticks = spoilTicks data:extend({ hotItem }) - item.hot_item = hotItem.name - -- Change recipes for _, recipe in pairs(data.raw.recipe) do - if contains(HotMetals.craftingCategories, recipe.category) then - local function isResultMatch(result) - return result.name == itemName - end - local results = table.filter(recipe.results, isResultMatch) - if #results > 0 then - -- Change regular recipe to be the "hot" recipe - for _, result in pairs(results) do - result.name = hotItem.name - end - recipe.localised_name = { "item-name." .. itemName } - recipe.icon = recipe.icon or item.icon - recipe.icon_size = recipe.icon_size or item.icon_size - recipe.icons = recipe.icons or item.icons - if recipe.main_product == itemName then - recipe.main_product = hotItem.name - end + if contains(HotMetals.craftingCategories, recipe.category) and recipe.results[1].name == itemName then + recipe.results[1].name = hotItem.name + recipe.localised_name = { "item-name." .. itemName } + end + end - recipe.preserve_products_in_machine_output = true - recipe.result_is_always_fresh = true - end + -- Change technology triggers + for _, tech in pairs(data.raw.technology) do + if tech.research_trigger and tech.research_trigger.item == itemName and not contains(HotMetals.skipTechUnlocksFor, itemName) then + tech.research_trigger.item = hotItem.name end end end diff --git a/hot-metals/settings.lua b/hot-metals/settings.lua index 26b0d31..9bd6d92 100644 --- a/hot-metals/settings.lua +++ b/hot-metals/settings.lua @@ -5,19 +5,5 @@ data:extend({ setting_type = "startup", default_value = 20, order = "a" - }, - { - type = "bool-setting", - name = "hot-metals-plastic", - setting_type = "startup", - default_value = false, - order = "b" - }, - { - type = "bool-setting", - name = "hot-metals-bricks", - setting_type = "startup", - default_value = false, - order = "c" } -}) +}) \ No newline at end of file diff --git a/sources/hot-aluminum-plate.afphoto b/sources/hot-aluminum-plate.afphoto deleted file mode 100644 index 18cb24b..0000000 Binary files a/sources/hot-aluminum-plate.afphoto and /dev/null differ diff --git a/sources/hot-concrete.afphoto b/sources/hot-concrete.afphoto deleted file mode 100644 index cf7d675..0000000 Binary files a/sources/hot-concrete.afphoto and /dev/null differ diff --git a/sources/hot-iron-plate.afphoto b/sources/hot-iron-plate.afphoto index 9d56f11..3b646b3 100644 Binary files a/sources/hot-iron-plate.afphoto and b/sources/hot-iron-plate.afphoto differ diff --git a/sources/hot-plastic-bar.afphoto b/sources/hot-plastic-bar.afphoto deleted file mode 100644 index d2a2e66..0000000 Binary files a/sources/hot-plastic-bar.afphoto and /dev/null differ diff --git a/sources/hot-stone-brick.afphoto b/sources/hot-stone-brick.afphoto deleted file mode 100644 index e799053..0000000 Binary files a/sources/hot-stone-brick.afphoto and /dev/null differ