* Add a (not yet functional) "Navi" option.
* It works!
* Slightly better name for this menu option.
* Revert accidental commit of comments in z_en_elf.c
* Renaming and tweaks.
* Temporary fix(?) for compile error on non-Windows platforms.
* … Just pretend this particular commit doesn't exist. :OHYEAH:
* A more suitable fix. + Partial suggestions from review.
In-progress implementation of Cosmetics Navi colours.
* Convert relevant code to use Color_RGB8 sans alpha, matching the controller LED.
Defaults are now labeled for clarity.
* Revert back to Color_RGBA8. + Implement Cosmetics Navi colours.
Add Color conversion functions.
* Tidy comments.
* Changed mind yet a third time. Uses Color_RGB8 sans alpha again.
Uses CVarGetColor24 instead of CVarGetColor to drop alpha from cosmetics editor values, like how Tunic Colors does it.
This of course does require me to go with the prior idea of storing the Navi colours without alpha channels.
* Color type conversion functions removed
as they're no longer needed.
* Tidy up commented out code once more.
* Fix a typo
* Suggestion from code review. (Yeah nah you're totally right though.)
* Correct indentation.
* A minor goof in the comments was bothering me.
* add safe string copy method
* use string copy for save manager
* use string copy in spoiler log hint parsing
* remove intermediate string vars
* more string copy use in randomizer methods
* use string copy in gameplay stats
* add load char array method to remove string intermediate var
* try string.h import instead
* Add `IsAdult` to Fewer Tunic Requirements check for `FireTimer` in rando logic to preven placing items in lower maze expecting child to get them.
* After discussion, decided to change it to lock access only to lower maze so child access with dungeon shuffle remains intact.
Also changed the tooltip for Fewer Tunic Requirements to reflect the current status of what the trick enables.
* Further update to tooltip.
* Fix two missing changes after ms GI enum was changed
* Remove unnecessary line break from hint, and fix infinite loop within AutoFormatHintTextString
* Update soh/soh/Enhancements/randomizer/3drando/hints.cpp
* 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
* The mother of all commits
* Removed `GI_SWORD_MASTER`;
"Master Sword" Items now actually give MS
* Removed dupe MS entries in item pool;
updated GIMESSAGE (should stop crashing on non-Windows);
re-added MS in item list
* Give Adult Link a freebie with shuffle MS on;
cihld -> adult no longer gives MS;
ToT Master Sword now gives correct item
* add master sword GI draw func based on ToT MS object
* Force `MasterSword` logic var to only update upon getting MS
* Dorf funny line now activates with LA and MS in inv
* Apply suggestions
* Updated RAND_INF;
Check Tracker changes;
Gave RAND_INF and ice trap logic to ToT MS check;
Fixed swordless behavior for HBA/fishing
* ToT MS Check now works in check tracker;
Visual bug where box hovers over non-existent MS gone;
Fixed RAND_INF check with ToT MS pedestal;
Ganon no longer gives free MS
* adult equips no longer reset in MS shuffle
* Apply (most) locacc review suggestions
Co-authored-by: inspectredc <78732756+inspectredc@users.noreply.github.com>
* Reorganized swordless check for interface to fit edge cases;
getting master sword no longer highlights box
* Edge case for BGS but no bow
* Fix implicit declaration error for GI hooks (#9)
* Adjusted `CanAdultAttack/Damage`; applied logic suggestions
* Fixed build errors (hopefully)
* Cleanup merge
* get shit working again
* Tidied up remaining uses of DD flag as rando indicator
* make master sword invisible and fix ms flag (#10)
* Add text to sheik if go mode is obtained but barrier is still up
* overhaul swordless behavior in `func_80083108`
* reworked ToT MS Check to have an actual GI
* suggestions
* Apply suggestions
* Better swordless handling with temp B (#11)
* better swordless handling with temp B
* prevent auto save in fishing pond
* prevent auto save during bombchu bowling
* enum fix
---------
Co-authored-by: Adam Bird <archez39@me.com>
Co-authored-by: inspectredc <78732756+inspectredc@users.noreply.github.com>
Co-authored-by: RaelCappra <rael.cappra@gmail.com>
Co-authored-by: Adam Bird <Archez@users.noreply.github.com>
* 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
* Restore RBA Values
Matches all rba scenarios achievable in game to their original outcomes. This only ends up affecting certain trade items.
* tooltip rewrite
* rba cases generalised
* re-add to menu bar
* better byteswap and checks for endianness
* remove leftover defines
* initial n64 pal 1.0 support - hashes and rominfo
* initial xml copy pal 1.0
* initial offset fixes
* update title copyright to be platform based
* bump lus for clearMtx
* add scripted xml definitions
* offset fixes and xml fixups
* rename and sort pal mq definition
* more offset fixes
* Initial commit. What works so far:
Data file loads, saves, deletes, and is created properly.
- Need to run `HasItemBeenCollected` when creating in case of mid-seed regen.
Organized checks into maps set by area.
Areas show in tracker.
- Checks pulled from checkObjectsByArea are not currently listed.
- Areas are being assumed completed and hidden at the start.
* Checks now populate. Still not counting area totals properly.
* Don't track RC_LINKS_POCKET in the data file, and instead manually add it in every time a save is load. rcObjects doesn't contain Link's Pocket location (duh).
* Moved ItemReceive hook to randomizer_check_tracker.cpp.
Skipped items are properly sorted and formatted.
Saved items contribute to an area's gotten/skipped checks on load.
Changed skipped items default main color to gray.
General code cleanup.
* Skipped checks now contribute to area totals for area completion logic.
* Mid-menu rework transfer.
* Started check lookup on item receive.
Tried to enable scum checking on save.
* Fixed scum check on save.
* More code cleanup, which revealed some issues with loading and saving. Loading now works 100%, but entries in checkTrackerData are disappearing in code somewhere, causing issues with later checks.
Scummed color now displays properly.
Collected but unsaved displays properly.
Unchecked, Skipped, Seen and Scummed checks all have arrows for skipping/unskipping.
Counts a little messed up, probably double adding skips.
* Fixed item counts being off across resets. Restarts were fine.
* Beginning of rework for individual check updates. Adds `Actor lastCheck` to PlayState to allow assigning of last actor to give an item. This allows precise tracking of GS, freestanding PoH, etc. Works for chests too. Currently does not work for shops, unknown for normal NPC gives. Doesn't track last gives for non-checks, like drops from grass, pots, crates, etc.
* Actor-based checks fully fleshed out, but can't help with sale-based checks. Implemented `pendingSaleCheck` to back out of an RC check cycle if `gSaveContext->pendingSale` is not NONE when `OnItemReceive` is called, processed through `OnSaleEnd`. This should be the final change necessary to streamline the checks.
* Temporary hook to message box close to tie in trackers for non-gs/chest actors that aren't added to `GetCheckFromActor`. This triggers a 2-frame countdown to check with `HasItemBeenCollected` since half of the methods in there aren't updated until after a text box closes.
Added scene tracking to get last scene so that checks in scenes that span several overworld areas could be tied to their areas properly.
Modified tracker data creation to apply Link's Pocket and Song from Impa conditionally based on randomizer settings instead of just being assumed to be done. May need modification for checking click and drag spoiler loading.
Removed the scene equivalence check from CheckChecks so that an entire area is checked each time to avoid issues with, e.g., leaving a shop before a pending sale finishes.
* Changed check data creation to use RSKs from gRandomizer to account for settings loaded from drag and drop spoilers.
* Beginning of tracker code organization.
Changed check color defaults.
* Reverted moving tracker colors to header.
Some individual check fixes.
* Missed something from previous merge?
* Removed last remnant of removed performance mode.
* Better handle checking when skullsanity is off.
* Song checks sceneIDs don't match the scenes they're actually in for some reason. Removed that check.
* SaleEnd checks don't need the GetItemEntry parameter. Also set a flag that should prevent the check tracker from running during vanilla saves should that not be resolved by the time it's merged.
* Attempting to have only the relevant checks added to the tracker data, as well as showing vanilla checks for non-rando saves. Not working yet (everything is displayed in vanilla).
* Added vanilla check tracker population via `vanillaCheck` bool in `RandomizerCheckObject`. This is also added to `IsVisibleInImGui` to handle file loading and saving to eliminate checks that aren't part of vanilla or the rando seed.
Implemented deleted tracker data file recreation.
Added some extra item name text checks. Songs are still... tricky, so they stay blank.
Utilize local copies of the randomizer check objects that are applicable for performance purposes.
Fixed vanilla item-giving cutscene crashes when triggered mid-transition.
* Apparently not all toolchains can handle macro instantiation without all parameters, like VS can.
* Fixed scummed detail color not showing properly on tracker.
* Fixed dungeon area totals and GS checks not functioning properly.
* Major revamp of checking code. Doesn't rely on `GetCheckFromActor` at all anymore, but instead simply sets a flag to evaluate a number of checks in an area every frame until the check that was gotten is identified. With the new setup, it's much less hardware intensive, and at 60fps 6 checks per frame shows no noticeable effect on framerate. I can envision needing to add a collectedCount in order to account for times when two checks are gotten one right after the other.
Changed area scroll to happen from `OnTransitionEnd`, and allow for scrolling in bazaar (was disabled previously because it would jump back and forth between Kak and Market while you were in one).
Also setup area check order updating by area instead of all at the same time.
* Fixed shooting gallery not reporting proper area.
Prevent checks from actually happening if area is RCAREA_INVALID, now that all areas are reporting something if they have checks.
Fixed `GetCheckArea()` not updating checks for standard scenes.
Lots of vanilla tracking updates, mainly manual checks for gems, medallions and songs, since the often don't have proper scenes in the data.
Prevent vanilla from triggering check loops if junk items are collected.
Fixed sorting based on saved vs collected.
Prevent item name display for vanilla runs.
Change coloring of checks so the check name reflects status in vanilla runs.
* Fixed "Recheck Area" button erroneously adding to an area's check totals?
* Fix DMC vanilla checks.
* Fix check tracker data recreation on data file loss.
Removed redundant file exists check from SaveTrackerDataHook, as it doesn't matter if it exists or not at that point.
Limited check loops to 3 to avoid infinite check loops on non-check/junk item pickup.
Added more checks to disable tracker operations if a save is not running.
Changed check ordering to put boss reward and heart container checks at the end of whatever RCSHOW group they belong to.
* Fixed IsRunning calculation.
Further improving vanilla checking.
Starting framework for checking medallions, stones, and songs on data file recreation.
Fixed medallion check collection.
Added GIFT_FROM_SAGES to check list for vanilla file for tracking light medallion.
Added check loop limitation to prevent infinite checking after picking up junk item from the ground.
* Finished vanilla file recreation and recheck (songs and dungeon rewards all check properly now). This includes deku shield with KF shop item 3.
Finished Gift from Raoru light medallion tracking for vanilla.
Commented all CheckByScene functionality for now.
* Fixed new save data file creation.
Disabled entrance area calculation for now, as it only tracks the previous entrance for some reason.
Fixed area detection for ToT checks.
* GetCheckArea() now utilizes EntranceData almost exclusively, via either `gSaveContext.entranceIndex` or the entrance tracker's `currentGrottoId` in the case of grottos.
This also means that EVERYTHING CAN AUTOSCROLL NOW. Entrance shuffles are now much easier to track.
Autoscroll is now also triggered on save, just in case someone isn't autosaving and has a lot of checks that get converted to saved.
* Fixed missing GS check in LW.
* Added area scroll on toggling Show Hidden Items. May configure differently later.
Fixed area detection for entrances in Gerudo Fortress/Valley and Collossus. Haunted wasteland doesn't autoscroll due to a bug in `OnTransitionEnd` hook, but checks still evaluate properly there.
Rely on scene-based area detection if scene is a main overworld or dungeon scene.
* Fixed grotto detection when shuffle is off.
* Small code cleanup.
Fixed Colossus hand chest checks.
* Missing lus bump from merge conflict resolution
* Fixed Colossus Grotto making `GetCheckArea` return Wasteland.
* Improved OnItemReceive processing for non-token GS checks, since they can sometimes take long enough for the checking process to time out before the item is registered as received.
* First attempt at thread safety for tracker data file writing. Seems to work, but might need more testing.
* Fixed Recheck Area not unskipping items that register as saved.
Improved delayed saving with autosaving, as the autosave triggered quite often before the tracker data save, making things not properly register as saved.
* merge cleanup
* Converted check tracker data to the sectional saves, adding `CheckTrackerData` to `SaveContext`.
Implemented section ID returning and fullSave boolean passing to section functions from my PR temporarily for it to work properly.
Moved `RandomizerCheckTrackerData` enum to `randomizerTypes.h` to accommodate that.
Changed `Randomizer_SaveInit` to a `SaveManager::InitFunc` to allow for other randomizer-dependent sections to be initialized after that. Required a little refactoring to maintain intro cutscene skip when starting a randomizer file.
* Revert section index return and randomizer init changes. Will need to wait on yet more changes to main.
* Fixed check tracker initialization (shouldn't be tied to window initialization), restored saving/loading functionality.
* Removed `CheckTracker::Init` and put SaveManager calls in `CheckTrackerWindow::InitElement`. Also a bit of cleanup from transition back to save file use.
* Fixed tracker displaying check categories while file not loaded.
* Fix Darunia's Joy check not marking in vanilla.
* Fix autosave not triggering change from collected to saved in tracker data.
* Changed default colors for scummed and collected display.
* Merge upgrade code cleanup.
* Add `OnTransitionEnd` calls to sandstorm transitions both to and from Wasteland. Also improved `gSaveContext.lastScene` assignment for both transition types. Allowed a bit of cleanup in `GetCheckArea`.
* Added `StateButton`, a button like `ArrowButton` but that allows text instead of arrow icons. Apparently the changes from ArrowButton to StateButton happened in a previous commit...
* Changed section name to `trackerDataCheck` to force SoH to load it after the randomizer section, as it required some randoSettings to be loaded first, and nothing else I tried to make the randomizer section load before it worked. This hacks a solution to checks not displaying on fast file load to a specific slot.
F*** you, SaveManager, and f*** you too, JSON.
* Forgot to change the section string for loading with the name change.
* Fix check ordering for checks that trigger the autosave.
* Adds option to remove right-side shop items (slots 1-4) from the tracker list. Enabled by default.
* Fix default state of Hide Shop Right Checks checkbox.
* Fixes grotto and great fairy scrolling and checks.
Fixes array overflow from `checkTrackerData` which was creating the issue trying to load the base and randomizer sections first, among other things.
That also fixed the massive file loads that were being exhibited in debug mode.
* Fix shooting galleries being set as collected again when being played a second time after getting the checks.
* Fix Bazaar autoscroll.
* Add Saria's Song to `GetCheckFromActor` and removed some limitations from the messageCloseCheck function to make that check track properly.
* Fix Song from Impa check.
Implemented prevention for multiple "collections" of great fairies, just in case getting the health refill would trigger it with the previous setup.
* Fix ice traps on GS tokens not triggering OnItemReceive.
* Complete fix for ice trap collection from GS.
Add autoscroll when clicking "Expand All".
* Add `OnShopSlotChange` with cursorSlot and basePrice parameters.
* Fixed include in en_ossan for shop slot hook.
Added registration for `OnShopSlotChange` in the tracker, storing the price in a new `price` field in `CheckTrackerData`.
Added "seen" functionality to shop checks. Displays the model item name upon first entering a shop, adding the price and switching to trickName (if it's an ice trap) upon navigating to the slot in buy mode, triggered by an invisible "identified" status that mirrors "seen" in every other way.
Added tooltips to most options for check tracker color picking to describe what each status actually means.
* `std::format` pls
* So apparently std::format just decided to break with the latest merge from develop, but fmt::format exists and works?
* Removed the last vestiges of `locationsSkipped`. Other general code and formatting cleanups.
Moved `IsGameRunning` to `OTRGlobals` so the item tracker could also access it.
Used preceding to "fix" item and bottle display in the item tracker on startup.
* Some more code cleanup.
Removed "Recheck Area" button and relevant code.
Backported changes to Anchor branch applicable for single-player, including making a checkAreas vector and structuring the frame by frame checks around that. Also includes fix for Silver Gauntlets and Mirror Shield check collection crash associated with those changes.
Fixed Kakariko Bazaar "seen" updates.
Fixed tracker window not showing on initial load like it should.
* Forgot 1 formatting fix.
* Removed conditions for showing Song from Impa (isn't junk under certain conditions, so should show all the time).
* Fix vanilla checks, add Zelda's Letter and Malon's Egg to manual check collection.
Fix autoscroll while in child stealth section.
* Fix crash in Happy Mask Shop in OnSlotChange (referenced non-existent shop id in a tracker-specific enum).
* General code cleanup.
* Missed one reversion.
* One more.
* Fix column alignment in `randomizer_check_objects`.
* Fix file encoding on `randomizer_check_tracker`. Again.
* Fix indentation for `actualItemtrackerItemMap`. Also removed unnecessary parts of the map.
* Rename `HasEqItem` to `HasEquipment`.
* Slightly better indentation for `actualItemTrackerItemMap`.
* Add magic bean salesman to vanilla check tracking, and genericized deku shield to trigger KF shop item 3 wherever you get the shield.
Renamed `vanillaCheck` to `vanillaHundoCheck` to (supposedly) clarify the meaning of the usage.
* One more rename to `vanillaCompletion` to avoid possible confusion with 100% speedrun conditions.
* give me a break XD
Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
* Changes suggested by briaguya (rename `RandomizerCheckShow` to `Status`, unused code, newline formatting)
* Remove unused `itemNames` table.
* Remove `IsGameRunning` in favor of `GameInteractor::IsSaveLoaded`.
* Restore anti-spoiler functionality for dungeons with dungeon maps.
* Review cleanup.
* Fix prices not showing for Kak bazaar items.
---------
Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
* Add "Open App Files Folder" menu item to Ship menu on desktop platforms to open the folder where mods, logs, etc, are found.
* Change to `GetAppDirectoryPath` to get config location instead of executable/bundle path.
Also unified the absolute path creation across all platforms by using `std::filesystem::absolute`. It manages to even expand the "." returned for portable Windows mode.
* Removed unnecessary platform define check.
* Adds Ultra Deku Stick Cheat
Author: Vexus <vdfk94@gmail.com>
* implement the stuff
* move enum to a resonable spot
* Apply suggestions from code review
* Update soh/src/overlays/actors/ovl_player_actor/z_player.c
* i thought i could do everything through the gh web ui but fine i'll fix it locally
---------
Co-authored-by: Vexus <vdfk94@gmail.com>
* Change most n64ddFlag checks to IS_RANDO checks
* Change most isMasterQuest checks to IS_MASTER_QUEST checks
* Change most isBossRush checks to IS_BOSS_RUSH checks
* Replace isMasterQuest & isBossRush with questId
* Replace n64ddFlag with questId
Also restore authentic n64ddFlag behavior except savefile saving/loading
* Move quest enum from file_choose.h to z64save.h
* Update macros to not take gSaveContext
* Initial work to make triforce pieces their own rando item
* Disable triforce greyscaling
* Better triforce model, finish adding triforce pieces to logic
* Triforce model is now a shard
* Credits warp + start of item tracker
* Initial item tracker stuff
* Completed triangle on triforce completion
* Completed triforce model on GI done
* Multiple triforce piece models
* Triforce pieces in save editor & fix build
* Finish item tracker
* Gameplaystats timestamp
* Revert parts of logic
* More reverting
* Start of making Triforce Hunt the win condition
* Bit of cleanup
* Triforce pieces can show up as icetraps
* Grant GBK to player after hunt is completed
* Better text boxes
* Disable GBK option in ImGui with Triforce Hunt on
* Clean-up
* Forced save on completion improvements
* Update Item Tracker Settings initial size
* Small ImGui adjustments
* French translation and update defaults
* Finish translations
* Fix timer completion & 50+ triforce pieces
* Remove GI_ and ITEM_ enum usage, add french ice trap names
* Fix build & small fixes
* Review comments
* Comment clarification
* initial pal mq retail support
* more mq pal support
* pal mq support in the launch scripts
* more offset fixes
* match tluts with mq debug
* update support hashes doc
* target lus commit for playtesting
* more offset fixes
* add hashes for other formats
* decomp name sync
* add scripted texture definitions
* fix up from other xml changes
* update name
* commit constipation
* fix inconsistencies between 3d and soh settings
* Add RSK check for Saria; Sheik now tells you other reqs for ganon
* Translations (thanks Purple and Timmy_GamerNepgear);
Retain Saria's "face-to-face" text in rando if you're too close
* fix scene renames for sheik
* whoops
* Undo LA hint setting erasure from conflict
* Clarified Sheik text IDs; Clarified final frogs hint
* Fixed Sheik text ID assignment; Fixed Saria's messages in `OTRGlobals`
* Added hint locs for sheik and saria
* Set up hook for Sheik spawn;
Sheik no longer cheats with room transitions;
Enforced text IDs on saria msg function
* Set up hook for Sheik spawn;
Sheik no longer cheats with room transitions;
Enforced text IDs on saria msg function
* Update soh/soh/SaveManager.cpp
Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
* nice.gif
Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
* got ahead of myself
* Conquered and divided; simplified stuff
* nitpicking
Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
* Apply suggestions from code review
Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
* the little things i stg
---------
Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
* Add `vanillaCheck` to `RandomizerCheckObjects` and update the `RCObjects` table and macro.
Update `ogItemId` for many checks.
* Rename `vanillaCheck` to `vanillaHundoCheck`.
* baguette
Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
* Bean Salesman should be true for `vanillaHundoCheck`
* One more rename to `vanillaCompletion` to avoid possible confusion with 100% speedrun conditions.
---------
Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
* Changed Audio Editor buttons to use FontAwesome icons instead of words.
Added the locked/unlocked button.
* Added functionality to lock button. "Randomize All" respects the lock, individual shuffle buttons bypass and the lock and unlock the sound.
Added tooltips to all the FA buttons.
Shrunk right side of Audio Editor window to match width of new buttons.
Unified all references to the randomized value and lock to two functions that automatically applied prefix and suffix.
Changed "Reset All" to clear the cvars instead of changing them to default.
* Fixed bug where individual randomize button didn't change the BGM if randomizing current sequence.
* Added check for unchanged BGM in Reset All and Randomize All to account for lock button blocking changes.
* Remove 3drando setting descriptions
* Remove 3drando cosmetics
* Remove part of 3drando's menu
* Remove 3drando's music & sfx randomizers
* Remove 3drando's patch system
* Remove 3drando's citra logging
* Remove some of 3drando's custom messages
Some can't be removed (like the ganon la hint) as they are used
* Remove useless params in item_location.cpp
These types of SpoilerCollectionCheck just checked the rand inf corresponding to check and ignored the scene & flags params.
* Remove 3drando's unused check categories
* Remove some of 3drando's menu system
* Remove 3drando's preset system
* Remove some unused settings code
* Remove some unused settings
* Remove some unused ItemLocation params
* Remove SpoilerCollectionCheck::Fishing param
* Added Shield Aim Invert Y Axis Option
Adds an option in the menu that allows players to invert the shield aiming across the Y Axis. Defaults as checked to replicate original behavior.
* Shield Aiming Improvements
Added an option to invert X Axis Shield Aiming and corrected the default value for Y Axis Shield Aiming.
* Add toggle option for save states, off by default, with significant warning about what they actually do before enabling (double checkbox confirmation).
Add overlay text notification when attempting to use any of the state hotkeys if save states aren't enabled. Stays up for 6 seconds.
* Added coloration (yellow and orange) to the warning header.
* A little more clarification in the warning.
* Work on Voice rando
Todo: rename rest of entries and reorganize it into a new tab
* Finish going through voices for audio editor
Also make it, it's own tab. Added the option.
* Fixed adult link voices and recounted sound effects/voices
* Remove option
* Update soh/soh/Enhancements/audio/AudioCollection.h
Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
* Remove commented out voices from sfx section
* fix spacing
---------
Co-authored-by: LuigiXHero <LuigiXHero@gmail.com>
Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
* Initial attempt
* Fix rendering for most items
* Fixed icon sizes and reorganized icons
* Fix equipment, quest & upgrade icons
* Add colors to the song icons
* Remove box, clean up code & move seed hash icons to top
* Start with counters, fix copy & erase and show spoiler log hash icons
* Add icons for upgrades
* Draw icons for counters
* Initial counter work
* Fix counter digits positioning
* Prevent crashes when over 999 deaths (save editor)
* Add greg to tracker when in a rando save
* Fix color for counter digits using the wrong buffer
* Add double defense icon
* Addressed code review
* Remove unneeded checks against 0
* implement for install method packagers
* use std::filesystem::temp_directory_path
* absolutely impeccable
* include libultraship proof
* fix windows compilation
* rename "Installation" back to "Bundle"
---------
Co-authored-by: Alto1772 <56553686+Alto1772@users.noreply.github.com>
* fix rando gen crash when not enough remaining items to place
* fix rando gen crash due to missing granny shop hint
* add error sound if rando gen fails
* rewrite the logic to check for CRC32 at runtime
* fix include for windows
* fix pragmas
* more clang fixes
* MORE
* Please apple
* I hate this
* MAC AGAIN
* Clarify the ifdefs
* ARM64 fixes
* Reduce length of overflow prone item names
* Overhaul Trick Names and change Desert Waterfall to Valley waterfall
* Readd some old Trick names, Change Trick name table to a vector, improve french translations.
* Resolve#2682
* Add check for animation count to prevent continuing final saw textbox while putaway is happening.
* Added Fix toggle for it. Enabling Skip Text forces the behavior, regardless of previous selection for the Fix toggle itself (so it works if you have the Fix toggle enabled, or if you have Skip Text enabled).
* Clarified the comment in `z_en_toryo`.
* Change Granny's Shop collection type to RandomizerInf with proper scene and inf IDs so the tracker tracks it properly.
* Changed pendingSale code to be checked outside of decrementing if block.
* fix pal11 ganondorf falling platform offsets
* fix pal11 dins fire offsets
* add game region and platform methods
* fix pal11 file menu options
* move
* Add the flag and fix errors
* switch assert and skin matrix
* new LUS
* Use normal assert
* hopefully fix WiiU
Signed-off-by: Louis <louist103@pop-os.localdomain>
---------
Signed-off-by: Louis <louist103@pop-os.localdomain>
Co-authored-by: Louis <louist103@pop-os.localdomain>
Co-authored-by: Christopher Leggett <chris@leggett.dev>
* mirror fishing rod
* mirror ivan fairy controls
* add mirror dungeons only option
* mirror sold out GI texture
* update dungeons mirror mode for more options
* maybe don't include that
* Modified `SaveManager::AddSaveFunction` to return the section index assigned to the section name for ease of remembering it on the other end. Also added a clarifying comment.
* Modified SaveFunc to accept a boolean for whether the section is being saved individually or as part of a game save (fullSave == true means game save, so all sections registered for game save sync).
* Tweaks to extra modes menu
* Update soh/soh/config/ConfigUpdaters.cpp
Co-authored-by: Christopher Leggett <chris@leggett.dev>
---------
Co-authored-by: Christopher Leggett <chris@leggett.dev>
* hide menu bar from menu bar
* show `-` on switch/wii u
* actually show `-`
* actually put the thing in a place where it works
* spacers
* reorder and use `[-]` instead of `-`
---------
Co-authored-by: briaguya <briaguya@alice>
* linux local debug working
* built in extraction working on linux
* try a thing
* one more thing to try
* try using dir
* does this get the subdirectories?
* component before pattern
* loop i guess
* maybe component was the issue?
* zapd stuff i guess
* maybe this
* this feels promising
* g != q
* appimage is working, try fixing glfw issue on windows
* don't copy zapd.exe
* hopefully this gets the things we need in the assets dir
* is that where those went?
* try another thing
* another thing to try
* grasping at straws
* cmake makes no sense sometimes
* really just trying anything here now
* this is what i was expecting to work
* ls
* try doing it without the cmake again
* i think this might do the trick
* try with a slash
* one more thing to try
* pal_oot.txt
* maybe this makes things work on mac
---------
Co-authored-by: briaguya <briaguya@alice>
* Mirrored world PoC
* invert culling for health meter and A button action
* A few more fixes
* Fix for item equip animations
* Fix for pause triforce
* Mirror scenes with static backgrounds
* mirror minimap for mirror world
* mirror dungeon maps and icons on the pause menu
* mirror overworld map and icons on the pause menu
* mirror debug world movement
* mirror shops cursor and movement
* use flip flag
* Reverse crouch stab x axis for mirror mode
* use invert culling command and clean up culling logic
* Move mirror mode handler to mods and support random modes
* Small cvar tweaks
* mirror billboard score numbers and fix gyro horse mirrored inputs
---------
Co-authored-by: Adam Bird <archez39@me.com>
* WIP adding new config version.
* Implements a ConfigVersionUpdater
* Updates to account for new LUS-side changes.
* Change `ConfigVersionUpdater` to store `toVersion`
* fix typo
* only green the greg bridge not everything else
* another option
* do it the branch way
* tabs spaces blarg
* new dir
* use latest lus main
* latest lus main
---------
Co-authored-by: briaguya <briaguya@alice>
* use correct minimaps in randomizer
* fix minimap dungeon entrance placement
* rework topLeft0 check to be more readable
* who needs topLeft0 anyways
* move minimap hidden checks up higher
* numbers aren't magic
* chest style matches contents
renamed everything except the cvar itself at this point
(waiting for versioned configs for that)
* tracker as part of names
* finish the tracker rename
---------
Co-authored-by: briaguya <briaguya@alice>
* Initial PAL 1.1 support
* 1.1 Asset Fixes
* Fixed issue where N64 builds were being flagged as MQ
* Misc fixes
* Updated LUS submodule
* Fixed up logo strings
* Updated readme and linux/mac scripts with new hash
* reimplement stuff from 2879
* header include to fix build hopefully
* another header
* fix error
* remove header includes we don't have
* more error things
* a
* b
* c
* d
* e
* f
* g
* h
* use latest lus
---------
Co-authored-by: briaguya <briaguya@alice>