Ocarina of Time 7.0 (#1277)

## What is this fixing or adding?
- Adds the majority of OoTR 7.0 features:
  - Pot shuffle, Freestanding item shuffle, Crate shuffle, Beehive shuffle
  - Key rings mode
  - Dungeon shortcuts to speed up dungeons
  - "Regional" shuffle for dungeon items
  - New options for shop pricing in shopsanity
  - Expanded Ganon's Boss Key shuffle options
  - Pre-planted beans
  - Improved Chest Appearance Matches Contents mode
  - Blue Fire Arrows
  - Bonk self-damage
  - Finer control over MQ dungeons and spawn position randomization
- Several bugfixes as a result of the update:
  - Items recognized by the server and valid starting items are now in a 1-to-1 correspondence. In particular, starting with keys is now supported.
  - Entrance randomization success rate improved. Hopefully it is now at 100%. 

Co-authored-by: Zach Parks <zach@alliware.com>
This commit is contained in:
espeon65536
2022-12-10 21:11:40 -06:00
committed by GitHub
parent 2cdd03f786
commit aee0df5359
110 changed files with 37691 additions and 18648 deletions

View File

@@ -1,6 +1,7 @@
from enum import unique, Enum
from BaseClasses import Region
from .Hints import HintArea
# copied from OoT-Randomizer/Region.py
@@ -31,8 +32,10 @@ class TimeOfDay(object):
class OOTRegion(Region):
game: str = "Ocarina of Time"
def __init__(self, name: str, type, hint, player: int):
def __init__(self, name: str, type, hint, player: int):
super(OOTRegion, self).__init__(name, type, hint, player)
self._oot_hint = None
self.alt_hint = None
self.price = None
self.time_passes = False
self.provides_time = TimeOfDay.NONE
@@ -40,6 +43,7 @@ class OOTRegion(Region):
self.dungeon = None
self.pretty_name = None
self.font_color = None
self.is_boss_room = False
def get_scene(self):
if self.scene:
@@ -61,3 +65,15 @@ class OOTRegion(Region):
else: # we don't care about age
return self in state.child_reachable_regions[self.player] or self in state.adult_reachable_regions[self.player]
def set_hint_data(self, hint):
if self.dungeon:
self._oot_hint = HintArea.for_dungeon(self.dungeon)
else:
self._oot_hint = HintArea[hint]
self.hint_text = str(self._oot_hint)
# This is too generic of a name to risk not breaking in the future.
# This lets us possibly switch it out later if AP starts using it.
@property
def hint(self):
return self._oot_hint