diff --git a/CLI.py b/CLI.py index ce230037..18692950 100644 --- a/CLI.py +++ b/CLI.py @@ -74,7 +74,6 @@ def parse_cli(argv, no_defaults=False): parser.add_argument('--customitemarray', default={}, help=argparse.SUPPRESS) # included for backwards compatibility - parser.add_argument('--beemizer', default=defval(settings["beemizer"]), type=lambda value: min(max(int(value), 0), 4)) parser.add_argument('--multi', default=defval(settings["multi"]), type=lambda value: min(max(int(value), 1), 255)) parser.add_argument('--securerandom', default=defval(settings["securerandom"]), action='store_true') parser.add_argument('--teams', default=defval(1), type=lambda value: max(int(value), 1)) diff --git a/ItemList.py b/ItemList.py index 2ba05043..4f65c2ac 100644 --- a/ItemList.py +++ b/ItemList.py @@ -306,6 +306,10 @@ def generate_itempool(world, player): pool.append(slot['item']) items = ItemFactory(pool, player) + if world.shopsanity[player]: + for potion in ['Green Potion', 'Blue Potion', 'Red Potion']: + p_item = next(item for item in items if item.name == potion and item.player == player) + p_item.priority = True # don't beemize one of each potion world.lamps_needed_for_dark_rooms = lamps_needed_for_dark_rooms @@ -337,11 +341,11 @@ def generate_itempool(world, player): for hp in adv_heart_pieces: 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}} + 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] diff --git a/Main.py b/Main.py index 919ba67f..bc621f7c 100644 --- a/Main.py +++ b/Main.py @@ -27,7 +27,7 @@ from Fill import sell_potions, sell_keys, balance_multiworld_progression, balanc from ItemList import generate_itempool, difficulties, fill_prizes, customize_shops from Utils import output_path, parse_player_names -__version__ = '0.4.0.5-u' +__version__ = '0.4.0.6-u' class EnemizerError(RuntimeError): diff --git a/Mystery.py b/Mystery.py index 271e8194..6d0189f0 100644 --- a/Mystery.py +++ b/Mystery.py @@ -209,7 +209,7 @@ def roll_settings(weights): ret.shufflepots = get_choice('pot_shuffle') == 'on' - ret.beemizer = int(get_choice('beemizer')) if 'beemizer' in weights else 0 + ret.beemizer = get_choice('beemizer') if 'beemizer' in weights else '0' inventoryweights = weights.get('startinventory', {}) startitems = [] diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 5f392a15..06bda972 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -1,5 +1,9 @@ # New Features +## Maiden Hint for Theives Town Attic + +In crossed dungeon mode, if you bring the maiden to the boss room when the attic is not bombed (and thus no light in the room), she mentions the dungeon where you can find the cracked floor. + ## Shuffle Links House Links house can now be shuffled in different ER settings. It will be limited to the Light World (or Dark World in inverted) if Crossed or Insanity shuffle is not one. It it also limited if door shuffle settings allow the Sanctuary to be in the dark world. (This is prevent having no Light World spawn points in Open modes) This setting is ignored by standard mode. THe CLI parameter is --shufflelinks @@ -10,6 +14,10 @@ Thanks to qadan, cheuer, & compiling # Bug Fixes and Notes. +* 0.4.0.6 + * Hints now default to off + * The maiden gives you a hint to the attic if you bring her to the unlit boss room + * Beemizer support and fix for shopsanity * 0.4.0.5 * Insanity - less restrictions on exiting (all modes) * Fix for simple bosses shuffle diff --git a/resources/app/cli/args.json b/resources/app/cli/args.json index 45f0e808..a41adb17 100644 --- a/resources/app/cli/args.json +++ b/resources/app/cli/args.json @@ -159,6 +159,11 @@ "7", "6", "5", "4", "3", "2", "1", "0", "random" ] }, + "beemizer": { + "choices": [ + "4", "3", "2", "1", "0" + ] + }, "openpyramid": { "action": "store_true", "type": "bool" diff --git a/resources/app/gui/lang/en.json b/resources/app/gui/lang/en.json index 303e91cb..aa6cd6dc 100644 --- a/resources/app/gui/lang/en.json +++ b/resources/app/gui/lang/en.json @@ -234,6 +234,13 @@ "randomizer.item.weapons.swordless": "Swordless", "randomizer.item.weapons.vanilla": "Vanilla", + "randomizer.item.beemizer": "Beemizer", + "randomizer.item.beemizer.0": "No Bee Traps", + "randomizer.item.beemizer.1": "25% Bee Traps", + "randomizer.item.beemizer.2": "40% Traps, 20% Refills", + "randomizer.item.beemizer.3": "50% Traps, 50% Refills", + "randomizer.item.beemizer.4": "100% Bee Traps", + "randomizer.item.itempool": "Item Pool", "randomizer.item.itempool.normal": "Normal", "randomizer.item.itempool.hard": "Hard", diff --git a/resources/app/gui/randomize/item/widgets.json b/resources/app/gui/randomize/item/widgets.json index 043a29ed..1871dcaf 100644 --- a/resources/app/gui/randomize/item/widgets.json +++ b/resources/app/gui/randomize/item/widgets.json @@ -58,6 +58,12 @@ "swordless", "vanilla" ] + }, + "beemizer": { + "type": "selectbox", + "options": [ + "0", "1", "2", "3", "4" + ] } }, "rightItemFrame": { diff --git a/source/classes/constants.py b/source/classes/constants.py index 5c8f3ce3..c0e95861 100644 --- a/source/classes/constants.py +++ b/source/classes/constants.py @@ -69,7 +69,8 @@ SETTINGSTOPROCESS = { "timer": "timer", "progressives": "progressive", "accessibility": "accessibility", - "sortingalgo": "algorithm" + "sortingalgo": "algorithm", + "beemizer": "beemizer" }, "entrance": { "openpyramid": "openpyramid",