OoT Time Optimization (#2401)

- Entrance randomizer no longer grows with multiworld
- Improved ER success rate again by prioritizing Temple of Time even more
- Prefill is faster, has slightly reduced failure rate when map/compass are in dungeon but previous items in any_dungeon (which consumed all available locations), no longer removes items from the main itempool; itemlinked prefill items removed to accomodate improvements
- Now triggers only one recache after `generate_basic` instead of one per oot world
- Avoids recaches during `create_regions`
- All ER temp entrances have unique names (so the entrance cache does not break)
This commit is contained in:
espeon65536
2023-10-29 21:05:49 -06:00
committed by GitHub
parent f81e72686a
commit db978aa48a
4 changed files with 172 additions and 146 deletions

View File

@@ -1,6 +1,4 @@
from BaseClasses import Entrance
from .Regions import TimeOfDay
class OOTEntrance(Entrance):
game: str = 'Ocarina of Time'
@@ -29,16 +27,16 @@ class OOTEntrance(Entrance):
self.connected_region = None
return previously_connected
def get_new_target(self):
def get_new_target(self, pool_type):
root = self.multiworld.get_region('Root Exits', self.player)
target_entrance = OOTEntrance(self.player, self.multiworld, 'Root -> ' + self.connected_region.name, root)
target_entrance = OOTEntrance(self.player, self.multiworld, f'Root -> ({self.name}) ({pool_type})', root)
target_entrance.connect(self.connected_region)
target_entrance.replaces = self
root.exits.append(target_entrance)
return target_entrance
def assume_reachable(self):
def assume_reachable(self, pool_type):
if self.assumed == None:
self.assumed = self.get_new_target()
self.assumed = self.get_new_target(pool_type)
self.disconnect()
return self.assumed