Please just write two separate procs that override this for singlecard and cardhand for their relevant vars. You can keep this proc with the sourceobj check and call ..() at the start.