Satellite now a possible goal for ALL science pack levels, chosen by option.
Satellite unlocks by respective science pack (or by automation in the case of automation science pack)
This commit is contained in:
parent
b7128e6ee2
commit
763edf00f2
|
@ -109,7 +109,8 @@ def generate_mod(world, output_directory: str):
|
||||||
progressive_technology_table.values()},
|
progressive_technology_table.values()},
|
||||||
"custom_recipes": world.custom_recipes,
|
"custom_recipes": world.custom_recipes,
|
||||||
"max_science_pack": multiworld.max_science_pack[player].value,
|
"max_science_pack": multiworld.max_science_pack[player].value,
|
||||||
"liquids": liquids}
|
"liquids": liquids,
|
||||||
|
"goal": multiworld.goal[player].value}
|
||||||
|
|
||||||
for factorio_option in Options.factorio_options:
|
for factorio_option in Options.factorio_options:
|
||||||
template_data[factorio_option] = getattr(multiworld, factorio_option)[player].value
|
template_data[factorio_option] = getattr(multiworld, factorio_option)[player].value
|
||||||
|
|
|
@ -33,6 +33,14 @@ class MaxSciencePack(Choice):
|
||||||
return self.get_ordered_science_packs()[self.value].replace("_", "-")
|
return self.get_ordered_science_packs()[self.value].replace("_", "-")
|
||||||
|
|
||||||
|
|
||||||
|
class Goal(Choice):
|
||||||
|
"""Goal required to complete the game."""
|
||||||
|
displayname = "Goal"
|
||||||
|
option_rocket = 0
|
||||||
|
option_satellite = 1
|
||||||
|
default = 0
|
||||||
|
|
||||||
|
|
||||||
class TechCost(Choice):
|
class TechCost(Choice):
|
||||||
"""How expensive are the technologies."""
|
"""How expensive are the technologies."""
|
||||||
displayname = "Technology Cost Scale"
|
displayname = "Technology Cost Scale"
|
||||||
|
@ -306,6 +314,7 @@ class ImportedBlueprint(DefaultOnToggle):
|
||||||
|
|
||||||
factorio_options: typing.Dict[str, type(Option)] = {
|
factorio_options: typing.Dict[str, type(Option)] = {
|
||||||
"max_science_pack": MaxSciencePack,
|
"max_science_pack": MaxSciencePack,
|
||||||
|
"goal": Goal,
|
||||||
"tech_tree_layout": TechTreeLayout,
|
"tech_tree_layout": TechTreeLayout,
|
||||||
"tech_cost": TechCost,
|
"tech_cost": TechCost,
|
||||||
"silo": Silo,
|
"silo": Silo,
|
||||||
|
|
|
@ -11,7 +11,7 @@ from .Technologies import base_tech_table, recipe_sources, base_technology_table
|
||||||
liquids
|
liquids
|
||||||
from .Shapes import get_shapes
|
from .Shapes import get_shapes
|
||||||
from .Mod import generate_mod
|
from .Mod import generate_mod
|
||||||
from .Options import factorio_options, MaxSciencePack, Silo, Satellite, TechTreeInformation
|
from .Options import factorio_options, MaxSciencePack, Silo, Satellite, TechTreeInformation, Goal
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
|
@ -146,7 +146,7 @@ class Factorio(World):
|
||||||
else self.custom_recipes["rocket-silo"] if "rocket-silo" in self.custom_recipes \
|
else self.custom_recipes["rocket-silo"] if "rocket-silo" in self.custom_recipes \
|
||||||
else next(iter(all_product_sources.get("rocket-silo")))
|
else next(iter(all_product_sources.get("rocket-silo")))
|
||||||
part_recipe = self.custom_recipes["rocket-part"]
|
part_recipe = self.custom_recipes["rocket-part"]
|
||||||
satellite_recipe = None if self.world.max_science_pack[self.player].value != MaxSciencePack.option_space_science_pack \
|
satellite_recipe = None if self.world.goal[self.player].value != Goal.option_rocket \
|
||||||
else self.custom_recipes["satellite"] if "satellite" in self.custom_recipes \
|
else self.custom_recipes["satellite"] if "satellite" in self.custom_recipes \
|
||||||
else next(iter(all_product_sources.get("satellite")))
|
else next(iter(all_product_sources.get("satellite")))
|
||||||
victory_tech_names = get_rocket_requirements(silo_recipe, part_recipe, satellite_recipe)
|
victory_tech_names = get_rocket_requirements(silo_recipe, part_recipe, satellite_recipe)
|
||||||
|
|
|
@ -9,6 +9,7 @@ SEED_NAME = "{{ seed_name }}"
|
||||||
FREE_SAMPLE_BLACKLIST = {{ dict_to_lua(free_sample_blacklist) }}
|
FREE_SAMPLE_BLACKLIST = {{ dict_to_lua(free_sample_blacklist) }}
|
||||||
TRAP_EVO_FACTOR = {{ evolution_trap_increase }} / 100
|
TRAP_EVO_FACTOR = {{ evolution_trap_increase }} / 100
|
||||||
MAX_SCIENCE_PACK = {{ max_science_pack }}
|
MAX_SCIENCE_PACK = {{ max_science_pack }}
|
||||||
|
GOAL = {{ goal }}
|
||||||
ARCHIPELAGO_DEATH_LINK_SETTING = "archipelago-death-link-{{ slot_player }}-{{ seed_name }}"
|
ARCHIPELAGO_DEATH_LINK_SETTING = "archipelago-death-link-{{ slot_player }}-{{ seed_name }}"
|
||||||
|
|
||||||
if settings.global[ARCHIPELAGO_DEATH_LINK_SETTING].value then
|
if settings.global[ARCHIPELAGO_DEATH_LINK_SETTING].value then
|
||||||
|
@ -136,7 +137,7 @@ script.on_event(defines.events.on_player_removed, on_player_removed)
|
||||||
|
|
||||||
function on_rocket_launched(event)
|
function on_rocket_launched(event)
|
||||||
if event.rocket and event.rocket.valid and global.forcedata[event.rocket.force.name]['victory'] == 0 then
|
if event.rocket and event.rocket.valid and global.forcedata[event.rocket.force.name]['victory'] == 0 then
|
||||||
if event.rocket.get_item_count("satellite") > 0 or MAX_SCIENCE_PACK < 6 then
|
if event.rocket.get_item_count("satellite") > 0 or GOAL == 0 then
|
||||||
global.forcedata[event.rocket.force.name]['victory'] = 1
|
global.forcedata[event.rocket.force.name]['victory'] = 1
|
||||||
dumpInfo(event.rocket.force)
|
dumpInfo(event.rocket.force)
|
||||||
game.set_game_state
|
game.set_game_state
|
||||||
|
|
|
@ -25,6 +25,26 @@ template_tech.upgrade = false
|
||||||
template_tech.effects = {}
|
template_tech.effects = {}
|
||||||
template_tech.prerequisites = {}
|
template_tech.prerequisites = {}
|
||||||
|
|
||||||
|
{%- if max_science_pack < 6 %}
|
||||||
|
technologies["space-science-pack"].effects = {}
|
||||||
|
{%- if max_science_pack == 0 %}
|
||||||
|
table.insert (technologies["automation"].effects, {type = "unlock-recipe", recipe = "satellite"})
|
||||||
|
{%- elif max_science_pack == 1 %}
|
||||||
|
table.insert (technologies["logistic-science-pack"].effects, {type = "unlock-recipe", recipe = "satellite"})
|
||||||
|
{%- elif max_science_pack == 2 %}
|
||||||
|
table.insert (technologies["military-science-pack"].effects, {type = "unlock-recipe", recipe = "satellite"})
|
||||||
|
{%- elif max_science_pack == 3 %}
|
||||||
|
table.insert (technologies["chemical-science-pack"].effects, {type = "unlock-recipe", recipe = "satellite"})
|
||||||
|
{%- elif max_science_pack == 4 %}
|
||||||
|
table.insert (technologies["production-science-pack"].effects, {type = "unlock-recipe", recipe = "satellite"})
|
||||||
|
{%- elif max_science_pack == 5 %}
|
||||||
|
table.insert (technologies["utility-science-pack"].effects, {type = "unlock-recipe", recipe = "satellite"})
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
{%- if silo == 2 %}
|
||||||
|
data.raw["recipe"]["rocket-silo"].enabled = true
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
function prep_copy(new_copy, old_tech)
|
function prep_copy(new_copy, old_tech)
|
||||||
old_tech.hidden = true
|
old_tech.hidden = true
|
||||||
local ingredient_filter = allowed_ingredients[old_tech.name]
|
local ingredient_filter = allowed_ingredients[old_tech.name]
|
||||||
|
|
Loading…
Reference in New Issue