Raft: Only modify itempool during create_items (#1939)
This commit is contained in:
parent
85a2193f35
commit
cbb7616f03
|
@ -48,15 +48,17 @@ class RaftWorld(World):
|
||||||
maxRPSpecified = self.multiworld.maximum_resource_pack_amount[self.player].value
|
maxRPSpecified = self.multiworld.maximum_resource_pack_amount[self.player].value
|
||||||
minimumResourcePackAmount = min(minRPSpecified, maxRPSpecified)
|
minimumResourcePackAmount = min(minRPSpecified, maxRPSpecified)
|
||||||
maximumResourcePackAmount = max(minRPSpecified, maxRPSpecified)
|
maximumResourcePackAmount = max(minRPSpecified, maxRPSpecified)
|
||||||
|
isFillingFrequencies = self.multiworld.island_frequency_locations[self.player].value <= 3
|
||||||
# Generate item pool
|
# Generate item pool
|
||||||
pool = []
|
pool = []
|
||||||
frequencyItems = []
|
frequencyItems = []
|
||||||
for item in item_table:
|
for item in item_table:
|
||||||
raft_item = self.create_item_replaceAsNecessary(item["name"])
|
raft_item = self.create_item_replaceAsNecessary(item["name"])
|
||||||
if "Frequency" in item["name"]:
|
if isFillingFrequencies and "Frequency" in item["name"]:
|
||||||
frequencyItems.append(raft_item)
|
frequencyItems.append(raft_item)
|
||||||
pool.append(raft_item)
|
else:
|
||||||
if self.multiworld.island_frequency_locations[self.player].value <= 3:
|
pool.append(raft_item)
|
||||||
|
if isFillingFrequencies:
|
||||||
if not hasattr(self.multiworld, "raft_frequencyItemsPerPlayer"):
|
if not hasattr(self.multiworld, "raft_frequencyItemsPerPlayer"):
|
||||||
self.multiworld.raft_frequencyItemsPerPlayer = {}
|
self.multiworld.raft_frequencyItemsPerPlayer = {}
|
||||||
self.multiworld.raft_frequencyItemsPerPlayer[self.player] = frequencyItems
|
self.multiworld.raft_frequencyItemsPerPlayer[self.player] = frequencyItems
|
||||||
|
@ -104,6 +106,10 @@ class RaftWorld(World):
|
||||||
|
|
||||||
self.multiworld.itempool += pool
|
self.multiworld.itempool += pool
|
||||||
|
|
||||||
|
# Victory item
|
||||||
|
self.multiworld.get_location("Utopia Complete", self.player).place_locked_item(
|
||||||
|
RaftItem("Victory", ItemClassification.progression, None, player=self.player))
|
||||||
|
|
||||||
def set_rules(self):
|
def set_rules(self):
|
||||||
set_rules(self.multiworld, self.player)
|
set_rules(self.multiworld, self.player)
|
||||||
|
|
||||||
|
@ -195,21 +201,15 @@ class RaftWorld(World):
|
||||||
elif self.multiworld.island_frequency_locations[self.player] == 3: # Random on island random order
|
elif self.multiworld.island_frequency_locations[self.player] == 3: # Random on island random order
|
||||||
self.setLocationItemFromRegion(previousLocation, locationToFrequencyItemMap[currentLocation])
|
self.setLocationItemFromRegion(previousLocation, locationToFrequencyItemMap[currentLocation])
|
||||||
previousLocation = currentLocation
|
previousLocation = currentLocation
|
||||||
|
|
||||||
# Victory item
|
|
||||||
self.multiworld.get_location("Utopia Complete", self.player).place_locked_item(
|
|
||||||
RaftItem("Victory", ItemClassification.progression, None, player=self.player))
|
|
||||||
|
|
||||||
def setLocationItem(self, location: str, itemName: str):
|
def setLocationItem(self, location: str, itemName: str):
|
||||||
itemToUse = next(filter(lambda itm: itm.name == itemName, self.multiworld.raft_frequencyItemsPerPlayer[self.player]))
|
itemToUse = next(filter(lambda itm: itm.name == itemName, self.multiworld.raft_frequencyItemsPerPlayer[self.player]))
|
||||||
self.multiworld.raft_frequencyItemsPerPlayer[self.player].remove(itemToUse)
|
self.multiworld.raft_frequencyItemsPerPlayer[self.player].remove(itemToUse)
|
||||||
self.multiworld.itempool.remove(itemToUse)
|
|
||||||
self.multiworld.get_location(location, self.player).place_locked_item(itemToUse)
|
self.multiworld.get_location(location, self.player).place_locked_item(itemToUse)
|
||||||
|
|
||||||
def setLocationItemFromRegion(self, region: str, itemName: str):
|
def setLocationItemFromRegion(self, region: str, itemName: str):
|
||||||
itemToUse = next(filter(lambda itm: itm.name == itemName, self.multiworld.raft_frequencyItemsPerPlayer[self.player]))
|
itemToUse = next(filter(lambda itm: itm.name == itemName, self.multiworld.raft_frequencyItemsPerPlayer[self.player]))
|
||||||
self.multiworld.raft_frequencyItemsPerPlayer[self.player].remove(itemToUse)
|
self.multiworld.raft_frequencyItemsPerPlayer[self.player].remove(itemToUse)
|
||||||
self.multiworld.itempool.remove(itemToUse)
|
|
||||||
location = random.choice(list(loc for loc in location_table if loc["region"] == region))
|
location = random.choice(list(loc for loc in location_table if loc["region"] == region))
|
||||||
self.multiworld.get_location(location["name"], self.player).place_locked_item(itemToUse)
|
self.multiworld.get_location(location["name"], self.player).place_locked_item(itemToUse)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue