sprayon() {
    llParticleSystem([
        PSYS_PART_FLAGS,
            PSYS_PART_EMISSIVE_MASK|PSYS_PART_INTERP_SCALE_MASK,
        PSYS_SRC_PATTERN,
            PSYS_SRC_PATTERN_ANGLE_CONE,
        PSYS_SRC_BURST_RADIUS,      0.0,
        PSYS_SRC_ANGLE_BEGIN,       0.0,
        PSYS_SRC_ANGLE_END,         PI/20.0,
        PSYS_PART_START_COLOR,      <1.0,1.0,1.0>,
        PSYS_PART_START_SCALE,      <0.1,0.1,0.1>,
        PSYS_PART_END_SCALE,        <0.01,0.01,0.01>,
        PSYS_PART_START_GLOW,       1.0,
        PSYS_SRC_MAX_AGE,           0.0,
        PSYS_PART_MAX_AGE,          4.0,
        PSYS_SRC_BURST_RATE,        0.1,
        PSYS_SRC_BURST_PART_COUNT,  25,
        PSYS_SRC_ACCEL,             <0.0,0.0,-1.0>,
        PSYS_SRC_BURST_SPEED_MIN,   7.0,
        PSYS_SRC_BURST_SPEED_MIN,   8.5
    ]);
}

sprayoff() {
    llParticleSystem([]);
}

default
{
    on_rez(integer x) {
        llResetScript();
    }
    
    state_entry()
    {
        sprayoff();
    }

    link_message(integer sender_number, integer num, string msg, key id)
    {
        if (msg == "sparks") {
            if ((num==0)||(num>60)) num=4;
            sprayon();
            llSleep((float)num);
            sprayoff();
        }
    }
}
