mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2024-12-21 23:58:51 -05:00
Add s6 and hellmode presets for rando (#1904)
* Refactor how presets are created and used, and add presets for rando * Add new enhancements to clear * Tweaks and feedback
This commit is contained in:
parent
156f713e19
commit
8461ea4abd
@ -157,6 +157,7 @@ set(Header_Files__soh__Enhancements
|
|||||||
#"soh/Enhancements/cvar.h"
|
#"soh/Enhancements/cvar.h"
|
||||||
"soh/Enhancements/debugconsole.h"
|
"soh/Enhancements/debugconsole.h"
|
||||||
"soh/Enhancements/gameconsole.h"
|
"soh/Enhancements/gameconsole.h"
|
||||||
|
"soh/Enhancements/presets.h"
|
||||||
"soh/Enhancements/savestates.h"
|
"soh/Enhancements/savestates.h"
|
||||||
"soh/Enhancements/savestates_extern.inc"
|
"soh/Enhancements/savestates_extern.inc"
|
||||||
)
|
)
|
||||||
@ -287,6 +288,7 @@ set(Source_Files__soh__Enhancements
|
|||||||
"soh/Enhancements/bootcommands.c"
|
"soh/Enhancements/bootcommands.c"
|
||||||
"soh/Enhancements/debugconsole.cpp"
|
"soh/Enhancements/debugconsole.cpp"
|
||||||
"soh/Enhancements/gameconsole.c"
|
"soh/Enhancements/gameconsole.c"
|
||||||
|
"soh/Enhancements/presets.cpp"
|
||||||
"soh/Enhancements/savestates.cpp"
|
"soh/Enhancements/savestates.cpp"
|
||||||
)
|
)
|
||||||
source_group("Source Files\\soh\\Enhancements" FILES ${Source_Files__soh__Enhancements})
|
source_group("Source Files\\soh\\Enhancements" FILES ${Source_Files__soh__Enhancements})
|
||||||
|
66
soh/soh/Enhancements/presets.cpp
Normal file
66
soh/soh/Enhancements/presets.cpp
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
#include "presets.h"
|
||||||
|
#include <variant>
|
||||||
|
#include <string>
|
||||||
|
#include <cstdint>
|
||||||
|
#include <ImGuiImpl.h>
|
||||||
|
#include <Cvar.h>
|
||||||
|
#include "soh/UIWidgets.hpp"
|
||||||
|
|
||||||
|
void clearCvars(std::vector<const char*> cvarsToClear) {
|
||||||
|
for(const char* cvar : cvarsToClear) {
|
||||||
|
CVar_Clear(cvar);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void applyPreset(std::vector<PresetEntry> entries) {
|
||||||
|
for(auto& [cvar, type, value] : entries) {
|
||||||
|
switch (type) {
|
||||||
|
case PRESET_ENTRY_TYPE_S32:
|
||||||
|
CVar_SetS32(cvar, std::get<int32_t>(value));
|
||||||
|
break;
|
||||||
|
case PRESET_ENTRY_TYPE_FLOAT:
|
||||||
|
CVar_SetFloat(cvar, std::get<float>(value));
|
||||||
|
break;
|
||||||
|
case PRESET_ENTRY_TYPE_STRING:
|
||||||
|
CVar_SetString(cvar, std::get<const char*>(value));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void DrawPresetSelector(PresetType presetTypeId) {
|
||||||
|
const std::string presetTypeCvar = "gPreset" + std::to_string(presetTypeId);
|
||||||
|
const PresetTypeDefinition presetTypeDef = presetTypes.at(presetTypeId);
|
||||||
|
const uint16_t selectedPresetId = CVar_GetS32(presetTypeCvar.c_str(), 0);
|
||||||
|
const PresetDefinition selectedPresetDef = presetTypeDef.presets.at(selectedPresetId);
|
||||||
|
std::string comboboxTooltip = "";
|
||||||
|
for ( auto iter = presetTypeDef.presets.begin(); iter != presetTypeDef.presets.end(); ++iter ) {
|
||||||
|
if (iter->first != 0) comboboxTooltip += "\n\n";
|
||||||
|
comboboxTooltip += std::string(iter->second.label) + " - " + std::string(iter->second.description);
|
||||||
|
}
|
||||||
|
|
||||||
|
UIWidgets::PaddedText("Presets", false, true);
|
||||||
|
if (ImGui::BeginCombo("##PresetsComboBox", selectedPresetDef.label)) {
|
||||||
|
for ( auto iter = presetTypeDef.presets.begin(); iter != presetTypeDef.presets.end(); ++iter ) {
|
||||||
|
if (ImGui::Selectable(iter->second.label, iter->first == selectedPresetId)) {
|
||||||
|
CVar_SetS32(presetTypeCvar.c_str(), iter->first);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ImGui::EndCombo();
|
||||||
|
}
|
||||||
|
UIWidgets::Tooltip(comboboxTooltip.c_str());
|
||||||
|
|
||||||
|
UIWidgets::Spacer(0);
|
||||||
|
|
||||||
|
ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(6.0f, 4.0f));
|
||||||
|
if (ImGui::Button(("Apply Preset##" + presetTypeCvar).c_str())) {
|
||||||
|
if (selectedPresetId == 0) {
|
||||||
|
clearCvars(presetTypeDef.cvarsToClear);
|
||||||
|
} else {
|
||||||
|
applyPreset(selectedPresetDef.entries);
|
||||||
|
}
|
||||||
|
SohImGui::RequestCvarSaveOnNextTick();
|
||||||
|
}
|
||||||
|
ImGui::PopStyleVar(1);
|
||||||
|
}
|
683
soh/soh/Enhancements/presets.h
Normal file
683
soh/soh/Enhancements/presets.h
Normal file
@ -0,0 +1,683 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <map>
|
||||||
|
#include <vector>
|
||||||
|
#include <variant>
|
||||||
|
#include <cstdint>
|
||||||
|
|
||||||
|
enum PresetEntryType {
|
||||||
|
PRESET_ENTRY_TYPE_S32,
|
||||||
|
PRESET_ENTRY_TYPE_FLOAT,
|
||||||
|
PRESET_ENTRY_TYPE_STRING,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum PresetType {
|
||||||
|
PRESET_TYPE_ENHANCEMENTS,
|
||||||
|
PRESET_TYPE_RANDOMIZER,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum EnhancementPreset {
|
||||||
|
ENHANCEMENT_PRESET_DEFAULT,
|
||||||
|
ENHANCEMENT_PRESET_VANILLA_PLUS,
|
||||||
|
ENHANCEMENT_PRESET_ENHANCED,
|
||||||
|
ENHANCEMENT_PRESET_RANDOMIZER,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum RandomizerPreset {
|
||||||
|
RANDOMIZER_PRESET_DEFAULT,
|
||||||
|
RANDOMIZER_PRESET_S6,
|
||||||
|
RANDOMIZER_PRESET_HELL_MODE,
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct PresetEntry {
|
||||||
|
const char* cvar;
|
||||||
|
PresetEntryType type;
|
||||||
|
std::variant<int32_t, float, const char*> value;
|
||||||
|
} PresetEntry;
|
||||||
|
|
||||||
|
#define PRESET_ENTRY_S32(cvar, value) \
|
||||||
|
{ cvar, PRESET_ENTRY_TYPE_S32, value }
|
||||||
|
#define PRESET_ENTRY_FLOAT(cvar, value) \
|
||||||
|
{ cvar, PRESET_ENTRY_TYPE_FLOAT, value }
|
||||||
|
#define PRESET_ENTRY_STRING(cvar, value) \
|
||||||
|
{ cvar, PRESET_ENTRY_TYPE_STRING, value }
|
||||||
|
|
||||||
|
void DrawPresetSelector(PresetType presetType);
|
||||||
|
|
||||||
|
// TODO: Ideally everything below this point will come from one/many JSON files
|
||||||
|
|
||||||
|
const std::vector<const char*> enhancementsCvars = {
|
||||||
|
"gDpadPause",
|
||||||
|
"gDpadText",
|
||||||
|
"gDpadOcarina",
|
||||||
|
"gRStickOcarina",
|
||||||
|
"gDpadEquips",
|
||||||
|
"gPauseAnyCursor",
|
||||||
|
"gDpadNoDropOcarinaInput",
|
||||||
|
"gNaviOnL",
|
||||||
|
"gInvertXAxis",
|
||||||
|
"gInvertYAxis",
|
||||||
|
"gRightStickAiming",
|
||||||
|
"gDisableAutoCenterView",
|
||||||
|
"gTextSpeed",
|
||||||
|
"gMweepSpeed",
|
||||||
|
"gForgeTime",
|
||||||
|
"gClimbSpeed",
|
||||||
|
"gFasterBlockPush",
|
||||||
|
"gFasterHeavyBlockLift",
|
||||||
|
"gNoForcedNavi",
|
||||||
|
"gSkulltulaFreeze",
|
||||||
|
"gMMBunnyHood",
|
||||||
|
"gFastChests",
|
||||||
|
"gChestSizeAndTextureMatchesContents",
|
||||||
|
"gFastDrops",
|
||||||
|
"gBetterOwl",
|
||||||
|
"gFastOcarinaPlayback",
|
||||||
|
"gInstantPutaway",
|
||||||
|
"gFastBoomerang",
|
||||||
|
"gAskToEquip",
|
||||||
|
"gMaskSelect",
|
||||||
|
"gRememberSaveLocation",
|
||||||
|
"gDamageMul",
|
||||||
|
"gFallDamageMul",
|
||||||
|
"gVoidDamageMul",
|
||||||
|
"gNoRandomDrops",
|
||||||
|
"gNoHeartDrops",
|
||||||
|
"gBombchuDrops",
|
||||||
|
"gGoronPot",
|
||||||
|
"gDampeWin",
|
||||||
|
"gRedPotionEffect",
|
||||||
|
"gRedPotionHealth",
|
||||||
|
"gRedPercentRestore",
|
||||||
|
"gGreenPotionEffect",
|
||||||
|
"gGreenPotionMana",
|
||||||
|
"gGreenPercentRestore",
|
||||||
|
"gBluePotionEffects",
|
||||||
|
"gBluePotionHealth",
|
||||||
|
"gBlueHealthPercentRestore",
|
||||||
|
"gBluePotionMana",
|
||||||
|
"gBlueManaPercentRestore",
|
||||||
|
"gMilkEffect",
|
||||||
|
"gMilkHealth",
|
||||||
|
"gMilkPercentRestore",
|
||||||
|
"gSeparateHalfMilkEffect",
|
||||||
|
"gHalfMilkHealth",
|
||||||
|
"gHalfMilkPercentRestore",
|
||||||
|
"gFairyEffect",
|
||||||
|
"gFairyHealth",
|
||||||
|
"gFairyPercentRestore",
|
||||||
|
"gFairyReviveEffect",
|
||||||
|
"gFairyReviveHealth",
|
||||||
|
"gFairyRevivePercentRestore",
|
||||||
|
"gInstantFishing",
|
||||||
|
"gGuaranteeFishingBite",
|
||||||
|
"gFishNeverEscape",
|
||||||
|
"gChildMinimumWeightFish",
|
||||||
|
"gAdultMinimumWeightFish",
|
||||||
|
"gLowHpAlarm",
|
||||||
|
"gMinimalUI",
|
||||||
|
"gDisableNaviCallAudio",
|
||||||
|
"gVisualAgony",
|
||||||
|
"gAssignableTunicsAndBoots",
|
||||||
|
"gEquipmentCanBeRemoved",
|
||||||
|
"gCowOfTime",
|
||||||
|
"gGuardVision",
|
||||||
|
"gTimeFlowFileSelect",
|
||||||
|
"gInjectItemCounts",
|
||||||
|
"gDayGravePull",
|
||||||
|
"gSkipScarecrow",
|
||||||
|
"gBlueFireArrows",
|
||||||
|
"gSunlightArrows",
|
||||||
|
"gPauseLiveLinkRotation",
|
||||||
|
"gPauseLiveLink",
|
||||||
|
"gMinFrameCount",
|
||||||
|
"gN64Mode",
|
||||||
|
"gNewDrops",
|
||||||
|
"gDisableBlackBars",
|
||||||
|
"gDynamicWalletIcon",
|
||||||
|
"gAlwaysShowDungeonMinimapIcon",
|
||||||
|
"gUniformLR",
|
||||||
|
"gNGCKaleidoSwitcher",
|
||||||
|
"gFixDungeonMinimapIcon",
|
||||||
|
"gTwoHandedIdle",
|
||||||
|
"gGravediggingTourFix",
|
||||||
|
"gDekuNutUpgradeFix",
|
||||||
|
"gNaviTextFix",
|
||||||
|
"gAnubisFix",
|
||||||
|
"gCrouchStabHammerFix",
|
||||||
|
"gCrouchStabFix",
|
||||||
|
"gGerudoWarriorClothingFix",
|
||||||
|
"gRedGanonBlood",
|
||||||
|
"gHoverFishing",
|
||||||
|
"gN64WeirdFrames",
|
||||||
|
"gBombchusOOB",
|
||||||
|
"gGsCutscene",
|
||||||
|
"gSkipSaveConfirmation",
|
||||||
|
"gAutosave",
|
||||||
|
"gDisableCritWiggle",
|
||||||
|
"gChestSizeDependsStoneOfAgony",
|
||||||
|
"gSkipArrowAnimation",
|
||||||
|
"gSeparateArrows",
|
||||||
|
"gCustomizeShootingGallery",
|
||||||
|
"gInstantShootingGalleryWin",
|
||||||
|
"gConstantAdultGallery",
|
||||||
|
"gChildShootingGalleryAmmunition",
|
||||||
|
"gAdultShootingGalleryAmmunition",
|
||||||
|
"gCreditsFix",
|
||||||
|
};
|
||||||
|
|
||||||
|
const std::vector<const char*> randomizerCvars = {
|
||||||
|
"gChestSizeAndTextureMatchesContents",
|
||||||
|
"gFastChests",
|
||||||
|
"gMMBunnyHood",
|
||||||
|
"gRandomizeBigPoeTargetCount",
|
||||||
|
"gRandomizeBlueFireArrows",
|
||||||
|
"gRandomizeBossKeysanity",
|
||||||
|
"gRandomizeCompleteMaskQuest",
|
||||||
|
"gRandomizeCuccosToReturn",
|
||||||
|
"gRandomizeDoorOfTime",
|
||||||
|
"gRandomizeEnableBombchuDrops",
|
||||||
|
"gRandomizeEnableGlitchCutscenes",
|
||||||
|
"gRandomizeExcludedLocations",
|
||||||
|
"gRandomizeForest",
|
||||||
|
"gRandomizeGanonTrial",
|
||||||
|
"gRandomizeGanonTrialCount",
|
||||||
|
"gRandomizeGerudoFortress",
|
||||||
|
"gRandomizeGerudoKeys",
|
||||||
|
"gRandomizeGsExpectSunsSong",
|
||||||
|
"gRandomizeIceTraps",
|
||||||
|
"gRandomizeItemPool",
|
||||||
|
"gRandomizeKakarikoGate",
|
||||||
|
"gRandomizeKeysanity",
|
||||||
|
"gRandomizeLinksPocket",
|
||||||
|
"gRandomizeMedallionCount",
|
||||||
|
"gRandomizeMqDungeons",
|
||||||
|
"gRandomizeRainbowBridge",
|
||||||
|
"gRandomizeShopsanity",
|
||||||
|
"gRandomizeShuffleAdultTrade",
|
||||||
|
"gRandomizeShuffleBeans",
|
||||||
|
"gRandomizeShuffleCows",
|
||||||
|
"gRandomizeShuffleDungeonReward",
|
||||||
|
"gRandomizeShuffleFrogSongRupees",
|
||||||
|
"gRandomizeShuffleGanonBossKey",
|
||||||
|
"gRandomizeShuffleGerudoToken",
|
||||||
|
"gRandomizeShuffleKeyRings",
|
||||||
|
"gRandomizeShuffleKokiriSword",
|
||||||
|
"gRandomizeShuffleOcarinas",
|
||||||
|
"gRandomizeShuffleScrubs",
|
||||||
|
"gRandomizeShuffleSongs",
|
||||||
|
"gRandomizeShuffleTokens",
|
||||||
|
"gRandomizeShuffleWeirdEgg",
|
||||||
|
"gRandomizeSkipChildStealth",
|
||||||
|
"gRandomizeSkipChildZelda",
|
||||||
|
"gRandomizeSkipEponaRace",
|
||||||
|
"gRandomizeSkipScarecrowsSong",
|
||||||
|
"gRandomizeSkipTowerEscape",
|
||||||
|
"gRandomizeStartingAge",
|
||||||
|
"gRandomizeStartingConsumables",
|
||||||
|
"gRandomizeStartingDekuShield",
|
||||||
|
"gRandomizeStartingOcarina",
|
||||||
|
"gRandomizeStartingMapsCompasses",
|
||||||
|
"gRandomizeSunlightArrows",
|
||||||
|
"gRandomizeZorasFountain",
|
||||||
|
};
|
||||||
|
|
||||||
|
const std::vector<PresetEntry> vanillaPlusPresetEntries = {
|
||||||
|
// D-pad Support in text and file select
|
||||||
|
PRESET_ENTRY_S32("gDpadText", 1),
|
||||||
|
// Play Ocarina with D-pad
|
||||||
|
PRESET_ENTRY_S32("gDpadOcarina", 1),
|
||||||
|
// Play Ocarina with Right Stick
|
||||||
|
PRESET_ENTRY_S32("gRStickOcarina", 1),
|
||||||
|
// D-pad as Equip Items
|
||||||
|
PRESET_ENTRY_S32("gDpadEquips", 1),
|
||||||
|
// Prevent Dropped Ocarina Inputs
|
||||||
|
PRESET_ENTRY_S32("gDpadNoDropOcarinaInput", 1),
|
||||||
|
// Right Stick Aiming
|
||||||
|
PRESET_ENTRY_S32("gRightStickAiming", 1),
|
||||||
|
|
||||||
|
// Text Speed (1 to 5)
|
||||||
|
PRESET_ENTRY_S32("gTextSpeed", 5),
|
||||||
|
// King Zora Speed (1 to 5)
|
||||||
|
PRESET_ENTRY_S32("gMweepSpeed", 2),
|
||||||
|
// Faster Block Push (+0 to +5)
|
||||||
|
PRESET_ENTRY_S32("gFasterBlockPush", 5),
|
||||||
|
// Better Owl
|
||||||
|
PRESET_ENTRY_S32("gBetterOwl", 1),
|
||||||
|
|
||||||
|
// Assignable Tunics and Boots
|
||||||
|
PRESET_ENTRY_S32("gAssignableTunicsAndBoots", 1),
|
||||||
|
// Enable passage of time on file select
|
||||||
|
PRESET_ENTRY_S32("gTimeFlowFileSelect", 1),
|
||||||
|
// Inject Item Counts in messages
|
||||||
|
PRESET_ENTRY_S32("gInjectItemCounts", 1),
|
||||||
|
|
||||||
|
// Pause link animation (0 to 16)
|
||||||
|
PRESET_ENTRY_S32("gPauseLiveLink", 1),
|
||||||
|
|
||||||
|
// Dynamic Wallet Icon
|
||||||
|
PRESET_ENTRY_S32("gDynamicWalletIcon", 1),
|
||||||
|
// Always show dungeon entrances
|
||||||
|
PRESET_ENTRY_S32("gAlwaysShowDungeonMinimapIcon", 1),
|
||||||
|
|
||||||
|
// Fix L&R Pause menu
|
||||||
|
PRESET_ENTRY_S32("gUniformLR", 1),
|
||||||
|
// Fix Dungeon entrances
|
||||||
|
PRESET_ENTRY_S32("gFixDungeonMinimapIcon", 1),
|
||||||
|
// Fix Two Handed idle animations
|
||||||
|
PRESET_ENTRY_S32("gTwoHandedIdle", 1),
|
||||||
|
// Fix the Gravedigging Tour Glitch
|
||||||
|
PRESET_ENTRY_S32("gGravediggingTourFix", 1),
|
||||||
|
// Fix Deku Nut upgrade
|
||||||
|
PRESET_ENTRY_S32("gDekuNutUpgradeFix", 1),
|
||||||
|
// Fix Navi text HUD position
|
||||||
|
PRESET_ENTRY_S32("gNaviTextFix", 1),
|
||||||
|
|
||||||
|
// Red Ganon blood
|
||||||
|
PRESET_ENTRY_S32("gRedGanonBlood", 1),
|
||||||
|
// Fish while hovering
|
||||||
|
PRESET_ENTRY_S32("gHoverFishing", 1),
|
||||||
|
// N64 Weird Frames
|
||||||
|
PRESET_ENTRY_S32("gN64WeirdFrames", 1),
|
||||||
|
// Bombchus out of bounds
|
||||||
|
PRESET_ENTRY_S32("gBombchusOOB", 1),
|
||||||
|
// Skip save confirmation
|
||||||
|
PRESET_ENTRY_S32("gSkipSaveConfirmation", 1),
|
||||||
|
};
|
||||||
|
|
||||||
|
const std::vector<PresetEntry> enhancedPresetEntries = {
|
||||||
|
// D-pad Support in text and file select
|
||||||
|
PRESET_ENTRY_S32("gDpadText", 1),
|
||||||
|
// Play Ocarina with D-pad
|
||||||
|
PRESET_ENTRY_S32("gDpadOcarina", 1),
|
||||||
|
// Play Ocarina with Right Stick
|
||||||
|
PRESET_ENTRY_S32("gRStickOcarina", 1),
|
||||||
|
// D-pad as Equip Items
|
||||||
|
PRESET_ENTRY_S32("gDpadEquips", 1),
|
||||||
|
// Prevent Dropped Ocarina Inputs
|
||||||
|
PRESET_ENTRY_S32("gDpadNoDropOcarinaInput", 1),
|
||||||
|
// Right Stick Aiming
|
||||||
|
PRESET_ENTRY_S32("gRightStickAiming", 1),
|
||||||
|
|
||||||
|
// Text Speed (1 to 5)
|
||||||
|
PRESET_ENTRY_S32("gTextSpeed", 5),
|
||||||
|
// King Zora Speed (1 to 5)
|
||||||
|
PRESET_ENTRY_S32("gMweepSpeed", 2),
|
||||||
|
// Faster Block Push (+0 to +5)
|
||||||
|
PRESET_ENTRY_S32("gFasterBlockPush", 5),
|
||||||
|
// Better Owl
|
||||||
|
PRESET_ENTRY_S32("gBetterOwl", 1),
|
||||||
|
|
||||||
|
// Assignable Tunics and Boots
|
||||||
|
PRESET_ENTRY_S32("gAssignableTunicsAndBoots", 1),
|
||||||
|
// Enable passage of time on file select
|
||||||
|
PRESET_ENTRY_S32("gTimeFlowFileSelect", 1),
|
||||||
|
// Inject Item Counts in messages
|
||||||
|
PRESET_ENTRY_S32("gInjectItemCounts", 1),
|
||||||
|
|
||||||
|
// Pause link animation (0 to 16)
|
||||||
|
PRESET_ENTRY_S32("gPauseLiveLink", 1),
|
||||||
|
|
||||||
|
// Dynamic Wallet Icon
|
||||||
|
PRESET_ENTRY_S32("gDynamicWalletIcon", 1),
|
||||||
|
// Always show dungeon entrances
|
||||||
|
PRESET_ENTRY_S32("gAlwaysShowDungeonMinimapIcon", 1),
|
||||||
|
|
||||||
|
// Fix L&R Pause menu
|
||||||
|
PRESET_ENTRY_S32("gUniformLR", 1),
|
||||||
|
// Fix Dungeon entrances
|
||||||
|
PRESET_ENTRY_S32("gFixDungeonMinimapIcon", 1),
|
||||||
|
// Fix Two Handed idle animations
|
||||||
|
PRESET_ENTRY_S32("gTwoHandedIdle", 1),
|
||||||
|
// Fix the Gravedigging Tour Glitch
|
||||||
|
PRESET_ENTRY_S32("gGravediggingTourFix", 1),
|
||||||
|
// Fix Deku Nut upgrade
|
||||||
|
PRESET_ENTRY_S32("gDekuNutUpgradeFix", 1),
|
||||||
|
// Fix Navi text HUD position
|
||||||
|
PRESET_ENTRY_S32("gNaviTextFix", 1),
|
||||||
|
|
||||||
|
// Red Ganon blood
|
||||||
|
PRESET_ENTRY_S32("gRedGanonBlood", 1),
|
||||||
|
// Fish while hovering
|
||||||
|
PRESET_ENTRY_S32("gHoverFishing", 1),
|
||||||
|
// N64 Weird Frames
|
||||||
|
PRESET_ENTRY_S32("gN64WeirdFrames", 1),
|
||||||
|
// Bombchus out of bounds
|
||||||
|
PRESET_ENTRY_S32("gBombchusOOB", 1),
|
||||||
|
// Skip save confirmation
|
||||||
|
PRESET_ENTRY_S32("gSkipSaveConfirmation", 1),
|
||||||
|
// King Zora Speed (1 to 5)
|
||||||
|
PRESET_ENTRY_S32("gMweepSpeed", 5),
|
||||||
|
// Biggoron Forge Time (0 to 3)
|
||||||
|
PRESET_ENTRY_S32("gForgeTime", 0),
|
||||||
|
// Vine/Ladder Climb speed (+0 to +12)
|
||||||
|
PRESET_ENTRY_S32("gClimbSpeed", 3),
|
||||||
|
// Faster Heavy Block Lift
|
||||||
|
PRESET_ENTRY_S32("gFasterHeavyBlockLift", 1),
|
||||||
|
// No Forced Navi
|
||||||
|
PRESET_ENTRY_S32("gNoForcedNavi", 1),
|
||||||
|
// No Skulltula Freeze
|
||||||
|
PRESET_ENTRY_S32("gSkulltulaFreeze", 1),
|
||||||
|
// MM Bunny Hood
|
||||||
|
PRESET_ENTRY_S32("gMMBunnyHood", 1),
|
||||||
|
// Fast Chests
|
||||||
|
PRESET_ENTRY_S32("gFastChests", 1),
|
||||||
|
// Fast Drops
|
||||||
|
PRESET_ENTRY_S32("gFastDrops", 1),
|
||||||
|
// Fast Ocarina Playback
|
||||||
|
PRESET_ENTRY_S32("gFastOcarinaPlayback", 1),
|
||||||
|
// Instant Putaway
|
||||||
|
PRESET_ENTRY_S32("gInstantPutaway", 1),
|
||||||
|
// Instant Boomerang Recall
|
||||||
|
PRESET_ENTRY_S32("gFastBoomerang", 1),
|
||||||
|
// Ask to Equip New Items
|
||||||
|
PRESET_ENTRY_S32("gAskToEquip", 1),
|
||||||
|
// Mask Select in Inventory
|
||||||
|
PRESET_ENTRY_S32("gMaskSelect", 1),
|
||||||
|
// Always Win Goron Pot
|
||||||
|
PRESET_ENTRY_S32("gGoronPot", 1),
|
||||||
|
// Always Win Dampe Digging
|
||||||
|
PRESET_ENTRY_S32("gDampeWin", 1),
|
||||||
|
// Skip Magic Arrow Equip Animation
|
||||||
|
PRESET_ENTRY_S32("gSkipArrowAnimation", 1),
|
||||||
|
|
||||||
|
// Equip arrows on multiple slots
|
||||||
|
PRESET_ENTRY_S32("gSeparateArrows", 1),
|
||||||
|
|
||||||
|
// Disable Navi Call Audio
|
||||||
|
PRESET_ENTRY_S32("gDisableNaviCallAudio", 1),
|
||||||
|
|
||||||
|
// Equipment Toggle
|
||||||
|
PRESET_ENTRY_S32("gEquipmentCanBeRemoved", 1),
|
||||||
|
// Link's Cow in Both Time Periods
|
||||||
|
PRESET_ENTRY_S32("gCowOfTime", 1),
|
||||||
|
|
||||||
|
// Enable 3D Dropped items/projectiles
|
||||||
|
PRESET_ENTRY_S32("gNewDrops", 1),
|
||||||
|
|
||||||
|
// Fix Anubis fireballs
|
||||||
|
PRESET_ENTRY_S32("gAnubisFix", 1),
|
||||||
|
|
||||||
|
// Autosave
|
||||||
|
PRESET_ENTRY_S32("gAutosave", 1),
|
||||||
|
};
|
||||||
|
|
||||||
|
const std::vector<PresetEntry> randomizerPresetEntries = {
|
||||||
|
// D-pad Support in text and file select
|
||||||
|
PRESET_ENTRY_S32("gDpadText", 1),
|
||||||
|
// Play Ocarina with D-pad
|
||||||
|
PRESET_ENTRY_S32("gDpadOcarina", 1),
|
||||||
|
// Play Ocarina with Right Stick
|
||||||
|
PRESET_ENTRY_S32("gRStickOcarina", 1),
|
||||||
|
// D-pad as Equip Items
|
||||||
|
PRESET_ENTRY_S32("gDpadEquips", 1),
|
||||||
|
// Prevent Dropped Ocarina Inputs
|
||||||
|
PRESET_ENTRY_S32("gDpadNoDropOcarinaInput", 1),
|
||||||
|
// Right Stick Aiming
|
||||||
|
PRESET_ENTRY_S32("gRightStickAiming", 1),
|
||||||
|
|
||||||
|
// Text Speed (1 to 5)
|
||||||
|
PRESET_ENTRY_S32("gTextSpeed", 5),
|
||||||
|
// King Zora Speed (1 to 5)
|
||||||
|
PRESET_ENTRY_S32("gMweepSpeed", 2),
|
||||||
|
// Faster Block Push (+0 to +5)
|
||||||
|
PRESET_ENTRY_S32("gFasterBlockPush", 5),
|
||||||
|
// Better Owl
|
||||||
|
PRESET_ENTRY_S32("gBetterOwl", 1),
|
||||||
|
|
||||||
|
// Assignable Tunics and Boots
|
||||||
|
PRESET_ENTRY_S32("gAssignableTunicsAndBoots", 1),
|
||||||
|
// Enable passage of time on file select
|
||||||
|
PRESET_ENTRY_S32("gTimeFlowFileSelect", 1),
|
||||||
|
// Inject Item Counts in messages
|
||||||
|
PRESET_ENTRY_S32("gInjectItemCounts", 1),
|
||||||
|
|
||||||
|
// Pause link animation (0 to 16)
|
||||||
|
PRESET_ENTRY_S32("gPauseLiveLink", 1),
|
||||||
|
|
||||||
|
// Dynamic Wallet Icon
|
||||||
|
PRESET_ENTRY_S32("gDynamicWalletIcon", 1),
|
||||||
|
// Always show dungeon entrances
|
||||||
|
PRESET_ENTRY_S32("gAlwaysShowDungeonMinimapIcon", 1),
|
||||||
|
|
||||||
|
// Fix L&R Pause menu
|
||||||
|
PRESET_ENTRY_S32("gUniformLR", 1),
|
||||||
|
// Fix Dungeon entrances
|
||||||
|
PRESET_ENTRY_S32("gFixDungeonMinimapIcon", 1),
|
||||||
|
// Fix Two Handed idle animations
|
||||||
|
PRESET_ENTRY_S32("gTwoHandedIdle", 1),
|
||||||
|
// Fix the Gravedigging Tour Glitch
|
||||||
|
PRESET_ENTRY_S32("gGravediggingTourFix", 1),
|
||||||
|
// Fix Deku Nut upgrade
|
||||||
|
PRESET_ENTRY_S32("gDekuNutUpgradeFix", 1),
|
||||||
|
// Fix Navi text HUD position
|
||||||
|
PRESET_ENTRY_S32("gNaviTextFix", 1),
|
||||||
|
|
||||||
|
// Red Ganon blood
|
||||||
|
PRESET_ENTRY_S32("gRedGanonBlood", 1),
|
||||||
|
// Fish while hovering
|
||||||
|
PRESET_ENTRY_S32("gHoverFishing", 1),
|
||||||
|
// N64 Weird Frames
|
||||||
|
PRESET_ENTRY_S32("gN64WeirdFrames", 1),
|
||||||
|
// Bombchus out of bounds
|
||||||
|
PRESET_ENTRY_S32("gBombchusOOB", 1),
|
||||||
|
// Skip save confirmation
|
||||||
|
PRESET_ENTRY_S32("gSkipSaveConfirmation", 1),
|
||||||
|
// King Zora Speed (1 to 5)
|
||||||
|
PRESET_ENTRY_S32("gMweepSpeed", 5),
|
||||||
|
// Biggoron Forge Time (0 to 3)
|
||||||
|
PRESET_ENTRY_S32("gForgeTime", 0),
|
||||||
|
// Vine/Ladder Climb speed (+0 to +12)
|
||||||
|
PRESET_ENTRY_S32("gClimbSpeed", 3),
|
||||||
|
// Faster Heavy Block Lift
|
||||||
|
PRESET_ENTRY_S32("gFasterHeavyBlockLift", 1),
|
||||||
|
// No Forced Navi
|
||||||
|
PRESET_ENTRY_S32("gNoForcedNavi", 1),
|
||||||
|
// No Skulltula Freeze
|
||||||
|
PRESET_ENTRY_S32("gSkulltulaFreeze", 1),
|
||||||
|
// MM Bunny Hood
|
||||||
|
PRESET_ENTRY_S32("gMMBunnyHood", 1),
|
||||||
|
// Fast Chests
|
||||||
|
PRESET_ENTRY_S32("gFastChests", 1),
|
||||||
|
// Fast Drops
|
||||||
|
PRESET_ENTRY_S32("gFastDrops", 1),
|
||||||
|
// Fast Ocarina Playback
|
||||||
|
PRESET_ENTRY_S32("gFastOcarinaPlayback", 1),
|
||||||
|
// Instant Putaway
|
||||||
|
PRESET_ENTRY_S32("gInstantPutaway", 1),
|
||||||
|
// Instant Boomerang Recall
|
||||||
|
PRESET_ENTRY_S32("gFastBoomerang", 1),
|
||||||
|
// Ask to Equip New Items
|
||||||
|
PRESET_ENTRY_S32("gAskToEquip", 1),
|
||||||
|
// Mask Select in Inventory
|
||||||
|
PRESET_ENTRY_S32("gMaskSelect", 1),
|
||||||
|
// Always Win Goron Pot
|
||||||
|
PRESET_ENTRY_S32("gGoronPot", 1),
|
||||||
|
// Always Win Dampe Digging
|
||||||
|
PRESET_ENTRY_S32("gDampeWin", 1),
|
||||||
|
// Skip Magic Arrow Equip Animation
|
||||||
|
PRESET_ENTRY_S32("gSkipArrowAnimation", 1),
|
||||||
|
|
||||||
|
// Equip arrows on multiple slots
|
||||||
|
PRESET_ENTRY_S32("gSeparateArrows", 1),
|
||||||
|
|
||||||
|
// Disable Navi Call Audio
|
||||||
|
PRESET_ENTRY_S32("gDisableNaviCallAudio", 1),
|
||||||
|
|
||||||
|
// Equipment Toggle
|
||||||
|
PRESET_ENTRY_S32("gEquipmentCanBeRemoved", 1),
|
||||||
|
// Link's Cow in Both Time Periods
|
||||||
|
PRESET_ENTRY_S32("gCowOfTime", 1),
|
||||||
|
|
||||||
|
// Enable 3D Dropped items/projectiles
|
||||||
|
PRESET_ENTRY_S32("gNewDrops", 1),
|
||||||
|
|
||||||
|
// Fix Anubis fireballs
|
||||||
|
PRESET_ENTRY_S32("gAnubisFix", 1),
|
||||||
|
|
||||||
|
// Autosave
|
||||||
|
PRESET_ENTRY_S32("gAutosave", 1),
|
||||||
|
// Allow the cursor to be on any slot
|
||||||
|
PRESET_ENTRY_S32("gPauseAnyCursor", 1),
|
||||||
|
|
||||||
|
// Guarantee Bite
|
||||||
|
PRESET_ENTRY_S32("gGuaranteeFishingBite", 1),
|
||||||
|
// Fish Never Escape
|
||||||
|
PRESET_ENTRY_S32("gFishNeverEscape", 1),
|
||||||
|
// Child Minimum Weight (6 to 10)
|
||||||
|
PRESET_ENTRY_S32("gChildMinimumWeightFish", 3),
|
||||||
|
// Adult Minimum Weight (8 to 13)
|
||||||
|
PRESET_ENTRY_S32("gAdultMinimumWeightFish", 6),
|
||||||
|
|
||||||
|
// Visual Stone of Agony
|
||||||
|
PRESET_ENTRY_S32("gVisualAgony", 1),
|
||||||
|
// Pull grave during the day
|
||||||
|
PRESET_ENTRY_S32("gDayGravePull", 1),
|
||||||
|
// Pull out Ocarina to Summon Scarecrow
|
||||||
|
PRESET_ENTRY_S32("gSkipScarecrow", 1),
|
||||||
|
// Chest size & texture matches contents
|
||||||
|
PRESET_ENTRY_S32("gChestSizeAndTextureMatchesContents", 1),
|
||||||
|
|
||||||
|
// Pause link animation (0 to 16)
|
||||||
|
PRESET_ENTRY_S32("gPauseLiveLink", 16),
|
||||||
|
// Frames to wait
|
||||||
|
PRESET_ENTRY_S32("gMinFrameCount", 200),
|
||||||
|
};
|
||||||
|
|
||||||
|
const std::vector<PresetEntry> s6PresetEntries = {
|
||||||
|
PRESET_ENTRY_S32("gChestSizeAndTextureMatchesContents", 1),
|
||||||
|
PRESET_ENTRY_S32("gFastChests", 1),
|
||||||
|
PRESET_ENTRY_S32("gMMBunnyHood", 2),
|
||||||
|
PRESET_ENTRY_S32("gRandomizeBigPoeTargetCount", 1),
|
||||||
|
PRESET_ENTRY_S32("gRandomizeCuccosToReturn", 4),
|
||||||
|
PRESET_ENTRY_S32("gRandomizeDoorOfTime", 2),
|
||||||
|
PRESET_ENTRY_STRING("gRandomizeExcludedLocations", "48,"),
|
||||||
|
PRESET_ENTRY_S32("gRandomizeForest", 1),
|
||||||
|
PRESET_ENTRY_S32("gRandomizeGanonTrial", 0),
|
||||||
|
PRESET_ENTRY_S32("gRandomizeGerudoFortress", 1),
|
||||||
|
PRESET_ENTRY_S32("gRandomizeIceTraps", 0),
|
||||||
|
PRESET_ENTRY_S32("gRandomizeKakarikoGate", 1),
|
||||||
|
PRESET_ENTRY_S32("gRandomizeMedallionCount", 6),
|
||||||
|
PRESET_ENTRY_S32("gRandomizeMqDungeons", 0),
|
||||||
|
PRESET_ENTRY_S32("gRandomizeRainbowBridge", 3),
|
||||||
|
PRESET_ENTRY_S32("gRandomizeShuffleAdultTrade", 1),
|
||||||
|
PRESET_ENTRY_S32("gRandomizeShuffleDungeonReward", 0),
|
||||||
|
PRESET_ENTRY_S32("gRandomizeShuffleGanonBossKey", 2),
|
||||||
|
PRESET_ENTRY_S32("gRandomizeShuffleKokiriSword", 1),
|
||||||
|
PRESET_ENTRY_S32("gRandomizeSkipChildStealth", 1),
|
||||||
|
PRESET_ENTRY_S32("gRandomizeSkipChildZelda", 1),
|
||||||
|
PRESET_ENTRY_S32("gRandomizeSkipEponaRace", 1),
|
||||||
|
PRESET_ENTRY_S32("gRandomizeSkipTowerEscape", 1),
|
||||||
|
PRESET_ENTRY_S32("gRandomizeStartingAge", 2),
|
||||||
|
PRESET_ENTRY_S32("gRandomizeStartingConsumables", 1),
|
||||||
|
PRESET_ENTRY_S32("gRandomizeStartingDekuShield", 1),
|
||||||
|
PRESET_ENTRY_S32("gRandomizeStartingMapsCompasses", 0),
|
||||||
|
PRESET_ENTRY_S32("gRandomizeStartingOcarina", 1),
|
||||||
|
PRESET_ENTRY_S32("gRandomizeZorasFountain", 0),
|
||||||
|
};
|
||||||
|
|
||||||
|
const std::vector<PresetEntry> hellModePresetEntries = {
|
||||||
|
PRESET_ENTRY_S32("gChestSizeAndTextureMatchesContents", 1),
|
||||||
|
PRESET_ENTRY_S32("gFastChests", 1),
|
||||||
|
PRESET_ENTRY_S32("gMMBunnyHood", 2),
|
||||||
|
PRESET_ENTRY_S32("gRandomizeBigPoeTargetCount", 1),
|
||||||
|
PRESET_ENTRY_S32("gRandomizeBlueFireArrows", 1),
|
||||||
|
PRESET_ENTRY_S32("gRandomizeBossKeysanity", 5),
|
||||||
|
PRESET_ENTRY_S32("gRandomizeCompleteMaskQuest", 1),
|
||||||
|
PRESET_ENTRY_S32("gRandomizeCuccosToReturn", 1),
|
||||||
|
PRESET_ENTRY_S32("gRandomizeDoorOfTime", 2),
|
||||||
|
PRESET_ENTRY_S32("gRandomizeEnableBombchuDrops", 1),
|
||||||
|
PRESET_ENTRY_S32("gRandomizeEnableGlitchCutscenes", 1),
|
||||||
|
PRESET_ENTRY_S32("gRandomizeForest", 2),
|
||||||
|
PRESET_ENTRY_S32("gRandomizeGanonTrial", 2),
|
||||||
|
PRESET_ENTRY_S32("gRandomizeGanonTrialCount", 6),
|
||||||
|
PRESET_ENTRY_S32("gRandomizeGerudoKeys", 3),
|
||||||
|
PRESET_ENTRY_S32("gRandomizeGsExpectSunsSong", 1),
|
||||||
|
PRESET_ENTRY_S32("gRandomizeIceTraps", 4),
|
||||||
|
PRESET_ENTRY_S32("gRandomizeItemPool", 1),
|
||||||
|
PRESET_ENTRY_S32("gRandomizeKakarikoGate", 1),
|
||||||
|
PRESET_ENTRY_S32("gRandomizeKeysanity", 5),
|
||||||
|
PRESET_ENTRY_S32("gRandomizeLinksPocket", 3),
|
||||||
|
PRESET_ENTRY_S32("gRandomizeMqDungeons", 2),
|
||||||
|
PRESET_ENTRY_S32("gRandomizeRainbowBridge", 4),
|
||||||
|
PRESET_ENTRY_S32("gRandomizeShopsanity", 5),
|
||||||
|
PRESET_ENTRY_S32("gRandomizeShuffleAdultTrade", 1),
|
||||||
|
PRESET_ENTRY_S32("gRandomizeShuffleBeans", 1),
|
||||||
|
PRESET_ENTRY_S32("gRandomizeShuffleCows", 1),
|
||||||
|
PRESET_ENTRY_S32("gRandomizeShuffleDungeonReward", 3),
|
||||||
|
PRESET_ENTRY_S32("gRandomizeShuffleFrogSongRupees", 1),
|
||||||
|
PRESET_ENTRY_S32("gRandomizeShuffleGanonBossKey", 10),
|
||||||
|
PRESET_ENTRY_S32("gRandomizeShuffleGerudoToken", 1),
|
||||||
|
PRESET_ENTRY_S32("gRandomizeShuffleKeyRings", 1),
|
||||||
|
PRESET_ENTRY_S32("gRandomizeShuffleKokiriSword", 1),
|
||||||
|
PRESET_ENTRY_S32("gRandomizeShuffleOcarinas", 1),
|
||||||
|
PRESET_ENTRY_S32("gRandomizeShuffleScrubs", 3),
|
||||||
|
PRESET_ENTRY_S32("gRandomizeShuffleSongs", 2),
|
||||||
|
PRESET_ENTRY_S32("gRandomizeShuffleTokens", 3),
|
||||||
|
PRESET_ENTRY_S32("gRandomizeShuffleWeirdEgg", 1),
|
||||||
|
PRESET_ENTRY_S32("gRandomizeSkipChildStealth", 1),
|
||||||
|
PRESET_ENTRY_S32("gRandomizeSkipEponaRace", 1),
|
||||||
|
PRESET_ENTRY_S32("gRandomizeSkipScarecrowsSong", 1),
|
||||||
|
PRESET_ENTRY_S32("gRandomizeSkipTowerEscape", 1),
|
||||||
|
PRESET_ENTRY_S32("gRandomizeStartingAge", 2),
|
||||||
|
PRESET_ENTRY_S32("gRandomizeStartingMapsCompasses", 5),
|
||||||
|
PRESET_ENTRY_S32("gRandomizeSunlightArrows", 1),
|
||||||
|
PRESET_ENTRY_S32("gRandomizeZorasFountain", 2),
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct PresetDefinition {
|
||||||
|
const char* label;
|
||||||
|
const char* description;
|
||||||
|
std::vector<PresetEntry> entries;
|
||||||
|
} PresetDefinition;
|
||||||
|
|
||||||
|
typedef struct PresetTypeDefinition {
|
||||||
|
std::vector<const char*> cvarsToClear;
|
||||||
|
std::map<uint16_t, PresetDefinition> presets;
|
||||||
|
} PresetTypeDefinition;
|
||||||
|
|
||||||
|
const std::map<PresetType, PresetTypeDefinition> presetTypes = {
|
||||||
|
{ PRESET_TYPE_ENHANCEMENTS, { enhancementsCvars, {
|
||||||
|
{ ENHANCEMENT_PRESET_DEFAULT, {
|
||||||
|
"Default",
|
||||||
|
"Reset all options to their default values.",
|
||||||
|
{},
|
||||||
|
} },
|
||||||
|
{ ENHANCEMENT_PRESET_VANILLA_PLUS, {
|
||||||
|
"Vanilla Plus",
|
||||||
|
"Adds Quality of Life features that enhance your experience, but don't alter gameplay. Recommended for a first playthrough of OoT.",
|
||||||
|
vanillaPlusPresetEntries,
|
||||||
|
} },
|
||||||
|
{ ENHANCEMENT_PRESET_ENHANCED, {
|
||||||
|
"Enhanced",
|
||||||
|
"The \"Vanilla Plus\" preset, but with more quality of life enhancements that might alter gameplay slightly. Recommended for returning players.",
|
||||||
|
enhancedPresetEntries
|
||||||
|
} },
|
||||||
|
{ ENHANCEMENT_PRESET_RANDOMIZER, {
|
||||||
|
"Randomizer",
|
||||||
|
"The \"Enhanced\" preset, plus any other enhancements that are recommended for playing Randomizer.",
|
||||||
|
randomizerPresetEntries
|
||||||
|
} },
|
||||||
|
} } },
|
||||||
|
{ PRESET_TYPE_RANDOMIZER, { randomizerCvars, {
|
||||||
|
{ RANDOMIZER_PRESET_DEFAULT, {
|
||||||
|
"Default",
|
||||||
|
"Reset all options to their default values.",
|
||||||
|
{},
|
||||||
|
} },
|
||||||
|
{ RANDOMIZER_PRESET_S6, {
|
||||||
|
"S6 Tournament (Adapted)",
|
||||||
|
"Matches OOTR S6 tournament settings as close as we can get with the options available in SoH. The following differences are notable:\n" \
|
||||||
|
"- Child overworld spawn not randomized\n" \
|
||||||
|
"- Dungeon rewards are shuffled at the end of dungeons, rather than at the end of their own dungeon\n" \
|
||||||
|
"- Full adult trade sequence is shuffled instead of the selected 4\n" \
|
||||||
|
"- Hint distribution no \"tournament\" mode, falling back to balanced",
|
||||||
|
s6PresetEntries,
|
||||||
|
} },
|
||||||
|
{ RANDOMIZER_PRESET_HELL_MODE, {
|
||||||
|
"Hell Mode",
|
||||||
|
"All settings maxed but still using glitchless logic. Expect pain.",
|
||||||
|
hellModePresetEntries
|
||||||
|
} },
|
||||||
|
} } }
|
||||||
|
};
|
@ -17,6 +17,7 @@
|
|||||||
#include <ImGui/imgui_internal.h>
|
#include <ImGui/imgui_internal.h>
|
||||||
#include "../custom-message/CustomMessageTypes.h"
|
#include "../custom-message/CustomMessageTypes.h"
|
||||||
#include "../item-tables/ItemTableManager.h"
|
#include "../item-tables/ItemTableManager.h"
|
||||||
|
#include "../presets.h"
|
||||||
#include "../../../src/overlays/actors/ovl_En_GirlA/z_en_girla.h"
|
#include "../../../src/overlays/actors/ovl_En_GirlA/z_en_girla.h"
|
||||||
#include <stdexcept>
|
#include <stdexcept>
|
||||||
#include "randomizer_check_objects.h"
|
#include "randomizer_check_objects.h"
|
||||||
@ -2748,6 +2749,8 @@ void DrawRandoEditor(bool& open) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DrawPresetSelector(PRESET_TYPE_RANDOMIZER);
|
||||||
|
|
||||||
bool disableEditingRandoSettings = CVar_GetS32("gRandoGenerating", 0) || CVar_GetS32("gOnFileSelectNameEntry", 0);
|
bool disableEditingRandoSettings = CVar_GetS32("gRandoGenerating", 0) || CVar_GetS32("gOnFileSelectNameEntry", 0);
|
||||||
ImGui::PushItemFlag(ImGuiItemFlags_Disabled, disableEditingRandoSettings);
|
ImGui::PushItemFlag(ImGuiItemFlags_Disabled, disableEditingRandoSettings);
|
||||||
ImGui::PushStyleVar(ImGuiStyleVar_Alpha, ImGui::GetStyle().Alpha * (disableEditingRandoSettings ? 0.5f : 1.0f));
|
ImGui::PushStyleVar(ImGuiStyleVar_Alpha, ImGui::GetStyle().Alpha * (disableEditingRandoSettings ? 0.5f : 1.0f));
|
||||||
|
@ -27,6 +27,7 @@
|
|||||||
#include "include/z64audio.h"
|
#include "include/z64audio.h"
|
||||||
#include "soh/SaveManager.h"
|
#include "soh/SaveManager.h"
|
||||||
#include "OTRGlobals.h"
|
#include "OTRGlobals.h"
|
||||||
|
#include "soh/Enhancements/presets.h"
|
||||||
|
|
||||||
#ifdef ENABLE_CROWD_CONTROL
|
#ifdef ENABLE_CROWD_CONTROL
|
||||||
#include "Enhancements/crowd-control/CrowdControl.h"
|
#include "Enhancements/crowd-control/CrowdControl.h"
|
||||||
@ -99,435 +100,6 @@ namespace GameMenuBar {
|
|||||||
Audio_SetGameVolume(SEQ_SFX, CVar_GetFloat("gFanfareVolume", 1));
|
Audio_SetGameVolume(SEQ_SFX, CVar_GetFloat("gFanfareVolume", 1));
|
||||||
}
|
}
|
||||||
|
|
||||||
void applyEnhancementPresetDefault(void) {
|
|
||||||
// D-pad Support on Pause
|
|
||||||
CVar_SetS32("gDpadPause", 0);
|
|
||||||
// D-pad Support in text and file select
|
|
||||||
CVar_SetS32("gDpadText", 0);
|
|
||||||
// Play Ocarina with D-pad
|
|
||||||
CVar_SetS32("gDpadOcarina", 0);
|
|
||||||
// Play Ocarina with Right Stick
|
|
||||||
CVar_SetS32("gRStickOcarina", 0);
|
|
||||||
// D-pad as Equip Items
|
|
||||||
CVar_SetS32("gDpadEquips", 0);
|
|
||||||
// Allow the cursor to be on any slot
|
|
||||||
CVar_SetS32("gPauseAnyCursor", 0);
|
|
||||||
// Prevent Dropped Ocarina Inputs
|
|
||||||
CVar_SetS32("gDpadNoDropOcarinaInput", 0);
|
|
||||||
// Answer Navi Prompt with L Button
|
|
||||||
CVar_SetS32("gNaviOnL", 0);
|
|
||||||
// Invert Camera X Axis
|
|
||||||
CVar_SetS32("gInvertXAxis", 0);
|
|
||||||
// Invert Camera Y Axis
|
|
||||||
CVar_SetS32("gInvertYAxis", 1);
|
|
||||||
// Right Stick Aiming
|
|
||||||
CVar_SetS32("gRightStickAiming", 0);
|
|
||||||
// Disable Auto-Center First Person View
|
|
||||||
CVar_SetS32("gDisableAutoCenterView", 0);
|
|
||||||
|
|
||||||
// Text Speed (1 to 5)
|
|
||||||
CVar_SetS32("gTextSpeed", 1);
|
|
||||||
// King Zora Speed (1 to 5)
|
|
||||||
CVar_SetS32("gMweepSpeed", 1);
|
|
||||||
// Biggoron Forge Time (0 to 3)
|
|
||||||
CVar_SetS32("gForgeTime", 3);
|
|
||||||
// Vine/Ladder Climb speed (+0 to +12)
|
|
||||||
CVar_SetS32("gClimbSpeed", 0);
|
|
||||||
// Faster Block Push (+0 to +5)
|
|
||||||
CVar_SetS32("gFasterBlockPush", 0);
|
|
||||||
// Faster Heavy Block Lift
|
|
||||||
CVar_SetS32("gFasterHeavyBlockLift", 0);
|
|
||||||
// No Forced Navi
|
|
||||||
CVar_SetS32("gNoForcedNavi", 0);
|
|
||||||
// No Skulltula Freeze
|
|
||||||
CVar_SetS32("gSkulltulaFreeze", 0);
|
|
||||||
// MM Bunny Hood
|
|
||||||
CVar_SetS32("gMMBunnyHood", 0);
|
|
||||||
// Fast Chests
|
|
||||||
CVar_SetS32("gFastChests", 0);
|
|
||||||
// Chest size & texture matches contents
|
|
||||||
CVar_SetS32("gChestSizeAndTextureMatchesContents", 0);
|
|
||||||
// Chest size & texture matches contents only with agony
|
|
||||||
CVar_SetS32("gChestSizeDependsStoneOfAgony", 0);
|
|
||||||
// Fast Drops
|
|
||||||
CVar_SetS32("gFastDrops", 0);
|
|
||||||
// Better Owl
|
|
||||||
CVar_SetS32("gBetterOwl", 0);
|
|
||||||
// Fast Ocarina Playback
|
|
||||||
CVar_SetS32("gFastOcarinaPlayback", 0);
|
|
||||||
// Instant Putaway
|
|
||||||
CVar_SetS32("gInstantPutaway", 0);
|
|
||||||
// Instant Boomerang Recall
|
|
||||||
CVar_SetS32("gFastBoomerang", 0);
|
|
||||||
// Ask to Equip New Items
|
|
||||||
CVar_SetS32("gAskToEquip", 0);
|
|
||||||
// Mask Select in Inventory
|
|
||||||
CVar_SetS32("gMaskSelect", 0);
|
|
||||||
// Remember Save Location
|
|
||||||
CVar_SetS32("gRememberSaveLocation", 0);
|
|
||||||
// Skip Magic Arrow Equip Animation
|
|
||||||
CVar_SetS32("gSkipArrowAnimation", 0);
|
|
||||||
|
|
||||||
// Equip arrows on multiple slots
|
|
||||||
CVar_SetS32("gSeparateArrows", 0);
|
|
||||||
|
|
||||||
// Damage Multiplier (0 to 8)
|
|
||||||
CVar_SetS32("gDamageMul", 0);
|
|
||||||
// Fall Damage Multiplier (0 to 7)
|
|
||||||
CVar_SetS32("gFallDamageMul", 0);
|
|
||||||
// Void Damage Multiplier (0 to 6)
|
|
||||||
CVar_SetS32("gVoidDamageMul", 0);
|
|
||||||
// No Random Drops
|
|
||||||
CVar_SetS32("gNoRandomDrops", 0);
|
|
||||||
// No Heart Drops
|
|
||||||
CVar_SetS32("gNoHeartDrops", 0);
|
|
||||||
// Enable Bombchu Drops
|
|
||||||
CVar_SetS32("gBombchuDrops", 0);
|
|
||||||
// Always Win Goron Pot
|
|
||||||
CVar_SetS32("gGoronPot", 0);
|
|
||||||
// Always Win Dampe Digging First Try
|
|
||||||
CVar_SetS32("gDampeWin", 0);
|
|
||||||
|
|
||||||
// Change Red Potion Effect
|
|
||||||
CVar_SetS32("gRedPotionEffect", 0);
|
|
||||||
// Red Potion Health (1 to 100)
|
|
||||||
CVar_SetS32("gRedPotionHealth", 1);
|
|
||||||
// Red Potion Percent Restore
|
|
||||||
CVar_SetS32("gRedPercentRestore", 0);
|
|
||||||
// Change Green Potion Effect
|
|
||||||
CVar_SetS32("gGreenPotionEffect", 0);
|
|
||||||
// Green Potion Mana (1 to 100)
|
|
||||||
CVar_SetS32("gGreenPotionMana", 1);
|
|
||||||
// Green Potion Percent Restore
|
|
||||||
CVar_SetS32("gGreenPercentRestore", 0);
|
|
||||||
// Change Blue Potion Effects
|
|
||||||
CVar_SetS32("gBluePotionEffects", 0);
|
|
||||||
// Blue Potion Health (1 to 100)
|
|
||||||
CVar_SetS32("gBluePotionHealth", 1);
|
|
||||||
// Blue Potion Health Percent Restore
|
|
||||||
CVar_SetS32("gBlueHealthPercentRestore", 0);
|
|
||||||
// Blue Potion Mana (1 to 100)
|
|
||||||
CVar_SetS32("gBluePotionMana", 1);
|
|
||||||
// Blue Potion Mana Percent Restore
|
|
||||||
CVar_SetS32("gBlueManaPercentRestore", 0);
|
|
||||||
// Change Milk Effect
|
|
||||||
CVar_SetS32("gMilkEffect", 0);
|
|
||||||
// Milk Health (1 to 100)
|
|
||||||
CVar_SetS32("gMilkHealth", 1);
|
|
||||||
// Milk Percent Restore
|
|
||||||
CVar_SetS32("gMilkPercentRestore", 0);
|
|
||||||
// Separate Half Milk Effect
|
|
||||||
CVar_SetS32("gSeparateHalfMilkEffect", 0);
|
|
||||||
// Half Milk Health (1 to 100)
|
|
||||||
CVar_SetS32("gHalfMilkHealth", 0);
|
|
||||||
// Half Milk Percent Restore
|
|
||||||
CVar_SetS32("gHalfMilkPercentRestore", 0);
|
|
||||||
// Change Fairy Effect
|
|
||||||
CVar_SetS32("gFairyEffect", 0);
|
|
||||||
// Fairy (1 to 100)
|
|
||||||
CVar_SetS32("gFairyHealth", 1);
|
|
||||||
// Fairy Percent Restore
|
|
||||||
CVar_SetS32("gFairyPercentRestore", 0);
|
|
||||||
// Change Fairy Revive Effect
|
|
||||||
CVar_SetS32("gFairyReviveEffect", 0);
|
|
||||||
// Fairy Revival (1 to 100)
|
|
||||||
CVar_SetS32("gFairyReviveHealth", 1);
|
|
||||||
// Fairy Revive Percent Restore
|
|
||||||
CVar_SetS32("gFairyRevivePercentRestore", 0);
|
|
||||||
|
|
||||||
// Customize Shooting Gallery
|
|
||||||
CVar_SetS32("gCustomizeShootingGallery", 0);
|
|
||||||
// Shooting Gallery Instant Win
|
|
||||||
CVar_SetS32("gInstantShootingGalleryWin", 0);
|
|
||||||
// Constant Adult Shooting Gallery
|
|
||||||
CVar_SetS32("gConstantAdultGallery", 0);
|
|
||||||
// Child Starting Ammunition (10 to 30)
|
|
||||||
CVar_SetS32("gChildShootingGalleryAmmunition", 15);
|
|
||||||
// Adult Starting Ammunition (10 to 30)
|
|
||||||
CVar_SetS32("gAdultShootingGalleryAmmunition", 15);
|
|
||||||
|
|
||||||
// Instant Fishing
|
|
||||||
CVar_SetS32("gInstantFishing", 0);
|
|
||||||
// Guarantee Bite
|
|
||||||
CVar_SetS32("gGuaranteeFishingBite", 0);
|
|
||||||
// Fish Never Escape
|
|
||||||
CVar_SetS32("gFishNeverEscape", 0);
|
|
||||||
// Child Minimum Weight (6 to 10)
|
|
||||||
CVar_SetS32("gChildMinimumWeightFish", 10);
|
|
||||||
// Adult Minimum Weight (8 to 13)
|
|
||||||
CVar_SetS32("gAdultMinimumWeightFish", 13);
|
|
||||||
|
|
||||||
// Mute Low HP Alarm
|
|
||||||
CVar_SetS32("gLowHpAlarm", 0);
|
|
||||||
// Minimal UI
|
|
||||||
CVar_SetS32("gMinimalUI", 0);
|
|
||||||
// Disable Navi Call Audio
|
|
||||||
CVar_SetS32("gDisableNaviCallAudio", 0);
|
|
||||||
|
|
||||||
// Visual Stone of Agony
|
|
||||||
CVar_SetS32("gVisualAgony", 0);
|
|
||||||
// Assignable Tunics and Boots
|
|
||||||
CVar_SetS32("gAssignableTunicsAndBoots", 0);
|
|
||||||
// Equipment Toggle
|
|
||||||
CVar_SetS32("gEquipmentCanBeRemoved", 0);
|
|
||||||
// Link's Cow in Both Time Periods
|
|
||||||
CVar_SetS32("gCowOfTime", 0);
|
|
||||||
// Enable visible guard vision
|
|
||||||
CVar_SetS32("gGuardVision", 0);
|
|
||||||
// Enable passage of time on file select
|
|
||||||
CVar_SetS32("gTimeFlowFileSelect", 0);
|
|
||||||
// Inject Item Counts in messages
|
|
||||||
CVar_SetS32("gInjectItemCounts", 0);
|
|
||||||
// Pull grave during the day
|
|
||||||
CVar_SetS32("gDayGravePull", 0);
|
|
||||||
// Pull out Ocarina to Summon Scarecrow
|
|
||||||
CVar_SetS32("gSkipScarecrow", 0);
|
|
||||||
// Blue Fire Arrows
|
|
||||||
CVar_SetS32("gBlueFireArrows", 0);
|
|
||||||
// Sunlight Arrows
|
|
||||||
CVar_SetS32("gSunlightArrows", 0);
|
|
||||||
|
|
||||||
// Rotate link (0 to 2)
|
|
||||||
CVar_SetS32("gPauseLiveLinkRotation", 0);
|
|
||||||
// Pause link animation (0 to 16)
|
|
||||||
CVar_SetS32("gPauseLiveLink", 0);
|
|
||||||
// Frames to wait
|
|
||||||
CVar_SetS32("gMinFrameCount", 1);
|
|
||||||
|
|
||||||
// N64 Mode
|
|
||||||
CVar_SetS32("gN64Mode", 0);
|
|
||||||
// Enable 3D Dropped items/projectiles
|
|
||||||
CVar_SetS32("gNewDrops", 0);
|
|
||||||
// Disable Black Bar Letterboxes
|
|
||||||
CVar_SetS32("gDisableBlackBars", 0);
|
|
||||||
// Dynamic Wallet Icon
|
|
||||||
CVar_SetS32("gDynamicWalletIcon", 0);
|
|
||||||
// Always show dungeon entrances
|
|
||||||
CVar_SetS32("gAlwaysShowDungeonMinimapIcon", 0);
|
|
||||||
|
|
||||||
// Fix L&R Pause menu
|
|
||||||
CVar_SetS32("gUniformLR", 0);
|
|
||||||
// Fix L&Z Page switch in Pause menu
|
|
||||||
CVar_SetS32("gNGCKaleidoSwitcher", 0);
|
|
||||||
// Fix Dungeon entrances
|
|
||||||
CVar_SetS32("gFixDungeonMinimapIcon", 0);
|
|
||||||
// Fix Two Handed idle animations
|
|
||||||
CVar_SetS32("gTwoHandedIdle", 0);
|
|
||||||
// Fix the Gravedigging Tour Glitch
|
|
||||||
CVar_SetS32("gGravediggingTourFix", 0);
|
|
||||||
// Fix Deku Nut upgrade
|
|
||||||
CVar_SetS32("gDekuNutUpgradeFix", 0);
|
|
||||||
// Fix Navi text HUD position
|
|
||||||
CVar_SetS32("gNaviTextFix", 0);
|
|
||||||
// Fix Anubis fireballs
|
|
||||||
CVar_SetS32("gAnubisFix", 0);
|
|
||||||
// Fix Megaton Hammer crouch stab
|
|
||||||
CVar_SetS32("gCrouchStabHammerFix", 0);
|
|
||||||
// Fix all crouch stab
|
|
||||||
CVar_SetS32("gCrouchStabFix", 0);
|
|
||||||
// Fix credits timing
|
|
||||||
CVar_SetS32("gCreditsFix", 1);
|
|
||||||
// Fix Gerudo Warrior's clothing colors
|
|
||||||
CVar_SetS32("gGerudoWarriorClothingFix", 0);
|
|
||||||
|
|
||||||
// Red Ganon blood
|
|
||||||
CVar_SetS32("gRedGanonBlood", 0);
|
|
||||||
// Fish while hovering
|
|
||||||
CVar_SetS32("gHoverFishing", 0);
|
|
||||||
// N64 Weird Frames
|
|
||||||
CVar_SetS32("gN64WeirdFrames", 0);
|
|
||||||
// Bombchus out of bounds
|
|
||||||
CVar_SetS32("gBombchusOOB", 0);
|
|
||||||
|
|
||||||
// Restore old Gold Skulltula cutscene
|
|
||||||
CVar_SetS32("gGsCutscene", 0);
|
|
||||||
// Skip save confirmation
|
|
||||||
CVar_SetS32("gSkipSaveConfirmation", 0);
|
|
||||||
// Autosave
|
|
||||||
CVar_SetS32("gAutosave", 0);
|
|
||||||
|
|
||||||
//Crit wiggle disable
|
|
||||||
CVar_SetS32("gDisableCritWiggle", 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
void applyEnhancementPresetVanillaPlus(void) {
|
|
||||||
// D-pad Support in text and file select
|
|
||||||
CVar_SetS32("gDpadText", 1);
|
|
||||||
// Play Ocarina with D-pad
|
|
||||||
CVar_SetS32("gDpadOcarina", 1);
|
|
||||||
// Play Ocarina with Right Stick
|
|
||||||
CVar_SetS32("gRStickOcarina", 1);
|
|
||||||
// D-pad as Equip Items
|
|
||||||
CVar_SetS32("gDpadEquips", 1);
|
|
||||||
// Prevent Dropped Ocarina Inputs
|
|
||||||
CVar_SetS32("gDpadNoDropOcarinaInput", 1);
|
|
||||||
// Right Stick Aiming
|
|
||||||
CVar_SetS32("gRightStickAiming", 1);
|
|
||||||
|
|
||||||
// Text Speed (1 to 5)
|
|
||||||
CVar_SetS32("gTextSpeed", 5);
|
|
||||||
// King Zora Speed (1 to 5)
|
|
||||||
CVar_SetS32("gMweepSpeed", 2);
|
|
||||||
// Faster Block Push (+0 to +5)
|
|
||||||
CVar_SetS32("gFasterBlockPush", 5);
|
|
||||||
// Better Owl
|
|
||||||
CVar_SetS32("gBetterOwl", 1);
|
|
||||||
|
|
||||||
// Assignable Tunics and Boots
|
|
||||||
CVar_SetS32("gAssignableTunicsAndBoots", 1);
|
|
||||||
// Enable passage of time on file select
|
|
||||||
CVar_SetS32("gTimeFlowFileSelect", 1);
|
|
||||||
// Inject Item Counts in messages
|
|
||||||
CVar_SetS32("gInjectItemCounts", 1);
|
|
||||||
|
|
||||||
// Pause link animation (0 to 16)
|
|
||||||
CVar_SetS32("gPauseLiveLink", 1);
|
|
||||||
|
|
||||||
// Dynamic Wallet Icon
|
|
||||||
CVar_SetS32("gDynamicWalletIcon", 1);
|
|
||||||
// Always show dungeon entrances
|
|
||||||
CVar_SetS32("gAlwaysShowDungeonMinimapIcon", 1);
|
|
||||||
|
|
||||||
// Fix L&R Pause menu
|
|
||||||
CVar_SetS32("gUniformLR", 1);
|
|
||||||
// Fix Dungeon entrances
|
|
||||||
CVar_SetS32("gFixDungeonMinimapIcon", 1);
|
|
||||||
// Fix Two Handed idle animations
|
|
||||||
CVar_SetS32("gTwoHandedIdle", 1);
|
|
||||||
// Fix the Gravedigging Tour Glitch
|
|
||||||
CVar_SetS32("gGravediggingTourFix", 1);
|
|
||||||
// Fix Deku Nut upgrade
|
|
||||||
CVar_SetS32("gDekuNutUpgradeFix", 1);
|
|
||||||
// Fix Navi text HUD position
|
|
||||||
CVar_SetS32("gNaviTextFix", 1);
|
|
||||||
|
|
||||||
// Red Ganon blood
|
|
||||||
CVar_SetS32("gRedGanonBlood", 1);
|
|
||||||
// Fish while hovering
|
|
||||||
CVar_SetS32("gHoverFishing", 1);
|
|
||||||
// N64 Weird Frames
|
|
||||||
CVar_SetS32("gN64WeirdFrames", 1);
|
|
||||||
// Bombchus out of bounds
|
|
||||||
CVar_SetS32("gBombchusOOB", 1);
|
|
||||||
// Skip save confirmation
|
|
||||||
CVar_SetS32("gSkipSaveConfirmation", 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
void applyEnhancementPresetEnhanced(void) {
|
|
||||||
// King Zora Speed (1 to 5)
|
|
||||||
CVar_SetS32("gMweepSpeed", 5);
|
|
||||||
// Biggoron Forge Time (0 to 3)
|
|
||||||
CVar_SetS32("gForgeTime", 0);
|
|
||||||
// Vine/Ladder Climb speed (+0 to +12)
|
|
||||||
CVar_SetS32("gClimbSpeed", 3);
|
|
||||||
// Faster Heavy Block Lift
|
|
||||||
CVar_SetS32("gFasterHeavyBlockLift", 1);
|
|
||||||
// No Forced Navi
|
|
||||||
CVar_SetS32("gNoForcedNavi", 1);
|
|
||||||
// No Skulltula Freeze
|
|
||||||
CVar_SetS32("gSkulltulaFreeze", 1);
|
|
||||||
// MM Bunny Hood
|
|
||||||
CVar_SetS32("gMMBunnyHood", 1);
|
|
||||||
// Fast Chests
|
|
||||||
CVar_SetS32("gFastChests", 1);
|
|
||||||
// Fast Drops
|
|
||||||
CVar_SetS32("gFastDrops", 1);
|
|
||||||
// Fast Ocarina Playback
|
|
||||||
CVar_SetS32("gFastOcarinaPlayback", 1);
|
|
||||||
// Instant Putaway
|
|
||||||
CVar_SetS32("gInstantPutaway", 1);
|
|
||||||
// Instant Boomerang Recall
|
|
||||||
CVar_SetS32("gFastBoomerang", 1);
|
|
||||||
// Ask to Equip New Items
|
|
||||||
CVar_SetS32("gAskToEquip", 1);
|
|
||||||
// Mask Select in Inventory
|
|
||||||
CVar_SetS32("gMaskSelect", 1);
|
|
||||||
// Always Win Goron Pot
|
|
||||||
CVar_SetS32("gGoronPot", 1);
|
|
||||||
// Always Win Dampe Digging
|
|
||||||
CVar_SetS32("gDampeWin", 1);
|
|
||||||
// Skip Magic Arrow Equip Animation
|
|
||||||
CVar_SetS32("gSkipArrowAnimation", 1);
|
|
||||||
|
|
||||||
// Equip arrows on multiple slots
|
|
||||||
CVar_SetS32("gSeparateArrows", 1);
|
|
||||||
|
|
||||||
// Disable Navi Call Audio
|
|
||||||
CVar_SetS32("gDisableNaviCallAudio", 1);
|
|
||||||
|
|
||||||
// Equipment Toggle
|
|
||||||
CVar_SetS32("gEquipmentCanBeRemoved", 1);
|
|
||||||
// Link's Cow in Both Time Periods
|
|
||||||
CVar_SetS32("gCowOfTime", 1);
|
|
||||||
|
|
||||||
// Enable 3D Dropped items/projectiles
|
|
||||||
CVar_SetS32("gNewDrops", 1);
|
|
||||||
|
|
||||||
// Fix Anubis fireballs
|
|
||||||
CVar_SetS32("gAnubisFix", 1);
|
|
||||||
|
|
||||||
// Autosave
|
|
||||||
CVar_SetS32("gAutosave", 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
void applyEnhancementPresetRandomizer(void) {
|
|
||||||
// Allow the cursor to be on any slot
|
|
||||||
CVar_SetS32("gPauseAnyCursor", 1);
|
|
||||||
|
|
||||||
// Guarantee Bite
|
|
||||||
CVar_SetS32("gGuaranteeFishingBite", 1);
|
|
||||||
// Fish Never Escape
|
|
||||||
CVar_SetS32("gFishNeverEscape", 1);
|
|
||||||
// Child Minimum Weight (6 to 10)
|
|
||||||
CVar_SetS32("gChildMinimumWeightFish", 3);
|
|
||||||
// Adult Minimum Weight (8 to 13)
|
|
||||||
CVar_SetS32("gAdultMinimumWeightFish", 6);
|
|
||||||
|
|
||||||
// Visual Stone of Agony
|
|
||||||
CVar_SetS32("gVisualAgony", 1);
|
|
||||||
// Pull grave during the day
|
|
||||||
CVar_SetS32("gDayGravePull", 1);
|
|
||||||
// Pull out Ocarina to Summon Scarecrow
|
|
||||||
CVar_SetS32("gSkipScarecrow", 1);
|
|
||||||
// Chest size & texture matches contents
|
|
||||||
CVar_SetS32("gChestSizeAndTextureMatchesContents", 1);
|
|
||||||
|
|
||||||
// Pause link animation (0 to 16)
|
|
||||||
CVar_SetS32("gPauseLiveLink", 16);
|
|
||||||
// Frames to wait
|
|
||||||
CVar_SetS32("gMinFrameCount", 200);
|
|
||||||
}
|
|
||||||
|
|
||||||
void applyEnhancementPresets(void) {
|
|
||||||
switch (CVar_GetS32("gSelectEnhancementPresets", 0)) {
|
|
||||||
// Default
|
|
||||||
case 0:
|
|
||||||
applyEnhancementPresetDefault();
|
|
||||||
break;
|
|
||||||
|
|
||||||
// Vanilla Plus
|
|
||||||
case 1:
|
|
||||||
applyEnhancementPresetDefault();
|
|
||||||
applyEnhancementPresetVanillaPlus();
|
|
||||||
break;
|
|
||||||
|
|
||||||
// Enhanced
|
|
||||||
case 2:
|
|
||||||
applyEnhancementPresetDefault();
|
|
||||||
applyEnhancementPresetVanillaPlus();
|
|
||||||
applyEnhancementPresetEnhanced();
|
|
||||||
break;
|
|
||||||
|
|
||||||
// Randomizer
|
|
||||||
case 3:
|
|
||||||
applyEnhancementPresetDefault();
|
|
||||||
applyEnhancementPresetVanillaPlus();
|
|
||||||
applyEnhancementPresetEnhanced();
|
|
||||||
applyEnhancementPresetRandomizer();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// MARK: - Delegates
|
// MARK: - Delegates
|
||||||
|
|
||||||
void SetupHooks() {
|
void SetupHooks() {
|
||||||
@ -731,28 +303,7 @@ namespace GameMenuBar {
|
|||||||
|
|
||||||
if (ImGui::BeginMenu("Enhancements"))
|
if (ImGui::BeginMenu("Enhancements"))
|
||||||
{
|
{
|
||||||
|
DrawPresetSelector(PRESET_TYPE_ENHANCEMENTS);
|
||||||
const char* enhancementPresets[4] = { "Default", "Vanilla Plus", "Enhanced", "Randomizer"};
|
|
||||||
UIWidgets::PaddedText("Enhancement Presets", false, true);
|
|
||||||
UIWidgets::EnhancementCombobox("gSelectEnhancementPresets", enhancementPresets, 4, 0);
|
|
||||||
UIWidgets::Tooltip(
|
|
||||||
"Default - Set all enhancements to their default values. The true vanilla SoH experience.\n"
|
|
||||||
"\n"
|
|
||||||
"Vanilla Plus - Adds Quality of Life features that enhance your experience, but don't alter gameplay. Recommended for a first playthrough of OoT.\n"
|
|
||||||
"\n"
|
|
||||||
"Enhanced - The \"Vanilla Plus\" preset, but with more quality of life enhancements that might alter gameplay slightly. Recommended for returning players.\n"
|
|
||||||
"\n"
|
|
||||||
"Randomizer - The \"Enhanced\" preset, plus any other enhancements that are recommended for playing Randomizer."
|
|
||||||
);
|
|
||||||
|
|
||||||
UIWidgets::Spacer(0);
|
|
||||||
|
|
||||||
ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(6.0f, 4.0f));
|
|
||||||
if (ImGui::Button("Apply Preset")) {
|
|
||||||
applyEnhancementPresets();
|
|
||||||
SohImGui::RequestCvarSaveOnNextTick();
|
|
||||||
}
|
|
||||||
ImGui::PopStyleVar(1);
|
|
||||||
|
|
||||||
UIWidgets::Spacer(0);
|
UIWidgets::Spacer(0);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user