mirror of
https://github.com/HarbourMasters/Shipwright
synced 2026-06-18 15:55:29 -04:00
Add support for shuffling maps and compasses
This commit is contained in:
@@ -1801,6 +1801,86 @@ void Message_OpenText(GlobalContext* globalCtx, u16 textId) {
|
||||
break;
|
||||
}
|
||||
msgCtx->msgLength = font->msgLength = strlen(font->msgBuf);
|
||||
} else if (gSaveContext.n64ddFlag && textId == 0x66 && GET_PLAYER(globalCtx)->getItemId >= GI_DEKU_TREE_MAP && GET_PLAYER(globalCtx)->getItemId <= GI_ICE_CAVERN_MAP) {
|
||||
char* keyMsg;
|
||||
switch (gSaveContext.language) {
|
||||
case LANGUAGE_ENG: default:
|
||||
switch (GET_PLAYER(globalCtx)->getItemId) {
|
||||
case GI_DEKU_TREE_MAP:
|
||||
keyMsg = "\x08You got the \x05\x42\Deku Tree Map\x05\x40!\x09\x02";
|
||||
break;
|
||||
case GI_DODONGOS_CAVERN_MAP:
|
||||
keyMsg = "\x08You got the \x05\x41\Dodongo's Cavern Map\x05\x40!\x09\x02";
|
||||
break;
|
||||
case GI_JABU_JABUS_BELLY_MAP:
|
||||
keyMsg = "\x08You got the \x05\x43\Jabu Jabu's Belly Map\x05\x40!\x09\x02";
|
||||
break;
|
||||
case GI_FOREST_TEMPLE_MAP:
|
||||
keyMsg = "\x08You got the \x05\x42\Forest Temple Map\x05\x40!\x09\x02";
|
||||
break;
|
||||
case GI_FIRE_TEMPLE_MAP:
|
||||
keyMsg = "\x08You got the \x05\x41\Fire Temple Map\x05\x40!\x09\x02";
|
||||
break;
|
||||
case GI_WATER_TEMPLE_MAP:
|
||||
keyMsg = "\x08You got the \x05\x43\Water Temple Map\x05\x40!\x09\x02";
|
||||
break;
|
||||
case GI_SPIRIT_TEMPLE_MAP:
|
||||
keyMsg = "\x08You got the \x05\x46\Spirit Temple Map\x05\x40!\x09\x02";
|
||||
break;
|
||||
case GI_SHADOW_TEMPLE_MAP:
|
||||
keyMsg = "\x08You got the \x05\x45\Shadow Temple Map\x05\x40!\x09\x02";
|
||||
break;
|
||||
case GI_BOTTOM_OF_THE_WELL_MAP:
|
||||
keyMsg = "\x08You got the \x05\x45\Bottom of the Well Map\x05\x40!\x09\x02";
|
||||
break;
|
||||
case GI_ICE_CAVERN_MAP:
|
||||
keyMsg = "\x08You got the \x05\x43\Ice Cavern Map\x05\x40!\x09\x02";
|
||||
break;
|
||||
}
|
||||
strcpy(font->msgBuf, keyMsg);
|
||||
break;
|
||||
}
|
||||
msgCtx->msgLength = font->msgLength = strlen(font->msgBuf);
|
||||
} else if (gSaveContext.n64ddFlag && textId == 0x67 && GET_PLAYER(globalCtx)->getItemId >= GI_DEKU_TREE_COMPASS && GET_PLAYER(globalCtx)->getItemId <= GI_ICE_CAVERN_COMPASS) {
|
||||
char* keyMsg;
|
||||
switch (gSaveContext.language) {
|
||||
case LANGUAGE_ENG: default:
|
||||
switch (GET_PLAYER(globalCtx)->getItemId) {
|
||||
case GI_DEKU_TREE_COMPASS:
|
||||
keyMsg = "\x08You got the \x05\x42\Deku Tree Compass\x05\x40!\x09\x02";
|
||||
break;
|
||||
case GI_DODONGOS_CAVERN_COMPASS:
|
||||
keyMsg = "\x08You got the \x05\x41\Dodongo's Cavern Compass\x05\x40!\x09\x02";
|
||||
break;
|
||||
case GI_JABU_JABUS_BELLY_COMPASS:
|
||||
keyMsg = "\x08You got the \x05\x43\Jabu Jabu's Belly Compass\x05\x40!\x09\x02";
|
||||
break;
|
||||
case GI_FOREST_TEMPLE_COMPASS:
|
||||
keyMsg = "\x08You got the \x05\x42\Forest Temple Compass\x05\x40!\x09\x02";
|
||||
break;
|
||||
case GI_FIRE_TEMPLE_COMPASS:
|
||||
keyMsg = "\x08You got the \x05\x41\Fire Temple Compass\x05\x40!\x09\x02";
|
||||
break;
|
||||
case GI_WATER_TEMPLE_COMPASS:
|
||||
keyMsg = "\x08You got the \x05\x43\Water Temple Compass\x05\x40!\x09\x02";
|
||||
break;
|
||||
case GI_SPIRIT_TEMPLE_COMPASS:
|
||||
keyMsg = "\x08You got the \x05\x46\Spirit Temple Compass\x05\x40!\x09\x02";
|
||||
break;
|
||||
case GI_SHADOW_TEMPLE_COMPASS:
|
||||
keyMsg = "\x08You got the \x05\x45\Shadow Temple Compass\x05\x40!\x09\x02";
|
||||
break;
|
||||
case GI_BOTTOM_OF_THE_WELL_COMPASS:
|
||||
keyMsg = "\x08You got the \x05\x45\Bottom of the Well Compass\x05\x40!\x09\x02";
|
||||
break;
|
||||
case GI_ICE_CAVERN_COMPASS:
|
||||
keyMsg = "\x08You got the \x05\x43\Ice Cavern Compass\x05\x40!\x09\x02";
|
||||
break;
|
||||
}
|
||||
strcpy(font->msgBuf, keyMsg);
|
||||
break;
|
||||
}
|
||||
msgCtx->msgLength = font->msgLength = strlen(font->msgBuf);
|
||||
} else if (textId == 0xF8 && GET_PLAYER(globalCtx)->getItemId == GI_ICE_TRAP) {
|
||||
switch (gSaveContext.language) {
|
||||
case LANGUAGE_FRA:
|
||||
|
||||
+75
-40
@@ -1749,52 +1749,76 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) {
|
||||
gSaveContext.inventory.dungeonItems[gSaveContext.mapIndex] |= gBitFlags[item - ITEM_KEY_BOSS];
|
||||
}
|
||||
return ITEM_NONE;
|
||||
} else if ((item >= ITEM_FOREST_TEMPLE_BOSS_KEY) && (item <= ITEM_GANONS_CASTLE_BOSS_KEY)) {
|
||||
} else if (item == ITEM_KEY_SMALL) {
|
||||
if (gSaveContext.inventory.dungeonKeys[gSaveContext.mapIndex] < 0) {
|
||||
gSaveContext.inventory.dungeonKeys[gSaveContext.mapIndex] = 1;
|
||||
return ITEM_NONE;
|
||||
} else {
|
||||
gSaveContext.inventory.dungeonKeys[gSaveContext.mapIndex]++;
|
||||
return ITEM_NONE;
|
||||
}
|
||||
} else if (
|
||||
(item >= ITEM_GERUDO_FORTRESS_SMALL_KEY) && (item <= ITEM_GANONS_CASTLE_SMALL_KEY) ||
|
||||
(item >= ITEM_FOREST_TEMPLE_BOSS_KEY) && (item <= ITEM_GANONS_CASTLE_BOSS_KEY) ||
|
||||
(item >= ITEM_DEKU_TREE_MAP) && (item <= ITEM_ICE_CAVERN_MAP) ||
|
||||
(item >= ITEM_DEKU_TREE_COMPASS) && (item <= ITEM_ICE_CAVERN_COMPASS)
|
||||
) {
|
||||
int mapIndex = gSaveContext.mapIndex;
|
||||
switch (item) {
|
||||
case ITEM_DEKU_TREE_MAP:
|
||||
case ITEM_DEKU_TREE_COMPASS:
|
||||
mapIndex = SCENE_YDAN;
|
||||
break;
|
||||
case ITEM_DODONGOS_CAVERN_MAP:
|
||||
case ITEM_DODONGOS_CAVERN_COMPASS:
|
||||
mapIndex = SCENE_DDAN;
|
||||
break;
|
||||
case ITEM_JABU_JABUS_BELLY_MAP:
|
||||
case ITEM_JABU_JABUS_BELLY_COMPASS:
|
||||
mapIndex = SCENE_BDAN;
|
||||
break;
|
||||
case ITEM_FOREST_TEMPLE_MAP:
|
||||
case ITEM_FOREST_TEMPLE_COMPASS:
|
||||
case ITEM_FOREST_TEMPLE_SMALL_KEY:
|
||||
case ITEM_FOREST_TEMPLE_BOSS_KEY:
|
||||
mapIndex = SCENE_BMORI1;
|
||||
break;
|
||||
case ITEM_FIRE_TEMPLE_MAP:
|
||||
case ITEM_FIRE_TEMPLE_COMPASS:
|
||||
case ITEM_FIRE_TEMPLE_SMALL_KEY:
|
||||
case ITEM_FIRE_TEMPLE_BOSS_KEY:
|
||||
mapIndex = SCENE_HIDAN;
|
||||
break;
|
||||
case ITEM_WATER_TEMPLE_MAP:
|
||||
case ITEM_WATER_TEMPLE_COMPASS:
|
||||
case ITEM_WATER_TEMPLE_SMALL_KEY:
|
||||
case ITEM_WATER_TEMPLE_BOSS_KEY:
|
||||
mapIndex = SCENE_MIZUSIN;
|
||||
break;
|
||||
case ITEM_SPIRIT_TEMPLE_MAP:
|
||||
case ITEM_SPIRIT_TEMPLE_COMPASS:
|
||||
case ITEM_SPIRIT_TEMPLE_SMALL_KEY:
|
||||
case ITEM_SPIRIT_TEMPLE_BOSS_KEY:
|
||||
mapIndex = SCENE_JYASINZOU;
|
||||
break;
|
||||
case ITEM_SHADOW_TEMPLE_MAP:
|
||||
case ITEM_SHADOW_TEMPLE_COMPASS:
|
||||
case ITEM_SHADOW_TEMPLE_SMALL_KEY:
|
||||
case ITEM_SHADOW_TEMPLE_BOSS_KEY:
|
||||
mapIndex = SCENE_HAKADAN;
|
||||
break;
|
||||
case ITEM_GANONS_CASTLE_BOSS_KEY:
|
||||
mapIndex = SCENE_GANON;
|
||||
break;
|
||||
}
|
||||
|
||||
gSaveContext.inventory.dungeonItems[mapIndex] |= gBitFlags[ITEM_KEY_BOSS - ITEM_KEY_BOSS];
|
||||
return ITEM_NONE;
|
||||
} else if ((item >= ITEM_GERUDO_FORTRESS_SMALL_KEY) && (item <= ITEM_GANONS_CASTLE_SMALL_KEY)) {
|
||||
int mapIndex = gSaveContext.mapIndex;
|
||||
switch (item) {
|
||||
case ITEM_FOREST_TEMPLE_SMALL_KEY:
|
||||
mapIndex = SCENE_BMORI1;
|
||||
break;
|
||||
case ITEM_FIRE_TEMPLE_SMALL_KEY:
|
||||
mapIndex = SCENE_HIDAN;
|
||||
break;
|
||||
case ITEM_WATER_TEMPLE_SMALL_KEY:
|
||||
mapIndex = SCENE_MIZUSIN;
|
||||
break;
|
||||
case ITEM_SPIRIT_TEMPLE_SMALL_KEY:
|
||||
mapIndex = SCENE_JYASINZOU;
|
||||
break;
|
||||
case ITEM_SHADOW_TEMPLE_SMALL_KEY:
|
||||
mapIndex = SCENE_HAKADAN;
|
||||
break;
|
||||
case ITEM_BOTTOM_OF_THE_WELL_MAP:
|
||||
case ITEM_BOTTOM_OF_THE_WELL_COMPASS:
|
||||
case ITEM_BOTTOM_OF_THE_WELL_SMALL_KEY:
|
||||
mapIndex = SCENE_HAKADANCH;
|
||||
break;
|
||||
case ITEM_ICE_CAVERN_MAP:
|
||||
case ITEM_ICE_CAVERN_COMPASS:
|
||||
mapIndex = SCENE_ICE_DOUKUTO;
|
||||
break;
|
||||
case ITEM_GANONS_CASTLE_BOSS_KEY:
|
||||
mapIndex = SCENE_GANON;
|
||||
break;
|
||||
case ITEM_GERUDO_TRAINING_GROUNDS_SMALL_KEY:
|
||||
mapIndex = SCENE_MEN;
|
||||
break;
|
||||
@@ -1805,20 +1829,26 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) {
|
||||
mapIndex = SCENE_GANONTIKA;
|
||||
break;
|
||||
}
|
||||
|
||||
if (gSaveContext.inventory.dungeonKeys[mapIndex] < 0) {
|
||||
gSaveContext.inventory.dungeonKeys[mapIndex] = 1;
|
||||
return ITEM_NONE;
|
||||
|
||||
if ((item >= ITEM_GERUDO_FORTRESS_SMALL_KEY) && (item <= ITEM_GANONS_CASTLE_SMALL_KEY)) {
|
||||
if (gSaveContext.inventory.dungeonKeys[mapIndex] < 0) {
|
||||
gSaveContext.inventory.dungeonKeys[mapIndex] = 1;
|
||||
return ITEM_NONE;
|
||||
} else {
|
||||
gSaveContext.inventory.dungeonKeys[mapIndex]++;
|
||||
return ITEM_NONE;
|
||||
}
|
||||
} else {
|
||||
gSaveContext.inventory.dungeonKeys[mapIndex]++;
|
||||
return ITEM_NONE;
|
||||
}
|
||||
} else if (item == ITEM_KEY_SMALL) {
|
||||
if (gSaveContext.inventory.dungeonKeys[gSaveContext.mapIndex] < 0) {
|
||||
gSaveContext.inventory.dungeonKeys[gSaveContext.mapIndex] = 1;
|
||||
return ITEM_NONE;
|
||||
} else {
|
||||
gSaveContext.inventory.dungeonKeys[gSaveContext.mapIndex]++;
|
||||
int bitmask;
|
||||
if ((item >= ITEM_DEKU_TREE_MAP) && (item <= ITEM_ICE_CAVERN_MAP)) {
|
||||
bitmask = gBitFlags[2];
|
||||
} else if ((item >= ITEM_DEKU_TREE_COMPASS) && (item <= ITEM_ICE_CAVERN_COMPASS)) {
|
||||
bitmask = gBitFlags[1];
|
||||
} else {
|
||||
bitmask = gBitFlags[0];
|
||||
}
|
||||
|
||||
gSaveContext.inventory.dungeonItems[mapIndex] |= bitmask;
|
||||
return ITEM_NONE;
|
||||
}
|
||||
} else if ((item == ITEM_QUIVER_30) || (item == ITEM_BOW)) {
|
||||
@@ -2330,7 +2360,12 @@ u8 Item_CheckObtainability(u8 item) {
|
||||
} else {
|
||||
return ITEM_NONE;
|
||||
}
|
||||
} else if ((item >= ITEM_GERUDO_FORTRESS_SMALL_KEY) && (item <= ITEM_GANONS_CASTLE_BOSS_KEY)) {
|
||||
} else if (
|
||||
(item >= ITEM_GERUDO_FORTRESS_SMALL_KEY) && (item <= ITEM_GANONS_CASTLE_SMALL_KEY) ||
|
||||
(item >= ITEM_FOREST_TEMPLE_BOSS_KEY) && (item <= ITEM_GANONS_CASTLE_BOSS_KEY) ||
|
||||
(item >= ITEM_DEKU_TREE_MAP) && (item <= ITEM_ICE_CAVERN_MAP) ||
|
||||
(item >= ITEM_DEKU_TREE_COMPASS) && (item <= ITEM_ICE_CAVERN_COMPASS)
|
||||
) {
|
||||
return ITEM_NONE;
|
||||
} else if ((item == ITEM_KEY_BOSS) || (item == ITEM_COMPASS) || (item == ITEM_DUNGEON_MAP)) {
|
||||
return ITEM_NONE;
|
||||
|
||||
+60
-36
@@ -416,28 +416,64 @@ void GiveLinkDungeonReward(GetItemID getItemId) {
|
||||
}
|
||||
}
|
||||
|
||||
void GiveLinkSmallKey(GetItemID getItemId) {
|
||||
void GiveLinkDungeonItem(GetItemID getItemId, GetItemID type) {
|
||||
int mapIndex;
|
||||
|
||||
switch (getItemId) {
|
||||
case GI_DEKU_TREE_MAP:
|
||||
case GI_DEKU_TREE_COMPASS:
|
||||
mapIndex = SCENE_YDAN;
|
||||
break;
|
||||
case GI_DODONGOS_CAVERN_MAP:
|
||||
case GI_DODONGOS_CAVERN_COMPASS:
|
||||
mapIndex = SCENE_DDAN;
|
||||
break;
|
||||
case GI_JABU_JABUS_BELLY_MAP:
|
||||
case GI_JABU_JABUS_BELLY_COMPASS:
|
||||
mapIndex = SCENE_BDAN;
|
||||
break;
|
||||
case GI_FOREST_TEMPLE_MAP:
|
||||
case GI_FOREST_TEMPLE_COMPASS:
|
||||
case GI_FOREST_TEMPLE_SMALL_KEY:
|
||||
case GI_FOREST_TEMPLE_BOSS_KEY:
|
||||
mapIndex = SCENE_BMORI1;
|
||||
break;
|
||||
case GI_FIRE_TEMPLE_MAP:
|
||||
case GI_FIRE_TEMPLE_COMPASS:
|
||||
case GI_FIRE_TEMPLE_SMALL_KEY:
|
||||
case GI_FIRE_TEMPLE_BOSS_KEY:
|
||||
mapIndex = SCENE_HIDAN;
|
||||
break;
|
||||
case GI_WATER_TEMPLE_MAP:
|
||||
case GI_WATER_TEMPLE_COMPASS:
|
||||
case GI_WATER_TEMPLE_SMALL_KEY:
|
||||
case GI_WATER_TEMPLE_BOSS_KEY:
|
||||
mapIndex = SCENE_MIZUSIN;
|
||||
break;
|
||||
case GI_SPIRIT_TEMPLE_MAP:
|
||||
case GI_SPIRIT_TEMPLE_COMPASS:
|
||||
case GI_SPIRIT_TEMPLE_SMALL_KEY:
|
||||
case GI_SPIRIT_TEMPLE_BOSS_KEY:
|
||||
mapIndex = SCENE_JYASINZOU;
|
||||
break;
|
||||
case GI_SHADOW_TEMPLE_MAP:
|
||||
case GI_SHADOW_TEMPLE_COMPASS:
|
||||
case GI_SHADOW_TEMPLE_SMALL_KEY:
|
||||
case GI_SHADOW_TEMPLE_BOSS_KEY:
|
||||
mapIndex = SCENE_HAKADAN;
|
||||
break;
|
||||
case GI_BOTTOM_OF_THE_WELL_MAP:
|
||||
case GI_BOTTOM_OF_THE_WELL_COMPASS:
|
||||
case GI_BOTTOM_OF_THE_WELL_SMALL_KEY:
|
||||
mapIndex = SCENE_HAKADANCH;
|
||||
break;
|
||||
case GI_ICE_CAVERN_MAP:
|
||||
case GI_ICE_CAVERN_COMPASS:
|
||||
mapIndex = SCENE_ICE_DOUKUTO;
|
||||
break;
|
||||
case GI_GANONS_CASTLE_BOSS_KEY:
|
||||
mapIndex = SCENE_GANON;
|
||||
break;
|
||||
case GI_GERUDO_TRAINING_GROUNDS_SMALL_KEY:
|
||||
mapIndex = SCENE_MEN;
|
||||
break;
|
||||
@@ -449,40 +485,24 @@ void GiveLinkSmallKey(GetItemID getItemId) {
|
||||
break;
|
||||
}
|
||||
|
||||
if (gSaveContext.inventory.dungeonKeys[mapIndex] < 0) {
|
||||
gSaveContext.inventory.dungeonKeys[mapIndex] = 1;
|
||||
} else {
|
||||
gSaveContext.inventory.dungeonKeys[mapIndex]++;
|
||||
if (type == GI_MAP) {
|
||||
uint32_t mapBitMask = 1 << 1;
|
||||
gSaveContext.inventory.dungeonItems[mapIndex] |= mapBitMask;
|
||||
} else if (type == GI_COMPASS) {
|
||||
uint32_t compassBitMask = 1 << 2;
|
||||
gSaveContext.inventory.dungeonItems[mapIndex] |= compassBitMask;
|
||||
} else if (type == GI_KEY_SMALL) {
|
||||
if (gSaveContext.inventory.dungeonKeys[mapIndex] < 0) {
|
||||
gSaveContext.inventory.dungeonKeys[mapIndex] = 1;
|
||||
} else {
|
||||
gSaveContext.inventory.dungeonKeys[mapIndex]++;
|
||||
}
|
||||
} else if (type == GI_KEY_BOSS) {
|
||||
uint32_t bossKeyBitMask = 1 << 0;
|
||||
gSaveContext.inventory.dungeonItems[mapIndex] |= bossKeyBitMask;
|
||||
}
|
||||
}
|
||||
|
||||
void GiveLinkBossKey(GetItemID getItemId) {
|
||||
int mapIndex;
|
||||
|
||||
switch (getItemId) {
|
||||
case GI_FOREST_TEMPLE_BOSS_KEY:
|
||||
mapIndex = SCENE_BMORI1;
|
||||
break;
|
||||
case GI_FIRE_TEMPLE_BOSS_KEY:
|
||||
mapIndex = SCENE_HIDAN;
|
||||
break;
|
||||
case GI_WATER_TEMPLE_BOSS_KEY:
|
||||
mapIndex = SCENE_MIZUSIN;
|
||||
break;
|
||||
case GI_SPIRIT_TEMPLE_BOSS_KEY:
|
||||
mapIndex = SCENE_JYASINZOU;
|
||||
break;
|
||||
case GI_SHADOW_TEMPLE_BOSS_KEY:
|
||||
mapIndex = SCENE_HAKADAN;
|
||||
break;
|
||||
case GI_GANONS_CASTLE_BOSS_KEY:
|
||||
mapIndex = SCENE_GANON;
|
||||
break;
|
||||
}
|
||||
|
||||
gSaveContext.inventory.dungeonItems[mapIndex] |= 1;
|
||||
}
|
||||
|
||||
void GiveLinksPocketMedallion() {
|
||||
GetItemID getItemId = Randomizer_GetItemIdFromKnownCheck(RC_LINKS_POCKET, RG_NONE);
|
||||
|
||||
@@ -754,11 +774,11 @@ void Sram_InitSave(FileChooseContext* fileChooseCtx) {
|
||||
INV_CONTENT(ITEM_OCARINA_FAIRY) = ITEM_OCARINA_FAIRY;
|
||||
}
|
||||
|
||||
if(Randomizer_GetSettingValue(RSK_STARTING_MAPS_COMPASSES)) {
|
||||
if(Randomizer_GetSettingValue(RSK_STARTING_MAPS_COMPASSES) == 0) {
|
||||
uint32_t mapBitMask = 1 << 1;
|
||||
uint32_t compassBitMask = 1 << 2;
|
||||
uint32_t startingDungeonItemsBitMask = mapBitMask | compassBitMask;
|
||||
for(int scene = 0; scene <= 9; scene++) {
|
||||
for(int scene = SCENE_YDAN; scene <= SCENE_ICE_DOUKUTO; scene++) {
|
||||
gSaveContext.inventory.dungeonItems[scene] |= startingDungeonItemsBitMask;
|
||||
}
|
||||
}
|
||||
@@ -856,9 +876,13 @@ void Sram_InitSave(FileChooseContext* fileChooseCtx) {
|
||||
} else if (giid == GI_DOUBLE_DEFENSE) {
|
||||
GiveLinkDoubleDefense();
|
||||
} else if (giid >= GI_GERUDO_FORTRESS_SMALL_KEY && giid <= GI_GANONS_CASTLE_SMALL_KEY) {
|
||||
GiveLinkSmallKey(giid);
|
||||
GiveLinkDungeonItem(giid, GI_KEY_SMALL);
|
||||
} else if (giid >= GI_FOREST_TEMPLE_BOSS_KEY && giid <= GI_GANONS_CASTLE_BOSS_KEY) {
|
||||
GiveLinkBossKey(giid);
|
||||
GiveLinkDungeonItem(giid, GI_KEY_BOSS);
|
||||
} else if (giid >= GI_DEKU_TREE_MAP && giid <= GI_ICE_CAVERN_MAP) {
|
||||
GiveLinkDungeonItem(giid, GI_MAP);
|
||||
} else if (giid >= GI_DEKU_TREE_COMPASS && giid <= GI_ICE_CAVERN_COMPASS) {
|
||||
GiveLinkDungeonItem(giid, GI_COMPASS);
|
||||
} else {
|
||||
s32 iid = Randomizer_GetItemIDFromGetItemID(giid);
|
||||
if (iid != -1) INV_CONTENT(iid) = iid;
|
||||
|
||||
Reference in New Issue
Block a user