From 954d2e64ef0fa88182b3ac27e26a0717884e9e1a Mon Sep 17 00:00:00 2001 From: N00byKing Date: Tue, 25 Jan 2022 23:17:22 +0100 Subject: [PATCH] v6: Mitigate Generation Problems --- worlds/v6/Options.py | 2 +- worlds/v6/Rules.py | 16 +++++++--------- worlds/v6/__init__.py | 4 +--- 3 files changed, 9 insertions(+), 13 deletions(-) diff --git a/worlds/v6/Options.py b/worlds/v6/Options.py index 5e4090b5..fac891ba 100644 --- a/worlds/v6/Options.py +++ b/worlds/v6/Options.py @@ -4,7 +4,7 @@ from Options import Option, DeathLink, Range class DoorCost(Range): """Amount of Trinkets required to enter Areas. Set to 0 to disable artificial locks.""" range_start = 0 - range_end = 5 + range_end = 3 default = 3 class DeathLinkAmnesty(Range): diff --git a/worlds/v6/Rules.py b/worlds/v6/Rules.py index b1699d82..e25a6663 100644 --- a/worlds/v6/Rules.py +++ b/worlds/v6/Rules.py @@ -2,18 +2,13 @@ import typing from ..generic.Rules import add_rule from .Regions import connect_regions -def _has_trinket_range(state,player,start,end): - for i in range(start+1,end+1): - if (not state.has("Trinket " + str(i).zfill(2), player)): +def _has_trinket_range(state,player,start,end) -> bool: + for i in range(start,end): + if (not state.has("Trinket " + str(i+1).zfill(2), player)): return False return True -def create_npctrinket_rules(world,location,player): - add_rule(location, lambda state: state.can_reach("Laboratory",'Region',player) or - state.can_reach("Space Station 2",'Region',player)) - def set_rules(world,player): - if (world.DoorCost[player].value == 0): pass connect_regions(world, player, "Menu", "Laboratory", lambda state: _has_trinket_range(state,player,0,world.DoorCost[player].value)) connect_regions(world, player, "Menu", "The Tower", lambda state: _has_trinket_range(state,player,world.DoorCost[player].value,world.DoorCost[player].value*2)) connect_regions(world, player, "Menu", "Space Station 2", lambda state: _has_trinket_range(state,player,world.DoorCost[player].value*2,world.DoorCost[player].value*3)) @@ -25,10 +20,13 @@ def set_rules(world,player): state.can_reach("Space Station 2",'Region',player) and state.can_reach("Warp Zone",'Region',player)) + #Special Rule for NPC Trinket + add_rule(world.get_location("NPC Trinket",player), lambda state: state.can_reach("Laboratory",'Region',player) or + state.can_reach("Space Station 2",'Region',player)) + connect_regions(world, player, "Laboratory", "Menu", lambda state: True) connect_regions(world, player, "The Tower", "Menu", lambda state: True) connect_regions(world, player, "Space Station 2", "Menu", lambda state: True) connect_regions(world, player, "Warp Zone", "Menu", lambda state: True) - create_npctrinket_rules(world,world.get_location("NPC Trinket",player),player) world.completion_condition[player] = lambda state: state.can_reach("V",'Location',player) diff --git a/worlds/v6/__init__.py b/worlds/v6/__init__.py index 878b53c0..1804d0cc 100644 --- a/worlds/v6/__init__.py +++ b/worlds/v6/__init__.py @@ -32,9 +32,7 @@ class V6World(World): set_rules(self.world,self.player) def create_item(self, name: str) -> Item: - item_id = item_table[name] - item = V6Item(name, True, item_id, self.player) - return item + return V6Item(name, True, item_table[name], self.player) def generate_basic(self): self.world.itempool += [self.create_item(name) for name in self.item_names]