BodbDearg/PsyDoom

[Bug] IDKFA cheat won't give all keys

Closed this issue · 4 comments

While it shows the "Lots of goodies!" message distinct from IDFA's "Lots of goodies! (No Keys)" message, no keys are, in fact, given after typing IDKFA.

It only gives you the keys that are needed for that map. This is the same behavior as on the PlayStation version.

Ah, I see! Although, I just noticed that the requirement is that at least one key has to be put inside the map. Therefore, a colored door that requires a key won't be openable without that key in the map, even with the IDKFA cheat.

You're right. That's what I meant. It gives you the keys found in the map.

Here's the code, if you're curious:

//------------------------------------------------------------------------------------------------------------------------------------------
// Grants the specified player all keys currently in the level
//------------------------------------------------------------------------------------------------------------------------------------------
static void grantAllKeys(player_t& player) noexcept {
// Run through the list of keys that are sitting around and give any found to the player:
for (mobj_t* pMobj = gMobjHead.next; pMobj != &gMobjHead; pMobj = pMobj->next) {
switch (pMobj->type) {
case MT_MISC4: player.cards[it_bluecard] = true; break;
case MT_MISC5: player.cards[it_redcard] = true; break;
case MT_MISC6: player.cards[it_yellowcard] = true; break;
case MT_MISC7: player.cards[it_yellowskull] = true; break;
case MT_MISC8: player.cards[it_redskull] = true; break;
case MT_MISC9: player.cards[it_blueskull] = true; break;
default: break;
}
}
}

Yeah the behavior is as @fenderc01 describes and is how it was in the original game. The cheat will only give you whatever keys happen to be present in the map, and if there are no keys lying around then you won't get any of them. Closing as a non-issue (working as expected).