Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
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
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
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
Original file line number Diff line number Diff line change
Expand Up @@ -2028,6 +2028,55 @@ void StaticData::HintTable_Init_Item() {
CustomMessage("an evil soul", /*german*/"eine böse Seele", /*french*/"une âme maléfique"),
CustomMessage("some powerful essence", /*german*/"etwas mächtige Essenz", /*french*/"une essence incroyablement puissante")});

hintTextTable[RHT_ANJU_SOUL] = HintText(CustomMessage("Anju's Soul"));
hintTextTable[RHT_TALON_SOUL] = HintText(CustomMessage("Talon's Soul"));
hintTextTable[RHT_GROG_SOUL] = HintText(CustomMessage("Grog's Soul"));
hintTextTable[RHT_GRANNY_SOUL] = HintText(CustomMessage("Granny's Soul"));
hintTextTable[RHT_FADO_SOUL] = HintText(CustomMessage("Fado's Soul"));
hintTextTable[RHT_LINK_SOUL] = HintText(CustomMessage("Darunia's Son's Soul"));
hintTextTable[RHT_BIGGORON_SOUL] = HintText(CustomMessage("Biggoron's Soul"));
hintTextTable[RHT_HOT_RODDER_SOUL] = HintText(CustomMessage("Hot Rodder's Soul"));
hintTextTable[RHT_MEDIGORON_SOUL] = HintText(CustomMessage("Medigoron's Soul"));
hintTextTable[RHT_CARPENTER_BOSS_SOUL] = HintText(CustomMessage("Carpenter Boss's Soul"));
hintTextTable[RHT_ICHIRO_SOUL] = HintText(CustomMessage("Ichiro's Soul"));
hintTextTable[RHT_SABOORO_SOUL] = HintText(CustomMessage("Sabooro's Soul"));
hintTextTable[RHT_JIRO_SOUL] = HintText(CustomMessage("Jiro's Soul"));
hintTextTable[RHT_SHIRO_SOUL] = HintText(CustomMessage("Shiro's Soul"));
hintTextTable[RHT_HW_GATEKEEPER_SOUL] = HintText(CustomMessage("Haunted Wasteland Gate Operator's Soul"));
hintTextTable[RHT_GTG_GATEKEEPER_SOUL] = HintText(CustomMessage("Training Ground Gate Operator's Soul"));
hintTextTable[RHT_ARCHER_SOUL] = HintText(CustomMessage("Horseback Archer's Soul"));
hintTextTable[RHT_GREAT_FAIRY_SOUL] = HintText(CustomMessage("Great Fairy's Soul"));
hintTextTable[RHT_POE_COLLECTOR_SOUL] = HintText(CustomMessage("Poe Collector's Soul"));
hintTextTable[RHT_DAMPE_SOUL] = HintText(CustomMessage("Dampe's Soul"));
hintTextTable[RHT_WINDMILL_MAN_SOUL] = HintText(CustomMessage("Windmill Man's Soul"));
hintTextTable[RHT_MAN_ON_ROOF_SOUL] = HintText(CustomMessage("Man on Roof's Soul"));
hintTextTable[RHT_KAKARIKO_GATEKEEPER_SOUL] = HintText(CustomMessage("Kakariko Gatekeeper's Soul"));
hintTextTable[RHT_MALON_SOUL] = HintText(CustomMessage("Malon's Soul"));
hintTextTable[RHT_BEGGAR_SOUL] = HintText(CustomMessage("Beggar's Soul"));
hintTextTable[RHT_DOG_LADY_SOUL] = HintText(CustomMessage("Dog Lady's Soul"));
hintTextTable[RHT_ARMS_DEALER_SOUL] = HintText(CustomMessage("Arms Dealer's Soul"));
hintTextTable[RHT_BEAN_SALESMAN_SOUL] = HintText(CustomMessage("Bean Salesman's Soul"));
hintTextTable[RHT_SHOOTING_SOUL] = HintText(CustomMessage("Shooter's Soul"));
hintTextTable[RHT_KOKIRI_SHOPKEEPER_SOUL] = HintText(CustomMessage("Kokiri Shopkeeper's Soul"));
hintTextTable[RHT_POTION_SHOPKEEPER_SOUL] = HintText(CustomMessage("Potion Shopkeeper's Soul"));
hintTextTable[RHT_BAZAAR_SHOPKEEPER_SOUL] = HintText(CustomMessage("Bazaar Shopkeeper's Soul"));
hintTextTable[RHT_GORON_SHOPKEEPER_SOUL] = HintText(CustomMessage("Goron Shopkeeper's Soul"));
hintTextTable[RHT_ZORA_SHOPKEEPER_SOUL] = HintText(CustomMessage("Zora Shopkeeper's Soul"));
hintTextTable[RHT_BOMBCHU_SHOPKEEPER_SOUL] = HintText(CustomMessage("Bombchu Shopkeeper's Soul"));
hintTextTable[RHT_MASK_SALESMAN_SOUL] = HintText(CustomMessage("Mask Salesman's Soul"));
hintTextTable[RHT_TREASURE_MAN_SOUL] = HintText(CustomMessage("Treasure Man's Soul"));
hintTextTable[RHT_BOMBCHU_LADY_SOUL] = HintText(CustomMessage("Bombchu Lady's Soul"));
hintTextTable[RHT_DIVING_SOUL] = HintText(CustomMessage("Diver's Soul"));
hintTextTable[RHT_SCIENTIST_SOUL] = HintText(CustomMessage("Scientist's Soul"));
hintTextTable[RHT_KAEPORA_SOUL] = HintText(CustomMessage("Kaepora's Soul"));
hintTextTable[RHT_RAURU_SOUL] = HintText(CustomMessage("Rauru's Soul"));
hintTextTable[RHT_SARIA_SOUL] = HintText(CustomMessage("Saria's Soul"));
hintTextTable[RHT_DARUNIA_SOUL] = HintText(CustomMessage("Darunia's Soul"));
hintTextTable[RHT_RUTO_SOUL] = HintText(CustomMessage("Ruto's Soul"));
hintTextTable[RHT_NABOORU_SOUL] = HintText(CustomMessage("Nabooru's Soul"));
hintTextTable[RHT_IMPA_SOUL] = HintText(CustomMessage("Impa's Soul"));
hintTextTable[RHT_ZELDA_SOUL] = HintText(CustomMessage("Zelda's Soul"));

