From 8555b13c55f96f1c93561927568ddec745e692ad Mon Sep 17 00:00:00 2001 From: aerinon Date: Fri, 17 Jan 2025 15:04:13 -0700 Subject: [PATCH 1/2] fix: added missing doors --- Doors.py | 6 ++++-- Main.py | 2 +- RELEASENOTES.md | 2 ++ 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/Doors.py b/Doors.py index 4c9611fc..470c5cd3 100644 --- a/Doors.py +++ b/Doors.py @@ -1051,8 +1051,10 @@ def create_doors(world, player): create_door(player, 'TR Crystaroller Down Stairs', Sprl).dir(Dn, 0x04, 0, HTH).ss(A, 0x12, 0x80, True, True).small_key().pos(0), create_door(player, 'TR Dark Ride Up Stairs', Sprl).dir(Up, 0xb5, 0, HTH).ss(A, 0x1b, 0x6c), create_door(player, 'TR Dark Ride SW', Nrml).dir(So, 0xb5, Left, High).trap(0x4).pos(0).portal(Z, 0x22), - create_door(player, 'TR Dark Ride Path', Lgcl), - create_door(player, 'TR Dark Ride Ledges Path', Lgcl), + create_door(player, 'TR Dark Ride Normal Path', Lgcl), + create_door(player, 'TR Dark Ride Ledge Path', Lgcl), + create_door(player, 'TR Dark Ride Backward Path', Lgcl), + create_door(player, 'TR Dark Ride Return Path', Lgcl), create_door(player, 'TR Dash Bridge NW', Nrml).dir(No, 0xc5, Left, High).pos(1), create_door(player, 'TR Dash Bridge SW', Nrml).dir(So, 0xc5, Left, High).pos(2).portal(Z, 0x02), create_door(player, 'TR Dash Bridge WS', Nrml).dir(We, 0xc5, Bot, High).small_key().pos(0), diff --git a/Main.py b/Main.py index bbaa96f3..be7f74ef 100644 --- a/Main.py +++ b/Main.py @@ -38,7 +38,7 @@ from source.enemizer.DamageTables import DamageTable from source.enemizer.Enemizer import randomize_enemies from source.rom.DataTables import init_data_tables -version_number = '1.4.8' +version_number = '1.4.8.1' version_branch = '-u' __version__ = f'{version_number}{version_branch}' diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 30cf51ad..78dbe6f6 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -1,5 +1,7 @@ # Patch Notes +* 1.4.8.1 + - Fixed broken doors generation * 1.4.8 - New option: Mirror Scroll - to add the item to the starting inventory in non-doors modes (Thanks Telethar!) - Customizer: Ability to customize shop prices and control money balancing. `money_balance` is a percentage betwen 0 and 100 that attempts to ensure you have that much percentage of money available for purchases. (100 is default, 0 essentially ignores money considerations) From d5385ea8af1d5e5c423b42891f1afdc7a65918df Mon Sep 17 00:00:00 2001 From: aerinon Date: Fri, 17 Jan 2025 15:33:23 -0700 Subject: [PATCH 2/2] feat: money balance arg now applies to prices fix: capacity upgrades now respect price customization --- ItemList.py | 11 ++++++----- RELEASENOTES.md | 2 ++ docs/Customizer.md | 24 +++++++++++++++++++++++- docs/customizer_example.yaml | 4 ++++ 4 files changed, 35 insertions(+), 6 deletions(-) diff --git a/ItemList.py b/ItemList.py index aa2f1053..5889e4d0 100644 --- a/ItemList.py +++ b/ItemList.py @@ -722,8 +722,8 @@ def customize_shops(world, player): if len(choices) > 0: shop, idx, loc, item = random.choice(choices) upgrade = ItemFactory('Bomb Upgrade (+5)', player) - up_price = final_price(loc, upgrade.price, world, player) - rep_price = final_price(loc, item.price, world, player) + up_price = final_price(loc.name, upgrade.price, world, player) + rep_price = final_price(loc.name, item.price, world, player) shop.add_inventory(idx, upgrade.name, up_price, 6, item.name, rep_price, player=item.player) loc.item = upgrade @@ -736,8 +736,8 @@ def customize_shops(world, player): if len(choices) > 0: shop, idx, loc, item = random.choice(choices) upgrade = ItemFactory('Arrow Upgrade (+5)', player) - up_price = final_price(loc, upgrade.price, world, player) - rep_price = final_price(loc, item.price, world, player) + up_price = final_price(loc.name, upgrade.price, world, player) + rep_price = final_price(loc.name, item.price, world, player) shop.add_inventory(idx, upgrade.name, up_price, 6, item.name, rep_price, player=item.player) loc.item = upgrade @@ -803,7 +803,8 @@ def balance_prices(world, player): slot = shop_to_location_table[loc.parent_region.name].index(loc.name) needed_money += loc.parent_region.shop.inventory[slot]['price'] - target = available_money - needed_money + modifier = world.money_balance[player]/100 + target = available_money - needed_money * modifier # remove the first set of shops from consideration (or used them for discounting) state, done = CollectionState(world), False unchecked_locations = world.get_locations().copy() diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 78dbe6f6..b912e4f6 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -2,6 +2,8 @@ * 1.4.8.1 - Fixed broken doors generation + - Fixed bomb/arrow upgrade ignoring custom pricing + - Extended `money_balance` to apply to price balancing for non-custom shops. * 1.4.8 - New option: Mirror Scroll - to add the item to the starting inventory in non-doors modes (Thanks Telethar!) - Customizer: Ability to customize shop prices and control money balancing. `money_balance` is a percentage betwen 0 and 100 that attempts to ensure you have that much percentage of money available for purchases. (100 is default, 0 essentially ignores money considerations) diff --git a/docs/Customizer.md b/docs/Customizer.md index 9ee0571b..a627cfab 100644 --- a/docs/Customizer.md +++ b/docs/Customizer.md @@ -42,6 +42,13 @@ Player 1's settings will be determined by rolling the mystery weights and player Start inventory is not supported here. It has a separate section. +#### Extra Settings + +Some settings are intended to only be accessed using the customizer: + +* `aga_randomness` setting this to false, turns off blue balls and ganon warp randomness +* `money_balance` this is a percent (0-100). For numbers less than 100, both price balancing and money balancing will only attempt to ensure the player has access to only a percentage of the required funds. When 0, this should effectively disable money balancing. Grinding for rupees may be necessary whenever this is less than 100. + ###### Not Yet Implemented Rom/Adjust flags like sprite, quickswap are not outputing with the print_custom_yaml settings @@ -214,4 +221,19 @@ drops: Fish: Big Magic ``` -Prize packs expect a list of eight items each (anything not specified will be whatever randomization would have normally occurred). The special drops expect a single item. Packs 1 through 7 are supported. Prize pack 0 is not customizable. \ No newline at end of file +Prize packs expect a list of eight items each (anything not specified will be whatever randomization would have normally occurred). The special drops expect a single item. Packs 1 through 7 are supported. Prize pack 0 is not customizable. + +## prices + +This must be defined by player. You may have the prices of items in shops defined using the following + +``` +prices: + 1: + Capacity Upgrade - Left: 100 + Capacity Upgrade - Right: 200 + Dark Death Mountain Shop - Left: 100 + Dark Death Mountain Shop - Middle: 150 + Dark Death Mountain Shop - Right: 300 + Dark Lake Hylia Shop - Left: 200 +``` \ No newline at end of file diff --git a/docs/customizer_example.yaml b/docs/customizer_example.yaml index 508cca8b..82f3fb7b 100644 --- a/docs/customizer_example.yaml +++ b/docs/customizer_example.yaml @@ -106,6 +106,10 @@ bosses: Palace of Darkness: Arrghus Thieves Town: Blind Ganons Tower (top): Vitreous +prices: + 1: + Capacity Upgrade - Left: 5 + Capacity Upgrade - Right: 216 start_inventory: 1: - Pegasus Boots