"precollect" visible Factorio tech tree as hints, so points are never spent on what was visible.
This commit is contained in:
parent
8cdf9d2ddc
commit
c4ea879651
18
Main.py
18
Main.py
|
@ -487,14 +487,13 @@ def main(args, seed=None):
|
||||||
er_hint_data[player][location_id] = main_entrance.name
|
er_hint_data[player][location_id] = main_entrance.name
|
||||||
oldmancaves.append(((location_id, player), (item.code, player)))
|
oldmancaves.append(((location_id, player), (item.code, player)))
|
||||||
|
|
||||||
precollected_items = {player: [] for player in range(1, world.players+1)}
|
|
||||||
for item in world.precollected_items:
|
|
||||||
precollected_items[item.player].append(item.code)
|
|
||||||
|
|
||||||
FillDisabledShopSlots(world)
|
FillDisabledShopSlots(world)
|
||||||
|
|
||||||
def write_multidata(roms, mods):
|
def write_multidata(roms, mods):
|
||||||
import base64
|
import base64
|
||||||
|
import NetUtils
|
||||||
for future in roms:
|
for future in roms:
|
||||||
rom_name = future.result()
|
rom_name = future.result()
|
||||||
rom_names.append(rom_name)
|
rom_names.append(rom_name)
|
||||||
|
@ -507,6 +506,15 @@ def main(args, seed=None):
|
||||||
games[slot] = world.game[slot]
|
games[slot] = world.game[slot]
|
||||||
connect_names = {base64.b64encode(rom_name).decode(): (team, slot) for
|
connect_names = {base64.b64encode(rom_name).decode(): (team, slot) for
|
||||||
slot, team, rom_name in rom_names}
|
slot, team, rom_name in rom_names}
|
||||||
|
precollected_items = {player: [] for player in range(1, world.players+1)}
|
||||||
|
for item in world.precollected_items:
|
||||||
|
precollected_items[item.player].append(item.code)
|
||||||
|
precollected_hints = {player: [] for player in range(1, world.players+1)}
|
||||||
|
# for now special case Factorio visibility
|
||||||
|
sending_visible_players = set()
|
||||||
|
for player in world.factorio_player_ids:
|
||||||
|
if world.visibility[player]:
|
||||||
|
sending_visible_players.add(player)
|
||||||
|
|
||||||
for i, team in enumerate(parsed_names):
|
for i, team in enumerate(parsed_names):
|
||||||
for player, name in enumerate(team, 1):
|
for player, name in enumerate(team, 1):
|
||||||
|
@ -524,6 +532,9 @@ def main(args, seed=None):
|
||||||
for location in world.get_filled_locations():
|
for location in world.get_filled_locations():
|
||||||
if type(location.address) == int:
|
if type(location.address) == int:
|
||||||
locations_data[location.player][location.address] = (location.item.code, location.item.player)
|
locations_data[location.player][location.address] = (location.item.code, location.item.player)
|
||||||
|
if location.player in sending_visible_players and location.item.player != location.player:
|
||||||
|
precollected_hints[location.player].append(NetUtils.Hint(location.item.player, location.player, location.address,
|
||||||
|
location.item.code, False))
|
||||||
multidata = zlib.compress(pickle.dumps({
|
multidata = zlib.compress(pickle.dumps({
|
||||||
"slot_data" : slot_data,
|
"slot_data" : slot_data,
|
||||||
"games": games,
|
"games": games,
|
||||||
|
@ -536,6 +547,7 @@ def main(args, seed=None):
|
||||||
"server_options": get_options()["server_options"],
|
"server_options": get_options()["server_options"],
|
||||||
"er_hint_data": er_hint_data,
|
"er_hint_data": er_hint_data,
|
||||||
"precollected_items": precollected_items,
|
"precollected_items": precollected_items,
|
||||||
|
"precollected_hints": precollected_hints,
|
||||||
"version": tuple(_version_tuple),
|
"version": tuple(_version_tuple),
|
||||||
"tags": ["AP"],
|
"tags": ["AP"],
|
||||||
"minimum_versions": minimum_versions,
|
"minimum_versions": minimum_versions,
|
||||||
|
|
|
@ -160,7 +160,8 @@ class Context(Node):
|
||||||
for slot, item_codes in decoded_obj["precollected_items"].items():
|
for slot, item_codes in decoded_obj["precollected_items"].items():
|
||||||
if slot in self.remote_items:
|
if slot in self.remote_items:
|
||||||
self.received_items[team, slot] = [NetworkItem(item_code, -2, 0) for item_code in item_codes]
|
self.received_items[team, slot] = [NetworkItem(item_code, -2, 0) for item_code in item_codes]
|
||||||
|
for slot, hints in decoded_obj["precollected_hints"].items():
|
||||||
|
self.hints[team, slot] = hints
|
||||||
if use_embedded_server_options:
|
if use_embedded_server_options:
|
||||||
server_options = decoded_obj.get("server_options", {})
|
server_options = decoded_obj.get("server_options", {})
|
||||||
self._set_options(server_options)
|
self._set_options(server_options)
|
||||||
|
|
Loading…
Reference in New Issue