prep for clang format (#5202)

This commit is contained in:
Archez 2025-03-25 04:22:18 -04:00 committed by GitHub
commit aabeffa254
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
76 changed files with 299 additions and 134 deletions

View file

@ -462,7 +462,7 @@ static constexpr std::pair<u16, const char*> actorDescriptionData[] = {
{ ACTOR_EN_ZL4, "Zelda (Child)" }, { ACTOR_EN_ZL4, "Zelda (Child)" },
{ ACTOR_EN_MM2, "Running Man (Adult Era)" }, { ACTOR_EN_MM2, "Running Man (Adult Era)" },
{ ACTOR_BG_JYA_BLOCK, "Silver Block (Child Era)" }, { ACTOR_BG_JYA_BLOCK, "Silver Block (Child Era)" },
{ ACTOR_OBJ_WARP2BLOCK, "Navi Infospot (Green, Time Block)" } { ACTOR_OBJ_WARP2BLOCK, "Navi Infospot (Green, Time Block)" },
}; };
static std::unordered_map<u16, const char*> actorDescriptions = std::unordered_map<u16, const char*>(std::begin(actorDescriptionData), std::end(actorDescriptionData)); static std::unordered_map<u16, const char*> actorDescriptions = std::unordered_map<u16, const char*>(std::begin(actorDescriptionData), std::end(actorDescriptionData));

View file

