Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion mm/2s2h/Enhancements/Trackers/ItemTracker/ItemTracker.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,9 @@ extern TrackerImageObject GetTextureObject(int16_t itemId, bool isRandoItem) {
case RI_OWL_ZORA_CAPE:
itemObtained = GET_OWL_STATUE_ACTIVATED(OWL_WARP_ZORA_CAPE);
break;
case RI_OWL_HIDDEN:
itemObtained = GET_OWL_STATUE_ACTIVATED(OWL_WARP_HIDDEN);
break;
case RI_SOUL_GOHT:
case RI_SOUL_GYORG:
case RI_SOUL_MAJORA:
Expand Down Expand Up @@ -120,7 +123,7 @@ extern TrackerImageObject GetTextureObject(int16_t itemId, bool isRandoItem) {
(const char*)Rando::StaticData::GetIconTexturePath((RandoItemId)itemId));
randoImageObject.textureDimensions =
ImVec2(ITEM_TEXTURE_SIZE,
itemId >= RI_OWL_CLOCK_TOWN_SOUTH && itemId <= RI_OWL_ZORA_CAPE ? 32.0f : ITEM_TEXTURE_SIZE);
itemId >= RI_OWL_CLOCK_TOWN_SOUTH && itemId <= RI_OWL_HIDDEN ? 32.0f : ITEM_TEXTURE_SIZE);

