Skip to content

Commit

Permalink
Merge branch 'develop' into shuffle_fairies_rework
Browse files Browse the repository at this point in the history
  • Loading branch information
aMannus committed Jan 4, 2025
2 parents 865c4a9 + 1b65085 commit efc3b7a
Show file tree
Hide file tree
Showing 34 changed files with 552 additions and 483 deletions.
2 changes: 1 addition & 1 deletion docs/BUILDING.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
## Windows

Requires:
* At least 8GB of RAM (machines with 4GB have seen complier failures)
* At least 8GB of RAM (machines with 4GB have seen compiler failures)
* Visual Studio 2022 Community Edition with the C++ feature set
* One of the Windows SDKs that comes with Visual Studio, for example the current Windows 10 version 10.0.19041.0
* The `MSVC v143 - VS 2022 C++ build tools` component of Visual Studio
Expand Down
7 changes: 7 additions & 0 deletions docs/GAME_CONTROLLER_DB.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,3 +29,10 @@ This file is pulled from https://github.com/gabomdq/SDL_GameControllerDB during
| Spock Charlie 7.0.2 | [c5b4df0](https://github.com/gabomdq/SDL_GameControllerDB/tree/c5b4df0e1061175cb11e3ebbf8045178339864a5) | [+3](https://github.com/gabomdq/SDL_GameControllerDB/compare/228d980...c5b4df0) |
| Sulu Alfa 7.1.0 | [a2cf171](https://github.com/gabomdq/SDL_GameControllerDB/tree/a2cf1711b4ebc646a3814705d2fb6aac5707bcae) | [+4/-1](https://github.com/gabomdq/SDL_GameControllerDB/compare/c5b4df0...a2cf171) |
| Sulu Bravo 7.1.1 | [cc9f777](https://github.com/gabomdq/SDL_GameControllerDB/tree/cc9f777721f0cb30058d9eef52a295130b734a4a) | [+29/-9](https://github.com/gabomdq/SDL_GameControllerDB/compare/a2cf171...cc9f777) |
| MacReady Alfa 8.0.0 | [c56329f](https://github.com/gabomdq/SDL_GameControllerDB/tree/c56329f4df93fc7a780bdbeae47a9c91447b629c) | [+67/-23](https://github.com/gabomdq/SDL_GameControllerDB/compare/cc9f777...c56329f) |
| MacReady Bravo 8.0.1 | [721b575](https://github.com/gabomdq/SDL_GameControllerDB/tree/721b575d3053b21d6d30419bf74afb5b1d0fa7a4) | [+5/-5](https://github.com/gabomdq/SDL_GameControllerDB/compare/c56329f...721b575) |
| MacReady Charlie 8.0.2 | [721b575](https://github.com/gabomdq/SDL_GameControllerDB/tree/721b575d3053b21d6d30419bf74afb5b1d0fa7a4) | [+0/-0](https://github.com/gabomdq/SDL_GameControllerDB/compare/721b575...721b575) |
| MacReady Delta 8.0.3 | [d4ab609](https://github.com/gabomdq/SDL_GameControllerDB/tree/d4ab609121ee6e687bc3d3a7e80244b3b26d1164) | [+5/-3](https://github.com/gabomdq/SDL_GameControllerDB/compare/721b575...d4ab609) |
| MacReady Echo 8.0.4 | [6555d47](https://github.com/gabomdq/SDL_GameControllerDB/tree/6555d47ecb5d9eebac0e3d8cd19a545e9d946c40) | [+2/-0](https://github.com/gabomdq/SDL_GameControllerDB/compare/d4ab609...6555d47) |
| MacReady Foxtrot 8.0.5 | [037d6a1](https://github.com/gabomdq/SDL_GameControllerDB/tree/037d6a1533ed94fbc6a8c71e6f1f9aff1e46208a) | [+47/-14](https://github.com/gabomdq/SDL_GameControllerDB/compare/6555d47...037d6a1) |
| MacReady Golf 8.0.6 | [075c154](https://github.com/gabomdq/SDL_GameControllerDB/tree/075c1549075ef89a397fd7e0663d21e53a2485fd) | [+340/-301](https://github.com/gabomdq/SDL_GameControllerDB/compare/037d6a1...075c154) |
2 changes: 1 addition & 1 deletion docs/MODDING.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ if (IS_DAY || gTimeIncrement >= 0x190) {
}
```
We can make a quick change to this code to verify this is indeed what we are looking for, lets multiply the the gTimeIncrement by 10:
We can make a quick change to this code to verify this is indeed what we are looking for, lets multiply the gTimeIncrement by 10:
```diff
if (IS_DAY || gTimeIncrement >= 0x190) {
Expand Down
2 changes: 1 addition & 1 deletion libultraship
Submodule libultraship updated 66 files
+31 −1 src/controller/controldeck/ControlDeck.cpp
+3 −0 src/controller/controldeck/ControlDeck.h
+10 −0 src/controller/controldevice/controller/Controller.cpp
+1 −0 src/controller/controldevice/controller/Controller.h
+47 −7 src/controller/controldevice/controller/ControllerButton.cpp
+3 −1 src/controller/controldevice/controller/ControllerButton.h
+49 −8 src/controller/controldevice/controller/ControllerStick.cpp
+3 −1 src/controller/controldevice/controller/ControllerStick.h
+1 −1 src/controller/controldevice/controller/mapping/ControllerAxisDirectionMapping.cpp
+1 −1 src/controller/controldevice/controller/mapping/ControllerAxisDirectionMapping.h
+1 −1 src/controller/controldevice/controller/mapping/ControllerButtonMapping.cpp
+1 −1 src/controller/controldevice/controller/mapping/ControllerButtonMapping.h
+2 −1 src/controller/controldevice/controller/mapping/ControllerMapping.h
+52 −0 src/controller/controldevice/controller/mapping/factories/AxisDirectionMappingFactory.cpp
+3 −0 src/controller/controldevice/controller/mapping/factories/AxisDirectionMappingFactory.h
+33 −0 src/controller/controldevice/controller/mapping/factories/ButtonMappingFactory.cpp
+3 −0 src/controller/controldevice/controller/mapping/factories/ButtonMappingFactory.h
+1 −1 src/controller/controldevice/controller/mapping/keyboard/KeyboardKeyToAxisDirectionMapping.cpp
+1 −1 src/controller/controldevice/controller/mapping/keyboard/KeyboardKeyToAxisDirectionMapping.h
+1 −1 src/controller/controldevice/controller/mapping/keyboard/KeyboardKeyToButtonMapping.cpp
+1 −1 src/controller/controldevice/controller/mapping/keyboard/KeyboardKeyToButtonMapping.h
+25 −0 src/controller/controldevice/controller/mapping/keyboard/KeyboardScancodes.h
+35 −0 src/controller/controldevice/controller/mapping/mouse/MouseButtonToAnyMapping.cpp
+20 −0 src/controller/controldevice/controller/mapping/mouse/MouseButtonToAnyMapping.h
+49 −0 src/controller/controldevice/controller/mapping/mouse/MouseButtonToAxisDirectionMapping.cpp
+17 −0 src/controller/controldevice/controller/mapping/mouse/MouseButtonToAxisDirectionMapping.h
+51 −0 src/controller/controldevice/controller/mapping/mouse/MouseButtonToButtonMapping.cpp
+17 −0 src/controller/controldevice/controller/mapping/mouse/MouseButtonToButtonMapping.h
+26 −0 src/controller/controldevice/controller/mapping/mouse/MouseWheelToAnyMapping.cpp
+18 −0 src/controller/controldevice/controller/mapping/mouse/MouseWheelToAnyMapping.h
+56 −0 src/controller/controldevice/controller/mapping/mouse/MouseWheelToAxisDirectionMapping.cpp
+18 −0 src/controller/controldevice/controller/mapping/mouse/MouseWheelToAxisDirectionMapping.h
+53 −0 src/controller/controldevice/controller/mapping/mouse/MouseWheelToButtonMapping.cpp
+17 −0 src/controller/controldevice/controller/mapping/mouse/MouseWheelToButtonMapping.h
+102 −0 src/controller/controldevice/controller/mapping/mouse/WheelHandler.cpp
+36 −0 src/controller/controldevice/controller/mapping/mouse/WheelHandler.h
+1 −1 src/controller/controldevice/controller/mapping/sdl/SDLAxisDirectionToAnyMapping.cpp
+1 −1 src/controller/controldevice/controller/mapping/sdl/SDLAxisDirectionToAxisDirectionMapping.cpp
+1 −1 src/controller/controldevice/controller/mapping/sdl/SDLAxisDirectionToAxisDirectionMapping.h
+1 −1 src/controller/controldevice/controller/mapping/sdl/SDLAxisDirectionToButtonMapping.cpp
+1 −1 src/controller/controldevice/controller/mapping/sdl/SDLAxisDirectionToButtonMapping.h
+1 −1 src/controller/controldevice/controller/mapping/sdl/SDLButtonToAxisDirectionMapping.cpp
+1 −1 src/controller/controldevice/controller/mapping/sdl/SDLButtonToAxisDirectionMapping.h
+1 −1 src/controller/controldevice/controller/mapping/sdl/SDLButtonToButtonMapping.cpp
+1 −1 src/controller/controldevice/controller/mapping/sdl/SDLButtonToButtonMapping.h
+1 −0 src/controller/deviceindex/ShipDeviceIndex.h
+22 −4 src/graphic/Fast3D/Fast3dWindow.cpp
+3 −0 src/graphic/Fast3D/Fast3dWindow.h
+75 −21 src/graphic/Fast3D/gfx_dxgi.cpp
+0 −1 src/graphic/Fast3D/gfx_opengl.cpp
+29 −3 src/graphic/Fast3D/gfx_sdl2.cpp
+1 −0 src/graphic/Fast3D/gfx_window_manager_api.h
+4 −4 src/public/bridge/resourcebridge.cpp
+59 −41 src/resource/ResourceManager.cpp
+39 −22 src/resource/ResourceManager.h
+33 −2 src/resource/archive/ArchiveManager.cpp
+4 −1 src/resource/archive/ArchiveManager.h
+2 −3 src/utils/glob.c
+1 −2 src/window/Window.h
+13 −0 src/window/gui/GameOverlay.cpp
+1 −0 src/window/gui/GameOverlay.h
+52 −8 src/window/gui/Gui.cpp
+4 −0 src/window/gui/Gui.h
+66 −2 src/window/gui/InputEditorWindow.cpp
+1 −0 src/window/gui/InputEditorWindow.h
+1 −1 src/window/gui/resource/Font.cpp
7 changes: 3 additions & 4 deletions soh/soh/Enhancements/cosmetics/CosmeticsEditor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1445,11 +1445,10 @@ void Reset_Option_Double(const char* Button_Title, const char* name) {

void DrawSillyTab() {
ImGui::BeginDisabled(CVarGetInteger(CVAR_SETTING("DisableChanges"), 0));
if (CVarGetInteger(CVAR_GENERAL("LetItSnow"), 0)) {
if (UIWidgets::EnhancementCheckbox("Let It Snow", CVAR_GENERAL("LetItSnow"))) {
Ship::Context::GetInstance()->GetWindow()->GetGui()->SaveConsoleVariablesNextFrame();
}
if (UIWidgets::EnhancementCheckbox("Let It Snow", CVAR_GENERAL("LetItSnow"))) {
Ship::Context::GetInstance()->GetWindow()->GetGui()->SaveConsoleVariablesNextFrame();
}
UIWidgets::Tooltip("Makes snow fall, changes chest texture colors to red and green, etc, for December holidays.\nWill reset on restart outside of December 23-25.");
if (UIWidgets::EnhancementSliderFloat("Link Body Scale: %.3fx", "##Link_BodyScale", CVAR_COSMETIC("Link.BodyScale.Value"), 0.001f, 0.025f, "", 0.01f, true)) {
CVarSetInteger(CVAR_COSMETIC("Link.BodyScale.Changed"), 1);
}
Expand Down
37 changes: 37 additions & 0 deletions soh/soh/Enhancements/mods.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -777,6 +777,42 @@ void RegisterResetNaviTimer() {
});
}

void RegisterBrokenGiantsKnifeFix() {
GameInteractor::Instance->RegisterGameHook<GameInteractor::OnItemReceive>([](GetItemEntry itemEntry) {
if (itemEntry.itemId != ITEM_SWORD_BGS) {
return;
}

int32_t bypassEquipmentChecks = 0;

if (IS_RANDO || CVarGetInteger(CVAR_ENHANCEMENT("FixBrokenGiantsKnife"), 0)) {
// Flag wasn't reset because Kokiri or Master Sword was missing, so we need to
// bypass those checks
bypassEquipmentChecks |= (1 << EQUIP_INV_SWORD_KOKIRI) | (1 << EQUIP_INV_SWORD_MASTER);
} else {
// If enhancement is off, flag should be handled exclusively by vanilla behaviour
return;
}

int32_t allSwordsInEquipment = bypassEquipmentChecks | ALL_EQUIP_VALUE(EQUIP_TYPE_SWORD);
int32_t allSwordFlags = (1 << EQUIP_INV_SWORD_KOKIRI) | (1 << EQUIP_INV_SWORD_MASTER) |
(1 << EQUIP_INV_SWORD_BIGGORON) | (1 << EQUIP_INV_SWORD_BROKENGIANTKNIFE);

if (allSwordsInEquipment != allSwordFlags) {
return;
}

gSaveContext.inventory.equipment ^= OWNED_EQUIP_FLAG_ALT(EQUIP_TYPE_SWORD, EQUIP_INV_SWORD_BROKENGIANTKNIFE);

if (gSaveContext.equips.buttonItems[0] == ITEM_SWORD_KNIFE) {
gSaveContext.equips.buttonItems[0] = ITEM_SWORD_BGS;
if (gPlayState != NULL) {
Interface_LoadItemIcon1(gPlayState, 0);
}
}
});
}

//this map is used for enemies that can be uniquely identified by their id
//and that are always counted
//enemies that can't be uniquely identified by their id
Expand Down Expand Up @@ -1455,6 +1491,7 @@ void InitMods() {
RegisterMenuPathFix();
RegisterMirrorModeHandler();
RegisterResetNaviTimer();
RegisterBrokenGiantsKnifeFix();
RegisterEnemyDefeatCounts();
RegisterBossDefeatTimestamps();
RegisterAltTrapTypes();
Expand Down
46 changes: 25 additions & 21 deletions soh/soh/Enhancements/randomizer/3drando/hint_list.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2493,90 +2493,94 @@ void StaticData::HintTable_Init() {
/*--------------------------
| BOSS HINT TEXT |
---------------------------*/
//RANDOTODO check the beginning and end on the french and german translations
//RANDOTODO check the beginning and end on the french translations
hintTextTable[RHT_QUEEN_GOHMA] = HintText(CustomMessage("They say that #Queen Gohma# holds #[[1]]#.",
/*german*/ "Man erzählt sich, daß #Königin Gohma# hält #[[1]]# lehre.",
/*german*/ "Man erzählt sich, daß #Königin Gohma# #[[1]]# hielte.",
/*french*/ "Selon moi, la #Reine Gohma# possède #[[1]]#.", {QM_RED, QM_GREEN}),
// /*spanish*/la #Reina Goma# porta #[[1]]#.
{},
{CustomMessage("They say that the #Parasitic Armored Arachnid# holds #[[1]]#.",
/*german*/ "Man erzählt sich, daß die #gepanzerte parasitäre Spinne# hält #[[1]]# lehre.",
/*german*/ "Man erzählt sich, daß die #gepanzerte parasitäre Spinne# #[[1]]# hielte.",
/*french*/ "Selon moi, le #monstre insectoïde géant# possède #[[1]]#.", {QM_RED, QM_GREEN})});
// /*spanish*/el #arácnido parasitario acorazado# porta #[[1]]#.

hintTextTable[RHT_KING_DODONGO] = HintText(CustomMessage("They say that #King Dodongo# holds #[[1]]#.",
/*german*/ "Man erzählt sich, daß #König Dodongo# hält #[[1]]# lehre.",
/*german*/ "Man erzählt sich, daß #König Dodongo# #[[1]]# hielte.",
/*french*/ "Selon moi, le #Roi Dodongo# possède #[[1]]#.", {QM_RED, QM_GREEN}),
// /*spanish*/el #Rey Dodongo# porta #[[1]]#.
{},
{CustomMessage("They say that the #Infernal Dinosaur# holds #[[1]]#.",
/*german*/ "Man erzählt sich, daß der #infernalische Dinosaurier# hält #[[1]]# lehre.",
/*german*/ "Man erzählt sich, daß der #infernalische Dinosaurier# #[[1]]# hielte.",
/*french*/ "Selon moi, le #dinosaure infernal# possède #[[1]]#.", {QM_RED, QM_GREEN})});
// /*spanish*/el #dinosaurio infernal# porta #[[1]]#.

hintTextTable[RHT_BARINADE] = HintText(CustomMessage("They say that #Barinade# holds #[[1]]#.",
/*german*/ "Man erzählt sich, daß #Barinade# hält #[[1]]# lehre.",
/*german*/ "Man erzählt sich, daß #Barinade# #[[1]]# hielte.",
/*french*/ "Selon moi, #Barinade# possède #[[1]]#.", {QM_RED, QM_GREEN}),
// /*spanish*/#Barinade# porta #[[1]]#.
{},
{CustomMessage("They say that the #Bio-Electric Anemone# holds #[[1]]#.",
/*german*/ "Man erzählt sich, daß die #bioelektrische Anemone# hält #[[1]]# lehre.",
/*german*/ "Man erzählt sich, daß die #bioelektrische Anemone# #[[1]]# hielte.",
/*french*/ "Selon moi, l'#anémone bioélectrique# possède #[[1]]#.", {QM_RED, QM_GREEN})});
// /*spanish*/la #anémona bioeléctrica# porta #[[1]]#.

hintTextTable[RHT_PHANTOM_GANON] = HintText(CustomMessage("They say that #Phantom Ganon# holds #[[1]]#.",
/*german*/ "Man erzählt sich, daß #Phantom-Ganon# hält #[[1]]# lehre.",
/*german*/ "Man erzählt sich, daß #Phantom-Ganon# #[[1]]# hielte.",
/*french*/ "Selon moi, #Ganon Spectral# possède #[[1]]#.", {QM_RED, QM_GREEN}),
// /*spanish*/#Ganon Fantasma# porta #[[1]]#.
{},
{CustomMessage("They say that the #Evil Spirit from Beyond# holds #[[1]]#.",
/*german*/ "Man erzählt sich, daß der #böse Geist aus dem Jenseits# hält #[[1]]# lehre.",
/*german*/ "Man erzählt sich, daß der #böse Geist aus dem Jenseits# #[[1]]# hielte.",
/*french*/ "Selon moi, l'#esprit maléfique de l'au-delà# possède #[[1]]#.", {QM_RED, QM_GREEN})});
// /*spanish*/el #espíritu maligno de ultratumba# porta #[[1]]#.

hintTextTable[RHT_VOLVAGIA] = HintText(CustomMessage("They say that #Volvagia# holds #[[1]]#.",
/*german*/ "Man erzählt sich, daß #Volvagia# hält #[[1]]# lehre.",
/*german*/ "Man erzählt sich, daß #Volvagia# #[[1]]# hielte.",
/*french*/ "Selon moi, #Volvagia# possède #[[1]]#.", {QM_RED, QM_GREEN}),
// /*spanish*/#Volvagia# porta #[[1]]#.
{},
{CustomMessage("They say that the #Subterranean Lava Dragon# holds #[[1]]#.",
/*german*/ "Man erzählt sich, daß der #subterrane Lavadrache# hält #[[1]]# lehre.",
/*german*/ "Man erzählt sich, daß der #subterrane Lavadrache# #[[1]]# hielte.",
/*french*/ "Selon moi, le #dragon des profondeurs# possède #[[1]]#.", {QM_RED, QM_GREEN})});
// /*spanish*/el #dragón de lava subterráneo# porta #[[1]]#.

hintTextTable[RHT_MORPHA] = HintText(CustomMessage("They say that #Morpha# holds #[[1]]#.",
/*german*/ "Man erzählt sich, daß #Morpha# hält #[[1]]# lehre.",
/*german*/ "Man erzählt sich, daß #Morpha# #[[1]]# hielte.",
/*french*/ "Selon moi, #Morpha# possède #[[1]]#.", {QM_RED, QM_GREEN}),
// /*spanish*/#Morpha# porta #[[1]]#.
{},
{CustomMessage("They say that the #Giant Aquatic Amoeba# holds #[[1]]#.",
/*german*/ "Man erzählt sich, daß die #gigantische aquatische Amöbe# hält #[[1]]# lehre.",
/*german*/ "Man erzählt sich, daß die #gigantische aquatische Amöbe# #[[1]]# hielte.",
/*french*/ "Selon moi, l'#amibe aquatique géante# possède #[[1]]#.", {QM_RED, QM_GREEN})});
// /*spanish*/la #ameba acuática gigante# porta #[[1]]#.

hintTextTable[RHT_BONGO_BONGO] = HintText(CustomMessage("They say that #Bongo Bongo# holds #[[1]]#.",
/*german*/ "Man erzählt sich, daß #Bongo Bongo# hält #[[1]]# lehre.",
/*german*/ "Man erzählt sich, daß #Bongo Bongo# #[[1]]# hielte.",
/*french*/ "Selon moi, #Bongo Bongo# possède #[[1]]#.", {QM_RED, QM_GREEN}),
// /*spanish*/#Bongo Bongo# porta #[[1]]#.
{},
{CustomMessage("They say that the #Phantom Shadow Beast# holds #[[1]]#.",
/*german*/ "Man erzählt sich, daß das #Phantomschattenbiest# hält #[[1]]# lehre.",
/*german*/ "Man erzählt sich, daß das #Phantomschattenbiest# #[[1]]# hielte.",
/*french*/ "Selon moi, le #monstre de l'ombre# possède #[[1]]#.", {QM_RED, QM_GREEN})});
// /*spanish*/la #alimaña oscura espectral# porta #[[1]]#.

hintTextTable[RHT_TWINROVA] = HintText(CustomMessage("They say that #Twinrova# holds #[[1]]#.",
/*german*/ "Man erzählt sich, daß #Twinrova# hält #[[1]]# lehre.",
/*german*/ "Man erzählt sich, daß #Twinrova# #[[1]]# hielte.",
/*french*/ "Selon moi, #Twinrova# possède #[[1]]#.", {QM_RED, QM_GREEN}),
// /*spanish*/#Birova# porta #[[1]]#.
{},
{CustomMessage("They say that the #Sorceress Sisters# hold #[[1]]#.",
/*german*/ "Man erzählt sich, daß die #Hexenschwestern# halten #[[1]]# lehre.",
/*german*/ "Man erzählt sich, daß die #Hexenschwestern# #[[1]]# hielten.",
/*french*/ "Selon moi, #les sorcières jumelles# possède #[[1]]#.", {QM_RED, QM_GREEN})});
// /*spanish*/las #hermanas hechiceras# portan #[[1]]#.

hintTextTable[RHT_GIFT_FROM_RAURU] = HintText(CustomMessage("They say that the #Sage of Light# gifts @ #[[1]]#.", {QM_RED, QM_GREEN}),
{},
{CustomMessage("They say that #a former owl# gifts @ #[[1]]#.", {QM_RED, QM_GREEN})});
hintTextTable[RHT_GIFT_FROM_RAURU] = HintText(CustomMessage("They say that the #Sage of Light# gifts @ #[[1]]#.",
/*german*/ "Man erzählt sich, daß der #Weise des Lichts# #[[1]]# schenke.",
/*french*/ "Selon moi, #le Sage de la Lumière# donne #[[1]]#.", {QM_RED, QM_GREEN}),
{},
{CustomMessage("They say that #a former owl# gifts @ #[[1]]#.",
/*german*/ "Man erzählt sich, daß #eine einstige Eule# #[[1]]# schenke.",
/*french*/ "Selon moi, #un ancien hibou# donne #[[1]]#.", {QM_RED, QM_GREEN})});

/*--------------------------
| BRIDGE HINT TEXT |
Expand Down Expand Up @@ -2782,7 +2786,7 @@ void StaticData::HintTable_Init() {
| ALTAR TEXT |
---------------------------*/

hintTextTable[RHT_CHILD_ALTAR_STONES] = HintText(CustomMessage("3 Spiritual Stone's found in Hyrule...^$0#[[1]]#...^$1#[[2]]#...^$2#[[3]]#...^",
hintTextTable[RHT_CHILD_ALTAR_STONES] = HintText(CustomMessage("3 Spiritual Stones found in Hyrule...^$0#[[1]]#...^$1#[[2]]#...^$2#[[3]]#...^",
/*german*/ "Drei Heilige Steine, zu finden in Hyrule...$0#[[1]]#...^$1#[[2]]#...^$2#[[3]]#...^",
/*french*/ "Les trois Pierres Ancestrales cachées&dans Hyrule...$0#[[1]]#...^$1#[[2]]#...^$2#[[3]]#...^",
{QM_GREEN, QM_RED, QM_BLUE}, {true, true, true}));
Expand Down
Loading

0 comments on commit efc3b7a

Please sign in to comment.