Beemizer: fix potentially replacing all heart containers for progression
This commit is contained in:
parent
8f5d199968
commit
7088c148a2
30
ItemList.py
30
ItemList.py
|
@ -209,18 +209,7 @@ def generate_itempool(world, player):
|
||||||
world.get_location(location, player).event = True
|
world.get_location(location, player).event = True
|
||||||
world.get_location(location, player).locked = True
|
world.get_location(location, player).locked = True
|
||||||
|
|
||||||
beeweights = {0: {None: 100},
|
items = ItemFactory(pool, player)
|
||||||
1: {None: 75, 'trap': 25},
|
|
||||||
2: {None: 40, 'trap': 40, 'bee': 20},
|
|
||||||
3: {'trap': 50, 'bee': 50},
|
|
||||||
4: {'trap': 100}}
|
|
||||||
def beemizer(item):
|
|
||||||
if world.beemizer[item.player] and not item.advancement and not item.priority and not item.type:
|
|
||||||
choice = random.choices(list(beeweights[world.beemizer[item.player]].keys()), weights=list(beeweights[world.beemizer[item.player]].values()))[0]
|
|
||||||
return item if not choice else ItemFactory("Bee Trap", player) if choice == 'trap' else ItemFactory("Bee", player)
|
|
||||||
return item
|
|
||||||
|
|
||||||
world.itempool += [beemizer(item) for item in ItemFactory(pool, player)]
|
|
||||||
|
|
||||||
world.lamps_needed_for_dark_rooms = lamps_needed_for_dark_rooms
|
world.lamps_needed_for_dark_rooms = lamps_needed_for_dark_rooms
|
||||||
|
|
||||||
|
@ -242,12 +231,25 @@ def generate_itempool(world, player):
|
||||||
# rather than making all hearts/heart pieces progression items (which slows down generation considerably)
|
# rather than making all hearts/heart pieces progression items (which slows down generation considerably)
|
||||||
# We mark one random heart container as an advancement item (or 4 heart pieces in expert mode)
|
# We mark one random heart container as an advancement item (or 4 heart pieces in expert mode)
|
||||||
if world.difficulty[player] in ['normal', 'hard'] and not (world.custom and world.customitemarray[30] == 0):
|
if world.difficulty[player] in ['normal', 'hard'] and not (world.custom and world.customitemarray[30] == 0):
|
||||||
[item for item in world.itempool if item.name == 'Boss Heart Container' and item.player == player][0].advancement = True
|
[item for item in items if item.name == 'Boss Heart Container'][0].advancement = True
|
||||||
elif world.difficulty[player] in ['expert'] and not (world.custom and world.customitemarray[29] < 4):
|
elif world.difficulty[player] in ['expert'] and not (world.custom and world.customitemarray[29] < 4):
|
||||||
adv_heart_pieces = [item for item in world.itempool if item.name == 'Piece of Heart' and item.player == player][0:4]
|
adv_heart_pieces = [item for item in items if item.name == 'Piece of Heart'][0:4]
|
||||||
for hp in adv_heart_pieces:
|
for hp in adv_heart_pieces:
|
||||||
hp.advancement = True
|
hp.advancement = True
|
||||||
|
|
||||||
|
beeweights = {0: {None: 100},
|
||||||
|
1: {None: 75, 'trap': 25},
|
||||||
|
2: {None: 40, 'trap': 40, 'bee': 20},
|
||||||
|
3: {'trap': 50, 'bee': 50},
|
||||||
|
4: {'trap': 100}}
|
||||||
|
def beemizer(item):
|
||||||
|
if world.beemizer[item.player] and not item.advancement and not item.priority and not item.type:
|
||||||
|
choice = random.choices(list(beeweights[world.beemizer[item.player]].keys()), weights=list(beeweights[world.beemizer[item.player]].values()))[0]
|
||||||
|
return item if not choice else ItemFactory("Bee Trap", player) if choice == 'trap' else ItemFactory("Bee", player)
|
||||||
|
return item
|
||||||
|
|
||||||
|
world.itempool += [beemizer(item) for item in items]
|
||||||
|
|
||||||
# shuffle medallions
|
# shuffle medallions
|
||||||
mm_medallion = ['Ether', 'Quake', 'Bombos'][random.randint(0, 2)]
|
mm_medallion = ['Ether', 'Quake', 'Bombos'][random.randint(0, 2)]
|
||||||
tr_medallion = ['Ether', 'Quake', 'Bombos'][random.randint(0, 2)]
|
tr_medallion = ['Ether', 'Quake', 'Bombos'][random.randint(0, 2)]
|
||||||
|
|
Loading…
Reference in New Issue