From 9c50d0ba280088fa8e4ecd77a3fb8b7150e4e53d Mon Sep 17 00:00:00 2001
From: CaitSith2 <d_good@caitsith2.com>
Date: Mon, 22 Feb 2021 12:42:14 -0800
Subject: [PATCH] Allow for team shared unknown initial seeds.

---
 Main.py | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/Main.py b/Main.py
index 284367f9..aaa8b947 100644
--- a/Main.py
+++ b/Main.py
@@ -21,6 +21,7 @@ from Dungeons import create_dungeons, fill_dungeons, fill_dungeons_restrictive
 from Fill import distribute_items_restrictive, flood_items, balance_multiworld_progression, distribute_planned
 from ItemPool import generate_itempool, difficulties, fill_prizes
 from Utils import output_path, parse_player_names, get_options, __version__, _version_tuple
+from typing import Dict
 import Patch
 
 seeddigits = 20
@@ -33,6 +34,14 @@ def get_seed(seed=None):
     return seed
 
 
+seeds: Dict[tuple, str] = dict()
+def get_same_seed(world: World, seed_def: tuple) -> str:
+    if seed_def in seeds:
+        return seeds[seed_def]
+    seeds[seed_def] = str(world.random.randint(0, 2 ** 64))
+    return seeds[seed_def]
+
+
 def main(args, seed=None):
     if args.outputpath:
         os.makedirs(args.outputpath, exist_ok=True)
@@ -102,9 +111,12 @@ def main(args, seed=None):
         world.er_seeds[player] = str(world.random.randint(0, 2 ** 64))
 
         if "-" in world.shuffle[player]:
-            shuffle, seed = world.shuffle[player].split("-")
+            shuffle, seed = world.shuffle[player].split("-", 1)
             world.shuffle[player] = shuffle
-            world.er_seeds[player] = seed
+            if seed.startswith("team-"):
+                world.er_seeds[player] = get_same_seed(world, (shuffle, seed, world.retro, world.mode, world.logic))
+            else:
+                world.er_seeds[player] = seed
 
     logger.info('ALttP Berserker\'s Multiworld Version %s  -  Seed: %s\n', __version__, world.seed)