* fix link the gorons text ids in rando
* document goron link flags
* check for fire temple clear instead of medallion for link goron
* stop goron link from shivering after opening doors and have big rolling goron resume rolling after giving check
* remove unneeded rando check
* add comments
* Groundwork on scene/room timers; naming changes
* added to save manager; reworked storing timestamps
* actually saved stuff to savemanager;
accounted for null playstate
* finally fixed the fucking timers
* Added scene mapping
* Added CVar for room/scene level; fixed some displays
* reworked logic
* increase name spec for scene timestamps
* Actually save item timestamps when loading v3 save
* Cleanup
* fix merge artifact
* apply suggestions
* Nighttime GS Always Spawn
* add hook onSceneSpawnActors
* implement onSceneSpawnActors hook to spawn GS in various day scenes
* handle the kak tree skull during the day
* Update mods.cpp
* Add the &
* Fixes
* Update soh/soh/Enhancements/mods.cpp
Co-authored-by: Adam Bird <Archez@users.noreply.github.com>
---------
Co-authored-by: Adam Bird <archez39@me.com>
Co-authored-by: Adam Bird <Archez@users.noreply.github.com>
* ADD: Time Saver --> Time Travel with the Song of Time
Co-Authored-By: aMannus <4244591+aMannus@users.noreply.github.com>
Co-Authored-By: David Chavez <david@dcvz.io>
* TWEAK: one liner for the gPlayState check
* ADD: Time Saver --> Time Travel with the Song of Time
Co-Authored-By: aMannus <4244591+aMannus@users.noreply.github.com>
Co-Authored-By: David Chavez <david@dcvz.io>
* TWEAK: one liner for the gPlayState check
* Timetravel stuff
* tweazk oopsies
* Fixes timeline
* tweak frog dist
* ADD: Time Saver --> Time Travel with the Song of Time
Co-Authored-By: aMannus <4244591+aMannus@users.noreply.github.com>
Co-Authored-By: David Chavez <david@dcvz.io>
* TWEAK: one liner for the gPlayState check
* Timetravel stuff
* tweazk oopsies
* Fixes timeline
* tweak frog dist
* oppsie²
* del dupe
* del dupe
* tweak tooltip
---------
Co-authored-by: aMannus <4244591+aMannus@users.noreply.github.com>
Co-authored-by: David Chavez <david@dcvz.io>
Transitions final autosave location to `OnTransitionEnd`.
Adds functionality to autosave to set a delayed save flag if AutoSave is set to Major or All Items and one is obtained in a grotto, to avoid grotto autosaving but still provide for the autosave when location-based saving is off.
Fixes small bug with item lookup where sometimes an item's `modIndex` would sometimes be reported one way, but the way Randomizer does things it would be in a the other `modIndex`, and the lookup would fail.
Minor variable name clarification in ItemTableManager.
Modifies AutoSave to account for item ID overlap from `MOD_RANDOMIZER` table (all items in the randomizer table is considered major for AutoSave purposes except ice traps).
* Change sliders to have +/- buttons by default
* Remove unnecessary margin setting
* Add +/- buttons to remaining sliders and fix some broken UI
* Update EnhancementComboBox to not need array size
* Remove redundant widgets from randomizer
* Miscellaneous fixes
* Fix Switch build break
* Consolidate disabled styling in widgets
* Simplify widget logic
* Merge with most recent PRs
* Fix audio fanfare and sound effect sliders mixup
* Fix sliders being one button too wide
* Fix sliders being too long
* Fix sliders being too long on console
* Modifies custom sequence loading to bypass other sounds being loaded in AudioCollection to fix missing custom sequences on load.
* Modified `audio_load`'s sequenceMap allocation to utilize `AudioCollection`'s sequenceMap size to account for all audio assets already loaded into that sequenceMap. This gives a non-arbitrary number in addition to the vanilla sequence count to allocate with for `audio_load`'s sequenceMap.
Added `HasSequenceNum` to `AudioCollection` as well to streamline the check against `AudioCollection`'s sequenceMap to skip the non-sequence assets in there.
Added clarification comment for seqNum and MAX_AUTHENTIC_SEQID section.
* Clarified comment about AudioCollection seqNum and MAX_AUTHENTIC_SEQID.
* A bit more on comment from the last commit.
* When rupees are given as starting items, they still modify `gSaveContext.rupeeAccumulator`, which means that if you make a new file, start it, and reload without saving, or exit SoH before starting the new file, those rupees were lost. This adds a check for `gPlayState` being NULL, and if it is, adds those initial rupees to the rupee count directly.
* Update soh/src/code/z_parameter.c
Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
---------
Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
* Modified Affordable logic to select randomly from 10, 105, 205, and 505 depending on the selected wallet tier. Updated the tooltip to reflect.
* Clarified logic in comments and variable names.
* Streamlined affordable check for starter wallet.
One more function comment.
* More streamlining of affordable price generation, comment clarification.
* Changed OnReceiveItem hook to pass GetItemEntry, which required the following changes:
Reworked the references to it in `z_parameter` to call a single function with the item return and hook call in it for ease of editing.
Modified the pendingSale functionality to set and pass a modIndex value as well, as mod items (like randomizer) in shops still use the vanilla sale path.
* Missed some files for the pendingSale changes.
Also added Randomizer_Item_Give to the OnReceiveItem system.
* Ice traps now trigger OnReceiveItem.
* All ice traps truly do work now.
As a side effect, item autosave doesn't work for shop/scrub/merchant transactions, requires new OnSaleEnded hook that can also call the autosave.
* Removed unnecessary calls to ItemTable_RetrieveEntry where GetItemEntry properties were being used to call it. General code cleanup.
* Added OnSaleEnd hook for when rupees are finished deducting after a sale.
Migrated AutoSave to its own function, registered AutoSave function to OnReceiveItem and OnSaleEnd hooks to help with autsaving after buying items.
Some futureproofing for AutoSave function with parameters for skipping autosave, for when transition end is migrated to AutoSave function (whether through direct call or through a hook).
* Renamed hook paramaters, and registered hook function parameters, to a more descriptive alternative.
* Missed a couple, fixed a typo.
* One more missed paramater name refactor.
Refactored all references to OnReceiveItem to OnItemReceive to mirror upcoming full hook refactor for name ordering conventions.
Up-to-date with develop.
* 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>
* Restored vanilla pause buffering and input behavior broken by 'easy frame advance' cheat
Currently, holding A and repeatedly pausing and unpausing will cause that A input to be repeated, resulting in Link rolling without additional A inputs. Similarly, holding Z and unpausing in front of a candidate actor will cause Link to switch Z-targeting to that actor.
As a side effect, this also does not allow inputs to be buffered before the Subscreen has finished its closing animation, which is how vanilla also works. This is slightly unfortunate because the "freeze" before the game resumes is considerably shorter in Shipwright, but it'd be better to implement a fake delay there if we want to make it more forgiving.
* Fixed writing past end of the buffer when loading personal item tracker notes longer than 8 characters
* Revert "Fixed writing past end of the buffer when loading personal item tracker notes longer than 8 characters"
This reverts commit 721c18d488.
* ss2
* Remove Comments and Rupees when dead.
* Rupees removal for real
* Updated Inline formatting as well as changed Mode Idenitifier from Super Sonic to Rupee Dash.
* Add OnPlayerUpdate hook
* Move rupee dash to hooks
* Update comment for DashInterval
* ss2
* Remove Comments and Rupees when dead.
* Rupees removal for real
* Updated Inline formatting as well as changed Mode Idenitifier from Super Sonic to Rupee Dash.
* Add OnPlayerUpdate hook
* Move rupee dash to hooks
* Update comment for DashInterval
* Update Health to not crash on less than 16 units.
* lus
* fix build, use `Health_ChangeBy`
---------
Co-authored-by: Caladius <Caladius@users.noreply.github.com>
Co-authored-by: David Chavez <david@dcvz.io>
* add loadgame/exitgame GI hooks
* implement loadgame/exitgame hooks in game code
* move entrance tracker data lifecycle to hooks
* update cosmetic editor to update onloadgame hook
* Restore greg stuff
* Cleanup
* Actually check for Greg when creating Greg hint
Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
* whoops
* Update soh/soh/Enhancements/randomizer/3drando/hints.cpp
Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
* fix greg hint crash, clean up hint generation (clear out hints when setting is off)
* update vanillafill too
* fix text id, parse json, expand array to fit hint
* actually parse/use greg hint RSK
* specify "after buying a key" in hover text hint
---------
Co-authored-by: David Chavez <david@dcvz.io>
Co-authored-by: Ralphie Morell <stratomaster64@gmail.com>
* make greg bridge more greg
* use green rupee color from cosmetics editor
* use hooks to not patch/unpatch every frame
* use gi hook
---------
Co-authored-by: briaguya <briaguya@alice>
* Adds price range select box for shopsanity when shopsanity is 1 or more items.
Default option is the original functionality, now under "Random" select option.
Other options include Affordable, which makes each item 10 rupees, and one option for each level of wallet available with shopsanity, where each wallet's max capacity is the upper limit on the price randomization. These still go in 5 rupee increments, like Random.
Also keeps track of and saves/loads settings appropriately on game start.
* Changed "Random" default shopsanity price selection to "Balanced" to be more properly descriptive.
Refactored GetRandomShopPrice to try to keep Balanced as the default, with a sane fallback price of 150 should the weighted randomizer somehow fail.
* Missed one change from Random to Balanced.
* Changed wallet range to minimum of 5, and removed the multiple of 5 requirement (full rando within range).
* Modified the system to add a checkbox for affordability which then adds a price cap that is just above the max value of the previous wallet tier. Effectively this keeps the wallet lock in place, but prevents anything from getting more expensive than 5 past the previous tier.
* Fixed hover help text and tooltip formatting.
* Changed wallet ranges to generate multiples of 5. May need weighted generation after playtesting.
* update writealllocations to always write trickname and start seeing where things break
* handle simple vs complex items
* always grab a trick name
---------
Co-authored-by: briaguya <briaguya@alice>
* Hide return transitions for dungeon, grotto and interior entrances when "Decouple entrances" is off.
* "Highlight last entrance" now highlights the override reverseIndex entry in the list if "Decouple entrances" is off, to correspond with not displaying return directions for the same setting (without this, nothing gets highlighted with the return transitions hidden with "Decouple entrances" off).
* Removed unnecessary printf
* Moved redundancy check to filtering loop instead of display loop.
Introduced setting to optionally force showing redundant entrances when decoupled is off.
Formatting changes suggested by Archez.
* Changed "show redundant" to "hide reverse" where applicable, and change
Added option disabling based on Decouple Entrances.
* Finished descriptive comment.
* Moved "Hide reverse" to left column of tracker settings.
Changed to PaddedEnhancementCheckbox, changed checkbox padding accordingly, and set default to true.
* Restore tooltip to Hide Reverse option, fix default value.
Co-authored-by: Adam Bird <Archez@users.noreply.github.com>
* Restored padding underneath last option in entrance tracker List Items section.
---------
Co-authored-by: Adam Bird <Archez@users.noreply.github.com>
* Rename "SFX Editor" to "Audio Editor"
* Move some functionality out into a new class `AudioCollection`
* Add a tab to exclude sfx/sequences from shuffle pool
---------
Co-authored-by: briaguya <briaguya@alice>
Co-authored-by: briaguya <briaguya>
Co-authored-by: David Chavez <david@dcvz.io>
* Update z_camera.c
* Update GameControlEditor.cpp
* Update GameControlEditor.cpp
* Update GameControlEditor.cpp
Adding Sliders for first person X and Y axis
* Update z_player.c
Modified variables to allowed separate sensitivity settings for x and y axis
* Update z_camera.c
* Revert "Update z_camera.c"
* Update GameMenuBar.cpp
Added tickbox for NoFPChus
* Update z_player.c
Added check for Disable First Person Bomchus enhancement
* Update z_player.c
Removed comment as statement is clear on its own
* Update GameMenuBar.cpp
* Allows strings to be used for rando seed hashes;
updated conversion method from `stoi` to `stoul`
* apply suggestions
* Allow spaces + autoselect on input field focus
* Added new text filter; applied suggestions
* leaving 3d rando logic alone
* Apply more suggestions
* Revert buffer size to 1024
* Projectile ammo matches ItemAction instead of age
extracted logic from months-old PR
* Added cvar under "Enhancements -> Gameplay -> Items" for bow/slingshot ammo
* Update GameMenuBar.cpp
* fix entrance init and entrance tracker not working properly when no spoiler log is loaded
* fix rando adult trade spoilable items reverting when no spoiler log loaded
* fix market night escape to work with entrance rando; adjust HF bridge spawn to not have link fall in water at night
* use scene enums for ER logic instead of magic nums
* fix sun song loading are with wrong link position with grotto shuffle on
* Update soh/soh/Enhancements/randomizer/randomizer_entrance.c
* TWEAK: Controller Navigation rename + tooltip
* TWEAK: add back FW
* TWEAK: Button size + name
* TWEAK: Tooltip and text position
* TWEAK: added a PaddedSeparator
* TWEAK: Removed the padding from aMannus Request
* Moves SoH mixer to SoH from LUS.
* Debug camera now works in SoH, but mempak saving does not (yet).
* Debug camera is now enabled/disabled based on the gDebugEnabled cvar.
* Updates OTRGlobals comments
* Updates OTRGlobals comments
* Increases the actual block pushing speed.
Previously this enhancement only decreased the delay between pushes in any noticeable way because the top speed of the blocks was clamped. The enhancement now increases the top speed of the blocks according to the slider's value.
* Applies previous changes to milk crates.
* Applies same fix to fire temple stone blocks
(I believe these are the ones with the faces on them)
* Applies fixes to Poe painting blocks (forest temple)
* Begin GameInteractor
* Basic skeleton of PoC
* WIP
* First 2 CC effects transitioned to GameInteractor
* Prepare GameInteractor classes for CrowdControl
* More effects & replace chaosEffects with GameInteractor
* CC connection fixes & all CC effects (enemy spawns still borked)
* First couple of build error fixes
* Fix build
* Proper enemy spawning
* Clean up old CC code
* Extract link size/invisibility into GameInteractor
* Small fix/cleanup
* Suggestions for PR
* Address PR comment
* Addressed more comments & small adjustments
* Fix crash when spawning enemies
* Remove Remove()
* Move checks into Apply() and move CC and some console commands to it
* Use inheritance to abstract check on application
* Rename prefix Actions with RawAction
* Make Remove return a Result
* Fix issue with compilation
* debugconsole -> GameInteractionEffects progress
* Add State in GI
* Unify some Effects
* Port more debug console items
* Remove state modifyiers from raw actions
* Port over last raw action / state in console
* Adjust some types
* Consolidate link size modifier effect
* Adjust more types
* Define category strings in CC
* Clean up remaining non defined strings
* Fix bug in timed effects
* Rename old pack
* CC fixes
* Translate GI enum function
* Console cleanup/fixes/consistency
Co-authored-by: David Chavez <david@dcvz.io>
* fix: add missing comma to fix oob
* bring back some old rupee names, remove some that don't render properly
Co-authored-by: briaguya <briaguya@alice>