mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2025-07-31 03:50:37 -07:00
Change Compass Colors Match Dungeon
to Map & Compass Colors Match Dungeon
(#5042)
* Colored maps & compasses with shipinit * Update SohMenuBar.cpp * Post-merge fixes * Whoops
This commit is contained in:
parent
a6ff511af5
commit
79b53e5920
10 changed files with 115 additions and 57 deletions
|
@ -4,8 +4,8 @@
|
|||
#define GameInteractor_h
|
||||
|
||||
#include "libultraship/libultraship.h"
|
||||
#include "GameInteractionEffect.h"
|
||||
#include "vanilla-behavior/GIVanillaBehavior.h"
|
||||
#include "GameInteractionEffect.h"
|
||||
#include "soh/Enhancements/item-tables/ItemTableTypes.h"
|
||||
#include <z64.h>
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
#pragma once
|
||||
|
||||
#include "vanilla-behavior/GIVanillaBehavior.h"
|
||||
#include "GameInteractor.h"
|
||||
#include <stdarg.h>
|
||||
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
#pragma once
|
||||
|
||||
#ifndef GI_VANILLA_BEHAVIOR_H
|
||||
#define GI_VANILLA_BEHAVIOR_H
|
||||
|
||||
typedef enum {
|
||||
// #### `result`
|
||||
// ```c
|
||||
|
@ -95,10 +100,10 @@ typedef enum {
|
|||
// #### `args`
|
||||
// - `*BgDyYoseizo`
|
||||
VB_BE_ELIGIBLE_FOR_GREAT_FAIRY_REWARD,
|
||||
|
||||
|
||||
// #### `result`
|
||||
// ```c
|
||||
// CHECK_QUEST_ITEM(QUEST_MEDALLION_SPIRIT) &&
|
||||
// CHECK_QUEST_ITEM(QUEST_MEDALLION_SPIRIT) &&
|
||||
// CHECK_QUEST_ITEM(QUEST_MEDALLION_SHADOW) &&
|
||||
// LINK_IS_ADULT &&
|
||||
// !Flags_GetEventChkInf(EVENTCHKINF_RETURNED_TO_TEMPLE_OF_TIME_WITH_ALL_MEDALLIONS) &&
|
||||
|
@ -118,11 +123,11 @@ typedef enum {
|
|||
|
||||
// #### `result`
|
||||
// ```c
|
||||
// (gSaveContext.entranceIndex == ENTR_KAKARIKO_VILLAGE_FRONT_GATE) &&
|
||||
// (gSaveContext.entranceIndex == ENTR_KAKARIKO_VILLAGE_FRONT_GATE) &&
|
||||
// LINK_IS_ADULT &&
|
||||
// Flags_GetEventChkInf(EVENTCHKINF_USED_FOREST_TEMPLE_BLUE_WARP) &&
|
||||
// Flags_GetEventChkInf(EVENTCHKINF_USED_FOREST_TEMPLE_BLUE_WARP) &&
|
||||
// Flags_GetEventChkInf(EVENTCHKINF_USED_FIRE_TEMPLE_BLUE_WARP) &&
|
||||
// Flags_GetEventChkInf(EVENTCHKINF_USED_WATER_TEMPLE_BLUE_WARP) &&
|
||||
// Flags_GetEventChkInf(EVENTCHKINF_USED_WATER_TEMPLE_BLUE_WARP) &&
|
||||
// !Flags_GetEventChkInf(EVENTCHKINF_BONGO_BONGO_ESCAPED_FROM_WELL)
|
||||
// ```
|
||||
// #### `args`
|
||||
|
@ -473,7 +478,7 @@ typedef enum {
|
|||
// and
|
||||
// ```c
|
||||
// EnGe2_CheckCarpentersFreed()
|
||||
// ```
|
||||
// ```
|
||||
// #### `args`
|
||||
// - None
|
||||
VB_GERUDOS_BE_FRIENDLY,
|
||||
|
@ -1268,7 +1273,7 @@ typedef enum {
|
|||
// #### `result`
|
||||
// Close enough & various cutscene checks
|
||||
// ```c
|
||||
// (func_80AEC5FC(this, play)) && (!Play_InCsMode(play)) &&
|
||||
// (func_80AEC5FC(this, play)) && (!Play_InCsMode(play)) &&
|
||||
// (!(player->stateFlags1 & (PLAYER_STATE1_HANGING_OFF_LEDGE | PLAYER_STATE1_CLIMBING_LEDGE | PLAYER_STATE1_CLIMBING_LADDER))) &&
|
||||
// (player->actor.bgCheckFlags & 1)
|
||||
// ```
|
||||
|
@ -1697,25 +1702,25 @@ typedef enum {
|
|||
// #### `args`
|
||||
// ##### In `z_boss_dodongo.c`:
|
||||
// - `*BossDodongo`
|
||||
//
|
||||
//
|
||||
// ##### In `z_boss_fd2.c`
|
||||
// - `*BossFd2`
|
||||
//
|
||||
//
|
||||
// ##### In `z_boss_ganondrof.c`:
|
||||
// - `*BossGanondrof`
|
||||
//
|
||||
//
|
||||
// ##### In `z_boss_goma.c`:
|
||||
// - `*BossGoma`
|
||||
//
|
||||
//
|
||||
// ##### In `z_boss_mo.c`:
|
||||
// - `*BossMo`
|
||||
//
|
||||
//
|
||||
// ##### In `z_boss_sst.c`:
|
||||
// - `*BossSst`
|
||||
//
|
||||
//
|
||||
// ##### In `z_boss_tw.c`:
|
||||
// - `*BossTw`
|
||||
//
|
||||
//
|
||||
// ##### In `z_boss_va.c`:
|
||||
// - `*BossVa`
|
||||
VB_SPAWN_BLUE_WARP,
|
||||
|
@ -1860,7 +1865,7 @@ typedef enum {
|
|||
// #### `args`
|
||||
// - `*EnMk`
|
||||
VB_USE_EYEDROP_DIALOGUE,
|
||||
|
||||
|
||||
// #### `result`
|
||||
// ```c
|
||||
// true
|
||||
|
@ -1869,3 +1874,5 @@ typedef enum {
|
|||
// - `*EnWonderTalk2`
|
||||
VB_WONDER_TALK,
|
||||
} GIVanillaBehavior;
|
||||
|
||||
#endif
|
||||
|
|
|
@ -16,7 +16,6 @@
|
|||
#include "soh/Enhancements/timesaver_hook_handlers.h"
|
||||
#include "soh/Enhancements/TimeSavers/TimeSavers.h"
|
||||
#include "soh/Enhancements/randomizer/hook_handlers.h"
|
||||
#include "objects/object_gi_compass/object_gi_compass.h"
|
||||
|
||||
#include "src/overlays/actors/ovl_En_Bb/z_en_bb.h"
|
||||
#include "src/overlays/actors/ovl_En_Dekubaba/z_en_dekubaba.h"
|
||||
|
@ -1000,26 +999,6 @@ void RegisterPauseMenuHooks() {
|
|||
});
|
||||
}
|
||||
|
||||
extern "C" u8 Randomizer_GetSettingValue(RandomizerSettingKey randoSettingKey);
|
||||
|
||||
void PatchCompasses() {
|
||||
s8 compassesCanBeOutsideDungeon = IS_RANDO && DUNGEON_ITEMS_CAN_BE_OUTSIDE_DUNGEON(RSK_SHUFFLE_MAPANDCOMPASS);
|
||||
s8 isColoredCompassesEnabled = compassesCanBeOutsideDungeon && CVarGetInteger(CVAR_RANDOMIZER_ENHANCEMENT("MatchCompassColors"), 1);
|
||||
if (isColoredCompassesEnabled) {
|
||||
ResourceMgr_PatchGfxByName(gGiCompassDL, "Compass_PrimColor", 5, gsDPNoOp());
|
||||
ResourceMgr_PatchGfxByName(gGiCompassDL, "Compass_EnvColor", 6, gsDPNoOp());
|
||||
} else {
|
||||
ResourceMgr_UnpatchGfxByName(gGiCompassDL, "Compass_PrimColor");
|
||||
ResourceMgr_UnpatchGfxByName(gGiCompassDL, "Compass_EnvColor");
|
||||
}
|
||||
}
|
||||
|
||||
void RegisterRandomizerCompasses() {
|
||||
GameInteractor::Instance->RegisterGameHook<GameInteractor::OnLoadFile>([](int32_t _unused) {
|
||||
PatchCompasses();
|
||||
});
|
||||
}
|
||||
|
||||
void RegisterCustomSkeletons() {
|
||||
static int8_t previousTunic = -1;
|
||||
|
||||
|
@ -1067,7 +1046,6 @@ void InitMods() {
|
|||
RegisterRandomizedEnemySizes();
|
||||
RegisterOpenAllHours();
|
||||
RegisterToTMedallions();
|
||||
RegisterRandomizerCompasses();
|
||||
NameTag_RegisterHooks();
|
||||
RegisterFloorSwitchesHook();
|
||||
RegisterPatchHandHandler();
|
||||
|
|
|
@ -11,12 +11,11 @@ void UpdateDirtPathFixState(int32_t sceneNum);
|
|||
void UpdateMirrorModeState(int32_t sceneNum);
|
||||
void UpdateHurtContainerModeState(bool newState);
|
||||
void PatchToTMedallions();
|
||||
void PatchCompasses();
|
||||
void UpdatePermanentHeartLossState();
|
||||
void UpdateHyperEnemiesState();
|
||||
void UpdateHyperBossesState();
|
||||
void InitMods();
|
||||
void UpdatePatchHand();
|
||||
void UpdatePatchHand();
|
||||
void SwitchAge();
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
|
43
soh/soh/Enhancements/randomizer/ColoredMapsAndCompasses.cpp
Normal file
43
soh/soh/Enhancements/randomizer/ColoredMapsAndCompasses.cpp
Normal file
|
@ -0,0 +1,43 @@
|
|||
#include <libultraship/bridge.h>
|
||||
#include "soh/Enhancements/game-interactor/GameInteractor.h"
|
||||
#include "soh/ResourceManagerHelpers.h"
|
||||
#include "soh/ShipInit.hpp"
|
||||
#include "z64save.h"
|
||||
#include "objects/object_gi_compass/object_gi_compass.h"
|
||||
#include "objects/object_gi_map/object_gi_map.h"
|
||||
|
||||
extern "C" {
|
||||
extern SaveContext gSaveContext;
|
||||
#include "variables.h"
|
||||
#include "macros.h"
|
||||
u8 Randomizer_GetSettingValue(RandomizerSettingKey randoSettingKey);
|
||||
}
|
||||
|
||||
#define CVAR_COLORED_MAPS_AND_COMPASSES_NAME CVAR_RANDOMIZER_ENHANCEMENT("ColoredMapsAndCompasses")
|
||||
#define CVAR_COLORED_MAPS_AND_COMPASSES_DEFAULT 1
|
||||
#define CVAR_COLORED_MAPS_AND_COMPASSES_VALUE CVarGetInteger(CVAR_COLORED_MAPS_AND_COMPASSES_NAME, CVAR_COLORED_MAPS_AND_COMPASSES_DEFAULT)
|
||||
|
||||
void OnLoadFileColoredMapsAndCompasses(int32_t _) {
|
||||
s8 mapsAndCompassesCanBeOutsideDungeon = IS_RANDO && DUNGEON_ITEMS_CAN_BE_OUTSIDE_DUNGEON(RSK_SHUFFLE_MAPANDCOMPASS);
|
||||
s8 isColoredMapsAndCompassesEnabled = mapsAndCompassesCanBeOutsideDungeon && CVAR_COLORED_MAPS_AND_COMPASSES_VALUE;
|
||||
if (isColoredMapsAndCompassesEnabled) {
|
||||
ResourceMgr_PatchGfxByName(gGiDungeonMapDL, "Map_PrimColor", 5, gsDPNoOp());
|
||||
ResourceMgr_PatchGfxByName(gGiDungeonMapDL, "Map_EnvColor", 6, gsDPNoOp());
|
||||
ResourceMgr_PatchGfxByName(gGiCompassDL, "Compass_PrimColor", 5, gsDPNoOp());
|
||||
ResourceMgr_PatchGfxByName(gGiCompassDL, "Compass_EnvColor", 6, gsDPNoOp());
|
||||
} else {
|
||||
ResourceMgr_UnpatchGfxByName(gGiDungeonMapDL, "Map_PrimColor");
|
||||
ResourceMgr_UnpatchGfxByName(gGiDungeonMapDL, "Map_EnvColor");
|
||||
ResourceMgr_UnpatchGfxByName(gGiCompassDL, "Compass_PrimColor");
|
||||
ResourceMgr_UnpatchGfxByName(gGiCompassDL, "Compass_EnvColor");
|
||||
}
|
||||
}
|
||||
|
||||
void RegisterColoredMapsAndCompasses() {
|
||||
COND_HOOK(OnLoadFile, CVAR_COLORED_MAPS_AND_COMPASSES_VALUE, OnLoadFileColoredMapsAndCompasses)
|
||||
|
||||
//Also need to call it directly to patch/unpatch on cvar change
|
||||
OnLoadFileColoredMapsAndCompasses(0);
|
||||
}
|
||||
|
||||
static RegisterShipInitFunc initFunc(RegisterColoredMapsAndCompasses, { CVAR_COLORED_MAPS_AND_COMPASSES_NAME });
|
|
@ -11,6 +11,7 @@
|
|||
#include "objects/object_gi_key/object_gi_key.h"
|
||||
#include "objects/object_gi_bosskey/object_gi_bosskey.h"
|
||||
#include "objects/object_gi_compass/object_gi_compass.h"
|
||||
#include "objects/object_gi_map/object_gi_map.h"
|
||||
#include "objects/object_gi_hearts/object_gi_hearts.h"
|
||||
#include "objects/object_gi_scale/object_gi_scale.h"
|
||||
#include "objects/object_gi_fire/object_gi_fire.h"
|
||||
|
@ -131,15 +132,35 @@ extern "C" void Randomizer_DrawSmallKey(PlayState* play, GetItemEntry* getItemEn
|
|||
CLOSE_DISPS(play->state.gfxCtx);
|
||||
}
|
||||
|
||||
extern "C" {
|
||||
void GetItem_DrawCompass(PlayState* play, s16 drawId);
|
||||
void ResourceMgr_PatchGfxByName(const char* path, const char* patchName, int index, Gfx instruction);
|
||||
void ResourceMgr_UnpatchGfxByName(const char* path, const char* patchName);
|
||||
extern "C" void Randomizer_DrawMap(PlayState* play, GetItemEntry* getItemEntry) {
|
||||
s16 color_slot = getItemEntry->drawItemId - RG_DEKU_TREE_MAP;
|
||||
s16 colors[12][3] = {
|
||||
{ 4, 100, 46 }, // Deku Tree
|
||||
{ 140, 30, 30 }, // Dodongo's Cavern
|
||||
{ 30, 60, 255 }, // Jabu Jabu's Belly
|
||||
{ 4, 195, 46 }, // Forest Temple
|
||||
{ 237, 95, 95 }, // Fire Temple
|
||||
{ 85, 180, 223 }, // Water Temple
|
||||
{ 222, 158, 47 }, // Spirit Temple
|
||||
{ 126, 16, 177 }, // Shadow Temple
|
||||
{ 227, 110, 255 }, // Bottom of the Well
|
||||
{ 0, 255, 255 }, // Ice Cavern
|
||||
};
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
||||
gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx, (char*)__FILE__, __LINE__), G_MTX_MODELVIEW | G_MTX_LOAD);
|
||||
|
||||
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, colors[color_slot][0], colors[color_slot][1], colors[color_slot][2], 255);
|
||||
|
||||
gSPDisplayList(POLY_OPA_DISP++, (Gfx*)gGiDungeonMapDL);
|
||||
|
||||
CLOSE_DISPS(play->state.gfxCtx);
|
||||
}
|
||||
|
||||
extern "C" void Randomizer_DrawCompass(PlayState* play, GetItemEntry* getItemEntry) {
|
||||
|
||||
s16 color_slot = getItemEntry->getItemId - RG_DEKU_TREE_COMPASS;
|
||||
s16 color_slot = getItemEntry->drawItemId - RG_DEKU_TREE_COMPASS;
|
||||
s16 colors[12][3] = {
|
||||
{ 4, 100, 46 }, // Deku Tree
|
||||
{ 140, 30, 30 }, // Dodongo's Cavern
|
||||
|
@ -158,8 +179,7 @@ extern "C" void Randomizer_DrawCompass(PlayState* play, GetItemEntry* getItemEnt
|
|||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
||||
gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx, (char*)__FILE__, __LINE__),
|
||||
G_MTX_MODELVIEW | G_MTX_LOAD);
|
||||
gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx, (char*)__FILE__, __LINE__), G_MTX_MODELVIEW | G_MTX_LOAD);
|
||||
|
||||
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, colors[color_slot][0], colors[color_slot][1], colors[color_slot][2], 255);
|
||||
gDPSetEnvColor(POLY_OPA_DISP++, colors[color_slot][0] / 2, colors[color_slot][1] / 2, colors[color_slot][2] / 2, 255);
|
||||
|
@ -167,8 +187,7 @@ extern "C" void Randomizer_DrawCompass(PlayState* play, GetItemEntry* getItemEnt
|
|||
gSPDisplayList(POLY_OPA_DISP++, (Gfx*)gGiCompassDL);
|
||||
|
||||
POLY_XLU_DISP = Gfx_SetupDL(POLY_XLU_DISP, 5);
|
||||
gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx, (char*)__FILE__, __LINE__),
|
||||
G_MTX_MODELVIEW | G_MTX_LOAD);
|
||||
gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx, (char*)__FILE__, __LINE__), G_MTX_MODELVIEW | G_MTX_LOAD);
|
||||
gSPDisplayList(POLY_XLU_DISP++, (Gfx*)gGiCompassGlassDL);
|
||||
|
||||
CLOSE_DISPS(play->state.gfxCtx);
|
||||
|
|
|
@ -10,6 +10,7 @@ typedef struct PlayState PlayState;
|
|||
extern "C" {
|
||||
#endif
|
||||
void Randomizer_DrawSmallKey(PlayState* play, GetItemEntry* getItemEntry);
|
||||
void Randomizer_DrawMap(PlayState* play, GetItemEntry* getItemEntry);
|
||||
void Randomizer_DrawCompass(PlayState* play, GetItemEntry* getItemEntry);
|
||||
void Randomizer_DrawKeyRing(PlayState* play, GetItemEntry* getItemEntry);
|
||||
void Randomizer_DrawBossKey(PlayState* play, GetItemEntry* getItemEntry);
|
||||
|
|
|
@ -98,15 +98,25 @@ void Rando::StaticData::InitItemTable() {
|
|||
itemTable[RG_PRELUDE_OF_LIGHT] = Item(RG_PRELUDE_OF_LIGHT, Text{ "Prelude of Light", "Prélude de la Lumière", "Kantate des Lichts" }, ITEMTYPE_SONG, 0xC0, true, LOGIC_PRELUDE_OF_LIGHT, RHT_PRELUDE_OF_LIGHT, ITEM_SONG_PRELUDE, OBJECT_GI_MELODY, GID_SONG_PRELUDE, 0x78, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_NONE);
|
||||
// Maps and Compasses
|
||||
itemTable[RG_DEKU_TREE_MAP] = Item(RG_DEKU_TREE_MAP, Text{ "Great Deku Tree Map", "Carte de l'Arbre Mojo", "Karte des Deku-Baums" }, ITEMTYPE_MAP, 0xA5, false, LOGIC_MAP_DEKU_TREE, RHT_DEKU_TREE_MAP, RG_DEKU_TREE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER);
|
||||
itemTable[RG_DEKU_TREE_MAP].SetCustomDrawFunc(Randomizer_DrawMap);
|
||||
itemTable[RG_DODONGOS_CAVERN_MAP] = Item(RG_DODONGOS_CAVERN_MAP, Text{ "Dodongo's Cavern Map", "Carte de la Caverne Dodongo", "Karte der Dodongo-Höhle" }, ITEMTYPE_MAP, 0xA6, false, LOGIC_MAP_DODONGOS_CAVERN, RHT_DODONGOS_CAVERN_MAP, RG_DODONGOS_CAVERN_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER);
|
||||
itemTable[RG_DODONGOS_CAVERN_MAP].SetCustomDrawFunc(Randomizer_DrawMap);
|
||||
itemTable[RG_JABU_JABUS_BELLY_MAP] = Item(RG_JABU_JABUS_BELLY_MAP, Text{ "Jabu-Jabu's Belly Map", "Carte du Ventre de Jabu-Jabu", "Karte des Jabu-Jabu-Bauchs" }, ITEMTYPE_MAP, 0xA7, false, LOGIC_MAP_JABU_JABUS_BELLY, RHT_JABU_JABUS_BELLY_MAP, RG_JABU_JABUS_BELLY_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER);
|
||||
itemTable[RG_JABU_JABUS_BELLY_MAP].SetCustomDrawFunc(Randomizer_DrawMap);
|
||||
itemTable[RG_FOREST_TEMPLE_MAP] = Item(RG_FOREST_TEMPLE_MAP, Text{ "Forest Temple Map", "Carte du Temple de la Forêt", "Karte des Waldtempels" }, ITEMTYPE_MAP, 0xA8, false, LOGIC_MAP_FOREST_TEMPLE, RHT_FOREST_TEMPLE_MAP, RG_FOREST_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER);
|
||||
itemTable[RG_FOREST_TEMPLE_MAP].SetCustomDrawFunc(Randomizer_DrawMap);
|
||||
itemTable[RG_FIRE_TEMPLE_MAP] = Item(RG_FIRE_TEMPLE_MAP, Text{ "Fire Temple Map", "Carte due Temple de Feu", "Karte des Feuertempels" }, ITEMTYPE_MAP, 0xA9, false, LOGIC_MAP_FIRE_TEMPLE, RHT_FIRE_TEMPLE_MAP, RG_FIRE_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER);
|
||||
itemTable[RG_FIRE_TEMPLE_MAP].SetCustomDrawFunc(Randomizer_DrawMap);
|
||||
itemTable[RG_WATER_TEMPLE_MAP] = Item(RG_WATER_TEMPLE_MAP, Text{ "Water Temple Map", "Carte du Temple de l'Eau", "Karte des Wassertempels" }, ITEMTYPE_MAP, 0xAA, false, LOGIC_MAP_WATER_TEMPLE, RHT_WATER_TEMPLE_MAP, RG_WATER_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER);
|
||||
itemTable[RG_WATER_TEMPLE_MAP].SetCustomDrawFunc(Randomizer_DrawMap);
|
||||
itemTable[RG_SPIRIT_TEMPLE_MAP] = Item(RG_SPIRIT_TEMPLE_MAP, Text{ "Spirit Temple Map", "Carte due Temple de l'Esprit", "Karte des Geistertempels" }, ITEMTYPE_MAP, 0xAB, false, LOGIC_MAP_SPIRIT_TEMPLE, RHT_SPIRIT_TEMPLE_MAP, RG_SPIRIT_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER);
|
||||
itemTable[RG_SPIRIT_TEMPLE_MAP].SetCustomDrawFunc(Randomizer_DrawMap);
|
||||
itemTable[RG_SHADOW_TEMPLE_MAP] = Item(RG_SHADOW_TEMPLE_MAP, Text{ "Shadow Temple Map", "Carte du Temple de l'Ombre", "Karte des Schattentempels" }, ITEMTYPE_MAP, 0xAC, false, LOGIC_MAP_SHADOW_TEMPLE, RHT_SHADOW_TEMPLE_MAP, RG_SHADOW_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER);
|
||||
itemTable[RG_SHADOW_TEMPLE_MAP].SetCustomDrawFunc(Randomizer_DrawMap);
|
||||
itemTable[RG_BOTTOM_OF_THE_WELL_MAP] = Item(RG_BOTTOM_OF_THE_WELL_MAP, Text{ "Bottom of the Well Map", "Carte du Puits", "Karte des Grund des Brunnens" }, ITEMTYPE_MAP, 0xAD, false, LOGIC_MAP_BOTTOM_OF_THE_WELL, RHT_BOTTOM_OF_THE_WELL_MAP, RG_BOTTOM_OF_THE_WELL_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER);
|
||||
itemTable[RG_BOTTOM_OF_THE_WELL_MAP].SetCustomDrawFunc(Randomizer_DrawMap);
|
||||
itemTable[RG_ICE_CAVERN_MAP] = Item(RG_ICE_CAVERN_MAP, Text{ "Ice Cavern Map", "Carte de la Caverne Polaire", "Karte der Eishöhle" }, ITEMTYPE_MAP, 0xAE, false, LOGIC_MAP_ICE_CAVERN, RHT_ICE_CAVERN_MAP, RG_ICE_CAVERN_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER);
|
||||
itemTable[RG_ICE_CAVERN_MAP].SetCustomDrawFunc(Randomizer_DrawMap);
|
||||
itemTable[RG_DEKU_TREE_COMPASS] = Item(RG_DEKU_TREE_COMPASS, Text{ "Great Deku Tree Compass", "Boussole de l'Arbre Mojo", "Kompaß des Deku-Baums" }, ITEMTYPE_COMPASS, 0x9B, false, LOGIC_COMPASS_DEKU_TREE, RHT_DEKU_TREE_COMPASS, RG_DEKU_TREE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER);
|
||||
itemTable[RG_DEKU_TREE_COMPASS].SetCustomDrawFunc(Randomizer_DrawCompass);
|
||||
itemTable[RG_DODONGOS_CAVERN_COMPASS] = Item(RG_DODONGOS_CAVERN_COMPASS, Text{ "Dodongo's Cavern Compass", "Boussole de la Caverne Dodongo", "Kompaß der Dodongo-Höhle" }, ITEMTYPE_COMPASS, 0x9C, false, LOGIC_COMPASS_DODONGOS_CAVERN, RHT_DODONGOS_CAVERN_COMPASS, RG_DODONGOS_CAVERN_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER);
|
||||
|
|
|
@ -37,21 +37,21 @@ void SohMenu::AddMenuRandomizer() {
|
|||
.Options(CheckboxOptions().Tooltip(
|
||||
"Use Custom graphics for Dungeon Keys, Big and Small, so that they can be easily told apart."
|
||||
).DefaultValue(true));
|
||||
AddWidget(path, "Compass Colors Match Dungeon", WIDGET_CVAR_CHECKBOX)
|
||||
.CVar(CVAR_RANDOMIZER_ENHANCEMENT("MatchCompassColors"))
|
||||
AddWidget(path, "Map & Compass Colors Match Dungeon", WIDGET_CVAR_CHECKBOX)
|
||||
.CVar(CVAR_RANDOMIZER_ENHANCEMENT("ColoredMapsAndCompasses"))
|
||||
.PreFunc([](WidgetInfo& info) {
|
||||
info.options->disabled = !(
|
||||
OTRGlobals::Instance->gRandoContext->GetOption(RSK_SHUFFLE_MAPANDCOMPASS).IsNot(RO_DUNGEON_ITEM_LOC_STARTWITH) &&
|
||||
OTRGlobals::Instance->gRandoContext->GetOption(RSK_SHUFFLE_MAPANDCOMPASS).IsNot(RO_DUNGEON_ITEM_LOC_VANILLA) &&
|
||||
OTRGlobals::Instance->gRandoContext->GetOption(RSK_SHUFFLE_MAPANDCOMPASS).IsNot(RO_DUNGEON_ITEM_LOC_OWN_DUNGEON)
|
||||
);
|
||||
info.options->disabledTooltip = "This setting is disabled because a savefile is loaded without "
|
||||
"the compass shuffle settings set to Any Dungeon, Overworld, or Anywhere.";
|
||||
info.options->disabledTooltip = "This setting is disabled because a savefile is loaded without the map & compass\n"
|
||||
"shuffle settings set to \"Any Dungeon\", \"Overworld\" or \"Anywhere\"";
|
||||
})
|
||||
.Options(CheckboxOptions().Tooltip(
|
||||
"Matches the color of compasses to the dungeon they belong to. "
|
||||
"This helps identify compasses from afar and adds a little bit of flair.\n\nThis only "
|
||||
"applies to seeds with compasses shuffled to \"Any Dungeon\", \"Overworld\", or \"Anywhere\"."
|
||||
"Matches the color of maps & compasses to the dungeon they belong to. "
|
||||
"This helps identify maps & compasses from afar and adds a little bit of flair.\n\nThis only "
|
||||
"applies to seeds with maps & compasses shuffled to \"Any Dungeon\", \"Overworld\", or \"Anywhere\"."
|
||||
).DefaultValue(true));
|
||||
AddWidget(path, "Quest Item Fanfares", WIDGET_CVAR_CHECKBOX)
|
||||
.CVar(CVAR_RANDOMIZER_ENHANCEMENT("QuestItemFanfares"))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue