* 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
* 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
* 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
* 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
* 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
* 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.
* 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>
* 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
* Removes delayed save functionality, making autosave work everywhere except Ganon and Chamber of Sages scenes.
* Change AutoSave comment to remove the scenarios we no longer block autosave in.
* handle temp B on saving outside of kaleido
---------
Co-authored-by: Adam Bird <archez39@me.com>
* Extends `Assignable Boots and Tunics` functionality to check for and remove Goron and Zora tunics from item buttons when like likes steal them.
* Comment documentation.
* 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.
* share common scenes between mq and nonmq
* move shared scenes under shared folder and bring back thieves hideout mq handling
* update headers for shared scenes
* bump submodules
* remove mq handling for mirror world song patch
* only have unique dungeons be nomq/mq variants
* bump submodules
* parse sohver arg and store version file in otr
* parse args for soh.otr gen only
* pass soh version from built in extractor
* update launch scripts, cmake and extract steps to pass soh version
* check otr versions and error or ask to regenerate
* add wiiu core header for osfatal
* review feedback
* remove soh dummy version for lus change instead
* only configure linux script for linux
* change lus commit
* rename soh version to port version
* fix submodules
* bump OTRExporter
* clean up error messages for switch/wiiu
* strings not char array
* typo
* init wiiu before otr detection
* Add message for mac/linux extraction
* remove unneeded exits
* change version number types to u16 to fix 32bit devices
* bump otrexporter