mirror of
https://github.com/MarioSpore/Grinch-AP.git
synced 2025-10-21 20:21:32 -06:00

set vanilla technologies to be hidden instead of disabled fix advancement icon still showing when no information in tech was supposed to be given
92 lines
3.4 KiB
Lua
92 lines
3.4 KiB
Lua
{% from "macros.lua" import dict_to_recipe %}
|
|
-- this file gets written automatically by the Archipelago Randomizer and is in its raw form a Jinja2 Template
|
|
require('lib')
|
|
|
|
data.raw["recipe"]["rocket-part"].ingredients = {{ dict_to_recipe(rocket_recipe) }}
|
|
|
|
local technologies = data.raw["technology"]
|
|
local original_tech
|
|
local new_tree_copy
|
|
allowed_ingredients = {}
|
|
{%- for tech_name, technology in custom_technologies.items() %}
|
|
allowed_ingredients["{{ tech_name }}"] = {
|
|
{%- for ingredient in technology.ingredients %}
|
|
["{{ingredient}}"] = 1,
|
|
{%- endfor %}
|
|
}
|
|
{% endfor %}
|
|
local template_tech = table.deepcopy(technologies["automation"])
|
|
{#- ensure the copy unlocks nothing #}
|
|
template_tech.unlocks = {}
|
|
template_tech.upgrade = false
|
|
template_tech.effects = {}
|
|
template_tech.prerequisites = {}
|
|
|
|
function prep_copy(new_copy, old_tech)
|
|
old_tech.hidden = true
|
|
new_copy.unit = table.deepcopy(old_tech.unit)
|
|
local ingredient_filter = allowed_ingredients[old_tech.name]
|
|
if ingredient_filter ~= nil then
|
|
new_copy.unit.ingredients = filter_ingredients(new_copy.unit.ingredients, ingredient_filter)
|
|
end
|
|
end
|
|
|
|
function set_ap_icon(tech)
|
|
tech.icon = "__{{ mod_name }}__/graphics/icons/ap.png"
|
|
tech.icons = nil
|
|
tech.icon_size = 128
|
|
end
|
|
|
|
function set_ap_unimportant_icon(tech)
|
|
tech.icon = "__{{ mod_name }}__/graphics/icons/ap_unimportant.png"
|
|
tech.icons = nil
|
|
tech.icon_size = 128
|
|
end
|
|
|
|
function copy_factorio_icon(tech, tech_source)
|
|
tech.icon = table.deepcopy(technologies[tech_source].icon)
|
|
tech.icons = table.deepcopy(technologies[tech_source].icons)
|
|
tech.icon_size = table.deepcopy(technologies[tech_source].icon_size)
|
|
end
|
|
|
|
function adjust_energy(recipe_name, factor)
|
|
local energy = data.raw.recipe[recipe_name].energy_required
|
|
if (energy == nil) then
|
|
energy = 1
|
|
end
|
|
data.raw.recipe[recipe_name].energy_required = energy * factor
|
|
end
|
|
|
|
table.insert(data.raw["assembling-machine"]["assembling-machine-1"].crafting_categories, "crafting-with-fluid")
|
|
|
|
{# each randomized tech gets set to be invisible, with new nodes added that trigger those #}
|
|
{%- for original_tech_name, item_name, receiving_player, advancement in locations %}
|
|
original_tech = technologies["{{original_tech_name}}"]
|
|
{#- the tech researched by the local player #}
|
|
new_tree_copy = table.deepcopy(template_tech)
|
|
new_tree_copy.name = "ap-{{ tech_table[original_tech_name] }}-"{# use AP ID #}
|
|
prep_copy(new_tree_copy, original_tech)
|
|
{% if tech_cost_scale != 1 %}
|
|
new_tree_copy.unit.count = math.max(1, math.floor(new_tree_copy.unit.count * {{ tech_cost_scale }}))
|
|
{% endif %}
|
|
{%- if item_name in tech_table and tech_tree_information == 2 -%}
|
|
{#- copy Factorio Technology Icon -#}
|
|
copy_factorio_icon(new_tree_copy, "{{ item_name }}")
|
|
{%- else -%}
|
|
{#- use default AP icon if no Factorio graphics exist -#}
|
|
{% if advancement or not tech_tree_information %}set_ap_icon(new_tree_copy){% else %}set_ap_unimportant_icon(new_tree_copy){% endif %}
|
|
{%- endif -%}
|
|
{#- connect Technology #}
|
|
{%- if original_tech_name in tech_tree_layout_prerequisites %}
|
|
{%- for prerequesite in tech_tree_layout_prerequisites[original_tech_name] %}
|
|
table.insert(new_tree_copy.prerequisites, "ap-{{ tech_table[prerequesite] }}-")
|
|
{% endfor %}
|
|
{% endif -%}
|
|
{#- add new Technology to game #}
|
|
data:extend{new_tree_copy}
|
|
{% endfor %}
|
|
{% if recipe_time_scale %}
|
|
{%- for recipe in recipes %}
|
|
adjust_energy("{{ recipe }}", {{ random.triangular(*recipe_time_scale) }})
|
|
{%- endfor -%}
|
|
{% endif %} |