Compare commits
	
		
			No commits in common. "master" and "1.2.1" have entirely different histories.
		
	
	
		
	
		
					 18 changed files with 72 additions and 176 deletions
				
			
		|  | @ -1,50 +1,4 @@ | |||
| --------------------------------------------------------------------------------------------------- | ||||
| Version: 1.2.9 | ||||
| Date: 01.10.2025 | ||||
|   Changes: | ||||
|     - Add support for Any Planet Start (Fulgora) | ||||
| --------------------------------------------------------------------------------------------------- | ||||
| Version: 1.2.8 | ||||
| Date: 22.09.2025 | ||||
|   Changes: | ||||
|     - Add support for Glass (https://mods.factorio.com/mod/Glass) | ||||
| --------------------------------------------------------------------------------------------------- | ||||
| Version: 1.2.7 | ||||
| Date: 22.08.2025 | ||||
|   Bug Fixes: | ||||
|     - Simplify weight calculation to prevent infinite recursion (https://mods.factorio.com/mod/hot-metals/discussion/68a3a137a86e2ca3d73388fe) | ||||
|     - Always show hot variants in filter menus (https://mods.factorio.com/mod/hot-metals/discussion/685ac28c1436373189fc0bff) | ||||
| --------------------------------------------------------------------------------------------------- | ||||
| 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: | ||||
|  |  | |||
|  | @ -1 +0,0 @@ | |||
| table.insert(HotMetals.items, "glass-plate") | ||||
|  | @ -1,10 +0,0 @@ | |||
| local planet = settings.startup["aps-planet"].value | ||||
| 
 | ||||
| if planet == "fulgora" then | ||||
|     table.merge(HotMetals.skipTechUnlocksFor, { | ||||
|         "low-density-structure", | ||||
|         "steel-plate", | ||||
|         "plastic-bar", | ||||
|         "concrete" | ||||
|     }) | ||||
| end | ||||
|  | @ -1,9 +1,6 @@ | |||
| local modList = { | ||||
|     "space-age", | ||||
|     "aai-industry", | ||||
|     "any-planet-start", | ||||
|     "Glass", | ||||
|     "planet-muluna" | ||||
|     "aai-industry" | ||||
| } | ||||
| 
 | ||||
| for _, mod in pairs(modList) do | ||||
|  |  | |||
|  | @ -1 +0,0 @@ | |||
| table.insert(HotMetals.items, "aluminum-plate") | ||||
|  | @ -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") | ||||
|  |  | |||
|  | @ -1 +0,0 @@ | |||
| require("prototypes/hot-metals-final") | ||||
|  | @ -2,7 +2,7 @@ HotMetals = { | |||
|     items = { | ||||
|         "copper-plate", | ||||
|         "iron-plate", | ||||
|         "steel-plate" | ||||
|         "steel-plate", | ||||
|     }, | ||||
|     craftingCategories = { | ||||
|         "smelting" | ||||
|  | @ -10,8 +10,6 @@ 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 | ||||
|  |  | |||
										
											Binary file not shown.
										
									
								
							| Before Width: | Height: | Size: 10 KiB | 
										
											Binary file not shown.
										
									
								
							| Before Width: | Height: | Size: 7.7 KiB | 
|  | @ -1,14 +1,13 @@ | |||
| { | ||||
|    "name": "hot-metals", | ||||
|    "version": "1.2.9", | ||||
|    "version": "1.2.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": "https://discord.gg/ufvFUJtVwk", | ||||
|    "homepage": "", | ||||
|    "factorio_version": "2.0", | ||||
|    "dependencies": [ | ||||
|       "base", | ||||
|       "cf-lib >= 0.0.2" | ||||
|       "base" | ||||
|    ], | ||||
|    "spoiling_required": true | ||||
| } | ||||
|  | @ -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ę. | ||||
|  | @ -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 | ||||
|  | @ -1,64 +1,45 @@ | |||
| local defaultSpoilTicks = settings.startup["hot-metals-time"].value * 60 | ||||
| 
 | ||||
| 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 = item.weight or 10000 | ||||
| 
 | ||||
|     -- 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 | ||||
|     if (item.icons) then | ||||
|         hotItem.icons = item.icons | ||||
|     else | ||||
|         hotItem.icon = iconFolder .. "hot-" .. itemName .. ".png" | ||||
|     end | ||||
|     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 | ||||
|     hotItem.flags = hotItem.flags or {} | ||||
|     if not table.contains(hotItem.flags, "always-show") then | ||||
|         table.insert(hotItem.flags, "always-show") | ||||
|     end | ||||
| 
 | ||||
|     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 | ||||
|         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 } | ||||
|             if recipe.main_product == itemName then | ||||
|                 recipe.main_product = hotItem.name | ||||
|             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 | ||||
|         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 | ||||
|  |  | |||
|  | @ -14,10 +14,10 @@ data:extend({ | |||
|         order = "b" | ||||
|     }, | ||||
|     { | ||||
|         type = "bool-setting", | ||||
|         name = "hot-metals-bricks", | ||||
|         setting_type = "startup", | ||||
|         default_value = false, | ||||
|         order = "c" | ||||
|     } | ||||
|             type = "bool-setting", | ||||
|             name = "hot-metals-bricks", | ||||
|             setting_type = "startup", | ||||
|             default_value = false, | ||||
|             order = "c" | ||||
|         } | ||||
| }) | ||||
|  |  | |||
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue