Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
5189ea7
Add NPC Souls
TheLynk Jun 23, 2025
c1f4c45
Add Rando: Shuffle Crawl
TheLynk Jun 23, 2025
33d163b
Add entrance shuffle: sign hints
TheLynk Jun 23, 2025
475f0dc
Add Shuffle Masks
TheLynk Jun 23, 2025
6f39c84
Add Treesanity
TheLynk Jun 23, 2025
864583e
Add Shuffle Climb
TheLynk Jun 26, 2025
b4eafc7
Fix crash and Shuffle Location
TheLynk Jun 26, 2025
1ea6bfc
Add Fix Infinite Wallet Upgrade
TheLynk Jun 26, 2025
1b3342c
Small fix
TheLynk Jun 26, 2025
1afe821
Big Update (Passing Update)
TheLynk Jun 27, 2025
046b2d1
Small Fix
TheLynk Jun 27, 2025
4a0c3f8
Small Fix
TheLynk Jun 27, 2025
03dddd4
Merge branch 'Fusion-All-New-Option' into Resolving-Conflicts
TheLynk Jun 27, 2025
c0825b0
Merge pull request #3 from TheLynk/Resolving-Conflicts
TheLynk Jun 27, 2025
b3640f2
Run Clang Format
TheLynk Jun 27, 2025
2b9966d
Add Hide Junk
TheLynk Jun 29, 2025
22375df
Add Rocksanity
TheLynk Jun 29, 2025
3493cd9
Fix Logic For ZR Upper Rock and Boulder
TheLynk Jul 1, 2025
6f59ffe
Fix Crash Ice Trap Option
TheLynk Jul 1, 2025
b576a04
Fix Logic For Deku Tree
TheLynk Jul 2, 2025
96e3e1a
Fix Logic Cow Grotto ?
TheLynk Jul 2, 2025
bba4bc9
ClangFormat
TheLynk Jul 2, 2025
d30c3cd
Fix Logic for Underwater rock
TheLynk Jul 2, 2025
8325070
Fix Logic For KF Child Grass Maze
TheLynk Jul 2, 2025
ac2a763
Fix Logic Acces LH by GV
TheLynk Jul 2, 2025
08add95
Fix errors
TheLynk Jul 2, 2025
ea83149
Update Logic For GF And TH
TheLynk Jul 4, 2025
6af9dd6
Update Logic For Kak
TheLynk Jul 4, 2025
a0188df
Update Logic For KF
TheLynk Jul 4, 2025
0a12134
Fix Crash Compilation
TheLynk Jul 4, 2025
a684555
Fix Logic JJB
TheLynk Jul 4, 2025
d7b11e9
Update Logic CG
TheLynk Jul 4, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions soh/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -138,8 +138,6 @@ endforeach()
if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
set_source_files_properties(soh/OTRGlobals.cpp PROPERTIES COMPILE_FLAGS "/utf-8")
set_source_files_properties(soh/Enhancements/tts/tts.cpp PROPERTIES COMPILE_FLAGS "/utf-8")
set_source_files_properties(soh/Enhancements/custom-message/CustomMessageManager.cpp PROPERTIES COMPILE_FLAGS "/utf-8")
set_source_files_properties(soh/Enhancements/custom-message/CustomMessageManager.h PROPERTIES COMPILE_FLAGS "/utf-8")
endif()

# handle Network removals
Expand Down
2 changes: 1 addition & 1 deletion soh/assets/extractor/filelists/ntsc_12_oot.txt
Original file line number Diff line number Diff line change
Expand Up @@ -1507,4 +1507,4 @@ anime_texture_3_static
anime_texture_4_static
anime_texture_5_static
anime_texture_6_static
softsprite_matrix_static
softsprite_matrix_static
2 changes: 1 addition & 1 deletion soh/assets/extractor/filelists/ntsc_oot.txt
Original file line number Diff line number Diff line change
Expand Up @@ -1507,4 +1507,4 @@ anime_texture_3_static
anime_texture_4_static
anime_texture_5_static
anime_texture_6_static
softsprite_matrix_static
softsprite_matrix_static
1 change: 1 addition & 0 deletions soh/assets/extractor/symbols/SymbolMap_OotMqDbg.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
8012DB20 gMtxClear
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#include "soh/Enhancements/game-interactor/GameInteractor.h"
#include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h"
#include "soh/ShipInit.hpp"
#include "soh/Enhancements/randomizer/context.h"

