Compare commits
No commits in common. "master" and "1.2.3" have entirely different histories.
13 changed files with 68 additions and 154 deletions
|
@ -1,62 +1,45 @@
|
||||||
---------------------------------------------------------------------------------------------------
|
---------------------------------------------------------------------------------------------------
|
||||||
Version: 1.2.6
|
Version: 1.2.3
|
||||||
Date: 18.04.2025
|
Date: 03.02.2025
|
||||||
Changes:
|
Changes:
|
||||||
- Add polish translation (I forgot who did it :-( )
|
- Use non-hot icon variants for the recipes
|
||||||
- Move technology changes to final fixes stage
|
Bug Fixes:
|
||||||
---------------------------------------------------------------------------------------------------
|
- Properly load cf-lib util
|
||||||
Version: 1.2.5
|
---------------------------------------------------------------------------------------------------
|
||||||
Date: 04.02.2025
|
Version: 1.2.2
|
||||||
Changes:
|
Date: 02.02.2025
|
||||||
- Add Low density structure again after Wube fixed a bug (https://forums.factorio.com/123081)
|
Changes:
|
||||||
- Add support for Muluna (Aluminum plate)
|
- 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.4
|
---------------------------------------------------------------------------------------------------
|
||||||
Date: 03.02.2025
|
Version: 1.2.1
|
||||||
Bug Fixes:
|
Date: 09.01.2025
|
||||||
- Fix item weights (many items weights where way off)
|
Changes:
|
||||||
---------------------------------------------------------------------------------------------------
|
- Add hot stone bricks and hot concrete (https://mods.factorio.com/mod/hot-metals/discussion/677fdef8d37eef8332fa6c2f)
|
||||||
Version: 1.2.3
|
- Biochambers don't generate hot plastic (https://mods.factorio.com/mod/hot-metals/discussion/675af47f1fba71716b2b7f7f)
|
||||||
Date: 03.02.2025
|
---------------------------------------------------------------------------------------------------
|
||||||
Changes:
|
Version: 1.2.0
|
||||||
- Use non-hot icon variants for the recipes
|
Date: 01.01.2025
|
||||||
Bug Fixes:
|
Changes:
|
||||||
- Properly load cf-lib util
|
- 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)
|
||||||
Version: 1.2.2
|
Bug Fixes:
|
||||||
Date: 02.02.2025
|
- Support main_product (https://mods.factorio.com/mod/hot-metals/discussion/6773e919c568cd84f3f0884f)
|
||||||
Changes:
|
---------------------------------------------------------------------------------------------------
|
||||||
- Recipes always output "fresh" hot metals (https://mods.factorio.com/mod/hot-metals/discussion/6775293c1c4d7b0e4bba8648)
|
Version: 1.1.1
|
||||||
- Recipe code now also works if the main result is not the first result in the results list
|
Date: 21.12.2024
|
||||||
---------------------------------------------------------------------------------------------------
|
Bug Fixes:
|
||||||
Version: 1.2.1
|
- Fixed labels for hot pipe and underground pipe items and recipes (https://mods.factorio.com/mod/hot-metals/discussion/67493d0742705fa9914f61ca)
|
||||||
Date: 09.01.2025
|
- Fixed technology triggers being replaced for items that have non-hot early game recipes (https://mods.factorio.com/mod/hot-metals/discussion/676668fb9ce172be6c25f87a)
|
||||||
Changes:
|
---------------------------------------------------------------------------------------------------
|
||||||
- Add hot stone bricks and hot concrete (https://mods.factorio.com/mod/hot-metals/discussion/677fdef8d37eef8332fa6c2f)
|
Version: 1.1.0
|
||||||
- Biochambers don't generate hot plastic (https://mods.factorio.com/mod/hot-metals/discussion/675af47f1fba71716b2b7f7f)
|
Date: 03.12.2024
|
||||||
---------------------------------------------------------------------------------------------------
|
Changes:
|
||||||
Version: 1.2.0
|
- Added support for Vanilla (you still need to purchase Space Age)
|
||||||
Date: 01.01.2025
|
- Added support for AAI Industry
|
||||||
Changes:
|
- Added modding support
|
||||||
- Add support for custom icons (https://mods.factorio.com/mod/hot-metals/discussion/6773ea5e1c4d7b0e4bba85b6)
|
- Removed Low density structure from the list because of https://forums.factorio.com/viewtopic.php?f=7&t=123081
|
||||||
- Add hot plastic (https://mods.factorio.com/mod/hot-metals/discussion/675af47f1fba71716b2b7f7f)
|
Bug Fixes:
|
||||||
Bug Fixes:
|
- Fixed research triggers that use metals with hot variants
|
||||||
- Support main_product (https://mods.factorio.com/mod/hot-metals/discussion/6773e919c568cd84f3f0884f)
|
- 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
|
- Fixed Holmium
|
|
@ -1,7 +1,6 @@
|
||||||
local modList = {
|
local modList = {
|
||||||
"space-age",
|
"space-age",
|
||||||
"aai-industry",
|
"aai-industry"
|
||||||
"planet-muluna"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, mod in pairs(modList) do
|
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")
|
||||||
table.insert(HotMetals.items, "pipe-to-ground")
|
table.insert(HotMetals.items, "pipe-to-ground")
|
||||||
table.insert(HotMetals.items, "tungsten-plate")
|
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, "metallurgy")
|
||||||
table.insert(HotMetals.craftingCategories, "crafting-with-fluid-or-metallurgy")
|
table.insert(HotMetals.craftingCategories, "crafting-with-fluid-or-metallurgy")
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
require("prototypes/hot-metals-final")
|
|
|
@ -2,7 +2,7 @@ HotMetals = {
|
||||||
items = {
|
items = {
|
||||||
"copper-plate",
|
"copper-plate",
|
||||||
"iron-plate",
|
"iron-plate",
|
||||||
"steel-plate"
|
"steel-plate",
|
||||||
},
|
},
|
||||||
craftingCategories = {
|
craftingCategories = {
|
||||||
"smelting"
|
"smelting"
|
||||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 10 KiB |
|
@ -1,14 +1,14 @@
|
||||||
{
|
{
|
||||||
"name": "hot-metals",
|
"name": "hot-metals",
|
||||||
"version": "1.2.6",
|
"version": "1.2.3",
|
||||||
"title": "Hot metals",
|
"title": "Hot metals",
|
||||||
"description": "A furnace doesn't just output cold usable results. You need to wait for them to cool down.",
|
"description": "A furnace doesn't just output cold usable results. You need to wait for them to cool down.",
|
||||||
"author": "cackling fiend",
|
"author": "cackling fiend",
|
||||||
"homepage": "",
|
"homepage": "",
|
||||||
"factorio_version": "2.0",
|
"factorio_version": "2.0",
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"base",
|
"base",
|
||||||
"cf-lib >= 0.0.2"
|
"cf-lib >= 0.0.2"
|
||||||
],
|
],
|
||||||
"spoiling_required": true
|
"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,52 +1,5 @@
|
||||||
local defaultSpoilTicks = settings.startup["hot-metals-time"].value * 60
|
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)
|
function createHotVariant(config)
|
||||||
local itemName = config
|
local itemName = config
|
||||||
local spoilTicks = defaultSpoilTicks
|
local spoilTicks = defaultSpoilTicks
|
||||||
|
@ -58,7 +11,6 @@ function createHotVariant(config)
|
||||||
iconFolder = config.iconFolder or iconFolder
|
iconFolder = config.iconFolder or iconFolder
|
||||||
end
|
end
|
||||||
local item = data.raw.item[itemName]
|
local item = data.raw.item[itemName]
|
||||||
item.weight = getWeight(item)
|
|
||||||
|
|
||||||
-- Create new item
|
-- Create new item
|
||||||
local hotItem = table.deepcopy(data.raw.item[itemName])
|
local hotItem = table.deepcopy(data.raw.item[itemName])
|
||||||
|
@ -70,14 +22,10 @@ function createHotVariant(config)
|
||||||
hotItem.icon = iconFolder .. "hot-" .. itemName .. ".png"
|
hotItem.icon = iconFolder .. "hot-" .. itemName .. ".png"
|
||||||
end
|
end
|
||||||
hotItem.order = hotItem.order .. "-hot"
|
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_result = itemName
|
||||||
hotItem.spoil_ticks = spoilTicks
|
hotItem.spoil_ticks = spoilTicks
|
||||||
data:extend({ hotItem })
|
data:extend({ hotItem })
|
||||||
|
|
||||||
item.hot_item = hotItem.name
|
|
||||||
|
|
||||||
-- Change recipes
|
-- Change recipes
|
||||||
for _, recipe in pairs(data.raw.recipe) do
|
for _, recipe in pairs(data.raw.recipe) do
|
||||||
if contains(HotMetals.craftingCategories, recipe.category) then
|
if contains(HotMetals.craftingCategories, recipe.category) then
|
||||||
|
@ -86,7 +34,6 @@ function createHotVariant(config)
|
||||||
end
|
end
|
||||||
local results = table.filter(recipe.results, isResultMatch)
|
local results = table.filter(recipe.results, isResultMatch)
|
||||||
if #results > 0 then
|
if #results > 0 then
|
||||||
-- Change regular recipe to be the "hot" recipe
|
|
||||||
for _, result in pairs(results) do
|
for _, result in pairs(results) do
|
||||||
result.name = hotItem.name
|
result.name = hotItem.name
|
||||||
end
|
end
|
||||||
|
@ -103,6 +50,13 @@ function createHotVariant(config)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
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
|
end
|
||||||
|
|
||||||
-- Checks if a table contains a certain value
|
-- Checks if a table contains a certain value
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Loading…
Add table
Reference in a new issue