@ -17,7 +17,7 @@ typedef enum TimerDisplay {
DISPLAY_IN_GAME_TIMER, DISPLAY_IN_GAME_TIMER,
DISPLAY_TIME_OF_DAY, DISPLAY_TIME_OF_DAY,
DISPLAY_CONDITIONAL_TIMER, DISPLAY_CONDITIONAL_TIMER,
DISPLAY_NAVI_TIMER DISPLAY_NAVI_TIMER,
} TimerDisplay; } TimerDisplay;
typedef enum NaviTimerValues { typedef enum NaviTimerValues {
@ -34,4 +34,4 @@ typedef struct {
const char* timeEnable; const char* timeEnable;
} TimeObject; } TimeObject;
extern const std::vector<TimeObject> timeDisplayList; extern const std::vector<TimeObject> timeDisplayList;

View file

@ -14,6 +14,7 @@
{ sequenceId, { sequenceId, label, sfxKey, category, canBeReplaced, canBeUsedAsReplacement } } { sequenceId, { sequenceId, label, sfxKey, category, canBeReplaced, canBeUsedAsReplacement } }
AudioCollection::AudioCollection() { AudioCollection::AudioCollection() {
// clang-format off
// (originalSequenceId, label, sfxKey, category, canBeReplaced, canBeUsedAsReplacement), // (originalSequenceId, label, sfxKey, category, canBeReplaced, canBeUsedAsReplacement),
sequenceMap = { sequenceMap = {
@ -328,7 +329,7 @@ AudioCollection::AudioCollection() {
//SEQUENCE_MAP_ENTRY(NA_SE_VO_DUMMY_0x88_YOBI, "NA_SE_VO_DUMMY_0x88_YOBI", "NA_SE_VO_DUMMY_0x88_YOBI", SEQ_VOICE, true, false), // .. //SEQUENCE_MAP_ENTRY(NA_SE_VO_DUMMY_0x88_YOBI, "NA_SE_VO_DUMMY_0x88_YOBI", "NA_SE_VO_DUMMY_0x88_YOBI", SEQ_VOICE, true, false), // ..
//SEQUENCE_MAP_ENTRY(NA_SE_VO_DUMMY_0x89_YOBI, "NA_SE_VO_DUMMY_0x89_YOBI", "NA_SE_VO_DUMMY_0x89_YOBI", SEQ_VOICE, true, false), // .. //SEQUENCE_MAP_ENTRY(NA_SE_VO_DUMMY_0x89_YOBI, "NA_SE_VO_DUMMY_0x89_YOBI", "NA_SE_VO_DUMMY_0x89_YOBI", SEQ_VOICE, true, false), // ..
}; };
// clang-format on
} }
std::string AudioCollection::GetCvarKey(std::string sfxKey) { std::string AudioCollection::GetCvarKey(std::string sfxKey) {

View file

@ -618,7 +618,7 @@ void AudioEditor::DrawElement() {
{SEQ_SFX, true }, {SEQ_SFX, true },
{SEQ_VOICE, true }, {SEQ_VOICE, true },
{SEQ_INSTRUMENT, true}, {SEQ_INSTRUMENT, true},
{SEQ_BGM_CUSTOM, true} {SEQ_BGM_CUSTOM, true},
}; };
// make temporary sets because removing from the set we're iterating through crashes ImGui // make temporary sets because removing from the set we're iterating through crashes ImGui
@ -772,7 +772,7 @@ void AudioEditor::DrawElement() {
UIWidgets::PopStyleTabs(); UIWidgets::PopStyleTabs();
} }
std::vector<SeqType> allTypes = { SEQ_BGM_WORLD, SEQ_BGM_EVENT, SEQ_BGM_BATTLE, SEQ_OCARINA, SEQ_FANFARE, SEQ_INSTRUMENT, SEQ_SFX, SEQ_VOICE }; std::vector<SeqType> allTypes = { SEQ_BGM_WORLD, SEQ_BGM_EVENT, SEQ_BGM_BATTLE, SEQ_OCARINA, SEQ_FANFARE, SEQ_INSTRUMENT, SEQ_SFX, SEQ_VOICE, };
void AudioEditor_RandomizeAll() { void AudioEditor_RandomizeAll() {
for (auto type : allTypes) { for (auto type : allTypes) {

View file

@ -1,4 +1,4 @@
#include "BossRush.h" #include "BossRush.h"
#include "soh/OTRGlobals.h" #include "soh/OTRGlobals.h"
#include "soh/Enhancements/game-interactor/GameInteractor.h" #include "soh/Enhancements/game-interactor/GameInteractor.h"
#include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h" #include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h"
@ -34,7 +34,7 @@ BossRushSetting BossRushOptions[BR_OPTIONS_MAX] = {
{ "All", "Alle", "Tous" }, { "All", "Alle", "Tous" },
{ "Child", "Kind", "Enfant" }, { "Child", "Kind", "Enfant" },
{ "Adult", "Erwachsener", "Adulte" }, { "Adult", "Erwachsener", "Adulte" },
{ "Ganondorf & Ganon", "Ganondorf & Ganon", "Ganondorf & Ganon" } { "Ganondorf & Ganon", "Ganondorf & Ganon", "Ganondorf & Ganon" },
} }
}, },
{ {
@ -45,7 +45,7 @@ BossRushSetting BossRushOptions[BR_OPTIONS_MAX] = {
{ "20", "20", "20" }, { "20", "20", "20" },
{ "3", "3", "3" }, { "3", "3", "3" },
{ "5", "5", "5" }, { "5", "5", "5" },
{ "7", "7", "7" } { "7", "7", "7" },
} }
}, },
{ {
@ -53,7 +53,7 @@ BossRushSetting BossRushOptions[BR_OPTIONS_MAX] = {
{ {
{ "Limited", "Limitiert", "Limitées" }, { "Limited", "Limitiert", "Limitées" },
{ "Full", "Voll", "Pleines" }, { "Full", "Voll", "Pleines" },
{ "Maxed", "Maximum", "Maximum" } { "Maxed", "Maximum", "Maximum" },
} }
}, },
{ {
@ -61,28 +61,28 @@ BossRushSetting BossRushOptions[BR_OPTIONS_MAX] = {
{ {
{ "Before Ganondorf", "Vor Ganondorf", "Avant Ganondorf" }, { "Before Ganondorf", "Vor Ganondorf", "Avant Ganondorf" },
{ "Every Boss", "Bei jedem Boss", "Tous les Boss" }, { "Every Boss", "Bei jedem Boss", "Tous les Boss" },
{ "Never", "Niemals", "Jamais" } { "Never", "Niemals", "Jamais" },
} }
}, },
{ {
{ "HYPER BOSSES:", "HYPER-BOSSE:", "HYPER BOSS:" }, { "HYPER BOSSES:", "HYPER-BOSSE:", "HYPER BOSS:" },
{ {
{ "No", "Nein", "Non" }, { "No", "Nein", "Non" },
{ "Yes", "Ja", "Oui" } { "Yes", "Ja", "Oui" },
} }
}, },
{ {
{ "MAGIC:", "MAGIE:", "MAGIE:" }, { "MAGIC:", "MAGIE:", "MAGIE:" },
{ {
{ "Single", "Einzel", "Simple" }, { "Single", "Einzel", "Simple" },
{ "Double", "Doppel", "Double" } { "Double", "Doppel", "Double" },
} }
}, },
{ {
{ "BIG. SWORD:", "BIG.-SCHWERT:", "EPÉE DE BIG.:" }, { "BIG. SWORD:", "BIG.-SCHWERT:", "EPÉE DE BIG.:" },
{ {
{ "No", "Nein", "Non" }, { "No", "Nein", "Non" },
{ "Yes", "Ja", "Oui" } { "Yes", "Ja", "Oui" },
} }
}, },
{ {
@ -93,35 +93,35 @@ BossRushSetting BossRushOptions[BR_OPTIONS_MAX] = {
{ "Fairy", "Fee", "Fée" }, { "Fairy", "Fee", "Fée" },
{ "Red Potion", "Rotes Elixier", "Potion Rouge" }, { "Red Potion", "Rotes Elixier", "Potion Rouge" },
{ "Green Potion", "Grünes Elixier", "Potion Verte" }, { "Green Potion", "Grünes Elixier", "Potion Verte" },
{ "Blue Potion", "Blaues Elixier", "Potion Bleue" } { "Blue Potion", "Blaues Elixier", "Potion Bleue" },
} }
}, },
{ {
{ "LONGSHOT:", "ENTERHAKEN:", "SUPER GRAPPIN:" }, { "LONGSHOT:", "ENTERHAKEN:", "SUPER GRAPPIN:" },
{ {
{ "No", "Nein", "Non" }, { "No", "Nein", "Non" },
{ "Yes", "Ja", "Oui" } { "Yes", "Ja", "Oui" },
} }
}, },
{ {
{ "HOVER BOOTS:", "GLEITSTIEFEL:", "BOTTES DES AIRS:" }, { "HOVER BOOTS:", "GLEITSTIEFEL:", "BOTTES DES AIRS:" },
{ {
{ "No", "Nein", "Non" }, { "No", "Nein", "Non" },
{ "Yes", "Ja", "Oui" } { "Yes", "Ja", "Oui" },
} }
}, },
{ {
{ "BUNNY HOOD:", "HASENOHREN:", "MASQUE DU LAPIN:" }, { "BUNNY HOOD:", "HASENOHREN:", "MASQUE DU LAPIN:" },
{ {
{ "No", "Nein", "Non" }, { "No", "Nein", "Non" },
{ "Yes", "Ja", "Oui" } { "Yes", "Ja", "Oui" },
} }
}, },
{ {
{ "TIMER:", "TIMER:", "TIMER:" }, { "TIMER:", "TIMER:", "TIMER:" },
{ {
{ "Yes", "Ja", "Oui" }, { "Yes", "Ja", "Oui" },
{ "No", "Nein", "Non" } { "No", "Nein", "Non" },
} }
} }
}; };
@ -507,7 +507,7 @@ void BossRush_InitSave() {
static void* sSavePromptNoChoiceTexs[] = { static void* sSavePromptNoChoiceTexs[] = {
(void*)gPauseNoENGTex, (void*)gPauseNoENGTex,
(void*)gPauseNoGERTex, (void*)gPauseNoGERTex,
(void*)gPauseNoFRATex (void*)gPauseNoFRATex,
}; };
void BossRush_OnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, va_list originalArgs) { void BossRush_OnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, va_list originalArgs) {

View file

@ -37,28 +37,28 @@ typedef enum {
typedef enum { typedef enum {
BR_CHOICE_AMMO_LIMITED, BR_CHOICE_AMMO_LIMITED,
BR_CHOICE_AMMO_FULL, BR_CHOICE_AMMO_FULL,
BR_CHOICE_AMMO_MAXED BR_CHOICE_AMMO_MAXED,
} BossRushAmmoChoices; } BossRushAmmoChoices;
typedef enum { typedef enum {
BR_CHOICE_HEAL_GANONDORF, BR_CHOICE_HEAL_GANONDORF,
BR_CHOICE_HEAL_EVERYBOSS, BR_CHOICE_HEAL_EVERYBOSS,
BR_CHOICE_HEAL_NEVER BR_CHOICE_HEAL_NEVER,
} BossRushHealChoices; } BossRushHealChoices;
typedef enum { typedef enum {
BR_CHOICE_HYPERBOSSES_NO, BR_CHOICE_HYPERBOSSES_NO,
BR_CHOICE_HYPERBOSSES_YES BR_CHOICE_HYPERBOSSES_YES,
} BossRushHyperBossesChoices; } BossRushHyperBossesChoices;
typedef enum { typedef enum {
BR_CHOICE_MAGIC_SINGLE, BR_CHOICE_MAGIC_SINGLE,
BR_CHOICE_MAGIC_DOUBLE BR_CHOICE_MAGIC_DOUBLE,
} BossRushMagicChoices; } BossRushMagicChoices;
typedef enum { typedef enum {
BR_CHOICE_BGS_NO, BR_CHOICE_BGS_NO,
BR_CHOICE_BGS_YES BR_CHOICE_BGS_YES,
} BossRushBgsChoices; } BossRushBgsChoices;
typedef enum { typedef enum {
@ -72,20 +72,20 @@ typedef enum {
typedef enum { typedef enum {
BR_CHOICE_LONGSHOT_NO, BR_CHOICE_LONGSHOT_NO,
BR_CHOICE_LONGSHOT_YES BR_CHOICE_LONGSHOT_YES,
} BossRushLongshotChoices; } BossRushLongshotChoices;
typedef enum { typedef enum {
BR_CHOICE_HOVERBOOTS_NO, BR_CHOICE_HOVERBOOTS_NO,
BR_CHOICE_HOVERBOOTS_YES BR_CHOICE_HOVERBOOTS_YES,
} BossRushHoverBootsChoices; } BossRushHoverBootsChoices;
typedef enum { typedef enum {
BR_CHOICE_BUNNYHOOD_NO, BR_CHOICE_BUNNYHOOD_NO,
BR_CHOICE_BUNNYHOOD_YES BR_CHOICE_BUNNYHOOD_YES,
} BossRushBunnyHoodChoices; } BossRushBunnyHoodChoices;
typedef enum { typedef enum {
BR_CHOICE_TIMER_YES, BR_CHOICE_TIMER_YES,
BR_CHOICE_TIMER_NO BR_CHOICE_TIMER_NO,
} BossRushTimerChoices; } BossRushTimerChoices;

View file

@ -119,6 +119,7 @@ Color_RGBA8 ColorRGBA8(uint8_t r, uint8_t g, uint8_t b, uint8_t a) {
supportsAlpha, supportsRainbow, advancedOption \ supportsAlpha, supportsRainbow, advancedOption \
} } } }
// clang-format off
/* /*
So, you would like to add a new cosmetic option? BUCKLE UP So, you would like to add a new cosmetic option? BUCKLE UP
@ -439,6 +440,7 @@ static std::map<std::string, CosmeticOption> cosmeticOptions = {
COSMETIC_OPTION("NPC.MetalTrap", "Metal Trap", COSMETICS_GROUP_NPC, ColorRGBA8(255, 255, 255, 255), false, true, true), COSMETIC_OPTION("NPC.MetalTrap", "Metal Trap", COSMETICS_GROUP_NPC, ColorRGBA8(255, 255, 255, 255), false, true, true),
COSMETIC_OPTION("NPC.IronKnuckles", "Iron Knuckles", COSMETICS_GROUP_NPC, ColorRGBA8(245, 255, 205, 255), false, true, false), COSMETIC_OPTION("NPC.IronKnuckles", "Iron Knuckles", COSMETICS_GROUP_NPC, ColorRGBA8(245, 255, 205, 255), false, true, false),
}; };
// clang-format on
static const char* MarginCvarList[] { static const char* MarginCvarList[] {
CVAR_COSMETIC("HUD.Hearts"), CVAR_COSMETIC("HUD.Hearts"),
@ -461,7 +463,7 @@ static const char* MarginCvarList[] {
CVAR_COSMETIC("HUD.ArcheryScore"), CVAR_COSMETIC("HUD.ArcheryScore"),
CVAR_COSMETIC("HUD.TitleCard.Map"), CVAR_COSMETIC("HUD.TitleCard.Map"),
CVAR_COSMETIC("HUD.TitleCard.Boss"), CVAR_COSMETIC("HUD.TitleCard.Boss"),
CVAR_COSMETIC("HUD.IGT") CVAR_COSMETIC("HUD.IGT"),
}; };
static const char* MarginCvarNonAnchor[] { static const char* MarginCvarNonAnchor[] {
@ -469,7 +471,7 @@ static const char* MarginCvarNonAnchor[] {
CVAR_COSMETIC("HUD.Timers"), CVAR_COSMETIC("HUD.Timers"),
CVAR_COSMETIC("HUD.ArcheryScore"), CVAR_COSMETIC("HUD.ArcheryScore"),
CVAR_COSMETIC("HUD.TitleCard.Map"), CVAR_COSMETIC("HUD.TitleCard.Map"),
CVAR_COSMETIC("HUD.TitleCard.Boss") CVAR_COSMETIC("HUD.TitleCard.Boss"),
}; };
void SetMarginAll(const char* ButtonName, bool SetActivated, const char* tooltip) { void SetMarginAll(const char* ButtonName, bool SetActivated, const char* tooltip) {

View file

@ -25,7 +25,7 @@ typedef enum {
COSMETICS_GROUP_NAVI, COSMETICS_GROUP_NAVI,
COSMETICS_GROUP_IVAN, COSMETICS_GROUP_IVAN,
COSMETICS_GROUP_MESSAGE, COSMETICS_GROUP_MESSAGE,
COSMETICS_GROUP_MAX COSMETICS_GROUP_MAX,
} CosmeticGroup; } CosmeticGroup;
#ifdef __cplusplus #ifdef __cplusplus

View file

@ -1,6 +1,6 @@
typedef enum { typedef enum {
COLORSCHEME_N64, COLORSCHEME_N64,
COLORSCHEME_GAMECUBE COLORSCHEME_GAMECUBE,
} DefaultColorScheme; } DefaultColorScheme;
typedef enum { typedef enum {
@ -15,5 +15,5 @@ typedef enum {
ANCHOR_RIGHT, ANCHOR_RIGHT,
ANCHOR_NONE, ANCHOR_NONE,
HIDDEN, HIDDEN,
ANCHOR_TO_LIFE_METER ANCHOR_TO_LIFE_METER,
} PosType; } PosType;

View file

@ -18,11 +18,11 @@ static const std::unordered_map<std::string, char> textBoxSpecialCharacters = {
}; };
static const std::unordered_map<std::string, std::string> percentColors = { { "w", QM_WHITE }, { "r", QM_RED }, { "g", QM_GREEN }, static const std::unordered_map<std::string, std::string> percentColors = { { "w", QM_WHITE }, { "r", QM_RED }, { "g", QM_GREEN },
{ "b", QM_BLUE }, { "c", QM_LBLUE }, { "p", QM_PINK }, { "b", QM_BLUE }, { "c", QM_LBLUE }, { "p", QM_PINK },
{ "y", QM_YELLOW }, { "B", QM_BLACK } }; { "y", QM_YELLOW }, { "B", QM_BLACK }, };
static const std::unordered_map<std::string, std::string> colorToPercent = { { QM_WHITE, "%w" }, { QM_RED, "%r"}, { QM_GREEN, "%g" }, static const std::unordered_map<std::string, std::string> colorToPercent = { { QM_WHITE, "%w" }, { QM_RED, "%r"}, { QM_GREEN, "%g" },
{ QM_BLUE, "%b" }, { QM_LBLUE, "%c"}, { QM_PINK, "%p" }, { QM_BLUE, "%b" }, { QM_LBLUE, "%c"}, { QM_PINK, "%p" },
{ QM_YELLOW, "%y" }, { QM_BLACK, "%B" } }; { QM_YELLOW, "%y" }, { QM_BLACK, "%B" }, };
static const std::unordered_map<std::string, ItemID> altarIcons = { static const std::unordered_map<std::string, ItemID> altarIcons = {
{ "0", ITEM_KOKIRI_EMERALD }, { "0", ITEM_KOKIRI_EMERALD },
@ -44,7 +44,7 @@ static const std::unordered_map<std::string, ItemID> altarIcons = {
{ "m", ITEM_DUNGEON_MAP }, { "m", ITEM_DUNGEON_MAP },
{ "C", ITEM_COMPASS }, { "C", ITEM_COMPASS },
{ "s", ITEM_SKULL_TOKEN }, { "s", ITEM_SKULL_TOKEN },
{ "g", ITEM_MASK_GORON } { "g", ITEM_MASK_GORON },
}; };
static std::map<std::string, int> pixelWidthTable = { static std::map<std::string, int> pixelWidthTable = {
@ -72,7 +72,7 @@ static std::map<std::string, int> pixelWidthTable = {
{ "í", 5 }, { "î", 5 }, { "ï", 5 }, { "ð", 7 }, { "ñ", 7 }, { "ò", 7 }, { "ó", 7 }, { "ô", 7 }, { "í", 5 }, { "î", 5 }, { "ï", 5 }, { "ð", 7 }, { "ñ", 7 }, { "ò", 7 }, { "ó", 7 }, { "ô", 7 },
{ "õ", 7 }, { "ö", 7 }, { "÷", 11 }, { "ø", 9 }, { "ù", 7 }, { "ú", 7 }, { "û", 7 }, { "ü", 7 }, { "õ", 7 }, { "ö", 7 }, { "÷", 11 }, { "ø", 9 }, { "ù", 7 }, { "ú", 7 }, { "û", 7 }, { "ü", 7 },
{ "ý", 8 }, { "þ", 8 }, { "ÿ", 8 }, { "Œ", 11 }, { "œ", 11 }, { "", 5 }, { "", 5 }, { "", 10 }, { "ý", 8 }, { "þ", 8 }, { "ÿ", 8 }, { "Œ", 11 }, { "œ", 11 }, { "", 5 }, { "", 5 }, { "", 10 },
{ "Ÿ", 10 }, { "~", 8 } { "Ÿ", 10 }, { "~", 8 },
}; };
CustomMessage::CustomMessage(std::string english_, std::string german_, std::string french_, TextBoxType type_, CustomMessage::CustomMessage(std::string english_, std::string german_, std::string french_, TextBoxType type_,

View file

@ -181,7 +181,7 @@ static const char* msgStaticTbl[] =
gFadingMessageBackgroundTex, gFadingMessageBackgroundTex,
gMessageContinueTriangleTex, gMessageContinueTriangleTex,
gMessageEndSquareTex, gMessageEndSquareTex,
gMessageArrowTex gMessageArrowTex,
}; };
void MessageDebug_StartTextBox(const char* tableId, uint16_t textId, uint8_t language) { void MessageDebug_StartTextBox(const char* tableId, uint16_t textId, uint8_t language) {

View file

@ -42,7 +42,7 @@ typedef enum {
LIST, LIST,
TARGET, TARGET,
HELD, HELD,
INTERACT INTERACT,
} RetrievalMethod; } RetrievalMethod;
std::array<const char*, 12> acMapping = { std::array<const char*, 12> acMapping = {
@ -230,7 +230,7 @@ static std::vector<u16> noParamsActors = {
ACTOR_UNSET_15D, ACTOR_UNSET_15D,
ACTOR_UNSET_161, ACTOR_UNSET_161,
ACTOR_UNSET_180, ACTOR_UNSET_180,
ACTOR_UNSET_1AA ACTOR_UNSET_1AA,
}; };
static std::unordered_map<u16, std::function<s16(s16)>> actorSpecificData; static std::unordered_map<u16, std::function<s16(s16)>> actorSpecificData;
@ -402,7 +402,7 @@ void CreateActorSpecificData() {
"Zora Tunic", "Zora Tunic",
"Goron Tunic", "Goron Tunic",
"Bombs (Special)", "Bombs (Special)",
"Bombchus" "Bombchus",
}; };
int selectedItem = params & 0xFF; int selectedItem = params & 0xFF;
@ -439,7 +439,7 @@ void CreateActorSpecificData() {
"Zora Tunic", "Zora Tunic",
"Goron Tunic", "Goron Tunic",
"Bombs (Special)", "Bombs (Special)",
"Bombchus" "Bombchus",
}; };
int selectedItem = params & 0xFF; int selectedItem = params & 0xFF;
@ -519,7 +519,7 @@ void CreateActorSpecificData() {
"Bombs (5) (35 Rupees)", "Bombs (5) (35 Rupees)",
"Red Potion (40 Rupees)", "Red Potion (40 Rupees)",
"Red Potion (50 Rupees)", "Red Potion (50 Rupees)",
"Randomizer Item" "Randomizer Item",
}; };
int selectedItem = params; int selectedItem = params;
if (ImGui::Combo("Type", &selectedItem, items, IM_ARRAYSIZE(items))) { if (ImGui::Combo("Type", &selectedItem, items, IM_ARRAYSIZE(items))) {
@ -537,7 +537,7 @@ void CreateActorSpecificData() {
"Spawned Falling (2)", "Spawned Falling (2)",
//"INVALID", //"INVALID",
"Ceiling Spot Spawner", "Ceiling Spot Spawner",
"On Floor" "On Floor",
}; };
int selectedItem = params > 3 ? params - 1 : params; int selectedItem = params > 3 ? params - 1 : params;
if (ImGui::Combo("Type", &selectedItem, items, IM_ARRAYSIZE(items))) { if (ImGui::Combo("Type", &selectedItem, items, IM_ARRAYSIZE(items))) {
@ -568,7 +568,7 @@ void CreateActorSpecificData() {
"Magic Fire", "Magic Fire",
"Magic Wind", "Magic Wind",
"Magic Dark", "Magic Dark",
"Bullet Bag" "Bullet Bag",
}; };
int selectedItem = params; int selectedItem = params;
if (ImGui::Combo("Type", &selectedItem, items, IM_ARRAYSIZE(items))) { if (ImGui::Combo("Type", &selectedItem, items, IM_ARRAYSIZE(items))) {
@ -587,7 +587,7 @@ void CreateActorSpecificData() {
"Spawner", "Spawner",
"Revive Death", "Revive Death",
"Heal", "Heal",
"Heal Big" "Heal Big",
}; };
int selectedItem = params; int selectedItem = params;
if (ImGui::Combo("Type", &selectedItem, items, IM_ARRAYSIZE(items))) { if (ImGui::Combo("Type", &selectedItem, items, IM_ARRAYSIZE(items))) {
@ -601,7 +601,7 @@ void CreateActorSpecificData() {
static const char* items[] = { static const char* items[] = {
"Cutscene", //0 "Cutscene", //0
"Normal", //1 "Normal", //1
"Laser" //100 "Laser", //100
}; };
int selectedItem = params == 100 ? 2 : params; int selectedItem = params == 100 ? 2 : params;
if (ImGui::Combo("Type", &selectedItem, items, IM_ARRAYSIZE(items))) { if (ImGui::Combo("Type", &selectedItem, items, IM_ARRAYSIZE(items))) {
@ -647,7 +647,7 @@ void CreateActorSpecificData() {
"UNK 7", "UNK 7",
"Orange", "Orange",
"Green", "Green",
"Red" "Red",
}; };
int selectedItem = params + 2; int selectedItem = params + 2;
if (ImGui::Combo("Type", &selectedItem, items, IM_ARRAYSIZE(items))) { if (ImGui::Combo("Type", &selectedItem, items, IM_ARRAYSIZE(items))) {
@ -716,7 +716,7 @@ void CreateActorSpecificData() {
"Switch Flag Fall Small", "Switch Flag Fall Small",
"9", "9",
"10", "10",
"Switch Flag Big" "Switch Flag Big",
}; };
int type = (params >> 12) & 0xF; int type = (params >> 12) & 0xF;

View file

@ -1659,7 +1659,7 @@ const std::vector<std::string> state1 = {
"In Item Cutscene", "In Item Cutscene",
"In Cutscene", "In Cutscene",
"30", //Unknown "30", //Unknown
"Floor collision disabled" "Floor collision disabled",
}; };
const std::vector<std::string> state2 = { const std::vector<std::string> state2 = {
@ -1694,7 +1694,7 @@ const std::vector<std::string> state2 = {
"Idling", "Idling",
"Disabled draw func", "Disabled draw func",
"Sword Lunge", "Sword Lunge",
"Void out" "Void out",
}; };
const std::vector<std::string> state3 = { const std::vector<std::string> state3 = {
@ -1705,7 +1705,7 @@ const std::vector<std::string> state3 = {
"Check Floor Water Collision", "Check Floor Water Collision",
"Force Pull Ocarina", "Force Pull Ocarina",
"Restore Nayru's Love", "Restore Nayru's Love",
"Travelling to Hook Target" "Travelling to Hook Target",
}; };
class SaveEditorWindow : public Ship::GuiWindow { class SaveEditorWindow : public Ship::GuiWindow {

View file

@ -22,6 +22,7 @@ s32 GfxPrint_Printf(GfxPrint* printer, const char* fmt, ...);
ImVec4 WHITE = ImVec4(1.0f, 1.0f, 1.0f, 1.0f); ImVec4 WHITE = ImVec4(1.0f, 1.0f, 1.0f, 1.0f);
// clang-format off
std::vector<ValueTableElement> valueTable = { std::vector<ValueTableElement> valueTable = {
{ "Time", "gSaveContext.dayTime", "TIME:", TYPE_U16, false, []() -> void* { return &gSaveContext.dayTime; }, WHITE }, { "Time", "gSaveContext.dayTime", "TIME:", TYPE_U16, false, []() -> void* { return &gSaveContext.dayTime; }, WHITE },
{ "Age", "gSaveContext.linkAge", "AGE:", TYPE_S32, false, []() -> void* { return &gSaveContext.linkAge; }, WHITE }, { "Age", "gSaveContext.linkAge", "AGE:", TYPE_S32, false, []() -> void* { return &gSaveContext.linkAge; }, WHITE },
@ -71,6 +72,7 @@ std::vector<ValueTableElement> valueTable = {
"Deku Tree Warp Timer" u16 0x801F83A2 "Deku Tree Warp Timer" u16 0x801F83A2
*/ */
}; };
// clang-format on
extern "C" void ValueViewer_Draw(GfxPrint* printer) { extern "C" void ValueViewer_Draw(GfxPrint* printer) {
for (int i = 0; i < valueTable.size(); i++) { for (int i = 0; i < valueTable.size(); i++) {

View file

@ -11,14 +11,14 @@ typedef enum {
CSMC_DISABLED, CSMC_DISABLED,
CSMC_BOTH, CSMC_BOTH,
CSMC_TEXTURE, CSMC_TEXTURE,
CSMC_SIZE CSMC_SIZE,
} ChestStyleMatchesContentsType; } ChestStyleMatchesContentsType;
typedef enum { typedef enum {
SGIA_DISABLED, SGIA_DISABLED,
SGIA_JUNK, SGIA_JUNK,
SGIA_ALL, SGIA_ALL,
SGIA_SIZE SGIA_SIZE,
} SkipGetItemAnimationType; } SkipGetItemAnimationType;
typedef enum { typedef enum {
@ -31,7 +31,7 @@ typedef enum {
typedef enum { typedef enum {
BUNNY_HOOD_VANILLA, BUNNY_HOOD_VANILLA,
BUNNY_HOOD_FAST, BUNNY_HOOD_FAST,
BUNNY_HOOD_FAST_AND_JUMP BUNNY_HOOD_FAST_AND_JUMP,
} BunnyHoodMode; } BunnyHoodMode;
typedef enum { typedef enum {
@ -55,7 +55,7 @@ typedef enum {
typedef enum { typedef enum {
BOOTSEQUENCE_DEFAULT, BOOTSEQUENCE_DEFAULT,
BOOTSEQUENCE_AUTHENTIC, BOOTSEQUENCE_AUTHENTIC,
BOOTSEQUENCE_FILESELECT BOOTSEQUENCE_FILESELECT,
} BootSequenceType; } BootSequenceType;
typedef enum { typedef enum {

View file

@ -709,6 +709,7 @@ void SetupDisplayNames() {
// To add a timestamp for an item or event, add it to this list and ensure // To add a timestamp for an item or event, add it to this list and ensure
// it has a corresponding entry in the enum (see gameplaystats.h) // it has a corresponding entry in the enum (see gameplaystats.h)
// clang-format off
strcpy(itemTimestampDisplayName[ITEM_BOW], "Fairy Bow: "); strcpy(itemTimestampDisplayName[ITEM_BOW], "Fairy Bow: ");
strcpy(itemTimestampDisplayName[ITEM_ARROW_FIRE], "Fire Arrows: "); strcpy(itemTimestampDisplayName[ITEM_ARROW_FIRE], "Fire Arrows: ");
strcpy(itemTimestampDisplayName[ITEM_DINS_FIRE], "Din's Fire: "); strcpy(itemTimestampDisplayName[ITEM_DINS_FIRE], "Din's Fire: ");
@ -799,6 +800,7 @@ void SetupDisplayNames() {
strcpy(itemTimestampDisplayName[TIMESTAMP_BOSSRUSH_FINISH], "Boss Rush Finished: "); strcpy(itemTimestampDisplayName[TIMESTAMP_BOSSRUSH_FINISH], "Boss Rush Finished: ");
strcpy(itemTimestampDisplayName[TIMESTAMP_FOUND_GREG], "Greg Found: "); strcpy(itemTimestampDisplayName[TIMESTAMP_FOUND_GREG], "Greg Found: ");
strcpy(itemTimestampDisplayName[TIMESTAMP_TRIFORCE_COMPLETED], "Triforce Completed: "); strcpy(itemTimestampDisplayName[TIMESTAMP_TRIFORCE_COMPLETED], "Triforce Completed: ");
// clang-format on
} }
void SetupDisplayColors() { void SetupDisplayColors() {

View file

@ -715,7 +715,8 @@ void RegisterEnemyDefeatCounts() {
break; break;
case ACTOR_EN_TP: case ACTOR_EN_TP:
if (actor->params == TAILPASARAN_HEAD) { // Only count the head, otherwise each body segment will increment // Only count the head, otherwise each body segment will increment
if (actor->params == TAILPASARAN_HEAD) {
gSaveContext.ship.stats.count[COUNT_ENEMIES_DEFEATED_TAILPASARAN]++; gSaveContext.ship.stats.count[COUNT_ENEMIES_DEFEATED_TAILPASARAN]++;
} }
break; break;
@ -833,8 +834,8 @@ void RegisterRandomizedEnemySizes() {
randomNumber = rand() % 200; randomNumber = rand() % 200;
// Between 100% and 300% size. // Between 100% and 300% size.
randomScale = 1.0f + (randomNumber / 100); randomScale = 1.0f + (randomNumber / 100);
// Small actor
} else { } else {
// Small actor
randomNumber = rand() % 90; randomNumber = rand() % 90;
// Between 10% and 100% size. // Between 10% and 100% size.
randomScale = 0.1f + (randomNumber / 100); randomScale = 0.1f + (randomNumber / 100);

View file

@ -22,6 +22,7 @@ using namespace std::literals::string_literals;
namespace Rando { namespace Rando {
void StaticData::HintTable_Init() { void StaticData::HintTable_Init() {
// clang-format off
/*-------------------------- /*--------------------------
| GENERAL TEXT | | GENERAL TEXT |
---------------------------*/ ---------------------------*/
@ -46,12 +47,13 @@ void StaticData::HintTable_Init() {
"Man erzählt sich, daß #[[2]]# #[[1]]# horte.", "Man erzählt sich, daß #[[2]]# #[[1]]# horte.",
/*french*/ "Selon moi, #[[2]]# recèle #[[1]]#.", {QM_RED, QM_GREEN})); /*french*/ "Selon moi, #[[2]]# recèle #[[1]]#.", {QM_RED, QM_GREEN}));
// /*spanish*/ "Según dicen, #[[2]]# acapara #[[1]]#." // /*spanish*/ "Según dicen, #[[2]]# acapara #[[1]]#."
// clang-format on
HintTable_Init_Item(); HintTable_Init_Item();
HintTable_Init_Exclude_Overworld(); HintTable_Init_Exclude_Overworld();
HintTable_Init_Exclude_Dungeon(); HintTable_Init_Exclude_Dungeon();
// clang-format off
/*-------------------------- /*--------------------------
| SOMETIMES HINT TEXT | | SOMETIMES HINT TEXT |
---------------------------*/ ---------------------------*/
@ -2418,5 +2420,6 @@ void StaticData::HintTable_Init() {
/*german*/ "&Man kann darauf die Worte&%r\"Master Quest\"%w entziffern...", /*german*/ "&Man kann darauf die Worte&%r\"Master Quest\"%w entziffern...",
/*french*/ "&Étrange... les mots %r\"Master&Quest\"%w sont gravés dessus.")); /*french*/ "&Étrange... les mots %r\"Master&Quest\"%w sont gravés dessus."));
// clang-format on
} }
} }

View file

@ -4,10 +4,12 @@
namespace Rando { namespace Rando {
void StaticData::HintTable_Init_Exclude_Dungeon() { void StaticData::HintTable_Init_Exclude_Dungeon() {
/*-------------------------- // clang-format off
| DEKU TREE |
---------------------------*/ /*--------------------------
hintTextTable[RHT_DEKU_TREE_MAP_CHEST] = HintText(CustomMessage("They say that in the #center of the Deku Tree# lies #[[1]]#.", | DEKU TREE |
---------------------------*/
hintTextTable[RHT_DEKU_TREE_MAP_CHEST] = HintText(CustomMessage("They say that in the #center of the Deku Tree# lies #[[1]]#.",
/*german*/ "Man erzählt sich, daß im #Zentrum des Deku-Baums# #[[1]]# läge.", /*german*/ "Man erzählt sich, daß im #Zentrum des Deku-Baums# #[[1]]# läge.",
/*french*/ "Selon moi, #le centre de l'Arbre Mojo# recèle #[[1]]#.", {QM_RED, QM_GREEN})); /*french*/ "Selon moi, #le centre de l'Arbre Mojo# recèle #[[1]]#.", {QM_RED, QM_GREEN}));
// /*spanish*/ Según dicen, al #centro del Gran Árbol Deku# yace #[[1]]#. // /*spanish*/ Según dicen, al #centro del Gran Árbol Deku# yace #[[1]]#.
@ -2173,5 +2175,6 @@ hintTextTable[RHT_SHADOW_TEMPLE_MAP_CHEST] = HintText(CustomMessage("They say th
/*german*/ "", /*german*/ "",
/*french*/ "Selon moi, un #coeur dans le Château de Ganon# cache #[[1]]#.", {QM_RED, QM_GREEN})); /*french*/ "Selon moi, un #coeur dans le Château de Ganon# cache #[[1]]#.", {QM_RED, QM_GREEN}));
// clang-format on
} }
} }

View file

@ -4,6 +4,7 @@
namespace Rando { namespace Rando {
void StaticData::HintTable_Init_Exclude_Overworld() { void StaticData::HintTable_Init_Exclude_Overworld() {
// clang-format off
hintTextTable[RHT_KF_KOKIRI_SWORD_CHEST] = HintText(CustomMessage("They say that the #hidden treasure of the Kokiri# is #[[1]]#.", hintTextTable[RHT_KF_KOKIRI_SWORD_CHEST] = HintText(CustomMessage("They say that the #hidden treasure of the Kokiri# is #[[1]]#.",
/*german*/ "Man erzählt sich, daß der #versteckte Schatz der Kokiri# #[[1]]# sei.", /*german*/ "Man erzählt sich, daß der #versteckte Schatz der Kokiri# #[[1]]# sei.",
@ -1954,5 +1955,6 @@ void StaticData::HintTable_Init_Exclude_Overworld() {
hintTextTable[RHT_GRAVEYARD_ROYAL_FAMILYS_TOMB_SUN_FAIRY] = HintText(CustomMessage("They say that #calling the sun in a royal tomb# reveals #[[1]]#.", { QM_RED, QM_GREEN })); hintTextTable[RHT_GRAVEYARD_ROYAL_FAMILYS_TOMB_SUN_FAIRY] = HintText(CustomMessage("They say that #calling the sun in a royal tomb# reveals #[[1]]#.", { QM_RED, QM_GREEN }));
// clang-format on
} }
} }

View file

@ -5,7 +5,8 @@
namespace Rando { namespace Rando {
void StaticData::HintTable_Init_Item() { void StaticData::HintTable_Init_Item() {
// clang-format off
hintTextTable[RHT_KOKIRI_SWORD] = HintText(CustomMessage("the Kokiri Sword", /*german*/"das Kokiri-Schwert", /*french*/"l'Épée Kokiri"), hintTextTable[RHT_KOKIRI_SWORD] = HintText(CustomMessage("the Kokiri Sword", /*german*/"das Kokiri-Schwert", /*french*/"l'Épée Kokiri"),
// /*spanish*/la Espada Kokiri // /*spanish*/la Espada Kokiri
{ {
@ -2169,5 +2170,6 @@ void StaticData::HintTable_Init_Item() {
hintTextTable[RHT_MYSTERIOUS_ITEM_CAPITAL] = HintText(CustomMessage("Mysterious Item", /*german*/"Mysteriöser Gegenstand", /*french*/"Objet Mystérieux")); hintTextTable[RHT_MYSTERIOUS_ITEM_CAPITAL] = HintText(CustomMessage("Mysterious Item", /*german*/"Mysteriöser Gegenstand", /*french*/"Objet Mystérieux"));
// /*spanish*/Algo Misterioso // /*spanish*/Algo Misterioso
// clang-format on
} }
} }

View file

@ -149,7 +149,7 @@ const std::array<RandomizerGet, 44> easyItems = {
RG_PIECE_OF_HEART, RG_PIECE_OF_HEART,
}; };
const std::array<RandomizerGet, 43> normalItems = { const std::array<RandomizerGet, 43> normalItems = {
RG_PIECE_OF_HEART, //35 pieces of heart // 35 pieces of heart
RG_PIECE_OF_HEART, RG_PIECE_OF_HEART,
RG_PIECE_OF_HEART, RG_PIECE_OF_HEART,
RG_PIECE_OF_HEART, RG_PIECE_OF_HEART,
@ -184,7 +184,9 @@ const std::array<RandomizerGet, 43> normalItems = {
RG_PIECE_OF_HEART, RG_PIECE_OF_HEART,
RG_PIECE_OF_HEART, RG_PIECE_OF_HEART,
RG_PIECE_OF_HEART, RG_PIECE_OF_HEART,
RG_HEART_CONTAINER, //8 heart containers RG_PIECE_OF_HEART,
// 8 heart containers
RG_HEART_CONTAINER,
RG_HEART_CONTAINER, RG_HEART_CONTAINER,
RG_HEART_CONTAINER, RG_HEART_CONTAINER,
RG_HEART_CONTAINER, RG_HEART_CONTAINER,

View file

@ -41,7 +41,7 @@ typedef struct {
typedef enum PlandoTabs { typedef enum PlandoTabs {
TAB_HINTS, TAB_HINTS,
TAB_LOCATIONS TAB_LOCATIONS,
} PlandoTabs; } PlandoTabs;
typedef enum PlandoHints { typedef enum PlandoHints {
@ -49,4 +49,4 @@ typedef enum PlandoHints {
HINT_ALL, HINT_ALL,
} PlandoHints; } PlandoHints;
#endif #endif

View file

@ -59,6 +59,7 @@ void RegisterShuffleCows() {
static RegisterShipInitFunc initFunc(RegisterShuffleCows, { "IS_RANDO" }); static RegisterShipInitFunc initFunc(RegisterShuffleCows, { "IS_RANDO" });
void Rando::StaticData::RegisterCowLocations() { void Rando::StaticData::RegisterCowLocations() {
// clang-format-off
locationTable[RC_KF_LINKS_HOUSE_COW] = Location::Base(RC_KF_LINKS_HOUSE_COW, RCQUEST_BOTH, RCTYPE_COW, ACTOR_EN_COW, SCENE_LINKS_HOUSE, 0x00, "Links House Cow", RHT_KF_LINKS_HOUSE_COW, RG_MILK, SpoilerCollectionCheck::RandomizerInf(RAND_INF_COWS_MILKED_KF_LINKS_HOUSE_COW)); locationTable[RC_KF_LINKS_HOUSE_COW] = Location::Base(RC_KF_LINKS_HOUSE_COW, RCQUEST_BOTH, RCTYPE_COW, ACTOR_EN_COW, SCENE_LINKS_HOUSE, 0x00, "Links House Cow", RHT_KF_LINKS_HOUSE_COW, RG_MILK, SpoilerCollectionCheck::RandomizerInf(RAND_INF_COWS_MILKED_KF_LINKS_HOUSE_COW));
locationTable[RC_HF_COW_GROTTO_COW] = Location::Base(RC_HF_COW_GROTTO_COW, RCQUEST_BOTH, RCTYPE_COW, RCAREA_HYRULE_FIELD, ACTOR_EN_COW, SCENE_GROTTOS, TWO_ACTOR_PARAMS(3485, -291), "Cow Grotto Cow", RHT_HF_COW_GROTTO_COW, RG_MILK, SpoilerCollectionCheck::RandomizerInf(RAND_INF_COWS_MILKED_HF_COW_GROTTO_COW)); locationTable[RC_HF_COW_GROTTO_COW] = Location::Base(RC_HF_COW_GROTTO_COW, RCQUEST_BOTH, RCTYPE_COW, RCAREA_HYRULE_FIELD, ACTOR_EN_COW, SCENE_GROTTOS, TWO_ACTOR_PARAMS(3485, -291), "Cow Grotto Cow", RHT_HF_COW_GROTTO_COW, RG_MILK, SpoilerCollectionCheck::RandomizerInf(RAND_INF_COWS_MILKED_HF_COW_GROTTO_COW));
locationTable[RC_LLR_STABLES_LEFT_COW] = Location::Base(RC_LLR_STABLES_LEFT_COW, RCQUEST_BOTH, RCTYPE_COW, ACTOR_EN_COW, SCENE_STABLE, TWO_ACTOR_PARAMS(-122, -254), "Stables Left Cow", RHT_LLR_STABLES_LEFT_COW, RG_MILK, SpoilerCollectionCheck::RandomizerInf(RAND_INF_COWS_MILKED_LLR_STABLES_LEFT_COW)); locationTable[RC_LLR_STABLES_LEFT_COW] = Location::Base(RC_LLR_STABLES_LEFT_COW, RCQUEST_BOTH, RCTYPE_COW, ACTOR_EN_COW, SCENE_STABLE, TWO_ACTOR_PARAMS(-122, -254), "Stables Left Cow", RHT_LLR_STABLES_LEFT_COW, RG_MILK, SpoilerCollectionCheck::RandomizerInf(RAND_INF_COWS_MILKED_LLR_STABLES_LEFT_COW));
@ -69,6 +70,8 @@ void Rando::StaticData::RegisterCowLocations() {
locationTable[RC_DMT_COW_GROTTO_COW] = Location::Base(RC_DMT_COW_GROTTO_COW, RCQUEST_BOTH, RCTYPE_COW, RCAREA_DEATH_MOUNTAIN_TRAIL, ACTOR_EN_COW, SCENE_GROTTOS, TWO_ACTOR_PARAMS(2444, -471), "Cow Grotto Cow", RHT_DMT_COW_GROTTO_COW, RG_MILK, SpoilerCollectionCheck::RandomizerInf(RAND_INF_COWS_MILKED_DMT_COW_GROTTO_COW)); locationTable[RC_DMT_COW_GROTTO_COW] = Location::Base(RC_DMT_COW_GROTTO_COW, RCQUEST_BOTH, RCTYPE_COW, RCAREA_DEATH_MOUNTAIN_TRAIL, ACTOR_EN_COW, SCENE_GROTTOS, TWO_ACTOR_PARAMS(2444, -471), "Cow Grotto Cow", RHT_DMT_COW_GROTTO_COW, RG_MILK, SpoilerCollectionCheck::RandomizerInf(RAND_INF_COWS_MILKED_DMT_COW_GROTTO_COW));
locationTable[RC_GV_COW] = Location::Base(RC_GV_COW, RCQUEST_BOTH, RCTYPE_COW, ACTOR_EN_COW, SCENE_GERUDO_VALLEY, 0x00, "Cow", RHT_GV_COW, RG_MILK, SpoilerCollectionCheck::RandomizerInf(RAND_INF_COWS_MILKED_GV_COW)); locationTable[RC_GV_COW] = Location::Base(RC_GV_COW, RCQUEST_BOTH, RCTYPE_COW, ACTOR_EN_COW, SCENE_GERUDO_VALLEY, 0x00, "Cow", RHT_GV_COW, RG_MILK, SpoilerCollectionCheck::RandomizerInf(RAND_INF_COWS_MILKED_GV_COW));
locationTable[RC_JABU_JABUS_BELLY_MQ_COW] = Location::Base(RC_JABU_JABUS_BELLY_MQ_COW, RCQUEST_MQ, RCTYPE_COW, ACTOR_EN_COW, SCENE_JABU_JABU, 0x00, "MQ Cow", RHT_JABU_JABUS_BELLY_MQ_COW, RG_MILK, SpoilerCollectionCheck::RandomizerInf(RAND_INF_COWS_MILKED_JABU_JABUS_BELLY_MQ_COW)); locationTable[RC_JABU_JABUS_BELLY_MQ_COW] = Location::Base(RC_JABU_JABUS_BELLY_MQ_COW, RCQUEST_MQ, RCTYPE_COW, ACTOR_EN_COW, SCENE_JABU_JABU, 0x00, "MQ Cow", RHT_JABU_JABUS_BELLY_MQ_COW, RG_MILK, SpoilerCollectionCheck::RandomizerInf(RAND_INF_COWS_MILKED_JABU_JABUS_BELLY_MQ_COW));
// clang-format-on
} }
static RegisterShipInitFunc registerFunc(Rando::StaticData::RegisterCowLocations); static RegisterShipInitFunc registerFunc(Rando::StaticData::RegisterCowLocations);

View file

@ -185,6 +185,7 @@ void ShuffleFairies_UnregisterHooks() {
} }
void Rando::StaticData::RegisterFairyLocations() { void Rando::StaticData::RegisterFairyLocations() {
// clang-format off
locationTable[RC_SFM_FAIRY_GROTTO_FAIRY_1] = Location::Fairy(RC_SFM_FAIRY_GROTTO_FAIRY_1, RCQUEST_BOTH, RCAREA_SACRED_FOREST_MEADOW, SCENE_FAIRYS_FOUNTAIN, 0x1800, "Grotto Fairy 1", RHT_SFM_FAIRY_GROTTO_FAIRY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SFM_FAIRY_GROTTO_FAIRY_1)); locationTable[RC_SFM_FAIRY_GROTTO_FAIRY_1] = Location::Fairy(RC_SFM_FAIRY_GROTTO_FAIRY_1, RCQUEST_BOTH, RCAREA_SACRED_FOREST_MEADOW, SCENE_FAIRYS_FOUNTAIN, 0x1800, "Grotto Fairy 1", RHT_SFM_FAIRY_GROTTO_FAIRY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SFM_FAIRY_GROTTO_FAIRY_1));
locationTable[RC_SFM_FAIRY_GROTTO_FAIRY_2] = Location::Fairy(RC_SFM_FAIRY_GROTTO_FAIRY_2, RCQUEST_BOTH, RCAREA_SACRED_FOREST_MEADOW, SCENE_FAIRYS_FOUNTAIN, 0x1801, "Grotto Fairy 2", RHT_SFM_FAIRY_GROTTO_FAIRY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SFM_FAIRY_GROTTO_FAIRY_2)); locationTable[RC_SFM_FAIRY_GROTTO_FAIRY_2] = Location::Fairy(RC_SFM_FAIRY_GROTTO_FAIRY_2, RCQUEST_BOTH, RCAREA_SACRED_FOREST_MEADOW, SCENE_FAIRYS_FOUNTAIN, 0x1801, "Grotto Fairy 2", RHT_SFM_FAIRY_GROTTO_FAIRY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SFM_FAIRY_GROTTO_FAIRY_2));
locationTable[RC_SFM_FAIRY_GROTTO_FAIRY_3] = Location::Fairy(RC_SFM_FAIRY_GROTTO_FAIRY_3, RCQUEST_BOTH, RCAREA_SACRED_FOREST_MEADOW, SCENE_FAIRYS_FOUNTAIN, 0x1802, "Grotto Fairy 3", RHT_SFM_FAIRY_GROTTO_FAIRY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SFM_FAIRY_GROTTO_FAIRY_3)); locationTable[RC_SFM_FAIRY_GROTTO_FAIRY_3] = Location::Fairy(RC_SFM_FAIRY_GROTTO_FAIRY_3, RCQUEST_BOTH, RCAREA_SACRED_FOREST_MEADOW, SCENE_FAIRYS_FOUNTAIN, 0x1802, "Grotto Fairy 3", RHT_SFM_FAIRY_GROTTO_FAIRY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SFM_FAIRY_GROTTO_FAIRY_3));
@ -404,6 +405,8 @@ void Rando::StaticData::RegisterFairyLocations() {
locationTable[RC_SHADOW_TEMPLE_MQ_WIND_HINT_SUN_FAIRY] = Location::Fairy(RC_SHADOW_TEMPLE_MQ_WIND_HINT_SUN_FAIRY, RCQUEST_MQ, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(0x1000, -127), "MQ Wind Hint Sun's Song Fairy", RHT_SHADOW_TEMPLE_WIND_HINT_SUN_FAIRY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_WIND_HINT_SUN_FAIRY)); locationTable[RC_SHADOW_TEMPLE_MQ_WIND_HINT_SUN_FAIRY] = Location::Fairy(RC_SHADOW_TEMPLE_MQ_WIND_HINT_SUN_FAIRY, RCQUEST_MQ, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(0x1000, -127), "MQ Wind Hint Sun's Song Fairy", RHT_SHADOW_TEMPLE_WIND_HINT_SUN_FAIRY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_WIND_HINT_SUN_FAIRY));
locationTable[RC_BOTTOM_OF_THE_WELL_MQ_CELL_SUN_FAIRY] = Location::Fairy(RC_BOTTOM_OF_THE_WELL_MQ_CELL_SUN_FAIRY, RCQUEST_MQ, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(0x1000, -437), "MQ East Cell Sun's Song Fairy", RHT_BOTTOM_OF_THE_WELL_MQ_CELL_SUN_FAIRY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_MQ_CELL_SUN_FAIRY)); locationTable[RC_BOTTOM_OF_THE_WELL_MQ_CELL_SUN_FAIRY] = Location::Fairy(RC_BOTTOM_OF_THE_WELL_MQ_CELL_SUN_FAIRY, RCQUEST_MQ, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(0x1000, -437), "MQ East Cell Sun's Song Fairy", RHT_BOTTOM_OF_THE_WELL_MQ_CELL_SUN_FAIRY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_MQ_CELL_SUN_FAIRY));
locationTable[RC_BOTTOM_OF_THE_WELL_MQ_BASEMENT_SUN_FAIRY] = Location::Fairy(RC_BOTTOM_OF_THE_WELL_MQ_BASEMENT_SUN_FAIRY, RCQUEST_MQ, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(0x1000, -1458), "MQ Basement Sun's Song Fairy", RHT_BOTTOM_OF_THE_WELL_MQ_BASEMENT_SUN_FAIRY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_MQ_BASEMENT_SUN_FAIRY)); locationTable[RC_BOTTOM_OF_THE_WELL_MQ_BASEMENT_SUN_FAIRY] = Location::Fairy(RC_BOTTOM_OF_THE_WELL_MQ_BASEMENT_SUN_FAIRY, RCQUEST_MQ, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(0x1000, -1458), "MQ Basement Sun's Song Fairy", RHT_BOTTOM_OF_THE_WELL_MQ_BASEMENT_SUN_FAIRY, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_MQ_BASEMENT_SUN_FAIRY));
// clang-format on
} }
static RegisterShipInitFunc initFunc(Rando::StaticData::RegisterFairyLocations); static RegisterShipInitFunc initFunc(Rando::StaticData::RegisterFairyLocations);

View file

@ -45,6 +45,7 @@ void ShuffleFreestanding_OnVanillaBehaviorHandler(GIVanillaBehavior id, bool* sh
} }
void Rando::StaticData::RegisterFreestandingLocations() { void Rando::StaticData::RegisterFreestandingLocations() {
// clang-format off
locationTable[RC_KF_BOULDER_RUPEE_2] = Location::Collectable(RC_KF_BOULDER_RUPEE_2, RCQUEST_BOTH, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_KOKIRI_FOREST, TWO_ACTOR_PARAMS(-712, 1857), "Boulder Maze Second Rupee", RHT_KOKIRI_FOREST_RUPEE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KF_BOULDER_RUPEE_2)); locationTable[RC_KF_BOULDER_RUPEE_2] = Location::Collectable(RC_KF_BOULDER_RUPEE_2, RCQUEST_BOTH, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_KOKIRI_FOREST, TWO_ACTOR_PARAMS(-712, 1857), "Boulder Maze Second Rupee", RHT_KOKIRI_FOREST_RUPEE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KF_BOULDER_RUPEE_2));
locationTable[RC_KF_BOULDER_RUPEE_1] = Location::Collectable(RC_KF_BOULDER_RUPEE_1, RCQUEST_BOTH, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_KOKIRI_FOREST, TWO_ACTOR_PARAMS(-1009, 1556), "Boulder Maze First Rupee", RHT_KOKIRI_FOREST_RUPEE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KF_BOULDER_RUPEE_1)); locationTable[RC_KF_BOULDER_RUPEE_1] = Location::Collectable(RC_KF_BOULDER_RUPEE_1, RCQUEST_BOTH, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_KOKIRI_FOREST, TWO_ACTOR_PARAMS(-1009, 1556), "Boulder Maze First Rupee", RHT_KOKIRI_FOREST_RUPEE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KF_BOULDER_RUPEE_1));
locationTable[RC_KF_BRIDGE_RUPEE] = Location::Collectable(RC_KF_BRIDGE_RUPEE, RCQUEST_BOTH, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_KOKIRI_FOREST, TWO_ACTOR_PARAMS(2, -45), "Bridge Rupee", RHT_KOKIRI_FOREST_RUPEE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KF_BRIDGE_RUPEE)); locationTable[RC_KF_BRIDGE_RUPEE] = Location::Collectable(RC_KF_BRIDGE_RUPEE, RCQUEST_BOTH, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_KOKIRI_FOREST, TWO_ACTOR_PARAMS(2, -45), "Bridge Rupee", RHT_KOKIRI_FOREST_RUPEE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KF_BRIDGE_RUPEE));
@ -275,6 +276,8 @@ void Rando::StaticData::RegisterFreestandingLocations() {
locationTable[RC_GANONS_CASTLE_MQ_WATER_TRIAL_HEART] = Location::Collectable(RC_GANONS_CASTLE_MQ_WATER_TRIAL_HEART, RCQUEST_MQ, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(1743, -528), "MQ Water Trial Heart", RHT_GANONS_CASTLE_HEART, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_HEART)); locationTable[RC_GANONS_CASTLE_MQ_WATER_TRIAL_HEART] = Location::Collectable(RC_GANONS_CASTLE_MQ_WATER_TRIAL_HEART, RCQUEST_MQ, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(1743, -528), "MQ Water Trial Heart", RHT_GANONS_CASTLE_HEART, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_HEART));
locationTable[RC_GANONS_CASTLE_MQ_LIGHT_TRIAL_RIGHT_HEART] = Location::Collectable(RC_GANONS_CASTLE_MQ_LIGHT_TRIAL_RIGHT_HEART, RCQUEST_MQ, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(-2506, -1096), "MQ Light Trial Right Heart", RHT_GANONS_CASTLE_HEART, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_LIGHT_TRIAL_RIGHT_HEART)); locationTable[RC_GANONS_CASTLE_MQ_LIGHT_TRIAL_RIGHT_HEART] = Location::Collectable(RC_GANONS_CASTLE_MQ_LIGHT_TRIAL_RIGHT_HEART, RCQUEST_MQ, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(-2506, -1096), "MQ Light Trial Right Heart", RHT_GANONS_CASTLE_HEART, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_LIGHT_TRIAL_RIGHT_HEART));
locationTable[RC_GANONS_CASTLE_MQ_LIGHT_TRIAL_LEFT_HEART] = Location::Collectable(RC_GANONS_CASTLE_MQ_LIGHT_TRIAL_LEFT_HEART, RCQUEST_MQ, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(-2655, -549), "MQ Light Trial Left Heart", RHT_GANONS_CASTLE_HEART, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_LIGHT_TRIAL_LEFT_HEART)); locationTable[RC_GANONS_CASTLE_MQ_LIGHT_TRIAL_LEFT_HEART] = Location::Collectable(RC_GANONS_CASTLE_MQ_LIGHT_TRIAL_LEFT_HEART, RCQUEST_MQ, RCTYPE_FREESTANDING, ACTOR_EN_ITEM00, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(-2655, -549), "MQ Light Trial Left Heart", RHT_GANONS_CASTLE_HEART, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_LIGHT_TRIAL_LEFT_HEART));
// clang-format on
} }
static RegisterShipInitFunc initFunc(Rando::StaticData::RegisterFreestandingLocations); static RegisterShipInitFunc initFunc(Rando::StaticData::RegisterFreestandingLocations);

View file

@ -95,6 +95,7 @@ void ShufflePots_OnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, va
} }
void Rando::StaticData::RegisterPotLocations() { void Rando::StaticData::RegisterPotLocations() {
// clang-format off
// Overworld Pots // Overworld Pots
// Randomizer Check Randomizer Check Quest Area Scene ID Params Short Name Hint Text Key Vanilla Spoiler Collection Check // Randomizer Check Randomizer Check Quest Area Scene ID Params Short Name Hint Text Key Vanilla Spoiler Collection Check
locationTable[RC_KF_LINKS_HOUSE_POT] = Location::Pot(RC_KF_LINKS_HOUSE_POT, RCQUEST_BOTH, RCAREA_KOKIRI_FOREST, SCENE_LINKS_HOUSE, TWO_ACTOR_PARAMS(-118, 51), "Links House Pot", RHT_POT_KOKIRI_FOREST, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KF_LINKS_HOUSE_POT)); locationTable[RC_KF_LINKS_HOUSE_POT] = Location::Pot(RC_KF_LINKS_HOUSE_POT, RCQUEST_BOTH, RCAREA_KOKIRI_FOREST, SCENE_LINKS_HOUSE, TWO_ACTOR_PARAMS(-118, 51), "Links House Pot", RHT_POT_KOKIRI_FOREST, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KF_LINKS_HOUSE_POT));
@ -643,6 +644,8 @@ void Rando::StaticData::RegisterPotLocations() {
locationTable[RC_GERUDO_TRAINING_GROUND_MQ_LOBBY_LEFT_POT_2] = Location::Pot(RC_GERUDO_TRAINING_GROUND_MQ_LOBBY_LEFT_POT_2, RCQUEST_MQ, RCAREA_GERUDO_TRAINING_GROUND, SCENE_GERUDO_TRAINING_GROUND, TWO_ACTOR_PARAMS(-324, -177), "MQ Lobby Left Pot 2", RHT_POT_GERUDO_TRAINING_GROUND, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GERUDO_TRAINING_GROUND_MQ_LOBBY_LEFT_POT_2)); locationTable[RC_GERUDO_TRAINING_GROUND_MQ_LOBBY_LEFT_POT_2] = Location::Pot(RC_GERUDO_TRAINING_GROUND_MQ_LOBBY_LEFT_POT_2, RCQUEST_MQ, RCAREA_GERUDO_TRAINING_GROUND, SCENE_GERUDO_TRAINING_GROUND, TWO_ACTOR_PARAMS(-324, -177), "MQ Lobby Left Pot 2", RHT_POT_GERUDO_TRAINING_GROUND, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GERUDO_TRAINING_GROUND_MQ_LOBBY_LEFT_POT_2));
locationTable[RC_GERUDO_TRAINING_GROUND_MQ_LOBBY_RIGHT_POT_1] = Location::Pot(RC_GERUDO_TRAINING_GROUND_MQ_LOBBY_RIGHT_POT_1, RCQUEST_MQ, RCAREA_GERUDO_TRAINING_GROUND, SCENE_GERUDO_TRAINING_GROUND, TWO_ACTOR_PARAMS(199, -79), "MQ Lobby Right Pot 1", RHT_POT_GERUDO_TRAINING_GROUND, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GERUDO_TRAINING_GROUND_MQ_LOBBY_RIGHT_POT_1)); locationTable[RC_GERUDO_TRAINING_GROUND_MQ_LOBBY_RIGHT_POT_1] = Location::Pot(RC_GERUDO_TRAINING_GROUND_MQ_LOBBY_RIGHT_POT_1, RCQUEST_MQ, RCAREA_GERUDO_TRAINING_GROUND, SCENE_GERUDO_TRAINING_GROUND, TWO_ACTOR_PARAMS(199, -79), "MQ Lobby Right Pot 1", RHT_POT_GERUDO_TRAINING_GROUND, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GERUDO_TRAINING_GROUND_MQ_LOBBY_RIGHT_POT_1));
locationTable[RC_GERUDO_TRAINING_GROUND_MQ_LOBBY_RIGHT_POT_2] = Location::Pot(RC_GERUDO_TRAINING_GROUND_MQ_LOBBY_RIGHT_POT_2, RCQUEST_MQ, RCAREA_GERUDO_TRAINING_GROUND, SCENE_GERUDO_TRAINING_GROUND, TWO_ACTOR_PARAMS(197, -179), "MQ Lobby Right Pot 2", RHT_POT_GERUDO_TRAINING_GROUND, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GERUDO_TRAINING_GROUND_MQ_LOBBY_RIGHT_POT_2)); locationTable[RC_GERUDO_TRAINING_GROUND_MQ_LOBBY_RIGHT_POT_2] = Location::Pot(RC_GERUDO_TRAINING_GROUND_MQ_LOBBY_RIGHT_POT_2, RCQUEST_MQ, RCAREA_GERUDO_TRAINING_GROUND, SCENE_GERUDO_TRAINING_GROUND, TWO_ACTOR_PARAMS(197, -179), "MQ Lobby Right Pot 2", RHT_POT_GERUDO_TRAINING_GROUND, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GERUDO_TRAINING_GROUND_MQ_LOBBY_RIGHT_POT_2));
// clang-format on
} }
static RegisterShipInitFunc initFunc(Rando::StaticData::RegisterPotLocations); static RegisterShipInitFunc initFunc(Rando::StaticData::RegisterPotLocations);

