Triforce Pieces can now be tokens for bridge or ganon's soul. & can be tokens for multiple rewards
Wincon can now be arbitrary conditions
Ganon's Soul (removed from existing boss soul options) can now be arbitrary conditions
Co-authored-by: Pepper0ni <93387759+Pepper0ni@users.noreply.github.com>
Adds new visuals for the open chest, climb, and crawl ability shuffles, including bespoke gi models more consistent with the rest of the game as well as unique icons for the item tracker
Introduces the basis for a language system to allow the UI to be translated to any language and/or have the text changed by mods.
A lot of things would require more work but, for a proof of concept, this PR makes all randomizer trick names & descriptions translatable (currently not re-loadable at runtime as that would require deeper changes and this is already merge conflict hell every time a trick is touched).
The system works by passing it a "translation path" which is resolved in the .json including object indentation. If the resulting json object is a list of strings, instead of a string, they get concatenated (purely for organization/QoL).
Shuffles 6 languages (Deku, Gerudo, Goron, Hylian, Kokiri, Zora) to learn before being able to use Speak command with actors of that type. Other actors can still always initiate speech
Owl speaks anything (relevant for owl flights)
This adds Roc's as a fully implemented item into the randomizer pool. When both Roc's and Nayru's is found, you can swap between them on the pause menu
Many people have contributed to this over time, so huge shoutout to:
- kentonm, this item is directly inspired by their Roc's Feather from their romhack Indigo. Also provided me with their GI model, icon texture and animation to use.
- PurpleHato, for providing the images for the item name shown on the kaleidoscope.
- Dana The Elf, providing another custom animation for the item.
- Reppan, for helping to tweak the animation and exporting the GI model for me.
* Add modal to teach player about presets
* Change cvar to CVAR_GENERAL
* Update soh/soh/Enhancements/FileSelectEnhancements.cpp
Co-authored-by: Philip Dubé <serprex@users.noreply.github.com>
---------
Co-authored-by: Philip Dubé <serprex@users.noreply.github.com>
Implements object_custom_equip objects that adds more support to have items modified by modders without having to export with hands or do xml edits to load hands. This is autonomous if exported as a object_custom_equip
Also adds non existing DisplayList for items that originally did not have a DisplayList. Longshot and Big Goron Sword Sheath is 2 examples
* Split Fairysanity into groups
* Split fairy registration per type
* fix song fairy shuffle locations
* Change "Song Fairies" to "Fairy Spots"
* Update preset settings
* clang format
* simplify `shouldRegister` logic
* Bring over changes from 2ship
# Conflicts:
# .github/workflows/apt-deps.txt
# soh/CMakeLists.txt
# soh/soh/resource/importer/AudioSampleFactory.h
# soh/soh/resource/importer/AudioSequenceFactory.cpp
# soh/soh/resource/importer/AudioSequenceFactory.h
# soh/soh/resource/importer/AudioSoundFontFactory.h
* Update xml format
* Format and fix mixer for Windows
* Fixes for new LUS
* Good ole clang-format
* Bump ZAPDTR & OTRExporter.
Changes to use o2r by default
Changes to the new player animation format
# Conflicts:
# OTRExporter
# ZAPDTR
# soh/soh/OTRGlobals.cpp
# soh/src/code/z_skelanime.c
* Fix actions
* Format
* Cherry pick ZAPDTR
* Update exporter
* Move configs to port
* Remove copy
* Remove more XML copies
* Remove extractor directory from actions builds.
* Fix OTRExporter for linux
* FIx ZAPD volatile
* Format
* Fix extractor?
* Fix linux
* Fix
* Remove appimage stuff
* Screnity now
* Remove ZAPD from install paths
* Remove soh.sh.in
* Fix linux
* Cleanups and use a thread for message box
* Add presets sidebar, proof of concept row-based listing.
* Complete and unify section check/x drawing.
* Add error state to InputString, and corresponding members and builders to InputOptions.
Implement saving and loading of preset files.
* Implement `Config::SetBlock()`.
Implement Apply.
Implement Delete.
Some json structure changes.
* Apply `CVarClear()` calls in CVar-prefixed widget functions.
* Comment out satellite preset pickers for now.
* clang
* Fix ButtonOptions initializer list.
* I hate clang...
* Loop new preset checkbox creation.
Restore auto-resizing to new preset popup.
Remove errant BeginDisabled in randomizer (merge artifact?).
* Add BlockInfo struct to make array with all info for each block.
Setup loops for all other same-ish situations (applying presets, setting up columns, etc) based on blockInfo.
* Save tracker windows info for later restoration.
Lay the groundwork for said restoration.
* Complete tracker window restoration on preset application.
* Fix RadioButtonsOptions builder parameter type.
Add race lockout to new and apply buttons.
* Revert application of CVarClear on UIWidgets widgets (need to preserve manually-set default states).
* Remove enhancements satellite picker.
Swap randomizer satellite picker to use the manager presets, only displays presets with randomizer section included.
Move built-in presets to the asset archive, and remove delete button on them.
Remove PresetEntries.cpp.
* Fix locations and tricks tabs not updating live when applying preset with new system.
* Apply RandoGenerating lockout to rando preset Apply button.
* Fix new presets not being properly filtered in satellite selectors.
* Fix currently selected presets getting deleted still being selected in satellite selectors.
* Change BigPoeTargetCount in preset files to 1.