mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2024-11-22 17:32:19 -05:00
Always use dungeon specific items in randomizer, replace message on the fly (#3041)
This commit is contained in:
parent
1fe8835d8b
commit
b2aa24b8b0
@ -316,6 +316,11 @@ extern GraphicsContext* __gfxCtx;
|
|||||||
#define GERUDO_FORTRESS_SMALL_KEY_MAX 4
|
#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_GANONTIKA) ? 3 : 2)
|
||||||
#define TREASURE_GAME_SMALL_KEY_MAX 6
|
#define TREASURE_GAME_SMALL_KEY_MAX 6
|
||||||
|
|
||||||
|
#define DUNGEON_ITEMS_CAN_BE_OUTSIDE_DUNGEON(randomizerSettingsKey) \
|
||||||
|
(Randomizer_GetSettingValue(randomizerSettingsKey) != RO_DUNGEON_ITEM_LOC_STARTWITH && \
|
||||||
|
Randomizer_GetSettingValue(randomizerSettingsKey) != RO_DUNGEON_ITEM_LOC_VANILLA && \
|
||||||
|
Randomizer_GetSettingValue(randomizerSettingsKey) != RO_DUNGEON_ITEM_LOC_OWN_DUNGEON)
|
||||||
// #endregion
|
// #endregion
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -2,6 +2,10 @@
|
|||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
TEXT_CURSED_SKULLTULA_PEOPLE = 0x22,
|
TEXT_CURSED_SKULLTULA_PEOPLE = 0x22,
|
||||||
|
TEXT_ITEM_KEY_SMALL = 0x60,
|
||||||
|
TEXT_ITEM_DUNGEON_MAP = 0x66,
|
||||||
|
TEXT_ITEM_COMPASS = 0x67,
|
||||||
|
TEXT_ITEM_KEY_BOSS = 0xC7,
|
||||||
TEXT_DAMPES_DIARY = 0x5003,
|
TEXT_DAMPES_DIARY = 0x5003,
|
||||||
TEXT_CHEST_GAME_PROCEED = 0x704C,
|
TEXT_CHEST_GAME_PROCEED = 0x704C,
|
||||||
TEXT_BUY_BOMBCHU_10_PROMPT = 0x8C,
|
TEXT_BUY_BOMBCHU_10_PROMPT = 0x8C,
|
||||||
|
@ -10,9 +10,14 @@
|
|||||||
#include "objects/object_gi_hearts/object_gi_hearts.h"
|
#include "objects/object_gi_hearts/object_gi_hearts.h"
|
||||||
#include "objects/gameplay_field_keep/gameplay_field_keep.h"
|
#include "objects/gameplay_field_keep/gameplay_field_keep.h"
|
||||||
|
|
||||||
|
extern "C" u8 Randomizer_GetSettingValue(RandomizerSettingKey randoSettingKey);
|
||||||
|
|
||||||
extern "C" void Randomizer_DrawSmallKey(PlayState* play, GetItemEntry* getItemEntry) {
|
extern "C" void Randomizer_DrawSmallKey(PlayState* play, GetItemEntry* getItemEntry) {
|
||||||
s32 pad;
|
s32 pad;
|
||||||
s8 isColoredKeysEnabled = CVarGetInteger("gRandoMatchKeyColors", 1);
|
s8 keysCanBeOutsideDungeon = getItemEntry->getItemId == RG_GERUDO_FORTRESS_SMALL_KEY ?
|
||||||
|
Randomizer_GetSettingValue(RSK_GERUDO_KEYS) != RO_GERUDO_KEYS_VANILLA :
|
||||||
|
DUNGEON_ITEMS_CAN_BE_OUTSIDE_DUNGEON(RSK_KEYSANITY);
|
||||||
|
s8 isColoredKeysEnabled = keysCanBeOutsideDungeon && CVarGetInteger("gRandoMatchKeyColors", 1);
|
||||||
s16 color_slot = getItemEntry->getItemId - RG_FOREST_TEMPLE_SMALL_KEY;
|
s16 color_slot = getItemEntry->getItemId - RG_FOREST_TEMPLE_SMALL_KEY;
|
||||||
s16 colors[9][3] = {
|
s16 colors[9][3] = {
|
||||||
{ 4, 195, 46 }, // Forest Temple
|
{ 4, 195, 46 }, // Forest Temple
|
||||||
@ -49,7 +54,10 @@ extern "C" void Randomizer_DrawSmallKey(PlayState* play, GetItemEntry* getItemEn
|
|||||||
|
|
||||||
extern "C" void Randomizer_DrawBossKey(PlayState* play, GetItemEntry* getItemEntry) {
|
extern "C" void Randomizer_DrawBossKey(PlayState* play, GetItemEntry* getItemEntry) {
|
||||||
s32 pad;
|
s32 pad;
|
||||||
s8 isColoredKeysEnabled = CVarGetInteger("gRandoMatchKeyColors", 1);
|
s8 keysCanBeOutsideDungeon = getItemEntry->getItemId == RG_GANONS_CASTLE_BOSS_KEY ?
|
||||||
|
DUNGEON_ITEMS_CAN_BE_OUTSIDE_DUNGEON(RSK_GANONS_BOSS_KEY) :
|
||||||
|
DUNGEON_ITEMS_CAN_BE_OUTSIDE_DUNGEON(RSK_BOSS_KEYSANITY);
|
||||||
|
s8 isColoredKeysEnabled = keysCanBeOutsideDungeon && CVarGetInteger("gRandoMatchKeyColors", 1);
|
||||||
s16 color_slot;
|
s16 color_slot;
|
||||||
color_slot = getItemEntry->getItemId - RG_FOREST_TEMPLE_BOSS_KEY;
|
color_slot = getItemEntry->getItemId - RG_FOREST_TEMPLE_BOSS_KEY;
|
||||||
s16 colors[6][3] = {
|
s16 colors[6][3] = {
|
||||||
|
@ -2187,89 +2187,6 @@ GetItemID Randomizer::GetItemIdFromRandomizerGet(RandomizerGet randoGet, GetItem
|
|||||||
return (GetItemID)RG_MAGIC_DOUBLE;
|
return (GetItemID)RG_MAGIC_DOUBLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
case RG_DEKU_TREE_MAP:
|
|
||||||
case RG_DODONGOS_CAVERN_MAP:
|
|
||||||
case RG_JABU_JABUS_BELLY_MAP:
|
|
||||||
case RG_FOREST_TEMPLE_MAP:
|
|
||||||
case RG_FIRE_TEMPLE_MAP:
|
|
||||||
case RG_WATER_TEMPLE_MAP:
|
|
||||||
case RG_SPIRIT_TEMPLE_MAP:
|
|
||||||
case RG_SHADOW_TEMPLE_MAP:
|
|
||||||
case RG_BOTTOM_OF_THE_WELL_MAP:
|
|
||||||
case RG_ICE_CAVERN_MAP:
|
|
||||||
if (GetRandoSettingValue(RSK_STARTING_MAPS_COMPASSES) == RO_DUNGEON_ITEM_LOC_STARTWITH ||
|
|
||||||
GetRandoSettingValue(RSK_STARTING_MAPS_COMPASSES) == RO_DUNGEON_ITEM_LOC_VANILLA ||
|
|
||||||
(GetRandoSettingValue(RSK_STARTING_MAPS_COMPASSES) == RO_DUNGEON_ITEM_LOC_OWN_DUNGEON &&
|
|
||||||
GetRandoSettingValue(RSK_SHUFFLE_BOSS_ENTRANCES) == RO_BOSS_ROOM_ENTRANCE_SHUFFLE_OFF)) {
|
|
||||||
return GI_MAP;
|
|
||||||
} else {
|
|
||||||
return (GetItemID)randoGet;
|
|
||||||
}
|
|
||||||
|
|
||||||
case RG_DEKU_TREE_COMPASS:
|
|
||||||
case RG_DODONGOS_CAVERN_COMPASS:
|
|
||||||
case RG_JABU_JABUS_BELLY_COMPASS:
|
|
||||||
case RG_FOREST_TEMPLE_COMPASS:
|
|
||||||
case RG_FIRE_TEMPLE_COMPASS:
|
|
||||||
case RG_WATER_TEMPLE_COMPASS:
|
|
||||||
case RG_SPIRIT_TEMPLE_COMPASS:
|
|
||||||
case RG_SHADOW_TEMPLE_COMPASS:
|
|
||||||
case RG_BOTTOM_OF_THE_WELL_COMPASS:
|
|
||||||
case RG_ICE_CAVERN_COMPASS:
|
|
||||||
if (GetRandoSettingValue(RSK_STARTING_MAPS_COMPASSES) == RO_DUNGEON_ITEM_LOC_STARTWITH ||
|
|
||||||
GetRandoSettingValue(RSK_STARTING_MAPS_COMPASSES) == RO_DUNGEON_ITEM_LOC_VANILLA ||
|
|
||||||
(GetRandoSettingValue(RSK_STARTING_MAPS_COMPASSES) == RO_DUNGEON_ITEM_LOC_OWN_DUNGEON &&
|
|
||||||
GetRandoSettingValue(RSK_SHUFFLE_BOSS_ENTRANCES) == RO_BOSS_ROOM_ENTRANCE_SHUFFLE_OFF)) {
|
|
||||||
return GI_COMPASS;
|
|
||||||
} else {
|
|
||||||
return (GetItemID)randoGet;
|
|
||||||
}
|
|
||||||
|
|
||||||
case RG_FOREST_TEMPLE_BOSS_KEY:
|
|
||||||
case RG_FIRE_TEMPLE_BOSS_KEY:
|
|
||||||
case RG_WATER_TEMPLE_BOSS_KEY:
|
|
||||||
case RG_SPIRIT_TEMPLE_BOSS_KEY:
|
|
||||||
case RG_SHADOW_TEMPLE_BOSS_KEY:
|
|
||||||
if (GetRandoSettingValue(RSK_BOSS_KEYSANITY) == RO_DUNGEON_ITEM_LOC_STARTWITH ||
|
|
||||||
GetRandoSettingValue(RSK_BOSS_KEYSANITY) == RO_DUNGEON_ITEM_LOC_VANILLA ||
|
|
||||||
(GetRandoSettingValue(RSK_BOSS_KEYSANITY) == RO_DUNGEON_ITEM_LOC_OWN_DUNGEON &&
|
|
||||||
GetRandoSettingValue(RSK_SHUFFLE_BOSS_ENTRANCES) == RO_BOSS_ROOM_ENTRANCE_SHUFFLE_OFF)) {
|
|
||||||
return GI_KEY_BOSS;
|
|
||||||
} else {
|
|
||||||
return (GetItemID)randoGet;
|
|
||||||
}
|
|
||||||
case RG_GANONS_CASTLE_BOSS_KEY:
|
|
||||||
if (GetRandoSettingValue(RSK_GANONS_BOSS_KEY) == RO_GANON_BOSS_KEY_STARTWITH ||
|
|
||||||
GetRandoSettingValue(RSK_GANONS_BOSS_KEY) == RO_GANON_BOSS_KEY_VANILLA ||
|
|
||||||
GetRandoSettingValue(RSK_GANONS_BOSS_KEY) == RO_GANON_BOSS_KEY_OWN_DUNGEON) {
|
|
||||||
return GI_KEY_BOSS;
|
|
||||||
} else {
|
|
||||||
return (GetItemID)randoGet;
|
|
||||||
}
|
|
||||||
|
|
||||||
case RG_FOREST_TEMPLE_SMALL_KEY:
|
|
||||||
case RG_FIRE_TEMPLE_SMALL_KEY:
|
|
||||||
case RG_WATER_TEMPLE_SMALL_KEY:
|
|
||||||
case RG_SPIRIT_TEMPLE_SMALL_KEY:
|
|
||||||
case RG_SHADOW_TEMPLE_SMALL_KEY:
|
|
||||||
case RG_BOTTOM_OF_THE_WELL_SMALL_KEY:
|
|
||||||
case RG_GERUDO_TRAINING_GROUNDS_SMALL_KEY:
|
|
||||||
case RG_GANONS_CASTLE_SMALL_KEY:
|
|
||||||
if (GetRandoSettingValue(RSK_KEYSANITY) == RO_DUNGEON_ITEM_LOC_STARTWITH ||
|
|
||||||
GetRandoSettingValue(RSK_KEYSANITY) == RO_DUNGEON_ITEM_LOC_VANILLA ||
|
|
||||||
(GetRandoSettingValue(RSK_KEYSANITY) == RO_DUNGEON_ITEM_LOC_OWN_DUNGEON &&
|
|
||||||
GetRandoSettingValue(RSK_SHUFFLE_BOSS_ENTRANCES) == RO_BOSS_ROOM_ENTRANCE_SHUFFLE_OFF)) {
|
|
||||||
return GI_KEY_SMALL;
|
|
||||||
} else {
|
|
||||||
return (GetItemID)randoGet;
|
|
||||||
}
|
|
||||||
case RG_GERUDO_FORTRESS_SMALL_KEY:
|
|
||||||
if (GetRandoSettingValue(RSK_GERUDO_KEYS) == RO_GERUDO_KEYS_VANILLA) {
|
|
||||||
return GI_KEY_SMALL;
|
|
||||||
} else {
|
|
||||||
return (GetItemID)randoGet;
|
|
||||||
}
|
|
||||||
|
|
||||||
case RG_RECOVERY_HEART:
|
case RG_RECOVERY_HEART:
|
||||||
case RG_BUY_HEART:
|
case RG_BUY_HEART:
|
||||||
return GI_HEART;
|
return GI_HEART;
|
||||||
@ -2427,72 +2344,6 @@ bool Randomizer::IsItemVanilla(RandomizerGet randoGet) {
|
|||||||
} else {
|
} else {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
case RG_FOREST_TEMPLE_SMALL_KEY:
|
|
||||||
case RG_FIRE_TEMPLE_SMALL_KEY:
|
|
||||||
case RG_WATER_TEMPLE_SMALL_KEY:
|
|
||||||
case RG_SPIRIT_TEMPLE_SMALL_KEY:
|
|
||||||
case RG_SHADOW_TEMPLE_SMALL_KEY:
|
|
||||||
case RG_BOTTOM_OF_THE_WELL_SMALL_KEY:
|
|
||||||
case RG_GERUDO_TRAINING_GROUNDS_SMALL_KEY:
|
|
||||||
case RG_GANONS_CASTLE_SMALL_KEY:
|
|
||||||
if (GetRandoSettingValue(RSK_KEYSANITY) == RO_DUNGEON_ITEM_LOC_STARTWITH ||
|
|
||||||
GetRandoSettingValue(RSK_KEYSANITY) == RO_DUNGEON_ITEM_LOC_VANILLA ||
|
|
||||||
(GetRandoSettingValue(RSK_KEYSANITY) == RO_DUNGEON_ITEM_LOC_OWN_DUNGEON &&
|
|
||||||
GetRandoSettingValue(RSK_SHUFFLE_BOSS_ENTRANCES) == RO_BOSS_ROOM_ENTRANCE_SHUFFLE_OFF)) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
case RG_GERUDO_FORTRESS_SMALL_KEY:
|
|
||||||
if (GetRandoSettingValue(RSK_GERUDO_KEYS) != RO_GERUDO_KEYS_VANILLA) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
case RG_FOREST_TEMPLE_BOSS_KEY:
|
|
||||||
case RG_FIRE_TEMPLE_BOSS_KEY:
|
|
||||||
case RG_WATER_TEMPLE_BOSS_KEY:
|
|
||||||
case RG_SPIRIT_TEMPLE_BOSS_KEY:
|
|
||||||
case RG_SHADOW_TEMPLE_BOSS_KEY:
|
|
||||||
if (GetRandoSettingValue(RSK_BOSS_KEYSANITY) == RO_DUNGEON_ITEM_LOC_STARTWITH ||
|
|
||||||
GetRandoSettingValue(RSK_BOSS_KEYSANITY) == RO_DUNGEON_ITEM_LOC_VANILLA ||
|
|
||||||
(GetRandoSettingValue(RSK_BOSS_KEYSANITY) == RO_DUNGEON_ITEM_LOC_OWN_DUNGEON &&
|
|
||||||
GetRandoSettingValue(RSK_SHUFFLE_BOSS_ENTRANCES) == RO_BOSS_ROOM_ENTRANCE_SHUFFLE_OFF)) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
case RG_GANONS_CASTLE_BOSS_KEY:
|
|
||||||
if (GetRandoSettingValue(RSK_GANONS_BOSS_KEY) == RO_GANON_BOSS_KEY_STARTWITH ||
|
|
||||||
GetRandoSettingValue(RSK_GANONS_BOSS_KEY) == RO_GANON_BOSS_KEY_VANILLA ||
|
|
||||||
GetRandoSettingValue(RSK_GANONS_BOSS_KEY) == RO_GANON_BOSS_KEY_OWN_DUNGEON) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
case RG_DEKU_TREE_COMPASS:
|
|
||||||
case RG_DODONGOS_CAVERN_COMPASS:
|
|
||||||
case RG_JABU_JABUS_BELLY_COMPASS:
|
|
||||||
case RG_FOREST_TEMPLE_COMPASS:
|
|
||||||
case RG_FIRE_TEMPLE_COMPASS:
|
|
||||||
case RG_WATER_TEMPLE_COMPASS:
|
|
||||||
case RG_SPIRIT_TEMPLE_COMPASS:
|
|
||||||
case RG_SHADOW_TEMPLE_COMPASS:
|
|
||||||
case RG_BOTTOM_OF_THE_WELL_COMPASS:
|
|
||||||
case RG_ICE_CAVERN_COMPASS:
|
|
||||||
case RG_DEKU_TREE_MAP:
|
|
||||||
case RG_DODONGOS_CAVERN_MAP:
|
|
||||||
case RG_JABU_JABUS_BELLY_MAP:
|
|
||||||
case RG_FOREST_TEMPLE_MAP:
|
|
||||||
case RG_FIRE_TEMPLE_MAP:
|
|
||||||
case RG_WATER_TEMPLE_MAP:
|
|
||||||
case RG_SPIRIT_TEMPLE_MAP:
|
|
||||||
case RG_SHADOW_TEMPLE_MAP:
|
|
||||||
case RG_BOTTOM_OF_THE_WELL_MAP:
|
|
||||||
case RG_ICE_CAVERN_MAP:
|
|
||||||
if (GetRandoSettingValue(RSK_STARTING_MAPS_COMPASSES) == RO_DUNGEON_ITEM_LOC_STARTWITH ||
|
|
||||||
GetRandoSettingValue(RSK_STARTING_MAPS_COMPASSES) == RO_DUNGEON_ITEM_LOC_VANILLA ||
|
|
||||||
(GetRandoSettingValue(RSK_STARTING_MAPS_COMPASSES) == RO_DUNGEON_ITEM_LOC_OWN_DUNGEON &&
|
|
||||||
GetRandoSettingValue(RSK_SHUFFLE_BOSS_ENTRANCES) == RO_BOSS_ROOM_ENTRANCE_SHUFFLE_OFF)) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -6056,15 +5907,15 @@ void InitRandoItemTable() {
|
|||||||
GET_ITEM(RG_BOTTLE_WITH_BUGS, OBJECT_GI_INSECT, GID_BUG, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER, RG_BOTTLE_WITH_BUGS),
|
GET_ITEM(RG_BOTTLE_WITH_BUGS, OBJECT_GI_INSECT, GID_BUG, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER, RG_BOTTLE_WITH_BUGS),
|
||||||
GET_ITEM(RG_BOTTLE_WITH_POE, OBJECT_GI_GHOST, GID_POE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER, RG_BOTTLE_WITH_POE),
|
GET_ITEM(RG_BOTTLE_WITH_POE, OBJECT_GI_GHOST, GID_POE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER, RG_BOTTLE_WITH_POE),
|
||||||
GET_ITEM(RG_BOTTLE_WITH_BIG_POE, OBJECT_GI_GHOST, GID_BIG_POE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER, RG_BOTTLE_WITH_BIG_POE),
|
GET_ITEM(RG_BOTTLE_WITH_BIG_POE, OBJECT_GI_GHOST, GID_BIG_POE, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER, RG_BOTTLE_WITH_BIG_POE),
|
||||||
GET_ITEM(RG_GERUDO_FORTRESS_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, RG_GERUDO_FORTRESS_SMALL_KEY),
|
GET_ITEM(RG_GERUDO_FORTRESS_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_ITEM_KEY_SMALL, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, RG_GERUDO_FORTRESS_SMALL_KEY),
|
||||||
GET_ITEM(RG_FOREST_TEMPLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, RG_FOREST_TEMPLE_SMALL_KEY),
|
GET_ITEM(RG_FOREST_TEMPLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_ITEM_KEY_SMALL, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, RG_FOREST_TEMPLE_SMALL_KEY),
|
||||||
GET_ITEM(RG_FIRE_TEMPLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, RG_FIRE_TEMPLE_SMALL_KEY),
|
GET_ITEM(RG_FIRE_TEMPLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_ITEM_KEY_SMALL, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, RG_FIRE_TEMPLE_SMALL_KEY),
|
||||||
GET_ITEM(RG_WATER_TEMPLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, RG_WATER_TEMPLE_SMALL_KEY),
|
GET_ITEM(RG_WATER_TEMPLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_ITEM_KEY_SMALL, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, RG_WATER_TEMPLE_SMALL_KEY),
|
||||||
GET_ITEM(RG_SPIRIT_TEMPLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, RG_SPIRIT_TEMPLE_SMALL_KEY),
|
GET_ITEM(RG_SPIRIT_TEMPLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_ITEM_KEY_SMALL, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, RG_SPIRIT_TEMPLE_SMALL_KEY),
|
||||||
GET_ITEM(RG_SHADOW_TEMPLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, RG_SHADOW_TEMPLE_SMALL_KEY),
|
GET_ITEM(RG_SHADOW_TEMPLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_ITEM_KEY_SMALL, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, RG_SHADOW_TEMPLE_SMALL_KEY),
|
||||||
GET_ITEM(RG_BOTTOM_OF_THE_WELL_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, RG_BOTTOM_OF_THE_WELL_SMALL_KEY),
|
GET_ITEM(RG_BOTTOM_OF_THE_WELL_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_ITEM_KEY_SMALL, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, RG_BOTTOM_OF_THE_WELL_SMALL_KEY),
|
||||||
GET_ITEM(RG_GERUDO_TRAINING_GROUNDS_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, RG_GERUDO_TRAINING_GROUNDS_SMALL_KEY),
|
GET_ITEM(RG_GERUDO_TRAINING_GROUNDS_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_ITEM_KEY_SMALL, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, RG_GERUDO_TRAINING_GROUNDS_SMALL_KEY),
|
||||||
GET_ITEM(RG_GANONS_CASTLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, RG_GANONS_CASTLE_SMALL_KEY),
|
GET_ITEM(RG_GANONS_CASTLE_SMALL_KEY, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_ITEM_KEY_SMALL, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, RG_GANONS_CASTLE_SMALL_KEY),
|
||||||
GET_ITEM(RG_GERUDO_FORTRESS_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, RG_GERUDO_FORTRESS_KEY_RING),
|
GET_ITEM(RG_GERUDO_FORTRESS_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, RG_GERUDO_FORTRESS_KEY_RING),
|
||||||
GET_ITEM(RG_FOREST_TEMPLE_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, RG_FOREST_TEMPLE_KEY_RING),
|
GET_ITEM(RG_FOREST_TEMPLE_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, RG_FOREST_TEMPLE_KEY_RING),
|
||||||
GET_ITEM(RG_FIRE_TEMPLE_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, RG_FIRE_TEMPLE_KEY_RING),
|
GET_ITEM(RG_FIRE_TEMPLE_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, RG_FIRE_TEMPLE_KEY_RING),
|
||||||
@ -6074,32 +5925,32 @@ void InitRandoItemTable() {
|
|||||||
GET_ITEM(RG_BOTTOM_OF_THE_WELL_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, RG_BOTTOM_OF_THE_WELL_KEY_RING),
|
GET_ITEM(RG_BOTTOM_OF_THE_WELL_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, RG_BOTTOM_OF_THE_WELL_KEY_RING),
|
||||||
GET_ITEM(RG_GERUDO_TRAINING_GROUNDS_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, RG_GERUDO_TRAINING_GROUNDS_KEY_RING),
|
GET_ITEM(RG_GERUDO_TRAINING_GROUNDS_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, RG_GERUDO_TRAINING_GROUNDS_KEY_RING),
|
||||||
GET_ITEM(RG_GANONS_CASTLE_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, RG_GANONS_CASTLE_KEY_RING),
|
GET_ITEM(RG_GANONS_CASTLE_KEY_RING, OBJECT_GI_KEY, GID_KEY_SMALL, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_SHORT, ITEM_CATEGORY_SMALL_KEY, MOD_RANDOMIZER, RG_GANONS_CASTLE_KEY_RING),
|
||||||
GET_ITEM(RG_FOREST_TEMPLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY, MOD_RANDOMIZER, RG_FOREST_TEMPLE_BOSS_KEY),
|
GET_ITEM(RG_FOREST_TEMPLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_ITEM_KEY_BOSS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY, MOD_RANDOMIZER, RG_FOREST_TEMPLE_BOSS_KEY),
|
||||||
GET_ITEM(RG_FIRE_TEMPLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY, MOD_RANDOMIZER, RG_FIRE_TEMPLE_BOSS_KEY),
|
GET_ITEM(RG_FIRE_TEMPLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_ITEM_KEY_BOSS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY, MOD_RANDOMIZER, RG_FIRE_TEMPLE_BOSS_KEY),
|
||||||
GET_ITEM(RG_WATER_TEMPLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY, MOD_RANDOMIZER, RG_WATER_TEMPLE_BOSS_KEY),
|
GET_ITEM(RG_WATER_TEMPLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_ITEM_KEY_BOSS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY, MOD_RANDOMIZER, RG_WATER_TEMPLE_BOSS_KEY),
|
||||||
GET_ITEM(RG_SPIRIT_TEMPLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY, MOD_RANDOMIZER, RG_SPIRIT_TEMPLE_BOSS_KEY),
|
GET_ITEM(RG_SPIRIT_TEMPLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_ITEM_KEY_BOSS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY, MOD_RANDOMIZER, RG_SPIRIT_TEMPLE_BOSS_KEY),
|
||||||
GET_ITEM(RG_SHADOW_TEMPLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY, MOD_RANDOMIZER, RG_SHADOW_TEMPLE_BOSS_KEY),
|
GET_ITEM(RG_SHADOW_TEMPLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_ITEM_KEY_BOSS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY, MOD_RANDOMIZER, RG_SHADOW_TEMPLE_BOSS_KEY),
|
||||||
GET_ITEM(RG_GANONS_CASTLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY, MOD_RANDOMIZER, RG_GANONS_CASTLE_BOSS_KEY),
|
GET_ITEM(RG_GANONS_CASTLE_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, TEXT_ITEM_KEY_BOSS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_BOSS_KEY, MOD_RANDOMIZER, RG_GANONS_CASTLE_BOSS_KEY),
|
||||||
GET_ITEM(RG_DEKU_TREE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER, RG_DEKU_TREE_MAP),
|
GET_ITEM(RG_DEKU_TREE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER, RG_DEKU_TREE_MAP),
|
||||||
GET_ITEM(RG_DODONGOS_CAVERN_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER, RG_DODONGOS_CAVERN_MAP),
|
GET_ITEM(RG_DODONGOS_CAVERN_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER, RG_DODONGOS_CAVERN_MAP),
|
||||||
GET_ITEM(RG_JABU_JABUS_BELLY_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER, RG_JABU_JABUS_BELLY_MAP),
|
GET_ITEM(RG_JABU_JABUS_BELLY_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER, RG_JABU_JABUS_BELLY_MAP),
|
||||||
GET_ITEM(RG_FOREST_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER, RG_FOREST_TEMPLE_MAP),
|
GET_ITEM(RG_FOREST_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER, RG_FOREST_TEMPLE_MAP),
|
||||||
GET_ITEM(RG_FIRE_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER, RG_FIRE_TEMPLE_MAP),
|
GET_ITEM(RG_FIRE_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER, RG_FIRE_TEMPLE_MAP),
|
||||||
GET_ITEM(RG_WATER_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER, RG_WATER_TEMPLE_MAP),
|
GET_ITEM(RG_WATER_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER, RG_WATER_TEMPLE_MAP),
|
||||||
GET_ITEM(RG_SPIRIT_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER, RG_SPIRIT_TEMPLE_MAP),
|
GET_ITEM(RG_SPIRIT_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER, RG_SPIRIT_TEMPLE_MAP),
|
||||||
GET_ITEM(RG_SHADOW_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER, RG_SHADOW_TEMPLE_MAP),
|
GET_ITEM(RG_SHADOW_TEMPLE_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER, RG_SHADOW_TEMPLE_MAP),
|
||||||
GET_ITEM(RG_BOTTOM_OF_THE_WELL_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER, RG_BOTTOM_OF_THE_WELL_MAP),
|
GET_ITEM(RG_BOTTOM_OF_THE_WELL_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER, RG_BOTTOM_OF_THE_WELL_MAP),
|
||||||
GET_ITEM(RG_ICE_CAVERN_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER, RG_ICE_CAVERN_MAP),
|
GET_ITEM(RG_ICE_CAVERN_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, TEXT_ITEM_DUNGEON_MAP, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER, RG_ICE_CAVERN_MAP),
|
||||||
GET_ITEM(RG_DEKU_TREE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER, RG_DEKU_TREE_COMPASS),
|
GET_ITEM(RG_DEKU_TREE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER, RG_DEKU_TREE_COMPASS),
|
||||||
GET_ITEM(RG_DODONGOS_CAVERN_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER, RG_DODONGOS_CAVERN_COMPASS),
|
GET_ITEM(RG_DODONGOS_CAVERN_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER, RG_DODONGOS_CAVERN_COMPASS),
|
||||||
GET_ITEM(RG_JABU_JABUS_BELLY_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER, RG_JABU_JABUS_BELLY_COMPASS),
|
GET_ITEM(RG_JABU_JABUS_BELLY_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER, RG_JABU_JABUS_BELLY_COMPASS),
|
||||||
GET_ITEM(RG_FOREST_TEMPLE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER, RG_FOREST_TEMPLE_COMPASS),
|
GET_ITEM(RG_FOREST_TEMPLE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER, RG_FOREST_TEMPLE_COMPASS),
|
||||||
GET_ITEM(RG_FIRE_TEMPLE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER, RG_FIRE_TEMPLE_COMPASS),
|
GET_ITEM(RG_FIRE_TEMPLE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER, RG_FIRE_TEMPLE_COMPASS),
|
||||||
GET_ITEM(RG_WATER_TEMPLE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER, RG_WATER_TEMPLE_COMPASS),
|
GET_ITEM(RG_WATER_TEMPLE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER, RG_WATER_TEMPLE_COMPASS),
|
||||||
GET_ITEM(RG_SPIRIT_TEMPLE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER, RG_SPIRIT_TEMPLE_COMPASS),
|
GET_ITEM(RG_SPIRIT_TEMPLE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER, RG_SPIRIT_TEMPLE_COMPASS),
|
||||||
GET_ITEM(RG_SHADOW_TEMPLE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER, RG_SHADOW_TEMPLE_COMPASS),
|
GET_ITEM(RG_SHADOW_TEMPLE_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER, RG_SHADOW_TEMPLE_COMPASS),
|
||||||
GET_ITEM(RG_BOTTOM_OF_THE_WELL_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER, RG_BOTTOM_OF_THE_WELL_COMPASS),
|
GET_ITEM(RG_BOTTOM_OF_THE_WELL_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER, RG_BOTTOM_OF_THE_WELL_COMPASS),
|
||||||
GET_ITEM(RG_ICE_CAVERN_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER, RG_ICE_CAVERN_COMPASS),
|
GET_ITEM(RG_ICE_CAVERN_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, TEXT_ITEM_COMPASS, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER, RG_ICE_CAVERN_COMPASS),
|
||||||
GET_ITEM(RG_MAGIC_BEAN_PACK, OBJECT_GI_BEAN, GID_BEAN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER, RG_MAGIC_BEAN_PACK),
|
GET_ITEM(RG_MAGIC_BEAN_PACK, OBJECT_GI_BEAN, GID_BEAN, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER, RG_MAGIC_BEAN_PACK),
|
||||||
GET_ITEM(RG_TYCOON_WALLET, OBJECT_GI_PURSE, GID_WALLET_GIANT, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER, RG_TYCOON_WALLET),
|
GET_ITEM(RG_TYCOON_WALLET, OBJECT_GI_PURSE, GID_WALLET_GIANT, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER, RG_TYCOON_WALLET),
|
||||||
GET_ITEM(RG_PROGRESSIVE_BOMBCHUS, OBJECT_GI_BOMB_2, GID_BOMBCHU, 0x33, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER, RG_PROGRESSIVE_BOMBCHUS),
|
GET_ITEM(RG_PROGRESSIVE_BOMBCHUS, OBJECT_GI_BOMB_2, GID_BOMBCHU, 0x33, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER, RG_PROGRESSIVE_BOMBCHUS),
|
||||||
|
@ -1898,19 +1898,45 @@ extern "C" int CustomMessage_RetrieveIfExists(PlayState* play) {
|
|||||||
CustomMessage messageEntry;
|
CustomMessage messageEntry;
|
||||||
s16 actorParams = 0;
|
s16 actorParams = 0;
|
||||||
if (gSaveContext.n64ddFlag) {
|
if (gSaveContext.n64ddFlag) {
|
||||||
|
Player* player = GET_PLAYER(play);
|
||||||
if (textId == TEXT_RANDOMIZER_CUSTOM_ITEM) {
|
if (textId == TEXT_RANDOMIZER_CUSTOM_ITEM) {
|
||||||
Player* player = GET_PLAYER(play);
|
|
||||||
if (player->getItemEntry.getItemId == RG_ICE_TRAP) {
|
if (player->getItemEntry.getItemId == RG_ICE_TRAP) {
|
||||||
u16 iceTrapTextId = Random(0, NUM_ICE_TRAP_MESSAGES);
|
u16 iceTrapTextId = Random(0, NUM_ICE_TRAP_MESSAGES);
|
||||||
messageEntry = CustomMessageManager::Instance->RetrieveMessage(Randomizer::IceTrapRandoMessageTableID, iceTrapTextId);
|
messageEntry = CustomMessageManager::Instance->RetrieveMessage(Randomizer::IceTrapRandoMessageTableID, iceTrapTextId);
|
||||||
if (CVarGetInteger("gLetItSnow", 0)) {
|
if (CVarGetInteger("gLetItSnow", 0)) {
|
||||||
messageEntry = CustomMessageManager::Instance->RetrieveMessage(Randomizer::IceTrapRandoMessageTableID, NUM_ICE_TRAP_MESSAGES + 1);
|
messageEntry = CustomMessageManager::Instance->RetrieveMessage(Randomizer::IceTrapRandoMessageTableID, NUM_ICE_TRAP_MESSAGES + 1);
|
||||||
}
|
}
|
||||||
} else if (player->getItemEntry.getItemId >= RG_DEKU_TREE_MAP && player->getItemEntry.getItemId <= RG_ICE_CAVERN_MAP) {
|
|
||||||
messageEntry = OTRGlobals::Instance->gRandomizer->GetMapGetItemMessageWithHint(player->getItemEntry);
|
|
||||||
} else {
|
} else {
|
||||||
messageEntry = Randomizer_GetCustomGetItemMessage(player);
|
messageEntry = Randomizer_GetCustomGetItemMessage(player);
|
||||||
}
|
}
|
||||||
|
} else if (textId == TEXT_ITEM_DUNGEON_MAP || textId == TEXT_ITEM_COMPASS) {
|
||||||
|
if (DUNGEON_ITEMS_CAN_BE_OUTSIDE_DUNGEON(RSK_STARTING_MAPS_COMPASSES)) {
|
||||||
|
if (textId == TEXT_ITEM_DUNGEON_MAP) {
|
||||||
|
messageEntry = OTRGlobals::Instance->gRandomizer->GetMapGetItemMessageWithHint(player->getItemEntry);
|
||||||
|
} else {
|
||||||
|
messageEntry = Randomizer_GetCustomGetItemMessage(player);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (textId == TEXT_ITEM_KEY_BOSS) {
|
||||||
|
if (player->getItemEntry.getItemId == RG_GANONS_CASTLE_BOSS_KEY) {
|
||||||
|
if (DUNGEON_ITEMS_CAN_BE_OUTSIDE_DUNGEON(RSK_GANONS_BOSS_KEY)) {
|
||||||
|
messageEntry = Randomizer_GetCustomGetItemMessage(player);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (DUNGEON_ITEMS_CAN_BE_OUTSIDE_DUNGEON(RSK_BOSS_KEYSANITY)) {
|
||||||
|
messageEntry = Randomizer_GetCustomGetItemMessage(player);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (textId == TEXT_ITEM_KEY_SMALL) {
|
||||||
|
if (player->getItemEntry.getItemId == RG_GERUDO_FORTRESS_SMALL_KEY) {
|
||||||
|
if (Randomizer_GetSettingValue(RSK_GERUDO_KEYS) != RO_GERUDO_KEYS_VANILLA) {
|
||||||
|
messageEntry = Randomizer_GetCustomGetItemMessage(player);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (DUNGEON_ITEMS_CAN_BE_OUTSIDE_DUNGEON(RSK_KEYSANITY)) {
|
||||||
|
messageEntry = Randomizer_GetCustomGetItemMessage(player);
|
||||||
|
}
|
||||||
|
}
|
||||||
} else if (textId == TEXT_RANDOMIZER_GOSSIP_STONE_HINTS && Randomizer_GetSettingValue(RSK_GOSSIP_STONE_HINTS) != RO_GOSSIP_STONES_NONE &&
|
} else if (textId == TEXT_RANDOMIZER_GOSSIP_STONE_HINTS && Randomizer_GetSettingValue(RSK_GOSSIP_STONE_HINTS) != RO_GOSSIP_STONES_NONE &&
|
||||||
(Randomizer_GetSettingValue(RSK_GOSSIP_STONE_HINTS) == RO_GOSSIP_STONES_NEED_NOTHING ||
|
(Randomizer_GetSettingValue(RSK_GOSSIP_STONE_HINTS) == RO_GOSSIP_STONES_NEED_NOTHING ||
|
||||||
(Randomizer_GetSettingValue(RSK_GOSSIP_STONE_HINTS) == RO_GOSSIP_STONES_NEED_TRUTH &&
|
(Randomizer_GetSettingValue(RSK_GOSSIP_STONE_HINTS) == RO_GOSSIP_STONES_NEED_TRUTH &&
|
||||||
|
@ -1870,53 +1870,16 @@ u8 Item_Give(PlayState* play, u8 item) {
|
|||||||
gSaveContext.inventory.equipment |= (gBitFlags[item - ITEM_BOOTS_KOKIRI] << gEquipShifts[EQUIP_BOOTS]);
|
gSaveContext.inventory.equipment |= (gBitFlags[item - ITEM_BOOTS_KOKIRI] << gEquipShifts[EQUIP_BOOTS]);
|
||||||
return Return_Item(item, MOD_NONE, ITEM_NONE);
|
return Return_Item(item, MOD_NONE, ITEM_NONE);
|
||||||
} else if ((item == ITEM_KEY_BOSS) || (item == ITEM_COMPASS) || (item == ITEM_DUNGEON_MAP)) {
|
} else if ((item == ITEM_KEY_BOSS) || (item == ITEM_COMPASS) || (item == ITEM_DUNGEON_MAP)) {
|
||||||
// Boss Key, Compass, and Dungeon Map exceptions for rando.
|
gSaveContext.inventory.dungeonItems[gSaveContext.mapIndex] |= gBitFlags[item - ITEM_KEY_BOSS];
|
||||||
// Rando should never be able to get here for Link's Pocket unless something goes wrong,
|
|
||||||
// but we check for a play here so the game won't crash if we do somehow get here.
|
|
||||||
if (gSaveContext.n64ddFlag && play != NULL) {
|
|
||||||
if (play->sceneNum == 13) { // ganon's castle -> ganon's tower
|
|
||||||
gSaveContext.inventory.dungeonItems[10] |= 1;
|
|
||||||
} else if (play->sceneNum == 92) { // Desert Colossus -> Spirit Temple.
|
|
||||||
gSaveContext.inventory.dungeonItems[6] |= gBitFlags[item - ITEM_KEY_BOSS];
|
|
||||||
} else {
|
|
||||||
gSaveContext.inventory.dungeonItems[gSaveContext.mapIndex] |= gBitFlags[item - ITEM_KEY_BOSS];
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
gSaveContext.inventory.dungeonItems[gSaveContext.mapIndex] |= gBitFlags[item - ITEM_KEY_BOSS];
|
|
||||||
}
|
|
||||||
return Return_Item(item, MOD_NONE, ITEM_NONE);
|
return Return_Item(item, MOD_NONE, ITEM_NONE);
|
||||||
} else if (item == ITEM_KEY_SMALL) {
|
} else if (item == ITEM_KEY_SMALL) {
|
||||||
// Small key exceptions for rando with keysanity off.
|
|
||||||
// Rando should never be able to get here for Link's Pocket unless something goes wrong,
|
|
||||||
// but we check for a play here so the game won't crash if we do somehow get here.
|
|
||||||
if (gSaveContext.n64ddFlag && play != NULL) {
|
|
||||||
if (play->sceneNum == 10) { // ganon's tower -> ganon's castle
|
|
||||||
gSaveContext.sohStats.dungeonKeys[13]++;
|
|
||||||
if (gSaveContext.inventory.dungeonKeys[13] < 0) {
|
|
||||||
gSaveContext.inventory.dungeonKeys[13] = 1;
|
|
||||||
} else {
|
|
||||||
gSaveContext.inventory.dungeonKeys[13]++;
|
|
||||||
}
|
|
||||||
return Return_Item(item, MOD_NONE, ITEM_NONE);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (play->sceneNum == 92) { // Desert Colossus -> Spirit Temple.
|
|
||||||
gSaveContext.sohStats.dungeonKeys[6]++;
|
|
||||||
if (gSaveContext.inventory.dungeonKeys[6] < 0) {
|
|
||||||
gSaveContext.inventory.dungeonKeys[6] = 1;
|
|
||||||
} else {
|
|
||||||
gSaveContext.inventory.dungeonKeys[6]++;
|
|
||||||
}
|
|
||||||
return Return_Item(item, MOD_NONE, ITEM_NONE);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
gSaveContext.sohStats.dungeonKeys[gSaveContext.mapIndex]++;
|
|
||||||
if (gSaveContext.inventory.dungeonKeys[gSaveContext.mapIndex] < 0) {
|
if (gSaveContext.inventory.dungeonKeys[gSaveContext.mapIndex] < 0) {
|
||||||
gSaveContext.inventory.dungeonKeys[gSaveContext.mapIndex] = 1;
|
gSaveContext.inventory.dungeonKeys[gSaveContext.mapIndex] = 1;
|
||||||
|
return Return_Item(item, MOD_NONE, ITEM_NONE);
|
||||||
} else {
|
} else {
|
||||||
gSaveContext.inventory.dungeonKeys[gSaveContext.mapIndex]++;
|
gSaveContext.inventory.dungeonKeys[gSaveContext.mapIndex]++;
|
||||||
|
return Return_Item(item, MOD_NONE, ITEM_NONE);
|
||||||
}
|
}
|
||||||
return Return_Item(item, MOD_NONE, ITEM_NONE);
|
|
||||||
} else if ((item == ITEM_QUIVER_30) || (item == ITEM_BOW)) {
|
} else if ((item == ITEM_QUIVER_30) || (item == ITEM_BOW)) {
|
||||||
if (CUR_UPG_VALUE(UPG_QUIVER) == 0) {
|
if (CUR_UPG_VALUE(UPG_QUIVER) == 0) {
|
||||||
Inventory_ChangeUpgrade(UPG_QUIVER, 1);
|
Inventory_ChangeUpgrade(UPG_QUIVER, 1);
|
||||||
|
Loading…
Reference in New Issue
Block a user