Open SiriusAshling opened 2 years ago
In Custom Presets (#11) there is no field for arbitrary header code. Either such a field would have to be added, or the routine described in 4) would be used, asking to name the custom item pool and saving it as a custom header when attempting to create a custom preset form the current settings, then including that header in the preset.
The UI and the server don't use the preset functionality from seedgen. Preset settings are applied before generating the seed.
Well right now the UI doesn't have custom presets at all. When it supports them, I would rather have it use the already existing functionality from seedgen instead of creating a separate unrelated system to achieve the same goal. Otherwise it would further extend the issues around the interface behaving different than using seedgen directly.
This feature would be pretty great to have so we should prioritize it pretty highly, in the same vein as header categories.
Reaaaaally weird case are warps which will add a subset of possible items, say 8 out of 40 possible choices. Probably fine to not care about that for a while :p
Managing the item pool through headers is a rather poor user experience if one wants heavy customization or to change specific small details that don't correlate to an official header.
The item pool could be better managed through a specialized interface. The Blind Forest randomizer has an example of this.
Additional complications for this game arise through headers defining custom items. Initially a customization for the "normal" items would already be helpful and a definite improvement. To properly interface with the header selection some problems will have to be solved though.
Below a suggestion on how the concept could be implemented:
Initial State
There is a defined default item pool which reflects the seedgen default item pool. The initial state of the item pool tab is these items and their corresponding amounts, plus a set of common pickups we may want to present, but don't have in the default item pool, such as the teleporters with a zero count.
Header modifiers
Headers can increase or decrease the count of items in the pool, this is applied to the default item pool. As per #7 headers should be able to define groups - headers of the "item pool" group should be displayed in the item pool tab for clarity and visibility, including custom headers tagged as such. For the user they represent buttons that quickly and easily modify the item pool, akin to the presets presented in the blind forest counterpart, but modular in that the presets aren't always mutually exclusive. If a header adds an item that is not already in the list, it could get added at the top and using the !!name command entry from the header as a display name if given (item code otherwise).
User modifiers
The user can do manual modifications of item counts. When generating the seed, this will be added to the custom header part as !!add and !!remove commands (It may be useful to track the state as how much the user has modified the item counts instead of tracking absolute numbers). Lowest amount should always be zero, which has to be accounted for when e.g. the user removes a teleporter manually, but then removes the teleporter header entirely, which should not drop it to minus one. At the top of the list there could be a plus button to add new entries with a name and an item code (using the headerlang extension if possible), the first could be used as a !!name command in the resulting header.
Save a custom item pool
To avoid having to reenter the item pool details every time, a "save this item pool" button could be presented, which performs the conversion into a header as when generating the seed, but then saves it as a custom header tagged to be listed in the item pool tab. The button press could show a modal to name the resulting header before confirmation.
Custom Presets
In Custom Presets (#11) there is no field for arbitrary header code. Either such a field would have to be added, or the routine described in 4) would be used, asking to name the custom item pool and saving it as a custom header when attempting to create a custom preset form the current settings, then including that header in the preset.