Factorio: Locale changes (#5908)

---------

Co-authored-by: Joris Santen <joris.j.vansanten@student.hu.nl>
Co-authored-by: lepideble <147614625+lepideble@users.noreply.github.com>
This commit is contained in:
CosmicWolf
2026-05-31 01:49:39 +02:00
committed by GitHub
parent 787ddc400c
commit b24b3d10b6
7 changed files with 56 additions and 49 deletions
+2 -6
View File
@@ -23,7 +23,6 @@ template_env: Optional[jinja2.Environment] = None
data_template: Optional[jinja2.Template] = None
data_final_template: Optional[jinja2.Template] = None
locale_template: Optional[jinja2.Template] = None
control_template: Optional[jinja2.Template] = None
settings_template: Optional[jinja2.Template] = None
@@ -94,7 +93,7 @@ def generate_mod(world: "Factorio", output_directory: str):
multiworld = world.multiworld
random = world.random
global data_final_template, locale_template, control_template, data_template, settings_template
global data_final_template, control_template, data_template, settings_template
with template_load_lock:
if not data_final_template:
def load_template(name: str):
@@ -107,7 +106,6 @@ def generate_mod(world: "Factorio", output_directory: str):
data_template = template_env.get_template("data.lua")
data_final_template = template_env.get_template("data-final-fixes.lua")
locale_template = template_env.get_template(r"locale/en/locale.cfg")
control_template = template_env.get_template("control.lua")
settings_template = template_env.get_template("settings.lua")
# get data for templates
@@ -195,9 +193,7 @@ def generate_mod(world: "Factorio", output_directory: str):
control_template.render(**template_data)))
mod.writing_tasks.append(lambda: (versioned_mod_name + "/settings.lua",
settings_template.render(**template_data)))
mod.writing_tasks.append(lambda: (versioned_mod_name + "/locale/en/locale.cfg",
locale_template.render(**template_data)))
info = base_info.copy()
info["name"] = mod_name
mod.writing_tasks.append(lambda: (versioned_mod_name + "/info.json",
@@ -0,0 +1,36 @@
[map-gen-preset-name]
archipelago=Archipelago
[entity-name]
ap-energy-bridge=Archipelago EnergyLink Bridge
[map-gen-preset-description]
archipelago=World preset created by the Archipelago Randomizer. World may or may not contain actual archipelagos.
[technology-name]
ap-technology-full=__1__'s __2__ (__3__)
ap-technology-hidden=__1__
[technology-description]
ap-technology-full=Researching this technology sends __1__ to __2____3__.
ap-technology-item-advancement=, which is considered a logical advancement
ap-technology-item-useful=, which is considered useful
ap-technology-item-trap=, which is considered fun
ap-technology-hidden=Researching this technology sends something to someone__1__.
[mod-setting-name]
archipelago-death-link=Death Link
[mod-setting-description]
archipelago-death-link=Kill other players in the same Archipelago Multiworld that also have Death Link turned on, when you die.
[archipelago]
receive-ap-item=Received __1__ from __2__.
receive-ap-catchup=Received __1__ as it is already checked.
receive-sample-item=Received __1__x __2__
sample-inventory-full=Additional items will be sent when inventory space is available.
sample-error=Unable to receive __1__x [item=__2__] as this item does not exist.
fail-to-place=Failed to place __1__ in __2__
[traps]
new-evolution-factor=New evolution factor: __1__
@@ -420,12 +420,12 @@ function update_player(index)
sent = 0
end
if sent > 0 then
player.print("Received " .. sent .. "x [item=" .. name .. ",quality={{ free_sample_quality_name }}]")
player.print({"archipelago.receive-sample-item", sent, "[item=" .. name .. ",quality="..stack.quality.."]"})
data.suppress_full_inventory_message = false
end
if sent ~= count then -- Couldn't full send.
if not data.suppress_full_inventory_message then
player.print("Additional items will be sent when inventory space is available.", {r=1, g=1, b=0.25})
player.print({"archipelago.sample-inventory-full"}, {r=1, g=1, b=0.25})
end
data.suppress_full_inventory_message = true -- Avoid spamming them with repeated full inventory messages.
samples[name] = count - sent -- Buffer the remaining items
@@ -434,7 +434,7 @@ function update_player(index)
samples[name] = nil -- Remove from the list
end
else
player.print("Unable to receive " .. count .. "x [item=" .. name .. "] as this item does not exist.")
player.print({"archipelago.sample-inventory-full", count, name})
samples[name] = nil
end
end
@@ -665,7 +665,7 @@ function spawn_entity(surface, force, name, x, y, radius, randomize, avoid_ores)
end
end
if new_entity == nil then
force.print("Failed to place " .. args.name .. " in " .. serpent.line({x = x, y = y, radius = radius}))
force.print({"archipelago.fail-to-place", args.name, serpent.line({x = x, y = y, radius = radius})})
end
end
@@ -725,7 +725,7 @@ end,
local new_factor = game.forces["enemy"].get_evolution_factor("nauvis") +
(TRAP_EVO_FACTOR * (1 - game.forces["enemy"].get_evolution_factor("nauvis")))
game.forces["enemy"].set_evolution_factor(new_factor, "nauvis")
game.print({"", "New evolution factor:", new_factor})
game.print({"traps.new-evolution-factor", new_factor})
end,
["Teleport Trap"] = function()
for _, player in ipairs(game.forces["player"].players) do
@@ -780,7 +780,7 @@ commands.add_command("ap-get-technology", "Grant a technology, used by the Archi
elseif index == -1 then -- for coop sync and restoring from an older savegame
tech = force.technologies[item_name]
if tech.researched ~= true then
game.print({"", "Received [technology=" .. tech.name .. "] as it is already checked."})
game.print({"archipelago.receive-ap-catchup", "[technology=" .. tech.name .. "]"})
game.play_sound({path="utility/research_completed"})
tech.researched = true
end
@@ -792,7 +792,7 @@ commands.add_command("ap-get-technology", "Grant a technology, used by the Archi
for _, item_name in ipairs(tech_stack) do
tech = force.technologies[item_name]
if tech.researched ~= true then
game.print({"", "Received [technology=" .. tech.name .. "] from ", source})
game.print({"archipelago.receive-ap-item", "[technology=" .. tech.name .. "]", source})
game.play_sound({path="utility/research_completed"})
tech.researched = true
return
@@ -804,7 +804,7 @@ commands.add_command("ap-get-technology", "Grant a technology, used by the Archi
if tech ~= nil then
storage.index_sync[index] = tech
if tech.researched ~= true then
game.print({"", "Received [technology=" .. tech.name .. "] from ", source})
game.print({"archipelago.receive-ap-item", "[technology=" .. tech.name .. "]", source})
game.play_sound({path="utility/research_completed"})
tech.researched = true
end
@@ -812,7 +812,7 @@ commands.add_command("ap-get-technology", "Grant a technology, used by the Archi
elseif TRAP_TABLE[item_name] ~= nil then
if storage.index_sync[index] ~= item_name then -- not yet received trap
storage.index_sync[index] = item_name
game.print({"", "Received ", item_name, " from ", source})
game.print({"archipelago.receive-ap-item", item_name, source})
TRAP_TABLE[item_name]()
end
else
@@ -154,6 +154,13 @@ technologies["{{ original_tech_name }}"].hidden_in_factoriopedia = true
{#- the tech researched by the local player #}
new_tree_copy = table.deepcopy(template_tech)
new_tree_copy.name = "ap-{{ location.address }}-"{# use AP ID #}
{%- if location.revealed %}
new_tree_copy.localised_name = {"technology-name.ap-technology-full", "{{ player_names[item.player] }}", "{{ item.name }}", "{{ location.name }}"}
new_tree_copy.localised_description = {"technology-description.ap-technology-full", "{{ item.name }}", "{{ player_names[item.player] }}", {% if item.advancement %}{"technology-description.ap-technology-item-advancement"}{% elif item.useful %}{"technology-description.ap-technology-item-useful"}{% elif item.trap %}{"technology-description.ap-technology-item-trap"}{% else %}""{% endif %}}
{%- else %}
new_tree_copy.localised_name = {"technology-name.ap-technology-hidden", "{{location.name}}"}
new_tree_copy.localised_description = {"technology-description.ap-technology-hidden", {% if tech_tree_information == 1 and item.advancement %}{"technology-description.ap-technology-item-advancement"}{% else %}""{% endif %}}
{% endif -%}
{% if location.crafted_item is not none %}
new_tree_copy.research_trigger = {
type = "{{ 'craft-fluid' if location.crafted_item in liquids else 'craft-item' }}",
@@ -13,7 +13,6 @@ end
local energy_bridge = table.deepcopy(data.raw["accumulator"]["accumulator"])
energy_bridge.name = "ap-energy-bridge"
energy_bridge.minable.result = "ap-energy-bridge"
energy_bridge.localised_name = "Archipelago EnergyLink Bridge"
energy_bridge.energy_source.buffer_capacity = "50MJ"
energy_bridge.energy_source.input_flow_limit = "10MW"
energy_bridge.energy_source.output_flow_limit = "10MW"
@@ -25,7 +24,6 @@ data.raw["accumulator"]["ap-energy-bridge"] = energy_bridge
local energy_bridge_item = table.deepcopy(data.raw["item"]["accumulator"])
energy_bridge_item.name = "ap-energy-bridge"
energy_bridge_item.localised_name = "Archipelago EnergyLink Bridge"
energy_bridge_item.place_result = energy_bridge.name
tint_icon(energy_bridge_item, energy_bridge_tint())
data.raw["item"]["ap-energy-bridge"] = energy_bridge_item
@@ -35,7 +33,6 @@ energy_bridge_recipe.name = "ap-energy-bridge"
energy_bridge_recipe.results = { {type = "item", name = energy_bridge_item.name, amount = 1} }
energy_bridge_recipe.energy_required = 1
energy_bridge_recipe.enabled = {% if energy_link %}true{% else %}false{% endif %}
energy_bridge_recipe.localised_name = "Archipelago EnergyLink Bridge"
data.raw["recipe"]["ap-energy-bridge"] = energy_bridge_recipe
data.raw["map-gen-presets"].default["archipelago"] = {{ dict_to_lua({"default": False, "order": "a", "basic_settings": world_gen["basic"], "advanced_settings": world_gen["advanced"]}) }}
@@ -1,31 +0,0 @@
[map-gen-preset-name]
archipelago=Archipelago
[map-gen-preset-description]
archipelago=World preset created by the Archipelago Randomizer. World may or may not contain actual archipelagos.
[technology-name]
{% for location, item in locations %}
{%- if location.revealed %}
ap-{{ location.address }}-={{ player_names[item.player] }}'s {{ item.name }} ({{ location.name }})
{%- else %}
ap-{{ location.address }}-= {{location.name}}
{%- endif -%}
{% endfor %}
[technology-description]
{% for location, item in locations %}
{%- if location.revealed %}
ap-{{ location.address }}-=Researching this technology sends {{ item.name }} to {{ player_names[item.player] }}{% if item.advancement %}, which is considered a logical advancement{% elif item.useful %}, which is considered useful{% elif item.trap %}, which is considered fun{% endif %}.
{%- elif tech_tree_information == 1 and item.advancement %}
ap-{{ location.address }}-=Researching this technology sends something to someone, which is considered a logical advancement.
{%- else %}
ap-{{ location.address }}-=Researching this technology sends something to someone.
{%- endif -%}
{% endfor %}
[mod-setting-name]
archipelago-death-link-{{ slot_player }}-{{ seed_name }}=Death Link
[mod-setting-description]
archipelago-death-link-{{ slot_player }}-{{ seed_name }}=Kill other players in the same Archipelago Multiworld that also have Death Link turned on, when you die.
@@ -21,6 +21,8 @@ data:extend({
type = "bool-setting",
name = "archipelago-death-link-{{ slot_player }}-{{ seed_name }}",
setting_type = "runtime-global",
localised_name = {"mod-setting-name.archipelago-death-link"},
localised_description = {"mod-setting-description.archipelago-death-link"},
{% if death_link %}
default_value = true
{% else %}