Merge branch 'OverworldShuffleDev' into OverworldShuffle

This commit is contained in:
codemann8
2024-12-27 00:51:15 -06:00
4 changed files with 18 additions and 9 deletions

View File

@@ -1,6 +1,6 @@
# Changelog
## 0.5.1.0
## 0.5.1.0 (+ Hotfix 0.5.1.1)
- New "Nearby" Dungeon Item Shuffle option
- Fixed issue with smith follower getting deleted incorrectly on s+q
- Various generation and logic fixes for HMG/NL

View File

@@ -8,7 +8,7 @@ from OWEdges import OWTileRegions, OWEdgeGroups, OWEdgeGroupsTerrain, OWExitType
from OverworldGlitchRules import create_owg_connections
from Utils import bidict
version_number = '0.5.1.0'
version_number = '0.5.1.1'
# branch indicator is intentionally different across branches
version_branch = ''

View File

@@ -81,17 +81,17 @@ You may list each location for a player and the item you wish to place there. A
This must be defined by player. Each player number should be listed with the appropriate section. Each section is a list of placement rules. Each placement rule has a specific type.
Supported Types: PlacementGroup, NotPlacmentGroup, PreferredLocationGroup
Supported Types: LocationGroup, NotLocationGroup, PreferredLocationGroup
#### PlacementGroup
#### LocationGroup
You may define an item, and a list of locations. The locations may be weighted if desired. The item will be placed at one of the listed locations - this currently ignores logic. The item will be placed there. The special location 'Random' indicates that the item should be placed randomly, without any other consideration. This may be repeated for placement of multiple items like multiple bows or swords.
#### NotPlacementGroup
#### NotLocationGroup
You may define an item and a list of locations that an item should not be placed at. This will apply to all items of that type. The logic is considered for this. If it is otherwise impossible, the item will be considered for the listed locations. This is important for small key layouts mostly, but it will try other locations first.
#### PreferredPlacementGroup
#### PreferredLocationGroup
You may define a list of items and a list of locations. Those items will be considered first for placements and the logic will attempt to place those items in those locations first. If there are more item than locations or vice versa, the leftover items or location will be treated normally. (Although, the leftover items will be placed earlier by the algorithm than those not listed)

View File

@@ -146,14 +146,23 @@ class CustomSettings(object):
args.mapshuffle[p] = get_setting(settings['mapshuffle'], args.mapshuffle[p])
args.compassshuffle[p] = get_setting(settings['compassshuffle'], args.compassshuffle[p])
dungeon_item_map = { 0: 'none',
1: 'wild' }
if args.mapshuffle[p] in dungeon_item_map:
args.mapshuffle[p] = dungeon_item_map[args.mapshuffle[p]]
if args.compassshuffle[p] in dungeon_item_map:
args.compassshuffle[p] = dungeon_item_map[args.compassshuffle[p]]
if args.bigkeyshuffle[p] in dungeon_item_map:
args.bigkeyshuffle[p] = dungeon_item_map[args.bigkeyshuffle[p]]
if get_setting(settings['keysanity'], args.keysanity):
if args.bigkeyshuffle[p] == 'none':
if args.bigkeyshuffle[p] in ['none', 0]:
args.bigkeyshuffle[p] = 'wild'
if args.keyshuffle[p] == 'none':
args.keyshuffle[p] = 'wild'
if args.mapshuffle[p] == 'none':
if args.mapshuffle[p] in ['none', 0]:
args.mapshuffle[p] = 'wild'
if args.compassshuffle[p] == 'none':
if args.compassshuffle[p] in ['none', 0]:
args.compassshuffle[p] = 'wild'
args.shufflebosses[p] = get_setting(settings['boss_shuffle'], get_setting(settings['shufflebosses'], args.shufflebosses[p]))