View file

@ -856,6 +856,7 @@ int EntranceShuffler::ShuffleAllEntrances() {
mCurNumRandomizedEntrances = 0; mCurNumRandomizedEntrances = 0;
std::vector<EntranceInfoPair> entranceShuffleTable = { std::vector<EntranceInfoPair> entranceShuffleTable = {
// clang-format off
// Type Parent Region Connected Region Index // Type Parent Region Connected Region Index
{ { EntranceType::Dungeon, RR_KF_OUTSIDE_DEKU_TREE, RR_DEKU_TREE_ENTRYWAY, ENTR_DEKU_TREE_ENTRANCE }, { { EntranceType::Dungeon, RR_KF_OUTSIDE_DEKU_TREE, RR_DEKU_TREE_ENTRYWAY, ENTR_DEKU_TREE_ENTRANCE },
{ EntranceType::Dungeon, RR_DEKU_TREE_ENTRYWAY, RR_KF_OUTSIDE_DEKU_TREE, ENTR_KOKIRI_FOREST_OUTSIDE_DEKU_TREE } }, { EntranceType::Dungeon, RR_DEKU_TREE_ENTRYWAY, RR_KF_OUTSIDE_DEKU_TREE, ENTR_KOKIRI_FOREST_OUTSIDE_DEKU_TREE } },
@ -1161,6 +1162,7 @@ int EntranceShuffler::ShuffleAllEntrances() {
NO_RETURN_ENTRANCE }, NO_RETURN_ENTRANCE },
{ { EntranceType::BlueWarp, RR_SHADOW_TEMPLE_BOSS_ROOM, RR_GRAVEYARD_WARP_PAD_REGION, ENTR_GRAVEYARD_SHADOW_TEMPLE_BLUE_WARP }, { { EntranceType::BlueWarp, RR_SHADOW_TEMPLE_BOSS_ROOM, RR_GRAVEYARD_WARP_PAD_REGION, ENTR_GRAVEYARD_SHADOW_TEMPLE_BLUE_WARP },
NO_RETURN_ENTRANCE }, NO_RETURN_ENTRANCE },
// clang-format on
}; };
std::map<std::string, PriorityEntrance> priorityEntranceTable = { std::map<std::string, PriorityEntrance> priorityEntranceTable = {

View file

@ -580,6 +580,7 @@ extern "C" {
} }
void Rando::StaticData::RegisterFishLocations() { void Rando::StaticData::RegisterFishLocations() {
// clang-format off
// Fishing Pond // Fishing Pond
locationTable[RC_LH_CHILD_FISH_1] = Location::Fish(RC_LH_CHILD_FISH_1, RCQUEST_BOTH, ACTOR_FISHING, SCENE_FISHING_POND, 100, RAND_INF_CHILD_FISH_1, "Child Pond Fish 1", RHT_LH_POND_FISH, RG_NONE); locationTable[RC_LH_CHILD_FISH_1] = Location::Fish(RC_LH_CHILD_FISH_1, RCQUEST_BOTH, ACTOR_FISHING, SCENE_FISHING_POND, 100, RAND_INF_CHILD_FISH_1, "Child Pond Fish 1", RHT_LH_POND_FISH, RG_NONE);
locationTable[RC_LH_CHILD_FISH_2] = Location::Fish(RC_LH_CHILD_FISH_2, RCQUEST_BOTH, ACTOR_FISHING, SCENE_FISHING_POND, 101, RAND_INF_CHILD_FISH_2, "Child Pond Fish 2", RHT_LH_POND_FISH, RG_NONE); locationTable[RC_LH_CHILD_FISH_2] = Location::Fish(RC_LH_CHILD_FISH_2, RCQUEST_BOTH, ACTOR_FISHING, SCENE_FISHING_POND, 101, RAND_INF_CHILD_FISH_2, "Child Pond Fish 2", RHT_LH_POND_FISH, RG_NONE);
@ -630,6 +631,7 @@ void Rando::StaticData::RegisterFishLocations() {
locationTable[RC_ZD_FISH_3] = Location::Fish(RC_ZD_FISH_3, RCQUEST_BOTH, ACTOR_EN_FISH, SCENE_ZORAS_DOMAIN, -1 ^ 2, RAND_INF_ZD_FISH_3, "Fish 3", RHT_ZD_FISH, RG_FISH); locationTable[RC_ZD_FISH_3] = Location::Fish(RC_ZD_FISH_3, RCQUEST_BOTH, ACTOR_EN_FISH, SCENE_ZORAS_DOMAIN, -1 ^ 2, RAND_INF_ZD_FISH_3, "Fish 3", RHT_ZD_FISH, RG_FISH);
locationTable[RC_ZD_FISH_4] = Location::Fish(RC_ZD_FISH_4, RCQUEST_BOTH, ACTOR_EN_FISH, SCENE_ZORAS_DOMAIN, -1 ^ 3, RAND_INF_ZD_FISH_4, "Fish 4", RHT_ZD_FISH, RG_FISH); locationTable[RC_ZD_FISH_4] = Location::Fish(RC_ZD_FISH_4, RCQUEST_BOTH, ACTOR_EN_FISH, SCENE_ZORAS_DOMAIN, -1 ^ 3, RAND_INF_ZD_FISH_4, "Fish 4", RHT_ZD_FISH, RG_FISH);
locationTable[RC_ZD_FISH_5] = Location::Fish(RC_ZD_FISH_5, RCQUEST_BOTH, ACTOR_EN_FISH, SCENE_ZORAS_DOMAIN, -1 ^ 4, RAND_INF_ZD_FISH_5, "Fish 5", RHT_ZD_FISH, RG_FISH); locationTable[RC_ZD_FISH_5] = Location::Fish(RC_ZD_FISH_5, RCQUEST_BOTH, ACTOR_EN_FISH, SCENE_ZORAS_DOMAIN, -1 ^ 4, RAND_INF_ZD_FISH_5, "Fish 5", RHT_ZD_FISH, RG_FISH);
// clang-format on
} }
static RegisterShipInitFunc initFunc(Rando::StaticData::RegisterFishLocations); static RegisterShipInitFunc initFunc(Rando::StaticData::RegisterFishLocations);

View file

@ -14,7 +14,7 @@ typedef struct {
typedef enum { typedef enum {
FSO_SOURCE_RANDO, FSO_SOURCE_RANDO,
FSO_SOURCE_CVARS FSO_SOURCE_CVARS,
} FishsanityOptionsSource; } FishsanityOptionsSource;
typedef enum { typedef enum {

View file

@ -2047,15 +2047,15 @@ void RandomizerOnActorInitHandler(void* actorRef) {
return; return;
} }
if ( // If child is in the adult shooting gallery or adult in the child shooting gallery, then despawn the shooting
// If child is in the adult shooting gallery or adult in the child shooting gallery, then despawn the shooting gallery man // gallery man
actor->id == ACTOR_EN_SYATEKI_MAN && if (actor->id == ACTOR_EN_SYATEKI_MAN && RAND_GET_OPTION(RSK_SHUFFLE_INTERIOR_ENTRANCES) &&
RAND_GET_OPTION(RSK_SHUFFLE_INTERIOR_ENTRANCES) && ((LINK_IS_CHILD &&
( // Kakariko Village -> Adult Shooting Gallery, index 003B in the entrance table
(LINK_IS_CHILD && Entrance_SceneAndSpawnAre(SCENE_SHOOTING_GALLERY, 0x00)) || //Kakariko Village -> Adult Shooting Gallery, index 003B in the entrance table Entrance_SceneAndSpawnAre(SCENE_SHOOTING_GALLERY, 0x00)) ||
(LINK_IS_ADULT && Entrance_SceneAndSpawnAre(SCENE_SHOOTING_GALLERY, 0x01)) //Market -> Child Shooting Gallery, index 016D in the entrance table (LINK_IS_ADULT &&
) // Market -> Child Shooting Gallery, index 016D in the entrance table
) { Entrance_SceneAndSpawnAre(SCENE_SHOOTING_GALLERY, 0x01)))) {
Actor_Kill(actor); Actor_Kill(actor);
return; return;
} }

View file

@ -12,6 +12,8 @@ std::unordered_map<std::string, RandomizerGet> Rando::StaticData::itemNameToEnum
void Rando::StaticData::InitItemTable() { void Rando::StaticData::InitItemTable() {
auto logic = Context::GetInstance()->GetLogic(); auto logic = Context::GetInstance()->GetLogic();
// clang-format off
itemTable[RG_NONE] = Item(RG_NONE, Text{ "No Item", "Rien", "Kein Artikel" }, ITEMTYPE_EVENT, GI_RUPEE_GREEN, false, LOGIC_NONE, RHT_NONE, ITEM_NONE, 0, 0, 0, 0, 0, ITEM_CATEGORY_JUNK, MOD_NONE); itemTable[RG_NONE] = Item(RG_NONE, Text{ "No Item", "Rien", "Kein Artikel" }, ITEMTYPE_EVENT, GI_RUPEE_GREEN, false, LOGIC_NONE, RHT_NONE, ITEM_NONE, 0, 0, 0, 0, 0, ITEM_CATEGORY_JUNK, MOD_NONE);
// Randomizer Get Randomizer Get Name Text Type Get Item ID Adv. Logic Value Hint Text Key Item ID Object ID Draw ID Text ID field Chest Animation Item Category Mod Index // Randomizer Get Randomizer Get Name Text Type Get Item ID Adv. Logic Value Hint Text Key Item ID Object ID Draw ID Text ID field Chest Animation Item Category Mod Index
itemTable[RG_KOKIRI_SWORD] = Item(RG_KOKIRI_SWORD, Text{ "Kokiri Sword", "Épée Kokiri", "Kokiri-Schwert" }, ITEMTYPE_EQUIP, GI_SWORD_KOKIRI, true, LOGIC_KOKIRI_SWORD, RHT_KOKIRI_SWORD, ITEM_SWORD_KOKIRI, OBJECT_GI_SWORD_1, GID_SWORD_KOKIRI, 0xA4, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE); itemTable[RG_KOKIRI_SWORD] = Item(RG_KOKIRI_SWORD, Text{ "Kokiri Sword", "Épée Kokiri", "Kokiri-Schwert" }, ITEMTYPE_EQUIP, GI_SWORD_KOKIRI, true, LOGIC_KOKIRI_SWORD, RHT_KOKIRI_SWORD, ITEM_SWORD_KOKIRI, OBJECT_GI_SWORD_1, GID_SWORD_KOKIRI, 0xA4, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE);
@ -402,6 +404,8 @@ void Rando::StaticData::InitItemTable() {
itemTable[RG_MAGIC_DOUBLE] = Item(RG_MAGIC_DOUBLE, Text{ "Enhanced Magic Meter", "Jauge de Magie améliorée", "Verbessertes Magisches Maß" }, ITEMTYPE_ITEM, 0x8A, true, LOGIC_PROGRESSIVE_MAGIC, RHT_MAGIC_DOUBLE, RG_MAGIC_DOUBLE, OBJECT_GI_MAGICPOT, GID_MAGIC_LARGE, 0xE8, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_MAGIC_DOUBLE] = Item(RG_MAGIC_DOUBLE, Text{ "Enhanced Magic Meter", "Jauge de Magie améliorée", "Verbessertes Magisches Maß" }, ITEMTYPE_ITEM, 0x8A, true, LOGIC_PROGRESSIVE_MAGIC, RHT_MAGIC_DOUBLE, RG_MAGIC_DOUBLE, OBJECT_GI_MAGICPOT, GID_MAGIC_LARGE, 0xE8, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER);
itemTable[RG_TRIFORCE_PIECE] = Item(RG_TRIFORCE_PIECE, Text{ "Triforce Piece", "Triforce Piece", "Triforce-Fragment" }, ITEMTYPE_ITEM, 0xDF, true, LOGIC_TRIFORCE_PIECES, RHT_TRIFORCE_PIECE, RG_TRIFORCE_PIECE, OBJECT_GI_BOMB_2, GID_TRIFORCE_PIECE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_TRIFORCE_PIECE] = Item(RG_TRIFORCE_PIECE, Text{ "Triforce Piece", "Triforce Piece", "Triforce-Fragment" }, ITEMTYPE_ITEM, 0xDF, true, LOGIC_TRIFORCE_PIECES, RHT_TRIFORCE_PIECE, RG_TRIFORCE_PIECE, OBJECT_GI_BOMB_2, GID_TRIFORCE_PIECE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER);
// clang-format on
// Init itemNameToEnum // Init itemNameToEnum
for (auto& item : itemTable) { for (auto& item : itemTable) {
// Easiest way to filter out all the empty values from the array, since we still technically want the 0/RG_NONE // Easiest way to filter out all the empty values from the array, since we still technically want the 0/RG_NONE

View file

@ -261,6 +261,7 @@ void RegionTable_Init() {
//locations which appear in both MQ and Vanilla dungeons don't get set in both areas. //locations which appear in both MQ and Vanilla dungeons don't get set in both areas.
areaTable.fill(Region("Invalid Region", "Invalid Region", {}, NO_DAY_NIGHT_CYCLE, {}, {}, {})); areaTable.fill(Region("Invalid Region", "Invalid Region", {}, NO_DAY_NIGHT_CYCLE, {}, {}, {}));
// clang-format off
areaTable[RR_ROOT] = Region("Root", "", {RA_LINKS_POCKET}, NO_DAY_NIGHT_CYCLE, { areaTable[RR_ROOT] = Region("Root", "", {RA_LINKS_POCKET}, NO_DAY_NIGHT_CYCLE, {
//Events //Events
EventAccess(&logic->KakarikoVillageGateOpen, []{return ctx->GetOption(RSK_KAK_GATE).Is(RO_KAK_GATE_OPEN);}), EventAccess(&logic->KakarikoVillageGateOpen, []{return ctx->GetOption(RSK_KAK_GATE).Is(RO_KAK_GATE_OPEN);}),
@ -326,6 +327,8 @@ void RegionTable_Init() {
Entrance(RR_TEMPLE_OF_TIME, []{return true;}), Entrance(RR_TEMPLE_OF_TIME, []{return true;}),
}); });
// clang-format on
// Overworld // Overworld
RegionTable_Init_KokiriForest(); RegionTable_Init_KokiriForest();
RegionTable_Init_LostWoods(); RegionTable_Init_LostWoods();
@ -571,4 +574,4 @@ Rando::Entrance* GetEntrance(const std::string name) {
} }
return nullptr; return nullptr;
} }

View file

@ -5,6 +5,7 @@
using namespace Rando; using namespace Rando;
void RegionTable_Init_BottomOfTheWell() { void RegionTable_Init_BottomOfTheWell() {
// clang-format off
// Vanilla/MQ Decider // Vanilla/MQ Decider
areaTable[RR_BOTTOM_OF_THE_WELL_ENTRYWAY] = Region("Bottom of the Well Entryway", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, {}, {}, { areaTable[RR_BOTTOM_OF_THE_WELL_ENTRYWAY] = Region("Bottom of the Well Entryway", "Bottom of the Well", {RA_BOTTOM_OF_THE_WELL}, NO_DAY_NIGHT_CYCLE, {}, {}, {
//Exits //Exits
@ -293,4 +294,5 @@ void RegionTable_Init_BottomOfTheWell() {
}); });
#pragma endregion #pragma endregion
} // clang-format on
}

View file

@ -5,6 +5,7 @@
using namespace Rando; using namespace Rando;
void RegionTable_Init_DekuTree() { void RegionTable_Init_DekuTree() {
// clang-format off
// Vanilla/MQ Decider // Vanilla/MQ Decider
areaTable[RR_DEKU_TREE_ENTRYWAY] = Region("Deku Tree Entryway", "Deku Tree", {RA_DEKU_TREE}, NO_DAY_NIGHT_CYCLE, {}, {}, { areaTable[RR_DEKU_TREE_ENTRYWAY] = Region("Deku Tree Entryway", "Deku Tree", {RA_DEKU_TREE}, NO_DAY_NIGHT_CYCLE, {}, {}, {
//Exits //Exits
@ -360,4 +361,6 @@ void RegionTable_Init_DekuTree() {
Entrance(RR_DEKU_TREE_BOSS_ENTRYWAY, []{return true;}), Entrance(RR_DEKU_TREE_BOSS_ENTRYWAY, []{return true;}),
Entrance(RR_KF_OUTSIDE_DEKU_TREE, []{return logic->DekuTreeClear;}, false), Entrance(RR_KF_OUTSIDE_DEKU_TREE, []{return logic->DekuTreeClear;}, false),
}); });
}
// clang-format on
}

View file

@ -5,6 +5,7 @@
using namespace Rando; using namespace Rando;
void RegionTable_Init_DodongosCavern() { void RegionTable_Init_DodongosCavern() {
// clang-format off
// Vanilla/MQ Decider // Vanilla/MQ Decider
areaTable[RR_DODONGOS_CAVERN_ENTRYWAY] = Region("Dodongos Cavern Entryway", "Dodongos Cavern", {RA_DODONGOS_CAVERN}, NO_DAY_NIGHT_CYCLE, {}, {}, { areaTable[RR_DODONGOS_CAVERN_ENTRYWAY] = Region("Dodongos Cavern Entryway", "Dodongos Cavern", {RA_DODONGOS_CAVERN}, NO_DAY_NIGHT_CYCLE, {}, {}, {
//Exits //Exits
@ -541,4 +542,6 @@ void RegionTable_Init_DodongosCavern() {
Entrance(RR_DODONGOS_CAVERN_BOSS_ENTRYWAY, []{return true;}), Entrance(RR_DODONGOS_CAVERN_BOSS_ENTRYWAY, []{return true;}),
Entrance(RR_DEATH_MOUNTAIN_TRAIL, []{return logic->DodongosCavernClear;}, false), Entrance(RR_DEATH_MOUNTAIN_TRAIL, []{return logic->DodongosCavernClear;}, false),
}); });
}
// clang-format on
}

View file

@ -5,6 +5,7 @@
using namespace Rando; using namespace Rando;
void RegionTable_Init_FireTemple() { void RegionTable_Init_FireTemple() {
// clang-format off
// Vanilla/MQ Decider // Vanilla/MQ Decider
areaTable[RR_FIRE_TEMPLE_ENTRYWAY] = Region("Fire Temple Entryway", "Fire Temple", {RA_FIRE_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {}, { areaTable[RR_FIRE_TEMPLE_ENTRYWAY] = Region("Fire Temple Entryway", "Fire Temple", {RA_FIRE_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {}, {
//Exits //Exits
@ -715,4 +716,6 @@ void RegionTable_Init_FireTemple() {
Entrance(RR_FIRE_TEMPLE_BOSS_ENTRYWAY, []{return false;}), Entrance(RR_FIRE_TEMPLE_BOSS_ENTRYWAY, []{return false;}),
Entrance(RR_DMC_CENTRAL_LOCAL, []{return logic->FireTempleClear;}, false), Entrance(RR_DMC_CENTRAL_LOCAL, []{return logic->FireTempleClear;}, false),
}); });
}
// clang-format on
}

View file

@ -5,6 +5,7 @@
using namespace Rando; using namespace Rando;
void RegionTable_Init_ForestTemple() { void RegionTable_Init_ForestTemple() {
// clang-format off
// Vanilla/MQ Decider // Vanilla/MQ Decider
areaTable[RR_FOREST_TEMPLE_ENTRYWAY] = Region("Forest Temple Entryway", "Forest Temple", {RA_FOREST_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {}, { areaTable[RR_FOREST_TEMPLE_ENTRYWAY] = Region("Forest Temple Entryway", "Forest Temple", {RA_FOREST_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {}, {
//Exits //Exits
@ -610,4 +611,6 @@ void RegionTable_Init_ForestTemple() {
Entrance(RR_FOREST_TEMPLE_BOSS_ENTRYWAY, []{return false;}), Entrance(RR_FOREST_TEMPLE_BOSS_ENTRYWAY, []{return false;}),
Entrance(RR_SACRED_FOREST_MEADOW, []{return logic->ForestTempleClear;}, false), Entrance(RR_SACRED_FOREST_MEADOW, []{return logic->ForestTempleClear;}, false),
}); });
}
// clang-format on
}

View file

@ -6,6 +6,7 @@
using namespace Rando; using namespace Rando;
void RegionTable_Init_GanonsCastle() { void RegionTable_Init_GanonsCastle() {
// clang-format off
// Vanilla/MQ Decider // Vanilla/MQ Decider
areaTable[RR_GANONS_CASTLE_ENTRYWAY] = Region("Ganon's Castle Entryway", "Ganon's Castle", {RA_GANONS_CASTLE}, NO_DAY_NIGHT_CYCLE, {}, {}, { areaTable[RR_GANONS_CASTLE_ENTRYWAY] = Region("Ganon's Castle Entryway", "Ganon's Castle", {RA_GANONS_CASTLE}, NO_DAY_NIGHT_CYCLE, {}, {}, {
//Exits //Exits
@ -511,4 +512,5 @@ void RegionTable_Init_GanonsCastle() {
}, {}); }, {});
#pragma endregion #pragma endregion
} // clang-format on
}

View file

@ -5,6 +5,7 @@
using namespace Rando; using namespace Rando;
void RegionTable_Init_GerudoTrainingGround() { void RegionTable_Init_GerudoTrainingGround() {
// clang-format off
// Vanilla/MQ Decider // Vanilla/MQ Decider
areaTable[RR_GERUDO_TRAINING_GROUND_ENTRYWAY] = Region("Gerudo Training Ground Entryway", "Gerudo Training Ground", {RA_GERUDO_TRAINING_GROUND}, NO_DAY_NIGHT_CYCLE, {}, {}, { areaTable[RR_GERUDO_TRAINING_GROUND_ENTRYWAY] = Region("Gerudo Training Ground Entryway", "Gerudo Training Ground", {RA_GERUDO_TRAINING_GROUND}, NO_DAY_NIGHT_CYCLE, {}, {}, {
//Exits //Exits
@ -321,4 +322,5 @@ void RegionTable_Init_GerudoTrainingGround() {
}); });
#pragma endregion #pragma endregion
} // clang-format on
}

View file

@ -5,6 +5,7 @@
using namespace Rando; using namespace Rando;
void RegionTable_Init_IceCavern() { void RegionTable_Init_IceCavern() {
// clang-format off
// Vanilla/MQ Decider // Vanilla/MQ Decider
areaTable[RR_ICE_CAVERN_ENTRYWAY] = Region("Ice Cavern Entryway", "Ice Cavern", {RA_ICE_CAVERN}, NO_DAY_NIGHT_CYCLE, {}, {}, { areaTable[RR_ICE_CAVERN_ENTRYWAY] = Region("Ice Cavern Entryway", "Ice Cavern", {RA_ICE_CAVERN}, NO_DAY_NIGHT_CYCLE, {}, {}, {
//Exits //Exits
@ -144,4 +145,5 @@ void RegionTable_Init_IceCavern() {
}, {}); }, {});
#pragma endregion #pragma endregion
} // clang-format on
}

View file

@ -5,6 +5,7 @@
using namespace Rando; using namespace Rando;
void RegionTable_Init_JabuJabusBelly() { void RegionTable_Init_JabuJabusBelly() {
// clang-format off
// Vanilla/MQ Decider // Vanilla/MQ Decider
areaTable[RR_JABU_JABUS_BELLY_ENTRYWAY] = Region("Jabu Jabus Belly Entryway", "Jabu Jabus Belly", {RA_JABU_JABUS_BELLY}, NO_DAY_NIGHT_CYCLE, {}, {}, { areaTable[RR_JABU_JABUS_BELLY_ENTRYWAY] = Region("Jabu Jabus Belly Entryway", "Jabu Jabus Belly", {RA_JABU_JABUS_BELLY}, NO_DAY_NIGHT_CYCLE, {}, {}, {
//Exits //Exits
@ -356,4 +357,6 @@ void RegionTable_Init_JabuJabusBelly() {
Entrance(RR_JABU_JABUS_BELLY_BOSS_ENTRYWAY, []{return false;}), Entrance(RR_JABU_JABUS_BELLY_BOSS_ENTRYWAY, []{return false;}),
Entrance(RR_ZORAS_FOUNTAIN, []{return logic->JabuJabusBellyClear;}, false), Entrance(RR_ZORAS_FOUNTAIN, []{return logic->JabuJabusBellyClear;}, false),
}); });
}
// clang-format on
}

View file

@ -5,6 +5,7 @@
using namespace Rando; using namespace Rando;
void RegionTable_Init_ShadowTemple() { void RegionTable_Init_ShadowTemple() {
// clang-format off
// Vanilla/MQ Decider // Vanilla/MQ Decider
areaTable[RR_SHADOW_TEMPLE_ENTRYWAY] = Region("Shadow Temple Entryway", "Shadow Temple", {RA_SHADOW_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {}, { areaTable[RR_SHADOW_TEMPLE_ENTRYWAY] = Region("Shadow Temple Entryway", "Shadow Temple", {RA_SHADOW_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {}, {
//Exits //Exits
@ -409,4 +410,6 @@ void RegionTable_Init_ShadowTemple() {
Entrance(RR_SHADOW_TEMPLE_BOSS_ENTRYWAY, []{return false;}), Entrance(RR_SHADOW_TEMPLE_BOSS_ENTRYWAY, []{return false;}),
Entrance(RR_GRAVEYARD_WARP_PAD_REGION, []{return logic->ShadowTempleClear;}, false), Entrance(RR_GRAVEYARD_WARP_PAD_REGION, []{return logic->ShadowTempleClear;}, false),
}); });
}
// clang-format on
}

View file

@ -5,6 +5,7 @@
using namespace Rando; using namespace Rando;
void RegionTable_Init_SpiritTemple() { void RegionTable_Init_SpiritTemple() {
// clang-format off
// Vanilla/MQ Decider // Vanilla/MQ Decider
areaTable[RR_SPIRIT_TEMPLE_ENTRYWAY] = Region("Spirit Temple Entryway", "Spirit Temple", {RA_SPIRIT_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {}, { areaTable[RR_SPIRIT_TEMPLE_ENTRYWAY] = Region("Spirit Temple Entryway", "Spirit Temple", {RA_SPIRIT_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {}, {
//Exits //Exits
@ -554,4 +555,6 @@ void RegionTable_Init_SpiritTemple() {
Entrance(RR_SPIRIT_TEMPLE_BOSS_ENTRYWAY, []{return false;}), Entrance(RR_SPIRIT_TEMPLE_BOSS_ENTRYWAY, []{return false;}),
Entrance(RR_DESERT_COLOSSUS, []{return logic->SpiritTempleClear;}, false), Entrance(RR_DESERT_COLOSSUS, []{return logic->SpiritTempleClear;}, false),
}); });
}
// clang-format on
}

View file

@ -5,6 +5,7 @@
using namespace Rando; using namespace Rando;
void RegionTable_Init_WaterTemple() { void RegionTable_Init_WaterTemple() {
// clang-format off
// Vanilla/MQ Decider // Vanilla/MQ Decider
areaTable[RR_WATER_TEMPLE_ENTRYWAY] = Region("Water Temple Entryway", "Water Temple", {RA_WATER_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {}, { areaTable[RR_WATER_TEMPLE_ENTRYWAY] = Region("Water Temple Entryway", "Water Temple", {RA_WATER_TEMPLE}, NO_DAY_NIGHT_CYCLE, {}, {}, {
//Exits //Exits
@ -735,4 +736,6 @@ void RegionTable_Init_WaterTemple() {
Entrance(RR_WATER_TEMPLE_BOSS_ENTRYWAY, []{return false;}), Entrance(RR_WATER_TEMPLE_BOSS_ENTRYWAY, []{return false;}),
Entrance(RR_LAKE_HYLIA, []{return logic->WaterTempleClear;}, false), Entrance(RR_LAKE_HYLIA, []{return logic->WaterTempleClear;}, false),
}); });
}
// clang-format on
}

View file

@ -9,6 +9,7 @@ using namespace Rando;
*/ */
void RegionTable_Init_GerudoFortress() { void RegionTable_Init_GerudoFortress() {
// clang-format off
areaTable[RR_GERUDO_FORTRESS] = Region("Gerudo Fortress", "Gerudo Fortress", {RA_GERUDO_FORTRESS}, NO_DAY_NIGHT_CYCLE, { areaTable[RR_GERUDO_FORTRESS] = Region("Gerudo Fortress", "Gerudo Fortress", {RA_GERUDO_FORTRESS}, NO_DAY_NIGHT_CYCLE, {
//Events //Events
EventAccess(&logic->CarpenterRescue, []{return logic->CanFinishGerudoFortress();}), EventAccess(&logic->CarpenterRescue, []{return logic->CanFinishGerudoFortress();}),
@ -78,4 +79,6 @@ void RegionTable_Init_GerudoFortress() {
//Exits //Exits
Entrance(RR_GERUDO_FORTRESS, []{return true;}), Entrance(RR_GERUDO_FORTRESS, []{return true;}),
}); });
}
// clang-format on
}

View file

@ -4,6 +4,7 @@
using namespace Rando; using namespace Rando;
void RegionTable_Init_CastleGrounds() { void RegionTable_Init_CastleGrounds() {
// clang-format off
//With multi-area support {RA_CASTLE_GROUNDS} is not strictly required anymore, as any interior here could inherit both //With multi-area support {RA_CASTLE_GROUNDS} is not strictly required anymore, as any interior here could inherit both
//{RA_HYRULE_CASTLE} and {RA_OUTSIDE_GANONS_CASTLE}, but a setting to merge the latter 2 into the former may be preferred //{RA_HYRULE_CASTLE} and {RA_OUTSIDE_GANONS_CASTLE}, but a setting to merge the latter 2 into the former may be preferred
areaTable[RR_CASTLE_GROUNDS] = Region("Castle Grounds", "Castle Grounds", {RA_CASTLE_GROUNDS}, NO_DAY_NIGHT_CYCLE, {}, {}, { areaTable[RR_CASTLE_GROUNDS] = Region("Castle Grounds", "Castle Grounds", {RA_CASTLE_GROUNDS}, NO_DAY_NIGHT_CYCLE, {}, {}, {
@ -114,4 +115,6 @@ void RegionTable_Init_CastleGrounds() {
Entrance(RR_GANONS_CASTLE_GROUNDS, []{return logic->BuiltRainbowBridge;}), Entrance(RR_GANONS_CASTLE_GROUNDS, []{return logic->BuiltRainbowBridge;}),
Entrance(RR_GANONS_CASTLE_ENTRYWAY, []{return logic->IsAdult;}), Entrance(RR_GANONS_CASTLE_ENTRYWAY, []{return logic->IsAdult;}),
}); });
}
// clang-format on
}

View file

@ -4,6 +4,7 @@
using namespace Rando; using namespace Rando;
void RegionTable_Init_DeathMountainCrater() { void RegionTable_Init_DeathMountainCrater() {
// clang-format off
areaTable[RR_DMC_UPPER_NEARBY] = Region("DMC Upper Nearby", "Death Mountain Crater", {RA_DEATH_MOUNTAIN_CRATER}, NO_DAY_NIGHT_CYCLE, {}, {}, { areaTable[RR_DMC_UPPER_NEARBY] = Region("DMC Upper Nearby", "Death Mountain Crater", {RA_DEATH_MOUNTAIN_CRATER}, NO_DAY_NIGHT_CYCLE, {}, {}, {
//Exits //Exits
Entrance(RR_DMC_UPPER_LOCAL, []{return logic->FireTimer() >= 48;}), Entrance(RR_DMC_UPPER_LOCAL, []{return logic->FireTimer() >= 48;}),
@ -142,4 +143,6 @@ void RegionTable_Init_DeathMountainCrater() {
//Exits //Exits
Entrance(RR_DMC_CENTRAL_LOCAL, []{return logic->FireTimer() >= 48 && logic->CanUse(RG_DISTANT_SCARECROW);}), Entrance(RR_DMC_CENTRAL_LOCAL, []{return logic->FireTimer() >= 48 && logic->CanUse(RG_DISTANT_SCARECROW);}),
}); });
}
// clang-format on
}

View file

@ -4,6 +4,7 @@
using namespace Rando; using namespace Rando;
void RegionTable_Init_DeathMountainTrail() { void RegionTable_Init_DeathMountainTrail() {
// clang-format off
areaTable[RR_DEATH_MOUNTAIN_TRAIL] = Region("Death Mountain", "Death Mountain", {RA_DEATH_MOUNTAIN_TRAIL}, DAY_NIGHT_CYCLE, { areaTable[RR_DEATH_MOUNTAIN_TRAIL] = Region("Death Mountain", "Death Mountain", {RA_DEATH_MOUNTAIN_TRAIL}, DAY_NIGHT_CYCLE, {
//Events //Events
EventAccess(&logic->BeanPlantFairy, []{return logic->IsChild && logic->CanUse(RG_MAGIC_BEAN) && logic->CanUse(RG_SONG_OF_STORMS) && (logic->HasExplosives() || logic->HasItem(RG_GORONS_BRACELET));}), EventAccess(&logic->BeanPlantFairy, []{return logic->IsChild && logic->CanUse(RG_MAGIC_BEAN) && logic->CanUse(RG_SONG_OF_STORMS) && (logic->HasExplosives() || logic->HasItem(RG_GORONS_BRACELET));}),
@ -98,4 +99,6 @@ void RegionTable_Init_DeathMountainTrail() {
//Exits //Exits
Entrance(RR_DEATH_MOUNTAIN_SUMMIT, []{return true;}), Entrance(RR_DEATH_MOUNTAIN_SUMMIT, []{return true;}),
}); });
}
// clang-format on
}

View file

@ -4,6 +4,7 @@
using namespace Rando; using namespace Rando;
void RegionTable_Init_DesertColossus() { void RegionTable_Init_DesertColossus() {
// clang-format off
areaTable[RR_DESERT_COLOSSUS] = Region("Desert Colossus", "Desert Colossus", {RA_DESERT_COLOSSUS}, DAY_NIGHT_CYCLE, { areaTable[RR_DESERT_COLOSSUS] = Region("Desert Colossus", "Desert Colossus", {RA_DESERT_COLOSSUS}, DAY_NIGHT_CYCLE, {
//Events //Events
EventAccess(&logic->FairyPond, []{return logic->FairyPond || logic->CanUse(RG_SONG_OF_STORMS);}), EventAccess(&logic->FairyPond, []{return logic->FairyPond || logic->CanUse(RG_SONG_OF_STORMS);}),
@ -74,4 +75,6 @@ void RegionTable_Init_DesertColossus() {
//Exits //Exits
Entrance(RR_DESERT_COLOSSUS, []{return true;}), Entrance(RR_DESERT_COLOSSUS, []{return true;}),
}); });
}
// clang-format on
}

View file

@ -4,6 +4,7 @@
using namespace Rando; using namespace Rando;
void RegionTable_Init_GerudoValley() { void RegionTable_Init_GerudoValley() {
// clang-format off
areaTable[RR_GERUDO_VALLEY] = Region("Gerudo Valley", "Gerudo Valley", {RA_GERUDO_VALLEY}, DAY_NIGHT_CYCLE, { areaTable[RR_GERUDO_VALLEY] = Region("Gerudo Valley", "Gerudo Valley", {RA_GERUDO_VALLEY}, DAY_NIGHT_CYCLE, {
//Events //Events
EventAccess(&logic->BugRock, []{return logic->BugRock || logic->IsChild;}), EventAccess(&logic->BugRock, []{return logic->BugRock || logic->IsChild;}),
@ -108,4 +109,6 @@ void RegionTable_Init_GerudoValley() {
//Exits //Exits
Entrance(RR_GV_FORTRESS_SIDE, []{return true;}), Entrance(RR_GV_FORTRESS_SIDE, []{return true;}),
}); });
}
// clang-format on
}

View file

@ -4,6 +4,7 @@
using namespace Rando; using namespace Rando;
void RegionTable_Init_GoronCity() { void RegionTable_Init_GoronCity() {
// clang-format off
areaTable[RR_GORON_CITY] = Region("Goron City", "Goron City", {RA_GORON_CITY}, NO_DAY_NIGHT_CYCLE, { areaTable[RR_GORON_CITY] = Region("Goron City", "Goron City", {RA_GORON_CITY}, NO_DAY_NIGHT_CYCLE, {
//Events //Events
EventAccess(&logic->GossipStoneFairy, []{return logic->CallGossipFairyExceptSuns();}), EventAccess(&logic->GossipStoneFairy, []{return logic->CallGossipFairyExceptSuns();}),
@ -108,4 +109,6 @@ void RegionTable_Init_GoronCity() {
//Exits //Exits
Entrance(RR_GC_GROTTO_PLATFORM, []{return true;}), Entrance(RR_GC_GROTTO_PLATFORM, []{return true;}),
}); });
}
// clang-format on
}

View file

@ -4,6 +4,7 @@
using namespace Rando; using namespace Rando;
void RegionTable_Init_Graveyard() { void RegionTable_Init_Graveyard() {
// clang-format off
areaTable[RR_THE_GRAVEYARD] = Region("The Graveyard", "The Graveyard", {RA_THE_GRAVEYARD}, NO_DAY_NIGHT_CYCLE, { areaTable[RR_THE_GRAVEYARD] = Region("The Graveyard", "The Graveyard", {RA_THE_GRAVEYARD}, NO_DAY_NIGHT_CYCLE, {
//Events //Events
EventAccess(&logic->ButterflyFairy, []{return logic->ButterflyFairy || (logic->CanUse(RG_STICKS) && logic->AtDay);}), EventAccess(&logic->ButterflyFairy, []{return logic->ButterflyFairy || (logic->CanUse(RG_STICKS) && logic->AtDay);}),
@ -120,4 +121,6 @@ void RegionTable_Init_Graveyard() {
Entrance(RR_THE_GRAVEYARD, []{return true;}), Entrance(RR_THE_GRAVEYARD, []{return true;}),
Entrance(RR_SHADOW_TEMPLE_ENTRYWAY, []{return logic->CanUse(RG_DINS_FIRE) || (ctx->GetTrickOption(RT_GY_SHADOW_FIRE_ARROWS) && logic->IsAdult && logic->CanUse(RG_FIRE_ARROWS));}), Entrance(RR_SHADOW_TEMPLE_ENTRYWAY, []{return logic->CanUse(RG_DINS_FIRE) || (ctx->GetTrickOption(RT_GY_SHADOW_FIRE_ARROWS) && logic->IsAdult && logic->CanUse(RG_FIRE_ARROWS));}),
}); });
// clang-format on
} }

View file

@ -4,6 +4,7 @@
using namespace Rando; using namespace Rando;
void RegionTable_Init_HauntedWasteland() { void RegionTable_Init_HauntedWasteland() {
// clang-format off
areaTable[RR_WASTELAND_NEAR_FORTRESS] = Region("Wasteland Near Fortress", "Haunted Wasteland", {RA_HAUNTED_WASTELAND}, NO_DAY_NIGHT_CYCLE, {}, {}, { areaTable[RR_WASTELAND_NEAR_FORTRESS] = Region("Wasteland Near Fortress", "Haunted Wasteland", {RA_HAUNTED_WASTELAND}, NO_DAY_NIGHT_CYCLE, {}, {}, {
//Exits //Exits
Entrance(RR_GF_OUTSIDE_GATE, []{return true;}), Entrance(RR_GF_OUTSIDE_GATE, []{return true;}),
@ -35,4 +36,6 @@ void RegionTable_Init_HauntedWasteland() {
Entrance(RR_DESERT_COLOSSUS, []{return true;}), Entrance(RR_DESERT_COLOSSUS, []{return true;}),
Entrance(RR_HAUNTED_WASTELAND, []{return ctx->GetTrickOption(RT_HW_REVERSE) || false;}), Entrance(RR_HAUNTED_WASTELAND, []{return ctx->GetTrickOption(RT_HW_REVERSE) || false;}),
}); });
}
// clang-format on
}

View file

@ -4,6 +4,7 @@
using namespace Rando; using namespace Rando;
void RegionTable_Init_HyruleField() { void RegionTable_Init_HyruleField() {
// clang-format off
areaTable[RR_HYRULE_FIELD] = Region("Hyrule Field", "Hyrule Field", {RA_HYRULE_FIELD}, DAY_NIGHT_CYCLE, { areaTable[RR_HYRULE_FIELD] = Region("Hyrule Field", "Hyrule Field", {RA_HYRULE_FIELD}, DAY_NIGHT_CYCLE, {
//Events //Events
EventAccess(&logic->BigPoeKill, []{return logic->CanUse(RG_FAIRY_BOW) && logic->CanUse(RG_EPONA) && logic->HasBottle();}), EventAccess(&logic->BigPoeKill, []{return logic->CanUse(RG_FAIRY_BOW) && logic->CanUse(RG_EPONA) && logic->HasBottle();}),
@ -140,4 +141,6 @@ void RegionTable_Init_HyruleField() {
//Exits //Exits
Entrance(RR_HYRULE_FIELD, []{return true;}), Entrance(RR_HYRULE_FIELD, []{return true;}),
}); });
}
// clang-format on
}

View file

@ -4,6 +4,7 @@
using namespace Rando; using namespace Rando;
void RegionTable_Init_Kakariko() { void RegionTable_Init_Kakariko() {
// clang-format off
areaTable[RR_KAKARIKO_VILLAGE] = Region("Kakariko Village", "Kakariko Village", {RA_KAKARIKO_VILLAGE}, NO_DAY_NIGHT_CYCLE, { areaTable[RR_KAKARIKO_VILLAGE] = Region("Kakariko Village", "Kakariko Village", {RA_KAKARIKO_VILLAGE}, NO_DAY_NIGHT_CYCLE, {
//Events //Events
EventAccess(&logic->BugRock, []{return true;}), EventAccess(&logic->BugRock, []{return true;}),
@ -239,4 +240,6 @@ void RegionTable_Init_Kakariko() {
Entrance(RR_KAKARIKO_VILLAGE, []{return logic->IsAdult || logic->HasItem(RG_BRONZE_SCALE) || logic->DrainWell;}), Entrance(RR_KAKARIKO_VILLAGE, []{return logic->IsAdult || logic->HasItem(RG_BRONZE_SCALE) || logic->DrainWell;}),
Entrance(RR_BOTTOM_OF_THE_WELL_ENTRYWAY, []{return logic->IsChild || (logic->DrainWell && ctx->GetOption(RSK_SHUFFLE_DUNGEON_ENTRANCES).IsNot(RO_DUNGEON_ENTRANCE_SHUFFLE_OFF));}), Entrance(RR_BOTTOM_OF_THE_WELL_ENTRYWAY, []{return logic->IsChild || (logic->DrainWell && ctx->GetOption(RSK_SHUFFLE_DUNGEON_ENTRANCES).IsNot(RO_DUNGEON_ENTRANCE_SHUFFLE_OFF));}),
}); });
// clang-format on
} }

View file

@ -4,6 +4,7 @@
using namespace Rando; using namespace Rando;
void RegionTable_Init_KokiriForest() { void RegionTable_Init_KokiriForest() {
// clang-format off
areaTable[RR_KOKIRI_FOREST] = Region("Kokiri Forest", "Kokiri Forest", {RA_KOKIRI_FOREST}, NO_DAY_NIGHT_CYCLE, { areaTable[RR_KOKIRI_FOREST] = Region("Kokiri Forest", "Kokiri Forest", {RA_KOKIRI_FOREST}, NO_DAY_NIGHT_CYCLE, {
//Events //Events
EventAccess(&logic->BeanPlantFairy, []{return logic->IsChild && logic->CanUse(RG_MAGIC_BEAN) && logic->CanUse(RG_SONG_OF_STORMS);}), EventAccess(&logic->BeanPlantFairy, []{return logic->IsChild && logic->CanUse(RG_MAGIC_BEAN) && logic->CanUse(RG_SONG_OF_STORMS);}),
@ -149,4 +150,6 @@ void RegionTable_Init_KokiriForest() {
//Exits //Exits
Entrance(RR_KOKIRI_FOREST, []{return true;}) Entrance(RR_KOKIRI_FOREST, []{return true;})
}); });
}
// clang-format on
}

View file

@ -4,6 +4,7 @@
using namespace Rando; using namespace Rando;
void RegionTable_Init_LakeHylia() { void RegionTable_Init_LakeHylia() {
// clang-format off
areaTable[RR_LAKE_HYLIA] = Region("Lake Hylia", "Lake Hylia", {RA_LAKE_HYLIA}, DAY_NIGHT_CYCLE, { areaTable[RR_LAKE_HYLIA] = Region("Lake Hylia", "Lake Hylia", {RA_LAKE_HYLIA}, DAY_NIGHT_CYCLE, {
//Events //Events
EventAccess(&logic->GossipStoneFairy, []{return logic->CallGossipFairy();}), EventAccess(&logic->GossipStoneFairy, []{return logic->CallGossipFairy();}),
@ -128,4 +129,6 @@ void RegionTable_Init_LakeHylia() {
//Exits //Exits
Entrance(RR_LAKE_HYLIA, []{return true;}), Entrance(RR_LAKE_HYLIA, []{return true;}),
}); });
// clang-format on
} }

View file

@ -4,6 +4,7 @@
using namespace Rando; using namespace Rando;
void RegionTable_Init_LonLonRanch() { void RegionTable_Init_LonLonRanch() {
// clang-format off
areaTable[RR_LON_LON_RANCH] = Region("Lon Lon Ranch", "Lon Lon Ranch", {RA_LON_LON_RANCH}, NO_DAY_NIGHT_CYCLE, { areaTable[RR_LON_LON_RANCH] = Region("Lon Lon Ranch", "Lon Lon Ranch", {RA_LON_LON_RANCH}, NO_DAY_NIGHT_CYCLE, {
//Events //Events
EventAccess(&logic->FreedEpona, []{return logic->FreedEpona || ((logic->HasItem(RG_CHILD_WALLET) || ctx->GetOption(RSK_SKIP_EPONA_RACE)) && logic->CanUse(RG_EPONAS_SONG) && logic->IsAdult && logic->AtDay);}), EventAccess(&logic->FreedEpona, []{return logic->FreedEpona || ((logic->HasItem(RG_CHILD_WALLET) || ctx->GetOption(RSK_SKIP_EPONA_RACE)) && logic->CanUse(RG_EPONAS_SONG) && logic->IsAdult && logic->AtDay);}),
@ -71,4 +72,6 @@ void RegionTable_Init_LonLonRanch() {
//Exits //Exits
Entrance(RR_LON_LON_RANCH, []{return true;}), Entrance(RR_LON_LON_RANCH, []{return true;}),
}); });
// clang-format on
} }

View file

@ -4,6 +4,7 @@
using namespace Rando; using namespace Rando;
void RegionTable_Init_LostWoods() { void RegionTable_Init_LostWoods() {
// clang-format off
areaTable[RR_LW_FOREST_EXIT] = Region("LW Forest Exit", "Lost Woods", {RA_THE_LOST_WOODS}, NO_DAY_NIGHT_CYCLE, {}, {}, { areaTable[RR_LW_FOREST_EXIT] = Region("LW Forest Exit", "Lost Woods", {RA_THE_LOST_WOODS}, NO_DAY_NIGHT_CYCLE, {}, {}, {
//Exits //Exits
Entrance(RR_KOKIRI_FOREST, []{return true;}) Entrance(RR_KOKIRI_FOREST, []{return true;})
@ -128,4 +129,6 @@ void RegionTable_Init_LostWoods() {
Entrance(RR_HYRULE_FIELD, []{return true;}), Entrance(RR_HYRULE_FIELD, []{return true;}),
Entrance(RR_THE_LOST_WOODS, []{return logic->CanUse(RG_LONGSHOT);}), Entrance(RR_THE_LOST_WOODS, []{return logic->CanUse(RG_LONGSHOT);}),
}); });
}
// clang-format on
}

View file

@ -4,6 +4,7 @@
using namespace Rando; using namespace Rando;
void RegionTable_Init_Market() { void RegionTable_Init_Market() {
// clang-format off
areaTable[RR_MARKET_ENTRANCE] = Region("Market Entrance", "Market Entrance", {RA_THE_MARKET}, NO_DAY_NIGHT_CYCLE, {}, {}, { areaTable[RR_MARKET_ENTRANCE] = Region("Market Entrance", "Market Entrance", {RA_THE_MARKET}, NO_DAY_NIGHT_CYCLE, {}, {}, {
//Exits //Exits
Entrance(RR_HYRULE_FIELD, []{return logic->IsAdult || logic->AtDay;}), Entrance(RR_HYRULE_FIELD, []{return logic->IsAdult || logic->AtDay;}),
@ -214,4 +215,6 @@ void RegionTable_Init_Market() {
//Exits //Exits
Entrance(RR_MARKET_BACK_ALLEY, []{return true;}), Entrance(RR_MARKET_BACK_ALLEY, []{return true;}),
}); });
// clang-format on
} }

View file

@ -4,6 +4,7 @@
using namespace Rando; using namespace Rando;
void RegionTable_Init_SacredForestMeadow() { void RegionTable_Init_SacredForestMeadow() {
// clang-format off
areaTable[RR_SFM_ENTRYWAY] = Region("SFM Entryway", "Sacred Forest Meadow", {RA_SACRED_FOREST_MEADOW}, NO_DAY_NIGHT_CYCLE, {}, {}, { areaTable[RR_SFM_ENTRYWAY] = Region("SFM Entryway", "Sacred Forest Meadow", {RA_SACRED_FOREST_MEADOW}, NO_DAY_NIGHT_CYCLE, {}, {}, {
//Exits //Exits
Entrance(RR_LW_BEYOND_MIDO, []{return true;}), Entrance(RR_LW_BEYOND_MIDO, []{return true;}),
@ -71,4 +72,6 @@ void RegionTable_Init_SacredForestMeadow() {
//Exits //Exits
Entrance(RR_SACRED_FOREST_MEADOW, []{return true;}), Entrance(RR_SACRED_FOREST_MEADOW, []{return true;}),
}); });
}
// clang-format on
}

View file

@ -4,6 +4,7 @@
using namespace Rando; using namespace Rando;
void RegionTable_Init_TempleOfTime() { void RegionTable_Init_TempleOfTime() {
// clang-format off
areaTable[RR_TOT_ENTRANCE] = Region("ToT Entrance", "ToT Entrance", {RA_THE_MARKET}, NO_DAY_NIGHT_CYCLE, { areaTable[RR_TOT_ENTRANCE] = Region("ToT Entrance", "ToT Entrance", {RA_THE_MARKET}, NO_DAY_NIGHT_CYCLE, {
//Events //Events
EventAccess(&logic->GossipStoneFairy, []{return logic->CallGossipFairyExceptSuns();}), EventAccess(&logic->GossipStoneFairy, []{return logic->CallGossipFairyExceptSuns();}),
@ -51,4 +52,6 @@ void RegionTable_Init_TempleOfTime() {
//Exits //Exits
Entrance(RR_TEMPLE_OF_TIME, []{return true;}), Entrance(RR_TEMPLE_OF_TIME, []{return true;}),
}); });
}
// clang-format on
}

View file

@ -4,6 +4,7 @@
using namespace Rando; using namespace Rando;
void RegionTable_Init_ZorasDomain() { void RegionTable_Init_ZorasDomain() {
// clang-format off
areaTable[RR_ZORAS_DOMAIN] = Region("Zoras Domain", "Zoras Domain", {RA_ZORAS_DOMAIN}, NO_DAY_NIGHT_CYCLE, { areaTable[RR_ZORAS_DOMAIN] = Region("Zoras Domain", "Zoras Domain", {RA_ZORAS_DOMAIN}, NO_DAY_NIGHT_CYCLE, {
//Events //Events
EventAccess(&logic->GossipStoneFairy, []{return logic->CallGossipFairyExceptSuns();}), EventAccess(&logic->GossipStoneFairy, []{return logic->CallGossipFairyExceptSuns();}),
@ -90,4 +91,6 @@ void RegionTable_Init_ZorasDomain() {
//Exits //Exits
Entrance(RR_ZORAS_DOMAIN_ISLAND, []{return true;}), Entrance(RR_ZORAS_DOMAIN_ISLAND, []{return true;}),
}); });
}
// clang-format on
}

View file

@ -4,6 +4,7 @@
using namespace Rando; using namespace Rando;
void RegionTable_Init_ZorasFountain() { void RegionTable_Init_ZorasFountain() {
// clang-format off
areaTable[RR_ZORAS_FOUNTAIN] = Region("Zoras Fountain", "Zoras Fountain", {RA_ZORAS_FOUNTAIN}, NO_DAY_NIGHT_CYCLE, { areaTable[RR_ZORAS_FOUNTAIN] = Region("Zoras Fountain", "Zoras Fountain", {RA_ZORAS_FOUNTAIN}, NO_DAY_NIGHT_CYCLE, {
//Events //Events
EventAccess(&logic->GossipStoneFairy, []{return logic->CallGossipFairyExceptSuns();}), EventAccess(&logic->GossipStoneFairy, []{return logic->CallGossipFairyExceptSuns();}),
@ -61,4 +62,6 @@ void RegionTable_Init_ZorasFountain() {
//Exits //Exits
Entrance(RR_ZORAS_FOUNTAIN, []{return true;}), Entrance(RR_ZORAS_FOUNTAIN, []{return true;}),
}); });
}
// clang-format on
}

View file

@ -4,6 +4,7 @@
using namespace Rando; using namespace Rando;
void RegionTable_Init_ZoraRiver() { void RegionTable_Init_ZoraRiver() {
// clang-format off
areaTable[RR_ZR_FRONT] = Region("ZR Front", "Zora River", {RA_ZORAS_RIVER}, DAY_NIGHT_CYCLE, {}, { areaTable[RR_ZR_FRONT] = Region("ZR Front", "Zora River", {RA_ZORAS_RIVER}, DAY_NIGHT_CYCLE, {}, {
//Locations //Locations
LOCATION(RC_ZR_GS_TREE, logic->IsChild && logic->CanKillEnemy(RE_GOLD_SKULLTULA, ED_CLOSE)), LOCATION(RC_ZR_GS_TREE, logic->IsChild && logic->CanKillEnemy(RE_GOLD_SKULLTULA, ED_CLOSE)),
@ -104,4 +105,6 @@ void RegionTable_Init_ZoraRiver() {
//Exits //Exits
Entrance(RR_ZORAS_RIVER, []{return true;}), Entrance(RR_ZORAS_RIVER, []{return true;}),
}); });
}
// clang-format on
}

View file

@ -100,7 +100,7 @@ static const char* englishRupeeNames[175] = {
"Studs", "Super Sea Snails", "Talent", "Teef", "Telecrystals", "Studs", "Super Sea Snails", "Talent", "Teef", "Telecrystals",
"Tiberium", "TokKul", "Toys", "Turnips", "Upvotes", "Tiberium", "TokKul", "Toys", "Turnips", "Upvotes",
"V-Bucks", "Vespene Gas", "Watts", "Widgets", "Woolongs", "V-Bucks", "Vespene Gas", "Watts", "Widgets", "Woolongs",
"World Dollars", "Wumpa Fruit", "Yen", "Zenny", "Zorkmids" "World Dollars", "Wumpa Fruit", "Yen", "Zenny", "Zorkmids",
}; };
static const char* germanRupeeNames[65] = { static const char* germanRupeeNames[65] = {
@ -205,7 +205,7 @@ std::unordered_map<s16, s16> getItemIdToItemId = {
{ GI_PRESCRIPTION, ITEM_PRESCRIPTION }, { GI_PRESCRIPTION, ITEM_PRESCRIPTION },
{ GI_FROG, ITEM_FROG }, { GI_FROG, ITEM_FROG },
{ GI_EYEDROPS, ITEM_EYEDROPS }, { GI_EYEDROPS, ITEM_EYEDROPS },
{ GI_CLAIM_CHECK, ITEM_CLAIM_CHECK } { GI_CLAIM_CHECK, ITEM_CLAIM_CHECK },
}; };
#pragma optimize("", off) #pragma optimize("", off)
@ -400,12 +400,12 @@ void Randomizer::LoadMerchantMessages() {
} }
std::map<s32, TrialKey> trialFlagToTrialKey = { std::map<s32, TrialKey> trialFlagToTrialKey = {
{ EVENTCHKINF_COMPLETED_LIGHT_TRIAL, TK_LIGHT_TRIAL, }, { EVENTCHKINF_COMPLETED_LIGHT_TRIAL, TK_LIGHT_TRIAL },
{ EVENTCHKINF_COMPLETED_FOREST_TRIAL, TK_FOREST_TRIAL, }, { EVENTCHKINF_COMPLETED_FOREST_TRIAL, TK_FOREST_TRIAL },
{ EVENTCHKINF_COMPLETED_FIRE_TRIAL, TK_FIRE_TRIAL, }, { EVENTCHKINF_COMPLETED_FIRE_TRIAL, TK_FIRE_TRIAL },
{ EVENTCHKINF_COMPLETED_WATER_TRIAL, TK_WATER_TRIAL, }, { EVENTCHKINF_COMPLETED_WATER_TRIAL, TK_WATER_TRIAL },
{ EVENTCHKINF_COMPLETED_SPIRIT_TRIAL, TK_SPIRIT_TRIAL, }, { EVENTCHKINF_COMPLETED_SPIRIT_TRIAL, TK_SPIRIT_TRIAL },
{ EVENTCHKINF_COMPLETED_SHADOW_TRIAL, TK_SHADOW_TRIAL, } { EVENTCHKINF_COMPLETED_SHADOW_TRIAL, TK_SHADOW_TRIAL },
}; };
bool Randomizer::IsTrialRequired(s32 trialFlag) { bool Randomizer::IsTrialRequired(s32 trialFlag) {
@ -2272,7 +2272,7 @@ void RandomizerSettingsWindow::DrawElement() {
{RA_BOTTOM_OF_THE_WELL, true}, {RA_BOTTOM_OF_THE_WELL, true},
{RA_ICE_CAVERN, true}, {RA_ICE_CAVERN, true},
{RA_GERUDO_TRAINING_GROUND, true}, {RA_GERUDO_TRAINING_GROUND, true},
{RA_GANONS_CASTLE, true} {RA_GANONS_CASTLE, true},
}; };
static std::unordered_map<RandomizerArea, bool> areaTreeEnabled { static std::unordered_map<RandomizerArea, bool> areaTreeEnabled {
{RA_NONE, true}, {RA_NONE, true},
@ -2307,7 +2307,7 @@ void RandomizerSettingsWindow::DrawElement() {
{RA_BOTTOM_OF_THE_WELL, true}, {RA_BOTTOM_OF_THE_WELL, true},
{RA_ICE_CAVERN, true}, {RA_ICE_CAVERN, true},
{RA_GERUDO_TRAINING_GROUND, true}, {RA_GERUDO_TRAINING_GROUND, true},
{RA_GANONS_CASTLE, true} {RA_GANONS_CASTLE, true},
}; };
static std::map<Rando::Tricks::Tag, bool> showTag { static std::map<Rando::Tricks::Tag, bool> showTag {

View file

@ -13,11 +13,11 @@
// which doesn't exist yet. // which doesn't exist yet.
typedef enum { typedef enum {
MOD_NONE, MOD_NONE,
MOD_RANDOMIZER MOD_RANDOMIZER,
} ModIndex; } ModIndex;
typedef enum { typedef enum {
TABLE_VANILLA = MOD_NONE, TABLE_VANILLA = MOD_NONE,
TABLE_RANDOMIZER = MOD_RANDOMIZER TABLE_RANDOMIZER = MOD_RANDOMIZER,
} TableIndex; } TableIndex;
typedef struct { typedef struct {
@ -5666,12 +5666,12 @@ typedef struct FishIdentity {
typedef enum { typedef enum {
TRACKER_WINDOW_FLOATING, TRACKER_WINDOW_FLOATING,
TRACKER_WINDOW_WINDOW TRACKER_WINDOW_WINDOW,
} TrackerWindowType; } TrackerWindowType;
typedef enum { typedef enum {
TRACKER_DISPLAY_ALWAYS, TRACKER_DISPLAY_ALWAYS,
TRACKER_DISPLAY_COMBO_BUTTON TRACKER_DISPLAY_COMBO_BUTTON,
} TrackerDisplayType; } TrackerDisplayType;
typedef enum { typedef enum {
@ -5774,7 +5774,7 @@ typedef enum {
WL_MID, WL_MID,
WL_HIGH, WL_HIGH,
WL_LOW_OR_MID, WL_LOW_OR_MID,
WL_HIGH_OR_MID WL_HIGH_OR_MID,
} RandoWaterLevel; } RandoWaterLevel;
#define ENTRANCE_GROTTO_LOAD_START 0x0700 #define ENTRANCE_GROTTO_LOAD_START 0x0700

View file

@ -59,6 +59,7 @@ typedef struct {
} DungeonEntranceInfo; } DungeonEntranceInfo;
static DungeonEntranceInfo dungeons[] = { static DungeonEntranceInfo dungeons[] = {
// clang-format off
//entryway exit, boss, reverse, bluewarp, dungeon scene, boss scene //entryway exit, boss, reverse, bluewarp, dungeon scene, boss scene
{ ENTR_DEKU_TREE_ENTRANCE, ENTR_KOKIRI_FOREST_OUTSIDE_DEKU_TREE, ENTR_DEKU_TREE_BOSS_ENTRANCE, ENTR_DEKU_TREE_BOSS_DOOR, ENTR_KOKIRI_FOREST_DEKU_TREE_BLUE_WARP, SCENE_DEKU_TREE, SCENE_DEKU_TREE_BOSS }, { ENTR_DEKU_TREE_ENTRANCE, ENTR_KOKIRI_FOREST_OUTSIDE_DEKU_TREE, ENTR_DEKU_TREE_BOSS_ENTRANCE, ENTR_DEKU_TREE_BOSS_DOOR, ENTR_KOKIRI_FOREST_DEKU_TREE_BLUE_WARP, SCENE_DEKU_TREE, SCENE_DEKU_TREE_BOSS },
{ ENTR_DODONGOS_CAVERN_ENTRANCE, ENTR_DEATH_MOUNTAIN_TRAIL_OUTSIDE_DODONGOS_CAVERN, ENTR_DODONGOS_CAVERN_BOSS_ENTRANCE, ENTR_DODONGOS_CAVERN_BOSS_DOOR, ENTR_DEATH_MOUNTAIN_TRAIL_DODONGO_BLUE_WARP, SCENE_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN_BOSS }, { ENTR_DODONGOS_CAVERN_ENTRANCE, ENTR_DEATH_MOUNTAIN_TRAIL_OUTSIDE_DODONGOS_CAVERN, ENTR_DODONGOS_CAVERN_BOSS_ENTRANCE, ENTR_DODONGOS_CAVERN_BOSS_DOOR, ENTR_DEATH_MOUNTAIN_TRAIL_DODONGO_BLUE_WARP, SCENE_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN_BOSS },
@ -68,6 +69,8 @@ static DungeonEntranceInfo dungeons[] = {
{ ENTR_WATER_TEMPLE_ENTRANCE, ENTR_LAKE_HYLIA_OUTSIDE_TEMPLE, ENTR_WATER_TEMPLE_BOSS_ENTRANCE, ENTR_WATER_TEMPLE_BOSS_DOOR, ENTR_LAKE_HYLIA_WATER_TEMPLE_BLUE_WARP, SCENE_WATER_TEMPLE, SCENE_WATER_TEMPLE_BOSS }, { ENTR_WATER_TEMPLE_ENTRANCE, ENTR_LAKE_HYLIA_OUTSIDE_TEMPLE, ENTR_WATER_TEMPLE_BOSS_ENTRANCE, ENTR_WATER_TEMPLE_BOSS_DOOR, ENTR_LAKE_HYLIA_WATER_TEMPLE_BLUE_WARP, SCENE_WATER_TEMPLE, SCENE_WATER_TEMPLE_BOSS },
{ ENTR_SPIRIT_TEMPLE_ENTRANCE, ENTR_DESERT_COLOSSUS_OUTSIDE_TEMPLE, ENTR_SPIRIT_TEMPLE_BOSS_ENTRANCE, ENTR_SPIRIT_TEMPLE_BOSS_DOOR, ENTR_DESERT_COLOSSUS_SPIRIT_TEMPLE_BLUE_WARP, SCENE_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE_BOSS }, { ENTR_SPIRIT_TEMPLE_ENTRANCE, ENTR_DESERT_COLOSSUS_OUTSIDE_TEMPLE, ENTR_SPIRIT_TEMPLE_BOSS_ENTRANCE, ENTR_SPIRIT_TEMPLE_BOSS_DOOR, ENTR_DESERT_COLOSSUS_SPIRIT_TEMPLE_BLUE_WARP, SCENE_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE_BOSS },
{ ENTR_SHADOW_TEMPLE_ENTRANCE, ENTR_GRAVEYARD_OUTSIDE_TEMPLE, ENTR_SHADOW_TEMPLE_BOSS_ENTRANCE, ENTR_SHADOW_TEMPLE_BOSS_DOOR, ENTR_GRAVEYARD_SHADOW_TEMPLE_BLUE_WARP, SCENE_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE_BOSS }, { ENTR_SHADOW_TEMPLE_ENTRANCE, ENTR_GRAVEYARD_OUTSIDE_TEMPLE, ENTR_SHADOW_TEMPLE_BOSS_ENTRANCE, ENTR_SHADOW_TEMPLE_BOSS_DOOR, ENTR_GRAVEYARD_SHADOW_TEMPLE_BLUE_WARP, SCENE_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE_BOSS },
// clang-format on
}; };
static s8 hasCopiedEntranceTable = 0; static s8 hasCopiedEntranceTable = 0;

View file

@ -74,6 +74,7 @@ static std::string groupTypeNames[] = {
// Entrance data for the tracker taken from the 3ds rando entrance tracker, and supplemented with scene/spawn info and meta search tags // Entrance data for the tracker taken from the 3ds rando entrance tracker, and supplemented with scene/spawn info and meta search tags
// ENTR_HYRULE_FIELD_10 and ENTR_POTION_SHOP_KAKARIKO_1 have been repurposed for entrance randomizer // ENTR_HYRULE_FIELD_10 and ENTR_POTION_SHOP_KAKARIKO_1 have been repurposed for entrance randomizer
const EntranceData entranceData[] = { const EntranceData entranceData[] = {
// clang-format off
//index, reverse, scenes (and spawns), source name, destination name, source group, destination group, type, metaTag, oneExit //index, reverse, scenes (and spawns), source name, destination name, source group, destination group, type, metaTag, oneExit
{ ENTR_LINKS_HOUSE_CHILD_SPAWN, -1, SINGLE_SCENE_INFO(SCENE_LINKS_HOUSE), "Child Spawn", "Link's House", ENTRANCE_GROUP_ONE_WAY, ENTRANCE_GROUP_ONE_WAY, ENTRANCE_TYPE_ONE_WAY}, { ENTR_LINKS_HOUSE_CHILD_SPAWN, -1, SINGLE_SCENE_INFO(SCENE_LINKS_HOUSE), "Child Spawn", "Link's House", ENTRANCE_GROUP_ONE_WAY, ENTRANCE_GROUP_ONE_WAY, ENTRANCE_TYPE_ONE_WAY},
{ ENTR_HYRULE_FIELD_10, -1, SINGLE_SCENE_INFO(SCENE_TEMPLE_OF_TIME), "Adult Spawn", "Temple of Time", ENTRANCE_GROUP_ONE_WAY, ENTRANCE_GROUP_ONE_WAY, ENTRANCE_TYPE_ONE_WAY}, { ENTR_HYRULE_FIELD_10, -1, SINGLE_SCENE_INFO(SCENE_TEMPLE_OF_TIME), "Adult Spawn", "Temple of Time", ENTRANCE_GROUP_ONE_WAY, ENTRANCE_GROUP_ONE_WAY, ENTRANCE_TYPE_ONE_WAY},
@ -380,6 +381,8 @@ const EntranceData entranceData[] = {
{ ENTR_INSIDE_GANONS_CASTLE_ENTRANCE, ENTR_CASTLE_GROUNDS_RAINBOW_BRIDGE_EXIT, SINGLE_SCENE_INFO(SCENE_OUTSIDE_GANONS_CASTLE), "OGC Rainbow Bridge Exit", "Inside Ganon's Castle Entrance", ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_TYPE_DUNGEON, "outside ganon's castle,gc", 1}, { ENTR_INSIDE_GANONS_CASTLE_ENTRANCE, ENTR_CASTLE_GROUNDS_RAINBOW_BRIDGE_EXIT, SINGLE_SCENE_INFO(SCENE_OUTSIDE_GANONS_CASTLE), "OGC Rainbow Bridge Exit", "Inside Ganon's Castle Entrance", ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_TYPE_DUNGEON, "outside ganon's castle,gc", 1},
{ ENTR_POTION_SHOP_KAKARIKO_1, ENTR_GREAT_FAIRYS_FOUNTAIN_MAGIC_OGC_DD, {{ SCENE_GREAT_FAIRYS_FOUNTAIN_MAGIC, 0x02 }}, "OGC Great Fairy Fountain", "OGC Behind Pillar", ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_TYPE_INTERIOR, "outside ganon's castle"}, { ENTR_POTION_SHOP_KAKARIKO_1, ENTR_GREAT_FAIRYS_FOUNTAIN_MAGIC_OGC_DD, {{ SCENE_GREAT_FAIRYS_FOUNTAIN_MAGIC, 0x02 }}, "OGC Great Fairy Fountain", "OGC Behind Pillar", ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_TYPE_INTERIOR, "outside ganon's castle"},
{ ENTR_CASTLE_GROUNDS_RAINBOW_BRIDGE_EXIT, ENTR_INSIDE_GANONS_CASTLE_ENTRANCE, SINGLE_SCENE_INFO(SCENE_INSIDE_GANONS_CASTLE), "Inside Ganon's Castle Entrance", "OGC Rainbow Bridge Exit", ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_TYPE_DUNGEON, "outside ganon's castle,gc"} { ENTR_CASTLE_GROUNDS_RAINBOW_BRIDGE_EXIT, ENTR_INSIDE_GANONS_CASTLE_ENTRANCE, SINGLE_SCENE_INFO(SCENE_INSIDE_GANONS_CASTLE), "Inside Ganon's Castle Entrance", "OGC Rainbow Bridge Exit", ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_GROUP_HYRULE_CASTLE, ENTRANCE_TYPE_DUNGEON, "outside ganon's castle,gc"}
// clang-format on
}; };
// Check if Link is in the area and return that scene/entrance for tracking // Check if Link is in the area and return that scene/entrance for tracking

View file

@ -12,6 +12,7 @@ extern PlayState* gPlayState;
// Information necessary for entering each grotto // Information necessary for entering each grotto
static const GrottoLoadInfo grottoLoadTable[NUM_GROTTOS] = { static const GrottoLoadInfo grottoLoadTable[NUM_GROTTOS] = {
// clang-format off
{.entranceIndex = ENTR_GROTTOS_10, .content = 0xFD, .scene = SCENE_DESERT_COLOSSUS}, // Desert Colossus -> Colossus Grotto {.entranceIndex = ENTR_GROTTOS_10, .content = 0xFD, .scene = SCENE_DESERT_COLOSSUS}, // Desert Colossus -> Colossus Grotto
{.entranceIndex = ENTR_GROTTOS_4, .content = 0xEF, .scene = SCENE_LAKE_HYLIA}, // Lake Hylia -> LH Grotto {.entranceIndex = ENTR_GROTTOS_4, .content = 0xEF, .scene = SCENE_LAKE_HYLIA}, // Lake Hylia -> LH Grotto
{.entranceIndex = ENTR_GROTTOS_10, .content = 0xEB, .scene = SCENE_ZORAS_RIVER}, // Zora River -> ZR Storms Grotto {.entranceIndex = ENTR_GROTTOS_10, .content = 0xEB, .scene = SCENE_ZORAS_RIVER}, // Zora River -> ZR Storms Grotto
@ -45,10 +46,13 @@ static const GrottoLoadInfo grottoLoadTable[NUM_GROTTOS] = {
{.entranceIndex = ENTR_GROTTOS_10, .content = 0xF0, .scene = SCENE_GERUDO_VALLEY}, // GV Fortress Side -> GV Storms Grotto {.entranceIndex = ENTR_GROTTOS_10, .content = 0xF0, .scene = SCENE_GERUDO_VALLEY}, // GV Fortress Side -> GV Storms Grotto
{.entranceIndex = ENTR_GROTTOS_6, .content = 0xF2, .scene = SCENE_GERUDO_VALLEY}, // GV Grotto Ledge -> GV Octorok Grotto {.entranceIndex = ENTR_GROTTOS_6, .content = 0xF2, .scene = SCENE_GERUDO_VALLEY}, // GV Grotto Ledge -> GV Octorok Grotto
{.entranceIndex = ENTR_GROTTOS_12, .content = 0xF3, .scene = SCENE_LOST_WOODS}, // LW Beyond Mido -> Deku Theater {.entranceIndex = ENTR_GROTTOS_12, .content = 0xF3, .scene = SCENE_LOST_WOODS}, // LW Beyond Mido -> Deku Theater
// clang-format on
}; };
// Information necessary for setting up returning from a grotto // Information necessary for setting up returning from a grotto
static const GrottoReturnInfo grottoReturnTable[NUM_GROTTOS] = { static const GrottoReturnInfo grottoReturnTable[NUM_GROTTOS] = {
// clang-format off
{.entranceIndex = ENTR_DESERT_COLOSSUS_EAST_EXIT, .room = 0x00, .angle = 0xA71C, .pos = {.x = 62.5078f, .y = -32.0f, .z = -1296.2f}}, // Colossus Grotto -> Desert Colossus {.entranceIndex = ENTR_DESERT_COLOSSUS_EAST_EXIT, .room = 0x00, .angle = 0xA71C, .pos = {.x = 62.5078f, .y = -32.0f, .z = -1296.2f}}, // Colossus Grotto -> Desert Colossus
{.entranceIndex = ENTR_LAKE_HYLIA_NORTH_EXIT, .room = 0x00, .angle = 0x0000, .pos = {.x = -3039.34f, .y = -1033.0f, .z = 6080.74f}}, // LH Grotto -> Lake Hylia {.entranceIndex = ENTR_LAKE_HYLIA_NORTH_EXIT, .room = 0x00, .angle = 0x0000, .pos = {.x = -3039.34f, .y = -1033.0f, .z = 6080.74f}}, // LH Grotto -> Lake Hylia
{.entranceIndex = ENTR_ZORAS_RIVER_WEST_EXIT, .room = 0x00, .angle = 0x0000, .pos = {.x = -1630.05f, .y = 100.0f, .z = -132.104f}}, // ZR Storms Grotto -> Zora River {.entranceIndex = ENTR_ZORAS_RIVER_WEST_EXIT, .room = 0x00, .angle = 0x0000, .pos = {.x = -1630.05f, .y = 100.0f, .z = -132.104f}}, // ZR Storms Grotto -> Zora River
@ -82,6 +86,8 @@ static const GrottoReturnInfo grottoReturnTable[NUM_GROTTOS] = {
{.entranceIndex = ENTR_GERUDO_VALLEY_WEST_EXIT, .room = 0x00, .angle = 0x9555, .pos = {.x = -1326.34f, .y = 15.0f, .z = -983.994f}}, // GV Storms Grotto -> GV Fortress Side {.entranceIndex = ENTR_GERUDO_VALLEY_WEST_EXIT, .room = 0x00, .angle = 0x9555, .pos = {.x = -1326.34f, .y = 15.0f, .z = -983.994f}}, // GV Storms Grotto -> GV Fortress Side
{.entranceIndex = ENTR_GERUDO_VALLEY_EAST_EXIT, .room = 0x00, .angle = 0x8000, .pos = {.x = 291.513f, .y = -555.0f, .z = 1478.39f}}, // GV Octorok Grotto -> GV Grotto Ledge {.entranceIndex = ENTR_GERUDO_VALLEY_EAST_EXIT, .room = 0x00, .angle = 0x8000, .pos = {.x = 291.513f, .y = -555.0f, .z = 1478.39f}}, // GV Octorok Grotto -> GV Grotto Ledge
{.entranceIndex = ENTR_LOST_WOODS_NORTH_EXIT, .room = 0x06, .angle = 0x4000, .pos = {.x = 109.281f, .y = -20.0f, .z = -1601.42f}}, // Deku Theater -> LW Beyond Mido {.entranceIndex = ENTR_LOST_WOODS_NORTH_EXIT, .room = 0x06, .angle = 0x4000, .pos = {.x = 109.281f, .y = -20.0f, .z = -1601.42f}}, // Deku Theater -> LW Beyond Mido
// clang-format on
}; };
static s16 grottoExitList[NUM_GROTTOS] = {0}; static s16 grottoExitList[NUM_GROTTOS] = {0};

View file

@ -187,6 +187,7 @@ std::unordered_map<uint32_t, RandomizerHintTextKey> StaticData::trialData = {
}; };
std::unordered_map<RandomizerHint, StaticHintInfo> StaticData::staticHintInfoMap = { std::unordered_map<RandomizerHint, StaticHintInfo> StaticData::staticHintInfoMap = {
// clang-format off
// RH_GANONDORF_HINT is special cased due to being different based on master sword shuffle // RH_GANONDORF_HINT is special cased due to being different based on master sword shuffle
// Altar hints are special cased due to special hint marking rules // Altar hints are special cased due to special hint marking rules
// warp song hints are special cased due to entrances not being done properly yet // warp song hints are special cased due to entrances not being done properly yet
@ -211,6 +212,8 @@ std::unordered_map<RandomizerHint, StaticHintInfo> StaticData::staticHintInfoMap
{RH_KAK_50_SKULLS_HINT, StaticHintInfo(HINT_TYPE_ITEM, {RHT_SKULLS_HINT}, RSK_KAK_50_SKULLS_HINT, true, {RC_KAK_50_GOLD_SKULLTULA_REWARD}, {}, {}, false, 50)}, {RH_KAK_50_SKULLS_HINT, StaticHintInfo(HINT_TYPE_ITEM, {RHT_SKULLS_HINT}, RSK_KAK_50_SKULLS_HINT, true, {RC_KAK_50_GOLD_SKULLTULA_REWARD}, {}, {}, false, 50)},
{RH_KAK_100_SKULLS_HINT, StaticHintInfo(HINT_TYPE_ITEM, {RHT_SKULLS_HINT}, RSK_KAK_100_SKULLS_HINT, true, {RC_KAK_100_GOLD_SKULLTULA_REWARD}, {}, {}, false, 100)}, {RH_KAK_100_SKULLS_HINT, StaticHintInfo(HINT_TYPE_ITEM, {RHT_SKULLS_HINT}, RSK_KAK_100_SKULLS_HINT, true, {RC_KAK_100_GOLD_SKULLTULA_REWARD}, {}, {}, false, 100)},
{RH_MASK_SHOP_HINT, StaticHintInfo(HINT_TYPE_ITEM, {RHT_MASK_SHOP_HINT}, RSK_MASK_SHOP_HINT, true, {RC_DEKU_THEATER_SKULL_MASK, RC_DEKU_THEATER_MASK_OF_TRUTH}, {}, {RC_MASK_SHOP_HINT})} {RH_MASK_SHOP_HINT, StaticHintInfo(HINT_TYPE_ITEM, {RHT_MASK_SHOP_HINT}, RSK_MASK_SHOP_HINT, true, {RC_DEKU_THEATER_SKULL_MASK, RC_DEKU_THEATER_MASK_OF_TRUTH}, {}, {RC_MASK_SHOP_HINT})}
// clang-format on
}; };
std::unordered_map<std::string, uint32_t> StaticData::PopulateTranslationMap(std::unordered_map<uint32_t, CustomMessage> input){ std::unordered_map<std::string, uint32_t> StaticData::PopulateTranslationMap(std::unordered_map<uint32_t, CustomMessage> input){
@ -220,7 +223,8 @@ std::unordered_map<std::string, uint32_t> StaticData::PopulateTranslationMap(std
for (std::string string: strings){ for (std::string string: strings){
if (output.contains(string)){ if (output.contains(string)){
if (output[string] != key){ if (output[string] != key){
SPDLOG_DEBUG("\tREPEATED STRING IN " + message.GetEnglish(MF_CLEAN) + "\n\n"); //RANDOTODO should this cause an error of some kind? //RANDOTODO should this cause an error of some kind?
SPDLOG_DEBUG("\tREPEATED STRING IN " + message.GetEnglish(MF_CLEAN) + "\n\n");
} }
} else { } else {
output[string] = key; output[string] = key;
@ -237,7 +241,8 @@ std::unordered_map<std::string, uint32_t> StaticData::PopulateTranslationMap(std
for (std::string string: strings){ for (std::string string: strings){
if (output.contains(string)){ if (output.contains(string)){
if (output[string] != key){ if (output[string] != key){
SPDLOG_DEBUG("\tREPEATED STRING WITH " + string + "\n\n"); //RANDOTODO should this cause an error of some kind? //RANDOTODO should this cause an error of some kind?
SPDLOG_DEBUG("\tREPEATED STRING WITH " + string + "\n\n");
} }
} else { } else {
output[string] = key; output[string] = key;

View file

@ -63,6 +63,7 @@ std::vector<SplitObject> splitList;
std::vector<SplitObject> emptyList; std::vector<SplitObject> emptyList;
std::vector<SplitObject> splitObjectList = { std::vector<SplitObject> splitObjectList = {
// clang-format off
{ SPLIT_TYPE_ITEM, ITEM_STICK, "Deku Stick", "ITEM_STICK", COLOR_WHITE }, { SPLIT_TYPE_ITEM, ITEM_STICK, "Deku Stick", "ITEM_STICK", COLOR_WHITE },
{ SPLIT_TYPE_ITEM, ITEM_NUT, "Deku Nut", "ITEM_NUT", COLOR_WHITE }, { SPLIT_TYPE_ITEM, ITEM_NUT, "Deku Nut", "ITEM_NUT", COLOR_WHITE },
{ SPLIT_TYPE_ITEM, ITEM_BOMB, "Bomb", "ITEM_BOMB", COLOR_WHITE }, { SPLIT_TYPE_ITEM, ITEM_BOMB, "Bomb", "ITEM_BOMB", COLOR_WHITE },
@ -205,9 +206,12 @@ std::vector<SplitObject> splitObjectList = {
{ SPLIT_TYPE_MISC, SCENE_ZORAS_RIVER, "Lost Woods Escape", "SPECIAL_SPLIT_ENTRANCE", COLOR_WHITE }, { SPLIT_TYPE_MISC, SCENE_ZORAS_RIVER, "Lost Woods Escape", "SPECIAL_SPLIT_ENTRANCE", COLOR_WHITE },
{ SPLIT_TYPE_MISC, SCENE_LOST_WOODS, "Forest Escape", "SPECIAL_SPLIT_ENTRANCE", COLOR_WHITE }, { SPLIT_TYPE_MISC, SCENE_LOST_WOODS, "Forest Escape", "SPECIAL_SPLIT_ENTRANCE", COLOR_WHITE },
{ SPLIT_TYPE_MISC, SCENE_KAKARIKO_VILLAGE, "Watchtower Death", "SPECIAL_SPLIT_ENTRANCE", COLOR_WHITE }, { SPLIT_TYPE_MISC, SCENE_KAKARIKO_VILLAGE, "Watchtower Death", "SPECIAL_SPLIT_ENTRANCE", COLOR_WHITE },
// clang-format on
}; };
std::map<uint32_t, std::vector<uint32_t>> popupList = { std::map<uint32_t, std::vector<uint32_t>> popupList = {
// clang-format off
{ ITEM_STICK, { ITEM_STICK, ITEM_STICK_UPGRADE_20, ITEM_STICK_UPGRADE_30 } }, { ITEM_STICK, { ITEM_STICK, ITEM_STICK_UPGRADE_20, ITEM_STICK_UPGRADE_30 } },
{ ITEM_NUT, { ITEM_NUT, ITEM_NUT_UPGRADE_30, ITEM_NUT_UPGRADE_40 } }, { ITEM_NUT, { ITEM_NUT, ITEM_NUT_UPGRADE_30, ITEM_NUT_UPGRADE_40 } },
{ ITEM_BOMB, { ITEM_BOMB_BAG_20, ITEM_BOMB_BAG_30, ITEM_BOMB_BAG_40 } }, { ITEM_BOMB, { ITEM_BOMB_BAG_20, ITEM_BOMB_BAG_30, ITEM_BOMB_BAG_40 } },
@ -229,6 +233,8 @@ std::map<uint32_t, std::vector<uint32_t>> popupList = {
{ ITEM_WALLET_ADULT, { ITEM_WALLET_ADULT, ITEM_WALLET_GIANT } }, { ITEM_WALLET_ADULT, { ITEM_WALLET_ADULT, ITEM_WALLET_GIANT } },
{ ITEM_SINGLE_MAGIC, { ITEM_SINGLE_MAGIC, ITEM_DOUBLE_MAGIC } }, { ITEM_SINGLE_MAGIC, { ITEM_SINGLE_MAGIC, ITEM_DOUBLE_MAGIC } },
{ ITEM_SKULL_TOKEN, { } } { ITEM_SKULL_TOKEN, { } }
// clang-format on
}; };
std::string removeSpecialCharacters(const std::string& str) { std::string removeSpecialCharacters(const std::string& str) {

View file

@ -1,4 +1,4 @@
#include "OTRGlobals.h" #include "OTRGlobals.h"
#include "OTRAudio.h" #include "OTRAudio.h"
#include <iostream> #include <iostream>
#include <algorithm> #include <algorithm>
@ -579,6 +579,7 @@ extern "C" void OTRAudio_Exit() {
extern "C" void VanillaItemTable_Init() { extern "C" void VanillaItemTable_Init() {
static GetItemEntry getItemTable[] = { static GetItemEntry getItemTable[] = {
// clang-format off
GET_ITEM(ITEM_BOMBS_5, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, GI_BOMBS_5), GET_ITEM(ITEM_BOMBS_5, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, GI_BOMBS_5),
GET_ITEM(ITEM_NUTS_5, OBJECT_GI_NUTS, GID_NUTS, 0x34, 0x0C, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, GI_NUTS_5), GET_ITEM(ITEM_NUTS_5, OBJECT_GI_NUTS, GID_NUTS, 0x34, 0x0C, CHEST_ANIM_SHORT, ITEM_CATEGORY_JUNK, MOD_NONE, GI_NUTS_5),
GET_ITEM(ITEM_BOMBCHU, OBJECT_GI_BOMB_2, GID_BOMBCHU, 0x33, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_MAJOR, MOD_NONE, GI_BOMBCHUS_10), GET_ITEM(ITEM_BOMBCHU, OBJECT_GI_BOMB_2, GID_BOMBCHU, 0x33, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_MAJOR, MOD_NONE, GI_BOMBCHUS_10),
@ -705,6 +706,7 @@ extern "C" void VanillaItemTable_Init() {
GET_ITEM_NONE, GET_ITEM_NONE,
GET_ITEM_NONE, GET_ITEM_NONE,
GET_ITEM_NONE // GI_MAX - if you need to add to this table insert it before this entry. GET_ITEM_NONE // GI_MAX - if you need to add to this table insert it before this entry.
// clang-format on
}; };
ItemTableManager::Instance->AddItemTable(MOD_NONE); ItemTableManager::Instance->AddItemTable(MOD_NONE);
for (uint8_t i = 0; i < ARRAY_COUNT(getItemTable); i++) { for (uint8_t i = 0; i < ARRAY_COUNT(getItemTable); i++) {
@ -841,7 +843,7 @@ std::unordered_map<ItemID, GetItemID> ItemIDtoGetItemIDMap {
{ ITEM_TUNIC_ZORA, GI_TUNIC_ZORA }, { ITEM_TUNIC_ZORA, GI_TUNIC_ZORA },
{ ITEM_WALLET_ADULT, GI_WALLET_ADULT }, { ITEM_WALLET_ADULT, GI_WALLET_ADULT },
{ ITEM_WALLET_GIANT, GI_WALLET_GIANT }, { ITEM_WALLET_GIANT, GI_WALLET_GIANT },
{ ITEM_WEIRD_EGG, GI_WEIRD_EGG } { ITEM_WEIRD_EGG, GI_WEIRD_EGG },
}; };
extern "C" GetItemID RetrieveGetItemIDFromItemID(ItemID itemID) { extern "C" GetItemID RetrieveGetItemIDFromItemID(ItemID itemID) {
@ -1523,7 +1525,7 @@ std::map<std::string, SoundFontSample*> cachedCustomSFs;
extern "C" SoundFontSample* ReadCustomSample(const char* path) { extern "C" SoundFontSample* ReadCustomSample(const char* path) {
return nullptr; return nullptr;
/* /*
if (!ExtensionCache.contains(path)) if (!ExtensionCache.contains(path))
return nullptr; return nullptr;
@ -1576,7 +1578,7 @@ extern "C" SoundFontSample* ReadCustomSample(const char* path) {
} }
return nullptr; return nullptr;
*/ */
} }
ImFont* OTRGlobals::CreateFontWithSize(float size, std::string fontPath) { ImFont* OTRGlobals::CreateFontWithSize(float size, std::string fontPath) {
@ -2070,7 +2072,7 @@ extern "C" bool Randomizer_IsCheckShuffled(RandomizerCheck rc) {
} }
extern "C" GetItemEntry GetItemMystery() { extern "C" GetItemEntry GetItemMystery() {
return { ITEM_NONE_FE, 0, 0, 0, 0, 0, 0, ITEM_NONE_FE, 0, false, ITEM_FROM_NPC, ITEM_CATEGORY_JUNK, NULL, MOD_RANDOMIZER, (CustomDrawFunc)Randomizer_DrawMysteryItem }; return GET_ITEM_MYSTERY;
} }
extern "C" uint8_t Randomizer_IsSeedGenerated() { extern "C" uint8_t Randomizer_IsSeedGenerated() {

View file

@ -125,7 +125,7 @@ std::map<uint32_t, ItemMapEntry> itemMapping = {
ITEM_MAP_ENTRY(ITEM_DUNGEON_MAP), ITEM_MAP_ENTRY(ITEM_DUNGEON_MAP),
ITEM_MAP_ENTRY(ITEM_KEY_SMALL), ITEM_MAP_ENTRY(ITEM_KEY_SMALL),
ITEM_MAP_ENTRY(ITEM_MAGIC_SMALL), ITEM_MAP_ENTRY(ITEM_MAGIC_SMALL),
ITEM_MAP_ENTRY(ITEM_MAGIC_LARGE) ITEM_MAP_ENTRY(ITEM_MAGIC_LARGE),
}; };
std::map<uint32_t, ItemMapEntry> gregMapping = { std::map<uint32_t, ItemMapEntry> gregMapping = {

View file

@ -605,6 +605,7 @@ static bool invert_matrix(const float m[16], float invOut[16]) {
float inv[16], det; float inv[16], det;
int i; int i;
// clang-format off
inv[0] = m[5] * m[10] * m[15] - inv[0] = m[5] * m[10] * m[15] -
m[5] * m[11] * m[14] - m[5] * m[11] * m[14] -
m[9] * m[6] * m[15] + m[9] * m[6] * m[15] +
@ -716,6 +717,7 @@ static bool invert_matrix(const float m[16], float invOut[16]) {
m[4] * m[2] * m[9] + m[4] * m[2] * m[9] +
m[8] * m[1] * m[6] - m[8] * m[1] * m[6] -
m[8] * m[2] * m[5]; m[8] * m[2] * m[5];
// clang-format on
det = m[0] * inv[0] + m[1] * inv[4] + m[2] * inv[8] + m[3] * inv[12]; det = m[0] * inv[0] + m[1] * inv[4] + m[2] * inv[8] + m[3] * inv[12];