float h = 0.2; //Step height float r = 5.0; //Staircase radius (half of stair's x scale) float w = 2.0; //Full waves in staircase float p = 10.0; //Height of one wave float max = 3.0; //Maximum stair length float min = 1.0; //Minimum stair length float wf(integer i) { return PI * (((float)i * h) / p); } float len(integer i) { return ((llCos(wf(i)) + 1.0) * ((max - min) / 2)) + min; } default { touch_start(integer num_detected) { if(llDetectedKey(0) == llGetOwner()) { integer i = 0; float t = 0.0; for(i = 0; i < (integer)((w * p) / h); ++i) { llSetPos(llGetPos() + <0, 0, h>); llRezObject("Step", llGetPos(), <0, 0, 0>, llEuler2Rot(<0, 0, t + llAcos(1 - llPow(len(i), 2.0) / (2 * llPow(r, 2))) / 2.0>), (integer)(len(i) * 1000.0)); t += llAcos(1 - llPow(len(i), 2.0)/(2 * llPow(r, 2))); } } } }