Check InDeck variable of all cards in the debugger. Maybe it's 0 for some cards.
As I mentioned before, referencing cards by UID in the dictionary is a bad idea. Their UIDs may change if you switch to another layout, or restart the layout.
it's not 0, it's showing the correct number in deck, it's just spawning 1 less of the first card picked. like if there's two, three, or four, it still spawns some, just one less than it's supposed to for specifically the first card. And also only if more than one card spawns, if it's just the one it spawns perfectly fine. Also, I tried switching it to be set by an instance variable attached to the cards and that didn't remotely work. Dictionary.get(str(Cards.InDeck))