* 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.
* 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).
* 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
* 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
* Add dynamic actor IDs
* Convert Ivan to use new actor system
* attempt to fix linux build
* attempt to fix linux build
* merge
* Cleanup
* Fix missing math functions on Windows.
* Removes a stubbed function to fix non-windows builds.
* Update soh/soh/ActorDB.cpp
Co-authored-by: Adam Bird <Archez@users.noreply.github.com>
---------
Co-authored-by: Christopher Leggett <chris@leggett.dev>
Co-authored-by: Adam Bird <Archez@users.noreply.github.com>
Move the code to change those values based on the child trade slot item to the selecting mask loop to not be setting them every frame just because you're in the inventory.
* save build version to savefile
* adjust rando hash icons to use fade in/out
* add dialog message support on the file select screen and display rando version warning
* remove duplicated message functions and use stubbed play state instead for rando warning
* add major/minor/patch version saving to file and compare against
* use strncpy and memset for build version
* don't show rando warning one copy/erase screens
* review feedback
* Add german and french translations for rando warning
Co-authored-by: PurpleHato <linkvssangoku.jr@gmail.com>
---------
Co-authored-by: PurpleHato <linkvssangoku.jr@gmail.com>
* Add toggle option for walk speed modifiers
* Preserve toggle status between scene transitions
* Apply suggestions from code review
renaming from `gSpeedToggle` to `gWalkSpeedToggle`
Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>