This... is a nice script.
I read your post and absolutely had to go make it
It's not often that people ask for something that actually needs a weird workaround for, so I was pleased to make this.
Okay, first things first, you'll want to make an "invisible entity". You need this because Lights don't have an IfUsed field, and we need that for what we're about to do.
The invisible entity should use this script as it's "Spawn" script:
;Artificial Intelligence Script
;Header
desc = Appear invisible
;Triggers
:state=0:setalphafade=0,coloff,runfpidefault=1
;End of Script
I use these entities a lot so treat them nicely.
Next, save this script in the user folder of the scriptbank:
;Artificial Intelligence Script
;Header
desc = Delayed Activation (1 second)
;Triggers
:state=0,activated=1:timerstart,state=1
:state=1,timergreater=1000:activateifused=1,state=2
:state=2,activated=0:activateifused=0,state=0
;End of Script
I named this "DelayActivate.fpi" but you can use a different name if you so choose.
NOTE: This script will make sure that all the lights won't come on at once, you can adjust the delay between lights by changing that "1000" to a different number.
Now, set up all your lights to be turned on in sequence. When I did this I named them "Light1", "Light2", etc. all the way up to 7, which is how many lights I tested this with.
Make sure they are all dynamic lights! And give them the "light1off.fpi" script, so they start out being turned off.
Okay, now for each light EXCEPT the last light, make an accompanying invisible entity. Name it THE SAME NAME as which Light is belongs to! So for "Light1" there should be an invisible entity called "Light1". Give all these invisible entities the script that I made. Yes, every single one of them will use the SAME script. Also, make sure they have the "Always Active" property set to "Yes", and to save on processing time, turn the "Physics On?" property to "No".
Okay, for the invisible "Light" entity, put in it's "If Used" property the name of the NEXT "Light" entity in the sequence. So the invisible "Light1" entity would have "Light2" as it's "If Used" property.
Do that for all the invisible entities.
To test this, I had them started up from a switch. For the switch, I simply gave it the name of the first Light in it's "If Used" property. So, to clarify, my switch had "Light1" in it's "If Used" property.
Having ROWS of lights turned on just like the ones above:
Now, you may be wondering about "rows" of lights turning on one after the other, and that you would need a boat-load of invisible entities for that. Actually... each "row" of lights need only one invisible entity. For each row of lights to be turned on, there need be only one invisible entity.
Just name all the lights in each row the same name.
NOTE!!! Having large rows of dynamic lights will cause only some of them to be activated at a time as the engine will only allow a certain number of dynamic lights to be viewed by the player at any given time.
Tada! That setup will have all the lights turned on, in sequence, 1 second after the previous one. To change the delay read the "NOTE" after the script.
If you are having any problems understanding what's going on here, or if something isn't working right. Just ask, I'll do my best to give you an answer. Just know that I have it working, and once you understand how to set it up, it doesn't take long at all!
I loved the effect this made in-game. Thank you for asking about this!
The one and only,
~PlystirE~
[EDIT]
Changed it to a simpler method.