* Modify the flow for applying opacity to docked tracker windows only when they are docked to the "Main - Deck" dockspace.
* Add opacity clamping for check tracker.
* Rearrangement of the currencies in randomizer.cpp
* Rearrangement of the currencies in randomizer.cpp
* Rearrangement of the currencies in randomizer.cpp
* Rearrangement of the currencies in randomizer.cpp
* Rearrangement of the currencies in randomizer.cpp
* Rearrangement of the currencies in randomizer.cpp
* Rearrangement of the currencies in randomizer.cpp
* Rearrangement of the currencies in randomizer.cpp
* Rearrangement of the currencies in randomizer.cpp
* Rearrangement of the currencies in randomizer.cpp
* Rearrangement of the currencies in randomizer.cpp
* Rearrangement of the currencies in randomizer.cpp
* Additions for the German translation in hint_list_exclude_dungeon.cpp
* Additions for the German translation in hint_list_exclude_overworld.cpp
* Additions for the German translation in hint_list_exclude_overworld.cpp
* Should cover everything, I hope
* One last
* final tweaks for real this time
* Update soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_item.cpp
Co-authored-by: Extloga <141232749+Extloga@users.noreply.github.com>
* Update soh/soh/Enhancements/randomizer/3drando/shops.cpp
Co-authored-by: Extloga <141232749+Extloga@users.noreply.github.com>
* Update soh/soh/Enhancements/randomizer/3drando/shops.cpp
Co-authored-by: Extloga <141232749+Extloga@users.noreply.github.com>
* TODO_TRANSLATE is a macro no a string Hato
---------
Co-authored-by: Extloga <141232749+Extloga@users.noreply.github.com>
* Rename a few more entrances to better match interior contents, and a lot of check names to match their grotto names.
* Undo debug commit. Now it's just text changes.
* Fix issue where random and clear seed buttons overlap text input.
* Fix issue where item scale is incorrectly disabled.
On fresh json, there was a mismatch on the defaults where SGIA_JUNK was default for the actual
combobx but SGIA_DISABLED, was used as the default when the CVar was checked in the scale slider's
PreFunc.
* Calculate accessible checks and show them in the check tracker.
* Added added DoorUnlocked checks to the Fire Temple doors.
This is needed when calculating Accessible checks while playing and using small keys. Otherwise checks will appear unaccessible because Keys have been used.
* Changed RecalculateAccessibleChecks to use the logic ReachabilitySearch.
* Reverted DoorUnlocked changes.
* Added recalculate_accessible_checks debug console command.
* Skip CanBuy check when calculating accessible checks, it spoils that some items can't be bought with the current wallet.
* Set RAND_INF_ZELDAS_LETTER.
* Don't add locations to the pool when calculating accessible checks.
* Save and Load randomizer trick options.
* Get the number of used small keys.
* Added check if bean was planted.
* Show number of Accessible checks in each Area.
* Accounted for missing RG_POCKET_CUCCO in logic HasItem and ApplyItemEffect.
* Show accessible checks via an icon.
* Check shop price against current wallet.
* Recalculate Accessible Checks in CheckTrackerLoadGame instead of LoadFile.
* RecalculateAccessibleChecks on save.
* Don't unset Zelda's Letter.
* Added Only Show Available Checks checkbox.
* Rename Accessible Checks to Available Checks.
* Added option to Enable Available Checks.
* Remove debug console to recalculate available checks, this can now be done by toggling Enable Available Checks in the settings.
* Remove extra requiredTrial.
* Default "Hide unshuffled shop item checks" unchecked.
* Updated GetSmallKeyCount to return int8_t.
* Default AmmoDrop to true until the setting is implemented.
* Fixed Sleeping Waterfall timesaver.
* Updated Only Show Available Checks to let Show Hidden Items reveal hidden available checks.
* Revert "Don't unset Zelda's Letter."
This reverts commit 4b5903940f.
* Set RAND_INF_ZELDAS_LETTER.
* Revert "Fixed Sleeping Waterfall timesaver."
This reverts commit 9b62fd5297.
* Added isMagicAcquired to Logic::HasItem.
* GetDungeonSmallKeyDoors return static emptyVector.
* Comment out AmmoCanDrop in ResetLogic.
* Added location_access CanBuy todo.
* Reverted Get and Set SmallKeyCount to use uint8_t and handled -1 keys.
* Added todo for MQ Water GetUsedSmallKeyCount.
* copy n64 pal 10
doing this so i can check diffs i make
* transfer german->jp icon item
* overlays, message data, icon item jpn, audio, code
todo: title_static, gameplay keep
* add kanji and fix title cards
* title static
* spell folder correctly
* boss title cards, do action, icon item, item name, map name
* headers for jpn stuff
* gameplay_keep
* Scenes, audio, jp text extraction, rom support, overlay fixes, sheik & darunia
todo: test & disable darunia fix cvar for ntsc
* msgptr init fix
* icon item offsets
* comment out title cards until zapd can fix itself (we extract these in a different file anyway)
* compile and font implemented to get past title screen
* file select
* message, kaleido and everything else but rando
* uintptr_t
* rando and custom messages working!
* ntsc-j 1.0 support
* n64 logo?
* copy ntsc 10 to 11
* ntsc 11 extraction
* change title version names
* copy ntsc 11 to 12
* ntsc 12 extraction
* clean up some todos
* re checkout submodules post merge
* fix US filename
* support cross-version filenames
* add new versions to non-mq list
* use correct message table init
* Fix ntsc nes message table overriding pal nes message table
* actual fix, allows extraction
* fix file name using wrong font of file being hovered over
* Fix barinade crash
* re-add pal
* better jabu fix and revert LUS
* fix gerudo title cards
* better better owl select
* more owl fixes
* build
* fix some name decode issues
* Switch Language Mid Text
* Fix PAL displaying for JP filenames
* Fix AskToEquip Crash
* Disable Credits Timing Fix on NTSC
* Fix JP Text positioning
* basic language switching (BIG todo: file select, title screen)
* Title Screen Hopefully working
* add ntsc to linux appimage stuff, TODO: add .v64/.n64 support
* Update OTRExporter
* Fix pause to decide offset
* Fix bomb item name crash
* fix fire arrows and PoH
* builds
* update asset changes and fix menu language changing
* fix name decode
* Fix crashes and add rando/boss rush select stuff
* Revive debug feature by setting language cvar too
* Fix ocarina text speed softlock, and update jp text speed changes
* Merge remote-tracking branch 'upstream/develop' into NTSC
* Fix options menu and let pal use japanese fully
* Resolve some suggestions
* match up gTextSpeed changes to english (still broken!)
* Fix text speed crash
* Set default filename language on save init funcs
* copy n64 ntsc 1.2 to gc nmq ntsc and add rom info
* extractor working for ntsc gc u
* Extraction Works
* bump otrexporter
* Display same correct info for n64 ntsc-j and ntsc-u
* ovl asset fixes
* final font diff
* change the correct ovl file choose xml
* copy asset files for jp
* JP Working
* Copy jp and us xmls to mq
* MQ Working
* quicktext more closely aligned with decomp
* add versions to mq switch
* linux appimage v64/n64 checksums
* bump zapd
* Credits Fix Tooltip Adjusted
* update supported hashes json
* update shasums to include JP n64
* add shasum hashes
* Bump submodules back to upstream
* copy n64 pal 10
doing this so i can check diffs i make
* transfer german->jp icon item
* overlays, message data, icon item jpn, audio, code
todo: title_static, gameplay keep
* add kanji and fix title cards
* title static
* spell folder correctly
* boss title cards, do action, icon item, item name, map name
* headers for jpn stuff
* gameplay_keep
* Scenes, audio, jp text extraction, rom support, overlay fixes, sheik & darunia
todo: test & disable darunia fix cvar for ntsc
* msgptr init fix
* icon item offsets
* comment out title cards until zapd can fix itself (we extract these in a different file anyway)
* compile and font implemented to get past title screen
* file select
* message, kaleido and everything else but rando
* uintptr_t
* rando and custom messages working!
* ntsc-j 1.0 support
* n64 logo?
* copy ntsc 10 to 11
* ntsc 11 extraction
* change title version names
* copy ntsc 11 to 12
* ntsc 12 extraction
* clean up some todos
* re checkout submodules post merge
* fix US filename
* support cross-version filenames
* add new versions to non-mq list
* use correct message table init
* Fix ntsc nes message table overriding pal nes message table
* actual fix, allows extraction
* fix file name using wrong font of file being hovered over
* Fix barinade crash
* re-add pal
* better jabu fix and revert LUS
* fix gerudo title cards
* better better owl select
* more owl fixes
* build
* fix some name decode issues
* Switch Language Mid Text
* Fix PAL displaying for JP filenames
* Fix AskToEquip Crash
* Disable Credits Timing Fix on NTSC
* Fix JP Text positioning
* basic language switching (BIG todo: file select, title screen)
* Title Screen Hopefully working
* add ntsc to linux appimage stuff, TODO: add .v64/.n64 support
* Update OTRExporter
* Fix pause to decide offset
* Fix bomb item name crash
* fix fire arrows and PoH
* builds
* update asset changes and fix menu language changing
* fix name decode
* Fix crashes and add rando/boss rush select stuff
* Revive debug feature by setting language cvar too
* Fix ocarina text speed softlock, and update jp text speed changes
* Merge remote-tracking branch 'upstream/develop' into NTSC
* Fix options menu and let pal use japanese fully
* Resolve some suggestions
* match up gTextSpeed changes to english (still broken!)
* Fix text speed crash
* Set default filename language on save init funcs
* bump otrexporter
* Display same correct info for n64 ntsc-j and ntsc-u
* quicktext more closely aligned with decomp
* linux appimage v64/n64 checksums
* bump zapd
* Credits Fix Tooltip Adjusted
* update supported hashes json
* update shasums to include JP n64
* Re-Run ship init funcs on json drop and preset apply
* Prevent registering rando locations from running more than once
* Moves registered=true right after early return
* Move ShipInit call into applyPreset
* RBA and BA
* move rba to shipinit
* make the vanilla condition actually a vanilla condition
* update should docs
* move ba to shipinit
* don't pass things
* try a different readability strategy
* remove option/preset entries
---------
Co-authored-by: rozlette <Rozelette@users.noreply.github.com>
* * fixes softlock when talking to Mido without Kokiri Emerald after killing Gohma
* * moved scene check to hook
* moved vanilla conditioon into GameInteractor_Should
* * corrected hook condition
* removed 'this'
* * reverted GameInteractor and hook_handlers
* changed actor to use existing hook
* * updated kokiri emerald conditions
* * missed parentheses
* * Overworld pretty much done.
* Known issue with Market Night + 2 bushes in KF
* Known issue with Adult bush in ZR
* * fixed locations post-merge
* * renamed option and types to 'GRASSANITY'
* changed grassnity to be a combobox option
* added first 5 deku tree locations
* * color is a sickly green when containing a check
* added ZR 14 (adult only bush on the platform, not the same?)
* * forgot to rename the files to grassanity
* updated draw method to fix regrowing grass
* Removed old WIP locacc files
* * removed comments in bush actor
* added rest of Deku Tree plus MQ
* Added DC + MQ
* Fixed DC incorrect pos value on 1 loc
* JJB done minus after big octo
* Added BotW + MQ locs
* WIP grottos
* Grottos done
* Workaround to allow market grass during night
* Seperated the 2 KF bushes into 4 checks
* Hints and additional formatting
* Slightly less ghastly color
* Corrected the 2 JJB locs
* * Renaming and removal of some locs.
* Restructure in z_en_kusa.c to leave vanilla code alone.
* Formatting.
* * see previous (forgot to stage woops)
* * Clear grassIdentity on item drop
* Added check for RC on RandoDraw function
Results in no extra dupe drops, and instantly correct the color of the grass when cut instead of on collecting the item.
* * fixed dupe location spoiler names which caused occasional crash when writing spoiler log
* * reverse should
* * fixed faulty locations
* * corrected KAK location names and some formatting
* * Fixed market bushes by tree not working at night
* * merged ZR near PoH grass into a single loc
* * Changed to ShipInit (might be missing something?)
* Corrected Should in z_en_kusa.c to use original draw func when setting is Off
* * Renaming to Shuffle Grass
* * minor fix
* * keyboard fail lol
* * suggestions
* * removed unused function
* * move grass locations into ShuffleGrass
* move grass GameInteractor into GIVanillaBehavior
* minor fixes
* * pre-removed locs from dungeon.cpp
* * pre-remove from context.cpp
* * re-added Grass to context
* * added Dana's amazing custom bush models
* using CSMC to display flowers based on "contents"
* * added Dana's grass models
* refactor to lessen the clutter in the switch
* * removed fairy case
* Added back missing Deku Tree locations
* formatting
* Update soh/soh/Enhancements/randomizer/location_access/overworld/zoras_river.cpp
Co-authored-by: Philip Dubé <serprex@users.noreply.github.com>
* re-added suggestion from previous
* removed wrong line >.>
---------
Co-authored-by: Philip Dubé <serprex@users.noreply.github.com>
Also avoid putting random junk into the pool to begin with
When smaller, add junk from pending junk items
When larger, remove junk from the item pool
This avoids issue where shuffles which add items to pool (souls, overworld keys, triforce pieces) would hit assert about item pool size exceeding location pool size
* Additions and fixes for the German translation in item_list.cpp
* Additions and fixes for the German translation in hint_list_exclude_dungeon.cpp
* Additions and fixes for the German translation in hint_list_exclude_overworld.cpp
* Additions and fixes for the German translation in hint_list_item.cpp
* Additions and fixes for the German translation in randomizer.cpp
* Additions and fixes for the German translation in randomizer.cpp
* Fix for the French translation in item_list.cpp
* Additions and fixes for the German translation in hint_list_exclude_dungeon.cpp
* Fixes for the English text in settings.cpp
* Fixes for the English text in SohMenuEnhancements.cpp
* Fixes for the English text in SohMenuDevTools.cpp
* Fixes for the English text in SohMenuRandomizer.cpp
* Fixes for the English text in ResolutionEditor.cpp
* Fixes for the English text in enemyrandomizer.cpp
* Fixes for the English text in gameplaystats.cpp
* Fixes for the English text in savefile.cpp
* Fixes for the English text in enemyrandomizer.cpp
* Fix for the English text in SohMenuEnhancements.cpp
Co-authored-by: aMannus <mannusmenting@gmail.com>
---------
Co-authored-by: aMannus <mannusmenting@gmail.com>
* temp fix for chest skulltulas
* Implement way to load a vanilla message into a CustomMessage
* dynamically inserts autodismiss text code to skulltula text.
* pushing what i have so i can try to figure out HW_REG errors
* HW_REG (fix? workaround? either way it builds now)
* factory fixes and shaders
* bump again
* bump again
* copy shaders for `ExtractAssets` too (instead of just in `GenerateSohOtr`)
* Fix SFM logic
SFM mixed child wolfos / adult moblin logic, making both incorrect
In particular, Din's Fire is ineffective on Moblins, & slashing your way through them should not be in logic
Adds trick for getting through SFM as adult without killing moblins
Includes small cleanup elsewhere in logic
* moblins not required
* don't throw items when using assigned tunics/boots
* didn't actually need that
* simplify logic so we don't need to check for holding items
* just use a vb should
* fix comment
* Prevent spoiling dungeons in check and item trackers if MQ is set to Selection, but selection for specific dungeon is Random.
* Account for other options using "Set Dungeon Quests".
* fix mismatch on default value for notification position
* Fix checkbox vertical offset for multiline
* Moooore changeees too theee menuuuuuu
* capitalization again
* Fix controller config & remove test var
Where we were previously checking it, just check the separate triforce hunt option instead.
The option under GBK settings was always kind of a dummy option that wasn't meant to actually be selected, and it was set automatically when Triforce Hunt was on.
This PR just cuts out the middle man, so to speak.
* First pass cheats, extra modes, minigames, difficulty, fixes, graphics
* More progress. One tab left
* Enhancements & cheats done and fix for item tracker font
* Adds ability to set InputString fields as "secret"
Meaning it shows the text as dots like a password field. Currently nothing that is merged into the main branch uses this but Anchor will need it.
* Adds an `addedFlags` field to InputOptions.
* FPS and refresh rate logic changes
Changes FPS behavior on all renderer (despite the actual set FPS):
- Clamp FPS to refresh rate when V-Sync on (or can't be disabled)
- Stick to refresh rate when "MatchRefreshRate" is toggled on
* Max 360 FPS for slider on all renderers
* "Match Refresh Rate" unification
Checkbox for all renderer. Was a button for DirectX.
* Fix wrong CVAR for Match Refresh Rate
* More descriptive V-Sync tooltip
* Fix wrong CVar for DISABLE_FOR_DEBUG_MODE_OFF
* Move close menu button to right side, farthest right, and move Quit SoH to the left of the Reset button.
Also remove last reference to 2ship in tooltips.
* Change Resolution Editor's use of CVarGet to `GetInterpolationFPS()` in OTRGlobals.
* Multiple Rando Text related stuff
- Mostly french rework / completion of missing lines
- Removal of a duplicate entry for Richard's house overworld key
- Correct naming for the English pond
- Addition of missing text in English and french
* Txeak uncessary spaces
* Add menu files, hook menu up to window system.
Temporarily rename new menu's UIWidgets to UIWidgets2 to allow both menu systems to coexist temporarily.
* Finish implementing new menu.
Rename 2ship UIWidgets to UIWidgets2 to complete facilitation of both menus working for now.
* More preliminary setup
* More prepwork, begin on settings options
* Finish settings, add enhancements windows
* Fix search function not looking past first columns.
* Add dev tool windows
* Finish dev tools
* Add about window
* Fully replace about window
* Remove moved menu items from menubar, add more windows to new menu
* Implement WindowButtonOptions.
Add ability to not embed popout windows when not popped out.
Add ability to hide the button for WindowButtons.
Fix Entrance Tracker from showing when not enabled.
* Fix entrance tracker settings embedded display.
Fix entrance tracker settings window original size declaration.
* Initial implementation of themed radio button widget.
* Move "About" section to second column of general.
Fix sidebar sections starting in second column.
* Restore Entrance Tracker `Draw()` to allow for custom styling.
* Fix combobox positioning formatting.
Fix color picker end spacing.
Convert everything in check tracker settings to UIWidgets2 (except color pickers and section headers).
Make all tracker windows not embed.
* Minor cleanup
* Fix main volume defaults & mirror jitter fix removal on dev
* Improve color picker with RGB/RGBA options. Not finished.
* Finish creating CVarColorPicker and implement for Check Tracker background color.
Fix tracker and network prefixes.
* Finish check tracker settings and convert check tracker.
* Port all Cheats menu except for Beta Quest
* Port over Beta Quest to new menu
* Remove old cheats menu
* Port cutscene skips to modern menu
* Port Timesaver Enhancements to new menu
* Port the Items and Item Count Messages submenu
* Port Difficulty Options to new Menu
* Removes options that have been ported thus far.
* Port "Reduced Clutter" options to new menu
* Add forgotten callbacks to Hyper Enemies/Bosses
* Copy StateButton to UIWidgets2, and implement custom padding for them in the tracker.
* Ports some pause menu related settinga
* Change tracker window active title color.
Make state buttons smaller in tracker to get more info on screen.
* Convert window title active theming to all windows.
* Port the rest of Enhancements->Gameplay to new menu
* Port the "Graphics" Enhancements to new menu
* Ports Fixes over to the Modern Menu
* Ported Restorations to Modern Menu
* Ported Extra Modes to new menu
* Port Autosave and Boot Sequence to modern menu
* Cleans up some leftover data for ported buttons
* Ports Enhancement Presets to new menu
* Port Additional timers to new menu. Removes Enhancements from old menu
* Cleans up some unused stuff
* Ports Randomizer Enhancements to modern menu
* Convert Item Tracker Settings. Something's wrong with the comboboxes in a second column of a table.
* Fix combobox alignment and label position calculations.
* Convert Entrance Tracker window.
* Save Editor Info tab finished.
Added `PushStyleInput` and `PushStyleTabs` for Info tab.
Fixed some indentation in entrance tracker source.
Added font push to tracker windows.
* Increase size of all icons in save editor.
* Convert flag groups to child windows for automatic sizing and border drawing.
* Flags tab completed.
Finished inventory tab.
* Convert save editor help hover to UIWidgets2.
* Various fixes and corrections
* Start cosmetics editor, fix theme colors not updating
* Cosmetics editor conversion progress
* Remove Mac internal resolution restrictions.
* Copy over advanced resolution partial and enable most options as a custom widget.
* Add size to float sliders, more cosmetics editor progress
* Fix incorrect cvar for notifications
* Radio button & header color options, more cosmetics editor progress
* Finish cosmetics editor conversion
* Create and apply THEME_COLOR macro. Resides in SohGui for easy access to mSohMenu.
* Move ResolutionEditor to SohGui directory.
* Add labels to build info.
Fix slider width calculations.
* Fix some advanced resolution widget hiding.
* Fully implement Advanced Resolution options.
Fix graphics settings formatting.
Improve slider label position calculations.
Implement Clamp options on sliders.
* Finish save editor.
Convert save editor code to `using namespace UIWidgets2`.
Fix search crashing on time splits window.
Remove `SetLastItemHoverText` from `UIWidgets2`.
* Unify cvar sectioning in time splits.
* Add InputString and InputInt widgets, and corresponding CVar Widgets
* Adds Widget Type for Inputs, not currently used.
* Convert Sail to modern menu
* Add Combobox that takes a vector of std::strings
* Convert checkbox and combobx to new widgets
* Add Tristate checkbox
* Convert sliders and tristate checkboxes
* Convert top half of Rando window
* remove/replace remainder of UIWidgets usage in option.cpp
* Converts tricks, locations, and removes old UIWidgets refs
* Fix windows build errors
* Remove Tri-State checkboxes
* Use PushStyleInput instead of PushStyleSlider
lol oops didn't realize it was a thing in Ship.
* Rebase and address review comments
* Convert Crowd Control to modern menu.
* Fix build error
* Audio editor progress
* Re-add CVar SaveOnNextFrame calls to Resolution Editor.
Remove old Resolution Editor files.
* Convert TimeSplits to new menu.
Fix a few enum warnings.
* Decrease padding on Arrow Buttons
* Audio editor + gameplay stats done
* Give Randomizer Menu more screen real-estate
* Port plandomizer menu
* Fix slider width calculation and allow combobox LabelPosition::None
* Fix None labelPos and slider width for inline labels
* Fix all slider value label insertions.
Convert Collision Viewer.
* Minor Collision Viewer enum change.
Convert Actor Viewer.
* Theme/convert Message Viewer.
* Add font to Message Viewer.
Theme Value Viewer.
* DL Viewer and SohModals themed.
* Convert Input Viewer.
* Missed some color settings in Input Viewer.
Removed UIWidgets references from Controller Config, and restored SoH version.
* Remove UIWidgets.hpp include from multiple files.
* Completely remove old UIWidgets.
Rename UIWidgets2 to UIWidgets.
Move Accessibility and Language options to new menu.
* Fix Gfx Debugger not showing up.
Remove menubar registration.
* Fix clearCvars references.
* Fix passing std::string to const char* argument.
* enum name spacing
---------
Co-authored-by: aMannus <mannusmenting@gmail.com>
Co-authored-by: Christopher Leggett <chris@leggett.dev>
* Fix more location pool exclusion misses
* Add assert to ensure item pool isn't too large.
This will catch any issues where too many items are getting
added to the pool in Debug mode. It only checks to make sure the item
pool is smaller than the location pool, as the code actually handles
that just fine by placing Junk if the pool runs out. The Item Pool being
larger than the location pool though could easily result in items not
being placed. Logic should prevent a seed like that actually being
generated, but No Logic does no such checks.
* Add TODO comment for Item Pool, should be same size as Location Pool.
* Prevent Completed Triforce from ending up in Location List
* Fix Gerudo Valley entrance logic
Logic assumed cucco could be used as child to get around lacking bronze scale,
but this assumption fails if you enter grotto ledge from grotto or initial spawn
* fix lower/upper mixup
* fix: you can walk to lake hylia
* adult can jump across
* presets: clear blocks
this avoids needing to list every new cvar in presets.h
* avoid resetting selected preset
* no cvar lists, clear less blocks on drop
* logic: allow finding big poe in bottle for reward logic
only applies when big poe count is set to 1
* Allow multiple big poe bottles for when big poe requirement > 1
Assertion failed in CreateChildAltarHints because all 3 stones were placed on fairies/beehives while those were disabled
Fix: consolidate on Context building settings dependant location lists. Overworld vs Dungeon should not operate so differently
* Use VB hook to fix Deku Nut upgrade bug
* Use constexpr, remove unused extern
* Separate IS_RANDO out of value macro
* Restore mask check in hook
* Call VB hook in SkipMiscInteractions hook
* Mask of Truth hook not registered in rando
* Autosave interval based
* Move to save on soft reset, remove adjustable interval
* Use new BeforeExitGame hook to prevent non-existent data problems
* Fix check tracker crash, remove BeforeExitGame hook
* update comment
* Cleanup of unshuffled locations from pool/spoiler
* Removes unshuffled scrubs from the location pool
* Fix some instances of weird spacing
* Actually remove placement of vanilla freestandings
* Cleans up some now unnecessary code.
* Minor Optimization of PlaceItemsForType
* Fixes some grammer and spelling
* Another grammar fix
* Initial Commit
* Added full functionality for both Hylian and Mirror
* Included Format
* Removed Format
* Pedestal Cutscene
* Much Less OnGameUpdating
* Fix function call
* use enums
* move animation skip to vb should
* move taking out master sword to put in pedestal check into vb should
* move the rest of it over
* extra newline was bugging me
* update on `"IS_RANDO"` and use `COND`s
* make new "uncategorized" section for VB enum
* move shoulds to new file
* move vb rsk checks into conds
---------
Co-authored-by: Patrick12115 <Patrick12115@hotmail.com>
Co-authored-by: Malkierian <malkierian@gmail.com>
in https://github.com/HarbourMasters/Shipwright/pull/3280 both `0x00400000` and `0x04000000` were replaced with `PLAYER_STATE1_SHIELDING`.
`0x00400000` is `PLAYER_STATE1_SHIELDING`, but `0x04000000` is `PLAYER_STATE1_DAMAGED`
this fixes the spots in `z_en_torch2` where we had `PLAYER_STATE1_SHIELDING` where it should have been `PLAYER_STATE1_DAMAGED`
* Move fairy checks to separate file
* Moves pot locations to ShipInit function
* Move Freestanding locations to a ShipInit function
* Remove some extra newlines that were pasted in
* Move fish locations to ShipInit function
* Remove ON_BOOT, as it's not really necessary
* Fix weird spacing
* don't put away items when equipping tunics/boots
* vb
* don't need that return
* ok i guess i'm going down the rabbit hole
* more rabbit hole
* shipinit and more hooks
* clean up
* use fewer params, add a missing condition
* make the loops make sense
* rando: vanilla dungeon rewards
* gift from rauru is dungeon location, not pocket
* missing apostrophe in preset description
* neither pocket nor gift should be listed in dungeonRewardLocations
* Add "Blue Warp" to the boss sides of the blue warp pairs to differentiate from the bosses on the other sides of boss doors.
Fix some names that weren't the same in both pairs of entrances.
Renamed a few other entrances for clarification.
* Add function to check entrance name consistency.
Fix remaining non-matching names.
* Document CheckEntranceNames.
Remove declaration of it from the header.
* skip z_title with button press
* use `RegisterShipInitFunc`
* rip out a bunch of custom ztitle code
* ok now it's almost fully back to vanilla
* titles are back for a limited time
enjoy #Skipping
* move old customizations into new custom draw
* finally getting the hang of this shipinit thing
* vb should let it snow
* boot sequence logic
* clean up logic to better handle changing boot sequence settings
* remove fast file select stuff
* remove authentic logo screen setting
* about window - not super pretty but not ugly imo
* maybe this fixes windows
* maybe alloca? idk why it's working in other files
* just pulling in every include hoping something works
* Revert
This reverts commit c1d02c9a40.
* try some macro fixing magic
* fix another c vs cpp thing
* do it without an extra var
* make `GitCommitHashTruncated` a private member on `AboutWindow` instead of truncating on draw
* move logo asset defs to `soh_assets.h`
* Apply suggestions from code review
Co-authored-by: Archez <Archez@users.noreply.github.com>
* VB_SHOULDN'T
---------
Co-authored-by: Archez <Archez@users.noreply.github.com>
* start moving towards just using `ShipDeviceIndex::SDLGamepad`
* rename `ShipDeviceIndex` to `ShipDeviceType`
* all sdl mappings are always `ShipDeviceType::SDLGamepad`
* create new `physicaldevice` directory where the new stuff can live
* `ConnectedPhysicalDeviceManager`
* start to not need index mapping manager
* somes fixes and stuff
* remove more shipdeviceindex stuff
* more removing and what not
* axis thresholds
* rename some stuff and remove device icons
* back to all stuff visible
* show connected device names
* bring in mouse color from lus input editor window
* lus
* remove
* more stuff
* more lus
* basic filtering
* update lus
* upstream LUS
* make `Controller_ShouldRumble` make sense
It initialized an array with a size, which pre-filled
it all with nullptrs, and then used push_back on top of that.
So it was a bunch of nullptrs followed by the actual
option pointers. Fixed by calling reserve instead of
constructing with a size, so it reserves the memory it needs
without actually filling the vector with nullptrs, so push_back
properly starts from the beginning.
* Make spoiler entrancesMap use the same names and display scheme as the entrance tracker.
* Use `Entry` in place of grotto `Exit` and interior `Outside`.
* initial implementation of new models
* fix typo
* Add smaller skeleton key model and try to fix windows build
* stupid windows, you made me look bad!
* make DrawBombchuBag function work
* small cleanups
* OOGGA BOOGA BOO
* fix post merge leftovers
* post merge fix
* Added Big Key Lighting override to show vanilla lighting when unchanged
* rename CustomdLists into customIconDLs
* post merge fixes
* fix some tooltip issues
* post merge cleanup and some small menu changes
* post merge fix
* post merge fix
* add new boss soul model, colours broken
* update boss soul model for env support
* Add dungeon customise buttons to cosmetic editor
* fix mac build?
* keys don't support alpha
* fix submodules
* ring now draws
* fix keyring colours
* Add bombchu Bag RG, fix boss soul skull colour
* address reviews
* Basic restructure
* Undo most randomizerInf changes for now
* Small fixes
* Fix linux & mac builds?
* Fix remnants of randomizerInf changes
* Post-merge fix
* Post-merge fix
* Move/Rename locacc files
* Format locacc files
* Split hyrule field file into HF, LH & LLR files
* Split castle town file into MK, TOT & HC/OGC files
* Split kakariko file into KAK & GY files
* Split death mountain file into DMT, GC & DMC
* Split lost woods file into KF, LW & SFM files
* Split gerudo valley file into GV, GF, HW & COLO files
* Move most files into the overworld/dungeons folder
Gerudo fortress needs to be split into gerudo fortress & thieves hideout, the former into overworld and the latter into dungeons
* Remove the optional second condition function
We won't need it as we're doing glitches differently from 3ds rando
* Post-merge fixes
* Split zora's domain file into ZR, ZD & ZF files
* Post-merge fixes
* Forgot to save the file
* Remove the optional second condition function from entrances & events
* Update bottom_of_the_well.cpp
* Add clarifying comment in `gerudo_fortress.cpp`
* Post-merge fixes
* Post-merge fixes
* Remove `s` from `RegionTable_Init_GerudoTrainingGrounds`
* Post-merge fixes
* * fixes softlock when talking to Mido without Kokiri Emerald after killing Gohma
* * moved scene check to hook
* moved vanilla conditioon into GameInteractor_Should
* * corrected hook condition
* removed 'this'
* * reverted GameInteractor and hook_handlers
* changed actor to use existing hook
* * updated kokiri emerald conditions
* * missed parentheses
* Most of french rando message
* Should be all
* Plural
* Better wording
* forgot one
* Update soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_exclude_dungeon.cpp
Co-authored-by: Philip Dubé <serprex@users.noreply.github.com>
* Update soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_exclude_dungeon.cpp
Co-authored-by: Philip Dubé <serprex@users.noreply.github.com>
* Missing ones
---------
Co-authored-by: Philip Dubé <serprex@users.noreply.github.com>
* Fix logic thinking naked adult can clear wolfos grotto
Use CanKillEnemy more
* GERUDO_WARRIOR. Can defeat with a lot more than swords
* one more flare dancer
* Put defeating Gerudo Warrior with slingshot/bombchu behind trick
* remove taking settings from a loaded spoiler instead of the imGUI settings
* actually fix most SpoilerLoad issues
* fix vanilla saves making future generations have so settings
* remove extra comment
* Initial mockup
* Rip out part of plando mode, implement rando settings menu
* MVP new randomizer flow
* Translation support and code cleanup
* Fixes and more cleanup
* Fix whoopsie
* Fix whoopsie 2
* Define VB for fairy group spawning
* Add skeleton of new files for fairy shuffle
* Add option to enable/disable fairy shuffle
* Add field to fairy entities to hold randomizer data
* Expose the current grotto id, or find it if not shuffled
This is necessary since, unlike chest or scrub grottos,
fairy fountains, lacking any elements that would normally
differ between grottos, often have identical respawn data.
This change enables fairy shuffle to correctly identify
which fairy fountain was entered so it could load the right
checks.
* Initialise fairy groups if detected
* Randomize first set of fairies
* Make randomized fairies collectible
* VBify fairy healing customization
* Add remaining grotto fairies
* Add remaining fairy group spawns
* Override bean sprouts spawning fairies
* Define bean sprout fairy checks
* Add HasItem and CanUse entries for magic beans.
* Define logic for bean sprout fairies
* Enabling looking up fairies by z coordinate
* Add Temple of Time Gossip Stones
Logic might look a little weird. While the Gossip Stones
respond to Sun's Song, the scene transition takes priority,
so the fairies aren't actually obtainable. Adult does not have
day and night versions and is fully capable of acquiring the
fairies with Sun's Song.
Song of Time is similar, but rather than being dependant on
age, it's dependant on the timesaver to switch ages anywhere
with Song of Time. In this case, the fairies still spawn,
but the age transition deletes them before giving the chance
to collect them. While I could've chosen to ignore this and
simply require the player to disable the enhancement before
playing if it's their only option, I instead decided to
accomodate the enhancement and require one of the other songs
in order for the check to be in logic.
* Disable quick age change around gossip stones to simplify logic
* Add remaining gossip stone fairies
* Finish gossip stone fairies
* Add Desert Colossus Oasis
* Restrict fairy type
Somehow, it was previously possible for Navi to get detected
as a randomized fairy and rendered as an item. I was not
able to reproduce the behavior, but this should prevent it
from happening again.
* Add overworld special fairy spots
* Add mini-dungeon fairy song spots
* Add remaining dungeons except Shadow
* Add Shadow Temple fairies
* Add fairy check flags to the save editor
* Filter fairy checks from check tracker
* Add hints for fairy checks
* get fairysanity as far as I can for now
* fix a few obvious issues
* now builds
* try to convert FairyOnVanillaBehaviorHandler to vardic args
* convert RegisterFairyCustomization to REGISTER_VB_SHOULD
* fix some generation issues
* remove the list of fairy locations
* fix up logic
* more logic changes for gossip stones
* try silly thing for windows
* more stupid
* more dumb testing
* more testing
* small fixes
* implement inside fence storms fairy
* add inside fence storms fairy to logic
* remove duplicate hints (stupid conflicts)
* oops
* Rewrite game interfacing code of fairy shuffle
* Better function names
---------
Co-authored-by: Angel Bulfone <mbulfone@gmail.com>
Co-authored-by: aMannus <mannusmenting@gmail.com>
* Quick cleanup
* Re-add experimental tag
* Cleanup and small explanations
* Implement RT_DAMAGE_BOOST_SIMPLE & RT_HOVER_BOOST_SIMPLE
* Update tricks.cpp
* Move glitch status to a tag
* Fully remove the unused LENS & BKSKIP tags
* Enable some disabled tricks
* Add RT_ZF_GREAT_FAIRY_WITHOUT_EXPLOSIVES
* fix potsanity looking at deku tree MQness when dealing with pots between dungeons
also don't need a loop for a range check
* share logic between placing freestanding & pots
* fix settings typo
* fix all freestanding items still being shuffled
this reinstates original freestanding method of filling in unused locations,
but also extend logic so that when only dungeons have freestanding shuffled
we don't render overworld freestanding as 3d versions until collected
* lift optimization check
* Fixes for the German translation in hint_list.cpp
* Additions for two translations in hint_list.cpp
* Fixes for two translations in hint_list.cpp
* Fixes for two translations in hint_list.cpp
* Enable freestanding items other than heart pieces and keys
* Add option to disable freestanding rupee & heart shuffle
* Add items to pool
* Actually add shuffle setting
* Define overworld locations
* Add logic for overworld freestanding checks
* Add freestanding items for child dungeons.
* Add checks for Ice Cavern and Bottom of the Well
* Add checks for Forest Temple and Gerudo Training Grounds
* Add checks for Fire Temple and Water Temple
* Add Shadow Temple checks
This does not include the spinning pots rupees, even though
they're included with freestanding rupees in the N64 randomizer
as they would require dedicated overrides for the code for
the pots in question.
* Define Spirit Temple and Ganon's Castle hearts
* Add remaining checks to dungeon definitions
* Fix missing logic
* Add freestanding checks to Save Flags Editor
* Fix flags for Zora Fountain underwater rupees
* Add option to enable freestanding shuffle for either dungeons or overworld
* Add missing MQ checks and fix mac & windows compile error
* Improve description and add hint text
* Update logic for Bombchu fixes
* Add missing Spirit Temple MQ hearts
* Add missing settings entries
* Actually add Forest Temple trick to the tricks menu.
* Re-add Ice Cavern lobby rupee
* go over MQ logic
* review logic on non-MQ checks
* convert all freestandings to location based
* add option enum and fix jabu exit logic
* fix mislocated freestandings
* fix mislocted freestandings
* Fix some mislocationed checks
---------
Co-authored-by: Angel Bulfone <mbulfone@gmail.com>
* Make new `SpoilAreaFromCheck` function to spoil areas when getting maps or a first check in a dungeon that isn't spoiled by entrance.
* Add scummed check dungeon spoiling on load.
* Fix quest menu cursor "moving" in the background in the save game prompt.
Fix misc item tracker also being able to select R and L/Z in save prompt.
Include MigrationAction entry removal from item count fix PR.
* Fix formatting.
* Change copy assets procedure to use "if different" variants of the copy commands.
Bump minimum cmake to 3.26 to accommodate those variants.
* Change MSVC_CMD asset copy command to VS_COPY_ASSETS_CMD, change setting it to only be on Visual Studio build chain.
* Potsanity proof of concept
* Hide pot item cutscenes for very frequent items
* Add 1 new pot to the item pool
* V1 custom pot model
* V2 pot model
* Pushing for help. lol
* Format clean up on added hint_list entries.
Removal of WriteIngameSpoilerLog call that was unneeded.
* THREE_ACTOR_PARAMS -> TWO_ACTOR_PARAMS and hints in a loop
* Lost woods pots logic
* Realign Pot Checklist in Location_list.cpp
* Correcting some values and adding Master Quest pots.
* Remove vanilla placements
* Re-order enums + start hints per region
* Fix build
* Break up shuffle pot options to dungeon/overworld/all
* Fixes
* Prepare default pot contents, fix/add dungeons
* Fix dungeon/overworld only settings
* Updates to Parameters and RHT information
* Remove unused hints
* Add proper check tracker entry exclusion
* Tweak items to skip cutscenes for
* Vanilla Drop List
* Update magic to blue rupees
* After merge fixes
* Fix Ganondorf's Lair pots
* Fix check tracker + minor stuff
* Unlock early GBK door
* Minor fixes
* More minor stuff and start of logic entries
* Fix TWO_ACTOR_PARAMS overlap between pots
* De-dupe defines
* Add missing water trial pot
* Update to develop-rando
* VBify pots progress
* Cleanup and fixes
* Overworld logic done
* Cleanup and fix item00 queues
* Implement skipping cutscenes for common items
* Revert "Implement skipping cutscenes for common items"
This reverts commit fe44916588.
* Ganons tower pot not spawning item fix + cleanup
* Fix ganon's tower, barinade, water temple pots
* VBify ganons key door
* Lizalfos Pot addition (example)
* Separate MQ pots in randomizerTypes.h
* Fix build
* Fix linux build (?)
* DC/Jabu/Botw/ start of Forest Pots (NMQ)
* Remaining Dungeon Non MQ Pot Location Logic
* After merge fixes round 1
* Post merge fixes round 2
* Apply MQ pot logic
* Re-align some stuff
* Cleanup, more work on locationlist
* Start of handling dungeon pots in item pool
* Finish dungeon pots in item pool
* GTG MQ Pots
* Review comments round 1 & code cleanup
* Fix ganon's lair pots being behind GBK in logic
* Update soh/include/z64actor.h
Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>
* Update soh/src/overlays/actors/ovl_Obj_Tsubo/z_obj_tsubo.c
Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>
* Address review comment
* Fix logic for pots in Fire Temple
* Fix GtG MQ pots, fix water temple pot logic
* Review Comments
* Logic review part 1
* Logic comments part 2
---------
Co-authored-by: Caladius <Caladius@users.noreply.github.com>
Co-authored-by: Pepper0ni <93387759+Pepper0ni@users.noreply.github.com>
Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>
* Fixes for the English text in option_descriptions.cpp
* Fixes for the English text in static_data.cpp
* Fixes for the English text in option_descriptions.cpp
* Fixes for the English text in option_descriptions.cpp
* Fixes for the English text in settings.cpp
* Fixes for the German translation in hint_list.cpp
* Zora's River waterfall always open, take two
* Remove improper, redundant checks in hook
* Move all checks into update hook
* Add Randomizer setting for keeping Sleeping Waterfall open
* Change header exports to extern exports
* Remove "closed as child" option for rando setting
* Oops, missed a spot
* A bit more cleanup: simplify a redundant condition
* Unify hook handlers
* Oopsie, fix build error
* Add "play only once" option
* Force Sleeping Waterfall enhancement in rando mode
* Force enhancement only if waterfall is Open in rando
* Restore forced-open waterfall in rando
* Fix rando condition in hook
* Fix? rando entrance logic for OI
* Fix build errors
* Separate option values into context and menu indexes.
* Fix option index reference in `CleanCheckConditionString`.
* Update soh/soh/Enhancements/randomizer/3drando/location_access.cpp
Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>
* Restore `const` classification to functions returning `string&`.
* Restore `const` classification to getter functions.
* Restore a couple more `const`s; cleanup header.
* Final consts; rename `SetCVar` to `SaveCVar`.
* Convert defaultColor from ImVec4 to Color_RGBA8.
Convert defaultColor's ints to floats when being applied to currentColor in the macro.
* Address previous cleanup comments.
Surround `Message` tab in an advanced check.
* Resolve warnings and cleanup whitespace/formatting.
* Make Color_RGBA8 constructing function because... platform differences...
* Function name clarification.
* Remove default color conversion, reference default colors directly in CosmeticOption initialization.
* Add check for Randomizer folder existing, and creating it if not, to plando window.
* Changed seed list population to just bail if the Randomizer folder doesn't exist.
Added button disabling to prevent crashes loading or saving empty structures.
* Remove unused headers
* Move all "ResourceMgr_" functions to a new file
* Don't transitively include SaveManager
* Move cvar prefixes to a new header
* Add missing includes
* Update OTRGlobals.cpp
* Fix build
* Address review
* Fix some of the errors
* Update gameplaystats.h
* Update z_en_in.c
* Hopefully fix the linux issues
* Fix Linux issues for real this time, I checked
* Update ResourceManagerHelpers.cpp
* Update z_obj_mure2.c
* Post-merge fixes
* Fix build (hopefully)
* Post-merge fixes
* Update z_file_nameset_PAL.c
* cleanup some unnecessary headers (#7)
---------
Co-authored-by: Archez <Archez@users.noreply.github.com>
* Fix skipping Adult Ruto one-point cutscene
* Kill Ruto's actor instead of leaving her to swim up
* Change to Story cutscene
* Change to extern function
* Rename entrance enums for clearer location by name.
Change entrance name strings to be clearer for single-entrance tracking.
* Rename grotto macros to remove "RANDO", and move them to `randomizerTypes.h` for use elsewhere.
* Add entrance enums to rando's entrance.cpp.
Rename a couple RandomizerRegions for consistency.
* Swap entrance ids to enum values in rando's entrance.cpp.
Few more renames for clarity and consistency.
* Adapt entrance tracker to utilize new names and only display original source and substituted destination.
Few more renames for consistency.
* Missed a space in the tracker output.
* Restore pre-digit names of some enums, name great fairies more consistently.
* Disable all warnings, even in release, on the `src` directory.
Resolve math macro duplication warnings.
* Suppress LUS warnings.
* Modify it to utilize a variable that defaults on but can be specified in command line to disable it.
Prevet total compile option overwrite for LUS.
* Remove unnecessary unset and cache parameters.
* Document warnings flag in BUILDING.md
* Change CMake process to copy assets necessary for OTR creation to VS run directory.
Remove reference to ExtractAssets target from Windows build instructions.
* Unify build instructions where appropriate across PC platforms.
Clarify commented parts of some commands.
* PR feedback.
* Adds 2 new Hooks, OnTimeStamp and OnPlayerHealthChange.
* Re-add Timesplit code
* Committing custom Assets
* Commit Asset definitions
* Adding Windows
* Fix Modal Window and others
* Time Splits v2 new Hooks etc.
* Fixing Time Displays
* Adding Big Poe split
* Update Options Tab
* List Preview and Removing Split Entries
* Allow Split Table to resize
* Fix Window Color and Adding Non Items to Split List
* Correct Song Image Skew
* Add freeze timer hook for Gold Skulltula collection
* Remove unused player references
* Replace magic number text IDs
* Separate hook for freezing player on token collection
* Revert one unintended change
* VBify poe collector giving for rando.
* Forgot an include.
* Further refinement so all the action happens in the handler. Virtual full restoration of vanilla code flow.
* Restored 1000 point messages before rando item give.
* Cleanup redundant GI Should call.
* Fixes Mirror Shield and MS sheath
* Added Hookshot Tip&Chain and more edge cases
* Update presets.h
* Revert "Update presets.h"
This reverts commit 95d952ba23.
* More fixes
Bow showing up for slingshot gallery minigame is now fixed, as well as a rouge instance shrinking links hand when I didn't mean for it to
* CVar stuffs
* Fixes
* Fix more sheath stuff and bgs hand
* Add the P
* Add logic to turn off lens effect when replacing it on a button with another item, but not swapping.
* Swap to real fix for dpad equips bug, c/o Rozelette.
* Add names to start of typedefs
* Idle stuff
* 2 functions
* Player state flags
* Name functions + misc
* ActionChange => ActionHandler
* Some player unks
* More player unks
* Header misc
* Misc
* More misc
* Player Actions
* Missed comments
* Move ship specific stuff
* Fix build
* CsCmdActorAction to CsCmdActorCue
* Fix build
* Config migrator to handle CVar macros/sections, as well as a few other changes since MacReady.
* One more round of cleanup.
* Move config migrators above SetupGuiElements to allow for migrated window variables to register before windows use them to determine visibility.
* One more.
* Adapt DpadEquips, NavOnL, and PauseAnyCursor CVars to accommodate Pablo moving them to enhancements.
* Segregate count-injected item get messages by type
* Move item count messages submenu up next to Items submenu
* Rectify presets
* Oops - deleted a comma by mistake
* More Mweep
Adjusted the "King Zora Speed" timesaver enhancement to allow for slowing the animation down.
* [Fixed] Crashing when applying preset settings
Adjusted presets.h to expect a float instead of an integer for the "MweepSpeed" timesaver enhancement setting.
* Cleaning some things up
Deleted an unnecessary line, and switched the "King Zora Speed" option back to multiplier display instead of a percentage.
* Update SohMenuBar.cpp
Switched back to multiplier display
---------
Co-authored-by: Malkierian <malkierian@gmail.com>
* Correct behaviour of text speed enhancement
The text speed enhancement increases the size of the text crawl in the number of characters displayed in each step. This messes up certain parts of dialogue that were meant to be displayed in a certain way (like Ganondorf's "Heh heh heh..."), and in places where the text crawl is meant to be slower than normal, it just looks clunky. The text crawl speed enhancement is a wonderful feature, but smoothing out should be easily doable, and is a more correct implementation.
* Fix text speed for normal text
* Flatten if statements
* Improve check tracker performance.
* Fix vanilla saves getting randomizer quest assignment.
Fix trying to load blank data blocks from save file.
Prevent writing randomizer block, even if empty, when save type isn't rando.
* bring over framebuffer effects methods
* Implement framebuffer capture and drawing for pause menu
* revert hookshot and title cards to draw using original buffers
* remove old game over crash fix
* Adjust mirror mode handling for kaleido
* Avoid flashing the hud when pausing
* Added Project Overview to README
This is a couple additional lines of text clarifying the high-level structure of the project, mostly for the benefit of anyone new joining the project.
* Added "Further Reading" section
Points out and lists the contents of the "docs" directory for ease of access to the documentation therein.
* Allow for User Selected Enemies for Enemizer
* Updated CVar Entry List
* ImGui Cvar Updates
* GetSelectedEnemies Cvar Update
* Populate List if empty and if menu selection changes for Enemy Randomizer/Enemy List
* for loop for Menu Bar cvars, added enemyNameList table to get actor names
* Update variable for macOS/Linux
* Alphabetical Order you say?
* Add support for multiple areas in regions and locations and remove impa's house shuffle limits
* Spelling corrections
---------
Co-authored-by: Malkierian <malkierian@gmail.com>
Co-authored-by: Malkierian <malkierian@live.com>
* preparatory clean ups
* structure done, but failes to generate
* fix the bugs, but triple seed gen time on the benchmark
* fix massive generation time increases
* Remove sphereing when not needed as an optimisation
* post merge fixes
* reset the current sphere when toggling an event to cover another cause of jank
* address reviews
* Convert ocarina buttons & skip scarecrow song to VB
* Move most of boss rush & rupee/key counters to VB
* Move BossRush_HandleCompleteBoss to VB
* Convert boss timestamps to VB
* Move being able to open doors to VB
* Convert Entrance_OverrideWeatherState to VB
* Move boss souls to hook_handlers.cpp
* Update hook_handlers.cpp
* Move infinite upgrades to hook_handlers.cpp
* Move skeleton key to hook_handlers.cpp
* Move swim and child wallet to hook_handlers.cpp
* Move ganons boss key to hook_handlers.cpp
* Move triforce hunt to hook_handlers.cpp
* Move randomizer sheik spawn to hook_handlers.cpp
* Update BossRush.h
* Convert spoiling items to VB
* Move load game stuff to hook_handlers.cpp
* Move warp song handling to hook_handlers.cpp
* Convert being able to play bowling to VB
* Move shooting gallery man handling to hook_handlers.cpp
* Move spirit temple silver block removal to hook_handlers.cpp
* Fix build
* Move last beehive stuff to hook_handlers.cpp
* Fix build
* Add VB_CLOSE_PAUSE_MENU
* Add VB_BE_ABLE_TO_SAVE
* Add VB_RENDER_YES_ON_CONTINUE_PROMPT
* Add VB_SPAWN_BLUE_WARP
* Add VB_BLUE_WARP_ADULT_WARP_OUT
* Add VB_BG_BREAKWALL_BREAK
* Convert Saria stuff to VB
* Remove now unused check
* Add VB_GANON_HEAL_BEFORE_FIGHT
* Update hook_handlers.cpp
* Fix blue warp offsets
* Fixes from review
* Improve documentation
* Update BossRush.cpp
* Fix my stupidity
* Fix#4327
* Update hook_handlers.cpp
* Fix blue warps
* Use ultralib types & clean header
* Replace options amount macro with BR_OPTIONS_MAX
* Remove unused includes
* Remove accidental line doubling
* Tweaks to boss rush (#6)
* Update GameInteractor_HookTable.h
---------
Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
* Adds in-game display of certain rando collectibles.
Before, these were only available through the Item Tracker ImGui Window. With this commit, they can be accessed via holding C-Up on the Map Screen. Currently I've added Greg and Triforce Pieces (when applicable) to this menu. Boss Souls, Ocarina Buttons, and eventually Silver Rupees will be added later.
* Adds ocarina buttons to in-game display
* Initial pass on rendering the text on a black background.
* Starting to render boss soul icons
* Better alignment and rendering of Boss Soul icons.
* Adds icons prefixing the list entries.
* Switches boss souls to 32x32 icon.
* Partially working Matrix/Vtx implementation
Currently hardcoded Greg text, replacing map screen completely.
* Now rendering properly thanks to Archez!
* Better implementation of accessing the new page.
- now attached to Quest status instead of Map
- now triggered by a toggle instead of holding a button
- now has its own background (temporarily save screen but will be replaced with something custom later)
* Make KaleidoEntry's reactive to game state
Adds Greg proper and Triforce Hunt to the Misc. Collectibles Page.
* Conditionally render Triforce Hunt
* Documentation/Cleanup
* WIP Ocarina Buttons rendering
* Working ocarina buttons display
* Renders buttons as Gray instead of using Grayscale
This may seem inconsistent, but with Grayscale they technically render as different shades of gray, especially with custom cosmetics. With this they now render as the same shade of gray.
* Makes Ocarina Icon gray when no buttons have been collected.
* Adds Boss Souls.
Currently they run off the menu, need to implement scrolling.
* Implement Scrolling for the menu.
Need to figure out how to throttle the stick inputs still.
* Moves input handling to draw function.
I hate it but that's how Kaleido does it and there's some input throttling logic in there, so in order to make this feel like a kaleido menu I have to also handle input in the draw function.
* Removes custom cosmetic handling of Ocarina Buttons.
I've chosen not to respect the cosmetics for the sake of accessibility
and color contrast, but the code is still present and commented out in
case we want to reverse that decision.
* Hopefully fixes mac build errors.
* Implements update function via Hook.
* Another mac fix hopefully
* Cleans up unused code from the rectangle based attempt.
* Clean up more unused code
* Commit Boss Soul icon
* Fix typo
* Remove commented code
* Improve toggle functionality
* Re-introduce cosmetic matching for ocarina buttons
* Revert some unnecessary formatting changes
* Fix cursor/page turning issue
More improvements to come here (drawing arrows, custom text at the bottom, etc.)
* Fix some more formatting changes
* One last batch of formatting reverts
* actor breaking
* should be VB fishing
* attempt to VB fisherman
* commit fishing hell for review of VB viability, untested
* fix rando, vanilla still broken. close enough
* wait i forgot to remove that
* small fix
* Doodongs Cavern
* rewrite MQ DC Logic
* forgot some cleanup
* remove an unused region
* post-merge cleanups
* change CanUse for HasITem on gorons braclet
* git ate half the rewrite
* more small error fixes
---------
Co-authored-by: aMannus <mannusmenting@gmail.com>
* Fix crash in fishsanity's flag set handler.
Code format cleanup.
Fix typedef warnings in fishsanity.h.
* Actually fix the crash now.
* Relocate RCTYPE check for broader application.
* Format shops.cpp
* Add 5, 6 & 7 item shopsanity
* Guarantee a bombchu refill
* Fish first shop item index
* Clean up NonShopItems
* Split count options
* Improve item ordering
Ensure potions, blue fire and fairy on shopsanity 6 and less.
There are no hearts in the first 28 items (the ones from n64 rando).
* Post-merge fixes
the previous all loaches logic required modifying every `isLoach` check
throughout the file. this had the benefit of allowing live-toggling all fish
to be loaches or not, but added a lot of complexity.
this changes the logic to just set `isLoach` on each fish instead, and updates the tooltip to note an area reload is required
* Move Fishsanity hooks out of mods.cpp
* Assign fish check flags.
* Clean up location_list for fish
* Prevent fishing from giving double items.
* Remove no-longer-used mPendingFish
* Override draw function for fishing
This allows the draw functions in the source
overlay to match the decomp.
* Override draw function for EnFish
* Overwrite grotto fish params based on respawn data
This allows the randomizer to identify them
automatically without any special logic.
The catch (pun not intended) is that grotto fish don't respawn,
and they were previously identified for such by a params value of 1,
so the logic to take care of that needed to be duplicated.
Thankfully it wasn't very much.
* Add a VB for catching actors in bottles.
* Clean up remaining code after conversion to VB
This breaks fast FastDrops for bottle pickups, though
readding it shouldn't be too hard with the VB hook.
* Remove fishsanityParams from Fishing
It was previously used to track exactly which fish would be
released after a catch, but since both candidate fish
would've been caught, they both wouldn't give checks
anyways.
* Update soh/soh/Enhancements/randomizer/hook_handlers.cpp
Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>
* Re-add FastDrops for bottle pickups.
While this does diverge from the vanilla decomp, I'm uncertain of
the order that hooks are run, so I put it back into z_player.c
just to be safe. A future commit can do a more proper implementation
using VB hooks.
* Move initialisation of fishsanity hooks into hook_handlers
* Change location constructor to take RandomizerInf instead of uint8_t
This shouldn't have an effect as-is, but other changes can add
additional randomizer flags that can end up pushing fishsanity check
flags out of the range of a uint8_t, causing the cast to overflow
and not be stored correctly. With this change, it could still overflow
when writing to the flag field of Location, but said field is unused
and the parameter is really only for setting the flag for the
SpoilerCollectionCheck.
* Render uncaught overworld fish as randomized item
* Fix windows build by zeroing unused field
* Fix scene parameter type
This resolves a build error on Mac and Windows, but Linux
instead buries it in the sea of warnings, meaning I can't
see it until it fails CI.
---------
Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>
* Remove categories
* Remove SpoilerCollectionCheckGroup
* Remove unused Location constructors
* Remove LocationType
* Remove unused SpoilerCollectionCheckTypes
* Remove hints' isVanillaCompletion, it's always false
* Remove SpoilerCollectionCheck::None
Same effect as default constructor
* Fix mistake
* Update location.h
* Deduce RC Area by scene when possible
* Remove useless constructors
* Remove flag in most situations
* Format improvements
* Replace overworldLocations with a function
* Replace shopLocationLists with a function
* Replace gossipStoneLocations with a function
Also add a new RCType for static hints
* Replace scrubLocations with a function
* Replace staticHintLocations with a function
* Replace overworldFishLocations with a function
* Replace pondFishLocations with a function
* Remove RC_TRIFORCE_COMPLETED from GetOverworldLocations
* Update fill.cpp
Re-add filter for dungeonLocations for song shuffle dungeon rewards (and fix erroneous check for song locations there).
Modify songLocations filter for dungeon rewards to check for RCTYPE_BOSS_HEART_OR_OTHER_REWARD and then the two song locations added for it.
* Update fill.cpp
Fix bracketing.
* Apply Pepper0ni's patch
---------
Co-authored-by: Malkierian <malkierian@live.com>
* Change tristate off graphic to none instead of X to avoid confusion.
Modify Combobox and Slider Options to clamp directly to options.size() - 1 instead of just decrementing if current value is higher than max.
* Restore RenderCross line, but commented out.
100 GS Reward was missing from RSK_GANONS_BOSS_KEY causing indexing issues. Notably, Triforce Hunt was setting Ganon's Boss Key to "Vanilla" rather than "Triforce Hunt."
* Move all `SaveContext` operations to `Logic` to prepare for encapsulation.
* Rename `Area` to `Region`, `areaTable` to `regionTable`, and all local variables named variants of area to region that were of the `RandomizerRegion` or `Region` types.
* Fix mistaken renames.
* Rename PT_AREA_RESET to PT_REGION_RESET after rebasing on performance timer commit.
Change include path for the timer to absolute rather than relative.
* messy first implementation, pushing for verification
* push to test other platforms, add benchmark preset
* more other compiler fixes
* Finish implementing benchmarks
* forgot to reset the timers each run
* do it better
* move timers to thier own file
* forgot to add files
* Update check status in the check tracker to the new system. Status and Skipped are now stored in ItemLocation, though still saved separately in the trackerData section.
* Fix shop checks not showing prices when identified.
* Patch fix for check status bleed.
Some cleanup of unused code.
* Small tracker optimizations.
* Fix check hiding.
* Bit more cleanup.
* Unhide the filter and make it work again...
* Fix area totals tracking.
Fix skipped status saving.
* Merge conflict cleanup.
* saving for branch change
* V0 doesn't work
* crashing in random places halp
* push to rebase
* commit for branch change
* more branch switching
* First apparent working
* fix entrence validation
* comment cleanups
* post merge fixes
* Fix entrences not validating when spawns/owl drops are on but other entrences are not
* remove bombchusFound from the struct too
* Fix issue causing improper bombchu filtering on the playthrough
* text fixes
* submodules pls
* submodules pls pt 2
* Restore Deku Tree open as adult with dungeon shuffle.
* Add Mido spawn VB to allow for preventing Mido moving in rando when starting with Zelda's letter and closed deku or forest.
* Use RAND_GET_OPTION instead of OTRGlobals rando context, get rid of IS_RANDO in deku mouth VB handler.
* Removed all CVarLoad uses from code to prevent thread concurrency issues.
* Add mutext locks to save and load functions to prevent concurrent operations between those two.
* Converted all GuiWindows to the new separate Begin/End format in current LUS except InputViewer, CheckTracker, ItemTracker and Modals.
* Setup Check, Entrance, Item trackers and Input Viewer to override `Draw()` to bypass the ImGui Begin and End, as they're not intended to go in the modern menu.
* Cleanup.
* Add git info to title screen & gameplay stats
* Change the branch criteria to starting with `develop`
* Update z_title.c
* Change the branch criteria to not having a tag
* Always show both when not a release build
* Only show build version in tagged releases
* Additions for the German currencies in randomizer.cpp
* Additions for the German translation in hint_list_exclude_dungeon.cpp
* Fixes for the German translation in z_select.c
* Fixes for the German translation in z_select.c
* Additions for the German translation in hint_list_exclude_overworld.cpp
* Initial Bombchu rework implementation
* Finish bombchus in logic overhaul
* address reviews
* Post resolution fixes
* fix git being dumb
* Readd Child Wallet To Bombchu Bowling Logic
* post merge fixes
* fix some oversights in bombchu shopping logic
* doesn't work, linker errors
* cleanup old reviews
* Make it build, likely broken by VB
* attempt to fix carpet man second purchse text
* commit to change branch
* mostly have carpet guy working
* badly fix carpet salesman
* fix better bombchu shopping
* fix bombchu drops
* remember you need bombchus in inventory to get drops
* Address reviews
* post-SCL clean up and redo the bombchu ammo logic to apply better to the spirit edge case
* fix oversight which could have allowed for bombchus to logical exist when they shouldn't
* Remove special bombchu playthrough checks which are causing bugs and no longer needed
* fix Slingshot logic reset
* Convert helpers I touched into CanUse and HasItem
* last cleanups
* Additions for the German translation in hint_list_exclude_dungeon.cpp
* Fixes for the German translation in z_select.c
* Fixes for the German translation in z_select.c
* Additions for the German translation in hint_list_exclude_overworld.cpp
* Additions for the German translation in hint_list_exclude_dungeon.cpp
* Additions for the German translation in hint_list_exclude_overworld.cpp
* Fix tricks not getting disabled by button click.
* Fix area trees not collapsing on enabled side of tricks list.
* Fix difficulty tag button order for Linux.
* Fix Collapse All, Open All, and Disable All.
Prevent Disable All from disabling all despite areas being collapsed.
* Fixes for the German translation in randomizer.cpp
* Fixes for the German translation in hint_list.cpp
* Fixes for the German translation in item_list.cpp
* Fixes for the German translation in z_message_OTR.cpp
* Fixes for the German translation in randomizer.cpp
* Fixes for the German translation in randomizer.cpp
* Additions for the German translation in hint_list_item.cpp
* Fixes for the German translation in item_list.cpp
* Additions for the German translation in hint_list_item.cpp
* Additions for the German translation in hint_list_item.cpp
* Fixes for the German translation in item_list.cpp
* Additions for the German translation in hint_list_item.cpp
* Fixes for the German translation in item_list.cpp
* Fixes for the German translation in item_list.cpp
* Fixes for the German translation in item_list.cpp
* Fixes for the German translation in hint_list_item.cpp
* Fixes for the German translation in hint_list_item.cpp
* Fixes for the German translation in hint_list_item.cpp
* Fixes for the German translation in item_list.cpp
* Fixes for the German translation in item_list.cpp
* Fixes for the German translation in hint_list_item.cpp
* Fixes for the German translation in item_list.cpp
* Fixes for the German translation in randomizer.cpp
* Fixes for the German translation in item_list.cpp
* Fixes for the German translation in hint_list_item.cpp
* Fixes for the German translation in item_list.cpp
* Fixes for the German translation in z_message_OTR.cpp
* Fixes for the German translation in z_message_OTR.cpp
* Additions for the German translation in item_list.cpp
* Fixes for the German translation in item_list.cpp
* Fixes for the German translation in hint_list.cpp
* Fixes for the German translation in hint_list.cpp
* Fixes for the German translation in randomizer.cpp
* Fixes for the German translation in hint_list_item.cpp
* Fixes for the German translation in hint_list_item.cpp
* Fixes for the German translation in item_list.cpp
* Fixes for the German translation in item_list.cpp
* Fixes for the German translation in randomizer.cpp
* Fixes for the German translation in randomizer.cpp
* Fixes for the German translation in randomizer.cpp
* Fix an issue with a stray Rando::Context shared_ptr hanging around.
* Fixes accidental leftover from when I found this bug on another branch
* Properly reset randoContext on every save load, not just after save creation
* Port initial framework up to latest dev-rando. Includes about 15 items using the SCL structure for tracking.
* Most other item variables ported to SaveContext in UpdateHelpers.
* Removed individual Context retrievals in favor of single local variable in Logic to reference.
* start of some diagnostics.
caught some reverse logic with ApplyItemEffect.
* more diagnostics
* Resolve major logic issue with SetInventory flow in ApplyItemEffect.
Other small logic issues in ApplyItemEffect.
* Added a bit of logging.
Add Double Defense to item effects.
* revert hint gen bypass
* item_list *actually* divorced from logicVar pointers.
Several missed options for ApplyItemEffect, HasItem, and UpdateHelpers added in.
Changed HasItem to a switch block for more performance.
Seeds generate within 10-20 seconds in release mode. Further optimization is assumed possible.
* Some formatting
* Bit more formatting.
* Couple review changes.
* Incorporate progressive upgrades and skeleton key into SCL.
Bit of cleanup.
* Change `inLogic` to static array.
* Fix bug in `BottleCount()` preventing Jabu Jabu from ever being in logic.
* Fix bomb bag HasItem check.
* Fix Gerudo Fortress and Ganon's Castle SmallKeys checks.
* Change all logic use of `bool remove` to be `bool state` and work on the affirmative assumption.
* Forgot the `Set(x)` uses in `Logic::Reset()`.
* Fix fishing pole effect application.
* fishing pole tweak
* Add `RG_BOMB_BAG`, `RG_NUTS` and `RG_STICKS` to `HasItem()`.
Fix silver and gold gauntlet checks in `HasItem()`.
Change Nuts and Sticks helpers to use non-progressive RGs in `UpdateHelpers()`.
* Change mSaveContext to simple pointer.
Set `mSaveContext` to `&gSaveContext` when loading a save file.
Modify `Item::GetGIEntry()` to use rando context's SaveContext pointer instead of the gSaveContext macros.
Utilize `Item::GetGIEntry()` to get real RG of infinite upgrades and set rando infs accordingly, skipping upgrade level incrementing (which was causing overflow of wallets for some reason).
* Rename all remaining references of LogicVar to variants of LogicVal.
* Change final references to song LogicVars to CanUse calls, and remove them.
* Separate equip and rand inf flag maps.
Add Zelda's Letter and Weird Egg rand infs to map.
Consolidate `HasItem` rand inf lookups using rand inf map and equips using equip flag map.
Maps are static, so can be referenced with `Context::` instead of ctx pointer.
* Main implementation
* Fix sticks & nuts from shops & checks
* Change the models to normal stick & nut
Worth noting that before you have the bags, the refills are blue rupees so there will not be model collision
* Update hook_handlers.cpp
* Don't play the intro cutscene on child spawn even if location is shuffled.
* Fix condition to not always skip cutscene when IS_RANDO is true.
* Fix typo
* add OoT hint, sheik is crashing without hint due to an unrelated bug
* Fix Sheik crashes, add new textbox to autoFormat, trim OoTHint text
* save pls
* fix receive typos
* git pls
* nice conflict fix
* Fix issues with areas not being applied to the region itself, and Link's Pocket Propogating through randomised warps
* Address reviews
* address reviews again
* fix mac issues
* git pls
Stop passing checksByArea to functions in the same namespace.
Only get value of `HideFilteredAreas` once per frame.
Gate area and check evaluations behind checks being visible and search filter size greater than 0.
Proper function capitalization.
* Add rando enhancement "Mysterious Shuffled Items", which obfuscates shuffled freestanding/drawn-in-world items (PoH, tokens, shop items) with a custom question mark model (thanks Hato), and uses the "mysterious item" functionality of `GetMerchantMessage` for everything that supports it, regardless of hint status on generation.
* Reverted back to rando enhancement, but added condition for Mysterious Shuffle not being on for the gem rotation fix to apply.
* First attempt at changing to fake GetItemEntry instead of directly calling the mystery draw function. Needs more work.
* Updated CVar to reflect CVar rework values.
Added `IsCheckShuffled` as preliminary function for checking *only* if a check is shuffled, not necessarily if it is just visible on the tracker. This accounts for the difference between tokensanity and "Always Show GS On Tracker", where you don't want to obfuscate the latter.
* Bit of cleanup.
* Cross-platform building edits. If anyone has a better idea of how to handle this fake GIE, I'm all ears.
* Update to CVar macros.
* Fix freestanding item gives.
Fix mysterious item model colors.
* Fix bombchu bowling mystery.
* Remove bowling bomchus check obfuscation (unused, removed in v3).
* p
* Missed the prefix renames.
* More missed ones.
* Mostly finished cleanup.
Removed a few CVars and some related functionality.
* Bit more (prepping non-existent title card color editing).
* Resolve gCrowdControl.
* Final cleanup.
* Universal constant, not acceleration...
* Preset CVars.
* Incorporate LUS CMake CVar system.
Customize all LUS CMake CVars to align with plans for preset system.
Swap "gOverlayFont" usage back to LUS CVar macro.
* Change CMake sets to use the cache to allow for including LUS's file for the add_compile_defines and remove the duplication on SoH's side.
* Move SoH CMake CVars to `soh-cvars.cmake` for clarity.
* Hint text refactor WIP DOES NOT BUILD
* Update to show people DOES NOT BUILD
* stuck on wierd errors
* forgot to add
* expression error does not name a type
* commit in case anyone looks
* static assertion failed: T must be an integral type or an enum.
* fail without error, complaining about unrefernced things
* fix some issues, still linker bs
* restructure some trials, conditionalAlwaysHints and hint_list stuff
* builds and does not crash, but there's text issues
* fix text issues
* commit to push, halfway through trimming down log
* finish trimming spoiler logging
* post merge clean up
* plando mode seems to work, looking into song text wierdness
* push for debugging crash on HBA sign
* fix num and anju issues
* fix the damn sign
* Fix Windows build
Renames GetMessage to GetHintMessage (a different name could be chosen, but GetMessage conflicts with a macro in winuser.h)
Changes uint to size_t, uint does not seem to exist on Windows.
* fix biggoron
* remove some manual formatting that autoformat doesn't like
* fix some altar text
* fix more altar text
* last cleanup
---------
Co-authored-by: Christopher Leggett <chris@leggett.dev>
* Fix hint generation bugs on develop-rando
1. Fixed Ganon Non-hint text from loading as Saria's Magic Hint.
2. Fixed Ganon Non-hint text from not getting saved correctly.
3. Fixed gossip stone hint generation from not generating any non-always hints on No Logic.
For #3, the hint distribution and placement algorithm was bailing out too early when it wasn't able
to place a hint. For No Logic, what it was doing was failing to place WOTH hints (since No Logic seeds
don't calculate WOTH candidacy), returning the amount of hints it failed to place, and then it called
the function to redistribute the hints, but did not call the function to attempt to place the remaining hints.
Additionally, it was not accounting for the fact that we shouldn't redistribute the hints into the categories we failed to
place a hint in, so it would redistribute hints right back into those categories. I changed it so that when DistributeHints
gets called after PlaceHints fails to place the hint, it checks if the distribution settings copies attribute was set to 0.
In this case, it breaks while looping for the type distribution settings, and moves on to the next category. Also, it now repeatedly
attempts to distribute and place hints until PlaceHints returns 0 (meaning it placed all of its hints successfully).
* Fixes some further seed-bleed type issues with hint generation.
* Standardized CVar macros to have `CVAR_` at the front instead of the end.
Removed excluded and replaced sequence macros.
* Missed a few developer CVars outside of `SohMenuBar.cpp`
* 1 more.
* Add all macros.
Replace all randomizer seed setting CVars with appropriate macro.
Cleaned up non-gameplay-critical things that are part of Spock Race rando presets (like RTA timing, displaying timer, displaying the glitch lineup tick, or Fast File Select).
* Wrong slash...
* Fix DEVELOPER_CVAR macro.
Add GENERAL_CVAR macro.
* Change Item Tracker CVars, including open window CVar.
* Swapped open window CVars.
* Swapped Entrance Tracker CVars.
* Swapped Check Tracker CVars.
Changed Item Tracker "HudEditMode" to "Draggable".
* Renamed `RANDOMIZER_CVAR` to `RANDO_ENHANCEMENT_CVAR`.
Swapped rando enhancement CVars.
* Mirroring last commit from part 1 in randomizer.cpp
* Another mirror from pt 1
* Add console commands for randomizing sfx and cosmetic groups
* Update naming and use constexpr
* Update soh/soh/Enhancements/debugconsole.cpp
---------
Co-authored-by: Archez <Archez@users.noreply.github.com>
* Add all macros.
Replace all randomizer seed setting CVars with appropriate macro.
Cleaned up non-gameplay-critical things that are part of Spock Race rando presets (like RTA timing, displaying timer, displaying the glitch lineup tick, or Fast File Select).
* Wrong slash...
* Forgot "gManualSeedEntry".
* Renamed CVars from "Mq..." to "MQ...".
* filter randomizer checks in tracker
Co-authored-by: Michael Stergianis <michael.stergianis@gmail.com>
* Adds an option to hide empty areas
Co-authored-by: Jamie Klassen <jamie@tenkeylabs.com>
Signed-off-by: Michael Stergianis <michael.stergianis@gmail.com>
* Removes extra whitespace
Co-authored-by: Jamie Klassen <jamie@tenkeylabs.com>
Signed-off-by: Michael Stergianis <michael.stergianis@gmail.com>
* Changes gCheckTrackerHideFilteredAreas to default to true
Refactors the for loop in shouldHideArea
Signed-off-by: Michael Stergianis <michael.stergianis@gmail.com>
* Addresses PR feedback
* https://github.com/HarbourMasters/Shipwright/pull/4021#discussion_r1538377614
* https://github.com/HarbourMasters/Shipwright/pull/4021#discussion_r1538381310
Co-authored-by: Jamie Klassen <jamie@tenkeylabs.com>
Signed-off-by: Michael Stergianis <michael.stergianis@gmail.com>
* Updates config variable to gTrackers.CheckTracker.HideFilteredAreas
Signed-off-by: Michael Stergianis <michael.stergianis@gmail.com>
* Adds check visibility guard to shouldHideArea
Refactors rcObject to check in passesTextFilter
Signed-off-by: Michael Stergianis <michael.stergianis@gmail.com>
---------
Signed-off-by: Michael Stergianis <michael.stergianis@gmail.com>
Co-authored-by: Michael Stergianis <michael.stergianis@gmail.com>
vb treasure chest game added new RCs for the treasure chest game (now there are RCs for each of the 5 keys and each of the 5 non key chests), but the location area table only had the keys, this adds the items
* Clean up grayed out items in file select.
Tie personal notes saving to `OnExitGame()` to account for save scum resets.
Hide text input box (but not window) for personal notes when a save isn't loaded to prevent saving over a save's notes while in file select.
* Allow check tracker window to be visible and show the "Waiting for file load..." text in file select (ease of positioning).
* Fix key label text placement.
* Persist `areasSpoiled`, change trigger to `OnSceneTransition`.
Add `IsAreaSpoiled` for tie-in to Item Tracker.
Add `SetAreaSpoiled` to unify bitmagic.
* Add proper spoiling evaluation based on specific entrance IDs, or first check collection.
Add light yellow color for vanilla dungeon abbreviations to match the purple for MQ.
* Initialize `areasSpoiled` to 0, so 0 gets saved on file create.
* All new conditional statements around `GameInteractor::IsSaveLoaded()` were inverted. Fixed that.
* Change some c-style casts to `static_cast`.
* Few more cleanups, plus clarifying comment.
* vb bombchu bowling
* don't need it
* it's drawing the right thing but it's tiny
* scale
* no need to should, don't rescale every draw
* slightly safer
Due to a typo a few months ago, it was accidentally being ignored and
treated as Anywhere. Own Dungeon may have also been doing weird things,
but I'm not entirely sure.
* Add `SohModalWindow` and `SohModal`. Runs as window, always "visible", but not drawing if no popups are registered.
Adds error catching for save file corruption (malformed json) that renames the file in question to prevent future loading issues and uses `SohModalWindow` to inform the user of the error.
* Apply suggestions from code review
---------
Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
* we crash if we try to SPDLOG in the destructors
* rip em out
* newline
* add to destroy
* Revert "rip em out"
This reverts commit 738a9b80f3.
* Revert "we crash if we try to SPDLOG in the destructors"
This reverts commit 327d305e00.
* animation
* playeranimation
* stop putting things in the LUS namespace from SoH
* get all the factories out of the namespace
* LUS::
* start on scene command stuff
* i think that's the rest of scene
* reduce copypasta
* collision header
* skeleton
* skeletonlimb
* fix
* path
* cutscene
* text
* audio sample
* sound font
* audiosequence
* background
* Revert "stop putting things in the LUS namespace from SoH"
This reverts commit 0ead6056e6.
* namespace shanans
* wrap all factories in namespace soh
* it's trying to link now
* lus
* scene command override etc
* fix audio loading
* slightly less logspam
* get past the cutscene problem
* in game!
* exporter cleanup
* more exporter cleanup
* clang formatted lus
* msvc
* itny lus change
* variant
* formatty
* fix of some sort i guess?
* use latest lus main
* fix name to enum/factory mapping
* otrexporter
* Moves personal notes to the save file under a new itemTracker save section.
* Update soh/soh/Enhancements/randomizer/randomizer_item_tracker.cpp
---------
Co-authored-by: Archez <Archez@users.noreply.github.com>
* Adds the Keese and Guay don't target you cheat
that makes keese and guay ignore you as if
you are wearing the skull mask
* changed instances of CVar_GetS32 to CVarGetInteger
added the cvar to presets.h
---------
Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
* start on arch
* noconfirm
* git
* noconfirm
* just skip cache
* cmake
* ninja
* gcc
* lsb
* sdl2
* png
* sdl net
* boost
* imagemagick and add opensuse
* non interactive
* git
* cmake
* add a bunch
* things
* more
* try to matrix
* soh otr i guess
* needs
* trying to figure out how matrix include works
* make the matrix?
* matrix debug
* install?
* echo?
* yuck
* cannot locate package false
* parens for good measure
* lsb
* libsdl2
* suse
* i forgot opensuse uses gcc-c++ instead of g++ for the package name
* png
* sdl
* more
* suse packages....
* fedora cmake
* 2?
* png
* handle old sdl2 net
* apt
* not sure if this is a problem for both clang and gcc on opensuse or just clang
* devel
* cmake min version
* def don't want this here but it's here for now
* does this do anything
* mantic because cmake version
* libopengl?
* fedora ninja
* fedora g++
* lsb
* fedora sdl
* libpng
* do a build
* clang fix
* give early returns values
* ImageMagick
* Update BUILDING.md
* something
* plain boost instead of devel?
* not packing so we don't need this part
* base?
* don't have it can't need it
* just use boost download on opensuse i guess
* move workflow
* bring back the file
* lus main?
* detach
* Add a link to ship.equipment to the CRC error message box during extraction
* Improve message and add to ShowCrcErrorBox
* Change 'known good roms' to 'known compatible roms'
* Fix resetting button icon colours in message boxes.
* Fix type/math error for custom color in textbox icon pulsing.
* Fix type error for custom color in ocarina icon pulsing.
* Make custom env colour math more closely match vanilla equivalents.
* Make comments presentable.
* dont let k overflow
* Update soh/soh/z_scene_otr.cpp
Co-authored-by: Archez <Archez@users.noreply.github.com>
---------
Co-authored-by: Archez <Archez@users.noreply.github.com>
* Move input viewer into SoH
* Remove unnecessary comments
* Update button outline mode to match default viewer
* Fix ambiguous call
* CVar name changes and minor fixes
* Two more cvars
* Separate C-buttons into individual toggles
* Account for text height regardless of scale
* A few extra comments
* Use new LoadTextureFromRawImage to load layer textures
* Shops and Games always open
* Added comment for scene reload requirement
* Prefix
* Spacing
Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>
* I'm bad at merging
* Refined by Archez
---------
Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>
* Adds a MessageViewer window to Developer Tools.
* Properly destroys message viewer window.
* Adds missing ImGui::End()
* Fixes an oopsie crashing non-windows builds after first run.
* Adds C ABI for displaying a custom message
* Fixes a crash and an issue with messages with SFX.
* Remove some osSyncPrintf's that aren't very useful for this case.
* Make rando final eban cost 99 and clean up Text IDs
* Remove Text ID changes
* Add french translation, All credit to Purple hato
Co-authored-by: Purple Hato <linkvssangoku.jr@gmail.com>
---------
Co-authored-by: Purple Hato <linkvssangoku.jr@gmail.com>
* initial support for mixing boss entrances in the mixed pool
* support decouple for boss entrances
* missed decouple change
* add blue warp exits to boss rooms in location access
* add entrance get helper methods
* fix assumed targets not using root in entrance name
* add dedicated blue warp entrances and handle blue warp changes during generation
* change bluewarp handling in game to use unique blue warp entrances
* handle blue warps in entrance tracker
* fix overriding all jabu and water temple rooms
* fix grotto returns when exiting boss rooms/dungeons
* fix blue warp logic by tracking original connected region key
* use entrance enums
* remove unneeded entrance values
* fix decouple generation crash
* fix jabu mq backwards logic
* Pause Warp Enhancement
This commit introduces the PauseWarp mod, a feature that allows players to warp to different locations in the game directly from the pause menu.
- Add PauseWarpState structure to manage flags and cooldowns for the pause warp feature.
- Implement IsStateValid function for state validation.
- Implement ResetStateFlags function to reset all state flags to default values.
- Add InitiateWarp function to handle the initiation of warp sequences.
- Implement HandleWarpConfirmation function to confirm and execute warp actions.
- Implement HandleCooldowns function to manage various cooldown timers.
- Add PauseWarp_Main function as the main logic, called every frame to handle pause warp functionality.
- Map warp song messages to in-game text messages.
* Warp Song Check
-Now if you do not have a warp song you won't be able to select the empty slot and still teleport.
* Added Audio Fanfares and Changed stateFlag1 to PLAYER_STATE1_IN_CUTSCENE
-When selecting a warp song the audio for the applicable warp song will now play for a extra vanilla feel.
-Changed the stateFlag1 because previously it just disabled input allowing enemies to harm you. Now that won't happen because the game is put into a cutscene state.
* Feedback Update
-A new hook was created 'OnPauseMenu' so now PauseWarp_Main is only called when the pause menu is open
-Moved pauswarp.c to the Enhancements folder
-Removed from graph.c
PR Change:
Changing to the main branch instead of sulu
* Feedback Update #2
-Introduced new function 'PauseWarp_Idle' now that 'PauseWarp_Main' is no longer called every frame
-Added C wrapper to access 'GameInteractor::IsSaveLoaded' and scrapped the 'IsStateValid' function
-Added 'PauseWarp_Idle' to the the 'RegisterPauseWarp' function
-Refactored the code some
* Linux Compile Issue
-Added a missing header that was causing a compile issue for linux
-Hopefully, it won't crash
* Minor Bug Fix
-Now link won't get soft locked when warping to the same location twice
* Update libultraship
* Revert "Update libultraship"
This reverts commit 746fc23479.
* Bug Fix
-Added more checks to ensure vanilla behavior when a Ocarina is not in the players inventory.
* WIP
* Done unless I'm missing headers
* now we done
* clean up, these arn't needed anymore
* Rename OnPauseMenu to OnKaleidoUpdate
* cache vcpkg on windows ci
* try sccache as variant
* missed a spot
* see if we're checking here
* does this do it?
* trying to make minimal changes and have this work
* hopefully these z7s do something
* we were almost at the max already bump to double
* Apply suggestions from code review
* sc
* latest from soh-macready branch of otrexporter
* Hookshot, Hammer, & Boomerang
* Added the remainder of equipment and DL Patching for hands
* Removed Mirror Shield Patch
Messed with the front texture of shield
* Child Hylian Shield Cheat
Adds a cheat that allows Child Link to hold Hylian Shield as adult. Added to this since it uses the same way to render the shield
* Debugging
* Adds Scaling to Child Link with Adult Equipment
* Fix Merge Conflict Blunders
* More cleanup
* Added Scaling checkbox and some clean up
* Added an || ITEM_NONE
* More cleanup and simplification
* Accidently added spacer
* Replace B_BTN_ITEM
* Spacing
Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>
* Added most sheath functionality
* Updated tooltips
* removed child hylian shield and tweaked bow/slingshot
Made child hylian shield cheat into a separate branch and hooked into existing bow/slingshot enhancement for drawing those
* Prefixes
* ()
---------
Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>
Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
* First commit
* Reverted MODDING.md
Reverted a correction to MODDING.md (case-sensitive broken link?) as this is not a change related to this PR
* Delete CMakeSettings.json
Deleted CMakeSettings.json as this is not a change related to this PR.
* checks for cosmetic changes ONCE for both body and sparles
Please review carefully. I made these changes blindly as I figure out why I can't compile it in my machine anymore. Sorry!
* correctly updates OUTER color when it's changed in Cosmetics Editor
* Update soh/soh/Enhancements/cosmetics/CosmeticsEditor.cpp
* Update soh/soh/Enhancements/cosmetics/CosmeticsEditor.cpp
* Update soh/soh/Enhancements/cosmetics/CosmeticsEditor.cpp
* Update soh/soh/Enhancements/cosmetics/CosmeticsEditor.cpp
* Update soh/soh/Enhancements/cosmetics/CosmeticsEditor.cpp
* Update soh/src/overlays/actors/ovl_En_Partner/z_en_partner.c
* Update soh/src/overlays/actors/ovl_En_Partner/z_en_partner.c
* Update soh/src/overlays/actors/ovl_En_Partner/z_en_partner.c
Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
* Update soh/src/overlays/actors/ovl_En_Partner/z_en_partner.c
Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
* Update soh/src/overlays/actors/ovl_En_Partner/z_en_partner.c
Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
* Update soh/src/overlays/actors/ovl_En_Partner/z_en_partner.c
Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
* Update soh/src/overlays/actors/ovl_En_Partner/z_en_partner.c
---------
Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
* H & L
Adds an H and L for Hookshot and Longshot to be able to tell more clearly which one you have.
* Added Toggle and Refined
Adds a toggle if players don't want it on. Also scales the letter to stay constant with the icons, both size and position. Also now hides the letter if you don't have a hookshot yet.
* Clean up some of the comments
* prefix
* Each Heart Container or full Heart Piece reduces Links hearts by 1
* Based on Briaguya's suggested Code but modified slightly as some parts were missing.
* Static Bool
* The episode without Captain Hook's Hook
---------
Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
* Menu options, note speed, unlimited playback time
* Instant win
* Add custom ocarina game cvar to all options and presets
* Extra spaces
* Add starting note count, ending note count by round, more presets
* Block out vanilla code + comments
* finish blocking out vanilla code
* new documentation formatting
* add starting notes to randomizer preset
* CVar, presets, custom message, fishing actor
* Add placeholder translations for French/German
* Fix for MS Shuffle change
* Rename function to match
* Missing comma in presets
* Change description, CVar name, add'l function name, edit custom message
* Actual whitespace fix
* re-order custom message
* Fix message formatting
* Add enhancement comments
* yeet if (play) {} from enhancement
* new documentation format
* Add CVars for swimming, apply to swim speed calc
* Prevent modifer from working underwater
* Re-enable swim speed mod when underwater, use new (orig) function for y-velocity while diving
* Add to presets list
* Fix spacing
* block out vanilla + comments
* re-org vanilla code block in a sane way
* new documentation format
* rename Surface function + comment for usage
* handle merge conflicts, but like an adult this time
* Adds `FormatLocations` and `PRESET_ENTRY_TYPE_CPP_STRING` to allow for feeding `RandomizerCheck` values directly in presets instead of a string with magic numbers.
* Switch to concatenation with `std::to_string`.
* Forgot to remove <format> include XD
* add map palettes per pulse to leverage shader caching
* use unregister blended with kaleido maps
* use Gfx_TextureCacheDelete for KD lava
* bump lus
* add miss tex clears for KD
* Add Collision Header XML parser
* Update CollisionHeaderFactory.cpp
* Remove "Num" attributes
* Fix crashes
Prevent crash when the camera setting is negative
Change some IntAttributes to UnsignedAttributes
* Add custom text message loading
* Use "override" folder for text mods
* Replace only existing messages
* Use std::find_if to check for existing messages
* Rearrange menus for better layout on smaller screens.
* Automatically calculate +/- increments for float sliders
* Add needed header
* Use stringstream instead of format since apparently most platforms don't actually support all of c++20 yet boooooo
* Add header that only Mac complained about for some reason
* Theoretical performance improvement
* Actual performance improvement
* Update z_fishing documentation from decomp
* undo sCameraAt/Eye rename
* forgot to include these defines Heehee
* adding enums, settings
* adding more stuff back in
* more work
* we're literally typing words into computer
* include unordered map
maybe this fixes mac build idk
* wahoo
* hmm
* add make sure disabled flag gets popped
* poggers in the chat?
* doing some refactoring
* fixing build
* documentation, moving fishsanity instance to rando
* move FS back to context, fixing build, mod progress
since FS is needed during rando generation & provides perpetual info abt. fishsanity in the seed, seems to make more sense if it lives on the context
* moving some stuff around
* it's starting to get real in here
* ELIMINATE FISHSANITYMETA
* IT WROKS
* Update trackers, fix pond fish flagging
* ZD fish shuffle initial checkpoint
* ZD fish "working"
aside from the crashing
* wrapping up
* fix for partial pond shuffle
* remove misc. unrelated debugconsole modification
* updating GI model
* get build working
* add a todo for this
* removeoopsie
* Rework hints a bit
* update hint loc
* Use visual indicator instead of despawning caught fish
---------
Co-authored-by: jordanpg <jordanpg@users.noreply.github.com>
* WIP biggoron and big poes hint
* commit v0 of biggoron and big poes hints
* adjust for settings update
* Add more hints
* Finish extra Basic Static Hints
* remove vestigial code
* Forgot to remove this
* try to fix windows build
* fix build post conflcit res
* remove StaticHintData as redundent
* last cleanup
* reimplement 3drando's hashtag color replacement system.
Also generates merchant text at seed gen time instead of runtime.
By merchants, I mean Bean Salesman, Medigoron, Granny, and Wasteland
Bombchu guy. Scrubs and shops are still dynamic at runtime.
* Improved auto-formatting and fixed altar text.
* Gets hint text for spoiler direct from context.
* Removal of now unused code.
* Change warp song hint generation/retrieval
Generates full warp location text instead of just location names and stores all six in the custom message tables for later retrieval as opposed to dynamically swapping in the location names every time the text is rendered.
* Change Frog Ocarina Game Hint generation/retrieval
Similar to previous changes, removes the on-the-fly generation aspect of it and just generates the full hint text once during seed generation.
* Update soh/soh/Enhancements/randomizer/3drando/text.hpp
Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>
* Fix submodules appearing as changed files.
* Fix WOTH/Foolish colors to match develop-macready.
* Fixes backwards colors for area and item in some hints.
---------
Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>
* Add right-stick aiming to third-person aim
* Add Z-aiming CVar and inversion to Z-aiming
* Create calculation for rel.right_stick and apply it in Z-aiming
* Move option to First-Person section to match shield
* Fix max/min aiming heights
* Expand min/max + comment
* block out vanilla + comments
* block vanilla code better
* Remove extra space
* new documentation formatting
* rewrite ==0 and !=0
* Convert `Rando::Logic` to a class.
* Readd `LogicReset` as `Logic::Reset` for resetting logic mid-generation-cycle to allow seed generation to actually work.
* Change `IsChild` and `IsAdult` to `CanBe` variants.
* Make it buildable.
* First LogicVar class.
* Revert CanBe changes to Is (adult & child) as I'm no longer sure that it's a good one.
* Update soh/soh/OTRGlobals.cpp
Use existing gRandoContext reference.
Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>
* Conflict resolution cleanup (plus removing SaveContext references).
---------
Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>
* Adds TrickOption subclass and fills in extra info.
Fills in the extra info from randomizer_tricks.cpp that other Options don't have (hence the subclass for Tricks specifically).
* Uses new definitions of tricks in ImGui menu.
* Removes randomizer_tricks.cpp/h
* Adds new tricks.cpp/h to hold some static data and functions.
* Refactors Tricks namespace into a class with only static memebers and functions.
* Fixes bug with Trick Tag system.
* Fix Fire Temple Boss Door Logic
* Update soh/soh/Enhancements/randomizer/3drando/location_access/locacc_fire_temple.cpp
Co-authored-by: Adam Bird <Archez@users.noreply.github.com>
---------
Co-authored-by: Adam Bird <Archez@users.noreply.github.com>
* Fix the calculation of `areaChecksGotten` to account for flags functionality setting invisible checks.
Change `areaChecksTotal` to dynamic calculation based on tracker visibility, now that all checks are being added to `checksByArea`.
Both are updated in realtime when either "Show all GS locations" or "Hide right side shop items" are toggled.
Reformat all remaining unencapsulated if statements.
* Changed helper variable change and call to `RecalculateAreaTotals()` to when the options are toggled instead of checking every frame.
Removed redundant if...else.
Clarified areaChecksGotten increment/decrement functionality based on current status and incoming status change.
* Removed unused code.
* Should fix seed bleed between multiple saves and loaded spoilers by resetting the Rando::Context before loading a save.
* Only reset for rando saves.
* Add Architecture Priority to Info.plist
This allows the app bundle to be launched natively on Arm without the need for Rosetta.
* Remove arch shenanigans in soh-macos.sh.in
Shouldn't be necessary now...
* Add back launching the binary in soh-macos.sh.in
Accidentally removed launching the binary from the script.
* First dirty testing process
* Forgot a 2 for the second Dlist patching of Shadow
* TWEAK: GI integration
* DEL: Unucessary includes + whitespace
* TWEAK: No stones refactor for now, sorry I'm kinda lazy right now, don't hate me, please! T_T
* Stone removal part 2, sometime I forget to save the changes :derp:
* Tiny last tweaks, hopefully
* Add to rando preset
* Tweak: typo
* TWEAK: Trigger on toggling on/off
* TWEAK: adressed reviews 💯
* Please mate, excuse my British typing
* Simplify item cycling
* Simplify selection variables
* Fix adult bunny hood and gray appropriate items
* Don't go into cycling mode when there's no items to cycle to
* Restore updating c buttons
This was previously done with `Inventory_ReplaceItem` but that led to problems when another slot had the same item as the one that's being cycled.
* Address review
* Update soh.sh.in
Added support for symlinked rom files in linux/appimage script.
* Update scripts/linux/appimage/soh.sh.in
Updated to be less confusing as per Archez
Co-authored-by: Adam Bird <Archez@users.noreply.github.com>
---------
Co-authored-by: Adam Bird <Archez@users.noreply.github.com>
* Fix various randomiser setting bugs
* Fix shuffle entrences metasetting getting locked on per savefile after an entrance rando seed is generated once
* Fixes pressing B on name entry after randomizer quest.
* Reverts to auto parsing previous spoiler file.
Also includes an option to press L to automatically gen a fresh seed. It still does regenerate the old spoiler to regen the hints in the user's current language, but it will now automatically do this instead of requiring dragging and dropping the spoiler every time.
* Fixes bug causing rando settings to come from CVars instead of a spoiler file when a spoiler is dropped/imported on boot.
* Pressing Generate Randomizer in ImGui doesn't use loaded spoilerfile.
* Adds tooltip to Generate Randomizer ImGui Button.
* Advanced Resolution Settings
first working version with most features implemented
* Update advancedResolutionEditor.cpp
Added auto-resizing logic for Pixel Perfect Mode.
Minor fixes.
* Tweaks and tidying up.
Disable integer scale slider if automatic sizing is overriding it.
Don't offer these UI options on Apple.
Removed unused code.
Updated LUS.
* Update libultraship
* Filenames and style fixes
Filenames and folders now more closely match rest of project.
Tidied newlines/comments.
(SohMenuBar.cpp) Label of button changed to fit menu.
(ResolutionEditor.cpp) Default window size improved.
* Update libultraship
(However, I still need to make the GUI controls acknowledge the new constraints.)
* Update libultraship
(and changed the name of some cvars)
* Added constraints to the inputs. Added a fps drop warning.
* Tweaks based on feedback
* Update libultraship
* Enabled on Apple - For currently ongoing Retina DPI troubleshooting.
(Also removed the duplicated N64 Mode toggle.)
* Update libultraship
* Update LUS, update CVar names, small tweaks
And one significant fix: Enhancement checkboxes in ResolutionEditor now default to off.
* Add Additional Settings and the accursed horizontal resolution field.
There's still a few bugs with it that I haven't squashed, but I need to stop for now and just commit what I've got.
(This is honestly causing more problems than it solves, but i'm tired of getting questions about it.)
* Resolved many of the lingering bugs with the previous commit
* Horizontal Resolution field now properly acknowledges resolution bounds.
* Don't show "Horiz. pixel count" field if not enforcing aspect ratio.
Additionally:
* Don't change settings if selecting "Custom" from preset dropdowns.
* Added a missing horizontal pixel count clamp check.
* Tidied up redundant behaviour.
* Additional comments, and a checkbox to disable aspect correction on consoles.
* Change how frame rate threshold is calculated.
* More minor UI tweaks.
* Added missing CVarSave() calls where needed.
Added a short update countdown for the numerical CVars. This is intended to prevent CVarSave() from being called too often.
* Added a helpful button to cover a potential support issue.
* "Fit Automatically" has been moved to LUS and is now smarter.
This will require another PR in LUS to be opened by me.
* Swap to new branch for libultraship
* Even more clever integer scaling behavior.
"IntegerScale" is itself now a CVar group.
* Tidy up comments.
* Fix a typo that prevented `IsDroppingFrames()` from working
(Maybe more than a mere typo, but a typo was involved.)
* Remove unused and unnecessary variables.
* Group "Integer Scaling" under its own collapsing header
* Changed label for the Enabled advanced settings checkbox.
* Update libultraship + Formatting pass on ResolutionEditor.cpp
* Add `(Select "Off" to disable.)` help text for the aspect ratio setting and hide UI elements accordingly.
Only show the fields if user chooses Custom.
Padding has been shifted accordingly too.
Also fixed a long standing error with the Y field disappearing when modifying X.
* Well I suppose that's no-longer necessary.
* Update libultraship with commits from main branch (up to e5df3a9)
* Tweak comments.
* Save current ImGui Combo items as a console variable
to improve user experience.
* Change language of NeverExceedBounds checkbox description
to be more affirmative, so it makes more sense.
Add tooltip for NeverExceedBounds checkbox.
Tweak some comments related to additional settings.
* Add list of colours to use with TextColored elements.
* Move some UI elements around.
Add an extra MSAA slider to the editor window.
* Integer Scaling header is DefaultOpen if player has Pixel Perfect Mode active upon window creation.
+ Amend tooltips.
* Fix a minor oversight with default configuration.
Fixes an issue where default aspect ratio settings on a fresh SoH configuration weren't matching the defaults assigned in libultraship.
The default values are now 16:9, matching LUS.
Additionally, the combo box now defaults specifically to the 16:9 preset instead of "Custom".
(Fixing the defaults in LUS to be 4:3 isn't worth a LUS bump, so this slight workaround will do for the sake of this PR.)
* Make resolution slider `disabled` condition a variable, for readability.
* Small tweak to combo item saving
* Use `SCREEN_HEIGHT` and `SCREEN_WIDTH` for constraints
* Simplify "Show a horizontal resolution field" logic
by using pixel dimensions as the aspect ratio directly, since now this view hides the aspect ratio setting from the user anyway.
* Correct aspect ratio visualiser to be un-inverted
+ actually display it as a ratio.
* Remove update flags from combo boxes + remove update countdown
+ remove non-functioning 'IsBoolArrayTrue' function.
(The countdown was an okay idea but I didn't implement it correctly. It's better to just keep it simple.)
* Code review suggestion: disable UI elements conditionally
(+ tweaks to code style)
* Invisible tweaks to the Integer Scaling-related Additional Settings
This looks like a lot but it's mostly just re-arranging a cluttered area of the code for clarity.
Actual changes to functionality are:
* Help text now "disabled" along with the checkbox.
* The NeverExceedBounds checkbox will now reset the unused ExceedBoundsBy cvar if it's been changed.
* Assorted small tweaks to comments and variable declarations.
* Code review suggestion: tweak "Window exceeded" warning condition
* Missed a thingy.
* Fixes off by one errors for a few settings.
* Removes disable of shuffle options when starting with corresponding items.
* Junks checks when shuffle is off and start with is on.
* Add player state dead check to Player_UseTunicBoots
* Update soh/src/overlays/actors/ovl_player_actor/z_player.c
---------
Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
* Removes cvarSettings map.
Options now link with CVar names directly. So instead of passing the
cvarSettings map, the Option class can check a corresponding CVar
if a cvarName was provided during construction. Of note, it does not
automatically sync the Option selected index with the CVar value, as
we would not want this to happen in all cases, for example when dragging
a spoiler file, we don't want to overwrite all the CVars with the Options
from the spoiler file. Currently all Options are set to the value of the CVar
they are linked to right before generating a new seed, unless a spoiler file
has been dropped in which case those settings are used instead.
* Early version of ImGui Render function
Currently only the slider variant. Will allow for auto rendering of options
in ImGui, with tooltips and automatic display of the values in each Option's
options array while keeping the CVars at the selected index, preventing
Off By One Errors.
* Implementation of Checkbox and Combobox rendering.
Currently only in use for a couple of items, future commit will implement for all
options.
* Auto-render entire first tab of Randomizer Settings
* Switch remaining tabs to auto-render
* Implements disabling options
* Cleanup/Documentation
* Auto-render entire table columns
* Implement OptionGroup rendering for "Sections"
* Automates the rendering of tables in the Settings window.
With the exception of the Locations and Tricks tabs, those are special
and will need a lot more work.
* Adds ability for option groups to have descriptions,
These descriptions will automatically display as tooltips in ImGui,
if the widget container type accounts for it.
* Fix as many IDE warnings as possible in option.h/cpp
Trying out CLion Nova, and it highlighted some things I decided to fix, some from CLion itself and some from CLang-Tidy. Oddly, it didn't like a conversion from size_t to int whether I left it implicit or added a static_cast, so I guess that warning is staying.
* Fixes some simple bugs
* fix another small oopsie
* Fixes parsing some of the option changes
Specifically we went from storing the actual value in the CVar to storing an index, meaning sliders that started with 1 now have the index offset by 1. This is currently only Big Poe Count, Triforce Hunt total/required, and starting hearts. Everything else either already started at 0, or in the case of LACS/Bridge counts, we were starting the sliders at 1 but they would have always worked at 0 according to the 3drando logic.
* Fix bug with status of skip child stealth
* Renames the Settings::Setting function to GetOption
* Add `Settings` pointer as a member of `RandomizerSettingsWindow`.
* Replaces ctx->GetOption with direct access to mOptions
This is equivalent, the access through ctx in this case was completely unnecessary and a muscle-memory mistake on my part.
* Implements a few IDE/Linter suggestions
* Initial wothCandidates change, pushed early foreseeing conflicts
* Implement better barren handling, waiting on #3205
* pls save next time VS code
* Finish implementation of barren and randomizer area refactor
* Apply function changes to develop merge
* Fix double default decleration issue
* change some var types for uniformity
* Fix post merge differences to the point of building and generating randos
* Address reviews
* address more reviews
* Fixes some IDE warnings/linter-suggestions in context.*
Most of these come from CLion Nova. Some of these may be controversial, such as the if-init-statement related ones. Most of them should not be controversial though, like replacing C-style casts with static casts.
* Fixes IDE warnings/Linter suggestions in option.*
* Fixes some IDE warnings/linter suggestions.
Left a few about "Template Arguments can be deduced", and a "Redundant static_cast" for the sake of clarity.
* Fixes some IDE warnings/linter suggestions in item.*
* Fixes some IDE warnings/linter suggestions in location.*
* Fixes some IDE warnings/linter suggestions in item_location.*
* Fixes some IDE warnings/linter suggestions in item_override.*
* Fixes some IDE warnings/linter suggestions in dungeon.*
* Fixes some IDE warnings/linter suggestions in trial.*
* Use std::ranges::generate rather than manually looping.
* Fixes a typo
* Changes a TODO comment with more info.
Previously this TODO statement was a question of whether or not we ever want to not output a spoiler log. Eventually we may want different amounts or types of data to be output when generating a seed according to certain settings. For instance, maybe we want a human-readable spoiler log, that has item locations and hint content without the formatting info. Maybe we want a "Plandomizer File", which is that but the hint strings include formatting info so that the formatting/colors can be changed, and eventually we may want to let cosmetic info be specified in there as well. Or maybe we just want a Race/Patch file that just has the seed and settings, for Race files we could also specify non-rando settings that should be locked to certain values. Or maybe want one of each. All of that is stuff that should at least start being handled at the location of this TODO statement.
* Fixes a scope issue Windows didn't catch
* Removes std::ranges::generate as apparently AppleClang can't do it.
* Removes std::ranges::any_of as apparently AppleClang can't do it.
* Re-adds what I thought was an unused include.
* An attempt to fix the macos construct_at error
* Hook into flagset hooks for processing check tracking. Has some manual workarounds (some breaks still need to be found).
Remove areaChecks and looping functionality as redundant.
* Additional vanilla handling.
* Fix tracker not showing MQ checks in MQ non-rando.
Fix tracker marking non-MQ variants of dungeon checks (e.g. map chest, etc) when collecting in MQ.
* Set all areas to spoiled if not rando.
* Revert attempt to spoil in randomizer based on MQ dungeon count as I don't know how that works at the moment.
* Restore and update spoiling based on MQ dungeon settings (none, selection, or count of 12).
Fix Anju As Adult check.
* Remove Anchor-specific code :baguette:
* Use `ClearAreaTotals()` in `Teardown()` instead of the duplicate code there.
* Update to `ClearAreaChecksAndTotals()` with `vec.clear()` added.
* Fix type spoiling again. Now spoils on 0 MQ dungeons, not rando, if the option is enabled in check tracker settings, selection, or set number of 12.
Fix vanilla checks being marked collected in MQ dungeons.
* Fix 100 GS check.
* ACTUALLY fix 100 GS: change flag type to `RandomizerInf()` in `item_location.cpp`, add RC to RandoInf for it to the table. Also don't send GI for flag if father, falsely triggers ZR frogs minigame.
* Fix gravedigging tour tracking.
* Fix membership card check tracking.
Change scene and flag values to any existing enums.
Clarifying formatting for the checking loop vOrMQ conditions.
* Fix Gravedigging Tour tracking.
Simplify Always Win Gravedigging Tour and Fix Gravedigging Tour Glitch applications.
Modified all necessary paths to use vanilla GDT PoH collection flag instead of randomizer variant.
* Fix Kak Potion Shop being "seen" when entering as child.
* Document static variables
* Document enums and structs
* Document some functions
* Document more functions
* actionParam to itemAction and fix build
* Document some local variables and a define
* General cleanup
* Use PlayerMeleeWeaponAnimation enum when appropiate
* Document some function parameters and local variables
* Document some of player struct
* fix alt backgrounds not always loading
* include gfx lookup with the original unload
* Add hook for alt toggle
* handle cpu modified texture for kd lava
* malloc array instead of illegal initialize
* lay some groundwork
* use custom window (which is currently identical to the LUS window)
* start making it shippy
* start moving stuff out of gamecontroleditor
* clean up shouldrumble
* include the other way
* wii u
* latest lus main
* notch snap angle buttons
* buttons on all the sliders
* just use a hidden id
* handle debug for port 2 and rename tabs so everything fits
* button line buttons look better
* padding fixed
* clang format
* bump to latest LUS main
* big buttons
* just default the analog stick options to open for now
* fix wii u build
* bonus: make it all scale-aware
* clang format
* fix horizontal scrolling
* fix all +/- buttons
* keyboard set defaults
* axis threshold helper text
* bonus: test rumble button
* clang format
* fix otrexporter submodule
* bump to latest lus main
I had an Off By One Bug in a previous commit, and saves made on that commit ended up crashing on boot due to attempting to access a negative index of an array. Added a bounds check to prevent attempting to load that data.
* ADD: No HUD Heart Animation
I've seen this requested multiple times for modding purposes for the case of using "lifebars" instead of hearts
* TWEAK: Move it under the the mods
* REM: Whitespace
* REM: Whitespace2
* Tweak: Cvar Oppsie
* Initial StaticData and RandoItem class definitions
* Initial implementation of RandoItem class.
* Rerranges RandoItem Constructor parameters
The parameters were rearranged for easy copy-paste from the GET_ITEM macro calls later on.
* Switches static data from map to static array.
Array is all that is needed, since the item list will be contiguous and indexed by the RandomizerGet Enum values.
* Defines part of the randomizer item list.
* Adds more item class instances to item_list.cpp
Up through bottles, many more items still to go.
* Adds song items
* Adds Maps and Compasses to the item_list
* Added Key Items to item_list
* Added Key Rings to item_list
* Added Dungeon Rewards to item_list
* Adds generic items and refills to item_list
* Adds shop items, triforce, and hints
Also added constructors that put the GET_ITEM_NONE data in for these items, since there is no corresponding GetItemEntry for them.
* Adds in the stages of progressive items
These are present for GetItemEntry purposes, and aren't really meant to be used in seed generation (unless we find a need for it later on.)
* Remove GetItemEntry data from progressive items
* Moves/adds function definitions to item/item_list
* Refactors GetItemEntry data
It's now a pointer to memory instantiated on the heap in the constructor. These are shared pointers so the memory is freed if any of the item instances get deconstructed (which they shouldn't but just in case.)
* Adds item class member for if item is progressive
* Removes unneeded stuff from initializer list macro
* Replaces relevant `uint32_t`s w/ `RandomizerGet`s
Also replaces calls to the ItemTable method with StaticData::RetrieveItem
* Switches our runtime code to use the new itemList.
* Changes just enough hint gen code to compile
* Initial Definition of Location Class
* Initial Implementation of Location
* Fixes some names and definitions.
* Extracts ActorID and SceneID enums to separate files.
This allows importing them without causing weird conflicts in cpp files when importing the z64scene.h and z64actor.h files directly. Now you can just import z64scene_enum.h and z64actor_enum.h instead. The two old files also import these new files so that existing setups still work as expected.
* Replaces the forward definitions with the new imports.
* Adds missing data for RandomizerCheckObjects.
* Definition and first entry of locationTable
* Added Mido's House Locations
* Added locations up through lost woods.
* Adds in Hyrule Field locations.
* Adds Lake Hylia locations
* Adds location name comments
* Adds Gerudo Valley Locations
* Adds Gerudo Fortress locations.
* Adds the Wasteland and Collosus locations
* Adds Market locations
* Adds Hyrule Castle locations.
* Adds Kakariko and Graveyard locations.
* Adds Death Mountain checks.
* Adds Goron City locations
* Adds Death Mountain Crater locations
* Adds Zora's River locations
* Added Zora's Domain Locations.
* Added Zora's Fountain locations
* Adds Lon Lon Ranch locations.
* Adds Deku Tree locations
* Adds Dodongo's Cavern Locations.
* Adds Jabu Jabu's Belly Locations
* Adds Forest Temple Locations
* Adds Fire Temple Locations
* Adds Water Temple Locations
* Added Spirit Temple Locations
* Some of shadow temple locations.
* Adds remaining Shadow Temple locations
* Fixes a leftover merge conflict
* Adds Bottom of the Well locations.
* Adds Ice Cavern locations
* Adds GTG locations.
* Adds Ganon's Castle and Tower locations
* Adds dungeon Gold Skulltula locations.
* Adds Overworld Gold Skulltula locations
* Adds dungeon reward locations
* Adds Heart Container Locations
* Adds Cutscene and Song locations
* Adds Cow locations
* Adds Shop locations.
* Adds hint locations
* Adds function for retrieving the Location data.
* Initial definition of ItemLocation structure for tracking runtime data
* First push on converting code to use new location definitions
* Changes hints to use the new tables
* Further conversion of hints to new definitions.
* Adds new Hint and Location IDs to area tables
* Moves areaTable to use new RandomizerRegion keys
* Removal of 3drando/item_location files.
* Uses new RandomizerRegion keys in entrance.cpp
* Final push for removal of massive keys.hpp enum
* Uses new SceneID Enum Values
* Remove RandomizerCheckObject structs in favor of new location list.
* Fix a few stragglers to successfully build
* Rename of RandoItem to just Item, but in the Rando namespace
* Adds static hints (Light Arrows, Altar text, etc) to the new Hint table.
* More hint related fixes/edits
* small fix for #include path
* Fix various miscellaneous issues related to seed gen and spoiler parsing.
* Handle progressive items correctly.
* Fixes some hint generation logic
* Fix a few GetItemEntry niche bugs.
* Adds missing shop GI Entries
* Formatting fixes
* small formatting fix
* Namespace StaticData under Rando
* Added a note about a potential use-after-free.
I confirmed the actual pointer in question isn't currently being used, but I added the note as a reminder to fix it later and/or as a warning to anyone who changes how the return value is used.
* Fixes missing location table entries
* Fixes LUS submodule and removes now-unused code
* Resolves weird duplicate definition issue
* Fix missing include
It was missed because not being included wasn't an issue on Windows.
* Fixes error present on Linux builds
* Fixes some issues with excluding locations
* Updates the Resolve Exclusion conflicts function
not sure if actually used, will look into that more later
* Removes some duplicate RGs
* More fixes of duplicate RG values.
* Fix a few duplication issues in the check tracker.
* Fix progressive bombchus.
* Minor typo fix, shouldn't really be affecting anything though
* Should fix some of the remaining check tracker issues.
* oops wrong boolean operator
* Fix skulltulas in the check tracker.
* oops, missing comma
* re-formatting of HintStone locations
* Fixes issue when picking up second Progressive Bullet Bag
* Hide bombchu bowling bombchus
* Fixes missed skullScene in location_list
* Reformats shop items
* Re-formats cow checks
* reformat song locations
* reformat "cutscene" checks
* reformat heart container locaitons
* reformat Boss/Dungeon reward checks
* Hide Triforce Completed if not playing Triforce Hunt
* Fixes incorrect chest param
* reformat GS Tokens locations and cuts down on duplicate data
* reformat Ganons Castle checks
* reformat GTG check locations
* Prevents Gift from Raoru from appearing in the check tracker
* more reformatting (botw, ice cavern, shadow temple)
* Should fix a couple more check tracker checks
* reformat spirit temple checks
* reformat water and fire temple checks
* fix RC_ZR_GS_ABOVE_BRIDGE flag typo
* reformat Forest Temple checks
* Fix RC_LW_TRADE_ODD_POTION in check tracker
* reformat child dungeon locations
* reformat overworld locations
* reformat item entries
* New Item Override system
* use new ItemOverrides and use ItemLocations table for getting items
* Saves/Loads directly from/to new ItemLocation table with overrides for traps
* Removes gSaveContext.itemLocations
* Don't load spoiler file on boot automatically.
Currently this means the old spoiler will have to be manually dropped or a new one generated in order to make a new rando file. Next I want to make it so that:
1. The Randomizer Quest button on the file select menu is always unlocked, even if a spoiler is not loaded.
2. If it's selected and a spoiler is not loaded, a menu will appear that asks if you want to generate a new seed or re-generate the previous one (if a spoiler file is present).
3. On choosing to generate a new one, you may also get an in-game menu to quickly apply a preset before generating (not sure if I'm going that far just yet).
4. After that, a seed is generated and you are taken back to the file select screen with the new file present.
5. If a seed is generated via the menu ahead of time, the CVar for loading the spoiler file will be set, but the spoiler file will not be parsed. All the data needed to actually play the randomizer at that point is
already in memory and in the save file (or at least I'll make it so that it is if it isn't already).
6. If a spoiler file is dropped over the window, the spoiler file is loaded, but it will only be parsed to get the seed and the settings, then the playthrough will be generated from scratch with that data. Thus allowing
for hints to be in the user's language of choice no matter what language the spoiler file was generated in.
7. Additionally, there will be a plandomizer mode that, if enabled, causes dragging and dropping a spoiler file to read the entire spoiler file instead of just the seed, and making a new file will use the data from there
instead of generating a new seed. This in particular may be expanded to have a "plando file" that contains more info than a spoiler file would normally have, such as cosmetic data and a more fleshed out
custom message syntax for various types of custom hints and whatnot. But that will be probably much later.
* Auto-gen rando seed when making a new rando file.
Also adds new logic for displaying the seed hash icons. Now, it is displayed in the following situations:
1. On the confirmation page when loading a rando save, the hash icons for *that save* are displayed.
2. On the name select screen after generating a seed, the hash icons for the seed that was just generated will be shown.
3. If you have dragged a spoiler log onto the window, the hash icons for that seed will be displayed while randomizer is selected on the quest select screen.
Currently the spoiler is just ignored, as the logic for pulling the settings from the spoiler file and regenerating the same seed has not been coded yet.
* Fix a few typos/bugs
* Partial conversion to new Settings/Option class
* Further conversion to new settings/options classes
* New settings struct (not fully working, need to wire it up to SaveManager)
* Move save files to new settings struct. Also fixes MQ options to match 3drando
* Fixes some spoilerfile related issues
* Cleans up now unused arrays
* Fixes some unhandled entries in parse settings switch case
* Reimplements parsing of settings on file drop to re-generate seeds
* Move merchantPrices into ItemLocation tables.
* Move hints to new struct
* Fixes a few seed gen bugs surrounding hints
* Fix treasure chest game.
* Relocate Entrance Shuffle code into ctx
* Move entrances to new context at runtime
* Remove now unused code from SaveContext and randomizer.cpp/.h
* Fix non-windows builds?
* Moves Dungeon Quests to new context
* Move trials into new context
* Whoops, forgot to construct the Trials in the context.
* Fixes accidental nullptr reference
* Fixes bug with saving MQ dungeons
* Implements plando mode and removes now unused code.
Largely untested, expect some bugfixes.
* prevent a multiple definition bug
* another attempt to fix the gSeedTextures multiple def error
* Fixes some minor hint issues from conflict resolution
* Some additional glue needed for merge
* Fixes another couple of miscellaneous issues/inconsistencies.
* A few french corrections
* Makes CVar gRandomizeWarpSongText match the checkbox default value.
* Initial implementation of no-duplicates of special hints
* stupid fixes
* Impa's song will no longer be hinted when you skip child zelda
* fix building
* Fix Loading spoiler logs causing corrupt hints, remove disabled warp song shuffle text from spoiler logs
* Remove Sheik and Saria hints from the spoiler log when are not enabled
* Prevent Magic hinted by Saria and Light Arrows hinted by Sheik from being hinted elsewhere unless they are locked by that item.
* Prevent the Final Frogs gossip stone hint from spawning when the special final frogs hint is enabled.
* Fix building after rebasing in deduplication
* redelete keys.hpp
* Remove Sheik and Saria hints from the spoiler log when are not enabled
* Prevent the Final Frogs gossip stone hint from spawning when the special final frogs hint is enabled.
* First part of copies implementation
* Refactor hint system (broken)
* fix building
* fix obvious errors
* fix fixed hints doubling after failing to place a hint
* Fix bugs with hint distrabution
* Split PlaceRandomHint and fix hint bugs
* Merge special hint functions, move special hint text to the HintTable, expand LightArrow hint category into OtherHint category.
* Fix remaining hint distribution errors
* Forgot to stage dampe diary update
* Restore building after conflict resolution
* fix SetAllInRegionAsHinted
* Initial implementation of no-duplicates of special hints
* stupid fixes
* fix always hints being suppressed by special hints
* Impa's song will no longer be hinted when you skip child zelda
* fix building
* Remove disabled special hints from the spoiler log
* Fix Loading spoiler logs causing corrupt hints, remove disabled warp song shuffle text from spoiler logs
* Fix not detecting text size correctly and badly named greg hint
* Remove disabled special hints from the spoiler log
* Fix Loading spoiler logs causing corrupt hints, remove disabled warp song shuffle text from spoiler logs
* Remove Sheik and Saria hints from the spoiler log when are not enabled
* Prevent Magic hinted by Saria and Light Arrows hinted by Sheik from being hinted elsewhere unless they are locked by that item.
* Prevent the Final Frogs gossip stone hint from spawning when the special final frogs hint is enabled.
* Fix building after rebasing in deduplication
* redelete keys.hpp
* Initial StaticData and RandoItem class definitions
* Initial implementation of RandoItem class.
* Rerranges RandoItem Constructor parameters
The parameters were rearranged for easy copy-paste from the GET_ITEM macro calls later on.
* Switches static data from map to static array.
Array is all that is needed, since the item list will be contiguous and indexed by the RandomizerGet Enum values.
* Defines part of the randomizer item list.
* Adds more item class instances to item_list.cpp
Up through bottles, many more items still to go.
* Adds song items
* Adds Maps and Compasses to the item_list
* Added Key Items to item_list
* Added Key Rings to item_list
* Added Dungeon Rewards to item_list
* Adds generic items and refills to item_list
* Adds shop items, triforce, and hints
Also added constructors that put the GET_ITEM_NONE data in for these items, since there is no corresponding GetItemEntry for them.
* Adds in the stages of progressive items
These are present for GetItemEntry purposes, and aren't really meant to be used in seed generation (unless we find a need for it later on.)
* Remove GetItemEntry data from progressive items
* Moves/adds function definitions to item/item_list
* Refactors GetItemEntry data
It's now a pointer to memory instantiated on the heap in the constructor. These are shared pointers so the memory is freed if any of the item instances get deconstructed (which they shouldn't but just in case.)
* Adds item class member for if item is progressive
* Removes unneeded stuff from initializer list macro
* Replaces relevant `uint32_t`s w/ `RandomizerGet`s
Also replaces calls to the ItemTable method with StaticData::RetrieveItem
* Switches our runtime code to use the new itemList.
* Changes just enough hint gen code to compile
* Initial Definition of Location Class
* Initial Implementation of Location
* Fixes some names and definitions.
* Extracts ActorID and SceneID enums to separate files.
This allows importing them without causing weird conflicts in cpp files when importing the z64scene.h and z64actor.h files directly. Now you can just import z64scene_enum.h and z64actor_enum.h instead. The two old files also import these new files so that existing setups still work as expected.
* Replaces the forward definitions with the new imports.
* Adds missing data for RandomizerCheckObjects.
* Definition and first entry of locationTable
* Added Mido's House Locations
* Added locations up through lost woods.
* Adds in Hyrule Field locations.
* Adds Lake Hylia locations
* Adds location name comments
* Adds Gerudo Valley Locations
* Adds Gerudo Fortress locations.
* Adds the Wasteland and Collosus locations
* Adds Market locations
* Adds Hyrule Castle locations.
* Adds Kakariko and Graveyard locations.
* Adds Death Mountain checks.
* Adds Goron City locations
* Adds Death Mountain Crater locations
* Adds Zora's River locations
* Added Zora's Domain Locations.
* Added Zora's Fountain locations
* Adds Lon Lon Ranch locations.
* Adds Deku Tree locations
* Adds Dodongo's Cavern Locations.
* Adds Jabu Jabu's Belly Locations
* Adds Forest Temple Locations
* Adds Fire Temple Locations
* Adds Water Temple Locations
* Added Spirit Temple Locations
* Some of shadow temple locations.
* Adds remaining Shadow Temple locations
* Fixes a leftover merge conflict
* Adds Bottom of the Well locations.
* Adds Ice Cavern locations
* Adds GTG locations.
* Adds Ganon's Castle and Tower locations
* Adds dungeon Gold Skulltula locations.
* Adds Overworld Gold Skulltula locations
* Adds dungeon reward locations
* Adds Heart Container Locations
* Adds Cutscene and Song locations
* Adds Cow locations
* Adds Shop locations.
* Adds hint locations
* Adds function for retrieving the Location data.
* Initial definition of ItemLocation structure for tracking runtime data
* First push on converting code to use new location definitions
* Changes hints to use the new tables
* Further conversion of hints to new definitions.
* Adds new Hint and Location IDs to area tables
* Moves areaTable to use new RandomizerRegion keys
* Removal of 3drando/item_location files.
* Uses new RandomizerRegion keys in entrance.cpp
* Final push for removal of massive keys.hpp enum
* Uses new SceneID Enum Values
* Remove RandomizerCheckObject structs in favor of new location list.
* Fix a few stragglers to successfully build
* Rename of RandoItem to just Item, but in the Rando namespace
* Adds static hints (Light Arrows, Altar text, etc) to the new Hint table.
* More hint related fixes/edits
* small fix for #include path
* Fix various miscellaneous issues related to seed gen and spoiler parsing.
* Handle progressive items correctly.
* Fixes some hint generation logic
* Fix a few GetItemEntry niche bugs.
* Adds missing shop GI Entries
* Formatting fixes
* small formatting fix
* Namespace StaticData under Rando
* Added a note about a potential use-after-free.
I confirmed the actual pointer in question isn't currently being used, but I added the note as a reminder to fix it later and/or as a warning to anyone who changes how the return value is used.
* Fixes missing location table entries
* Fixes LUS submodule and removes now-unused code
* Resolves weird duplicate definition issue
* Fix missing include
It was missed because not being included wasn't an issue on Windows.
* Fixes error present on Linux builds
* Fixes some issues with excluding locations
* Updates the Resolve Exclusion conflicts function
not sure if actually used, will look into that more later
* Removes some duplicate RGs
* More fixes of duplicate RG values.
* Fix a few duplication issues in the check tracker.
* Fix progressive bombchus.
* Minor typo fix, shouldn't really be affecting anything though
* Should fix some of the remaining check tracker issues.
* oops wrong boolean operator
* Fix skulltulas in the check tracker.
* oops, missing comma
* re-formatting of HintStone locations
* Fixes issue when picking up second Progressive Bullet Bag
* Hide bombchu bowling bombchus
* Fixes missed skullScene in location_list
* Reformats shop items
* Re-formats cow checks
* reformat song locations
* reformat "cutscene" checks
* reformat heart container locaitons
* reformat Boss/Dungeon reward checks
* Hide Triforce Completed if not playing Triforce Hunt
* Fixes incorrect chest param
* reformat GS Tokens locations and cuts down on duplicate data
* reformat Ganons Castle checks
* reformat GTG check locations
* Prevents Gift from Raoru from appearing in the check tracker
* more reformatting (botw, ice cavern, shadow temple)
* Should fix a couple more check tracker checks
* reformat spirit temple checks
* reformat water and fire temple checks
* fix RC_ZR_GS_ABOVE_BRIDGE flag typo
* reformat Forest Temple checks
* Fix RC_LW_TRADE_ODD_POTION in check tracker
* reformat child dungeon locations
* reformat overworld locations
* reformat item entries
@ -9,7 +9,7 @@ Official Website: https://www.shipofharkinian.com/
Official Discord: https://discord.com/invite/shipofharkinian
Official Discord: https://discord.com/invite/shipofharkinian
If you're having any trouble after reading through this `README`, feel free ask for help in the Support text channels. Please keep in mind that we do not condone piracy.
If you're having any trouble after reading through this `README`, feel free to ask for help in the Support text channels. Please keep in mind that we do not condone piracy.
# Quick Start
# Quick Start
@ -61,7 +61,8 @@ Congratulations, you are now sailing with the Ship of Harkinian! Have fun!
### Other shortcuts
### Other shortcuts
| Keys | Action |
| Keys | Action |
| - | - |
| - | - |
| F1 | Toggle menubar |
| ESC | Toggle menu |
| F2 | Toggle capture mouse input |
| F5 | Save state |
| F5 | Save state |
| F6 | Change state |
| F6 | Change state |
| F7 | Load state |
| F7 | Load state |
@ -70,12 +71,17 @@ Congratulations, you are now sailing with the Ship of Harkinian! Have fun!
| Tab | Toggle Alternate assets |
| Tab | Toggle Alternate assets |
| Ctrl+R | Reset |
| Ctrl+R | Reset |
# Project Overview
Ship of Harkinian (SOH) is built atop a custom library dubbed libultraship (LUS). Back in the N64 days, there was an SDK distributed to developers named libultra; LUS is designed to mimic the functionality of libultra on modern hardware. In addition, we are dependant on the source code provided by the OOT decompilation project.
In order for the game to function, you will require a **legally acquired** ROM for Ocarina of Time. Click [here](https://ship.equipment/) to check the compatibility of your specific rom. Any copyrighted assets are extracted from the ROM and reformatted as a .otr archive file which the code uses.
### Graphics Backends
### Graphics Backends
Currently, there are three rendering APIs supported: DirectX11 (Windows), OpenGL (all platforms), and Metal (MacOS). You can change which API to use in the `Settings` menu of the menubar, which requires a restart. If you're having an issue with crashing, you can change the API in the `shipofharkinian.json` file by finding the line `gfxbackend:""` and changing the value to `sdl` for OpenGL. DirectX 11 is the default on Windows.
Currently, there are three rendering APIs supported: DirectX11 (Windows), OpenGL (all platforms), and Metal (MacOS). You can change which API to use in the `Settings` menu of the menubar, which requires a restart. If you're having an issue with crashing, you can change the API in the `shipofharkinian.json` file by finding the line `gfxbackend:""` and changing the value to `sdl` for OpenGL. DirectX 11 is the default on Windows.
# Custom Assets
# Custom Assets
Custom assets are packed in `.otr` files. To use custom assets, place them in the `mods` folder.
Custom assets are packed in `.otr` archive files. To use custom assets, place them in the `mods` folder.
If you're interested in creating and/or packing your own custom asset `.otr` files, check out the following tools:
If you're interested in creating and/or packing your own custom asset `.otr` files, check out the following tools:
* [Linux (performance)](https://nightly.link/HarbourMasters/Shipwright/workflows/generate-builds/develop/soh-linux-performance.zip) _(requires `glibc 2.35` or newer, but will be more performant than the compatibility build.)_
* [Linux (compatibility)](https://nightly.link/HarbourMasters/Shipwright/workflows/generate-builds/develop/soh-linux-compatiblity.zip) _(compatible with most Linux distributions, but may not be as performant as the performance build.)_
Doing so should also check one of the Windows SDKs by default. Then, in the installation details in the right-hand column, make sure you also check the v142 toolset.
Doing so should also check one of the Windows SDKs by default. Then, in the installation details in the right-hand column, make sure you also check the v143 toolset. This is often done by default.
You can also find the v142 toolset by searching through the individual components tab:
It is recommended that you install Python and Git standalone, the install process in VS Installer has given some issues in the past.
While you're there, you can also install Python 3 and Git if needed.
1. Clone the Ship of Harkinian repository
1. Clone the Ship of Harkinian repository
_Note: Be sure to either clone with the ``--recursive`` flag or do ``git submodule init`` after cloning to pull in the libultraship submodule!_
_Note: Be sure to either clone with the ``--recursive`` flag or do ``git submodule update --init`` after cloning to pull in the libultraship submodule!_
2. Place one or more [compatible](#compatible-roms) roms in the `OTRExporter` directory with namings of your choice
2. After setup and initial build, use the built-in OTR extraction to make your oot.otr/oot-mq.otr files.
_Note: Instructions assume using powershell_
_Note: Instructions assume using powershell_
```powershell
```powershell
@ -33,24 +30,18 @@ _Note: Instructions assume using powershell_
# Now you can run the executable in .\build\x64 or run in Visual Studio
```
```
### Developing SoH
### Developing SoH
@ -60,16 +51,14 @@ With the cmake build system you have two options for working on the project:
To develop using Visual Studio you only need to use cmake to generate the solution file:
To develop using Visual Studio you only need to use cmake to generate the solution file:
```powershell
```powershell
# Generates Ship.sln at `build/x64` for Visual Studio 2022
# Generates Ship.sln at `build/x64` for Visual Studio 2022
& 'C:\Program Files\CMake\bin\cmake' -S . -B "build/x64" -G "Visual Studio 17 2022" -T v142 -A x64
& 'C:\Program Files\CMake\bin\cmake' -S . -B "build/x64" -G "Visual Studio 17 2022" -T v143 -A x64
# or for Visual Studio 2019
& 'C:\Program Files\CMake\bin\cmake' -S . -B "build/x64" -G "Visual Studio 16 2019" -T v142 -A x64
```
```
#### Visual Studio Code or another editor
#### Visual Studio Code or another editor
To develop using Visual Studio Code or another editor you only need to open the repository in it.
To develop using Visual Studio Code or another editor you only need to open the repository in it.
To build you'll need to follow the instructions from the building section.
To build you'll need to follow the instructions from the building section.
_Note: If you're using Visual Studio Code, the [cpack plugin](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cmake-tools) makes it very easy to just press run and debug._
_Note: If you're using Visual Studio Code, the [CMake Tools plugin](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cmake-tools) makes it very easy to just press run and debug._
_Experimental: You can also use another build system entirely rather than MSVC like [Ninja](https://ninja-build.org/) for possibly better performance._
_Experimental: You can also use another build system entirely rather than MSVC like [Ninja](https://ninja-build.org/) for possibly better performance._
_Note: If you're using Visual Studio Code, the [cpack plugin](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cmake-tools) makes it very easy to just press run and debug._
_Note: If you're using Visual Studio Code, the [CMake Tools plugin](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cmake-tools) makes it very easy to just press run and debug._
cmake -H. -Bbuild-cmake -GNinja # -DCMAKE_BUILD_TYPE:STRING=Release (if you're packaging) -DPython3_EXECUTABLE=$(which python3) (if you are using non-standard Python installations such as PyEnv)
# Add `-DCMAKE_BUILD_TYPE:STRING=Release` if you're packaging
# Extract assets & generate OTR (run this anytime you need to regenerate OTR)
# Add `-DSUPPRESS_WARNINGS=0` to prevent suppression of warnings from LUS and decomp (src) files. set to 1 to re-enable suppression
cmake --build build-cmake --target ExtractAssets
# Add `-DPython3_EXECUTABLE=$(which python3)` if you are using non-standard Python installations such as PyEnv
Requires Xcode (or xcode-tools) &&`sdl2, libpng, glew, ninja, cmake` (can be installed via homebrew, macports, etc)
Requires Xcode (or xcode-tools) &&`sdl2, libpng, glew, ninja, cmake, tinyxml2, nlohmann-json, libzip` (can be installed via [homebrew](https://brew.sh/), macports, etc)
**Important: For maximum performance make sure you have ninja build tools installed!**
**Important: For maximum performance make sure you have ninja build tools installed!**
_Note: If you're using Visual Studio Code, the [cpack plugin](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cmake-tools) makes it very easy to just press run and debug._
_Note: If you're using Visual Studio Code, the [CMake Tools plugin](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cmake-tools) makes it very easy to just press run and debug._
<dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">permonitorv2,permonitor</dpiAwareness> <!-- falls back to pm if pmv2 is not available -->