Skip to content

Commit

Permalink
feat: money balance arg now applies to prices
Browse files Browse the repository at this point in the history
fix: capacity upgrades now respect price customization
  • Loading branch information
aerinon committed Jan 17, 2025
1 parent 8555b13 commit d5385ea
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 6 deletions.
11 changes: 6 additions & 5 deletions ItemList.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand Down Expand Up @@ -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()
Expand Down
2 changes: 2 additions & 0 deletions RELEASENOTES.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
24 changes: 23 additions & 1 deletion docs/Customizer.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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.
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
```
4 changes: 4 additions & 0 deletions docs/customizer_example.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit d5385ea

Please sign in to comment.