extern "C" {
#include "z64save.h"
Expand All @@ -17,9 +18,12 @@ void RegisterSkipLostWoodsBridge() {
COND_VB_SHOULD(VB_PLAY_TRANSITION_CS, CVarGetInteger(CVAR_ENHANCEMENT("TimeSavers.SkipCutscene.Story"), IS_RANDO), {
if ((gSaveContext.entranceIndex == ENTR_LOST_WOODS_BRIDGE_EAST_EXIT) &&
!Flags_GetEventChkInf(EVENTCHKINF_SPOKE_TO_SARIA_ON_BRIDGE)) {
Flags_SetEventChkInf(EVENTCHKINF_SPOKE_TO_SARIA_ON_BRIDGE);
if (GameInteractor_Should(VB_GIVE_ITEM_FAIRY_OCARINA, true)) {
Item_Give(gPlayState, ITEM_OCARINA_FAIRY);
if (!IS_RANDO || !Rando::Context::GetInstance()->GetOption(RSK_SHUFFLE_NPC_SOULS).Get() ||
Flags_GetRandomizerInf(RAND_INF_SARIA_SOUL)) {
Flags_SetEventChkInf(EVENTCHKINF_SPOKE_TO_SARIA_ON_BRIDGE);
if (GameInteractor_Should(VB_GIVE_ITEM_FAIRY_OCARINA, true)) {
Item_Give(gPlayState, ITEM_OCARINA_FAIRY);
}
}
*should = false;
}
Expand Down
4 changes: 2 additions & 2 deletions soh/soh/Enhancements/custom-message/CustomMessageManager.h
Original file line number Diff line number Diff line change
Expand Up @@ -154,9 +154,9 @@ class CustomMessage {
void InsertNumber(uint8_t num);

/**
* @brief A € sign at the end of an item name signals that it is plural.
* @brief A sign at the end of an item name signals that it is plural.
* If a hint text has |singular|plural| forms specified, the unused one get's deleted.
* If no € sign is present, the singular form is used.
* If no sign is present, the singular form is used.
*/
void SetSingularPlural();

Expand Down
30 changes: 30 additions & 0 deletions soh/soh/Enhancements/custom-message/CustomMessageTypes.h
Original file line number Diff line number Diff line change
Expand Up @@ -79,8 +79,38 @@ typedef enum {
TEXT_SARIAS_SONG_CHANNELING_POWER = 0x016D,
TEXT_LAKE_HYLIA_WATER_SWITCH_NAVI = 0x01B3, // 0x1yy for Navi msg range
TEXT_MASK_SHOP_SIGN = 0x0207,
TEXT_WATERFALL = 0x022D,
TEXT_FROGS_UNDERWATER = 0x022E,
TEXT_OUTSIDE_FISHING_POND = 0x023A,
TEXT_HF_SIGN = 0x0301,
TEXT_HC_GF = 0x0304,
TEXT_KAK_SIGN = 0x0305,
TEXT_KAK_GY = 0x0306,
TEXT_KAK_WELL = 0x0307,
TEXT_KAK_DMT = 0x0308,
TEXT_DMT_DC = 0x030A,
TEXT_GC_SIGN = 0x030B,
TEXT_HF_ZR = 0x030C,
TEXT_ZD_SIGN = 0x030E,
TEXT_ZF_JABU_SIGN = 0x030F,
TEXT_KF_LW = 0x0314,
TEXT_HF_LON_LON = 0x0315,
TEXT_LA_SIGN = 0x0317,
TEXT_LA_LAB = 0x0318,
TEXT_GV_SIGN = 0x0319,
TEXT_GF_HBA_SIGN = 0x031A,
TEXT_KF_SHOP_SIGN = 0x031E,
TEXT_LINKS_HOUSE_SIGN = 0x031F,
TEXT_KOKIRI_EXIT_SIGN = 0x0320,
TEXT_DMT_DMC = 0x0323,
TEXT_ZD_SHOP_SIGN = 0x0333,
TEXT_OUTSIDE_KOKIRI_SIGN = 0x0339,
TEXT_OUTSIDE_MARKET_SIGN = 0x033A,
TEXT_MIDO_HOUSE_SIGN = 0x033C,
TEXT_KNOW_IT_ALL_HOUSE = 0x033D,
TEXT_TWINS_HOUSE_SIGN = 0x033E,
TEXT_SARIAS_HOUSE_SIGN = 0x033F,
TEXT_NO_DIVING_SIGN = 0x0342,
TEXT_LAKE_HYLIA_WATER_SWITCH_SIGN = 0x0346, // 0x3yy for cuttable sign range
TEXT_WARP_MINUET_OF_FOREST = 0x088D,
TEXT_WARP_BOLERO_OF_FIRE = 0x088E,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,16 @@ typedef enum {
// - None
VB_BE_ELIGIBLE_FOR_NOCTURNE_OF_SHADOW,

// #### `result`
// ```c
// CHECK_QUEST_ITEM(QUEST_KOKIRI_EMERALD) && CHECK_QUEST_ITEM(QUEST_GORON_RUBY) &&
// CHECK_QUEST_ITEM(QUEST_ZORA_SAPPHIRE) && !Flags_GetEventChkInf(EVENTCHKINF_ZELDA_FLED_HYRULE_CASTLE) &&
// LINK_IS_CHILD
// ```
// #### `args`
// - None
VB_BE_ELIGIBLE_FOR_OCARINA_OF_TIME,

// #### `result`
// ```c
// !Flags_GetEventChkInf(EVENTCHKINF_LEARNED_PRELUDE_OF_LIGHT) &&
Expand Down Expand Up @@ -236,6 +246,15 @@ typedef enum {
// - `*Actor` (interactRangeActor)
VB_BOTTLE_ACTOR,

// #### `result`
// Actor is ACTOR_OBJ_BOMBIWA, or ACTOR_OBJ_HAMISHI
// ```c
// Flags_GetSwitch(play, this->actor.params & 0x3F)
// ```
// #### `args`
// - `*Actor` (interactRangeActor)
VB_BOULDER_BREAK_FLAG,

// #### `result`
// ```c
// true
Expand Down Expand Up @@ -278,6 +297,14 @@ typedef enum {
// - `*EnGm`
VB_CHECK_RANDO_PRICE_OF_MEDIGORON,

// #### `result`
// ```c
// true
// ```
// #### `args`
// - None
VB_CLIMB,

// #### `result`
// ```c
// CHECK_BTN_ALL(input->press.button, BTN_START)
Expand Down Expand Up @@ -310,6 +337,15 @@ typedef enum {
// - `*ObjKibako2`
VB_CRATE_SETUP_DRAW,

// #### `result`
// ```c
// true
// ```
// #### `args`
// - None

VB_CRAWL,

// #### `result`
// ```c
// true
Expand Down Expand Up @@ -1786,6 +1822,14 @@ typedef enum {
// - None
VB_REVERT_SPOILING_ITEMS,

// #### `result`
// ```c
// false
// ```
// #### `args`
// - `*EnIshi`
VB_ROCK_DROP_ITEM,

// #### `result`
// ```c
// !Flags_GetInfTable(INFTABLE_145)
Expand Down Expand Up @@ -2155,6 +2199,22 @@ typedef enum {
// - `*EnWood02`
VB_TREE_DROP_COLLECTIBLE,

// #### `result`
// ```c
// true
// ```
// #### `args`
// - `*ObjWood02`
VB_TREE_SETUP_DRAW,

// #### `result`
// ```c
// true
// ```
// #### `args`
// - `*ObjWood02`
VB_TREE_DROP_ITEM,

// ```c
// true
// ```
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,10 @@ void StaticData::HintTable_Init_Exclude_Dungeon() {
/*german*/ "Man erzählt sich, daß eine #Kiste im Deku-Baum# #[[1]]# enthielte.",
/*french*/ "Selon moi, une #caisse dans l'Arbre Mojo# contient #[[1]]#.", {QM_RED, QM_GREEN}));

hintTextTable[RHT_DEKU_BOULDER] = HintText(CustomMessage("They say that a #boulder in the Deku Tree# contains #[[1]]#.",
/*german*/ "!!!",
/*french*/ "!!!", {QM_RED, QM_GREEN}));

/*--------------------------
| DODONGOS CAVERN |
---------------------------*/
Expand Down Expand Up @@ -313,6 +317,10 @@ void StaticData::HintTable_Init_Exclude_Dungeon() {
/*german*/ "Man erzählt sich, daß eine #Kiste in Dodongos Höhle# #[[1]]# enthielte.",
/*french*/ "Selon moi, une #caisse dans la Caverne Dodongo# contient #[[1]]#.", {QM_RED, QM_GREEN}));

hintTextTable[RHT_DODONGOS_BOULDER] = HintText(CustomMessage("They say that a #boulder in Dodongo's Cavern# contains #[[1]]#.",
/*german*/ "!!!",
/*french*/ "!!!", {QM_RED, QM_GREEN}));

/*--------------------------
| JABU JABUS BELLY |
---------------------------*/
Expand Down Expand Up @@ -480,6 +488,10 @@ void StaticData::HintTable_Init_Exclude_Dungeon() {
/*german*/ "Man erzählt sich, daß eine #Kiste in Jabu-Jabus Bauch# #[[1]]# enthielte.",
/*french*/ "Selon moi, une #caisse dans le Ventre de Jabu-Jabu# contient #[[1]]#.", {QM_RED, QM_GREEN}));

hintTextTable[RHT_JABU_BOULDER] = HintText(CustomMessage("They say that a #boulder in Jabu Jabu's Belly# contains #[[1]]#.",
/*german*/ "!!!",
/*french*/ "!!!", {QM_RED, QM_GREEN}));

/*--------------------------
| FOREST TEMPLE |
---------------------------*/
Expand Down Expand Up @@ -1322,6 +1334,10 @@ void StaticData::HintTable_Init_Exclude_Dungeon() {
/*german*/ "Man erzählt sich, daß eine #Kiste im Geistertempel# #[[1]]# enthielte.",
/*french*/ "Selon moi, une #caisse dans le Temple de l'Esprit# contient #[[1]]#.", {QM_RED, QM_GREEN}));

hintTextTable[RHT_SPIRIT_TEMPLE_BOULDER] = HintText(CustomMessage("They say that a #boulder in the Spirit Temple# contains #[[1]]#.",
/*german*/ "!!!",
/*french*/ "!!!", {QM_RED, QM_GREEN}));

/*--------------------------
| SHADOW TEMPLE |
---------------------------*/
Expand Down Expand Up @@ -1735,6 +1751,9 @@ void StaticData::HintTable_Init_Exclude_Dungeon() {
/*german*/ "Man erzählt sich, daß etwas #Gras auf dem Grund des Brunnens# #[[1]]# verstecke.",
/*french*/ "Selon moi, de l'#herbe dans le Puits# cache #[[1]]#.", {QM_RED, QM_GREEN}));

hintTextTable[RHT_BOTW_BOULDER] = HintText(CustomMessage("They say that a #boulder in Bottom of the Well# contains #[[1]]#.",
/*german*/ "!!!",
/*french*/ "!!!", {QM_RED, QM_GREEN}));

/*--------------------------
| ICE CAVERN |
Expand Down
Loading
Loading