mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-05-24 06:50:43 -04:00
implement golden wolf checks
This commit is contained in:
@@ -1473,6 +1473,7 @@ set(DUSK_FILES
|
||||
src/dusk/discord_presence.cpp
|
||||
src/dusk/version.cpp
|
||||
# Randomizer files
|
||||
src/dusk/randomizer/game/flags.cpp
|
||||
src/dusk/randomizer/game/flags.h
|
||||
src/dusk/randomizer/game/stages.cpp
|
||||
src/dusk/randomizer/game/stages.h
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
|
||||
#if TARGET_PC
|
||||
#include "d/actor/d_a_alink.h"
|
||||
#include "dusk/randomizer/game/flags.h"
|
||||
#include "dusk/randomizer/game/tools.h"
|
||||
#include "dusk/randomizer/game/verify_item_functions.h"
|
||||
#include "dusk/randomizer/game/stages.h"
|
||||
@@ -188,104 +189,126 @@ int daObjLife_c::create() {
|
||||
|
||||
#if TARGET_PC
|
||||
if (randomizer_IsActive()) {
|
||||
// Overwrite the item for this location in randomizer
|
||||
u32 params = fopAcM_GetParam(this);
|
||||
u8 flag = getSaveBitNo();
|
||||
u8 stageIdx = getStageID();
|
||||
const auto& freestandingOverrides = randomizer_GetContext().mFreestandingItemOverrides;
|
||||
// If we found an override for this freestanding item
|
||||
if (freestandingOverrides.contains(stageIdx) && freestandingOverrides.at(stageIdx).contains(flag)) {
|
||||
// Clear the itemId and set it to out new itemId
|
||||
params &= 0xFFFFFF00;
|
||||
u8 overrideItem = freestandingOverrides.at(stageIdx).at(flag);
|
||||
u8 newItemId = verifyProgressiveItem(overrideItem);
|
||||
params |= newItemId;
|
||||
fopAcM_SetParam(this, params);
|
||||
u8 itemId = params & 0xFF;
|
||||
u8 roomNo = fopAcM_GetRoomNo(this);
|
||||
// If this is a golden wolf replacement, handle it differently
|
||||
if (itemId == dItemNo_Randomizer_ENDING_BLOW_e) {
|
||||
auto goldenWolfFlags = getCurrentGoldenWolfFlags(roomNo);
|
||||
// Don't spawn this item if we haven't howled at the howling stone, or if we've already
|
||||
// obtained the item
|
||||
if ((goldenWolfFlags.howledAtStoneFlag != 0xFFFF && !dComIfGs_isEventBit(goldenWolfFlags.howledAtStoneFlag)) ||
|
||||
dComIfGs_isEventBit(goldenWolfFlags.obtainedItemFlag)) {
|
||||
return cPhs_ERROR_e;
|
||||
}
|
||||
// Store the map marker flag and obtained item flags to turn off/on later if
|
||||
// the player collects the item
|
||||
home.angle.z = goldenWolfFlags.mapMarkerFlag;
|
||||
home.angle.x = static_cast<s16>(goldenWolfFlags.obtainedItemFlag);
|
||||
// Set the overriden item id
|
||||
auto& goldenWolfOverrides = randomizer_GetContext().mGoldenWolfOverrides;
|
||||
itemId = verifyProgressiveItem(goldenWolfOverrides[goldenWolfFlags.obtainedItemFlag]);
|
||||
} else {
|
||||
u8 flag = getSaveBitNo();
|
||||
u8 stageIdx = getStageID();
|
||||
const auto& freestandingOverrides = randomizer_GetContext().mFreestandingItemOverrides;
|
||||
// If we found an override for this freestanding item
|
||||
if (freestandingOverrides.contains(stageIdx) && freestandingOverrides.at(stageIdx).contains(flag)) {
|
||||
// Clear the itemId and set it to out new itemId
|
||||
u8 overrideItem = freestandingOverrides.at(stageIdx).at(flag);
|
||||
itemId = verifyProgressiveItem(overrideItem);
|
||||
}
|
||||
}
|
||||
|
||||
// Also adjust the height of the object depending on the item
|
||||
switch (newItemId) {
|
||||
case dItemNo_Randomizer_MASTER_SWORD_e:
|
||||
case dItemNo_Randomizer_LIGHT_SWORD_e:
|
||||
case dItemNo_Randomizer_WOOD_SHIELD_e:
|
||||
case dItemNo_Randomizer_HYLIA_SHIELD_e:
|
||||
case dItemNo_Randomizer_SHIELD_e:
|
||||
case dItemNo_Randomizer_SPINNER_e:
|
||||
{
|
||||
current.pos.y += 30.f;
|
||||
break;
|
||||
}
|
||||
case dItemNo_Randomizer_WOOD_STICK_e:
|
||||
{
|
||||
current.pos.y += 60.f;
|
||||
break;
|
||||
}
|
||||
case dItemNo_Randomizer_SWORD_e:
|
||||
case dItemNo_Randomizer_MIRROR_PIECE_1_e:
|
||||
case dItemNo_Randomizer_MIRROR_PIECE_2_e:
|
||||
case dItemNo_Randomizer_MIRROR_PIECE_3_e:
|
||||
case dItemNo_Randomizer_MIRROR_PIECE_4_e:
|
||||
case dItemNo_Randomizer_FUSED_SHADOW_1_e:
|
||||
case dItemNo_Randomizer_FUSED_SHADOW_2_e:
|
||||
case dItemNo_Randomizer_FUSED_SHADOW_3_e:
|
||||
case dItemNo_Randomizer_COPY_ROD_e:
|
||||
case dItemNo_Randomizer_COPY_ROD_2_e:
|
||||
{
|
||||
current.pos.y += 50.f;
|
||||
break;
|
||||
}
|
||||
params &= 0xFFFFFF00;
|
||||
params |= itemId;
|
||||
fopAcM_SetParam(this, params);
|
||||
|
||||
case dItemNo_Randomizer_BOW_e:
|
||||
{
|
||||
current.pos.y += 55.f;
|
||||
break;
|
||||
}
|
||||
case dItemNo_Randomizer_BOOMERANG_e:
|
||||
case dItemNo_Randomizer_FISHING_ROD_1_e:
|
||||
case dItemNo_Randomizer_ARROW_LV2_e:
|
||||
case dItemNo_Randomizer_ARROW_LV3_e:
|
||||
{
|
||||
current.pos.y += 40.f;
|
||||
break;
|
||||
}
|
||||
case dItemNo_Randomizer_FOREST_SMALL_KEY_e:
|
||||
case dItemNo_Randomizer_MINES_SMALL_KEY_e:
|
||||
case dItemNo_Randomizer_LAKEBED_SMALL_KEY_e:
|
||||
case dItemNo_Randomizer_ARBITERS_SMALL_KEY_e:
|
||||
case dItemNo_Randomizer_SNOWPEAK_SMALL_KEY_e:
|
||||
case dItemNo_Randomizer_TEMPLE_OF_TIME_SMALL_KEY_e:
|
||||
case dItemNo_Randomizer_CITY_SMALL_KEY_e:
|
||||
case dItemNo_Randomizer_PALACE_SMALL_KEY_e:
|
||||
case dItemNo_Randomizer_HYRULE_SMALL_KEY_e:
|
||||
case dItemNo_Randomizer_FOREST_BOSS_KEY_e:
|
||||
case dItemNo_Randomizer_LAKEBED_BOSS_KEY_e:
|
||||
case dItemNo_Randomizer_ARBITERS_BOSS_KEY_e:
|
||||
case dItemNo_Randomizer_TEMPLE_OF_TIME_BOSS_KEY_e:
|
||||
case dItemNo_Randomizer_CITY_BOSS_KEY_e:
|
||||
case dItemNo_Randomizer_PALACE_BOSS_KEY_e:
|
||||
case dItemNo_Randomizer_HYRULE_BOSS_KEY_e:
|
||||
case dItemNo_Randomizer_SMALL_KEY2_e:
|
||||
case dItemNo_Randomizer_LV5_BOSS_KEY_e:
|
||||
case dItemNo_Randomizer_CAMP_SMALL_KEY_e:
|
||||
case dItemNo_Randomizer_BOSSRIDER_KEY_e:
|
||||
case dItemNo_Randomizer_PACHINKO_e:
|
||||
case dItemNo_Randomizer_BOMB_BAG_LV2_e:
|
||||
case dItemNo_Randomizer_BOMB_BAG_LV1_e:
|
||||
case dItemNo_Randomizer_BOMB_IN_BAG_e:
|
||||
case dItemNo_Randomizer_NORMAL_BOMB_e:
|
||||
case dItemNo_Randomizer_POU_SPIRIT_e:
|
||||
{
|
||||
current.pos.y += 20.f;
|
||||
break;
|
||||
}
|
||||
// Also adjust the height of the object depending on the item
|
||||
switch (itemId) {
|
||||
case dItemNo_Randomizer_MASTER_SWORD_e:
|
||||
case dItemNo_Randomizer_LIGHT_SWORD_e:
|
||||
case dItemNo_Randomizer_WOOD_SHIELD_e:
|
||||
case dItemNo_Randomizer_HYLIA_SHIELD_e:
|
||||
case dItemNo_Randomizer_SHIELD_e:
|
||||
case dItemNo_Randomizer_SPINNER_e:
|
||||
{
|
||||
current.pos.y += 30.f;
|
||||
break;
|
||||
}
|
||||
case dItemNo_Randomizer_WOOD_STICK_e:
|
||||
{
|
||||
current.pos.y += 60.f;
|
||||
break;
|
||||
}
|
||||
case dItemNo_Randomizer_SWORD_e:
|
||||
case dItemNo_Randomizer_MIRROR_PIECE_1_e:
|
||||
case dItemNo_Randomizer_MIRROR_PIECE_2_e:
|
||||
case dItemNo_Randomizer_MIRROR_PIECE_3_e:
|
||||
case dItemNo_Randomizer_MIRROR_PIECE_4_e:
|
||||
case dItemNo_Randomizer_FUSED_SHADOW_1_e:
|
||||
case dItemNo_Randomizer_FUSED_SHADOW_2_e:
|
||||
case dItemNo_Randomizer_FUSED_SHADOW_3_e:
|
||||
case dItemNo_Randomizer_COPY_ROD_e:
|
||||
case dItemNo_Randomizer_COPY_ROD_2_e:
|
||||
{
|
||||
current.pos.y += 50.f;
|
||||
break;
|
||||
}
|
||||
|
||||
case dItemNo_Randomizer_ARMOR_e:
|
||||
{
|
||||
current.pos.y += 25.f;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
break;
|
||||
}
|
||||
case dItemNo_Randomizer_BOW_e:
|
||||
{
|
||||
current.pos.y += 55.f;
|
||||
break;
|
||||
}
|
||||
case dItemNo_Randomizer_BOOMERANG_e:
|
||||
case dItemNo_Randomizer_FISHING_ROD_1_e:
|
||||
case dItemNo_Randomizer_ARROW_LV2_e:
|
||||
case dItemNo_Randomizer_ARROW_LV3_e:
|
||||
{
|
||||
current.pos.y += 40.f;
|
||||
break;
|
||||
}
|
||||
case dItemNo_Randomizer_FOREST_SMALL_KEY_e:
|
||||
case dItemNo_Randomizer_MINES_SMALL_KEY_e:
|
||||
case dItemNo_Randomizer_LAKEBED_SMALL_KEY_e:
|
||||
case dItemNo_Randomizer_ARBITERS_SMALL_KEY_e:
|
||||
case dItemNo_Randomizer_SNOWPEAK_SMALL_KEY_e:
|
||||
case dItemNo_Randomizer_TEMPLE_OF_TIME_SMALL_KEY_e:
|
||||
case dItemNo_Randomizer_CITY_SMALL_KEY_e:
|
||||
case dItemNo_Randomizer_PALACE_SMALL_KEY_e:
|
||||
case dItemNo_Randomizer_HYRULE_SMALL_KEY_e:
|
||||
case dItemNo_Randomizer_FOREST_BOSS_KEY_e:
|
||||
case dItemNo_Randomizer_LAKEBED_BOSS_KEY_e:
|
||||
case dItemNo_Randomizer_ARBITERS_BOSS_KEY_e:
|
||||
case dItemNo_Randomizer_TEMPLE_OF_TIME_BOSS_KEY_e:
|
||||
case dItemNo_Randomizer_CITY_BOSS_KEY_e:
|
||||
case dItemNo_Randomizer_PALACE_BOSS_KEY_e:
|
||||
case dItemNo_Randomizer_HYRULE_BOSS_KEY_e:
|
||||
case dItemNo_Randomizer_SMALL_KEY2_e:
|
||||
case dItemNo_Randomizer_LV5_BOSS_KEY_e:
|
||||
case dItemNo_Randomizer_CAMP_SMALL_KEY_e:
|
||||
case dItemNo_Randomizer_BOSSRIDER_KEY_e:
|
||||
case dItemNo_Randomizer_PACHINKO_e:
|
||||
case dItemNo_Randomizer_BOMB_BAG_LV2_e:
|
||||
case dItemNo_Randomizer_BOMB_BAG_LV1_e:
|
||||
case dItemNo_Randomizer_BOMB_IN_BAG_e:
|
||||
case dItemNo_Randomizer_NORMAL_BOMB_e:
|
||||
case dItemNo_Randomizer_POU_SPIRIT_e:
|
||||
{
|
||||
current.pos.y += 20.f;
|
||||
break;
|
||||
}
|
||||
|
||||
case dItemNo_Randomizer_ARMOR_e:
|
||||
{
|
||||
current.pos.y += 25.f;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -476,6 +499,19 @@ int daObjLife_c::actionGetDemo() {
|
||||
if (savebit != 0xFF) {
|
||||
fopAcM_onItem(this, savebit);
|
||||
}
|
||||
#if TARGET_PC
|
||||
// In randomizer, turn off the map marker flag for this golden wolf replacement item
|
||||
// if we're collecting it. We store the map marker flag in unused home.angle.z
|
||||
// Also set the flag for having collected this golden wolf item, stored in home.angle.x
|
||||
if (randomizer_IsActive()) {
|
||||
if (static_cast<u16>(home.angle.z) != 0xFFFF) {
|
||||
dComIfGs_offSwitch(static_cast<u16>(home.angle.z), fopAcM_GetRoomNo(this));
|
||||
}
|
||||
if (static_cast<u16>(home.angle.x) != 0xFFFF) {
|
||||
dComIfGs_onEventBit(static_cast<u16>(home.angle.x));
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
if (m_itemNo == dItemNo_KAKERA_HEART_e) {
|
||||
if (strcmp(dComIfGp_getStartStageName(), "F_SP121") == 0) {
|
||||
|
||||
+256
-256
@@ -274,262 +274,262 @@ static void (*item_func_ptr[256])() = {
|
||||
|
||||
#if TARGET_PC
|
||||
static void (*item_func_ptr_randomizer[256])() = {
|
||||
item_func_HEART,
|
||||
item_func_GREEN_RUPEE,
|
||||
item_func_BLUE_RUPEE,
|
||||
item_func_YELLOW_RUPEE,
|
||||
item_func_RED_RUPEE,
|
||||
item_func_PURPLE_RUPEE,
|
||||
item_func_ORANGE_RUPEE,
|
||||
item_func_SILVER_RUPEE,
|
||||
item_func_S_MAGIC,
|
||||
item_func_L_MAGIC,
|
||||
item_func_BOMB_5,
|
||||
item_func_BOMB_10,
|
||||
item_func_BOMB_20,
|
||||
item_func_BOMB_30,
|
||||
item_func_ARROW_10,
|
||||
item_func_ARROW_20,
|
||||
item_func_ARROW_30,
|
||||
item_func_ARROW_1,
|
||||
item_func_PACHINKO_SHOT,
|
||||
item_func_FOOLISH_ITEM,
|
||||
item_func_ORDON_PORTAL,
|
||||
item_func_SOUTH_FARON_PORTAL,
|
||||
item_func_WATER_BOMB_5,
|
||||
item_func_WATER_BOMB_10,
|
||||
item_func_WATER_BOMB_20,
|
||||
item_func_WATER_BOMB_30,
|
||||
item_func_BOMB_INSECT_5,
|
||||
item_func_BOMB_INSECT_10,
|
||||
item_func_BOMB_INSECT_20,
|
||||
item_func_BOMB_INSECT_30,
|
||||
item_func_RECOVER_FAILY,
|
||||
item_func_TRIPLE_HEART,
|
||||
item_func_SMALL_KEY,
|
||||
item_func_KAKERA_HEART,
|
||||
item_func_UTUWA_HEART,
|
||||
item_func_MAP,
|
||||
item_func_COMPUS,
|
||||
item_func_DUNGEON_EXIT,
|
||||
item_func_BOSS_KEY,
|
||||
item_func_DUNGEON_BACK,
|
||||
item_func_SWORD,
|
||||
item_func_MASTER_SWORD,
|
||||
item_func_WOOD_SHIELD,
|
||||
item_func_SHIELD,
|
||||
item_func_HYLIA_SHIELD,
|
||||
item_func_TKS_LETTER,
|
||||
item_func_WEAR_CASUAL,
|
||||
item_func_WEAR_KOKIRI,
|
||||
item_func_ARMOR,
|
||||
item_func_WEAR_ZORA,
|
||||
item_func_MAGIC_LV1,
|
||||
item_func_DUNGEON_EXIT_2,
|
||||
item_func_WALLET_LV1,
|
||||
item_func_WALLET_LV2,
|
||||
item_func_WALLET_LV3,
|
||||
item_func_noentry,
|
||||
item_func_noentry,
|
||||
item_func_UPPER_ZORAS_RIVER_PORTAL,
|
||||
item_func_CASTLE_TOWN_PORTAL,
|
||||
item_func_GERUDO_DESERT_PORTAL,
|
||||
item_func_NORTH_FARON_PORTAL,
|
||||
item_func_ZORAS_JEWEL,
|
||||
item_func_HAWK_EYE,
|
||||
item_func_WOOD_STICK,
|
||||
item_func_BOOMERANG,
|
||||
item_func_SPINNER,
|
||||
item_func_IRONBALL,
|
||||
item_func_BOW,
|
||||
item_func_HOOKSHOT,
|
||||
item_func_HVY_BOOTS,
|
||||
item_func_COPY_ROD,
|
||||
item_func_W_HOOKSHOT,
|
||||
item_func_KANTERA,
|
||||
item_func_LIGHT_SWORD,
|
||||
item_func_FISHING_ROD_1,
|
||||
item_func_PACHINKO,
|
||||
item_func_COPY_ROD_2,
|
||||
item_func_KAKARIKO_GORGE_PORTAL,
|
||||
item_func_KAKARIKO_VILLAGE_PORTAL,
|
||||
item_func_BOMB_BAG_LV2,
|
||||
item_func_BOMB_BAG_LV1,
|
||||
item_func_BOMB_IN_BAG,
|
||||
item_func_DEATH_MOUNTAIN_PORTAL,
|
||||
item_func_LIGHT_ARROW,
|
||||
item_func_ARROW_LV1,
|
||||
item_func_ARROW_LV2,
|
||||
item_func_ARROW_LV3,
|
||||
item_func_ZORAS_DOMAIN_PORTAL,
|
||||
item_func_LURE_ROD,
|
||||
item_func_BOMB_ARROW,
|
||||
item_func_HAWK_ARROW,
|
||||
item_func_BEE_ROD,
|
||||
item_func_JEWEL_ROD,
|
||||
item_func_WORM_ROD,
|
||||
item_func_JEWEL_BEE_ROD,
|
||||
item_func_JEWEL_WORM_ROD,
|
||||
item_func_EMPTY_BOTTLE,
|
||||
item_func_RED_BOTTLE,
|
||||
item_func_GREEN_BOTTLE,
|
||||
item_func_BLUE_BOTTLE,
|
||||
item_func_MILK_BOTTLE,
|
||||
item_func_HALF_MILK_BOTTLE,
|
||||
item_func_OIL_BOTTLE,
|
||||
item_func_WATER_BOTTLE,
|
||||
item_func_OIL_BOTTLE2,
|
||||
item_func_RED_BOTTLE2,
|
||||
item_func_UGLY_SOUP,
|
||||
item_func_HOT_SPRING,
|
||||
item_func_FAIRY_BOTTLE,
|
||||
item_func_HOT_SPRING2,
|
||||
item_func_OIL2,
|
||||
item_func_OIL,
|
||||
item_func_NORMAL_BOMB,
|
||||
item_func_WATER_BOMB,
|
||||
item_func_POKE_BOMB,
|
||||
item_func_FAIRY_DROP,
|
||||
item_func_WORM,
|
||||
item_func_DROP_BOTTLE,
|
||||
item_func_BEE_CHILD,
|
||||
item_func_CHUCHU_RARE,
|
||||
item_func_CHUCHU_RED,
|
||||
item_func_CHUCHU_BLUE,
|
||||
item_func_CHUCHU_GREEN,
|
||||
item_func_CHUCHU_YELLOW,
|
||||
item_func_CHUCHU_PURPLE,
|
||||
item_func_LV1_SOUP,
|
||||
item_func_LV2_SOUP,
|
||||
item_func_LV3_SOUP,
|
||||
item_func_LETTER,
|
||||
item_func_BILL,
|
||||
item_func_WOOD_STATUE,
|
||||
item_func_IRIAS_PENDANT,
|
||||
item_func_HORSE_FLUTE,
|
||||
item_func_FOREST_SMALL_KEY,
|
||||
item_func_MINES_SMALL_KEY,
|
||||
item_func_LAKEBED_SMALL_KEY,
|
||||
item_func_ARBITERS_SMALL_KEY,
|
||||
item_func_SNOWPEAK_SMALL_KEY,
|
||||
item_func_TEMPLE_OF_TIME_SMALL_KEY,
|
||||
item_func_CITY_SMALL_KEY,
|
||||
item_func_PALACE_SMALL_KEY,
|
||||
item_func_HYRULE_SMALL_KEY,
|
||||
item_func_CAMP_SMALL_KEY,
|
||||
item_func_LAKE_HYLIA_PORTAL,
|
||||
item_func_RAFRELS_MEMO,
|
||||
item_func_ASHS_SCRIBBLING,
|
||||
item_func_FOREST_BOSS_KEY,
|
||||
item_func_LAKEBED_BOSS_KEY,
|
||||
item_func_ARBITERS_BOSS_KEY,
|
||||
item_func_TEMPLE_OF_TIME_BOSS_KEY,
|
||||
item_func_CITY_BOSS_KEY,
|
||||
item_func_PALACE_BOSS_KEY,
|
||||
item_func_HYRULE_BOSS_KEY,
|
||||
item_func_FOREST_COMPASS,
|
||||
item_func_MINES_COMPASS,
|
||||
item_func_LAKEBED_COMPASS,
|
||||
item_func_CHUCHU_YELLOW2,
|
||||
item_func_OIL_BOTTLE3,
|
||||
item_func_SHOP_BEE_CHILD,
|
||||
item_func_CHUCHU_BLACK,
|
||||
item_func_LIGHT_DROP,
|
||||
item_func_DROP_CONTAINER,
|
||||
item_func_DROP_CONTAINER02,
|
||||
item_func_DROP_CONTAINER03,
|
||||
item_func_FILLED_CONTAINER,
|
||||
item_func_MIRROR_PIECE_2,
|
||||
item_func_MIRROR_PIECE_3,
|
||||
item_func_MIRROR_PIECE_4,
|
||||
item_func_ARBITERS_COMPASS,
|
||||
item_func_SNOWPEAK_COMPASS,
|
||||
item_func_TEMPLE_OF_TIME_COMPASS,
|
||||
item_func_CITY_COMPASS,
|
||||
item_func_PALACE_COMPASS,
|
||||
item_func_HYRULE_COMPASS,
|
||||
item_func_MIRROR_CHAMBER_PORTAL,
|
||||
item_func_SNOWPEAK_PORTAL,
|
||||
item_func_SMELL_YELIA_POUCH,
|
||||
item_func_SMELL_PUMPKIN,
|
||||
item_func_SMELL_POH,
|
||||
item_func_SMELL_FISH,
|
||||
item_func_SMELL_CHILDREN,
|
||||
item_func_SMELL_MEDICINE,
|
||||
item_func_FOREST_MAP,
|
||||
item_func_MINES_MAP,
|
||||
item_func_LAKEBED_MAP,
|
||||
item_func_ARBITERS_MAP,
|
||||
item_func_SNOWPEAK_MAP,
|
||||
item_func_TEMPLE_OF_TIME_MAP,
|
||||
item_func_CITY_MAP,
|
||||
item_func_PALACE_MAP,
|
||||
item_func_HYRULE_MAP,
|
||||
item_func_SACRED_GROVE_PORTAL,
|
||||
item_func_M_BEETLE,
|
||||
item_func_F_BEETLE,
|
||||
item_func_M_BUTTERFLY,
|
||||
item_func_F_BUTTERFLY,
|
||||
item_func_M_STAG_BEETLE,
|
||||
item_func_F_STAG_BEETLE,
|
||||
item_func_M_GRASSHOPPER,
|
||||
item_func_F_GRASSHOPPER,
|
||||
item_func_M_NANAFUSHI,
|
||||
item_func_F_NANAFUSHI,
|
||||
item_func_M_DANGOMUSHI,
|
||||
item_func_F_DANGOMUSHI,
|
||||
item_func_M_MANTIS,
|
||||
item_func_F_MANTIS,
|
||||
item_func_M_LADYBUG,
|
||||
item_func_F_LADYBUG,
|
||||
item_func_M_SNAIL,
|
||||
item_func_F_SNAIL,
|
||||
item_func_M_DRAGONFLY,
|
||||
item_func_F_DRAGONFLY,
|
||||
item_func_M_ANT,
|
||||
item_func_F_ANT,
|
||||
item_func_M_MAYFLY,
|
||||
item_func_F_MAYFLY,
|
||||
item_func_FUSED_SHADOW_1,
|
||||
item_func_FUSED_SHADOW_2,
|
||||
item_func_FUSED_SHADOW_3,
|
||||
item_func_MIRROR_PIECE_1,
|
||||
item_func_noentry,
|
||||
item_func_noentry,
|
||||
item_func_noentry,
|
||||
item_func_noentry,
|
||||
item_func_POU_SPIRIT,
|
||||
item_func_ENDING_BLOW,
|
||||
item_func_SHIELD_ATTACK,
|
||||
item_func_BACK_SLICE,
|
||||
item_func_HELM_SPLITTER,
|
||||
item_func_MORTAL_DRAW,
|
||||
item_func_JUMP_STRIKE,
|
||||
item_func_GREAT_SPIN,
|
||||
item_func_ELDIN_BRIDGE_PORTAL,
|
||||
item_func_ANCIENT_DOCUMENT,
|
||||
item_func_AIR_LETTER,
|
||||
item_func_ANCIENT_DOCUMENT2,
|
||||
item_func_LV7_DUNGEON_EXIT,
|
||||
item_func_LINKS_SAVINGS,
|
||||
item_func_SMALL_KEY2,
|
||||
item_func_POU_FIRE1,
|
||||
item_func_POU_FIRE2,
|
||||
item_func_POU_FIRE3,
|
||||
item_func_POU_FIRE4,
|
||||
item_func_BOSSRIDER_KEY,
|
||||
item_func_TOMATO_PUREE,
|
||||
item_func_TASTE,
|
||||
item_func_LV5_BOSS_KEY,
|
||||
item_func_SURFBOARD,
|
||||
item_func_KANTERA2,
|
||||
item_func_L2_KEY_PIECES1,
|
||||
item_func_L2_KEY_PIECES2,
|
||||
item_func_L2_KEY_PIECES3,
|
||||
item_func_KEY_OF_CARAVAN,
|
||||
item_func_LV2_BOSS_KEY,
|
||||
item_func_KEY_OF_FILONE,
|
||||
item_func_noentry,
|
||||
/* 0x00 */ item_func_HEART,
|
||||
/* 0x01 */ item_func_GREEN_RUPEE,
|
||||
/* 0x02 */ item_func_BLUE_RUPEE,
|
||||
/* 0x03 */ item_func_YELLOW_RUPEE,
|
||||
/* 0x04 */ item_func_RED_RUPEE,
|
||||
/* 0x05 */ item_func_PURPLE_RUPEE,
|
||||
/* 0x06 */ item_func_ORANGE_RUPEE,
|
||||
/* 0x07 */ item_func_SILVER_RUPEE,
|
||||
/* 0x08 */ item_func_S_MAGIC,
|
||||
/* 0x09 */ item_func_L_MAGIC,
|
||||
/* 0x0A */ item_func_BOMB_5,
|
||||
/* 0x0B */ item_func_BOMB_10,
|
||||
/* 0x0C */ item_func_BOMB_20,
|
||||
/* 0x0D */ item_func_BOMB_30,
|
||||
/* 0x0E */ item_func_ARROW_10,
|
||||
/* 0x0F */ item_func_ARROW_20,
|
||||
/* 0x10 */ item_func_ARROW_30,
|
||||
/* 0x11 */ item_func_ARROW_1,
|
||||
/* 0x12 */ item_func_PACHINKO_SHOT,
|
||||
/* 0x13 */ item_func_FOOLISH_ITEM,
|
||||
/* 0x14 */ item_func_ORDON_PORTAL,
|
||||
/* 0x15 */ item_func_SOUTH_FARON_PORTAL,
|
||||
/* 0x16 */ item_func_WATER_BOMB_5,
|
||||
/* 0x17 */ item_func_WATER_BOMB_10,
|
||||
/* 0x18 */ item_func_WATER_BOMB_20,
|
||||
/* 0x19 */ item_func_WATER_BOMB_30,
|
||||
/* 0x1A */ item_func_BOMB_INSECT_5,
|
||||
/* 0x1B */ item_func_BOMB_INSECT_10,
|
||||
/* 0x1C */ item_func_BOMB_INSECT_20,
|
||||
/* 0x1D */ item_func_BOMB_INSECT_30,
|
||||
/* 0x1E */ item_func_RECOVER_FAILY,
|
||||
/* 0x1F */ item_func_TRIPLE_HEART,
|
||||
/* 0x20 */ item_func_SMALL_KEY,
|
||||
/* 0x21 */ item_func_KAKERA_HEART,
|
||||
/* 0x22 */ item_func_UTUWA_HEART,
|
||||
/* 0x23 */ item_func_MAP,
|
||||
/* 0x24 */ item_func_COMPUS,
|
||||
/* 0x25 */ item_func_DUNGEON_EXIT,
|
||||
/* 0x26 */ item_func_BOSS_KEY,
|
||||
/* 0x27 */ item_func_DUNGEON_BACK,
|
||||
/* 0x28 */ item_func_SWORD,
|
||||
/* 0x29 */ item_func_MASTER_SWORD,
|
||||
/* 0x2A */ item_func_WOOD_SHIELD,
|
||||
/* 0x2B */ item_func_SHIELD,
|
||||
/* 0x2C */ item_func_HYLIA_SHIELD,
|
||||
/* 0x2D */ item_func_TKS_LETTER,
|
||||
/* 0x2E */ item_func_WEAR_CASUAL,
|
||||
/* 0x2F */ item_func_WEAR_KOKIRI,
|
||||
/* 0x30 */ item_func_ARMOR,
|
||||
/* 0x31 */ item_func_WEAR_ZORA,
|
||||
/* 0x32 */ item_func_MAGIC_LV1,
|
||||
/* 0x33 */ item_func_DUNGEON_EXIT_2,
|
||||
/* 0x34 */ item_func_WALLET_LV1,
|
||||
/* 0x35 */ item_func_WALLET_LV2,
|
||||
/* 0x36 */ item_func_WALLET_LV3,
|
||||
/* 0x37 */ item_func_noentry,
|
||||
/* 0x38 */ item_func_noentry,
|
||||
/* 0x39 */ item_func_UPPER_ZORAS_RIVER_PORTAL,
|
||||
/* 0x3A */ item_func_CASTLE_TOWN_PORTAL,
|
||||
/* 0x3B */ item_func_GERUDO_DESERT_PORTAL,
|
||||
/* 0x3C */ item_func_NORTH_FARON_PORTAL,
|
||||
/* 0x3D */ item_func_ZORAS_JEWEL,
|
||||
/* 0x3E */ item_func_HAWK_EYE,
|
||||
/* 0x3F */ item_func_WOOD_STICK,
|
||||
/* 0x40 */ item_func_BOOMERANG,
|
||||
/* 0x41 */ item_func_SPINNER,
|
||||
/* 0x42 */ item_func_IRONBALL,
|
||||
/* 0x43 */ item_func_BOW,
|
||||
/* 0x44 */ item_func_HOOKSHOT,
|
||||
/* 0x45 */ item_func_HVY_BOOTS,
|
||||
/* 0x46 */ item_func_COPY_ROD,
|
||||
/* 0x47 */ item_func_W_HOOKSHOT,
|
||||
/* 0x48 */ item_func_KANTERA,
|
||||
/* 0x49 */ item_func_LIGHT_SWORD,
|
||||
/* 0x4A */ item_func_FISHING_ROD_1,
|
||||
/* 0x4B */ item_func_PACHINKO,
|
||||
/* 0x4C */ item_func_COPY_ROD_2,
|
||||
/* 0x4D */ item_func_KAKARIKO_GORGE_PORTAL,
|
||||
/* 0x4E */ item_func_KAKARIKO_VILLAGE_PORTAL,
|
||||
/* 0x4F */ item_func_BOMB_BAG_LV2,
|
||||
/* 0x50 */ item_func_BOMB_BAG_LV1,
|
||||
/* 0x51 */ item_func_BOMB_IN_BAG,
|
||||
/* 0x52 */ item_func_DEATH_MOUNTAIN_PORTAL,
|
||||
/* 0x53 */ item_func_LIGHT_ARROW,
|
||||
/* 0x54 */ item_func_ARROW_LV1,
|
||||
/* 0x55 */ item_func_ARROW_LV2,
|
||||
/* 0x56 */ item_func_ARROW_LV3,
|
||||
/* 0x57 */ item_func_ZORAS_DOMAIN_PORTAL,
|
||||
/* 0x58 */ item_func_LURE_ROD,
|
||||
/* 0x59 */ item_func_BOMB_ARROW,
|
||||
/* 0x5A */ item_func_HAWK_ARROW,
|
||||
/* 0x5B */ item_func_BEE_ROD,
|
||||
/* 0x5C */ item_func_JEWEL_ROD,
|
||||
/* 0x5D */ item_func_WORM_ROD,
|
||||
/* 0x5E */ item_func_JEWEL_BEE_ROD,
|
||||
/* 0x5F */ item_func_JEWEL_WORM_ROD,
|
||||
/* 0x60 */ item_func_EMPTY_BOTTLE,
|
||||
/* 0x61 */ item_func_RED_BOTTLE,
|
||||
/* 0x62 */ item_func_GREEN_BOTTLE,
|
||||
/* 0x63 */ item_func_BLUE_BOTTLE,
|
||||
/* 0x64 */ item_func_MILK_BOTTLE,
|
||||
/* 0x65 */ item_func_HALF_MILK_BOTTLE,
|
||||
/* 0x66 */ item_func_OIL_BOTTLE,
|
||||
/* 0x67 */ item_func_WATER_BOTTLE,
|
||||
/* 0x68 */ item_func_OIL_BOTTLE2,
|
||||
/* 0x69 */ item_func_RED_BOTTLE2,
|
||||
/* 0x6A */ item_func_UGLY_SOUP,
|
||||
/* 0x6B */ item_func_HOT_SPRING,
|
||||
/* 0x6C */ item_func_FAIRY_BOTTLE,
|
||||
/* 0x6D */ item_func_HOT_SPRING2,
|
||||
/* 0x6E */ item_func_OIL2,
|
||||
/* 0x6F */ item_func_OIL,
|
||||
/* 0x70 */ item_func_NORMAL_BOMB,
|
||||
/* 0x71 */ item_func_WATER_BOMB,
|
||||
/* 0x72 */ item_func_POKE_BOMB,
|
||||
/* 0x73 */ item_func_FAIRY_DROP,
|
||||
/* 0x74 */ item_func_WORM,
|
||||
/* 0x75 */ item_func_DROP_BOTTLE,
|
||||
/* 0x76 */ item_func_BEE_CHILD,
|
||||
/* 0x77 */ item_func_CHUCHU_RARE,
|
||||
/* 0x78 */ item_func_CHUCHU_RED,
|
||||
/* 0x79 */ item_func_CHUCHU_BLUE,
|
||||
/* 0x7A */ item_func_CHUCHU_GREEN,
|
||||
/* 0x7B */ item_func_CHUCHU_YELLOW,
|
||||
/* 0x7C */ item_func_CHUCHU_PURPLE,
|
||||
/* 0x7D */ item_func_LV1_SOUP,
|
||||
/* 0x7E */ item_func_LV2_SOUP,
|
||||
/* 0x7F */ item_func_LV3_SOUP,
|
||||
/* 0x80 */ item_func_LETTER,
|
||||
/* 0x81 */ item_func_BILL,
|
||||
/* 0x82 */ item_func_WOOD_STATUE,
|
||||
/* 0x83 */ item_func_IRIAS_PENDANT,
|
||||
/* 0x84 */ item_func_HORSE_FLUTE,
|
||||
/* 0x85 */ item_func_FOREST_SMALL_KEY,
|
||||
/* 0x86 */ item_func_MINES_SMALL_KEY,
|
||||
/* 0x87 */ item_func_LAKEBED_SMALL_KEY,
|
||||
/* 0x88 */ item_func_ARBITERS_SMALL_KEY,
|
||||
/* 0x89 */ item_func_SNOWPEAK_SMALL_KEY,
|
||||
/* 0x8A */ item_func_TEMPLE_OF_TIME_SMALL_KEY,
|
||||
/* 0x8B */ item_func_CITY_SMALL_KEY,
|
||||
/* 0x8C */ item_func_PALACE_SMALL_KEY,
|
||||
/* 0x8D */ item_func_HYRULE_SMALL_KEY,
|
||||
/* 0x8E */ item_func_CAMP_SMALL_KEY,
|
||||
/* 0x8F */ item_func_LAKE_HYLIA_PORTAL,
|
||||
/* 0x90 */ item_func_RAFRELS_MEMO,
|
||||
/* 0x91 */ item_func_ASHS_SCRIBBLING,
|
||||
/* 0x92 */ item_func_FOREST_BOSS_KEY,
|
||||
/* 0x93 */ item_func_LAKEBED_BOSS_KEY,
|
||||
/* 0x94 */ item_func_ARBITERS_BOSS_KEY,
|
||||
/* 0x95 */ item_func_TEMPLE_OF_TIME_BOSS_KEY,
|
||||
/* 0x96 */ item_func_CITY_BOSS_KEY,
|
||||
/* 0x97 */ item_func_PALACE_BOSS_KEY,
|
||||
/* 0x98 */ item_func_HYRULE_BOSS_KEY,
|
||||
/* 0x99 */ item_func_FOREST_COMPASS,
|
||||
/* 0x9A */ item_func_MINES_COMPASS,
|
||||
/* 0x9B */ item_func_LAKEBED_COMPASS,
|
||||
/* 0x9C */ item_func_CHUCHU_YELLOW2,
|
||||
/* 0x9D */ item_func_OIL_BOTTLE3,
|
||||
/* 0x9E */ item_func_SHOP_BEE_CHILD,
|
||||
/* 0x9F */ item_func_CHUCHU_BLACK,
|
||||
/* 0xA0 */ item_func_LIGHT_DROP,
|
||||
/* 0xA1 */ item_func_DROP_CONTAINER,
|
||||
/* 0xA2 */ item_func_DROP_CONTAINER02,
|
||||
/* 0xA3 */ item_func_DROP_CONTAINER03,
|
||||
/* 0xA4 */ item_func_FILLED_CONTAINER,
|
||||
/* 0xA5 */ item_func_MIRROR_PIECE_2,
|
||||
/* 0xA6 */ item_func_MIRROR_PIECE_3,
|
||||
/* 0xA7 */ item_func_MIRROR_PIECE_4,
|
||||
/* 0xA8 */ item_func_ARBITERS_COMPASS,
|
||||
/* 0xA9 */ item_func_SNOWPEAK_COMPASS,
|
||||
/* 0xAA */ item_func_TEMPLE_OF_TIME_COMPASS,
|
||||
/* 0xAB */ item_func_CITY_COMPASS,
|
||||
/* 0xAC */ item_func_PALACE_COMPASS,
|
||||
/* 0xAD */ item_func_HYRULE_COMPASS,
|
||||
/* 0xAE */ item_func_MIRROR_CHAMBER_PORTAL,
|
||||
/* 0xAF */ item_func_SNOWPEAK_PORTAL,
|
||||
/* 0xB0 */ item_func_SMELL_YELIA_POUCH,
|
||||
/* 0xB1 */ item_func_SMELL_PUMPKIN,
|
||||
/* 0xB2 */ item_func_SMELL_POH,
|
||||
/* 0xB3 */ item_func_SMELL_FISH,
|
||||
/* 0xB4 */ item_func_SMELL_CHILDREN,
|
||||
/* 0xB5 */ item_func_SMELL_MEDICINE,
|
||||
/* 0xB6 */ item_func_FOREST_MAP,
|
||||
/* 0xB7 */ item_func_MINES_MAP,
|
||||
/* 0xB8 */ item_func_LAKEBED_MAP,
|
||||
/* 0xB9 */ item_func_ARBITERS_MAP,
|
||||
/* 0xBA */ item_func_SNOWPEAK_MAP,
|
||||
/* 0xBB */ item_func_TEMPLE_OF_TIME_MAP,
|
||||
/* 0xBC */ item_func_CITY_MAP,
|
||||
/* 0xBD */ item_func_PALACE_MAP,
|
||||
/* 0xBE */ item_func_HYRULE_MAP,
|
||||
/* 0xBF */ item_func_SACRED_GROVE_PORTAL,
|
||||
/* 0xC0 */ item_func_M_BEETLE,
|
||||
/* 0xC1 */ item_func_F_BEETLE,
|
||||
/* 0xC2 */ item_func_M_BUTTERFLY,
|
||||
/* 0xC3 */ item_func_F_BUTTERFLY,
|
||||
/* 0xC4 */ item_func_M_STAG_BEETLE,
|
||||
/* 0xC5 */ item_func_F_STAG_BEETLE,
|
||||
/* 0xC6 */ item_func_M_GRASSHOPPER,
|
||||
/* 0xC7 */ item_func_F_GRASSHOPPER,
|
||||
/* 0xC8 */ item_func_M_NANAFUSHI,
|
||||
/* 0xC9 */ item_func_F_NANAFUSHI,
|
||||
/* 0xCA */ item_func_M_DANGOMUSHI,
|
||||
/* 0xCB */ item_func_F_DANGOMUSHI,
|
||||
/* 0xCC */ item_func_M_MANTIS,
|
||||
/* 0xCD */ item_func_F_MANTIS,
|
||||
/* 0xCE */ item_func_M_LADYBUG,
|
||||
/* 0xCF */ item_func_F_LADYBUG,
|
||||
/* 0xD0 */ item_func_M_SNAIL,
|
||||
/* 0xD1 */ item_func_F_SNAIL,
|
||||
/* 0xD2 */ item_func_M_DRAGONFLY,
|
||||
/* 0xD3 */ item_func_F_DRAGONFLY,
|
||||
/* 0xD4 */ item_func_M_ANT,
|
||||
/* 0xD5 */ item_func_F_ANT,
|
||||
/* 0xD6 */ item_func_M_MAYFLY,
|
||||
/* 0xD7 */ item_func_F_MAYFLY,
|
||||
/* 0xD8 */ item_func_FUSED_SHADOW_1,
|
||||
/* 0xD9 */ item_func_FUSED_SHADOW_2,
|
||||
/* 0xDA */ item_func_FUSED_SHADOW_3,
|
||||
/* 0xDB */ item_func_MIRROR_PIECE_1,
|
||||
/* 0xDC */ item_func_noentry,
|
||||
/* 0xDD */ item_func_noentry,
|
||||
/* 0xDE */ item_func_noentry,
|
||||
/* 0xDF */ item_func_noentry,
|
||||
/* 0xE0 */ item_func_POU_SPIRIT,
|
||||
/* 0xE1 */ item_func_ENDING_BLOW,
|
||||
/* 0xE2 */ item_func_SHIELD_ATTACK,
|
||||
/* 0xE3 */ item_func_BACK_SLICE,
|
||||
/* 0xE4 */ item_func_HELM_SPLITTER,
|
||||
/* 0xE5 */ item_func_MORTAL_DRAW,
|
||||
/* 0xE6 */ item_func_JUMP_STRIKE,
|
||||
/* 0xE7 */ item_func_GREAT_SPIN,
|
||||
/* 0xE8 */ item_func_ELDIN_BRIDGE_PORTAL,
|
||||
/* 0xE9 */ item_func_ANCIENT_DOCUMENT,
|
||||
/* 0xEA */ item_func_AIR_LETTER,
|
||||
/* 0xEB */ item_func_ANCIENT_DOCUMENT2,
|
||||
/* 0xEC */ item_func_LV7_DUNGEON_EXIT,
|
||||
/* 0xED */ item_func_LINKS_SAVINGS,
|
||||
/* 0xEE */ item_func_SMALL_KEY2,
|
||||
/* 0xEF */ item_func_POU_FIRE1,
|
||||
/* 0xF0 */ item_func_POU_FIRE2,
|
||||
/* 0xF1 */ item_func_POU_FIRE3,
|
||||
/* 0xF2 */ item_func_POU_FIRE4,
|
||||
/* 0xF3 */ item_func_BOSSRIDER_KEY,
|
||||
/* 0xF4 */ item_func_TOMATO_PUREE,
|
||||
/* 0xF5 */ item_func_TASTE,
|
||||
/* 0xF6 */ item_func_LV5_BOSS_KEY,
|
||||
/* 0xF7 */ item_func_SURFBOARD,
|
||||
/* 0xF8 */ item_func_KANTERA2,
|
||||
/* 0xF9 */ item_func_L2_KEY_PIECES1,
|
||||
/* 0xFA */ item_func_L2_KEY_PIECES2,
|
||||
/* 0xFB */ item_func_L2_KEY_PIECES3,
|
||||
/* 0xFC */ item_func_KEY_OF_CARAVAN,
|
||||
/* 0xFD */ item_func_LV2_BOSS_KEY,
|
||||
/* 0xFE */ item_func_KEY_OF_FILONE,
|
||||
/* 0xFF */ item_func_noentry,
|
||||
};
|
||||
#endif
|
||||
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
#include "flags.h"
|
||||
#include "stages.h"
|
||||
#include "tools.h"
|
||||
|
||||
goldenWolfFlags getCurrentGoldenWolfFlags(u8 roomNo) {
|
||||
switch (getStageID()) {
|
||||
case Ordon_Spring:
|
||||
return {0x41, HOWLED_AT_DEATH_MOUNTAIN_STONE, GOT_SKILL_FROM_ORDON_WOLF};
|
||||
case Faron_Woods:
|
||||
return {0xFF, 0xFFFF, 0x3C10}; // Custom flag for rando
|
||||
case Kakariko_Graveyard:
|
||||
return {0x79, HOWLED_AT_SNOWPEAK_STONE, GOT_SKILL_FROM_GRAVEYARD_WOLF};
|
||||
case Outside_Castle_Town:
|
||||
if (roomNo == 8) {
|
||||
return {0x29, HOWLED_AT_UPPER_ZORAS_RIVER_STONE, GOT_SKILL_FROM_WEST_CT_WOLF};
|
||||
}
|
||||
return {0x2A, HOWLED_AT_SACRED_GROVE_OUTSIDE_STONE, GOT_SKILL_FROM_SOUTH_CT_FIELD_WOLF};
|
||||
case Castle_Town:
|
||||
return {0x32, HOWLED_AT_HIDDEN_VILLAGE_STONE, GOT_SKILL_FROM_BARRIER_WOLF};
|
||||
case Gerudo_Desert:
|
||||
return {0x32, HOWLED_AT_LAKE_HYLIA_STONE, GOT_SKILL_FROM_BULBLIN_CAMP_WOLF};
|
||||
default:
|
||||
return {0xFF, 0xFFFF, 0xFFFF};
|
||||
}
|
||||
}
|
||||
@@ -398,7 +398,7 @@ enum EventFlags
|
||||
TALKED_TO_YETA_AFTER_WINNING_RACE_AGAINST_YETO = 0x3B20,
|
||||
WON_SNOWBOARD_RACE_AGAINST_YETO = 0x3B40,
|
||||
GOT_CORAL_EARRING_FROM_RALIS = 0x3B80,
|
||||
GOT_SKILL_FROM_BULBLIN_CAMP_WOLF = 0x3C01,
|
||||
GOT_SKILL_FROM_BULBLIN_CAMP_WOLF = 0x3C01,
|
||||
GOT_SKILL_FROM_SOUTH_CT_FIELD_WOLF = 0x3C02,
|
||||
GOT_SKILL_FROM_WEST_CT_WOLF = 0x3C04,
|
||||
GOT_SKILL_FROM_ORDON_WOLF = 0x3C08,
|
||||
@@ -616,3 +616,11 @@ enum EventFlags
|
||||
TALKED_TO_COLIN_ORDON_DAY_1 = 0x6280,
|
||||
HENA_BEAT_ROLLGOAL_8_8 = 0x6302
|
||||
};
|
||||
|
||||
struct goldenWolfFlags {
|
||||
u8 mapMarkerFlag{};
|
||||
u16 howledAtStoneFlag{};
|
||||
u16 obtainedItemFlag{};
|
||||
};
|
||||
|
||||
goldenWolfFlags getCurrentGoldenWolfFlags(u8 roomNo);
|
||||
@@ -67,6 +67,9 @@ std::optional<std::string> RandomizerContext::WriteToFile() {
|
||||
const std::unordered_map<u16, u16> u16SkyCharacterOverrides(this->mSkyCharacterOverrides.begin(), this->mSkyCharacterOverrides.end());
|
||||
out["mSkyCharacterOverrides"] = u16SkyCharacterOverrides;
|
||||
|
||||
const std::unordered_map<u16, u16> u16GoldenWolfOverrides(this->mGoldenWolfOverrides.begin(), this->mGoldenWolfOverrides.end());
|
||||
out["mGoldenWolfOverrides"] = u16GoldenWolfOverrides;
|
||||
|
||||
out["mItemLocations"] = this->mItemLocations;
|
||||
|
||||
out["mStartHour"] = static_cast<u16>(this->mStartHour);
|
||||
@@ -172,6 +175,13 @@ std::optional<std::string> RandomizerContext::LoadFromHash(const std::string& ha
|
||||
this->mSkyCharacterOverrides[key] = itemId;
|
||||
}
|
||||
|
||||
// Golden Wolves
|
||||
for (const auto& goldenWolfNode : in["mGoldenWolfOverrides"]) {
|
||||
u16 key = goldenWolfNode.first.as<u16>();
|
||||
u8 itemId = goldenWolfNode.second.as<u8>();
|
||||
this->mGoldenWolfOverrides[key] = itemId;
|
||||
}
|
||||
|
||||
// Items we call by location name
|
||||
for (const auto& locationNode : in["mItemLocations"]) {
|
||||
const auto& locationName = locationNode.first.as<std::string>();
|
||||
@@ -624,6 +634,14 @@ void GenerateAndWriteSeed(std::string& generationStatusMsg) {
|
||||
randoData.mSkyCharacterOverrides[key] = itemId;
|
||||
}
|
||||
|
||||
// Golden Wolves
|
||||
// Keyed by u16 of the event flag for obtaining the golden wolf item
|
||||
if (location->HasCategories("Golden Wolf")) {
|
||||
u16 flag = metaData[0]["Flag"].as<u16>();
|
||||
u8 itemId = location->GetCurrentItem()->GetID();
|
||||
randoData.mGoldenWolfOverrides[flag] = itemId;
|
||||
}
|
||||
|
||||
// Items that we lookup just by calling their location name
|
||||
if (location->HasCategories("Location Name Lookup")) {
|
||||
const auto& locationName = metaData.as<std::string>();
|
||||
@@ -833,4 +851,4 @@ void GenerateAndWriteSeed(std::string& generationStatusMsg) {
|
||||
}
|
||||
|
||||
generationStatusMsg = fmt::format("Seed generated! Hash: {}", randoData.mHash);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,6 +33,7 @@ public:
|
||||
std::unordered_map<u8, std::unordered_map<u8, u8>> mFreestandingItemOverrides{};
|
||||
std::unordered_map<u8, u8> mBugRewardOverrides{};
|
||||
std::unordered_map<u16, u8> mSkyCharacterOverrides{};
|
||||
std::unordered_map<u16, u8> mGoldenWolfOverrides{};
|
||||
std::unordered_map<std::string, int> mItemLocations{};
|
||||
u8 mStartHour{0};
|
||||
u8 mMapBits{};
|
||||
|
||||
@@ -4,6 +4,24 @@
|
||||
|
||||
|
||||
ACTR: # Objects which have the ACTR dzx type
|
||||
# Faron Woods
|
||||
F_SP108:
|
||||
# Room 6 - North Faron Woods
|
||||
6:
|
||||
# Spawn Item for Golden Wolf in North Faron Woods layer 3
|
||||
- name: htPiece
|
||||
parameters: 0xFFFFFFE1
|
||||
position:
|
||||
x: -36699.4375
|
||||
y: 428.600311279297
|
||||
z: -23663.64453125
|
||||
angle:
|
||||
x: 0x0000
|
||||
y: 0x0000
|
||||
z: 0x00FF
|
||||
layers:
|
||||
- 3
|
||||
|
||||
F_SP115: # Lake Hylia
|
||||
0: # Room 0 - Main Lake
|
||||
# Spawn Auru on layers 1 & 3
|
||||
|
||||
@@ -111,6 +111,28 @@ F_SP103:
|
||||
layers:
|
||||
- 0
|
||||
|
||||
# Ordon Spring
|
||||
F_SP104:
|
||||
# Room 1 - Main Spring
|
||||
1:
|
||||
# Golden Wolf in Ordon Spring
|
||||
- name: GWolf
|
||||
parameters: 0x0E4102FF
|
||||
position:
|
||||
x: -1855.69543457031
|
||||
y: 311.160461425781
|
||||
z: -8084.61572265625
|
||||
angle:
|
||||
x: 0x0BD1
|
||||
y: 0x8000
|
||||
z: 0x00FF
|
||||
patch:
|
||||
# Turn the golden wolf into a htPiece actor with the hidden skill item
|
||||
name: htPiece
|
||||
parameters: 0xFFFFFFE1
|
||||
layers:
|
||||
- 2
|
||||
|
||||
# Kakariko Graveyard
|
||||
F_SP111:
|
||||
# Room 0 - Main graveyard
|
||||
@@ -135,6 +157,25 @@ F_SP111:
|
||||
- 2
|
||||
- 3
|
||||
|
||||
# Golden Wolf in Kakariko Graveyard
|
||||
- name: GWolf
|
||||
parameters: 0x037906FF
|
||||
position:
|
||||
x: 17575.34375
|
||||
y: 500.0
|
||||
z: -51.3761901855469
|
||||
angle:
|
||||
x: 0x0BD1
|
||||
y: 0xC000
|
||||
z: 0x00FF
|
||||
patch:
|
||||
# Turn the golden wolf into a htPiece actor with the hidden skill item
|
||||
name: htPiece
|
||||
parameters: 0xFFFFFFE1
|
||||
layers:
|
||||
- 2
|
||||
- 3
|
||||
|
||||
# Zora's Domain
|
||||
F_SP113:
|
||||
# Room 1 - Main Zora's Domain Area
|
||||
@@ -183,6 +224,28 @@ F_SP115:
|
||||
- 3
|
||||
- 4
|
||||
|
||||
# Castle Town
|
||||
F_SP116:
|
||||
# Room 1 - North Castle Town
|
||||
1:
|
||||
# Golden Wolf in North Castle Town
|
||||
- name: GWolf
|
||||
parameters: 0x013207FF
|
||||
position:
|
||||
x: 0.0
|
||||
y: 800.0
|
||||
z: -9500.0
|
||||
angle:
|
||||
x: 0x0BD1
|
||||
y: 0x0000
|
||||
z: 0x00FF
|
||||
patch:
|
||||
# Turn the golden wolf into a htPiece actor with the hidden skill item
|
||||
name: htPiece
|
||||
parameters: 0xFFFFFFE1
|
||||
layers:
|
||||
- 1
|
||||
|
||||
# Sacred Grove
|
||||
F_SP117:
|
||||
# Room 1 - Pedestal of Time
|
||||
@@ -542,6 +605,28 @@ F_SP122:
|
||||
- 0
|
||||
- 6
|
||||
|
||||
# Golden Wolf Outside Castle Town West
|
||||
- name: GWolf
|
||||
parameters: 0x042903FF
|
||||
position:
|
||||
x: -68310.15625
|
||||
y: -1050.0
|
||||
z: 5925.4560546875
|
||||
angle:
|
||||
x: 0x0BD1
|
||||
y: 0xC16D
|
||||
z: 0x00FF
|
||||
patch:
|
||||
# Turn the golden wolf into a htPiece actor with the hidden skill item
|
||||
name: htPiece
|
||||
parameters: 0xFFFFFFE1
|
||||
layers:
|
||||
- 0
|
||||
- 4
|
||||
- 6
|
||||
- 13
|
||||
- 14
|
||||
|
||||
# Room 16 - Outside South Castle Town
|
||||
16:
|
||||
# Male Ladybug
|
||||
@@ -586,6 +671,28 @@ F_SP122:
|
||||
- 1
|
||||
- 6
|
||||
|
||||
# Golden Wolf Outside Castle Town South
|
||||
- name: GWolf
|
||||
parameters: 0x022A04FF
|
||||
position:
|
||||
x: -55927.09375
|
||||
y: -6100.0
|
||||
z: 25315.892578125
|
||||
angle:
|
||||
x: 0x0BD1
|
||||
y: 0xE9F5
|
||||
z: 0x00FF
|
||||
patch:
|
||||
# Turn the golden wolf into a htPiece actor with the hidden skill item
|
||||
name: htPiece
|
||||
parameters: 0xFFFFFFE1
|
||||
layers:
|
||||
- 0
|
||||
- 4
|
||||
- 6
|
||||
- 13
|
||||
- 14
|
||||
|
||||
# Gerudo Desert
|
||||
F_SP124:
|
||||
# Room 0 - Main Desert
|
||||
@@ -626,6 +733,24 @@ F_SP124:
|
||||
layers:
|
||||
- 0
|
||||
|
||||
# Golden Wolf in Desert
|
||||
- name: GWolf
|
||||
parameters: 0x0B3205FF
|
||||
position:
|
||||
x: 1112.08215332031
|
||||
y: -162.940002441406
|
||||
z: 12659.6689453125
|
||||
angle:
|
||||
x: 0x0BD1
|
||||
y: 0x0000
|
||||
z: 0x00FF
|
||||
patch:
|
||||
# Turn the golden wolf into a htPiece actor with the hidden skill item
|
||||
name: htPiece
|
||||
parameters: 0xFFFFFFE1
|
||||
layers:
|
||||
- 0
|
||||
|
||||
# Upper Zora's River
|
||||
F_SP126:
|
||||
# Room 0 - Main area
|
||||
|
||||
@@ -272,15 +272,14 @@
|
||||
- Tbox ID: 7
|
||||
Stage: D_SB05
|
||||
|
||||
# TODO
|
||||
- Name: Ordon Spring Golden Wolf
|
||||
Original Item: Progressive Hidden Skill
|
||||
Categories:
|
||||
- Overworld
|
||||
- Hidden Skill
|
||||
- Golden Wolf
|
||||
- Ordona Province
|
||||
Metadata:
|
||||
- None
|
||||
- Flag: 0x3C08
|
||||
|
||||
- Name: Ordon Spring Warp Portal
|
||||
Original Item: Ordon Spring Portal
|
||||
@@ -582,15 +581,14 @@
|
||||
Metadata:
|
||||
- None
|
||||
|
||||
# TODO
|
||||
- Name: Faron Woods Golden Wolf
|
||||
Original Item: Progressive Hidden Skill
|
||||
Categories:
|
||||
- Overworld
|
||||
- Hidden Skill
|
||||
- Golden Wolf
|
||||
- Faron Woods
|
||||
Metadata:
|
||||
- None
|
||||
- Flag: 0x3C10
|
||||
|
||||
- Name: North Faron Woods Deku Baba Chest
|
||||
Original Item: Yellow Rupee
|
||||
@@ -1452,15 +1450,14 @@
|
||||
Metadata:
|
||||
- None
|
||||
|
||||
# TODO
|
||||
- Name: Kakariko Graveyard Golden Wolf
|
||||
Original Item: Progressive Hidden Skill
|
||||
Categories:
|
||||
- Overworld
|
||||
- Hidden Skill
|
||||
- Golden Wolf
|
||||
- Kakariko Graveyard
|
||||
Metadata:
|
||||
- None
|
||||
- Flag: 0x3D80
|
||||
|
||||
- Name: Kakariko Graveyard Open Poe
|
||||
Original Item: Poe Soul
|
||||
@@ -2188,15 +2185,14 @@
|
||||
- Tbox ID: 0
|
||||
Stage: D_SB05
|
||||
|
||||
# TODO
|
||||
- Name: West Hyrule Field Golden Wolf
|
||||
Original Item: Progressive Hidden Skill
|
||||
Categories:
|
||||
- Overworld
|
||||
- Hidden Skill
|
||||
- Golden Wolf
|
||||
- Hyrule Field - Lanayru Province
|
||||
Metadata:
|
||||
- None
|
||||
- Flag: 0x3C04
|
||||
|
||||
- Name: Hyrule Field Amphitheater Owl Statue Chest
|
||||
Original Item: Orange Rupee
|
||||
@@ -2288,10 +2284,10 @@
|
||||
Original Item: Progressive Hidden Skill
|
||||
Categories:
|
||||
- Overworld
|
||||
- Hidden Skill
|
||||
- Golden Wolf
|
||||
- Castle Town
|
||||
Metadata:
|
||||
- None
|
||||
- Flag: 0x3D40
|
||||
|
||||
- Name: Doctors Office Balcony Chest
|
||||
Original Item: Red Rupee
|
||||
@@ -2686,15 +2682,14 @@
|
||||
- Tbox ID: 1
|
||||
Stage: D_SB09
|
||||
|
||||
# TODO
|
||||
- Name: Outside South Castle Town Golden Wolf
|
||||
Original Item: Progressive Hidden Skill
|
||||
Categories:
|
||||
- Overworld
|
||||
- Hidden Skill
|
||||
- Golden Wolf
|
||||
- Hyrule Field - Lanayru Province
|
||||
Metadata:
|
||||
- None
|
||||
- Flag: 0x3C02
|
||||
|
||||
- Name: Outside South Castle Town Double Clawshot Chasm Chest
|
||||
Original Item: Orange Rupee
|
||||
@@ -4337,15 +4332,14 @@
|
||||
- Tbox ID: 13
|
||||
Stage: F_SP124
|
||||
|
||||
# TODO
|
||||
- Name: Gerudo Desert Golden Wolf
|
||||
Original Item: Progressive Hidden Skill
|
||||
Categories:
|
||||
- Overworld
|
||||
- Hidden Skill
|
||||
- Golden Wolf
|
||||
- Gerudo Desert
|
||||
Metadata:
|
||||
- None
|
||||
- Flag: 0x3C01
|
||||
|
||||
- Name: Outside Bulblin Camp Poe
|
||||
Original Item: Poe Soul
|
||||
|
||||
@@ -186,7 +186,7 @@
|
||||
Kakariko Graveyard Male Ant: Nothing
|
||||
Kakariko Graveyard Grave Poe: Can_Use_Senses and Night
|
||||
Kakariko Graveyard Open Poe: Can_Use_Senses and Night
|
||||
Kakariko Graveyard Golden Wolf: "'Howl_at_Snowpeak_Mountain_Howling_Stone'"
|
||||
Kakariko Graveyard Golden Wolf: Can_Complete_Eldin_Twilight and 'Howl_at_Snowpeak_Mountain_Howling_Stone'
|
||||
Kakariko Graveyard Twilit Insect: Can_Defeat_Eldin_Twilit_Insect
|
||||
Exits:
|
||||
Kakariko Graveyard Pond: "'Can_Follow_Rutella'"
|
||||
|
||||
@@ -231,7 +231,7 @@
|
||||
Locations:
|
||||
North Faron Warp Portal: Can_Complete_Prologue
|
||||
North Faron Woods Deku Baba Chest: Nothing
|
||||
Faron Woods Golden Wolf: Nothing
|
||||
Faron Woods Golden Wolf: Can_Complete_Faron_Twilight
|
||||
North Faron Woods Twilit Insect 1: Can_Defeat_Faron_Twilit_Insect
|
||||
North Faron Woods Twilit Insect 2: Can_Defeat_Faron_Twilit_Insect
|
||||
Exits:
|
||||
|
||||
Reference in New Issue
Block a user