Various changes

Moved to enhancements menu, under gameplay and items. Added LINK_IS_ADULT. Added update to use in sohmenubar.
This commit is contained in:
Patrick12115 2024-01-30 18:16:21 -05:00
parent 37fe1a5857
commit 1fb4db8707
4 changed files with 32 additions and 23 deletions

View File

@ -711,6 +711,18 @@ void RegisterPatchChildHylianShieldHandler() {
UpdatePatchChildHylianShield();
});
}
void UpdateChildHylianShieldState() {
auto player = GET_PLAYER(gPlayState);
Player_SetModels(player, Player_ActionToModelGroup(player, player->heldItemAction));
}
void RegisterChildHylianShielStatedHandler() {
GameInteractor::Instance->RegisterGameHook<GameInteractor::OnSceneInit>([](int32_t sceneNum) {
UpdateChildHylianShieldState();
});
}
f32 triforcePieceScale;
void RegisterTriforceHunt() {

View File

@ -13,6 +13,7 @@ void PatchToTMedallions();
void UpdatePermanentHeartLossState();
void InitMods();
void UpdatePatchChildHylianShield();
void UpdateChildHylianShieldState();
#ifdef __cplusplus
}

View File

@ -34,8 +34,6 @@
#include "Enhancements/randomizer/randomizer_item_tracker.h"
#include "Enhancements/randomizer/randomizer_settings_window.h"
#include "Enhancements/resolution-editor/ResolutionEditor.h"
#include "functions.h"
#include "macros.h"
extern bool ToggleAltAssetsAtEndOfFrame;
extern bool isBetaQuestEnabled;
@ -669,6 +667,20 @@ void DrawEnhancementsMenu() {
}
}
UIWidgets::Tooltip("Allows strength to be toggled on and off by pressing A on the strength upgrade in the equipment subscreen of the pause menu (This allows performing some glitches that require the player to not have strength).");
if (UIWidgets::PaddedEnhancementCheckbox("Hold Hylian Shield as Child Link", "gChildHoldsHylianShield", true, false)) {
if (CVarGetInteger("gChildHoldsHylianShield", 0) == 0) {
CVarSetInteger("gRotateScaleChildHylianShield", 0);
}
UpdateChildHylianShieldState();
}
UIWidgets::Tooltip("Allows Child Link to hold the Hylian Shield the same way as the rest of the shields.");
if (CVarGetInteger("gChildHoldsHylianShield", 0) == 1) {
if (UIWidgets::PaddedEnhancementCheckbox("Rotate and Scale Child Hylian Shield", "gRotateScaleChildHylianShield", true, false)) {
UpdateChildHylianShieldState();
UpdatePatchChildHylianShield();
}
}
UIWidgets::Tooltip("Rotates and scales the hylian shield for Child Link, so that it is the same orientation as the other shields. May not work properly with some mods.");
ImGui::EndMenu();
}
@ -1339,22 +1351,6 @@ void DrawCheatsMenu() {
UIWidgets::Tooltip("Prevents the Deku Shield from burning on contact with fire");
UIWidgets::PaddedEnhancementCheckbox("Shield with Two-Handed Weapons", "gShieldTwoHanded", true, false);
UIWidgets::Tooltip("This allows you to put up your shield with any two-handed weapon in hand except for Deku Sticks");
if (UIWidgets::PaddedEnhancementCheckbox("Hold Hylian Shield as Child Link", "gChildHoldsHylianShield", true, false)) {
if (CVarGetInteger("gChildHoldsHylianShield", 0) == 0) {
CVarSetInteger("gRotateScaleChildHylianShield", 0);
}
auto player = GET_PLAYER(gPlayState);
Player_SetModels(player, Player_ActionToModelGroup(player, player->heldItemAction));
}
UIWidgets::Tooltip("Allows Child Link to hold the Hylian Shield the same way as the rest of the shields.");
if (CVarGetInteger("gChildHoldsHylianShield", 0) == 1) {
if (UIWidgets::PaddedEnhancementCheckbox("Rotate and Scale Child Hylian Shield", "gRotateScaleChildHylianShield", true, false)) {
auto player = GET_PLAYER(gPlayState);
Player_SetModels(player, Player_ActionToModelGroup(player, player->heldItemAction));
UpdatePatchChildHylianShield();
}
}
UIWidgets::Tooltip("Rotates and scales the hylian shield for Child Link, so that it is the same orientation as the other shields. May not work properly with some mods.");
UIWidgets::Spacer(2.0f);
ImGui::Text("Deku Sticks:");
UIWidgets::EnhancementCombobox("gDekuStickCheat", DekuStickCheat, DEKU_STICK_NORMAL);

View File

@ -581,7 +581,7 @@ s32 func_8008E9C4(Player* this) {
s32 Player_IsChildWithHylianShield(Player* this) {
if (CVarGetInteger("gChildHoldsHylianShield", 0)) {
return 0;
return false; // Skip vanilla check for making child Link have the Hylian Shield on his back, allowing for it to be used in hand
} else {
return gSaveContext.linkAge != 0 && (this->currentShield == PLAYER_SHIELD_HYLIAN);
}
@ -605,7 +605,7 @@ void Player_SetModelsForHoldingShield(Player* this) {
!Player_HoldsTwoHandedWeapon(this)) && !Player_IsChildWithHylianShield(this)) {
this->rightHandType = PLAYER_MODELTYPE_RH_SHIELD;
if (LINK_IS_CHILD && (CVarGetInteger("gChildHoldsHylianShield", 0)) && (this->currentShield == PLAYER_SHIELD_HYLIAN)) {
this->rightHandDLists = &sPlayerDListGroups[PLAYER_MODELTYPE_RH_SHIELD][0];
this->rightHandDLists = &sPlayerDListGroups[PLAYER_MODELTYPE_RH_SHIELD][LINK_AGE_ADULT];
} else {
this->rightHandDLists = &sPlayerDListGroups[PLAYER_MODELTYPE_RH_SHIELD][gSaveContext.linkAge];
}
@ -632,7 +632,7 @@ void Player_SetModels(Player* this, s32 modelGroup) {
if (LINK_IS_CHILD && CVarGetInteger("gChildHoldsHylianShield", 0) &&
this->rightHandType == PLAYER_MODELTYPE_RH_SHIELD && this->currentShield == PLAYER_SHIELD_HYLIAN) {
this->rightHandDLists = &sPlayerDListGroups[this->rightHandType][0];
this->rightHandDLists = &sPlayerDListGroups[this->rightHandType][LINK_AGE_ADULT];
}
if (CVarGetInteger("gBowSlingShotAmmoFix", 0) && this->rightHandType == 11) { // If holding Bow/Slingshot
this->rightHandDLists = &sPlayerDListGroups[this->rightHandType][Player_HoldsSlingshot(this)];
@ -645,7 +645,7 @@ void Player_SetModels(Player* this, s32 modelGroup) {
if (CVarGetInteger("gRotateScaleChildHylianShield", 0)) {
if (LINK_IS_CHILD && this->sheathType == PLAYER_MODELTYPE_SHEATH_18 && this->currentShield == PLAYER_SHIELD_HYLIAN &&
((gSaveContext.equips.buttonItems[0] == ITEM_SWORD_KOKIRI || gSaveContext.equips.buttonItems[0] == ITEM_NONE || gSaveContext.equips.buttonItems[0] == ITEM_STICK))) {
this->sheathDLists = &sPlayerDListGroups[this->sheathType][0];
this->sheathDLists = &sPlayerDListGroups[this->sheathType][LINK_AGE_ADULT];
}
}