Merged DR v1.0.1.2
This commit is contained in:
@@ -1337,16 +1337,16 @@ class CollectionState(object):
|
|||||||
return self.has('Bow', player) and (self.can_buy_unlimited('Single Arrow', player) or self.has('Single Arrow', player))
|
return self.has('Bow', player) and (self.can_buy_unlimited('Single Arrow', player) or self.has('Single Arrow', player))
|
||||||
return self.has('Bow', player)
|
return self.has('Bow', player)
|
||||||
|
|
||||||
def can_get_good_bee(self, player):
|
# def can_get_good_bee(self, player):
|
||||||
cave = self.world.get_region('Good Bee Cave', player)
|
# cave = self.world.get_region('Good Bee Cave', player)
|
||||||
return (
|
# return (
|
||||||
self.can_use_bombs(player) and
|
# self.can_use_bombs(player) and
|
||||||
self.has_bottle(player) and
|
# self.has_bottle(player) and
|
||||||
self.has('Bug Catching Net', player) and
|
# self.has('Bug Catching Net', player) and
|
||||||
(self.has_Boots(player) or (self.has_sword(player) and self.has('Quake', player))) and
|
# (self.has_Boots(player) or (self.has_sword(player) and self.has('Quake', player))) and
|
||||||
cave.can_reach(self) and
|
# cave.can_reach(self) and
|
||||||
self.is_not_bunny(cave, player)
|
# self.is_not_bunny(cave, player)
|
||||||
)
|
# )
|
||||||
|
|
||||||
def has_beaten_aga(self, player):
|
def has_beaten_aga(self, player):
|
||||||
return self.has('Beat Agahnim 1', player) and (self.world.mode[player] != 'standard' or self.has('Zelda Delivered', player))
|
return self.has('Beat Agahnim 1', player) and (self.world.mode[player] != 'standard' or self.has('Zelda Delivered', player))
|
||||||
|
|||||||
@@ -61,8 +61,7 @@ def MothulaDefeatRule(state, player):
|
|||||||
# TODO: Not sure how much (if any) extend magic is needed for these two, since they only apply
|
# TODO: Not sure how much (if any) extend magic is needed for these two, since they only apply
|
||||||
# to non-vanilla locations, so are harder to test, so sticking with what VT has for now:
|
# to non-vanilla locations, so are harder to test, so sticking with what VT has for now:
|
||||||
(state.has('Cane of Somaria', player) and state.can_extend_magic(player, 16)) or
|
(state.has('Cane of Somaria', player) and state.can_extend_magic(player, 16)) or
|
||||||
(state.has('Cane of Byrna', player) and state.can_extend_magic(player, 16)) or
|
(state.has('Cane of Byrna', player) and state.can_extend_magic(player, 16))
|
||||||
state.can_get_good_bee(player)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
def BlindDefeatRule(state, player):
|
def BlindDefeatRule(state, player):
|
||||||
|
|||||||
3
Fill.py
3
Fill.py
@@ -48,6 +48,9 @@ def fill_dungeons_restrictive(world, shuffled_locations):
|
|||||||
bigs, smalls, others = [], [], []
|
bigs, smalls, others = [], [], []
|
||||||
for i in dungeon_items:
|
for i in dungeon_items:
|
||||||
(bigs if i.bigkey else smalls if i.smallkey else others).append(i)
|
(bigs if i.bigkey else smalls if i.smallkey else others).append(i)
|
||||||
|
for i in world.itempool:
|
||||||
|
if i.smallkey and world.keyshuffle[i.player]:
|
||||||
|
smalls.append(i)
|
||||||
|
|
||||||
def fill(base_state, items, key_pool):
|
def fill(base_state, items, key_pool):
|
||||||
fill_restrictive(world, base_state, shuffled_locations, items, key_pool, True)
|
fill_restrictive(world, base_state, shuffled_locations, items, key_pool, True)
|
||||||
|
|||||||
17
Mystery.py
17
Mystery.py
@@ -1,11 +1,11 @@
|
|||||||
import argparse
|
import argparse
|
||||||
import logging
|
import logging
|
||||||
|
from pathlib import Path
|
||||||
|
import os
|
||||||
import RaceRandom as random
|
import RaceRandom as random
|
||||||
import urllib.request
|
import urllib.request
|
||||||
import urllib.parse
|
import urllib.parse
|
||||||
import yaml
|
import yaml
|
||||||
import os
|
|
||||||
from pathlib import Path
|
|
||||||
|
|
||||||
from DungeonRandomizer import parse_cli
|
from DungeonRandomizer import parse_cli
|
||||||
from Main import main as DRMain
|
from Main import main as DRMain
|
||||||
@@ -108,14 +108,11 @@ def main():
|
|||||||
DRMain(erargs, seed, BabelFish())
|
DRMain(erargs, seed, BabelFish())
|
||||||
|
|
||||||
def get_weights(path):
|
def get_weights(path):
|
||||||
try:
|
if os.path.exists(Path(path)):
|
||||||
if os.path.exists(Path(path)):
|
with open(path, "r", encoding="utf-8") as f:
|
||||||
with open(path, "r", encoding="utf-8") as f:
|
return yaml.load(f, Loader=yaml.SafeLoader)
|
||||||
return yaml.load(f, Loader=yaml.SafeLoader)
|
elif urllib.parse.urlparse(path).scheme in ['http', 'https']:
|
||||||
elif urllib.parse.urlparse(path).scheme in ['http', 'https']:
|
return yaml.load(urllib.request.urlopen(path), Loader=yaml.FullLoader)
|
||||||
return yaml.load(urllib.request.urlopen(path), Loader=yaml.FullLoader)
|
|
||||||
except Exception as e:
|
|
||||||
raise Exception(f'Failed to read weights file: {e}')
|
|
||||||
|
|
||||||
def roll_settings(weights):
|
def roll_settings(weights):
|
||||||
def get_choice(option, root=None):
|
def get_choice(option, root=None):
|
||||||
|
|||||||
@@ -184,10 +184,14 @@ Same as above but both small keys and bigs keys of the dungeon are not allowed o
|
|||||||
#### Unstable
|
#### Unstable
|
||||||
|
|
||||||
* 1.0.1.2
|
* 1.0.1.2
|
||||||
|
* Removed "good bee" as an in-logic way of killing Mothula
|
||||||
|
* Fixed an issue with Mystery generation and Windows path
|
||||||
* Fixed an issue with small key bias rework
|
* Fixed an issue with small key bias rework
|
||||||
* Fixed an issue where trinity goal would open pyramid unexpectedly. (No longer does so if ER mdoe is shuffling holes). Crystals goal updated to match that behavior.
|
* Fixed an issue where trinity goal would open pyramid unexpectedly. (No longer does so if ER mdoe is shuffling holes). Crystals goal updated to match that behavior.
|
||||||
* Fixed a playthrough issue that was not respecting pot rules
|
* Fixed a playthrough issue that was not respecting pot rules
|
||||||
* Fixed an issue that was conflicting with downstream OWR project
|
* Fixed an issue that was conflicting with downstream OWR project
|
||||||
|
* Fixed an issue with inverted and certain pottery settings
|
||||||
|
* Fixed an issue with small keys being shuffled and big keys not (key distribution)
|
||||||
* 1.0.1.1
|
* 1.0.1.1
|
||||||
* Fixed the pots in Mire Storyteller/ Dark Desert Hint to be colorized when they should be
|
* Fixed the pots in Mire Storyteller/ Dark Desert Hint to be colorized when they should be
|
||||||
* Certain pot items no longer reload when reloading the supertile (matches original pot behavior better)
|
* Certain pot items no longer reload when reloading the supertile (matches original pot behavior better)
|
||||||
|
|||||||
6
Rules.py
6
Rules.py
@@ -356,8 +356,10 @@ def global_rules(world, player):
|
|||||||
# byrna could work with sufficient magic
|
# byrna could work with sufficient magic
|
||||||
set_rule(world.get_location('Misery Mire - Spike Chest', player), lambda state: (state.world.can_take_damage and state.has_hearts(player, 4)) or state.has('Cane of Byrna', player) or state.has('Cape', player))
|
set_rule(world.get_location('Misery Mire - Spike Chest', player), lambda state: (state.world.can_take_damage and state.has_hearts(player, 4)) or state.has('Cane of Byrna', player) or state.has('Cape', player))
|
||||||
loc = world.get_location('Misery Mire - Spikes Pot Key', player)
|
loc = world.get_location('Misery Mire - Spikes Pot Key', player)
|
||||||
if loc.pot is not None and loc.pot.x == 48 and loc.pot.y == 28: # pot shuffled to spike area
|
if loc.pot:
|
||||||
set_rule(loc, lambda state: (state.world.can_take_damage and state.has_hearts(player, 4)) or state.has('Cane of Byrna', player) or state.has('Cape', player))
|
if loc.pot.x == 48 and loc.pot.y == 28: # pot shuffled to spike area
|
||||||
|
set_rule(loc, lambda state: (state.world.can_take_damage and state.has_hearts(player, 4))
|
||||||
|
or state.has('Cane of Byrna', player) or state.has('Cape', player))
|
||||||
set_rule(world.get_entrance('Mire Left Bridge Hook Path', player), lambda state: state.has('Hookshot', player))
|
set_rule(world.get_entrance('Mire Left Bridge Hook Path', player), lambda state: state.has('Hookshot', player))
|
||||||
set_rule(world.get_entrance('Mire Tile Room NW', player), lambda state: state.has_fire_source(player))
|
set_rule(world.get_entrance('Mire Tile Room NW', player), lambda state: state.has_fire_source(player))
|
||||||
set_rule(world.get_entrance('Mire Attic Hint Hole', player), lambda state: state.has_fire_source(player))
|
set_rule(world.get_entrance('Mire Attic Hint Hole', player), lambda state: state.has_fire_source(player))
|
||||||
|
|||||||
Reference in New Issue
Block a user