mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2024-10-31 23:55:06 -04:00
Moved to own branch
This commit is contained in:
parent
3e91d5565a
commit
417b434738
@ -23,6 +23,8 @@
|
|||||||
#include "src/overlays/actors/ovl_En_Tp/z_en_tp.h"
|
#include "src/overlays/actors/ovl_En_Tp/z_en_tp.h"
|
||||||
#include "src/overlays/actors/ovl_En_Firefly/z_en_firefly.h"
|
#include "src/overlays/actors/ovl_En_Firefly/z_en_firefly.h"
|
||||||
#include "src/overlays/actors/ovl_En_Xc/z_en_xc.h"
|
#include "src/overlays/actors/ovl_En_Xc/z_en_xc.h"
|
||||||
|
#include "objects/object_link_boy/object_link_boy.h"
|
||||||
|
#include "objects/object_link_child/object_link_child.h"
|
||||||
|
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#include <z64.h>
|
#include <z64.h>
|
||||||
@ -687,6 +689,28 @@ void RegisterMirrorModeHandler() {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void RegisterPatchChildHylianSHieldHandler() {
|
||||||
|
GameInteractor::Instance->RegisterGameHook<GameInteractor::OnGameFrameUpdate>([]() {
|
||||||
|
if ((CVarGetInteger("gRotateScaleChildHylianShield", 0) && LINK_IS_CHILD) &&
|
||||||
|
(gSaveContext.equips.buttonItems[0] == ITEM_SWORD_KOKIRI)) {
|
||||||
|
ResourceMgr_PatchGfxByName(gLinkAdultHylianShieldSwordAndSheathNearDL, "childHylianShield1", 82,
|
||||||
|
gsSPDisplayListOTRFilePath(gLinkChildSwordAndSheathNearDL));
|
||||||
|
ResourceMgr_PatchGfxByName(gLinkAdultHylianShieldSwordAndSheathNearDL, "childHylianShield2", 83,
|
||||||
|
gsSPEndDisplayList());
|
||||||
|
} else {
|
||||||
|
ResourceMgr_UnpatchGfxByName(gLinkAdultHylianShieldSwordAndSheathNearDL, "childHylianShield1");
|
||||||
|
ResourceMgr_UnpatchGfxByName(gLinkAdultHylianShieldSwordAndSheathNearDL, "childHylianShield2");
|
||||||
|
}
|
||||||
|
if ((CVarGetInteger("gRotateScaleChildHylianShield", 0) && LINK_IS_CHILD) &&
|
||||||
|
(gSaveContext.equips.buttonItems[0] == ITEM_NONE || gSaveContext.equips.buttonItems[0] == ITEM_STICK)) {
|
||||||
|
ResourceMgr_PatchGfxByName(gLinkAdultHylianShieldSwordAndSheathNearDL, "childHylianShield3", 82,
|
||||||
|
gsSPEndDisplayList());
|
||||||
|
} else {
|
||||||
|
ResourceMgr_UnpatchGfxByName(gLinkAdultHylianShieldSwordAndSheathNearDL, "childHylianShield3");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
f32 triforcePieceScale;
|
f32 triforcePieceScale;
|
||||||
|
|
||||||
void RegisterTriforceHunt() {
|
void RegisterTriforceHunt() {
|
||||||
|
@ -1337,6 +1337,12 @@ void DrawCheatsMenu() {
|
|||||||
UIWidgets::Tooltip("Prevents the Deku Shield from burning on contact with fire");
|
UIWidgets::Tooltip("Prevents the Deku Shield from burning on contact with fire");
|
||||||
UIWidgets::PaddedEnhancementCheckbox("Shield with Two-Handed Weapons", "gShieldTwoHanded", true, false);
|
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");
|
UIWidgets::Tooltip("This allows you to put up your shield with any two-handed weapon in hand except for Deku Sticks");
|
||||||
|
UIWidgets::PaddedEnhancementCheckbox("Hold Hylian Shield as Child Link", "gChildHoldsHylianShield", true, false);
|
||||||
|
UIWidgets::Tooltip("Allows Child Link to hold the Hylian Shield the same way as the rest of the shields.");
|
||||||
|
if (CVarGetInteger("gChildHoldsHylianShield", 0) == 1) {
|
||||||
|
UIWidgets::PaddedEnhancementCheckbox("Rotate and Scale Child Hylian Shield", "gRotateScaleChildHylianShield", true, false);
|
||||||
|
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);
|
UIWidgets::Spacer(2.0f);
|
||||||
ImGui::Text("Deku Sticks:");
|
ImGui::Text("Deku Sticks:");
|
||||||
UIWidgets::EnhancementCombobox("gDekuStickCheat", DekuStickCheat, DEKU_STICK_NORMAL);
|
UIWidgets::EnhancementCombobox("gDekuStickCheat", DekuStickCheat, DEKU_STICK_NORMAL);
|
||||||
|
@ -580,7 +580,11 @@ s32 func_8008E9C4(Player* this) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
s32 Player_IsChildWithHylianShield(Player* this) {
|
s32 Player_IsChildWithHylianShield(Player* this) {
|
||||||
return gSaveContext.linkAge != 0 && (this->currentShield == PLAYER_SHIELD_HYLIAN);
|
if (CVarGetInteger("gChildHoldsHylianShield", 0)) {
|
||||||
|
return 0;
|
||||||
|
} else {
|
||||||
|
return gSaveContext.linkAge != 0 && (this->currentShield == PLAYER_SHIELD_HYLIAN);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
s32 Player_ActionToModelGroup(Player* this, s32 actionParam) {
|
s32 Player_ActionToModelGroup(Player* this, s32 actionParam) {
|
||||||
@ -600,7 +604,11 @@ void Player_SetModelsForHoldingShield(Player* this) {
|
|||||||
if ((CVarGetInteger("gShieldTwoHanded", 0) && (this->heldItemAction != PLAYER_IA_DEKU_STICK) ||
|
if ((CVarGetInteger("gShieldTwoHanded", 0) && (this->heldItemAction != PLAYER_IA_DEKU_STICK) ||
|
||||||
!Player_HoldsTwoHandedWeapon(this)) && !Player_IsChildWithHylianShield(this)) {
|
!Player_HoldsTwoHandedWeapon(this)) && !Player_IsChildWithHylianShield(this)) {
|
||||||
this->rightHandType = PLAYER_MODELTYPE_RH_SHIELD;
|
this->rightHandType = PLAYER_MODELTYPE_RH_SHIELD;
|
||||||
this->rightHandDLists = &sPlayerDListGroups[PLAYER_MODELTYPE_RH_SHIELD][gSaveContext.linkAge];
|
if (LINK_IS_CHILD && (CVarGetInteger("gChildHoldsHylianShield", 0)) && (this->currentShield == PLAYER_SHIELD_HYLIAN)) {
|
||||||
|
this->rightHandDLists = &sPlayerDListGroups[PLAYER_MODELTYPE_RH_SHIELD][0];
|
||||||
|
} else {
|
||||||
|
this->rightHandDLists = &sPlayerDListGroups[PLAYER_MODELTYPE_RH_SHIELD][gSaveContext.linkAge];
|
||||||
|
}
|
||||||
if (this->sheathType == PLAYER_MODELTYPE_SHEATH_18) {
|
if (this->sheathType == PLAYER_MODELTYPE_SHEATH_18) {
|
||||||
this->sheathType = PLAYER_MODELTYPE_SHEATH_16;
|
this->sheathType = PLAYER_MODELTYPE_SHEATH_16;
|
||||||
} else if (this->sheathType == PLAYER_MODELTYPE_SHEATH_19) {
|
} else if (this->sheathType == PLAYER_MODELTYPE_SHEATH_19) {
|
||||||
@ -622,6 +630,10 @@ void Player_SetModels(Player* this, s32 modelGroup) {
|
|||||||
this->rightHandType = gPlayerModelTypes[modelGroup][PLAYER_MODELGROUPENTRY_RIGHT_HAND];
|
this->rightHandType = gPlayerModelTypes[modelGroup][PLAYER_MODELGROUPENTRY_RIGHT_HAND];
|
||||||
this->rightHandDLists = &sPlayerDListGroups[this->rightHandType][gSaveContext.linkAge];
|
this->rightHandDLists = &sPlayerDListGroups[this->rightHandType][gSaveContext.linkAge];
|
||||||
|
|
||||||
|
if (LINK_IS_CHILD && CVarGetInteger("gChildHoldsHylianShield", 0) &&
|
||||||
|
this->rightHandType == PLAYER_MODELTYPE_RH_SHIELD && this->currentShield == PLAYER_SHIELD_HYLIAN) {
|
||||||
|
this->rightHandDLists = &sPlayerDListGroups[this->rightHandType][0];
|
||||||
|
}
|
||||||
if (CVarGetInteger("gBowSlingShotAmmoFix", 0) && this->rightHandType == 11) { // If holding Bow/Slingshot
|
if (CVarGetInteger("gBowSlingShotAmmoFix", 0) && this->rightHandType == 11) { // If holding Bow/Slingshot
|
||||||
this->rightHandDLists = &sPlayerDListGroups[this->rightHandType][Player_HoldsSlingshot(this)];
|
this->rightHandDLists = &sPlayerDListGroups[this->rightHandType][Player_HoldsSlingshot(this)];
|
||||||
}
|
}
|
||||||
@ -630,6 +642,13 @@ void Player_SetModels(Player* this, s32 modelGroup) {
|
|||||||
this->sheathType = gPlayerModelTypes[modelGroup][PLAYER_MODELGROUPENTRY_SHEATH];
|
this->sheathType = gPlayerModelTypes[modelGroup][PLAYER_MODELGROUPENTRY_SHEATH];
|
||||||
this->sheathDLists = &sPlayerDListGroups[this->sheathType][gSaveContext.linkAge];
|
this->sheathDLists = &sPlayerDListGroups[this->sheathType][gSaveContext.linkAge];
|
||||||
|
|
||||||
|
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];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Waist
|
// Waist
|
||||||
this->waistDLists = &sPlayerDListGroups[gPlayerModelTypes[modelGroup][4]][gSaveContext.linkAge];
|
this->waistDLists = &sPlayerDListGroups[gPlayerModelTypes[modelGroup][4]][gSaveContext.linkAge];
|
||||||
|
|
||||||
@ -1188,6 +1207,27 @@ void func_8008F87C(PlayState* play, Player* this, SkelAnime* skelAnime, Vec3f* p
|
|||||||
s32 Player_OverrideLimbDrawGameplayCommon(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, void* thisx) {
|
s32 Player_OverrideLimbDrawGameplayCommon(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, void* thisx) {
|
||||||
Player* this = (Player*)thisx;
|
Player* this = (Player*)thisx;
|
||||||
|
|
||||||
|
if (CVarGetInteger("gChildHoldsHylianShield", 0) && CVarGetInteger("gRotateScaleChildHylianShield", 0) &&
|
||||||
|
LINK_IS_CHILD) {
|
||||||
|
if (limbIndex == PLAYER_LIMB_SHEATH) {
|
||||||
|
if ((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->sheathType == PLAYER_MODELTYPE_SHEATH_18) ||
|
||||||
|
(this->sheathType == PLAYER_MODELTYPE_SHEATH_19))) {
|
||||||
|
Matrix_Translate(218, 0, 62, MTXMODE_APPLY);
|
||||||
|
Matrix_Scale(0.8, 0.8, 0.8, MTXMODE_APPLY);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (limbIndex == PLAYER_LIMB_R_HAND) {
|
||||||
|
if (this->currentShield == PLAYER_SHIELD_HYLIAN && sRightHandType == PLAYER_MODELTYPE_RH_SHIELD &&
|
||||||
|
gSaveContext.equips.buttonItems[0] == ITEM_SWORD_KOKIRI) {
|
||||||
|
Matrix_Scale(0.8, 0.8, 0.8, MTXMODE_APPLY);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (limbIndex == PLAYER_LIMB_ROOT) {
|
if (limbIndex == PLAYER_LIMB_ROOT) {
|
||||||
sLeftHandType = this->leftHandType;
|
sLeftHandType = this->leftHandType;
|
||||||
sRightHandType = this->rightHandType;
|
sRightHandType = this->rightHandType;
|
||||||
|
Loading…
Reference in New Issue
Block a user