return randoImageObject;
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ std::map<std::string, std::tuple<int16_t, int16_t, int16_t>> defaultItemLists =
std::map<std::string, std::tuple<int16_t, int16_t, int16_t>> randoItemLists = {
{ "Frogs", { RI_FROG_BLUE, RI_FROG_WHITE, 4 } },
{ "Boss Souls", { RI_SOUL_GOHT, RI_SOUL_TWINMOLD, 5 } },
{ "Owl Statues", { RI_OWL_CLOCK_TOWN_SOUTH, RI_OWL_ZORA_CAPE, 5 } },
{ "Owl Statues", { RI_OWL_CLOCK_TOWN_SOUTH, RI_OWL_HIDDEN, 5 } },
{ "Tingle Maps", { RI_TINGLE_MAP_CLOCK_TOWN, RI_TINGLE_MAP_WOODFALL, 6 } },
{ "Misc", { RI_TRIFORCE_PIECE, RI_TRIFORCE_PIECE, 1 } },
};
Expand Down
2 changes: 2 additions & 0 deletions mm/2s2h/Rando/ConvertItem.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -372,6 +372,8 @@ bool Rando::IsItemObtainable(RandoItemId randoItemId, RandoCheckId randoCheckId)
return !CAN_OWL_WARP(OWL_WARP_WOODFALL);
case RI_OWL_ZORA_CAPE:
return !CAN_OWL_WARP(OWL_WARP_ZORA_CAPE);
case RI_OWL_HIDDEN:
return !CAN_OWL_WARP(OWL_WARP_HIDDEN);
// These items are technically fine to receive again because they don't do anything, but we'll convert them to
// ensure it's clear to the player something didn't go wrong.
// Quest Items
Expand Down
1 change: 1 addition & 0 deletions mm/2s2h/Rando/DrawItem.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -494,6 +494,7 @@ void Rando::DrawItem(RandoItemId randoItemId, Actor* actor) {
case RI_OWL_SOUTHERN_SWAMP:
case RI_OWL_STONE_TOWER:
case RI_OWL_WOODFALL:
case RI_OWL_HIDDEN:
case RI_OWL_ZORA_CAPE:
DrawOwlStatue();
break;
Expand Down
3 changes: 3 additions & 0 deletions mm/2s2h/Rando/GiveItem.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -258,6 +258,9 @@ void Rando::GiveItem(RandoItemId randoItemId) {
case RI_OWL_ZORA_CAPE:
Sram_ActivateOwl(OWL_WARP_ZORA_CAPE);
break;
case RI_OWL_HIDDEN:
Sram_ActivateOwl(OWL_WARP_HIDDEN);
break;
case RI_HEART_CONTAINER:
case RI_HEART_PIECE:
gSaveContext.healthAccumulator = gSaveContext.save.saveInfo.playerData.healthCapacity + 0x10;
Expand Down
20 changes: 10 additions & 10 deletions mm/2s2h/Rando/Logic/Logic.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -62,16 +62,16 @@ static RegisterShipInitFunc initFunc([]() {
},
.exits = { // TO FROM
EXIT(ENTRANCE(SOUTH_CLOCK_TOWN, 0), ONE_WAY_EXIT, true), // Save warp
EXIT(ENTRANCE(SOUTH_CLOCK_TOWN, 9), ONE_WAY_EXIT, CAN_PLAY_SONG(SOARING) && CAN_OWL_WARP(OWL_WARP_CLOCK_TOWN)),
EXIT(ENTRANCE(SOUTHERN_SWAMP_POISONED, 10), ONE_WAY_EXIT, CAN_PLAY_SONG(SOARING) && CAN_OWL_WARP(OWL_WARP_SOUTHERN_SWAMP)),
EXIT(ENTRANCE(WOODFALL, 4), ONE_WAY_EXIT, CAN_PLAY_SONG(SOARING) && CAN_OWL_WARP(OWL_WARP_WOODFALL)),
EXIT(ENTRANCE(MILK_ROAD, 4), ONE_WAY_EXIT, CAN_PLAY_SONG(SOARING) && CAN_OWL_WARP(OWL_WARP_MILK_ROAD)),
EXIT(ENTRANCE(MOUNTAIN_VILLAGE_WINTER, 8), ONE_WAY_EXIT, CAN_PLAY_SONG(SOARING) && CAN_OWL_WARP(OWL_WARP_MOUNTAIN_VILLAGE)),
EXIT(ENTRANCE(SNOWHEAD, 3), ONE_WAY_EXIT, CAN_PLAY_SONG(SOARING) && CAN_OWL_WARP(OWL_WARP_SNOWHEAD)),
EXIT(ENTRANCE(GREAT_BAY_COAST, 11), ONE_WAY_EXIT, CAN_PLAY_SONG(SOARING) && CAN_OWL_WARP(OWL_WARP_GREAT_BAY_COAST)),
EXIT(ENTRANCE(ZORA_CAPE, 6), ONE_WAY_EXIT, CAN_PLAY_SONG(SOARING) && CAN_OWL_WARP(OWL_WARP_ZORA_CAPE)),
EXIT(ENTRANCE(IKANA_CANYON, 4), ONE_WAY_EXIT, CAN_PLAY_SONG(SOARING) && CAN_OWL_WARP(OWL_WARP_IKANA_CANYON)),
EXIT(ENTRANCE(STONE_TOWER, 3), ONE_WAY_EXIT, CAN_PLAY_SONG(SOARING) && CAN_OWL_WARP(OWL_WARP_STONE_TOWER)),
EXIT(ENTRANCE(SOUTH_CLOCK_TOWN, 9), ONE_WAY_EXIT, CAN_PLAY_SONG(SOARING) && (CAN_OWL_WARP(OWL_WARP_CLOCK_TOWN) || CAN_OWL_WARP(OWL_WARP_HIDDEN))),
EXIT(ENTRANCE(SOUTHERN_SWAMP_POISONED, 10), ONE_WAY_EXIT, CAN_PLAY_SONG(SOARING) && (CAN_OWL_WARP(OWL_WARP_SOUTHERN_SWAMP) || CAN_OWL_WARP(OWL_WARP_HIDDEN))),
EXIT(ENTRANCE(WOODFALL, 4), ONE_WAY_EXIT, CAN_PLAY_SONG(SOARING) && (CAN_OWL_WARP(OWL_WARP_WOODFALL) || CAN_OWL_WARP(OWL_WARP_HIDDEN))),
EXIT(ENTRANCE(MILK_ROAD, 4), ONE_WAY_EXIT, CAN_PLAY_SONG(SOARING) && (CAN_OWL_WARP(OWL_WARP_MILK_ROAD) || CAN_OWL_WARP(OWL_WARP_HIDDEN))),
EXIT(ENTRANCE(MOUNTAIN_VILLAGE_WINTER, 8), ONE_WAY_EXIT, CAN_PLAY_SONG(SOARING) && (CAN_OWL_WARP(OWL_WARP_MOUNTAIN_VILLAGE) || CAN_OWL_WARP(OWL_WARP_HIDDEN))),
EXIT(ENTRANCE(SNOWHEAD, 3), ONE_WAY_EXIT, CAN_PLAY_SONG(SOARING) && (CAN_OWL_WARP(OWL_WARP_SNOWHEAD) || CAN_OWL_WARP(OWL_WARP_HIDDEN))),
EXIT(ENTRANCE(GREAT_BAY_COAST, 11), ONE_WAY_EXIT, CAN_PLAY_SONG(SOARING) && (CAN_OWL_WARP(OWL_WARP_GREAT_BAY_COAST) || CAN_OWL_WARP(OWL_WARP_HIDDEN))),
EXIT(ENTRANCE(ZORA_CAPE, 6), ONE_WAY_EXIT, CAN_PLAY_SONG(SOARING) && (CAN_OWL_WARP(OWL_WARP_ZORA_CAPE) || CAN_OWL_WARP(OWL_WARP_HIDDEN))),
EXIT(ENTRANCE(IKANA_CANYON, 4), ONE_WAY_EXIT, CAN_PLAY_SONG(SOARING) && (CAN_OWL_WARP(OWL_WARP_IKANA_CANYON) || CAN_OWL_WARP(OWL_WARP_HIDDEN))),
EXIT(ENTRANCE(STONE_TOWER, 3), ONE_WAY_EXIT, CAN_PLAY_SONG(SOARING) && (CAN_OWL_WARP(OWL_WARP_STONE_TOWER) || CAN_OWL_WARP(OWL_WARP_HIDDEN))),
},
};
}, {});
Expand Down
4 changes: 2 additions & 2 deletions mm/2s2h/Rando/Logic/Regions/Central.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -138,8 +138,8 @@ static RegisterShipInitFunc initFunc([]() {
};
Regions[RR_CLOCK_TOWN_NORTH] = RandoRegion{ .sceneId = SCENE_BACKTOWN,
.checks = {
CHECK(RC_CLOCK_TOWN_NORTH_TINGLE_MAP_01, CAN_USE_PROJECTILE && CAN_AFFORD(RC_CLOCK_TOWN_NORTH_TINGLE_MAP_01)),
CHECK(RC_CLOCK_TOWN_NORTH_TINGLE_MAP_02, CAN_USE_PROJECTILE && CAN_AFFORD(RC_CLOCK_TOWN_NORTH_TINGLE_MAP_02)),
CHECK(RC_CLOCK_TOWN_NORTH_TINGLE_MAP_01, (CAN_USE_PROJECTILE || CAN_USE_SWORD) && CAN_AFFORD(RC_CLOCK_TOWN_NORTH_TINGLE_MAP_01)),
CHECK(RC_CLOCK_TOWN_NORTH_TINGLE_MAP_02, (CAN_USE_PROJECTILE || CAN_USE_SWORD) && CAN_AFFORD(RC_CLOCK_TOWN_NORTH_TINGLE_MAP_02)),
CHECK(RC_CLOCK_TOWN_NORTH_TREE_PIECE_OF_HEART, true),
CHECK(RC_CLOCK_TOWN_NORTH_BOMB_LADY, CAN_USE_SWORD || CAN_BE_ZORA || CAN_BE_GORON),
CHECK(RC_CLOCK_TOWN_BOMBERS_NOTEBOOK, CAN_USE_PROJECTILE), // TODO: This will have to check for access with entrance rando
Expand Down
3 changes: 3 additions & 0 deletions mm/2s2h/Rando/RemoveItem.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -264,6 +264,9 @@ void Rando::RemoveItem(RandoItemId randoItemId) {
case RI_OWL_ZORA_CAPE:
CLEAR_OWL_WARP(OWL_WARP_ZORA_CAPE);
break;
case RI_OWL_HIDDEN:
CLEAR_OWL_WARP(OWL_WARP_HIDDEN);
break;
case RI_TINGLE_MAP_CLOCK_TOWN:
CLEAR_WEEKEVENTREG(WEEKEVENTREG_TINGLE_MAP_BOUGHT_CLOCK_TOWN);
break;
Expand Down
2 changes: 2 additions & 0 deletions mm/2s2h/Rando/StaticData/Items.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,7 @@ std::map<RandoItemId, RandoStaticItem> Items = {
RI(RI_OWL_STONE_TOWER, "the", "Stone Tower Owl Statue", RITYPE_LESSER, ITEM_NONE, GI_NONE, GID_NONE),
RI(RI_OWL_WOODFALL, "the", "Woodfall Owl Statue", RITYPE_LESSER, ITEM_NONE, GI_NONE, GID_NONE),
RI(RI_OWL_ZORA_CAPE, "the", "Zora Cape Owl Statue", RITYPE_LESSER, ITEM_NONE, GI_NONE, GID_NONE),
RI(RI_OWL_HIDDEN, "the", "Hidden Owl Statue", RITYPE_LESSER, ITEM_NONE, GI_NONE, GID_NONE),
RI(RI_PENDANT_OF_MEMORIES, "the", "Pendant of Memories", RITYPE_MAJOR, ITEM_PENDANT_OF_MEMORIES, GI_PENDANT_OF_MEMORIES, GID_PENDANT_OF_MEMORIES),
RI(RI_PICTOGRAPH_BOX, "a", "Pictograph Box", RITYPE_MAJOR, ITEM_PICTOGRAPH_BOX, GI_PICTOGRAPH_BOX, GID_PICTOGRAPH_BOX),
RI(RI_POWDER_KEG, "a", "Powder Keg", RITYPE_MAJOR, ITEM_POWDER_KEG, GI_POWDER_KEG, GID_POWDER_KEG),
Expand Down Expand Up @@ -345,6 +346,7 @@ const char* GetIconTexturePath(RandoItemId randoItemId) {
case RI_OWL_SOUTHERN_SWAMP:
case RI_OWL_STONE_TOWER:
case RI_OWL_WOODFALL:
case RI_OWL_HIDDEN:
case RI_OWL_ZORA_CAPE:
return (const char*)gWorldMapOwlFaceTex;
case RI_TINGLE_MAP_CLOCK_TOWN:
Expand Down
1 change: 1 addition & 0 deletions mm/2s2h/Rando/Types.h
Original file line number Diff line number Diff line change
Expand Up @@ -2412,6 +2412,7 @@ typedef enum {
RI_OWL_STONE_TOWER,
RI_OWL_WOODFALL,
RI_OWL_ZORA_CAPE,
RI_OWL_HIDDEN,
RI_PENDANT_OF_MEMORIES,
RI_PICTOGRAPH_BOX,
RI_POWDER_KEG,
Expand Down
1 change: 1 addition & 0 deletions mm/include/z64scene.h
Original file line number Diff line number Diff line change
Expand Up @@ -607,6 +607,7 @@ typedef enum OwlWarpId {
/* 0x9 */ OWL_WARP_STONE_TOWER,
/* 0xA */ OWL_WARP_ENTRANCE, // Special index for warping to the entrance of a scene
/* 0xB */ OWL_WARP_MAX,
/* 0xF */ OWL_WARP_HIDDEN = 0xF,
/* 0xFF */ OWL_WARP_NONE = 0xFF
} OwlWarpId;

Expand Down
Loading