First pass for shields, swords, and sheaths

This commit is contained in:
Patrick12115 2024-02-09 16:05:14 -05:00
parent be8dcfda05
commit 1533650969
4 changed files with 299 additions and 3 deletions

View File

@ -0,0 +1,99 @@
#ifndef OBJECTS_OBJECT_CUSTOM_H
#define OBJECTS_OBJECT_CUSTOM 1
#include "align_asset_macro.h"
// New Equipment System Basemodels
#define dgLinkBowDL "__OTR__objects/object_link_eq/gLinkBowDL"
static const ALIGN_ASSET(2) char gLinkBowDL[] = dgLinkBowDL;
#define dgLinkHammerDL "__OTR__objects/object_link_eq/gLinkHammerDL"
static const ALIGN_ASSET(2) char gLinkHammerDL[] = dgLinkHammerDL;
#define dgLinkHookshotDL "__OTR__objects/object_link_eq/gLinkHookshotDL"
static const ALIGN_ASSET(2) char gLinkHookshotDL[] = dgLinkHookshotDL;
#define dgLinkHookshotTipDL "__OTR__objects/object_link_eq/gLinkHookshotTipDL"
static const ALIGN_ASSET(2) char gLinkHookshotTipDL[] = dgLinkHookshotTipDL;
#define dgLinkHookshotSmallTipDL "__OTR__objects/object_link_eq/gLinkHookshotSmallTipDL"
static const ALIGN_ASSET(2) char gLinkHookshotSmallTipDL[] = dgLinkHookshotSmallTipDL;
#define dgLinkHookshotChainDL "__OTR__objects/object_link_eq/gLinkHookshotChainDL"
static const ALIGN_ASSET(2) char gLinkHookshotChainDL[] = dgLinkHookshotChainDL;
#define dgLinkHookshotSmallChainDL "__OTR__objects/object_link_eq/gLinkHookshotSmallChainDL"
static const ALIGN_ASSET(2) char gLinkHookshotSmallChainDL[] = dgLinkHookshotSmallChainDL;
#define dgLinkSlingshotDL "__OTR__objects/object_link_eq/gLinkSlingshotDL"
static const ALIGN_ASSET(2) char gLinkSlingshotDL[] = dgLinkSlingshotDL;
#define dgLinkFairyOcarinaDL "__OTR__objects/object_link_eq/gLinkFairyOcarinaDL"
static const ALIGN_ASSET(2) char gLinkFairyOcarinaDL[] = dgLinkFairyOcarinaDL;
#define dgLinkOcarinaOfTimeDL "__OTR__objects/object_link_eq/gLinkOcarinaOfTimeDL"
static const ALIGN_ASSET(2) char gLinkOcarinaOfTimeDL[] = dgLinkOcarinaOfTimeDL;
#define dgLinkBoomerangDL "__OTR__objects/object_link_eq/gLinkBoomerangDL"
static const ALIGN_ASSET(2) char gLinkBoomerangDL[] = dgLinkBoomerangDL;
#define dgLinkKokiriSwordDL "__OTR__objects/object_link_eq/gLinkKokiriSwordDL"
static const ALIGN_ASSET(2) char gLinkKokiriSwordDL[] = dgLinkKokiriSwordDL;
#define dgLinkKokiriSwordSheathDL "__OTR__objects/object_link_eq/gLinkKokiriSwordSheathDL"
static const ALIGN_ASSET(2) char gLinkKokiriSwordSheathDL[] = dgLinkKokiriSwordSheathDL;
#define dgLinkKokiriSwordInSheathDL "__OTR__objects/object_link_eq/gLinkKokiriSwordInSheathDL"
static const ALIGN_ASSET(2) char gLinkKokiriSwordInSheathDL[] = dgLinkKokiriSwordInSheathDL;
#define dgLinkMasterSwordDL "__OTR__objects/object_link_eq/gLinkMasterSwordDL"
static const ALIGN_ASSET(2) char gLinkMasterSwordDL[] = dgLinkMasterSwordDL;
#define dgLinkMasterSwordSheathDL "__OTR__objects/object_link_eq/gLinkMasterSwordSheathDL"
static const ALIGN_ASSET(2) char gLinkMasterSwordSheathDL[] = dgLinkMasterSwordSheathDL;
#define dgLinkMasterSwordInSheathDL "__OTR__objects/object_link_eq/gLinkMasterSwordInSheathDL"
static const ALIGN_ASSET(2) char gLinkMasterSwordInSheathDL[] = dgLinkMasterSwordInSheathDL;
#define dgLinkLongswordDL "__OTR__objects/object_link_eq/gLinkLongswordDL"
static const ALIGN_ASSET(2) char gLinkLongswordDL[] = dgLinkLongswordDL;
#define dgLinkBrokenLongswordDL "__OTR__objects/object_link_eq/gLinkBrokenLongswordDL"
static const ALIGN_ASSET(2) char gLinkBrokenLongswordDL[] = dgLinkBrokenLongswordDL;
#define dgLinkLongswordSheathDL "__OTR__objects/object_link_eq/gLinkLongswordSheathDL"
static const ALIGN_ASSET(2) char gLinkLongswordSheathDL[] = dgLinkLongswordSheathDL;
#define dgLinkLongswordInSheathDL "__OTR__objects/object_link_eq/gLinkLongswordInSheathDL"
static const ALIGN_ASSET(2) char gLinkLongswordInSheathDL[] = dgLinkLongswordInSheathDL;
#define dgLinkDekuShieldDL "__OTR__objects/object_link_eq/gLinkDekuShieldDL"
static const ALIGN_ASSET(2) char gLinkDekuShieldDL[] = dgLinkDekuShieldDL;
#define dgLinkDekuShieldOnBackDL "__OTR__objects/object_link_eq/gLinkDekuShieldOnBackDL"
static const ALIGN_ASSET(2) char gLinkDekuShieldOnBackDL[] = dgLinkDekuShieldOnBackDL;
#define dgLinkHylianShieldDL "__OTR__objects/object_link_eq/gLinkHylianShieldDL"
static const ALIGN_ASSET(2) char gLinkHylianShieldDL[] = dgLinkHylianShieldDL;
#define dgLinkHylianShieldOnBackDL "__OTR__objects/object_link_eq/gLinkHylianShieldOnBackDL"
static const ALIGN_ASSET(2) char gLinkHylianShieldOnBackDL[] = dgLinkHylianShieldOnBackDL;
#define dgLinkHylianShieldOnChildBackDL "__OTR__objects/object_link_eq/gLinkHylianShieldOnChildBackDL"
static const ALIGN_ASSET(2) char gLinkHylianShieldOnChildBackDL[] = dgLinkHylianShieldOnChildBackDL;
#define dgLinkMirrorShieldDL "__OTR__objects/object_link_eq/gLinkMirrorShieldDL"
static const ALIGN_ASSET(2) char gLinkMirrorShieldDL[] = dgLinkMirrorShieldDL;
#define dgLinkMirrorShieldOnBackDL "__OTR__objects/object_link_eq/gLinkMirrorShieldOnBackDL"
static const ALIGN_ASSET(2) char gLinkMirrorShieldOnBackDL[] = dgLinkMirrorShieldOnBackDL;
// Bottle
#define dgLinkBottleDL "__OTR__objects/object_link_eq/gLinkBottleDL"
static const ALIGN_ASSET(2) char gLinkBottleDL[] = dgLinkBottleDL;
#define dgLinkBottleContentsDL "__OTR__objects/object_link_eq/gLinkBottleContentsDL"
static const ALIGN_ASSET(2) char gLinkBottleContentsDL[] = dgLinkBottleContentsDL;
#endif // OBJECTS_OBJECT_CUSTOM_H

View File

@ -25,6 +25,7 @@
#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"
#include "objects/object_custom/object_custom.h"
extern "C" {
#include <z64.h>
@ -35,7 +36,9 @@ extern "C" {
#include "functions.h"
void ResourceMgr_PatchGfxByName(const char* path, const char* patchName, int index, Gfx instruction);
void ResourceMgr_UnpatchGfxByName(const char* path, const char* patchName);
uint8_t ResourceMgr_FileAltExists(const char* resName);
uint8_t ResourceGetIsCustomByName(const char* name);
uint8_t Player_IsCustomLinkModel();
extern SaveContext gSaveContext;
extern PlayState* gPlayState;
extern void Overlay_DisplayText(float duration, const char* text);
@ -690,7 +693,7 @@ void RegisterMirrorModeHandler() {
}
void UpdatePatchHand() {
if ((CVarGetInteger("gEnhancements.EquimentAlwaysVisible", 0)) && LINK_IS_CHILD) {
/*if ((CVarGetInteger("gEnhancements.EquimentAlwaysVisible", 0)) && LINK_IS_CHILD && (!Player_IsCustomLinkModel())) {
ResourceMgr_PatchGfxByName(gLinkAdultLeftHandHoldingHammerNearDL, "childHammer1", 92, gsSPDisplayListOTRFilePath(gLinkChildLeftFistNearDL));
ResourceMgr_PatchGfxByName(gLinkAdultLeftHandHoldingHammerNearDL, "childHammer2", 93, gsSPEndDisplayList());
ResourceMgr_PatchGfxByName(gLinkAdultRightHandHoldingHookshotNearDL, "childHookshot1", 84, gsSPDisplayListOTRFilePath(gLinkChildRightHandClosedNearDL));
@ -728,7 +731,7 @@ void UpdatePatchHand() {
ResourceMgr_UnpatchGfxByName(gLinkChildRightHandHoldingSlingshotNearDL, "adultSlingshot");
ResourceMgr_UnpatchGfxByName(gLinkChildLeftFistAndBoomerangNearDL, "adultBoomerang");
ResourceMgr_UnpatchGfxByName(gLinkChildRightFistAndDekuShieldNearDL, "adultDekuShield");
}
}*/
}
void RegisterPatchHandHandler() {
@ -737,6 +740,195 @@ void RegisterPatchHandHandler() {
});
}
void UpdatePatchCustomDlists() {
if (CVarGetInteger("gEnhancements.CustomDlists", 0)) {
if (ResourceGetIsCustomByName(gLinkMasterSwordDL)) {
ResourceMgr_PatchGfxByName(gLinkAdultLeftHandHoldingMasterSwordNearDL, "customDlist1", 0, gsSPDisplayListOTRFilePath(gLinkMasterSwordDL));
ResourceMgr_PatchGfxByName(gLinkAdultLeftHandHoldingMasterSwordNearDL, "customDlist2", 1, gsSPDisplayListOTRFilePath(gLinkAdultLeftHandClosedNearDL));
ResourceMgr_PatchGfxByName(gLinkAdultLeftHandHoldingMasterSwordNearDL, "customDlist3", 2, gsSPEndDisplayList());
} else {
ResourceMgr_UnpatchGfxByName(gLinkAdultLeftHandHoldingMasterSwordNearDL, "customDlist1");
ResourceMgr_UnpatchGfxByName(gLinkAdultLeftHandHoldingMasterSwordNearDL, "customDlist2");
ResourceMgr_UnpatchGfxByName(gLinkAdultLeftHandHoldingMasterSwordNearDL, "customDlist3");
}
if (ResourceGetIsCustomByName(gLinkHylianShieldDL)) {
ResourceMgr_PatchGfxByName(gLinkAdultRightHandHoldingHylianShieldNearDL, "customDlist4", 0, gsSPDisplayListOTRFilePath(gLinkHylianShieldDL));
ResourceMgr_PatchGfxByName(gLinkAdultRightHandHoldingHylianShieldNearDL, "customDlist5", 1, gsSPDisplayListOTRFilePath(gLinkAdultRightHandClosedNearDL));
ResourceMgr_PatchGfxByName(gLinkAdultRightHandHoldingHylianShieldNearDL, "customDlist6", 2, gsSPEndDisplayList());
} else {
ResourceMgr_UnpatchGfxByName(gLinkAdultRightHandHoldingHylianShieldNearDL, "customDlist4");
ResourceMgr_UnpatchGfxByName(gLinkAdultRightHandHoldingHylianShieldNearDL, "customDlist5");
ResourceMgr_UnpatchGfxByName(gLinkAdultRightHandHoldingHylianShieldNearDL, "customDlist6");
}
if (ResourceGetIsCustomByName(gLinkMasterSwordSheathDL)) {
ResourceMgr_PatchGfxByName(gLinkAdultSheathNearDL, "customDlist7", 0, gsSPDisplayListOTRFilePath(gLinkMasterSwordSheathDL));
ResourceMgr_PatchGfxByName(gLinkAdultSheathNearDL, "customDlist8", 1, gsSPEndDisplayList());
} else {
ResourceMgr_UnpatchGfxByName(gLinkAdultSheathNearDL, "customDlist7");
ResourceMgr_UnpatchGfxByName(gLinkAdultSheathNearDL, "customDlist8");
}
if (ResourceGetIsCustomByName(gLinkHylianShieldOnBackDL) && ResourceGetIsCustomByName(gLinkMasterSwordInSheathDL)) {
ResourceMgr_PatchGfxByName(gLinkAdultHylianShieldSwordAndSheathNearDL, "customDlist9", 0, gsSPDisplayListOTRFilePath(gLinkHylianShieldOnBackDL));
ResourceMgr_PatchGfxByName(gLinkAdultHylianShieldSwordAndSheathNearDL, "customDlist10", 1, gsSPDisplayListOTRFilePath(gLinkMasterSwordInSheathDL));
ResourceMgr_PatchGfxByName(gLinkAdultHylianShieldSwordAndSheathNearDL, "customDlist11", 2, gsSPEndDisplayList());
} else {
ResourceMgr_UnpatchGfxByName(gLinkAdultHylianShieldSwordAndSheathNearDL, "customDlist9");
ResourceMgr_UnpatchGfxByName(gLinkAdultHylianShieldSwordAndSheathNearDL, "customDlist10");
ResourceMgr_UnpatchGfxByName(gLinkAdultHylianShieldSwordAndSheathNearDL, "customDlist11");
}
if (ResourceGetIsCustomByName(gLinkMasterSwordInSheathDL)) {
ResourceMgr_PatchGfxByName(gLinkAdultMasterSwordAndSheathNearDL, "customDlist12", 0, gsSPDisplayListOTRFilePath(gLinkMasterSwordInSheathDL));
ResourceMgr_PatchGfxByName(gLinkAdultMasterSwordAndSheathNearDL, "customDlist13", 1, gsSPEndDisplayList());
} else {
ResourceMgr_UnpatchGfxByName(gLinkAdultMasterSwordAndSheathNearDL, "customDlist12");
ResourceMgr_UnpatchGfxByName(gLinkAdultMasterSwordAndSheathNearDL, "customDlist13");
}
if (ResourceGetIsCustomByName(gLinkHylianShieldOnBackDL) && ResourceGetIsCustomByName(gLinkMasterSwordSheathDL)) {
ResourceMgr_PatchGfxByName(gLinkAdultHylianShieldAndSheathNearDL, "customDlist14", 0, gsSPDisplayListOTRFilePath(gLinkMasterSwordSheathDL));
ResourceMgr_PatchGfxByName(gLinkAdultHylianShieldAndSheathNearDL, "customDlist15", 1, gsSPDisplayListOTRFilePath(gLinkHylianShieldOnBackDL));
ResourceMgr_PatchGfxByName(gLinkAdultHylianShieldAndSheathNearDL, "customDlist16", 2, gsSPEndDisplayList());
} else {
ResourceMgr_UnpatchGfxByName(gLinkAdultHylianShieldAndSheathNearDL, "customDlist14");
ResourceMgr_UnpatchGfxByName(gLinkAdultHylianShieldAndSheathNearDL, "customDlist15");
ResourceMgr_UnpatchGfxByName(gLinkAdultHylianShieldAndSheathNearDL, "customDlist16");
}
if (ResourceGetIsCustomByName(gLinkMirrorShieldDL)) {
ResourceMgr_PatchGfxByName(gLinkAdultRightHandHoldingMirrorShieldNearDL, "customDlist20", 0, gsSPDisplayListOTRFilePath(gLinkMirrorShieldDL));
ResourceMgr_PatchGfxByName(gLinkAdultRightHandHoldingMirrorShieldNearDL, "customDlist21", 1, gsSPDisplayListOTRFilePath(gLinkAdultRightHandClosedNearDL));
ResourceMgr_PatchGfxByName(gLinkAdultRightHandHoldingMirrorShieldNearDL, "customDlist22", 2, gsSPEndDisplayList());
} else {
ResourceMgr_UnpatchGfxByName(gLinkAdultRightHandHoldingMirrorShieldNearDL, "customDlist20");
ResourceMgr_UnpatchGfxByName(gLinkAdultRightHandHoldingMirrorShieldNearDL, "customDlist21");
ResourceMgr_UnpatchGfxByName(gLinkAdultRightHandHoldingMirrorShieldNearDL, "customDlist22");
}
if (ResourceGetIsCustomByName(gLinkMirrorShieldOnBackDL) && ResourceGetIsCustomByName(gLinkMasterSwordInSheathDL)) {
ResourceMgr_PatchGfxByName(gLinkAdultMirrorShieldSwordAndSheathNearDL, "customDlist23", 0, gsSPDisplayListOTRFilePath(gLinkMirrorShieldOnBackDL));
ResourceMgr_PatchGfxByName(gLinkAdultMirrorShieldSwordAndSheathNearDL, "customDlist24", 1, gsSPDisplayListOTRFilePath(gLinkMasterSwordInSheathDL));
ResourceMgr_PatchGfxByName(gLinkAdultMirrorShieldSwordAndSheathNearDL, "customDlist25", 2, gsSPEndDisplayList());
} else {
ResourceMgr_UnpatchGfxByName(gLinkAdultMirrorShieldSwordAndSheathNearDL, "customDlist23");
ResourceMgr_UnpatchGfxByName(gLinkAdultMirrorShieldSwordAndSheathNearDL, "customDlist24");
ResourceMgr_UnpatchGfxByName(gLinkAdultMirrorShieldSwordAndSheathNearDL, "customDlist25");
}
if (ResourceGetIsCustomByName(gLinkLongswordDL)) {
ResourceMgr_PatchGfxByName(gLinkAdultLeftHandHoldingBgsNearDL, "customDlist17", 0, gsSPDisplayListOTRFilePath(gLinkLongswordDL));
ResourceMgr_PatchGfxByName(gLinkAdultLeftHandHoldingBgsNearDL, "customDlist18", 1, gsSPDisplayListOTRFilePath(gLinkAdultLeftHandClosedNearDL));
ResourceMgr_PatchGfxByName(gLinkAdultLeftHandHoldingBgsNearDL, "customDlist19", 2, gsSPEndDisplayList());
} else {
ResourceMgr_UnpatchGfxByName(gLinkAdultLeftHandHoldingBgsNearDL, "customDlist17");
ResourceMgr_UnpatchGfxByName(gLinkAdultLeftHandHoldingBgsNearDL, "customDlist18");
ResourceMgr_UnpatchGfxByName(gLinkAdultLeftHandHoldingBgsNearDL, "customDlist19");
}
if (ResourceGetIsCustomByName(gLinkKokiriSwordDL)) {
ResourceMgr_PatchGfxByName(gLinkChildLeftFistAndKokiriSwordNearDL, "customDlist41", 0, gsSPDisplayListOTRFilePath(gLinkKokiriSwordDL));
ResourceMgr_PatchGfxByName(gLinkChildLeftFistAndKokiriSwordNearDL, "customDlist42", 1, gsSPDisplayListOTRFilePath(gLinkChildLeftFistNearDL));
ResourceMgr_PatchGfxByName(gLinkChildLeftFistAndKokiriSwordNearDL, "customDlist43", 2, gsSPEndDisplayList());
} else {
ResourceMgr_UnpatchGfxByName(gLinkChildLeftFistAndKokiriSwordNearDL, "customDlist41");
ResourceMgr_UnpatchGfxByName(gLinkChildLeftFistAndKokiriSwordNearDL, "customDlist42");
ResourceMgr_UnpatchGfxByName(gLinkChildLeftFistAndKokiriSwordNearDL, "customDlist43");
}
if (ResourceGetIsCustomByName(gLinkDekuShieldDL)) {
ResourceMgr_PatchGfxByName(gLinkChildRightFistAndDekuShieldNearDL, "customDlist44", 0, gsSPDisplayListOTRFilePath(gLinkDekuShieldDL));
ResourceMgr_PatchGfxByName(gLinkChildRightFistAndDekuShieldNearDL, "customDlist45", 1, gsSPDisplayListOTRFilePath(gLinkChildRightHandClosedNearDL));
ResourceMgr_PatchGfxByName(gLinkChildRightFistAndDekuShieldNearDL, "customDlist46", 2, gsSPEndDisplayList());
} else {
ResourceMgr_UnpatchGfxByName(gLinkChildRightFistAndDekuShieldNearDL, "customDlist44");
ResourceMgr_UnpatchGfxByName(gLinkChildRightFistAndDekuShieldNearDL, "customDlist45");
ResourceMgr_UnpatchGfxByName(gLinkChildRightFistAndDekuShieldNearDL, "customDlist46");
}
if (ResourceGetIsCustomByName(gLinkKokiriSwordSheathDL)) {
ResourceMgr_PatchGfxByName(gLinkChildSheathNearDL, "customDlist47", 0, gsSPDisplayListOTRFilePath(gLinkKokiriSwordSheathDL));
ResourceMgr_PatchGfxByName(gLinkChildSheathNearDL, "customDlist48", 1, gsSPEndDisplayList());
} else {
ResourceMgr_UnpatchGfxByName(gLinkChildSheathNearDL, "customDlist47");
ResourceMgr_UnpatchGfxByName(gLinkChildSheathNearDL, "customDlist48");
}
if (ResourceGetIsCustomByName(gLinkKokiriSwordInSheathDL)) {
ResourceMgr_PatchGfxByName(gLinkChildSwordAndSheathNearDL, "customDlist55", 0, gsSPDisplayListOTRFilePath(gLinkKokiriSwordInSheathDL));
ResourceMgr_PatchGfxByName(gLinkChildSwordAndSheathNearDL, "customDlist56", 1, gsSPEndDisplayList());
} else {
ResourceMgr_UnpatchGfxByName(gLinkChildSwordAndSheathNearDL, "customDlist55");
ResourceMgr_UnpatchGfxByName(gLinkChildSwordAndSheathNearDL, "customDlist56");
}
if (ResourceGetIsCustomByName(gLinkKokiriSwordInSheathDL) && ResourceGetIsCustomByName(gLinkDekuShieldOnBackDL)) {
ResourceMgr_PatchGfxByName(gLinkChildDekuShieldSwordAndSheathNearDL, "customDlist49", 0, gsSPDisplayListOTRFilePath(gLinkDekuShieldOnBackDL));
ResourceMgr_PatchGfxByName(gLinkChildDekuShieldSwordAndSheathNearDL, "customDlist50", 1, gsSPDisplayListOTRFilePath(gLinkKokiriSwordInSheathDL));
ResourceMgr_PatchGfxByName(gLinkChildDekuShieldSwordAndSheathNearDL, "customDlist51", 2, gsSPEndDisplayList());
} else {
ResourceMgr_UnpatchGfxByName(gLinkChildDekuShieldSwordAndSheathNearDL, "customDlist49");
ResourceMgr_UnpatchGfxByName(gLinkChildDekuShieldSwordAndSheathNearDL, "customDlist50");
ResourceMgr_UnpatchGfxByName(gLinkChildDekuShieldSwordAndSheathNearDL, "customDlist51");
}
if (ResourceGetIsCustomByName(gLinkDekuShieldOnBackDL) && ResourceGetIsCustomByName(gLinkKokiriSwordSheathDL)) {
ResourceMgr_PatchGfxByName(gLinkChildDekuShieldAndSheathNearDL, "customDlist52", 0, gsSPDisplayListOTRFilePath(gLinkKokiriSwordSheathDL));
ResourceMgr_PatchGfxByName(gLinkChildDekuShieldAndSheathNearDL, "customDlist53", 1, gsSPDisplayListOTRFilePath(gLinkDekuShieldOnBackDL));
ResourceMgr_PatchGfxByName(gLinkChildDekuShieldAndSheathNearDL, "customDlist54", 2, gsSPEndDisplayList());
} else {
ResourceMgr_UnpatchGfxByName(gLinkChildDekuShieldAndSheathNearDL, "customDlist52");
ResourceMgr_UnpatchGfxByName(gLinkChildDekuShieldAndSheathNearDL, "customDlist53");
ResourceMgr_UnpatchGfxByName(gLinkChildDekuShieldAndSheathNearDL, "customDlist54");
}
if (gSaveContext.equips.buttonItems[0] == ITEM_SWORD_BGS) {
if (ResourceGetIsCustomByName(gLinkLongswordSheathDL)) {
ResourceMgr_PatchGfxByName(gLinkAdultSheathNearDL, "customDlist7", 0, gsSPDisplayListOTRFilePath(gLinkLongswordSheathDL));
ResourceMgr_PatchGfxByName(gLinkAdultSheathNearDL, "customDlist8", 1, gsSPEndDisplayList());
} else {
ResourceMgr_UnpatchGfxByName(gLinkAdultSheathNearDL, "customDlist7");
ResourceMgr_UnpatchGfxByName(gLinkAdultSheathNearDL, "customDlist8");
}
if (ResourceGetIsCustomByName(gLinkLongswordInSheathDL) && ResourceGetIsCustomByName(gLinkHylianShieldOnBackDL)) {
ResourceMgr_PatchGfxByName(gLinkAdultHylianShieldSwordAndSheathNearDL, "customDlist9", 0, gsSPDisplayListOTRFilePath(gLinkHylianShieldOnBackDL));
ResourceMgr_PatchGfxByName(gLinkAdultHylianShieldSwordAndSheathNearDL, "customDlist10", 1, gsSPDisplayListOTRFilePath(gLinkLongswordInSheathDL));
ResourceMgr_PatchGfxByName(gLinkAdultHylianShieldSwordAndSheathNearDL, "customDlist11", 2, gsSPEndDisplayList());
} else {
ResourceMgr_UnpatchGfxByName(gLinkAdultHylianShieldSwordAndSheathNearDL, "customDlist9");
ResourceMgr_UnpatchGfxByName(gLinkAdultHylianShieldSwordAndSheathNearDL, "customDlist10");
ResourceMgr_UnpatchGfxByName(gLinkAdultHylianShieldSwordAndSheathNearDL, "customDlist11");
}
if (ResourceGetIsCustomByName(gLinkLongswordInSheathDL)) {
ResourceMgr_PatchGfxByName(gLinkAdultMasterSwordAndSheathNearDL, "customDlist12", 0, gsSPDisplayListOTRFilePath(gLinkLongswordInSheathDL));
ResourceMgr_PatchGfxByName(gLinkAdultMasterSwordAndSheathNearDL, "customDlist13", 1, gsSPEndDisplayList());
} else {
ResourceMgr_UnpatchGfxByName(gLinkAdultMasterSwordAndSheathNearDL, "customDlist12");
ResourceMgr_UnpatchGfxByName(gLinkAdultMasterSwordAndSheathNearDL, "customDlist13");
}
if (ResourceGetIsCustomByName(gLinkLongswordSheathDL) && ResourceGetIsCustomByName(gLinkHylianShieldOnBackDL)) {
ResourceMgr_PatchGfxByName(gLinkAdultHylianShieldAndSheathNearDL, "customDlist14", 0, gsSPDisplayListOTRFilePath(gLinkLongswordSheathDL));
ResourceMgr_PatchGfxByName(gLinkAdultHylianShieldAndSheathNearDL, "customDlist15", 1, gsSPDisplayListOTRFilePath(gLinkHylianShieldOnBackDL));
ResourceMgr_PatchGfxByName(gLinkAdultHylianShieldAndSheathNearDL, "customDlist16", 2, gsSPEndDisplayList());
} else {
ResourceMgr_UnpatchGfxByName(gLinkAdultHylianShieldAndSheathNearDL, "customDlist14");
ResourceMgr_UnpatchGfxByName(gLinkAdultHylianShieldAndSheathNearDL, "customDlist15");
ResourceMgr_UnpatchGfxByName(gLinkAdultHylianShieldAndSheathNearDL, "customDlist16");
}
if (ResourceGetIsCustomByName(gLinkLongswordInSheathDL) && ResourceGetIsCustomByName(gLinkMirrorShieldOnBackDL)) {
ResourceMgr_PatchGfxByName(gLinkAdultMirrorShieldSwordAndSheathNearDL, "customDlist33", 0, gsSPDisplayListOTRFilePath(gLinkMirrorShieldOnBackDL));
ResourceMgr_PatchGfxByName(gLinkAdultMirrorShieldSwordAndSheathNearDL, "customDlist34", 1, gsSPDisplayListOTRFilePath(gLinkLongswordInSheathDL));
ResourceMgr_PatchGfxByName(gLinkAdultMirrorShieldSwordAndSheathNearDL, "customDlist35", 2, gsSPEndDisplayList());
} else {
ResourceMgr_UnpatchGfxByName(gLinkAdultMirrorShieldSwordAndSheathNearDL, "customDlist33");
ResourceMgr_UnpatchGfxByName(gLinkAdultMirrorShieldSwordAndSheathNearDL, "customDlist34");
ResourceMgr_UnpatchGfxByName(gLinkAdultMirrorShieldSwordAndSheathNearDL, "customDlist35");
}
if (ResourceGetIsCustomByName(gLinkLongswordSheathDL) && ResourceGetIsCustomByName(gLinkMirrorShieldOnBackDL)) {
ResourceMgr_PatchGfxByName(gLinkAdultMirrorShieldAndSheathNearDL, "customDlist38", 0, gsSPDisplayListOTRFilePath(gLinkLongswordSheathDL));
ResourceMgr_PatchGfxByName(gLinkAdultMirrorShieldAndSheathNearDL, "customDlist39", 1, gsSPDisplayListOTRFilePath(gLinkMirrorShieldOnBackDL));
ResourceMgr_PatchGfxByName(gLinkAdultMirrorShieldAndSheathNearDL, "customDlist40", 2, gsSPEndDisplayList());
} else {
ResourceMgr_UnpatchGfxByName(gLinkAdultMirrorShieldAndSheathNearDL, "customDlist38");
ResourceMgr_UnpatchGfxByName(gLinkAdultMirrorShieldAndSheathNearDL, "customDlist39");
ResourceMgr_UnpatchGfxByName(gLinkAdultMirrorShieldAndSheathNearDL, "customDlist40");
}
}
}
}
void RegisterPatchCustomDlistsHandler() {
GameInteractor::Instance->RegisterGameHook<GameInteractor::OnGameFrameUpdate>([]() {
UpdatePatchCustomDlists(); });
}
void RegisterResetNaviTimer() {
GameInteractor::Instance->RegisterGameHook<GameInteractor::OnSceneInit>([](int32_t sceneNum) {
if (CVarGetInteger("gEnhancements.ResetNaviTimer", 0)) {
@ -1340,4 +1532,5 @@ void InitMods() {
NameTag_RegisterHooks();
RegisterPatchHandHandler();
RegisterHurtContainerModeHandler();
RegisterPatchCustomDlistsHandler();
}

View File

@ -14,6 +14,7 @@ void PatchToTMedallions();
void UpdatePermanentHeartLossState();
void InitMods();
void UpdatePatchHand();
void UpdatePatchCustomDlists();
#ifdef __cplusplus
}

View File

@ -1114,6 +1114,9 @@ void DrawEnhancementsMenu() {
UIWidgets::PaddedEnhancementCheckbox("Scale Adult Equipment as Child", "gEnhancements.ScaleAdultEquimentAsChild", true, false);
UIWidgets::Tooltip("Scales all of the Adult Equipment, as well and moving some a bit, to fit on Child Link Better. May not work properly with some mods.");
}
if (UIWidgets::PaddedEnhancementCheckbox("Show Custom Equipment", "gEnhancements.CustomDlists", true, false)) {
UpdatePatchCustomDlists();
}
UIWidgets::PaddedEnhancementCheckbox("N64 Mode", "gLowResMode", true, false);
UIWidgets::Tooltip("Sets aspect ratio to 4:3 and lowers resolution to 240p, the N64's native resolution");
UIWidgets::PaddedEnhancementCheckbox("Glitch line-up tick", "gDrawLineupTick", true, false);