shapez: Fix floating layers logic error #5263
This commit is contained in:
@@ -101,7 +101,7 @@ def has_x_belt_multiplier(state: CollectionState, player: int, needed: float) ->
|
|||||||
|
|
||||||
|
|
||||||
def has_logic_list_building(state: CollectionState, player: int, buildings: list[str], index: int,
|
def has_logic_list_building(state: CollectionState, player: int, buildings: list[str], index: int,
|
||||||
includeuseful: bool) -> bool:
|
includeuseful: bool, floating: bool) -> bool:
|
||||||
|
|
||||||
# Includes balancer, tunnel, and trash in logic in order to make them appear in earlier spheres
|
# Includes balancer, tunnel, and trash in logic in order to make them appear in earlier spheres
|
||||||
if includeuseful and not (state.has(ITEMS.trash, player) and has_balancer(state, player) and
|
if includeuseful and not (state.has(ITEMS.trash, player) and has_balancer(state, player) and
|
||||||
@@ -109,7 +109,7 @@ def has_logic_list_building(state: CollectionState, player: int, buildings: list
|
|||||||
return False
|
return False
|
||||||
|
|
||||||
if buildings[index] == ITEMS.cutter:
|
if buildings[index] == ITEMS.cutter:
|
||||||
if buildings.index(ITEMS.stacker) < index:
|
if buildings.index(ITEMS.stacker) < index and not floating:
|
||||||
return state.has_any((ITEMS.cutter, ITEMS.cutter_quad), player)
|
return state.has_any((ITEMS.cutter, ITEMS.cutter_quad), player)
|
||||||
else:
|
else:
|
||||||
return can_cut_half(state, player)
|
return can_cut_half(state, player)
|
||||||
@@ -195,38 +195,38 @@ def create_shapez_regions(player: int, multiworld: MultiWorld, floating: bool,
|
|||||||
# Progressively connect level and upgrade regions
|
# Progressively connect level and upgrade regions
|
||||||
regions[REGIONS.main].connect(
|
regions[REGIONS.main].connect(
|
||||||
regions[REGIONS.levels_1], "Using first level building",
|
regions[REGIONS.levels_1], "Using first level building",
|
||||||
lambda state: has_logic_list_building(state, player, level_logic_buildings, 0, False))
|
lambda state: has_logic_list_building(state, player, level_logic_buildings, 0, False, floating))
|
||||||
regions[REGIONS.levels_1].connect(
|
regions[REGIONS.levels_1].connect(
|
||||||
regions[REGIONS.levels_2], "Using second level building",
|
regions[REGIONS.levels_2], "Using second level building",
|
||||||
lambda state: has_logic_list_building(state, player, level_logic_buildings, 1, False))
|
lambda state: has_logic_list_building(state, player, level_logic_buildings, 1, False, floating))
|
||||||
regions[REGIONS.levels_2].connect(
|
regions[REGIONS.levels_2].connect(
|
||||||
regions[REGIONS.levels_3], "Using third level building",
|
regions[REGIONS.levels_3], "Using third level building",
|
||||||
lambda state: has_logic_list_building(state, player, level_logic_buildings, 2,
|
lambda state: has_logic_list_building(state, player, level_logic_buildings, 2,
|
||||||
early_useful == OPTIONS.buildings_3))
|
early_useful == OPTIONS.buildings_3, floating))
|
||||||
regions[REGIONS.levels_3].connect(
|
regions[REGIONS.levels_3].connect(
|
||||||
regions[REGIONS.levels_4], "Using fourth level building",
|
regions[REGIONS.levels_4], "Using fourth level building",
|
||||||
lambda state: has_logic_list_building(state, player, level_logic_buildings, 3, False))
|
lambda state: has_logic_list_building(state, player, level_logic_buildings, 3, False, floating))
|
||||||
regions[REGIONS.levels_4].connect(
|
regions[REGIONS.levels_4].connect(
|
||||||
regions[REGIONS.levels_5], "Using fifth level building",
|
regions[REGIONS.levels_5], "Using fifth level building",
|
||||||
lambda state: has_logic_list_building(state, player, level_logic_buildings, 4,
|
lambda state: has_logic_list_building(state, player, level_logic_buildings, 4,
|
||||||
early_useful == OPTIONS.buildings_5))
|
early_useful == OPTIONS.buildings_5, floating))
|
||||||
regions[REGIONS.main].connect(
|
regions[REGIONS.main].connect(
|
||||||
regions[REGIONS.upgrades_1], "Using first upgrade building",
|
regions[REGIONS.upgrades_1], "Using first upgrade building",
|
||||||
lambda state: has_logic_list_building(state, player, upgrade_logic_buildings, 0, False))
|
lambda state: has_logic_list_building(state, player, upgrade_logic_buildings, 0, False, floating))
|
||||||
regions[REGIONS.upgrades_1].connect(
|
regions[REGIONS.upgrades_1].connect(
|
||||||
regions[REGIONS.upgrades_2], "Using second upgrade building",
|
regions[REGIONS.upgrades_2], "Using second upgrade building",
|
||||||
lambda state: has_logic_list_building(state, player, upgrade_logic_buildings, 1, False))
|
lambda state: has_logic_list_building(state, player, upgrade_logic_buildings, 1, False, floating))
|
||||||
regions[REGIONS.upgrades_2].connect(
|
regions[REGIONS.upgrades_2].connect(
|
||||||
regions[REGIONS.upgrades_3], "Using third upgrade building",
|
regions[REGIONS.upgrades_3], "Using third upgrade building",
|
||||||
lambda state: has_logic_list_building(state, player, upgrade_logic_buildings, 2,
|
lambda state: has_logic_list_building(state, player, upgrade_logic_buildings, 2,
|
||||||
early_useful == OPTIONS.buildings_3))
|
early_useful == OPTIONS.buildings_3, floating))
|
||||||
regions[REGIONS.upgrades_3].connect(
|
regions[REGIONS.upgrades_3].connect(
|
||||||
regions[REGIONS.upgrades_4], "Using fourth upgrade building",
|
regions[REGIONS.upgrades_4], "Using fourth upgrade building",
|
||||||
lambda state: has_logic_list_building(state, player, upgrade_logic_buildings, 3, False))
|
lambda state: has_logic_list_building(state, player, upgrade_logic_buildings, 3, False, floating))
|
||||||
regions[REGIONS.upgrades_4].connect(
|
regions[REGIONS.upgrades_4].connect(
|
||||||
regions[REGIONS.upgrades_5], "Using fifth upgrade building",
|
regions[REGIONS.upgrades_5], "Using fifth upgrade building",
|
||||||
lambda state: has_logic_list_building(state, player, upgrade_logic_buildings, 4,
|
lambda state: has_logic_list_building(state, player, upgrade_logic_buildings, 4,
|
||||||
early_useful == OPTIONS.buildings_5))
|
early_useful == OPTIONS.buildings_5, floating))
|
||||||
|
|
||||||
# Connect Uncolored shapesanity regions to Main
|
# Connect Uncolored shapesanity regions to Main
|
||||||
regions[REGIONS.main].connect(
|
regions[REGIONS.main].connect(
|
||||||
|
|||||||
Reference in New Issue
Block a user