Seems like your code is good so probably there is something else interfering. I would recommend the debugger.
I'd also recommend not using depth in GMS2. It's designed to use layers. And depth also uses layers, it just creates them automatically which makes it harder for you to use all the features that layers offer. But that likely wouldn't affect this problem.
Okay so after running the game through debug mode, I found out that multiple instances of obj_calvinButton were being created but they were all placed at the same coordinates. Seems as if the irandom_range(86, 864) wasn't working as I thought it would.
In short: They're all being created in the same place. And I'll remember to use layers from now on thank you.
Edit: I was just looking through the manual and it says that:
"NOTE: This function will return the same value every time the game is run afresh due to the fact that GameMaker: Studio generates the same initial random seed every time to make debugging code a far easier task. To avoid this behaviour use
randomize at the start of your game."
So it's chose a random number ONCE and has been using it multiple times. Thank you for your tips and advice!