integer canslide = 1; integer hitfwd = 0; integer quickslide = 0; integer speed = 30; integer stopped = 1; integer candown = 0; vector pos; default { on_rez(integer a) { llResetScript(); } state_entry() { llListen(7,"",llGetOwner(),""); llRequestPermissions(llGetOwner(),PERMISSION_TRIGGER_ANIMATION | PERMISSION_TAKE_CONTROLS); } run_time_permissions(integer perm) { if(perm > 0) { llTakeControls(CONTROL_FWD | CONTROL_DOWN,TRUE,TRUE); } } listen(integer channel,string name,key id,string msg) { if(msg == "jdash on") { canslide = 1; } else if(msg == "jdash off") { canslide = 0; } else if(msg == "speed 1") { speed = 30; llOwnerSay("Speed level set to normal."); } else if(msg == "speed 2") { speed = 40; llOwnerSay("Speed level set to fast."); } else if(msg == "speed 3") { speed = 50; llOwnerSay("Speed level set to cruisin'."); } else if(msg == "speed 4") { speed = 60; llOwnerSay("Speed level set to jet speed."); } } control(key id, integer levels, integer edges) { if((CONTROL_FWD & edges) && (CONTROL_FWD & levels)) { if(hitfwd && !quickslide) { rotation rot = llGetRot(); vector fwd = llRot2Fwd(rot); vector pos = llGetPos(); quickslide = 1; stopped = 0; llParticleSystem([PSYS_SRC_PATTERN,PSYS_SRC_PATTERN_EXPLODE, PSYS_PART_MAX_AGE, 1.0, PSYS_SRC_BURST_PART_COUNT, 300, PSYS_PART_FLAGS,PSYS_PART_EMISSIVE_MASK | PSYS_PART_INTERP_COLOR_MASK | PSYS_PART_INTERP_SCALE_MASK, PSYS_PART_END_ALPHA, 0.0, PSYS_PART_START_COLOR, <1,1,1>, PSYS_PART_END_COLOR, <.5,.8,1>, PSYS_SRC_ACCEL, <0,0,0>, PSYS_PART_START_SCALE, <2,2,2>, PSYS_PART_END_SCALE, <.5,.5,.5>, PSYS_SRC_BURST_SPEED_MIN, 7.0, PSYS_SRC_BURST_SPEED_MAX, 10.0, PSYS_SRC_BURST_RADIUS, 1.0, PSYS_SRC_BURST_RATE, 0.8 ]); llStartAnimation("Jet Dash"); llMoveToTarget(pos+(fwd*speed),0.5); llSetTimerEvent(0.5); } else if(!hitfwd); { hitfwd = 1; llSetTimerEvent(0.4); } } else if((CONTROL_FWD & edges) && !(CONTROL_FWD & levels) && quickslide) { quickslide = 0; stopped = 0; llStopAnimation("Jet Dash"); llMoveToTarget(llGetPos(),0.05); llParticleSystem([]); candown = 1; llSetTimerEvent(0.5); } else if((CONTROL_DOWN & edges) && (CONTROL_DOWN & levels) && candown) { candown = 0; llSetTimerEvent(0); vector pos = llGetPos(); llParticleSystem([PSYS_SRC_PATTERN,PSYS_SRC_PATTERN_EXPLODE, PSYS_PART_MAX_AGE, 1.0, PSYS_SRC_BURST_PART_COUNT, 300, PSYS_PART_FLAGS,PSYS_PART_EMISSIVE_MASK | PSYS_PART_INTERP_COLOR_MASK | PSYS_PART_INTERP_SCALE_MASK, PSYS_PART_END_ALPHA, 0.0, PSYS_PART_START_COLOR, <1,1,1>, PSYS_PART_END_COLOR, <.5,.8,1>, PSYS_SRC_ACCEL, <0,0,0>, PSYS_PART_START_SCALE, <2,2,2>, PSYS_PART_END_SCALE, <.5,.5,.5>, PSYS_SRC_BURST_SPEED_MIN, 7.0, PSYS_SRC_BURST_SPEED_MAX, 10.0, PSYS_SRC_BURST_RADIUS, 1.0, PSYS_SRC_BURST_RATE, 0.8 ]); llMoveToTarget(pos-<0,0,10>,0.1); llSleep(0.2); llParticleSystem([]); llStopMoveToTarget(); stopped = 1; } } timer() { rotation rot = llGetRot(); vector fwd = llRot2Fwd(rot); vector pos = llGetPos(); if(hitfwd && !quickslide) { hitfwd = 0; llSetTimerEvent(0); } else if(!hitfwd && !quickslide && !stopped) { llStopMoveToTarget(); llParticleSystem([]); llSetTimerEvent(0); stopped = 1; } else if(hitfwd && quickslide) { hitfwd = 0; llMoveToTarget(pos+(fwd*speed),0.5); llParticleSystem([PSYS_SRC_PATTERN,PSYS_SRC_PATTERN_ANGLE_CONE, PSYS_PART_MAX_AGE, 2.0, PSYS_SRC_BURST_PART_COUNT, 500, PSYS_PART_FLAGS, PSYS_PART_EMISSIVE_MASK | PSYS_PART_INTERP_COLOR_MASK | PSYS_PART_INTERP_SCALE_MASK, PSYS_PART_START_ALPHA, 0.1, PSYS_PART_END_ALPHA, 1.0, PSYS_PART_START_COLOR, <1,1,1>, PSYS_PART_END_COLOR, <.5,.8,1>, PSYS_SRC_ACCEL, <0,0,5>, PSYS_PART_START_SCALE, <1,1,1>, PSYS_PART_END_SCALE, <.1,.1,.1>, PSYS_SRC_BURST_SPEED_MAX, 5.0, PSYS_SRC_BURST_SPEED_MIN, 5.0, PSYS_SRC_BURST_RADIUS, 1.0, PSYS_SRC_ANGLE_BEGIN, 4.5, PSYS_SRC_ANGLE_END, 4.5, PSYS_SRC_BURST_RATE, 0.2 ]); llSetTimerEvent(0.1); } else if(!hitfwd && quickslide) { llMoveToTarget(pos+(fwd*speed),0.5); } } }