Skip to content

Commit

Permalink
Put back the key sets to 0 in savefile to prevent keys from being ini…
Browse files Browse the repository at this point in the history
…tialized to 255. (#25)

In case that fails, include a check in the item effect of small keys to ensure we initialize them properly.
  • Loading branch information
PhlexPlexico authored Feb 5, 2024
1 parent 02a0e30 commit ca06827
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 10 deletions.
9 changes: 9 additions & 0 deletions code/source/rnd/item_effect.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -63,17 +63,26 @@ namespace rnd {
}

void ItemEffect_GiveSmallKey(game::CommonData* comData, s16 dungeonId, s16 arg2) {
// Have the checks in here as a safety measure in case save file doesn't write them.
switch (dungeonId) {
case 0:
if (comData->save.inventory.woodfall_temple_keys == 255)
comData->save.inventory.woodfall_temple_keys = 0;
comData->save.inventory.woodfall_temple_keys = comData->save.inventory.woodfall_temple_keys + 1;
break;
case 1:
if (comData->save.inventory.snowhead_temple_keys == 255)
comData->save.inventory.snowhead_temple_keys = 0;
comData->save.inventory.snowhead_temple_keys = comData->save.inventory.snowhead_temple_keys + 1;
break;
case 2:
if (comData->save.inventory.great_bay_temple_keys == 255)
comData->save.inventory.great_bay_temple_keys = 0;
comData->save.inventory.great_bay_temple_keys = comData->save.inventory.great_bay_temple_keys + 1;
break;
case 3:
if (comData->save.inventory.stone_tower_temple_keys == 255)
comData->save.inventory.stone_tower_temple_keys = 0;
comData->save.inventory.stone_tower_temple_keys = comData->save.inventory.stone_tower_temple_keys + 1;
break;
default:
Expand Down
4 changes: 2 additions & 2 deletions code/source/rnd/item_override.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,8 @@ namespace rnd {
rItemOverrides[0].value.looksLikeItemId = 0x26;
rItemOverrides[1].key.scene = 0x6F;
rItemOverrides[1].key.type = ItemOverride_Type::OVR_COLLECTABLE;
rItemOverrides[1].value.getItemId = 0x49;
rItemOverrides[1].value.looksLikeItemId = 0x49;
rItemOverrides[1].value.getItemId = 0x76;
rItemOverrides[1].value.looksLikeItemId = 0x76;
rItemOverrides[2].key.scene = 0x12;
rItemOverrides[2].key.type = ItemOverride_Type::OVR_COLLECTABLE;
rItemOverrides[2].value.getItemId = 0x37;
Expand Down
18 changes: 10 additions & 8 deletions code/source/rnd/savefile.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -58,10 +58,6 @@ namespace rnd {
saveData.inventory.masks[20] = game::ItemId::GaroMask;
saveData.inventory.masks[6] = game::ItemId::AllNightMask;

saveData.inventory.woodfall_temple_keys = 8;
saveData.inventory.snowhead_temple_keys = 8;
saveData.inventory.great_bay_temple_keys = 8;
saveData.inventory.stone_tower_temple_keys = 8;
saveData.inventory.woodfall_dungeon_items.map = 1;
saveData.inventory.woodfall_dungeon_items.compass = 1;
saveData.inventory.woodfall_dungeon_items.boss_key = 1;
Expand Down Expand Up @@ -372,10 +368,16 @@ namespace rnd {
// give starting spirit keys for vanilla key locations
} else {
// Init to 0 as the game inits to 255.
// saveData.inventory.woodfall_temple_keys = 0;
// saveData.inventory.snowhead_temple_keys = 0;
// saveData.inventory.great_bay_temple_keys = 0;
// saveData.inventory.stone_tower_temple_keys = 0;
saveData.inventory.woodfall_temple_keys = 0;
saveData.inventory.snowhead_temple_keys = 0;
saveData.inventory.great_bay_temple_keys = 0;
saveData.inventory.stone_tower_temple_keys = 0;
#ifdef ENABLE_DEBUG
saveData.inventory.woodfall_temple_keys = 8;
saveData.inventory.snowhead_temple_keys = 8;
saveData.inventory.great_bay_temple_keys = 8;
saveData.inventory.stone_tower_temple_keys = 8;
#endif
}

// give boss keys
Expand Down

0 comments on commit ca06827

Please sign in to comment.