Ahhh I see it now, being silly. Thanks!
I still can’t get it to work 100% though, it is weird?
If I have the artefact it plays the message and retains my hand as desired, so working at 50% correct. I then delete all artefacts in the array and play the game again, however it still retains the cards and doesn’t discard them?
If I attach the loop completion to the discard function then the discard works as it should (however it will clearly then discard my cards even if I have the artefact because it will always complete)
I added a print string to the false and despite there being nothing in the array, which should return a false it never goes down that path.
EDIT
I added a breakpoint to the code and ran through it, I got to here and it ended:
So I am guessing that maybe because there are no objects at all in the array that this just returns a false result and ends out without going through the loop, in order to return a false to discard the hand?