You're using wait wrong - wait only delays the actions, not the event. So each sprite gets looped through on the same tick (instant) and they're all waiting the same 2 seconds, and setting the text all on the same tick again then.
Try using 'every x seconds' with an incrementing variable instead, picking by IID from 0 to object.count while the variable is less than object.count.
Or try the timer behavior, you could still use a for each loop, setting the duration for each timer/instance to loopindex*2 seconds, and setting the text on timer triggered.
Wait is super commonly misused and the name is misleading. If it were up to me I'd call it "delay actions" or "postpone actions" instead.