I finally figured it out @Pat Stanford! It took some dissecting of what was going on and some looking up of function but I finally puzzled it out.
Procedure Main_Script;
Var
H1:Handle;
B1:Boolean;
ORot:Real;
Procedure Callback(H1:Handle);
Begin
H1:=FSActLayer;
ORot:=HAngle(H1);
SetRField(H1,'Lighting Device','Rotate3DPosition','True');
SetRField(H1,'Lighting Device','EnableZRot','True');
SetRField(H1,'Lighting Device','zRot',Concat(ORot));
ResetObject(H1);
SetDSelect(H1);
End;
Begin
ForEachObject(Callback,(((VSEL=TRUE) & (PON='Lighting Device'))));
End;
Run(Main_Script);
At first, I just copied the original script and used the template you gave me but I had some issues with the variables (still confused about the global vs. local variable portion of the template).
After I figured that out, the script compiled successfully so I tested it out and it was only working on the first light in the selection so I realized it must have something to do with the "FSActLayer" by only looping back and running on the same first selected Lighting Device. I tried to see if I could switch that to something else and then thought of just deselecting the completed light once the Procedure completed. I found the SetDSelect procedure and it worked like a charm. Very excited!
Thank you again!