I wasn't going to log on, but your did 4 horrible things here.
1. Don't clone or duplicate objects as your doing.
Instead create 1 Object, give them a custom variable name/id.
Sprite1,2,3,4,5 is bad
Text 1,2,3,4,5 is bad
instead
Sprite.id = 1, Sprite.id = 2, Sprite.id = 3, Sprite.id = 4, Sprite.id = 5
same with text you have
2. You don't list all valid numbers.
You use curStory to check against for the IF statements, yet we don't know where curStorys starts.
AND
Button Loop starts at 1, but we have no idea what numberStory last number.
3. If your not using the LoopIndex("Button") to get your number
Do you really need a loop?
4. If Number story which set's the loop count is related to your Array. Your Array Width is only 4. If your loop is based on Array Width then the loop only last's to a count of 4. If your loop count is for then CurStory will only ever be starting value of curStory + 4.
5. Did I say 4? I meant 5.
We are here to help, however the website is supposed to family friendly. And while I know the word "gay" can be jolly, such as "a gay old time" to mean a happy jolly time. The current slang and the context of use can be derogatory.
Instead you should destroy what you have and make it over all better.
Assign the variables to the objects instead of duplicating objects. This means you only need to include it in the list once.
For Loop Button 4 to 8
--//Event to build SOL would be
--Text.id = loopindex("Button")
--Sprite.id=loopindex("Button")
--// actions would be
Sprite.visible set true
Text.visible set true
Text..text = titlevalue