Skip to content

Commit b7222da

Browse files
committed
Fixed broken access rules
1 parent e316140 commit b7222da

File tree

1 file changed

+15
-9
lines changed

1 file changed

+15
-9
lines changed

worlds/celeste/progression.py

+15-9
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,10 @@ def _region_access_rule(
7676
if side == CelesteSide.A_SIDE:
7777
if level == CelesteLevel.FORSAKEN_CITY:
7878
return None
79+
if level.previous() == CelesteLevel.EPILOGUE:
80+
return lambda state: state.has(
81+
BaseData.item_name(CelesteItemType.COMPLETION, level.previous(), CelesteSide.A_SIDE), player
82+
)
7983
return lambda state: state.has_any(
8084
{
8185
BaseData.item_name(CelesteItemType.COMPLETION, level.previous(), CelesteSide.A_SIDE),
@@ -102,20 +106,14 @@ def _region_access_rule(
102106
def _location_access_rule(
103107
self, player: int, level: CelesteLevel, side: CelesteSide
104108
) -> Optional[Callable[[CollectionState], bool]]:
105-
if level == CelesteLevel.CORE:
106-
if side == CelesteSide.A_SIDE:
107-
return lambda state: state.has_group("hearts", player, 4)
108-
elif side == CelesteSide.B_SIDE:
109-
return lambda state: state.has_group("hearts", player, 15)
110-
elif side == CelesteSide.C_SIDE:
111-
return lambda state: state.has_group("hearts", player, 23)
112-
113109
if level == self._goal_level() and side == self._goal_side():
114110
return lambda state: (
115111
state.has_group(
116112
"hearts",
117113
player,
118-
self.get_option("hearts_required"),
114+
self.get_option("hearts_required")
115+
if level != CelesteLevel.CORE
116+
else max(4, self.get_option("hearts_required")),
119117
)
120118
and state.has(
121119
"Strawberry",
@@ -134,6 +132,14 @@ def _location_access_rule(
134132
)
135133
)
136134

135+
if level == CelesteLevel.CORE:
136+
if side == CelesteSide.A_SIDE:
137+
return lambda state: state.has_group("hearts", player, 4)
138+
elif side == CelesteSide.B_SIDE:
139+
return lambda state: state.has_group("hearts", player, 15)
140+
elif side == CelesteSide.C_SIDE:
141+
return lambda state: state.has_group("hearts", player, 23)
142+
137143
return lambda state: True
138144

139145
def victory_item_name(self) -> str:

0 commit comments

Comments
 (0)