mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2024-12-21 23:58:51 -05:00
Add scene table (#3131)
* Add scene table * Re-add accidentally deleted entry * Update CrashHandlerExt.cpp * Update CrashHandlerExt.cpp
This commit is contained in:
parent
0e7c658523
commit
45b7520dcb
@ -306,15 +306,15 @@ extern GraphicsContext* __gfxCtx;
|
||||
#define NUM_TRIALS 6
|
||||
#define NUM_SHOP_ITEMS 64
|
||||
#define NUM_SCRUBS 46
|
||||
#define FOREST_TEMPLE_SMALL_KEY_MAX (ResourceMgr_IsSceneMasterQuest(SCENE_BMORI1) ? 6 : 5)
|
||||
#define FIRE_TEMPLE_SMALL_KEY_MAX (ResourceMgr_IsSceneMasterQuest(SCENE_HIDAN) ? 5 : 8)
|
||||
#define WATER_TEMPLE_SMALL_KEY_MAX (ResourceMgr_IsSceneMasterQuest(SCENE_MIZUSIN) ? 2 : 6)
|
||||
#define SPIRIT_TEMPLE_SMALL_KEY_MAX (ResourceMgr_IsSceneMasterQuest(SCENE_JYASINZOU) ? 7 : 5)
|
||||
#define SHADOW_TEMPLE_SMALL_KEY_MAX (ResourceMgr_IsSceneMasterQuest(SCENE_HAKADAN) ? 6 : 5)
|
||||
#define BOTTOM_OF_THE_WELL_SMALL_KEY_MAX (ResourceMgr_IsSceneMasterQuest(SCENE_HAKADANCH) ? 2 : 3)
|
||||
#define GERUDO_TRAINING_GROUNDS_SMALL_KEY_MAX (ResourceMgr_IsSceneMasterQuest(SCENE_MEN) ? 3 : 9)
|
||||
#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_GROUNDS_SMALL_KEY_MAX (ResourceMgr_IsSceneMasterQuest(SCENE_GERUDO_TRAINING_GROUND) ? 3 : 9)
|
||||
#define GERUDO_FORTRESS_SMALL_KEY_MAX 4
|
||||
#define GANONS_CASTLE_SMALL_KEY_MAX (ResourceMgr_IsSceneMasterQuest(SCENE_GANONTIKA) ? 3 : 2)
|
||||
#define GANONS_CASTLE_SMALL_KEY_MAX (ResourceMgr_IsSceneMasterQuest(SCENE_INSIDE_GANONS_CASTLE) ? 3 : 2)
|
||||
#define TREASURE_GAME_SMALL_KEY_MAX 6
|
||||
|
||||
#define DUNGEON_ITEMS_CAN_BE_OUTSIDE_DUNGEON(randomizerSettingsKey) \
|
||||
|
122
soh/include/tables/scene_table.h
Normal file
122
soh/include/tables/scene_table.h
Normal file
@ -0,0 +1,122 @@
|
||||
/**
|
||||
* Scene Table
|
||||
*
|
||||
* DEFINE_SCENE should be used for all scenes (with or without a title card, see argument 2)
|
||||
* - Argument 1: Name of the scene segment in spec
|
||||
* - Argument 2: Name of the title card segment in spec, or `none` for no title card
|
||||
* - Argument 3: Enum value for this scene
|
||||
* - Argument 4: Scene draw config index
|
||||
* - Argument 5: ? (Unknown)
|
||||
* - Argument 6: ? (Unknown)
|
||||
*/
|
||||
/* 0x00 */ DEFINE_SCENE(ydan_scene, g_pn_06, SCENE_DEKU_TREE, SDC_DEKU_TREE, 1, 2)
|
||||
/* 0x01 */ DEFINE_SCENE(ddan_scene, g_pn_08, SCENE_DODONGOS_CAVERN, SDC_DODONGOS_CAVERN, 1, 3)
|
||||
/* 0x02 */ DEFINE_SCENE(bdan_scene, g_pn_07, SCENE_JABU_JABU, SDC_JABU_JABU, 1, 4)
|
||||
/* 0x03 */ DEFINE_SCENE(Bmori1_scene, g_pn_01, SCENE_FOREST_TEMPLE, SDC_FOREST_TEMPLE, 2, 5)
|
||||
/* 0x04 */ DEFINE_SCENE(HIDAN_scene, g_pn_03, SCENE_FIRE_TEMPLE, SDC_FIRE_TEMPLE, 2, 6)
|
||||
/* 0x05 */ DEFINE_SCENE(MIZUsin_scene, g_pn_04, SCENE_WATER_TEMPLE, SDC_WATER_TEMPLE, 1, 7)
|
||||
/* 0x06 */ DEFINE_SCENE(jyasinzou_scene, g_pn_05, SCENE_SPIRIT_TEMPLE, SDC_SPIRIT_TEMPLE, 1, 8)
|
||||
/* 0x07 */ DEFINE_SCENE(HAKAdan_scene, g_pn_02, SCENE_SHADOW_TEMPLE, SDC_SHADOW_TEMPLE_AND_WELL, 2, 9)
|
||||
/* 0x08 */ DEFINE_SCENE(HAKAdanCH_scene, g_pn_54, SCENE_BOTTOM_OF_THE_WELL, SDC_SHADOW_TEMPLE_AND_WELL, 2, 10)
|
||||
/* 0x09 */ DEFINE_SCENE(ice_doukutu_scene, g_pn_10, SCENE_ICE_CAVERN, SDC_ICE_CAVERN, 0, 0)
|
||||
/* 0x0A */ DEFINE_SCENE(ganon_scene, none, SCENE_GANONS_TOWER, SDC_DEFAULT, 2, 0)
|
||||
/* 0x0B */ DEFINE_SCENE(men_scene, g_pn_11, SCENE_GERUDO_TRAINING_GROUND, SDC_GERUDO_TRAINING_GROUND, 0, 0)
|
||||
/* 0x0C */ DEFINE_SCENE(gerudoway_scene, g_pn_49, SCENE_THIEVES_HIDEOUT, SDC_THIEVES_HIDEOUT, 0, 0)
|
||||
/* 0x0D */ DEFINE_SCENE(ganontika_scene, g_pn_09, SCENE_INSIDE_GANONS_CASTLE, SDC_INSIDE_GANONS_CASTLE, 0, 0)
|
||||
/* 0x0E */ DEFINE_SCENE(ganon_sonogo_scene, none, SCENE_GANONS_TOWER_COLLAPSE_INTERIOR, SDC_GANONS_TOWER_COLLAPSE_INTERIOR, 0, 0)
|
||||
/* 0x0F */ DEFINE_SCENE(ganontikasonogo_scene, none, SCENE_INSIDE_GANONS_CASTLE_COLLAPSE, SDC_INSIDE_GANONS_CASTLE_COLLAPSE, 0, 0)
|
||||
/* 0x10 */ DEFINE_SCENE(takaraya_scene, g_pn_51, SCENE_TREASURE_BOX_SHOP, SDC_DEFAULT, 0, 0)
|
||||
/* 0x11 */ DEFINE_SCENE(ydan_boss_scene, none, SCENE_DEKU_TREE_BOSS, SDC_DEKU_TREE_BOSS, 0, 0)
|
||||
/* 0x12 */ DEFINE_SCENE(ddan_boss_scene, none, SCENE_DODONGOS_CAVERN_BOSS, SDC_DEFAULT, 0, 0)
|
||||
/* 0x13 */ DEFINE_SCENE(bdan_boss_scene, none, SCENE_JABU_JABU_BOSS, SDC_JABU_JABU, 0, 0)
|
||||
/* 0x14 */ DEFINE_SCENE(moribossroom_scene, none, SCENE_FOREST_TEMPLE_BOSS, SDC_DEFAULT, 1, 0)
|
||||
/* 0x15 */ DEFINE_SCENE(FIRE_bs_scene, none, SCENE_FIRE_TEMPLE_BOSS, SDC_FIRE_TEMPLE, 0, 0)
|
||||
/* 0x16 */ DEFINE_SCENE(MIZUsin_bs_scene, none, SCENE_WATER_TEMPLE_BOSS, SDC_WATER_TEMPLE_BOSS, 0, 0)
|
||||
/* 0x17 */ DEFINE_SCENE(jyasinboss_scene, none, SCENE_SPIRIT_TEMPLE_BOSS, SDC_DEFAULT, 0, 0)
|
||||
/* 0x18 */ DEFINE_SCENE(HAKAdan_bs_scene, none, SCENE_SHADOW_TEMPLE_BOSS, SDC_SHADOW_TEMPLE_AND_WELL, 0, 0)
|
||||
/* 0x19 */ DEFINE_SCENE(ganon_boss_scene, none, SCENE_GANONDORF_BOSS, SDC_DEFAULT, 0, 0)
|
||||
/* 0x1A */ DEFINE_SCENE(ganon_final_scene, none, SCENE_GANONS_TOWER_COLLAPSE_EXTERIOR, SDC_GANONS_TOWER_COLLAPSE_EXTERIOR, 0, 0)
|
||||
/* 0x1B */ DEFINE_SCENE(entra_scene, none, SCENE_MARKET_ENTRANCE_DAY, SDC_DEFAULT, 0, 0)
|
||||
/* 0x1C */ DEFINE_SCENE(entra_n_scene, none, SCENE_MARKET_ENTRANCE_NIGHT, SDC_DEFAULT, 0, 0)
|
||||
/* 0x1D */ DEFINE_SCENE(enrui_scene, none, SCENE_MARKET_ENTRANCE_RUINS, SDC_DEFAULT, 0, 0)
|
||||
/* 0x1E */ DEFINE_SCENE(market_alley_scene, g_pn_18, SCENE_BACK_ALLEY_DAY, SDC_DEFAULT, 0, 0)
|
||||
/* 0x1F */ DEFINE_SCENE(market_alley_n_scene, g_pn_18, SCENE_BACK_ALLEY_NIGHT, SDC_DEFAULT, 0, 0)
|
||||
/* 0x20 */ DEFINE_SCENE(market_day_scene, g_pn_17, SCENE_MARKET_DAY, SDC_DEFAULT, 0, 0)
|
||||
/* 0x21 */ DEFINE_SCENE(market_night_scene, g_pn_17, SCENE_MARKET_NIGHT, SDC_DEFAULT, 0, 0)
|
||||
/* 0x22 */ DEFINE_SCENE(market_ruins_scene, g_pn_17, SCENE_MARKET_RUINS, SDC_DEFAULT, 0, 0)
|
||||
/* 0x23 */ DEFINE_SCENE(shrine_scene, none, SCENE_TEMPLE_OF_TIME_EXTERIOR_DAY, SDC_DEFAULT, 0, 0)
|
||||
/* 0x24 */ DEFINE_SCENE(shrine_n_scene, none, SCENE_TEMPLE_OF_TIME_EXTERIOR_NIGHT, SDC_DEFAULT, 0, 0)
|
||||
/* 0x25 */ DEFINE_SCENE(shrine_r_scene, none, SCENE_TEMPLE_OF_TIME_EXTERIOR_RUINS, SDC_DEFAULT, 0, 0)
|
||||
/* 0x26 */ DEFINE_SCENE(kokiri_home_scene, none, SCENE_KNOW_IT_ALL_BROS_HOUSE, SDC_DEFAULT, 0, 0)
|
||||
/* 0x27 */ DEFINE_SCENE(kokiri_home3_scene, none, SCENE_TWINS_HOUSE, SDC_DEFAULT, 0, 0)
|
||||
/* 0x28 */ DEFINE_SCENE(kokiri_home4_scene, none, SCENE_MIDOS_HOUSE, SDC_DEFAULT, 0, 0)
|
||||
/* 0x29 */ DEFINE_SCENE(kokiri_home5_scene, none, SCENE_SARIAS_HOUSE, SDC_DEFAULT, 0, 0)
|
||||
/* 0x2A */ DEFINE_SCENE(kakariko_scene, none, SCENE_KAKARIKO_CENTER_GUEST_HOUSE, SDC_DEFAULT, 0, 0)
|
||||
/* 0x2B */ DEFINE_SCENE(kakariko3_scene, none, SCENE_BACK_ALLEY_HOUSE, SDC_DEFAULT, 0, 0)
|
||||
/* 0x2C */ DEFINE_SCENE(shop1_scene, g_pn_23, SCENE_BAZAAR, SDC_DEFAULT, 0, 0)
|
||||
/* 0x2D */ DEFINE_SCENE(kokiri_shop_scene, g_pn_19, SCENE_KOKIRI_SHOP, SDC_DEFAULT, 0, 0)
|
||||
/* 0x2E */ DEFINE_SCENE(golon_scene, g_pn_20, SCENE_GORON_SHOP, SDC_DEFAULT, 0, 0)
|
||||
/* 0x2F */ DEFINE_SCENE(zoora_scene, g_pn_21, SCENE_ZORA_SHOP, SDC_DEFAULT, 0, 0)
|
||||
/* 0x30 */ DEFINE_SCENE(drag_scene, g_pn_24, SCENE_POTION_SHOP_KAKARIKO, SDC_DEFAULT, 0, 0)
|
||||
/* 0x31 */ DEFINE_SCENE(alley_shop_scene, g_pn_24, SCENE_POTION_SHOP_MARKET, SDC_DEFAULT, 0, 0)
|
||||
/* 0x32 */ DEFINE_SCENE(night_shop_scene, g_pn_56, SCENE_BOMBCHU_SHOP, SDC_DEFAULT, 0, 0)
|
||||
/* 0x33 */ DEFINE_SCENE(face_shop_scene, g_pn_50, SCENE_HAPPY_MASK_SHOP, SDC_DEFAULT, 0, 0)
|
||||
/* 0x34 */ DEFINE_SCENE(link_home_scene, none, SCENE_LINKS_HOUSE, SDC_DEFAULT, 0, 0)
|
||||
/* 0x35 */ DEFINE_SCENE(impa_scene, none, SCENE_DOG_LADY_HOUSE, SDC_DEFAULT, 0, 0)
|
||||
/* 0x36 */ DEFINE_SCENE(malon_stable_scene, g_pn_48, SCENE_STABLE, SDC_DEFAULT, 0, 0)
|
||||
/* 0x37 */ DEFINE_SCENE(labo_scene, none, SCENE_IMPAS_HOUSE, SDC_DEFAULT, 0, 0)
|
||||
/* 0x38 */ DEFINE_SCENE(hylia_labo_scene, g_pn_26, SCENE_LAKESIDE_LABORATORY, SDC_LAKESIDE_LABORATORY, 0, 0)
|
||||
/* 0x39 */ DEFINE_SCENE(tent_scene, none, SCENE_CARPENTERS_TENT, SDC_DEFAULT, 0, 0)
|
||||
/* 0x3A */ DEFINE_SCENE(hut_scene, g_pn_25, SCENE_GRAVEKEEPERS_HUT, SDC_DEFAULT, 0, 0)
|
||||
/* 0x3B */ DEFINE_SCENE(daiyousei_izumi_scene, g_pn_13, SCENE_GREAT_FAIRYS_FOUNTAIN_MAGIC, SDC_GREAT_FAIRYS_FOUNTAIN, 0, 0)
|
||||
/* 0x3C */ DEFINE_SCENE(yousei_izumi_tate_scene, g_pn_45, SCENE_FAIRYS_FOUNTAIN, SDC_FAIRYS_FOUNTAIN, 0, 0)
|
||||
/* 0x3D */ DEFINE_SCENE(yousei_izumi_yoko_scene, g_pn_13, SCENE_GREAT_FAIRYS_FOUNTAIN_SPELLS, SDC_GREAT_FAIRYS_FOUNTAIN, 0, 0)
|
||||
/* 0x3E */ DEFINE_SCENE(kakusiana_scene, none, SCENE_GROTTOS, SDC_GROTTOS, 0, 0)
|
||||
/* 0x3F */ DEFINE_SCENE(hakaana_scene, none, SCENE_REDEAD_GRAVE, SDC_GRAVE_EXIT_LIGHT_SHINING, 0, 0)
|
||||
/* 0x40 */ DEFINE_SCENE(hakaana2_scene, none, SCENE_GRAVE_WITH_FAIRYS_FOUNTAIN, SDC_FAIRYS_FOUNTAIN, 0, 0)
|
||||
/* 0x41 */ DEFINE_SCENE(hakaana_ouke_scene, g_pn_44, SCENE_ROYAL_FAMILYS_TOMB, SDC_ROYAL_FAMILYS_TOMB, 0, 0)
|
||||
/* 0x42 */ DEFINE_SCENE(syatekijyou_scene, g_pn_15, SCENE_SHOOTING_GALLERY, SDC_SHOOTING_GALLERY, 0, 0)
|
||||
/* 0x43 */ DEFINE_SCENE(tokinoma_scene, g_pn_16, SCENE_TEMPLE_OF_TIME, SDC_TEMPLE_OF_TIME, 0, 0)
|
||||
/* 0x44 */ DEFINE_SCENE(kenjyanoma_scene, g_pn_14, SCENE_CHAMBER_OF_THE_SAGES, SDC_CHAMBER_OF_THE_SAGES, 0, 0)
|
||||
/* 0x45 */ DEFINE_SCENE(hairal_niwa_scene, g_pn_12, SCENE_CASTLE_COURTYARD_GUARDS_DAY, SDC_CASTLE_COURTYARD_GUARDS, 0, 0)
|
||||
/* 0x46 */ DEFINE_SCENE(hairal_niwa_n_scene, g_pn_12, SCENE_CASTLE_COURTYARD_GUARDS_NIGHT, SDC_CASTLE_COURTYARD_GUARDS, 0, 0)
|
||||
/* 0x47 */ DEFINE_SCENE(hiral_demo_scene, none, SCENE_CUTSCENE_MAP, SDC_DEFAULT, 0, 0)
|
||||
/* 0x48 */ DEFINE_SCENE(hakasitarelay_scene, g_pn_57, SCENE_WINDMILL_AND_DAMPES_GRAVE, SDC_GRAVE_EXIT_LIGHT_SHINING, 0, 0)
|
||||
/* 0x49 */ DEFINE_SCENE(turibori_scene, g_pn_46, SCENE_FISHING_POND, SDC_FISHING_POND, 0, 0)
|
||||
/* 0x4A */ DEFINE_SCENE(nakaniwa_scene, g_pn_12, SCENE_CASTLE_COURTYARD_ZELDA, SDC_CALM_WATER, 0, 0)
|
||||
/* 0x4B */ DEFINE_SCENE(bowling_scene, g_pn_47, SCENE_BOMBCHU_BOWLING_ALLEY, SDC_BOMBCHU_BOWLING_ALLEY, 0, 0)
|
||||
/* 0x4C */ DEFINE_SCENE(souko_scene, none, SCENE_LON_LON_BUILDINGS, SDC_LON_LON_BUILDINGS, 0, 0)
|
||||
/* 0x4D */ DEFINE_SCENE(miharigoya_scene, none, SCENE_MARKET_GUARD_HOUSE, SDC_MARKET_GUARD_HOUSE, 0, 0)
|
||||
/* 0x4E */ DEFINE_SCENE(mahouya_scene, g_pn_24, SCENE_POTION_SHOP_GRANNY, SDC_POTION_SHOP_GRANNY, 0, 0)
|
||||
/* 0x4F */ DEFINE_SCENE(ganon_demo_scene, none, SCENE_GANON_BOSS, SDC_OUTSIDE_GANONS_CASTLE, 0, 0)
|
||||
/* 0x50 */ DEFINE_SCENE(kinsuta_scene, g_pn_22, SCENE_HOUSE_OF_SKULLTULA, SDC_DEFAULT, 0, 0)
|
||||
/* 0x51 */ DEFINE_SCENE(spot00_scene, g_pn_27, SCENE_HYRULE_FIELD, SDC_HYRULE_FIELD, 0, 0)
|
||||
/* 0x52 */ DEFINE_SCENE(spot01_scene, g_pn_28, SCENE_KAKARIKO_VILLAGE, SDC_KAKARIKO_VILLAGE, 0, 0)
|
||||
/* 0x53 */ DEFINE_SCENE(spot02_scene, g_pn_29, SCENE_GRAVEYARD, SDC_DEFAULT, 0, 0)
|
||||
/* 0x54 */ DEFINE_SCENE(spot03_scene, g_pn_30, SCENE_ZORAS_RIVER, SDC_ZORAS_RIVER, 0, 0)
|
||||
/* 0x55 */ DEFINE_SCENE(spot04_scene, g_pn_31, SCENE_KOKIRI_FOREST, SDC_KOKIRI_FOREST, 0, 0)
|
||||
/* 0x56 */ DEFINE_SCENE(spot05_scene, g_pn_52, SCENE_SACRED_FOREST_MEADOW, SDC_CALM_WATER, 0, 0)
|
||||
/* 0x57 */ DEFINE_SCENE(spot06_scene, g_pn_32, SCENE_LAKE_HYLIA, SDC_LAKE_HYLIA, 0, 0)
|
||||
/* 0x58 */ DEFINE_SCENE(spot07_scene, g_pn_33, SCENE_ZORAS_DOMAIN, SDC_ZORAS_DOMAIN, 0, 0)
|
||||
/* 0x59 */ DEFINE_SCENE(spot08_scene, g_pn_34, SCENE_ZORAS_FOUNTAIN, SDC_ZORAS_FOUNTAIN, 0, 0)
|
||||
/* 0x5A */ DEFINE_SCENE(spot09_scene, g_pn_35, SCENE_GERUDO_VALLEY, SDC_GERUDO_VALLEY, 0, 0)
|
||||
/* 0x5B */ DEFINE_SCENE(spot10_scene, g_pn_36, SCENE_LOST_WOODS, SDC_LOST_WOODS, 0, 0)
|
||||
/* 0x5C */ DEFINE_SCENE(spot11_scene, g_pn_55, SCENE_DESERT_COLOSSUS, SDC_DESERT_COLOSSUS, 0, 0)
|
||||
/* 0x5D */ DEFINE_SCENE(spot12_scene, g_pn_53, SCENE_GERUDOS_FORTRESS, SDC_GERUDOS_FORTRESS, 0, 0)
|
||||
/* 0x5E */ DEFINE_SCENE(spot13_scene, g_pn_37, SCENE_HAUNTED_WASTELAND, SDC_HAUNTED_WASTELAND, 0, 0)
|
||||
/* 0x5F */ DEFINE_SCENE(spot15_scene, g_pn_38, SCENE_HYRULE_CASTLE, SDC_HYRULE_CASTLE, 0, 0)
|
||||
/* 0x60 */ DEFINE_SCENE(spot16_scene, g_pn_39, SCENE_DEATH_MOUNTAIN_TRAIL, SDC_DEATH_MOUNTAIN_TRAIL, 0, 0)
|
||||
/* 0x61 */ DEFINE_SCENE(spot17_scene, g_pn_40, SCENE_DEATH_MOUNTAIN_CRATER, SDC_DEATH_MOUNTAIN_CRATER, 0, 0)
|
||||
/* 0x62 */ DEFINE_SCENE(spot18_scene, g_pn_41, SCENE_GORON_CITY, SDC_GORON_CITY, 0, 0)
|
||||
/* 0x63 */ DEFINE_SCENE(spot20_scene, g_pn_42, SCENE_LON_LON_RANCH, SDC_LON_LON_RANCH, 0, 0)
|
||||
/* 0x64 */ DEFINE_SCENE(ganon_tou_scene, g_pn_43, SCENE_OUTSIDE_GANONS_CASTLE, SDC_OUTSIDE_GANONS_CASTLE, 0, 0)
|
||||
// Debug-only scenes
|
||||
/* 0x65 */ DEFINE_SCENE(test01_scene, none, SCENE_TEST01, SDC_CALM_WATER, 0, 0)
|
||||
/* 0x66 */ DEFINE_SCENE(besitu_scene, none, SCENE_BESITU, SDC_BESITU, 0, 0)
|
||||
/* 0x67 */ DEFINE_SCENE(depth_test_scene, none, SCENE_DEPTH_TEST, SDC_DEFAULT, 0, 0)
|
||||
/* 0x68 */ DEFINE_SCENE(syotes_scene, none, SCENE_SYOTES, SDC_DEFAULT, 0, 0)
|
||||
/* 0x69 */ DEFINE_SCENE(syotes2_scene, none, SCENE_SYOTES2, SDC_DEFAULT, 0, 0)
|
||||
/* 0x6A */ DEFINE_SCENE(sutaru_scene, none, SCENE_SUTARU, SDC_DEFAULT, 0, 0)
|
||||
/* 0x6B */ DEFINE_SCENE(hairal_niwa2_scene, g_pn_12, SCENE_HAIRAL_NIWA2, SDC_CASTLE_COURTYARD_GUARDS, 0, 0)
|
||||
/* 0x6C */ DEFINE_SCENE(sasatest_scene, none, SCENE_SASATEST, SDC_DEFAULT, 0, 0)
|
||||
/* 0x6D */ DEFINE_SCENE(testroom_scene, none, SCENE_TESTROOM, SDC_DEFAULT, 0, 0)
|
@ -303,125 +303,76 @@ typedef union {
|
||||
SCmdAltHeaders altHeaders;
|
||||
} SceneCmd; // size = 0x8
|
||||
|
||||
#define DEFINE_SCENE(_0, _1, enum, _3, _4, _5) enum,
|
||||
|
||||
#ifdef __cplusplus
|
||||
enum SceneID : int {
|
||||
#else
|
||||
enum SceneID {
|
||||
#endif
|
||||
/* 0x00 */ SCENE_YDAN,
|
||||
/* 0x01 */ SCENE_DDAN,
|
||||
/* 0x02 */ SCENE_BDAN,
|
||||
/* 0x03 */ SCENE_BMORI1,
|
||||
/* 0x04 */ SCENE_HIDAN,
|
||||
/* 0x05 */ SCENE_MIZUSIN,
|
||||
/* 0x06 */ SCENE_JYASINZOU,
|
||||
/* 0x07 */ SCENE_HAKADAN,
|
||||
/* 0x08 */ SCENE_HAKADANCH,
|
||||
/* 0x09 */ SCENE_ICE_DOUKUTO,
|
||||
/* 0x0A */ SCENE_GANON,
|
||||
/* 0x0B */ SCENE_MEN,
|
||||
/* 0x0C */ SCENE_GERUDOWAY,
|
||||
/* 0x0D */ SCENE_GANONTIKA,
|
||||
/* 0x0E */ SCENE_GANON_SONOGO,
|
||||
/* 0x0F */ SCENE_GANONTIKA_SONOGO,
|
||||
/* 0x10 */ SCENE_TAKARAYA,
|
||||
/* 0x11 */ SCENE_YDAN_BOSS,
|
||||
/* 0x12 */ SCENE_DDAN_BOSS,
|
||||
/* 0x13 */ SCENE_BDAN_BOSS,
|
||||
/* 0x14 */ SCENE_MORIBOSSROOM,
|
||||
/* 0x15 */ SCENE_FIRE_BS,
|
||||
/* 0x16 */ SCENE_MIZUSIN_BS,
|
||||
/* 0x17 */ SCENE_JYASINBOSS,
|
||||
/* 0x18 */ SCENE_HAKADAN_BS,
|
||||
/* 0x19 */ SCENE_GANON_BOSS,
|
||||
/* 0x1A */ SCENE_GANON_FINAL,
|
||||
/* 0x1B */ SCENE_ENTRA,
|
||||
/* 0x1C */ SCENE_ENTRA_N,
|
||||
/* 0x1D */ SCENE_ENRUI,
|
||||
/* 0x1E */ SCENE_MARKET_ALLEY,
|
||||
/* 0x1F */ SCENE_MARKET_ALLEY_N,
|
||||
/* 0x20 */ SCENE_MARKET_DAY,
|
||||
/* 0x21 */ SCENE_MARKET_NIGHT,
|
||||
/* 0x22 */ SCENE_MARKET_RUINS,
|
||||
/* 0x23 */ SCENE_SHRINE,
|
||||
/* 0x24 */ SCENE_SHRINE_N,
|
||||
/* 0x25 */ SCENE_SHRINE_R,
|
||||
/* 0x26 */ SCENE_KOKIRI_HOME,
|
||||
/* 0x27 */ SCENE_KOKIRI_HOME3,
|
||||
/* 0x28 */ SCENE_KOKIRI_HOME4,
|
||||
/* 0x29 */ SCENE_KOKIRI_HOME5,
|
||||
/* 0x2A */ SCENE_KAKARIKO,
|
||||
/* 0x2B */ SCENE_KAKARIKO3,
|
||||
/* 0x2C */ SCENE_SHOP1,
|
||||
/* 0x2D */ SCENE_KOKIRI_SHOP,
|
||||
/* 0x2E */ SCENE_GOLON,
|
||||
/* 0x2F */ SCENE_ZOORA,
|
||||
/* 0x30 */ SCENE_DRAG,
|
||||
/* 0x31 */ SCENE_ALLEY_SHOP,
|
||||
/* 0x32 */ SCENE_NIGHT_SHOP,
|
||||
/* 0x33 */ SCENE_FACE_SHOP,
|
||||
/* 0x34 */ SCENE_LINK_HOME,
|
||||
/* 0x35 */ SCENE_IMPA,
|
||||
/* 0x36 */ SCENE_MALON_STABLE,
|
||||
/* 0x37 */ SCENE_LABO,
|
||||
/* 0x38 */ SCENE_HYLIA_LABO,
|
||||
/* 0x39 */ SCENE_TENT,
|
||||
/* 0x3A */ SCENE_HUT,
|
||||
/* 0x3B */ SCENE_DAIYOUSEI_IZUMI,
|
||||
/* 0x3C */ SCENE_YOUSEI_IZUMI_TATE,
|
||||
/* 0x3D */ SCENE_YOUSEI_IZUMI_YOKO,
|
||||
/* 0x3E */ SCENE_KAKUSIANA,
|
||||
/* 0x3F */ SCENE_HAKAANA,
|
||||
/* 0x40 */ SCENE_HAKAANA2,
|
||||
/* 0x41 */ SCENE_HAKAANA_OUKE,
|
||||
/* 0x42 */ SCENE_SYATEKIJYOU,
|
||||
/* 0x43 */ SCENE_TOKINOMA,
|
||||
/* 0x44 */ SCENE_KENJYANOMA,
|
||||
/* 0x45 */ SCENE_HAIRAL_NIWA,
|
||||
/* 0x46 */ SCENE_HAIRAL_NIWA_N,
|
||||
/* 0x47 */ SCENE_HIRAL_DEMO,
|
||||
/* 0x48 */ SCENE_HAKASITARELAY,
|
||||
/* 0x49 */ SCENE_TURIBORI,
|
||||
/* 0x4A */ SCENE_NAKANIWA,
|
||||
/* 0x4B */ SCENE_BOWLING,
|
||||
/* 0x4C */ SCENE_SOUKO,
|
||||
/* 0x4D */ SCENE_MIHARIGOYA,
|
||||
/* 0x4E */ SCENE_MAHOUYA,
|
||||
/* 0x4F */ SCENE_GANON_DEMO,
|
||||
/* 0x50 */ SCENE_KINSUTA,
|
||||
/* 0x51 */ SCENE_SPOT00,
|
||||
/* 0x52 */ SCENE_SPOT01,
|
||||
/* 0x53 */ SCENE_SPOT02,
|
||||
/* 0x54 */ SCENE_SPOT03,
|
||||
/* 0x55 */ SCENE_SPOT04,
|
||||
/* 0x56 */ SCENE_SPOT05,
|
||||
/* 0x57 */ SCENE_SPOT06,
|
||||
/* 0x58 */ SCENE_SPOT07,
|
||||
/* 0x59 */ SCENE_SPOT08,
|
||||
/* 0x5A */ SCENE_SPOT09,
|
||||
/* 0x5B */ SCENE_SPOT10,
|
||||
/* 0x5C */ SCENE_SPOT11,
|
||||
/* 0x5D */ SCENE_SPOT12,
|
||||
/* 0x5E */ SCENE_SPOT13,
|
||||
/* 0x5F */ SCENE_SPOT15,
|
||||
/* 0x60 */ SCENE_SPOT16,
|
||||
/* 0x61 */ SCENE_SPOT17,
|
||||
/* 0x62 */ SCENE_SPOT18,
|
||||
/* 0x63 */ SCENE_SPOT20,
|
||||
/* 0x64 */ SCENE_GANON_TOU,
|
||||
// Debug only scenes
|
||||
/* 0x65 */ SCENE_TEST01,
|
||||
/* 0x66 */ SCENE_BESITU,
|
||||
/* 0x67 */ SCENE_DEPTH_TEST,
|
||||
/* 0x68 */ SCENE_SYOTES,
|
||||
/* 0x69 */ SCENE_SYOTES2,
|
||||
/* 0x6A */ SCENE_SUTARU,
|
||||
/* 0x6B */ SCENE_HAIRAL_NIWA2,
|
||||
/* 0x6C */ SCENE_SASATEST,
|
||||
/* 0x6D */ SCENE_TESTROOM,
|
||||
#include "tables/scene_table.h"
|
||||
/* 0x6E */ SCENE_ID_MAX
|
||||
};
|
||||
|
||||
#undef DEFINE_SCENE
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ SDC_DEFAULT,
|
||||
/* 1 */ SDC_HYRULE_FIELD,
|
||||
/* 2 */ SDC_KAKARIKO_VILLAGE,
|
||||
/* 3 */ SDC_ZORAS_RIVER,
|
||||
/* 4 */ SDC_KOKIRI_FOREST,
|
||||
/* 5 */ SDC_LAKE_HYLIA,
|
||||
/* 6 */ SDC_ZORAS_DOMAIN,
|
||||
/* 7 */ SDC_ZORAS_FOUNTAIN,
|
||||
/* 8 */ SDC_GERUDO_VALLEY,
|
||||
/* 9 */ SDC_LOST_WOODS,
|
||||
/* 10 */ SDC_DESERT_COLOSSUS,
|
||||
/* 11 */ SDC_GERUDOS_FORTRESS,
|
||||
/* 12 */ SDC_HAUNTED_WASTELAND,
|
||||
/* 13 */ SDC_HYRULE_CASTLE,
|
||||
/* 14 */ SDC_DEATH_MOUNTAIN_TRAIL,
|
||||
/* 15 */ SDC_DEATH_MOUNTAIN_CRATER,
|
||||
/* 16 */ SDC_GORON_CITY,
|
||||
/* 17 */ SDC_LON_LON_RANCH,
|
||||
/* 18 */ SDC_FIRE_TEMPLE,
|
||||
/* 19 */ SDC_DEKU_TREE,
|
||||
/* 20 */ SDC_DODONGOS_CAVERN,
|
||||
/* 21 */ SDC_JABU_JABU,
|
||||
/* 22 */ SDC_FOREST_TEMPLE,
|
||||
/* 23 */ SDC_WATER_TEMPLE,
|
||||
/* 24 */ SDC_SHADOW_TEMPLE_AND_WELL,
|
||||
/* 25 */ SDC_SPIRIT_TEMPLE,
|
||||
/* 26 */ SDC_INSIDE_GANONS_CASTLE,
|
||||
/* 27 */ SDC_GERUDO_TRAINING_GROUND,
|
||||
/* 28 */ SDC_DEKU_TREE_BOSS,
|
||||
/* 29 */ SDC_WATER_TEMPLE_BOSS,
|
||||
/* 30 */ SDC_TEMPLE_OF_TIME,
|
||||
/* 31 */ SDC_GROTTOS,
|
||||
/* 32 */ SDC_CHAMBER_OF_THE_SAGES,
|
||||
/* 33 */ SDC_GREAT_FAIRYS_FOUNTAIN,
|
||||
/* 34 */ SDC_SHOOTING_GALLERY,
|
||||
/* 35 */ SDC_CASTLE_COURTYARD_GUARDS,
|
||||
/* 36 */ SDC_OUTSIDE_GANONS_CASTLE,
|
||||
/* 37 */ SDC_ICE_CAVERN,
|
||||
/* 38 */ SDC_GANONS_TOWER_COLLAPSE_EXTERIOR,
|
||||
/* 39 */ SDC_FAIRYS_FOUNTAIN,
|
||||
/* 40 */ SDC_THIEVES_HIDEOUT,
|
||||
/* 41 */ SDC_BOMBCHU_BOWLING_ALLEY,
|
||||
/* 42 */ SDC_ROYAL_FAMILYS_TOMB,
|
||||
/* 43 */ SDC_LAKESIDE_LABORATORY,
|
||||
/* 44 */ SDC_LON_LON_BUILDINGS,
|
||||
/* 45 */ SDC_MARKET_GUARD_HOUSE,
|
||||
/* 46 */ SDC_POTION_SHOP_GRANNY,
|
||||
/* 47 */ SDC_CALM_WATER,
|
||||
/* 48 */ SDC_GRAVE_EXIT_LIGHT_SHINING,
|
||||
/* 49 */ SDC_BESITU,
|
||||
/* 50 */ SDC_FISHING_POND,
|
||||
/* 51 */ SDC_GANONS_TOWER_COLLAPSE_INTERIOR,
|
||||
/* 52 */ SDC_INSIDE_GANONS_CASTLE_COLLAPSE,
|
||||
/* 53 */ SDC_MAX
|
||||
} SceneDrawConfig;
|
||||
|
||||
// Scene commands
|
||||
|
||||
typedef enum {
|
||||
|
@ -19,110 +19,14 @@ static std::array<const char*, ACTORCAT_MAX> sCatToStrArray{
|
||||
"SWITCH", "BG", "PLAYER", "EXPLOSIVE", "NPC", "ENEMY", "PROP", "ITEMACTION", "MISC", "BOSS", "DOOR", "CHEST",
|
||||
};
|
||||
|
||||
#define DEFINE_SCENE(_1, _2, enumName, _4, _5, _6) #enumName
|
||||
|
||||
static std::array<const char*, SCENE_ID_MAX> sSceneIdToStrArray{
|
||||
"SCENE_YDAN",
|
||||
"SCENE_DDAN",
|
||||
"SCENE_BDAN",
|
||||
"SCENE_BMORI1",
|
||||
"SCENE_HIDAN",
|
||||
"SCENE_MIZUSIN",
|
||||
"SCENE_JYASINZOU",
|
||||
"SCENE_HAKADAN",
|
||||
"SCENE_HAKADANCH",
|
||||
"SCENE_ICE_DOUKUTO",
|
||||
"SCENE_GANON",
|
||||
"SCENE_MEN",
|
||||
"SCENE_GERUDOWAY",
|
||||
"SCENE_GANONTIKA",
|
||||
"SCENE_GANON_SONOGO",
|
||||
"SCENE_GANONTIKA_SONOGO",
|
||||
"SCENE_TAKARAYA",
|
||||
"SCENE_YDAN_BOSS",
|
||||
"SCENE_DDAN_BOSS",
|
||||
"SCENE_BDAN_BOSS",
|
||||
"SCENE_MORIBOSSROOM",
|
||||
"SCENE_FIRE_BS",
|
||||
"SCENE_MIZUSIN_BS",
|
||||
"SCENE_JYASINBOSS",
|
||||
"SCENE_HAKADAN_BS",
|
||||
"SCENE_GANON_BOSS",
|
||||
"SCENE_GANON_FINAL",
|
||||
"SCENE_ENTRA",
|
||||
"SCENE_ENTRA_N",
|
||||
"SCENE_ENRUI",
|
||||
"SCENE_MARKET_ALLEY",
|
||||
"SCENE_MARKET_ALLEY_N",
|
||||
"SCENE_MARKET_DAY",
|
||||
"SCENE_MARKET_NIGHT",
|
||||
"SCENE_MARKET_RUINS",
|
||||
"SCENE_SHRINE",
|
||||
"SCENE_SHRINE_N",
|
||||
"SCENE_SHRINE_R",
|
||||
"SCENE_KOKIRI_HOME",
|
||||
"SCENE_KOKIRI_HOME3",
|
||||
"SCENE_KOKIRI_HOME4",
|
||||
"SCENE_KOKIRI_HOME5",
|
||||
"SCENE_KAKARIKO",
|
||||
"SCENE_KAKARIKO3",
|
||||
"SCENE_SHOP1",
|
||||
"SCENE_KOKIRI_SHOP",
|
||||
"SCENE_GOLON",
|
||||
"SCENE_ZOORA",
|
||||
"SCENE_DRAG",
|
||||
"SCENE_ALLEY_SHOP",
|
||||
"SCENE_NIGHT_SHOP",
|
||||
"SCENE_FACE_SHOP",
|
||||
"SCENE_LINK_HOME",
|
||||
"SCENE_IMPA",
|
||||
"SCENE_MALON_STABLE",
|
||||
"SCENE_LABO",
|
||||
"SCENE_HYLIA_LABO",
|
||||
"SCENE_TENT",
|
||||
"SCENE_HUT",
|
||||
"SCENE_DAIYOUSEI_IZUMI",
|
||||
"SCENE_YOUSEI_IZUMI_TATE",
|
||||
"SCENE_YOUSEI_IZUMI_YOKO",
|
||||
"SCENE_KAKUSIANA",
|
||||
"SCENE_HAKAANA",
|
||||
"SCENE_HAKAANA2",
|
||||
"SCENE_HAKAANA_OUKE",
|
||||
"SCENE_SYATEKIJYOU",
|
||||
"SCENE_TOKINOMA",
|
||||
"SCENE_KENJYANOMA",
|
||||
"SCENE_HAIRAL_NIWA",
|
||||
"SCENE_HAIRAL_NIWA_N",
|
||||
"SCENE_HIRAL_DEMO",
|
||||
"SCENE_HAKASITARELAY",
|
||||
"SCENE_TURIBORI",
|
||||
"SCENE_NAKANIWA",
|
||||
"SCENE_BOWLING",
|
||||
"SCENE_SOUKO",
|
||||
"SCENE_MIHARIGOYA",
|
||||
"SCENE_MAHOUYA",
|
||||
"SCENE_GANON_DEMO",
|
||||
"SCENE_KINSUTA",
|
||||
"SCENE_SPOT00",
|
||||
"SCENE_SPOT01",
|
||||
"SCENE_SPOT02",
|
||||
"SCENE_SPOT03",
|
||||
"SCENE_SPOT04",
|
||||
"SCENE_SPOT05",
|
||||
"SCENE_SPOT06",
|
||||
"SCENE_SPOT07",
|
||||
"SCENE_SPOT08",
|
||||
"SCENE_SPOT09",
|
||||
"SCENE_SPOT10",
|
||||
"SCENE_SPOT11",
|
||||
"SCENE_SPOT12",
|
||||
"SCENE_SPOT13",
|
||||
"SCENE_SPOT15",
|
||||
"SCENE_SPOT16",
|
||||
"SCENE_SPOT17",
|
||||
"SCENE_SPOT18",
|
||||
"SCENE_SPOT20",
|
||||
"SCENE_GANON_TOU",
|
||||
#include "tables/scene_table.h"
|
||||
};
|
||||
|
||||
#undef DEFINE_SCENE
|
||||
|
||||
static void append_str(char* buf, size_t* len, const char* str) {
|
||||
while (*str != '\0')
|
||||
buf[(*len)++] = *str++;
|
||||
|
@ -171,7 +171,7 @@ void BossRush_SpawnBlueWarps(PlayState* play) {
|
||||
void BossRush_HandleBlueWarp(PlayState* play, f32 warpPosX, f32 warpPosZ) {
|
||||
|
||||
// If warping from Chamber of Sages, choose the correct boss room to teleport to.
|
||||
if (play->sceneNum == SCENE_KENJYANOMA) {
|
||||
if (play->sceneNum == SCENE_CHAMBER_OF_THE_SAGES) {
|
||||
// Gohma & Phantom Ganon
|
||||
if (warpPosX == -100 && warpPosZ == -170) {
|
||||
if (gSaveContext.linkAge == LINK_AGE_CHILD) {
|
||||
@ -241,28 +241,28 @@ void BossRush_HandleCompleteBoss(PlayState* play) {
|
||||
|
||||
gSaveContext.isBossRushPaused = 1;
|
||||
switch (play->sceneNum) {
|
||||
case SCENE_YDAN_BOSS:
|
||||
case SCENE_DEKU_TREE_BOSS:
|
||||
Flags_SetRandomizerInf(RAND_INF_DUNGEONS_DONE_DEKU_TREE);
|
||||
break;
|
||||
case SCENE_DDAN_BOSS:
|
||||
case SCENE_DODONGOS_CAVERN_BOSS:
|
||||
Flags_SetRandomizerInf(RAND_INF_DUNGEONS_DONE_DODONGOS_CAVERN);
|
||||
break;
|
||||
case SCENE_BDAN_BOSS:
|
||||
case SCENE_JABU_JABU_BOSS:
|
||||
Flags_SetRandomizerInf(RAND_INF_DUNGEONS_DONE_JABU_JABUS_BELLY);
|
||||
break;
|
||||
case SCENE_MORIBOSSROOM:
|
||||
case SCENE_FOREST_TEMPLE_BOSS:
|
||||
Flags_SetRandomizerInf(RAND_INF_DUNGEONS_DONE_FOREST_TEMPLE);
|
||||
break;
|
||||
case SCENE_FIRE_BS:
|
||||
case SCENE_FIRE_TEMPLE_BOSS:
|
||||
Flags_SetRandomizerInf(RAND_INF_DUNGEONS_DONE_FIRE_TEMPLE);
|
||||
break;
|
||||
case SCENE_MIZUSIN_BS:
|
||||
case SCENE_WATER_TEMPLE_BOSS:
|
||||
Flags_SetRandomizerInf(RAND_INF_DUNGEONS_DONE_WATER_TEMPLE);
|
||||
break;
|
||||
case SCENE_JYASINBOSS:
|
||||
case SCENE_SPIRIT_TEMPLE_BOSS:
|
||||
Flags_SetRandomizerInf(RAND_INF_DUNGEONS_DONE_SPIRIT_TEMPLE);
|
||||
break;
|
||||
case SCENE_HAKADAN_BS:
|
||||
case SCENE_SHADOW_TEMPLE_BOSS:
|
||||
Flags_SetRandomizerInf(RAND_INF_DUNGEONS_DONE_SHADOW_TEMPLE);
|
||||
break;
|
||||
default:
|
||||
@ -271,12 +271,12 @@ void BossRush_HandleCompleteBoss(PlayState* play) {
|
||||
|
||||
// Fully heal the player after Ganondorf
|
||||
if (gSaveContext.bossRushOptions[BR_OPTIONS_HEAL] == BR_CHOICE_HEAL_EVERYBOSS &&
|
||||
play->sceneNum == SCENE_GANON_BOSS) {
|
||||
play->sceneNum == SCENE_GANONDORF_BOSS) {
|
||||
Health_ChangeBy(play, 320);
|
||||
}
|
||||
|
||||
if ((CheckDungeonCount() == 3 && gSaveContext.bossRushOptions[BR_OPTIONS_BOSSES] == BR_CHOICE_BOSSES_CHILD) ||
|
||||
play->sceneNum == SCENE_GANON_DEMO) {
|
||||
play->sceneNum == SCENE_GANON_BOSS) {
|
||||
gSaveContext.sohStats.playTimer += 2;
|
||||
gSaveContext.sohStats.gameComplete = 1;
|
||||
gSaveContext.sohStats.itemTimestamp[TIMESTAMP_BOSSRUSH_FINISH] = GAMEPLAYSTAT_TOTAL_TIME;
|
||||
|
@ -641,7 +641,7 @@ void DrawWaterboxList() {
|
||||
}
|
||||
|
||||
// Zora's Domain has a special, hard-coded waterbox with a bottom so you can go under the waterfall
|
||||
if (gPlayState->sceneNum == SCENE_SPOT07) {
|
||||
if (gPlayState->sceneNum == SCENE_ZORAS_DOMAIN) {
|
||||
DrawWaterbox(dl, &zdWaterBox, zdWaterBoxMinY);
|
||||
}
|
||||
}
|
||||
|
@ -1418,10 +1418,10 @@ void DrawQuestStatusTab() {
|
||||
DrawGroupWithBorder([&]() {
|
||||
ImGui::Text("Dungeon Items");
|
||||
|
||||
static int32_t dungeonItemsScene = SCENE_YDAN;
|
||||
static int32_t dungeonItemsScene = SCENE_DEKU_TREE;
|
||||
ImGui::PushItemWidth(-ImGui::GetWindowWidth() * 0.35f);
|
||||
if (ImGui::BeginCombo("##DungeonSelect", SohUtils::GetSceneName(dungeonItemsScene).c_str())) {
|
||||
for (int32_t dungeonIndex = SCENE_YDAN; dungeonIndex < SCENE_BDAN_BOSS + 1; dungeonIndex++) {
|
||||
for (int32_t dungeonIndex = SCENE_DEKU_TREE; dungeonIndex < SCENE_JABU_JABU_BOSS + 1; dungeonIndex++) {
|
||||
if (ImGui::Selectable(SohUtils::GetSceneName(dungeonIndex).c_str(),
|
||||
dungeonIndex == dungeonItemsScene)) {
|
||||
dungeonItemsScene = dungeonIndex;
|
||||
@ -1438,7 +1438,7 @@ void DrawQuestStatusTab() {
|
||||
ImGui::SameLine();
|
||||
DrawDungeonItemButton(ITEM_DUNGEON_MAP, dungeonItemsScene);
|
||||
|
||||
if (dungeonItemsScene != SCENE_BDAN_BOSS) {
|
||||
if (dungeonItemsScene != SCENE_JABU_JABU_BOSS) {
|
||||
float lineHeight = ImGui::GetTextLineHeightWithSpacing();
|
||||
ImGui::Image(LUS::Context::GetInstance()->GetWindow()->GetGui()->GetTextureByName(itemMapping[ITEM_KEY_SMALL].name), ImVec2(lineHeight, lineHeight));
|
||||
ImGui::SameLine();
|
||||
|
@ -125,8 +125,8 @@ extern "C" uint8_t GetRandomizedEnemy(PlayState* play, int16_t *actorId, f32 *po
|
||||
// This should probably be handled on OTR generation in the future when object dependency is fully removed.
|
||||
// Remove bats and skulltulas from graveyard.
|
||||
// Remove octorok in lost woods.
|
||||
if (((*actorId == ACTOR_EN_FIREFLY || (*actorId == ACTOR_EN_SW && *params == 0)) && play->sceneNum == SCENE_SPOT02) ||
|
||||
(*actorId == ACTOR_EN_OKUTA && play->sceneNum == SCENE_SPOT10)) {
|
||||
if (((*actorId == ACTOR_EN_FIREFLY || (*actorId == ACTOR_EN_SW && *params == 0)) && play->sceneNum == SCENE_GRAVEYARD) ||
|
||||
(*actorId == ACTOR_EN_OKUTA && play->sceneNum == SCENE_LOST_WOODS)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -138,7 +138,7 @@ extern "C" uint8_t GetRandomizedEnemy(PlayState* play, int16_t *actorId, f32 *po
|
||||
}
|
||||
|
||||
// Lengthen timer in non-MQ Jabu Jabu bubble room.
|
||||
if (!isMQ && *actorId == ACTOR_OBJ_ROOMTIMER && *params == 30760 && play->sceneNum == SCENE_BDAN &&
|
||||
if (!isMQ && *actorId == ACTOR_OBJ_ROOMTIMER && *params == 30760 && play->sceneNum == SCENE_JABU_JABU &&
|
||||
play->roomCtx.curRoom.num == 12) {
|
||||
*params = 92280;
|
||||
}
|
||||
@ -147,7 +147,7 @@ extern "C" uint8_t GetRandomizedEnemy(PlayState* play, int16_t *actorId, f32 *po
|
||||
|
||||
// When replacing Iron Knuckles in Spirit Temple, move them away from the throne because
|
||||
// some enemies can get stuck on the throne.
|
||||
if (*actorId == ACTOR_EN_IK && play->sceneNum == SCENE_JYASINZOU) {
|
||||
if (*actorId == ACTOR_EN_IK && play->sceneNum == SCENE_SPIRIT_TEMPLE) {
|
||||
if (*params == 6657) {
|
||||
*posX = *posX + 150;
|
||||
} else if (*params == 6401) {
|
||||
@ -156,7 +156,7 @@ extern "C" uint8_t GetRandomizedEnemy(PlayState* play, int16_t *actorId, f32 *po
|
||||
}
|
||||
|
||||
// Move like-likes in MQ Jabu Jabu down into the room as they otherwise get stuck on Song of Time blocks.
|
||||
if (*actorId == ACTOR_EN_RR && play->sceneNum == SCENE_BDAN && play->roomCtx.curRoom.num == 11) {
|
||||
if (*actorId == ACTOR_EN_RR && play->sceneNum == SCENE_JABU_JABU && play->roomCtx.curRoom.num == 11) {
|
||||
if (*posX == 1003) {
|
||||
*posX = *posX - 75;
|
||||
} else {
|
||||
@ -260,7 +260,7 @@ bool IsEnemyFoundToRandomize(int16_t sceneNum, int8_t roomNum, int16_t actorId,
|
||||
// Don't randomize the OoB wallmaster in the silver rupee room because it's only there to
|
||||
// not trigger unlocking the door after killing the other wallmaster in authentic gameplay.
|
||||
case ACTOR_EN_WALLMAS:
|
||||
return (!(!isMQ && sceneNum == SCENE_MEN && roomNum == 2 && posX == -2345));
|
||||
return (!(!isMQ && sceneNum == SCENE_GERUDO_TRAINING_GROUND && roomNum == 2 && posX == -2345));
|
||||
// Only randomize initial floormaster actor (it can split and does some spawning on init).
|
||||
case ACTOR_EN_FLOORMAS:
|
||||
return (params == 0 || params == -32768);
|
||||
@ -274,7 +274,7 @@ bool IsEnemyFoundToRandomize(int16_t sceneNum, int8_t roomNum, int16_t actorId,
|
||||
// Don't randomize Iron Knuckle in MQ Spirit Trial because it's needed to
|
||||
// break the thrones in the room to access a button.
|
||||
case ACTOR_EN_IK:
|
||||
return (params != 1280 && !(isMQ && sceneNum == SCENE_GANONTIKA && roomNum == 17));
|
||||
return (params != 1280 && !(isMQ && sceneNum == SCENE_INSIDE_GANONS_CASTLE && roomNum == 17));
|
||||
// Only randomize the intitial spawn of the huge jellyfish. It spawns another copy when hit with a sword.
|
||||
case ACTOR_EN_VALI:
|
||||
return (params == -1);
|
||||
@ -288,16 +288,16 @@ bool IsEnemyFoundToRandomize(int16_t sceneNum, int8_t roomNum, int16_t actorId,
|
||||
// Don't randomize the Stalfos spawning on the boat in Shadow Temple, as randomizing them places the new enemies
|
||||
// down in the river.
|
||||
case ACTOR_EN_TEST:
|
||||
return (params != 1 && !(sceneNum == SCENE_HAKADAN && roomNum == 21));
|
||||
return (params != 1 && !(sceneNum == SCENE_SHADOW_TEMPLE && roomNum == 21));
|
||||
// Only randomize the enemy variant of Armos Statue.
|
||||
// Leave one Armos unrandomized in the Spirit Temple room where an armos is needed to push down a button
|
||||
case ACTOR_EN_AM:
|
||||
return ((params == -1 || params == 255) && !(sceneNum == SCENE_JYASINZOU && posX == 2141));
|
||||
return ((params == -1 || params == 255) && !(sceneNum == SCENE_SPIRIT_TEMPLE && posX == 2141));
|
||||
// Don't randomize Shell Blades and Spikes in the underwater portion in Water Temple as it's impossible to kill
|
||||
// most other enemies underwater with just hookshot and they're required to be killed for a grate to open.
|
||||
case ACTOR_EN_SB:
|
||||
case ACTOR_EN_NY:
|
||||
return (!(!isMQ && sceneNum == SCENE_MIZUSIN && roomNum == 2));
|
||||
return (!(!isMQ && sceneNum == SCENE_WATER_TEMPLE && roomNum == 2));
|
||||
default:
|
||||
return 1;
|
||||
}
|
||||
@ -328,54 +328,54 @@ bool IsEnemyAllowedToSpawn(int16_t sceneNum, int8_t roomNum, EnemyEntry enemy) {
|
||||
|
||||
switch (sceneNum) {
|
||||
// Deku Tree
|
||||
case SCENE_YDAN:
|
||||
case SCENE_DEKU_TREE:
|
||||
return (!(!isMQ && enemiesToExcludeClearRooms && (roomNum == 1 || roomNum == 9)) &&
|
||||
!(isMQ && enemiesToExcludeClearRooms && (roomNum == 4 || roomNum == 6 || roomNum == 9 || roomNum == 10)));
|
||||
// Dodongo's Cavern
|
||||
case SCENE_DDAN:
|
||||
case SCENE_DODONGOS_CAVERN:
|
||||
return (!(!isMQ && enemiesToExcludeClearRooms && roomNum == 15) &&
|
||||
!(isMQ && enemiesToExcludeClearRooms && (roomNum == 5 || roomNum == 13 || roomNum == 14)));
|
||||
// Jabu Jabu
|
||||
case SCENE_BDAN:
|
||||
case SCENE_JABU_JABU:
|
||||
return (!(!isMQ && enemiesToExcludeClearRooms && (roomNum == 8 || roomNum == 9)) &&
|
||||
!(!isMQ && enemiesToExcludeTimedRooms && roomNum == 12) &&
|
||||
!(isMQ && enemiesToExcludeClearRooms && (roomNum == 11 || roomNum == 14)));
|
||||
// Forest Temple
|
||||
case SCENE_BMORI1:
|
||||
case SCENE_FOREST_TEMPLE:
|
||||
return (!(!isMQ && enemiesToExcludeClearRooms && (roomNum == 6 || roomNum == 10 || roomNum == 18 || roomNum == 21)) &&
|
||||
!(isMQ && enemiesToExcludeClearRooms && (roomNum == 5 || roomNum == 6 || roomNum == 18 || roomNum == 21)));
|
||||
// Fire Temple
|
||||
case SCENE_HIDAN:
|
||||
case SCENE_FIRE_TEMPLE:
|
||||
return (!(!isMQ && enemiesToExcludeClearRooms && roomNum == 15) &&
|
||||
!(isMQ && enemiesToExcludeClearRooms && (roomNum == 15 || roomNum == 17 || roomNum == 18)));
|
||||
// Water Temple
|
||||
case SCENE_MIZUSIN:
|
||||
case SCENE_WATER_TEMPLE:
|
||||
return (!(!isMQ && enemiesToExcludeClearRooms && (roomNum == 13 || roomNum == 18 || roomNum == 19)) &&
|
||||
!(isMQ && enemiesToExcludeClearRooms && (roomNum == 13 || roomNum == 18)));
|
||||
// Spirit Temple
|
||||
case SCENE_JYASINZOU:
|
||||
case SCENE_SPIRIT_TEMPLE:
|
||||
return (!(!isMQ && enemiesToExcludeClearRooms && (roomNum == 1 || roomNum == 10 || roomNum == 17 || roomNum == 20)) &&
|
||||
!(isMQ && enemiesToExcludeClearRooms && (roomNum == 1 || roomNum == 2 || roomNum == 4 || roomNum == 10 || roomNum == 15 || roomNum == 19 || roomNum == 20)));
|
||||
// Shadow Temple
|
||||
case SCENE_HAKADAN:
|
||||
case SCENE_SHADOW_TEMPLE:
|
||||
return (!(!isMQ && enemiesToExcludeClearRooms &&
|
||||
(roomNum == 1 || roomNum == 7 || roomNum == 11 || roomNum == 14 || roomNum == 16 || roomNum == 17 || roomNum == 19 || roomNum == 20)) &&
|
||||
!(isMQ && enemiesToExcludeClearRooms && (roomNum == 1 || roomNum == 6 || roomNum == 7 || roomNum == 11 || roomNum == 14 || roomNum == 20)));
|
||||
// Ganon's Castle Trials
|
||||
case SCENE_GANONTIKA:
|
||||
case SCENE_INSIDE_GANONS_CASTLE:
|
||||
return (!(!isMQ && enemiesToExcludeClearRooms && (roomNum == 2 || roomNum == 5 || roomNum == 9)) &&
|
||||
!(isMQ && enemiesToExcludeClearRooms && (roomNum == 0 || roomNum == 2 || roomNum == 5 || roomNum == 9)));
|
||||
// Ice Caverns
|
||||
case SCENE_ICE_DOUKUTO:
|
||||
case SCENE_ICE_CAVERN:
|
||||
return (!(!isMQ && enemiesToExcludeClearRooms && (roomNum == 1 || roomNum == 7)) &&
|
||||
!(isMQ && enemiesToExcludeClearRooms && (roomNum == 3 || roomNum == 7)));
|
||||
// Bottom of the Well
|
||||
// Exclude Dark Link from room with holes in the floor because it can pull you in a like-like making the player fall down.
|
||||
case SCENE_HAKADANCH:
|
||||
case SCENE_BOTTOM_OF_THE_WELL:
|
||||
return (!(!isMQ && enemy.id == ACTOR_EN_TORCH2 && roomNum == 3));
|
||||
// Don't allow Dark Link in areas with lava void out zones as it voids out the player as well.
|
||||
// Gerudo Training Ground.
|
||||
case SCENE_MEN:
|
||||
case SCENE_GERUDO_TRAINING_GROUND:
|
||||
return (!(enemy.id == ACTOR_EN_TORCH2 && roomNum == 6) &&
|
||||
!(!isMQ && enemiesToExcludeTimedRooms && (roomNum == 1 || roomNum == 7)) &&
|
||||
!(!isMQ && enemiesToExcludeClearRooms && (roomNum == 3 || roomNum == 5 || roomNum == 10)) &&
|
||||
@ -384,25 +384,25 @@ bool IsEnemyAllowedToSpawn(int16_t sceneNum, int8_t roomNum, EnemyEntry enemy) {
|
||||
// Don't allow certain enemies in Ganon's Tower because they would spawn up on the ceilling,
|
||||
// becoming impossible to kill.
|
||||
// Ganon's Tower.
|
||||
case SCENE_GANON:
|
||||
case SCENE_GANONS_TOWER:
|
||||
return (!(enemiesToExcludeClearRooms || enemy.id == ACTOR_EN_VALI || (enemy.id == ACTOR_EN_ZF && enemy.params == -1)));
|
||||
// Ganon's Tower Escape.
|
||||
case SCENE_GANON_SONOGO:
|
||||
case SCENE_GANONS_TOWER_COLLAPSE_INTERIOR:
|
||||
return (!((enemiesToExcludeTimedRooms || (enemy.id == ACTOR_EN_ZF && enemy.params == -1)) && roomNum == 1));
|
||||
// Don't allow big stalchildren, big peahats and the large Bari (jellyfish) during the Gohma fight because they can clip into Gohma
|
||||
// and it crashes the game. Likely because Gohma on the ceilling can't handle collision with other enemies.
|
||||
case SCENE_YDAN_BOSS:
|
||||
case SCENE_DEKU_TREE_BOSS:
|
||||
return (!enemiesToExcludeTimedRooms && !(enemy.id == ACTOR_EN_SKB && enemy.params == 20) &&
|
||||
!(enemy.id == ACTOR_EN_PEEHAT && enemy.params == -1));
|
||||
// Grottos.
|
||||
case SCENE_KAKUSIANA:
|
||||
case SCENE_GROTTOS:
|
||||
return (!(enemiesToExcludeClearRooms && (roomNum == 2 || roomNum == 7)));
|
||||
// Royal Grave.
|
||||
case SCENE_HAKAANA_OUKE:
|
||||
case SCENE_ROYAL_FAMILYS_TOMB:
|
||||
return (!(enemiesToExcludeClearRooms && roomNum == 0));
|
||||
// Don't allow Dark Link in areas with lava void out zones as it voids out the player as well.
|
||||
// Death Mountain Crater.
|
||||
case SCENE_SPOT17:
|
||||
case SCENE_DEATH_MOUNTAIN_CRATER:
|
||||
return (enemy.id != ACTOR_EN_TORCH2);
|
||||
default:
|
||||
return 1;
|
||||
|
@ -433,7 +433,7 @@ GameInteractionEffectQueryResult GameInteractor::RawAction::SpawnEnemyWithOffset
|
||||
|
||||
// Disallow enemy spawns in the painting Poe rooms in Forest Temple.
|
||||
// Killing a spawned enemy before the Poe can softlock the rooms entirely.
|
||||
if (sceneNum == SCENE_BMORI1 && (roomNum == 12 || roomNum == 13 || roomNum == 16)) {
|
||||
if (sceneNum == SCENE_FOREST_TEMPLE && (roomNum == 12 || roomNum == 13 || roomNum == 16)) {
|
||||
return GameInteractionEffectQueryResult::NotPossible;
|
||||
}
|
||||
|
||||
@ -449,8 +449,8 @@ GameInteractionEffectQueryResult GameInteractor::RawAction::SpawnEnemyWithOffset
|
||||
// Don't allow Arwings in certain areas because they cause issues.
|
||||
// Locations: King dodongo room, Morpha room, Twinrova room, Ganondorf room, Fishing pond, Ganon's room
|
||||
// TODO: Swap this to disabling the option in CC options menu instead.
|
||||
if (sceneNum == SCENE_DDAN_BOSS || sceneNum == SCENE_MIZUSIN_BS || sceneNum == SCENE_JYASINBOSS ||
|
||||
sceneNum == SCENE_GANON_BOSS || sceneNum == SCENE_TURIBORI || sceneNum == SCENE_GANON_DEMO) {
|
||||
if (sceneNum == SCENE_DODONGOS_CAVERN_BOSS || sceneNum == SCENE_WATER_TEMPLE_BOSS || sceneNum == SCENE_SPIRIT_TEMPLE_BOSS ||
|
||||
sceneNum == SCENE_GANONDORF_BOSS || sceneNum == SCENE_FISHING_POND || sceneNum == SCENE_GANON_BOSS) {
|
||||
return GameInteractionEffectQueryResult::NotPossible;
|
||||
}
|
||||
}
|
||||
|
@ -398,7 +398,7 @@ bool compareTimestampInfoByTime(const TimestampInfo& a, const TimestampInfo& b)
|
||||
}
|
||||
|
||||
const char* ResolveSceneID(int sceneID, int roomID){
|
||||
if (sceneID == SCENE_KAKUSIANA) {
|
||||
if (sceneID == SCENE_GROTTOS) {
|
||||
switch (roomID) {
|
||||
case 0:
|
||||
return "Generic Grotto";
|
||||
@ -429,7 +429,7 @@ const char* ResolveSceneID(int sceneID, int roomID){
|
||||
case 13:
|
||||
return "Big Skulltula Grotto";
|
||||
};
|
||||
} else if (sceneID == SCENE_HAKASITARELAY) {
|
||||
} else if (sceneID == SCENE_WINDMILL_AND_DAMPES_GRAVE) {
|
||||
//Only the last room of Dampe's Grave (rm 6) is considered the windmill
|
||||
return roomID == 6 ? "Windmill" : "Dampe's Grave";
|
||||
} else if (sceneID < SCENE_ID_MAX) {
|
||||
@ -573,7 +573,7 @@ void DrawGameplayStatsBreakdownTab() {
|
||||
for (int i = 0; i < gSaveContext.sohStats.tsIdx; i++) {
|
||||
std::string sceneName = ResolveSceneID(gSaveContext.sohStats.sceneTimestamps[i].scene, gSaveContext.sohStats.sceneTimestamps[i].room);
|
||||
std::string name;
|
||||
if (CVarGetInteger("gGameplayStats.RoomBreakdown", 0) && gSaveContext.sohStats.sceneTimestamps[i].scene != SCENE_KAKUSIANA) {
|
||||
if (CVarGetInteger("gGameplayStats.RoomBreakdown", 0) && gSaveContext.sohStats.sceneTimestamps[i].scene != SCENE_GROTTOS) {
|
||||
name = fmt::format("{:s} Room {:d}", sceneName, gSaveContext.sohStats.sceneTimestamps[i].room);
|
||||
} else {
|
||||
name = sceneName;
|
||||
@ -596,7 +596,7 @@ void DrawGameplayStatsBreakdownTab() {
|
||||
}
|
||||
}
|
||||
std::string toPass;
|
||||
if (CVarGetInteger("gGameplayStats.RoomBreakdown", 0) && gSaveContext.sohStats.sceneNum != SCENE_KAKUSIANA) {
|
||||
if (CVarGetInteger("gGameplayStats.RoomBreakdown", 0) && gSaveContext.sohStats.sceneNum != SCENE_GROTTOS) {
|
||||
toPass = fmt::format("{:s} Room {:d}", ResolveSceneID(gSaveContext.sohStats.sceneNum, gSaveContext.sohStats.roomNum), gSaveContext.sohStats.roomNum);
|
||||
} else {
|
||||
toPass = ResolveSceneID(gSaveContext.sohStats.sceneNum, gSaveContext.sohStats.roomNum);
|
||||
|
@ -235,7 +235,7 @@ void AutoSave(GetItemEntry itemEntry) {
|
||||
// Don't autosave during the Ganon fight when picking up the Master Sword
|
||||
// Don't autosave in grottos since resuming from grottos breaks the game.
|
||||
if ((CVarGetInteger("gAutosave", AUTOSAVE_OFF) != AUTOSAVE_OFF) && (gPlayState != NULL) && (gSaveContext.pendingSale == ITEM_NONE) &&
|
||||
(gPlayState->gameplayFrames > 60 && gSaveContext.cutsceneIndex < 0xFFF0) && (gPlayState->sceneNum != SCENE_GANON_DEMO)) {
|
||||
(gPlayState->gameplayFrames > 60 && gSaveContext.cutsceneIndex < 0xFFF0) && (gPlayState->sceneNum != SCENE_GANON_BOSS)) {
|
||||
if (((CVarGetInteger("gAutosave", AUTOSAVE_OFF) == AUTOSAVE_LOCATION_AND_ALL_ITEMS) || (CVarGetInteger("gAutosave", AUTOSAVE_OFF) == AUTOSAVE_ALL_ITEMS)) && (item != ITEM_NONE)) {
|
||||
// Autosave for all items
|
||||
performSave = true;
|
||||
@ -296,8 +296,8 @@ void AutoSave(GetItemEntry itemEntry) {
|
||||
CVarGetInteger("gAutosave", AUTOSAVE_OFF) == AUTOSAVE_LOCATION) {
|
||||
performSave = true;
|
||||
}
|
||||
if ((gPlayState->sceneNum == SCENE_YOUSEI_IZUMI_TATE) || (gPlayState->sceneNum == SCENE_KAKUSIANA) ||
|
||||
(gPlayState->sceneNum == SCENE_KENJYANOMA)) {
|
||||
if ((gPlayState->sceneNum == SCENE_FAIRYS_FOUNTAIN) || (gPlayState->sceneNum == SCENE_GROTTOS) ||
|
||||
(gPlayState->sceneNum == SCENE_CHAMBER_OF_THE_SAGES)) {
|
||||
if (CVarGetInteger("gAutosave", AUTOSAVE_OFF) == AUTOSAVE_LOCATION_AND_MAJOR_ITEMS ||
|
||||
CVarGetInteger("gAutosave", AUTOSAVE_OFF) == AUTOSAVE_LOCATION_AND_ALL_ITEMS ||
|
||||
CVarGetInteger("gAutosave", AUTOSAVE_OFF) == AUTOSAVE_LOCATION) {
|
||||
@ -392,15 +392,15 @@ void RegisterDaytimeGoldSkultullas() {
|
||||
// Actor values copied from the night time scene actor list
|
||||
static const DayTimeGoldSkulltulasList dayTimeGoldSkulltulas = {
|
||||
// Graveyard
|
||||
{ SCENE_SPOT02, 1, true, { { ACTOR_EN_SW, { 156, 315, 795 }, { 16384, -32768, 0 }, -20096 } } },
|
||||
{ SCENE_GRAVEYARD, 1, true, { { ACTOR_EN_SW, { 156, 315, 795 }, { 16384, -32768, 0 }, -20096 } } },
|
||||
// ZF
|
||||
{ SCENE_SPOT08, 0, true, { { ACTOR_EN_SW, { -1891, 187, 1911 }, { 16384, 18022, 0 }, -19964 } } },
|
||||
{ SCENE_ZORAS_FOUNTAIN, 0, true, { { ACTOR_EN_SW, { -1891, 187, 1911 }, { 16384, 18022, 0 }, -19964 } } },
|
||||
// GF
|
||||
{ SCENE_SPOT12, 0, false, { { ACTOR_EN_SW, { 1598, 999, -2008 }, { 16384, -16384, 0 }, -19198 } } },
|
||||
{ SCENE_SPOT12, 1, false, { { ACTOR_EN_SW, { 3377, 1734, -4935 }, { 16384, 0, 0 }, -19199 } } },
|
||||
{ SCENE_GERUDOS_FORTRESS, 0, false, { { ACTOR_EN_SW, { 1598, 999, -2008 }, { 16384, -16384, 0 }, -19198 } } },
|
||||
{ SCENE_GERUDOS_FORTRESS, 1, false, { { ACTOR_EN_SW, { 3377, 1734, -4935 }, { 16384, 0, 0 }, -19199 } } },
|
||||
// Kak
|
||||
{ SCENE_SPOT01, 0, false, { { ACTOR_EN_SW, { -18, 540, 1800 }, { 0, -32768, 0 }, -20160 } } },
|
||||
{ SCENE_SPOT01,
|
||||
{ SCENE_KAKARIKO_VILLAGE, 0, false, { { ACTOR_EN_SW, { -18, 540, 1800 }, { 0, -32768, 0 }, -20160 } } },
|
||||
{ SCENE_KAKARIKO_VILLAGE,
|
||||
0,
|
||||
true,
|
||||
{ { ACTOR_EN_SW, { -465, 377, -888 }, { 0, 28217, 0 }, -20222 },
|
||||
@ -408,7 +408,7 @@ void RegisterDaytimeGoldSkultullas() {
|
||||
{ ACTOR_EN_SW, { 324, 270, 905 }, { 16384, 0, 0 }, -20216 },
|
||||
{ ACTOR_EN_SW, { -602, 120, 1120 }, { 16384, 0, 0 }, -20208 } } },
|
||||
// LLR
|
||||
{ SCENE_SPOT20,
|
||||
{ SCENE_LON_LON_RANCH,
|
||||
0,
|
||||
true,
|
||||
{ { ACTOR_EN_SW, { -2344, 180, 672 }, { 16384, 22938, 0 }, -29695 },
|
||||
@ -540,9 +540,9 @@ void RegisterBonkDamage() {
|
||||
|
||||
void UpdateDirtPathFixState(int32_t sceneNum) {
|
||||
switch (sceneNum) {
|
||||
case SCENE_SPOT00:
|
||||
case SCENE_SPOT04:
|
||||
case SCENE_SPOT15:
|
||||
case SCENE_HYRULE_FIELD:
|
||||
case SCENE_KOKIRI_FOREST:
|
||||
case SCENE_HYRULE_CASTLE:
|
||||
CVarSetInteger("gZFightingMode", CVarGetInteger("gSceneSpecificDirtPathFix", ZFIGHT_FIX_DISABLED));
|
||||
return;
|
||||
default:
|
||||
@ -561,9 +561,9 @@ void UpdateMirrorModeState(int32_t sceneNum) {
|
||||
bool nextMirroredWorld = false;
|
||||
|
||||
int16_t mirroredMode = CVarGetInteger("gMirroredWorldMode", MIRRORED_WORLD_OFF);
|
||||
int16_t inDungeon = (sceneNum >= SCENE_YDAN && sceneNum <= SCENE_GANONTIKA_SONOGO && sceneNum != SCENE_GERUDOWAY) ||
|
||||
(sceneNum >= SCENE_YDAN_BOSS && sceneNum <= SCENE_GANON_FINAL) ||
|
||||
(sceneNum == SCENE_GANON_DEMO);
|
||||
int16_t inDungeon = (sceneNum >= SCENE_DEKU_TREE && sceneNum <= SCENE_INSIDE_GANONS_CASTLE_COLLAPSE && sceneNum != SCENE_THIEVES_HIDEOUT) ||
|
||||
(sceneNum >= SCENE_DEKU_TREE_BOSS && sceneNum <= SCENE_GANONS_TOWER_COLLAPSE_EXTERIOR) ||
|
||||
(sceneNum == SCENE_GANON_BOSS);
|
||||
|
||||
if (mirroredMode == MIRRORED_WORLD_RANDOM_SEEDED || mirroredMode == MIRRORED_WORLD_DUNGEONS_RANDOM_SEEDED) {
|
||||
uint32_t seed = sceneNum + (gSaveContext.n64ddFlag ? (gSaveContext.seedIcons[0] + gSaveContext.seedIcons[1] +
|
||||
|
@ -172,18 +172,18 @@ std::unordered_map<std::string, RandomizerInf> spoilerFileTrialToEnum = {
|
||||
};
|
||||
|
||||
std::unordered_map<std::string, SceneID> spoilerFileDungeonToScene = {
|
||||
{ "Deku Tree", SCENE_YDAN },
|
||||
{ "Dodongo's Cavern", SCENE_DDAN },
|
||||
{ "Jabu Jabu's Belly", SCENE_BDAN },
|
||||
{ "Forest Temple", SCENE_BMORI1 },
|
||||
{ "Fire Temple", SCENE_HIDAN },
|
||||
{ "Water Temple", SCENE_MIZUSIN },
|
||||
{ "Spirit Temple", SCENE_JYASINZOU },
|
||||
{ "Shadow Temple", SCENE_HAKADAN },
|
||||
{ "Bottom of the Well", SCENE_HAKADANCH },
|
||||
{ "Ice Cavern", SCENE_ICE_DOUKUTO },
|
||||
{ "Gerudo Training Grounds", SCENE_MEN },
|
||||
{ "Ganon's Castle", SCENE_GANONTIKA }
|
||||
{ "Deku Tree", SCENE_DEKU_TREE },
|
||||
{ "Dodongo's Cavern", SCENE_DODONGOS_CAVERN },
|
||||
{ "Jabu Jabu's Belly", SCENE_JABU_JABU },
|
||||
{ "Forest Temple", SCENE_FOREST_TEMPLE },
|
||||
{ "Fire Temple", SCENE_FIRE_TEMPLE },
|
||||
{ "Water Temple", SCENE_WATER_TEMPLE },
|
||||
{ "Spirit Temple", SCENE_SPIRIT_TEMPLE },
|
||||
{ "Shadow Temple", SCENE_SHADOW_TEMPLE },
|
||||
{ "Bottom of the Well", SCENE_BOTTOM_OF_THE_WELL },
|
||||
{ "Ice Cavern", SCENE_ICE_CAVERN },
|
||||
{ "Gerudo Training Grounds", SCENE_GERUDO_TRAINING_GROUND },
|
||||
{ "Ganon's Castle", SCENE_INSIDE_GANONS_CASTLE }
|
||||
};
|
||||
|
||||
std::unordered_map<s16, s16> getItemIdToItemId = {
|
||||
@ -1833,77 +1833,77 @@ ItemObtainability Randomizer::GetItemObtainabilityFromRandomizerGet(RandomizerGe
|
||||
|
||||
// Dungeon Items
|
||||
case RG_DEKU_TREE_MAP:
|
||||
return !CHECK_DUNGEON_ITEM(DUNGEON_MAP, SCENE_YDAN) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
return !CHECK_DUNGEON_ITEM(DUNGEON_MAP, SCENE_DEKU_TREE) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
case RG_DODONGOS_CAVERN_MAP:
|
||||
return !CHECK_DUNGEON_ITEM(DUNGEON_MAP, SCENE_DDAN) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
return !CHECK_DUNGEON_ITEM(DUNGEON_MAP, SCENE_DODONGOS_CAVERN) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
case RG_JABU_JABUS_BELLY_MAP:
|
||||
return !CHECK_DUNGEON_ITEM(DUNGEON_MAP, SCENE_BDAN) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
return !CHECK_DUNGEON_ITEM(DUNGEON_MAP, SCENE_JABU_JABU) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
case RG_FOREST_TEMPLE_MAP:
|
||||
return !CHECK_DUNGEON_ITEM(DUNGEON_MAP, SCENE_BMORI1) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
return !CHECK_DUNGEON_ITEM(DUNGEON_MAP, SCENE_FOREST_TEMPLE) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
case RG_FIRE_TEMPLE_MAP:
|
||||
return !CHECK_DUNGEON_ITEM(DUNGEON_MAP, SCENE_HIDAN) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
return !CHECK_DUNGEON_ITEM(DUNGEON_MAP, SCENE_FIRE_TEMPLE) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
case RG_WATER_TEMPLE_MAP:
|
||||
return !CHECK_DUNGEON_ITEM(DUNGEON_MAP, SCENE_MIZUSIN) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
return !CHECK_DUNGEON_ITEM(DUNGEON_MAP, SCENE_WATER_TEMPLE) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
case RG_SPIRIT_TEMPLE_MAP:
|
||||
return !CHECK_DUNGEON_ITEM(DUNGEON_MAP, SCENE_JYASINZOU) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
return !CHECK_DUNGEON_ITEM(DUNGEON_MAP, SCENE_SPIRIT_TEMPLE) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
case RG_SHADOW_TEMPLE_MAP:
|
||||
return !CHECK_DUNGEON_ITEM(DUNGEON_MAP, SCENE_HAKADAN) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
return !CHECK_DUNGEON_ITEM(DUNGEON_MAP, SCENE_SHADOW_TEMPLE) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
case RG_BOTTOM_OF_THE_WELL_MAP:
|
||||
return !CHECK_DUNGEON_ITEM(DUNGEON_MAP, SCENE_HAKADANCH) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
return !CHECK_DUNGEON_ITEM(DUNGEON_MAP, SCENE_BOTTOM_OF_THE_WELL) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
case RG_ICE_CAVERN_MAP:
|
||||
return !CHECK_DUNGEON_ITEM(DUNGEON_MAP, SCENE_ICE_DOUKUTO) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
return !CHECK_DUNGEON_ITEM(DUNGEON_MAP, SCENE_ICE_CAVERN) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
case RG_DEKU_TREE_COMPASS:
|
||||
return !CHECK_DUNGEON_ITEM(DUNGEON_COMPASS, SCENE_YDAN) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
return !CHECK_DUNGEON_ITEM(DUNGEON_COMPASS, SCENE_DEKU_TREE) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
case RG_DODONGOS_CAVERN_COMPASS:
|
||||
return !CHECK_DUNGEON_ITEM(DUNGEON_COMPASS, SCENE_DDAN) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
return !CHECK_DUNGEON_ITEM(DUNGEON_COMPASS, SCENE_DODONGOS_CAVERN) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
case RG_JABU_JABUS_BELLY_COMPASS:
|
||||
return !CHECK_DUNGEON_ITEM(DUNGEON_COMPASS, SCENE_BDAN) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
return !CHECK_DUNGEON_ITEM(DUNGEON_COMPASS, SCENE_JABU_JABU) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
case RG_FOREST_TEMPLE_COMPASS:
|
||||
return !CHECK_DUNGEON_ITEM(DUNGEON_COMPASS, SCENE_BMORI1) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
return !CHECK_DUNGEON_ITEM(DUNGEON_COMPASS, SCENE_FOREST_TEMPLE) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
case RG_FIRE_TEMPLE_COMPASS:
|
||||
return !CHECK_DUNGEON_ITEM(DUNGEON_COMPASS, SCENE_HIDAN) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
return !CHECK_DUNGEON_ITEM(DUNGEON_COMPASS, SCENE_FIRE_TEMPLE) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
case RG_WATER_TEMPLE_COMPASS:
|
||||
return !CHECK_DUNGEON_ITEM(DUNGEON_COMPASS, SCENE_MIZUSIN) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
return !CHECK_DUNGEON_ITEM(DUNGEON_COMPASS, SCENE_WATER_TEMPLE) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
case RG_SPIRIT_TEMPLE_COMPASS:
|
||||
return !CHECK_DUNGEON_ITEM(DUNGEON_COMPASS, SCENE_JYASINZOU) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
return !CHECK_DUNGEON_ITEM(DUNGEON_COMPASS, SCENE_SPIRIT_TEMPLE) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
case RG_SHADOW_TEMPLE_COMPASS:
|
||||
return !CHECK_DUNGEON_ITEM(DUNGEON_COMPASS, SCENE_HAKADAN) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
return !CHECK_DUNGEON_ITEM(DUNGEON_COMPASS, SCENE_SHADOW_TEMPLE) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
case RG_BOTTOM_OF_THE_WELL_COMPASS:
|
||||
return !CHECK_DUNGEON_ITEM(DUNGEON_COMPASS, SCENE_HAKADANCH) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
return !CHECK_DUNGEON_ITEM(DUNGEON_COMPASS, SCENE_BOTTOM_OF_THE_WELL) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
case RG_ICE_CAVERN_COMPASS:
|
||||
return !CHECK_DUNGEON_ITEM(DUNGEON_COMPASS, SCENE_ICE_DOUKUTO) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
return !CHECK_DUNGEON_ITEM(DUNGEON_COMPASS, SCENE_ICE_CAVERN) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
case RG_FOREST_TEMPLE_BOSS_KEY:
|
||||
return !CHECK_DUNGEON_ITEM(DUNGEON_KEY_BOSS, SCENE_BMORI1) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
return !CHECK_DUNGEON_ITEM(DUNGEON_KEY_BOSS, SCENE_FOREST_TEMPLE) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
case RG_FIRE_TEMPLE_BOSS_KEY:
|
||||
return !CHECK_DUNGEON_ITEM(DUNGEON_KEY_BOSS, SCENE_HIDAN) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
return !CHECK_DUNGEON_ITEM(DUNGEON_KEY_BOSS, SCENE_FIRE_TEMPLE) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
case RG_WATER_TEMPLE_BOSS_KEY:
|
||||
return !CHECK_DUNGEON_ITEM(DUNGEON_KEY_BOSS, SCENE_MIZUSIN) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
return !CHECK_DUNGEON_ITEM(DUNGEON_KEY_BOSS, SCENE_WATER_TEMPLE) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
case RG_SPIRIT_TEMPLE_BOSS_KEY:
|
||||
return !CHECK_DUNGEON_ITEM(DUNGEON_KEY_BOSS, SCENE_JYASINZOU) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
return !CHECK_DUNGEON_ITEM(DUNGEON_KEY_BOSS, SCENE_SPIRIT_TEMPLE) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
case RG_SHADOW_TEMPLE_BOSS_KEY:
|
||||
return !CHECK_DUNGEON_ITEM(DUNGEON_KEY_BOSS, SCENE_HAKADAN) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
return !CHECK_DUNGEON_ITEM(DUNGEON_KEY_BOSS, SCENE_SHADOW_TEMPLE) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
case RG_GANONS_CASTLE_BOSS_KEY:
|
||||
return !CHECK_DUNGEON_ITEM(DUNGEON_KEY_BOSS, SCENE_GANON) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
return !CHECK_DUNGEON_ITEM(DUNGEON_KEY_BOSS, SCENE_GANONS_TOWER) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
case RG_FOREST_TEMPLE_SMALL_KEY:
|
||||
return gSaveContext.inventory.dungeonKeys[SCENE_BMORI1] < FOREST_TEMPLE_SMALL_KEY_MAX ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
return gSaveContext.inventory.dungeonKeys[SCENE_FOREST_TEMPLE] < FOREST_TEMPLE_SMALL_KEY_MAX ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
case RG_FIRE_TEMPLE_SMALL_KEY:
|
||||
return gSaveContext.inventory.dungeonKeys[SCENE_HIDAN] < FIRE_TEMPLE_SMALL_KEY_MAX ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
return gSaveContext.inventory.dungeonKeys[SCENE_FIRE_TEMPLE] < FIRE_TEMPLE_SMALL_KEY_MAX ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
case RG_WATER_TEMPLE_SMALL_KEY:
|
||||
return gSaveContext.inventory.dungeonKeys[SCENE_MIZUSIN] < WATER_TEMPLE_SMALL_KEY_MAX ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
return gSaveContext.inventory.dungeonKeys[SCENE_WATER_TEMPLE] < WATER_TEMPLE_SMALL_KEY_MAX ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
case RG_SPIRIT_TEMPLE_SMALL_KEY:
|
||||
return gSaveContext.inventory.dungeonKeys[SCENE_JYASINZOU] < SPIRIT_TEMPLE_SMALL_KEY_MAX ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
return gSaveContext.inventory.dungeonKeys[SCENE_SPIRIT_TEMPLE] < SPIRIT_TEMPLE_SMALL_KEY_MAX ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
case RG_SHADOW_TEMPLE_SMALL_KEY:
|
||||
return gSaveContext.inventory.dungeonKeys[SCENE_HAKADAN] < SHADOW_TEMPLE_SMALL_KEY_MAX ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
return gSaveContext.inventory.dungeonKeys[SCENE_SHADOW_TEMPLE] < SHADOW_TEMPLE_SMALL_KEY_MAX ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
case RG_BOTTOM_OF_THE_WELL_SMALL_KEY:
|
||||
return gSaveContext.inventory.dungeonKeys[SCENE_HAKADANCH] < BOTTOM_OF_THE_WELL_SMALL_KEY_MAX ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
return gSaveContext.inventory.dungeonKeys[SCENE_BOTTOM_OF_THE_WELL] < BOTTOM_OF_THE_WELL_SMALL_KEY_MAX ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
case RG_GERUDO_TRAINING_GROUNDS_SMALL_KEY:
|
||||
return gSaveContext.inventory.dungeonKeys[SCENE_MEN] < GERUDO_TRAINING_GROUNDS_SMALL_KEY_MAX ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
return gSaveContext.inventory.dungeonKeys[SCENE_GERUDO_TRAINING_GROUND] < GERUDO_TRAINING_GROUNDS_SMALL_KEY_MAX ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
case RG_GERUDO_FORTRESS_SMALL_KEY:
|
||||
return gSaveContext.inventory.dungeonKeys[SCENE_GERUDOWAY] < GERUDO_FORTRESS_SMALL_KEY_MAX ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
return gSaveContext.inventory.dungeonKeys[SCENE_THIEVES_HIDEOUT] < GERUDO_FORTRESS_SMALL_KEY_MAX ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
case RG_GANONS_CASTLE_SMALL_KEY:
|
||||
return gSaveContext.inventory.dungeonKeys[SCENE_GANONTIKA] < GANONS_CASTLE_SMALL_KEY_MAX ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
return gSaveContext.inventory.dungeonKeys[SCENE_INSIDE_GANONS_CASTLE] < GANONS_CASTLE_SMALL_KEY_MAX ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
case RG_TREASURE_GAME_SMALL_KEY:
|
||||
return gSaveContext.inventory.dungeonKeys[SCENE_TAKARAYA] < TREASURE_GAME_SMALL_KEY_MAX ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
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:
|
||||
@ -2538,7 +2538,7 @@ RandomizerCheckObject Randomizer::GetCheckObjectFromActor(s16 actorId, s16 scene
|
||||
RandomizerCheck specialRc = RC_UNKNOWN_CHECK;
|
||||
// TODO: Migrate these special cases into table, or at least document why they are special
|
||||
switch(sceneNum) {
|
||||
case SCENE_TAKARAYA:
|
||||
case SCENE_TREASURE_BOX_SHOP:
|
||||
if(actorParams == 20170) specialRc = RC_MARKET_TREASURE_CHEST_GAME_REWARD;
|
||||
|
||||
// RANDOTODO update logic to match 3ds rando when we implement keysanity
|
||||
@ -2553,9 +2553,9 @@ RandomizerCheckObject Randomizer::GetCheckObjectFromActor(s16 actorId, s16 scene
|
||||
if((actorParams & 0xF) < 10) specialRc = RC_MARKET_TREASURE_CHEST_GAME_ITEM_5;
|
||||
}
|
||||
break;
|
||||
case SCENE_SHRINE:
|
||||
case SCENE_SHRINE_N:
|
||||
case SCENE_SHRINE_R:
|
||||
case SCENE_TEMPLE_OF_TIME_EXTERIOR_DAY:
|
||||
case SCENE_TEMPLE_OF_TIME_EXTERIOR_NIGHT:
|
||||
case SCENE_TEMPLE_OF_TIME_EXTERIOR_RUINS:
|
||||
switch (actorParams) {
|
||||
case 14342:
|
||||
specialRc = RC_TOT_LEFT_GOSSIP_STONE;
|
||||
@ -2571,7 +2571,7 @@ RandomizerCheckObject Randomizer::GetCheckObjectFromActor(s16 actorId, s16 scene
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case SCENE_KINSUTA:
|
||||
case SCENE_HOUSE_OF_SKULLTULA:
|
||||
if (actorId == ACTOR_EN_SSH) {
|
||||
switch (actorParams) { // actor params are used to differentiate between textboxes
|
||||
case 1: specialRc = RC_KAK_10_GOLD_SKULLTULA_REWARD; break;
|
||||
@ -2582,7 +2582,7 @@ RandomizerCheckObject Randomizer::GetCheckObjectFromActor(s16 actorId, s16 scene
|
||||
}
|
||||
}
|
||||
break;
|
||||
case SCENE_SPOT01:
|
||||
case SCENE_KAKARIKO_VILLAGE:
|
||||
switch (actorId) {
|
||||
case ACTOR_EN_NIW_LADY:
|
||||
if (LINK_IS_ADULT) {
|
||||
@ -2592,7 +2592,7 @@ RandomizerCheckObject Randomizer::GetCheckObjectFromActor(s16 actorId, s16 scene
|
||||
}
|
||||
}
|
||||
break;
|
||||
case SCENE_SPOT06:
|
||||
case SCENE_LAKE_HYLIA:
|
||||
switch (actorId) {
|
||||
case ACTOR_ITEM_ETCETERA:
|
||||
if (LINK_IS_ADULT) {
|
||||
@ -2602,7 +2602,7 @@ RandomizerCheckObject Randomizer::GetCheckObjectFromActor(s16 actorId, s16 scene
|
||||
}
|
||||
}
|
||||
break;
|
||||
case SCENE_SPOT08:
|
||||
case SCENE_ZORAS_FOUNTAIN:
|
||||
switch (actorParams) {
|
||||
case 15362:
|
||||
case 14594:
|
||||
@ -2614,14 +2614,14 @@ RandomizerCheckObject Randomizer::GetCheckObjectFromActor(s16 actorId, s16 scene
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case SCENE_SPOT12:
|
||||
case SCENE_GERUDOS_FORTRESS:
|
||||
// GF chest as child has different params and gives odd mushroom
|
||||
// set it to the GF chest check for both ages
|
||||
if (actorId == ACTOR_EN_BOX) {
|
||||
specialRc = RC_GF_CHEST;
|
||||
}
|
||||
break;
|
||||
case SCENE_DDAN:
|
||||
case SCENE_DODONGOS_CAVERN:
|
||||
// special case for MQ DC Gossip Stone
|
||||
if (actorId == ACTOR_EN_GS && actorParams == 15892 && ResourceMgr_IsGameMasterQuest()) {
|
||||
specialRc = RC_DODONGOS_CAVERN_GOSSIP_STONE;
|
||||
@ -2660,7 +2660,7 @@ ScrubIdentity Randomizer::IdentifyScrub(s32 sceneNum, s32 actorParams, s32 respa
|
||||
// Scrubs that are 0x06 are loaded as 0x03 when child, switching from selling arrows to seeds
|
||||
if (actorParams == 0x06) actorParams = 0x03;
|
||||
|
||||
if (sceneNum == SCENE_KAKUSIANA) {
|
||||
if (sceneNum == SCENE_GROTTOS) {
|
||||
actorParams = TWO_ACTOR_PARAMS(actorParams, respawnData);
|
||||
}
|
||||
|
||||
@ -2695,7 +2695,7 @@ ShopItemIdentity Randomizer::IdentifyShopItem(s32 sceneNum, u8 slotIndex) {
|
||||
|
||||
RandomizerCheckObject rcObject = GetCheckObjectFromActor(ACTOR_EN_GIRLA,
|
||||
// Bazaar (SHOP1) scene is reused, so if entering from Kak use debug scene to identify
|
||||
(sceneNum == SCENE_SHOP1 && gSaveContext.entranceIndex == 0xB7) ? SCENE_TEST01 : sceneNum, slotIndex);
|
||||
(sceneNum == SCENE_BAZAAR && gSaveContext.entranceIndex == 0xB7) ? SCENE_TEST01 : sceneNum, slotIndex);
|
||||
|
||||
if (rcObject.rc != RC_UNKNOWN_CHECK) {
|
||||
shopItemIdentity.randomizerInf = rcToRandomizerInf[rcObject.rc];
|
||||
@ -2723,7 +2723,7 @@ CowIdentity Randomizer::IdentifyCow(s32 sceneNum, s32 posX, s32 posZ) {
|
||||
|
||||
s32 actorParams = 0x00;
|
||||
// Only need to pass params if in a scene with two cows
|
||||
if (sceneNum == SCENE_KAKUSIANA || sceneNum == SCENE_MALON_STABLE || sceneNum == SCENE_SOUKO) {
|
||||
if (sceneNum == SCENE_GROTTOS || sceneNum == SCENE_STABLE || sceneNum == SCENE_LON_LON_BUILDINGS) {
|
||||
actorParams = TWO_ACTOR_PARAMS(posX, posZ);
|
||||
}
|
||||
|
||||
@ -5269,7 +5269,7 @@ CustomMessage Randomizer::GetMerchantMessage(RandomizerInf randomizerInf, u16 te
|
||||
|
||||
CustomMessage Randomizer::GetCursedSkullMessage(s16 params) {
|
||||
CustomMessage messageEntry = CustomMessageManager::Instance->RetrieveMessage(Randomizer::randoMiscHintsTableID, TEXT_CURSED_SKULLTULA_PEOPLE);
|
||||
RandomizerCheck rc = GetCheckFromActor(ACTOR_EN_SSH, SCENE_KINSUTA, params);
|
||||
RandomizerCheck rc = GetCheckFromActor(ACTOR_EN_SSH, SCENE_HOUSE_OF_SKULLTULA, params);
|
||||
RandomizerGet itemGet = this->itemLocations[rc].rgID;
|
||||
std::array<std::string, LANGUAGE_MAX> itemName;
|
||||
if (itemGet == RG_ICE_TRAP) {
|
||||
@ -5299,34 +5299,34 @@ CustomMessage Randomizer::GetMapGetItemMessageWithHint(GetItemEntry itemEntry) {
|
||||
int sceneNum;
|
||||
switch (itemEntry.getItemId) {
|
||||
case RG_DEKU_TREE_MAP:
|
||||
sceneNum = SCENE_YDAN;
|
||||
sceneNum = SCENE_DEKU_TREE;
|
||||
break;
|
||||
case RG_DODONGOS_CAVERN_MAP:
|
||||
sceneNum = SCENE_DDAN;
|
||||
sceneNum = SCENE_DODONGOS_CAVERN;
|
||||
break;
|
||||
case RG_JABU_JABUS_BELLY_MAP:
|
||||
sceneNum = SCENE_BDAN;
|
||||
sceneNum = SCENE_JABU_JABU;
|
||||
break;
|
||||
case RG_FOREST_TEMPLE_MAP:
|
||||
sceneNum = SCENE_BMORI1;
|
||||
sceneNum = SCENE_FOREST_TEMPLE;
|
||||
break;
|
||||
case RG_FIRE_TEMPLE_MAP:
|
||||
sceneNum = SCENE_HIDAN;
|
||||
sceneNum = SCENE_FIRE_TEMPLE;
|
||||
break;
|
||||
case RG_WATER_TEMPLE_MAP:
|
||||
sceneNum = SCENE_MIZUSIN;
|
||||
sceneNum = SCENE_WATER_TEMPLE;
|
||||
break;
|
||||
case RG_SPIRIT_TEMPLE_MAP:
|
||||
sceneNum = SCENE_JYASINZOU;
|
||||
sceneNum = SCENE_SPIRIT_TEMPLE;
|
||||
break;
|
||||
case RG_SHADOW_TEMPLE_MAP:
|
||||
sceneNum = SCENE_HAKADAN;
|
||||
sceneNum = SCENE_SHADOW_TEMPLE;
|
||||
break;
|
||||
case RG_BOTTOM_OF_THE_WELL_MAP:
|
||||
sceneNum = SCENE_HAKADANCH;
|
||||
sceneNum = SCENE_BOTTOM_OF_THE_WELL;
|
||||
break;
|
||||
case RG_ICE_CAVERN_MAP:
|
||||
sceneNum = SCENE_ICE_DOUKUTO;
|
||||
sceneNum = SCENE_ICE_CAVERN;
|
||||
break;
|
||||
}
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -73,18 +73,18 @@ Color_RGBA8 Color_Saved_Extra = { 0, 185, 0, 255 }; //Green
|
||||
|
||||
SceneID DungeonSceneLookupByArea(RandomizerCheckArea area) {
|
||||
switch (area) {
|
||||
case RCAREA_DEKU_TREE: return SCENE_YDAN;
|
||||
case RCAREA_DODONGOS_CAVERN: return SCENE_DDAN;
|
||||
case RCAREA_JABU_JABUS_BELLY: return SCENE_BDAN;
|
||||
case RCAREA_FOREST_TEMPLE: return SCENE_BMORI1;
|
||||
case RCAREA_FIRE_TEMPLE: return SCENE_HIDAN;
|
||||
case RCAREA_WATER_TEMPLE: return SCENE_MIZUSIN;
|
||||
case RCAREA_SPIRIT_TEMPLE: return SCENE_JYASINZOU;
|
||||
case RCAREA_SHADOW_TEMPLE: return SCENE_HAKADAN;
|
||||
case RCAREA_BOTTOM_OF_THE_WELL: return SCENE_HAKADANCH;
|
||||
case RCAREA_ICE_CAVERN: return SCENE_ICE_DOUKUTO;
|
||||
case RCAREA_GERUDO_TRAINING_GROUND: return SCENE_MEN;
|
||||
case RCAREA_GANONS_CASTLE: return SCENE_GANONTIKA;
|
||||
case RCAREA_DEKU_TREE: return SCENE_DEKU_TREE;
|
||||
case RCAREA_DODONGOS_CAVERN: return SCENE_DODONGOS_CAVERN;
|
||||
case RCAREA_JABU_JABUS_BELLY: return SCENE_JABU_JABU;
|
||||
case RCAREA_FOREST_TEMPLE: return SCENE_FOREST_TEMPLE;
|
||||
case RCAREA_FIRE_TEMPLE: return SCENE_FIRE_TEMPLE;
|
||||
case RCAREA_WATER_TEMPLE: return SCENE_WATER_TEMPLE;
|
||||
case RCAREA_SPIRIT_TEMPLE: return SCENE_SPIRIT_TEMPLE;
|
||||
case RCAREA_SHADOW_TEMPLE: return SCENE_SHADOW_TEMPLE;
|
||||
case RCAREA_BOTTOM_OF_THE_WELL: return SCENE_BOTTOM_OF_THE_WELL;
|
||||
case RCAREA_ICE_CAVERN: return SCENE_ICE_CAVERN;
|
||||
case RCAREA_GERUDO_TRAINING_GROUND: return SCENE_GERUDO_TRAINING_GROUND;
|
||||
case RCAREA_GANONS_CASTLE: return SCENE_INSIDE_GANONS_CASTLE;
|
||||
default: return SCENE_ID_MAX;
|
||||
}
|
||||
}
|
||||
@ -153,9 +153,9 @@ void CheckTrackerWindow::DrawElement() {
|
||||
|
||||
bool doAreaScroll =
|
||||
(currentArea != RCAREA_INVALID && currentArea != previousArea &&
|
||||
sceneId != SCENE_KAKUSIANA && // Don't move for grottos
|
||||
sceneId != SCENE_YOUSEI_IZUMI_TATE && sceneId != SCENE_YOUSEI_IZUMI_YOKO && sceneId != SCENE_DAIYOUSEI_IZUMI && // Don't move for fairy fountains
|
||||
sceneId != SCENE_SHOP1 && sceneId != SCENE_SYATEKIJYOU // Don't move for Bazaar/Gallery, as it moves between Kak and Market
|
||||
sceneId != SCENE_GROTTOS && // Don't move for grottos
|
||||
sceneId != SCENE_FAIRYS_FOUNTAIN && sceneId != SCENE_GREAT_FAIRYS_FOUNTAIN_SPELLS && sceneId != SCENE_GREAT_FAIRYS_FOUNTAIN_MAGIC && // Don't move for fairy fountains
|
||||
sceneId != SCENE_BAZAAR && sceneId != SCENE_SHOOTING_GALLERY // Don't move for Bazaar/Gallery, as it moves between Kak and Market
|
||||
);
|
||||
previousArea = currentArea;
|
||||
areasSpoiled |= (1 << currentArea);
|
||||
|
@ -47,15 +47,15 @@ typedef struct {
|
||||
} DungeonEntranceInfo;
|
||||
|
||||
static DungeonEntranceInfo dungeons[] = {
|
||||
//entryway exit, boss, reverse,bluewarp,dungeon scene, boss scene
|
||||
{ DEKU_TREE_ENTRANCE, 0x0209, 0x040F, 0x0252, 0x0457, SCENE_YDAN, SCENE_YDAN_BOSS },
|
||||
{ DODONGOS_CAVERN_ENTRANCE, 0x0242, 0x040B, 0x00C5, 0x047A, SCENE_DDAN, SCENE_DDAN_BOSS },
|
||||
{ JABU_JABUS_BELLY_ENTRANCE, 0x0221, 0x0301, 0x0407, 0x010E, SCENE_BDAN, SCENE_BDAN_BOSS },
|
||||
{ FOREST_TEMPLE_ENTRANCE, 0x0215, 0x000C, 0x024E, 0x0608, SCENE_BMORI1, SCENE_MORIBOSSROOM },
|
||||
{ FIRE_TEMPLE_ENTRANCE, 0x024A, 0x0305, 0x0175, 0x0564, SCENE_HIDAN, SCENE_FIRE_BS },
|
||||
{ WATER_TEMPLE_ENTRANCE, 0x021D, 0x0417, 0x0423, 0x060C, SCENE_MIZUSIN, SCENE_MIZUSIN_BS },
|
||||
{ SPIRIT_TEMPLE_ENTRANCE, 0x01E1, 0x008D, 0x02F5, 0x0610, SCENE_JYASINZOU, SCENE_JYASINBOSS },
|
||||
{ SHADOW_TEMPLE_ENTRANCE, 0x0205, 0x0413, 0x02B2, 0x0580, SCENE_HAKADAN, SCENE_HAKADAN_BS },
|
||||
//entryway exit, boss, reverse,bluewarp,dungeon scene, boss scene
|
||||
{ DEKU_TREE_ENTRANCE, 0x0209, 0x040F, 0x0252, 0x0457, SCENE_DEKU_TREE, SCENE_DEKU_TREE_BOSS },
|
||||
{ DODONGOS_CAVERN_ENTRANCE, 0x0242, 0x040B, 0x00C5, 0x047A, SCENE_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN_BOSS },
|
||||
{ JABU_JABUS_BELLY_ENTRANCE, 0x0221, 0x0301, 0x0407, 0x010E, SCENE_JABU_JABU, SCENE_JABU_JABU_BOSS },
|
||||
{ FOREST_TEMPLE_ENTRANCE, 0x0215, 0x000C, 0x024E, 0x0608, SCENE_FOREST_TEMPLE, SCENE_FOREST_TEMPLE_BOSS },
|
||||
{ FIRE_TEMPLE_ENTRANCE, 0x024A, 0x0305, 0x0175, 0x0564, SCENE_FIRE_TEMPLE, SCENE_FIRE_TEMPLE_BOSS },
|
||||
{ WATER_TEMPLE_ENTRANCE, 0x021D, 0x0417, 0x0423, 0x060C, SCENE_WATER_TEMPLE, SCENE_WATER_TEMPLE_BOSS },
|
||||
{ SPIRIT_TEMPLE_ENTRANCE, 0x01E1, 0x008D, 0x02F5, 0x0610, SCENE_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE_BOSS },
|
||||
{ SHADOW_TEMPLE_ENTRANCE, 0x0205, 0x0413, 0x02B2, 0x0580, SCENE_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE_BOSS },
|
||||
};
|
||||
|
||||
//These variables store the new entrance indices for dungeons so that
|
||||
@ -195,7 +195,7 @@ void Entrance_Init(void) {
|
||||
|
||||
// assign the boss scene override
|
||||
if (bossScene != -1 && replacedDungeonScene != -1 && replacedDungeonExit != -1) {
|
||||
dungeonBossSceneOverrides[bossScene - SCENE_YDAN_BOSS] = replacedDungeonScene;
|
||||
dungeonBossSceneOverrides[bossScene - SCENE_DEKU_TREE_BOSS] = replacedDungeonScene;
|
||||
bluewarps[blueWarpRemapIdx].blueWarp = blueWarpIndex;
|
||||
bluewarps[blueWarpRemapIdx].destination = replacedDungeonExit;
|
||||
blueWarpRemapIdx++;
|
||||
@ -271,7 +271,7 @@ s16 Entrance_OverrideNextIndex(s16 nextEntranceIndex) {
|
||||
|
||||
// Exiting through the crawl space from Hyrule Castle courtyard is the same exit as leaving Ganon's castle
|
||||
// Don't override the entrance if we came from the Castle courtyard (day and night scenes)
|
||||
if (gPlayState != NULL && (gPlayState->sceneNum == SCENE_HAIRAL_NIWA || gPlayState->sceneNum == SCENE_HAIRAL_NIWA_N) &&
|
||||
if (gPlayState != NULL && (gPlayState->sceneNum == SCENE_CASTLE_COURTYARD_GUARDS_DAY || gPlayState->sceneNum == SCENE_CASTLE_COURTYARD_GUARDS_NIGHT) &&
|
||||
nextEntranceIndex == 0x023D) {
|
||||
return nextEntranceIndex;
|
||||
}
|
||||
@ -317,9 +317,9 @@ void Entrance_SetGameOverEntrance(void) {
|
||||
// When in a boss room and boss shuffle is on, get the connected dungeon's original boss room entrance
|
||||
// then run the normal game over overrides on it
|
||||
if (Randomizer_GetSettingValue(RSK_SHUFFLE_BOSS_ENTRANCES) != RO_BOSS_ROOM_ENTRANCE_SHUFFLE_OFF &&
|
||||
scene >= SCENE_YDAN_BOSS && scene <= SCENE_HAKADAN_BS) {
|
||||
scene >= SCENE_DEKU_TREE_BOSS && scene <= SCENE_SHADOW_TEMPLE_BOSS) {
|
||||
// Normalize boss scene range to 0 on lookup
|
||||
scene = dungeonBossSceneOverrides[scene - SCENE_YDAN_BOSS];
|
||||
scene = dungeonBossSceneOverrides[scene - SCENE_DEKU_TREE_BOSS];
|
||||
gSaveContext.entranceIndex = dungeons[scene].bossDoor;
|
||||
}
|
||||
|
||||
@ -363,40 +363,40 @@ void Entrance_SetSavewarpEntrance(void) {
|
||||
// When in a boss room and boss shuffle is on, use the boss scene override to remap to its
|
||||
// connected dungeon and use that for the final entrance
|
||||
if (Randomizer_GetSettingValue(RSK_SHUFFLE_BOSS_ENTRANCES) != RO_BOSS_ROOM_ENTRANCE_SHUFFLE_OFF &&
|
||||
scene >= SCENE_YDAN_BOSS && scene <= SCENE_HAKADAN_BS) {
|
||||
scene >= SCENE_DEKU_TREE_BOSS && scene <= SCENE_SHADOW_TEMPLE_BOSS) {
|
||||
// Normalize boss scene range to 0 on lookup
|
||||
scene = dungeonBossSceneOverrides[scene - SCENE_YDAN_BOSS];
|
||||
scene = dungeonBossSceneOverrides[scene - SCENE_DEKU_TREE_BOSS];
|
||||
}
|
||||
|
||||
if (scene == SCENE_YDAN || scene == SCENE_YDAN_BOSS) {
|
||||
if (scene == SCENE_DEKU_TREE || scene == SCENE_DEKU_TREE_BOSS) {
|
||||
gSaveContext.entranceIndex = newDekuTreeEntrance;
|
||||
} else if (scene == SCENE_DDAN || scene == SCENE_DDAN_BOSS) {
|
||||
} else if (scene == SCENE_DODONGOS_CAVERN || scene == SCENE_DODONGOS_CAVERN_BOSS) {
|
||||
gSaveContext.entranceIndex = newDodongosCavernEntrance;
|
||||
} else if (scene == SCENE_BDAN || scene == SCENE_BDAN_BOSS) {
|
||||
} else if (scene == SCENE_JABU_JABU || scene == SCENE_JABU_JABU_BOSS) {
|
||||
gSaveContext.entranceIndex = newJabuJabusBellyEntrance;
|
||||
} else if (scene == SCENE_BMORI1 || scene == SCENE_MORIBOSSROOM) { //Forest Temple Boss Room
|
||||
} else if (scene == SCENE_FOREST_TEMPLE || scene == SCENE_FOREST_TEMPLE_BOSS) { //Forest Temple Boss Room
|
||||
gSaveContext.entranceIndex = newForestTempleEntrance;
|
||||
} else if (scene == SCENE_HIDAN || scene == SCENE_FIRE_BS) { //Fire Temple Boss Room
|
||||
} else if (scene == SCENE_FIRE_TEMPLE || scene == SCENE_FIRE_TEMPLE_BOSS) { //Fire Temple Boss Room
|
||||
gSaveContext.entranceIndex = newFireTempleEntrance;
|
||||
} else if (scene == SCENE_MIZUSIN || scene == SCENE_MIZUSIN_BS) { //Water Temple Boss Room
|
||||
} else if (scene == SCENE_WATER_TEMPLE || scene == SCENE_WATER_TEMPLE_BOSS) { //Water Temple Boss Room
|
||||
gSaveContext.entranceIndex = newWaterTempleEntrance;
|
||||
} else if (scene == SCENE_JYASINZOU || scene == SCENE_JYASINBOSS) { //Spirit Temple Boss Room
|
||||
} else if (scene == SCENE_SPIRIT_TEMPLE || scene == SCENE_SPIRIT_TEMPLE_BOSS) { //Spirit Temple Boss Room
|
||||
gSaveContext.entranceIndex = newSpiritTempleEntrance;
|
||||
} else if (scene == SCENE_HAKADAN || scene == SCENE_HAKADAN_BS) { //Shadow Temple Boss Room
|
||||
} else if (scene == SCENE_SHADOW_TEMPLE || scene == SCENE_SHADOW_TEMPLE_BOSS) { //Shadow Temple Boss Room
|
||||
gSaveContext.entranceIndex = newShadowTempleEntrance;
|
||||
} else if (scene == SCENE_HAKADANCH) { // BOTW
|
||||
} else if (scene == SCENE_BOTTOM_OF_THE_WELL) { // BOTW
|
||||
gSaveContext.entranceIndex = newBottomOfTheWellEntrance;
|
||||
} else if (scene == SCENE_MEN) { // GTG
|
||||
} else if (scene == SCENE_GERUDO_TRAINING_GROUND) { // GTG
|
||||
gSaveContext.entranceIndex = newGerudoTrainingGroundsEntrance;
|
||||
} else if (scene == SCENE_ICE_DOUKUTO) { // Ice cavern
|
||||
} else if (scene == SCENE_ICE_CAVERN) { // Ice cavern
|
||||
gSaveContext.entranceIndex = newIceCavernEntrance;
|
||||
} else if (scene == SCENE_GANONTIKA) {
|
||||
} else if (scene == SCENE_INSIDE_GANONS_CASTLE) {
|
||||
gSaveContext.entranceIndex = GANONS_CASTLE_ENTRANCE;
|
||||
} else if (scene == SCENE_GANON || scene == SCENE_GANONTIKA_SONOGO || scene == SCENE_GANON_SONOGO || scene == SCENE_GANON_DEMO || scene == SCENE_GANON_FINAL) {
|
||||
} else if (scene == SCENE_GANONS_TOWER || scene == SCENE_INSIDE_GANONS_CASTLE_COLLAPSE || scene == SCENE_GANONS_TOWER_COLLAPSE_INTERIOR || scene == SCENE_GANON_BOSS || scene == SCENE_GANONS_TOWER_COLLAPSE_EXTERIOR) {
|
||||
gSaveContext.entranceIndex = 0x041B; // Inside Ganon's Castle -> Ganon's Tower Climb
|
||||
} else if (scene == SCENE_GERUDOWAY) { // Theives hideout
|
||||
} else if (scene == SCENE_THIEVES_HIDEOUT) { // Theives hideout
|
||||
gSaveContext.entranceIndex = 0x0486; // Gerudo Fortress -> Thieve's Hideout spawn 0
|
||||
} else if (scene == SCENE_LINK_HOME) {
|
||||
} else if (scene == SCENE_LINKS_HOUSE) {
|
||||
gSaveContext.entranceIndex = Entrance_OverrideNextIndex(LINK_HOUSE_SAVEWARP_ENTRANCE);
|
||||
} else if (LINK_IS_CHILD) {
|
||||
gSaveContext.entranceIndex = Entrance_OverrideNextIndex(LINK_HOUSE_SAVEWARP_ENTRANCE); // Child Overworld Spawn
|
||||
@ -450,28 +450,28 @@ void Entrance_OverrideBlueWarp(void) {
|
||||
gPlayState->nextEntranceIndex = 0;
|
||||
|
||||
switch (gPlayState->sceneNum) {
|
||||
case SCENE_YDAN_BOSS: // Ghoma boss room
|
||||
case SCENE_DEKU_TREE_BOSS: // Ghoma boss room
|
||||
gPlayState->nextEntranceIndex = Entrance_OverrideNextIndex(0x0457);
|
||||
return;
|
||||
case SCENE_DDAN_BOSS: // King Dodongo boss room
|
||||
case SCENE_DODONGOS_CAVERN_BOSS: // King Dodongo boss room
|
||||
gPlayState->nextEntranceIndex = Entrance_OverrideNextIndex(0x047A);
|
||||
return;
|
||||
case SCENE_BDAN_BOSS: // Barinade boss room
|
||||
case SCENE_JABU_JABU_BOSS: // Barinade boss room
|
||||
gPlayState->nextEntranceIndex = Entrance_OverrideNextIndex(0x010E);
|
||||
return;
|
||||
case SCENE_MORIBOSSROOM: // Phantom Ganon boss room
|
||||
case SCENE_FOREST_TEMPLE_BOSS: // Phantom Ganon boss room
|
||||
gPlayState->nextEntranceIndex = Entrance_OverrideNextIndex(0x0608);
|
||||
return;
|
||||
case SCENE_FIRE_BS: // Volvagia boss room
|
||||
case SCENE_FIRE_TEMPLE_BOSS: // Volvagia boss room
|
||||
gPlayState->nextEntranceIndex = Entrance_OverrideNextIndex(0x0564);
|
||||
return;
|
||||
case SCENE_MIZUSIN_BS: // Morpha boss room
|
||||
case SCENE_WATER_TEMPLE_BOSS: // Morpha boss room
|
||||
gPlayState->nextEntranceIndex = Entrance_OverrideNextIndex(0x060C);
|
||||
return;
|
||||
case SCENE_JYASINBOSS: // Bongo-Bongo boss room
|
||||
case SCENE_SPIRIT_TEMPLE_BOSS: // Twinrova boss room
|
||||
gPlayState->nextEntranceIndex = Entrance_OverrideNextIndex(0x0610);
|
||||
return;
|
||||
case SCENE_HAKADAN_BS: // Twinrova boss room
|
||||
case SCENE_SHADOW_TEMPLE_BOSS: // Bongo-Bongo boss room
|
||||
gPlayState->nextEntranceIndex = Entrance_OverrideNextIndex(0x0580);
|
||||
return;
|
||||
}
|
||||
@ -681,7 +681,7 @@ void Entrance_OverrideSpawnScene(s32 sceneNum, s32 spawn) {
|
||||
|
||||
if (Randomizer_GetSettingValue(RSK_SHUFFLE_DUNGEON_ENTRANCES) == RO_DUNGEON_ENTRANCE_SHUFFLE_ON_PLUS_GANON) {
|
||||
// Move Hyrule's Castle Courtyard exit spawn to be before the crates so players don't skip Talon
|
||||
if (sceneNum == SCENE_SPOT15 && spawn == 1) {
|
||||
if (sceneNum == SCENE_HYRULE_CASTLE && spawn == 1) {
|
||||
modifiedLinkActorEntry.pos.x = 0x033A;
|
||||
modifiedLinkActorEntry.pos.y = 0x0623;
|
||||
modifiedLinkActorEntry.pos.z = 0xFF22;
|
||||
@ -690,7 +690,7 @@ void Entrance_OverrideSpawnScene(s32 sceneNum, s32 spawn) {
|
||||
|
||||
// Move Ganon's Castle exit spawn to be on the small ledge near the castle and not over the void
|
||||
// to prevent Link from falling if the bridge isn't spawned
|
||||
if (sceneNum == SCENE_GANON_TOU && spawn == 1) {
|
||||
if (sceneNum == SCENE_OUTSIDE_GANONS_CASTLE && spawn == 1) {
|
||||
modifiedLinkActorEntry.pos.x = 0xFEA8;
|
||||
modifiedLinkActorEntry.pos.y = 0x065C;
|
||||
modifiedLinkActorEntry.pos.z = 0x0290;
|
||||
@ -703,7 +703,7 @@ void Entrance_OverrideSpawnScene(s32 sceneNum, s32 spawn) {
|
||||
if (Randomizer_GetSettingValue(RSK_SHUFFLE_BOSS_ENTRANCES) != RO_BOSS_ROOM_ENTRANCE_SHUFFLE_OFF) {
|
||||
// Repair the authentically bugged entrance when leaving Barniades boss room -> JabuJabu's belly
|
||||
// Link's position needs to be adjusted to prevent him from falling through the floor
|
||||
if (sceneNum == SCENE_BDAN && spawn == 1) {
|
||||
if (sceneNum == SCENE_JABU_JABU && spawn == 1) {
|
||||
modifiedLinkActorEntry.pos.z = 0xF7F4;
|
||||
gPlayState->linkActorEntry = &modifiedLinkActorEntry;
|
||||
}
|
||||
@ -711,7 +711,7 @@ void Entrance_OverrideSpawnScene(s32 sceneNum, s32 spawn) {
|
||||
// Repair the authentically bugged entrance when leaving Morpha's boass room -> Water Temple
|
||||
// Link's position was at the start of the Water Temple entrance
|
||||
// This updates it to place him in the hallway outside of Morpha's boss room.
|
||||
if (sceneNum == SCENE_MIZUSIN && spawn == 1) {
|
||||
if (sceneNum == SCENE_WATER_TEMPLE && spawn == 1) {
|
||||
modifiedLinkActorEntry.pos.x = 0xFF4C;
|
||||
modifiedLinkActorEntry.pos.y = 0x0406;
|
||||
modifiedLinkActorEntry.pos.z = 0xF828;
|
||||
@ -722,7 +722,7 @@ void Entrance_OverrideSpawnScene(s32 sceneNum, s32 spawn) {
|
||||
|
||||
if (Randomizer_GetSettingValue(RSK_SHUFFLE_OVERWORLD_ENTRANCES) == RO_GENERIC_ON) {
|
||||
// Move Hyrule Field bridge spawn for child link at night to be beyond the moat so he doesn't fall in the water
|
||||
if (sceneNum == SCENE_SPOT00 && spawn == 7 && LINK_IS_CHILD && IS_NIGHT) {
|
||||
if (sceneNum == SCENE_HYRULE_FIELD && spawn == 7 && LINK_IS_CHILD && IS_NIGHT) {
|
||||
modifiedLinkActorEntry.pos.x = 0x0001;
|
||||
modifiedLinkActorEntry.pos.z = 0x049E;
|
||||
gPlayState->linkActorEntry = &modifiedLinkActorEntry;
|
||||
@ -734,13 +734,13 @@ s32 Entrance_OverrideSpawnSceneRoom(s32 sceneNum, s32 spawn, s32 roomNum) {
|
||||
if (Randomizer_GetSettingValue(RSK_SHUFFLE_BOSS_ENTRANCES) != RO_BOSS_ROOM_ENTRANCE_SHUFFLE_OFF) {
|
||||
// Repair the authentically bugged scene/spawn info for leaving Barinade's boss room -> JabuJabu's belly
|
||||
// to load the correct room outside Barniade's boss room
|
||||
if (sceneNum == SCENE_BDAN && spawn == 1) {
|
||||
if (sceneNum == SCENE_JABU_JABU && spawn == 1) {
|
||||
return 5;
|
||||
}
|
||||
|
||||
// Repair the authentically bugged scene/spawn info for leaving Morhpa's boss room -> Water Temple
|
||||
// to load the correct room for the hallway before Morpha's boss room
|
||||
if (sceneNum == SCENE_MIZUSIN && spawn == 1) {
|
||||
if (sceneNum == SCENE_WATER_TEMPLE && spawn == 1) {
|
||||
return 11;
|
||||
}
|
||||
}
|
||||
|
@ -377,7 +377,7 @@ s8 LinkIsInArea(const EntranceData* entrance) {
|
||||
}
|
||||
|
||||
// Handle detecting the current grotto
|
||||
if ((gPlayState->sceneNum == SCENE_YOUSEI_IZUMI_TATE || gPlayState->sceneNum == SCENE_KAKUSIANA) &&
|
||||
if ((gPlayState->sceneNum == SCENE_FAIRYS_FOUNTAIN || gPlayState->sceneNum == SCENE_GROTTOS) &&
|
||||
entrance->type == ENTRANCE_TYPE_GROTTO) {
|
||||
if (entrance->index == (ENTRANCE_RANDO_GROTTO_EXIT_START + currentGrottoId)) {
|
||||
// Return the grotto entrance for tracking
|
||||
|
@ -81,73 +81,73 @@ std::vector<ItemTrackerItem> gregItems = {
|
||||
};
|
||||
|
||||
std::vector<ItemTrackerDungeon> itemTrackerDungeonsWithMapsHorizontal = {
|
||||
{ SCENE_YDAN, { ITEM_DUNGEON_MAP, ITEM_COMPASS } },
|
||||
{ SCENE_DDAN, { ITEM_DUNGEON_MAP, ITEM_COMPASS } },
|
||||
{ SCENE_BDAN, { ITEM_DUNGEON_MAP, ITEM_COMPASS } },
|
||||
{ SCENE_BMORI1, { ITEM_KEY_SMALL, ITEM_KEY_BOSS, ITEM_DUNGEON_MAP, ITEM_COMPASS } },
|
||||
{ SCENE_HIDAN, { ITEM_KEY_SMALL, ITEM_KEY_BOSS, ITEM_DUNGEON_MAP, ITEM_COMPASS } },
|
||||
{ SCENE_MIZUSIN, { ITEM_KEY_SMALL, ITEM_KEY_BOSS, ITEM_DUNGEON_MAP, ITEM_COMPASS } },
|
||||
{ SCENE_JYASINZOU, { ITEM_KEY_SMALL, ITEM_KEY_BOSS, ITEM_DUNGEON_MAP, ITEM_COMPASS } },
|
||||
{ SCENE_HAKADAN, { ITEM_KEY_SMALL, ITEM_KEY_BOSS, ITEM_DUNGEON_MAP, ITEM_COMPASS } },
|
||||
{ SCENE_GANONTIKA, { ITEM_KEY_SMALL, ITEM_KEY_BOSS } },
|
||||
{ SCENE_HAKADANCH, { ITEM_KEY_SMALL, ITEM_DUNGEON_MAP, ITEM_COMPASS } },
|
||||
{ SCENE_ICE_DOUKUTO, { ITEM_DUNGEON_MAP, ITEM_COMPASS } },
|
||||
{ SCENE_MEN, { ITEM_KEY_SMALL } },
|
||||
{ SCENE_DEKU_TREE, { ITEM_DUNGEON_MAP, ITEM_COMPASS } },
|
||||
{ SCENE_DODONGOS_CAVERN, { ITEM_DUNGEON_MAP, ITEM_COMPASS } },
|
||||
{ SCENE_JABU_JABU, { ITEM_DUNGEON_MAP, ITEM_COMPASS } },
|
||||
{ SCENE_FOREST_TEMPLE, { ITEM_KEY_SMALL, ITEM_KEY_BOSS, ITEM_DUNGEON_MAP, ITEM_COMPASS } },
|
||||
{ SCENE_FIRE_TEMPLE, { ITEM_KEY_SMALL, ITEM_KEY_BOSS, ITEM_DUNGEON_MAP, ITEM_COMPASS } },
|
||||
{ SCENE_WATER_TEMPLE, { ITEM_KEY_SMALL, ITEM_KEY_BOSS, ITEM_DUNGEON_MAP, ITEM_COMPASS } },
|
||||
{ SCENE_SPIRIT_TEMPLE, { ITEM_KEY_SMALL, ITEM_KEY_BOSS, ITEM_DUNGEON_MAP, ITEM_COMPASS } },
|
||||
{ SCENE_SHADOW_TEMPLE, { ITEM_KEY_SMALL, ITEM_KEY_BOSS, ITEM_DUNGEON_MAP, ITEM_COMPASS } },
|
||||
{ SCENE_INSIDE_GANONS_CASTLE, { ITEM_KEY_SMALL, ITEM_KEY_BOSS } },
|
||||
{ SCENE_BOTTOM_OF_THE_WELL, { ITEM_KEY_SMALL, ITEM_DUNGEON_MAP, ITEM_COMPASS } },
|
||||
{ SCENE_ICE_CAVERN, { ITEM_DUNGEON_MAP, ITEM_COMPASS } },
|
||||
{ SCENE_GERUDO_TRAINING_GROUND, { ITEM_KEY_SMALL } },
|
||||
};
|
||||
|
||||
std::vector<ItemTrackerDungeon> itemTrackerDungeonsHorizontal = {
|
||||
{ SCENE_BMORI1, { ITEM_KEY_SMALL, ITEM_KEY_BOSS } },
|
||||
{ SCENE_HIDAN, { ITEM_KEY_SMALL, ITEM_KEY_BOSS } },
|
||||
{ SCENE_MIZUSIN, { ITEM_KEY_SMALL, ITEM_KEY_BOSS } },
|
||||
{ SCENE_JYASINZOU, { ITEM_KEY_SMALL, ITEM_KEY_BOSS } },
|
||||
{ SCENE_HAKADAN, { ITEM_KEY_SMALL, ITEM_KEY_BOSS } },
|
||||
{ SCENE_GANONTIKA, { ITEM_KEY_SMALL, ITEM_KEY_BOSS } },
|
||||
{ SCENE_HAKADANCH, { ITEM_KEY_SMALL } },
|
||||
{ SCENE_MEN, { ITEM_KEY_SMALL } },
|
||||
{ SCENE_FOREST_TEMPLE, { ITEM_KEY_SMALL, ITEM_KEY_BOSS } },
|
||||
{ SCENE_FIRE_TEMPLE, { ITEM_KEY_SMALL, ITEM_KEY_BOSS } },
|
||||
{ SCENE_WATER_TEMPLE, { ITEM_KEY_SMALL, ITEM_KEY_BOSS } },
|
||||
{ SCENE_SPIRIT_TEMPLE, { ITEM_KEY_SMALL, ITEM_KEY_BOSS } },
|
||||
{ SCENE_SHADOW_TEMPLE, { ITEM_KEY_SMALL, ITEM_KEY_BOSS } },
|
||||
{ SCENE_INSIDE_GANONS_CASTLE, { ITEM_KEY_SMALL, ITEM_KEY_BOSS } },
|
||||
{ SCENE_BOTTOM_OF_THE_WELL, { ITEM_KEY_SMALL } },
|
||||
{ SCENE_GERUDO_TRAINING_GROUND, { ITEM_KEY_SMALL } },
|
||||
};
|
||||
|
||||
|
||||
std::vector<ItemTrackerDungeon> itemTrackerDungeonsWithMapsCompact = {
|
||||
{ SCENE_BMORI1, { ITEM_KEY_SMALL, ITEM_KEY_BOSS, ITEM_DUNGEON_MAP, ITEM_COMPASS } },
|
||||
{ SCENE_HIDAN, { ITEM_KEY_SMALL, ITEM_KEY_BOSS, ITEM_DUNGEON_MAP, ITEM_COMPASS } },
|
||||
{ SCENE_MIZUSIN, { ITEM_KEY_SMALL, ITEM_KEY_BOSS, ITEM_DUNGEON_MAP, ITEM_COMPASS } },
|
||||
{ SCENE_JYASINZOU, { ITEM_KEY_SMALL, ITEM_KEY_BOSS, ITEM_DUNGEON_MAP, ITEM_COMPASS } },
|
||||
{ SCENE_HAKADAN, { ITEM_KEY_SMALL, ITEM_KEY_BOSS, ITEM_DUNGEON_MAP, ITEM_COMPASS } },
|
||||
{ SCENE_HAKADANCH, { ITEM_KEY_SMALL, ITEM_DUNGEON_MAP, ITEM_COMPASS } },
|
||||
{ SCENE_YDAN, { ITEM_DUNGEON_MAP, ITEM_COMPASS } },
|
||||
{ SCENE_DDAN, { ITEM_DUNGEON_MAP, ITEM_COMPASS } },
|
||||
{ SCENE_BDAN, { ITEM_DUNGEON_MAP, ITEM_COMPASS } },
|
||||
{ SCENE_ICE_DOUKUTO, { ITEM_DUNGEON_MAP, ITEM_COMPASS } },
|
||||
{ SCENE_GANONTIKA, { ITEM_KEY_SMALL, ITEM_KEY_BOSS } },
|
||||
{ SCENE_MEN, { ITEM_KEY_SMALL } },
|
||||
{ SCENE_FOREST_TEMPLE, { ITEM_KEY_SMALL, ITEM_KEY_BOSS, ITEM_DUNGEON_MAP, ITEM_COMPASS } },
|
||||
{ SCENE_FIRE_TEMPLE, { ITEM_KEY_SMALL, ITEM_KEY_BOSS, ITEM_DUNGEON_MAP, ITEM_COMPASS } },
|
||||
{ SCENE_WATER_TEMPLE, { ITEM_KEY_SMALL, ITEM_KEY_BOSS, ITEM_DUNGEON_MAP, ITEM_COMPASS } },
|
||||
{ SCENE_SPIRIT_TEMPLE, { ITEM_KEY_SMALL, ITEM_KEY_BOSS, ITEM_DUNGEON_MAP, ITEM_COMPASS } },
|
||||
{ SCENE_SHADOW_TEMPLE, { ITEM_KEY_SMALL, ITEM_KEY_BOSS, ITEM_DUNGEON_MAP, ITEM_COMPASS } },
|
||||
{ SCENE_BOTTOM_OF_THE_WELL, { ITEM_KEY_SMALL, ITEM_DUNGEON_MAP, ITEM_COMPASS } },
|
||||
{ SCENE_DEKU_TREE, { ITEM_DUNGEON_MAP, ITEM_COMPASS } },
|
||||
{ SCENE_DODONGOS_CAVERN, { ITEM_DUNGEON_MAP, ITEM_COMPASS } },
|
||||
{ SCENE_JABU_JABU, { ITEM_DUNGEON_MAP, ITEM_COMPASS } },
|
||||
{ SCENE_ICE_CAVERN, { ITEM_DUNGEON_MAP, ITEM_COMPASS } },
|
||||
{ SCENE_INSIDE_GANONS_CASTLE, { ITEM_KEY_SMALL, ITEM_KEY_BOSS } },
|
||||
{ SCENE_GERUDO_TRAINING_GROUND, { ITEM_KEY_SMALL } },
|
||||
};
|
||||
|
||||
std::vector<ItemTrackerDungeon> itemTrackerDungeonsCompact = {
|
||||
{ SCENE_BMORI1, { ITEM_KEY_SMALL, ITEM_KEY_BOSS } },
|
||||
{ SCENE_HIDAN, { ITEM_KEY_SMALL, ITEM_KEY_BOSS } },
|
||||
{ SCENE_MIZUSIN, { ITEM_KEY_SMALL, ITEM_KEY_BOSS } },
|
||||
{ SCENE_JYASINZOU, { ITEM_KEY_SMALL, ITEM_KEY_BOSS } },
|
||||
{ SCENE_HAKADAN, { ITEM_KEY_SMALL, ITEM_KEY_BOSS } },
|
||||
{ SCENE_GANONTIKA, { ITEM_KEY_SMALL, ITEM_KEY_BOSS } },
|
||||
{ SCENE_HAKADANCH, { ITEM_KEY_SMALL } },
|
||||
{ SCENE_MEN, { ITEM_KEY_SMALL } },
|
||||
{ SCENE_GERUDOWAY, { ITEM_KEY_SMALL } },
|
||||
{ SCENE_FOREST_TEMPLE, { ITEM_KEY_SMALL, ITEM_KEY_BOSS } },
|
||||
{ SCENE_FIRE_TEMPLE, { ITEM_KEY_SMALL, ITEM_KEY_BOSS } },
|
||||
{ SCENE_WATER_TEMPLE, { ITEM_KEY_SMALL, ITEM_KEY_BOSS } },
|
||||
{ SCENE_SPIRIT_TEMPLE, { ITEM_KEY_SMALL, ITEM_KEY_BOSS } },
|
||||
{ SCENE_SHADOW_TEMPLE, { ITEM_KEY_SMALL, ITEM_KEY_BOSS } },
|
||||
{ SCENE_INSIDE_GANONS_CASTLE, { ITEM_KEY_SMALL, ITEM_KEY_BOSS } },
|
||||
{ SCENE_BOTTOM_OF_THE_WELL, { ITEM_KEY_SMALL } },
|
||||
{ SCENE_GERUDO_TRAINING_GROUND, { ITEM_KEY_SMALL } },
|
||||
{ SCENE_THIEVES_HIDEOUT, { ITEM_KEY_SMALL } },
|
||||
};
|
||||
|
||||
std::map<uint16_t, std::string> itemTrackerDungeonShortNames = {
|
||||
{ SCENE_BMORI1, "FRST" },
|
||||
{ SCENE_HIDAN, "FIRE" },
|
||||
{ SCENE_MIZUSIN, "WATR" },
|
||||
{ SCENE_JYASINZOU, "SPRT" },
|
||||
{ SCENE_HAKADAN, "SHDW" },
|
||||
{ SCENE_HAKADANCH, "BOTW" },
|
||||
{ SCENE_YDAN, "DEKU" },
|
||||
{ SCENE_DDAN, "DCVN" },
|
||||
{ SCENE_BDAN, "JABU" },
|
||||
{ SCENE_ICE_DOUKUTO, "ICE" },
|
||||
{ SCENE_GANONTIKA, "GANON" },
|
||||
{ SCENE_MEN, "GTG" },
|
||||
{ SCENE_GERUDOWAY, "HIDE" },
|
||||
{ SCENE_FOREST_TEMPLE, "FRST" },
|
||||
{ SCENE_FIRE_TEMPLE, "FIRE" },
|
||||
{ SCENE_WATER_TEMPLE, "WATR" },
|
||||
{ SCENE_SPIRIT_TEMPLE, "SPRT" },
|
||||
{ SCENE_SHADOW_TEMPLE, "SHDW" },
|
||||
{ SCENE_BOTTOM_OF_THE_WELL, "BOTW" },
|
||||
{ SCENE_DEKU_TREE, "DEKU" },
|
||||
{ SCENE_DODONGOS_CAVERN, "DCVN" },
|
||||
{ SCENE_JABU_JABU, "JABU" },
|
||||
{ SCENE_ICE_CAVERN, "ICE" },
|
||||
{ SCENE_INSIDE_GANONS_CASTLE, "GANON" },
|
||||
{ SCENE_GERUDO_TRAINING_GROUND, "GTG" },
|
||||
{ SCENE_THIEVES_HIDEOUT, "HIDE" },
|
||||
};
|
||||
|
||||
std::vector<ItemTrackerItem> dungeonItems = {};
|
||||
@ -333,31 +333,31 @@ ItemTrackerNumbers GetItemCurrentAndMax(ItemTrackerItem item) {
|
||||
result.currentAmmo = MAX(gSaveContext.inventory.dungeonKeys[item.data], 0);
|
||||
result.currentCapacity = gSaveContext.sohStats.dungeonKeys[item.data];
|
||||
switch (item.data) {
|
||||
case SCENE_BMORI1:
|
||||
case SCENE_FOREST_TEMPLE:
|
||||
result.maxCapacity = FOREST_TEMPLE_SMALL_KEY_MAX;
|
||||
break;
|
||||
case SCENE_HIDAN:
|
||||
case SCENE_FIRE_TEMPLE:
|
||||
result.maxCapacity = FIRE_TEMPLE_SMALL_KEY_MAX;
|
||||
break;
|
||||
case SCENE_MIZUSIN:
|
||||
case SCENE_WATER_TEMPLE:
|
||||
result.maxCapacity = WATER_TEMPLE_SMALL_KEY_MAX;
|
||||
break;
|
||||
case SCENE_JYASINZOU:
|
||||
case SCENE_SPIRIT_TEMPLE:
|
||||
result.maxCapacity = SPIRIT_TEMPLE_SMALL_KEY_MAX;
|
||||
break;
|
||||
case SCENE_HAKADAN:
|
||||
case SCENE_SHADOW_TEMPLE:
|
||||
result.maxCapacity = SHADOW_TEMPLE_SMALL_KEY_MAX;
|
||||
break;
|
||||
case SCENE_HAKADANCH:
|
||||
case SCENE_BOTTOM_OF_THE_WELL:
|
||||
result.maxCapacity = BOTTOM_OF_THE_WELL_SMALL_KEY_MAX;
|
||||
break;
|
||||
case SCENE_MEN:
|
||||
case SCENE_GERUDO_TRAINING_GROUND:
|
||||
result.maxCapacity = GERUDO_TRAINING_GROUNDS_SMALL_KEY_MAX;
|
||||
break;
|
||||
case SCENE_GERUDOWAY:
|
||||
case SCENE_THIEVES_HIDEOUT:
|
||||
result.maxCapacity = GERUDO_FORTRESS_SMALL_KEY_MAX;
|
||||
break;
|
||||
case SCENE_GANONTIKA:
|
||||
case SCENE_INSIDE_GANONS_CASTLE:
|
||||
result.maxCapacity = GANONS_CASTLE_SMALL_KEY_MAX;
|
||||
break;
|
||||
}
|
||||
@ -582,7 +582,7 @@ void DrawDungeonItem(ItemTrackerItem item) {
|
||||
ImVec2(iconSize, iconSize), ImVec2(0, 0), ImVec2(1, 1));
|
||||
}
|
||||
|
||||
if (ResourceMgr_IsSceneMasterQuest(item.data) && (CHECK_DUNGEON_ITEM(DUNGEON_MAP, item.data) || item.data == SCENE_MEN || item.data == SCENE_GANONTIKA)) {
|
||||
if (ResourceMgr_IsSceneMasterQuest(item.data) && (CHECK_DUNGEON_ITEM(DUNGEON_MAP, item.data) || item.data == SCENE_GERUDO_TRAINING_GROUND || item.data == SCENE_INSIDE_GANONS_CASTLE)) {
|
||||
dungeonColor = IM_COL_PURPLE;
|
||||
}
|
||||
|
||||
@ -598,7 +598,7 @@ void DrawDungeonItem(ItemTrackerItem item) {
|
||||
}
|
||||
|
||||
if (itemId == ITEM_DUNGEON_MAP &&
|
||||
(item.data == SCENE_YDAN || item.data == SCENE_DDAN || item.data == SCENE_BDAN || item.data == SCENE_ICE_DOUKUTO)
|
||||
(item.data == SCENE_DEKU_TREE || item.data == SCENE_DODONGOS_CAVERN || item.data == SCENE_JABU_JABU || item.data == SCENE_ICE_CAVERN)
|
||||
) {
|
||||
ImVec2 p = ImGui::GetCursorScreenPos();
|
||||
std::string dungeonName = itemTrackerDungeonShortNames[item.data];
|
||||
@ -749,8 +749,8 @@ std::vector<ItemTrackerItem> GetDungeonItemsVector(std::vector<ItemTrackerDungeo
|
||||
break;
|
||||
case ITEM_KEY_BOSS:
|
||||
// Swap Ganon's Castle boss key to the right scene ID manually
|
||||
if (dungeons[j].id == SCENE_GANONTIKA) {
|
||||
dungeonItems.push_back(ITEM_TRACKER_ITEM(ITEM_KEY_BOSS, SCENE_GANON, DrawDungeonItem));
|
||||
if (dungeons[j].id == SCENE_INSIDE_GANONS_CASTLE) {
|
||||
dungeonItems.push_back(ITEM_TRACKER_ITEM(ITEM_KEY_BOSS, SCENE_GANONS_TOWER, DrawDungeonItem));
|
||||
} else {
|
||||
dungeonItems.push_back(ITEM_TRACKER_ITEM(ITEM_KEY_BOSS, dungeons[j].id, DrawDungeonItem));
|
||||
}
|
||||
@ -791,17 +791,17 @@ void UpdateVectors() {
|
||||
if (CVarGetInteger("gItemTrackerDisplayDungeonItemsMaps", 1)) {
|
||||
dungeonItems = GetDungeonItemsVector(itemTrackerDungeonsWithMapsHorizontal, 12);
|
||||
// Manually adding Thieves Hideout to an open spot so we don't get an additional row for one item
|
||||
dungeonItems[23] = ITEM_TRACKER_ITEM(ITEM_KEY_SMALL, SCENE_GERUDOWAY, DrawDungeonItem);
|
||||
dungeonItems[23] = ITEM_TRACKER_ITEM(ITEM_KEY_SMALL, SCENE_THIEVES_HIDEOUT, DrawDungeonItem);
|
||||
} else {
|
||||
// Manually adding Thieves Hideout to an open spot so we don't get an additional row for one item
|
||||
dungeonItems = GetDungeonItemsVector(itemTrackerDungeonsHorizontal, 8);
|
||||
dungeonItems[15] = ITEM_TRACKER_ITEM(ITEM_KEY_SMALL, SCENE_GERUDOWAY, DrawDungeonItem);
|
||||
dungeonItems[15] = ITEM_TRACKER_ITEM(ITEM_KEY_SMALL, SCENE_THIEVES_HIDEOUT, DrawDungeonItem);
|
||||
}
|
||||
} else {
|
||||
if (CVarGetInteger("gItemTrackerDisplayDungeonItemsMaps", 1)) {
|
||||
dungeonItems = GetDungeonItemsVector(itemTrackerDungeonsWithMapsCompact);
|
||||
// Manually adding Thieves Hideout to an open spot so we don't get an additional row for one item
|
||||
dungeonItems[35] = ITEM_TRACKER_ITEM(ITEM_KEY_SMALL, SCENE_GERUDOWAY, DrawDungeonItem);
|
||||
dungeonItems[35] = ITEM_TRACKER_ITEM(ITEM_KEY_SMALL, SCENE_THIEVES_HIDEOUT, DrawDungeonItem);
|
||||
} else {
|
||||
dungeonItems = GetDungeonItemsVector(itemTrackerDungeonsCompact);
|
||||
}
|
||||
|
@ -154,50 +154,50 @@ void SetStartingItems() {
|
||||
uint32_t mapBitMask = 1 << 1;
|
||||
uint32_t compassBitMask = 1 << 2;
|
||||
uint32_t startingDungeonItemsBitMask = mapBitMask | compassBitMask;
|
||||
for (int scene = SCENE_YDAN; scene <= SCENE_ICE_DOUKUTO; scene++) {
|
||||
for (int scene = SCENE_DEKU_TREE; scene <= SCENE_ICE_CAVERN; scene++) {
|
||||
gSaveContext.inventory.dungeonItems[scene] |= startingDungeonItemsBitMask;
|
||||
}
|
||||
}
|
||||
|
||||
if (Randomizer_GetSettingValue(RSK_KEYSANITY) == RO_DUNGEON_ITEM_LOC_STARTWITH) {
|
||||
gSaveContext.inventory.dungeonKeys[SCENE_BMORI1] = FOREST_TEMPLE_SMALL_KEY_MAX; // Forest
|
||||
gSaveContext.sohStats.dungeonKeys[SCENE_BMORI1] = FOREST_TEMPLE_SMALL_KEY_MAX; // Forest
|
||||
gSaveContext.inventory.dungeonKeys[SCENE_HIDAN] = FIRE_TEMPLE_SMALL_KEY_MAX; // Fire
|
||||
gSaveContext.sohStats.dungeonKeys[SCENE_HIDAN] = FIRE_TEMPLE_SMALL_KEY_MAX; // Fire
|
||||
gSaveContext.inventory.dungeonKeys[SCENE_MIZUSIN] = WATER_TEMPLE_SMALL_KEY_MAX; // Water
|
||||
gSaveContext.sohStats.dungeonKeys[SCENE_MIZUSIN] = WATER_TEMPLE_SMALL_KEY_MAX; // Water
|
||||
gSaveContext.inventory.dungeonKeys[SCENE_JYASINZOU] = SPIRIT_TEMPLE_SMALL_KEY_MAX; // Spirit
|
||||
gSaveContext.sohStats.dungeonKeys[SCENE_JYASINZOU] = SPIRIT_TEMPLE_SMALL_KEY_MAX; // Spirit
|
||||
gSaveContext.inventory.dungeonKeys[SCENE_HAKADAN] = SHADOW_TEMPLE_SMALL_KEY_MAX; // Shadow
|
||||
gSaveContext.sohStats.dungeonKeys[SCENE_HAKADAN] = SHADOW_TEMPLE_SMALL_KEY_MAX; // Shadow
|
||||
gSaveContext.inventory.dungeonKeys[SCENE_HAKADANCH] = BOTTOM_OF_THE_WELL_SMALL_KEY_MAX; // BotW
|
||||
gSaveContext.sohStats.dungeonKeys[SCENE_HAKADANCH] = BOTTOM_OF_THE_WELL_SMALL_KEY_MAX; // BotW
|
||||
gSaveContext.inventory.dungeonKeys[SCENE_MEN] = GERUDO_TRAINING_GROUNDS_SMALL_KEY_MAX; // GTG
|
||||
gSaveContext.sohStats.dungeonKeys[SCENE_MEN] = GERUDO_TRAINING_GROUNDS_SMALL_KEY_MAX; // GTG
|
||||
gSaveContext.inventory.dungeonKeys[SCENE_GANONTIKA] = GANONS_CASTLE_SMALL_KEY_MAX; // Ganon
|
||||
gSaveContext.sohStats.dungeonKeys[SCENE_GANONTIKA] = GANONS_CASTLE_SMALL_KEY_MAX; // Ganon
|
||||
gSaveContext.inventory.dungeonKeys[SCENE_FOREST_TEMPLE] = FOREST_TEMPLE_SMALL_KEY_MAX; // Forest
|
||||
gSaveContext.sohStats.dungeonKeys[SCENE_FOREST_TEMPLE] = FOREST_TEMPLE_SMALL_KEY_MAX; // Forest
|
||||
gSaveContext.inventory.dungeonKeys[SCENE_FIRE_TEMPLE] = FIRE_TEMPLE_SMALL_KEY_MAX; // Fire
|
||||
gSaveContext.sohStats.dungeonKeys[SCENE_FIRE_TEMPLE] = FIRE_TEMPLE_SMALL_KEY_MAX; // Fire
|
||||
gSaveContext.inventory.dungeonKeys[SCENE_WATER_TEMPLE] = WATER_TEMPLE_SMALL_KEY_MAX; // Water
|
||||
gSaveContext.sohStats.dungeonKeys[SCENE_WATER_TEMPLE] = WATER_TEMPLE_SMALL_KEY_MAX; // Water
|
||||
gSaveContext.inventory.dungeonKeys[SCENE_SPIRIT_TEMPLE] = SPIRIT_TEMPLE_SMALL_KEY_MAX; // Spirit
|
||||
gSaveContext.sohStats.dungeonKeys[SCENE_SPIRIT_TEMPLE] = SPIRIT_TEMPLE_SMALL_KEY_MAX; // Spirit
|
||||
gSaveContext.inventory.dungeonKeys[SCENE_SHADOW_TEMPLE] = SHADOW_TEMPLE_SMALL_KEY_MAX; // Shadow
|
||||
gSaveContext.sohStats.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.sohStats.dungeonKeys[SCENE_BOTTOM_OF_THE_WELL] = BOTTOM_OF_THE_WELL_SMALL_KEY_MAX; // BotW
|
||||
gSaveContext.inventory.dungeonKeys[SCENE_GERUDO_TRAINING_GROUND] = GERUDO_TRAINING_GROUNDS_SMALL_KEY_MAX; // GTG
|
||||
gSaveContext.sohStats.dungeonKeys[SCENE_GERUDO_TRAINING_GROUND] = GERUDO_TRAINING_GROUNDS_SMALL_KEY_MAX; // GTG
|
||||
gSaveContext.inventory.dungeonKeys[SCENE_INSIDE_GANONS_CASTLE] = GANONS_CASTLE_SMALL_KEY_MAX; // Ganon
|
||||
gSaveContext.sohStats.dungeonKeys[SCENE_INSIDE_GANONS_CASTLE] = GANONS_CASTLE_SMALL_KEY_MAX; // Ganon
|
||||
} 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
|
||||
// locked behind the keys, which is not always true in rando.
|
||||
// We can resolve this by starting with some extra keys
|
||||
if (ResourceMgr_IsSceneMasterQuest(SCENE_JYASINZOU)) {
|
||||
if (ResourceMgr_IsSceneMasterQuest(SCENE_SPIRIT_TEMPLE)) {
|
||||
// MQ Spirit needs 3 keys
|
||||
gSaveContext.inventory.dungeonKeys[SCENE_JYASINZOU] = 3;
|
||||
gSaveContext.sohStats.dungeonKeys[SCENE_JYASINZOU] = 3;
|
||||
gSaveContext.inventory.dungeonKeys[SCENE_SPIRIT_TEMPLE] = 3;
|
||||
gSaveContext.sohStats.dungeonKeys[SCENE_SPIRIT_TEMPLE] = 3;
|
||||
}
|
||||
}
|
||||
|
||||
if (Randomizer_GetSettingValue(RSK_BOSS_KEYSANITY) == RO_DUNGEON_ITEM_LOC_STARTWITH) {
|
||||
gSaveContext.inventory.dungeonItems[SCENE_BMORI1] |= 1; // Forest
|
||||
gSaveContext.inventory.dungeonItems[SCENE_HIDAN] |= 1; // Fire
|
||||
gSaveContext.inventory.dungeonItems[SCENE_MIZUSIN] |= 1; // Water
|
||||
gSaveContext.inventory.dungeonItems[SCENE_JYASINZOU] |= 1; // Spirit
|
||||
gSaveContext.inventory.dungeonItems[SCENE_HAKADAN] |= 1; // Shadow
|
||||
gSaveContext.inventory.dungeonItems[SCENE_FOREST_TEMPLE] |= 1; // Forest
|
||||
gSaveContext.inventory.dungeonItems[SCENE_FIRE_TEMPLE] |= 1; // Fire
|
||||
gSaveContext.inventory.dungeonItems[SCENE_WATER_TEMPLE] |= 1; // Water
|
||||
gSaveContext.inventory.dungeonItems[SCENE_SPIRIT_TEMPLE] |= 1; // Spirit
|
||||
gSaveContext.inventory.dungeonItems[SCENE_SHADOW_TEMPLE] |= 1; // Shadow
|
||||
}
|
||||
|
||||
if (Randomizer_GetSettingValue(RSK_GANONS_BOSS_KEY) == RO_GANON_BOSS_KEY_STARTWITH) {
|
||||
gSaveContext.inventory.dungeonItems[SCENE_GANON] |= 1;
|
||||
gSaveContext.inventory.dungeonItems[SCENE_GANONS_TOWER] |= 1;
|
||||
}
|
||||
}
|
||||
|
||||
@ -276,18 +276,18 @@ extern "C" void Randomizer_InitSaveFile() {
|
||||
Flags_SetInfTable(INFTABLE_ENTERED_HYRULE_CASTLE);
|
||||
|
||||
// skip the z target talk instructions by the kokiri shop
|
||||
gSaveContext.sceneFlags[SCENE_SPOT04].swch |= (1 << 0x1F);
|
||||
gSaveContext.sceneFlags[SCENE_KOKIRI_FOREST].swch |= (1 << 0x1F);
|
||||
|
||||
// Go away ruto (water temple first cutscene)
|
||||
gSaveContext.sceneFlags[SCENE_MIZUSIN].swch |= (1 << 0x10);
|
||||
gSaveContext.sceneFlags[SCENE_WATER_TEMPLE].swch |= (1 << 0x10);
|
||||
|
||||
// no more kaepora
|
||||
gSaveContext.sceneFlags[SCENE_SPOT00].swch |= (1 << 0xC); // hyrule field kaepora outside kokiri forest
|
||||
gSaveContext.sceneFlags[SCENE_SPOT00].swch |= (1 << 0xB); // hyrule field kaepora outside lake hylia
|
||||
gSaveContext.sceneFlags[SCENE_SPOT10].swch |= (1 << 0x7); // lost woods kaepora pre-saria
|
||||
gSaveContext.sceneFlags[SCENE_SPOT10].swch |= (1 << 0x8); // lost woods kaepora post-saria
|
||||
gSaveContext.sceneFlags[SCENE_SPOT11].swch |= (1 << 0x1F); // desert colossus kaepora
|
||||
gSaveContext.sceneFlags[SCENE_SPOT15].swch |= (1 << 0x5); // hyrule castle kaepora
|
||||
gSaveContext.sceneFlags[SCENE_HYRULE_FIELD].swch |= (1 << 0xC); // hyrule field kaepora outside kokiri forest
|
||||
gSaveContext.sceneFlags[SCENE_HYRULE_FIELD].swch |= (1 << 0xB); // hyrule field kaepora outside lake hylia
|
||||
gSaveContext.sceneFlags[SCENE_LOST_WOODS].swch |= (1 << 0x7); // lost woods kaepora pre-saria
|
||||
gSaveContext.sceneFlags[SCENE_LOST_WOODS].swch |= (1 << 0x8); // lost woods kaepora post-saria
|
||||
gSaveContext.sceneFlags[SCENE_DESERT_COLOSSUS].swch |= (1 << 0x1F); // desert colossus kaepora
|
||||
gSaveContext.sceneFlags[SCENE_HYRULE_CASTLE].swch |= (1 << 0x5); // hyrule castle kaepora
|
||||
|
||||
if (!Randomizer_GetSettingValue(RSK_ENABLE_GLITCH_CUTSCENES)) {
|
||||
Flags_SetInfTable(INFTABLE_SPOKE_TO_DARUNIA_IN_FIRE_TEMPLE); // Darunia in Fire Temple
|
||||
@ -306,7 +306,7 @@ extern "C" void Randomizer_InitSaveFile() {
|
||||
case RO_AGE_ADULT: // Adult
|
||||
gSaveContext.linkAge = LINK_AGE_ADULT;
|
||||
gSaveContext.entranceIndex = 0x5F4;
|
||||
gSaveContext.savedSceneNum = SCENE_SPOT20; // Set scene num manually to ToT
|
||||
gSaveContext.savedSceneNum = SCENE_LON_LON_RANCH; // Set scene num manually to ToT
|
||||
break;
|
||||
case RO_AGE_CHILD: // Child
|
||||
gSaveContext.linkAge = LINK_AGE_CHILD;
|
||||
@ -344,7 +344,7 @@ extern "C" void Randomizer_InitSaveFile() {
|
||||
// Got item from impa
|
||||
Flags_SetEventChkInf(EVENTCHKINF_LEARNED_ZELDAS_LULLABY);
|
||||
|
||||
gSaveContext.sceneFlags[SCENE_SPOT15].swch |= (1 << 0x4); // move milk crates in hyrule castle to moat
|
||||
gSaveContext.sceneFlags[SCENE_HYRULE_CASTLE].swch |= (1 << 0x4); // move milk crates in hyrule castle to moat
|
||||
|
||||
// set this at the end to ensure we always start with the letter
|
||||
// this is for the off chance we got the weird egg from impa (which should never happen)
|
||||
@ -362,15 +362,15 @@ extern "C" void Randomizer_InitSaveFile() {
|
||||
u8 keysanity = Randomizer_GetSettingValue(RSK_KEYSANITY) == RO_DUNGEON_ITEM_LOC_ANYWHERE ||
|
||||
Randomizer_GetSettingValue(RSK_KEYSANITY) == RO_DUNGEON_ITEM_LOC_OVERWORLD ||
|
||||
Randomizer_GetSettingValue(RSK_KEYSANITY) == RO_DUNGEON_ITEM_LOC_ANY_DUNGEON;
|
||||
if (!ResourceMgr_IsSceneMasterQuest(SCENE_HIDAN) && !keysanity) {
|
||||
gSaveContext.sceneFlags[SCENE_HIDAN].swch |= (1 << 0x17);
|
||||
if (!ResourceMgr_IsSceneMasterQuest(SCENE_FIRE_TEMPLE) && !keysanity) {
|
||||
gSaveContext.sceneFlags[SCENE_FIRE_TEMPLE].swch |= (1 << 0x17);
|
||||
}
|
||||
|
||||
// Opens locked Water Temple door in vanilla to prevent softlocks
|
||||
// West door on the middle level that leads to the water raising thing
|
||||
// Happens in 3DS rando and N64 rando as well
|
||||
if (!ResourceMgr_IsSceneMasterQuest(SCENE_MIZUSIN)) {
|
||||
gSaveContext.sceneFlags[SCENE_MIZUSIN].swch |= (1 << 0x15);
|
||||
if (!ResourceMgr_IsSceneMasterQuest(SCENE_WATER_TEMPLE)) {
|
||||
gSaveContext.sceneFlags[SCENE_WATER_TEMPLE].swch |= (1 << 0x15);
|
||||
}
|
||||
|
||||
int openForest = Randomizer_GetSettingValue(RSK_FOREST);
|
||||
@ -399,26 +399,26 @@ extern "C" void Randomizer_InitSaveFile() {
|
||||
Flags_SetEventChkInf(EVENTCHKINF_CARPENTERS_FREE(1));
|
||||
Flags_SetEventChkInf(EVENTCHKINF_CARPENTERS_FREE(2));
|
||||
Flags_SetEventChkInf(EVENTCHKINF_CARPENTERS_FREE(3));
|
||||
gSaveContext.sceneFlags[SCENE_GERUDOWAY].swch |= (1 << 0x02); // heard yells and unlocked doors
|
||||
gSaveContext.sceneFlags[SCENE_GERUDOWAY].swch |= (1 << 0x03);
|
||||
gSaveContext.sceneFlags[SCENE_GERUDOWAY].swch |= (1 << 0x04);
|
||||
gSaveContext.sceneFlags[SCENE_GERUDOWAY].swch |= (1 << 0x06);
|
||||
gSaveContext.sceneFlags[SCENE_GERUDOWAY].swch |= (1 << 0x07);
|
||||
gSaveContext.sceneFlags[SCENE_GERUDOWAY].swch |= (1 << 0x08);
|
||||
gSaveContext.sceneFlags[SCENE_GERUDOWAY].swch |= (1 << 0x10);
|
||||
gSaveContext.sceneFlags[SCENE_GERUDOWAY].swch |= (1 << 0x12);
|
||||
gSaveContext.sceneFlags[SCENE_GERUDOWAY].swch |= (1 << 0x13);
|
||||
gSaveContext.sceneFlags[SCENE_GERUDOWAY].collect |= (1 << 0x0A); // picked up keys
|
||||
gSaveContext.sceneFlags[SCENE_GERUDOWAY].collect |= (1 << 0x0E);
|
||||
gSaveContext.sceneFlags[SCENE_GERUDOWAY].collect |= (1 << 0x0F);
|
||||
gSaveContext.sceneFlags[SCENE_THIEVES_HIDEOUT].swch |= (1 << 0x02); // heard yells and unlocked doors
|
||||
gSaveContext.sceneFlags[SCENE_THIEVES_HIDEOUT].swch |= (1 << 0x03);
|
||||
gSaveContext.sceneFlags[SCENE_THIEVES_HIDEOUT].swch |= (1 << 0x04);
|
||||
gSaveContext.sceneFlags[SCENE_THIEVES_HIDEOUT].swch |= (1 << 0x06);
|
||||
gSaveContext.sceneFlags[SCENE_THIEVES_HIDEOUT].swch |= (1 << 0x07);
|
||||
gSaveContext.sceneFlags[SCENE_THIEVES_HIDEOUT].swch |= (1 << 0x08);
|
||||
gSaveContext.sceneFlags[SCENE_THIEVES_HIDEOUT].swch |= (1 << 0x10);
|
||||
gSaveContext.sceneFlags[SCENE_THIEVES_HIDEOUT].swch |= (1 << 0x12);
|
||||
gSaveContext.sceneFlags[SCENE_THIEVES_HIDEOUT].swch |= (1 << 0x13);
|
||||
gSaveContext.sceneFlags[SCENE_THIEVES_HIDEOUT].collect |= (1 << 0x0A); // picked up keys
|
||||
gSaveContext.sceneFlags[SCENE_THIEVES_HIDEOUT].collect |= (1 << 0x0E);
|
||||
gSaveContext.sceneFlags[SCENE_THIEVES_HIDEOUT].collect |= (1 << 0x0F);
|
||||
}
|
||||
|
||||
if (Randomizer_GetSettingValue(RSK_GERUDO_FORTRESS) == RO_GF_OPEN) {
|
||||
Flags_SetEventChkInf(EVENTCHKINF_CARPENTERS_FREE(0));
|
||||
gSaveContext.sceneFlags[SCENE_GERUDOWAY].swch |= (1 << 0x01); // heard yell and unlocked door
|
||||
gSaveContext.sceneFlags[SCENE_GERUDOWAY].swch |= (1 << 0x05);
|
||||
gSaveContext.sceneFlags[SCENE_GERUDOWAY].swch |= (1 << 0x11);
|
||||
gSaveContext.sceneFlags[SCENE_GERUDOWAY].collect |= (1 << 0x0C); // picked up key
|
||||
gSaveContext.sceneFlags[SCENE_THIEVES_HIDEOUT].swch |= (1 << 0x01); // heard yell and unlocked door
|
||||
gSaveContext.sceneFlags[SCENE_THIEVES_HIDEOUT].swch |= (1 << 0x05);
|
||||
gSaveContext.sceneFlags[SCENE_THIEVES_HIDEOUT].swch |= (1 << 0x11);
|
||||
gSaveContext.sceneFlags[SCENE_THIEVES_HIDEOUT].collect |= (1 << 0x0C); // picked up key
|
||||
|
||||
if (!Randomizer_GetSettingValue(RSK_SHUFFLE_GERUDO_MEMBERSHIP_CARD)) {
|
||||
Item_Give(NULL, ITEM_GERUDO_CARD);
|
||||
|
@ -2096,7 +2096,7 @@ extern "C" int CustomMessage_RetrieveIfExists(PlayState* play) {
|
||||
}
|
||||
} else if (Randomizer_GetSettingValue(RSK_DAMPES_DIARY_HINT) && textId == TEXT_DAMPES_DIARY) {
|
||||
messageEntry = CustomMessageManager::Instance->RetrieveMessage(Randomizer::randoMiscHintsTableID, TEXT_DAMPES_DIARY);
|
||||
} else if (play->sceneNum == SCENE_TAKARAYA &&
|
||||
} else if (play->sceneNum == SCENE_TREASURE_BOX_SHOP &&
|
||||
Randomizer_GetSettingValue(RSK_GREG_HINT) &&
|
||||
(textId == 0x704C || textId == 0x6E || textId == 0x84)) {
|
||||
messageEntry = CustomMessageManager::Instance->RetrieveMessage(Randomizer::randoMiscHintsTableID, TEXT_CHEST_GAME_PROCEED);
|
||||
@ -2140,7 +2140,7 @@ extern "C" int CustomMessage_RetrieveIfExists(PlayState* play) {
|
||||
messageEntry = CustomMessageManager::Instance->RetrieveMessage(customMessageTableID, TEXT_HEART_PIECE);
|
||||
messageEntry.Replace("{{heartPieceCount}}", std::to_string(gSaveContext.sohStats.heartPieces + 1));
|
||||
}
|
||||
if (textId == TEXT_MARKET_GUARD_NIGHT && CVarGetInteger("gMarketSneak", 0) && play->sceneNum == SCENE_ENTRA_N) {
|
||||
if (textId == TEXT_MARKET_GUARD_NIGHT && CVarGetInteger("gMarketSneak", 0) && play->sceneNum == SCENE_MARKET_ENTRANCE_NIGHT) {
|
||||
messageEntry = CustomMessageManager::Instance->RetrieveMessage(customMessageTableID, TEXT_MARKET_GUARD_NIGHT);
|
||||
}
|
||||
if (textId == TEXT_RANDO_SAVE_VERSION_WARNING) {
|
||||
|
@ -582,7 +582,7 @@ void SaveManager::InitFileNormal() {
|
||||
gSaveContext.scarecrowSpawnSong[i].semitone = 0;
|
||||
}
|
||||
|
||||
gSaveContext.horseData.scene = SCENE_SPOT00;
|
||||
gSaveContext.horseData.scene = SCENE_HYRULE_FIELD;
|
||||
gSaveContext.horseData.pos.x = -1840;
|
||||
gSaveContext.horseData.pos.y = 72;
|
||||
gSaveContext.horseData.pos.z = 5497;
|
||||
@ -679,7 +679,7 @@ void SaveManager::InitFileDebug() {
|
||||
gSaveContext.inventory.defenseHearts = 0;
|
||||
gSaveContext.inventory.gsTokens = 0;
|
||||
|
||||
gSaveContext.horseData.scene = SCENE_SPOT00;
|
||||
gSaveContext.horseData.scene = SCENE_HYRULE_FIELD;
|
||||
gSaveContext.horseData.pos.x = -1840;
|
||||
gSaveContext.horseData.pos.y = 72;
|
||||
gSaveContext.horseData.pos.z = 5497;
|
||||
|
@ -76,7 +76,7 @@ void OTRPlay_InitScene(PlayState* play, s32 spawn) {
|
||||
OTRScene_ExecuteCommands(play, (LUS::Scene*)play->sceneSegment);
|
||||
Play_InitEnvironment(play, play->skyboxId);
|
||||
// Unpause the timer for Boss Rush when the scene loaded isn't the Chamber of Sages.
|
||||
if (gSaveContext.isBossRush && play->sceneNum != SCENE_KENJYANOMA) {
|
||||
if (gSaveContext.isBossRush && play->sceneNum != SCENE_CHAMBER_OF_THE_SAGES) {
|
||||
gSaveContext.isBossRushPaused = 0;
|
||||
}
|
||||
/* auto data = static_cast<LUS::Vertex*>(LUS::Context::GetInstance()
|
||||
|
@ -415,14 +415,14 @@ bool Scene_CommandMiscSettings(PlayState* play, LUS::ISceneCommand* cmd) {
|
||||
YREG(15) = cmdCam->settings.cameraMovement;
|
||||
gSaveContext.worldMapArea = cmdCam->settings.worldMapArea;
|
||||
|
||||
if ((play->sceneNum == SCENE_SHOP1) || (play->sceneNum == SCENE_SYATEKIJYOU)) {
|
||||
if ((play->sceneNum == SCENE_BAZAAR) || (play->sceneNum == SCENE_SHOOTING_GALLERY)) {
|
||||
if (LINK_AGE_IN_YEARS == YEARS_ADULT) {
|
||||
gSaveContext.worldMapArea = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (((play->sceneNum >= SCENE_SPOT00) && (play->sceneNum <= SCENE_GANON_TOU)) ||
|
||||
((play->sceneNum >= SCENE_ENTRA) && (play->sceneNum <= SCENE_SHRINE_R))) {
|
||||
if (((play->sceneNum >= SCENE_HYRULE_FIELD) && (play->sceneNum <= SCENE_OUTSIDE_GANONS_CASTLE)) ||
|
||||
((play->sceneNum >= SCENE_MARKET_ENTRANCE_DAY) && (play->sceneNum <= SCENE_TEMPLE_OF_TIME_EXTERIOR_RUINS))) {
|
||||
if (gSaveContext.cutsceneIndex < 0xFFF0) {
|
||||
gSaveContext.worldMapAreaData |= gBitFlags[gSaveContext.worldMapArea];
|
||||
osSyncPrintf("000 area_arrival=%x (%d)\n", gSaveContext.worldMapAreaData,
|
||||
|
@ -619,7 +619,7 @@ s32 AudioLoad_SyncInitSeqPlayerInternal(s32 playerIdx, s32 seqId, s32 arg2) {
|
||||
// this is not noticeable if the sequence is authentic, since the "Boss Battle"
|
||||
// sequence begins with some silence
|
||||
if (gPlayState != NULL &&
|
||||
gPlayState->sceneNum == SCENE_BDAN_BOSS &&
|
||||
gPlayState->sceneNum == SCENE_JABU_JABU_BOSS &&
|
||||
playerIdx == SEQ_PLAYER_BGM_MAIN &&
|
||||
seqId != NA_BGM_BOSS) {
|
||||
|
||||
|
@ -834,53 +834,53 @@ void TitleCard_InitPlaceName(PlayState* play, TitleCardContext* titleCtx, void*
|
||||
SceneTableEntry* loadedScene = play->loadedScene;
|
||||
// size_t size = loadedScene->titleFile.vromEnd - loadedScene->titleFile.vromStart;
|
||||
switch (play->sceneNum) {
|
||||
case SCENE_YDAN:
|
||||
case SCENE_DEKU_TREE:
|
||||
texture = gDekuTreeTitleCardENGTex;
|
||||
break;
|
||||
case SCENE_DDAN:
|
||||
case SCENE_DODONGOS_CAVERN:
|
||||
texture = gDodongosCavernTitleCardENGTex;
|
||||
break;
|
||||
case SCENE_BDAN:
|
||||
case SCENE_JABU_JABU:
|
||||
texture = gJabuJabuTitleCardENGTex;
|
||||
break;
|
||||
case SCENE_BMORI1:
|
||||
case SCENE_FOREST_TEMPLE:
|
||||
texture = gForestTempleTitleCardENGTex;
|
||||
break;
|
||||
case SCENE_HIDAN:
|
||||
case SCENE_FIRE_TEMPLE:
|
||||
texture = gFireTempleTitleCardENGTex;
|
||||
break;
|
||||
case SCENE_MIZUSIN:
|
||||
case SCENE_WATER_TEMPLE:
|
||||
texture = gWaterTempleTitleCardENGTex;
|
||||
break;
|
||||
case SCENE_JYASINZOU:
|
||||
case SCENE_SPIRIT_TEMPLE:
|
||||
texture = gSpiritTempleTitleCardENGTex;
|
||||
break;
|
||||
case SCENE_HAKADAN:
|
||||
case SCENE_SHADOW_TEMPLE:
|
||||
texture = gShadowTempleTitleCardENGTex;
|
||||
break;
|
||||
case SCENE_HAKADANCH:
|
||||
case SCENE_BOTTOM_OF_THE_WELL:
|
||||
texture = gBottomOfTheWellTitleCardENGTex;
|
||||
break;
|
||||
case SCENE_ICE_DOUKUTO:
|
||||
case SCENE_ICE_CAVERN:
|
||||
texture = gIceCavernTitleCardENGTex;
|
||||
break;
|
||||
case SCENE_MEN:
|
||||
case SCENE_GERUDO_TRAINING_GROUND:
|
||||
texture = gGERudoTrainingGroundTitleCardENGTex;
|
||||
break;
|
||||
case SCENE_GERUDOWAY:
|
||||
case SCENE_THIEVES_HIDEOUT:
|
||||
texture = gThievesHideoutTitleCardENGTex;
|
||||
break;
|
||||
case SCENE_GANON_TOU:
|
||||
case SCENE_OUTSIDE_GANONS_CASTLE:
|
||||
texture = gGanonsCastleTitleCardENGTex;
|
||||
break;
|
||||
case SCENE_GANONTIKA:
|
||||
case SCENE_INSIDE_GANONS_CASTLE:
|
||||
texture = gInsideGanonsCastleTitleCardENGTex;
|
||||
break;
|
||||
case SCENE_TAKARAYA:
|
||||
case SCENE_TREASURE_BOX_SHOP:
|
||||
texture = gTreasureBoxShopTitleCardENGTex;
|
||||
break;
|
||||
case SCENE_MARKET_ALLEY:
|
||||
case SCENE_MARKET_ALLEY_N:
|
||||
case SCENE_BACK_ALLEY_DAY:
|
||||
case SCENE_BACK_ALLEY_NIGHT:
|
||||
texture = gBackAlleyTitleCardENGTex;
|
||||
break;
|
||||
case SCENE_MARKET_DAY:
|
||||
@ -888,130 +888,130 @@ void TitleCard_InitPlaceName(PlayState* play, TitleCardContext* titleCtx, void*
|
||||
case SCENE_MARKET_RUINS:
|
||||
texture = gMarketTitleCardENGTex;
|
||||
break;
|
||||
case SCENE_SHOP1:
|
||||
case SCENE_BAZAAR:
|
||||
texture = gBazaarTitleCardENGTex;
|
||||
break;
|
||||
case SCENE_KOKIRI_SHOP:
|
||||
texture = gKokiriShopTitleCardENGTex;
|
||||
break;
|
||||
case SCENE_GOLON:
|
||||
case SCENE_GORON_SHOP:
|
||||
texture = gGoronShopTitleCardENGTex;
|
||||
break;
|
||||
case SCENE_ZOORA:
|
||||
case SCENE_ZORA_SHOP:
|
||||
texture = gZoraShopTitleCardENGTex;
|
||||
break;
|
||||
case SCENE_NIGHT_SHOP:
|
||||
case SCENE_BOMBCHU_SHOP:
|
||||
texture = gBombchuShopTitleCardENGTex;
|
||||
break;
|
||||
case SCENE_DRAG:
|
||||
case SCENE_MAHOUYA:
|
||||
case SCENE_ALLEY_SHOP:
|
||||
case SCENE_POTION_SHOP_KAKARIKO:
|
||||
case SCENE_POTION_SHOP_GRANNY:
|
||||
case SCENE_POTION_SHOP_MARKET:
|
||||
texture = gPotionShopTitleCardENGTex;
|
||||
break;
|
||||
case SCENE_FACE_SHOP:
|
||||
case SCENE_HAPPY_MASK_SHOP:
|
||||
texture = gHappyMaskShopTitleCardENGTex;
|
||||
break;
|
||||
case SCENE_MALON_STABLE:
|
||||
case SCENE_STABLE:
|
||||
texture = gStableTitleCardENGTex;
|
||||
break;
|
||||
case SCENE_HYLIA_LABO:
|
||||
case SCENE_LAKESIDE_LABORATORY:
|
||||
texture = gLakesideLaboratoryTitleCardENGTex;
|
||||
break;
|
||||
case SCENE_HUT:
|
||||
case SCENE_GRAVEKEEPERS_HUT:
|
||||
texture = gGravekeepersHutTitleCardENGTex;
|
||||
break;
|
||||
case SCENE_DAIYOUSEI_IZUMI:
|
||||
case SCENE_YOUSEI_IZUMI_YOKO:
|
||||
case SCENE_GREAT_FAIRYS_FOUNTAIN_MAGIC:
|
||||
case SCENE_GREAT_FAIRYS_FOUNTAIN_SPELLS:
|
||||
texture = gGreatFairysFountainTitleCardENGTex;
|
||||
break;
|
||||
case SCENE_YOUSEI_IZUMI_TATE:
|
||||
case SCENE_FAIRYS_FOUNTAIN:
|
||||
texture = gFairysFountainTitleCardENGTex;
|
||||
break;
|
||||
case SCENE_HAKAANA_OUKE:
|
||||
case SCENE_ROYAL_FAMILYS_TOMB:
|
||||
texture = gRoyalFamilysTombTitleCardENGTex;
|
||||
break;
|
||||
case SCENE_SYATEKIJYOU:
|
||||
case SCENE_SHOOTING_GALLERY:
|
||||
texture = gShootingGalleryTitleCardENGTex;
|
||||
break;
|
||||
case SCENE_TOKINOMA:
|
||||
case SCENE_TEMPLE_OF_TIME:
|
||||
texture = gTempleOfTimeTitleCardENGTex;
|
||||
break;
|
||||
case SCENE_KENJYANOMA:
|
||||
case SCENE_CHAMBER_OF_THE_SAGES:
|
||||
texture = gChamberOfTheSagesTitleCardENGTex;
|
||||
break;
|
||||
case SCENE_HAIRAL_NIWA:
|
||||
case SCENE_HAIRAL_NIWA_N:
|
||||
case SCENE_NAKANIWA:
|
||||
case SCENE_CASTLE_COURTYARD_GUARDS_DAY:
|
||||
case SCENE_CASTLE_COURTYARD_GUARDS_NIGHT:
|
||||
case SCENE_CASTLE_COURTYARD_ZELDA:
|
||||
case SCENE_HAIRAL_NIWA2:
|
||||
texture = gCastleCourtyardTitleCardENGTex;
|
||||
break;
|
||||
case SCENE_HAKASITARELAY:
|
||||
case SCENE_WINDMILL_AND_DAMPES_GRAVE:
|
||||
texture = gQuestionMarkTitleCardENGTex;
|
||||
break;
|
||||
case SCENE_TURIBORI:
|
||||
case SCENE_FISHING_POND:
|
||||
texture = gFishingPondTitleCardENGTex;
|
||||
break;
|
||||
case SCENE_BOWLING:
|
||||
case SCENE_BOMBCHU_BOWLING_ALLEY:
|
||||
texture = gBombchuBowlingAlleyCardENGTex;
|
||||
break;
|
||||
case SCENE_KINSUTA:
|
||||
case SCENE_HOUSE_OF_SKULLTULA:
|
||||
texture = gHouseOfSkulltulaTitleCardENGTex;
|
||||
break;
|
||||
case SCENE_SPOT00:
|
||||
case SCENE_HYRULE_FIELD:
|
||||
texture = gHyruleFieldTitleCardENGTex;
|
||||
break;
|
||||
case SCENE_SPOT01:
|
||||
case SCENE_KAKARIKO_VILLAGE:
|
||||
texture = gKakarikoVillageTitleCardENGTex;
|
||||
break;
|
||||
case SCENE_SPOT02:
|
||||
case SCENE_GRAVEYARD:
|
||||
texture = gGraveyardTitleCardENGTex;
|
||||
break;
|
||||
case SCENE_SPOT03:
|
||||
case SCENE_ZORAS_RIVER:
|
||||
texture = gZorasRiverTitleCardENGTex;
|
||||
break;
|
||||
case SCENE_SPOT04:
|
||||
case SCENE_KOKIRI_FOREST:
|
||||
texture = gKokiriForestTitleCardENGTex;
|
||||
break;
|
||||
case SCENE_SPOT05:
|
||||
case SCENE_SACRED_FOREST_MEADOW:
|
||||
texture = gSacredForestMeadowTitleCardENGTex;
|
||||
break;
|
||||
case SCENE_SPOT06:
|
||||
case SCENE_LAKE_HYLIA:
|
||||
texture = gLakeHyliaTitleCardENGTex;
|
||||
break;
|
||||
case SCENE_SPOT07:
|
||||
case SCENE_ZORAS_DOMAIN:
|
||||
texture = gZorasDomainTitleCardENGTex;
|
||||
break;
|
||||
case SCENE_SPOT08:
|
||||
case SCENE_ZORAS_FOUNTAIN:
|
||||
texture = gZorasFountainTitleCardENGTex;
|
||||
break;
|
||||
case SCENE_SPOT09:
|
||||
case SCENE_GERUDO_VALLEY:
|
||||
texture = gGERudoValleyTitleCardENGTex;
|
||||
break;
|
||||
case SCENE_SPOT10:
|
||||
case SCENE_LOST_WOODS:
|
||||
texture = gLostWoodsTitleCardENGTex;
|
||||
break;
|
||||
case SCENE_SPOT11:
|
||||
case SCENE_DESERT_COLOSSUS:
|
||||
texture = gDesertColossusTitleCardENGTex;
|
||||
break;
|
||||
case SCENE_SPOT12:
|
||||
case SCENE_GERUDOS_FORTRESS:
|
||||
texture = gGERudosFortressTitleCardENGTex;
|
||||
break;
|
||||
case SCENE_SPOT13:
|
||||
case SCENE_HAUNTED_WASTELAND:
|
||||
texture = gHauntedWastelandTitleCardENGTex;
|
||||
break;
|
||||
case SCENE_SPOT15:
|
||||
case SCENE_HYRULE_CASTLE:
|
||||
texture = gHyruleCastleTitleCardENGTex;
|
||||
break;
|
||||
case SCENE_SPOT16:
|
||||
case SCENE_DEATH_MOUNTAIN_TRAIL:
|
||||
texture = gDeathMountainTrailTitleCardENGTex;
|
||||
break;
|
||||
case SCENE_SPOT17:
|
||||
case SCENE_DEATH_MOUNTAIN_CRATER:
|
||||
texture = gDeathMountainCraterTitleCardENGTex;
|
||||
break;
|
||||
case SCENE_SPOT18:
|
||||
case SCENE_GORON_CITY:
|
||||
texture = gGoronCityTitleCardENGTex;
|
||||
break;
|
||||
case SCENE_SPOT20:
|
||||
case SCENE_LON_LON_RANCH:
|
||||
texture = gLonLonRanchTitleCardENGTex;
|
||||
break;
|
||||
default:
|
||||
@ -1200,7 +1200,7 @@ void Actor_Init(Actor* actor, PlayState* play) {
|
||||
if (CVarGetInteger("gDisableDrawDistance", 0) != 0 && actor->id != ACTOR_EN_TORCH2 && actor->id != ACTOR_EN_BLKOBJ // Extra check for Dark Link and his room
|
||||
&& actor->id != ACTOR_EN_HORSE // Check for Epona, else if we call her she will spawn at the other side of the map + we can hear her during the title screen sequence
|
||||
&& actor->id != ACTOR_EN_HORSE_GANON && actor->id != ACTOR_EN_HORSE_ZELDA // check for Zelda's and Ganondorf's horses that will always be scene during cinematic whith camera paning
|
||||
&& (play->sceneNum != SCENE_DDAN && actor->id != ACTOR_EN_ZF)) { // Check for DC and Lizalfos for the case where the miniboss music would still play under certains conditions and changing room
|
||||
&& (play->sceneNum != SCENE_DODONGOS_CAVERN && actor->id != ACTOR_EN_ZF)) { // Check for DC and Lizalfos for the case where the miniboss music would still play under certains conditions and changing room
|
||||
actor->uncullZoneForward = 32767.0f;
|
||||
actor->uncullZoneScale = 32767.0f;
|
||||
actor->uncullZoneDownward = 32767.0f;
|
||||
@ -2843,7 +2843,7 @@ s32 func_800314D4(PlayState* play, Actor* actor, Vec3f* arg2, f32 arg3) {
|
||||
if (CVarGetInteger("gDisableDrawDistance", 0) != 0 && actor->id != ACTOR_EN_TORCH2 && actor->id != ACTOR_EN_BLKOBJ // Extra check for Dark Link and his room
|
||||
&& actor->id != ACTOR_EN_HORSE // Check for Epona, else if we call her she will spawn at the other side of the map + we can hear her during the title screen sequence
|
||||
&& actor->id != ACTOR_EN_HORSE_GANON && actor->id != ACTOR_EN_HORSE_ZELDA // check for Zelda's and Ganondorf's horses that will always be scene during cinematic whith camera paning
|
||||
&& (play->sceneNum != SCENE_DDAN && actor->id != ACTOR_EN_ZF)) { // Check for DC and Lizalfos for the case where the miniboss music would still play under certains conditions and changing room
|
||||
&& (play->sceneNum != SCENE_DODONGOS_CAVERN && actor->id != ACTOR_EN_ZF)) { // Check for DC and Lizalfos for the case where the miniboss music would still play under certains conditions and changing room
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -3740,69 +3740,69 @@ void Actor_SetTextWithPrefix(PlayState* play, Actor* actor, s16 baseTextId) {
|
||||
s16 prefix;
|
||||
|
||||
switch (play->sceneNum) {
|
||||
case SCENE_YDAN:
|
||||
case SCENE_YDAN_BOSS:
|
||||
case SCENE_MORIBOSSROOM:
|
||||
case SCENE_KOKIRI_HOME:
|
||||
case SCENE_KOKIRI_HOME3:
|
||||
case SCENE_KOKIRI_HOME4:
|
||||
case SCENE_KOKIRI_HOME5:
|
||||
case SCENE_DEKU_TREE:
|
||||
case SCENE_DEKU_TREE_BOSS:
|
||||
case SCENE_FOREST_TEMPLE_BOSS:
|
||||
case SCENE_KNOW_IT_ALL_BROS_HOUSE:
|
||||
case SCENE_TWINS_HOUSE:
|
||||
case SCENE_MIDOS_HOUSE:
|
||||
case SCENE_SARIAS_HOUSE:
|
||||
case SCENE_KOKIRI_SHOP:
|
||||
case SCENE_LINK_HOME:
|
||||
case SCENE_SPOT04:
|
||||
case SCENE_SPOT05:
|
||||
case SCENE_SPOT10:
|
||||
case SCENE_LINKS_HOUSE:
|
||||
case SCENE_KOKIRI_FOREST:
|
||||
case SCENE_SACRED_FOREST_MEADOW:
|
||||
case SCENE_LOST_WOODS:
|
||||
case 112:
|
||||
prefix = 0x1000;
|
||||
break;
|
||||
case SCENE_MALON_STABLE:
|
||||
case SCENE_SPOT00:
|
||||
case SCENE_SPOT20:
|
||||
case SCENE_STABLE:
|
||||
case SCENE_HYRULE_FIELD:
|
||||
case SCENE_LON_LON_RANCH:
|
||||
prefix = 0x2000;
|
||||
break;
|
||||
case SCENE_HIDAN:
|
||||
case SCENE_DDAN_BOSS:
|
||||
case SCENE_FIRE_BS:
|
||||
case SCENE_SPOT16:
|
||||
case SCENE_SPOT17:
|
||||
case SCENE_SPOT18:
|
||||
case SCENE_FIRE_TEMPLE:
|
||||
case SCENE_DODONGOS_CAVERN_BOSS:
|
||||
case SCENE_FIRE_TEMPLE_BOSS:
|
||||
case SCENE_DEATH_MOUNTAIN_TRAIL:
|
||||
case SCENE_DEATH_MOUNTAIN_CRATER:
|
||||
case SCENE_GORON_CITY:
|
||||
prefix = 0x3000;
|
||||
break;
|
||||
case SCENE_BDAN:
|
||||
case SCENE_BDAN_BOSS:
|
||||
case SCENE_SPOT03:
|
||||
case SCENE_SPOT07:
|
||||
case SCENE_SPOT08:
|
||||
case SCENE_JABU_JABU:
|
||||
case SCENE_JABU_JABU_BOSS:
|
||||
case SCENE_ZORAS_RIVER:
|
||||
case SCENE_ZORAS_DOMAIN:
|
||||
case SCENE_ZORAS_FOUNTAIN:
|
||||
prefix = 0x4000;
|
||||
break;
|
||||
case SCENE_HAKADAN:
|
||||
case SCENE_HAKADAN_BS:
|
||||
case SCENE_KAKARIKO:
|
||||
case SCENE_KAKARIKO3:
|
||||
case SCENE_IMPA:
|
||||
case SCENE_HUT:
|
||||
case SCENE_HAKAANA:
|
||||
case SCENE_HAKASITARELAY:
|
||||
case SCENE_SPOT01:
|
||||
case SCENE_SPOT02:
|
||||
case SCENE_SHADOW_TEMPLE:
|
||||
case SCENE_SHADOW_TEMPLE_BOSS:
|
||||
case SCENE_KAKARIKO_CENTER_GUEST_HOUSE:
|
||||
case SCENE_BACK_ALLEY_HOUSE:
|
||||
case SCENE_DOG_LADY_HOUSE:
|
||||
case SCENE_GRAVEKEEPERS_HUT:
|
||||
case SCENE_REDEAD_GRAVE:
|
||||
case SCENE_WINDMILL_AND_DAMPES_GRAVE:
|
||||
case SCENE_KAKARIKO_VILLAGE:
|
||||
case SCENE_GRAVEYARD:
|
||||
prefix = 0x5000;
|
||||
break;
|
||||
case SCENE_JYASINZOU:
|
||||
case SCENE_JYASINBOSS:
|
||||
case SCENE_LABO:
|
||||
case SCENE_TENT:
|
||||
case SCENE_SPOT06:
|
||||
case SCENE_SPOT09:
|
||||
case SCENE_SPOT11:
|
||||
case SCENE_SPIRIT_TEMPLE:
|
||||
case SCENE_SPIRIT_TEMPLE_BOSS:
|
||||
case SCENE_IMPAS_HOUSE:
|
||||
case SCENE_CARPENTERS_TENT:
|
||||
case SCENE_LAKE_HYLIA:
|
||||
case SCENE_GERUDO_VALLEY:
|
||||
case SCENE_DESERT_COLOSSUS:
|
||||
prefix = 0x6000;
|
||||
break;
|
||||
case SCENE_ENTRA:
|
||||
case SCENE_MARKET_ALLEY:
|
||||
case SCENE_MARKET_ALLEY_N:
|
||||
case SCENE_MARKET_ENTRANCE_DAY:
|
||||
case SCENE_BACK_ALLEY_DAY:
|
||||
case SCENE_BACK_ALLEY_NIGHT:
|
||||
case SCENE_MARKET_DAY:
|
||||
case SCENE_MARKET_NIGHT:
|
||||
case SCENE_MARKET_RUINS:
|
||||
case SCENE_SPOT15:
|
||||
case SCENE_HYRULE_CASTLE:
|
||||
prefix = 0x7000;
|
||||
break;
|
||||
default:
|
||||
@ -5096,7 +5096,7 @@ u32 func_80035BFC(PlayState* play, s16 arg1) {
|
||||
}
|
||||
break;
|
||||
case 16:
|
||||
if (play->sceneNum == SCENE_SPOT15) {
|
||||
if (play->sceneNum == SCENE_HYRULE_CASTLE) {
|
||||
retTextId = 0x7002;
|
||||
} else if (Flags_GetInfTable(INFTABLE_6A)) {
|
||||
retTextId = 0x7004;
|
||||
|
@ -1441,9 +1441,11 @@ u32 BgCheck_InitializeStaticLookup(CollisionContext* colCtx, PlayState* play, St
|
||||
*/
|
||||
s32 BgCheck_IsSpotScene(PlayState* play) {
|
||||
static s16 spotScenes[] = {
|
||||
SCENE_SPOT00, SCENE_SPOT01, SCENE_SPOT02, SCENE_SPOT03, SCENE_SPOT04, SCENE_SPOT05, SCENE_SPOT06,
|
||||
SCENE_SPOT07, SCENE_SPOT08, SCENE_SPOT09, SCENE_SPOT10, SCENE_SPOT11, SCENE_SPOT12, SCENE_SPOT13,
|
||||
SCENE_SPOT15, SCENE_SPOT16, SCENE_SPOT17, SCENE_SPOT18, SCENE_SPOT20,
|
||||
SCENE_HYRULE_FIELD, SCENE_KAKARIKO_VILLAGE, SCENE_GRAVEYARD, SCENE_ZORAS_RIVER,
|
||||
SCENE_KOKIRI_FOREST, SCENE_SACRED_FOREST_MEADOW, SCENE_LAKE_HYLIA, SCENE_ZORAS_DOMAIN,
|
||||
SCENE_ZORAS_FOUNTAIN, SCENE_GERUDO_VALLEY, SCENE_LOST_WOODS, SCENE_DESERT_COLOSSUS,
|
||||
SCENE_GERUDOS_FORTRESS, SCENE_HAUNTED_WASTELAND, SCENE_HYRULE_CASTLE, SCENE_DEATH_MOUNTAIN_TRAIL,
|
||||
SCENE_DEATH_MOUNTAIN_CRATER, SCENE_GORON_CITY, SCENE_LON_LON_RANCH,
|
||||
};
|
||||
s16* i;
|
||||
|
||||
@ -1465,9 +1467,10 @@ typedef struct {
|
||||
*/
|
||||
s32 BgCheck_TryGetCustomMemsize(s32 sceneId, u32* memSize) {
|
||||
static BgCheckSceneMemEntry sceneMemList[] = {
|
||||
{ SCENE_SPOT00, 0xB798 }, { SCENE_GANON_FINAL, 0x78C8 }, { SCENE_GANON_DEMO, 0x70C8 },
|
||||
{ SCENE_JYASINBOSS, 0xACC8 }, { SCENE_KENJYANOMA, 0x70C8 }, { SCENE_JYASINZOU, 0x16CC8 },
|
||||
{ SCENE_HIDAN, 0x198C8 }, { SCENE_GANON_BOSS, 0x84C8 },
|
||||
{ SCENE_HYRULE_FIELD, 0xB798 }, { SCENE_GANONS_TOWER_COLLAPSE_EXTERIOR, 0x78C8 },
|
||||
{ SCENE_GANON_BOSS, 0x70C8 }, { SCENE_SPIRIT_TEMPLE_BOSS, 0xACC8 },
|
||||
{ SCENE_CHAMBER_OF_THE_SAGES, 0x70C8 }, { SCENE_SPIRIT_TEMPLE, 0x16CC8 },
|
||||
{ SCENE_FIRE_TEMPLE, 0x198C8 }, { SCENE_GANONDORF_BOSS, 0x84C8 },
|
||||
};
|
||||
s32 i;
|
||||
|
||||
@ -1504,8 +1507,8 @@ typedef struct {
|
||||
*/
|
||||
void BgCheck_Allocate(CollisionContext* colCtx, PlayState* play, CollisionHeader* colHeader) {
|
||||
static BgCheckSceneSubdivisionEntry sceneSubdivisionList[] = {
|
||||
{ SCENE_HAKADAN, { 23, 7, 14 }, -1 },
|
||||
{ SCENE_BMORI1, { 38, 1, 38 }, -1 },
|
||||
{ SCENE_SHADOW_TEMPLE, { 23, 7, 14 }, -1 },
|
||||
{ SCENE_FOREST_TEMPLE, { 38, 1, 38 }, -1 },
|
||||
};
|
||||
u32 tblMax;
|
||||
u32 memSize;
|
||||
@ -1523,7 +1526,7 @@ void BgCheck_Allocate(CollisionContext* colCtx, PlayState* play, CollisionHeader
|
||||
osSyncPrintf("/*---------------- BGCheck バッファーメモリサイズ -------------*/\n");
|
||||
|
||||
if (YREG(15) == 0x10 || YREG(15) == 0x20 || YREG(15) == 0x30 || YREG(15) == 0x40) {
|
||||
if (play->sceneNum == SCENE_MALON_STABLE) {
|
||||
if (play->sceneNum == SCENE_STABLE) {
|
||||
// "/* BGCheck LonLon Size %dbyte */\n"
|
||||
osSyncPrintf("/* BGCheck LonLonサイズ %dbyte */\n", 0x3520);
|
||||
colCtx->memSize = 0x3520;
|
||||
@ -4208,7 +4211,7 @@ f32 zdWaterBoxMaxZ = -967.0f;
|
||||
*/
|
||||
s32 WaterBox_GetSurface1(PlayState* play, CollisionContext* colCtx, f32 x, f32 z, f32* ySurface,
|
||||
WaterBox** outWaterBox) {
|
||||
if (play->sceneNum == SCENE_SPOT07) {
|
||||
if (play->sceneNum == SCENE_ZORAS_DOMAIN) {
|
||||
if (zdWaterBoxMinX < x && x < zdWaterBoxMaxX && zdWaterBoxMinY < *ySurface && *ySurface < zdWaterBoxMaxY &&
|
||||
zdWaterBoxMinZ < z && z < zdWaterBoxMaxZ) {
|
||||
*outWaterBox = &zdWaterBox;
|
||||
|
@ -6631,7 +6631,7 @@ s32 Camera_Special7(Camera* camera) {
|
||||
|
||||
yOffset = Player_GetHeight(camera->player);
|
||||
if (camera->animState == 0) {
|
||||
if (camera->play->sceneNum == SCENE_JYASINZOU) {
|
||||
if (camera->play->sceneNum == SCENE_SPIRIT_TEMPLE) {
|
||||
// Spirit Temple
|
||||
spec7->idx = 3;
|
||||
} else if (playerPosRot->pos.x < 1500.0f) {
|
||||
@ -7326,7 +7326,7 @@ s32 Camera_UpdateWater(Camera* camera) {
|
||||
if (camera->waterDistortionTimer > 0) {
|
||||
camera->waterDistortionTimer--;
|
||||
camera->distortionFlags |= DISTORTION_UNDERWATER_STRONG;
|
||||
} else if (camera->play->sceneNum == SCENE_TURIBORI) {
|
||||
} else if (camera->play->sceneNum == SCENE_FISHING_POND) {
|
||||
camera->distortionFlags |= DISTORTION_UNDERWATER_FISHING;
|
||||
} else {
|
||||
camera->distortionFlags |= DISTORTION_UNDERWATER_WEAK;
|
||||
@ -7677,7 +7677,7 @@ Vec3s Camera_Update(Camera* camera) {
|
||||
|
||||
Camera_UpdateDistortion(camera);
|
||||
|
||||
if ((camera->play->sceneNum == SCENE_SPOT00) && (camera->fov < 59.0f)) {
|
||||
if ((camera->play->sceneNum == SCENE_HYRULE_FIELD) && (camera->fov < 59.0f)) {
|
||||
View_SetScale(&camera->play->view, 0.79f);
|
||||
} else {
|
||||
View_SetScale(&camera->play->view, 1.0f);
|
||||
@ -7921,7 +7921,7 @@ s16 Camera_ChangeSettingFlags(Camera* camera, s16 setting, s16 flags) {
|
||||
}
|
||||
}
|
||||
if (((setting == CAM_SET_MEADOW_BIRDS_EYE) || (setting == CAM_SET_MEADOW_UNUSED)) && LINK_IS_ADULT &&
|
||||
(camera->play->sceneNum == SCENE_SPOT05)) {
|
||||
(camera->play->sceneNum == SCENE_SACRED_FOREST_MEADOW)) {
|
||||
camera->unk_14A |= 0x10;
|
||||
return -5;
|
||||
}
|
||||
|
@ -501,7 +501,7 @@ void Cutscene_Command_Terminator(PlayState* play, CutsceneContext* csCtx, CsCmdB
|
||||
bool debugCsSkip = (CHECK_BTN_ALL(play->state.input[0].press.button, BTN_START) &&
|
||||
(gSaveContext.fileNum != 0xFEDC) && CVarGetInteger("gDebugEnabled", 0));
|
||||
|
||||
if ((gSaveContext.gameMode != 0) && (gSaveContext.gameMode != 3) && (play->sceneNum != SCENE_SPOT00) &&
|
||||
if ((gSaveContext.gameMode != 0) && (gSaveContext.gameMode != 3) && (play->sceneNum != SCENE_HYRULE_FIELD) &&
|
||||
(csCtx->frames > 20) &&
|
||||
(CHECK_BTN_ALL(play->state.input[0].press.button, BTN_A) ||
|
||||
CHECK_BTN_ALL(play->state.input[0].press.button, BTN_B) ||
|
||||
@ -1322,7 +1322,7 @@ void Cutscene_Command_TransitionFX(PlayState* play, CutsceneContext* csCtx, CsCm
|
||||
(gSaveContext.entranceIndex == 0x0371))) {
|
||||
Audio_PlaySoundGeneral(NA_SE_EV_WHITE_OUT, &D_801333D4, 4, &D_801333E0, &D_801333E0,
|
||||
&D_801333E8);
|
||||
} else if ((temp == 0.0f) && (play->sceneNum == SCENE_GANONTIKA)) {
|
||||
} else if ((temp == 0.0f) && (play->sceneNum == SCENE_INSIDE_GANONS_CASTLE)) {
|
||||
func_800788CC(NA_SE_EV_WHITE_OUT);
|
||||
}
|
||||
} else {
|
||||
@ -2174,16 +2174,16 @@ void Cutscene_HandleConditionalTriggers(PlayState* play) {
|
||||
}
|
||||
} else if (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) &&
|
||||
(gEntranceTable[((void)0, gSaveContext.entranceIndex)].scene == SCENE_TOKINOMA)) {
|
||||
(gEntranceTable[((void)0, gSaveContext.entranceIndex)].scene == SCENE_TEMPLE_OF_TIME)) {
|
||||
if (!gSaveContext.n64ddFlag) {
|
||||
Flags_SetEventChkInf(EVENTCHKINF_RETURNED_TO_TEMPLE_OF_TIME_WITH_ALL_MEDALLIONS);
|
||||
gSaveContext.entranceIndex = 0x0053;
|
||||
gSaveContext.cutsceneIndex = 0xFFF8;
|
||||
}
|
||||
} else if ((!Flags_GetEventChkInf(EVENTCHKINF_WATCHED_GANONS_CASTLE_COLLAPSE_CAUGHT_BY_GERUDO) &&
|
||||
gEntranceTable[((void)0, gSaveContext.entranceIndex)].scene == SCENE_GANON_DEMO) ||
|
||||
gEntranceTable[((void)0, gSaveContext.entranceIndex)].scene == SCENE_GANON_BOSS) ||
|
||||
(bShouldTowerRandoSkip &&
|
||||
gEntranceTable[((void)0, gSaveContext.entranceIndex)].scene == SCENE_GANON_FINAL)) {
|
||||
gEntranceTable[((void)0, gSaveContext.entranceIndex)].scene == SCENE_GANONS_TOWER_COLLAPSE_EXTERIOR)) {
|
||||
Flags_SetEventChkInf(EVENTCHKINF_WATCHED_GANONS_CASTLE_COLLAPSE_CAUGHT_BY_GERUDO);
|
||||
gSaveContext.entranceIndex = 0x0517;
|
||||
// In rando, skip the cutscene for the tower falling down after the escape.
|
||||
|
@ -3,7 +3,7 @@
|
||||
#include <assert.h>
|
||||
|
||||
s32 func_8006CFC0(s32 scene) {
|
||||
s32 validScenes[] = { SCENE_SPOT00, SCENE_SPOT06, SCENE_SPOT09, SCENE_SPOT12, SCENE_SPOT20 };
|
||||
s32 validScenes[] = { SCENE_HYRULE_FIELD, SCENE_LAKE_HYLIA, SCENE_GERUDO_VALLEY, SCENE_GERUDOS_FORTRESS, SCENE_LON_LON_RANCH };
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < ARRAY_COUNT(validScenes); i++) {
|
||||
@ -16,7 +16,7 @@ s32 func_8006CFC0(s32 scene) {
|
||||
}
|
||||
|
||||
void func_8006D074(PlayState* play) {
|
||||
gSaveContext.horseData.scene = SCENE_SPOT00;
|
||||
gSaveContext.horseData.scene = SCENE_HYRULE_FIELD;
|
||||
gSaveContext.horseData.pos.x = -1840;
|
||||
gSaveContext.horseData.pos.y = 72;
|
||||
gSaveContext.horseData.pos.z = 5497;
|
||||
@ -24,8 +24,8 @@ void func_8006D074(PlayState* play) {
|
||||
}
|
||||
|
||||
void func_8006D0AC(PlayState* play) {
|
||||
if (gSaveContext.horseData.scene == SCENE_SPOT06) {
|
||||
gSaveContext.horseData.scene = SCENE_SPOT06;
|
||||
if (gSaveContext.horseData.scene == SCENE_LAKE_HYLIA) {
|
||||
gSaveContext.horseData.scene = SCENE_LAKE_HYLIA;
|
||||
gSaveContext.horseData.pos.x = -2065;
|
||||
gSaveContext.horseData.pos.y = -863;
|
||||
gSaveContext.horseData.pos.z = 1839;
|
||||
@ -43,9 +43,9 @@ typedef struct {
|
||||
void func_8006D0EC(PlayState* play, Player* player) {
|
||||
s32 i;
|
||||
HorseSpawn horseSpawns[] = {
|
||||
{ SCENE_SPOT00, -460, 100, 6640, 0, 2 }, { SCENE_SPOT06, -1929, -1025, 768, 0, 2 },
|
||||
{ SCENE_SPOT09, 2566, -259, 767, 0, 2 }, { SCENE_SPOT12, -328, 10, 953, 0, 2 },
|
||||
{ SCENE_SPOT20, 928, 0, -2280, 0, 2 },
|
||||
{ SCENE_HYRULE_FIELD, -460, 100, 6640, 0, 2 }, { SCENE_LAKE_HYLIA, -1929, -1025, 768, 0, 2 },
|
||||
{ SCENE_GERUDO_VALLEY, 2566, -259, 767, 0, 2 }, { SCENE_GERUDOS_FORTRESS, -328, 10, 953, 0, 2 },
|
||||
{ SCENE_LON_LON_RANCH, 928, 0, -2280, 0, 2 },
|
||||
};
|
||||
|
||||
if ((AREG(6) != 0) && (Flags_GetEventChkInf(EVENTCHKINF_EPONA_OBTAINED) || (DREG(1) != 0))) {
|
||||
@ -59,10 +59,10 @@ void func_8006D0EC(PlayState* play, Player* player) {
|
||||
func_8002DE74(play, player);
|
||||
gSaveContext.horseData.scene = play->sceneNum;
|
||||
|
||||
if (play->sceneNum == SCENE_SPOT12) {
|
||||
if (play->sceneNum == SCENE_GERUDOS_FORTRESS) {
|
||||
player->rideActor->room = -1;
|
||||
}
|
||||
} else if ((play->sceneNum == SCENE_SPOT12) && (gSaveContext.minigameState == 3)) {
|
||||
} else if ((play->sceneNum == SCENE_GERUDOS_FORTRESS) && (gSaveContext.minigameState == 3)) {
|
||||
Actor* horseActor;
|
||||
gSaveContext.minigameState = 0;
|
||||
horseActor =
|
||||
@ -85,7 +85,7 @@ void func_8006D0EC(PlayState* play, Player* player) {
|
||||
gSaveContext.horseData.pos.x, gSaveContext.horseData.pos.y,
|
||||
gSaveContext.horseData.pos.z, 0, gSaveContext.horseData.angle, 0, 1, true);
|
||||
assert(horseActor != NULL);
|
||||
if (play->sceneNum == SCENE_SPOT12) {
|
||||
if (play->sceneNum == SCENE_GERUDOS_FORTRESS) {
|
||||
horseActor->room = -1;
|
||||
}
|
||||
} else {
|
||||
@ -95,7 +95,7 @@ void func_8006D0EC(PlayState* play, Player* player) {
|
||||
osSyncPrintf(VT_RST);
|
||||
func_8006D074(play);
|
||||
}
|
||||
} else if ((play->sceneNum == SCENE_SPOT20) && !Flags_GetEventChkInf(EVENTCHKINF_EPONA_OBTAINED) && (DREG(1) == 0)) {
|
||||
} else if ((play->sceneNum == SCENE_LON_LON_RANCH) && !Flags_GetEventChkInf(EVENTCHKINF_EPONA_OBTAINED) && (DREG(1) == 0)) {
|
||||
Actor* horseActor =
|
||||
Actor_Spawn(&play->actorCtx, play, ACTOR_EN_HORSE, 0.0f, 0.0f, -500.0f, 0, 0, 0, 1, true);
|
||||
assert(horseActor != NULL);
|
||||
@ -107,7 +107,7 @@ void func_8006D0EC(PlayState* play, Player* player) {
|
||||
Actor_Spawn(&play->actorCtx, play, ACTOR_EN_HORSE, horseSpawn->pos.x, horseSpawn->pos.y,
|
||||
horseSpawn->pos.z, 0, horseSpawn->angle, 0, horseSpawn->type, true);
|
||||
assert(horseActor != NULL);
|
||||
if (play->sceneNum == SCENE_SPOT12) {
|
||||
if (play->sceneNum == SCENE_GERUDOS_FORTRESS) {
|
||||
horseActor->room = -1;
|
||||
}
|
||||
|
||||
@ -115,7 +115,7 @@ void func_8006D0EC(PlayState* play, Player* player) {
|
||||
}
|
||||
}
|
||||
} else if (!Flags_GetEventChkInf(EVENTCHKINF_EPONA_OBTAINED)) {
|
||||
if ((DREG(1) == 0) && (play->sceneNum == SCENE_SOUKO) && !IS_DAY) {
|
||||
if ((DREG(1) == 0) && (play->sceneNum == SCENE_LON_LON_BUILDINGS) && !IS_DAY) {
|
||||
Actor_Spawn(&play->actorCtx, play, ACTOR_EN_HORSE, 0.0f, 0.0f, -60.0f, 0, 0x7360, 0, 1, true);
|
||||
}
|
||||
}
|
||||
@ -161,7 +161,7 @@ void func_8006D684(PlayState* play, Player* player) {
|
||||
Actor_MountHorse(play, player, player->rideActor);
|
||||
func_8002DE74(play, player);
|
||||
gSaveContext.horseData.scene = play->sceneNum;
|
||||
} else if ((play->sceneNum == SCENE_SPOT20) && ((gSaveContext.eventInf[0] & 0xF) == 6) &&
|
||||
} else if ((play->sceneNum == SCENE_LON_LON_RANCH) && ((gSaveContext.eventInf[0] & 0xF) == 6) &&
|
||||
(Flags_GetEventChkInf(EVENTCHKINF_EPONA_OBTAINED) == 0) && (DREG(1) == 0)) {
|
||||
player->rideActor =
|
||||
Actor_Spawn(&play->actorCtx, play, ACTOR_EN_HORSE, 894.0f, 0.0f, -2084.0f, 0, -0x7FFF, 0, 5, true);
|
||||
@ -171,22 +171,26 @@ void func_8006D684(PlayState* play, Player* player) {
|
||||
func_8002DE74(play, player);
|
||||
gSaveContext.horseData.scene = play->sceneNum;
|
||||
|
||||
if (play->sceneNum == SCENE_SPOT12) {
|
||||
if (play->sceneNum == SCENE_GERUDOS_FORTRESS) {
|
||||
player->rideActor->room = -1;
|
||||
}
|
||||
} else {
|
||||
static struct_8011F9B8 D_8011F9B8[] = {
|
||||
{ 93, 0xFFF0, 0x0E10, 0x0585, 0x0168, 0x8001, 8 }, { 99, 0xFFF0, 0xFF06, 0x0001, 0xF9D4, 0x4000, 6 },
|
||||
{ 99, 0xFFF1, 0x0000, 0x0000, 0x0000, 0x0000, 5 }, { 99, 0xFFF5, 0x0000, 0x0000, 0x0000, 0x0000, 7 },
|
||||
{ 81, 0xFFF3, 0xF46F, 0x0139, 0x1E14, 0x0000, 7 }, { 81, 0xFFF4, 0xF894, 0x0139, 0x1B67, 0x0000, 7 },
|
||||
{ 81, 0xFFF5, 0xF035, 0x0139, 0x1B15, 0x0000, 7 }, { 81, 0xFFF6, 0xF035, 0x0139, 0x1B15, 0x0000, 7 },
|
||||
{ SCENE_GERUDOS_FORTRESS, 0xFFF0, { 3600, 1413, 360 }, 0x8001, 8 },
|
||||
{ SCENE_LON_LON_RANCH, 0xFFF0, { -250, 1, -1580 }, 0x4000, 6 },
|
||||
{ SCENE_LON_LON_RANCH, 0xFFF1, { 0, 0, 0 }, 0x0000, 5 },
|
||||
{ SCENE_LON_LON_RANCH, 0xFFF5, { 0, 0, 0 }, 0x0000, 7 },
|
||||
{ SCENE_HYRULE_FIELD, 0xFFF3, { -2961, 313, 7700 }, 0x0000, 7 },
|
||||
{ SCENE_HYRULE_FIELD, 0xFFF4, { -1900, 313, 7015 }, 0x0000, 7 },
|
||||
{ SCENE_HYRULE_FIELD, 0xFFF5, { -4043, 313, 6933 }, 0x0000, 7 },
|
||||
{ SCENE_HYRULE_FIELD, 0xFFF6, { -4043, 313, 6933 }, 0x0000, 7 },
|
||||
};
|
||||
|
||||
for (i = 0; i < ARRAY_COUNT(D_8011F9B8); i++) {
|
||||
if ((play->sceneNum == D_8011F9B8[i].scene) &&
|
||||
(((void)0, gSaveContext.cutsceneIndex) == D_8011F9B8[i].cutsceneIndex)) {
|
||||
if (D_8011F9B8[i].type == 7) {
|
||||
if ((play->sceneNum == 99) && (((void)0, gSaveContext.cutsceneIndex) == 0xFFF1)) {
|
||||
if ((play->sceneNum == SCENE_LON_LON_RANCH) && (((void)0, gSaveContext.cutsceneIndex) == 0xFFF1)) {
|
||||
D_8011F9B8[i].pos.x = player->actor.world.pos.x;
|
||||
D_8011F9B8[i].pos.y = player->actor.world.pos.y;
|
||||
D_8011F9B8[i].pos.z = player->actor.world.pos.z;
|
||||
@ -252,7 +256,7 @@ void func_8006DC68(PlayState* play, Player* player) {
|
||||
((gSaveContext.entranceIndex == 0x028A || gSaveContext.entranceIndex == 0x028E ||
|
||||
gSaveContext.entranceIndex == 0x0292 || gSaveContext.entranceIndex == 0x0476) &&
|
||||
(gSaveContext.respawnFlag == 0)) ||
|
||||
((play->sceneNum == SCENE_SPOT20) && ((gSaveContext.eventInf[0] & 0xF) == 6) &&
|
||||
((play->sceneNum == SCENE_LON_LON_RANCH) && ((gSaveContext.eventInf[0] & 0xF) == 6) &&
|
||||
!Flags_GetEventChkInf(EVENTCHKINF_EPONA_OBTAINED) && (DREG(1) == 0))) {
|
||||
func_8006D684(play, player);
|
||||
} else {
|
||||
|
@ -16,7 +16,7 @@ void KaleidoSetup_Update(PlayState* play) {
|
||||
play->sceneLoadFlag == 0 && play->transitionMode == 0 && gSaveContext.cutsceneIndex < 0xFFF0 &&
|
||||
gSaveContext.nextCutsceneIndex < 0xFFF0 && !Play_InCsMode(play) &&
|
||||
play->shootingGalleryStatus <= 1 && gSaveContext.magicState != 8 && gSaveContext.magicState != 9 &&
|
||||
(play->sceneNum != SCENE_BOWLING || !Flags_GetSwitch(play, 0x38))) {
|
||||
(play->sceneNum != SCENE_BOMBCHU_BOWLING_ALLEY || !Flags_GetSwitch(play, 0x38))) {
|
||||
|
||||
u8 easyPauseBufferEnabled = CVarGetInteger("gCheatEasyPauseBufferEnabled", 0);
|
||||
u8 easyPauseBufferTimer = CVarGetInteger("gCheatEasyPauseBufferTimer", 0);
|
||||
|
@ -2337,7 +2337,7 @@ void Environment_DrawSandstorm(PlayState* play, u8 sandstormState) {
|
||||
|
||||
switch (sandstormState) {
|
||||
case 3:
|
||||
if ((play->sceneNum == SCENE_SPOT13) && (play->roomCtx.curRoom.num == 0)) {
|
||||
if ((play->sceneNum == SCENE_HAUNTED_WASTELAND) && (play->roomCtx.curRoom.num == 0)) {
|
||||
envA1 = 0;
|
||||
primA1 = (play->envCtx.sandstormEnvA > 128) ? 255 : play->envCtx.sandstormEnvA >> 1;
|
||||
} else {
|
||||
|
@ -62,24 +62,24 @@ void Map_SetFloorPalettesData(PlayState* play, s16 floor) {
|
||||
}
|
||||
|
||||
switch (play->sceneNum) {
|
||||
case SCENE_YDAN:
|
||||
case SCENE_DDAN:
|
||||
case SCENE_BDAN:
|
||||
case SCENE_BMORI1:
|
||||
case SCENE_HIDAN:
|
||||
case SCENE_MIZUSIN:
|
||||
case SCENE_JYASINZOU:
|
||||
case SCENE_HAKADAN:
|
||||
case SCENE_HAKADANCH:
|
||||
case SCENE_ICE_DOUKUTO:
|
||||
case SCENE_YDAN_BOSS:
|
||||
case SCENE_DDAN_BOSS:
|
||||
case SCENE_BDAN_BOSS:
|
||||
case SCENE_MORIBOSSROOM:
|
||||
case SCENE_FIRE_BS:
|
||||
case SCENE_MIZUSIN_BS:
|
||||
case SCENE_JYASINBOSS:
|
||||
case SCENE_HAKADAN_BS:
|
||||
case SCENE_DEKU_TREE:
|
||||
case SCENE_DODONGOS_CAVERN:
|
||||
case SCENE_JABU_JABU:
|
||||
case SCENE_FOREST_TEMPLE:
|
||||
case SCENE_FIRE_TEMPLE:
|
||||
case SCENE_WATER_TEMPLE:
|
||||
case SCENE_SPIRIT_TEMPLE:
|
||||
case SCENE_SHADOW_TEMPLE:
|
||||
case SCENE_BOTTOM_OF_THE_WELL:
|
||||
case SCENE_ICE_CAVERN:
|
||||
case SCENE_DEKU_TREE_BOSS:
|
||||
case SCENE_DODONGOS_CAVERN_BOSS:
|
||||
case SCENE_JABU_JABU_BOSS:
|
||||
case SCENE_FOREST_TEMPLE_BOSS:
|
||||
case SCENE_FIRE_TEMPLE_BOSS:
|
||||
case SCENE_WATER_TEMPLE_BOSS:
|
||||
case SCENE_SPIRIT_TEMPLE_BOSS:
|
||||
case SCENE_SHADOW_TEMPLE_BOSS:
|
||||
for (i = 0; i < gMapData->maxPaletteCount[mapIndex]; i++) {
|
||||
room = gMapData->paletteRoom[mapIndex][floor][i];
|
||||
if ((room != 0xFF) && (gSaveContext.sceneFlags[mapIndex].rooms & gBitFlags[room])) {
|
||||
@ -367,42 +367,42 @@ void Map_InitData(PlayState* play, s16 room) {
|
||||
s16 extendedMapIndex;
|
||||
|
||||
switch (play->sceneNum) {
|
||||
case SCENE_SPOT00:
|
||||
case SCENE_SPOT01:
|
||||
case SCENE_SPOT02:
|
||||
case SCENE_SPOT03:
|
||||
case SCENE_SPOT04:
|
||||
case SCENE_SPOT05:
|
||||
case SCENE_SPOT06:
|
||||
case SCENE_SPOT07:
|
||||
case SCENE_SPOT08:
|
||||
case SCENE_SPOT09:
|
||||
case SCENE_SPOT10:
|
||||
case SCENE_SPOT11:
|
||||
case SCENE_SPOT12:
|
||||
case SCENE_SPOT13:
|
||||
case SCENE_SPOT15:
|
||||
case SCENE_SPOT16:
|
||||
case SCENE_SPOT17:
|
||||
case SCENE_SPOT18:
|
||||
case SCENE_SPOT20:
|
||||
case SCENE_GANON_TOU:
|
||||
case SCENE_HYRULE_FIELD:
|
||||
case SCENE_KAKARIKO_VILLAGE:
|
||||
case SCENE_GRAVEYARD:
|
||||
case SCENE_ZORAS_RIVER:
|
||||
case SCENE_KOKIRI_FOREST:
|
||||
case SCENE_SACRED_FOREST_MEADOW:
|
||||
case SCENE_LAKE_HYLIA:
|
||||
case SCENE_ZORAS_DOMAIN:
|
||||
case SCENE_ZORAS_FOUNTAIN:
|
||||
case SCENE_GERUDO_VALLEY:
|
||||
case SCENE_LOST_WOODS:
|
||||
case SCENE_DESERT_COLOSSUS:
|
||||
case SCENE_GERUDOS_FORTRESS:
|
||||
case SCENE_HAUNTED_WASTELAND:
|
||||
case SCENE_HYRULE_CASTLE:
|
||||
case SCENE_DEATH_MOUNTAIN_TRAIL:
|
||||
case SCENE_DEATH_MOUNTAIN_CRATER:
|
||||
case SCENE_GORON_CITY:
|
||||
case SCENE_LON_LON_RANCH:
|
||||
case SCENE_OUTSIDE_GANONS_CASTLE:
|
||||
extendedMapIndex = mapIndex;
|
||||
if (play->sceneNum == SCENE_SPOT02) {
|
||||
if (play->sceneNum == SCENE_GRAVEYARD) {
|
||||
if (CHECK_QUEST_ITEM(QUEST_SONG_NOCTURNE)) {
|
||||
extendedMapIndex = 0x14;
|
||||
}
|
||||
} else if (play->sceneNum == SCENE_SPOT06) {
|
||||
} else if (play->sceneNum == SCENE_LAKE_HYLIA) {
|
||||
if ((LINK_AGE_IN_YEARS == YEARS_ADULT) &&
|
||||
((!gSaveContext.n64ddFlag && !CHECK_QUEST_ITEM(QUEST_MEDALLION_WATER)) ||
|
||||
(gSaveContext.n64ddFlag && !Flags_GetRandomizerInf(RAND_INF_DUNGEONS_DONE_WATER_TEMPLE)))) {
|
||||
extendedMapIndex = 0x15;
|
||||
}
|
||||
} else if (play->sceneNum == SCENE_SPOT09) {
|
||||
} else if (play->sceneNum == SCENE_GERUDO_VALLEY) {
|
||||
if ((LINK_AGE_IN_YEARS == YEARS_ADULT) && !GET_EVENTCHKINF_CARPENTERS_FREE_ALL()) {
|
||||
extendedMapIndex = 0x16;
|
||||
}
|
||||
} else if (play->sceneNum == SCENE_SPOT12) {
|
||||
} else if (play->sceneNum == SCENE_GERUDOS_FORTRESS) {
|
||||
if ((!gSaveContext.n64ddFlag && GET_EVENTCHKINF_CARPENTERS_FREE_ALL()) ||
|
||||
(gSaveContext.n64ddFlag && CHECK_QUEST_ITEM(QUEST_GERUDO_CARD))) {
|
||||
extendedMapIndex = 0x17;
|
||||
@ -423,24 +423,24 @@ void Map_InitData(PlayState* play, s16 room) {
|
||||
|
||||
interfaceCtx->unk_258 = mapIndex;
|
||||
break;
|
||||
case SCENE_YDAN:
|
||||
case SCENE_DDAN:
|
||||
case SCENE_BDAN:
|
||||
case SCENE_BMORI1:
|
||||
case SCENE_HIDAN:
|
||||
case SCENE_MIZUSIN:
|
||||
case SCENE_JYASINZOU:
|
||||
case SCENE_HAKADAN:
|
||||
case SCENE_HAKADANCH:
|
||||
case SCENE_ICE_DOUKUTO:
|
||||
case SCENE_YDAN_BOSS:
|
||||
case SCENE_DDAN_BOSS:
|
||||
case SCENE_BDAN_BOSS:
|
||||
case SCENE_MORIBOSSROOM:
|
||||
case SCENE_FIRE_BS:
|
||||
case SCENE_MIZUSIN_BS:
|
||||
case SCENE_JYASINBOSS:
|
||||
case SCENE_HAKADAN_BS:
|
||||
case SCENE_DEKU_TREE:
|
||||
case SCENE_DODONGOS_CAVERN:
|
||||
case SCENE_JABU_JABU:
|
||||
case SCENE_FOREST_TEMPLE:
|
||||
case SCENE_FIRE_TEMPLE:
|
||||
case SCENE_WATER_TEMPLE:
|
||||
case SCENE_SPIRIT_TEMPLE:
|
||||
case SCENE_SHADOW_TEMPLE:
|
||||
case SCENE_BOTTOM_OF_THE_WELL:
|
||||
case SCENE_ICE_CAVERN:
|
||||
case SCENE_DEKU_TREE_BOSS:
|
||||
case SCENE_DODONGOS_CAVERN_BOSS:
|
||||
case SCENE_JABU_JABU_BOSS:
|
||||
case SCENE_FOREST_TEMPLE_BOSS:
|
||||
case SCENE_FIRE_TEMPLE_BOSS:
|
||||
case SCENE_WATER_TEMPLE_BOSS:
|
||||
case SCENE_SPIRIT_TEMPLE_BOSS:
|
||||
case SCENE_SHADOW_TEMPLE_BOSS:
|
||||
osSyncPrintf(VT_FGCOL(YELLOW));
|
||||
// "Deku Tree Dungeon MAP Texture DMA"
|
||||
osSyncPrintf("デクの樹ダンジョンMAP テクスチャDMA(%x) scene_id_offset=%d VREG(30)=%d\n", room,
|
||||
@ -471,24 +471,24 @@ void Map_InitRoomData(PlayState* play, s16 room) {
|
||||
|
||||
if (room >= 0) {
|
||||
switch (play->sceneNum) {
|
||||
case SCENE_YDAN:
|
||||
case SCENE_DDAN:
|
||||
case SCENE_BDAN:
|
||||
case SCENE_BMORI1:
|
||||
case SCENE_HIDAN:
|
||||
case SCENE_MIZUSIN:
|
||||
case SCENE_JYASINZOU:
|
||||
case SCENE_HAKADAN:
|
||||
case SCENE_HAKADANCH:
|
||||
case SCENE_ICE_DOUKUTO:
|
||||
case SCENE_YDAN_BOSS:
|
||||
case SCENE_DDAN_BOSS:
|
||||
case SCENE_BDAN_BOSS:
|
||||
case SCENE_MORIBOSSROOM:
|
||||
case SCENE_FIRE_BS:
|
||||
case SCENE_MIZUSIN_BS:
|
||||
case SCENE_JYASINBOSS:
|
||||
case SCENE_HAKADAN_BS:
|
||||
case SCENE_DEKU_TREE:
|
||||
case SCENE_DODONGOS_CAVERN:
|
||||
case SCENE_JABU_JABU:
|
||||
case SCENE_FOREST_TEMPLE:
|
||||
case SCENE_FIRE_TEMPLE:
|
||||
case SCENE_WATER_TEMPLE:
|
||||
case SCENE_SPIRIT_TEMPLE:
|
||||
case SCENE_SHADOW_TEMPLE:
|
||||
case SCENE_BOTTOM_OF_THE_WELL:
|
||||
case SCENE_ICE_CAVERN:
|
||||
case SCENE_DEKU_TREE_BOSS:
|
||||
case SCENE_DODONGOS_CAVERN_BOSS:
|
||||
case SCENE_JABU_JABU_BOSS:
|
||||
case SCENE_FOREST_TEMPLE_BOSS:
|
||||
case SCENE_FIRE_TEMPLE_BOSS:
|
||||
case SCENE_WATER_TEMPLE_BOSS:
|
||||
case SCENE_SPIRIT_TEMPLE_BOSS:
|
||||
case SCENE_SHADOW_TEMPLE_BOSS:
|
||||
gSaveContext.sceneFlags[mapIndex].rooms |= gBitFlags[room];
|
||||
osSyncPrintf("ROOM_INF=%d\n", gSaveContext.sceneFlags[mapIndex].rooms);
|
||||
interfaceCtx->mapRoomNum = room;
|
||||
@ -531,27 +531,27 @@ void Map_Init(PlayState* play) {
|
||||
assert(interfaceCtx->mapSegment != NULL);
|
||||
|
||||
switch (play->sceneNum) {
|
||||
case SCENE_SPOT00:
|
||||
case SCENE_SPOT01:
|
||||
case SCENE_SPOT02:
|
||||
case SCENE_SPOT03:
|
||||
case SCENE_SPOT04:
|
||||
case SCENE_SPOT05:
|
||||
case SCENE_SPOT06:
|
||||
case SCENE_SPOT07:
|
||||
case SCENE_SPOT08:
|
||||
case SCENE_SPOT09:
|
||||
case SCENE_SPOT10:
|
||||
case SCENE_SPOT11:
|
||||
case SCENE_SPOT12:
|
||||
case SCENE_SPOT13:
|
||||
case SCENE_SPOT15:
|
||||
case SCENE_SPOT16:
|
||||
case SCENE_SPOT17:
|
||||
case SCENE_SPOT18:
|
||||
case SCENE_SPOT20:
|
||||
case SCENE_GANON_TOU:
|
||||
mapIndex = play->sceneNum - SCENE_SPOT00;
|
||||
case SCENE_HYRULE_FIELD:
|
||||
case SCENE_KAKARIKO_VILLAGE:
|
||||
case SCENE_GRAVEYARD:
|
||||
case SCENE_ZORAS_RIVER:
|
||||
case SCENE_KOKIRI_FOREST:
|
||||
case SCENE_SACRED_FOREST_MEADOW:
|
||||
case SCENE_LAKE_HYLIA:
|
||||
case SCENE_ZORAS_DOMAIN:
|
||||
case SCENE_ZORAS_FOUNTAIN:
|
||||
case SCENE_GERUDO_VALLEY:
|
||||
case SCENE_LOST_WOODS:
|
||||
case SCENE_DESERT_COLOSSUS:
|
||||
case SCENE_GERUDOS_FORTRESS:
|
||||
case SCENE_HAUNTED_WASTELAND:
|
||||
case SCENE_HYRULE_CASTLE:
|
||||
case SCENE_DEATH_MOUNTAIN_TRAIL:
|
||||
case SCENE_DEATH_MOUNTAIN_CRATER:
|
||||
case SCENE_GORON_CITY:
|
||||
case SCENE_LON_LON_RANCH:
|
||||
case SCENE_OUTSIDE_GANONS_CASTLE:
|
||||
mapIndex = play->sceneNum - SCENE_HYRULE_FIELD;
|
||||
R_MAP_INDEX = gSaveContext.mapIndex = mapIndex;
|
||||
R_COMPASS_SCALE_X = gMapData->owCompassInfo[mapIndex][0];
|
||||
R_COMPASS_SCALE_Y = gMapData->owCompassInfo[mapIndex][1];
|
||||
@ -561,35 +561,35 @@ void Map_Init(PlayState* play) {
|
||||
R_OW_MINIMAP_X = gMapData->owMinimapPosX[mapIndex];
|
||||
R_OW_MINIMAP_Y = gMapData->owMinimapPosY[mapIndex];
|
||||
break;
|
||||
case SCENE_YDAN:
|
||||
case SCENE_DDAN:
|
||||
case SCENE_BDAN:
|
||||
case SCENE_BMORI1:
|
||||
case SCENE_HIDAN:
|
||||
case SCENE_MIZUSIN:
|
||||
case SCENE_JYASINZOU:
|
||||
case SCENE_HAKADAN:
|
||||
case SCENE_HAKADANCH:
|
||||
case SCENE_ICE_DOUKUTO:
|
||||
case SCENE_GANON:
|
||||
case SCENE_MEN:
|
||||
case SCENE_GERUDOWAY:
|
||||
case SCENE_GANONTIKA:
|
||||
case SCENE_GANON_SONOGO:
|
||||
case SCENE_GANONTIKA_SONOGO:
|
||||
case SCENE_TAKARAYA:
|
||||
case SCENE_YDAN_BOSS:
|
||||
case SCENE_DDAN_BOSS:
|
||||
case SCENE_BDAN_BOSS:
|
||||
case SCENE_MORIBOSSROOM:
|
||||
case SCENE_FIRE_BS:
|
||||
case SCENE_MIZUSIN_BS:
|
||||
case SCENE_JYASINBOSS:
|
||||
case SCENE_HAKADAN_BS:
|
||||
case SCENE_DEKU_TREE:
|
||||
case SCENE_DODONGOS_CAVERN:
|
||||
case SCENE_JABU_JABU:
|
||||
case SCENE_FOREST_TEMPLE:
|
||||
case SCENE_FIRE_TEMPLE:
|
||||
case SCENE_WATER_TEMPLE:
|
||||
case SCENE_SPIRIT_TEMPLE:
|
||||
case SCENE_SHADOW_TEMPLE:
|
||||
case SCENE_BOTTOM_OF_THE_WELL:
|
||||
case SCENE_ICE_CAVERN:
|
||||
case SCENE_GANONS_TOWER:
|
||||
case SCENE_GERUDO_TRAINING_GROUND:
|
||||
case SCENE_THIEVES_HIDEOUT:
|
||||
case SCENE_INSIDE_GANONS_CASTLE:
|
||||
case SCENE_GANONS_TOWER_COLLAPSE_INTERIOR:
|
||||
case SCENE_INSIDE_GANONS_CASTLE_COLLAPSE:
|
||||
case SCENE_TREASURE_BOX_SHOP:
|
||||
case SCENE_DEKU_TREE_BOSS:
|
||||
case SCENE_DODONGOS_CAVERN_BOSS:
|
||||
case SCENE_JABU_JABU_BOSS:
|
||||
case SCENE_FOREST_TEMPLE_BOSS:
|
||||
case SCENE_FIRE_TEMPLE_BOSS:
|
||||
case SCENE_WATER_TEMPLE_BOSS:
|
||||
case SCENE_SPIRIT_TEMPLE_BOSS:
|
||||
case SCENE_SHADOW_TEMPLE_BOSS:
|
||||
mapIndex =
|
||||
(play->sceneNum >= SCENE_YDAN_BOSS) ? play->sceneNum - SCENE_YDAN_BOSS : play->sceneNum;
|
||||
(play->sceneNum >= SCENE_DEKU_TREE_BOSS) ? play->sceneNum - SCENE_DEKU_TREE_BOSS : play->sceneNum;
|
||||
R_MAP_INDEX = gSaveContext.mapIndex = mapIndex;
|
||||
if ((play->sceneNum <= SCENE_ICE_DOUKUTO) || (play->sceneNum >= SCENE_YDAN_BOSS)) {
|
||||
if ((play->sceneNum <= SCENE_ICE_CAVERN) || (play->sceneNum >= SCENE_DEKU_TREE_BOSS)) {
|
||||
R_COMPASS_SCALE_X = gMapData->dgnCompassInfo[mapIndex][0];
|
||||
R_COMPASS_SCALE_Y = gMapData->dgnCompassInfo[mapIndex][1];
|
||||
R_COMPASS_OFFSET_X = gMapData->dgnCompassInfo[mapIndex][2];
|
||||
@ -638,10 +638,10 @@ void Minimap_DrawCompassIcons(PlayState* play) {
|
||||
|
||||
s16 mapWidth = 0;
|
||||
s16 mapStartPosX = 0;
|
||||
if (play->sceneNum >= SCENE_SPOT00 && play->sceneNum <= SCENE_GANON_TOU) { // Overworld
|
||||
if (play->sceneNum >= SCENE_HYRULE_FIELD && play->sceneNum <= SCENE_OUTSIDE_GANONS_CASTLE) { // Overworld
|
||||
mapStartPosX = R_OW_MINIMAP_X;
|
||||
mapWidth = gMapData->owMinimapWidth[R_MAP_INDEX];
|
||||
} else if (play->sceneNum >= SCENE_YDAN && play->sceneNum <= SCENE_ICE_DOUKUTO) { // Dungeons
|
||||
} else if (play->sceneNum >= SCENE_DEKU_TREE && play->sceneNum <= SCENE_ICE_CAVERN) { // Dungeons
|
||||
mapStartPosX = R_DGN_MINIMAP_X;
|
||||
mapWidth = 96;
|
||||
}
|
||||
@ -752,16 +752,16 @@ void Minimap_Draw(PlayState* play) {
|
||||
}
|
||||
|
||||
switch (play->sceneNum) {
|
||||
case SCENE_YDAN:
|
||||
case SCENE_DDAN:
|
||||
case SCENE_BDAN:
|
||||
case SCENE_BMORI1:
|
||||
case SCENE_HIDAN:
|
||||
case SCENE_MIZUSIN:
|
||||
case SCENE_JYASINZOU:
|
||||
case SCENE_HAKADAN:
|
||||
case SCENE_HAKADANCH:
|
||||
case SCENE_ICE_DOUKUTO:
|
||||
case SCENE_DEKU_TREE:
|
||||
case SCENE_DODONGOS_CAVERN:
|
||||
case SCENE_JABU_JABU:
|
||||
case SCENE_FOREST_TEMPLE:
|
||||
case SCENE_FIRE_TEMPLE:
|
||||
case SCENE_WATER_TEMPLE:
|
||||
case SCENE_SPIRIT_TEMPLE:
|
||||
case SCENE_SHADOW_TEMPLE:
|
||||
case SCENE_BOTTOM_OF_THE_WELL:
|
||||
case SCENE_ICE_CAVERN:
|
||||
if (!R_MINIMAP_DISABLED && CVarGetInteger("gMinimapPosType", 0) != 4) { // Not Hidden
|
||||
Gfx_SetupDL_39Overlay(play->state.gfxCtx);
|
||||
gDPSetCombineLERP(OVERLAY_DISP++, 1, 0, PRIMITIVE, 0, TEXEL0, 0, PRIMITIVE, 0, 1, 0, PRIMITIVE, 0,
|
||||
@ -820,26 +820,26 @@ void Minimap_Draw(PlayState* play) {
|
||||
}
|
||||
|
||||
break;
|
||||
case SCENE_SPOT00:
|
||||
case SCENE_SPOT01:
|
||||
case SCENE_SPOT02:
|
||||
case SCENE_SPOT03:
|
||||
case SCENE_SPOT04:
|
||||
case SCENE_SPOT05:
|
||||
case SCENE_SPOT06:
|
||||
case SCENE_SPOT07:
|
||||
case SCENE_SPOT08:
|
||||
case SCENE_SPOT09:
|
||||
case SCENE_SPOT10:
|
||||
case SCENE_SPOT11:
|
||||
case SCENE_SPOT12:
|
||||
case SCENE_SPOT13:
|
||||
case SCENE_SPOT15:
|
||||
case SCENE_SPOT16:
|
||||
case SCENE_SPOT17:
|
||||
case SCENE_SPOT18:
|
||||
case SCENE_SPOT20:
|
||||
case SCENE_GANON_TOU:
|
||||
case SCENE_HYRULE_FIELD:
|
||||
case SCENE_KAKARIKO_VILLAGE:
|
||||
case SCENE_GRAVEYARD:
|
||||
case SCENE_ZORAS_RIVER:
|
||||
case SCENE_KOKIRI_FOREST:
|
||||
case SCENE_SACRED_FOREST_MEADOW:
|
||||
case SCENE_LAKE_HYLIA:
|
||||
case SCENE_ZORAS_DOMAIN:
|
||||
case SCENE_ZORAS_FOUNTAIN:
|
||||
case SCENE_GERUDO_VALLEY:
|
||||
case SCENE_LOST_WOODS:
|
||||
case SCENE_DESERT_COLOSSUS:
|
||||
case SCENE_GERUDOS_FORTRESS:
|
||||
case SCENE_HAUNTED_WASTELAND:
|
||||
case SCENE_HYRULE_CASTLE:
|
||||
case SCENE_DEATH_MOUNTAIN_TRAIL:
|
||||
case SCENE_DEATH_MOUNTAIN_CRATER:
|
||||
case SCENE_GORON_CITY:
|
||||
case SCENE_LON_LON_RANCH:
|
||||
case SCENE_OUTSIDE_GANONS_CASTLE:
|
||||
if (!R_MINIMAP_DISABLED && CVarGetInteger("gMinimapPosType", 0) != 4) { // Not Hidden
|
||||
Gfx_SetupDL_39Overlay(play->state.gfxCtx);
|
||||
|
||||
@ -882,8 +882,8 @@ void Minimap_Draw(PlayState* play) {
|
||||
|
||||
s16 iconSize = 8;
|
||||
|
||||
if (((play->sceneNum != SCENE_SPOT01) && (play->sceneNum != SCENE_SPOT04) &&
|
||||
(play->sceneNum != SCENE_SPOT08)) ||
|
||||
if (((play->sceneNum != SCENE_KAKARIKO_VILLAGE) && (play->sceneNum != SCENE_KOKIRI_FOREST) &&
|
||||
(play->sceneNum != SCENE_ZORAS_FOUNTAIN)) ||
|
||||
(LINK_AGE_IN_YEARS != YEARS_ADULT)) {
|
||||
s16 origX = gMapData->owEntranceIconPosX[sEntranceIconMapIndex];
|
||||
|
||||
@ -952,7 +952,7 @@ void Minimap_Draw(PlayState* play) {
|
||||
}
|
||||
|
||||
// Ice Cavern entrance icon
|
||||
if ((play->sceneNum == SCENE_SPOT08) && ((gSaveContext.infTable[26] & gBitFlags[9]) ||
|
||||
if ((play->sceneNum == SCENE_ZORAS_FOUNTAIN) && ((gSaveContext.infTable[26] & gBitFlags[9]) ||
|
||||
CVarGetInteger("gAlwaysShowDungeonMinimapIcon", 0))) {
|
||||
gDPLoadTextureBlock(OVERLAY_DISP++, gMapDungeonEntranceIconTex, G_IM_FMT_RGBA, G_IM_SIZ_16b, iconSize,
|
||||
iconSize, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK,
|
||||
@ -1000,16 +1000,16 @@ void Map_Update(PlayState* play) {
|
||||
|
||||
if ((play->pauseCtx.state == 0) && (play->pauseCtx.debugState == 0)) {
|
||||
switch (play->sceneNum) {
|
||||
case SCENE_YDAN:
|
||||
case SCENE_DDAN:
|
||||
case SCENE_BDAN:
|
||||
case SCENE_BMORI1:
|
||||
case SCENE_HIDAN:
|
||||
case SCENE_MIZUSIN:
|
||||
case SCENE_JYASINZOU:
|
||||
case SCENE_HAKADAN:
|
||||
case SCENE_HAKADANCH:
|
||||
case SCENE_ICE_DOUKUTO:
|
||||
case SCENE_DEKU_TREE:
|
||||
case SCENE_DODONGOS_CAVERN:
|
||||
case SCENE_JABU_JABU:
|
||||
case SCENE_FOREST_TEMPLE:
|
||||
case SCENE_FIRE_TEMPLE:
|
||||
case SCENE_WATER_TEMPLE:
|
||||
case SCENE_SPIRIT_TEMPLE:
|
||||
case SCENE_SHADOW_TEMPLE:
|
||||
case SCENE_BOTTOM_OF_THE_WELL:
|
||||
case SCENE_ICE_CAVERN:
|
||||
interfaceCtx->mapPalette[30] = 0;
|
||||
if (CHECK_DUNGEON_ITEM(DUNGEON_MAP, mapIndex)) {
|
||||
interfaceCtx->mapPalette[31] = 1;
|
||||
@ -1052,17 +1052,17 @@ void Map_Update(PlayState* play) {
|
||||
|
||||
VREG(10) = interfaceCtx->mapRoomNum;
|
||||
break;
|
||||
case SCENE_YDAN_BOSS:
|
||||
case SCENE_DDAN_BOSS:
|
||||
case SCENE_BDAN_BOSS:
|
||||
case SCENE_MORIBOSSROOM:
|
||||
case SCENE_FIRE_BS:
|
||||
case SCENE_MIZUSIN_BS:
|
||||
case SCENE_JYASINBOSS:
|
||||
case SCENE_HAKADAN_BS:
|
||||
VREG(30) = gMapData->bossFloor[play->sceneNum - SCENE_YDAN_BOSS];
|
||||
case SCENE_DEKU_TREE_BOSS:
|
||||
case SCENE_DODONGOS_CAVERN_BOSS:
|
||||
case SCENE_JABU_JABU_BOSS:
|
||||
case SCENE_FOREST_TEMPLE_BOSS:
|
||||
case SCENE_FIRE_TEMPLE_BOSS:
|
||||
case SCENE_WATER_TEMPLE_BOSS:
|
||||
case SCENE_SPIRIT_TEMPLE_BOSS:
|
||||
case SCENE_SHADOW_TEMPLE_BOSS:
|
||||
VREG(30) = gMapData->bossFloor[play->sceneNum - SCENE_DEKU_TREE_BOSS];
|
||||
R_MAP_TEX_INDEX = R_MAP_TEX_INDEX_BASE +
|
||||
gMapData->floorTexIndexOffset[play->sceneNum - SCENE_YDAN_BOSS][VREG(30)];
|
||||
gMapData->floorTexIndexOffset[play->sceneNum - SCENE_DEKU_TREE_BOSS][VREG(30)];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -150,10 +150,10 @@ void MapMark_DrawForDungeon(PlayState* play) {
|
||||
rectTop = (markPoint->y + Y_Margins_Minimap_ic + 140 + CVarGetInteger("gMinimapPosY", 0));
|
||||
if (CVarGetInteger("gMinimapPosType", 0) == 1) {//Anchor Left
|
||||
if (CVarGetInteger("gMinimapUseMargins", 0) != 0) {X_Margins_Minimap_ic = Left_MC_Margin;};
|
||||
if (play->sceneNum == SCENE_YDAN || play->sceneNum == SCENE_DDAN || play->sceneNum == SCENE_BDAN ||
|
||||
play->sceneNum == SCENE_BMORI1 || play->sceneNum == SCENE_HIDAN || play->sceneNum == SCENE_MIZUSIN ||
|
||||
play->sceneNum == SCENE_JYASINZOU || play->sceneNum == SCENE_HAKADAN || play->sceneNum == SCENE_HAKADANCH ||
|
||||
play->sceneNum == SCENE_ICE_DOUKUTO) {
|
||||
if (play->sceneNum == SCENE_DEKU_TREE || play->sceneNum == SCENE_DODONGOS_CAVERN || play->sceneNum == SCENE_JABU_JABU ||
|
||||
play->sceneNum == SCENE_FOREST_TEMPLE || play->sceneNum == SCENE_FIRE_TEMPLE || play->sceneNum == SCENE_WATER_TEMPLE ||
|
||||
play->sceneNum == SCENE_SPIRIT_TEMPLE || play->sceneNum == SCENE_SHADOW_TEMPLE || play->sceneNum == SCENE_BOTTOM_OF_THE_WELL ||
|
||||
play->sceneNum == SCENE_ICE_CAVERN) {
|
||||
rectLeft = OTRGetRectDimensionFromLeftEdge(markPointX+CVarGetInteger("gMinimapPosX", 0)+204+X_Margins_Minimap_ic);
|
||||
} else {
|
||||
rectLeft = OTRGetRectDimensionFromLeftEdge(markPointX+CVarGetInteger("gMinimapPosX", 0)+204+X_Margins_Minimap_ic);
|
||||
@ -192,21 +192,21 @@ void MapMark_DrawForDungeon(PlayState* play) {
|
||||
|
||||
void MapMark_Draw(PlayState* play) {
|
||||
switch (play->sceneNum) {
|
||||
case SCENE_YDAN:
|
||||
case SCENE_DDAN:
|
||||
case SCENE_BDAN:
|
||||
case SCENE_BMORI1:
|
||||
case SCENE_HIDAN:
|
||||
case SCENE_MIZUSIN:
|
||||
case SCENE_JYASINZOU:
|
||||
case SCENE_HAKADAN:
|
||||
case SCENE_HAKADANCH:
|
||||
case SCENE_ICE_DOUKUTO:
|
||||
case SCENE_YDAN_BOSS:
|
||||
case SCENE_DDAN_BOSS:
|
||||
case SCENE_BDAN_BOSS:
|
||||
case SCENE_MORIBOSSROOM:
|
||||
case SCENE_FIRE_BS:
|
||||
case SCENE_DEKU_TREE:
|
||||
case SCENE_DODONGOS_CAVERN:
|
||||
case SCENE_JABU_JABU:
|
||||
case SCENE_FOREST_TEMPLE:
|
||||
case SCENE_FIRE_TEMPLE:
|
||||
case SCENE_WATER_TEMPLE:
|
||||
case SCENE_SPIRIT_TEMPLE:
|
||||
case SCENE_SHADOW_TEMPLE:
|
||||
case SCENE_BOTTOM_OF_THE_WELL:
|
||||
case SCENE_ICE_CAVERN:
|
||||
case SCENE_DEKU_TREE_BOSS:
|
||||
case SCENE_DODONGOS_CAVERN_BOSS:
|
||||
case SCENE_JABU_JABU_BOSS:
|
||||
case SCENE_FOREST_TEMPLE_BOSS:
|
||||
case SCENE_FIRE_TEMPLE_BOSS:
|
||||
MapMark_DrawForDungeon(play);
|
||||
break;
|
||||
}
|
||||
|
@ -3153,7 +3153,7 @@ void Message_Update(PlayState* play) {
|
||||
if (D_8014B2F4 >= 4) {
|
||||
var = true;
|
||||
}
|
||||
} else if (YREG(15) != 0 || play->sceneNum == SCENE_HAIRAL_NIWA) {
|
||||
} else if (YREG(15) != 0 || play->sceneNum == SCENE_CASTLE_COURTYARD_GUARDS_DAY) {
|
||||
var = true;
|
||||
} else if (D_8014B2F4 >= 4 || msgCtx->talkActor == NULL) {
|
||||
var = true;
|
||||
@ -3180,7 +3180,7 @@ void Message_Update(PlayState* play) {
|
||||
var = msgCtx->textBoxType;
|
||||
|
||||
if (!msgCtx->textBoxPos) { // variable position
|
||||
if (YREG(15) != 0 || play->sceneNum == SCENE_HAIRAL_NIWA) {
|
||||
if (YREG(15) != 0 || play->sceneNum == SCENE_CASTLE_COURTYARD_GUARDS_DAY) {
|
||||
if (averageY < XREG(92)) {
|
||||
R_TEXTBOX_Y_TARGET = sTextboxLowerYPositions[var];
|
||||
} else {
|
||||
|
@ -43,106 +43,106 @@ typedef struct {
|
||||
} RestrictionFlags;
|
||||
|
||||
static RestrictionFlags sRestrictionFlags[] = {
|
||||
{ SCENE_SPOT00, 0x00, 0x00, 0x10 },
|
||||
{ SCENE_SPOT01, 0x00, 0x00, 0x10 },
|
||||
{ SCENE_SPOT02, 0x00, 0x00, 0x10 },
|
||||
{ SCENE_SPOT03, 0x00, 0x00, 0x10 },
|
||||
{ SCENE_SPOT04, 0x00, 0x00, 0x10 },
|
||||
{ SCENE_SPOT05, 0x00, 0x00, 0x10 },
|
||||
{ SCENE_SPOT06, 0x00, 0x00, 0x10 },
|
||||
{ SCENE_SPOT07, 0x00, 0x00, 0x10 },
|
||||
{ SCENE_SPOT08, 0x00, 0x00, 0x10 },
|
||||
{ SCENE_SPOT09, 0x00, 0x00, 0x10 },
|
||||
{ SCENE_SPOT10, 0x00, 0x00, 0x10 },
|
||||
{ SCENE_SPOT11, 0x00, 0x00, 0x10 },
|
||||
{ SCENE_SPOT12, 0x00, 0x00, 0x10 },
|
||||
{ SCENE_SPOT13, 0x00, 0x00, 0x10 },
|
||||
{ SCENE_SPOT15, 0x00, 0x00, 0x10 },
|
||||
{ SCENE_GANON_TOU, 0x00, 0x00, 0x10 },
|
||||
{ SCENE_SPOT16, 0x00, 0x00, 0x10 },
|
||||
{ SCENE_SPOT17, 0x00, 0x00, 0x10 },
|
||||
{ SCENE_SPOT18, 0x00, 0x00, 0x10 },
|
||||
{ SCENE_SPOT20, 0x00, 0x00, 0x10 },
|
||||
{ SCENE_TOKINOMA, 0x00, 0x10, 0x15 },
|
||||
{ SCENE_KENJYANOMA, 0xA2, 0xAA, 0xAA },
|
||||
{ SCENE_SYATEKIJYOU, 0x11, 0x55, 0x55 },
|
||||
{ SCENE_HAIRAL_NIWA, 0x11, 0x55, 0x55 },
|
||||
{ SCENE_HAIRAL_NIWA_N, 0x11, 0x55, 0x55 },
|
||||
{ SCENE_HAKAANA, 0x00, 0x00, 0xD0 },
|
||||
{ SCENE_HAKAANA2, 0x00, 0x00, 0xD0 },
|
||||
{ SCENE_HAKAANA_OUKE, 0x00, 0x00, 0xD0 },
|
||||
{ SCENE_DAIYOUSEI_IZUMI, 0x00, 0x00, 0x10 },
|
||||
{ SCENE_YOUSEI_IZUMI_TATE, 0x00, 0x00, 0xD0 },
|
||||
{ SCENE_YOUSEI_IZUMI_YOKO, 0x00, 0x00, 0x10 },
|
||||
{ SCENE_GANON_FINAL, 0x00, 0x05, 0x50 },
|
||||
{ SCENE_NAKANIWA, 0x00, 0x05, 0x54 },
|
||||
{ SCENE_TURIBORI, 0x11, 0x55, 0x55 },
|
||||
{ SCENE_BOWLING, 0x11, 0x55, 0x55 },
|
||||
{ SCENE_SOUKO, 0x00, 0x10, 0x15 },
|
||||
{ SCENE_MIHARIGOYA, 0x00, 0x10, 0x14 },
|
||||
{ SCENE_MAHOUYA, 0x10, 0x15, 0x55 },
|
||||
{ SCENE_TAKARAYA, 0x10, 0x15, 0x55 },
|
||||
{ SCENE_KINSUTA, 0x00, 0x10, 0x15 },
|
||||
{ SCENE_ENTRA, 0x00, 0x10, 0x15 },
|
||||
{ SCENE_ENTRA_N, 0x00, 0x10, 0x15 },
|
||||
{ SCENE_ENRUI, 0x00, 0x10, 0xD5 },
|
||||
{ SCENE_HYRULE_FIELD, 0x00, 0x00, 0x10 },
|
||||
{ SCENE_KAKARIKO_VILLAGE, 0x00, 0x00, 0x10 },
|
||||
{ SCENE_GRAVEYARD, 0x00, 0x00, 0x10 },
|
||||
{ SCENE_ZORAS_RIVER, 0x00, 0x00, 0x10 },
|
||||
{ SCENE_KOKIRI_FOREST, 0x00, 0x00, 0x10 },
|
||||
{ SCENE_SACRED_FOREST_MEADOW, 0x00, 0x00, 0x10 },
|
||||
{ SCENE_LAKE_HYLIA, 0x00, 0x00, 0x10 },
|
||||
{ SCENE_ZORAS_DOMAIN, 0x00, 0x00, 0x10 },
|
||||
{ SCENE_ZORAS_FOUNTAIN, 0x00, 0x00, 0x10 },
|
||||
{ SCENE_GERUDO_VALLEY, 0x00, 0x00, 0x10 },
|
||||
{ SCENE_LOST_WOODS, 0x00, 0x00, 0x10 },
|
||||
{ SCENE_DESERT_COLOSSUS, 0x00, 0x00, 0x10 },
|
||||
{ SCENE_GERUDOS_FORTRESS, 0x00, 0x00, 0x10 },
|
||||
{ SCENE_HAUNTED_WASTELAND, 0x00, 0x00, 0x10 },
|
||||
{ SCENE_HYRULE_CASTLE, 0x00, 0x00, 0x10 },
|
||||
{ SCENE_OUTSIDE_GANONS_CASTLE, 0x00, 0x00, 0x10 },
|
||||
{ SCENE_DEATH_MOUNTAIN_TRAIL, 0x00, 0x00, 0x10 },
|
||||
{ SCENE_DEATH_MOUNTAIN_CRATER, 0x00, 0x00, 0x10 },
|
||||
{ SCENE_GORON_CITY, 0x00, 0x00, 0x10 },
|
||||
{ SCENE_LON_LON_RANCH, 0x00, 0x00, 0x10 },
|
||||
{ SCENE_TEMPLE_OF_TIME, 0x00, 0x10, 0x15 },
|
||||
{ SCENE_CHAMBER_OF_THE_SAGES, 0xA2, 0xAA, 0xAA },
|
||||
{ SCENE_SHOOTING_GALLERY, 0x11, 0x55, 0x55 },
|
||||
{ SCENE_CASTLE_COURTYARD_GUARDS_DAY, 0x11, 0x55, 0x55 },
|
||||
{ SCENE_CASTLE_COURTYARD_GUARDS_NIGHT, 0x11, 0x55, 0x55 },
|
||||
{ SCENE_REDEAD_GRAVE, 0x00, 0x00, 0xD0 },
|
||||
{ SCENE_GRAVE_WITH_FAIRYS_FOUNTAIN, 0x00, 0x00, 0xD0 },
|
||||
{ SCENE_ROYAL_FAMILYS_TOMB, 0x00, 0x00, 0xD0 },
|
||||
{ SCENE_GREAT_FAIRYS_FOUNTAIN_MAGIC, 0x00, 0x00, 0x10 },
|
||||
{ SCENE_FAIRYS_FOUNTAIN, 0x00, 0x00, 0xD0 },
|
||||
{ SCENE_GREAT_FAIRYS_FOUNTAIN_SPELLS, 0x00, 0x00, 0x10 },
|
||||
{ SCENE_GANONS_TOWER_COLLAPSE_EXTERIOR, 0x00, 0x05, 0x50 },
|
||||
{ SCENE_CASTLE_COURTYARD_ZELDA, 0x00, 0x05, 0x54 },
|
||||
{ SCENE_FISHING_POND, 0x11, 0x55, 0x55 },
|
||||
{ SCENE_BOMBCHU_BOWLING_ALLEY, 0x11, 0x55, 0x55 },
|
||||
{ SCENE_LON_LON_BUILDINGS, 0x00, 0x10, 0x15 },
|
||||
{ SCENE_MARKET_GUARD_HOUSE, 0x00, 0x10, 0x14 },
|
||||
{ SCENE_POTION_SHOP_GRANNY, 0x10, 0x15, 0x55 },
|
||||
{ SCENE_TREASURE_BOX_SHOP, 0x10, 0x15, 0x55 },
|
||||
{ SCENE_HOUSE_OF_SKULLTULA, 0x00, 0x10, 0x15 },
|
||||
{ SCENE_MARKET_ENTRANCE_DAY, 0x00, 0x10, 0x15 },
|
||||
{ SCENE_MARKET_ENTRANCE_NIGHT, 0x00, 0x10, 0x15 },
|
||||
{ SCENE_MARKET_ENTRANCE_RUINS, 0x00, 0x10, 0xD5 },
|
||||
{ SCENE_MARKET_DAY, 0x00, 0x10, 0x15 },
|
||||
{ SCENE_MARKET_NIGHT, 0x00, 0x10, 0x15 },
|
||||
{ SCENE_MARKET_RUINS, 0x00, 0x10, 0xD5 },
|
||||
{ SCENE_MARKET_ALLEY, 0x00, 0x10, 0x15 },
|
||||
{ SCENE_MARKET_ALLEY_N, 0x00, 0x10, 0x15 },
|
||||
{ SCENE_SHRINE, 0x00, 0x10, 0x15 },
|
||||
{ SCENE_SHRINE_N, 0x00, 0x10, 0x15 },
|
||||
{ SCENE_SHRINE_R, 0x00, 0x10, 0xD5 },
|
||||
{ SCENE_LINK_HOME, 0x10, 0x10, 0x15 },
|
||||
{ SCENE_KAKARIKO, 0x10, 0x10, 0x15 },
|
||||
{ SCENE_KAKARIKO3, 0x10, 0x10, 0x15 },
|
||||
{ SCENE_KOKIRI_HOME, 0x10, 0x10, 0x15 },
|
||||
{ SCENE_KOKIRI_HOME3, 0x10, 0x10, 0x15 },
|
||||
{ SCENE_KOKIRI_HOME4, 0x10, 0x10, 0x15 },
|
||||
{ SCENE_KOKIRI_HOME5, 0x10, 0x10, 0x15 },
|
||||
{ SCENE_MALON_STABLE, 0x10, 0x10, 0x15 },
|
||||
{ SCENE_HUT, 0x10, 0x10, 0x15 },
|
||||
{ SCENE_IMPA, 0x10, 0x10, 0x15 },
|
||||
{ SCENE_LABO, 0x10, 0x10, 0x15 },
|
||||
{ SCENE_HYLIA_LABO, 0x00, 0x10, 0x15 },
|
||||
{ SCENE_TENT, 0x10, 0x10, 0x15 },
|
||||
{ SCENE_SHOP1, 0x10, 0x10, 0x15 },
|
||||
{ SCENE_BACK_ALLEY_DAY, 0x00, 0x10, 0x15 },
|
||||
{ SCENE_BACK_ALLEY_NIGHT, 0x00, 0x10, 0x15 },
|
||||
{ SCENE_TEMPLE_OF_TIME_EXTERIOR_DAY, 0x00, 0x10, 0x15 },
|
||||
{ SCENE_TEMPLE_OF_TIME_EXTERIOR_NIGHT, 0x00, 0x10, 0x15 },
|
||||
{ SCENE_TEMPLE_OF_TIME_EXTERIOR_RUINS, 0x00, 0x10, 0xD5 },
|
||||
{ SCENE_LINKS_HOUSE, 0x10, 0x10, 0x15 },
|
||||
{ SCENE_KAKARIKO_CENTER_GUEST_HOUSE, 0x10, 0x10, 0x15 },
|
||||
{ SCENE_BACK_ALLEY_HOUSE, 0x10, 0x10, 0x15 },
|
||||
{ SCENE_KNOW_IT_ALL_BROS_HOUSE, 0x10, 0x10, 0x15 },
|
||||
{ SCENE_TWINS_HOUSE, 0x10, 0x10, 0x15 },
|
||||
{ SCENE_MIDOS_HOUSE, 0x10, 0x10, 0x15 },
|
||||
{ SCENE_SARIAS_HOUSE, 0x10, 0x10, 0x15 },
|
||||
{ SCENE_STABLE, 0x10, 0x10, 0x15 },
|
||||
{ SCENE_GRAVEKEEPERS_HUT, 0x10, 0x10, 0x15 },
|
||||
{ SCENE_DOG_LADY_HOUSE, 0x10, 0x10, 0x15 },
|
||||
{ SCENE_IMPAS_HOUSE, 0x10, 0x10, 0x15 },
|
||||
{ SCENE_LAKESIDE_LABORATORY, 0x00, 0x10, 0x15 },
|
||||
{ SCENE_CARPENTERS_TENT, 0x10, 0x10, 0x15 },
|
||||
{ SCENE_BAZAAR, 0x10, 0x10, 0x15 },
|
||||
{ SCENE_KOKIRI_SHOP, 0x10, 0x10, 0x15 },
|
||||
{ SCENE_GOLON, 0x10, 0x10, 0x15 },
|
||||
{ SCENE_ZOORA, 0x10, 0x10, 0x15 },
|
||||
{ SCENE_DRAG, 0x10, 0x10, 0x15 },
|
||||
{ SCENE_ALLEY_SHOP, 0x10, 0x10, 0x15 },
|
||||
{ SCENE_NIGHT_SHOP, 0x10, 0x10, 0x15 },
|
||||
{ SCENE_FACE_SHOP, 0x10, 0x10, 0x15 },
|
||||
{ SCENE_MEN, 0x00, 0x03, 0x10 },
|
||||
{ SCENE_YDAN, 0x00, 0x00, 0x00 },
|
||||
{ SCENE_YDAN_BOSS, 0x00, 0x45, 0x50 },
|
||||
{ SCENE_DDAN, 0x00, 0x00, 0x00 },
|
||||
{ SCENE_DDAN_BOSS, 0x00, 0x45, 0x50 },
|
||||
{ SCENE_BDAN, 0x00, 0x00, 0x00 },
|
||||
{ SCENE_BDAN_BOSS, 0x00, 0x45, 0x50 },
|
||||
{ SCENE_BMORI1, 0x00, 0x00, 0x00 },
|
||||
{ SCENE_MORIBOSSROOM, 0x00, 0x45, 0x50 },
|
||||
{ SCENE_HAKADANCH, 0x00, 0x00, 0x00 },
|
||||
{ SCENE_HAKADAN, 0x00, 0x00, 0x00 },
|
||||
{ SCENE_HAKADAN_BS, 0x00, 0x45, 0x50 },
|
||||
{ SCENE_HIDAN, 0x00, 0x00, 0x00 },
|
||||
{ SCENE_FIRE_BS, 0x00, 0x45, 0x50 },
|
||||
{ SCENE_MIZUSIN, 0x00, 0x00, 0x00 },
|
||||
{ SCENE_MIZUSIN_BS, 0x00, 0x45, 0x50 },
|
||||
{ SCENE_JYASINZOU, 0x00, 0x00, 0x00 },
|
||||
{ SCENE_JYASINBOSS, 0x00, 0x45, 0x50 },
|
||||
{ SCENE_GANON, 0x00, 0x00, 0x00 },
|
||||
{ SCENE_GORON_SHOP, 0x10, 0x10, 0x15 },
|
||||
{ SCENE_ZORA_SHOP, 0x10, 0x10, 0x15 },
|
||||
{ SCENE_POTION_SHOP_KAKARIKO, 0x10, 0x10, 0x15 },
|
||||
{ SCENE_POTION_SHOP_MARKET, 0x10, 0x10, 0x15 },
|
||||
{ SCENE_BOMBCHU_SHOP, 0x10, 0x10, 0x15 },
|
||||
{ SCENE_HAPPY_MASK_SHOP, 0x10, 0x10, 0x15 },
|
||||
{ SCENE_GERUDO_TRAINING_GROUND, 0x00, 0x03, 0x10 },
|
||||
{ SCENE_DEKU_TREE, 0x00, 0x00, 0x00 },
|
||||
{ SCENE_DEKU_TREE_BOSS, 0x00, 0x45, 0x50 },
|
||||
{ SCENE_DODONGOS_CAVERN, 0x00, 0x00, 0x00 },
|
||||
{ SCENE_DODONGOS_CAVERN_BOSS, 0x00, 0x45, 0x50 },
|
||||
{ SCENE_JABU_JABU, 0x00, 0x00, 0x00 },
|
||||
{ SCENE_JABU_JABU_BOSS, 0x00, 0x45, 0x50 },
|
||||
{ SCENE_FOREST_TEMPLE, 0x00, 0x00, 0x00 },
|
||||
{ SCENE_FOREST_TEMPLE_BOSS, 0x00, 0x45, 0x50 },
|
||||
{ SCENE_BOTTOM_OF_THE_WELL, 0x00, 0x00, 0x00 },
|
||||
{ SCENE_SHADOW_TEMPLE, 0x00, 0x00, 0x00 },
|
||||
{ SCENE_SHADOW_TEMPLE_BOSS, 0x00, 0x45, 0x50 },
|
||||
{ SCENE_FIRE_TEMPLE, 0x00, 0x00, 0x00 },
|
||||
{ SCENE_FIRE_TEMPLE_BOSS, 0x00, 0x45, 0x50 },
|
||||
{ SCENE_WATER_TEMPLE, 0x00, 0x00, 0x00 },
|
||||
{ SCENE_WATER_TEMPLE_BOSS, 0x00, 0x45, 0x50 },
|
||||
{ SCENE_SPIRIT_TEMPLE, 0x00, 0x00, 0x00 },
|
||||
{ SCENE_SPIRIT_TEMPLE_BOSS, 0x00, 0x45, 0x50 },
|
||||
{ SCENE_GANONS_TOWER, 0x00, 0x00, 0x00 },
|
||||
{ SCENE_GANONDORF_BOSS, 0x00, 0x45, 0x50 },
|
||||
{ SCENE_ICE_CAVERN, 0x00, 0x00, 0xC0 },
|
||||
{ SCENE_WINDMILL_AND_DAMPES_GRAVE, 0x00, 0x03, 0x14 },
|
||||
{ SCENE_INSIDE_GANONS_CASTLE, 0x00, 0x03, 0x10 },
|
||||
{ SCENE_GANON_BOSS, 0x00, 0x45, 0x50 },
|
||||
{ SCENE_ICE_DOUKUTO, 0x00, 0x00, 0xC0 },
|
||||
{ SCENE_HAKASITARELAY, 0x00, 0x03, 0x14 },
|
||||
{ SCENE_GANONTIKA, 0x00, 0x03, 0x10 },
|
||||
{ SCENE_GANON_DEMO, 0x00, 0x45, 0x50 },
|
||||
{ SCENE_GANON_SONOGO, 0x00, 0x05, 0x50 },
|
||||
{ SCENE_GANONTIKA_SONOGO, 0x00, 0x05, 0x50 },
|
||||
{ SCENE_GERUDOWAY, 0x00, 0x00, 0x10 },
|
||||
{ SCENE_KAKUSIANA, 0x00, 0x00, 0xD0 },
|
||||
{ SCENE_GANONS_TOWER_COLLAPSE_INTERIOR, 0x00, 0x05, 0x50 },
|
||||
{ SCENE_INSIDE_GANONS_CASTLE_COLLAPSE, 0x00, 0x05, 0x50 },
|
||||
{ SCENE_THIEVES_HIDEOUT, 0x00, 0x00, 0x10 },
|
||||
{ SCENE_GROTTOS, 0x00, 0x00, 0xD0 },
|
||||
{ 0xFF, 0x00, 0x00, 0x00 },
|
||||
};
|
||||
|
||||
@ -537,26 +537,26 @@ void func_80082850(PlayState* play, s16 maxAlpha) {
|
||||
}
|
||||
|
||||
switch (play->sceneNum) {
|
||||
case SCENE_SPOT00:
|
||||
case SCENE_SPOT01:
|
||||
case SCENE_SPOT02:
|
||||
case SCENE_SPOT03:
|
||||
case SCENE_SPOT04:
|
||||
case SCENE_SPOT05:
|
||||
case SCENE_SPOT06:
|
||||
case SCENE_SPOT07:
|
||||
case SCENE_SPOT08:
|
||||
case SCENE_SPOT09:
|
||||
case SCENE_SPOT10:
|
||||
case SCENE_SPOT11:
|
||||
case SCENE_SPOT12:
|
||||
case SCENE_SPOT13:
|
||||
case SCENE_SPOT15:
|
||||
case SCENE_SPOT16:
|
||||
case SCENE_SPOT17:
|
||||
case SCENE_SPOT18:
|
||||
case SCENE_SPOT20:
|
||||
case SCENE_GANON_TOU:
|
||||
case SCENE_HYRULE_FIELD:
|
||||
case SCENE_KAKARIKO_VILLAGE:
|
||||
case SCENE_GRAVEYARD:
|
||||
case SCENE_ZORAS_RIVER:
|
||||
case SCENE_KOKIRI_FOREST:
|
||||
case SCENE_SACRED_FOREST_MEADOW:
|
||||
case SCENE_LAKE_HYLIA:
|
||||
case SCENE_ZORAS_DOMAIN:
|
||||
case SCENE_ZORAS_FOUNTAIN:
|
||||
case SCENE_GERUDO_VALLEY:
|
||||
case SCENE_LOST_WOODS:
|
||||
case SCENE_DESERT_COLOSSUS:
|
||||
case SCENE_GERUDOS_FORTRESS:
|
||||
case SCENE_HAUNTED_WASTELAND:
|
||||
case SCENE_HYRULE_CASTLE:
|
||||
case SCENE_DEATH_MOUNTAIN_TRAIL:
|
||||
case SCENE_DEATH_MOUNTAIN_CRATER:
|
||||
case SCENE_GORON_CITY:
|
||||
case SCENE_LON_LON_RANCH:
|
||||
case SCENE_OUTSIDE_GANONS_CASTLE:
|
||||
if (interfaceCtx->minimapAlpha < 170) {
|
||||
interfaceCtx->minimapAlpha = alpha;
|
||||
} else {
|
||||
@ -821,11 +821,11 @@ void func_80083108(PlayState* play) {
|
||||
s16 sp28 = 0;
|
||||
|
||||
if ((gSaveContext.cutsceneIndex < 0xFFF0) ||
|
||||
((play->sceneNum == SCENE_SPOT20) && (gSaveContext.cutsceneIndex == 0xFFF0))) {
|
||||
((play->sceneNum == SCENE_LON_LON_RANCH) && (gSaveContext.cutsceneIndex == 0xFFF0))) {
|
||||
gSaveContext.unk_13E7 = 0;
|
||||
|
||||
if ((player->stateFlags1 & 0x00800000) || (play->shootingGalleryStatus > 1) ||
|
||||
((play->sceneNum == SCENE_BOWLING) && Flags_GetSwitch(play, 0x38))) {
|
||||
((play->sceneNum == SCENE_BOMBCHU_BOWLING_ALLEY) && Flags_GetSwitch(play, 0x38))) {
|
||||
if (gSaveContext.equips.buttonItems[0] != ITEM_NONE) {
|
||||
gSaveContext.unk_13E7 = 1;
|
||||
|
||||
@ -842,7 +842,7 @@ void func_80083108(PlayState* play) {
|
||||
(gSaveContext.equips.buttonItems[0] != ITEM_NONE)) {
|
||||
gSaveContext.buttonStatus[0] = gSaveContext.equips.buttonItems[0];
|
||||
|
||||
if ((play->sceneNum == SCENE_BOWLING) && Flags_GetSwitch(play, 0x38)) {
|
||||
if ((play->sceneNum == SCENE_BOMBCHU_BOWLING_ALLEY) && Flags_GetSwitch(play, 0x38)) {
|
||||
gSaveContext.equips.buttonItems[0] = ITEM_BOMBCHU;
|
||||
Interface_LoadItemIcon1(play, 0);
|
||||
} else {
|
||||
@ -875,7 +875,7 @@ void func_80083108(PlayState* play) {
|
||||
Interface_ChangeAlpha(8);
|
||||
} else if (play->shootingGalleryStatus > 1) {
|
||||
Interface_ChangeAlpha(8);
|
||||
} else if ((play->sceneNum == SCENE_BOWLING) && Flags_GetSwitch(play, 0x38)) {
|
||||
} else if ((play->sceneNum == SCENE_BOMBCHU_BOWLING_ALLEY) && Flags_GetSwitch(play, 0x38)) {
|
||||
Interface_ChangeAlpha(8);
|
||||
} else if (player->stateFlags1 & 0x00800000) {
|
||||
Interface_ChangeAlpha(12);
|
||||
@ -886,9 +886,9 @@ void func_80083108(PlayState* play) {
|
||||
}
|
||||
}
|
||||
// Don't hide the HUD in the Chamber of Sages when in Boss Rush.
|
||||
} else if (play->sceneNum == SCENE_KENJYANOMA && !gSaveContext.isBossRush) {
|
||||
} else if (play->sceneNum == SCENE_CHAMBER_OF_THE_SAGES && !gSaveContext.isBossRush) {
|
||||
Interface_ChangeAlpha(1);
|
||||
} else if (play->sceneNum == SCENE_TURIBORI) {
|
||||
} else if (play->sceneNum == SCENE_FISHING_POND) {
|
||||
gSaveContext.unk_13E7 = 2;
|
||||
if (play->interfaceCtx.unk_260 != 0) {
|
||||
if (gSaveContext.equips.buttonItems[0] != ITEM_FISHING_POLE) {
|
||||
@ -1259,7 +1259,7 @@ void func_80083108(PlayState* play) {
|
||||
(gSaveContext.equips.buttonItems[i] <= ITEM_BOOTS_HOVER)) && // (tunics/boots) on C-buttons
|
||||
!((gSaveContext.equips.buttonItems[i] >= ITEM_WEIRD_EGG) &&
|
||||
(gSaveContext.equips.buttonItems[i] <= ITEM_CLAIM_CHECK))) {
|
||||
if ((play->sceneNum != SCENE_TAKARAYA) ||
|
||||
if ((play->sceneNum != SCENE_TREASURE_BOX_SHOP) ||
|
||||
(gSaveContext.equips.buttonItems[i] != ITEM_LENS)) {
|
||||
if (gSaveContext.buttonStatus[BUTTON_STATUS_INDEX(i)] == BTN_ENABLED) {
|
||||
sp28 = 1;
|
||||
@ -1360,7 +1360,7 @@ void Interface_SetSceneRestrictions(PlayState* play) {
|
||||
interfaceCtx->restrictions.all);
|
||||
osSyncPrintf(VT_RST);
|
||||
if (CVarGetInteger("gBetterFW", 0)) {
|
||||
if (currentScene == SCENE_MEN || currentScene == SCENE_GANONTIKA) {
|
||||
if (currentScene == SCENE_GERUDO_TRAINING_GROUND || currentScene == SCENE_INSIDE_GANONS_CASTLE) {
|
||||
interfaceCtx->restrictions.farores = 0;
|
||||
}
|
||||
}
|
||||
@ -2406,22 +2406,22 @@ u16 Randomizer_Item_Give(PlayState* play, GetItemEntry giEntry) {
|
||||
switch (item) {
|
||||
case RG_DEKU_TREE_MAP:
|
||||
case RG_DEKU_TREE_COMPASS:
|
||||
mapIndex = SCENE_YDAN;
|
||||
mapIndex = SCENE_DEKU_TREE;
|
||||
break;
|
||||
case RG_DODONGOS_CAVERN_MAP:
|
||||
case RG_DODONGOS_CAVERN_COMPASS:
|
||||
mapIndex = SCENE_DDAN;
|
||||
mapIndex = SCENE_DODONGOS_CAVERN;
|
||||
break;
|
||||
case RG_JABU_JABUS_BELLY_MAP:
|
||||
case RG_JABU_JABUS_BELLY_COMPASS:
|
||||
mapIndex = SCENE_BDAN;
|
||||
mapIndex = SCENE_JABU_JABU;
|
||||
break;
|
||||
case RG_FOREST_TEMPLE_MAP:
|
||||
case RG_FOREST_TEMPLE_COMPASS:
|
||||
case RG_FOREST_TEMPLE_SMALL_KEY:
|
||||
case RG_FOREST_TEMPLE_KEY_RING:
|
||||
case RG_FOREST_TEMPLE_BOSS_KEY:
|
||||
mapIndex = SCENE_BMORI1;
|
||||
mapIndex = SCENE_FOREST_TEMPLE;
|
||||
numOfKeysOnKeyring = FOREST_TEMPLE_SMALL_KEY_MAX;
|
||||
break;
|
||||
case RG_FIRE_TEMPLE_MAP:
|
||||
@ -2429,7 +2429,7 @@ u16 Randomizer_Item_Give(PlayState* play, GetItemEntry giEntry) {
|
||||
case RG_FIRE_TEMPLE_SMALL_KEY:
|
||||
case RG_FIRE_TEMPLE_KEY_RING:
|
||||
case RG_FIRE_TEMPLE_BOSS_KEY:
|
||||
mapIndex = SCENE_HIDAN;
|
||||
mapIndex = SCENE_FIRE_TEMPLE;
|
||||
numOfKeysOnKeyring = FIRE_TEMPLE_SMALL_KEY_MAX;
|
||||
break;
|
||||
case RG_WATER_TEMPLE_MAP:
|
||||
@ -2437,7 +2437,7 @@ u16 Randomizer_Item_Give(PlayState* play, GetItemEntry giEntry) {
|
||||
case RG_WATER_TEMPLE_SMALL_KEY:
|
||||
case RG_WATER_TEMPLE_KEY_RING:
|
||||
case RG_WATER_TEMPLE_BOSS_KEY:
|
||||
mapIndex = SCENE_MIZUSIN;
|
||||
mapIndex = SCENE_WATER_TEMPLE;
|
||||
numOfKeysOnKeyring = WATER_TEMPLE_SMALL_KEY_MAX;
|
||||
break;
|
||||
case RG_SPIRIT_TEMPLE_MAP:
|
||||
@ -2445,7 +2445,7 @@ u16 Randomizer_Item_Give(PlayState* play, GetItemEntry giEntry) {
|
||||
case RG_SPIRIT_TEMPLE_SMALL_KEY:
|
||||
case RG_SPIRIT_TEMPLE_KEY_RING:
|
||||
case RG_SPIRIT_TEMPLE_BOSS_KEY:
|
||||
mapIndex = SCENE_JYASINZOU;
|
||||
mapIndex = SCENE_SPIRIT_TEMPLE;
|
||||
numOfKeysOnKeyring = SPIRIT_TEMPLE_SMALL_KEY_MAX;
|
||||
break;
|
||||
case RG_SHADOW_TEMPLE_MAP:
|
||||
@ -2453,36 +2453,36 @@ u16 Randomizer_Item_Give(PlayState* play, GetItemEntry giEntry) {
|
||||
case RG_SHADOW_TEMPLE_SMALL_KEY:
|
||||
case RG_SHADOW_TEMPLE_KEY_RING:
|
||||
case RG_SHADOW_TEMPLE_BOSS_KEY:
|
||||
mapIndex = SCENE_HAKADAN;
|
||||
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_HAKADANCH;
|
||||
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:
|
||||
mapIndex = SCENE_ICE_DOUKUTO;
|
||||
mapIndex = SCENE_ICE_CAVERN;
|
||||
break;
|
||||
case RG_GANONS_CASTLE_BOSS_KEY:
|
||||
mapIndex = SCENE_GANON;
|
||||
mapIndex = SCENE_GANONS_TOWER;
|
||||
break;
|
||||
case RG_GERUDO_TRAINING_GROUNDS_SMALL_KEY:
|
||||
case RG_GERUDO_TRAINING_GROUNDS_KEY_RING:
|
||||
mapIndex = SCENE_MEN;
|
||||
mapIndex = SCENE_GERUDO_TRAINING_GROUND;
|
||||
numOfKeysOnKeyring = GERUDO_TRAINING_GROUNDS_SMALL_KEY_MAX;
|
||||
break;
|
||||
case RG_GERUDO_FORTRESS_SMALL_KEY:
|
||||
case RG_GERUDO_FORTRESS_KEY_RING:
|
||||
mapIndex = SCENE_GERUDOWAY;
|
||||
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_GANONTIKA;
|
||||
mapIndex = SCENE_INSIDE_GANONS_CASTLE;
|
||||
numOfKeysOnKeyring = GANONS_CASTLE_SMALL_KEY_MAX;
|
||||
break;
|
||||
}
|
||||
@ -4751,7 +4751,7 @@ void Interface_DrawAmmoCount(PlayState* play, s16 button, s16 alpha) {
|
||||
ammo = play->interfaceCtx.hbaAmmo;
|
||||
} else if ((button == 0) && (play->shootingGalleryStatus > 1)) {
|
||||
ammo = play->shootingGalleryStatus - 1;
|
||||
} else if ((button == 0) && (play->sceneNum == SCENE_BOWLING) && Flags_GetSwitch(play, 0x38)) {
|
||||
} else if ((button == 0) && (play->sceneNum == SCENE_BOMBCHU_BOWLING_ALLEY) && Flags_GetSwitch(play, 0x38)) {
|
||||
ammo = play->bombchuBowlingStatus;
|
||||
if (ammo < 0) {
|
||||
ammo = 0;
|
||||
@ -5087,20 +5087,20 @@ void Interface_Draw(PlayState* play) {
|
||||
}
|
||||
|
||||
switch (play->sceneNum) {
|
||||
case SCENE_BMORI1:
|
||||
case SCENE_HIDAN:
|
||||
case SCENE_MIZUSIN:
|
||||
case SCENE_JYASINZOU:
|
||||
case SCENE_HAKADAN:
|
||||
case SCENE_HAKADANCH:
|
||||
case SCENE_ICE_DOUKUTO:
|
||||
case SCENE_GANON:
|
||||
case SCENE_MEN:
|
||||
case SCENE_GERUDOWAY:
|
||||
case SCENE_GANONTIKA:
|
||||
case SCENE_GANON_SONOGO:
|
||||
case SCENE_GANONTIKA_SONOGO:
|
||||
case SCENE_TAKARAYA:
|
||||
case SCENE_FOREST_TEMPLE:
|
||||
case SCENE_FIRE_TEMPLE:
|
||||
case SCENE_WATER_TEMPLE:
|
||||
case SCENE_SPIRIT_TEMPLE:
|
||||
case SCENE_SHADOW_TEMPLE:
|
||||
case SCENE_BOTTOM_OF_THE_WELL:
|
||||
case SCENE_ICE_CAVERN:
|
||||
case SCENE_GANONS_TOWER:
|
||||
case SCENE_GERUDO_TRAINING_GROUND:
|
||||
case SCENE_THIEVES_HIDEOUT:
|
||||
case SCENE_INSIDE_GANONS_CASTLE:
|
||||
case SCENE_GANONS_TOWER_COLLAPSE_INTERIOR:
|
||||
case SCENE_INSIDE_GANONS_CASTLE_COLLAPSE:
|
||||
case SCENE_TREASURE_BOX_SHOP:
|
||||
if (gSaveContext.inventory.dungeonKeys[gSaveContext.mapIndex] >= 0) {
|
||||
s16 X_Margins_SKC;
|
||||
s16 Y_Margins_SKC;
|
||||
@ -5257,7 +5257,7 @@ void Interface_Draw(PlayState* play) {
|
||||
}
|
||||
|
||||
if ((player->stateFlags1 & 0x00800000) || (play->shootingGalleryStatus > 1) ||
|
||||
((play->sceneNum == SCENE_BOWLING) && Flags_GetSwitch(play, 0x38))) {
|
||||
((play->sceneNum == SCENE_BOMBCHU_BOWLING_ALLEY) && Flags_GetSwitch(play, 0x38))) {
|
||||
|
||||
if (!fullUi) {
|
||||
Interface_DrawItemIconTexture(play, gItemIcons[gSaveContext.equips.buttonItems[0]], 0);
|
||||
@ -5723,7 +5723,7 @@ void Interface_Draw(PlayState* play) {
|
||||
!(player->stateFlags2 & 0x01000000) && (play->sceneLoadFlag == 0) &&
|
||||
(play->transitionMode == 0) && !Play_InCsMode(play) && (gSaveContext.minigameState != 1) &&
|
||||
(play->shootingGalleryStatus <= 1) &&
|
||||
!((play->sceneNum == SCENE_BOWLING) && Flags_GetSwitch(play, 0x38))) {
|
||||
!((play->sceneNum == SCENE_BOMBCHU_BOWLING_ALLEY) && Flags_GetSwitch(play, 0x38))) {
|
||||
svar6 = 0;
|
||||
switch (gSaveContext.timer1State) {
|
||||
case 1:
|
||||
@ -5978,10 +5978,10 @@ void Interface_Draw(PlayState* play) {
|
||||
|
||||
if (gSaveContext.timer2Value <= 0) {
|
||||
if (!Flags_GetSwitch(play, 0x37) ||
|
||||
((play->sceneNum != SCENE_GANON_DEMO) &&
|
||||
(play->sceneNum != SCENE_GANON_FINAL) &&
|
||||
(play->sceneNum != SCENE_GANON_SONOGO) &&
|
||||
(play->sceneNum != SCENE_GANONTIKA_SONOGO))) {
|
||||
((play->sceneNum != SCENE_GANON_BOSS) &&
|
||||
(play->sceneNum != SCENE_GANONS_TOWER_COLLAPSE_EXTERIOR) &&
|
||||
(play->sceneNum != SCENE_GANONS_TOWER_COLLAPSE_INTERIOR) &&
|
||||
(play->sceneNum != SCENE_INSIDE_GANONS_CASTLE_COLLAPSE))) {
|
||||
D_8015FFE6 = 40;
|
||||
gSaveContext.timer2State = 5;
|
||||
gSaveContext.cutsceneIndex = 0;
|
||||
@ -6270,9 +6270,9 @@ void Interface_Update(PlayState* play) {
|
||||
|
||||
if ((play->pauseCtx.state == 0) && (play->pauseCtx.debugState == 0)) {
|
||||
if ((gSaveContext.minigameState == 1) || (gSaveContext.sceneSetupIndex < 4) ||
|
||||
((play->sceneNum == SCENE_SPOT20) && (gSaveContext.sceneSetupIndex == 4))) {
|
||||
((play->sceneNum == SCENE_LON_LON_RANCH) && (gSaveContext.sceneSetupIndex == 4))) {
|
||||
if ((msgCtx->msgMode == MSGMODE_NONE) ||
|
||||
((msgCtx->msgMode != MSGMODE_NONE) && (play->sceneNum == SCENE_BOWLING))) {
|
||||
((msgCtx->msgMode != MSGMODE_NONE) && (play->sceneNum == SCENE_BOMBCHU_BOWLING_ALLEY))) {
|
||||
if (play->gameOverCtx.state == GAMEOVER_INACTIVE) {
|
||||
func_80083108(play);
|
||||
}
|
||||
@ -6329,26 +6329,26 @@ void Interface_Update(PlayState* play) {
|
||||
}
|
||||
|
||||
switch (play->sceneNum) {
|
||||
case SCENE_SPOT00:
|
||||
case SCENE_SPOT01:
|
||||
case SCENE_SPOT02:
|
||||
case SCENE_SPOT03:
|
||||
case SCENE_SPOT04:
|
||||
case SCENE_SPOT05:
|
||||
case SCENE_SPOT06:
|
||||
case SCENE_SPOT07:
|
||||
case SCENE_SPOT08:
|
||||
case SCENE_SPOT09:
|
||||
case SCENE_SPOT10:
|
||||
case SCENE_SPOT11:
|
||||
case SCENE_SPOT12:
|
||||
case SCENE_SPOT13:
|
||||
case SCENE_SPOT15:
|
||||
case SCENE_SPOT16:
|
||||
case SCENE_SPOT17:
|
||||
case SCENE_SPOT18:
|
||||
case SCENE_SPOT20:
|
||||
case SCENE_GANON_TOU:
|
||||
case SCENE_HYRULE_FIELD:
|
||||
case SCENE_KAKARIKO_VILLAGE:
|
||||
case SCENE_GRAVEYARD:
|
||||
case SCENE_ZORAS_RIVER:
|
||||
case SCENE_KOKIRI_FOREST:
|
||||
case SCENE_SACRED_FOREST_MEADOW:
|
||||
case SCENE_LAKE_HYLIA:
|
||||
case SCENE_ZORAS_DOMAIN:
|
||||
case SCENE_ZORAS_FOUNTAIN:
|
||||
case SCENE_GERUDO_VALLEY:
|
||||
case SCENE_LOST_WOODS:
|
||||
case SCENE_DESERT_COLOSSUS:
|
||||
case SCENE_GERUDOS_FORTRESS:
|
||||
case SCENE_HAUNTED_WASTELAND:
|
||||
case SCENE_HYRULE_CASTLE:
|
||||
case SCENE_DEATH_MOUNTAIN_TRAIL:
|
||||
case SCENE_DEATH_MOUNTAIN_CRATER:
|
||||
case SCENE_GORON_CITY:
|
||||
case SCENE_LON_LON_RANCH:
|
||||
case SCENE_OUTSIDE_GANONS_CASTLE:
|
||||
if (interfaceCtx->minimapAlpha < 170) {
|
||||
interfaceCtx->minimapAlpha = alpha1;
|
||||
} else {
|
||||
@ -6616,7 +6616,7 @@ void Interface_Update(PlayState* play) {
|
||||
play->unk_11DE9 = 1;
|
||||
}
|
||||
|
||||
if (play->sceneNum == SCENE_SPOT13) {
|
||||
if (play->sceneNum == SCENE_HAUNTED_WASTELAND) {
|
||||
play->fadeTransition = 14;
|
||||
gSaveContext.nextTransitionType = 14;
|
||||
}
|
||||
|
@ -425,7 +425,7 @@ void GivePlayerRandoRewardZeldaLightArrowsGift(PlayState* play, RandomizerCheck
|
||||
}
|
||||
|
||||
if (meetsRequirements && LINK_IS_ADULT &&
|
||||
(gEntranceTable[((void)0, gSaveContext.entranceIndex)].scene == SCENE_TOKINOMA) &&
|
||||
(gEntranceTable[((void)0, gSaveContext.entranceIndex)].scene == SCENE_TEMPLE_OF_TIME) &&
|
||||
!Flags_GetTreasure(play, 0x1E) && player != NULL && !Player_InBlockingCsMode(play, player) &&
|
||||
play->sceneLoadFlag == 0) {
|
||||
GetItemEntry getItem = Randomizer_GetItemFromKnownCheck(check, GI_ARROW_LIGHT);
|
||||
@ -558,7 +558,7 @@ void Play_Init(GameState* thisx) {
|
||||
}
|
||||
|
||||
tempSetupIndex = gSaveContext.sceneSetupIndex;
|
||||
if ((gEntranceTable[((void)0, gSaveContext.entranceIndex)].scene == SCENE_SPOT00) && !LINK_IS_ADULT &&
|
||||
if ((gEntranceTable[((void)0, gSaveContext.entranceIndex)].scene == SCENE_HYRULE_FIELD) && !LINK_IS_ADULT &&
|
||||
gSaveContext.sceneSetupIndex < 4) {
|
||||
if (CHECK_QUEST_ITEM(QUEST_KOKIRI_EMERALD) && CHECK_QUEST_ITEM(QUEST_GORON_RUBY) &&
|
||||
CHECK_QUEST_ITEM(QUEST_ZORA_SAPPHIRE)) {
|
||||
@ -566,7 +566,7 @@ void Play_Init(GameState* thisx) {
|
||||
} else {
|
||||
gSaveContext.sceneSetupIndex = 0;
|
||||
}
|
||||
} else if ((gEntranceTable[((void)0, gSaveContext.entranceIndex)].scene == SCENE_SPOT04) && LINK_IS_ADULT &&
|
||||
} else if ((gEntranceTable[((void)0, gSaveContext.entranceIndex)].scene == SCENE_KOKIRI_FOREST) && LINK_IS_ADULT &&
|
||||
gSaveContext.sceneSetupIndex < 4) {
|
||||
gSaveContext.sceneSetupIndex = (Flags_GetEventChkInf(EVENTCHKINF_USED_FOREST_TEMPLE_BLUE_WARP)) ? 3 : 2;
|
||||
}
|
||||
@ -2212,7 +2212,7 @@ void Play_SetupRespawnPoint(PlayState* play, s32 respawnMode, s32 playerParams)
|
||||
s32 entranceIndex;
|
||||
s8 roomIndex;
|
||||
|
||||
if ((play->sceneNum != SCENE_YOUSEI_IZUMI_TATE) && (play->sceneNum != SCENE_KAKUSIANA)) {
|
||||
if ((play->sceneNum != SCENE_FAIRYS_FOUNTAIN) && (play->sceneNum != SCENE_GROTTOS)) {
|
||||
roomIndex = play->roomCtx.curRoom.num;
|
||||
entranceIndex = gSaveContext.entranceIndex;
|
||||
Play_SetRespawnData(play, respawnMode, entranceIndex, roomIndex, playerParams,
|
||||
@ -2233,8 +2233,8 @@ void Play_LoadToLastEntrance(PlayState* play) {
|
||||
gSaveContext.respawnFlag = -1;
|
||||
play->sceneLoadFlag = 0x14;
|
||||
|
||||
if ((play->sceneNum == SCENE_GANON_SONOGO) || (play->sceneNum == SCENE_GANON_FINAL) ||
|
||||
(play->sceneNum == SCENE_GANONTIKA_SONOGO) || (play->sceneNum == SCENE_GANON_DEMO)) {
|
||||
if ((play->sceneNum == SCENE_GANONS_TOWER_COLLAPSE_INTERIOR) || (play->sceneNum == SCENE_GANONS_TOWER_COLLAPSE_EXTERIOR) ||
|
||||
(play->sceneNum == SCENE_INSIDE_GANONS_CASTLE_COLLAPSE) || (play->sceneNum == SCENE_GANON_BOSS)) {
|
||||
play->nextEntranceIndex = 0x043F;
|
||||
Item_Give(play, ITEM_SWORD_MASTER);
|
||||
} else if ((gSaveContext.entranceIndex == 0x028A) || (gSaveContext.entranceIndex == 0x028E) ||
|
||||
@ -2254,7 +2254,7 @@ void Play_TriggerRespawn(PlayState* play) {
|
||||
|
||||
s32 func_800C0CB8(PlayState* play) {
|
||||
return (play->roomCtx.curRoom.meshHeader->base.type != 1) && (YREG(15) != 0x20) && (YREG(15) != 0x30) &&
|
||||
(YREG(15) != 0x40) && (play->sceneNum != SCENE_HAIRAL_NIWA);
|
||||
(YREG(15) != 0x40) && (play->sceneNum != SCENE_CASTLE_COURTYARD_GUARDS_DAY);
|
||||
}
|
||||
|
||||
s32 FrameAdvance_IsEnabled(PlayState* play) {
|
||||
|
@ -645,7 +645,7 @@ void func_80097534(PlayState* play, RoomContext* roomCtx) {
|
||||
func_80031B14(play, &play->actorCtx); //kills all actors without room num set to -1
|
||||
Actor_SpawnTransitionActors(play, &play->actorCtx);
|
||||
Map_InitRoomData(play, roomCtx->curRoom.num);
|
||||
if (!((play->sceneNum >= SCENE_SPOT00) && (play->sceneNum <= SCENE_SPOT20))) {
|
||||
if (!((play->sceneNum >= SCENE_HYRULE_FIELD) && (play->sceneNum <= SCENE_LON_LON_RANCH))) {
|
||||
Map_SavePlayerInitialInfo(play);
|
||||
}
|
||||
Audio_SetEnvReverb(play->roomCtx.curRoom.echo);
|
||||
|
@ -38,19 +38,19 @@ void Object_InitBank(PlayState* play, ObjectContext* objectCtx) {
|
||||
size_t spaceSize;
|
||||
s32 i;
|
||||
|
||||
if (play2->sceneNum == SCENE_SPOT00) {
|
||||
if (play2->sceneNum == SCENE_HYRULE_FIELD) {
|
||||
spaceSize = 1024000;
|
||||
} else if (play2->sceneNum == SCENE_GANON_DEMO) {
|
||||
} else if (play2->sceneNum == SCENE_GANON_BOSS) {
|
||||
if (gSaveContext.sceneSetupIndex != 4) {
|
||||
spaceSize = 1177600;
|
||||
} else {
|
||||
spaceSize = 1024000;
|
||||
}
|
||||
} else if (play2->sceneNum == SCENE_JYASINBOSS) {
|
||||
} else if (play2->sceneNum == SCENE_SPIRIT_TEMPLE_BOSS) {
|
||||
spaceSize = 1075200;
|
||||
} else if (play2->sceneNum == SCENE_KENJYANOMA) {
|
||||
} else if (play2->sceneNum == SCENE_CHAMBER_OF_THE_SAGES) {
|
||||
spaceSize = 1075200;
|
||||
} else if (play2->sceneNum == SCENE_GANON_BOSS) {
|
||||
} else if (play2->sceneNum == SCENE_GANONDORF_BOSS) {
|
||||
spaceSize = 1075200;
|
||||
} else {
|
||||
spaceSize = 1024000;
|
||||
@ -450,14 +450,14 @@ void Scene_CommandMiscSettings(PlayState* play, SceneCmd* cmd) {
|
||||
YREG(15) = cmd->miscSettings.cameraMovement;
|
||||
gSaveContext.worldMapArea = cmd->miscSettings.area;
|
||||
|
||||
if ((play->sceneNum == SCENE_SHOP1) || (play->sceneNum == SCENE_SYATEKIJYOU)) {
|
||||
if ((play->sceneNum == SCENE_BAZAAR) || (play->sceneNum == SCENE_SHOOTING_GALLERY)) {
|
||||
if (LINK_AGE_IN_YEARS == YEARS_ADULT) {
|
||||
gSaveContext.worldMapArea = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (((play->sceneNum >= SCENE_SPOT00) && (play->sceneNum <= SCENE_GANON_TOU)) ||
|
||||
((play->sceneNum >= SCENE_ENTRA) && (play->sceneNum <= SCENE_SHRINE_R))) {
|
||||
if (((play->sceneNum >= SCENE_HYRULE_FIELD) && (play->sceneNum <= SCENE_OUTSIDE_GANONS_CASTLE)) ||
|
||||
((play->sceneNum >= SCENE_MARKET_ENTRANCE_DAY) && (play->sceneNum <= SCENE_TEMPLE_OF_TIME_EXTERIOR_RUINS))) {
|
||||
if (gSaveContext.cutsceneIndex < 0xFFF0) {
|
||||
gSaveContext.worldMapAreaData |= gBitFlags[gSaveContext.worldMapArea];
|
||||
osSyncPrintf("000 area_arrival=%x (%d)\n", gSaveContext.worldMapAreaData,
|
||||
|
@ -819,130 +819,31 @@ EntranceInfo gEntranceTable[] = {
|
||||
// (u32)_##title##SegmentRomEnd, unk_10, config, unk_12, 0 \
|
||||
// }
|
||||
|
||||
#define TITLED_SCENE(name, title, unk_10, config, unk_12) \
|
||||
{ \
|
||||
{0, 0, #name}, {0, 0, #title}, unk_10, config, unk_12, 0 \
|
||||
}
|
||||
//#define TITLED_SCENE(name, title, unk_10, config, unk_12) \
|
||||
// { \
|
||||
// {0, 0, #name}, {0, 0, #title}, unk_10, config, unk_12, 0 \
|
||||
// }
|
||||
|
||||
//#define UNTITLED_SCENE(name, unk_10, config, unk_12) \
|
||||
//{ (u32) _##name##SegmentRomStart, (u32)_##name##SegmentRomEnd, 0, 0, unk_10, config, unk_12, 0 }
|
||||
|
||||
#define UNTITLED_SCENE(name, unk_10, config, unk_12) \
|
||||
{ { 0, 0, #name }, (u32)0, 0, 0, unk_10, config, unk_12, 0 }
|
||||
//#define UNTITLED_SCENE(name, unk_10, config, unk_12) \
|
||||
// { { 0, 0, #name }, (u32)0, 0, 0, unk_10, config, unk_12, 0 }
|
||||
|
||||
#define DEFINE_SCENE(name, title, _2, config, unk_10, unk_12) \
|
||||
{ { 0, 0, #name }, {0, 0, #title}, unk_10, config, unk_12, 0 },
|
||||
|
||||
// Handle `none` as a special case for scenes without a title card
|
||||
#define none ""
|
||||
|
||||
SceneTableEntry gSceneTable[] = {
|
||||
TITLED_SCENE(ydan_scene, g_pn_06, 1, 19, 2),
|
||||
TITLED_SCENE(ddan_scene, g_pn_08, 1, 20, 3),
|
||||
TITLED_SCENE(bdan_scene, g_pn_07, 1, 21, 4),
|
||||
TITLED_SCENE(Bmori1_scene, g_pn_01, 2, 22, 5),
|
||||
TITLED_SCENE(HIDAN_scene, g_pn_03, 2, 18, 6),
|
||||
TITLED_SCENE(MIZUsin_scene, g_pn_04, 1, 23, 7),
|
||||
TITLED_SCENE(jyasinzou_scene, g_pn_05, 1, 25, 8),
|
||||
TITLED_SCENE(HAKAdan_scene, g_pn_02, 2, 24, 9),
|
||||
TITLED_SCENE(HAKAdanCH_scene, g_pn_54, 2, 24, 10),
|
||||
TITLED_SCENE(ice_doukutu_scene, g_pn_10, 0, 37, 0),
|
||||
UNTITLED_SCENE(ganon_scene, 2, 0, 0),
|
||||
TITLED_SCENE(men_scene, g_pn_11, 0, 27, 0),
|
||||
TITLED_SCENE(gerudoway_scene, g_pn_49, 0, 40, 0),
|
||||
TITLED_SCENE(ganontika_scene, g_pn_09, 0, 26, 0),
|
||||
UNTITLED_SCENE(ganon_sonogo_scene, 0, 51, 0),
|
||||
UNTITLED_SCENE(ganontikasonogo_scene, 0, 52, 0),
|
||||
TITLED_SCENE(takaraya_scene, g_pn_51, 0, 0, 0),
|
||||
UNTITLED_SCENE(ydan_boss_scene, 0, 28, 0),
|
||||
UNTITLED_SCENE(ddan_boss_scene, 0, 0, 0),
|
||||
UNTITLED_SCENE(bdan_boss_scene, 0, 21, 0),
|
||||
UNTITLED_SCENE(moribossroom_scene, 1, 0, 0),
|
||||
UNTITLED_SCENE(FIRE_bs_scene, 0, 18, 0),
|
||||
UNTITLED_SCENE(MIZUsin_bs_scene, 0, 29, 0),
|
||||
UNTITLED_SCENE(jyasinboss_scene, 0, 0, 0),
|
||||
UNTITLED_SCENE(HAKAdan_bs_scene, 0, 24, 0),
|
||||
UNTITLED_SCENE(ganon_boss_scene, 0, 0, 0),
|
||||
UNTITLED_SCENE(ganon_final_scene, 0, 38, 0),
|
||||
UNTITLED_SCENE(entra_scene, 0, 0, 0),
|
||||
UNTITLED_SCENE(entra_n_scene, 0, 0, 0),
|
||||
UNTITLED_SCENE(enrui_scene, 0, 0, 0),
|
||||
TITLED_SCENE(market_alley_scene, g_pn_18, 0, 0, 0),
|
||||
TITLED_SCENE(market_alley_n_scene, g_pn_18, 0, 0, 0),
|
||||
TITLED_SCENE(market_day_scene, g_pn_17, 0, 0, 0),
|
||||
TITLED_SCENE(market_night_scene, g_pn_17, 0, 0, 0),
|
||||
TITLED_SCENE(market_ruins_scene, g_pn_17, 0, 0, 0),
|
||||
UNTITLED_SCENE(shrine_scene, 0, 0, 0),
|
||||
UNTITLED_SCENE(shrine_n_scene, 0, 0, 0),
|
||||
UNTITLED_SCENE(shrine_r_scene, 0, 0, 0),
|
||||
UNTITLED_SCENE(kokiri_home_scene, 0, 0, 0),
|
||||
UNTITLED_SCENE(kokiri_home3_scene, 0, 0, 0),
|
||||
UNTITLED_SCENE(kokiri_home4_scene, 0, 0, 0),
|
||||
UNTITLED_SCENE(kokiri_home5_scene, 0, 0, 0),
|
||||
UNTITLED_SCENE(kakariko_scene, 0, 0, 0),
|
||||
UNTITLED_SCENE(kakariko3_scene, 0, 0, 0),
|
||||
TITLED_SCENE(shop1_scene, g_pn_23, 0, 0, 0),
|
||||
TITLED_SCENE(kokiri_shop_scene, g_pn_19, 0, 0, 0),
|
||||
TITLED_SCENE(golon_scene, g_pn_20, 0, 0, 0),
|
||||
TITLED_SCENE(zoora_scene, g_pn_21, 0, 0, 0),
|
||||
TITLED_SCENE(drag_scene, g_pn_24, 0, 0, 0),
|
||||
TITLED_SCENE(alley_shop_scene, g_pn_24, 0, 0, 0),
|
||||
TITLED_SCENE(night_shop_scene, g_pn_56, 0, 0, 0),
|
||||
TITLED_SCENE(face_shop_scene, g_pn_50, 0, 0, 0),
|
||||
UNTITLED_SCENE(link_home_scene, 0, 0, 0),
|
||||
UNTITLED_SCENE(impa_scene, 0, 0, 0),
|
||||
TITLED_SCENE(malon_stable_scene, g_pn_48, 0, 0, 0),
|
||||
UNTITLED_SCENE(labo_scene, 0, 0, 0),
|
||||
TITLED_SCENE(hylia_labo_scene, g_pn_26, 0, 43, 0),
|
||||
UNTITLED_SCENE(tent_scene, 0, 0, 0),
|
||||
TITLED_SCENE(hut_scene, g_pn_25, 0, 0, 0),
|
||||
TITLED_SCENE(daiyousei_izumi_scene, g_pn_13, 0, 33, 0),
|
||||
TITLED_SCENE(yousei_izumi_tate_scene, g_pn_45, 0, 39, 0),
|
||||
TITLED_SCENE(yousei_izumi_yoko_scene, g_pn_13, 0, 33, 0),
|
||||
UNTITLED_SCENE(kakusiana_scene, 0, 31, 0),
|
||||
UNTITLED_SCENE(hakaana_scene, 0, 48, 0),
|
||||
UNTITLED_SCENE(hakaana2_scene, 0, 39, 0),
|
||||
TITLED_SCENE(hakaana_ouke_scene, g_pn_44, 0, 42, 0),
|
||||
TITLED_SCENE(syatekijyou_scene, g_pn_15, 0, 34, 0),
|
||||
TITLED_SCENE(tokinoma_scene, g_pn_16, 0, 30, 0),
|
||||
TITLED_SCENE(kenjyanoma_scene, g_pn_14, 0, 32, 0),
|
||||
TITLED_SCENE(hairal_niwa_scene, g_pn_12, 0, 35, 0),
|
||||
TITLED_SCENE(hairal_niwa_n_scene, g_pn_12, 0, 35, 0),
|
||||
UNTITLED_SCENE(hiral_demo_scene, 0, 0, 0),
|
||||
TITLED_SCENE(hakasitarelay_scene, g_pn_57, 0, 48, 0),
|
||||
TITLED_SCENE(turibori_scene, g_pn_46, 0, 50, 0),
|
||||
TITLED_SCENE(nakaniwa_scene, g_pn_12, 0, 47, 0),
|
||||
TITLED_SCENE(bowling_scene, g_pn_47, 0, 41, 0),
|
||||
UNTITLED_SCENE(souko_scene, 0, 44, 0),
|
||||
UNTITLED_SCENE(miharigoya_scene, 0, 45, 0),
|
||||
TITLED_SCENE(mahouya_scene, g_pn_24, 0, 46, 0),
|
||||
UNTITLED_SCENE(ganon_demo_scene, 0, 36, 0),
|
||||
TITLED_SCENE(kinsuta_scene, g_pn_22, 0, 0, 0),
|
||||
TITLED_SCENE(spot00_scene, g_pn_27, 0, 1, 0),
|
||||
TITLED_SCENE(spot01_scene, g_pn_28, 0, 2, 0),
|
||||
TITLED_SCENE(spot02_scene, g_pn_29, 0, 0, 0),
|
||||
TITLED_SCENE(spot03_scene, g_pn_30, 0, 3, 0),
|
||||
TITLED_SCENE(spot04_scene, g_pn_31, 0, 4, 0),
|
||||
TITLED_SCENE(spot05_scene, g_pn_52, 0, 47, 0),
|
||||
TITLED_SCENE(spot06_scene, g_pn_32, 0, 5, 0),
|
||||
TITLED_SCENE(spot07_scene, g_pn_33, 0, 6, 0),
|
||||
TITLED_SCENE(spot08_scene, g_pn_34, 0, 7, 0),
|
||||
TITLED_SCENE(spot09_scene, g_pn_35, 0, 8, 0),
|
||||
TITLED_SCENE(spot10_scene, g_pn_36, 0, 9, 0),
|
||||
TITLED_SCENE(spot11_scene, g_pn_55, 0, 10, 0),
|
||||
TITLED_SCENE(spot12_scene, g_pn_53, 0, 11, 0),
|
||||
TITLED_SCENE(spot13_scene, g_pn_37, 0, 12, 0),
|
||||
TITLED_SCENE(spot15_scene, g_pn_38, 0, 13, 0),
|
||||
TITLED_SCENE(spot16_scene, g_pn_39, 0, 14, 0),
|
||||
TITLED_SCENE(spot17_scene, g_pn_40, 0, 15, 0),
|
||||
TITLED_SCENE(spot18_scene, g_pn_41, 0, 16, 0),
|
||||
TITLED_SCENE(spot20_scene, g_pn_42, 0, 17, 0),
|
||||
TITLED_SCENE(ganon_tou_scene, g_pn_43, 0, 36, 0),
|
||||
UNTITLED_SCENE(test01_scene, 0, 47, 0),
|
||||
UNTITLED_SCENE(besitu_scene, 0, 49, 0),
|
||||
UNTITLED_SCENE(depth_test_scene, 0, 0, 0),
|
||||
UNTITLED_SCENE(syotes_scene, 0, 0, 0),
|
||||
UNTITLED_SCENE(syotes2_scene, 0, 0, 0),
|
||||
UNTITLED_SCENE(sutaru_scene, 0, 0, 0),
|
||||
TITLED_SCENE(hairal_niwa2_scene, g_pn_12, 0, 35, 0),
|
||||
UNTITLED_SCENE(sasatest_scene, 0, 0, 0),
|
||||
UNTITLED_SCENE(testroom_scene, 0, 0, 0),
|
||||
#include "tables/scene_table.h"
|
||||
};
|
||||
|
||||
#undef none
|
||||
|
||||
#undef DEFINE_SCENE
|
||||
|
||||
Gfx sDefaultDisplayList[] = {
|
||||
gsSPSegment(0x08, gEmptyDL),
|
||||
gsSPSegment(0x09, gEmptyDL),
|
||||
@ -1276,7 +1177,7 @@ void func_8009AE30(PlayState* play) {
|
||||
|
||||
gameplayFrames = play->gameplayFrames;
|
||||
|
||||
if (play->sceneNum == SCENE_HAKADAN_BS) {
|
||||
if (play->sceneNum == SCENE_SHADOW_TEMPLE_BOSS) {
|
||||
gSPSegment(POLY_OPA_DISP++, 0x08,
|
||||
Gfx_TwoTexScroll(play->state.gfxCtx, 0, (gameplayFrames * 2) % 128, 0, 32, 32, 1,
|
||||
(gameplayFrames * 2) % 128, 0, 32, 32));
|
||||
@ -1444,7 +1345,7 @@ void func_8009BAA4(PlayState* play) {
|
||||
Gfx_TwoTexScroll(play->state.gfxCtx, 0, 127 - gameplayFrames % 128, (gameplayFrames * 3) % 128, 32,
|
||||
32, 1, gameplayFrames % 128, (gameplayFrames * 3) % 128, 32, 32));
|
||||
|
||||
if (play->sceneNum == SCENE_HAIRAL_NIWA) {
|
||||
if (play->sceneNum == SCENE_CASTLE_COURTYARD_GUARDS_DAY) {
|
||||
gSPSegment(POLY_XLU_DISP++, 0x09,
|
||||
Gfx_TexScroll(play->state.gfxCtx, 0, (gameplayFrames * 10) % 256, 32, 64));
|
||||
}
|
||||
@ -1469,7 +1370,7 @@ void func_8009BC44(PlayState* play) {
|
||||
|
||||
gameplayFrames = play->gameplayFrames;
|
||||
|
||||
if (play->sceneNum == SCENE_GANON_TOU) {
|
||||
if (play->sceneNum == SCENE_OUTSIDE_GANONS_CASTLE) {
|
||||
gSPSegment(POLY_XLU_DISP++, 0x09,
|
||||
Gfx_TexScroll(play->state.gfxCtx, 0, (gameplayFrames * 1) % 256, 64, 64));
|
||||
gSPSegment(POLY_XLU_DISP++, 0x08,
|
||||
@ -1547,8 +1448,8 @@ void func_8009C0AC(PlayState* play) {
|
||||
CLOSE_DISPS(play->state.gfxCtx);
|
||||
|
||||
if (Flags_GetSwitch(play, 0x37)) {
|
||||
if ((play->sceneNum == SCENE_GANON_DEMO) || (play->sceneNum == SCENE_GANON_FINAL) ||
|
||||
(play->sceneNum == SCENE_GANON_SONOGO) || (play->sceneNum == SCENE_GANONTIKA_SONOGO)) {
|
||||
if ((play->sceneNum == SCENE_GANON_BOSS) || (play->sceneNum == SCENE_GANONS_TOWER_COLLAPSE_EXTERIOR) ||
|
||||
(play->sceneNum == SCENE_GANONS_TOWER_COLLAPSE_INTERIOR) || (play->sceneNum == SCENE_INSIDE_GANONS_CASTLE_COLLAPSE)) {
|
||||
func_8009BEEC(play);
|
||||
}
|
||||
}
|
||||
@ -2444,7 +2345,7 @@ void func_8009FE58(PlayState* play) {
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
gameplayFrames = play->gameplayFrames;
|
||||
if (play->sceneNum == SCENE_BDAN) {
|
||||
if (play->sceneNum == SCENE_JABU_JABU) {
|
||||
gSPSegment(POLY_OPA_DISP++, 0x08,
|
||||
Gfx_TwoTexScroll(play->state.gfxCtx, 0, gameplayFrames % 128, (gameplayFrames * 2) % 128, 32,
|
||||
32, 1, 127 - gameplayFrames % 128, (gameplayFrames * 2) % 128, 32, 32));
|
||||
|
@ -56,59 +56,59 @@ void Sram_OpenSave() {
|
||||
|
||||
Save_LoadFile();
|
||||
|
||||
if (!CVarGetInteger("gRememberSaveLocation", 0) || gSaveContext.savedSceneNum == SCENE_YOUSEI_IZUMI_TATE ||
|
||||
gSaveContext.savedSceneNum == SCENE_KAKUSIANA) {
|
||||
if (!CVarGetInteger("gRememberSaveLocation", 0) || gSaveContext.savedSceneNum == SCENE_FAIRYS_FOUNTAIN ||
|
||||
gSaveContext.savedSceneNum == SCENE_GROTTOS) {
|
||||
switch (gSaveContext.savedSceneNum) {
|
||||
case SCENE_YDAN:
|
||||
case SCENE_DDAN:
|
||||
case SCENE_BDAN:
|
||||
case SCENE_BMORI1:
|
||||
case SCENE_HIDAN:
|
||||
case SCENE_MIZUSIN:
|
||||
case SCENE_JYASINZOU:
|
||||
case SCENE_HAKADAN:
|
||||
case SCENE_HAKADANCH:
|
||||
case SCENE_ICE_DOUKUTO:
|
||||
case SCENE_GANON:
|
||||
case SCENE_MEN:
|
||||
case SCENE_GERUDOWAY:
|
||||
case SCENE_GANONTIKA:
|
||||
case SCENE_DEKU_TREE:
|
||||
case SCENE_DODONGOS_CAVERN:
|
||||
case SCENE_JABU_JABU:
|
||||
case SCENE_FOREST_TEMPLE:
|
||||
case SCENE_FIRE_TEMPLE:
|
||||
case SCENE_WATER_TEMPLE:
|
||||
case SCENE_SPIRIT_TEMPLE:
|
||||
case SCENE_SHADOW_TEMPLE:
|
||||
case SCENE_BOTTOM_OF_THE_WELL:
|
||||
case SCENE_ICE_CAVERN:
|
||||
case SCENE_GANONS_TOWER:
|
||||
case SCENE_GERUDO_TRAINING_GROUND:
|
||||
case SCENE_THIEVES_HIDEOUT:
|
||||
case SCENE_INSIDE_GANONS_CASTLE:
|
||||
gSaveContext.entranceIndex = dungeonEntrances[gSaveContext.savedSceneNum];
|
||||
break;
|
||||
case SCENE_YDAN_BOSS:
|
||||
case SCENE_DEKU_TREE_BOSS:
|
||||
gSaveContext.entranceIndex = 0;
|
||||
break;
|
||||
case SCENE_DDAN_BOSS:
|
||||
case SCENE_DODONGOS_CAVERN_BOSS:
|
||||
gSaveContext.entranceIndex = 4;
|
||||
break;
|
||||
case SCENE_BDAN_BOSS:
|
||||
case SCENE_JABU_JABU_BOSS:
|
||||
gSaveContext.entranceIndex = 0x28;
|
||||
break;
|
||||
case SCENE_MORIBOSSROOM:
|
||||
case SCENE_FOREST_TEMPLE_BOSS:
|
||||
gSaveContext.entranceIndex = 0x169;
|
||||
break;
|
||||
case SCENE_FIRE_BS:
|
||||
case SCENE_FIRE_TEMPLE_BOSS:
|
||||
gSaveContext.entranceIndex = 0x165;
|
||||
break;
|
||||
case SCENE_MIZUSIN_BS:
|
||||
case SCENE_WATER_TEMPLE_BOSS:
|
||||
gSaveContext.entranceIndex = 0x10;
|
||||
break;
|
||||
case SCENE_JYASINBOSS:
|
||||
case SCENE_SPIRIT_TEMPLE_BOSS:
|
||||
gSaveContext.entranceIndex = 0x82;
|
||||
break;
|
||||
case SCENE_HAKADAN_BS:
|
||||
case SCENE_SHADOW_TEMPLE_BOSS:
|
||||
gSaveContext.entranceIndex = 0x37;
|
||||
break;
|
||||
case SCENE_GANON_SONOGO:
|
||||
case SCENE_GANONTIKA_SONOGO:
|
||||
case SCENE_GANONS_TOWER_COLLAPSE_INTERIOR:
|
||||
case SCENE_INSIDE_GANONS_CASTLE_COLLAPSE:
|
||||
case SCENE_GANONDORF_BOSS:
|
||||
case SCENE_GANONS_TOWER_COLLAPSE_EXTERIOR:
|
||||
case SCENE_GANON_BOSS:
|
||||
case SCENE_GANON_FINAL:
|
||||
case SCENE_GANON_DEMO:
|
||||
gSaveContext.entranceIndex = 0x41B;
|
||||
break;
|
||||
|
||||
default:
|
||||
if (gSaveContext.savedSceneNum != SCENE_LINK_HOME) {
|
||||
if (gSaveContext.savedSceneNum != SCENE_LINKS_HOUSE) {
|
||||
gSaveContext.entranceIndex = (LINK_AGE_IN_YEARS == YEARS_CHILD) ? 0xBB : 0x5F4;
|
||||
} else {
|
||||
gSaveContext.entranceIndex = 0xBB;
|
||||
|
@ -95,7 +95,7 @@ void BgDyYoseizo_Init(Actor* thisx, PlayState* play2) {
|
||||
this->grownHeight = this->vanishHeight + 40.0f;
|
||||
this->actor.focus.pos = this->actor.world.pos;
|
||||
|
||||
if (play->sceneNum == SCENE_DAIYOUSEI_IZUMI) {
|
||||
if (play->sceneNum == SCENE_GREAT_FAIRYS_FOUNTAIN_MAGIC) {
|
||||
// "Great Fairy Fountain"
|
||||
osSyncPrintf(VT_FGCOL(GREEN) "☆☆☆☆☆ 大妖精の泉 ☆☆☆☆☆ %d\n" VT_RST, play->curSpawn);
|
||||
SkelAnime_InitFlex(play, &this->skelAnime, &gGreatFairySkel, &gGreatFairySittingTransitionAnim,
|
||||
@ -156,7 +156,7 @@ void BgDyYoseizo_SpawnParticles(BgDyYoseizo* this, PlayState* play, s16 type) {
|
||||
particleScale = 0.2f;
|
||||
particleInitPos.x = this->actor.world.pos.x + Rand_CenteredFloat(10.0f);
|
||||
|
||||
if (play->sceneNum == SCENE_DAIYOUSEI_IZUMI) {
|
||||
if (play->sceneNum == SCENE_GREAT_FAIRYS_FOUNTAIN_MAGIC) {
|
||||
particleInitPos.y = this->actor.world.pos.y + spawnPosVariation + 50.0f +
|
||||
((Rand_ZeroOne() - 0.5f) * (spawnPosVariation * 0.1f));
|
||||
particleInitPos.z = this->actor.world.pos.z + 30.0f;
|
||||
@ -210,7 +210,7 @@ void BgDyYoseizo_CheckMagicAcquired(BgDyYoseizo* this, PlayState* play) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (play->sceneNum == SCENE_DAIYOUSEI_IZUMI) {
|
||||
if (play->sceneNum == SCENE_GREAT_FAIRYS_FOUNTAIN_MAGIC) {
|
||||
if (!gSaveContext.isMagicAcquired && (this->fountainType != FAIRY_UPGRADE_MAGIC)) {
|
||||
Actor_Kill(&this->actor);
|
||||
return;
|
||||
@ -234,7 +234,7 @@ void BgDyYoseizo_ChooseType(BgDyYoseizo* this, PlayState* play) {
|
||||
osSyncPrintf(VT_FGCOL(YELLOW) "☆☆☆☆☆ もうど ☆☆☆☆☆ %d\n" VT_RST, play->msgCtx.ocarinaMode);
|
||||
givingReward = false;
|
||||
|
||||
if (play->sceneNum != SCENE_DAIYOUSEI_IZUMI) {
|
||||
if (play->sceneNum != SCENE_GREAT_FAIRYS_FOUNTAIN_MAGIC) {
|
||||
switch (this->fountainType) {
|
||||
case FAIRY_SPELL_FARORES_WIND:
|
||||
if (!Flags_GetItemGetInf(ITEMGETINF_18)) {
|
||||
@ -283,7 +283,7 @@ void BgDyYoseizo_ChooseType(BgDyYoseizo* this, PlayState* play) {
|
||||
|
||||
if (givingReward) {
|
||||
if (gSaveContext.sceneSetupIndex < 4) {
|
||||
if (play->sceneNum != SCENE_DAIYOUSEI_IZUMI) {
|
||||
if (play->sceneNum != SCENE_GREAT_FAIRYS_FOUNTAIN_MAGIC) {
|
||||
switch (this->fountainType) {
|
||||
case FAIRY_SPELL_FARORES_WIND:
|
||||
play->csCtx.segment = SEGMENTED_TO_VIRTUAL(gGreatFairyFaroresWindCs);
|
||||
@ -321,7 +321,7 @@ void BgDyYoseizo_ChooseType(BgDyYoseizo* this, PlayState* play) {
|
||||
|
||||
play->envCtx.unk_BF = 2;
|
||||
|
||||
if (play->sceneNum == SCENE_DAIYOUSEI_IZUMI) {
|
||||
if (play->sceneNum == SCENE_GREAT_FAIRYS_FOUNTAIN_MAGIC) {
|
||||
OnePointCutscene_Init(play, 8603, -99, NULL, MAIN_CAM);
|
||||
} else {
|
||||
OnePointCutscene_Init(play, 8604, -99, NULL, MAIN_CAM);
|
||||
@ -334,7 +334,7 @@ void BgDyYoseizo_ChooseType(BgDyYoseizo* this, PlayState* play) {
|
||||
|
||||
// Sets animations for spingrow
|
||||
void BgDyYoseizo_SetupSpinGrow_NoReward(BgDyYoseizo* this, PlayState* play) {
|
||||
if (play->sceneNum == SCENE_DAIYOUSEI_IZUMI) {
|
||||
if (play->sceneNum == SCENE_GREAT_FAIRYS_FOUNTAIN_MAGIC) {
|
||||
this->frameCount = Animation_GetLastFrame(&gGreatFairySittingTransitionAnim);
|
||||
Animation_Change(&this->skelAnime, &gGreatFairySittingTransitionAnim, 1.0f, 0.0f, this->frameCount,
|
||||
ANIMMODE_ONCE, -10.0f);
|
||||
@ -392,7 +392,7 @@ void BgDyYoseizo_CompleteSpinGrow_NoReward(BgDyYoseizo* this, PlayState* play) {
|
||||
void BgDyYoseizo_SetupGreetPlayer_NoReward(BgDyYoseizo* this, PlayState* play) {
|
||||
func_8002DF54(play, &this->actor, 1);
|
||||
|
||||
if (play->sceneNum == SCENE_DAIYOUSEI_IZUMI) {
|
||||
if (play->sceneNum == SCENE_GREAT_FAIRYS_FOUNTAIN_MAGIC) {
|
||||
this->frameCount = Animation_GetLastFrame(&gGreatFairySittingAnim);
|
||||
Animation_Change(&this->skelAnime, &gGreatFairySittingAnim, 1.0f, 0.0f, this->frameCount, ANIMMODE_LOOP,
|
||||
-10.0f);
|
||||
@ -430,7 +430,7 @@ void BgDyYoseizo_GreetPlayer_NoReward(BgDyYoseizo* this, PlayState* play) {
|
||||
}
|
||||
|
||||
void BgDyYoseizo_SetupHealPlayer_NoReward(BgDyYoseizo* this, PlayState* play) {
|
||||
if (play->sceneNum == SCENE_DAIYOUSEI_IZUMI) {
|
||||
if (play->sceneNum == SCENE_GREAT_FAIRYS_FOUNTAIN_MAGIC) {
|
||||
this->frameCount = Animation_GetLastFrame(&gGreatFairyGivingUpgradeAnim);
|
||||
Animation_Change(&this->skelAnime, &gGreatFairyGivingUpgradeAnim, 1.0f, 0.0f, this->frameCount, ANIMMODE_ONCE,
|
||||
-10.0f);
|
||||
@ -460,7 +460,7 @@ void BgDyYoseizo_HealPlayer_NoReward(BgDyYoseizo* this, PlayState* play) {
|
||||
|
||||
SkelAnime_Update(&this->skelAnime);
|
||||
if ((this->frameCount <= curFrame) && !(this->animationChanged)) {
|
||||
if (play->sceneNum == SCENE_DAIYOUSEI_IZUMI) {
|
||||
if (play->sceneNum == SCENE_GREAT_FAIRYS_FOUNTAIN_MAGIC) {
|
||||
this->frameCount = Animation_GetLastFrame(&gGreatFairyAfterUpgradeAnim);
|
||||
Animation_Change(&this->skelAnime, &gGreatFairyAfterUpgradeAnim, 1.0f, 0.0f, this->frameCount,
|
||||
ANIMMODE_LOOP, -10.0f);
|
||||
@ -476,7 +476,7 @@ void BgDyYoseizo_HealPlayer_NoReward(BgDyYoseizo* this, PlayState* play) {
|
||||
beamPos.y = player->actor.world.pos.y + 200.0f;
|
||||
beamPos.z = player->actor.world.pos.z;
|
||||
|
||||
beamParams = ((play->sceneNum == SCENE_DAIYOUSEI_IZUMI) ? 0 : 1);
|
||||
beamParams = ((play->sceneNum == SCENE_GREAT_FAIRYS_FOUNTAIN_MAGIC) ? 0 : 1);
|
||||
|
||||
this->beam =
|
||||
(EnDyExtra*)Actor_SpawnAsChild(&play->actorCtx, &this->actor, play, ACTOR_EN_DY_EXTRA,
|
||||
@ -539,7 +539,7 @@ void BgDyYoseizo_SayFarewell_NoReward(BgDyYoseizo* this, PlayState* play) {
|
||||
}
|
||||
|
||||
void BgDyYoseizo_SetupSpinShrink(BgDyYoseizo* this, PlayState* play) {
|
||||
if (play->sceneNum == SCENE_DAIYOUSEI_IZUMI) {
|
||||
if (play->sceneNum == SCENE_GREAT_FAIRYS_FOUNTAIN_MAGIC) {
|
||||
this->frameCount = Animation_GetLastFrame(&gGreatFairyJewelFountainSpinShrinkAnim);
|
||||
Animation_Change(&this->skelAnime, &gGreatFairyJewelFountainSpinShrinkAnim, 1.0f, 0.0f, this->frameCount,
|
||||
ANIMMODE_ONCE, -10.0f);
|
||||
@ -603,7 +603,7 @@ void BgDyYoseizo_SetupSpinGrow_Reward(BgDyYoseizo* this, PlayState* play) {
|
||||
func_8002DF54(play, &this->actor, 1);
|
||||
this->finishedSpinGrow = false;
|
||||
|
||||
if (play->sceneNum == SCENE_DAIYOUSEI_IZUMI) {
|
||||
if (play->sceneNum == SCENE_GREAT_FAIRYS_FOUNTAIN_MAGIC) {
|
||||
this->frameCount = Animation_GetLastFrame(&gGreatFairySittingTransitionAnim);
|
||||
Animation_Change(&this->skelAnime, &gGreatFairySittingTransitionAnim, 1.0f, 0.0f, this->frameCount,
|
||||
ANIMMODE_ONCE, -10.0f);
|
||||
@ -646,7 +646,7 @@ void BgDyYoseizo_SpinGrowSetupGive_Reward(BgDyYoseizo* this, PlayState* play) {
|
||||
SkelAnime_Update(&this->skelAnime);
|
||||
|
||||
if ((this->frameCount <= curFrame) && !this->animationChanged) {
|
||||
if (play->sceneNum == SCENE_DAIYOUSEI_IZUMI) {
|
||||
if (play->sceneNum == SCENE_GREAT_FAIRYS_FOUNTAIN_MAGIC) {
|
||||
this->frameCount = Animation_GetLastFrame(&gGreatFairySittingAnim);
|
||||
Animation_Change(&this->skelAnime, &gGreatFairySittingAnim, 1.0f, 0.0f, this->frameCount, ANIMMODE_LOOP,
|
||||
-10.0f);
|
||||
@ -661,7 +661,7 @@ void BgDyYoseizo_SpinGrowSetupGive_Reward(BgDyYoseizo* this, PlayState* play) {
|
||||
if ((play->csCtx.state != CS_STATE_IDLE) &&
|
||||
((play->csCtx.npcActions[0] != NULL) && (play->csCtx.npcActions[0]->action == 3))) {
|
||||
this->finishedSpinGrow = this->animationChanged = false;
|
||||
if (play->sceneNum == SCENE_DAIYOUSEI_IZUMI) {
|
||||
if (play->sceneNum == SCENE_GREAT_FAIRYS_FOUNTAIN_MAGIC) {
|
||||
this->frameCount = Animation_GetLastFrame(&gGreatFairyGivingUpgradeAnim);
|
||||
Animation_Change(&this->skelAnime, &gGreatFairyGivingUpgradeAnim, 1.0f, 0.0f, this->frameCount,
|
||||
ANIMMODE_ONCE, -10.0f);
|
||||
@ -701,7 +701,7 @@ void BgDyYoseizo_Give_Reward(BgDyYoseizo* this, PlayState* play) {
|
||||
SkelAnime_Update(&this->skelAnime);
|
||||
|
||||
if ((this->frameCount <= curFrame) && !this->animationChanged) {
|
||||
if (play->sceneNum == SCENE_DAIYOUSEI_IZUMI) {
|
||||
if (play->sceneNum == SCENE_GREAT_FAIRYS_FOUNTAIN_MAGIC) {
|
||||
this->frameCount = Animation_GetLastFrame(&gGreatFairyAfterUpgradeAnim);
|
||||
Animation_Change(&this->skelAnime, &gGreatFairyAfterUpgradeAnim, 1.0f, 0.0f, this->frameCount,
|
||||
ANIMMODE_LOOP, -10.0f);
|
||||
@ -720,7 +720,7 @@ void BgDyYoseizo_Give_Reward(BgDyYoseizo* this, PlayState* play) {
|
||||
|
||||
if ((play->csCtx.npcActions[0]->action >= 4) && (play->csCtx.npcActions[0]->action < 7)) {
|
||||
actionIndex = play->csCtx.npcActions[0]->action - 4;
|
||||
if (play->sceneNum == SCENE_DAIYOUSEI_IZUMI) {
|
||||
if (play->sceneNum == SCENE_GREAT_FAIRYS_FOUNTAIN_MAGIC) {
|
||||
actionIndex++;
|
||||
BgDyYoseizo_SpawnParticles(this, play, actionIndex);
|
||||
|
||||
@ -734,7 +734,7 @@ void BgDyYoseizo_Give_Reward(BgDyYoseizo* this, PlayState* play) {
|
||||
BgDyYoseizo_SpawnParticles(this, play, 0);
|
||||
}
|
||||
|
||||
if ((play->sceneNum == SCENE_DAIYOUSEI_IZUMI) && (play->csCtx.npcActions[0]->action >= 10) &&
|
||||
if ((play->sceneNum == SCENE_GREAT_FAIRYS_FOUNTAIN_MAGIC) && (play->csCtx.npcActions[0]->action >= 10) &&
|
||||
(play->csCtx.npcActions[0]->action < 13)) {
|
||||
actionIndex = play->csCtx.npcActions[0]->action - 10;
|
||||
|
||||
@ -768,7 +768,7 @@ void BgDyYoseizo_Give_Reward(BgDyYoseizo* this, PlayState* play) {
|
||||
}
|
||||
}
|
||||
|
||||
if ((play->sceneNum != SCENE_DAIYOUSEI_IZUMI) && (play->csCtx.npcActions[0]->action >= 14) &&
|
||||
if ((play->sceneNum != SCENE_GREAT_FAIRYS_FOUNTAIN_MAGIC) && (play->csCtx.npcActions[0]->action >= 14) &&
|
||||
(play->csCtx.npcActions[0]->action < 17)) {
|
||||
actionIndex = play->csCtx.npcActions[0]->action - 14;
|
||||
|
||||
@ -803,13 +803,13 @@ void BgDyYoseizo_Give_Reward(BgDyYoseizo* this, PlayState* play) {
|
||||
}
|
||||
}
|
||||
|
||||
if ((play->sceneNum != SCENE_DAIYOUSEI_IZUMI) && (play->csCtx.npcActions[0]->action == 17) &&
|
||||
if ((play->sceneNum != SCENE_GREAT_FAIRYS_FOUNTAIN_MAGIC) && (play->csCtx.npcActions[0]->action == 17) &&
|
||||
(this->item != NULL)) {
|
||||
Actor_Kill(&this->item->actor);
|
||||
this->item = NULL;
|
||||
}
|
||||
|
||||
if ((play->sceneNum == SCENE_DAIYOUSEI_IZUMI) && (play->csCtx.npcActions[0]->action == 18)) {
|
||||
if ((play->sceneNum == SCENE_GREAT_FAIRYS_FOUNTAIN_MAGIC) && (play->csCtx.npcActions[0]->action == 18)) {
|
||||
this->giveDefenseHearts = true;
|
||||
}
|
||||
|
||||
@ -850,7 +850,7 @@ void BgDyYoseizo_Update(Actor* thisx, PlayState* play2) {
|
||||
|
||||
if (play->csCtx.state != CS_STATE_IDLE) {
|
||||
phi_v1 = 0;
|
||||
if (play->sceneNum == SCENE_DAIYOUSEI_IZUMI) {
|
||||
if (play->sceneNum == SCENE_GREAT_FAIRYS_FOUNTAIN_MAGIC) {
|
||||
if ((play->csCtx.frames == 32) || (play->csCtx.frames == 291) ||
|
||||
(play->csCtx.frames == 426) || (play->csCtx.frames == 851)) {
|
||||
phi_v1 = 1;
|
||||
|
@ -47,7 +47,7 @@ void BgGateShutter_Init(Actor* thisx, PlayState* play) {
|
||||
if (((Flags_GetInfTable(INFTABLE_SHOWED_ZELDAS_LETTER_TO_GATE_GUARD)) ||
|
||||
(!gSaveContext.n64ddFlag && (Flags_GetEventChkInf(EVENTCHKINF_PULLED_MASTER_SWORD_FROM_PEDESTAL))) ||
|
||||
(gSaveContext.n64ddFlag && (Randomizer_GetSettingValue(RSK_KAK_GATE) == RO_KAK_GATE_OPEN))) &&
|
||||
(play->sceneNum == SCENE_SPOT01)) {
|
||||
(play->sceneNum == SCENE_KAKARIKO_VILLAGE)) {
|
||||
thisx->world.pos.x = -89.0f;
|
||||
thisx->world.pos.z = -1375.0f;
|
||||
}
|
||||
|
@ -69,7 +69,7 @@ void func_8087B7E8(BgHaka* this, PlayState* play) {
|
||||
Player* player = GET_PLAYER(play);
|
||||
|
||||
if (this->dyna.unk_150 != 0.0f) {
|
||||
if (play->sceneNum == SCENE_SPOT02 && !LINK_IS_ADULT && IS_DAY && !CVarGetInteger("gDayGravePull", 0)) {
|
||||
if (play->sceneNum == SCENE_GRAVEYARD && !LINK_IS_ADULT && IS_DAY && !CVarGetInteger("gDayGravePull", 0)) {
|
||||
this->dyna.unk_150 = 0.0f;
|
||||
player->stateFlags2 &= ~0x10;
|
||||
if (!Play_InCsMode(play)) {
|
||||
@ -78,7 +78,7 @@ void func_8087B7E8(BgHaka* this, PlayState* play) {
|
||||
this->actionFunc = func_8087BAE4;
|
||||
}
|
||||
} else if (0.0f < this->dyna.unk_150 ||
|
||||
(play->sceneNum == SCENE_SPOT06 && !LINK_IS_ADULT && !Flags_GetSwitch(play, 0x23))) {
|
||||
(play->sceneNum == SCENE_LAKE_HYLIA && !LINK_IS_ADULT && !Flags_GetSwitch(play, 0x23))) {
|
||||
this->dyna.unk_150 = 0.0f;
|
||||
player->stateFlags2 &= ~0x10;
|
||||
} else {
|
||||
@ -116,14 +116,14 @@ void func_8087B938(BgHaka* this, PlayState* play) {
|
||||
|
||||
if (this->dyna.actor.params == 1) {
|
||||
func_80078884(NA_SE_SY_CORRECT_CHIME);
|
||||
} else if (!IS_DAY && play->sceneNum == SCENE_SPOT02) {
|
||||
} else if (!IS_DAY && play->sceneNum == SCENE_GRAVEYARD) {
|
||||
Actor_Spawn(&play->actorCtx, play, ACTOR_EN_POH, this->dyna.actor.home.pos.x,
|
||||
this->dyna.actor.home.pos.y, this->dyna.actor.home.pos.z, 0, this->dyna.actor.shape.rot.y, 0,
|
||||
1, true);
|
||||
}
|
||||
|
||||
// un tss un tss
|
||||
if (play->sceneNum == SCENE_SPOT02 && allPulled) {
|
||||
if (play->sceneNum == SCENE_GRAVEYARD && allPulled) {
|
||||
func_80078884(NA_SE_SY_CORRECT_CHIME);
|
||||
func_800F5ACC(NA_BGM_STAFF_2);
|
||||
Actor* actor2 = play->actorCtx.actorLists[ACTORCAT_BG].head;
|
||||
|
@ -89,7 +89,7 @@ void BgHeavyBlock_Init(Actor* thisx, PlayState* play) {
|
||||
ActorShape_Init(&thisx->shape, 0.0f, NULL, 0.0f);
|
||||
this->pieceFlags = 0;
|
||||
|
||||
if (play->sceneNum == SCENE_GANON_TOU) {
|
||||
if (play->sceneNum == SCENE_OUTSIDE_GANONS_CASTLE) {
|
||||
thisx->params &= 0xFF00;
|
||||
thisx->params |= 4;
|
||||
}
|
||||
|
@ -45,7 +45,7 @@ void BgInGate_Init(Actor* thisx, PlayState* play) {
|
||||
|
||||
this->dyna.bgId = DynaPoly_SetBgActor(play, &play->colCtx.dyna, &this->dyna.actor, colHeader);
|
||||
|
||||
if ((play->sceneNum != SCENE_SPOT20 || !LINK_IS_ADULT) ||
|
||||
if ((play->sceneNum != SCENE_LON_LON_RANCH || !LINK_IS_ADULT) ||
|
||||
(((Flags_GetEventChkInf(EVENTCHKINF_EPONA_OBTAINED))) && (gSaveContext.cutsceneIndex != 0xFFF0))) {
|
||||
Actor_Kill(&this->dyna.actor);
|
||||
return;
|
||||
|
@ -212,7 +212,7 @@ void BgSpot00Hanebasi_Update(Actor* thisx, PlayState* play) {
|
||||
this->actionFunc(this, play);
|
||||
|
||||
if (this->dyna.actor.params == DT_DRAWBRIDGE) {
|
||||
if (play->sceneNum == SCENE_SPOT00) {
|
||||
if (play->sceneNum == SCENE_HYRULE_FIELD) {
|
||||
if (CHECK_QUEST_ITEM(QUEST_KOKIRI_EMERALD) && CHECK_QUEST_ITEM(QUEST_GORON_RUBY) &&
|
||||
CHECK_QUEST_ITEM(QUEST_ZORA_SAPPHIRE) && !Flags_GetEventChkInf(EVENTCHKINF_ZELDA_FLED_HYRULE_CASTLE) && LINK_IS_CHILD) {
|
||||
Player* player = GET_PLAYER(play);
|
||||
|
@ -77,7 +77,7 @@ void BgSpot02Objects_Init(Actor* thisx, PlayState* play) {
|
||||
CollisionHeader_GetVirtual(&object_spot02_objects_Col_0128D8, &colHeader);
|
||||
thisx->flags |= ACTOR_FLAG_IGNORE_POINTLIGHTS;
|
||||
} else {
|
||||
if (play->sceneNum == SCENE_SPOT02) {
|
||||
if (play->sceneNum == SCENE_GRAVEYARD) {
|
||||
this->actionFunc = func_808AC908;
|
||||
} else {
|
||||
this->actionFunc = func_808AC8FC;
|
||||
@ -88,7 +88,7 @@ void BgSpot02Objects_Init(Actor* thisx, PlayState* play) {
|
||||
|
||||
this->dyna.bgId = DynaPoly_SetBgActor(play, &play->colCtx.dyna, thisx, colHeader);
|
||||
|
||||
if (((Flags_GetEventChkInf(EVENTCHKINF_DESTROYED_ROYAL_FAMILY_TOMB)) && (play->sceneNum == SCENE_SPOT02) &&
|
||||
if (((Flags_GetEventChkInf(EVENTCHKINF_DESTROYED_ROYAL_FAMILY_TOMB)) && (play->sceneNum == SCENE_GRAVEYARD) &&
|
||||
(thisx->params == 2)) ||
|
||||
(LINK_IS_ADULT && (thisx->params == 1))) {
|
||||
Actor_Kill(thisx);
|
||||
|
@ -96,7 +96,7 @@ s32 func_808B3AAC(BgSpot15Rrbox* this, PlayState* play) {
|
||||
s16 rotY;
|
||||
Actor* actor = &this->dyna.actor;
|
||||
|
||||
if (play->sceneNum == SCENE_SOUKO) {
|
||||
if (play->sceneNum == SCENE_LON_LON_BUILDINGS) {
|
||||
return true;
|
||||
} else if (func_808B3A40(this, play)) {
|
||||
return false;
|
||||
|
@ -58,12 +58,12 @@ void BgSpot16Doughnut_Init(Actor* thisx, PlayState* play) {
|
||||
// Scales this actor for scenes where it is featured in the background,
|
||||
// Death Mountain itself falls into the default case.
|
||||
switch (play->sceneNum) {
|
||||
case SCENE_SPOT01:
|
||||
case SCENE_KAKARIKO_VILLAGE:
|
||||
Actor_SetScale(&this->actor, 0.04f);
|
||||
break;
|
||||
case SCENE_SHRINE:
|
||||
case SCENE_SHRINE_N:
|
||||
case SCENE_SHRINE_R:
|
||||
case SCENE_TEMPLE_OF_TIME_EXTERIOR_DAY:
|
||||
case SCENE_TEMPLE_OF_TIME_EXTERIOR_NIGHT:
|
||||
case SCENE_TEMPLE_OF_TIME_EXTERIOR_RUINS:
|
||||
Actor_SetScale(&this->actor, 0.018f);
|
||||
break;
|
||||
default:
|
||||
|
@ -365,8 +365,8 @@ void BossGanon_Init(Actor* thisx, PlayState* play2) {
|
||||
this->organAlpha = 255;
|
||||
} else {
|
||||
cond = Flags_GetSwitch(play, 0x37) &&
|
||||
((play->sceneNum == SCENE_GANON_DEMO) || (play->sceneNum == SCENE_GANON_FINAL) ||
|
||||
(play->sceneNum == SCENE_GANON_SONOGO) || (play->sceneNum == SCENE_GANONTIKA_SONOGO));
|
||||
((play->sceneNum == SCENE_GANON_BOSS) || (play->sceneNum == SCENE_GANONS_TOWER_COLLAPSE_EXTERIOR) ||
|
||||
(play->sceneNum == SCENE_GANONS_TOWER_COLLAPSE_INTERIOR) || (play->sceneNum == SCENE_INSIDE_GANONS_CASTLE_COLLAPSE));
|
||||
|
||||
if (!cond) {
|
||||
BossGanon_SetupTowerCutscene(this, play);
|
||||
|
@ -304,7 +304,7 @@ void func_8096712C(Demo6K* this, PlayState* play) {
|
||||
|
||||
this->timer2++;
|
||||
|
||||
if ((play->sceneNum == SCENE_GANONTIKA) && (play->csCtx.frames < D_8096932C[this->actor.params - 3])) {
|
||||
if ((play->sceneNum == SCENE_INSIDE_GANONS_CASTLE) && (play->csCtx.frames < D_8096932C[this->actor.params - 3])) {
|
||||
func_8002F974(&this->actor, NA_SE_EV_LIGHT_GATHER - SFX_FLAG);
|
||||
}
|
||||
}
|
||||
@ -336,7 +336,7 @@ void func_80967244(Demo6K* this, PlayState* play) {
|
||||
envColor.g = sEnvColors[this->unk_293].g;
|
||||
envColor.b = sEnvColors[this->unk_293].b;
|
||||
|
||||
if (play->sceneNum == SCENE_TOKINOMA) {
|
||||
if (play->sceneNum == SCENE_TEMPLE_OF_TIME) {
|
||||
scale = 6000;
|
||||
} else if (play->csCtx.frames < 419) {
|
||||
scale = 6000;
|
||||
|
@ -142,7 +142,7 @@ f32 DemoEffect_InterpolateCsFrames(PlayState* play, s32 csActionId) {
|
||||
*/
|
||||
void DemoEffect_InitJewel(PlayState* play, DemoEffect* this) {
|
||||
this->initDrawFunc = DemoEffect_DrawJewel;
|
||||
if (gSaveContext.n64ddFlag && play->sceneNum == SCENE_BDAN) {
|
||||
if (gSaveContext.n64ddFlag && play->sceneNum == SCENE_JABU_JABU) {
|
||||
this->initDrawFunc = DemoEffect_DrawGetItem;
|
||||
}
|
||||
if (!LINK_IS_ADULT) {
|
||||
@ -150,13 +150,13 @@ void DemoEffect_InitJewel(PlayState* play, DemoEffect* this) {
|
||||
} else {
|
||||
this->initUpdateFunc = DemoEffect_UpdateJewelAdult;
|
||||
}
|
||||
if (play->sceneNum == SCENE_TOKINOMA) {
|
||||
if (play->sceneNum == SCENE_TEMPLE_OF_TIME) {
|
||||
Actor_SetScale(&this->actor, 0.35f);
|
||||
} else {
|
||||
Actor_SetScale(&this->actor, 0.10f);
|
||||
}
|
||||
this->csActionId = 1;
|
||||
this->actor.shape.rot.x = (gSaveContext.n64ddFlag && play->sceneNum == SCENE_BDAN) ? 0 : 16384;
|
||||
this->actor.shape.rot.x = (gSaveContext.n64ddFlag && play->sceneNum == SCENE_JABU_JABU) ? 0 : 16384;
|
||||
DemoEffect_InitJewelColor(this);
|
||||
this->jewel.alpha = 0;
|
||||
this->jewelCsRotation.x = this->jewelCsRotation.y = this->jewelCsRotation.z = 0;
|
||||
@ -496,7 +496,7 @@ void DemoEffect_Init(Actor* thisx, PlayState* play2) {
|
||||
this->jewel.isPositionInit = 0;
|
||||
DemoEffect_InitJewel(play, this);
|
||||
Actor_ChangeCategory(play, &play->actorCtx, &this->actor, ACTOR_EN_DOOR);
|
||||
if ((play->sceneNum == SCENE_BDAN) && (Flags_GetInfTable(INFTABLE_145))) {
|
||||
if ((play->sceneNum == SCENE_JABU_JABU) && (Flags_GetInfTable(INFTABLE_145))) {
|
||||
Actor_Kill(&this->actor);
|
||||
return;
|
||||
}
|
||||
@ -1075,12 +1075,12 @@ void DemoEffect_UpdateLightEffect(DemoEffect* this, PlayState* play) {
|
||||
break;
|
||||
}
|
||||
|
||||
if (play->sceneNum == SCENE_SPOT04 && gSaveContext.sceneSetupIndex == 6 &&
|
||||
if (play->sceneNum == SCENE_KOKIRI_FOREST && gSaveContext.sceneSetupIndex == 6 &&
|
||||
play->csCtx.frames == 197) {
|
||||
Audio_PlayActorSound2(&this->actor, NA_SE_EV_WHITE_OUT);
|
||||
}
|
||||
|
||||
if (play->sceneNum == SCENE_SPOT16 && gSaveContext.sceneSetupIndex == 5) {
|
||||
if (play->sceneNum == SCENE_DEATH_MOUNTAIN_TRAIL && gSaveContext.sceneSetupIndex == 5) {
|
||||
if (!DemoEffect_CheckCsAction(this, play, 1)) {
|
||||
Audio_PlayActorSound2(&this->actor, NA_SE_EV_LIGHT_GATHER - SFX_FLAG);
|
||||
}
|
||||
@ -1089,7 +1089,7 @@ void DemoEffect_UpdateLightEffect(DemoEffect* this, PlayState* play) {
|
||||
}
|
||||
}
|
||||
|
||||
if (play->sceneNum == SCENE_SPOT08 && gSaveContext.sceneSetupIndex == 4) {
|
||||
if (play->sceneNum == SCENE_ZORAS_FOUNTAIN && gSaveContext.sceneSetupIndex == 4) {
|
||||
if (!DemoEffect_CheckCsAction(this, play, 1)) {
|
||||
Audio_PlayActorSound2(&this->actor, NA_SE_EV_LIGHT_GATHER - SFX_FLAG);
|
||||
}
|
||||
@ -1098,14 +1098,14 @@ void DemoEffect_UpdateLightEffect(DemoEffect* this, PlayState* play) {
|
||||
}
|
||||
}
|
||||
|
||||
if (play->sceneNum == SCENE_TOKINOMA && gSaveContext.sceneSetupIndex == 14) {
|
||||
if (play->sceneNum == SCENE_TEMPLE_OF_TIME && gSaveContext.sceneSetupIndex == 14) {
|
||||
|
||||
if (play->csCtx.npcActions[this->csActionId]->action == 2) {
|
||||
Audio_PlayActorSound2(&this->actor, NA_SE_EV_LIGHT_GATHER - SFX_FLAG);
|
||||
}
|
||||
}
|
||||
|
||||
if (play->sceneNum == SCENE_DAIYOUSEI_IZUMI || play->sceneNum == SCENE_YOUSEI_IZUMI_YOKO) {
|
||||
if (play->sceneNum == SCENE_GREAT_FAIRYS_FOUNTAIN_MAGIC || play->sceneNum == SCENE_GREAT_FAIRYS_FOUNTAIN_SPELLS) {
|
||||
if (play->csCtx.npcActions[this->csActionId]->action == 2) {
|
||||
Audio_PlayActorSound2(&this->actor, NA_SE_EV_LIGHT_GATHER - SFX_FLAG);
|
||||
}
|
||||
@ -2087,7 +2087,7 @@ void DemoEffect_DrawGetItem(Actor* thisx, PlayState* play) {
|
||||
this->getItem.isLoaded = 1;
|
||||
return;
|
||||
}
|
||||
if (gSaveContext.n64ddFlag && play->sceneNum == SCENE_BDAN) {
|
||||
if (gSaveContext.n64ddFlag && play->sceneNum == SCENE_JABU_JABU) {
|
||||
GetItemEntry getItemEntry = Randomizer_GetItemFromKnownCheck(RC_BARINADE, RG_ZORA_SAPPHIRE);
|
||||
this->getItem.drawId = getItemEntry.gid;
|
||||
func_8002EBCC(thisx, play, 0);
|
||||
|
@ -197,16 +197,16 @@ void DemoKankyo_Init(Actor* thisx, PlayState* play) {
|
||||
case DEMOKANKYO_BLUE_RAIN:
|
||||
case DEMOKANKYO_BLUE_RAIN_2:
|
||||
switch (play->sceneNum) {
|
||||
case SCENE_HIRAL_DEMO:
|
||||
case SCENE_CUTSCENE_MAP:
|
||||
play->roomCtx.curRoom.segment = NULL;
|
||||
D_8098CF80 = 10;
|
||||
sRainScale = 8;
|
||||
break;
|
||||
case SCENE_TOKINOMA:
|
||||
case SCENE_TEMPLE_OF_TIME:
|
||||
D_8098CF80 = 14;
|
||||
sRainScale = 8;
|
||||
break;
|
||||
case SCENE_SPOT00:
|
||||
case SCENE_HYRULE_FIELD:
|
||||
D_8098CF80 = 1;
|
||||
sRainScale = 5;
|
||||
break;
|
||||
@ -321,7 +321,7 @@ void DemoKankyo_SetupType(DemoKankyo* this, PlayState* play) {
|
||||
this->warpTimer--;
|
||||
}
|
||||
if (this->warpTimer == 1) {
|
||||
if (play->sceneNum == SCENE_TOKINOMA) {
|
||||
if (play->sceneNum == SCENE_TEMPLE_OF_TIME) {
|
||||
D_8098CF84 = 25;
|
||||
if (!LINK_IS_ADULT) {
|
||||
play->csCtx.segment = gChildWarpInToTCS;
|
||||
@ -343,7 +343,7 @@ void DemoKankyo_SetupType(DemoKankyo* this, PlayState* play) {
|
||||
}
|
||||
break;
|
||||
case DEMOKANKYO_WARP_IN:
|
||||
if (play->sceneNum == SCENE_TOKINOMA) {
|
||||
if (play->sceneNum == SCENE_TEMPLE_OF_TIME) {
|
||||
if (!LINK_IS_ADULT) {
|
||||
play->csCtx.segment = gChildWarpOutToTCS;
|
||||
} else {
|
||||
@ -441,7 +441,7 @@ void DemoKankyo_Draw(Actor* thisx, PlayState* play) {
|
||||
switch (this->actor.params) {
|
||||
case DEMOKANKYO_BLUE_RAIN:
|
||||
case DEMOKANKYO_BLUE_RAIN_2:
|
||||
if (play->sceneNum == SCENE_TOKINOMA) {
|
||||
if (play->sceneNum == SCENE_TEMPLE_OF_TIME) {
|
||||
if (!Flags_GetEnv(play, 1)) {
|
||||
break;
|
||||
} else if (!Actor_IsFacingAndNearPlayer(&this->actor, 300.0f, 0x7530)) {
|
||||
@ -495,12 +495,12 @@ void func_80989B54(Actor* thisx, PlayState* play, s16 i) {
|
||||
DemoKankyo* this = (DemoKankyo*)thisx;
|
||||
|
||||
switch (play->sceneNum) {
|
||||
case SCENE_HIRAL_DEMO:
|
||||
case SCENE_CUTSCENE_MAP:
|
||||
this->unk_150[i].unk_0.x = (Rand_ZeroOne() - 0.5f) * 500.0f;
|
||||
this->unk_150[i].unk_0.y = 500.0f;
|
||||
this->unk_150[i].unk_0.z = (Rand_ZeroOne() - 0.5f) * 500.0f;
|
||||
break;
|
||||
case SCENE_TOKINOMA:
|
||||
case SCENE_TEMPLE_OF_TIME:
|
||||
this->unk_150[i].unk_C.x = 0.0f;
|
||||
this->unk_150[i].unk_C.y = 0.0f;
|
||||
this->unk_150[i].unk_C.z = 0.0f;
|
||||
@ -508,7 +508,7 @@ void func_80989B54(Actor* thisx, PlayState* play, s16 i) {
|
||||
this->unk_150[i].unk_0.y = 10.0f;
|
||||
this->unk_150[i].unk_0.z = (Rand_ZeroOne() - 0.5f) * 180.0f;
|
||||
break;
|
||||
case SCENE_SPOT00:
|
||||
case SCENE_HYRULE_FIELD:
|
||||
this->unk_150[i].unk_0.x = (Rand_ZeroOne() - 0.5f) * 600.0f;
|
||||
this->unk_150[i].unk_0.y = -500.0f;
|
||||
this->unk_150[i].unk_0.z = (Rand_ZeroOne() - 0.5f) * 600.0f;
|
||||
@ -540,7 +540,7 @@ void DemoKankyo_DrawRain(Actor* thisx, PlayState* play) {
|
||||
dz = play->view.lookAt.z - play->view.eye.z;
|
||||
norm = sqrtf(SQ(dx) + SQ(dy) + SQ(dz));
|
||||
|
||||
if (play->sceneNum != SCENE_TOKINOMA) {
|
||||
if (play->sceneNum != SCENE_TEMPLE_OF_TIME) {
|
||||
this->unk_150[i].unk_C.x = play->view.eye.x + (dx / norm) * 350.0f;
|
||||
this->unk_150[i].unk_C.y = play->view.eye.y + (dy / norm) * 80.0f;
|
||||
this->unk_150[i].unk_C.z = play->view.eye.z + (dz / norm) * 350.0f;
|
||||
@ -606,7 +606,7 @@ void DemoKankyo_DrawRain(Actor* thisx, PlayState* play) {
|
||||
|
||||
s32 pad1;
|
||||
|
||||
if (play->sceneNum != SCENE_TOKINOMA) {
|
||||
if (play->sceneNum != SCENE_TEMPLE_OF_TIME) {
|
||||
if (this->unk_150[i].unk_0.x >= 0.0f) {
|
||||
translateX = -j * 1500.0f;
|
||||
} else {
|
||||
@ -820,7 +820,7 @@ void DemoKankyo_DrawWarpSparkles(Actor* thisx, PlayState* play) {
|
||||
&this->unk_150[i].unk_1C) != 0) {
|
||||
this->unk_150[i].unk_22++;
|
||||
}
|
||||
if (play->sceneNum == SCENE_TOKINOMA && play->csCtx.frames == 25) {
|
||||
if (play->sceneNum == SCENE_TEMPLE_OF_TIME && play->csCtx.frames == 25) {
|
||||
this->unk_150[i].unk_22++;
|
||||
}
|
||||
} else {
|
||||
|
@ -114,14 +114,14 @@ void DoorKiller_Init(Actor* thisx, PlayState* play2) {
|
||||
|
||||
// For SoH where all objects are loaded, hardcode the index to match the current map.
|
||||
switch (play->sceneNum) {
|
||||
case SCENE_HIDAN:
|
||||
case SCENE_FIRE_TEMPLE:
|
||||
this->textureEntryIndex = 0;
|
||||
break;
|
||||
case SCENE_MIZUSIN:
|
||||
case SCENE_WATER_TEMPLE:
|
||||
this->textureEntryIndex = 1;
|
||||
break;
|
||||
case SCENE_HAKADAN:
|
||||
case SCENE_HAKADANCH:
|
||||
case SCENE_SHADOW_TEMPLE:
|
||||
case SCENE_BOTTOM_OF_THE_WELL:
|
||||
this->textureEntryIndex = 2;
|
||||
break;
|
||||
default:
|
||||
|
@ -135,12 +135,12 @@ typedef struct {
|
||||
} ShutterSceneInfo;
|
||||
|
||||
static ShutterSceneInfo sSceneInfo[] = {
|
||||
{ SCENE_YDAN, 0x02 }, { SCENE_DDAN, 0x03 }, { SCENE_DDAN_BOSS, 0x03 },
|
||||
{ SCENE_BDAN, 0x04 }, { SCENE_BMORI1, 0x05 }, { SCENE_HIDAN, 0x08 },
|
||||
{ SCENE_GANON, 0x09 }, { SCENE_GANON_BOSS, 0x09 }, { SCENE_JYASINZOU, 0x0A },
|
||||
{ SCENE_JYASINBOSS, 0x0A }, { SCENE_MIZUSIN, 0x0B }, { SCENE_HAKADAN, 0x0C },
|
||||
{ SCENE_HAKADANCH, 0x0C }, { SCENE_ICE_DOUKUTO, 0x0D }, { SCENE_MEN, 0x0E },
|
||||
{ SCENE_GANONTIKA, 0x0F }, { SCENE_HAKAANA_OUKE, 0x10 }, { -1, 0x07 },
|
||||
{ SCENE_DEKU_TREE, 0x02 }, { SCENE_DODONGOS_CAVERN, 0x03 }, { SCENE_DODONGOS_CAVERN_BOSS, 0x03 },
|
||||
{ SCENE_JABU_JABU, 0x04 }, { SCENE_FOREST_TEMPLE, 0x05 }, { SCENE_FIRE_TEMPLE, 0x08 },
|
||||
{ SCENE_GANONS_TOWER, 0x09 }, { SCENE_GANONDORF_BOSS, 0x09 }, { SCENE_SPIRIT_TEMPLE, 0x0A },
|
||||
{ SCENE_SPIRIT_TEMPLE_BOSS, 0x0A }, { SCENE_WATER_TEMPLE, 0x0B }, { SCENE_SHADOW_TEMPLE, 0x0C },
|
||||
{ SCENE_BOTTOM_OF_THE_WELL, 0x0C }, { SCENE_ICE_CAVERN, 0x0D }, { SCENE_GERUDO_TRAINING_GROUND, 0x0E },
|
||||
{ SCENE_INSIDE_GANONS_CASTLE, 0x0F }, { SCENE_ROYAL_FAMILYS_TOMB, 0x10 }, { -1, 0x07 },
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
@ -150,12 +150,12 @@ typedef struct {
|
||||
} BossDoorInfo;
|
||||
|
||||
static BossDoorInfo D_80998288[] = {
|
||||
{ SCENE_HIDAN, SCENE_FIRE_BS, 0x01 },
|
||||
{ SCENE_MIZUSIN, SCENE_MIZUSIN_BS, 0x02 },
|
||||
{ SCENE_HAKADAN, SCENE_HAKADAN_BS, 0x03 },
|
||||
{ SCENE_GANON, SCENE_GANON_BOSS, 0x04 },
|
||||
{ SCENE_BMORI1, SCENE_MORIBOSSROOM, 0x05 },
|
||||
{ SCENE_JYASINZOU, SCENE_JYASINBOSS, 0x06 },
|
||||
{ SCENE_FIRE_TEMPLE, SCENE_FIRE_TEMPLE_BOSS, 0x01 },
|
||||
{ SCENE_WATER_TEMPLE, SCENE_WATER_TEMPLE_BOSS, 0x02 },
|
||||
{ SCENE_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE_BOSS, 0x03 },
|
||||
{ SCENE_GANONS_TOWER, SCENE_GANONDORF_BOSS, 0x04 },
|
||||
{ SCENE_FOREST_TEMPLE, SCENE_FOREST_TEMPLE_BOSS, 0x05 },
|
||||
{ SCENE_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE_BOSS, 0x06 },
|
||||
{ -1, -1, 0x00 },
|
||||
};
|
||||
|
||||
@ -475,7 +475,7 @@ void func_80996EE8(DoorShutter* this, PlayState* play) {
|
||||
} else if (func_809968D4(this, play)) {
|
||||
Player* player = GET_PLAYER(play);
|
||||
// Jabu navi text for switch doors is different
|
||||
player->naviTextId = (play->sceneNum == SCENE_BDAN) ? -0x20B : -0x202;
|
||||
player->naviTextId = (play->sceneNum == SCENE_JABU_JABU) ? -0x20B : -0x202;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -569,7 +569,7 @@ void DoorWarp1_ChildWarpOut(DoorWarp1* this, PlayState* play) {
|
||||
if (sWarpTimerTarget < this->warpTimer && gSaveContext.nextCutsceneIndex == 0xFFEF) {
|
||||
osSyncPrintf("\n\n\nじかんがきたからおーしまい fade_direction=[%d]", play->sceneLoadFlag, 0x14);
|
||||
|
||||
if (play->sceneNum == SCENE_DDAN_BOSS) {
|
||||
if (play->sceneNum == SCENE_DODONGOS_CAVERN_BOSS) {
|
||||
if (!Flags_GetEventChkInf(EVENTCHKINF_USED_DODONGOS_CAVERN_BLUE_WARP)) {
|
||||
Flags_SetEventChkInf(EVENTCHKINF_USED_DODONGOS_CAVERN_BLUE_WARP);
|
||||
Flags_SetRandomizerInf(RAND_INF_DUNGEONS_DONE_DODONGOS_CAVERN);
|
||||
@ -585,7 +585,7 @@ void DoorWarp1_ChildWarpOut(DoorWarp1* this, PlayState* play) {
|
||||
play->nextEntranceIndex = 0x47A;
|
||||
gSaveContext.nextCutsceneIndex = 0;
|
||||
}
|
||||
} else if (play->sceneNum == SCENE_YDAN_BOSS) {
|
||||
} else if (play->sceneNum == SCENE_DEKU_TREE_BOSS) {
|
||||
if (!Flags_GetEventChkInf(EVENTCHKINF_OBTAINED_KOKIRI_EMERALD_DEKU_TREE_DEAD) || gSaveContext.n64ddFlag) {
|
||||
Flags_SetEventChkInf(EVENTCHKINF_OBTAINED_KOKIRI_EMERALD_DEKU_TREE_DEAD);
|
||||
Flags_SetEventChkInf(EVENTCHKINF_USED_DEKU_TREE_BLUE_WARP);
|
||||
@ -604,7 +604,7 @@ void DoorWarp1_ChildWarpOut(DoorWarp1* this, PlayState* play) {
|
||||
play->nextEntranceIndex = 0x457;
|
||||
gSaveContext.nextCutsceneIndex = 0;
|
||||
}
|
||||
} else if (play->sceneNum == SCENE_BDAN_BOSS) {
|
||||
} else if (play->sceneNum == SCENE_JABU_JABU_BOSS) {
|
||||
play->nextEntranceIndex = 0x10E;
|
||||
gSaveContext.nextCutsceneIndex = 0;
|
||||
}
|
||||
@ -828,7 +828,7 @@ void DoorWarp1_AdultWarpOut(DoorWarp1* this, PlayState* play) {
|
||||
if (this->warpTimer > sWarpTimerTarget && gSaveContext.nextCutsceneIndex == 0xFFEF) {
|
||||
if (gSaveContext.isBossRush) {
|
||||
BossRush_HandleBlueWarp(play, this->actor.world.pos.x, this->actor.world.pos.z);
|
||||
} else if (play->sceneNum == SCENE_MORIBOSSROOM) {
|
||||
} else if (play->sceneNum == SCENE_FOREST_TEMPLE_BOSS) {
|
||||
if (!Flags_GetEventChkInf(EVENTCHKINF_USED_FOREST_TEMPLE_BLUE_WARP)) {
|
||||
Flags_SetEventChkInf(EVENTCHKINF_USED_FOREST_TEMPLE_BLUE_WARP);
|
||||
Flags_SetRandomizerInf(RAND_INF_DUNGEONS_DONE_FOREST_TEMPLE);
|
||||
@ -850,7 +850,7 @@ void DoorWarp1_AdultWarpOut(DoorWarp1* this, PlayState* play) {
|
||||
}
|
||||
gSaveContext.nextCutsceneIndex = 0;
|
||||
}
|
||||
} else if (play->sceneNum == SCENE_FIRE_BS) {
|
||||
} else if (play->sceneNum == SCENE_FIRE_TEMPLE_BOSS) {
|
||||
if (!Flags_GetEventChkInf(EVENTCHKINF_USED_FIRE_TEMPLE_BLUE_WARP)) {
|
||||
Flags_SetEventChkInf(EVENTCHKINF_USED_FIRE_TEMPLE_BLUE_WARP);
|
||||
Flags_SetRandomizerInf(RAND_INF_DUNGEONS_DONE_FIRE_TEMPLE);
|
||||
@ -873,7 +873,7 @@ void DoorWarp1_AdultWarpOut(DoorWarp1* this, PlayState* play) {
|
||||
}
|
||||
gSaveContext.nextCutsceneIndex = 0;
|
||||
}
|
||||
} else if (play->sceneNum == SCENE_MIZUSIN_BS) {
|
||||
} else if (play->sceneNum == SCENE_WATER_TEMPLE_BOSS) {
|
||||
if (!Flags_GetEventChkInf(EVENTCHKINF_USED_WATER_TEMPLE_BLUE_WARP)) {
|
||||
Flags_SetEventChkInf(EVENTCHKINF_USED_WATER_TEMPLE_BLUE_WARP);
|
||||
Flags_SetRandomizerInf(RAND_INF_DUNGEONS_DONE_WATER_TEMPLE);
|
||||
@ -897,7 +897,7 @@ void DoorWarp1_AdultWarpOut(DoorWarp1* this, PlayState* play) {
|
||||
}
|
||||
gSaveContext.nextCutsceneIndex = 0;
|
||||
}
|
||||
} else if (play->sceneNum == SCENE_JYASINBOSS) {
|
||||
} else if (play->sceneNum == SCENE_SPIRIT_TEMPLE_BOSS) {
|
||||
if (!CHECK_QUEST_ITEM(QUEST_MEDALLION_SPIRIT) || gSaveContext.n64ddFlag) {
|
||||
Flags_SetRandomizerInf(RAND_INF_DUNGEONS_DONE_SPIRIT_TEMPLE);
|
||||
|
||||
@ -918,7 +918,7 @@ void DoorWarp1_AdultWarpOut(DoorWarp1* this, PlayState* play) {
|
||||
}
|
||||
gSaveContext.nextCutsceneIndex = 0;
|
||||
}
|
||||
} else if (play->sceneNum == SCENE_HAKADAN_BS) {
|
||||
} else if (play->sceneNum == SCENE_SHADOW_TEMPLE_BOSS) {
|
||||
if (!CHECK_QUEST_ITEM(QUEST_MEDALLION_SHADOW) || gSaveContext.n64ddFlag) {
|
||||
Flags_SetRandomizerInf(RAND_INF_DUNGEONS_DONE_SHADOW_TEMPLE);
|
||||
|
||||
|
@ -201,7 +201,7 @@ void EnBox_Init(Actor* thisx, PlayState* play2) {
|
||||
EnBox_UpdateSizeAndTexture(this, play);
|
||||
// For SOH we spawn a chest actor instead of rendering the object from scratch for forest boss
|
||||
// key chest, and it's up on the wall so disable gravity for it.
|
||||
if (play->sceneNum == SCENE_BMORI1 && this->dyna.actor.params == 10222) {
|
||||
if (play->sceneNum == SCENE_FOREST_TEMPLE && this->dyna.actor.params == 10222) {
|
||||
this->movementFlags = ENBOX_MOVE_IMMOBILE;
|
||||
}
|
||||
|
||||
@ -642,7 +642,7 @@ void EnBox_UpdateSizeAndTexture(EnBox* this, PlayState* play) {
|
||||
GetItemCategory getItemCategory;
|
||||
|
||||
int isVanilla = csmc == CSMC_DISABLED || (requiresStoneAgony && !CHECK_QUEST_ITEM(QUEST_STONE_OF_AGONY)) ||
|
||||
(play->sceneNum == SCENE_TAKARAYA && this->dyna.actor.room != 6); // Exclude treasure game chests except for the final room
|
||||
(play->sceneNum == SCENE_TREASURE_BOX_SHOP && this->dyna.actor.room != 6); // Exclude treasure game chests except for the final room
|
||||
|
||||
if (!isVanilla) {
|
||||
getItemCategory = this->getItemEntry.getItemCategory;
|
||||
@ -744,24 +744,24 @@ void EnBox_UpdateSizeAndTexture(EnBox* this, PlayState* play) {
|
||||
s16 isLarge = this->dyna.actor.scale.x == 0.01f;
|
||||
|
||||
// Make Ganon's Castle Zelda's Lullaby chest reachable when large.
|
||||
if ((params & 0xF000) == 0x8000 && sceneNum == SCENE_GANONTIKA && room == 9) {
|
||||
if ((params & 0xF000) == 0x8000 && sceneNum == SCENE_INSIDE_GANONS_CASTLE && room == 9) {
|
||||
this->dyna.actor.world.pos.z = isLarge ? -962.0f : -952.0f;
|
||||
}
|
||||
|
||||
// Make MQ Deku Tree Song of Time chest reachable when large.
|
||||
if (params == 0x5AA0 && sceneNum == SCENE_YDAN && room == 5) {
|
||||
if (params == 0x5AA0 && sceneNum == SCENE_DEKU_TREE && room == 5) {
|
||||
this->dyna.actor.world.pos.x = isLarge ? -1380.0f : -1376.0f;
|
||||
}
|
||||
|
||||
// Make Ganon's Castle Gold Gauntlets chest reachable with hookshot from the
|
||||
// switch platform when small.
|
||||
if (params == 0x36C5 && sceneNum == SCENE_GANONTIKA && room == 12) {
|
||||
if (params == 0x36C5 && sceneNum == SCENE_INSIDE_GANONS_CASTLE && room == 12) {
|
||||
this->dyna.actor.world.pos.x = isLarge ? 1757.0f : 1777.0f;
|
||||
this->dyna.actor.world.pos.z = isLarge ? -3595.0f : -3626.0f;
|
||||
}
|
||||
|
||||
// Make Spirit Temple Compass Chest reachable with hookshot when small.
|
||||
if (params == 0x3804 && sceneNum == SCENE_JYASINZOU && room == 14) {
|
||||
if (params == 0x3804 && sceneNum == SCENE_SPIRIT_TEMPLE && room == 14) {
|
||||
this->dyna.actor.world.pos.x = isLarge ? 358.0f : 400.0f;
|
||||
}
|
||||
}
|
||||
|
@ -122,7 +122,7 @@ void EnCow_Init(Actor* thisx, PlayState* play) {
|
||||
Collider_SetCylinder(play, &this->colliders[1], &this->actor, &sCylinderInit);
|
||||
func_809DEE9C(this);
|
||||
this->actionFunc = func_809DF96C;
|
||||
if (play->sceneNum == SCENE_LINK_HOME) {
|
||||
if (play->sceneNum == SCENE_LINKS_HOUSE) {
|
||||
if (!LINK_IS_ADULT && !CVarGetInteger("gCowOfTime", 0)) {
|
||||
Actor_Kill(&this->actor);
|
||||
return;
|
||||
@ -223,12 +223,12 @@ void EnCow_MoveForRandomizer(EnCow* this, PlayState* play) {
|
||||
}
|
||||
|
||||
// Move left cow in lon lon tower
|
||||
if (play->sceneNum == SCENE_SOUKO && this->actor.world.pos.x == -108 && this->actor.world.pos.z == -65) {
|
||||
if (play->sceneNum == SCENE_LON_LON_BUILDINGS && this->actor.world.pos.x == -108 && this->actor.world.pos.z == -65) {
|
||||
this->actor.world.pos.x = -229.0f;
|
||||
this->actor.world.pos.z = 157.0f;
|
||||
this->actor.shape.rot.y = 15783.0f;
|
||||
// Move right cow in lon lon stable
|
||||
} else if (play->sceneNum == SCENE_MALON_STABLE && this->actor.world.pos.x == -3 && this->actor.world.pos.z == -254) {
|
||||
} else if (play->sceneNum == SCENE_STABLE && this->actor.world.pos.x == -3 && this->actor.world.pos.z == -254) {
|
||||
this->actor.world.pos.x += 119.0f;
|
||||
}
|
||||
}
|
||||
|
@ -163,9 +163,9 @@ void EnDaiku_Init(Actor* thisx, PlayState* play) {
|
||||
isFree = true;
|
||||
}
|
||||
|
||||
if (isFree == true && play->sceneNum == SCENE_GERUDOWAY) {
|
||||
if (isFree == true && play->sceneNum == SCENE_THIEVES_HIDEOUT) {
|
||||
noKill = false;
|
||||
} else if (isFree == false && play->sceneNum == SCENE_TENT) {
|
||||
} else if (isFree == false && play->sceneNum == SCENE_CARPENTERS_TENT) {
|
||||
noKill = false;
|
||||
}
|
||||
|
||||
@ -197,7 +197,7 @@ void EnDaiku_Init(Actor* thisx, PlayState* play) {
|
||||
this->initRot = this->actor.world.rot;
|
||||
this->initPos = this->actor.world.pos;
|
||||
|
||||
if (play->sceneNum == SCENE_GERUDOWAY) {
|
||||
if (play->sceneNum == SCENE_THIEVES_HIDEOUT) {
|
||||
EnDaiku_ChangeAnim(this, ENDAIKU_ANIM_STAND, &this->currentAnimIndex);
|
||||
this->stateFlags |= ENDAIKU_STATEFLAG_1 | ENDAIKU_STATEFLAG_2;
|
||||
this->actionFunc = EnDaiku_Jailed;
|
||||
@ -227,7 +227,7 @@ s32 EnDaiku_UpdateTalking(EnDaiku* this, PlayState* play) {
|
||||
s32 newTalkState = ENDAIKU_STATE_TALKING;
|
||||
|
||||
if (Message_GetState(&play->msgCtx) == TEXT_STATE_DONE) {
|
||||
if (play->sceneNum == SCENE_GERUDOWAY) {
|
||||
if (play->sceneNum == SCENE_THIEVES_HIDEOUT) {
|
||||
if (Message_ShouldAdvance(play)) {
|
||||
if (this->actor.textId == 0x6007) {
|
||||
Flags_SetSwitch(play, this->startFightSwitchFlag);
|
||||
@ -237,7 +237,7 @@ s32 EnDaiku_UpdateTalking(EnDaiku* this, PlayState* play) {
|
||||
newTalkState = ENDAIKU_STATE_NO_TALK;
|
||||
}
|
||||
}
|
||||
} else if (play->sceneNum == SCENE_TENT) {
|
||||
} else if (play->sceneNum == SCENE_CARPENTERS_TENT) {
|
||||
if (Message_ShouldAdvance(play)) {
|
||||
switch (this->actor.textId) {
|
||||
case 0x6061:
|
||||
@ -270,7 +270,7 @@ void EnDaiku_UpdateText(EnDaiku* this, PlayState* play) {
|
||||
Actor_GetScreenPos(play, &this->actor, &sp2E, &sp2C);
|
||||
if (sp2E >= 0 && sp2E <= 320 && sp2C >= 0 && sp2C <= 240 && this->talkState == ENDAIKU_STATE_CAN_TALK &&
|
||||
func_8002F2CC(&this->actor, play, 100.0f) == 1) {
|
||||
if (play->sceneNum == SCENE_GERUDOWAY) {
|
||||
if (play->sceneNum == SCENE_THIEVES_HIDEOUT) {
|
||||
if (this->stateFlags & ENDAIKU_STATEFLAG_GERUDODEFEATED) {
|
||||
freedCount = 0;
|
||||
for (carpenterType = 0; carpenterType < 4; carpenterType++) {
|
||||
@ -297,7 +297,7 @@ void EnDaiku_UpdateText(EnDaiku* this, PlayState* play) {
|
||||
(ENDAIKU_STATEFLAG_GERUDOFIGHTING | ENDAIKU_STATEFLAG_GERUDODEFEATED))) {
|
||||
this->actor.textId = 0x6007;
|
||||
}
|
||||
} else if (play->sceneNum == SCENE_TENT) {
|
||||
} else if (play->sceneNum == SCENE_CARPENTERS_TENT) {
|
||||
switch (this->actor.params & 3) {
|
||||
case 0:
|
||||
if (CHECK_QUEST_ITEM(QUEST_MEDALLION_SPIRIT)) {
|
||||
|
@ -131,18 +131,18 @@ void EnDaikuKakariko_Init(Actor* thisx, PlayState* play) {
|
||||
|
||||
if (LINK_AGE_IN_YEARS == YEARS_CHILD) {
|
||||
switch (play->sceneNum) {
|
||||
case SCENE_SPOT01:
|
||||
case SCENE_KAKARIKO_VILLAGE:
|
||||
if (IS_DAY) {
|
||||
this->flags |= 1;
|
||||
this->flags |= initFlags[this->actor.params & 3];
|
||||
}
|
||||
break;
|
||||
case SCENE_KAKARIKO:
|
||||
case SCENE_KAKARIKO_CENTER_GUEST_HOUSE:
|
||||
if (IS_NIGHT) {
|
||||
this->flags |= 2;
|
||||
}
|
||||
break;
|
||||
case SCENE_DRAG:
|
||||
case SCENE_POTION_SHOP_KAKARIKO:
|
||||
this->flags |= 4;
|
||||
break;
|
||||
}
|
||||
|
@ -273,7 +273,7 @@ void EnDog_Init(Actor* thisx, PlayState* play) {
|
||||
Actor_Kill(&this->actor);
|
||||
}
|
||||
break;
|
||||
case SCENE_IMPA: // Richard's Home
|
||||
case SCENE_DOG_LADY_HOUSE: // Richard's Home
|
||||
if (!(this->actor.params & 0x8000)) {
|
||||
if (!gSaveContext.dogIsLost) {
|
||||
this->nextBehavior = DOG_SIT;
|
||||
|
@ -49,11 +49,11 @@ const ActorInit En_Door_InitVars = {
|
||||
* Controls which object and display lists to use in a given scene
|
||||
*/
|
||||
static EnDoorInfo sDoorInfo[] = {
|
||||
{ SCENE_HIDAN, 1, OBJECT_HIDAN_OBJECTS },
|
||||
{ SCENE_MIZUSIN, 2, OBJECT_MIZU_OBJECTS },
|
||||
{ SCENE_HAKADAN, 3, OBJECT_HAKA_DOOR },
|
||||
{ SCENE_HAKADANCH, 3, OBJECT_HAKA_DOOR },
|
||||
{ SCENE_BMORI1, 0, OBJECT_GAMEPLAY_KEEP }, // Hacky fix, but behavior same as console.
|
||||
{ SCENE_FIRE_TEMPLE, 1, OBJECT_HIDAN_OBJECTS },
|
||||
{ SCENE_WATER_TEMPLE, 2, OBJECT_MIZU_OBJECTS },
|
||||
{ SCENE_SHADOW_TEMPLE, 3, OBJECT_HAKA_DOOR },
|
||||
{ SCENE_BOTTOM_OF_THE_WELL, 3, OBJECT_HAKA_DOOR },
|
||||
{ SCENE_FOREST_TEMPLE, 0, OBJECT_GAMEPLAY_KEEP }, // Hacky fix, but behavior same as console.
|
||||
// KEEP objects should remain last and in this order
|
||||
{ -1, 0, OBJECT_GAMEPLAY_KEEP },
|
||||
{ -1, 4, OBJECT_GAMEPLAY_FIELD_KEEP },
|
||||
@ -276,8 +276,8 @@ void EnDoor_Open(EnDoor* this, PlayState* play) {
|
||||
this->playerIsOpening = 0;
|
||||
} else if (Animation_OnFrame(&this->skelAnime, sDoorAnimOpenFrames[this->animStyle])) {
|
||||
Audio_PlayActorSound2(&this->actor,
|
||||
(play->sceneNum == SCENE_HAKADAN || play->sceneNum == SCENE_HAKADANCH ||
|
||||
play->sceneNum == SCENE_HIDAN)
|
||||
(play->sceneNum == SCENE_SHADOW_TEMPLE || play->sceneNum == SCENE_BOTTOM_OF_THE_WELL ||
|
||||
play->sceneNum == SCENE_FIRE_TEMPLE)
|
||||
? NA_SE_EV_IRON_DOOR_OPEN
|
||||
: NA_SE_OC_DOOR_OPEN);
|
||||
if (this->skelAnime.playSpeed < 1.5f) {
|
||||
@ -288,8 +288,8 @@ void EnDoor_Open(EnDoor* this, PlayState* play) {
|
||||
}
|
||||
} else if (Animation_OnFrame(&this->skelAnime, sDoorAnimCloseFrames[this->animStyle])) {
|
||||
Audio_PlayActorSound2(&this->actor,
|
||||
(play->sceneNum == SCENE_HAKADAN || play->sceneNum == SCENE_HAKADANCH ||
|
||||
play->sceneNum == SCENE_HIDAN)
|
||||
(play->sceneNum == SCENE_SHADOW_TEMPLE || play->sceneNum == SCENE_BOTTOM_OF_THE_WELL ||
|
||||
play->sceneNum == SCENE_FIRE_TEMPLE)
|
||||
? NA_SE_EV_IRON_DOOR_CLOSE
|
||||
: NA_SE_EV_DOOR_CLOSE);
|
||||
}
|
||||
|
@ -155,9 +155,9 @@ s16 func_809FDCDC(PlayState* play, Actor* actor) {
|
||||
}
|
||||
|
||||
s32 func_809FDDB4(EnDu* this, PlayState* play) {
|
||||
if (play->sceneNum == SCENE_SPOT18 && LINK_IS_CHILD) {
|
||||
if (play->sceneNum == SCENE_GORON_CITY && LINK_IS_CHILD) {
|
||||
return 1;
|
||||
} else if (play->sceneNum == SCENE_HIDAN && !Flags_GetInfTable(INFTABLE_SPOKE_TO_DARUNIA_IN_FIRE_TEMPLE) && LINK_IS_ADULT) {
|
||||
} else if (play->sceneNum == SCENE_FIRE_TEMPLE && !Flags_GetInfTable(INFTABLE_SPOKE_TO_DARUNIA_IN_FIRE_TEMPLE) && LINK_IS_ADULT) {
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
|
@ -877,7 +877,7 @@ void func_80A03CF8(EnElf* this, PlayState* play) {
|
||||
func_80A02C98(this, &nextPos, 0.2f);
|
||||
}
|
||||
|
||||
if ((play->sceneNum == SCENE_LINK_HOME) && (gSaveContext.sceneSetupIndex == 4)) {
|
||||
if ((play->sceneNum == SCENE_LINKS_HOUSE) && (gSaveContext.sceneSetupIndex == 4)) {
|
||||
// play dash sound as Navi enters Links house in the intro
|
||||
if (play->csCtx.frames == 55) {
|
||||
Audio_PlayActorSound2(&this->actor, NA_SE_EV_FAIRY_DASH);
|
||||
|
@ -70,7 +70,7 @@ void EnEncount1_Init(Actor* thisx, PlayState* play) {
|
||||
case SPAWNER_LEEVER:
|
||||
this->timer = 30;
|
||||
this->maxCurSpawns = 5;
|
||||
if (play->sceneNum == SCENE_SPOT13) { // Haunted Wasteland
|
||||
if (play->sceneNum == SCENE_HAUNTED_WASTELAND) { // Haunted Wasteland
|
||||
this->reduceLeevers = true;
|
||||
this->maxCurSpawns = 3;
|
||||
}
|
||||
@ -82,7 +82,7 @@ void EnEncount1_Init(Actor* thisx, PlayState* play) {
|
||||
break;
|
||||
case SPAWNER_STALCHILDREN:
|
||||
case SPAWNER_WOLFOS:
|
||||
if (play->sceneNum == SCENE_SPOT00) { // Hyrule Field
|
||||
if (play->sceneNum == SCENE_HYRULE_FIELD) { // Hyrule Field
|
||||
this->maxTotalSpawns = 10000;
|
||||
}
|
||||
this->updateFunc = EnEncount1_SpawnStalchildOrWolfos;
|
||||
@ -224,7 +224,7 @@ void EnEncount1_SpawnStalchildOrWolfos(EnEncount1* this, PlayState* play) {
|
||||
s32 bgId;
|
||||
f32 floorY;
|
||||
|
||||
if (play->sceneNum != SCENE_SPOT00) {
|
||||
if (play->sceneNum != SCENE_HYRULE_FIELD) {
|
||||
if ((fabsf(player->actor.world.pos.y - this->actor.world.pos.y) > 100.0f) ||
|
||||
(this->actor.xzDistToPlayer > this->spawnRange)) {
|
||||
this->outOfRangeTimer++;
|
||||
@ -247,7 +247,7 @@ void EnEncount1_SpawnStalchildOrWolfos(EnEncount1* this, PlayState* play) {
|
||||
(CVarGetInteger("gRandomizedEnemies", 0) && enemyCount < 15)) {
|
||||
while ((this->curNumSpawn < this->maxCurSpawns && this->totalNumSpawn < this->maxTotalSpawns) ||
|
||||
(CVarGetInteger("gRandomizedEnemies", 0) && enemyCount < 15)) {
|
||||
if (play->sceneNum == SCENE_SPOT00) {
|
||||
if (play->sceneNum == SCENE_HYRULE_FIELD) {
|
||||
if ((player->unk_89E == 0) || (player->actor.floorBgId != BGCHECK_SCENE) ||
|
||||
!(player->actor.bgCheckFlags & 1) || (player->stateFlags1 & 0x08000000)) {
|
||||
|
||||
@ -305,7 +305,7 @@ void EnEncount1_SpawnStalchildOrWolfos(EnEncount1* this, PlayState* play) {
|
||||
if (this->curNumSpawn >= this->maxCurSpawns) {
|
||||
this->fieldSpawnTimer = 100;
|
||||
}
|
||||
if (play->sceneNum != SCENE_SPOT00) {
|
||||
if (play->sceneNum != SCENE_HYRULE_FIELD) {
|
||||
this->totalNumSpawn++;
|
||||
}
|
||||
} else {
|
||||
|
@ -39,7 +39,7 @@ const ActorInit En_Encount2_InitVars = {
|
||||
void EnEncount2_Init(Actor* thisx, PlayState* play) {
|
||||
EnEncount2* this = (EnEncount2*)thisx;
|
||||
|
||||
if (play->sceneNum != SCENE_SPOT16) {
|
||||
if (play->sceneNum != SCENE_DEATH_MOUNTAIN_TRAIL) {
|
||||
this->isNotDeathMountain = true;
|
||||
}
|
||||
|
||||
@ -77,8 +77,8 @@ void EnEncount2_Wait(EnEncount2* this, PlayState* play) {
|
||||
} else if ((this->actor.xzDistToPlayer < 700.0f) && (Flags_GetSwitch(play, 0x37))) {
|
||||
s16 scene = play->sceneNum;
|
||||
|
||||
if (((scene == SCENE_GANON_DEMO) || (scene == SCENE_GANON_FINAL) || (scene == SCENE_GANON_SONOGO) ||
|
||||
(scene == SCENE_GANONTIKA_SONOGO)) &&
|
||||
if (((scene == SCENE_GANON_BOSS) || (scene == SCENE_GANONS_TOWER_COLLAPSE_EXTERIOR) || (scene == SCENE_GANONS_TOWER_COLLAPSE_INTERIOR) ||
|
||||
(scene == SCENE_INSIDE_GANONS_CASTLE_COLLAPSE)) &&
|
||||
(!this->collapseSpawnerInactive)) {
|
||||
spawnerState = ENCOUNT2_ACTIVE_GANONS_TOWER;
|
||||
}
|
||||
@ -157,8 +157,8 @@ void EnEncount2_SpawnRocks(EnEncount2* this, PlayState* play) {
|
||||
} else if ((this->actor.xzDistToPlayer < 700.0f) && (Flags_GetSwitch(play, 0x37) != 0)) {
|
||||
s16 scene = play->sceneNum;
|
||||
|
||||
if (((scene == SCENE_GANON_DEMO) || (scene == SCENE_GANON_FINAL) || (scene == SCENE_GANON_SONOGO) ||
|
||||
(scene == SCENE_GANONTIKA_SONOGO)) &&
|
||||
if (((scene == SCENE_GANON_BOSS) || (scene == SCENE_GANONS_TOWER_COLLAPSE_EXTERIOR) || (scene == SCENE_GANONS_TOWER_COLLAPSE_INTERIOR) ||
|
||||
(scene == SCENE_INSIDE_GANONS_CASTLE_COLLAPSE)) &&
|
||||
(!this->collapseSpawnerInactive)) {
|
||||
maxRocks = 1;
|
||||
spawnerState = ENCOUNT2_ACTIVE_GANONS_TOWER;
|
||||
@ -329,7 +329,7 @@ void EnEncount2_ParticleUpdate(EnEncount2* this, PlayState* play) {
|
||||
Math_ApproachF(&particle->pos.z, targetPos.z, 0.3f, 30.0f);
|
||||
Math_ApproachF(&particle->moveDirection.y, -20.0f, 0.9f, 1.0f);
|
||||
|
||||
if (play->sceneNum != SCENE_SPOT16) {
|
||||
if (play->sceneNum != SCENE_DEATH_MOUNTAIN_TRAIL) {
|
||||
if (particle->pos.y < (player->actor.floorHeight - 50.0f)) {
|
||||
particle->isAlive = 0;
|
||||
}
|
||||
|
@ -225,7 +225,7 @@ void EnGSwitch_SilverRupeeTracker(EnGSwitch* this, PlayState* play) {
|
||||
osSyncPrintf(VT_FGCOL(GREEN) "☆☆☆☆☆ 時はまさに世紀末〜 ☆☆☆☆☆ %d\n" VT_RST, this->switchFlag);
|
||||
// "Last!"
|
||||
osSyncPrintf(VT_FGCOL(GREEN) "☆☆☆☆☆ らすとぉ! ☆☆☆☆☆ \n" VT_RST);
|
||||
if ((play->sceneNum == SCENE_MEN) && (this->actor.room == 2)) {
|
||||
if ((play->sceneNum == SCENE_GERUDO_TRAINING_GROUND) && (this->actor.room == 2)) {
|
||||
Flags_SetTempClear(play, this->actor.room);
|
||||
} else {
|
||||
func_80078884(NA_SE_SY_CORRECT_CHIME);
|
||||
|
@ -121,7 +121,7 @@ void EnGe1_Init(Actor* thisx, PlayState* play) {
|
||||
Actor_SetScale(&this->actor, 0.01f);
|
||||
|
||||
// In Gerudo Valley
|
||||
this->actor.uncullZoneForward = ((play->sceneNum == SCENE_SPOT09) ? 1000.0f : 1200.0f);
|
||||
this->actor.uncullZoneForward = ((play->sceneNum == SCENE_GERUDO_VALLEY) ? 1000.0f : 1200.0f);
|
||||
|
||||
switch (this->actor.params & 0xFF) {
|
||||
|
||||
|
@ -126,7 +126,7 @@ void EnGe2_Init(Actor* thisx, PlayState* play) {
|
||||
this->actor.colChkInfo.mass = MASS_IMMOVABLE;
|
||||
Actor_SetScale(&this->actor, 0.01f);
|
||||
|
||||
if (play->sceneNum == SCENE_SPOT09) {
|
||||
if (play->sceneNum == SCENE_GERUDO_VALLEY) {
|
||||
this->actor.uncullZoneForward = 1000.0f;
|
||||
} else {
|
||||
this->actor.uncullZoneForward = 1200.0f;
|
||||
|
@ -361,16 +361,16 @@ void EnGo_ChangeAnim(EnGo* this, s32 index) {
|
||||
s32 EnGo_IsActorSpawned(EnGo* this, PlayState* play) {
|
||||
if (((this->actor.params) & 0xF0) == 0x90) {
|
||||
return true;
|
||||
} else if (play->sceneNum == SCENE_HIDAN && !Flags_GetSwitch(play, (this->actor.params) >> 8) &&
|
||||
} else if (play->sceneNum == SCENE_FIRE_TEMPLE && !Flags_GetSwitch(play, (this->actor.params) >> 8) &&
|
||||
LINK_IS_ADULT && (this->actor.params & 0xF0) == 0x10) {
|
||||
return true;
|
||||
} else if (play->sceneNum == SCENE_SPOT18 && LINK_IS_ADULT && (this->actor.params & 0xF0) == 0x00) {
|
||||
} else if (play->sceneNum == SCENE_GORON_CITY && LINK_IS_ADULT && (this->actor.params & 0xF0) == 0x00) {
|
||||
return true;
|
||||
} else if (play->sceneNum == SCENE_SPOT16 && LINK_IS_CHILD &&
|
||||
} else if (play->sceneNum == SCENE_DEATH_MOUNTAIN_TRAIL && LINK_IS_CHILD &&
|
||||
((this->actor.params & 0xF0) == 0x20 || (this->actor.params & 0xF0) == 0x30 ||
|
||||
(this->actor.params & 0xF0) == 0x40)) {
|
||||
return true;
|
||||
} else if (play->sceneNum == SCENE_SPOT18 && LINK_IS_CHILD &&
|
||||
} else if (play->sceneNum == SCENE_GORON_CITY && LINK_IS_CHILD &&
|
||||
((this->actor.params & 0xF0) == 0x50 || (this->actor.params & 0xF0) == 0x60 ||
|
||||
(this->actor.params & 0xF0) == 0x70)) {
|
||||
return true;
|
||||
|
@ -127,7 +127,7 @@ s32 EnGoroiwa_Vec3fNormalize(Vec3f* ret, Vec3f* a) {
|
||||
}
|
||||
|
||||
void EnGoroiwa_SetSpeed(EnGoroiwa* this, PlayState* play) {
|
||||
if (play->sceneNum == SCENE_SPOT04) {
|
||||
if (play->sceneNum == SCENE_KOKIRI_FOREST) {
|
||||
this->isInKokiri = true;
|
||||
R_EN_GOROIWA_SPEED = 920;
|
||||
} else {
|
||||
|
@ -195,7 +195,7 @@ void func_80A56614(EnHeishi4* this, PlayState* play) {
|
||||
this->actionFunc = func_80A56B40;
|
||||
return;
|
||||
}
|
||||
if (play->sceneNum == SCENE_MIHARIGOYA) {
|
||||
if (play->sceneNum == SCENE_MARKET_GUARD_HOUSE) {
|
||||
if (IS_DAY) {
|
||||
this->actor.textId = 0x7004;
|
||||
} else {
|
||||
|
@ -120,7 +120,7 @@ void EnHoll_SwapRooms(PlayState* play) {
|
||||
// Horizontal Planes
|
||||
void func_80A58DD4(EnHoll* this, PlayState* play) {
|
||||
Player* player = GET_PLAYER(play);
|
||||
s32 phi_t0 = ((play->sceneNum == SCENE_JYASINZOU) ? 1 : 0) & 0xFFFFFFFF;
|
||||
s32 phi_t0 = ((play->sceneNum == SCENE_SPIRIT_TEMPLE) ? 1 : 0) & 0xFFFFFFFF;
|
||||
Vec3f vec;
|
||||
f32 absZ;
|
||||
s32 transitionActorIdx;
|
||||
|
@ -157,183 +157,183 @@ typedef struct {
|
||||
|
||||
static EnHorseSpawnpoint sHorseSpawns[] = {
|
||||
// Hyrule Field
|
||||
{ SCENE_SPOT00, 16, 0, 1341, 0 },
|
||||
{ SCENE_SPOT00, -1297, 0, 1459, 0 },
|
||||
{ SCENE_SPOT00, -5416, -300, 1296, 0 },
|
||||
{ SCENE_SPOT00, -4667, -300, 3620, 0 },
|
||||
{ SCENE_SPOT00, -3837, 81, 5537, 0 },
|
||||
{ SCENE_SPOT00, -5093, -226, 6661, 0 },
|
||||
{ SCENE_SPOT00, -6588, -79, 5053, 0 },
|
||||
{ SCENE_SPOT00, -7072, -500, 7538, 0 },
|
||||
{ SCENE_SPOT00, -6139, -500, 8910, 0 },
|
||||
{ SCENE_SPOT00, -8497, -300, 7802, 0 },
|
||||
{ SCENE_SPOT00, -5481, -499, 12127, 0 },
|
||||
{ SCENE_SPOT00, -4808, -700, 13583, 0 },
|
||||
{ SCENE_SPOT00, -3416, -490, 12092, 0 },
|
||||
{ SCENE_SPOT00, -2915, 100, 8339, 0 },
|
||||
{ SCENE_SPOT00, -2277, -500, 13247, 0 },
|
||||
{ SCENE_SPOT00, -1026, -500, 12101, 0 },
|
||||
{ SCENE_SPOT00, 1427, -500, 13341, 0 },
|
||||
{ SCENE_SPOT00, -200, -486, 10205, 0 },
|
||||
{ SCENE_SPOT00, -1469, 100, 7496, 0 },
|
||||
{ SCENE_SPOT00, -995, 168, 5652, 0 },
|
||||
{ SCENE_SPOT00, 1938, 89, 6232, 0 },
|
||||
{ SCENE_SPOT00, 1387, -105, 9206, 0 },
|
||||
{ SCENE_SPOT00, 1571, -223, 7701, 0 },
|
||||
{ SCENE_SPOT00, 3893, -121, 7068, 0 },
|
||||
{ SCENE_SPOT00, 3179, 373, 5221, 0 },
|
||||
{ SCENE_SPOT00, 4678, -20, 3869, 0 },
|
||||
{ SCENE_SPOT00, 3460, 246, 4207, 0 },
|
||||
{ SCENE_SPOT00, 3686, 128, 2366, 0 },
|
||||
{ SCENE_SPOT00, 1791, 18, 152, 0 },
|
||||
{ SCENE_SPOT00, 3667, -16, 1399, 0 },
|
||||
{ SCENE_SPOT00, 1827, -15, 983, 0 },
|
||||
{ SCENE_SPOT00, 1574, 399, 4318, 0 },
|
||||
{ SCENE_SPOT00, 716, 95, 3391, 0 },
|
||||
{ SCENE_SPOT00, -1189, -41, 4739, 0 },
|
||||
{ SCENE_SPOT00, -1976, -171, 4172, 0 },
|
||||
{ SCENE_SPOT00, 1314, 391, 5665, 0 },
|
||||
{ SCENE_SPOT00, 112, 0, 1959, 0 },
|
||||
{ SCENE_SPOT00, -3011, -111, 9397, 0 },
|
||||
{ SCENE_SPOT00, -5674, -270, 8585, 0 },
|
||||
{ SCENE_SPOT00, -8861, -300, 7836, 0 },
|
||||
{ SCENE_SPOT00, -6056, -500, 7810, 0 },
|
||||
{ SCENE_SPOT00, -7306, -500, 5994, 0 },
|
||||
{ SCENE_SPOT00, -7305, -500, 7605, 0 },
|
||||
{ SCENE_SPOT00, -7439, -300, 7600, 0 },
|
||||
{ SCENE_SPOT00, -7464, -300, 6268, 0 },
|
||||
{ SCENE_SPOT00, -8080, -300, 7553, 0 },
|
||||
{ SCENE_SPOT00, -8091, -300, 7349, 0 },
|
||||
{ SCENE_SPOT00, -8785, -300, 7383, 0 },
|
||||
{ SCENE_SPOT00, -8745, -300, 7508, 0 },
|
||||
{ SCENE_SPOT00, -8777, -300, 7788, 0 },
|
||||
{ SCENE_SPOT00, -8048, -299, 7738, 0 },
|
||||
{ SCENE_SPOT00, -7341, -184, 7730, 0 },
|
||||
{ SCENE_SPOT00, -6410, -288, 7824, 0 },
|
||||
{ SCENE_SPOT00, -6326, -290, 8205, 0 },
|
||||
{ SCENE_SPOT00, -6546, -292, 8400, 0 },
|
||||
{ SCENE_SPOT00, -7533, -180, 8459, 0 },
|
||||
{ SCENE_SPOT00, -8024, -295, 7903, 0 },
|
||||
{ SCENE_SPOT00, -8078, -308, 7994, 0 },
|
||||
{ SCENE_SPOT00, -9425, -287, 7696, 0 },
|
||||
{ SCENE_SPOT00, -9322, -292, 7577, 0 },
|
||||
{ SCENE_SPOT00, -9602, -199, 7160, 0 },
|
||||
{ SCENE_SPOT00, -9307, -300, 7758, 0 },
|
||||
{ SCENE_SPOT00, -9230, -300, 7642, 0 },
|
||||
{ SCENE_SPOT00, -7556, -499, 8695, 0 },
|
||||
{ SCENE_SPOT00, -6438, -500, 8606, 0 },
|
||||
{ SCENE_SPOT00, -6078, -500, 8258, 0 },
|
||||
{ SCENE_SPOT00, -6233, -500, 7613, 0 },
|
||||
{ SCENE_SPOT00, -5035, -205, 7814, 0 },
|
||||
{ SCENE_SPOT00, -5971, -500, 8501, 0 },
|
||||
{ SCENE_SPOT00, -5724, -498, 10123, 0 },
|
||||
{ SCENE_SPOT00, -5094, -392, 11106, 0 },
|
||||
{ SCENE_SPOT00, -5105, -393, 11312, 0 },
|
||||
{ SCENE_SPOT00, -4477, -314, 11132, 0 },
|
||||
{ SCENE_SPOT00, -3867, -380, 11419, 0 },
|
||||
{ SCENE_SPOT00, -2952, -500, 11944, 0 },
|
||||
{ SCENE_SPOT00, -2871, -488, 11743, 0 },
|
||||
{ SCENE_SPOT00, -3829, -372, 11327, 0 },
|
||||
{ SCENE_SPOT00, -4439, -293, 10989, 0 },
|
||||
{ SCENE_SPOT00, -5014, -381, 11086, 0 },
|
||||
{ SCENE_SPOT00, -5113, -188, 10968, 0 },
|
||||
{ SCENE_SPOT00, -5269, -188, 11156, 0 },
|
||||
{ SCENE_SPOT00, -5596, -178, 9972, 0 },
|
||||
{ SCENE_SPOT00, -5801, -288, 8518, 0 },
|
||||
{ SCENE_SPOT00, -4910, -178, 7931, 0 },
|
||||
{ SCENE_SPOT00, -3586, 73, 8140, 0 },
|
||||
{ SCENE_SPOT00, -4487, -106, 9362, 0 },
|
||||
{ SCENE_SPOT00, -4339, -112, 6412, 0 },
|
||||
{ SCENE_SPOT00, -3417, 105, 8194, 0 },
|
||||
{ SCENE_SPOT00, -4505, -20, 6608, 0 },
|
||||
{ SCENE_SPOT00, -5038, -199, 6603, 0 },
|
||||
{ SCENE_SPOT00, -4481, 1, 6448, 0 },
|
||||
{ SCENE_SPOT00, -5032, -168, 6418, 0 },
|
||||
{ SCENE_SPOT00, -5256, -700, 14329, 0 },
|
||||
{ SCENE_SPOT00, -5749, -820, 15380, 0 },
|
||||
{ SCENE_SPOT00, -3122, -700, 13608, 0 },
|
||||
{ SCENE_SPOT00, -3758, -525, 13228, 0 },
|
||||
{ SCENE_SPOT00, -3670, -500, 13123, 0 },
|
||||
{ SCENE_SPOT00, -2924, -500, 13526, 0 },
|
||||
{ SCENE_SPOT00, 1389, -115, 9370, 0 },
|
||||
{ SCENE_SPOT00, 548, -116, 8889, 0 },
|
||||
{ SCENE_SPOT00, -106, -107, 8530, 0 },
|
||||
{ SCENE_SPOT00, -1608, 85, 7646, 0 },
|
||||
{ SCENE_SPOT00, -5300, -700, 13772, 0 },
|
||||
{ SCENE_SPOT00, -5114, -700, 13400, 0 },
|
||||
{ SCENE_SPOT00, -4561, -700, 13700, 0 },
|
||||
{ SCENE_SPOT00, -4762, -700, 14084, 0 },
|
||||
{ SCENE_SPOT00, -2954, 100, 8216, 0 },
|
||||
{ SCENE_SPOT00, 1460, -104, 9246, 0 },
|
||||
{ SCENE_SPOT00, 629, -105, 8791, 0 },
|
||||
{ SCENE_SPOT00, -10, -90, 8419, 0 },
|
||||
{ SCENE_SPOT00, -1462, 100, 7504, 0 },
|
||||
{ SCENE_SPOT00, -3018, -500, 12493, 0 },
|
||||
{ SCENE_SPOT00, -2994, -311, 10331, 0 },
|
||||
{ SCENE_SPOT00, -4006, -700, 14152, 0 },
|
||||
{ SCENE_SPOT00, -4341, -500, 12743, 0 },
|
||||
{ SCENE_SPOT00, -5879, -497, 6799, 0 },
|
||||
{ SCENE_SPOT00, 22, -473, 10103, 0 },
|
||||
{ SCENE_SPOT00, -1389, -192, 8874, 0 },
|
||||
{ SCENE_SPOT00, -4, 92, 6866, 0 },
|
||||
{ SCENE_SPOT00, 483, 104, 6637, 0 },
|
||||
{ SCENE_SPOT00, 1580, 183, 5987, 0 },
|
||||
{ SCENE_SPOT00, 1548, 308, 5077, 0 },
|
||||
{ SCENE_SPOT00, 1511, 399, 4267, 0 },
|
||||
{ SCENE_SPOT00, 1358, 385, 4271, 0 },
|
||||
{ SCENE_SPOT00, 1379, 395, 5063, 0 },
|
||||
{ SCENE_SPOT00, 1360, 394, 5870, 0 },
|
||||
{ SCENE_SPOT00, 813, 283, 6194, 0 },
|
||||
{ SCENE_SPOT00, -57, 101, 6743, 0 },
|
||||
{ SCENE_SPOT00, 91, 325, 5143, 0 },
|
||||
{ SCENE_SPOT00, 1425, -214, 7659, 0 },
|
||||
{ SCENE_SPOT00, 3487, -19, 880, 0 },
|
||||
{ SCENE_SPOT00, 2933, 152, 2094, 0 },
|
||||
{ SCENE_SPOT00, 2888, -145, 6862, 0 },
|
||||
{ SCENE_SPOT00, 1511, 67, 6471, 0 },
|
||||
{ SCENE_SPOT00, 4051, -47, 1722, 0 },
|
||||
{ SCENE_SPOT00, -7335, -500, 8627, 0 },
|
||||
{ SCENE_SPOT00, -7728, -462, 8498, 0 },
|
||||
{ SCENE_SPOT00, -7791, -446, 8832, 0 },
|
||||
{ SCENE_SPOT00, -2915, -435, 11334, 0 },
|
||||
{ SCENE_SPOT00, 165, -278, 3352, 0 },
|
||||
{ SCENE_HYRULE_FIELD, 16, 0, 1341, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -1297, 0, 1459, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -5416, -300, 1296, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -4667, -300, 3620, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -3837, 81, 5537, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -5093, -226, 6661, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -6588, -79, 5053, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -7072, -500, 7538, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -6139, -500, 8910, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -8497, -300, 7802, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -5481, -499, 12127, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -4808, -700, 13583, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -3416, -490, 12092, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -2915, 100, 8339, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -2277, -500, 13247, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -1026, -500, 12101, 0 },
|
||||
{ SCENE_HYRULE_FIELD, 1427, -500, 13341, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -200, -486, 10205, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -1469, 100, 7496, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -995, 168, 5652, 0 },
|
||||
{ SCENE_HYRULE_FIELD, 1938, 89, 6232, 0 },
|
||||
{ SCENE_HYRULE_FIELD, 1387, -105, 9206, 0 },
|
||||
{ SCENE_HYRULE_FIELD, 1571, -223, 7701, 0 },
|
||||
{ SCENE_HYRULE_FIELD, 3893, -121, 7068, 0 },
|
||||
{ SCENE_HYRULE_FIELD, 3179, 373, 5221, 0 },
|
||||
{ SCENE_HYRULE_FIELD, 4678, -20, 3869, 0 },
|
||||
{ SCENE_HYRULE_FIELD, 3460, 246, 4207, 0 },
|
||||
{ SCENE_HYRULE_FIELD, 3686, 128, 2366, 0 },
|
||||
{ SCENE_HYRULE_FIELD, 1791, 18, 152, 0 },
|
||||
{ SCENE_HYRULE_FIELD, 3667, -16, 1399, 0 },
|
||||
{ SCENE_HYRULE_FIELD, 1827, -15, 983, 0 },
|
||||
{ SCENE_HYRULE_FIELD, 1574, 399, 4318, 0 },
|
||||
{ SCENE_HYRULE_FIELD, 716, 95, 3391, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -1189, -41, 4739, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -1976, -171, 4172, 0 },
|
||||
{ SCENE_HYRULE_FIELD, 1314, 391, 5665, 0 },
|
||||
{ SCENE_HYRULE_FIELD, 112, 0, 1959, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -3011, -111, 9397, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -5674, -270, 8585, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -8861, -300, 7836, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -6056, -500, 7810, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -7306, -500, 5994, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -7305, -500, 7605, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -7439, -300, 7600, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -7464, -300, 6268, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -8080, -300, 7553, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -8091, -300, 7349, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -8785, -300, 7383, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -8745, -300, 7508, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -8777, -300, 7788, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -8048, -299, 7738, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -7341, -184, 7730, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -6410, -288, 7824, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -6326, -290, 8205, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -6546, -292, 8400, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -7533, -180, 8459, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -8024, -295, 7903, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -8078, -308, 7994, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -9425, -287, 7696, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -9322, -292, 7577, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -9602, -199, 7160, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -9307, -300, 7758, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -9230, -300, 7642, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -7556, -499, 8695, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -6438, -500, 8606, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -6078, -500, 8258, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -6233, -500, 7613, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -5035, -205, 7814, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -5971, -500, 8501, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -5724, -498, 10123, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -5094, -392, 11106, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -5105, -393, 11312, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -4477, -314, 11132, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -3867, -380, 11419, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -2952, -500, 11944, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -2871, -488, 11743, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -3829, -372, 11327, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -4439, -293, 10989, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -5014, -381, 11086, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -5113, -188, 10968, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -5269, -188, 11156, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -5596, -178, 9972, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -5801, -288, 8518, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -4910, -178, 7931, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -3586, 73, 8140, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -4487, -106, 9362, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -4339, -112, 6412, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -3417, 105, 8194, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -4505, -20, 6608, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -5038, -199, 6603, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -4481, 1, 6448, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -5032, -168, 6418, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -5256, -700, 14329, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -5749, -820, 15380, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -3122, -700, 13608, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -3758, -525, 13228, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -3670, -500, 13123, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -2924, -500, 13526, 0 },
|
||||
{ SCENE_HYRULE_FIELD, 1389, -115, 9370, 0 },
|
||||
{ SCENE_HYRULE_FIELD, 548, -116, 8889, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -106, -107, 8530, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -1608, 85, 7646, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -5300, -700, 13772, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -5114, -700, 13400, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -4561, -700, 13700, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -4762, -700, 14084, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -2954, 100, 8216, 0 },
|
||||
{ SCENE_HYRULE_FIELD, 1460, -104, 9246, 0 },
|
||||
{ SCENE_HYRULE_FIELD, 629, -105, 8791, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -10, -90, 8419, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -1462, 100, 7504, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -3018, -500, 12493, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -2994, -311, 10331, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -4006, -700, 14152, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -4341, -500, 12743, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -5879, -497, 6799, 0 },
|
||||
{ SCENE_HYRULE_FIELD, 22, -473, 10103, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -1389, -192, 8874, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -4, 92, 6866, 0 },
|
||||
{ SCENE_HYRULE_FIELD, 483, 104, 6637, 0 },
|
||||
{ SCENE_HYRULE_FIELD, 1580, 183, 5987, 0 },
|
||||
{ SCENE_HYRULE_FIELD, 1548, 308, 5077, 0 },
|
||||
{ SCENE_HYRULE_FIELD, 1511, 399, 4267, 0 },
|
||||
{ SCENE_HYRULE_FIELD, 1358, 385, 4271, 0 },
|
||||
{ SCENE_HYRULE_FIELD, 1379, 395, 5063, 0 },
|
||||
{ SCENE_HYRULE_FIELD, 1360, 394, 5870, 0 },
|
||||
{ SCENE_HYRULE_FIELD, 813, 283, 6194, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -57, 101, 6743, 0 },
|
||||
{ SCENE_HYRULE_FIELD, 91, 325, 5143, 0 },
|
||||
{ SCENE_HYRULE_FIELD, 1425, -214, 7659, 0 },
|
||||
{ SCENE_HYRULE_FIELD, 3487, -19, 880, 0 },
|
||||
{ SCENE_HYRULE_FIELD, 2933, 152, 2094, 0 },
|
||||
{ SCENE_HYRULE_FIELD, 2888, -145, 6862, 0 },
|
||||
{ SCENE_HYRULE_FIELD, 1511, 67, 6471, 0 },
|
||||
{ SCENE_HYRULE_FIELD, 4051, -47, 1722, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -7335, -500, 8627, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -7728, -462, 8498, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -7791, -446, 8832, 0 },
|
||||
{ SCENE_HYRULE_FIELD, -2915, -435, 11334, 0 },
|
||||
{ SCENE_HYRULE_FIELD, 165, -278, 3352, 0 },
|
||||
|
||||
// Lake Hylia
|
||||
{ SCENE_SPOT06, -2109, -882, 1724, 0 },
|
||||
{ SCENE_SPOT06, -328, -1238, 2705, 0 },
|
||||
{ SCENE_SPOT06, -3092, -1033, 3527, 0 },
|
||||
{ SCENE_LAKE_HYLIA, -2109, -882, 1724, 0 },
|
||||
{ SCENE_LAKE_HYLIA, -328, -1238, 2705, 0 },
|
||||
{ SCENE_LAKE_HYLIA, -3092, -1033, 3527, 0 },
|
||||
|
||||
// Gerudo Valley
|
||||
{ SCENE_SPOT09, 2687, -269, 753, 0 },
|
||||
{ SCENE_SPOT09, 2066, -132, 317, 0 },
|
||||
{ SCENE_SPOT09, 523, -8, 635, 0 },
|
||||
{ SCENE_SPOT09, 558, 36, -323, 0 },
|
||||
{ SCENE_SPOT09, 615, 51, -839, 0 },
|
||||
{ SCENE_SPOT09, -614, 32, 29, 0 },
|
||||
{ SCENE_SPOT09, -639, -3, 553, 0 },
|
||||
{ SCENE_SPOT09, -540, 10, -889, 0 },
|
||||
{ SCENE_SPOT09, -1666, 58, 378, 0 },
|
||||
{ SCENE_SPOT09, -3044, 210, -648, 0 },
|
||||
{ SCENE_GERUDO_VALLEY, 2687, -269, 753, 0 },
|
||||
{ SCENE_GERUDO_VALLEY, 2066, -132, 317, 0 },
|
||||
{ SCENE_GERUDO_VALLEY, 523, -8, 635, 0 },
|
||||
{ SCENE_GERUDO_VALLEY, 558, 36, -323, 0 },
|
||||
{ SCENE_GERUDO_VALLEY, 615, 51, -839, 0 },
|
||||
{ SCENE_GERUDO_VALLEY, -614, 32, 29, 0 },
|
||||
{ SCENE_GERUDO_VALLEY, -639, -3, 553, 0 },
|
||||
{ SCENE_GERUDO_VALLEY, -540, 10, -889, 0 },
|
||||
{ SCENE_GERUDO_VALLEY, -1666, 58, 378, 0 },
|
||||
{ SCENE_GERUDO_VALLEY, -3044, 210, -648, 0 },
|
||||
|
||||
// Gerudo's Fortress
|
||||
{ SCENE_SPOT12, -678, 21, -623, 0 },
|
||||
{ SCENE_SPOT12, 149, 333, -2499, 0 },
|
||||
{ SCENE_SPOT12, 499, 581, -547, 0 },
|
||||
{ SCENE_SPOT12, 3187, 1413, -3775, 0 },
|
||||
{ SCENE_SPOT12, 3198, 1413, 307, 0 },
|
||||
{ SCENE_SPOT12, 3380, 1413, -1200, 0 },
|
||||
{ SCENE_SPOT12, -966, 1, -56, 0 },
|
||||
{ SCENE_SPOT12, -966, 24, -761, 0 },
|
||||
{ SCENE_SPOT12, -694, 174, -2820, 0 },
|
||||
{ SCENE_GERUDOS_FORTRESS, -678, 21, -623, 0 },
|
||||
{ SCENE_GERUDOS_FORTRESS, 149, 333, -2499, 0 },
|
||||
{ SCENE_GERUDOS_FORTRESS, 499, 581, -547, 0 },
|
||||
{ SCENE_GERUDOS_FORTRESS, 3187, 1413, -3775, 0 },
|
||||
{ SCENE_GERUDOS_FORTRESS, 3198, 1413, 307, 0 },
|
||||
{ SCENE_GERUDOS_FORTRESS, 3380, 1413, -1200, 0 },
|
||||
{ SCENE_GERUDOS_FORTRESS, -966, 1, -56, 0 },
|
||||
{ SCENE_GERUDOS_FORTRESS, -966, 24, -761, 0 },
|
||||
{ SCENE_GERUDOS_FORTRESS, -694, 174, -2820, 0 },
|
||||
|
||||
// Lon Lon Ranch
|
||||
{ SCENE_SPOT20, 1039, 0, 2051, 0 },
|
||||
{ SCENE_SPOT20, -1443, 0, 1429, 0 },
|
||||
{ SCENE_SPOT20, 856, 0, -918, 0 }, // Hardcoded to always load in lon lon
|
||||
{ SCENE_SPOT20, 882, 0, -2256, 0 },
|
||||
{ SCENE_SPOT20, -1003, 0, -755, 0 }, // Hardcoded to always load in lon lon
|
||||
{ SCENE_SPOT20, -2254, 0, -629, 0 },
|
||||
{ SCENE_SPOT20, 907, 0, -2336, 0 },
|
||||
{ SCENE_LON_LON_RANCH, 1039, 0, 2051, 0 },
|
||||
{ SCENE_LON_LON_RANCH, -1443, 0, 1429, 0 },
|
||||
{ SCENE_LON_LON_RANCH, 856, 0, -918, 0 }, // Hardcoded to always load in lon lon
|
||||
{ SCENE_LON_LON_RANCH, 882, 0, -2256, 0 },
|
||||
{ SCENE_LON_LON_RANCH, -1003, 0, -755, 0 }, // Hardcoded to always load in lon lon
|
||||
{ SCENE_LON_LON_RANCH, -2254, 0, -629, 0 },
|
||||
{ SCENE_LON_LON_RANCH, 907, 0, -2336, 0 },
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
@ -457,7 +457,7 @@ s32 EnHorse_BgCheckBridgeJumpPoint(EnHorse* this, PlayState* play) {
|
||||
f32 xMax;
|
||||
s32 i;
|
||||
|
||||
if (play->sceneNum != SCENE_SPOT09) {
|
||||
if (play->sceneNum != SCENE_GERUDO_VALLEY) {
|
||||
return false;
|
||||
}
|
||||
if (this->actor.speedXZ < 12.8f) {
|
||||
@ -680,7 +680,7 @@ s32 EnHorse_Spawn(EnHorse* this, PlayState* play) {
|
||||
for (i = 0; i < 169; i++) {
|
||||
if (sHorseSpawns[i].scene == play->sceneNum) {
|
||||
player = GET_PLAYER(play);
|
||||
if (play->sceneNum != SCENE_SPOT20 ||
|
||||
if (play->sceneNum != SCENE_LON_LON_RANCH ||
|
||||
//! Same flag checked twice
|
||||
(Flags_GetEventChkInf(EVENTCHKINF_EPONA_OBTAINED) && ((gSaveContext.eventInf[0] & 0xF) != 6 || Flags_GetEventChkInf(EVENTCHKINF_EPONA_OBTAINED))) ||
|
||||
// always load two spawns inside lon lon
|
||||
@ -784,9 +784,9 @@ void EnHorse_Init(Actor* thisx, PlayState* play2) {
|
||||
this->actor.params = 1;
|
||||
}
|
||||
|
||||
if (play->sceneNum == SCENE_SOUKO) {
|
||||
if (play->sceneNum == SCENE_LON_LON_BUILDINGS) {
|
||||
this->stateFlags = ENHORSE_UNRIDEABLE;
|
||||
} else if (play->sceneNum == SCENE_SPOT12 && this->type == HORSE_HNI) {
|
||||
} else if (play->sceneNum == SCENE_GERUDOS_FORTRESS && this->type == HORSE_HNI) {
|
||||
this->stateFlags = ENHORSE_FLAG_18 | ENHORSE_UNRIDEABLE;
|
||||
} else {
|
||||
if (this->actor.params == 3) {
|
||||
@ -806,7 +806,7 @@ void EnHorse_Init(Actor* thisx, PlayState* play2) {
|
||||
}
|
||||
}
|
||||
|
||||
if (play->sceneNum == SCENE_SPOT20 && (gSaveContext.eventInf[0] & 0xF) == 6 &&
|
||||
if (play->sceneNum == SCENE_LON_LON_RANCH && (gSaveContext.eventInf[0] & 0xF) == 6 &&
|
||||
Flags_GetEventChkInf(EVENTCHKINF_EPONA_OBTAINED) == 0 && !DREG(1)) {
|
||||
this->stateFlags |= ENHORSE_FLAG_25;
|
||||
}
|
||||
@ -827,7 +827,7 @@ void EnHorse_Init(Actor* thisx, PlayState* play2) {
|
||||
this->actor.focus.pos.y += 70.0f;
|
||||
this->playerControlled = false;
|
||||
|
||||
if ((play->sceneNum == SCENE_SPOT20) && (gSaveContext.sceneSetupIndex < 4)) {
|
||||
if ((play->sceneNum == SCENE_LON_LON_RANCH) && (gSaveContext.sceneSetupIndex < 4)) {
|
||||
if (this->type == HORSE_HNI) {
|
||||
if (this->actor.world.rot.z == 0 || !IS_DAY) {
|
||||
Actor_Kill(&this->actor);
|
||||
@ -845,7 +845,7 @@ void EnHorse_Init(Actor* thisx, PlayState* play2) {
|
||||
Actor_Kill(&this->actor);
|
||||
return;
|
||||
}
|
||||
} else if (play->sceneNum == SCENE_MALON_STABLE) {
|
||||
} else if (play->sceneNum == SCENE_STABLE) {
|
||||
if (IS_DAY || Flags_GetEventChkInf(EVENTCHKINF_EPONA_OBTAINED) || DREG(1) != 0 || !LINK_IS_ADULT) {
|
||||
Actor_Kill(&this->actor);
|
||||
return;
|
||||
@ -882,12 +882,12 @@ void EnHorse_Init(Actor* thisx, PlayState* play2) {
|
||||
} else if (this->actor.params == 8) {
|
||||
EnHorse_InitHorsebackArchery(this);
|
||||
Interface_InitHorsebackArchery(play);
|
||||
} else if (play->sceneNum == SCENE_SPOT20 && !Flags_GetEventChkInf(EVENTCHKINF_EPONA_OBTAINED) && !DREG(1)) {
|
||||
} else if (play->sceneNum == SCENE_LON_LON_RANCH && !Flags_GetEventChkInf(EVENTCHKINF_EPONA_OBTAINED) && !DREG(1)) {
|
||||
EnHorse_InitFleePlayer(this);
|
||||
} else {
|
||||
if (play->sceneNum == SCENE_SOUKO) {
|
||||
if (play->sceneNum == SCENE_LON_LON_BUILDINGS) {
|
||||
EnHorse_ResetIdleAnimation(this);
|
||||
} else if (play->sceneNum == SCENE_SPOT12 && this->type == HORSE_HNI) {
|
||||
} else if (play->sceneNum == SCENE_GERUDOS_FORTRESS && this->type == HORSE_HNI) {
|
||||
EnHorse_ResetIdleAnimation(this);
|
||||
} else {
|
||||
EnHorse_StartIdleRidable(this);
|
||||
@ -3075,7 +3075,7 @@ void EnHorse_BgCheckSlowMoving(EnHorse* this, PlayState* play) {
|
||||
CollisionPoly* colPoly;
|
||||
s32 bgId;
|
||||
|
||||
if (play->sceneNum == SCENE_SPOT20) {
|
||||
if (play->sceneNum == SCENE_LON_LON_RANCH) {
|
||||
yOffset = 19.0f;
|
||||
} else {
|
||||
yOffset = 40.0f;
|
||||
@ -3116,7 +3116,7 @@ void EnHorse_UpdateBgCheckInfo(EnHorse* this, PlayState* play) {
|
||||
Vec3f intersect;
|
||||
Vec3f obstacleTop;
|
||||
|
||||
Actor_UpdateBgCheckInfo(play, &this->actor, play->sceneNum == SCENE_SPOT20 ? 19.0f : 40.0f, 35.0f, 100.0f,
|
||||
Actor_UpdateBgCheckInfo(play, &this->actor, play->sceneNum == SCENE_LON_LON_RANCH ? 19.0f : 40.0f, 35.0f, 100.0f,
|
||||
29);
|
||||
|
||||
if (EnHorse_BgCheckBridgeJumpPoint(this, play)) {
|
||||
@ -3534,8 +3534,8 @@ void EnHorse_Update(Actor* thisx, PlayState* play2) {
|
||||
CollisionCheck_SetOC(play, &play->colChkCtx, &this->cyl1.base);
|
||||
CollisionCheck_SetOC(play, &play->colChkCtx, &this->cyl2.base);
|
||||
if ((player->stateFlags1 & 1) && player->rideActor != NULL) {
|
||||
if (play->sceneNum != SCENE_SPOT20 ||
|
||||
(play->sceneNum == SCENE_SPOT20 && (thisx->world.pos.z < -2400.0f))) {
|
||||
if (play->sceneNum != SCENE_LON_LON_RANCH ||
|
||||
(play->sceneNum == SCENE_LON_LON_RANCH && (thisx->world.pos.z < -2400.0f))) {
|
||||
EnHorse_UpdateConveyors(this, play);
|
||||
}
|
||||
}
|
||||
@ -3554,7 +3554,7 @@ void EnHorse_Update(Actor* thisx, PlayState* play2) {
|
||||
this->stateFlags &= ~ENHORSE_FLAG_24;
|
||||
}
|
||||
|
||||
if (play->sceneNum == SCENE_SPOT09 && !GET_EVENTCHKINF_CARPENTERS_FREE_ALL()) {
|
||||
if (play->sceneNum == SCENE_GERUDO_VALLEY && !GET_EVENTCHKINF_CARPENTERS_FREE_ALL()) {
|
||||
EnHorse_CheckBridgeJumps(this, play);
|
||||
}
|
||||
|
||||
|
@ -441,7 +441,7 @@ void EnHorseGameCheck_Init(Actor* thisx, PlayState* play) {
|
||||
s32 pad;
|
||||
EnHorseGameCheckBase* this = (EnHorseGameCheckBase*)thisx;
|
||||
|
||||
if ((play->sceneNum == SCENE_SPOT20) && (Flags_GetEventChkInf(EVENTCHKINF_EPONA_OBTAINED) || DREG(1))) {
|
||||
if ((play->sceneNum == SCENE_LON_LON_RANCH) && (Flags_GetEventChkInf(EVENTCHKINF_EPONA_OBTAINED) || DREG(1))) {
|
||||
this->actor.params = HORSEGAME_MALON_RACE;
|
||||
}
|
||||
if (sInitFuncs[this->actor.params] != NULL) {
|
||||
|
@ -165,7 +165,7 @@ void EnHorseLinkChild_Init(Actor* thisx, PlayState* play) {
|
||||
|
||||
if (gSaveContext.sceneSetupIndex > 3) {
|
||||
func_80A69EC0(this);
|
||||
} else if (play->sceneNum == SCENE_SPOT20) {
|
||||
} else if (play->sceneNum == SCENE_LON_LON_RANCH) {
|
||||
if (!Flags_GetEventChkInf(EVENTCHKINF_TALON_RETURNED_FROM_CASTLE)) {
|
||||
Actor_Kill(&this->actor);
|
||||
return;
|
||||
@ -360,7 +360,7 @@ void func_80A6A068(EnHorseLinkChild* this, PlayState* play) {
|
||||
}
|
||||
|
||||
if (((Flags_GetEventChkInf(EVENTCHKINF_INVITED_TO_SING_WITH_CHILD_MALON)) && (DREG(53) != 0)) ||
|
||||
((play->sceneNum == SCENE_SPOT20) && (gSaveContext.cutsceneIndex == 0xFFF1))) {
|
||||
((play->sceneNum == SCENE_LON_LON_RANCH) && (gSaveContext.cutsceneIndex == 0xFFF1))) {
|
||||
func_80A6A4DC(this);
|
||||
} else {
|
||||
this->unk_2A0 = Flags_GetEventChkInf(EVENTCHKINF_INVITED_TO_SING_WITH_CHILD_MALON);
|
||||
@ -558,7 +558,7 @@ void EnHorseLinkChild_Update(Actor* thisx, PlayState* play) {
|
||||
Actor_MoveForward(&this->actor);
|
||||
Actor_UpdateBgCheckInfo(play, &this->actor, 20.0f, 55.0f, 100.0f, 0x1D);
|
||||
|
||||
if ((play->sceneNum == SCENE_SPOT20) && (this->actor.world.pos.z < -2400.0f)) {
|
||||
if ((play->sceneNum == SCENE_LON_LON_RANCH) && (this->actor.world.pos.z < -2400.0f)) {
|
||||
this->actor.world.pos.z = -2400.0f;
|
||||
}
|
||||
|
||||
|
@ -202,7 +202,7 @@ void EnHorseNormal_Init(Actor* thisx, PlayState* play) {
|
||||
Collider_InitCylinder(play, &this->cloneCollider);
|
||||
Collider_SetCylinder(play, &this->cloneCollider, &this->actor, &sCylinderInit2);
|
||||
CollisionCheck_SetInfo(&this->actor.colChkInfo, NULL, &sColChkInfoInit);
|
||||
if (play->sceneNum == SCENE_SPOT20) {
|
||||
if (play->sceneNum == SCENE_LON_LON_RANCH) {
|
||||
if (this->actor.world.rot.z == 0 || !IS_DAY) {
|
||||
Actor_Kill(&this->actor);
|
||||
return;
|
||||
@ -236,7 +236,7 @@ void EnHorseNormal_Init(Actor* thisx, PlayState* play) {
|
||||
func_80A6C6B0(this);
|
||||
return;
|
||||
}
|
||||
} else if (play->sceneNum == SCENE_MALON_STABLE) {
|
||||
} else if (play->sceneNum == SCENE_STABLE) {
|
||||
if (IS_DAY) {
|
||||
Actor_Kill(&this->actor);
|
||||
return;
|
||||
@ -246,7 +246,7 @@ void EnHorseNormal_Init(Actor* thisx, PlayState* play) {
|
||||
func_80A6C6B0(this);
|
||||
return;
|
||||
}
|
||||
} else if (play->sceneNum == SCENE_SPOT12) {
|
||||
} else if (play->sceneNum == SCENE_GERUDOS_FORTRESS) {
|
||||
if (this->actor.world.pos.x == 3707.0f && this->actor.world.pos.y == 1413.0f &&
|
||||
this->actor.world.pos.z == -665.0f) {
|
||||
Skin_Init(play, &this->skin, &gHorseNormalSkel, &gHorseNormalIdleAnim);
|
||||
@ -572,7 +572,7 @@ void EnHorseNormal_Update(Actor* thisx, PlayState* play) {
|
||||
sActionFuncs[this->action](this, play);
|
||||
Actor_MoveForward(&this->actor);
|
||||
Actor_UpdateBgCheckInfo(play, &this->actor, 20.0f, 35.0f, 100.0f, 0x1D);
|
||||
if (play->sceneNum == SCENE_SPOT20 && this->actor.world.pos.z < -2400.0f) {
|
||||
if (play->sceneNum == SCENE_LON_LON_RANCH && this->actor.world.pos.z < -2400.0f) {
|
||||
this->actor.world.pos.z = -2400.0f;
|
||||
}
|
||||
this->actor.focus.pos = this->actor.world.pos;
|
||||
@ -639,7 +639,7 @@ void EnHorseNormal_Draw(Actor* thisx, PlayState* play) {
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
if (play->sceneNum != SCENE_SPOT20 || play->sceneNum != SCENE_MALON_STABLE) {
|
||||
if (play->sceneNum != SCENE_LON_LON_RANCH || play->sceneNum != SCENE_STABLE) {
|
||||
func_80A6C8E0(this, play);
|
||||
}
|
||||
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
||||
@ -653,7 +653,7 @@ void EnHorseNormal_Draw(Actor* thisx, PlayState* play) {
|
||||
f32 distFromGround = this->actor.world.pos.y - this->actor.floorHeight;
|
||||
f32 temp_f0_4;
|
||||
|
||||
if (play->sceneNum == SCENE_MALON_STABLE) {
|
||||
if (play->sceneNum == SCENE_STABLE) {
|
||||
if (this->actor.world.pos.x == 355.0f && this->actor.world.pos.y == 0.0f &&
|
||||
this->actor.world.pos.z == -245.0f) {
|
||||
clonePos.x = 235.0f;
|
||||
@ -667,7 +667,7 @@ void EnHorseNormal_Draw(Actor* thisx, PlayState* play) {
|
||||
clonePos.z = 100.0f;
|
||||
cloneRotY = 0x7FFF;
|
||||
}
|
||||
} else if (play->sceneNum == SCENE_SPOT20) {
|
||||
} else if (play->sceneNum == SCENE_LON_LON_RANCH) {
|
||||
if (this->actor.world.pos.x == -730.0f && this->actor.world.pos.y == 0.0f &&
|
||||
this->actor.world.pos.z == -1100.0f) {
|
||||
clonePos.x = 780.0f;
|
||||
|
@ -429,7 +429,7 @@ u16 func_80A6F810(PlayState* play, Actor* thisx) {
|
||||
|
||||
switch (this->actor.params & 0x7F) {
|
||||
case ENHY_TYPE_AOB:
|
||||
if (play->sceneNum == SCENE_KAKARIKO) {
|
||||
if (play->sceneNum == SCENE_KAKARIKO_CENTER_GUEST_HOUSE) {
|
||||
return (this->unk_330 & 0x800) ? 0x508D : ((Flags_GetInfTable(INFTABLE_CB)) ? 0x508C : 0x508B);
|
||||
} else if (play->sceneNum == SCENE_MARKET_DAY) {
|
||||
return (gSaveContext.eventInf[3] & 1) ? 0x709B : 0x709C;
|
||||
@ -452,9 +452,9 @@ u16 func_80A6F810(PlayState* play, Actor* thisx) {
|
||||
return (Flags_GetInfTable(INFTABLE_C0)) ? 0x7017 : 0x7016;
|
||||
}
|
||||
case ENHY_TYPE_AHG_2:
|
||||
if (play->sceneNum == SCENE_KAKARIKO) {
|
||||
if (play->sceneNum == SCENE_KAKARIKO_CENTER_GUEST_HOUSE) {
|
||||
return 0x5086;
|
||||
} else if (play->sceneNum == SCENE_SPOT01) {
|
||||
} else if (play->sceneNum == SCENE_KAKARIKO_VILLAGE) {
|
||||
return 0x5085;
|
||||
} else if (Flags_GetEventChkInf(EVENTCHKINF_ZELDA_FLED_HYRULE_CASTLE)) {
|
||||
return (Flags_GetInfTable(INFTABLE_C3)) ? 0x701A : 0x7047;
|
||||
@ -477,9 +477,9 @@ u16 func_80A6F810(PlayState* play, Actor* thisx) {
|
||||
case ENHY_TYPE_BBA:
|
||||
return (Flags_GetEventChkInf(EVENTCHKINF_ZELDA_FLED_HYRULE_CASTLE)) ? 0x704A : ((Flags_GetInfTable(INFTABLE_C6)) ? 0x7022 : 0x7021);
|
||||
case ENHY_TYPE_BJI_7:
|
||||
if (play->sceneNum == SCENE_KAKARIKO) {
|
||||
if (play->sceneNum == SCENE_KAKARIKO_CENTER_GUEST_HOUSE) {
|
||||
return 0x5088;
|
||||
} else if (play->sceneNum == SCENE_SPOT01) {
|
||||
} else if (play->sceneNum == SCENE_KAKARIKO_VILLAGE) {
|
||||
return 0x5087;
|
||||
} else {
|
||||
return (Flags_GetEventChkInf(EVENTCHKINF_ZELDA_FLED_HYRULE_CASTLE)) ? 0x704D
|
||||
@ -492,18 +492,18 @@ u16 func_80A6F810(PlayState* play, Actor* thisx) {
|
||||
return (Flags_GetInfTable(INFTABLE_C8)) ? 0x701E : 0x701D;
|
||||
}
|
||||
case ENHY_TYPE_BOJ_9:
|
||||
if (play->sceneNum == SCENE_KAKARIKO) {
|
||||
if (play->sceneNum == SCENE_KAKARIKO_CENTER_GUEST_HOUSE) {
|
||||
return (Flags_GetEventChkInf(EVENTCHKINF_BONGO_BONGO_ESCAPED_FROM_WELL)) ? 0x5082 : 0x5081;
|
||||
} else if (play->sceneNum == SCENE_SPOT01) {
|
||||
} else if (play->sceneNum == SCENE_KAKARIKO_VILLAGE) {
|
||||
return CHECK_QUEST_ITEM(QUEST_MEDALLION_SHADOW) ? 0x5080 : 0x507F;
|
||||
} else {
|
||||
return (Flags_GetEventChkInf(EVENTCHKINF_ZELDA_FLED_HYRULE_CASTLE)) ? 0x7049
|
||||
: ((Flags_GetInfTable(INFTABLE_CA)) ? 0x7020 : 0x701F);
|
||||
}
|
||||
case ENHY_TYPE_BOJ_10:
|
||||
if (play->sceneNum == SCENE_LABO) {
|
||||
if (play->sceneNum == SCENE_IMPAS_HOUSE) {
|
||||
return (Flags_GetEventChkInf(EVENTCHKINF_BONGO_BONGO_ESCAPED_FROM_WELL)) ? 0x507E : 0x507D;
|
||||
} else if (play->sceneNum == SCENE_SPOT01) {
|
||||
} else if (play->sceneNum == SCENE_KAKARIKO_VILLAGE) {
|
||||
return CHECK_QUEST_ITEM(QUEST_MEDALLION_SHADOW) ? 0x507C : 0x507B;
|
||||
} else {
|
||||
return (Flags_GetEventChkInf(EVENTCHKINF_ZELDA_FLED_HYRULE_CASTLE)) ? 0x7046
|
||||
@ -513,7 +513,7 @@ u16 func_80A6F810(PlayState* play, Actor* thisx) {
|
||||
return (Flags_GetInfTable(INFTABLE_ENTERED_HYRULE_CASTLE)) ? ((Flags_GetInfTable(INFTABLE_CC)) ? 0x7014 : 0x70A4)
|
||||
: 0x7014;
|
||||
case ENHY_TYPE_BOJ_12:
|
||||
if (play->sceneNum == SCENE_SPOT01) {
|
||||
if (play->sceneNum == SCENE_KAKARIKO_VILLAGE) {
|
||||
return !IS_DAY ? 0x5084 : 0x5083;
|
||||
} else {
|
||||
return (Flags_GetEventChkInf(EVENTCHKINF_ZELDA_FLED_HYRULE_CASTLE)) ? 0x7044 : 0x7015;
|
||||
@ -819,7 +819,7 @@ void func_80A70978(EnHy* this, PlayState* play) {
|
||||
|
||||
s32 EnHy_ShouldSpawn(EnHy* this, PlayState* play) {
|
||||
switch (play->sceneNum) {
|
||||
case SCENE_SPOT01:
|
||||
case SCENE_KAKARIKO_VILLAGE:
|
||||
if (!((this->actor.params & 0x7F) == ENHY_TYPE_BOJ_9 || (this->actor.params & 0x7F) == ENHY_TYPE_BOJ_10 ||
|
||||
(this->actor.params & 0x7F) == ENHY_TYPE_BOJ_12 || (this->actor.params & 0x7F) == ENHY_TYPE_AHG_2 ||
|
||||
(this->actor.params & 0x7F) == ENHY_TYPE_BJI_7)) {
|
||||
@ -831,7 +831,7 @@ s32 EnHy_ShouldSpawn(EnHy* this, PlayState* play) {
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
case SCENE_LABO:
|
||||
case SCENE_IMPAS_HOUSE:
|
||||
if ((this->actor.params & 0x7F) != ENHY_TYPE_BOJ_10) {
|
||||
return true;
|
||||
} else if (LINK_IS_CHILD) {
|
||||
@ -841,7 +841,7 @@ s32 EnHy_ShouldSpawn(EnHy* this, PlayState* play) {
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
case SCENE_IMPA:
|
||||
case SCENE_DOG_LADY_HOUSE:
|
||||
if ((this->actor.params & 0x7F) != ENHY_TYPE_AOB) {
|
||||
return true;
|
||||
} else if (IS_DAY) {
|
||||
@ -849,7 +849,7 @@ s32 EnHy_ShouldSpawn(EnHy* this, PlayState* play) {
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
case SCENE_KAKARIKO:
|
||||
case SCENE_KAKARIKO_CENTER_GUEST_HOUSE:
|
||||
if ((this->actor.params & 0x7F) == ENHY_TYPE_AOB) {
|
||||
return !LINK_IS_ADULT ? false : true;
|
||||
} else if (!((this->actor.params & 0x7F) == ENHY_TYPE_BOJ_9 ||
|
||||
@ -863,8 +863,8 @@ s32 EnHy_ShouldSpawn(EnHy* this, PlayState* play) {
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
case SCENE_MARKET_ALLEY:
|
||||
case SCENE_MARKET_ALLEY_N:
|
||||
case SCENE_BACK_ALLEY_DAY:
|
||||
case SCENE_BACK_ALLEY_NIGHT:
|
||||
if ((this->actor.params & 0x7F) != ENHY_TYPE_BOJ_14) {
|
||||
return true;
|
||||
} else if (IS_NIGHT) {
|
||||
@ -925,12 +925,12 @@ void EnHy_InitImpl(EnHy* this, PlayState* play) {
|
||||
CollisionCheck_SetInfo2(&this->actor.colChkInfo, NULL, &sColChkInfoInit);
|
||||
Animation_ChangeByInfo(&this->skelAnime, sAnimationInfo, sModelInfo[this->actor.params & 0x7F].animInfoIndex);
|
||||
|
||||
if ((play->sceneNum == SCENE_MARKET_ALLEY) || (play->sceneNum == SCENE_MARKET_DAY)) {
|
||||
if ((play->sceneNum == SCENE_BACK_ALLEY_DAY) || (play->sceneNum == SCENE_MARKET_DAY)) {
|
||||
this->actor.flags &= ~ACTOR_FLAG_UPDATE_WHILE_CULLED;
|
||||
this->actor.uncullZoneScale = 0.0f;
|
||||
}
|
||||
|
||||
if (play->sceneNum == SCENE_KAKARIKO) {
|
||||
if (play->sceneNum == SCENE_KAKARIKO_CENTER_GUEST_HOUSE) {
|
||||
this->unk_330 = gSaveContext.eventChkInf[6];
|
||||
}
|
||||
|
||||
|
@ -365,15 +365,15 @@ s32 func_80A7975C(EnIn* this, PlayState* play) {
|
||||
}
|
||||
|
||||
s32 func_80A79830(EnIn* this, PlayState* play) {
|
||||
if (play->sceneNum == SCENE_SPOT20 && LINK_IS_CHILD && IS_DAY && this->actor.shape.rot.z == 1 &&
|
||||
if (play->sceneNum == SCENE_LON_LON_RANCH && LINK_IS_CHILD && IS_DAY && this->actor.shape.rot.z == 1 &&
|
||||
!Flags_GetEventChkInf(EVENTCHKINF_TALON_RETURNED_FROM_CASTLE)) {
|
||||
return 1;
|
||||
}
|
||||
if (play->sceneNum == SCENE_MALON_STABLE && LINK_IS_CHILD && IS_DAY && this->actor.shape.rot.z == 3 &&
|
||||
if (play->sceneNum == SCENE_STABLE && LINK_IS_CHILD && IS_DAY && this->actor.shape.rot.z == 3 &&
|
||||
(Flags_GetEventChkInf(EVENTCHKINF_TALON_RETURNED_FROM_CASTLE))) {
|
||||
return 1;
|
||||
}
|
||||
if (play->sceneNum == SCENE_MALON_STABLE && LINK_IS_CHILD && IS_NIGHT) {
|
||||
if (play->sceneNum == SCENE_STABLE && LINK_IS_CHILD && IS_NIGHT) {
|
||||
if ((this->actor.shape.rot.z == 2) && !Flags_GetEventChkInf(EVENTCHKINF_TALON_RETURNED_FROM_CASTLE)) {
|
||||
return 1;
|
||||
}
|
||||
@ -381,7 +381,7 @@ s32 func_80A79830(EnIn* this, PlayState* play) {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
if (play->sceneNum == SCENE_SPOT20 && LINK_IS_ADULT && IS_DAY) {
|
||||
if (play->sceneNum == SCENE_LON_LON_RANCH && LINK_IS_ADULT && IS_DAY) {
|
||||
if ((this->actor.shape.rot.z == 5) && !Flags_GetEventChkInf(EVENTCHKINF_EPONA_OBTAINED)) {
|
||||
return 2;
|
||||
}
|
||||
@ -389,7 +389,7 @@ s32 func_80A79830(EnIn* this, PlayState* play) {
|
||||
return 4;
|
||||
}
|
||||
}
|
||||
if (play->sceneNum == SCENE_SOUKO && LINK_IS_ADULT && IS_NIGHT) {
|
||||
if (play->sceneNum == SCENE_LON_LON_BUILDINGS && LINK_IS_ADULT && IS_NIGHT) {
|
||||
if (this->actor.shape.rot.z == 6 && !Flags_GetEventChkInf(EVENTCHKINF_EPONA_OBTAINED)) {
|
||||
return 3;
|
||||
}
|
||||
|
@ -951,7 +951,7 @@ void func_80A9877C(EnKo* this, PlayState* play) {
|
||||
}
|
||||
}
|
||||
if (Npc_UpdateTalking(play, &this->actor, &this->interactInfo.talkState, this->lookDist, func_80A97610, func_80A97738) &&
|
||||
ENKO_TYPE == ENKO_TYPE_CHILD_FADO && play->sceneNum == SCENE_SPOT10) {
|
||||
ENKO_TYPE == ENKO_TYPE_CHILD_FADO && play->sceneNum == SCENE_LOST_WOODS) {
|
||||
this->actor.textId = INV_CONTENT(ITEM_TRADE_ADULT) > ITEM_ODD_POTION ? 0x10B9 : 0x10DF;
|
||||
|
||||
if (func_8002F368(play) == ENKO_TYPE_CHILD_9) {
|
||||
@ -965,7 +965,7 @@ void func_80A9877C(EnKo* this, PlayState* play) {
|
||||
// Checks if the Kokiri should spawn based on quest progress
|
||||
s32 EnKo_CanSpawn(EnKo* this, PlayState* play) {
|
||||
switch (play->sceneNum) {
|
||||
case SCENE_SPOT04:
|
||||
case SCENE_KOKIRI_FOREST:
|
||||
if (ENKO_TYPE >= ENKO_TYPE_CHILD_7 && ENKO_TYPE != ENKO_TYPE_CHILD_FADO) {
|
||||
return false;
|
||||
}
|
||||
@ -973,13 +973,13 @@ s32 EnKo_CanSpawn(EnKo* this, PlayState* play) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
case SCENE_KOKIRI_HOME:
|
||||
case SCENE_KNOW_IT_ALL_BROS_HOUSE:
|
||||
if (ENKO_TYPE != ENKO_TYPE_CHILD_7 && ENKO_TYPE != ENKO_TYPE_CHILD_8 && ENKO_TYPE != ENKO_TYPE_CHILD_11) {
|
||||
return false;
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
case SCENE_KOKIRI_HOME3:
|
||||
case SCENE_TWINS_HOUSE:
|
||||
if (LINK_IS_ADULT && !CHECK_QUEST_ITEM(QUEST_MEDALLION_FOREST)) {
|
||||
if (ENKO_TYPE != ENKO_TYPE_CHILD_1 && ENKO_TYPE != ENKO_TYPE_CHILD_9) {
|
||||
return false;
|
||||
@ -992,7 +992,7 @@ s32 EnKo_CanSpawn(EnKo* this, PlayState* play) {
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
case SCENE_KOKIRI_HOME4:
|
||||
case SCENE_MIDOS_HOUSE:
|
||||
if (LINK_IS_ADULT && !CHECK_QUEST_ITEM(QUEST_MEDALLION_FOREST)) {
|
||||
if (ENKO_TYPE != ENKO_TYPE_CHILD_0 && ENKO_TYPE != ENKO_TYPE_CHILD_4) {
|
||||
return false;
|
||||
@ -1002,7 +1002,7 @@ s32 EnKo_CanSpawn(EnKo* this, PlayState* play) {
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
case SCENE_KOKIRI_HOME5:
|
||||
case SCENE_SARIAS_HOUSE:
|
||||
if (LINK_IS_ADULT && !CHECK_QUEST_ITEM(QUEST_MEDALLION_FOREST)) {
|
||||
if (ENKO_TYPE != ENKO_TYPE_CHILD_6) {
|
||||
return false;
|
||||
@ -1026,7 +1026,7 @@ s32 EnKo_CanSpawn(EnKo* this, PlayState* play) {
|
||||
return true;
|
||||
}
|
||||
|
||||
case SCENE_SPOT10:
|
||||
case SCENE_LOST_WOODS:
|
||||
if (gSaveContext.n64ddFlag && Randomizer_GetSettingValue(RSK_SHUFFLE_ADULT_TRADE)) {
|
||||
// To explain the logic because Fado and Grog are linked:
|
||||
// - If you have Cojiro, then spawn Grog and not Fado.
|
||||
@ -1085,7 +1085,7 @@ s32 EnKo_GetForestQuestState2(EnKo* this) {
|
||||
void func_80A98DB4(EnKo* this, PlayState* play) {
|
||||
f32 dist;
|
||||
|
||||
if (play->sceneNum != SCENE_SPOT10 && play->sceneNum != SCENE_SPOT04) {
|
||||
if (play->sceneNum != SCENE_LOST_WOODS && play->sceneNum != SCENE_KOKIRI_FOREST) {
|
||||
this->modelAlpha = 255.0f;
|
||||
return;
|
||||
}
|
||||
@ -1112,7 +1112,7 @@ void func_80A98DB4(EnKo* this, PlayState* play) {
|
||||
}
|
||||
|
||||
s32 func_80A98ECC(EnKo* this, PlayState* play) {
|
||||
if (play->sceneNum == SCENE_SPOT10 && ENKO_TYPE == ENKO_TYPE_CHILD_FADO) {
|
||||
if (play->sceneNum == SCENE_LOST_WOODS && ENKO_TYPE == ENKO_TYPE_CHILD_FADO) {
|
||||
return func_80A97E18(this, play);
|
||||
}
|
||||
switch (EnKo_GetForestQuestState(this)) {
|
||||
|
@ -97,7 +97,7 @@ bool Randomizer_ObtainedMalonHCReward() {
|
||||
u16 EnMa1_GetText(PlayState* play, Actor* thisx) {
|
||||
// Special case for Malon Hyrule Castle Text. Placing it here at the beginning
|
||||
// has the added benefit of circumventing mask text if wearing bunny hood.
|
||||
if (gSaveContext.n64ddFlag && play->sceneNum == SCENE_SPOT15) {
|
||||
if (gSaveContext.n64ddFlag && play->sceneNum == SCENE_HYRULE_CASTLE) {
|
||||
return Randomizer_ObtainedMalonHCReward() ? 0x2044 : 0x2043;
|
||||
}
|
||||
u16 faceReaction = Text_GetFaceReaction(play, 0x17);
|
||||
@ -205,7 +205,7 @@ s32 func_80AA08C4(EnMa1* this, PlayState* play) {
|
||||
!Flags_GetEventChkInf(EVENTCHKINF_TALON_RETURNED_FROM_CASTLE) && !Flags_GetInfTable(INFTABLE_ENTERED_HYRULE_CASTLE)) {
|
||||
return 1;
|
||||
}
|
||||
if ((play->sceneNum == SCENE_SPOT15) && // if we're at hyrule castle
|
||||
if ((play->sceneNum == SCENE_HYRULE_CASTLE) && // if we're at hyrule castle
|
||||
(!Flags_GetEventChkInf(EVENTCHKINF_TALON_RETURNED_FROM_CASTLE) || // and talon hasn't left
|
||||
(gSaveContext.n64ddFlag &&
|
||||
!Randomizer_ObtainedMalonHCReward()))) { // or we're rando'd and haven't gotten malon's HC check
|
||||
@ -217,11 +217,11 @@ s32 func_80AA08C4(EnMa1* this, PlayState* play) {
|
||||
}
|
||||
}
|
||||
// Malon asleep in her bed if Talon has left Hyrule Castle and it is nighttime.
|
||||
if ((play->sceneNum == SCENE_SOUKO) && IS_NIGHT && (Flags_GetEventChkInf(EVENTCHKINF_TALON_RETURNED_FROM_CASTLE))) {
|
||||
if ((play->sceneNum == SCENE_LON_LON_BUILDINGS) && IS_NIGHT && (Flags_GetEventChkInf(EVENTCHKINF_TALON_RETURNED_FROM_CASTLE))) {
|
||||
return 1;
|
||||
}
|
||||
// Don't spawn Malon if none of the above are true and we are not in Lon Lon Ranch.
|
||||
if (play->sceneNum != SCENE_SPOT20) {
|
||||
if (play->sceneNum != SCENE_LON_LON_RANCH) {
|
||||
return 0;
|
||||
}
|
||||
// If we've gotten this far, we're in Lon Lon Ranch. Spawn Malon if it is daytime, Talon has left Hyrule Castle, and
|
||||
@ -349,7 +349,7 @@ void func_80AA0D88(EnMa1* this, PlayState* play) {
|
||||
// We want to Kill Malon's Actor outside of randomizer when Talon is freed. In Randomizer we don't kill Malon's
|
||||
// Actor here, otherwise if we wake up Talon first and then get her check she will spontaneously
|
||||
// disappear.
|
||||
if ((play->sceneNum == SCENE_SPOT15) && (!gSaveContext.n64ddFlag && Flags_GetEventChkInf(EVENTCHKINF_TALON_RETURNED_FROM_CASTLE))) {
|
||||
if ((play->sceneNum == SCENE_HYRULE_CASTLE) && (!gSaveContext.n64ddFlag && Flags_GetEventChkInf(EVENTCHKINF_TALON_RETURNED_FROM_CASTLE))) {
|
||||
Actor_Kill(&this->actor);
|
||||
// We want Malon to give the Weird Egg Check (see function below) in the following situations:
|
||||
// 1. Talon as not left Hyrule Castle (Vanilla) OR
|
||||
|
@ -142,15 +142,15 @@ u16 func_80AA1B58(EnMa2* this, PlayState* play) {
|
||||
if (LINK_IS_CHILD) {
|
||||
return 0;
|
||||
}
|
||||
if (!Flags_GetEventChkInf(EVENTCHKINF_EPONA_OBTAINED) && (play->sceneNum == SCENE_MALON_STABLE) && IS_DAY &&
|
||||
if (!Flags_GetEventChkInf(EVENTCHKINF_EPONA_OBTAINED) && (play->sceneNum == SCENE_STABLE) && IS_DAY &&
|
||||
(this->actor.shape.rot.z == 5)) {
|
||||
return 1;
|
||||
}
|
||||
if (!Flags_GetEventChkInf(EVENTCHKINF_EPONA_OBTAINED) && (play->sceneNum == SCENE_SPOT20) && IS_NIGHT &&
|
||||
if (!Flags_GetEventChkInf(EVENTCHKINF_EPONA_OBTAINED) && (play->sceneNum == SCENE_LON_LON_RANCH) && IS_NIGHT &&
|
||||
(this->actor.shape.rot.z == 6)) {
|
||||
return 2;
|
||||
}
|
||||
if (!Flags_GetEventChkInf(EVENTCHKINF_EPONA_OBTAINED) || (play->sceneNum != SCENE_SPOT20)) {
|
||||
if (!Flags_GetEventChkInf(EVENTCHKINF_EPONA_OBTAINED) || (play->sceneNum != SCENE_LON_LON_RANCH)) {
|
||||
return 0;
|
||||
}
|
||||
if ((this->actor.shape.rot.z == 7) && IS_DAY) {
|
||||
|
@ -432,11 +432,11 @@ u16 EnMd_GetText(PlayState* play, Actor* thisx) {
|
||||
EnMd* this = (EnMd*)thisx;
|
||||
|
||||
switch (play->sceneNum) {
|
||||
case SCENE_SPOT04:
|
||||
case SCENE_KOKIRI_FOREST:
|
||||
return EnMd_GetTextKokiriForest(play, this);
|
||||
case SCENE_KOKIRI_HOME4:
|
||||
case SCENE_MIDOS_HOUSE:
|
||||
return EnMd_GetTextKokiriHome(play, this);
|
||||
case SCENE_SPOT10:
|
||||
case SCENE_LOST_WOODS:
|
||||
return EnMd_GetTextLostWoods(play, this);
|
||||
default:
|
||||
return 0;
|
||||
@ -490,7 +490,7 @@ u8 EnMd_ShouldSpawn(EnMd* this, PlayState* play) {
|
||||
// in the forest until you've obtained Zelda's letter or Deku Tree dies
|
||||
// This is to ensure Deku Tree can still be opened in dungeon entrance rando even if Ghoma is defeated
|
||||
if (gSaveContext.n64ddFlag) {
|
||||
if (play->sceneNum == SCENE_SPOT10) {
|
||||
if (play->sceneNum == SCENE_LOST_WOODS) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
@ -498,19 +498,19 @@ u8 EnMd_ShouldSpawn(EnMd* this, PlayState* play) {
|
||||
Flags_GetEventChkInf(EVENTCHKINF_SPOKE_TO_MIDO_AFTER_DEKU_TREES_DEATH) &&
|
||||
(Flags_GetEventChkInf(EVENTCHKINF_OBTAINED_ZELDAS_LETTER) ||
|
||||
Flags_GetEventChkInf(EVENTCHKINF_OBTAINED_KOKIRI_EMERALD_DEKU_TREE_DEAD))) {
|
||||
return play->sceneNum == SCENE_KOKIRI_HOME4 && !LINK_IS_ADULT;
|
||||
return play->sceneNum == SCENE_MIDOS_HOUSE && !LINK_IS_ADULT;
|
||||
}
|
||||
|
||||
return play->sceneNum == SCENE_SPOT04;
|
||||
return play->sceneNum == SCENE_KOKIRI_FOREST;
|
||||
}
|
||||
|
||||
if (play->sceneNum == SCENE_SPOT04) {
|
||||
if (play->sceneNum == SCENE_KOKIRI_FOREST) {
|
||||
if (!Flags_GetEventChkInf(EVENTCHKINF_SPOKE_TO_MIDO_AFTER_DEKU_TREES_DEATH) && !Flags_GetEventChkInf(EVENTCHKINF_OBTAINED_ZELDAS_LETTER)) {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (play->sceneNum == SCENE_KOKIRI_HOME4) {
|
||||
if (play->sceneNum == SCENE_MIDOS_HOUSE) {
|
||||
if (((Flags_GetEventChkInf(EVENTCHKINF_SPOKE_TO_MIDO_AFTER_DEKU_TREES_DEATH)) != 0) || ((Flags_GetEventChkInf(EVENTCHKINF_OBTAINED_ZELDAS_LETTER)) != 0)) {
|
||||
if (!LINK_IS_ADULT) {
|
||||
return 1;
|
||||
@ -518,7 +518,7 @@ u8 EnMd_ShouldSpawn(EnMd* this, PlayState* play) {
|
||||
}
|
||||
}
|
||||
|
||||
if (play->sceneNum == SCENE_SPOT10) {
|
||||
if (play->sceneNum == SCENE_LOST_WOODS) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
@ -636,15 +636,15 @@ u8 EnMd_SetMovedPos(EnMd* this, PlayState* play) {
|
||||
void func_80AAB5A4(EnMd* this, PlayState* play) {
|
||||
f32 temp;
|
||||
|
||||
if (play->sceneNum != SCENE_KOKIRI_HOME4) {
|
||||
if (play->sceneNum != SCENE_MIDOS_HOUSE) {
|
||||
if (CVarGetInteger("gDisableKokiriDrawDistance", 0) != 0) {
|
||||
temp = (CHECK_QUEST_ITEM(QUEST_KOKIRI_EMERALD) && !Flags_GetEventChkInf(EVENTCHKINF_SPOKE_TO_MIDO_AFTER_DEKU_TREES_DEATH) &&
|
||||
(play->sceneNum == SCENE_SPOT04))
|
||||
(play->sceneNum == SCENE_KOKIRI_FOREST))
|
||||
? 100.0f
|
||||
: 32767.0f;
|
||||
} else {
|
||||
temp = (CHECK_QUEST_ITEM(QUEST_KOKIRI_EMERALD) && !Flags_GetEventChkInf(EVENTCHKINF_SPOKE_TO_MIDO_AFTER_DEKU_TREES_DEATH) &&
|
||||
(play->sceneNum == SCENE_SPOT04))
|
||||
(play->sceneNum == SCENE_KOKIRI_FOREST))
|
||||
? 100.0f
|
||||
: 400.0f;
|
||||
}
|
||||
@ -679,17 +679,17 @@ void EnMd_Init(Actor* thisx, PlayState* play) {
|
||||
Actor_SpawnAsChild(&play->actorCtx, &this->actor, play, ACTOR_EN_ELF, this->actor.world.pos.x,
|
||||
this->actor.world.pos.y, this->actor.world.pos.z, 0, 0, 0, FAIRY_KOKIRI);
|
||||
|
||||
if (((play->sceneNum == SCENE_SPOT04) && !Flags_GetEventChkInf(EVENTCHKINF_SHOWED_MIDO_SWORD_SHIELD)) ||
|
||||
((play->sceneNum == SCENE_SPOT04) && (Flags_GetEventChkInf(EVENTCHKINF_SHOWED_MIDO_SWORD_SHIELD)) &&
|
||||
if (((play->sceneNum == SCENE_KOKIRI_FOREST) && !Flags_GetEventChkInf(EVENTCHKINF_SHOWED_MIDO_SWORD_SHIELD)) ||
|
||||
((play->sceneNum == SCENE_KOKIRI_FOREST) && (Flags_GetEventChkInf(EVENTCHKINF_SHOWED_MIDO_SWORD_SHIELD)) &&
|
||||
((!gSaveContext.n64ddFlag && CHECK_QUEST_ITEM(QUEST_KOKIRI_EMERALD)) ||
|
||||
(gSaveContext.n64ddFlag && Flags_GetRandomizerInf(RAND_INF_DUNGEONS_DONE_DEKU_TREE)))) ||
|
||||
((play->sceneNum == SCENE_SPOT10) && !Flags_GetEventChkInf(EVENTCHKINF_PLAYED_SARIAS_SONG_FOR_MIDO_AS_ADULT))) {
|
||||
((play->sceneNum == SCENE_LOST_WOODS) && !Flags_GetEventChkInf(EVENTCHKINF_PLAYED_SARIAS_SONG_FOR_MIDO_AS_ADULT))) {
|
||||
this->actor.home.pos = this->actor.world.pos;
|
||||
this->actionFunc = func_80AAB948;
|
||||
return;
|
||||
}
|
||||
|
||||
if (play->sceneNum != SCENE_KOKIRI_HOME4) {
|
||||
if (play->sceneNum != SCENE_MIDOS_HOUSE) {
|
||||
EnMd_SetMovedPos(this, play);
|
||||
}
|
||||
|
||||
@ -748,14 +748,14 @@ void func_80AAB948(EnMd* this, PlayState* play) {
|
||||
if ((!gSaveContext.n64ddFlag && CHECK_QUEST_ITEM(QUEST_KOKIRI_EMERALD) ||
|
||||
gSaveContext.n64ddFlag && Flags_GetRandomizerInf(RAND_INF_DUNGEONS_DONE_DEKU_TREE) &&
|
||||
Flags_GetEventChkInf(EVENTCHKINF_SHOWED_MIDO_SWORD_SHIELD)) && !Flags_GetEventChkInf(EVENTCHKINF_SPOKE_TO_MIDO_AFTER_DEKU_TREES_DEATH) &&
|
||||
(play->sceneNum == SCENE_SPOT04)) {
|
||||
(play->sceneNum == SCENE_KOKIRI_FOREST)) {
|
||||
play->msgCtx.msgMode = MSGMODE_PAUSED;
|
||||
}
|
||||
|
||||
if (play->sceneNum == SCENE_SPOT04) {
|
||||
if (play->sceneNum == SCENE_KOKIRI_FOREST) {
|
||||
Flags_SetEventChkInf(EVENTCHKINF_SHOWED_MIDO_SWORD_SHIELD);
|
||||
}
|
||||
if (play->sceneNum == SCENE_SPOT10) {
|
||||
if (play->sceneNum == SCENE_LOST_WOODS) {
|
||||
Flags_SetEventChkInf(EVENTCHKINF_PLAYED_SARIAS_SONG_FOR_MIDO_AS_ADULT);
|
||||
}
|
||||
|
||||
@ -772,7 +772,7 @@ void func_80AAB948(EnMd* this, PlayState* play) {
|
||||
func_80034F54(play, this->unk_214, this->unk_236, 17);
|
||||
}
|
||||
|
||||
if ((this->interactInfo.talkState == NPC_TALK_STATE_IDLE) && (play->sceneNum == SCENE_SPOT10)) {
|
||||
if ((this->interactInfo.talkState == NPC_TALK_STATE_IDLE) && (play->sceneNum == SCENE_LOST_WOODS)) {
|
||||
if (player->stateFlags2 & 0x1000000) {
|
||||
player->stateFlags2 |= 0x2000000;
|
||||
player->unk_6A8 = &this->actor;
|
||||
@ -817,7 +817,7 @@ void func_80AABD0C(EnMd* this, PlayState* play) {
|
||||
if ((!gSaveContext.n64ddFlag && CHECK_QUEST_ITEM(QUEST_KOKIRI_EMERALD) ||
|
||||
gSaveContext.n64ddFlag && Flags_GetRandomizerInf(RAND_INF_DUNGEONS_DONE_DEKU_TREE) &&
|
||||
Flags_GetEventChkInf(EVENTCHKINF_SHOWED_MIDO_SWORD_SHIELD)) && !Flags_GetEventChkInf(EVENTCHKINF_SPOKE_TO_MIDO_AFTER_DEKU_TREES_DEATH) &&
|
||||
(play->sceneNum == SCENE_SPOT04)) {
|
||||
(play->sceneNum == SCENE_KOKIRI_FOREST)) {
|
||||
Message_CloseTextbox(play);
|
||||
Flags_SetEventChkInf(EVENTCHKINF_SPOKE_TO_MIDO_AFTER_DEKU_TREES_DEATH);
|
||||
Actor_Kill(&this->actor);
|
||||
|
@ -157,7 +157,7 @@ void EnNiw_Init(Actor* thisx, PlayState* play) {
|
||||
ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 25.0f);
|
||||
SkelAnime_InitFlex(play, &this->skelAnime, &gCuccoSkel, &gCuccoAnim, this->jointTable, this->morphTable, 16);
|
||||
|
||||
if (play->sceneNum == SCENE_SPOT01) {
|
||||
if (play->sceneNum == SCENE_KAKARIKO_VILLAGE) {
|
||||
for (i = 0; i < ARRAY_COUNT(sKakarikoPosList); i++) {
|
||||
if (fabsf(this->actor.world.pos.x - sKakarikoPosList[i].x) < 40.0f &&
|
||||
fabsf(this->actor.world.pos.z - sKakarikoPosList[i].z) < 40.0f) {
|
||||
@ -228,7 +228,7 @@ void EnNiw_Init(Actor* thisx, PlayState* play) {
|
||||
case 0xD:
|
||||
case 0xE:
|
||||
Collider_SetCylinder(play, &this->collider, &this->actor, &sCylinderInit2);
|
||||
if (play->sceneNum == SCENE_LINK_HOME && !Flags_GetEventChkInf(EVENTCHKINF_WON_COW_IN_MALONS_RACE)) {
|
||||
if (play->sceneNum == SCENE_LINKS_HOUSE && !Flags_GetEventChkInf(EVENTCHKINF_WON_COW_IN_MALONS_RACE)) {
|
||||
Actor_Kill(&this->actor);
|
||||
}
|
||||
break;
|
||||
@ -975,10 +975,10 @@ void EnNiw_Update(Actor* thisx, PlayState* play) {
|
||||
Actor_SetFocus(&this->actor, this->unk_304);
|
||||
Actor_MoveForward(&this->actor);
|
||||
|
||||
if (this->actionFunc != func_80AB6EB4 && this->actionFunc != func_80AB6450 && play->sceneNum != SCENE_SPOT03) {
|
||||
if (this->actionFunc != func_80AB6EB4 && this->actionFunc != func_80AB6450 && play->sceneNum != SCENE_ZORAS_RIVER) {
|
||||
Actor_UpdateBgCheckInfo(play, &this->actor, 20.0f, 20.0f, 60.0f, 31);
|
||||
}
|
||||
if (play->sceneNum == SCENE_SPOT03) {
|
||||
if (play->sceneNum == SCENE_ZORAS_RIVER) {
|
||||
Actor_UpdateBgCheckInfo(play, &this->actor, 20.0f, 20.0f, 60.0f, 29);
|
||||
}
|
||||
if (thisx->floorHeight <= BGCHECK_Y_MIN || thisx->floorHeight >= 32000.0f) {
|
||||
|
@ -78,7 +78,7 @@ void EnNiwLady_Init(Actor* thisx, PlayState* play) {
|
||||
return;
|
||||
}
|
||||
this->unk_278 = 0;
|
||||
if (play->sceneNum == SCENE_LABO) {
|
||||
if (play->sceneNum == SCENE_IMPAS_HOUSE) {
|
||||
this->unk_278 = 1;
|
||||
}
|
||||
if ((this->unk_278 != 0) && IS_DAY) {
|
||||
|
@ -149,10 +149,10 @@ void func_80ABF0CC(EnOkarinaTag* this, PlayState* play) {
|
||||
if (this->switchFlag >= 0) {
|
||||
Flags_SetSwitch(play, this->switchFlag);
|
||||
}
|
||||
if (play->sceneNum == SCENE_MIZUSIN) {
|
||||
if (play->sceneNum == SCENE_WATER_TEMPLE) {
|
||||
play->msgCtx.msgMode = MSGMODE_PAUSED;
|
||||
}
|
||||
if ((play->sceneNum != SCENE_DAIYOUSEI_IZUMI) && (play->sceneNum != SCENE_YOUSEI_IZUMI_YOKO)) {
|
||||
if ((play->sceneNum != SCENE_GREAT_FAIRYS_FOUNTAIN_MAGIC) && (play->sceneNum != SCENE_GREAT_FAIRYS_FOUNTAIN_SPELLS)) {
|
||||
play->msgCtx.ocarinaMode = OCARINA_MODE_04;
|
||||
}
|
||||
func_80078884(NA_SE_SY_CORRECT_CHIME);
|
||||
|
@ -139,7 +139,7 @@ void EnOwl_Init(Actor* thisx, PlayState* play) {
|
||||
|
||||
if (((owlType != OWL_DEFAULT) && (switchFlag < 0x20) && Flags_GetSwitch(play, switchFlag)) ||
|
||||
// Owl shortcuts at SPOT06: Lake Hylia and SPOT16: Death Mountain Trail
|
||||
(gSaveContext.n64ddFlag && !(play->sceneNum == SCENE_SPOT06 || play->sceneNum == SCENE_SPOT16))) {
|
||||
(gSaveContext.n64ddFlag && !(play->sceneNum == SCENE_LAKE_HYLIA || play->sceneNum == SCENE_DEATH_MOUNTAIN_TRAIL))) {
|
||||
osSyncPrintf("savebitでフクロウ退避\n"); // "Save owl with savebit"
|
||||
Actor_Kill(&this->actor);
|
||||
return;
|
||||
@ -1105,7 +1105,7 @@ s32 func_80ACC5CC(EnOwl* this) {
|
||||
s32 func_80ACC624(EnOwl* this, PlayState* play) {
|
||||
s32 switchFlag = (this->actor.params & 0xFC0) >> 6;
|
||||
|
||||
if (play->sceneNum != SCENE_SPOT11) {
|
||||
if (play->sceneNum != SCENE_DESERT_COLOSSUS) {
|
||||
return true;
|
||||
} else if (switchFlag == 0xA) {
|
||||
return true;
|
||||
|
@ -199,7 +199,7 @@ void EnRiverSound_Update(Actor* thisx, PlayState* play) {
|
||||
}
|
||||
} else if ((thisx->params == RS_UNK_13) || (thisx->params == RS_UNK_19)) {
|
||||
func_8002DBD0(&player->actor, &thisx->home.pos, &thisx->world.pos);
|
||||
} else if (play->sceneNum == SCENE_DDAN_BOSS && Flags_GetClear(play, thisx->room)) {
|
||||
} else if (play->sceneNum == SCENE_DODONGOS_CAVERN_BOSS && Flags_GetClear(play, thisx->room)) {
|
||||
Actor_Kill(thisx);
|
||||
}
|
||||
}
|
||||
|
@ -118,7 +118,7 @@ void func_80AE7590(EnRl* this, PlayState* play) {
|
||||
Vec3f pos;
|
||||
s16 sceneNum = play->sceneNum;
|
||||
|
||||
if (gSaveContext.sceneSetupIndex == 4 && sceneNum == SCENE_KENJYANOMA && play->csCtx.state != CS_STATE_IDLE &&
|
||||
if (gSaveContext.sceneSetupIndex == 4 && sceneNum == SCENE_CHAMBER_OF_THE_SAGES && play->csCtx.state != CS_STATE_IDLE &&
|
||||
play->csCtx.npcActions[6] != NULL && play->csCtx.npcActions[6]->action == 2 &&
|
||||
!this->lightMedallionGiven) {
|
||||
player = GET_PLAYER(play);
|
||||
|
@ -218,7 +218,7 @@ s16 func_80AF56F4(PlayState* play, Actor* thisx) {
|
||||
}
|
||||
|
||||
void func_80AF57D8(EnSa* this, PlayState* play) {
|
||||
if (play->sceneNum != SCENE_SPOT05 ||
|
||||
if (play->sceneNum != SCENE_SACRED_FOREST_MEADOW ||
|
||||
ABS((s16)(this->actor.yawTowardsPlayer - this->actor.shape.rot.y)) < 0x1555 || this->interactInfo.talkState != NPC_TALK_STATE_IDLE) {
|
||||
Npc_UpdateTalking(play, &this->actor, &this->interactInfo.talkState, this->collider.dim.radius + 30.0f,
|
||||
func_80AF55E0, func_80AF56F4);
|
||||
@ -375,24 +375,24 @@ void EnSa_ChangeAnim(EnSa* this, s32 index) {
|
||||
|
||||
s32 func_80AF5DFC(EnSa* this, PlayState* play) {
|
||||
if (gSaveContext.cutsceneIndex >= 0xFFF0 && gSaveContext.cutsceneIndex != 0xFFFD) {
|
||||
if (play->sceneNum == SCENE_SPOT04) {
|
||||
if (play->sceneNum == SCENE_KOKIRI_FOREST) {
|
||||
return 4;
|
||||
}
|
||||
if (play->sceneNum == SCENE_SPOT05) {
|
||||
if (play->sceneNum == SCENE_SACRED_FOREST_MEADOW) {
|
||||
return 5;
|
||||
}
|
||||
}
|
||||
if (play->sceneNum == SCENE_KOKIRI_HOME5 && !LINK_IS_ADULT &&
|
||||
if (play->sceneNum == SCENE_SARIAS_HOUSE && !LINK_IS_ADULT &&
|
||||
INV_CONTENT(ITEM_OCARINA_FAIRY) == ITEM_OCARINA_FAIRY && !Flags_GetEventChkInf(EVENTCHKINF_OBTAINED_ZELDAS_LETTER)) {
|
||||
return 1;
|
||||
}
|
||||
if (play->sceneNum == SCENE_SPOT05 && (Flags_GetEventChkInf(EVENTCHKINF_OBTAINED_ZELDAS_LETTER))) {
|
||||
if (play->sceneNum == SCENE_SACRED_FOREST_MEADOW && (Flags_GetEventChkInf(EVENTCHKINF_OBTAINED_ZELDAS_LETTER))) {
|
||||
if (gSaveContext.n64ddFlag) {
|
||||
return 5;
|
||||
}
|
||||
return CHECK_QUEST_ITEM(QUEST_SONG_SARIA) ? 2 : 5;
|
||||
}
|
||||
if (play->sceneNum == SCENE_SPOT04 && !CHECK_QUEST_ITEM(QUEST_KOKIRI_EMERALD)) {
|
||||
if (play->sceneNum == SCENE_KOKIRI_FOREST && !CHECK_QUEST_ITEM(QUEST_KOKIRI_EMERALD)) {
|
||||
if (Flags_GetInfTable(INFTABLE_GREETED_BY_SARIA)) {
|
||||
return 1;
|
||||
}
|
||||
@ -405,17 +405,17 @@ void func_80AF5F34(EnSa* this, PlayState* play) {
|
||||
Player* player = GET_PLAYER(play);
|
||||
s16 trackingMode = NPC_TRACKING_PLAYER_AUTO_TURN;
|
||||
|
||||
if (play->sceneNum == SCENE_SPOT04) {
|
||||
if (play->sceneNum == SCENE_KOKIRI_FOREST) {
|
||||
trackingMode = (this->actionFunc == func_80AF68E4) ? NPC_TRACKING_NONE : NPC_TRACKING_FULL_BODY;
|
||||
}
|
||||
if (play->sceneNum == SCENE_SPOT05) {
|
||||
if (play->sceneNum == SCENE_SACRED_FOREST_MEADOW) {
|
||||
trackingMode = (this->skelAnime.animation == &gSariaPlayingOcarinaAnim) ? NPC_TRACKING_NONE : NPC_TRACKING_HEAD;
|
||||
}
|
||||
if (play->sceneNum == SCENE_SPOT05 && this->actionFunc == func_80AF6448 &&
|
||||
if (play->sceneNum == SCENE_SACRED_FOREST_MEADOW && this->actionFunc == func_80AF6448 &&
|
||||
this->skelAnime.animation == &gSariaStopPlayingOcarinaAnim) {
|
||||
trackingMode = NPC_TRACKING_NONE;
|
||||
}
|
||||
if (play->sceneNum == SCENE_SPOT05 && this->actionFunc == func_80AF68E4 &&
|
||||
if (play->sceneNum == SCENE_SACRED_FOREST_MEADOW && this->actionFunc == func_80AF68E4 &&
|
||||
this->skelAnime.animation == &gSariaOcarinaToMouthAnim) {
|
||||
trackingMode = NPC_TRACKING_NONE;
|
||||
}
|
||||
@ -537,7 +537,7 @@ void EnSa_Destroy(Actor* thisx, PlayState* play) {
|
||||
}
|
||||
|
||||
void func_80AF6448(EnSa* this, PlayState* play) {
|
||||
if (play->sceneNum == SCENE_SPOT04) {
|
||||
if (play->sceneNum == SCENE_KOKIRI_FOREST) {
|
||||
if (this->interactInfo.talkState != NPC_TALK_STATE_IDLE) {
|
||||
switch (this->actor.textId) {
|
||||
case 0x1002:
|
||||
@ -606,7 +606,7 @@ void func_80AF6448(EnSa* this, PlayState* play) {
|
||||
EnSa_ChangeAnim(this, ENSA_ANIM1_6);
|
||||
}
|
||||
}
|
||||
if (this->interactInfo.talkState != NPC_TALK_STATE_IDLE && play->sceneNum == SCENE_SPOT05) {
|
||||
if (this->interactInfo.talkState != NPC_TALK_STATE_IDLE && play->sceneNum == SCENE_SACRED_FOREST_MEADOW) {
|
||||
Animation_Change(&this->skelAnime, &gSariaStopPlayingOcarinaAnim, 1.0f, 0.0f, 10.0f, ANIMMODE_ONCE, -10.0f);
|
||||
this->actionFunc = func_80AF67D0;
|
||||
}
|
||||
@ -704,7 +704,7 @@ void func_80AF68E4(EnSa* this, PlayState* play) {
|
||||
this->actor.velocity.x = (endPos.x - startPos.x) / temp_f0;
|
||||
this->actor.velocity.y = (endPos.y - startPos.y) / temp_f0;
|
||||
gravity = this->actor.gravity;
|
||||
if (play->sceneNum == SCENE_SPOT05) {
|
||||
if (play->sceneNum == SCENE_SACRED_FOREST_MEADOW) {
|
||||
gravity = 0.0f;
|
||||
}
|
||||
this->actor.velocity.y += gravity;
|
||||
@ -717,12 +717,12 @@ void func_80AF68E4(EnSa* this, PlayState* play) {
|
||||
}
|
||||
|
||||
void func_80AF6B20(EnSa* this, PlayState* play) {
|
||||
if (play->sceneNum == SCENE_SPOT05) {
|
||||
if (play->sceneNum == SCENE_SACRED_FOREST_MEADOW) {
|
||||
Item_Give(play, ITEM_SONG_SARIA);
|
||||
EnSa_ChangeAnim(this, ENSA_ANIM1_6);
|
||||
}
|
||||
|
||||
if (play->sceneNum == SCENE_SPOT04) {
|
||||
if (play->sceneNum == SCENE_KOKIRI_FOREST) {
|
||||
EnSa_ChangeAnim(this, ENSA_ANIM1_4);
|
||||
this->actor.world.pos = this->actor.home.pos;
|
||||
this->actor.world.rot = this->unk_21A;
|
||||
@ -767,7 +767,7 @@ void EnSa_Update(Actor* thisx, PlayState* play) {
|
||||
func_8002D7EC(&this->actor);
|
||||
}
|
||||
|
||||
if (play->sceneNum != SCENE_SPOT05) {
|
||||
if (play->sceneNum != SCENE_SACRED_FOREST_MEADOW) {
|
||||
Actor_UpdateBgCheckInfo(play, &this->actor, 0.0f, 0.0f, 0.0f, 4);
|
||||
}
|
||||
|
||||
@ -797,7 +797,7 @@ s32 EnSa_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* po
|
||||
Matrix_RotateX(BINANG_TO_RAD(sp18.x), MTXMODE_APPLY);
|
||||
}
|
||||
|
||||
if (play->sceneNum == SCENE_SPOT05 && limbIndex == 15) {
|
||||
if (play->sceneNum == SCENE_SACRED_FOREST_MEADOW && limbIndex == 15) {
|
||||
*dList = gSariaRightHandAndOcarinaDL;
|
||||
}
|
||||
|
||||
|
@ -157,8 +157,8 @@ void EnSyatekiMan_Init(Actor* thisx, PlayState* play) {
|
||||
|
||||
if (gSaveContext.n64ddFlag && Randomizer_GetSettingValue(RSK_SHUFFLE_INTERIOR_ENTRANCES)) {
|
||||
// If child is in the adult shooting gallery or adult in the child shooting gallery, then despawn the shooting gallery man
|
||||
if ((LINK_IS_CHILD && Entrance_SceneAndSpawnAre(SCENE_SYATEKIJYOU, 0x00)) || //Kakariko Village -> Adult Shooting Gallery, index 003B in the entrance table
|
||||
(LINK_IS_ADULT && Entrance_SceneAndSpawnAre(SCENE_SYATEKIJYOU, 0x01))) { //Market -> Child Shooting Gallery, index 016D in the entrance table
|
||||
if ((LINK_IS_CHILD && Entrance_SceneAndSpawnAre(SCENE_SHOOTING_GALLERY, 0x00)) || //Kakariko Village -> Adult Shooting Gallery, index 003B in the entrance table
|
||||
(LINK_IS_ADULT && Entrance_SceneAndSpawnAre(SCENE_SHOOTING_GALLERY, 0x01))) { //Market -> Child Shooting Gallery, index 016D in the entrance table
|
||||
Actor_Kill(thisx);
|
||||
return;
|
||||
}
|
||||
|
@ -146,7 +146,7 @@ void EnTa_Init(Actor* thisx, PlayState* play2) {
|
||||
Actor_Kill(&this->actor);
|
||||
} else if (!LINK_IS_ADULT) {
|
||||
Actor_Kill(&this->actor);
|
||||
} else if (play->sceneNum == SCENE_MALON_STABLE && !IS_DAY) {
|
||||
} else if (play->sceneNum == SCENE_STABLE && !IS_DAY) {
|
||||
Actor_Kill(&this->actor);
|
||||
osSyncPrintf(VT_FGCOL(CYAN) " 夜はいない \n" VT_RST);
|
||||
} else {
|
||||
@ -158,7 +158,7 @@ void EnTa_Init(Actor* thisx, PlayState* play2) {
|
||||
break;
|
||||
default:
|
||||
osSyncPrintf(VT_FGCOL(CYAN) " その他のタロン \n" VT_RST);
|
||||
if (play->sceneNum == SCENE_SPOT15) {
|
||||
if (play->sceneNum == SCENE_HYRULE_CASTLE) {
|
||||
if (Flags_GetEventChkInf(EVENTCHKINF_TALON_RETURNED_FROM_CASTLE)) {
|
||||
Actor_Kill(&this->actor);
|
||||
} else if (Flags_GetEventChkInf(EVENTCHKINF_TALON_WOKEN_IN_CASTLE)) {
|
||||
@ -173,7 +173,7 @@ void EnTa_Init(Actor* thisx, PlayState* play2) {
|
||||
this->currentAnimation = &gTalonSleepAnim;
|
||||
this->actor.shape.shadowScale = 54.0f;
|
||||
}
|
||||
} else if (play->sceneNum == SCENE_SOUKO) {
|
||||
} else if (play->sceneNum == SCENE_LON_LON_BUILDINGS) {
|
||||
osSyncPrintf(VT_FGCOL(CYAN) " ロンロン牧場の倉庫 の タロン\n" VT_RST);
|
||||
if (!Flags_GetEventChkInf(EVENTCHKINF_TALON_RETURNED_FROM_CASTLE)) {
|
||||
Actor_Kill(&this->actor);
|
||||
@ -236,7 +236,7 @@ void EnTa_Destroy(Actor* thisx, PlayState* play) {
|
||||
|
||||
Collider_DestroyCylinder(play, &this->collider);
|
||||
|
||||
if (this->actor.params != 1 && this->actor.params != 2 && play->sceneNum == SCENE_SOUKO) {
|
||||
if (this->actor.params != 1 && this->actor.params != 2 && play->sceneNum == SCENE_LON_LON_BUILDINGS) {
|
||||
gSaveContext.timer1State = 0;
|
||||
}
|
||||
|
||||
|
@ -62,7 +62,7 @@ u16 EnTg_GetTextId(PlayState* play, Actor* thisx) {
|
||||
return temp;
|
||||
}
|
||||
// Use a different set of dialogue in Kakariko Village (Adult)
|
||||
if (play->sceneNum == SCENE_SPOT01) {
|
||||
if (play->sceneNum == SCENE_KAKARIKO_VILLAGE) {
|
||||
if (this->nextDialogue % 2 != 0) {
|
||||
phi = 0x5089;
|
||||
} else {
|
||||
|
@ -503,11 +503,11 @@ void EnTk_Init(Actor* thisx, PlayState* play) {
|
||||
CollisionCheck_SetInfo2(&this->actor.colChkInfo, NULL, &sColChkInfoInit);
|
||||
|
||||
if (CVarGetInteger("gDampeAllNight", 0)) {
|
||||
if (!!LINK_IS_ADULT || play->sceneNum != SCENE_SPOT02) {
|
||||
if (!!LINK_IS_ADULT || play->sceneNum != SCENE_GRAVEYARD) {
|
||||
Actor_Kill(&this->actor);
|
||||
return;
|
||||
}
|
||||
} else if (gSaveContext.dayTime <= 0xC000 || gSaveContext.dayTime >= 0xE000 || !!LINK_IS_ADULT || play->sceneNum != SCENE_SPOT02) {
|
||||
} else if (gSaveContext.dayTime <= 0xC000 || gSaveContext.dayTime >= 0xE000 || !!LINK_IS_ADULT || play->sceneNum != SCENE_GRAVEYARD) {
|
||||
Actor_Kill(&this->actor);
|
||||
return;
|
||||
}
|
||||
|
@ -98,17 +98,17 @@ void EnToryo_Init(Actor* thisx, PlayState* play) {
|
||||
s32 pad;
|
||||
|
||||
switch (play->sceneNum) {
|
||||
case SCENE_SPOT09:
|
||||
case SCENE_GERUDO_VALLEY:
|
||||
if (LINK_AGE_IN_YEARS == YEARS_ADULT) {
|
||||
this->stateFlags |= 1;
|
||||
}
|
||||
break;
|
||||
case SCENE_SPOT01:
|
||||
case SCENE_KAKARIKO_VILLAGE:
|
||||
if ((LINK_AGE_IN_YEARS == YEARS_CHILD) && IS_DAY) {
|
||||
this->stateFlags |= 2;
|
||||
}
|
||||
break;
|
||||
case SCENE_KAKARIKO:
|
||||
case SCENE_KAKARIKO_CENTER_GUEST_HOUSE:
|
||||
if ((LINK_AGE_IN_YEARS == YEARS_CHILD) && IS_NIGHT) {
|
||||
this->stateFlags |= 4;
|
||||
}
|
||||
|
@ -383,7 +383,7 @@ void EnViewer_UpdateImpl(EnViewer* this, PlayState* play) {
|
||||
break;
|
||||
}
|
||||
} else if (type == ENVIEWER_TYPE_2_ZELDA) {
|
||||
if (play->sceneNum == SCENE_SPOT00) { // Hyrule Field
|
||||
if (play->sceneNum == SCENE_HYRULE_FIELD) { // Hyrule Field
|
||||
switch (this->state) {
|
||||
case 0:
|
||||
if (play->csCtx.state != CS_STATE_IDLE) {
|
||||
@ -584,7 +584,7 @@ void EnViewer_DrawHorse(EnViewer* this, PlayState* play) {
|
||||
|
||||
s32 EnViewer_ZeldaOverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot,
|
||||
void* thisx) {
|
||||
if (play->sceneNum == SCENE_SPOT00) { // Hyrule Field
|
||||
if (play->sceneNum == SCENE_HYRULE_FIELD) { // Hyrule Field
|
||||
if (limbIndex == 2) {
|
||||
*dList = gChildZeldaCutsceneDressDL;
|
||||
}
|
||||
@ -610,7 +610,7 @@ s32 EnViewer_ZeldaOverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList,
|
||||
void EnViewer_ZeldaPostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, void* thisx) {
|
||||
s32 pad;
|
||||
|
||||
if (play->sceneNum == SCENE_TOKINOMA) {
|
||||
if (play->sceneNum == SCENE_TEMPLE_OF_TIME) {
|
||||
if (limbIndex == 16) {
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
gSPDisplayList(POLY_OPA_DISP++, gChildZeldaOcarinaOfTimeDL);
|
||||
@ -621,7 +621,7 @@ void EnViewer_ZeldaPostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec
|
||||
|
||||
void EnViewer_DrawZelda(EnViewer* this, PlayState* play) {
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
if (play->sceneNum == SCENE_SPOT00) { // Hyrule Field
|
||||
if (play->sceneNum == SCENE_HYRULE_FIELD) { // Hyrule Field
|
||||
if (play->csCtx.frames < 771) {
|
||||
gSPSegment(POLY_OPA_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(gChildZeldaEyeInTex));
|
||||
gSPSegment(POLY_OPA_DISP++, 0x09, SEGMENTED_TO_VIRTUAL(gChildZeldaEyeOutTex));
|
||||
|
@ -85,7 +85,7 @@ void EnWonderTalk2_Init(Actor* thisx, PlayState* play) {
|
||||
Actor_Kill(&this->actor);
|
||||
return;
|
||||
}
|
||||
if ((this->talkMode == 1) && (play->sceneNum == SCENE_MEN) && (this->switchFlag != 0x08) &&
|
||||
if ((this->talkMode == 1) && (play->sceneNum == SCENE_GERUDO_TRAINING_GROUND) && (this->switchFlag != 0x08) &&
|
||||
(this->switchFlag != 0x16) && (this->switchFlag != 0x2F)) {
|
||||
|
||||
this->unk_15A = false;
|
||||
|
@ -177,7 +177,7 @@ void EnWood02_Init(Actor* thisx, PlayState* play2) {
|
||||
// as the night scene, For the always spawn GS enhancement we apply the needed
|
||||
// params to have the GS drop when bonking
|
||||
if ((this->actor.params & 0xFF) == WOOD_TREE_CONICAL_MEDIUM && IS_DAY &&
|
||||
play->sceneNum == SCENE_SPOT01 && CVarGetInteger("gNightGSAlwaysSpawn", 0)) {
|
||||
play->sceneNum == SCENE_KAKARIKO_VILLAGE && CVarGetInteger("gNightGSAlwaysSpawn", 0)) {
|
||||
this->actor.params = 0x2001;
|
||||
this->actor.home.rot.z = 0x71;
|
||||
}
|
||||
|
@ -447,7 +447,7 @@ void EnXc_SetLandingSFX(EnXc* this, PlayState* play) {
|
||||
u32 sfxId;
|
||||
s16 sceneNum = play->sceneNum;
|
||||
|
||||
if ((gSaveContext.sceneSetupIndex != 4) || (sceneNum != SCENE_SPOT11)) {
|
||||
if ((gSaveContext.sceneSetupIndex != 4) || (sceneNum != SCENE_DESERT_COLOSSUS)) {
|
||||
if (Animation_OnFrame(&this->skelAnime, 11.0f)) {
|
||||
sfxId = SFX_FLAG;
|
||||
sfxId += SurfaceType_GetSfx(&play->colCtx, this->actor.floorPoly, this->actor.floorBgId);
|
||||
@ -462,7 +462,7 @@ void EnXc_SetColossusAppearSFX(EnXc* this, PlayState* play) {
|
||||
|
||||
if (gSaveContext.sceneSetupIndex == 4) {
|
||||
sceneNum = play->sceneNum;
|
||||
if (sceneNum == SCENE_SPOT11) {
|
||||
if (sceneNum == SCENE_DESERT_COLOSSUS) {
|
||||
CutsceneContext* csCtx = &play->csCtx;
|
||||
u16 frameCount = csCtx->frames;
|
||||
f32 wDest[2];
|
||||
@ -486,7 +486,7 @@ void EnXc_SetColossusAppearSFX(EnXc* this, PlayState* play) {
|
||||
void func_80B3D118(PlayState* play) {
|
||||
s16 sceneNum;
|
||||
|
||||
if ((gSaveContext.sceneSetupIndex != 4) || (sceneNum = play->sceneNum, sceneNum != SCENE_SPOT11)) {
|
||||
if ((gSaveContext.sceneSetupIndex != 4) || (sceneNum = play->sceneNum, sceneNum != SCENE_DESERT_COLOSSUS)) {
|
||||
func_800788CC(NA_SE_PL_SKIP);
|
||||
}
|
||||
}
|
||||
@ -502,7 +502,7 @@ void EnXc_SetColossusWindSFX(PlayState* play) {
|
||||
s32 pad;
|
||||
s16 sceneNum = play->sceneNum;
|
||||
|
||||
if (sceneNum == SCENE_SPOT11) {
|
||||
if (sceneNum == SCENE_DESERT_COLOSSUS) {
|
||||
CutsceneContext* csCtx = &play->csCtx;
|
||||
u16 frameCount = csCtx->frames;
|
||||
|
||||
@ -570,7 +570,7 @@ void EnXc_InitFlame(EnXc* this, PlayState* play) {
|
||||
s32 pad;
|
||||
s16 sceneNum = play->sceneNum;
|
||||
|
||||
if (sceneNum == SCENE_SPOT17) {
|
||||
if (sceneNum == SCENE_DEATH_MOUNTAIN_CRATER) {
|
||||
CsCmdActorAction* npcAction = EnXc_GetCsCmd(play, 0);
|
||||
if (npcAction != NULL) {
|
||||
s32 action = npcAction->action;
|
||||
@ -912,7 +912,7 @@ void EnXc_SetupDisappear(EnXc* this, PlayState* play) {
|
||||
s16 sceneNum = play->sceneNum;
|
||||
|
||||
// Sheik fades away if end of Bolero CS, kill actor otherwise
|
||||
if (sceneNum == SCENE_SPOT17) {
|
||||
if (sceneNum == SCENE_DEATH_MOUNTAIN_CRATER) {
|
||||
this->action = SHEIK_ACTION_FADE;
|
||||
this->drawMode = SHEIK_DRAW_NOTHING;
|
||||
this->actor.shape.shadowAlpha = 0;
|
||||
|
@ -1674,9 +1674,9 @@ u16 func_80B572F0(PlayState* play) {
|
||||
s16 sceneNum = play->sceneNum;
|
||||
u16 ret;
|
||||
|
||||
if (sceneNum == SCENE_GANON_SONOGO) {
|
||||
if (sceneNum == SCENE_GANONS_TOWER_COLLAPSE_INTERIOR) {
|
||||
ret = 0x71A8;
|
||||
} else if (sceneNum == SCENE_GANON_FINAL) {
|
||||
} else if (sceneNum == SCENE_GANONS_TOWER_COLLAPSE_EXTERIOR) {
|
||||
ret = 0x71A9;
|
||||
} else {
|
||||
ret = 0x71AB;
|
||||
@ -1768,7 +1768,7 @@ s32 func_80B575D0(EnZl3* this, PlayState* play) {
|
||||
s32 func_80B575F0(EnZl3* this, PlayState* play) {
|
||||
s16 sceneNum = play->sceneNum;
|
||||
|
||||
if ((sceneNum == SCENE_GANON_SONOGO) && (func_80B54DB4(this) == 0x26)) {
|
||||
if ((sceneNum == SCENE_GANONS_TOWER_COLLAPSE_INTERIOR) && (func_80B54DB4(this) == 0x26)) {
|
||||
s32 unk_314 = this->unk_314;
|
||||
|
||||
if (unk_314 == 1) {
|
||||
@ -1781,7 +1781,7 @@ s32 func_80B575F0(EnZl3* this, PlayState* play) {
|
||||
void func_80B5764C(EnZl3* this, PlayState* play) {
|
||||
s16 sceneNum = play->sceneNum;
|
||||
|
||||
if ((sceneNum == SCENE_GANON_SONOGO) && (func_80B54DB4(this) == 0x26)) {
|
||||
if ((sceneNum == SCENE_GANONS_TOWER_COLLAPSE_INTERIOR) && (func_80B54DB4(this) == 0x26)) {
|
||||
s32 unk_314 = this->unk_314 + 1;
|
||||
|
||||
if ((unk_314 == 1) && !Play_InCsMode(play)) {
|
||||
@ -1842,7 +1842,7 @@ s32 func_80B57890(EnZl3* this, PlayState* play) {
|
||||
|
||||
if (play) {} // Needed to match, this if can be almost anywhere and it still matches
|
||||
|
||||
if (sceneNum == SCENE_GANON_SONOGO) {
|
||||
if (sceneNum == SCENE_GANONS_TOWER_COLLAPSE_INTERIOR) {
|
||||
if ((result == 0x24) && (curSpawn == 0)) {
|
||||
return 1;
|
||||
}
|
||||
@ -1858,10 +1858,10 @@ s32 func_80B57890(EnZl3* this, PlayState* play) {
|
||||
if ((result == 0x28) && (curSpawn == 6)) {
|
||||
return 1;
|
||||
}
|
||||
} else if (sceneNum == SCENE_GANON_FINAL) {
|
||||
} else if (sceneNum == SCENE_GANONS_TOWER_COLLAPSE_EXTERIOR) {
|
||||
if ((result == 0x20) && (curSpawn == 0) && Flags_GetSwitch(play, 0x37)) {
|
||||
if ((play->sceneNum == SCENE_GANON_DEMO) || (play->sceneNum == SCENE_GANON_FINAL) ||
|
||||
(play->sceneNum == SCENE_GANON_SONOGO) || (play->sceneNum == SCENE_GANONTIKA_SONOGO)) {
|
||||
if ((play->sceneNum == SCENE_GANON_BOSS) || (play->sceneNum == SCENE_GANONS_TOWER_COLLAPSE_EXTERIOR) ||
|
||||
(play->sceneNum == SCENE_GANONS_TOWER_COLLAPSE_INTERIOR) || (play->sceneNum == SCENE_INSIDE_GANONS_CASTLE_COLLAPSE)) {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
@ -1874,7 +1874,7 @@ s32 func_80B57890(EnZl3* this, PlayState* play) {
|
||||
if ((result == 0x23) && (curSpawn == 6)) {
|
||||
return 1;
|
||||
}
|
||||
} else if (sceneNum == SCENE_GANONTIKA_SONOGO) {
|
||||
} else if (sceneNum == SCENE_INSIDE_GANONS_CASTLE_COLLAPSE) {
|
||||
if ((result == 0x29) && (curSpawn == 0)) {
|
||||
return 1;
|
||||
}
|
||||
@ -2484,8 +2484,8 @@ s32 func_80B5944C(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s
|
||||
|
||||
s32 func_80B59698(EnZl3* this, PlayState* play) {
|
||||
s32 cond = Flags_GetSwitch(play, 0x37) &&
|
||||
((play->sceneNum == SCENE_GANON_DEMO) || (play->sceneNum == SCENE_GANON_FINAL) ||
|
||||
(play->sceneNum == SCENE_GANON_SONOGO) || (play->sceneNum == SCENE_GANONTIKA_SONOGO));
|
||||
((play->sceneNum == SCENE_GANON_BOSS) || (play->sceneNum == SCENE_GANONS_TOWER_COLLAPSE_EXTERIOR) ||
|
||||
(play->sceneNum == SCENE_GANONS_TOWER_COLLAPSE_INTERIOR) || (play->sceneNum == SCENE_INSIDE_GANONS_CASTLE_COLLAPSE));
|
||||
|
||||
if (cond) {
|
||||
u8 curSpawn = play->curSpawn;
|
||||
@ -2500,8 +2500,8 @@ s32 func_80B59698(EnZl3* this, PlayState* play) {
|
||||
|
||||
s32 func_80B59768(EnZl3* this, PlayState* play) {
|
||||
s32 cond = Flags_GetSwitch(play, 0x37) &&
|
||||
((play->sceneNum == SCENE_GANON_DEMO) || (play->sceneNum == SCENE_GANON_FINAL) ||
|
||||
(play->sceneNum == SCENE_GANON_SONOGO) || (play->sceneNum == SCENE_GANONTIKA_SONOGO));
|
||||
((play->sceneNum == SCENE_GANON_BOSS) || (play->sceneNum == SCENE_GANONS_TOWER_COLLAPSE_EXTERIOR) ||
|
||||
(play->sceneNum == SCENE_GANONS_TOWER_COLLAPSE_INTERIOR) || (play->sceneNum == SCENE_INSIDE_GANONS_CASTLE_COLLAPSE));
|
||||
|
||||
if (cond) {
|
||||
u8 curSpawn = play->curSpawn;
|
||||
@ -2558,8 +2558,8 @@ void func_80B59828(EnZl3* this, PlayState* play) {
|
||||
|
||||
func_80B54EA4(this, play);
|
||||
cond = Flags_GetSwitch(play, 0x37) &&
|
||||
((play->sceneNum == SCENE_GANON_DEMO) || (play->sceneNum == SCENE_GANON_FINAL) ||
|
||||
(play->sceneNum == SCENE_GANON_SONOGO) || (play->sceneNum == SCENE_GANONTIKA_SONOGO));
|
||||
((play->sceneNum == SCENE_GANON_BOSS) || (play->sceneNum == SCENE_GANONS_TOWER_COLLAPSE_EXTERIOR) ||
|
||||
(play->sceneNum == SCENE_GANONS_TOWER_COLLAPSE_INTERIOR) || (play->sceneNum == SCENE_INSIDE_GANONS_CASTLE_COLLAPSE));
|
||||
if (cond) {
|
||||
func_80B53614(this, play);
|
||||
}
|
||||
|
@ -754,7 +754,7 @@ void ObjBean_SetupWaitForPlayer(ObjBean* this) {
|
||||
void ObjBean_WaitForPlayer(ObjBean* this, PlayState* play) {
|
||||
if (func_8004356C(&this->dyna)) { // Player is standing on
|
||||
ObjBean_SetupFly(this);
|
||||
if (play->sceneNum == SCENE_SPOT10) { // Lost woods
|
||||
if (play->sceneNum == SCENE_LOST_WOODS) { // Lost woods
|
||||
Camera_ChangeSetting(play->cameraPtrs[MAIN_CAM], CAM_SET_BEAN_LOST_WOODS);
|
||||
} else {
|
||||
Camera_ChangeSetting(play->cameraPtrs[MAIN_CAM], CAM_SET_BEAN_GENERIC);
|
||||
@ -790,7 +790,7 @@ void ObjBean_Fly(ObjBean* this, PlayState* play) {
|
||||
|
||||
func_8002F974(&this->dyna.actor, NA_SE_PL_PLANT_MOVE - SFX_FLAG);
|
||||
|
||||
if (play->sceneNum == SCENE_SPOT10) {
|
||||
if (play->sceneNum == SCENE_LOST_WOODS) {
|
||||
Camera_ChangeSetting(play->cameraPtrs[MAIN_CAM], CAM_SET_BEAN_LOST_WOODS);
|
||||
} else {
|
||||
Camera_ChangeSetting(play->cameraPtrs[MAIN_CAM], CAM_SET_BEAN_GENERIC);
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user