sprayon() {
    llParticleSystem([
        PSYS_PART_FLAGS,
            PSYS_PART_EMISSIVE_MASK|PSYS_PART_INTERP_SCALE_MASK|PSYS_PART_INTERP_COLOR_MASK,
        PSYS_SRC_PATTERN,
            PSYS_SRC_PATTERN_ANGLE_CONE,
        PSYS_SRC_TEXTURE,           
            "2ca57748-4944-de53-b301-8d0efbafb2c6",
        PSYS_SRC_BURST_RADIUS,      0.1,
        PSYS_SRC_ANGLE_BEGIN,       0.0,
        PSYS_SRC_ANGLE_END,         PI/5.0,
        PSYS_PART_START_COLOR,      <0.6,0.6,0.6>,
        PSYS_PART_START_SCALE,      <3.0,3.0,3.0>,
        PSYS_PART_END_SCALE,        <0.51,0.51,0.51>,
        PSYS_PART_START_ALPHA,      1.0,
        PSYS_PART_END_ALPHA,        0.0,
        PSYS_PART_START_GLOW,       0.0,
        PSYS_SRC_MAX_AGE,           0.0,
        PSYS_PART_MAX_AGE,          2.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,   1.0,
        PSYS_SRC_BURST_SPEED_MAX,   1.5
    ]);
}

sprayoff() {
    llParticleSystem([]);
}

default
{
    on_rez(integer x) {
        llResetScript();
    }
    
    state_entry()
    {
        sprayoff();
    }
    
    touch_start(integer cnt) {
        integer num = 2;
        sprayon();
        llSleep((float)num);
        sprayoff();
    }
    
    link_message(integer sender_number, integer num, string msg, key id)
    {
        if (msg == "smoke") {
            if ((num==0)||(num>60)) num=2;
            sprayon();
            llSleep((float)num);
            sprayoff();
        }
    }
}