hintTextTable[RHT_OCARINA_A_BUTTON] = HintText(CustomMessage("an Ocarina A Button", /*german*/"die A-Taste der Okarina", /*french*/"la Touche A de l'Ocarina"),
// /*spanish*/un botón A de Ocarina
{
Expand Down
28 changes: 11 additions & 17 deletions soh/soh/Enhancements/randomizer/3drando/item_pool.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -753,29 +753,23 @@ void GenerateItemPool() {
}

if (ctx->GetOption(RSK_SHUFFLE_BOSS_SOULS)) {
AddItemToMainPool(RG_GOHMA_SOUL);
AddItemToMainPool(RG_KING_DODONGO_SOUL);
AddItemToMainPool(RG_BARINADE_SOUL);
AddItemToMainPool(RG_PHANTOM_GANON_SOUL);
AddItemToMainPool(RG_VOLVAGIA_SOUL);
AddItemToMainPool(RG_MORPHA_SOUL);
AddItemToMainPool(RG_BONGO_BONGO_SOUL);
AddItemToMainPool(RG_TWINROVA_SOUL);

ctx->possibleIceTrapModels.push_back(RG_GOHMA_SOUL);
ctx->possibleIceTrapModels.push_back(RG_KING_DODONGO_SOUL);
ctx->possibleIceTrapModels.push_back(RG_BARINADE_SOUL);
ctx->possibleIceTrapModels.push_back(RG_PHANTOM_GANON_SOUL);
ctx->possibleIceTrapModels.push_back(RG_VOLVAGIA_SOUL);
ctx->possibleIceTrapModels.push_back(RG_MORPHA_SOUL);
ctx->possibleIceTrapModels.push_back(RG_BONGO_BONGO_SOUL);
ctx->possibleIceTrapModels.push_back(RG_TWINROVA_SOUL);
for (int rg = RG_GOHMA_SOUL; rg <= RG_TWINROVA_SOUL; rg++) {
AddItemToMainPool((RandomizerGet)rg);
ctx->possibleIceTrapModels.push_back((RandomizerGet)rg);
}

if (ctx->GetOption(RSK_SHUFFLE_BOSS_SOULS).Is(RO_BOSS_SOULS_ON_PLUS_GANON)) {
AddItemToMainPool(RG_GANON_SOUL);
ctx->possibleIceTrapModels.push_back(RG_GANON_SOUL);
}
}

if (ctx->GetOption(RSK_SHUFFLE_NPC_SOULS)) {
for (int rg = RG_ANJU_SOUL; rg <= RG_ZELDA_SOUL; rg++) {
AddItemToMainPool((RandomizerGet)rg);
}
}

if (ctx->GetOption(RSK_SHUFFLE_CHILD_WALLET)) {
AddItemToMainPool(RG_PROGRESSIVE_WALLET);
}
Expand Down
7 changes: 6 additions & 1 deletion soh/soh/Enhancements/randomizer/draw.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -963,11 +963,16 @@ extern "C" void Randomizer_DrawBossSoul(PlayState* play, GetItemEntry* getItemEn
Matrix_ReplaceRotation(&play->billboardMtxF);
gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx, (char*)__FILE__, __LINE__),
G_MTX_MODELVIEW | G_MTX_LOAD);
gDPSetGrayscaleColor(POLY_XLU_DISP++, flameColors[slot][0], flameColors[slot][1], flameColors[slot][2], 255);
if (slot >= 0 && slot < 9) {
gDPSetGrayscaleColor(POLY_XLU_DISP++, flameColors[slot][0], flameColors[slot][1], flameColors[slot][2], 255);
} else {
gDPSetGrayscaleColor(POLY_XLU_DISP++, 255, 255, 255, 255);
}
gSPGrayscale(POLY_XLU_DISP++, true);
gSPDisplayList(POLY_XLU_DISP++, (Gfx*)gGiBlueFireFlameDL);
gSPGrayscale(POLY_XLU_DISP++, false);
Matrix_Pop();

CLOSE_DISPS(play->state.gfxCtx);

// Draw the generic boss soul model
Expand Down
Loading
Loading