Skip to content

Commit 0012584

Browse files
authored
1 parent 6e02a4c commit 0012584

File tree

2 files changed

+8
-6
lines changed

2 files changed

+8
-6
lines changed

worlds/sm/variaRandomizer/rando/GraphBuilder.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,6 @@ def escapeTrigger(self, emptyContainer, graph, maxDiff, escapeTrigger):
150150
# update item% objectives
151151
accessibleItems = [il.Item for il in allItemLocs if ilCheck(il)]
152152
majorUpgrades = [item.Type for item in accessibleItems if item.BeamBits != 0 or item.ItemBits != 0]
153-
sm.objectives.setItemPercentFuncs(len(accessibleItems), majorUpgrades)
154153
if split == "Scavenger":
155154
# update escape access for scav with last scav loc
156155
lastScavItemLoc = progItemLocs[-1]
@@ -163,6 +162,7 @@ def escapeTrigger(self, emptyContainer, graph, maxDiff, escapeTrigger):
163162
if ilCheck(itemLoc) and (split.startswith("Full") or itemLoc.Location.isClass(split)):
164163
availLocsByArea[itemLoc.Location.GraphArea].append(itemLoc.Location.Name)
165164
self.log.debug("escapeTrigger. availLocsByArea="+str(availLocsByArea))
165+
sm.objectives.setItemPercentFuncs(len(accessibleItems), majorUpgrades, container)
166166
sm.objectives.setAreaFuncs({area:lambda sm,ap:SMBool(len(container.getLocs(lambda loc: loc.Name in availLocsByArea[area]))==0) for area in availLocsByArea})
167167
self.log.debug("escapeTrigger. collect locs until G4 access")
168168
# collect all item/locations up until we can pass G4 (the escape triggers)

worlds/sm/variaRandomizer/utils/objectives.py

+7-5
Original file line numberDiff line numberDiff line change
@@ -511,16 +511,18 @@ def updateItemPercentEscapeAccess(self, collectedLocsAccessPoints):
511511
def setScavengerHuntFunc(self, scavClearFunc):
512512
self.goals["finish scavenger hunt"].clearFunc = scavClearFunc
513513

514-
def setItemPercentFuncs(self, totalItemsCount=None, allUpgradeTypes=None):
515-
def getPctFunc(pct, totalItemsCount):
514+
def setItemPercentFuncs(self, totalItemsCount=None, allUpgradeTypes=None, container=None):
515+
def getPctFunc(total_needed, container):
516516
def f(sm, ap):
517-
nonlocal pct, totalItemsCount
518-
return sm.hasItemsPercent(pct, totalItemsCount)
517+
nonlocal total_needed, container
518+
locs_checked = len(container.getUsedLocs(lambda loc: True))
519+
return SMBool(locs_checked >= total_needed)
519520
return f
520521

522+
# AP: now based on location checks instead of local item
521523
for pct in [25,50,75,100]:
522524
goal = 'collect %d%% items' % pct
523-
self.goals[goal].clearFunc = getPctFunc(pct, totalItemsCount)
525+
self.goals[goal].clearFunc = getPctFunc(totalItemsCount * pct / 100, container)
524526
if allUpgradeTypes is not None:
525527
self.goals["collect all upgrades"].clearFunc = lambda sm, ap: sm.haveItems(allUpgradeTypes)
526528

0 commit comments

Comments
 (0)