v6: Add Area Cost Shuffle
This commit is contained in:
parent
bffb8a034e
commit
a3c3e4cbd4
|
@ -7,6 +7,10 @@ class DoorCost(Range):
|
|||
range_end = 3
|
||||
default = 3
|
||||
|
||||
class AreaCostRandomizer(Toggle):
|
||||
"""Randomize which Area requires which set of DoorCost Trinkets"""
|
||||
display_name = "Area Cost Randomizer"
|
||||
|
||||
class DeathLinkAmnesty(Range):
|
||||
"""Amount of Deaths to take before sending a DeathLink signal, for balancing difficulty"""
|
||||
range_start = 0
|
||||
|
@ -25,6 +29,7 @@ v6_options: typing.Dict[str,type(Option)] = {
|
|||
"MusicRandomizer": MusicRandomizer,
|
||||
"AreaRandomizer": AreaRandomizer,
|
||||
"DoorCost": DoorCost,
|
||||
"AreaCostRandomizer": AreaCostRandomizer,
|
||||
"DeathLink": DeathLink,
|
||||
"DeathLinkAmnesty": DeathLinkAmnesty
|
||||
}
|
|
@ -10,17 +10,20 @@ def _has_trinket_range(state,player,start,end) -> bool:
|
|||
return True
|
||||
|
||||
|
||||
def set_rules(world, player, area_connections: typing.Dict[int, int]):
|
||||
def set_rules(world, player, area_connections: typing.Dict[int, int], area_cost_map: typing.Dict[int, int]):
|
||||
areashuffle = list(range(len(v6areas)))
|
||||
if world.AreaRandomizer[player].value:
|
||||
world.random.shuffle(areashuffle)
|
||||
area_connections.update({(index+1): (value+1) for index, value in enumerate(areashuffle)})
|
||||
area_connections.update({0:0})
|
||||
if world.AreaCostRandomizer[player].value:
|
||||
world.random.shuffle(areashuffle)
|
||||
area_cost_map.update({(index+1): (value+1) for index, value in enumerate(areashuffle)})
|
||||
area_cost_map.update({0:0})
|
||||
|
||||
connect_regions(world, player, "Menu", v6areas[area_connections[1]-1], lambda state: _has_trinket_range(state,player,0,world.DoorCost[player].value))
|
||||
connect_regions(world, player, "Menu", v6areas[area_connections[2]-1], lambda state: _has_trinket_range(state,player,world.DoorCost[player].value,world.DoorCost[player].value*2))
|
||||
connect_regions(world, player, "Menu", v6areas[area_connections[3]-1], lambda state: _has_trinket_range(state,player,world.DoorCost[player].value*2,world.DoorCost[player].value*3))
|
||||
connect_regions(world, player, "Menu", v6areas[area_connections[4]-1], lambda state: _has_trinket_range(state,player,world.DoorCost[player].value*3,world.DoorCost[player].value*4))
|
||||
for i in range(1,5):
|
||||
connect_regions(world, player, "Menu", v6areas[area_connections[i]-1], lambda state: _has_trinket_range(state,player,world.DoorCost[player].value*(area_cost_map[i]-1),
|
||||
world.DoorCost[player].value*area_cost_map[i]))
|
||||
|
||||
#Special Rule for V
|
||||
add_rule(world.get_location("V",player), lambda state : state.can_reach("Laboratory",'Region',player) and
|
||||
|
|
|
@ -25,6 +25,7 @@ class V6World(World):
|
|||
forced_auto_forfeit = False
|
||||
|
||||
area_connections: typing.Dict[int, int]
|
||||
area_cost_map: typing.Dict[int,int]
|
||||
|
||||
music_map: typing.Dict[int,int]
|
||||
|
||||
|
@ -35,13 +36,15 @@ class V6World(World):
|
|||
|
||||
def set_rules(self):
|
||||
self.area_connections = {}
|
||||
set_rules(self.world, self.player, self.area_connections)
|
||||
self.area_cost_map = {}
|
||||
set_rules(self.world, self.player, self.area_connections, self.area_cost_map)
|
||||
|
||||
def create_item(self, name: str) -> 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]
|
||||
trinkets = [self.create_item("Trinket " + str(i+1).zfill(2)) for i in range(0,20)]
|
||||
self.world.itempool += trinkets
|
||||
|
||||
musiclist_o = [1,2,3,4,9,12]
|
||||
musiclist_s = musiclist_o.copy()
|
||||
|
@ -54,6 +57,7 @@ class V6World(World):
|
|||
"MusicRando": self.music_map,
|
||||
"AreaRando": self.area_connections,
|
||||
"DoorCost": self.world.DoorCost[self.player].value,
|
||||
"AreaCostRando": self.area_cost_map,
|
||||
"DeathLink": self.world.DeathLink[self.player].value,
|
||||
"DeathLink_Amnesty": self.world.DeathLinkAmnesty[self.player].value
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue