diff --git a/soh/assets/custom/objects/object_keyring/gKeyringKeyDL b/soh/assets/custom/objects/object_keyring/gKeyringKeyDL new file mode 100644 index 0000000000..0cc3dfcc16 --- /dev/null +++ b/soh/assets/custom/objects/object_keyring/gKeyringKeyDL @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_keyring/gKeyringKeyDL_vtx_0 b/soh/assets/custom/objects/object_keyring/gKeyringKeyDL_vtx_0 new file mode 100644 index 0000000000..9efa589586 --- /dev/null +++ b/soh/assets/custom/objects/object_keyring/gKeyringKeyDL_vtx_0 @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_keyring/gKeyringKeysBottomoftheWellDL b/soh/assets/custom/objects/object_keyring/gKeyringKeysBottomoftheWellDL deleted file mode 100644 index 236fa6cfdd..0000000000 --- a/soh/assets/custom/objects/object_keyring/gKeyringKeysBottomoftheWellDL +++ /dev/null @@ -1,181 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/soh/assets/custom/objects/object_keyring/gKeyringKeysBottomoftheWellDL_vtx_0 b/soh/assets/custom/objects/object_keyring/gKeyringKeysBottomoftheWellDL_vtx_0 deleted file mode 100644 index 7a635969a7..0000000000 --- a/soh/assets/custom/objects/object_keyring/gKeyringKeysBottomoftheWellDL_vtx_0 +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/soh/assets/custom/objects/object_keyring/gKeyringKeysBottomoftheWellMQDL b/soh/assets/custom/objects/object_keyring/gKeyringKeysBottomoftheWellMQDL deleted file mode 100644 index 956780ea82..0000000000 --- a/soh/assets/custom/objects/object_keyring/gKeyringKeysBottomoftheWellMQDL +++ /dev/null @@ -1,265 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/soh/assets/custom/objects/object_keyring/gKeyringKeysBottomoftheWellMQDL_vtx_0 b/soh/assets/custom/objects/object_keyring/gKeyringKeysBottomoftheWellMQDL_vtx_0 deleted file mode 100644 index 9ec366460f..0000000000 --- a/soh/assets/custom/objects/object_keyring/gKeyringKeysBottomoftheWellMQDL_vtx_0 +++ /dev/null @@ -1,255 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/soh/assets/custom/objects/object_keyring/gKeyringKeysFireTempleDL b/soh/assets/custom/objects/object_keyring/gKeyringKeysFireTempleDL deleted file mode 100644 index 208f1d04f2..0000000000 --- a/soh/assets/custom/objects/object_keyring/gKeyringKeysFireTempleDL +++ /dev/null @@ -1,422 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/soh/assets/custom/objects/object_keyring/gKeyringKeysFireTempleDL_vtx_0 b/soh/assets/custom/objects/object_keyring/gKeyringKeysFireTempleDL_vtx_0 deleted file mode 100644 index a01f3e2923..0000000000 --- a/soh/assets/custom/objects/object_keyring/gKeyringKeysFireTempleDL_vtx_0 +++ /dev/null @@ -1,418 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/soh/assets/custom/objects/object_keyring/gKeyringKeysFireTempleMQDL b/soh/assets/custom/objects/object_keyring/gKeyringKeysFireTempleMQDL deleted file mode 100644 index 67e55a1dd0..0000000000 --- a/soh/assets/custom/objects/object_keyring/gKeyringKeysFireTempleMQDL +++ /dev/null @@ -1,664 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/soh/assets/custom/objects/object_keyring/gKeyringKeysFireTempleMQDL_vtx_0 b/soh/assets/custom/objects/object_keyring/gKeyringKeysFireTempleMQDL_vtx_0 deleted file mode 100644 index 61b27bf40d..0000000000 --- a/soh/assets/custom/objects/object_keyring/gKeyringKeysFireTempleMQDL_vtx_0 +++ /dev/null @@ -1,673 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/soh/assets/custom/objects/object_keyring/gKeyringKeysForestTempleDL b/soh/assets/custom/objects/object_keyring/gKeyringKeysForestTempleDL deleted file mode 100644 index 5b4c2509b7..0000000000 --- a/soh/assets/custom/objects/object_keyring/gKeyringKeysForestTempleDL +++ /dev/null @@ -1,503 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/soh/assets/custom/objects/object_keyring/gKeyringKeysForestTempleDL_vtx_0 b/soh/assets/custom/objects/object_keyring/gKeyringKeysForestTempleDL_vtx_0 deleted file mode 100644 index e9e0dd97e0..0000000000 --- a/soh/assets/custom/objects/object_keyring/gKeyringKeysForestTempleDL_vtx_0 +++ /dev/null @@ -1,512 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/soh/assets/custom/objects/object_keyring/gKeyringKeysForestTempleMQDL b/soh/assets/custom/objects/object_keyring/gKeyringKeysForestTempleMQDL deleted file mode 100644 index ed2de76e41..0000000000 --- a/soh/assets/custom/objects/object_keyring/gKeyringKeysForestTempleMQDL +++ /dev/null @@ -1,422 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/soh/assets/custom/objects/object_keyring/gKeyringKeysForestTempleMQDL_vtx_0 b/soh/assets/custom/objects/object_keyring/gKeyringKeysForestTempleMQDL_vtx_0 deleted file mode 100644 index a01f3e2923..0000000000 --- a/soh/assets/custom/objects/object_keyring/gKeyringKeysForestTempleMQDL_vtx_0 +++ /dev/null @@ -1,418 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/soh/assets/custom/objects/object_keyring/gKeyringKeysGanonsCastleDL b/soh/assets/custom/objects/object_keyring/gKeyringKeysGanonsCastleDL deleted file mode 100644 index 60b9f3c974..0000000000 --- a/soh/assets/custom/objects/object_keyring/gKeyringKeysGanonsCastleDL +++ /dev/null @@ -1,181 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/soh/assets/custom/objects/object_keyring/gKeyringKeysGanonsCastleDL_vtx_0 b/soh/assets/custom/objects/object_keyring/gKeyringKeysGanonsCastleDL_vtx_0 deleted file mode 100644 index 7a635969a7..0000000000 --- a/soh/assets/custom/objects/object_keyring/gKeyringKeysGanonsCastleDL_vtx_0 +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/soh/assets/custom/objects/object_keyring/gKeyringKeysGanonsCastleMQDL b/soh/assets/custom/objects/object_keyring/gKeyringKeysGanonsCastleMQDL deleted file mode 100644 index 5bb2f04eed..0000000000 --- a/soh/assets/custom/objects/object_keyring/gKeyringKeysGanonsCastleMQDL +++ /dev/null @@ -1,261 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/soh/assets/custom/objects/object_keyring/gKeyringKeysGanonsCastleMQDL_vtx_0 b/soh/assets/custom/objects/object_keyring/gKeyringKeysGanonsCastleMQDL_vtx_0 deleted file mode 100644 index e206cb54ef..0000000000 --- a/soh/assets/custom/objects/object_keyring/gKeyringKeysGanonsCastleMQDL_vtx_0 +++ /dev/null @@ -1,254 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/soh/assets/custom/objects/object_keyring/gKeyringKeysGerudoFortressDL b/soh/assets/custom/objects/object_keyring/gKeyringKeysGerudoFortressDL deleted file mode 100644 index fd17362ca6..0000000000 --- a/soh/assets/custom/objects/object_keyring/gKeyringKeysGerudoFortressDL +++ /dev/null @@ -1,342 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/soh/assets/custom/objects/object_keyring/gKeyringKeysGerudoFortressDL_vtx_0 b/soh/assets/custom/objects/object_keyring/gKeyringKeysGerudoFortressDL_vtx_0 deleted file mode 100644 index ca07d02e00..0000000000 --- a/soh/assets/custom/objects/object_keyring/gKeyringKeysGerudoFortressDL_vtx_0 +++ /dev/null @@ -1,342 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/soh/assets/custom/objects/object_keyring/gKeyringKeysGerudoTrainingGroundDL b/soh/assets/custom/objects/object_keyring/gKeyringKeysGerudoTrainingGroundDL deleted file mode 100644 index 6c3d6edd16..0000000000 --- a/soh/assets/custom/objects/object_keyring/gKeyringKeysGerudoTrainingGroundDL +++ /dev/null @@ -1,261 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/soh/assets/custom/objects/object_keyring/gKeyringKeysGerudoTrainingGroundDL_vtx_0 b/soh/assets/custom/objects/object_keyring/gKeyringKeysGerudoTrainingGroundDL_vtx_0 deleted file mode 100644 index e206cb54ef..0000000000 --- a/soh/assets/custom/objects/object_keyring/gKeyringKeysGerudoTrainingGroundDL_vtx_0 +++ /dev/null @@ -1,254 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/soh/assets/custom/objects/object_keyring/gKeyringKeysGerudoTrainingGroundMQDL b/soh/assets/custom/objects/object_keyring/gKeyringKeysGerudoTrainingGroundMQDL deleted file mode 100644 index 5ba27c06b6..0000000000 --- a/soh/assets/custom/objects/object_keyring/gKeyringKeysGerudoTrainingGroundMQDL +++ /dev/null @@ -1,745 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/soh/assets/custom/objects/object_keyring/gKeyringKeysGerudoTrainingGroundMQDL_vtx_0 b/soh/assets/custom/objects/object_keyring/gKeyringKeysGerudoTrainingGroundMQDL_vtx_0 deleted file mode 100644 index 39ccad20a8..0000000000 --- a/soh/assets/custom/objects/object_keyring/gKeyringKeysGerudoTrainingGroundMQDL_vtx_0 +++ /dev/null @@ -1,762 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/soh/assets/custom/objects/object_keyring/gKeyringKeysShadowTempleDL b/soh/assets/custom/objects/object_keyring/gKeyringKeysShadowTempleDL deleted file mode 100644 index 6d355c936b..0000000000 --- a/soh/assets/custom/objects/object_keyring/gKeyringKeysShadowTempleDL +++ /dev/null @@ -1,503 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/soh/assets/custom/objects/object_keyring/gKeyringKeysShadowTempleDL_vtx_0 b/soh/assets/custom/objects/object_keyring/gKeyringKeysShadowTempleDL_vtx_0 deleted file mode 100644 index e9e0dd97e0..0000000000 --- a/soh/assets/custom/objects/object_keyring/gKeyringKeysShadowTempleDL_vtx_0 +++ /dev/null @@ -1,512 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/soh/assets/custom/objects/object_keyring/gKeyringKeysShadowTempleMQDL b/soh/assets/custom/objects/object_keyring/gKeyringKeysShadowTempleMQDL deleted file mode 100644 index 85f370b09d..0000000000 --- a/soh/assets/custom/objects/object_keyring/gKeyringKeysShadowTempleMQDL +++ /dev/null @@ -1,422 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/soh/assets/custom/objects/object_keyring/gKeyringKeysShadowTempleMQDL_vtx_0 b/soh/assets/custom/objects/object_keyring/gKeyringKeysShadowTempleMQDL_vtx_0 deleted file mode 100644 index a01f3e2923..0000000000 --- a/soh/assets/custom/objects/object_keyring/gKeyringKeysShadowTempleMQDL_vtx_0 +++ /dev/null @@ -1,418 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/soh/assets/custom/objects/object_keyring/gKeyringKeysSpiritTempleDL b/soh/assets/custom/objects/object_keyring/gKeyringKeysSpiritTempleDL deleted file mode 100644 index b03e065027..0000000000 --- a/soh/assets/custom/objects/object_keyring/gKeyringKeysSpiritTempleDL +++ /dev/null @@ -1,584 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/soh/assets/custom/objects/object_keyring/gKeyringKeysSpiritTempleDL_vtx_0 b/soh/assets/custom/objects/object_keyring/gKeyringKeysSpiritTempleDL_vtx_0 deleted file mode 100644 index 22fb45d526..0000000000 --- a/soh/assets/custom/objects/object_keyring/gKeyringKeysSpiritTempleDL_vtx_0 +++ /dev/null @@ -1,588 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/soh/assets/custom/objects/object_keyring/gKeyringKeysSpiritTempleMQDL b/soh/assets/custom/objects/object_keyring/gKeyringKeysSpiritTempleMQDL deleted file mode 100644 index c532d26b0d..0000000000 --- a/soh/assets/custom/objects/object_keyring/gKeyringKeysSpiritTempleMQDL +++ /dev/null @@ -1,422 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/soh/assets/custom/objects/object_keyring/gKeyringKeysSpiritTempleMQDL_vtx_0 b/soh/assets/custom/objects/object_keyring/gKeyringKeysSpiritTempleMQDL_vtx_0 deleted file mode 100644 index a01f3e2923..0000000000 --- a/soh/assets/custom/objects/object_keyring/gKeyringKeysSpiritTempleMQDL_vtx_0 +++ /dev/null @@ -1,418 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/soh/assets/custom/objects/object_keyring/gKeyringKeysTreasureChestGameDL b/soh/assets/custom/objects/object_keyring/gKeyringKeysTreasureChestGameDL deleted file mode 100644 index 74adefa7f5..0000000000 --- a/soh/assets/custom/objects/object_keyring/gKeyringKeysTreasureChestGameDL +++ /dev/null @@ -1,342 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/soh/assets/custom/objects/object_keyring/gKeyringKeysTreasureChestGameDL_vtx_0 b/soh/assets/custom/objects/object_keyring/gKeyringKeysTreasureChestGameDL_vtx_0 deleted file mode 100644 index ca07d02e00..0000000000 --- a/soh/assets/custom/objects/object_keyring/gKeyringKeysTreasureChestGameDL_vtx_0 +++ /dev/null @@ -1,342 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/soh/assets/custom/objects/object_keyring/gKeyringKeysWaterTempleDL b/soh/assets/custom/objects/object_keyring/gKeyringKeysWaterTempleDL deleted file mode 100644 index 926b3d4c43..0000000000 --- a/soh/assets/custom/objects/object_keyring/gKeyringKeysWaterTempleDL +++ /dev/null @@ -1,181 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/soh/assets/custom/objects/object_keyring/gKeyringKeysWaterTempleDL_vtx_0 b/soh/assets/custom/objects/object_keyring/gKeyringKeysWaterTempleDL_vtx_0 deleted file mode 100644 index 7a635969a7..0000000000 --- a/soh/assets/custom/objects/object_keyring/gKeyringKeysWaterTempleDL_vtx_0 +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/soh/assets/custom/objects/object_keyring/gKeyringKeysWaterTempleMQDL b/soh/assets/custom/objects/object_keyring/gKeyringKeysWaterTempleMQDL deleted file mode 100644 index 354c066daf..0000000000 --- a/soh/assets/custom/objects/object_keyring/gKeyringKeysWaterTempleMQDL +++ /dev/null @@ -1,503 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/soh/assets/custom/objects/object_keyring/gKeyringKeysWaterTempleMQDL_vtx_0 b/soh/assets/custom/objects/object_keyring/gKeyringKeysWaterTempleMQDL_vtx_0 deleted file mode 100644 index e9e0dd97e0..0000000000 --- a/soh/assets/custom/objects/object_keyring/gKeyringKeysWaterTempleMQDL_vtx_0 +++ /dev/null @@ -1,512 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/soh/assets/soh_assets.h b/soh/assets/soh_assets.h index 8a27617fe7..3f8d44db05 100644 --- a/soh/assets/soh_assets.h +++ b/soh/assets/soh_assets.h @@ -363,59 +363,8 @@ static const ALIGN_ASSET(2) char gKeyringIconGanonsCastleDL[] = dgKeyringIconGan #define dgKeyringIconTreasureChestGameDL "__OTR__objects/object_keyring/gKeyringIconTreasureChestGameDL" static const ALIGN_ASSET(2) char gKeyringIconTreasureChestGameDL[] = dgKeyringIconTreasureChestGameDL; -#define dgKeyringKeysForestTempleDL "__OTR__objects/object_keyring/gKeyringKeysForestTempleDL" -static const ALIGN_ASSET(2) char gKeyringKeysForestTempleDL[] = dgKeyringKeysForestTempleDL; - -#define dgKeyringKeysFireTempleDL "__OTR__objects/object_keyring/gKeyringKeysFireTempleDL" -static const ALIGN_ASSET(2) char gKeyringKeysFireTempleDL[] = dgKeyringKeysFireTempleDL; - -#define dgKeyringKeysWaterTempleDL "__OTR__objects/object_keyring/gKeyringKeysWaterTempleDL" -static const ALIGN_ASSET(2) char gKeyringKeysWaterTempleDL[] = dgKeyringKeysWaterTempleDL; - -#define dgKeyringKeysGerudoFortressDL "__OTR__objects/object_keyring/gKeyringKeysGerudoFortressDL" -static const ALIGN_ASSET(2) char gKeyringKeysGerudoFortressDL[] = dgKeyringKeysGerudoFortressDL; - -#define dgKeyringKeysGerudoTrainingGroundDL "__OTR__objects/object_keyring/gKeyringKeysGerudoTrainingGroundDL" -static const ALIGN_ASSET(2) char gKeyringKeysGerudoTrainingGroundDL[] = dgKeyringKeysGerudoTrainingGroundDL; - -#define dgKeyringKeysSpiritTempleDL "__OTR__objects/object_keyring/gKeyringKeysSpiritTempleDL" -static const ALIGN_ASSET(2) char gKeyringKeysSpiritTempleDL[] = dgKeyringKeysSpiritTempleDL; - -#define dgKeyringKeysBottomoftheWellDL "__OTR__objects/object_keyring/gKeyringKeysBottomoftheWellDL" -static const ALIGN_ASSET(2) char gKeyringKeysBottomoftheWellDL[] = dgKeyringKeysBottomoftheWellDL; - -#define dgKeyringKeysShadowTempleDL "__OTR__objects/object_keyring/gKeyringKeysShadowTempleDL" -static const ALIGN_ASSET(2) char gKeyringKeysShadowTempleDL[] = dgKeyringKeysShadowTempleDL; - -#define dgKeyringKeysGanonsCastleDL "__OTR__objects/object_keyring/gKeyringKeysGanonsCastleDL" -static const ALIGN_ASSET(2) char gKeyringKeysGanonsCastleDL[] = dgKeyringKeysGanonsCastleDL; - -#define dgKeyringKeysTreasureChestGameDL "__OTR__objects/object_keyring/gKeyringKeysTreasureChestGameDL" -static const ALIGN_ASSET(2) char gKeyringKeysTreasureChestGameDL[] = dgKeyringKeysTreasureChestGameDL; - -#define dgKeyringKeysForestTempleMQDL "__OTR__objects/object_keyring/gKeyringKeysForestTempleMQDL" -static const ALIGN_ASSET(2) char gKeyringKeysForestTempleMQDL[] = dgKeyringKeysForestTempleMQDL; - -#define dgKeyringKeysFireTempleMQDL "__OTR__objects/object_keyring/gKeyringKeysFireTempleMQDL" -static const ALIGN_ASSET(2) char gKeyringKeysFireTempleMQDL[] = dgKeyringKeysFireTempleMQDL; - -#define dgKeyringKeysWaterTempleMQDL "__OTR__objects/object_keyring/gKeyringKeysWaterTempleMQDL" -static const ALIGN_ASSET(2) char gKeyringKeysWaterTempleMQDL[] = dgKeyringKeysWaterTempleMQDL; - -#define dgKeyringKeysGerudoTrainingGroundMQDL "__OTR__objects/object_keyring/gKeyringKeysGerudoTrainingGroundMQDL" -static const ALIGN_ASSET(2) char gKeyringKeysGerudoTrainingGroundMQDL[] = dgKeyringKeysGerudoTrainingGroundMQDL; - -#define dgKeyringKeysSpiritTempleMQDL "__OTR__objects/object_keyring/gKeyringKeysSpiritTempleMQDL" -static const ALIGN_ASSET(2) char gKeyringKeysSpiritTempleMQDL[] = dgKeyringKeysSpiritTempleMQDL; - -#define dgKeyringKeysBottomoftheWellMQDL "__OTR__objects/object_keyring/gKeyringKeysBottomoftheWellMQDL" -static const ALIGN_ASSET(2) char gKeyringKeysBottomoftheWellMQDL[] = dgKeyringKeysBottomoftheWellMQDL; - -#define dgKeyringKeysShadowTempleMQDL "__OTR__objects/object_keyring/gKeyringKeysShadowTempleMQDL" -static const ALIGN_ASSET(2) char gKeyringKeysShadowTempleMQDL[] = dgKeyringKeysShadowTempleMQDL; - -#define dgKeyringKeysGanonsCastleMQDL "__OTR__objects/object_keyring/gKeyringKeysGanonsCastleMQDL" -static const ALIGN_ASSET(2) char gKeyringKeysGanonsCastleMQDL[] = dgKeyringKeysGanonsCastleMQDL; +#define dgKeyringKeyDL "__OTR__objects/object_keyring/gKeyringKeyDL" +static const ALIGN_ASSET(2) char gKeyringKeyDL[] = dgKeyringKeyDL; #define dgHouseKeyDL "__OTR__objects/object_housekey/gHouseKeyDL" static const ALIGN_ASSET(2) char gHouseKeyDL[] = dgHouseKeyDL; diff --git a/soh/soh/Enhancements/randomizer/draw.cpp b/soh/soh/Enhancements/randomizer/draw.cpp index 10eaa8ce69..6bf87e7375 100644 --- a/soh/soh/Enhancements/randomizer/draw.cpp +++ b/soh/soh/Enhancements/randomizer/draw.cpp @@ -4,13 +4,14 @@ #include "soh/ResourceManagerHelpers.h" #include "soh/Enhancements/cosmetics/cosmeticsTypes.h" #include "soh/Enhancements/randomizer/randomizer.h" +#include "dungeon.h" +#include "logic.h" extern "C" { #include "z64.h" #include "macros.h" #include "functions.h" #include "variables.h" -#include "dungeon.h" #include "objects/gameplay_keep/gameplay_keep.h" #include "objects/object_gi_key/object_gi_key.h" #include "objects/object_gi_bosskey/object_gi_bosskey.h" @@ -83,7 +84,6 @@ Color_RGB8 MapOrCompassColor[10] = { extern "C" u8 Randomizer_GetSettingValue(RandomizerSettingKey randoSettingKey); extern "C" void Randomizer_DrawSmallKey(PlayState* play, GetItemEntry* getItemEntry) { - bool isCustomKeysEnabled = CVarGetInteger(CVAR_RANDOMIZER_ENHANCEMENT("CustomKeyModels"), 1); int slot = getItemEntry->drawItemId - RG_FOREST_TEMPLE_SMALL_KEY; Gfx* customIconDLs[] = { @@ -104,27 +104,19 @@ extern "C" void Randomizer_DrawSmallKey(PlayState* play, GetItemEntry* getItemEn Color_RGB8 keyColor = { 255, 255, 255 }; keyColor = CVarGetColor24(SmallBodyCvarValue[slot], keyColor); - if (isCustomKeysEnabled) { - gDPSetEnvColor(POLY_OPA_DISP++, keyColor.r, keyColor.g, keyColor.b, 255); - gSPDisplayList(POLY_OPA_DISP++, (Gfx*)gSmallKeyCustomDL); + gDPSetEnvColor(POLY_OPA_DISP++, keyColor.r, keyColor.g, keyColor.b, 255); + gSPDisplayList(POLY_OPA_DISP++, (Gfx*)gSmallKeyCustomDL); - Gfx_SetupDL_25Xlu(play->state.gfxCtx); + Gfx_SetupDL_25Xlu(play->state.gfxCtx); - Color_RGB8 emblemColor = SmallEmblemDefaultValue[slot]; - emblemColor = CVarGetColor24(SmallEmblemCvarValue[slot], emblemColor); + Color_RGB8 emblemColor = SmallEmblemDefaultValue[slot]; + emblemColor = CVarGetColor24(SmallEmblemCvarValue[slot], emblemColor); - gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx, (char*)__FILE__, __LINE__), - G_MTX_MODELVIEW | G_MTX_LOAD); - gDPSetEnvColor(POLY_XLU_DISP++, emblemColor.r, emblemColor.g, emblemColor.b, 255); + gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx, (char*)__FILE__, __LINE__), + G_MTX_MODELVIEW | G_MTX_LOAD); + gDPSetEnvColor(POLY_XLU_DISP++, emblemColor.r, emblemColor.g, emblemColor.b, 255); - gSPDisplayList(POLY_XLU_DISP++, customIconDLs[slot]); - - } else { - gDPSetGrayscaleColor(POLY_OPA_DISP++, keyColor.r, keyColor.g, keyColor.b, 255); - gSPGrayscale(POLY_OPA_DISP++, true); - gSPDisplayList(POLY_OPA_DISP++, (Gfx*)gGiSmallKeyDL); - gSPGrayscale(POLY_OPA_DISP++, false); - } + gSPDisplayList(POLY_XLU_DISP++, customIconDLs[slot]); CLOSE_DISPS(play->state.gfxCtx); } @@ -168,7 +160,6 @@ extern "C" void Randomizer_DrawCompass(PlayState* play, GetItemEntry* getItemEnt } extern "C" void Randomizer_DrawBossKey(PlayState* play, GetItemEntry* getItemEntry) { - bool isCustomKeysEnabled = CVarGetInteger(CVAR_RANDOMIZER_ENHANCEMENT("CustomKeyModels"), 1); s16 slot = getItemEntry->drawItemId - RG_FOREST_TEMPLE_BOSS_KEY; std::string CvarValue[6] = { @@ -192,19 +183,8 @@ extern "C" void Randomizer_DrawBossKey(PlayState* play, GetItemEntry* getItemEnt // Supposed to use CVAR_COSMETIC but I can't figure out the syntax keyColor = CVarGetColor24((CvarValue[slot] + "Body.Value").c_str(), keyColor); - if (isCustomKeysEnabled) { - gDPSetEnvColor(POLY_OPA_DISP++, keyColor.r, keyColor.g, keyColor.b, 255); - gSPDisplayList(POLY_OPA_DISP++, (Gfx*)gBossKeyCustomDL); - } else { - if (CVarGetInteger((CvarValue[slot] + "Body.Changed").c_str(), false)) { - gDPSetGrayscaleColor(POLY_OPA_DISP++, keyColor.r, keyColor.g, keyColor.b, 255); - gSPGrayscale(POLY_OPA_DISP++, true); - gSPDisplayList(POLY_OPA_DISP++, (Gfx*)gGiBossKeyDL); - gSPGrayscale(POLY_OPA_DISP++, false); - } else { - gSPDisplayList(POLY_OPA_DISP++, (Gfx*)gGiBossKeyDL); - } - } + gDPSetEnvColor(POLY_OPA_DISP++, keyColor.r, keyColor.g, keyColor.b, 255); + gSPDisplayList(POLY_OPA_DISP++, (Gfx*)gBossKeyCustomDL); Gfx_SetupDL_25Xlu(play->state.gfxCtx); @@ -214,25 +194,25 @@ extern "C" void Randomizer_DrawBossKey(PlayState* play, GetItemEntry* getItemEnt Color_RGB8 gemColor = { 255, 0, 0 }; gemColor = CVarGetColor24((CvarValue[slot] + "Gem.Value").c_str(), gemColor); - if (isCustomKeysEnabled) { - gDPSetEnvColor(POLY_XLU_DISP++, gemColor.r, gemColor.g, gemColor.b, 255); - gSPDisplayList(POLY_XLU_DISP++, CustomdLists[slot]); - } else { - if (CVarGetInteger((CvarValue[slot] + "Gem.Changed").c_str(), false)) { - gDPSetGrayscaleColor(POLY_XLU_DISP++, gemColor.r, gemColor.g, gemColor.b, 255); - gSPGrayscale(POLY_XLU_DISP++, true); - gSPDisplayList(POLY_XLU_DISP++, (Gfx*)gGiBossKeyGemDL); - gSPGrayscale(POLY_XLU_DISP++, false); - } else { - gSPDisplayList(POLY_XLU_DISP++, (Gfx*)gGiBossKeyGemDL); - } - } + gDPSetEnvColor(POLY_XLU_DISP++, gemColor.r, gemColor.g, gemColor.b, 255); + gSPDisplayList(POLY_XLU_DISP++, CustomdLists[slot]); CLOSE_DISPS(play->state.gfxCtx); } +// The key ring holds one key mesh repeated around the ring, so a slot is just a rotation about the +// ring's axis. Slot 0 is where gKeyringKeyDL sits; fractional slots let an even count straddle it. +static void KeyRing_RotateToSlot(f32 slot) { + static Vec3f axis = { 0.0455f, -0.3020f, 0.9522f }; + static const f32 pivotX = -2.012f, pivotY = 16.440f, pivotZ = -4.871f; + static const f32 slotAngle = 0.17374f; // 9.95 degrees + + Matrix_Translate(pivotX, pivotY, pivotZ, MTXMODE_APPLY); + Matrix_RotateAxis(slot * slotAngle, &axis, MTXMODE_APPLY); + Matrix_Translate(-pivotX, -pivotY, -pivotZ, MTXMODE_APPLY); +} + extern "C" void Randomizer_DrawKeyRing(PlayState* play, GetItemEntry* getItemEntry) { - bool isCustomKeysEnabled = CVarGetInteger(CVAR_RANDOMIZER_ENHANCEMENT("CustomKeyModels"), 1); int slot = getItemEntry->drawItemId - RG_FOREST_TEMPLE_KEY_RING; Gfx* CustomIconDLs[] = { @@ -243,32 +223,8 @@ extern "C" void Randomizer_DrawKeyRing(PlayState* play, GetItemEntry* getItemEnt (Gfx*)gKeyringIconGanonsCastleDL, (Gfx*)gKeyringIconTreasureChestGameDL, }; - Gfx* CustomKeysDLs[] = { - (Gfx*)gKeyringKeysForestTempleDL, (Gfx*)gKeyringKeysFireTempleDL, - (Gfx*)gKeyringKeysWaterTempleDL, (Gfx*)gKeyringKeysSpiritTempleDL, - (Gfx*)gKeyringKeysShadowTempleDL, (Gfx*)gKeyringKeysBottomoftheWellDL, - (Gfx*)gKeyringKeysGerudoTrainingGroundDL, (Gfx*)gKeyringKeysGerudoFortressDL, - (Gfx*)gKeyringKeysGanonsCastleDL, (Gfx*)gKeyringKeysTreasureChestGameDL, - }; - - Gfx* CustomKeysMQDLs[] = { - (Gfx*)gKeyringKeysForestTempleMQDL, (Gfx*)gKeyringKeysFireTempleMQDL, - (Gfx*)gKeyringKeysWaterTempleMQDL, (Gfx*)gKeyringKeysSpiritTempleMQDL, - (Gfx*)gKeyringKeysShadowTempleMQDL, (Gfx*)gKeyringKeysBottomoftheWellMQDL, - (Gfx*)gKeyringKeysGerudoTrainingGroundMQDL, (Gfx*)gKeyringKeysGerudoFortressDL, - (Gfx*)gKeyringKeysGanonsCastleMQDL, (Gfx*)gKeyringKeysTreasureChestGameDL, - }; - - // RANDOTODO make DungeonInfo static and vanilla accessible to allow all these key model data vars to be stored - // there. (Rando::DungeonKey)0 means the keyring is not tied to a dungeon and should not be checked for an MQ - // variant - Rando::DungeonKey SlotToDungeon[10] = { - Rando::FOREST_TEMPLE, Rando::FIRE_TEMPLE, Rando::WATER_TEMPLE, Rando::SPIRIT_TEMPLE, - Rando::SHADOW_TEMPLE, Rando::BOTTOM_OF_THE_WELL, Rando::GERUDO_TRAINING_GROUND, - (Rando::DungeonKey)0, // Gerudo Fortress - Rando::GANONS_CASTLE, - (Rando::DungeonKey)0, // Treasure Chest Game - }; + SceneID scene = Rando::Logic::RandoGetToDungeonScene.find(getItemEntry->drawItemId)->second; + uint8_t keyCount = Rando::GetSceneSmallKeyMax(scene); OPEN_DISPS(play->state.gfxCtx); @@ -277,56 +233,34 @@ extern "C" void Randomizer_DrawKeyRing(PlayState* play, GetItemEntry* getItemEnt Color_RGB8 keyColor = { 255, 255, 255 }; keyColor = CVarGetColor24(SmallBodyCvarValue[slot], keyColor); - if (isCustomKeysEnabled) { + gDPSetEnvColor(POLY_OPA_DISP++, keyColor.r, keyColor.g, keyColor.b, 255); + for (uint8_t i = 0; i < keyCount; i++) { + Matrix_Push(); + KeyRing_RotateToSlot(i - (keyCount - 1) * 0.5f); gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx, (char*)__FILE__, __LINE__), G_MTX_MODELVIEW | G_MTX_LOAD); - - gDPSetEnvColor(POLY_OPA_DISP++, keyColor.r, keyColor.g, keyColor.b, 255); - if (SlotToDungeon[slot] != 0 && Rando::Context::GetInstance()->GetDungeon(SlotToDungeon[slot])->IsMQ()) { - gSPDisplayList(POLY_OPA_DISP++, (Gfx*)CustomKeysMQDLs[slot]); - } else { - gSPDisplayList(POLY_OPA_DISP++, (Gfx*)CustomKeysDLs[slot]); - } - - Color_RGB8 ringColor = { 255, 255, 255 }; - ringColor = CVarGetColor24(CVAR_COSMETIC("Key.KeyringRing.Value"), ringColor); - gDPSetEnvColor(POLY_OPA_DISP++, ringColor.r, ringColor.g, ringColor.b, 255); - gSPDisplayList(POLY_OPA_DISP++, (Gfx*)gKeyringRingDL); - - Color_RGB8 emblemColor = SmallEmblemDefaultValue[slot]; - emblemColor = CVarGetColor24(SmallEmblemCvarValue[slot], emblemColor); - - Gfx_SetupDL_25Opa(play->state.gfxCtx); - gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx, (char*)__FILE__, __LINE__), - G_MTX_MODELVIEW | G_MTX_LOAD); - gDPSetEnvColor(POLY_OPA_DISP++, emblemColor.r, emblemColor.g, emblemColor.b, 255); - - gSPDisplayList(POLY_OPA_DISP++, CustomIconDLs[slot]); - } else { - gDPSetGrayscaleColor(POLY_OPA_DISP++, keyColor.r, keyColor.g, keyColor.b, 255); - gSPGrayscale(POLY_OPA_DISP++, true); - Matrix_Scale(0.5f, 0.5f, 0.5f, MTXMODE_APPLY); - Matrix_RotateZ(0.8f, MTXMODE_APPLY); - Matrix_RotateX(-2.16f, MTXMODE_APPLY); - Matrix_RotateY(-0.56f, MTXMODE_APPLY); - Matrix_RotateZ(-0.86f, MTXMODE_APPLY); - Matrix_Translate(28.29f, 0, 0, MTXMODE_APPLY); - Matrix_Translate(-(3.12f * 2), -(-0.34f * 2), -(17.53f * 2), MTXMODE_APPLY); - Matrix_RotateX(-(-0.31f * 2), MTXMODE_APPLY); - Matrix_RotateY(-(0.19f * 2), MTXMODE_APPLY); - Matrix_RotateZ(-(0.20f * 2), MTXMODE_APPLY); - for (int i = 0; i < 5; i++) { - gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx, (char*)__FILE__, __LINE__), - G_MTX_MODELVIEW | G_MTX_LOAD); - Matrix_Translate(3.12f, -0.34f, 17.53f, MTXMODE_APPLY); - Matrix_RotateX(-0.31f, MTXMODE_APPLY); - Matrix_RotateY(0.19f, MTXMODE_APPLY); - Matrix_RotateZ(0.20f, MTXMODE_APPLY); - gSPDisplayList(POLY_OPA_DISP++, (Gfx*)gGiSmallKeyDL); - } - gSPGrayscale(POLY_OPA_DISP++, false); + gSPDisplayList(POLY_OPA_DISP++, (Gfx*)gKeyringKeyDL); + Matrix_Pop(); } + gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx, (char*)__FILE__, __LINE__), + G_MTX_MODELVIEW | G_MTX_LOAD); + + Color_RGB8 ringColor = { 255, 255, 255 }; + ringColor = CVarGetColor24(CVAR_COSMETIC("Key.KeyringRing.Value"), ringColor); + gDPSetEnvColor(POLY_OPA_DISP++, ringColor.r, ringColor.g, ringColor.b, 255); + gSPDisplayList(POLY_OPA_DISP++, (Gfx*)gKeyringRingDL); + + Color_RGB8 emblemColor = SmallEmblemDefaultValue[slot]; + emblemColor = CVarGetColor24(SmallEmblemCvarValue[slot], emblemColor); + + Gfx_SetupDL_25Opa(play->state.gfxCtx); + gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx, (char*)__FILE__, __LINE__), + G_MTX_MODELVIEW | G_MTX_LOAD); + gDPSetEnvColor(POLY_OPA_DISP++, emblemColor.r, emblemColor.g, emblemColor.b, 255); + + gSPDisplayList(POLY_OPA_DISP++, CustomIconDLs[slot]); + CLOSE_DISPS(play->state.gfxCtx); } diff --git a/soh/soh/Enhancements/randomizer/dungeon.cpp b/soh/soh/Enhancements/randomizer/dungeon.cpp index d52b6fcb7f..49ca37ce78 100644 --- a/soh/soh/Enhancements/randomizer/dungeon.cpp +++ b/soh/soh/Enhancements/randomizer/dungeon.cpp @@ -3,6 +3,7 @@ #include "3drando/pool_functions.hpp" #include "static_data.h" #include "SeedContext.h" +#include "soh/ResourceManagerHelpers.h" namespace Rando { extern "C" PlayState* gPlayState; @@ -58,8 +59,16 @@ bool DungeonInfo::IsVanilla() const { return !masterQuest; } +SceneID DungeonInfo::GetScene() const { + return scene; +} + uint8_t DungeonInfo::GetSmallKeyCount() const { - return masterQuest ? mqKeyCount : vanillaKeyCount; + return GetSmallKeyCountForQuest(masterQuest); +} + +uint8_t DungeonInfo::GetSmallKeyCountForQuest(const bool masterQuest_) const { + return masterQuest_ ? mqKeyCount : vanillaKeyCount; } RandomizerHintTextKey DungeonInfo::GetHintKey() const { @@ -132,6 +141,41 @@ int8_t FindTotalSmallKeys(const SaveContext* saveContext, const SceneID scene, c return FindCurrentSmallKeys(saveContext, scene) + FindUsedSmallKeys(saveContext, scene, DoorFlags); } +// Thieves' Hideout isn't a dungeon, and how many of its doors are locked depends on the carpenter setting. +static std::vector ThievesHideoutDoorFlags() { + if (RAND_GET_OPTION(RSK_GERUDO_FORTRESS).Is(RO_GF_CARPENTERS_FAST)) { + return { 1 }; + } + if (RAND_GET_OPTION(RSK_GERUDO_FORTRESS).Is(RO_GF_CARPENTERS_FREE)) { + return {}; + } + return { 1, 2, 3, 4 }; +} + +uint8_t GetSceneSmallKeyMax(const SceneID scene) { + if (scene == SCENE_THIEVES_HIDEOUT) { + return static_cast(ThievesHideoutDoorFlags().size()); + } + if (scene == SCENE_TREASURE_BOX_SHOP) { + return 6; + } + // ask which layout actually loads rather than what the seed asked for, so an MQ-only rom still lines up + const DungeonInfo* dungeon = Context::GetInstance()->GetDungeons()->GetDungeonFromScene(scene); + return dungeon != nullptr ? dungeon->GetSmallKeyCountForQuest(ResourceMgr_IsSceneMasterQuest(scene)) : 0; +} + +int8_t GetSceneTotalSmallKeys(const SaveContext* saveContext, const SceneID scene) { + if (scene == SCENE_THIEVES_HIDEOUT) { + const std::vector doorFlags = ThievesHideoutDoorFlags(); + return FindTotalSmallKeys(saveContext, scene, &doorFlags); + } + if (const DungeonInfo* dungeon = Context::GetInstance()->GetDungeons()->GetDungeonFromScene(scene)) { + return FindTotalSmallKeys(saveContext, scene, dungeon->GetDoorFlags()); + } + // the chest game keeps no door flags, so what you hold is all you ever got + return FindCurrentSmallKeys(saveContext, scene); +} + int8_t DungeonInfo::GetUsedSmallKeys(SaveContext* saveContext) const { return FindUsedSmallKeys(saveContext, scene, GetDoorFlags()); } diff --git a/soh/soh/Enhancements/randomizer/dungeon.h b/soh/soh/Enhancements/randomizer/dungeon.h index a5c2d4869e..192b725b90 100644 --- a/soh/soh/Enhancements/randomizer/dungeon.h +++ b/soh/soh/Enhancements/randomizer/dungeon.h @@ -26,7 +26,10 @@ class DungeonInfo { void ClearKeyRing(); bool HasKeyRing() const; bool IsVanilla() const; + SceneID GetScene() const; + /// Key count for the seed's own layout. Use GetSceneSmallKeyMax for what the player will actually walk into. uint8_t GetSmallKeyCount() const; + uint8_t GetSmallKeyCountForQuest(bool masterQuest) const; RandomizerHintTextKey GetHintKey() const; RandomizerArea GetArea() const; RandomizerGet GetSmallKey() const; @@ -75,6 +78,11 @@ int8_t FindUsedSmallKeys(const SaveContext* saveContext, const SceneID scene, co int8_t FindCurrentSmallKeys(const SaveContext* saveContext, const SceneID scene); int8_t FindTotalSmallKeys(const SaveContext* saveContext, const SceneID scene, const std::vector* DoorFlags); +/// How many small keys the scene takes in total. Covers dungeons, Thieves' Hideout and the chest game. +uint8_t GetSceneSmallKeyMax(SceneID scene); +/// Small keys held for the scene plus the ones already spent there. +int8_t GetSceneTotalSmallKeys(const SaveContext* saveContext, SceneID scene); + typedef enum { DEKU_TREE, DODONGOS_CAVERN, diff --git a/soh/soh/Enhancements/randomizer/logic.cpp b/soh/soh/Enhancements/randomizer/logic.cpp index 341a7475eb..fb5ba7ceab 100644 --- a/soh/soh/Enhancements/randomizer/logic.cpp +++ b/soh/soh/Enhancements/randomizer/logic.cpp @@ -2799,16 +2799,7 @@ void Logic::SetQuestItem(uint32_t item, bool state) { } int8_t Logic::GetSmallKeyCount(SceneID sceneId) { - if (sceneId == SCENE_THIEVES_HIDEOUT) { - std::vector DoorFlags = THIEVES_HIDEOUT_DOOR_FLAGS; - return FindTotalSmallKeys(mSaveContext, SCENE_THIEVES_HIDEOUT, &DoorFlags); - } - - if (auto* dungeon = Rando::Context::GetInstance()->GetDungeons()->GetDungeonFromScene(sceneId)) { - return dungeon->GetTotalSmallKeys(mSaveContext); - } - - return FindTotalSmallKeys(mSaveContext, sceneId, nullptr); + return GetSceneTotalSmallKeys(mSaveContext, sceneId); } void Logic::SetSmallKeyCount(uint32_t dungeonIndex, uint8_t count) { diff --git a/soh/soh/Enhancements/randomizer/randomizer.cpp b/soh/soh/Enhancements/randomizer/randomizer.cpp index e3355f4e80..f9a3b3f231 100644 --- a/soh/soh/Enhancements/randomizer/randomizer.cpp +++ b/soh/soh/Enhancements/randomizer/randomizer.cpp @@ -22,6 +22,7 @@ #include "soh/ObjectExtension/ObjectExtension.h" #include "soh/Enhancements/randomizer/RCToRandInf.h" #include "dungeon.h" +#include "logic.h" extern "C" { #include "src/overlays/actors/ovl_Obj_Bean/z_obj_bean.h" @@ -589,57 +590,20 @@ ItemObtainability Randomizer::GetItemObtainabilityFromRandomizerGet(RandomizerGe case RG_GANONS_CASTLE_BOSS_KEY: return !CHECK_DUNGEON_ITEM(DUNGEON_KEY_BOSS, SCENE_GANONS_TOWER) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE; case RG_FOREST_TEMPLE_SMALL_KEY: - return OTRGlobals::Instance->gRandoContext->GetDungeon(Rando::FOREST_TEMPLE) - ->GetTotalSmallKeys(&gSaveContext) < FOREST_TEMPLE_SMALL_KEY_MAX - ? CAN_OBTAIN - : CANT_OBTAIN_ALREADY_HAVE; case RG_FIRE_TEMPLE_SMALL_KEY: - return OTRGlobals::Instance->gRandoContext->GetDungeon(Rando::FIRE_TEMPLE) - ->GetTotalSmallKeys(&gSaveContext) < FIRE_TEMPLE_SMALL_KEY_MAX - ? CAN_OBTAIN - : CANT_OBTAIN_ALREADY_HAVE; case RG_WATER_TEMPLE_SMALL_KEY: - return OTRGlobals::Instance->gRandoContext->GetDungeon(Rando::WATER_TEMPLE) - ->GetTotalSmallKeys(&gSaveContext) < WATER_TEMPLE_SMALL_KEY_MAX - ? CAN_OBTAIN - : CANT_OBTAIN_ALREADY_HAVE; case RG_SPIRIT_TEMPLE_SMALL_KEY: - return OTRGlobals::Instance->gRandoContext->GetDungeon(Rando::SPIRIT_TEMPLE) - ->GetTotalSmallKeys(&gSaveContext) < SPIRIT_TEMPLE_SMALL_KEY_MAX - ? CAN_OBTAIN - : CANT_OBTAIN_ALREADY_HAVE; case RG_SHADOW_TEMPLE_SMALL_KEY: - return OTRGlobals::Instance->gRandoContext->GetDungeon(Rando::SHADOW_TEMPLE) - ->GetTotalSmallKeys(&gSaveContext) < SHADOW_TEMPLE_SMALL_KEY_MAX - ? CAN_OBTAIN - : CANT_OBTAIN_ALREADY_HAVE; case RG_BOTTOM_OF_THE_WELL_SMALL_KEY: - return OTRGlobals::Instance->gRandoContext->GetDungeon(Rando::BOTTOM_OF_THE_WELL) - ->GetTotalSmallKeys(&gSaveContext) < BOTTOM_OF_THE_WELL_SMALL_KEY_MAX - ? CAN_OBTAIN - : CANT_OBTAIN_ALREADY_HAVE; case RG_GERUDO_TRAINING_GROUND_SMALL_KEY: - return OTRGlobals::Instance->gRandoContext->GetDungeon(Rando::GERUDO_TRAINING_GROUND) - ->GetTotalSmallKeys(&gSaveContext) < GERUDO_TRAINING_GROUND_SMALL_KEY_MAX - ? CAN_OBTAIN - : CANT_OBTAIN_ALREADY_HAVE; - case RG_GERUDO_FORTRESS_SMALL_KEY: { - std::vector DoorFlags = THIEVES_HIDEOUT_DOOR_FLAGS; - return Rando::FindTotalSmallKeys(&gSaveContext, SCENE_THIEVES_HIDEOUT, &DoorFlags) < - GERUDO_FORTRESS_SMALL_KEY_MAX + case RG_GERUDO_FORTRESS_SMALL_KEY: + case RG_GANONS_CASTLE_SMALL_KEY: + case RG_TREASURE_GAME_SMALL_KEY: { + SceneID scene = Rando::Logic::RandoGetToDungeonScene.find(randoGet)->second; + return Rando::GetSceneTotalSmallKeys(&gSaveContext, scene) < Rando::GetSceneSmallKeyMax(scene) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE; } - case RG_GANONS_CASTLE_SMALL_KEY: - return OTRGlobals::Instance->gRandoContext->GetDungeon(Rando::GANONS_CASTLE) - ->GetTotalSmallKeys(&gSaveContext) < GANONS_CASTLE_SMALL_KEY_MAX - ? CAN_OBTAIN - : CANT_OBTAIN_ALREADY_HAVE; - case RG_TREASURE_GAME_SMALL_KEY: - // I assume this cannot be easily manipulated? - return gSaveContext.inventory.dungeonKeys[SCENE_TREASURE_BOX_SHOP] < TREASURE_GAME_SMALL_KEY_MAX - ? CAN_OBTAIN - : CANT_OBTAIN_ALREADY_HAVE; // Dungeon Rewards case RG_KOKIRI_EMERALD: @@ -1205,15 +1169,14 @@ extern "C" u16 Randomizer_Item_Give(PlayState* play, GetItemEntry giEntry) { Flags_SetRandomizerInf(RAND_INF_HAS_SKELETON_KEY); // This isn't technically necessary, because keys will no longer be consumed, // but for the player's sanity we display that they _have_ keys. - gSaveContext.inventory.dungeonKeys[SCENE_FOREST_TEMPLE] = FOREST_TEMPLE_SMALL_KEY_MAX; - gSaveContext.inventory.dungeonKeys[SCENE_FIRE_TEMPLE] = FIRE_TEMPLE_SMALL_KEY_MAX; - gSaveContext.inventory.dungeonKeys[SCENE_WATER_TEMPLE] = WATER_TEMPLE_SMALL_KEY_MAX; - gSaveContext.inventory.dungeonKeys[SCENE_SPIRIT_TEMPLE] = SPIRIT_TEMPLE_SMALL_KEY_MAX; - gSaveContext.inventory.dungeonKeys[SCENE_SHADOW_TEMPLE] = SHADOW_TEMPLE_SMALL_KEY_MAX; - gSaveContext.inventory.dungeonKeys[SCENE_BOTTOM_OF_THE_WELL] = BOTTOM_OF_THE_WELL_SMALL_KEY_MAX; - gSaveContext.inventory.dungeonKeys[SCENE_GERUDO_TRAINING_GROUND] = GERUDO_TRAINING_GROUND_SMALL_KEY_MAX; - gSaveContext.inventory.dungeonKeys[SCENE_THIEVES_HIDEOUT] = GERUDO_FORTRESS_SMALL_KEY_MAX; - gSaveContext.inventory.dungeonKeys[SCENE_INSIDE_GANONS_CASTLE] = GANONS_CASTLE_SMALL_KEY_MAX; + for (Rando::DungeonInfo* dungeon : Rando::Context::GetInstance()->GetDungeons()->GetDungeonList()) { + uint8_t keys = Rando::GetSceneSmallKeyMax(dungeon->GetScene()); + if (keys > 0) { + gSaveContext.inventory.dungeonKeys[dungeon->GetScene()] = keys; + } + } + gSaveContext.inventory.dungeonKeys[SCENE_THIEVES_HIDEOUT] = + Rando::GetSceneSmallKeyMax(SCENE_THIEVES_HIDEOUT); } else if (item >= RG_KEATON_MASK && item <= RG_MASK_OF_TRUTH) { if (!ChildTradeSlotOccupied()) { INV_CONTENT(ITEM_TRADE_CHILD) = (int)ITEM_MASK_KEATON + (item - RG_KEATON_MASK); @@ -1288,7 +1251,6 @@ extern "C" u16 Randomizer_Item_Give(PlayState* play, GetItemEntry giEntry) { (item >= RG_DEKU_TREE_MAP && item <= RG_ICE_CAVERN_MAP) || (item >= RG_DEKU_TREE_COMPASS && item <= RG_ICE_CAVERN_COMPASS)) { u16 mapIndex = gSaveContext.mapIndex; - u8 numOfKeysOnKeyring = 0; switch (item) { case RG_DEKU_TREE_MAP: case RG_DEKU_TREE_COMPASS: @@ -1308,7 +1270,6 @@ extern "C" u16 Randomizer_Item_Give(PlayState* play, GetItemEntry giEntry) { case RG_FOREST_TEMPLE_KEY_RING: case RG_FOREST_TEMPLE_BOSS_KEY: mapIndex = SCENE_FOREST_TEMPLE; - numOfKeysOnKeyring = FOREST_TEMPLE_SMALL_KEY_MAX; break; case RG_FIRE_TEMPLE_MAP: case RG_FIRE_TEMPLE_COMPASS: @@ -1316,7 +1277,6 @@ extern "C" u16 Randomizer_Item_Give(PlayState* play, GetItemEntry giEntry) { case RG_FIRE_TEMPLE_KEY_RING: case RG_FIRE_TEMPLE_BOSS_KEY: mapIndex = SCENE_FIRE_TEMPLE; - numOfKeysOnKeyring = FIRE_TEMPLE_SMALL_KEY_MAX; break; case RG_WATER_TEMPLE_MAP: case RG_WATER_TEMPLE_COMPASS: @@ -1324,7 +1284,6 @@ extern "C" u16 Randomizer_Item_Give(PlayState* play, GetItemEntry giEntry) { case RG_WATER_TEMPLE_KEY_RING: case RG_WATER_TEMPLE_BOSS_KEY: mapIndex = SCENE_WATER_TEMPLE; - numOfKeysOnKeyring = WATER_TEMPLE_SMALL_KEY_MAX; break; case RG_SPIRIT_TEMPLE_MAP: case RG_SPIRIT_TEMPLE_COMPASS: @@ -1332,7 +1291,6 @@ extern "C" u16 Randomizer_Item_Give(PlayState* play, GetItemEntry giEntry) { case RG_SPIRIT_TEMPLE_KEY_RING: case RG_SPIRIT_TEMPLE_BOSS_KEY: mapIndex = SCENE_SPIRIT_TEMPLE; - numOfKeysOnKeyring = SPIRIT_TEMPLE_SMALL_KEY_MAX; break; case RG_SHADOW_TEMPLE_MAP: case RG_SHADOW_TEMPLE_COMPASS: @@ -1340,14 +1298,12 @@ extern "C" u16 Randomizer_Item_Give(PlayState* play, GetItemEntry giEntry) { case RG_SHADOW_TEMPLE_KEY_RING: case RG_SHADOW_TEMPLE_BOSS_KEY: mapIndex = SCENE_SHADOW_TEMPLE; - numOfKeysOnKeyring = SHADOW_TEMPLE_SMALL_KEY_MAX; break; case RG_BOTTOM_OF_THE_WELL_MAP: case RG_BOTTOM_OF_THE_WELL_COMPASS: case RG_BOTTOM_OF_THE_WELL_SMALL_KEY: case RG_BOTTOM_OF_THE_WELL_KEY_RING: mapIndex = SCENE_BOTTOM_OF_THE_WELL; - numOfKeysOnKeyring = BOTTOM_OF_THE_WELL_SMALL_KEY_MAX; break; case RG_ICE_CAVERN_MAP: case RG_ICE_CAVERN_COMPASS: @@ -1359,22 +1315,18 @@ extern "C" u16 Randomizer_Item_Give(PlayState* play, GetItemEntry giEntry) { case RG_GERUDO_TRAINING_GROUND_SMALL_KEY: case RG_GERUDO_TRAINING_GROUND_KEY_RING: mapIndex = SCENE_GERUDO_TRAINING_GROUND; - numOfKeysOnKeyring = GERUDO_TRAINING_GROUND_SMALL_KEY_MAX; break; case RG_GERUDO_FORTRESS_SMALL_KEY: case RG_GERUDO_FORTRESS_KEY_RING: mapIndex = SCENE_THIEVES_HIDEOUT; - numOfKeysOnKeyring = GERUDO_FORTRESS_SMALL_KEY_MAX; break; case RG_GANONS_CASTLE_SMALL_KEY: case RG_GANONS_CASTLE_KEY_RING: mapIndex = SCENE_INSIDE_GANONS_CASTLE; - numOfKeysOnKeyring = GANONS_CASTLE_SMALL_KEY_MAX; break; case RG_TREASURE_GAME_SMALL_KEY: case RG_TREASURE_GAME_KEY_RING: mapIndex = SCENE_TREASURE_BOX_SHOP; - numOfKeysOnKeyring = TREASURE_GAME_SMALL_KEY_MAX; break; default: break; @@ -1391,8 +1343,9 @@ extern "C" u16 Randomizer_Item_Give(PlayState* play, GetItemEntry giEntry) { } if ((item >= RG_FOREST_TEMPLE_KEY_RING) && (item <= RG_TREASURE_GAME_KEY_RING)) { - gSaveContext.ship.stats.dungeonKeys[mapIndex] = numOfKeysOnKeyring; - gSaveContext.inventory.dungeonKeys[mapIndex] = numOfKeysOnKeyring; + u8 keysOnRing = Rando::GetSceneSmallKeyMax((SceneID)mapIndex); + gSaveContext.ship.stats.dungeonKeys[mapIndex] = keysOnRing; + gSaveContext.inventory.dungeonKeys[mapIndex] = keysOnRing; return Return_Item_Entry(giEntry, RG_NONE); } diff --git a/soh/soh/Enhancements/randomizer/randomizer.h b/soh/soh/Enhancements/randomizer/randomizer.h index e5ede9a509..5bab24c69a 100644 --- a/soh/soh/Enhancements/randomizer/randomizer.h +++ b/soh/soh/Enhancements/randomizer/randomizer.h @@ -11,25 +11,6 @@ #include "../custom-message/CustomMessageTypes.h" #define MAX_SEED_STRING_SIZE 1024 -#define FOREST_TEMPLE_SMALL_KEY_MAX (ResourceMgr_IsSceneMasterQuest(SCENE_FOREST_TEMPLE) ? 6 : 5) -#define FIRE_TEMPLE_SMALL_KEY_MAX (ResourceMgr_IsSceneMasterQuest(SCENE_FIRE_TEMPLE) ? 5 : 8) -#define WATER_TEMPLE_SMALL_KEY_MAX (ResourceMgr_IsSceneMasterQuest(SCENE_WATER_TEMPLE) ? 2 : 6) -#define SPIRIT_TEMPLE_SMALL_KEY_MAX (ResourceMgr_IsSceneMasterQuest(SCENE_SPIRIT_TEMPLE) ? 7 : 5) -#define SHADOW_TEMPLE_SMALL_KEY_MAX (ResourceMgr_IsSceneMasterQuest(SCENE_SHADOW_TEMPLE) ? 6 : 5) -#define BOTTOM_OF_THE_WELL_SMALL_KEY_MAX (ResourceMgr_IsSceneMasterQuest(SCENE_BOTTOM_OF_THE_WELL) ? 2 : 3) -#define GERUDO_TRAINING_GROUND_SMALL_KEY_MAX (ResourceMgr_IsSceneMasterQuest(SCENE_GERUDO_TRAINING_GROUND) ? 3 : 9) -#define GERUDO_FORTRESS_SMALL_KEY_MAX \ - (OTRGlobals::Instance->gRandoContext->GetOption(RSK_GERUDO_FORTRESS).Is(RO_GF_CARPENTERS_FAST) ? 1 \ - : OTRGlobals::Instance->gRandoContext->GetOption(RSK_GERUDO_FORTRESS).Is(RO_GF_CARPENTERS_FREE) ? 0 \ - : 4) -#define THIEVES_HIDEOUT_DOOR_FLAGS \ - (OTRGlobals::Instance->gRandoContext->GetOption(RSK_GERUDO_FORTRESS).Is(RO_GF_CARPENTERS_FAST) \ - ? std::vector{ 1 } \ - : OTRGlobals::Instance->gRandoContext->GetOption(RSK_GERUDO_FORTRESS).Is(RO_GF_CARPENTERS_FREE) \ - ? std::vector{} \ - : std::vector{ 1, 2, 3, 4 }) -#define GANONS_CASTLE_SMALL_KEY_MAX (ResourceMgr_IsSceneMasterQuest(SCENE_INSIDE_GANONS_CASTLE) ? 3 : 2) -#define TREASURE_GAME_SMALL_KEY_MAX 6 class Randomizer { private: diff --git a/soh/soh/Enhancements/randomizer/randomizer_item_tracker.cpp b/soh/soh/Enhancements/randomizer/randomizer_item_tracker.cpp index 248dab9c2d..5829a62ac2 100644 --- a/soh/soh/Enhancements/randomizer/randomizer_item_tracker.cpp +++ b/soh/soh/Enhancements/randomizer/randomizer_item_tracker.cpp @@ -592,53 +592,17 @@ ItemTrackerNumbers GetItemCurrentAndMax(ItemTrackerItem item) { // Though the ammo/capacity naming doesn't really make sense for keys, we are // hijacking the same system to display key counts as there are enough similarities result.currentAmmo = MAX(gSaveContext.inventory.dungeonKeys[item.data], 0); - if (item.data == SCENE_THIEVES_HIDEOUT) { - std::vector DoorFlags = THIEVES_HIDEOUT_DOOR_FLAGS; - result.currentCapacity = - Rando::FindTotalSmallKeys(&gSaveContext, SCENE_THIEVES_HIDEOUT, &DoorFlags); - result.maxCapacity = GERUDO_FORTRESS_SMALL_KEY_MAX; - } else { - result.currentCapacity = OTRGlobals::Instance->gRandoContext->GetDungeons() - ->GetDungeonFromScene(item.data) - ->GetTotalSmallKeys(&gSaveContext); - switch (item.data) { - case SCENE_FOREST_TEMPLE: - result.maxCapacity = FOREST_TEMPLE_SMALL_KEY_MAX; - break; - case SCENE_FIRE_TEMPLE: - result.maxCapacity = FIRE_TEMPLE_SMALL_KEY_MAX; - if (IS_RANDO && - !(OTRGlobals::Instance->gRandoContext->GetOption(RSK_KEYSANITY) - .Is(RO_DUNGEON_ITEM_LOC_ANYWHERE) || - OTRGlobals::Instance->gRandoContext->GetOption(RSK_KEYSANITY) - .Is(RO_DUNGEON_ITEM_LOC_OVERWORLD) || - OTRGlobals::Instance->gRandoContext->GetOption(RSK_KEYSANITY) - .Is(RO_DUNGEON_ITEM_LOC_ANY_DUNGEON)) && - OTRGlobals::Instance->gRandoContext->GetDungeon(Rando::FIRE_TEMPLE)->IsVanilla()) { - result.currentCapacity = result.currentCapacity - 1; - } - break; - case SCENE_WATER_TEMPLE: - result.maxCapacity = WATER_TEMPLE_SMALL_KEY_MAX; - break; - case SCENE_SPIRIT_TEMPLE: - result.maxCapacity = SPIRIT_TEMPLE_SMALL_KEY_MAX; - break; - case SCENE_SHADOW_TEMPLE: - result.maxCapacity = SHADOW_TEMPLE_SMALL_KEY_MAX; - break; - case SCENE_BOTTOM_OF_THE_WELL: - result.maxCapacity = BOTTOM_OF_THE_WELL_SMALL_KEY_MAX; - break; - case SCENE_GERUDO_TRAINING_GROUND: - result.maxCapacity = GERUDO_TRAINING_GROUND_SMALL_KEY_MAX; - break; - case SCENE_INSIDE_GANONS_CASTLE: - result.maxCapacity = GANONS_CASTLE_SMALL_KEY_MAX; - break; - } - break; + result.currentCapacity = Rando::GetSceneTotalSmallKeys(&gSaveContext, (SceneID)item.data); + result.maxCapacity = Rando::GetSceneSmallKeyMax((SceneID)item.data); + if (item.data == SCENE_FIRE_TEMPLE && IS_RANDO && + !(OTRGlobals::Instance->gRandoContext->GetOption(RSK_KEYSANITY).Is(RO_DUNGEON_ITEM_LOC_ANYWHERE) || + OTRGlobals::Instance->gRandoContext->GetOption(RSK_KEYSANITY).Is(RO_DUNGEON_ITEM_LOC_OVERWORLD) || + OTRGlobals::Instance->gRandoContext->GetOption(RSK_KEYSANITY) + .Is(RO_DUNGEON_ITEM_LOC_ANY_DUNGEON)) && + OTRGlobals::Instance->gRandoContext->GetDungeon(Rando::FIRE_TEMPLE)->IsVanilla()) { + result.currentCapacity--; } + break; } } else if (item.kind == ITEM_KIND_QUEST && item.id == QUEST_SKULL_TOKEN) { result.maxCapacity = result.currentCapacity = 100; diff --git a/soh/soh/Enhancements/randomizer/savefile.cpp b/soh/soh/Enhancements/randomizer/savefile.cpp index 52469e2ef6..406940be32 100644 --- a/soh/soh/Enhancements/randomizer/savefile.cpp +++ b/soh/soh/Enhancements/randomizer/savefile.cpp @@ -3,6 +3,7 @@ #include "soh/ResourceManagerHelpers.h" #include "soh/Enhancements/game-interactor/GameInteractor.h" #include "soh/Enhancements/randomizer/bean_patches.h" +#include "soh/Enhancements/randomizer/dungeon.h" #include "soh/Enhancements/randomizer/logic.h" #include "soh/Enhancements/randomizer/randomizer.h" @@ -379,22 +380,13 @@ void SetStartingItems() { } if (Randomizer_GetSettingValue(RSK_KEYSANITY) == RO_DUNGEON_ITEM_LOC_STARTWITH) { - gSaveContext.inventory.dungeonKeys[SCENE_FOREST_TEMPLE] = FOREST_TEMPLE_SMALL_KEY_MAX; // Forest - gSaveContext.ship.stats.dungeonKeys[SCENE_FOREST_TEMPLE] = FOREST_TEMPLE_SMALL_KEY_MAX; // Forest - gSaveContext.inventory.dungeonKeys[SCENE_FIRE_TEMPLE] = FIRE_TEMPLE_SMALL_KEY_MAX; // Fire - gSaveContext.ship.stats.dungeonKeys[SCENE_FIRE_TEMPLE] = FIRE_TEMPLE_SMALL_KEY_MAX; // Fire - gSaveContext.inventory.dungeonKeys[SCENE_WATER_TEMPLE] = WATER_TEMPLE_SMALL_KEY_MAX; // Water - gSaveContext.ship.stats.dungeonKeys[SCENE_WATER_TEMPLE] = WATER_TEMPLE_SMALL_KEY_MAX; // Water - gSaveContext.inventory.dungeonKeys[SCENE_SPIRIT_TEMPLE] = SPIRIT_TEMPLE_SMALL_KEY_MAX; // Spirit - gSaveContext.ship.stats.dungeonKeys[SCENE_SPIRIT_TEMPLE] = SPIRIT_TEMPLE_SMALL_KEY_MAX; // Spirit - gSaveContext.inventory.dungeonKeys[SCENE_SHADOW_TEMPLE] = SHADOW_TEMPLE_SMALL_KEY_MAX; // Shadow - gSaveContext.ship.stats.dungeonKeys[SCENE_SHADOW_TEMPLE] = SHADOW_TEMPLE_SMALL_KEY_MAX; // Shadow - gSaveContext.inventory.dungeonKeys[SCENE_BOTTOM_OF_THE_WELL] = BOTTOM_OF_THE_WELL_SMALL_KEY_MAX; // BotW - gSaveContext.ship.stats.dungeonKeys[SCENE_BOTTOM_OF_THE_WELL] = BOTTOM_OF_THE_WELL_SMALL_KEY_MAX; // BotW - gSaveContext.inventory.dungeonKeys[SCENE_GERUDO_TRAINING_GROUND] = GERUDO_TRAINING_GROUND_SMALL_KEY_MAX; // GTG - gSaveContext.ship.stats.dungeonKeys[SCENE_GERUDO_TRAINING_GROUND] = GERUDO_TRAINING_GROUND_SMALL_KEY_MAX; // GTG - gSaveContext.inventory.dungeonKeys[SCENE_INSIDE_GANONS_CASTLE] = GANONS_CASTLE_SMALL_KEY_MAX; // Ganon - gSaveContext.ship.stats.dungeonKeys[SCENE_INSIDE_GANONS_CASTLE] = GANONS_CASTLE_SMALL_KEY_MAX; // Ganon + for (Rando::DungeonInfo* dungeon : Rando::Context::GetInstance()->GetDungeons()->GetDungeonList()) { + uint8_t keys = Rando::GetSceneSmallKeyMax(dungeon->GetScene()); + if (keys > 0) { + gSaveContext.inventory.dungeonKeys[dungeon->GetScene()] = keys; + gSaveContext.ship.stats.dungeonKeys[dungeon->GetScene()] = keys; + } + } } else if (Randomizer_GetSettingValue(RSK_KEYSANITY) == RO_DUNGEON_ITEM_LOC_VANILLA) { // Logic cannot handle vanilla key layout in some dungeons // this is because vanilla expects the dungeon major item to be diff --git a/soh/soh/SohGui/SohMenuRandomizer.cpp b/soh/soh/SohGui/SohMenuRandomizer.cpp index d7fdedfc8a..8bf8f5021f 100644 --- a/soh/soh/SohGui/SohMenuRandomizer.cpp +++ b/soh/soh/SohGui/SohMenuRandomizer.cpp @@ -760,12 +760,6 @@ void SohMenu::AddMenuRandomizer() { .Options(CheckboxOptions() .Tooltip("When obtaining Rupees, randomize what the Rupee is called in the textbox.") .DefaultValue(true)); - AddWidget(path, "Use Custom Key Models", WIDGET_CVAR_CHECKBOX) - .CVar(CVAR_RANDOMIZER_ENHANCEMENT("CustomKeyModels")) - .Options( - CheckboxOptions() - .Tooltip("Use custom graphics for Dungeon Keys, Big and Small, so that they can be easily told apart.") - .DefaultValue(true)); AddWidget(path, "Map & Compass Colors Match Dungeon", WIDGET_CVAR_CHECKBOX) .CVar(CVAR_RANDOMIZER_ENHANCEMENT("ColoredMapsAndCompasses")) .Options( diff --git a/soh/soh/config/ConfigUpdaters.cpp b/soh/soh/config/ConfigUpdaters.cpp index 996f064adc..61db0038b1 100644 --- a/soh/soh/config/ConfigUpdaters.cpp +++ b/soh/soh/config/ConfigUpdaters.cpp @@ -1455,6 +1455,7 @@ static const Migration version7Migrations[] = { { "gRandoSettings.LacsDungeonCount", "gRandoSettings.GbkDungeonCount" }, { "gRandoSettings.LacsTokenCount", "gRandoSettings.GbkTokenCount" }, { "gRandoSettings.LacsRewardOptions", "gRandoSettings.GbkRewardOptions" }, + { "gRandoEnhancements.CustomKeyModels", nullptr }, { nullptr, nullptr }, };